diff --git a/.github/issue_template.md b/.github/issue_template.md index 7d4f1e84076..c5ed65cbbf1 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -19,7 +19,7 @@ ### Pull request type - + +### Release Notes + + diff --git a/.travis.yml b/.travis.yml index dc3c2fdb09f..6c2caa9a6c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,19 @@ +# Copyright (c) 2013-2018 Arm Limited. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the License); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + language: python python: 2.7 @@ -30,8 +46,8 @@ before_install: # Setup ppa to make sure arm-none-eabi-gcc is correct version - sudo add-apt-repository -y ppa:team-gcc-arm-embedded/ppa - sudo add-apt-repository -y ppa:deadsnakes/ppa - # Fix for "The following signatures were invalid: KEYEXPIRED 1515625755" failed". See https://github.com/travis-ci/travis-ci/issues/9037 - - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 + # workaround for https://travis-ci.community/t/then-sudo-apt-get-update-failed-public-key-is-not-available-no-pubkey-6b05f25d762e3157-in-ubuntu-xenial/1728 + - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 762E3157 # Loop until update succeeds (timeouts can occur) - travis_retry $(! sudo apt-get update 2>&1 |grep Failed) @@ -69,7 +85,6 @@ matrix: - doxygen doxyfile_options 2>&1 # Once Mbed OS has been fixed, enable the full test by replacing the top line with this: # - ( ! doxygen doxyfile_options 2>&1 | grep . ) - # Assert that all binary libraries are named correctly # The strange command below asserts that there are exactly 0 libraries # that do not start with lib @@ -90,12 +105,20 @@ matrix: install: # Install dependencies - sudo apt-get install gcc-arm-embedded - - pip install -r requirements.txt - - pip install pytest pylint hypothesis mock coverage coveralls - # Print versions we use - - arm-none-eabi-gcc --version + # Add additional dependencies specific for testing - python --version + - |- + tr -d ' ' >> requirements.txt <<< " + mock==2.0.0 + pytest==3.3.0 + pylint>=1.9,<2 + hypothesis>=3,<4 + coverage>=4.5,<5 + coveralls>=1.5,<2 + " + # ... and install. + - pip install -r requirements.txt - pip list --verbose script: # Run local testing on tools @@ -106,57 +129,64 @@ matrix: after_success: # Coverage for tools - coveralls - # Report success since we have overridden default behaviour + # Report success since we have overridden default behavior - bash -c "$STATUS" success "Local $NAME testing has passed" -# - <<: *tools-pytest -# env: NAME=tools-py3.5 -# python: 3.5 -# -# - <<: *tools-pytest -# env: NAME=tools-py3.6 -# python: 3.6 + - env: + - NAME=doxy-spellcheck + + install: + - sudo apt-get install aspell + + script: + # Run local testing on header file doxy + - ./tools/test/travis-ci/doxy-spellchecker/spell.sh drivers + - ./tools/test/travis-ci/doxy-spellchecker/spell.sh platform + - ./tools/test/travis-ci/doxy-spellchecker/spell.sh events + - ./tools/test/travis-ci/doxy-spellchecker/spell.sh rtos + - ./tools/test/travis-ci/doxy-spellchecker/spell.sh features/netsocket + + after_success: + # Coverage for tools + - coveralls + # Report success since we have overridden default behavior + - bash -c "$STATUS" success "Local $NAME testing has passed" + + - <<: *tools-pytest + env: NAME=tools-py3.5 + python: 3.5 + + - <<: *tools-pytest + env: NAME=tools-py3.6 + python: 3.6 + + - <<: *tools-pytest + env: NAME=tools-py3.7 + python: 3.7 + dist: xenial - env: - NAME=astyle install: - - curl -L0 http://mbed-os.s3-eu-west-1.amazonaws.com/builds/deps/astyle_3.1_linux.tar.gz --output astyle.tar.gz; - mkdir -p BUILD && tar xf astyle.tar.gz -C BUILD; - pushd BUILD/astyle/build/gcc; - make; - export PATH=$PWD/bin:$PATH; - popd; - - astyle --version + - >- + curl -L0 https://mbed-os.s3-eu-west-1.amazonaws.com/builds/deps/astyle_3.1_linux.tar.gz --output astyle.tar.gz; + mkdir -p BUILD && tar xf astyle.tar.gz -C BUILD; + cd BUILD/astyle/build/gcc; + make; + export PATH=$PWD/bin:$PATH; + cd - + - astyle --version + # Fetch remaining information needed for branch comparison + - git fetch --all --unshallow --tags + - git fetch origin "${TRAVIS_BRANCH}" script: - # only changed files this time - git diff --name-only --diff-filter=d $TRAVIS_BRANCH | grep '.*\.\(h\|c\|hpp\|cpp\)$' | fgrep -v -f .astyleignore | xargs -n 100 -I {} bash -c "astyle -n --options=.astylerc \"{}\"" > astyle-files-changed.out; - if [ $(cat astyle-files-changed.out | grep Formatted | wc -l) -ne 0 ]; then - git --no-pager diff; - echo ""; - echo "AStyle check failed, please fix style issues as shown above"; - (exit 1); - else - echo "Coding style check OK"; - fi - after_success: - # run astyle for all files on the branch - - git checkout -- . - - find -regex '.*\.\(h\|c\|hpp\|cpp\)$' -type f | fgrep -v -f .astyleignore | xargs -n 100 -I {} bash -c "astyle -n --options=.astylerc \"{}\"" > astyle-branch.out; - # update status if we succeeded, compare with master if possible - - | - CURR=$(cat astyle-branch.out | grep Formatted | wc -l) - PREV=$(curl -u "$MBED_BOT" https://api.github.com/repos/$TRAVIS_REPO_SLUG/status/master \ - | jq -re "select(.sha != \"$TRAVIS_COMMIT\") - | .statuses[] | select(.context == \"travis-ci/$NAME\").description - | capture(\", (?[0-9]+) files\").files" \ - || echo 0) + - >- + git diff --name-only --diff-filter=d FETCH_HEAD..HEAD \ + | ( grep '.\(c\|cpp\|h\|hpp\)$' || true ) \ + | ( fgrep -v -f .astyleignore || true ) \ + | while read file; do astyle -n --options=.astylerc "${file}"; done + - git diff --exit-code --diff-filter=d --color - STATUSM="Passed, ${CURR} files" - if [ "$PREV" -ne 0 ] - then - STATUSM="$STATUSM ($(python -c "print '%+d' % ($CURR-$PREV)") files)" - fi - - bash -c "$STATUS" success "$STATUSM" - env: - NAME=events - EVENTS=events @@ -277,6 +307,22 @@ matrix: - env: - NAME=licence_check script: - - echo 'Checking that there is no GPL licence text in code' - - ! git grep -q --ignore-case "gnu general public"; - - ! git grep -q --ignore-case "gnu library general public"; + - >- + ! grep --recursive --max-count=100 --ignore-case --exclude .travis.yml \ + "gnu general\|gnu lesser\|lesser general\|public license" + + - env: + - NAME=include_check + script: + - echo 'Checking that there are no '#include "mbed.h"' in code where it should not be' + - | + ! git grep '^#include\s["'"']mbed.h['"'"]$' -- '*.c' '*.h' '*.cpp' '*.hpp' \ + ':!*platform_mbed.h' ':!*TESTS/*' ':!TEST_APPS/' ':!UNITTESTS/' \ + ':!*tests/*' ':!*targets/*' ':!*TARGET_*' ':!*unsupported/*' + + - env: + - NAME=psa-autogen + script: + # Run SPM code generator and check that changes are not needed + - python tools/spm/generate_partition_code.py + - git diff --exit-code diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 701af04107f..f433ee41286 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,4 +2,4 @@ Mbed OS is an open-source, device software platform for the Internet of Things. Contributions are an important part of the platform, and our goal is to make it as simple as possible to become a contributor. -To encourage productive collaboration, as well as robust, consistent and maintainable code, we have a set of guidelines for [contributing to Mbed OS](https://os.mbed.com/docs/latest/reference/contributing.html). +To encourage productive collaboration, as well as robust, consistent and maintainable code, we have a set of guidelines for [contributing to Mbed OS](https://os.mbed.com/docs/mbed-os/latest/contributing/index.html). diff --git a/LICENSE b/LICENSE-apache-2.0.txt similarity index 100% rename from LICENSE rename to LICENSE-apache-2.0.txt diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000000..45222606360 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +Unless specifically indicated otherwise in a file, files are licensed under the Apache 2.0 license, +as can be found in: LICENSE-apache-2.0.txt + +Folders containing files under different permissive license than Apache 2.0 are listed below. Each folder should contain its own README file with license specified for its files. The original license text is included in those source files. + +- [cmsis](./cmsis) - MIT, BSD-3-Clause +- [components/802.15.4_RF/mcr20a-rf-driver](./components/802.15.4_RF/mcr20a-rf-driver) - BSD-3-Clause +- [features/cryptocell/FEATURE_CRYPTOCELL310](./features/cryptocell/FEATURE_CRYPTOCELL310) - ARM Object Code and Header Files License +- [features/FEATURE_BOOTLOADER](./features/FEATURE_BOOTLOADER) - PBL +- [features/FEATURE_BLE/targets](./features/FEATURE_BLE/targets) - BSD-style, PBL, MIT-style +- [features/lorawan](./features/lorawan) - Revised BSD +- [features/lwipstack](./features/lwipstack) - BSD-style, MIT-style +- [features/nanostack/sal-stack-nanostack](./features/nanostack/sal-stack-nanostack) - BSD-3-Clause +- [features/storage](./features/storage) - BSD-style, MIT +- [features/netsocket/emac-drivers](./features/netsocket/emac-drivers) - BSD-style +- [features/frameworks/unity/unity](./features/frameworks/unity/unity) - MIT +- [features/unsupported](./features/unsupported) - MIT-style, BSD-style +- [rtos](./rtos) - MIT +- [drivers](./drivers) - MIT +- [TESTS/mbed_hal/trng/pithy](./TESTS/mbed_hal/trng/pithy) - BSD-3-Clause +- [tools/data/rpc](./tools/data/rpc) - MIT +- [targets](./targets) - PBL, BSD-style, MIT-style, Zlib-style, Public-domain diff --git a/README.md b/README.md index 59d8fcc7e30..bed98b0caf8 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,11 @@ The [release notes](https://os.mbed.com/releases) detail the current release. Yo ## License and contributions -The software is provided under [Apache-2.0 license](LICENSE). Contributions to this project are accepted under the same license. Please see [contributing.md](CONTRIBUTING.md) for more info. +The software is provided under the [Apache-2.0 license](LICENSE-apache-2.0.txt). Contributions to this project are accepted under the same license. Please see [contributing.md](CONTRIBUTING.md) for more information. -This project contains code from other projects. The original license text is included in those source files. They must comply with our [license guide](https://os.mbed.com/docs/latest/reference/license.html) +This project contains code from other projects. The original license text is included in those source files. They must comply with our [license guide](https://os.mbed.com/docs/latest/reference/license.html). + +Folders containing files under different permissive license than Apache 2.0 are listed in the [LICENSE](LICENSE) file. ## Getting started for developers diff --git a/TESTS/host_tests/crash_reporting.py b/TESTS/host_tests/crash_reporting.py index bc4a7170784..a5055973891 100644 --- a/TESTS/host_tests/crash_reporting.py +++ b/TESTS/host_tests/crash_reporting.py @@ -60,7 +60,7 @@ def test_steps(self): wait_after_reset = wait_after_reset if wait_after_reset is not None else DEFAULT_CYCLE_PERIOD #Wait 2 seconds for system to init - time.sleep(2.0) + time.sleep(7.0) #self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) self.send_kv(MSG_KEY_DEVICE_ERROR, MSG_VALUE_DUMMY) time.sleep(5.0) diff --git a/TESTS/host_tests/rtc_calc_auto.py b/TESTS/host_tests/rtc_calc_auto.py index 77b52a0abc0..65904c912c7 100644 --- a/TESTS/host_tests/rtc_calc_auto.py +++ b/TESTS/host_tests/rtc_calc_auto.py @@ -117,7 +117,7 @@ def _verify_timestamp(self, key, value, timestamp): self.send_kv("passed", str(response)) else: self.send_kv("failed", 0) - print "expected = %d, result = %d" % (expected_timestamp , actual_timestamp) + print("expected = %d, result = %d" % (expected_timestamp , actual_timestamp)) # calculate next date if (self.first): diff --git a/TESTS/mbed-crypto/sanity/main.cpp b/TESTS/mbed-crypto/sanity/main.cpp new file mode 100644 index 00000000000..4d9c972a54d --- /dev/null +++ b/TESTS/mbed-crypto/sanity/main.cpp @@ -0,0 +1,336 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C))) +#error [NOT_SUPPORTED] Mbed Crypto is OFF - skipping. +#endif + +#include +#include "mbed.h" +#include "greentea-client/test_env.h" +#include "unity.h" +#include "utest.h" +#include "psa/crypto.h" +#include "entropy.h" +#include "entropy_poll.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) + +#if !defined(MAX) +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif + +#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \ + MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE) + +void inject_entropy() +{ + uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = { 0 }; + for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { + seed[i] = i; + } + mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); +} +#endif // defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) + +void test_crypto_random(void) +{ + static const unsigned char trail[] = "don't overwrite me"; + unsigned char changed[256] = { 0 }; + unsigned char output[sizeof(changed) + sizeof(trail)]; + size_t i, bytes = sizeof(changed); + unsigned int run; + + memcpy(output + bytes, trail, sizeof(trail)); + /* Run several times, to ensure that every output byte will be + * nonzero at least once with overwhelming probability + * (2^(-8*number_of_runs)). */ + for (run = 0; run < 10; run++) { + memset(output, 0, bytes); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_random(output, bytes)); + /* Check that no more than 'bytes' have been overwritten */ + TEST_ASSERT_EQUAL_UINT8_ARRAY(trail, output + bytes, sizeof(trail)); + + for (i = 0; i < bytes; i++) { + if (0 != output[i]) { + ++changed[i]; + } + } + } + + /* Check that every byte was changed to nonzero at least once. This + * validates that psa_generate_random is overwriting every byte of + * the output buffer. */ + for (i = 0; i < bytes; i++) { + TEST_ASSERT_NOT_EQUAL(0, changed[i]); + } +} + +void test_crypto_asymmetric_encrypt_decrypt(void) +{ + psa_status_t status = PSA_SUCCESS; + psa_key_slot_t slot = 1; + psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEYPAIR; + psa_algorithm_t alg = PSA_ALG_RSA_PKCS1V15_CRYPT; + size_t key_bits = 512, got_bits = 0, output_length; + psa_key_policy_t policy; + static const unsigned char input[] = "encrypt me!"; + unsigned char encrypted[64]; + unsigned char decrypted[sizeof(input)]; + + psa_key_policy_init(&policy); + psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(slot, &policy)); + + status = psa_generate_key(slot, key_type, key_bits, NULL, 0); + TEST_SKIP_UNLESS_MESSAGE(status != PSA_ERROR_NOT_SUPPORTED, "RSA key generation is not supported"); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_get_key_information(slot, NULL, &got_bits)); + TEST_ASSERT_EQUAL(key_bits, got_bits); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_encrypt(slot, alg, input, sizeof(input), NULL, 0, + encrypted, sizeof(encrypted), &output_length)); + TEST_ASSERT_EQUAL(sizeof(encrypted), output_length); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_decrypt(slot, alg, encrypted, sizeof(encrypted), NULL, 0, + decrypted, sizeof(decrypted), &output_length)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); + TEST_ASSERT_EQUAL(sizeof(input), output_length); + TEST_ASSERT_EQUAL_UINT8_ARRAY(input, decrypted, output_length); +} + +void test_crypto_hash_verify(void) +{ + psa_algorithm_t alg = PSA_ALG_SHA_256; + psa_hash_operation_t operation; + /* SHA-256 hash of an empty string */ + static const unsigned char hash[] = { + 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, + 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, + 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 + }; + + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&operation, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_verify(&operation, hash, sizeof(hash))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&operation)); +} + +void test_crypto_symmetric_cipher_encrypt_decrypt(void) +{ + psa_key_slot_t slot = 1; + psa_key_type_t key_type = PSA_KEY_TYPE_AES; + psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING; + psa_cipher_operation_t operation; + psa_key_policy_t policy; + size_t output_len; + static const unsigned char key[] = { + 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c + }; + static const unsigned char input[] = { + 0xb0, 0x28, 0x9f, 0x04, 0xdc, 0x7f, 0xe2, 0x25, + 0xa2, 0xce, 0xe9, 0xd3, 0xb9, 0xbc, 0xc7, 0x2f + }; + static const unsigned char expected_encryption[] = { + 0x28, 0x8d, 0x76, 0xc0, 0xa7, 0x09, 0x50, 0x3f, + 0x87, 0x96, 0x1e, 0x96, 0x05, 0xcb, 0xb9, 0x6d + }; + unsigned char encrypted[sizeof(input)], decrypted[sizeof(input)], iv[16]; + + memset(iv, 0x2a, sizeof(iv)); + psa_key_policy_init(&policy); + psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(slot, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_import_key(slot, key_type, key, sizeof(key))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_encrypt_setup(&operation, slot, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_set_iv(&operation, iv, sizeof(iv))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_update(&operation, input, sizeof(input), + encrypted, sizeof(encrypted), &output_len)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_finish(&operation, encrypted + output_len, + sizeof(encrypted) - output_len, &output_len)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_abort(&operation)); + TEST_ASSERT_EQUAL_HEX8_ARRAY(expected_encryption, encrypted, sizeof(expected_encryption)); + + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_decrypt_setup(&operation, slot, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_set_iv(&operation, iv, sizeof(iv))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_update(&operation, encrypted, sizeof(encrypted), + decrypted, sizeof(decrypted), &output_len)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_finish(&operation, decrypted + output_len, + sizeof(decrypted) - output_len, &output_len)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_abort(&operation)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); + TEST_ASSERT_EQUAL_HEX8_ARRAY(input, decrypted, sizeof(input)); +} + +void test_crypto_asymmetric_sign_verify(void) +{ + psa_key_slot_t slot = 1; + psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEYPAIR; + psa_algorithm_t alg = PSA_ALG_RSA_PKCS1V15_SIGN_RAW; + psa_key_policy_t policy; + static const unsigned char key[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, + 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, + 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, + 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, + 0xe1, 0x12, 0x96, 0x28, 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, + 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, 0x56, 0xee, 0xb2, 0x07, + 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, + 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, + 0xd3, 0xa7, 0xcb, 0xf8, 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, + 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, 0xbf, 0xfe, 0x47, 0x33, + 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, + 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0x87, 0x4b, 0xf0, 0xff, 0xc2, 0xf2, 0xa7, 0x1d, + 0x14, 0x67, 0x1d, 0xdd, 0x01, 0x71, 0xc9, 0x54, 0xd7, 0xfd, 0xbf, 0x50, + 0x28, 0x1e, 0x4f, 0x6d, 0x99, 0xea, 0x0e, 0x1e, 0xbc, 0xf8, 0x2f, 0xaa, + 0x58, 0xe7, 0xb5, 0x95, 0xff, 0xb2, 0x93, 0xd1, 0xab, 0xe1, 0x7f, 0x11, + 0x0b, 0x37, 0xc4, 0x8c, 0xc0, 0xf3, 0x6c, 0x37, 0xe8, 0x4d, 0x87, 0x66, + 0x21, 0xd3, 0x27, 0xf6, 0x4b, 0xbe, 0x08, 0x45, 0x7d, 0x3e, 0xc4, 0x09, + 0x8b, 0xa2, 0xfa, 0x0a, 0x31, 0x9f, 0xba, 0x41, 0x1c, 0x28, 0x41, 0xed, + 0x7b, 0xe8, 0x31, 0x96, 0xa8, 0xcd, 0xf9, 0xda, 0xa5, 0xd0, 0x06, 0x94, + 0xbc, 0x33, 0x5f, 0xc4, 0xc3, 0x22, 0x17, 0xfe, 0x04, 0x88, 0xbc, 0xe9, + 0xcb, 0x72, 0x02, 0xe5, 0x94, 0x68, 0xb1, 0xea, 0xd1, 0x19, 0x00, 0x04, + 0x77, 0xdb, 0x2c, 0xa7, 0x97, 0xfa, 0xc1, 0x9e, 0xda, 0x3f, 0x58, 0xc1, + 0x02, 0x41, 0x00, 0xe2, 0xab, 0x76, 0x08, 0x41, 0xbb, 0x9d, 0x30, 0xa8, + 0x1d, 0x22, 0x2d, 0xe1, 0xeb, 0x73, 0x81, 0xd8, 0x22, 0x14, 0x40, 0x7f, + 0x1b, 0x97, 0x5c, 0xbb, 0xfe, 0x4e, 0x1a, 0x94, 0x67, 0xfd, 0x98, 0xad, + 0xbd, 0x78, 0xf6, 0x07, 0x83, 0x6c, 0xa5, 0xbe, 0x19, 0x28, 0xb9, 0xd1, + 0x60, 0xd9, 0x7f, 0xd4, 0x5c, 0x12, 0xd6, 0xb5, 0x2e, 0x2c, 0x98, 0x71, + 0xa1, 0x74, 0xc6, 0x6b, 0x48, 0x81, 0x13, 0x02, 0x41, 0x00, 0xc5, 0xab, + 0x27, 0x60, 0x21, 0x59, 0xae, 0x7d, 0x6f, 0x20, 0xc3, 0xc2, 0xee, 0x85, + 0x1e, 0x46, 0xdc, 0x11, 0x2e, 0x68, 0x9e, 0x28, 0xd5, 0xfc, 0xbb, 0xf9, + 0x90, 0xa9, 0x9e, 0xf8, 0xa9, 0x0b, 0x8b, 0xb4, 0x4f, 0xd3, 0x64, 0x67, + 0xe7, 0xfc, 0x17, 0x89, 0xce, 0xb6, 0x63, 0xab, 0xda, 0x33, 0x86, 0x52, + 0xc3, 0xc7, 0x3f, 0x11, 0x17, 0x74, 0x90, 0x2e, 0x84, 0x05, 0x65, 0x92, + 0x70, 0x91, 0x02, 0x41, 0x00, 0xb6, 0xcd, 0xbd, 0x35, 0x4f, 0x7d, 0xf5, + 0x79, 0xa6, 0x3b, 0x48, 0xb3, 0x64, 0x3e, 0x35, 0x3b, 0x84, 0x89, 0x87, + 0x77, 0xb4, 0x8b, 0x15, 0xf9, 0x4e, 0x0b, 0xfc, 0x05, 0x67, 0xa6, 0xae, + 0x59, 0x11, 0xd5, 0x7a, 0xd6, 0x40, 0x9c, 0xf7, 0x64, 0x7b, 0xf9, 0x62, + 0x64, 0xe9, 0xbd, 0x87, 0xeb, 0x95, 0xe2, 0x63, 0xb7, 0x11, 0x0b, 0x9a, + 0x1f, 0x9f, 0x94, 0xac, 0xce, 0xd0, 0xfa, 0xfa, 0x4d, 0x02, 0x40, 0x71, + 0x19, 0x5e, 0xec, 0x37, 0xe8, 0xd2, 0x57, 0xde, 0xcf, 0xc6, 0x72, 0xb0, + 0x7a, 0xe6, 0x39, 0xf1, 0x0c, 0xbb, 0x9b, 0x0c, 0x73, 0x9d, 0x0c, 0x80, + 0x99, 0x68, 0xd6, 0x44, 0xa9, 0x4e, 0x3f, 0xd6, 0xed, 0x92, 0x87, 0x07, + 0x7a, 0x14, 0x58, 0x3f, 0x37, 0x90, 0x58, 0xf7, 0x6a, 0x8a, 0xec, 0xd4, + 0x3c, 0x62, 0xdc, 0x8c, 0x0f, 0x41, 0x76, 0x66, 0x50, 0xd7, 0x25, 0x27, + 0x5a, 0xc4, 0xa1, 0x02, 0x41, 0x00, 0xbb, 0x32, 0xd1, 0x33, 0xed, 0xc2, + 0xe0, 0x48, 0xd4, 0x63, 0x38, 0x8b, 0x7b, 0xe9, 0xcb, 0x4b, 0xe2, 0x9f, + 0x4b, 0x62, 0x50, 0xbe, 0x60, 0x3e, 0x70, 0xe3, 0x64, 0x75, 0x01, 0xc9, + 0x7d, 0xdd, 0xe2, 0x0a, 0x4e, 0x71, 0xbe, 0x95, 0xfd, 0x5e, 0x71, 0x78, + 0x4e, 0x25, 0xac, 0xa4, 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a, 0xae, 0x59, + 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24 + }; + static const unsigned char input[] = { 0x61, 0x62, 0x63 }; + static const unsigned char expected_signature[] = { + 0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, + 0x9d, 0x83, 0xed, 0x11, 0xa7, 0x6a, 0x78, 0x98, 0xa1, 0xbb, 0x5c, 0xe1, + 0x91, 0x37, 0x5a, 0x4a, 0xa7, 0x49, 0x5a, 0x63, 0x3d, 0x27, 0x87, 0x9f, + 0xf5, 0x8e, 0xba, 0x5a, 0x57, 0x37, 0x1c, 0x34, 0xfe, 0xb1, 0x18, 0x0e, + 0x8b, 0x85, 0x0d, 0x55, 0x24, 0x76, 0xeb, 0xb5, 0x63, 0x4d, 0xf6, 0x20, + 0x26, 0x19, 0x92, 0xf1, 0x2e, 0xbe, 0xe9, 0x09, 0x70, 0x41, 0xdb, 0xbe, + 0xa8, 0x5a, 0x42, 0xd4, 0x5b, 0x34, 0x4b, 0xe5, 0x07, 0x3c, 0xeb, 0x77, + 0x2f, 0xfc, 0x60, 0x49, 0x54, 0xb9, 0x15, 0x8b, 0xa8, 0x1e, 0xc3, 0xdc, + 0x4d, 0x9d, 0x65, 0xe3, 0xab, 0x7a, 0xa3, 0x18, 0x16, 0x5f, 0x38, 0xc3, + 0x6f, 0x84, 0x1f, 0x1c, 0x69, 0xcb, 0x1c, 0xfa, 0x49, 0x4a, 0xa5, 0xcb, + 0xb4, 0xd6, 0xc0, 0xef, 0xba, 0xfb, 0x04, 0x3a + }; + unsigned char signature[sizeof(expected_signature)]; + size_t signature_len; + + psa_key_policy_init(&policy); + psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(slot, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_import_key(slot, key_type, key, sizeof(key))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_sign(slot, alg, input, sizeof(input), + signature, sizeof(signature), &signature_len)); + TEST_ASSERT_EQUAL(sizeof(signature), signature_len); + TEST_ASSERT_EQUAL_HEX8_ARRAY(expected_signature, signature, signature_len); + + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_verify(slot, alg, input, sizeof(input), + signature, signature_len)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); +} + +void test_crypto_key_derivation(void) +{ + psa_key_slot_t slot = 1, derived_slot = 2; + psa_algorithm_t alg = PSA_ALG_HKDF(PSA_ALG_SHA_256), derived_alg = PSA_ALG_CTR; + psa_key_type_t derived_key_type = PSA_KEY_TYPE_AES, got_type; + psa_key_policy_t policy; + psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT; + size_t key_bits = 512, derived_key_bits = 256, got_bits; + + psa_key_policy_init(&policy); + psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_DERIVE, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(slot, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(slot, PSA_KEY_TYPE_DERIVE, key_bits, NULL, 0)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_key_derivation(&generator, slot, alg, NULL, 0, NULL, 0, + PSA_BITS_TO_BYTES(derived_key_bits))); + psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_ENCRYPT, derived_alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(derived_slot, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generator_import_key(derived_slot, derived_key_type, + derived_key_bits, &generator)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_get_key_information(derived_slot, &got_type, &got_bits)); + TEST_ASSERT_EQUAL(derived_key_type, got_type); + TEST_ASSERT_EQUAL(derived_key_bits, got_bits); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generator_abort(&generator)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(derived_slot)); +} + + +utest::v1::status_t case_setup_handler(const Case *const source, const size_t index_of_case) +{ + psa_status_t status = psa_crypto_init(); +#if defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) + if (status == PSA_ERROR_INSUFFICIENT_ENTROPY) { + inject_entropy(); + status = psa_crypto_init(); + } +#endif /* defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) */ + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + return greentea_case_setup_handler(source, index_of_case); +} + +utest::v1::status_t case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t failure) +{ + mbedtls_psa_crypto_free(); + return greentea_case_teardown_handler(source, passed, failed, failure); +} + +utest::v1::status_t test_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(120, "default_auto"); + return verbose_test_setup_handler(number_of_cases); +} + +Case cases[] = { + Case("mbed-crypto random", case_setup_handler, test_crypto_random, case_teardown_handler), + Case("mbed-crypto asymmetric encrypt/decrypt", case_setup_handler, test_crypto_asymmetric_encrypt_decrypt, case_teardown_handler), + Case("mbed-crypto hash verify", case_setup_handler, test_crypto_hash_verify, case_teardown_handler), + Case("mbed-crypto symmetric cipher encrypt/decrypt", case_setup_handler, test_crypto_symmetric_cipher_encrypt_decrypt, case_teardown_handler), + Case("mbed-crypto asymmetric sign/verify", case_setup_handler, test_crypto_asymmetric_sign_verify, case_teardown_handler), + Case("mbed-crypto key derivation", case_setup_handler, test_crypto_key_derivation, case_teardown_handler), +}; + +Specification specification(test_setup, cases); + +int main(void) +{ + return !Harness::run(specification); +} diff --git a/TESTS/mbed_drivers/flashiap/main.cpp b/TESTS/mbed_drivers/flashiap/main.cpp index be46362d55f..28249eeaf22 100644 --- a/TESTS/mbed_drivers/flashiap/main.cpp +++ b/TESTS/mbed_drivers/flashiap/main.cpp @@ -29,6 +29,17 @@ #include "mbed.h" +// Debug available +#ifndef FLASHIAP_DEBUG +#define FLASHIAP_DEBUG 0 +#endif + +#if FLASHIAP_DEBUG +#define DEBUG_PRINTF(...) printf(__VA_ARGS__) +#else +#define DEBUG_PRINTF(...) +#endif + using namespace utest::v1; @@ -37,6 +48,21 @@ void flashiap_init_test() FlashIAP flash_device; uint32_t ret = flash_device.init(); TEST_ASSERT_EQUAL_INT32(0, ret); + + uint32_t flash_start = flash_device.get_flash_start(); + uint32_t flash_size = flash_device.get_flash_size(); + utest_printf("Flash address: 0x%08x, size: %d\n", flash_start, flash_size); + uint32_t address = flash_start; + int num = 0; + while (flash_size) { + uint32_t sector_size = flash_device.get_sector_size(address); + // Make sure all sectors sum up to the total flash size + TEST_ASSERT(flash_size >= sector_size); + DEBUG_PRINTF("\tsector %3d: address 0x%08x, size %8d\n", num++, address, sector_size); + flash_size -= sector_size; + address += sector_size; + } + ret = flash_device.deinit(); TEST_ASSERT_EQUAL_INT32(0, ret); } @@ -59,8 +85,8 @@ void flashiap_program_test() // the one before the last sector in the system uint32_t address = (flash_device.get_flash_start() + flash_device.get_flash_size()) - (sector_size); TEST_ASSERT_TRUE(address != 0UL); - utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_ROM_END, address); - TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_ROM_END, "Test skipped. Test region overlaps code."); + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, address); + TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); ret = flash_device.erase(address, sector_size); TEST_ASSERT_EQUAL_INT32(0, ret); @@ -128,7 +154,8 @@ void flashiap_cross_sector_program_test() agg_size += sector_size; address -= sector_size; } - TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_ROM_END, "Test skipped. Test region overlaps code."); + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, address); + TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); ret = flash_device.erase(address, agg_size); TEST_ASSERT_EQUAL_INT32(0, ret); @@ -184,7 +211,8 @@ void flashiap_program_error_test() TEST_ASSERT_TRUE(address != 0UL); // unaligned address - TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_ROM_END, "Test skipped. Test region overlaps code."); + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, address); + TEST_SKIP_UNLESS_MESSAGE(address >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); ret = flash_device.erase(address + 1, sector_size); TEST_ASSERT_EQUAL_INT32(-1, ret); if (flash_device.get_page_size() > 1) { @@ -220,6 +248,9 @@ void flashiap_timing_test() utest_printf("\nFlash timing:\n"); uint32_t sector_size = flash_device.get_sector_size(end_address - 1UL); uint32_t base_address = end_address - sector_size; + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, base_address); + TEST_SKIP_UNLESS_MESSAGE(base_address >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); + timer.start(); for (num_write_sizes = 0; num_write_sizes < max_write_sizes; num_write_sizes++) { if (write_size > sector_size) { diff --git a/TESTS/mbed_hal/flash/functional_tests/main.cpp b/TESTS/mbed_hal/flash/functional_tests/main.cpp index 06c876dfdd9..e79a16a53dd 100644 --- a/TESTS/mbed_hal/flash/functional_tests/main.cpp +++ b/TESTS/mbed_hal/flash/functional_tests/main.cpp @@ -175,6 +175,10 @@ void flash_erase_sector_test() uint32_t last_sector_size = flash_get_sector_size(&test_flash, addr_after_last - 1); uint32_t last_sector = addr_after_last - last_sector_size; TEST_ASSERT_EQUAL_INT32(0, last_sector % last_sector_size); + + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, last_sector); + TEST_SKIP_UNLESS_MESSAGE(last_sector >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); + ret = flash_erase_sector(&test_flash, last_sector); TEST_ASSERT_EQUAL_INT32(0, ret); @@ -201,6 +205,9 @@ void flash_program_page_test() // sector size might not be same as page size uint32_t erase_sector_boundary = ALIGN_DOWN(address, flash_get_sector_size(&test_flash, address)); + utest_printf("ROM ends at 0x%lx, test starts at 0x%lx\n", FLASHIAP_APP_ROM_END_ADDR, erase_sector_boundary); + TEST_SKIP_UNLESS_MESSAGE(erase_sector_boundary >= FLASHIAP_APP_ROM_END_ADDR, "Test skipped. Test region overlaps code."); + ret = flash_erase_sector(&test_flash, erase_sector_boundary); TEST_ASSERT_EQUAL_INT32(0, ret); diff --git a/TESTS/mbed_hal/mpu/main.cpp b/TESTS/mbed_hal/mpu/main.cpp index fa12658d9ae..09da6397175 100644 --- a/TESTS/mbed_hal/mpu/main.cpp +++ b/TESTS/mbed_hal/mpu/main.cpp @@ -72,11 +72,9 @@ static void hard_fault_handler_test() static void mpu_fault_test(const volatile uint16_t *mem_function) { - mbed_mpu_init(); - - // Verify that the mpu causes faults when executing ram + // Verify that the mpu causes faults when executing ram after init fault_count = 0; - mbed_mpu_enable_ram_xn(true); + mbed_mpu_init(); call_mem(mem_function); TEST_ASSERT_EQUAL(1, fault_count); @@ -86,7 +84,7 @@ static void mpu_fault_test(const volatile uint16_t *mem_function) call_mem(mem_function); TEST_ASSERT_EQUAL(0, fault_count); - // Verify that the mpu causes faults when executing ram + // Verify that the mpu can be turned back on fault_count = 0; mbed_mpu_enable_ram_xn(true); call_mem(mem_function); diff --git a/TESTS/mbed_hal/qspi/flash_configs/MX25L51245G_config.h b/TESTS/mbed_hal/qspi/flash_configs/MX25L51245G_config.h new file mode 100644 index 00000000000..8a71a9f37a4 --- /dev/null +++ b/TESTS/mbed_hal/qspi/flash_configs/MX25L51245G_config.h @@ -0,0 +1,106 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018-2018 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_QSPI_FLASH_MX25L51245G_H +#define MBED_QSPI_FLASH_MX25L51245G_H + + +#define QSPI_FLASH_CHIP_STRING "macronix MX25L51245G" + +// Command for reading status register +#define QSPI_CMD_RDSR 0x05 +// Command for reading configuration register +#define QSPI_CMD_RDCR0 0x15 +// Command for writing status/configuration register +#define QSPI_CMD_WRSR 0x01 +// Command for reading security register +#define QSPI_CMD_RDSCUR 0x2B + +// Command for setting Reset Enable +#define QSPI_CMD_RSTEN 0x66 +// Command for setting Reset +#define QSPI_CMD_RST 0x99 + +// Command for setting write enable +#define QSPI_CMD_WREN 0x06 +// Command for setting write disable +#define QSPI_CMD_WRDI 0x04 + +// WRSR operations max time [us] (datasheet max time + 15%) +#define QSPI_WRSR_MAX_TIME 34500 // 30ms +// general wait max time [us] +#define QSPI_WAIT_MAX_TIME 100000 // 100ms + + +// Commands for writing (page programming) +#define QSPI_CMD_WRITE_1IO 0x02 // 1-1-1 mode +#define QSPI_CMD_WRITE_4IO 0x38 // 1-4-4 mode + +// write operations max time [us] (datasheet max time + 15%) +#define QSPI_PAGE_PROG_MAX_TIME 11500 // 10ms + +#define QSPI_PAGE_SIZE 256 // 256B +#define QSPI_SECTOR_SIZE 4096 // 4kB +#define QSPI_SECTOR_COUNT 2048 // + +// Commands for reading +#define QSPI_CMD_READ_1IO_FAST 0x0B // 1-1-1 mode +#define QSPI_CMD_READ_1IO 0x03 // 1-1-1 mode +#define QSPI_CMD_READ_2IO 0xBB // 1-2-2 mode +#define QSPI_CMD_READ_1I2O 0x3B // 1-1-2 mode +#define QSPI_CMD_READ_4IO 0xEB // 1-4-4 mode +#define QSPI_CMD_READ_1I4O 0x6B // 1-1-4 mode + +#define QSPI_READ_1IO_DUMMY_CYCLE 0 +#define QSPI_READ_FAST_DUMMY_CYCLE 8 +#define QSPI_READ_2IO_DUMMY_CYCLE 4 +#define QSPI_READ_1I2O_DUMMY_CYCLE 8 +#define QSPI_READ_4IO_DUMMY_CYCLE 6 +#define QSPI_READ_1I4O_DUMMY_CYCLE 8 + +// Commands for erasing +#define QSPI_CMD_ERASE_SECTOR 0x20 // 4kB +#define QSPI_CMD_ERASE_BLOCK_32 0x52 // 32kB +#define QSPI_CMD_ERASE_BLOCK_64 0xD8 // 64kB +#define QSPI_CMD_ERASE_CHIP 0x60 // or 0xC7 + +// erase operations max time [us] (datasheet max time + 15%) +#define QSPI_ERASE_SECTOR_MAX_TIME 480000 // 400 ms +#define QSPI_ERASE_BLOCK_32_MAX_TIME 1200000 // 1s +#define QSPI_ERASE_BLOCK_64_MAX_TIME 2400000 // 2s + +// max frequency for basic rw operation (for fast mode) +#define QSPI_COMMON_MAX_FREQUENCY 32000000 + +#define QSPI_STATUS_REG_SIZE 1 +#define QSPI_CONFIG_REG_0_SIZE 2 +#define QSPI_SECURITY_REG_SIZE 1 +#define QSPI_MAX_REG_SIZE 2 + +// status register +#define STATUS_BIT_WIP (1 << 0) // write in progress bit +#define STATUS_BIT_WEL (1 << 1) // write enable latch +#define STATUS_BIT_BP0 (1 << 2) // +#define STATUS_BIT_BP1 (1 << 3) // +#define STATUS_BIT_BP2 (1 << 4) // +#define STATUS_BIT_BP3 (1 << 5) // +#define STATUS_BIT_QE (1 << 6) // Quad Enable +#define STATUS_BIT_SRWD (1 << 7) // status register write protect + +// configuration register 0 +// bit 0, 1, 2, 4, 5, 7 reserved +#define CONFIG0_BIT_TB (1 << 3) // Top/Bottom area protect + +#endif // MBED_QSPI_FLASH_MX25L51245G_H diff --git a/TESTS/mbed_hal/qspi/flash_configs/flash_configs.h b/TESTS/mbed_hal/qspi/flash_configs/flash_configs.h index 59380febf89..6358a0aafa2 100644 --- a/TESTS/mbed_hal/qspi/flash_configs/flash_configs.h +++ b/TESTS/mbed_hal/qspi/flash_configs/flash_configs.h @@ -18,19 +18,45 @@ #define MBED_FLASH_CONFIGS_H #if defined(TARGET_DISCO_L475VG_IOT01A) -#include "STM/DISCO_L475VG_IOT01A/flash_config.h" +#include "MX25RXX35F_config.h" // MX25R6435F + +#elif defined(TARGET_DISCO_F413ZH) +#include "N25Q128A_config.h" // N25Q128A13EF840F + +#elif defined(TARGET_DISCO_F746NG) +#include "N25Q128A_config.h" // N25Q128A13EF840E + +#elif defined(TARGET_DISCO_F469NI) +#include "N25Q128A_config.h" // N25Q128A13EF840E + +#elif defined(TARGET_DISCO_F769NI) +#include "MX25L51245G_config.h" // MX25L51245G + +#elif defined(TARGET_DISCO_L476VG) +#include "N25Q128A_config.h" // N25Q128A13EF840E +/* See STM32L476 Errata Sheet, it is not possible to use Dual-/Quad-mode for the command phase */ +#undef QSPI_CMD_READ_DPI +#undef QSPI_CMD_READ_QPI +#undef QSPI_CMD_WRITE_DPI +#undef QSPI_CMD_WRITE_QPI + +#elif defined(TARGET_DISCO_L496AG) +#include "MX25RXX35F_config.h" // MX25R6435F + #elif defined(TARGET_NRF52840) #include "NORDIC/NRF52840_DK/flash_config.h" -#elif defined(TARGET_DISCO_F413ZH) -#include "STM/DISCO_F413ZH/flash_config.h" + #elif defined(TARGET_EFM32GG11_STK3701) #include "SiliconLabs/EFM32GG11_STK3701/flash_config.h" + #elif defined(TARGET_K82F) #include "NXP/K82F/flash_config.h" + #elif defined(TARGET_KL82Z) #include "NXP/KL82Z/flash_config.h" + #elif defined(TARGET_LPC546XX) #include "NXP/LPC546XX/flash_config.h" -#endif +#endif #endif // MBED_FLASH_CONFIGS_H diff --git a/TESTS/mbed_hal/qspi/main.cpp b/TESTS/mbed_hal/qspi/main.cpp index b6f5d493cca..2cd782fdf44 100644 --- a/TESTS/mbed_hal/qspi/main.cpp +++ b/TESTS/mbed_hal/qspi/main.cpp @@ -40,6 +40,9 @@ using namespace utest::v1; //#define QSPI_TEST_LOG_FLASH_STATUS + +#define QSPI_MIN_FREQUENCY 1000000 + // max write size is usually page size #define DATA_SIZE_256 (QSPI_PAGE_SIZE) #define DATA_SIZE_1024 (QSPI_PAGE_SIZE * 4) @@ -93,11 +96,11 @@ static void log_data(const char *str, uint8_t *data, uint32_t size) static void _qspi_write_read_test(Qspi &qspi, qspi_bus_width_t write_inst_width, qspi_bus_width_t write_addr_width, qspi_bus_width_t write_data_width, qspi_bus_width_t write_alt_width, uint32_t write_cmd, - qspi_address_size_t write_addr_size, qspi_alt_size_t write_alt_size, int write_frequency, + qspi_address_size_t write_addr_size, qspi_alt_size_t write_alt_size, uint32_t write_count, qspi_bus_width_t read_inst_width, qspi_bus_width_t read_addr_width, qspi_bus_width_t read_data_width, qspi_bus_width_t read_alt_width, uint32_t read_cmd, int read_dummy_cycles, qspi_address_size_t read_addr_size, qspi_alt_size_t read_alt_size, - int read_frequency, uint32_t read_count, uint32_t test_count, uint32_t data_size, + uint32_t read_count, uint32_t test_count, uint32_t data_size, uint32_t flash_addr) { qspi_status_t ret = QSPI_STATUS_OK; @@ -126,11 +129,6 @@ static void _qspi_write_read_test(Qspi &qspi, qspi_bus_width_t write_inst_width, timer.stop(); erase_time = timer.read_us(); - if (write_frequency != QSPI_NONE) { - qspi_frequency(&qspi.handle, write_frequency); - WAIT_FOR(WAIT_MAX_TIME, qspi); - } - // switching to extended-SPI/DPI/QPI mode here for write operation // for DPI/QPI qspi.cmd is automatically switched to 2_2_2/4_4_4 mode ret = mode_enable(qspi, write_inst_width, write_addr_width, write_data_width); @@ -167,11 +165,6 @@ static void _qspi_write_read_test(Qspi &qspi, qspi_bus_width_t write_inst_width, ret = mode_disable(qspi, write_inst_width, write_addr_width, write_data_width); TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret); - if (read_frequency != QSPI_NONE) { - qspi_frequency(&qspi.handle, read_frequency); - WAIT_FOR(WAIT_MAX_TIME, qspi); - } - // switching to extended-SPI/DPI/QPI mode here for read operation // for DPI/QPI qspi.cmd is automatically switched to 2_2_2/4_4_4 mode ret = mode_enable(qspi, read_inst_width, read_addr_width, read_data_width); @@ -234,7 +227,6 @@ template < qspi_bus_width_t write_inst_width, unsigned int write_cmd, qspi_address_size_t write_addr_size, qspi_alt_size_t write_alt_size, - int write_frequency, uint32_t write_count, qspi_bus_width_t read_inst_width, qspi_bus_width_t read_addr_width, @@ -244,7 +236,7 @@ template < qspi_bus_width_t write_inst_width, int read_dummy_cycles, qspi_address_size_t read_addr_size, qspi_alt_size_t read_alt_size, - int read_frequency, + int frequency, uint32_t read_count, uint32_t test_count, uint32_t data_size, @@ -262,6 +254,9 @@ void qspi_write_read_test(void) qspi_init(&qspi.handle, QPIN_0, QPIN_1, QPIN_2, QPIN_3, QSCK, QCSN, QSPI_COMMON_MAX_FREQUENCY, 0); + ret = qspi_frequency(&qspi.handle, frequency); + TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret); + qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); flash_init(qspi); @@ -281,9 +276,9 @@ void qspi_write_read_test(void) #endif _qspi_write_read_test(qspi, write_inst_width, write_addr_width, write_data_width, write_alt_width, write_cmd, - write_addr_size, write_alt_size, write_frequency, write_count, read_inst_width, + write_addr_size, write_alt_size, write_count, read_inst_width, read_addr_width, read_data_width, read_alt_width, read_cmd, read_dummy_cycles, - read_addr_size, read_alt_size, read_frequency, read_count, test_count, + read_addr_size, read_alt_size, read_count, test_count, data_size, addr); ret = fast_mode_disable(qspi); @@ -334,7 +329,7 @@ void qspi_init_free_test(void) #endif #endif - _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, QSPI_COMMON_MAX_FREQUENCY, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, QSPI_COMMON_MAX_FREQUENCY, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); + _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); qspi_free(&qspi.handle); } @@ -348,28 +343,18 @@ void qspi_frequency_test(void) ret = qspi_init(&qspi.handle, QPIN_0, QPIN_1, QPIN_2, QPIN_3, QSCK, QCSN, freq, 0); TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret); - // check if the memory is working properly - qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); - flash_init(qspi); - _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); + do { + // check if the memory is working properly + qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); - freq /= 2; - // check if the memory is working properly - qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); - flash_init(qspi); - _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); + flash_init(qspi); + _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); - freq /= 2; - // check if the memory is working properly - qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); - flash_init(qspi); - _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); + utest_printf("frequency setting %d [Hz] - OK\r\n", freq); - freq /= 2; - // check if the memory is working properly - qspi.cmd.configure(MODE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8); - flash_init(qspi); - _qspi_write_read_test(qspi, WRITE_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, WRITE_SINGLE, READ_1_1_1, ADDR_SIZE_24, ALT_SIZE_8, freq, READ_SINGLE, TEST_REPEAT_SINGLE, DATA_SIZE_256, TEST_FLASH_ADDRESS); + freq /= 2; + ret = qspi_frequency(&qspi.handle, freq); + } while (ret == QSPI_STATUS_OK && freq >= QSPI_MIN_FREQUENCY); qspi_free(&qspi.handle); } @@ -395,176 +380,176 @@ Case cases[] = { // 1-4-4 - Quad I/O (extended SPI) // 2-2-2 - DPI (multi-channel SPI) // 4-4-4 - QPI (multi-channel SPI) - Case("qspi write(1-1-1)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_2_2_2 - Case("qspi write(1-1-1)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), #endif - Case("qspi write(1-1-1)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_4_4_4 - Case("qspi write(1-1-1)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-1-1)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-1-1)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), #endif #ifdef WRITE_1_2_2 - Case("qspi write(1-2-2)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_2_2_2 - Case("qspi write(1-2-2)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), #endif - Case("qspi write(1-2-2)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_4_4_4 - Case("qspi write(1-2-2)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-2-2)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-2-2)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), #endif #endif #ifdef WRITE_2_2_2 - Case("qspi write(2-2-2)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_2_2_2 - Case("qspi write(2-2-2)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), #endif - Case("qspi write(2-2-2)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_4_4_4 - Case("qspi write(2-2-2)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(2-2-2)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(2-2-2)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), #endif #endif #ifdef WRITE_1_4_4 - Case("qspi write(1-4-4)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_2_2_2 - Case("qspi write(1-4-4)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), #endif - Case("qspi write(1-4-4)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_4_4_4 - Case("qspi write(1-4-4)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(1-4-4)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(1-4-4)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), #endif #endif #ifdef WRITE_4_4_4 - Case("qspi write(4-4-4)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(1-1-1)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-1)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-1)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(1-1-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(1-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-2-2)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_2_2_2 - Case("qspi write(4-4-4)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(2-2-2)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(2-2-2)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(2-2-2)/x1 repeat/x4 test", qspi_write_read_test), #endif - Case("qspi write(4-4-4)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(1-1-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-1-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(1-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(1-4-4)/x1 repeat/x4 test", qspi_write_read_test), #ifdef READ_4_4_4 - Case("qspi write(4-4-4)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), - Case("qspi write(4-4-4)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x4 read(4-4-4)/x1 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(4-4-4)/x4 repeat/x1 test", qspi_write_read_test), + Case("qspi write(4-4-4)/x1 read(4-4-4)/x1 repeat/x4 test", qspi_write_read_test), #endif #endif }; diff --git a/TESTS/mbed_hal/qspi/qspi_test.h b/TESTS/mbed_hal/qspi/qspi_test.h index c0ddc5dd83a..0b3244e965e 100644 --- a/TESTS/mbed_hal/qspi/qspi_test.h +++ b/TESTS/mbed_hal/qspi/qspi_test.h @@ -77,7 +77,6 @@ template < qspi_bus_width_t write_inst_width, unsigned int write_cmd, qspi_address_size_t write_addr_size, qspi_alt_size_t write_alt_size, - int write_frequency, uint32_t write_count, qspi_bus_width_t read_inst_width, qspi_bus_width_t read_addr_width, @@ -87,7 +86,7 @@ template < qspi_bus_width_t write_inst_width, int read_dummy_cycles, qspi_address_size_t read_addr_size, qspi_alt_size_t read_alt_size, - int read_frequency, + int frequency, uint32_t read_count, uint32_t test_count, uint32_t data_size, diff --git a/TESTS/mbed_hal/sleep/main.cpp b/TESTS/mbed_hal/sleep/main.cpp index bfcee25c5df..cf469f97319 100644 --- a/TESTS/mbed_hal/sleep/main.cpp +++ b/TESTS/mbed_hal/sleep/main.cpp @@ -95,7 +95,7 @@ void sleep_usticker_test() TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep()); } -#ifdef DEVICE_LPTICKER +#if DEVICE_LPTICKER /* Test that wake-up time from sleep should be less than 10 ms and * low power ticker interrupt can wake-up target from sleep. */ diff --git a/TESTS/mbed_hal/sleep/sleep_test_utils.h b/TESTS/mbed_hal/sleep/sleep_test_utils.h index b5f16b76278..59724014afb 100644 --- a/TESTS/mbed_hal/sleep/sleep_test_utils.h +++ b/TESTS/mbed_hal/sleep/sleep_test_utils.h @@ -105,7 +105,7 @@ void us_ticker_isr(const ticker_data_t *const ticker_data) us_ticker_clear_interrupt(); } -#ifdef DEVICE_LPTICKER +#if DEVICE_LPTICKER void lp_ticker_isr(const ticker_data_t *const ticker_data) { lp_ticker_clear_interrupt(); diff --git a/TESTS/mbed_hal/spm/main.cpp b/TESTS/mbed_hal/spm/main.cpp index f040e7360f2..4863b2e6a6c 100644 --- a/TESTS/mbed_hal/spm/main.cpp +++ b/TESTS/mbed_hal/spm/main.cpp @@ -23,6 +23,10 @@ #error [NOT_SUPPORTED] this test is supported on GCC only #endif +#if defined(TARGET_FUTURE_SEQUANA_PSA) +#error [NOT_SUPPORTED] Disable this Test until FUTURE_SEQUANA_PSA enables Memory protection +#endif + #include "utest/utest.h" #include "unity/unity.h" #include "greentea-client/test_env.h" @@ -80,7 +84,7 @@ __attribute__((naked)) void call_mem(uint32_t addr) // since exception will be generated for invalid memory access. // Other instructions are for calling do_nothing function according to AAPCS. __ASM( - "LDR r1, [r0]\n" + "LDR r3, [r0]\n" "BX lr\n" ); } @@ -134,10 +138,10 @@ utest::v1::status_t fault_override_teardown(const Case *const source, const size } Case cases[] = { - Case("SPM - Access secure RAM", fault_override_setup, secure_ram_fault_test, fault_override_teardown), - Case("SPM - Access secure Flash", fault_override_setup, secure_flash_fault_test, fault_override_teardown), Case("SPM - Access non-secure RAM", fault_override_setup, non_secure_ram_fault_test, fault_override_teardown), Case("SPM - Access non-secure Flash", fault_override_setup, non_secure_flash_fault_test, fault_override_teardown), + Case("SPM - Access secure RAM", fault_override_setup, secure_ram_fault_test, fault_override_teardown), + Case("SPM - Access secure Flash", fault_override_setup, secure_flash_fault_test, fault_override_teardown) }; utest::v1::status_t greentea_test_setup(const size_t number_of_cases) diff --git a/TESTS/mbed_hal/trng/main.cpp b/TESTS/mbed_hal/trng/main.cpp index b4fd22e0f87..31be677758e 100644 --- a/TESTS/mbed_hal/trng/main.cpp +++ b/TESTS/mbed_hal/trng/main.cpp @@ -66,6 +66,33 @@ using namespace utest::v1; +#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) +#include "entropy.h" +#include "entropy_poll.h" +#include "crypto.h" +#if !defined(MAX) +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif + +/* Calculating the minimum allowed entropy size in bytes */ +#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \ + MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE) + +void inject_entropy_for_psa() +{ + if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) { + uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; + /* inject some a seed for test*/ + for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { + seed[i] = i; + } + + /* don't really care if this succeed this is just to make crypto init pass*/ + mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); + } +} +#endif // (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) + static int fill_buffer_trng(uint8_t *buffer, trng_t *trng_obj, size_t trng_len) { size_t temp_size = 0, output_length = 0; @@ -241,7 +268,13 @@ Specification specification(greentea_test_setup, cases, greentea_test_teardown_h int main() { +#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) + inject_entropy_for_psa(); +#endif bool ret = !Harness::run(specification); return ret; } + + + diff --git a/TESTS/mbed_platform/FileHandle/main.cpp b/TESTS/mbed_platform/FileHandle/main.cpp index 7d5a2c21f59..0bf9d2c18b2 100644 --- a/TESTS/mbed_platform/FileHandle/main.cpp +++ b/TESTS/mbed_platform/FileHandle/main.cpp @@ -384,17 +384,15 @@ void test_fprintf_fscanf() /** Test fseek and ftell * - * Given already opened file is empty - * - * When set the file position indicator via fseek - * Then underneath retargeting layer seek function is called - * fseek return with succeed and ftell return already set position + * ARM library is quite good at optimising out unnecessary calls to underlying + * seek, so only test real non empty files. * * Given already opened file is not empty * * When set the file position indicator via fseek * Then underneath retargeting layer seek function is called * fseek return with succeed and ftell return already set position + * Check actual character read or written. * */ void test_fseek_ftell() @@ -413,19 +411,6 @@ void test_fseek_ftell() ftell_ret = std::ftell(file); TEST_ASSERT_EQUAL(0, ftell_ret); - TestFile::resetFunctionCallHistory(); - fssek_ret = std::fseek(file, 0, SEEK_CUR); - TEST_ASSERT_EQUAL(0, fssek_ret); - - TestFile::resetFunctionCallHistory(); - fssek_ret = std::fseek(file, 0, SEEK_SET); - TEST_ASSERT_EQUAL(0, fssek_ret); - - TestFile::resetFunctionCallHistory(); - fssek_ret = std::fseek(file, 0, SEEK_END); - TEST_ASSERT_TRUE(TestFile::functionCalled(TestFile::fnSeek)); - TEST_ASSERT_EQUAL(0, fssek_ret); - const char *str = "Hello world"; const std::size_t size = std::strlen(str); @@ -440,19 +425,28 @@ void test_fseek_ftell() TEST_ASSERT_EQUAL(0, fssek_ret); ftell_ret = std::ftell(file); TEST_ASSERT_EQUAL(5, ftell_ret); + int c = std::fgetc(file); + TEST_ASSERT_TRUE(TestFile::functionCalled(TestFile::fnRead)); + TEST_ASSERT_EQUAL(c, str[5]); TestFile::resetFunctionCallHistory(); - fssek_ret = std::fseek(file, -5, SEEK_CUR); + fssek_ret = std::fseek(file, -6, SEEK_CUR); TEST_ASSERT_EQUAL(0, fssek_ret); ftell_ret = std::ftell(file); TEST_ASSERT_EQUAL(0, ftell_ret); + c = std::fgetc(file); + TEST_ASSERT_TRUE(TestFile::functionCalled(TestFile::fnRead)); + TEST_ASSERT_EQUAL(c, str[0]); TestFile::resetFunctionCallHistory(); fssek_ret = std::fseek(file, 0, SEEK_END); - TEST_ASSERT_TRUE(TestFile::functionCalled(TestFile::fnSeek)); TEST_ASSERT_EQUAL(0, fssek_ret); ftell_ret = std::ftell(file); TEST_ASSERT_EQUAL(size, ftell_ret); + c = std::fputc('!', file); + TEST_ASSERT_TRUE(TestFile::functionCalled(TestFile::fnWrite)); + TEST_ASSERT_EQUAL(c, '!'); + TEST_ASSERT_EQUAL(fh.size(), size + 1); std::fclose(file); } diff --git a/TESTS/mbed_platform/Stream/main.cpp b/TESTS/mbed_platform/Stream/main.cpp index e615e8adfc0..288be0aff00 100644 --- a/TESTS/mbed_platform/Stream/main.cpp +++ b/TESTS/mbed_platform/Stream/main.cpp @@ -18,43 +18,196 @@ #include "utest/utest.h" #include "unity/unity.h" #include "mbed.h" +#include "Stream.h" + +/* This test suite verifies that write/read/write/read sequence can be + * successfully executed on the Stream objects. + * + * A qute from C99 standard, paragraph 7.19.5.3, point 6: + * + * When a file is opened with update mode ('+' as the second or third character in the + * above list of mode argument values), both input and output may be performed on the + * associated stream. However, output shall not be directly followed by input without an + * intervening call to the fflush function or to a file positioning function (fseek, + * fsetpos, or rewind), and input shall not be directly followed by output without an + * intervening call to a file positioning function, unless the input operation encounters end- + * of-file. + */ using utest::v1::Case; +const char FMT[] = "Foo%02ibar."; +const size_t FORMATTED_STR_SIZE = 3 + 2 + 4 + 1; +// The test Stream instance has to be able to store two printf() output strings. +const size_t LOOPBACK_BUFF_SIZE = 2 * FORMATTED_STR_SIZE; + class Loopback : public Stream { public: - Loopback(const char *name = NULL) : Stream(name) {} + Loopback(const char *name = NULL) : Stream(name) + { + // The `fgets()` stops reading after a newline or EOF. + // Fill the buffer with newlines to simplify fgets() usage in this test. + memset(_buff, '\n', LOOPBACK_BUFF_SIZE); + _p_index = 0; + _g_index = 0; + } -protected: - virtual int _getc() + virtual ~Loopback() + { + } + + int test_vprintf(const char *fmt, ...) { - return _c; + int rc = -1; + std::va_list args; + va_start(args, fmt); + rc = vprintf(fmt, args); + va_end(args); + return rc; } + + int test_vscanf(const char *fmt, ...) + { + int rc = EOF; + std::va_list args; + va_start(args, fmt); + rc = vscanf(fmt, args); + va_end(args); + return rc; + } + +protected: virtual int _putc(int c) { - _c = c; + if (_p_index >= LOOPBACK_BUFF_SIZE) { + return -1; + } + _buff[_p_index++] = (int8_t)c; return c; } + + virtual int _getc() + { + if (_g_index >= LOOPBACK_BUFF_SIZE) { + return -1; + } + return _buff[_g_index++]; + } + private: - char _c; + int8_t _buff[LOOPBACK_BUFF_SIZE]; + size_t _p_index; + size_t _g_index; }; -Loopback loop("loopback"); - +/* Test intermixed Stream::putc() / Stream::getc(). + * + * Given a Stream object, + * when a write/read/write/read sequence is executed + * with the use of Stream::putc() and Stream::getc() methods, + * then all operations succeed. + */ void test_putc_getc() { + char char_buff[2] = {'a', 'b'}; + Loopback loop("loopback"); int ret; - char char_buf[2] = {'a', 'b'}; - ret = loop.putc(char_buf[0]); - TEST_ASSERT_EQUAL_INT(char_buf[0], ret); + ret = loop.putc(char_buff[0]); + TEST_ASSERT_EQUAL_INT(char_buff[0], ret); ret = loop.getc(); - TEST_ASSERT_EQUAL_INT(char_buf[0], ret); - ret = loop.putc(char_buf[1]); - TEST_ASSERT_EQUAL_INT(char_buf[1], ret); + TEST_ASSERT_EQUAL_INT(char_buff[0], ret); + ret = loop.putc(char_buff[1]); + TEST_ASSERT_EQUAL_INT(char_buff[1], ret); ret = loop.getc(); - TEST_ASSERT_EQUAL_INT(char_buf[1], ret); - return; + TEST_ASSERT_EQUAL_INT(char_buff[1], ret); +} + +/* Test intermixed Stream::puts() / Stream::gets(). + * + * Given a Stream object, + * when a write/read/write/read sequence is executed, + * with the use of Stream::puts() and Stream::gets() methods, + * then all operations succeed. + */ +void test_puts_gets() +{ + const size_t STR_LEN = 3; + const size_t STR_SIZE = STR_LEN + 1; // +1 for '\0' + char strings[2][STR_SIZE] = {"Foo", "Bar"}; + const size_t GETS_BUFF_SIZE = STR_LEN + 2; // +1 for '\n' (gets() stops AFTER a '\n'), +1 for '\0' + char g_buff[GETS_BUFF_SIZE] = {}; + Loopback loop("loopback"); + int p_rc; + char *g_rc; + + p_rc = loop.puts(strings[0]); + TEST_ASSERT(p_rc >= 0); + g_rc = loop.gets(g_buff, GETS_BUFF_SIZE); + TEST_ASSERT_EQUAL_PTR(g_buff, g_rc); + + p_rc = loop.puts(strings[1]); + TEST_ASSERT(p_rc >= 0); + g_rc = loop.gets(g_buff, GETS_BUFF_SIZE); + TEST_ASSERT_EQUAL_PTR(g_buff, g_rc); +} + +/* Test intermixed Stream::printf() / Stream::scanf(). + * + * Given a Stream object, + * when a write/read/write/read sequence is executed, + * with the use of Stream::printf() and Stream::scanf() methods, + * then all operations succeed. + */ +void test_printf_scanf() +{ + Loopback loop("loopback"); + int p_val, g_val, rc; + + p_val = 42; + g_val = p_val + 1; + rc = loop.printf(FMT, p_val); + TEST_ASSERT(rc > 0); + rc = loop.scanf(FMT, &g_val); + TEST_ASSERT(rc == 1); + TEST_ASSERT_EQUAL_INT(p_val, g_val); + + p_val += 5; + g_val = p_val + 1; + rc = loop.printf(FMT, p_val); + TEST_ASSERT(rc > 0); + rc = loop.scanf(FMT, &g_val); + TEST_ASSERT(rc == 1); + TEST_ASSERT_EQUAL_INT(p_val, g_val); +} + +/* Test intermixed Stream::vprintf() / Stream::vscanf(). + * + * Given a Stream object, + * when a write/read/write/read sequence is executed, + * with the use of Stream::vprintf() and Stream::vscanf() methods, + * then all operations succeed. + */ +void test_vprintf_vscanf() +{ + Loopback loop("loopback"); + int p_val, g_val, rc; + + p_val = 42; + g_val = p_val + 1; + rc = loop.test_vprintf(FMT, p_val); + TEST_ASSERT(rc > 0); + rc = loop.test_vscanf(FMT, &g_val); + TEST_ASSERT(rc == 1); + TEST_ASSERT_EQUAL_INT(p_val, g_val); + + p_val += 5; + g_val = p_val + 1; + rc = loop.test_vprintf(FMT, p_val); + TEST_ASSERT(rc > 0); + rc = loop.test_vscanf(FMT, &g_val); + TEST_ASSERT(rc == 1); + TEST_ASSERT_EQUAL_INT(p_val, g_val); } utest::v1::status_t test_setup(const size_t number_of_cases) @@ -64,7 +217,10 @@ utest::v1::status_t test_setup(const size_t number_of_cases) } Case cases[] = { - Case("Test putc/getc", test_putc_getc) + Case("Test putc/getc", test_putc_getc), + Case("Test puts/gets", test_puts_gets), + Case("Test printf/scanf", test_printf_scanf), + Case("Test vprintf/vscanf", test_vprintf_vscanf) }; utest::v1::Specification specification(test_setup, cases); diff --git a/TESTS/mbed_platform/crash_reporting/main.cpp b/TESTS/mbed_platform/crash_reporting/main.cpp index dab00237de1..d971099c854 100644 --- a/TESTS/mbed_platform/crash_reporting/main.cpp +++ b/TESTS/mbed_platform/crash_reporting/main.cpp @@ -53,12 +53,17 @@ void test_crash_reporting() // Report readiness greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + printf("\nMessage sent: %s\n", MSG_KEY_DEVICE_READY); static char _key[MSG_KEY_LEN + 1] = { }; static char _value[MSG_VALUE_LEN + 1] = { }; + printf("\nWaiting for crash inject error message: %s\n", MSG_KEY_DEVICE_ERROR); greentea_parse_kv(_key, _value, MSG_KEY_LEN, MSG_VALUE_LEN); + printf("\nCrash inject error message received\n"); + if (strcmp(_key, MSG_KEY_DEVICE_ERROR) == 0) { + printf("\nForcing error\n"); MBED_ERROR1(MBED_ERROR_OUT_OF_MEMORY, "Executing crash reporting test.", 0xDEADBAD); TEST_ASSERT_MESSAGE(0, "crash_reporting() error call failed."); } @@ -67,7 +72,7 @@ void test_crash_reporting() int main(void) { - GREENTEA_SETUP(30, "crash_reporting"); + GREENTEA_SETUP(40, "crash_reporting"); test_crash_reporting(); GREENTEA_TESTSUITE_RESULT(0); diff --git a/TESTS/mbed_platform/stats_cpu/main.cpp b/TESTS/mbed_platform/stats_cpu/main.cpp index 51915d92d66..f4c77526fd6 100644 --- a/TESTS/mbed_platform/stats_cpu/main.cpp +++ b/TESTS/mbed_platform/stats_cpu/main.cpp @@ -21,7 +21,7 @@ #include "mbed.h" -#if !defined(MBED_CPU_STATS_ENABLED) || !defined(DEVICE_LPTICKER) || !defined(DEVICE_SLEEP) +#if !defined(MBED_CPU_STATS_ENABLED) || !DEVICE_LPTICKER || !DEVICE_SLEEP #error [NOT_SUPPORTED] test not supported #endif diff --git a/TESTS/mbedmicro-mbed/attributes/attributes.c b/TESTS/mbedmicro-mbed/attributes/attributes.c index 5329b8a3c5e..df7ede99bb2 100644 --- a/TESTS/mbedmicro-mbed/attributes/attributes.c +++ b/TESTS/mbedmicro-mbed/attributes/attributes.c @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2016-2019 ARM Limited. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the License); you may +* not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ #include "mbed_toolchain.h" #include diff --git a/TESTS/mbedmicro-mbed/attributes/weak.c b/TESTS/mbedmicro-mbed/attributes/weak.c index 7b2f862177a..9a30fe77ce9 100644 --- a/TESTS/mbedmicro-mbed/attributes/weak.c +++ b/TESTS/mbedmicro-mbed/attributes/weak.c @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2016-2019 ARM Limited. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the License); you may +* not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ #include "mbed_toolchain.h" int testWeak1() diff --git a/TESTS/mbedmicro-mbed/static_assert/test_c.c b/TESTS/mbedmicro-mbed/static_assert/test_c.c index b908a2e872d..adcff7073a3 100644 --- a/TESTS/mbedmicro-mbed/static_assert/test_c.c +++ b/TESTS/mbedmicro-mbed/static_assert/test_c.c @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2015-2019 ARM Limited. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the License); you may +* not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ #include "mbed_assert.h" #define THE_ANSWER 42 diff --git a/TESTS/mbedmicro-mbed/static_assert/test_cpp.cpp b/TESTS/mbedmicro-mbed/static_assert/test_cpp.cpp index 2bff2780cb9..024e4970cfc 100644 --- a/TESTS/mbedmicro-mbed/static_assert/test_cpp.cpp +++ b/TESTS/mbedmicro-mbed/static_assert/test_cpp.cpp @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2016-2019 ARM Limited. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the License); you may +* not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ #include "mbed_assert.h" #define THE_ANSWER 42 diff --git a/TESTS/mbedmicro-rtos-mbed/mail/main.cpp b/TESTS/mbedmicro-rtos-mbed/mail/main.cpp index 08a65fbb32b..12804c502c9 100644 --- a/TESTS/mbedmicro-rtos-mbed/mail/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/mail/main.cpp @@ -33,6 +33,8 @@ using namespace utest::v1; #define THREAD_STACK_SIZE 512 #elif defined(__ARM_FM) #define THREAD_STACK_SIZE 512 +#elif defined(TARGET_FUTURE_SEQUANA_PSA) +#define THREAD_STACK_SIZE 512 #else #define THREAD_STACK_SIZE 320 /* larger stack cause out of heap memory on some 16kB RAM boards in multi thread test*/ #endif diff --git a/TESTS/mbedmicro-rtos-mbed/malloc/main.cpp b/TESTS/mbedmicro-rtos-mbed/malloc/main.cpp index c4ffd70c1d2..d2348ad5e8b 100644 --- a/TESTS/mbedmicro-rtos-mbed/malloc/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/malloc/main.cpp @@ -41,6 +41,8 @@ volatile bool thread_should_continue = true; #define THREAD_STACK_SIZE 512 #elif defined(__ARM_FM) #define THREAD_STACK_SIZE 512 +#elif defined(TARGET_FUTURE_SEQUANA_PSA) +#define THREAD_STACK_SIZE 512 #else #define THREAD_STACK_SIZE 256 #endif diff --git a/TESTS/mbedmicro-rtos-mbed/systimer/main.cpp b/TESTS/mbedmicro-rtos-mbed/systimer/main.cpp index 8a25ad28719..d1dba047095 100644 --- a/TESTS/mbedmicro-rtos-mbed/systimer/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/systimer/main.cpp @@ -245,7 +245,10 @@ void test_handler_called_once(void) int32_t sem_slots = st.sem_wait(0); TEST_ASSERT_EQUAL_INT32(0, sem_slots); - sem_slots = st.sem_wait(osWaitForever); + // Wait in a busy loop to prevent entering sleep or deepsleep modes. + while (sem_slots != 1) { + sem_slots = st.sem_wait(0); + } us_timestamp_t t2 = st.get_time(); TEST_ASSERT_EQUAL_INT32(1, sem_slots); TEST_ASSERT_EQUAL_UINT32(1, st.get_tick()); diff --git a/TESTS/mbedmicro-rtos-mbed/threads/main.cpp b/TESTS/mbedmicro-rtos-mbed/threads/main.cpp index 3111aa3d733..9d3d7bfadc9 100644 --- a/TESTS/mbedmicro-rtos-mbed/threads/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/threads/main.cpp @@ -36,6 +36,8 @@ #define PARALLEL_THREAD_STACK_SIZE 512 #elif defined(__ARM_FM) #define PARALLEL_THREAD_STACK_SIZE 512 +#elif defined(TARGET_FUTURE_SEQUANA_PSA) +#define PARALLEL_THREAD_STACK_SIZE 512 #else #define PARALLEL_THREAD_STACK_SIZE 384 #endif diff --git a/TESTS/mbedtls/selftest/main.cpp b/TESTS/mbedtls/selftest/main.cpp index 3704f651233..8a9cb8870e3 100644 --- a/TESTS/mbedtls/selftest/main.cpp +++ b/TESTS/mbedtls/selftest/main.cpp @@ -84,6 +84,32 @@ Case cases[] = { #endif /* MBEDTLS_SELF_TEST */ }; +#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) +#include "crypto.h" +#if !defined(MAX) +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif + +/* Calculating the minimum allowed entropy size in bytes */ +#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \ + MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE) + +void inject_entropy_for_psa() +{ + if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) { + uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; + /* inject some a seed for test*/ + for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { + seed[i] = i; + } + + /* don't really care if this succeed this is just to make crypto init pass*/ + mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); + } +} +#endif // (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) + + utest::v1::status_t test_setup(const size_t num_cases) { GREENTEA_SETUP(120, "default_auto"); @@ -101,6 +127,11 @@ int main() return 1; } #endif + +#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) + inject_entropy_for_psa(); +#endif + ret = (Harness::run(specification) ? 0 : 1); #if defined(MBEDTLS_PLATFORM_C) mbedtls_platform_teardown(NULL); diff --git a/TESTS/netsocket/README.md b/TESTS/netsocket/README.md index 971c9d61f63..7c45460677b 100644 --- a/TESTS/netsocket/README.md +++ b/TESTS/netsocket/README.md @@ -17,7 +17,7 @@ The target for this plan is to test: - [Socket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/Socket.h). - [UDPSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/UDPSocket.h). - [TCPSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TCPSocket.h). -- [TCPServer](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TCPServer.h). +- [TLSSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TLSSocket.h). Reference documentation: https://os.mbed.com/docs/latest/reference/network-socket.html @@ -58,14 +58,14 @@ echo.mbedcloudtesting.com has IPv6 address 2a05:d018:21f:3800:8584:60f8:bc9f:e61 **Open services in the test server** - Echo protocol, [RFC 862](https://tools.ietf.org/html/rfc862) is - enabled in both TCP and UDP. Port 7. + enabled in both TCP and UDP. Port 7. Port 2007 for TLS. - Discard protocol, [RFC 863](https://tools.ietf.org/html/rfc863) is - enabled in both TCP and UDP. Port 9. + enabled in both TCP and UDP. Port 9. Port 2009 for TLS. - Character generator protocol, [RFC 864](https://tools.ietf.org/html/rfc864) is enabled in both TCP and UDP. Port 19. Output pattern should follow the proposed example pattern in RFC. - Daytime protocol, [RFC 867](https://tools.ietf.org/html/rfc867) in - both TCP and UDP. Port 13. + both TCP and UDP. Port 13. Port 2013 for TLS. - Time protocol, [RFC 868](https://tools.ietf.org/html/rfc868) in both TCP and UDP. Port 37. @@ -102,35 +102,41 @@ time stream tcp6 nowait root internal You can connect to the test server with an NMAP tool like this: ```.sh -$ nmap -sT -p7,9,13,37 echo.mbedcloudtesting.com +$ nmap -sT -p7,9,13,37,2007,2009,2013 echo.mbedcloudtesting.com -Starting Nmap 7.12 ( https://nmap.org ) at 2018-04-05 16:17 EEST +Starting Nmap 7.01 ( https://nmap.org ) at 2019-01-07 16:45 CET Nmap scan report for echo.mbedcloudtesting.com (52.215.34.155) -Host is up (0.065s latency). -Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:8584:60f8:bc9f:e614 +Host is up (0.027s latency). +Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:3164:2a5c:75b3:970b rDNS record for 52.215.34.155: ec2-52-215-34-155.eu-west-1.compute.amazonaws.com -PORT STATE SERVICE -7/tcp open echo -9/tcp open discard -13/tcp open daytime -37/tcp open time +PORT STATE SERVICE +7/tcp open echo +9/tcp open discard +13/tcp open daytime +37/tcp open time +2007/tcp open dectalk +2009/tcp open news +2013/tcp open raid-am -Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds +Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds -$ sudo nmap -sT -p7,9,13,37 echo.mbedcloudtesting.com +$ sudo nmap -sU -p7,9,13,37,2007,2009,2013 echo.mbedcloudtesting.com -Starting Nmap 7.12 ( https://nmap.org ) at 2018-04-05 16:16 EEST +Starting Nmap 7.01 ( https://nmap.org ) at 2019-01-08 15:05 CET Nmap scan report for echo.mbedcloudtesting.com (52.215.34.155) -Host is up (0.068s latency). -Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:8584:60f8:bc9f:e614 +Host is up (0.044s latency). +Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:3164:2a5c:75b3:970b rDNS record for 52.215.34.155: ec2-52-215-34-155.eu-west-1.compute.amazonaws.com -PORT STATE SERVICE -7/tcp open echo -9/tcp open discard -13/tcp open daytime -37/tcp open time - -Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds +PORT STATE SERVICE +7/udp open echo +9/udp open|filtered discard +13/udp closed daytime +37/udp closed time +2007/udp closed raid-am +2009/udp closed whosockami +2013/udp closed raid-cd + +Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds ``` ### Ethernet test environment @@ -173,43 +179,55 @@ pass the test if the driver implements the feature in question. | 12 | UDPSOCKET_BIND_UNOPENED | SHOULD | | 13 | UDPSOCKET_SENDTO_INVALID | MUST | | 14 | UDPSOCKET_SENDTO_REPEAT | MUST | -| 15 | UDPSOCKET_BIND_SENDTO | SHOULD | -| 16 | UDPSOCKET_ECHOTEST | MUST | -| 17 | UDPSOCKET_ECHOTEST_NONBLOCK | MUST | -| 18 | UDPSOCKET_RECV_TIMEOUT | SHOULD | -| 19 | UDPSOCKET_SENDTO_TIMEOUT | SHOULD | -| 20 | TCPSOCKET_OPEN_DESTRUCT | MUST | -| 21 | TCPSOCKET_OPEN_LIMIT | MUST | -| 22 | TCPSOCKET_OPEN_TWICE | MUST | -| 23 | TCPSOCKET_OPEN_CLOSE_REPEAT | MUST | -| 24 | TCPSOCKET_BIND_PORT | SHOULD | -| 25 | TCPSOCKET_BIND_PORT_FAIL | SHOULD | -| 26 | TCPSOCKET_BIND_ADDRESS_PORT | SHOULD | -| 27 | TCPSOCKET_BIND_ADDRESS_NULL | SHOULD | -| 28 | TCPSOCKET_BIND_ADDRESS_INVALID | SHOULD | -| 29 | TCPSOCKET_BIND_WRONG_TYPE | SHOULD | -| 30 | TCPSOCKET_BIND_ADDRESS | SHOULD | -| 31 | TCPSOCKET_BIND_UNOPENED | SHOULD | -| 32 | TCPSOCKET_CONNECT_INVALID | MUST | -| 33 | TCPSOCKET_SEND_REPEAT | MUST | -| 34 | TCPSOCKET_ECHOTEST | MUST | -| 35 | TCPSOCKET_ECHOTEST_NONBLOCK | MUST | -| 36 | TCPSOCKET_RECV_TIMEOUT | SHOULD | -| 37 | TCPSOCKET_SEND_TIMEOUT | SHOULD | -| 38 | TCPSOCKET_ENDPOINT_CLOSE | MUST | -| 39 | TCPSERVER_ACCEPT | SHOULD | -| 40 | TCPSERVER_LISTEN | SHOULD | -| 41 | TCPSERVER_LISTEN_WITHOUT_BIND | SHOULD | -| 42 | TCPSERVER_ACCEPT_WITHOUT_LISTEN | SHOULD | -| 43 | UDPSOCKET_ECHOTEST_BURST | MUST | -| 44 | UDPSOCKET_ECHOTEST_BURST_NONBLOCK | MUST | -| 45 | TCPSOCKET_ECHOTEST_BURST | MUST | -| 46 | TCPSOCKET_ECHOTEST_BURST_NONBLOCK | MUST | -| 47 | TCPSOCKET_RECV_100K | MUST | -| 48 | TCPSOCKET_RECV_100K_NONBLOCK | MUST | -| 49 | TCPSOCKET_THREAD_PER_SOCKET_SAFETY | MUST | -| 50 | TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID | SHOULD | -| 51 | TCPSOCKET_SETSOCKOPT_KEEPALIVE_INVALID | SHOULD | +| 15 | UDPSOCKET_ECHOTEST | MUST | +| 16 | UDPSOCKET_ECHOTEST_NONBLOCK | MUST | +| 17 | UDPSOCKET_RECV_TIMEOUT | SHOULD | +| 18 | UDPSOCKET_SENDTO_TIMEOUT | SHOULD | +| 19 | TCPSOCKET_OPEN_DESTRUCT | MUST | +| 20 | TCPSOCKET_OPEN_LIMIT | MUST | +| 21 | TCPSOCKET_OPEN_TWICE | MUST | +| 22 | TCPSOCKET_OPEN_CLOSE_REPEAT | MUST | +| 23 | TCPSOCKET_BIND_PORT | SHOULD | +| 24 | TCPSOCKET_BIND_PORT_FAIL | SHOULD | +| 25 | TCPSOCKET_BIND_ADDRESS_PORT | SHOULD | +| 26 | TCPSOCKET_BIND_ADDRESS_NULL | SHOULD | +| 27 | TCPSOCKET_BIND_ADDRESS_INVALID | SHOULD | +| 28 | TCPSOCKET_BIND_WRONG_TYPE | SHOULD | +| 29 | TCPSOCKET_BIND_ADDRESS | SHOULD | +| 30 | TCPSOCKET_BIND_UNOPENED | SHOULD | +| 31 | TCPSOCKET_CONNECT_INVALID | MUST | +| 32 | TCPSOCKET_SEND_REPEAT | MUST | +| 33 | TCPSOCKET_ECHOTEST | MUST | +| 34 | TCPSOCKET_ECHOTEST_NONBLOCK | MUST | +| 35 | TCPSOCKET_RECV_TIMEOUT | SHOULD | +| 36 | TCPSOCKET_SEND_TIMEOUT | SHOULD | +| 37 | TCPSOCKET_ENDPOINT_CLOSE | MUST | +| 38 | UDPSOCKET_ECHOTEST_BURST | MUST | +| 39 | UDPSOCKET_ECHOTEST_BURST_NONBLOCK | MUST | +| 40 | TCPSOCKET_ECHOTEST_BURST | MUST | +| 41 | TCPSOCKET_ECHOTEST_BURST_NONBLOCK | MUST | +| 42 | TCPSOCKET_RECV_100K | MUST | +| 43 | TCPSOCKET_RECV_100K_NONBLOCK | MUST | +| 44 | TCPSOCKET_THREAD_PER_SOCKET_SAFETY | MUST | +| 45 | TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID | SHOULD | +| 46 | TLSSOCKET_OPEN_DESTRUCT | SHOULD | +| 47 | TLSSOCKET_OPEN_LIMIT | SHOULD | +| 48 | TLSSOCKET_OPEN_TWICE | SHOULD | +| 49 | TLSSOCKET_CONNECT_INVALID | SHOULD | +| 50 | TLSSOCKET_HANDSHAKE_INVALID | SHOULD | +| 51 | TLSSOCKET_SEND_CLOSED | SHOULD | +| 52 | TLSSOCKET_SEND_UNCONNECTED | SHOULD | +| 53 | TLSSOCKET_SEND_REPEAT | SHOULD | +| 54 | TLSSOCKET_SEND_TIMEOUT | SHOULD | +| 55 | TLSSOCKET_ECHOTEST | SHOULD | +| 56 | TLSSOCKET_ECHOTEST_NONBLOCK | SHOULD | +| 57 | TLSSOCKET_ENDPOINT_CLOSE | SHOULD | +| 58 | TLSSOCKET_NO_CERT | SHOULD | +| 59 | TLSSOCKET_RECV_TIMEOUT | SHOULD | +| 60 | TLSSOCKET_SIMULTANEOUS_TEST | SHOULD | +| 61 | TLSSOCKET_ECHOTEST_BURST | SHOULD | +| 62 | TLSSOCKET_ECHOTEST_BURST_NONBLOCK | SHOULD | + Building test binaries @@ -242,9 +260,20 @@ content at minimum: "echo-server-port" : { "help" : "Port of echo server", "value" : "7" + }, + "echo-server-discard-port" : { + "help" : "Discard port of echo server", + "value" : "9" + }, + "echo-server-port-tls" : { + "help" : "Echo port of echo server", + "value" : "2007" + }, + "echo-server-discard-port-tls" : { + "help" : "Discard port of echo server", + "value" : "2009" } - }, - "macros": ["MBED_EXTENDED_TESTS"] + } } ``` @@ -298,8 +327,11 @@ the `mbed_app.json` might look like this: "help" : "Port of echo server", "value" : "7" } + "echo-server-port-tls" : { + "help" : "Port of echo server TLS", + "value" : "2007" + } }, - "macros": ["MBED_EXTENDED_TESTS"], "target_overrides": { "*": { "target.network-default-interface-type": "WIFI", @@ -334,7 +366,10 @@ Test cases for Socket class These test are equal for UDPSocket and TCPSocket but are described here because of identical API and behaviour. Socket class is abstract so it cannot be instantiated, therefore these test cases are implemented using -both TCPSocket and UDPSocket. +both TCPSocket and UDPSocket. Some of these tests are also implemented +for TLSSocket class. In such case certificate has to be set for the Socket +before calling `open()`, unless specified otherwise in the test's +description. ### SOCKET_OPEN_DESTRUCT @@ -713,19 +748,16 @@ Call `UDPSocket::sendto()` with invalid parameters. 1. Call `UDPSocket:sendto( NULL, 9, NULL, 0);` 2. Call `UDPSocket:sendto( "", 9, NULL, 0);` 3. Call `UDPSocket:sendto( "", 0, NULL, 0);` -4. Call `UDPSocket:sendto(NULL, 9, "hello", 5);` -5. Call `UDPSocket:sendto(NULL, 0, "hello", 5);` -6. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9,NULL, 0);` -7. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);` -8. destroy the socket +4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9,NULL, 0);` +5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);` +6. destroy the socket **Expected result:** All sendto() calls should return some error code except: -- step 6 should return 5 -- step 7 should return 0 -- step 8 should return 5 +- step 4 should return 0 +- step 5 should return 5 @@ -755,41 +787,6 @@ All sendto() calls should return 5. -### UDPSOCKET_BIND_SENDTO - -**Description:** - - Bind the socket to specific port before sending. Verify from DUT2 that -packet was coming from correct port. - -Requires two devices with LAN connectivity (Eth, WiFi or mesh). For -Cellular or WAN connectivity, skip this test. - -**Preconditions:** - -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open - -**Test steps:** - -1. DUT1&2: Call `UDPSocket::bind();` -2. DUT2: Get devices IP address -3. DUT1: Call `UDPSocket::sendto( dut2, port, "hello", 5);` -4. DUT2: Call `UDPSocket::recvfrom();` -5. destroy the sockets - -**Expected result:** - -`UDPSocket::bind()` should return NSAPI_ERROR_OK. - -`UDPSocket::sendto()` call should return 5. - -`UDPSocket::recvfrom()` should return 5 and port number should match the -one used in bind() call. Data should contain "hello" - - - ### UDPSOCKET_ECHOTEST **Description:** @@ -994,7 +991,7 @@ Call `TCPSocket::connect()` with invalid parameters. **Expected result:** -All connect() calls should return some error code except the number 5 +All connect() calls should return some error code except the number 4 should return NSAPI_ERROR_OK. @@ -1218,52 +1215,52 @@ Test we are able to request setting valid TCP keepalive values `TCPSocket::getsockopt(keepalive)` returns same value as was set with `TCPSocket::setsockopt()` or NSAPI_ERROR_UNSUPPORTED -### TCPSOCKET_SETSOCKOPT_KEEPALIVE_INVALID +Test cases for TLSSocket class +------------------------------ -**Description:** +### TLSSOCKET_OPEN_DESTRUCT -Test we are able to detect if an invalid TCP keepalive value is tried to -be set +**Description:** Run SOCKET_OPEN_DESTRUCT for TLSSocket -**Preconditions:** +### TLSSOCKET_OPEN_LIMIT -1. Network interface and stack are initialised -2. Network connection is up +**Description:** Run SOCKET_OPEN_LIMIT for TLSSocket -**Test steps:** +### TLSSOCKET_OPEN_TWICE -1. Call `TCPSocket::setsockopt(keepalive, [-1 or 7201]);` -2. Call `TCPSocket::getsockopt(keepalive);` +**Description:** Run SOCKET_OPEN_TWICE for TLSSocket -**Postconditions:** +### TLSSOCKET_CONNECT_INVALID -1. Call `TCPSocket::close();` -2. delete socket +**Description:** Run SOCKET_CONNECT_INVALID for TLSSocket -**Expected result:** +### TLSSOCKET_HANDSHAKE_INVALID -`TCPSocket::setsockopt(keepalive)` returns error code or -NSAPI_ERROR_UNSUPPORTED +**Description:** -`TCPSocket::getsockopt()` returns 0 or NSAPI_ERROR_UNSUPPORTED +Execute TLS handshake by calling `TLSSocket::connect()` - server must not match to the certificate used by to os.mbed.com +**Preconditions:** -Test cases for TCPServer class ------------------------------- +1. Network interface and stack are initialised +2. Network connection is up -These tests require two devices under test and connectivity between -them. Therefore they can only be ran with LAN connectivity (Eth, Wifi or -Mesh) or if there is no firewall between devices. +**Test steps:** +1. Create TLSSocket +2. Call `TLSSocket::open()` +3. Call `TLSSocket::connect("os.mbed.com", 2009)` +4. Call `TLSSocket::close()` -### TCPSERVER_ACCEPT +**Expected result:** -**Description:** +TLSSocket::connect must return an error + +### TLSSOCKET_SEND_CLOSED - Test that `TCPServer::bind()`, `TCPServer::listen()` -and `TCPServer::accept()` works. +**Description:** -Requires 2 devices. +Make a HTTP request to a closed socket **Preconditions:** @@ -1272,34 +1269,29 @@ Requires 2 devices. **Test steps:** -1. DUT1: `TCPServer::bind()` -2. DUT1: `TCPServer::listen()` -3. DUT1: Create a new `TCPSocket` -4. DUT1: `TCPServer::accept()` -5. DUT2: Create a new `TCPSocket` -6. DUT2: `TCPSocket::connect(, )` -7. DUT1: should receive new socket from accept(), - call `TCPSocket::send("hello",5)` for it -8. DUT2: call `TCPSocket::recv(buffer, 5)` -9. DUT2: Verify that it received "hello" -10. destroy all sockets. +1. Create TLSSocket +2. Call `TLSSocket::open()` +3. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007)` +4. Call `TLSSocket::close()` +5. Call `TLSSocket::send("12345", 5)` **Expected result:** -On DUT1 accept() call blocks until connection is received. Other calls -should return NSAPI_ERROR_OK +TLSSocket::send must return an error -On DUT2 all calls should return NSAPI_ERROR_OK +### TLSSOCKET_SEND_REPEAT +**Description:** Run SOCKET_SEND_REPEAT for TLSSOCKET by using port number 2009. +### TLSSOCKET_SEND_TIMEOUT -### TCPSERVER_LISTEN +**Description:** Run SOCKET_SEND_TIMEOUT for TLSSOCKET by using port number 2009. -**Description:** +### TLSSOCKET_SEND_UNCONNECTED - Test that `TCPServer::listen()` has the backlog functionality. +**Description:** -Requires 2 devices. +Make a HTTP request to an unconnected socket **Preconditions:** @@ -1308,34 +1300,32 @@ Requires 2 devices. **Test steps:** -1. DUT1: `TCPServer::bind()` -2. DUT1: `TCPServer::listen(2)` -3. loop 2 times: - 1. DUT2: Create a new TCPSocket - 2. DUT2: `TCPSocket::connect(, )` +1. Create TLSSocket +2. Call `TLSSocket::open()` +3. Call `TLSSocket::send("12345", 5)` +4. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007)` + +**Expected result:** -4. loop 2 times: - 1. DUT1: Create a new TCPSocket - 2. DUT1: `TCPServer::accept()` - 3. DUT1: should receive new socket from accept(), - call `TCPSocket::send("hello",5)` for it +TLSSocket::send must return an error -5. DUT2: call `TCPSocket::recv(buffer, 5)` for both socket. -6. DUT2: Verify that it received "hello" -7. destroy all sockets. +### TLSSOCKET_ECHOTEST -**Expected result:** +**Description:** Run SOCKET_ECHOTEST for TLSSOCKET by using port number 2007. + +### TLSSOCKET_ECHOTEST_NONBLOCK -DUT2 should receive connection before the server have called accept(), -because backlog must be minimum of 2. +**Description:** Run SOCKET_ECHOTEST_NONBLOCK for TLSSOCKET by using port number 2007. +### TLSSOCKET_ENDPOINT_CLOSE -### TCPSERVER_LISTEN_WITHOUT_BIND +**Description:** Run SOCKET_ENDPOINT_CLOSE for TLSSOCKET by using port number 2013. + +### TLSSOCKET_NO_CERT **Description:** - Call `TCPServer::listen()` without calling bind() first. Should fail, -because no listening port have been defined. +Verify that TLS Socket fails to connect without certificate. **Preconditions:** @@ -1344,40 +1334,60 @@ because no listening port have been defined. **Test steps:** -1. Create TCPServer -2. Call `TCPServer::listen()` +1. Create TLSSocket, without adding a default certificate. +2. Call `TLSSocket::open()` +3. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2009)` **Expected result:** -Should -return NSAPI_ERROR_UNSUPPORTED, NSAPI_ERROR_PARAMETER, NSAPI_ERROR_NO_ADDRESS -or NSAPI_ERROR_DEVICE_ERROR +TLSSocket::connect must return an error if the certificate is not present. + +### TLSSOCKET_RECV_TIMEOUT +**Description:** -### TCPSERVER_ACCEPT_WITHOUT_LISTEN +Run TCPSOCKET_RECV_TIMEOUT for TLSSOCKET by using port number 2007.  + +### TLSSOCKET_SIMULTANEOUS_TEST **Description:** - Call `TCPServer::accept()` without calling listen() first. Should fail, -because socket is not listening for connections. +Simultaneously send packets to echo server on two opened sockets and read incoming packets back. Verify working of two TLS sockets open and operate simultaneously. **Preconditions:** 1. Network interface and stack are initialised 2. Network connection is up +3. TLSSockets are open and one additional thread has been created + +4. Both threads get their own socket instance **Test steps:** -1. Create TCPServer -2. Call `TCPServer::bind()` -3. Create new TCPSocket. -4. Call `TCPServer::accept()` +1. On main thread: + 1. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007);` + 2. Call `TLSSocket::send(, );` + 1. If less than was returned, size = sent bytes -**Expected result:** + 3. `Call TLSSocket::recv(buffer, );` + 4. Verify incomming content was the same that was sent + 5. Repeat 100 times + +2. Simultaneously with the earlier step do on the additional thread: + 1. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007);` + 2. Call `TLSSocket::send(, );` + 1. If less than was returned, size = sent bytes -Should return NSAPI_ERROR_UNSUPPORTED, NSAPI_ERROR_PARAMETER -or NSAPI_ERROR_DEVICE_ERROR + 3. Call `TLSSocket::recv(buffer, );` + 4. Verify incomming content was the same that was sent + 5. Repeat 100 times +3. Wait for end additional thread +4. Close and destroy the sockets + +**Expected result:** + +All send() calls should return the packet size or less. All recv() calls on main thread should return the same sized packet that was send with same content. All recv() calls on additional thread should return the valid daytime string .  Performance tests ----------------- @@ -1391,9 +1401,9 @@ Send burst of packets to echo server and read incoming packets back. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** @@ -1405,8 +1415,8 @@ Send burst of packets to echo server and read incoming packets back. 6. Wait for incomming packets for five second. 7. Verify incomming content was the same that was sent. Allow packet reordering. -8. Repeat 100 times -9. destroy the socket +8. Repeat 100 times. +9. Destroy the socket. **Expected result:** @@ -1415,9 +1425,9 @@ All sendto() calls should return the packet size. All recvfrom() calls should return the same sized packet that was send with same content. Allow packet reordering. -Calculate packet loss rate, maximum tolerated packet loss rate is 30% +Calculate packet loss rate, maximum tolerated packet loss rate is 30%. -Calculate number of succesfull rounds, it should be higher than 70 +Calculate number of succesfull rounds, it should be higher than 70. ### UDPSOCKET_ECHOTEST_BURST_NONBLOCK @@ -1425,13 +1435,13 @@ Calculate number of succesfull rounds, it should be higher than 70 **Description:** Send burst of packets to echo server and read incoming packets back. Use -socket in non-blocking mode +socket in non-blocking mode. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** @@ -1447,8 +1457,8 @@ socket in non-blocking mode 9. Wait for incomming packets for five second. 10. Verify incomming content was the same that was sent. Allow packet reordering. -11. Repeat 100 times -12. destroy the socket +11. Repeat 100 times. +12. Destroy the socket. **Expected result:** @@ -1457,9 +1467,9 @@ All sendto() calls should return the packet size. All recvfrom() calls should return the same sized packet that was send with same content. Allow packet reordering. -Calculate packet loss rate, maximum tolerated packet loss rate is 30% +Calculate packet loss rate, maximum tolerated packet loss rate is 30%. -Calculate number of succesfull rounds, it should be higher than 70 +Calculate number of succesfull rounds, it should be higher than 70. @@ -1471,9 +1481,9 @@ Send burst of packets to echo server and read incoming packets back. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** @@ -1485,8 +1495,8 @@ Send burst of packets to echo server and read incoming packets back. 6. Call `TCPSocket::send(, 500);` 7. Call `TCPSocket::recv(buf, 1220)` 8. Verify incomming content was the same that was sent. -9. Repeat 100 times -10. destroy the socket +9. Repeat 100 times. +10. Destroy the socket. **Expected result:** @@ -1505,13 +1515,13 @@ send. Total amount of returned must match 1220. **Description:** Send burst of packets to echo server and read incoming packets back. Use -socket in non-blocking mode +socket in non-blocking mode. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** @@ -1523,13 +1533,13 @@ socket in non-blocking mode 5. For randomly generated packets, sized 100, 200, 300, 120 and 500 do 1. Call `TCPSocket::send(packet, size);` 2. If less than size is sent, repeat with remaining. - 3. If NSAPI_ERROR_WOULD_BLOCK returned, wait for next sigio() + 3. If NSAPI_ERROR_WOULD_BLOCK returned, wait for next sigio(). 6. Wait for incomming packets for five second. 7. Verify incomming content was the same that was sent. Allow recv() to return smaller piezes. -8. Repeat 100 times -9. destroy the socket +8. Repeat 100 times. +9. Destroy the socket. **Expected result:** @@ -1551,9 +1561,9 @@ Download 100kB of data **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** @@ -1561,7 +1571,7 @@ Download 100kB of data 2. Call `TCPSocket::recv(buffer, 100);` 3. Verify input according to known pattern. 4. Loop until 100kB of data received. -5. close socket. +5. Close socket. **Expected result:** @@ -1578,9 +1588,9 @@ Download 100kB of data **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialised. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** @@ -1592,7 +1602,7 @@ Download 100kB of data 2. Verify input according to known pattern. 4. Wait until 100kB of data received. -5. close socket. +5. Close socket. **Expected result:** @@ -1600,7 +1610,7 @@ Each recv() call should return equal or less than 100 bytes of data or NSAPI_ERROR_WOULD_BLOCK in which case thread should wait for another sigio(). No errors should be returned. -Measure time taken for receiving, report speed +Measure time taken for receiving, report speed. ### TCPSOCKET_THREAD_PER_SOCKET_SAFETY @@ -1611,16 +1621,16 @@ through a dedicated socket **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. 2 TCPSockets are open and one additional thread has been created -4. Both threads get their own socket instance +1. Network interface and stack are initialised. +2. Network connection is up. +3. 2 TCPSockets are open and one additional thread has been created. +4. Both threads get their own socket instance. **Test steps:** 1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7)` in both threads - in the main thread executing the test case and on - the additional one; + the additional one. 2. On main thread 1. For randomly generated packets, sized 1001, 901, 801,...,101,1 do @@ -1636,21 +1646,19 @@ through a dedicated socket 3. stop the thread if inconsistensies were found and report it to main thread -4. Kill the additional thread -5. Close and destroy the sockets +4. Kill the additional thread. +5. Close and destroy the sockets. **Expected result:** Echo server returns data to both threads and received data matches to -send data. The additional thread isn't stopped prematurely +send data. The additional thread isn't stopped prematurely. Subset for driver test ---------------------- ### For physical layer driver (emac, PPP): -- TCPSERVER_ACCEPT -- TCPSERVER_LISTEN - TCPSOCKET_ECHOTEST - TCPSOCKET_ECHOTEST_BURST - TCPSOCKET_ECHOTEST_BURST_NONBLOCK @@ -1669,4 +1677,4 @@ Subset for driver test ### For socket layer driver (AT-driven, external IP stack): -All Socket, UDPSocket, TCPSocket and TCPServer testcases. +All Socket, UDPSocket, TCPSocket and TLSSocket testcases. diff --git a/TESTS/netsocket/dns/asynchronous_dns.cpp b/TESTS/netsocket/dns/asynchronous_dns.cpp index 8dcac3c65c8..a9eb6b517d8 100644 --- a/TESTS/netsocket/dns/asynchronous_dns.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns.cpp @@ -34,8 +34,8 @@ void ASYNCHRONOUS_DNS() { do_asynchronous_gethostbyname(dns_test_hosts, 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == 1); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(1, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/asynchronous_dns_cache.cpp b/TESTS/netsocket/dns/asynchronous_dns_cache.cpp index 3a25296a3c0..caa10bd6ae7 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_cache.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_cache.cpp @@ -50,7 +50,7 @@ void ASYNCHRONOUS_DNS_CACHE() semaphore.wait(); - TEST_ASSERT(data.result == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result); TEST_ASSERT(strlen(data.addr.get_ip_address()) > 1); int delay_ms = (ticker_us - started_us) / 1000; diff --git a/TESTS/netsocket/dns/asynchronous_dns_cancel.cpp b/TESTS/netsocket/dns/asynchronous_dns_cancel.cpp index 2c866cf6f7d..e5594e16f47 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_cancel.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_cancel.cpp @@ -42,6 +42,7 @@ void ASYNCHRONOUS_DNS_CANCEL() count++; } else { // No memory to initiate DNS query, callback will not be called + printf("Error: No memory to initiate DNS query for %s\n", dns_test_hosts[i]); data[i].result = NSAPI_ERROR_NO_MEMORY; data[i].value_set = true; } diff --git a/TESTS/netsocket/dns/asynchronous_dns_external_event_queue.cpp b/TESTS/netsocket/dns/asynchronous_dns_external_event_queue.cpp index 11291f5e937..2a2493a76d8 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_external_event_queue.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_external_event_queue.cpp @@ -57,10 +57,10 @@ void ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE() do_asynchronous_gethostbyname(dns_test_hosts, MBED_CONF_NSAPI_DNS_CACHE_SIZE, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == MBED_CONF_NSAPI_DNS_CACHE_SIZE); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_NSAPI_DNS_CACHE_SIZE, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); // Dispatch event queue Thread eventThread(osPriorityNormal, EXTERNAL_THREAD_SIZE); @@ -73,10 +73,10 @@ void ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE() do_asynchronous_gethostbyname(dns_test_hosts_second, MBED_CONF_APP_DNS_SIMULT_QUERIES + 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == MBED_CONF_APP_DNS_SIMULT_QUERIES); - TEST_ASSERT(result_no_mem == 1); // last query fails for no memory as expected - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_APP_DNS_SIMULT_QUERIES, result_ok); + TEST_ASSERT_EQUAL(1, result_no_mem); // last query fails for no memory as expected + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); // Give event queue time to finalise before destructors wait(2.0); diff --git a/TESTS/netsocket/dns/asynchronous_dns_invalid_host.cpp b/TESTS/netsocket/dns/asynchronous_dns_invalid_host.cpp index 57780b26ef7..29bed790e97 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_invalid_host.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_invalid_host.cpp @@ -61,8 +61,8 @@ void ASYNCHRONOUS_DNS_INVALID_HOST() do_asynchronous_gethostbyname(dns_test_hosts_new, MBED_CONF_APP_DNS_SIMULT_QUERIES + 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == exp_ok); - TEST_ASSERT(result_no_mem == 1); // last query fails for no memory as expected + TEST_ASSERT_EQUAL(exp_ok, result_ok); + TEST_ASSERT_EQUAL(1, result_no_mem); // last query fails for no memory as expected TEST_ASSERT(result_dns_failure == exp_dns_failure || result_dns_failure == exp_dns_failure + 1); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/asynchronous_dns_non_async_and_async.cpp b/TESTS/netsocket/dns/asynchronous_dns_non_async_and_async.cpp index a565ed50b99..e1b8e7367b2 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_non_async_and_async.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_non_async_and_async.cpp @@ -47,7 +47,7 @@ void ASYNCHRONOUS_DNS_NON_ASYNC_AND_ASYNC() semaphore.wait(100); - TEST_ASSERT(data.result == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result); printf("DNS: query \"%s\" => \"%s\"\n", dns_test_hosts_second[0], data.addr.get_ip_address()); diff --git a/TESTS/netsocket/dns/asynchronous_dns_simultaneous.cpp b/TESTS/netsocket/dns/asynchronous_dns_simultaneous.cpp index ae990745706..51806882b5c 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_simultaneous.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_simultaneous.cpp @@ -35,8 +35,8 @@ void ASYNCHRONOUS_DNS_SIMULTANEOUS() do_asynchronous_gethostbyname(dns_test_hosts_second, MBED_CONF_APP_DNS_SIMULT_QUERIES + 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == MBED_CONF_APP_DNS_SIMULT_QUERIES); - TEST_ASSERT(result_no_mem == 1); // last query fails for no memory as expected - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_APP_DNS_SIMULT_QUERIES, result_ok); + TEST_ASSERT_EQUAL(1, result_no_mem); // last query fails for no memory as expected + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/asynchronous_dns_simultaneous_cache.cpp b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_cache.cpp index 3fef74aa555..8bae6e065a9 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_simultaneous_cache.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_cache.cpp @@ -36,8 +36,8 @@ void ASYNCHRONOUS_DNS_SIMULTANEOUS_CACHE() &result_dns_failure, &result_exp_timeout); // Addresses were cached on last step, OK for all - TEST_ASSERT(result_ok == MBED_CONF_APP_DNS_SIMULT_QUERIES + 1); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_APP_DNS_SIMULT_QUERIES + 1, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp index 98c8dcb6853..9759aa4872f 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp @@ -40,7 +40,7 @@ void ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT() // For 1st round can fail to no memory, on other rounds some of the addresses are found from cache TEST_ASSERT(result_ok == MBED_CONF_APP_DNS_SIMULT_QUERIES || result_ok == MBED_CONF_APP_DNS_SIMULT_QUERIES + 1); TEST_ASSERT(result_no_mem == 1 || result_no_mem == 0); // last query fails for 1st round to no memory as expected - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } } diff --git a/TESTS/netsocket/dns/asynchronous_dns_timeouts.cpp b/TESTS/netsocket/dns/asynchronous_dns_timeouts.cpp index 37401df1e9e..30b1ef537a6 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_timeouts.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_timeouts.cpp @@ -53,10 +53,10 @@ void ASYNCHRONOUS_DNS_TIMEOUTS() do_asynchronous_gethostbyname(dns_test_hosts, MBED_CONF_NSAPI_DNS_CACHE_SIZE, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == MBED_CONF_NSAPI_DNS_CACHE_SIZE); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_NSAPI_DNS_CACHE_SIZE, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); // Dispatch event queue Thread eventThread(osPriorityNormal, EXTERNAL_THREAD_SIZE); diff --git a/TESTS/netsocket/dns/main.cpp b/TESTS/netsocket/dns/main.cpp index ecc63ce40c8..324e3b8c56c 100644 --- a/TESTS/netsocket/dns/main.cpp +++ b/TESTS/netsocket/dns/main.cpp @@ -122,7 +122,6 @@ void do_gethostbyname(const char hosts[][DNS_TEST_HOST_LEN], unsigned int op_cou SocketAddress address; nsapi_error_t err = net->gethostbyname(hosts[i], &address); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT); if (err == NSAPI_ERROR_OK) { (*exp_ok)++; printf("DNS: query \"%s\" => \"%s\"\n", @@ -136,6 +135,9 @@ void do_gethostbyname(const char hosts[][DNS_TEST_HOST_LEN], unsigned int op_cou } else if (err == NSAPI_ERROR_NO_MEMORY) { (*exp_no_mem)++; printf("DNS: query \"%s\" => no memory\n", hosts[i]); + } else { + printf("DNS: query \"%s\" => %d, unexpected answer\n", hosts[i], err); + TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT); } } } @@ -158,7 +160,7 @@ static void net_bringup() // Test setup utest::v1::status_t test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(120, "default_auto"); + GREENTEA_SETUP(200, "default_auto"); net_bringup(); return verbose_test_setup_handler(number_of_cases); } @@ -173,9 +175,7 @@ Case cases[] = { Case("ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE", ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE), Case("ASYNCHRONOUS_DNS_INVALID_HOST", ASYNCHRONOUS_DNS_INVALID_HOST), Case("ASYNCHRONOUS_DNS_TIMEOUTS", ASYNCHRONOUS_DNS_TIMEOUTS), -#ifdef MBED_EXTENDED_TESTS Case("ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT", ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT), -#endif Case("SYNCHRONOUS_DNS", SYNCHRONOUS_DNS), Case("SYNCHRONOUS_DNS_MULTIPLE", SYNCHRONOUS_DNS_MULTIPLE), Case("SYNCHRONOUS_DNS_INVALID", SYNCHRONOUS_DNS_INVALID), diff --git a/TESTS/netsocket/dns/synchronous_dns.cpp b/TESTS/netsocket/dns/synchronous_dns.cpp index a6be9e004d3..93ef9fe857e 100644 --- a/TESTS/netsocket/dns/synchronous_dns.cpp +++ b/TESTS/netsocket/dns/synchronous_dns.cpp @@ -34,8 +34,8 @@ void SYNCHRONOUS_DNS() { do_gethostbyname(dns_test_hosts, 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == 1); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(1, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/synchronous_dns_invalid.cpp b/TESTS/netsocket/dns/synchronous_dns_invalid.cpp index 7623f247531..70f20fa3e16 100644 --- a/TESTS/netsocket/dns/synchronous_dns_invalid.cpp +++ b/TESTS/netsocket/dns/synchronous_dns_invalid.cpp @@ -53,8 +53,8 @@ void SYNCHRONOUS_DNS_INVALID() do_gethostbyname(dns_test_hosts_new, MBED_CONF_APP_DNS_TEST_HOSTS_NUM, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == expected_successes); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == expected_failures); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(expected_successes, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(expected_failures, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/dns/synchronous_dns_multiple.cpp b/TESTS/netsocket/dns/synchronous_dns_multiple.cpp index 28dcb513f8e..ad2787393ad 100644 --- a/TESTS/netsocket/dns/synchronous_dns_multiple.cpp +++ b/TESTS/netsocket/dns/synchronous_dns_multiple.cpp @@ -34,8 +34,8 @@ void SYNCHRONOUS_DNS_MULTIPLE() { do_gethostbyname(dns_test_hosts, MBED_CONF_APP_DNS_TEST_HOSTS_NUM, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); - TEST_ASSERT(result_ok == MBED_CONF_APP_DNS_TEST_HOSTS_NUM); - TEST_ASSERT(result_no_mem == 0); - TEST_ASSERT(result_dns_failure == 0); - TEST_ASSERT(result_exp_timeout == 0); + TEST_ASSERT_EQUAL(MBED_CONF_APP_DNS_TEST_HOSTS_NUM, result_ok); + TEST_ASSERT_EQUAL(0, result_no_mem); + TEST_ASSERT_EQUAL(0, result_dns_failure); + TEST_ASSERT_EQUAL(0, result_exp_timeout); } diff --git a/TESTS/netsocket/tcp/main.cpp b/TESTS/netsocket/tcp/main.cpp index 8401c56f942..b49e9a9689f 100644 --- a/TESTS/netsocket/tcp/main.cpp +++ b/TESTS/netsocket/tcp/main.cpp @@ -34,7 +34,6 @@ using namespace utest::v1; namespace { -NetworkInterface *net; Timer tc_bucket; // Timer to limit a test cases run time } @@ -45,11 +44,6 @@ mbed_stats_socket_t tcp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; char tcp_global::rx_buffer[RX_BUFF_SIZE]; char tcp_global::tx_buffer[TX_BUFF_SIZE]; -NetworkInterface *get_interface() -{ - return net; -} - void drop_bad_packets(TCPSocket &sock, int orig_timeout) { nsapi_error_t err; @@ -63,9 +57,18 @@ void drop_bad_packets(TCPSocket &sock, int orig_timeout) sock.set_timeout(orig_timeout); } +nsapi_version_t get_ip_version() +{ + SocketAddress test; + if (!test.set_ip_address(NetworkInterface::get_default_instance()->get_ip_address())) { + return NSAPI_UNSPEC; + } + return test.get_ip_version(); +} + static void _ifup() { - net = NetworkInterface::get_default_instance(); + NetworkInterface *net = NetworkInterface::get_default_instance(); nsapi_error_t err = net->connect(); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err); printf("MBED: TCPClient IP address is '%s'\n", net->get_ip_address()); @@ -73,38 +76,42 @@ static void _ifup() static void _ifdown() { - net->disconnect(); + NetworkInterface::get_default_instance()->disconnect(); printf("MBED: ifdown\n"); } -nsapi_error_t tcpsocket_connect_to_echo_srv(TCPSocket &sock) +nsapi_error_t tcpsocket_connect_to_srv(TCPSocket &sock, uint16_t port) { SocketAddress tcp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); - tcp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); + tcp_addr.set_port(port); + + printf("MBED: Server '%s', port %d\n", tcp_addr.get_ip_address(), tcp_addr.get_port()); - nsapi_error_t err = sock.open(get_interface()); + nsapi_error_t err = sock.open(NetworkInterface::get_default_instance()); if (err != NSAPI_ERROR_OK) { + printf("Error from sock.open: %d\n", err); return err; } - return sock.connect(tcp_addr); -} - -nsapi_error_t tcpsocket_connect_to_discard_srv(TCPSocket &sock) -{ - SocketAddress tcp_addr; - - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); - tcp_addr.set_port(9); - - nsapi_error_t err = sock.open(get_interface()); + err = sock.connect(tcp_addr); if (err != NSAPI_ERROR_OK) { + printf("Error from sock.connect: %d\n", err); return err; } - return sock.connect(tcp_addr); + return NSAPI_ERROR_OK; +} + +nsapi_error_t tcpsocket_connect_to_echo_srv(TCPSocket &sock) +{ + return tcpsocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_PORT); +} + +nsapi_error_t tcpsocket_connect_to_discard_srv(TCPSocket &sock) +{ + return tcpsocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT); } void fill_tx_buffer_ascii(char *buff, size_t len) @@ -149,17 +156,26 @@ Case cases[] = { Case("TCPSOCKET_OPEN_CLOSE_REPEAT", TCPSOCKET_OPEN_CLOSE_REPEAT), Case("TCPSOCKET_OPEN_LIMIT", TCPSOCKET_OPEN_LIMIT), Case("TCPSOCKET_THREAD_PER_SOCKET_SAFETY", TCPSOCKET_THREAD_PER_SOCKET_SAFETY), -#ifdef MBED_EXTENDED_TESTS Case("TCPSOCKET_CONNECT_INVALID", TCPSOCKET_CONNECT_INVALID), Case("TCPSOCKET_ECHOTEST_BURST", TCPSOCKET_ECHOTEST_BURST), Case("TCPSOCKET_ECHOTEST_BURST_NONBLOCK", TCPSOCKET_ECHOTEST_BURST_NONBLOCK), + Case("TCPSOCKET_OPEN_DESTRUCT", TCPSOCKET_OPEN_DESTRUCT), + Case("TCPSOCKET_OPEN_TWICE", TCPSOCKET_OPEN_TWICE), + Case("TCPSOCKET_BIND_PORT", TCPSOCKET_BIND_PORT), + Case("TCPSOCKET_BIND_PORT_FAIL", TCPSOCKET_BIND_PORT_FAIL), + Case("TCPSOCKET_BIND_ADDRESS_PORT", TCPSOCKET_BIND_ADDRESS_PORT), + Case("TCPSOCKET_BIND_ADDRESS_NULL", TCPSOCKET_BIND_ADDRESS_NULL), + Case("TCPSOCKET_BIND_ADDRESS_INVALID", TCPSOCKET_BIND_ADDRESS_INVALID), + Case("TCPSOCKET_BIND_ADDRESS", TCPSOCKET_BIND_ADDRESS), + Case("TCPSOCKET_BIND_WRONG_TYPE", TCPSOCKET_BIND_WRONG_TYPE), + Case("TCPSOCKET_BIND_UNOPENED", TCPSOCKET_BIND_UNOPENED), + Case("TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID", TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID), Case("TCPSOCKET_RECV_100K", TCPSOCKET_RECV_100K), Case("TCPSOCKET_RECV_100K_NONBLOCK", TCPSOCKET_RECV_100K_NONBLOCK), Case("TCPSOCKET_RECV_TIMEOUT", TCPSOCKET_RECV_TIMEOUT), Case("TCPSOCKET_SEND_REPEAT", TCPSOCKET_SEND_REPEAT), Case("TCPSOCKET_SEND_TIMEOUT", TCPSOCKET_SEND_TIMEOUT), Case("TCPSOCKET_ENDPOINT_CLOSE", TCPSOCKET_ENDPOINT_CLOSE), -#endif }; Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers); diff --git a/TESTS/netsocket/tcp/tcp_tests.h b/TESTS/netsocket/tcp/tcp_tests.h index 2d799883b81..e03f8414efc 100644 --- a/TESTS/netsocket/tcp/tcp_tests.h +++ b/TESTS/netsocket/tcp/tcp_tests.h @@ -20,6 +20,7 @@ NetworkInterface *get_interface(); void drop_bad_packets(TCPSocket &sock, int orig_timeout); +nsapi_version_t get_ip_version(); void fill_tx_buffer_ascii(char *buff, size_t len); nsapi_error_t tcpsocket_connect_to_echo_srv(TCPSocket &sock); nsapi_error_t tcpsocket_connect_to_discard_srv(TCPSocket &sock); @@ -54,13 +55,24 @@ void TCPSOCKET_ECHOTEST_NONBLOCK(); void TCPSOCKET_ECHOTEST_BURST(); void TCPSOCKET_ECHOTEST_BURST_NONBLOCK(); void TCPSOCKET_ENDPOINT_CLOSE(); +void TCPSOCKET_OPEN_DESTRUCT(); void TCPSOCKET_OPEN_CLOSE_REPEAT(); void TCPSOCKET_OPEN_LIMIT(); +void TCPSOCKET_OPEN_TWICE(); +void TCPSOCKET_BIND_PORT(); +void TCPSOCKET_BIND_PORT_FAIL(); +void TCPSOCKET_BIND_ADDRESS_PORT(); +void TCPSOCKET_BIND_ADDRESS_NULL(); +void TCPSOCKET_BIND_ADDRESS_INVALID(); +void TCPSOCKET_BIND_ADDRESS(); +void TCPSOCKET_BIND_WRONG_TYPE(); +void TCPSOCKET_BIND_UNOPENED(); void TCPSOCKET_RECV_100K(); void TCPSOCKET_RECV_100K_NONBLOCK(); void TCPSOCKET_RECV_TIMEOUT(); void TCPSOCKET_SEND_REPEAT(); void TCPSOCKET_SEND_TIMEOUT(); void TCPSOCKET_THREAD_PER_SOCKET_SAFETY(); +void TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID(); #endif //TCP_TESTS_H diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_address.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_address.cpp new file mode 100644 index 00000000000..93aa82ce06a --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_address.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_ADDRESS() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + SocketAddress sockAddr = SocketAddress(NetworkInterface::get_default_instance()->get_ip_address(), 80); + nsapi_error_t bind_result = sock->bind(sockAddr); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp new file mode 100644 index 00000000000..933926ede4e --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_ADDRESS_INVALID() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = NSAPI_ERROR_OK; + if (get_ip_version() == NSAPI_IPv4) { + bind_result = sock->bind("190.2.3.4", 1024); + } else if (get_ip_version() == NSAPI_IPv6) { + bind_result = sock->bind("fe80::ff01", 1024); + } else { + TEST_FAIL_MESSAGE("This stack is neither IPv4 nor IPv6"); + } + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_address_null.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_address_null.cpp new file mode 100644 index 00000000000..d5a43cb3c51 --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_address_null.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_ADDRESS_NULL() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(NULL, 1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_address_port.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_address_port.cpp new file mode 100644 index 00000000000..29fdaa3372d --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_address_port.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_ADDRESS_PORT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(NetworkInterface::get_default_instance()->get_ip_address(), 80); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_port.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_port.cpp new file mode 100644 index 00000000000..f7601be695d --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_port.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_PORT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_port_fail.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_port_fail.cpp new file mode 100644 index 00000000000..dd4326cccd4 --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_port_fail.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_PORT_FAIL() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + delete sock; + return; + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + TCPSocket *sock2 = new TCPSocket; + if (!sock2) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock2->open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock2->bind(1024)); + + delete sock; + delete sock2; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_unopened.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_unopened.cpp new file mode 100644 index 00000000000..6b992dd4b36 --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_unopened.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_UNOPENED() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_SOCKET, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp new file mode 100644 index 00000000000..6a388b5ca6a --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_BIND_WRONG_TYPE() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + return; + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + char addr_bytes[16] = {0xfe, 0x80, 0xff, 0x1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + SocketAddress sockAddr; + if (get_ip_version() == NSAPI_IPv4) { + sockAddr = SocketAddress(addr_bytes, NSAPI_IPv4, 80); + } else if (get_ip_version() == NSAPI_IPv6) { + sockAddr = SocketAddress(addr_bytes, NSAPI_IPv6, 80); + } else { + TEST_FAIL_MESSAGE("This stack is neither IPv4 nor IPv6"); + } + nsapi_error_t bind_result = sock->bind(sockAddr); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_connect_invalid.cpp b/TESTS/netsocket/tcp/tcpsocket_connect_invalid.cpp index aa77cbc4a83..a7cf0a51566 100644 --- a/TESTS/netsocket/tcp/tcpsocket_connect_invalid.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_connect_invalid.cpp @@ -27,7 +27,7 @@ using namespace utest::v1; void TCPSOCKET_CONNECT_INVALID() { TCPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); TEST_ASSERT(sock.connect(NULL, 9) < 0); TEST_ASSERT(sock.connect("", 9) < 0); diff --git a/TESTS/netsocket/tcp/tcpsocket_echotest.cpp b/TESTS/netsocket/tcp/tcpsocket_echotest.cpp index 782619f1bd2..bb5d5e714db 100644 --- a/TESTS/netsocket/tcp/tcpsocket_echotest.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_echotest.cpp @@ -36,14 +36,25 @@ static const int pkt_sizes[PKTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \ }; TCPSocket sock; Semaphore tx_sem(0, 1); +events::EventQueue *event_queue; +int bytes2recv; +int bytes2recv_total; Timer tc_exec_time; int time_allotted; +bool receive_error; } +void tcpsocket_echotest_nonblock_receive(); + static void _sigio_handler(osThreadId id) { osSignalSet(id, SIGNAL_SIGIO); + if (event_queue != NULL) { + event_queue->call(tcpsocket_echotest_nonblock_receive); + } else { + TEST_FAIL_MESSAGE("_sigio_handler running when event_queue is NULL"); + } } void TCPSOCKET_ECHOTEST() @@ -83,33 +94,31 @@ void TCPSOCKET_ECHOTEST() TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); } -void tcpsocket_echotest_nonblock_receiver(void *receive_bytes) +void tcpsocket_echotest_nonblock_receive() { - int bytes2recv = *(int *)receive_bytes; - int recvd; - while (bytes2recv) { - recvd = sock.recv(&(tcp_global::rx_buffer[*(int *)receive_bytes - bytes2recv]), bytes2recv); - if (recvd == NSAPI_ERROR_WOULD_BLOCK) { - if (tc_exec_time.read() >= time_allotted) { - TEST_FAIL(); - break; - } - wait(1); - continue; - } else if (recvd < 0) { - TEST_FAIL(); - break; + int recvd = sock.recv(&(tcp_global::rx_buffer[bytes2recv_total - bytes2recv]), bytes2recv); + if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted) { + receive_error = true; } + return; + } else if (recvd < 0) { + receive_error = true; + } else { bytes2recv -= recvd; } - TEST_ASSERT_EQUAL(0, memcmp(tcp_global::tx_buffer, tcp_global::rx_buffer, *(int *)receive_bytes)); - - static int round = 0; - printf("[Recevr#%02d] bytes received: %d\n", round++, *(int *)receive_bytes); - - tx_sem.release(); + if (bytes2recv == 0) { + TEST_ASSERT_EQUAL(0, memcmp(tcp_global::tx_buffer, tcp_global::rx_buffer, bytes2recv_total)); + static int round = 0; + printf("[Recevr#%02d] bytes received: %d\n", round++, bytes2recv_total); + tx_sem.release(); + } else if (receive_error || bytes2recv < 0) { + TEST_FAIL(); + tx_sem.release(); + } + // else - no error, not all bytes were received yet. } void TCPSOCKET_ECHOTEST_NONBLOCK() @@ -124,6 +133,9 @@ void TCPSOCKET_ECHOTEST_NONBLOCK() tc_exec_time.start(); time_allotted = split2half_rmng_tcp_test_time(); // [s] + EventQueue queue(2 * EVENTS_EVENT_SIZE); + event_queue = &queue; + tcpsocket_connect_to_echo_srv(sock); sock.set_blocking(false); sock.sigio(callback(_sigio_handler, ThisThread::get_id())); @@ -131,17 +143,20 @@ void TCPSOCKET_ECHOTEST_NONBLOCK() int bytes2send; int sent; int s_idx = 0; - Thread *thread; + receive_error = false; unsigned char *stack_mem = (unsigned char *)malloc(tcp_global::TCP_OS_STACK_SIZE); TEST_ASSERT_NOT_NULL(stack_mem); + Thread *receiver_thread = new Thread(osPriorityNormal, + tcp_global::TCP_OS_STACK_SIZE, + stack_mem, + "receiver"); + + TEST_ASSERT_EQUAL(osOK, receiver_thread->start(callback(&queue, &EventQueue::dispatch_forever))); for (int pkt_s = pkt_sizes[s_idx]; s_idx < PKTS; ++s_idx) { pkt_s = pkt_sizes[s_idx]; - thread = new Thread(osPriorityNormal, - tcp_global::TCP_OS_STACK_SIZE, - stack_mem, - "receiver"); - TEST_ASSERT_EQUAL(osOK, thread->start(callback(tcpsocket_echotest_nonblock_receiver, &pkt_s))); + bytes2recv = pkt_s; + bytes2recv_total = pkt_s; fill_tx_buffer_ascii(tcp_global::tx_buffer, pkt_s); @@ -151,16 +166,12 @@ void TCPSOCKET_ECHOTEST_NONBLOCK() if (sent == NSAPI_ERROR_WOULD_BLOCK) { if (tc_exec_time.read() >= time_allotted || osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { - thread->terminate(); - delete thread; TEST_FAIL(); goto END; } continue; } else if (sent <= 0) { printf("[Sender#%02d] network error %d\n", s_idx, sent); - thread->terminate(); - delete thread; TEST_FAIL(); goto END; } @@ -176,12 +187,17 @@ void TCPSOCKET_ECHOTEST_NONBLOCK() } TEST_ASSERT_EQUAL(bytes2send, tcp_stats[j].sent_bytes); #endif - tx_sem.wait(split2half_rmng_tcp_test_time()); - thread->join(); - delete thread; + tx_sem.wait(split2half_rmng_tcp_test_time() * 1000); // *1000 to convert s->ms + if (receive_error) { + break; + } } END: + sock.sigio(NULL); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); + receiver_thread->terminate(); + delete receiver_thread; + receiver_thread = NULL; tc_exec_time.stop(); free(stack_mem); - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); } diff --git a/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp b/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp index fa86fa63a30..08910cd94c5 100644 --- a/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp @@ -78,8 +78,7 @@ void TCPSOCKET_ECHOTEST_BURST() } if (bt_left != 0) { - drop_bad_packets(sock, 0); - TEST_FAIL(); + TEST_FAIL_MESSAGE("bt_left != 0"); goto END; } @@ -142,7 +141,6 @@ void TCPSOCKET_ECHOTEST_BURST_NONBLOCK() if (bt_left != 0) { printf("network error %d, missing %d bytes from a burst\n", recvd, bt_left); - drop_bad_packets(sock, -1); TEST_FAIL(); goto END; } diff --git a/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp b/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp index 88e40f699a9..8d9b07f3875 100644 --- a/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp @@ -24,24 +24,14 @@ using namespace utest::v1; -namespace { -static const int SIGNAL_SIGIO = 0x1; -static const int SIGIO_TIMEOUT = 20000; //[ms] -} - -static void _sigio_handler(osThreadId id) -{ - osSignalSet(id, SIGNAL_SIGIO); -} - static nsapi_error_t _tcpsocket_connect_to_daytime_srv(TCPSocket &sock) { SocketAddress tcp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); tcp_addr.set_port(13); - nsapi_error_t err = sock.open(get_interface()); + nsapi_error_t err = sock.open(NetworkInterface::get_default_instance()); if (err != NSAPI_ERROR_OK) { return err; } @@ -49,7 +39,6 @@ static nsapi_error_t _tcpsocket_connect_to_daytime_srv(TCPSocket &sock) return sock.connect(tcp_addr); } - void TCPSOCKET_ENDPOINT_CLOSE() { static const int MORE_THAN_AVAILABLE = 30; @@ -63,24 +52,16 @@ void TCPSOCKET_ENDPOINT_CLOSE() TEST_FAIL(); return; } - sock.sigio(callback(_sigio_handler, ThisThread::get_id())); int recvd = 0; int recvd_total = 0; while (true) { - recvd = sock.recv(&(buff[recvd_total]), MORE_THAN_AVAILABLE); + recvd = sock.recv(buff, MORE_THAN_AVAILABLE); if (recvd_total > 0 && recvd == 0) { break; // Endpoint closed socket, success } else if (recvd <= 0) { - TEST_FAIL(); + TEST_ASSERT_EQUAL(0, recvd); break; - } else if (recvd == NSAPI_ERROR_WOULD_BLOCK) { - if (tc_exec_time.read() >= time_allotted || - osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { - TEST_FAIL(); - break; - } - continue; } recvd_total += recvd; TEST_ASSERT(recvd_total < MORE_THAN_AVAILABLE); diff --git a/TESTS/netsocket/tcp/tcpsocket_open_close_repeat.cpp b/TESTS/netsocket/tcp/tcpsocket_open_close_repeat.cpp index 2e3c382958f..4bb303dc348 100644 --- a/TESTS/netsocket/tcp/tcpsocket_open_close_repeat.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_open_close_repeat.cpp @@ -38,7 +38,7 @@ void TCPSOCKET_OPEN_CLOSE_REPEAT() } for (int i = 0; i < 2; i++) { - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); } delete sock; diff --git a/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp b/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp new file mode 100644 index 00000000000..77330033777 --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_OPEN_DESTRUCT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + + for (int i = 0; i < 1000; i++) { + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + delete sock; + } +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_open_limit.cpp b/TESTS/netsocket/tcp/tcpsocket_open_limit.cpp index 0da94bec2c5..4ebe4bdf8fb 100644 --- a/TESTS/netsocket/tcp/tcpsocket_open_limit.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_open_limit.cpp @@ -46,7 +46,7 @@ void TCPSOCKET_OPEN_LIMIT() if (!sock) { break; } - ret = sock->open(get_interface()); + ret = sock->open(NetworkInterface::get_default_instance()); if (ret == NSAPI_ERROR_NO_MEMORY || ret == NSAPI_ERROR_NO_SOCKET) { printf("[round#%02d] unable to open new socket, error: %d\n", i, ret); delete sock; diff --git a/TESTS/netsocket/tcp/tcpsocket_open_twice.cpp b/TESTS/netsocket/tcp/tcpsocket_open_twice.cpp new file mode 100644 index 00000000000..278a290e28f --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_open_twice.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "tcp_tests.h" +#include "TCPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void TCPSOCKET_OPEN_TWICE() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif + TCPSocket *sock = new TCPSocket; + if (!sock) { + TEST_FAIL(); + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock->open(NetworkInterface::get_default_instance())); + + delete sock; +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tcp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/tcp/tcpsocket_recv_100k.cpp b/TESTS/netsocket/tcp/tcpsocket_recv_100k.cpp index a7b723cb36a..d8fb3ed3adc 100644 --- a/TESTS/netsocket/tcp/tcpsocket_recv_100k.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_recv_100k.cpp @@ -33,10 +33,10 @@ static nsapi_error_t _tcpsocket_connect_to_chargen_srv(TCPSocket &sock) { SocketAddress tcp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tcp_addr); tcp_addr.set_port(19); - nsapi_error_t err = sock.open(get_interface()); + nsapi_error_t err = sock.open(NetworkInterface::get_default_instance()); if (err != NSAPI_ERROR_OK) { return err; } diff --git a/TESTS/netsocket/tcp/tcpsocket_setsockopt_keepalive_valid.cpp b/TESTS/netsocket/tcp/tcpsocket_setsockopt_keepalive_valid.cpp new file mode 100644 index 00000000000..3d018530a59 --- /dev/null +++ b/TESTS/netsocket/tcp/tcpsocket_setsockopt_keepalive_valid.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TCPSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tcp_tests.h" + +using namespace utest::v1; + +void TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID() +{ + TCPSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + int32_t seconds = 7200; + + int ret = sock.setsockopt(NSAPI_SOCKET, NSAPI_KEEPALIVE, &seconds, sizeof(int)); + + if (ret == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("NSAPI_KEEPALIVE option not supported"); + sock.close(); + return; + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, ret); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, 9)); + // LWIP stack does not support getsockopt so the part below is commented out + // int32_t optval; + // unsigned int optlen; + // TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.getsockopt(NSAPI_SOCKET, NSAPI_KEEPALIVE, &optval, &optlen)); + // TEST_ASSERT_EQUAL(optlen, sizeof(seconds)); + // TEST_ASSERT_EQUAL(optval, seconds); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} diff --git a/TESTS/netsocket/tls/main.cpp b/TESTS/netsocket/tls/main.cpp new file mode 100644 index 00000000000..9ee0dfee561 --- /dev/null +++ b/TESTS/netsocket/tls/main.cpp @@ -0,0 +1,225 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define WIFI 2 +#if !defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE) || \ + (MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == WIFI && !defined(MBED_CONF_NSAPI_DEFAULT_WIFI_SSID)) +#error [NOT_SUPPORTED] No network configuration found for this target. +#endif +#ifndef MBED_CONF_APP_ECHO_SERVER_ADDR +#error [NOT_SUPPORTED] Requires parameters from mbed_app.json +#endif + +#include "mbed.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "utest/utest_stack_trace.h" +#include "tls_tests.h" + +#if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) + +using namespace utest::v1; + +namespace { +Timer tc_bucket; // Timer to limit a test cases run time +} + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +mbed_stats_socket_t tls_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; +#endif + +char tls_global::rx_buffer[RX_BUFF_SIZE]; +char tls_global::tx_buffer[TX_BUFF_SIZE]; + +const char *tls_global::cert = \ + "-----BEGIN CERTIFICATE-----\n" + "MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" + "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" + "DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" + "SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" + "GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" + "AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" + "q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" + "SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" + "Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" + "a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" + "/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" + "CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" + "bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" + "c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" + "VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" + "ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" + "MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" + "Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" + "AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" + "uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" + "wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" + "X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" + "PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" + "KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n" + "-----END CERTIFICATE-----\n"; + +void drop_bad_packets(TLSSocket &sock, int orig_timeout) +{ + nsapi_error_t err; + sock.set_timeout(0); + while (true) { + err = sock.recv(NULL, 0); + if (err == NSAPI_ERROR_WOULD_BLOCK) { + break; + } + } + sock.set_timeout(orig_timeout); +} + +static void _ifup() +{ + NetworkInterface *net = NetworkInterface::get_default_instance(); + nsapi_error_t err = net->connect(); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err); + printf("MBED: TLSClient IP address is '%s'\n", net->get_ip_address()); +} + +static void _ifdown() +{ + NetworkInterface::get_default_instance()->disconnect(); + printf("MBED: ifdown\n"); +} + +nsapi_error_t tlssocket_connect_to_srv(TLSSocket &sock, uint16_t port) +{ + SocketAddress tls_addr; + + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tls_addr); + tls_addr.set_port(port); + + printf("MBED: Server '%s', port %d\n", tls_addr.get_ip_address(), tls_addr.get_port()); + + nsapi_error_t err = sock.set_root_ca_cert(tls_global::cert); + if (err != NSAPI_ERROR_OK) { + printf("Error from sock.set_root_ca_cert: %d\n", err); + return err; + } + + err = sock.open(NetworkInterface::get_default_instance()); + if (err != NSAPI_ERROR_OK) { + printf("Error from sock.open: %d\n", err); + return err; + } + + err = sock.connect(tls_addr); + if (err != NSAPI_ERROR_OK) { + printf("Error from sock.connect: %d\n", err); + return err; + } + + return NSAPI_ERROR_OK; +} + +nsapi_error_t tlssocket_connect_to_echo_srv(TLSSocket &sock) +{ + return tlssocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_PORT_TLS); +} + +nsapi_error_t tlssocket_connect_to_discard_srv(TLSSocket &sock) +{ + return tlssocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS); +} + +void fill_tx_buffer_ascii(char *buff, size_t len) +{ + for (size_t i = 0; i < len; ++i) { + buff[i] = (rand() % 43) + '0'; + } +} + +int split2half_rmng_tls_test_time() +{ + return (tls_global::TESTS_TIMEOUT - tc_bucket.read()) / 2; +} + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +int fetch_stats() +{ + return SocketStats::mbed_stats_socket_get_each(&tls_stats[0], MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT); +} +#endif + +// Test setup +utest::v1::status_t greentea_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(tls_global::TESTS_TIMEOUT, "default_auto"); + _ifup(); + tc_bucket.start(); + return greentea_test_setup_handler(number_of_cases); +} + +void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure) +{ + tc_bucket.stop(); + _ifdown(); + return greentea_test_teardown_handler(passed, failed, failure); +} + + +Case cases[] = { + Case("TLSSOCKET_ECHOTEST", TLSSOCKET_ECHOTEST), + Case("TLSSOCKET_ECHOTEST_NONBLOCK", TLSSOCKET_ECHOTEST_NONBLOCK), + Case("TLSSOCKET_CONNECT_INVALID", TLSSOCKET_CONNECT_INVALID), + Case("TLSSOCKET_ECHOTEST_BURST", TLSSOCKET_ECHOTEST_BURST), + Case("TLSSOCKET_ECHOTEST_BURST_NONBLOCK", TLSSOCKET_ECHOTEST_BURST_NONBLOCK), + Case("TLSSOCKET_RECV_TIMEOUT", TLSSOCKET_RECV_TIMEOUT), + Case("TLSSOCKET_ENDPOINT_CLOSE", TLSSOCKET_ENDPOINT_CLOSE), + Case("TLSSOCKET_HANDSHAKE_INVALID", TLSSOCKET_HANDSHAKE_INVALID), + Case("TLSSOCKET_OPEN_TWICE", TLSSOCKET_OPEN_TWICE), + Case("TLSSOCKET_OPEN_LIMIT", TLSSOCKET_OPEN_LIMIT), + Case("TLSSOCKET_OPEN_DESTRUCT", TLSSOCKET_OPEN_DESTRUCT), + Case("TLSSOCKET_SEND_UNCONNECTED", TLSSOCKET_SEND_UNCONNECTED), + Case("TLSSOCKET_SEND_CLOSED", TLSSOCKET_SEND_CLOSED), + Case("TLSSOCKET_SEND_REPEAT", TLSSOCKET_SEND_REPEAT), + Case("TLSSOCKET_SEND_TIMEOUT", TLSSOCKET_SEND_TIMEOUT), + Case("TLSSOCKET_NO_CERT", TLSSOCKET_NO_CERT), +// Temporarily removing this test, as TLS library consumes too much memory +// and we see frequent memory allocation failures on architectures with less +// RAM such as DISCO_L475VG_IOT1A and NUCLEO_F207ZG (both have 128 kB RAM) +// This test also fails for IAR, due to wrong heap configuration in the linker +// script - see https://github.com/ARMmbed/mbed-os/issues/8306 +// Case("TLSSOCKET_SIMULTANEOUS", TLSSOCKET_SIMULTANEOUS) +}; + +Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers); + +int retval; +void run_test(void) +{ + retval = !Harness::run(specification); +} + +static unsigned char stack_mem[8192]; +int main() +{ + Thread *th = new Thread(osPriorityNormal, 8192, stack_mem, "tls_gt_thread"); + th->start(callback(run_test)); + th->join(); + return retval; +} + +#else +#error [NOT_SUPPORTED] This device does not support SSL library +#endif // defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) diff --git a/TESTS/netsocket/tls/tls_tests.h b/TESTS/netsocket/tls/tls_tests.h new file mode 100644 index 00000000000..f5555c6be63 --- /dev/null +++ b/TESTS/netsocket/tls/tls_tests.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef TLS_TESTS_H +#define TLS_TESTS_H + +#include "TLSSocket.h" + +#if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) + +NetworkInterface *get_interface(); +void drop_bad_packets(TLSSocket &sock, int orig_timeout); +void fill_tx_buffer_ascii(char *buff, size_t len); +nsapi_error_t tlssocket_connect_to_echo_srv(TLSSocket &sock); +nsapi_error_t tlssocket_connect_to_discard_srv(TLSSocket &sock); + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +extern mbed_stats_socket_t tls_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; +int fetch_stats(void); +#endif + +/** + * Single testcase might take only half of the remaining execution time + */ +int split2half_rmng_tls_test_time(); // [s] + +namespace tls_global { +static const int TESTS_TIMEOUT = 480; +static const int TLS_OS_STACK_SIZE = 2048; + +static const int RX_BUFF_SIZE = 1220; +static const int TX_BUFF_SIZE = 1220; + +extern char rx_buffer[RX_BUFF_SIZE]; +extern char tx_buffer[TX_BUFF_SIZE]; +extern const char *cert; +} + +/* + * Test cases + */ +void TLSSOCKET_CONNECT_INVALID(); +void TLSSOCKET_HANDSHAKE_INVALID(); +void TLSSOCKET_ECHOTEST(); +void TLSSOCKET_ECHOTEST_NONBLOCK(); +void TLSSOCKET_ECHOTEST_BURST(); +void TLSSOCKET_ECHOTEST_BURST_NONBLOCK(); +void TLSSOCKET_ENDPOINT_CLOSE(); +void TLSSOCKET_RECV_TIMEOUT(); +void TLSSOCKET_OPEN_TWICE(); +void TLSSOCKET_OPEN_LIMIT(); +void TLSSOCKET_OPEN_DESTRUCT(); +void TLSSOCKET_SEND_UNCONNECTED(); +void TLSSOCKET_SEND_CLOSED(); +void TLSSOCKET_SEND_REPEAT(); +void TLSSOCKET_NO_CERT(); +void TLSSOCKET_SIMULTANEOUS(); +void TLSSOCKET_SEND_TIMEOUT(); + +#endif // defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) + +#endif //TLS_TESTS_H diff --git a/TESTS/netsocket/tls/tlssocket_connect_invalid.cpp b/TESTS/netsocket/tls/tlssocket_connect_invalid.cpp new file mode 100644 index 00000000000..61e3375fa87 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_connect_invalid.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_CONNECT_INVALID() +{ + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert)); + + TEST_ASSERT(sock.connect(NULL, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS) < 0); + TEST_ASSERT(sock.connect("", MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS) < 0); + TEST_ASSERT(sock.connect("", 0) < 0); + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, + sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS)); + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_echotest.cpp b/TESTS/netsocket/tls/tlssocket_echotest.cpp new file mode 100644 index 00000000000..56f8fa7fbd0 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_echotest.cpp @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +namespace { +static const int SIGNAL_SIGIO = 0x1; +static const int SIGIO_TIMEOUT = 20000; //[ms] + +static const int BUFF_SIZE = 1200; +static const int PKTS = 22; +static const int pkt_sizes[PKTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \ + 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, \ + 1100, 1200 + }; +TLSSocket *sock; +Semaphore tx_sem(0, 1); +events::EventQueue *event_queue; +int bytes2recv; +int bytes2recv_total; + +Timer tc_exec_time; +int time_allotted; +bool receive_error; +} + +void tlssocket_echotest_nonblock_receive(); + +static void _sigio_handler(osThreadId id) +{ + osSignalSet(id, SIGNAL_SIGIO); + if (event_queue != NULL) { + event_queue->call(tlssocket_echotest_nonblock_receive); + } +} + +void TLSSOCKET_ECHOTEST() +{ + sock = new TLSSocket; + if (tlssocket_connect_to_echo_srv(*sock) != NSAPI_ERROR_OK) { + printf("Error from tlssocket_connect_to_echo_srv\n"); + TEST_FAIL(); + delete sock; + return; + } + + int recvd; + int sent; + int x = 0; + for (int pkt_s = pkt_sizes[x]; x < PKTS; pkt_s = pkt_sizes[x++]) { + fill_tx_buffer_ascii(tls_global::tx_buffer, BUFF_SIZE); + + sent = sock->send(tls_global::tx_buffer, pkt_s); + if (sent < 0) { + printf("[Round#%02d] network error %d\n", x, sent); + TEST_FAIL(); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + delete sock; + return; + } + + int bytes2recv = sent; + while (bytes2recv) { + recvd = sock->recv(&(tls_global::rx_buffer[sent - bytes2recv]), bytes2recv); + if (recvd < 0) { + printf("[Round#%02d] network error %d\n", x, recvd); + TEST_FAIL(); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + delete sock; + return; + } + bytes2recv -= recvd; + } + TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, sent)); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + delete sock; +} + +void tlssocket_echotest_nonblock_receive() +{ + int recvd = sock->recv(&(tls_global::rx_buffer[bytes2recv_total - bytes2recv]), bytes2recv); + if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted) { + receive_error = true; + } + return; + } else if (recvd < 0) { + receive_error = true; + } else { + bytes2recv -= recvd; + } + + if (bytes2recv == 0) { + TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, bytes2recv_total)); + + static int round = 0; + printf("[Recevr#%02d] bytes received: %d\n", round++, bytes2recv_total); + tx_sem.release(); + } else if (receive_error || bytes2recv < 0) { + TEST_FAIL(); + tx_sem.release(); + } + // else - no error, not all bytes were received yet. +} + +void TLSSOCKET_ECHOTEST_NONBLOCK() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int j = 0; + int count = fetch_stats(); + for (; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state); + } +#endif + sock = new TLSSocket; + tc_exec_time.start(); + time_allotted = split2half_rmng_tls_test_time(); // [s] + + tlssocket_connect_to_echo_srv(*sock); + sock->set_blocking(false); + sock->sigio(callback(_sigio_handler, ThisThread::get_id())); + + int bytes2send; + int sent; + int s_idx = 0; + receive_error = false; + unsigned char *stack_mem = (unsigned char *)malloc(tls_global::TLS_OS_STACK_SIZE); + TEST_ASSERT_NOT_NULL(stack_mem); + Thread *receiver_thread = new Thread(osPriorityNormal, + tls_global::TLS_OS_STACK_SIZE, + stack_mem, + "receiver"); + EventQueue queue(2 * EVENTS_EVENT_SIZE); + event_queue = &queue; + TEST_ASSERT_EQUAL(osOK, receiver_thread->start(callback(&queue, &EventQueue::dispatch_forever))); + + for (int pkt_s = pkt_sizes[s_idx]; s_idx < PKTS; ++s_idx) { + pkt_s = pkt_sizes[s_idx]; + bytes2recv = pkt_s; + bytes2recv_total = pkt_s; + + fill_tx_buffer_ascii(tls_global::tx_buffer, pkt_s); + + bytes2send = pkt_s; + while (bytes2send > 0) { + sent = sock->send(&(tls_global::tx_buffer[pkt_s - bytes2send]), bytes2send); + if (sent == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted || + osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + TEST_FAIL(); + goto END; + } + continue; + } else if (sent <= 0) { + printf("[Sender#%02d] network error %d\n", s_idx, sent); + + TEST_FAIL(); + goto END; + } + bytes2send -= sent; + } + printf("[Sender#%02d] bytes sent: %d\n", s_idx, pkt_s); +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (j = 0; j < count; j++) { + if ((tls_stats[j].state == SOCK_OPEN) && (tls_stats[j].proto == NSAPI_TLS)) { + break; + } + } + TEST_ASSERT_EQUAL(bytes2send, tls_stats[j].sent_bytes); +#endif + tx_sem.wait(); + if (receive_error) { + break; + } + } +END: + sock->sigio(NULL); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + receiver_thread->terminate(); + delete receiver_thread; + receiver_thread = NULL; + tc_exec_time.stop(); + free(stack_mem); + delete sock; +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp b/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp new file mode 100644 index 00000000000..330c4c8bb74 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +namespace { +static const int SIGNAL_SIGIO = 0x1; +static const int SIGIO_TIMEOUT = 20000; //[ms] + +static const int BURST_CNT = 100; +static const int BURST_SIZE = 1220; +} + +static void _sigio_handler(osThreadId id) +{ + osSignalSet(id, SIGNAL_SIGIO); +} + +void TLSSOCKET_ECHOTEST_BURST() +{ + TLSSocket *sock = new TLSSocket; + tlssocket_connect_to_echo_srv(*sock); + sock->sigio(callback(_sigio_handler, ThisThread::get_id())); + + // TX buffer to be preserved for comparison + fill_tx_buffer_ascii(tls_global::tx_buffer, BURST_SIZE); + + int recvd; + int bt_left; + int sent; + for (int i = 0; i < BURST_CNT; i++) { + bt_left = BURST_SIZE; + while (bt_left > 0) { + sent = sock->send(&(tls_global::tx_buffer[BURST_SIZE - bt_left]), bt_left); + if (sent == NSAPI_ERROR_WOULD_BLOCK) { + if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + TEST_FAIL(); + goto END; + } + continue; + } else if (sent < 0) { + printf("[%02d] network error %d\n", i, sent); + TEST_FAIL(); + goto END; + } + bt_left -= sent; + } + + bt_left = BURST_SIZE; + while (bt_left > 0) { + recvd = sock->recv(&(tls_global::rx_buffer[BURST_SIZE - bt_left]), BURST_SIZE); + if (recvd < 0) { + printf("[%02d] network error %d\n", i, recvd); + break; + } + bt_left -= recvd; + } + + if (bt_left != 0) { + TEST_FAIL_MESSAGE("bt_left != 0"); + goto END; + } + + TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, BURST_SIZE)); + } +END: + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + delete sock; +} + +void TLSSOCKET_ECHOTEST_BURST_NONBLOCK() +{ + TLSSocket *sock = new TLSSocket; + tlssocket_connect_to_echo_srv(*sock); + sock->set_blocking(false); + sock->sigio(callback(_sigio_handler, ThisThread::get_id())); + + // TX buffer to be preserved for comparison + fill_tx_buffer_ascii(tls_global::tx_buffer, BURST_SIZE); + + int sent; + int recvd; + int bt_left = 0; + for (int i = 0; i < BURST_CNT; i++) { + bt_left = BURST_SIZE; + while (bt_left > 0) { + sent = sock->send(&(tls_global::tx_buffer[BURST_SIZE - bt_left]), bt_left); + if (sent == NSAPI_ERROR_WOULD_BLOCK) { + if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + TEST_FAIL(); + goto END; + } + continue; + } else if (sent < 0) { + printf("[%02d] network error %d\n", i, sent); + TEST_FAIL(); + goto END; + } + bt_left -= sent; + } + if (bt_left != 0) { + TEST_FAIL(); + goto END; + } + + bt_left = BURST_SIZE; + while (bt_left > 0) { + recvd = sock->recv(&(tls_global::rx_buffer[BURST_SIZE - bt_left]), BURST_SIZE); + if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + printf("[bt#%02d] packet timeout...", i); + break; + } + continue; + } else if (recvd < 0) { + printf("[%02d] network error %d\n", i, recvd); + break; + } + bt_left -= recvd; + } + + if (bt_left != 0) { + printf("network error %d, missing %d bytes from a burst\n", recvd, bt_left); + TEST_FAIL(); + goto END; + } + + TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, BURST_SIZE)); + } +END: + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); + delete sock; +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_endpoint_close.cpp b/TESTS/netsocket/tls/tlssocket_endpoint_close.cpp new file mode 100644 index 00000000000..326bf3079c8 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_endpoint_close.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +namespace { +static const int SIGNAL_SIGIO = 0x1; +static const int SIGIO_TIMEOUT = 20000; //[ms] +} + +static void _sigio_handler(osThreadId id) +{ + osSignalSet(id, SIGNAL_SIGIO); +} + +static nsapi_error_t _tlssocket_connect_to_daytime_srv(TLSSocket &sock) +{ + SocketAddress tls_addr; + + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tls_addr); + tls_addr.set_port(2013); + + nsapi_error_t err = sock.open(NetworkInterface::get_default_instance()); + if (err != NSAPI_ERROR_OK) { + return err; + } + + return sock.connect(tls_addr); +} + + +void TLSSOCKET_ENDPOINT_CLOSE() +{ + static const int MORE_THAN_AVAILABLE = 30; + char buff[MORE_THAN_AVAILABLE]; + int time_allotted = split2half_rmng_tls_test_time(); // [s] + Timer tc_exec_time; + tc_exec_time.start(); + + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert)); + if (_tlssocket_connect_to_daytime_srv(sock) != NSAPI_ERROR_OK) { + TEST_FAIL(); + return; + } + sock.sigio(callback(_sigio_handler, ThisThread::get_id())); + + int recvd = 0; + int recvd_total = 0; + while (true) { + recvd = sock.recv(&(buff[recvd_total]), MORE_THAN_AVAILABLE); + if (recvd_total > 0 && recvd == 0) { + break; // Endpoint closed socket, success + } else if (recvd <= 0) { + TEST_FAIL(); + break; + } else if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted || + osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + TEST_FAIL(); + break; + } + continue; + } + recvd_total += recvd; + TEST_ASSERT(recvd_total < MORE_THAN_AVAILABLE); + } + tc_exec_time.stop(); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp b/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp new file mode 100644 index 00000000000..0417afb1c33 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_HANDSHAKE_INVALID() +{ + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, + sock.connect("google.com", 443)); // 443 is https port. + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_no_cert.cpp b/TESTS/netsocket/tls/tlssocket_no_cert.cpp new file mode 100644 index 00000000000..3ad393977ad --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_no_cert.cpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_NO_CERT() +{ + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, + sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_PORT_TLS)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_open_destruct.cpp b/TESTS/netsocket/tls/tlssocket_open_destruct.cpp new file mode 100644 index 00000000000..5df6c901817 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_open_destruct.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "TLSSocket.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_OPEN_DESTRUCT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state); + } +#endif + + for (int i = 0; i < 1000; i++) { + TLSSocket *sock = new TLSSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + delete sock; + } +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state); + } +#endif +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_open_limit.cpp b/TESTS/netsocket/tls/tlssocket_open_limit.cpp new file mode 100644 index 00000000000..58ff5bd70ad --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_open_limit.cpp @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "TLSSocket.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +namespace { +typedef struct TLSSocketItem { + TLSSocket *sock; + TLSSocketItem *next; +} SocketItem; +} + +void TLSSOCKET_OPEN_LIMIT() +{ + int open_sockets[2] = {0}; + + for (int i = 0; i < 2; i++) { + TLSSocketItem *socket_list_head = NULL; + TLSSocketItem *it; + + TLSSocket *sock; + int ret; + while (true) { + sock = new TLSSocket; + if (!sock) { + break; + } + ret = sock->open(NetworkInterface::get_default_instance()); + if (ret == NSAPI_ERROR_NO_MEMORY || ret == NSAPI_ERROR_NO_SOCKET) { + printf("[round#%02d] unable to open new socket, error: %d\n", i, ret); + delete sock; + break; + } + + // Hopefully this doesn't interfere when trying to allocate more sockets + it = new TLSSocketItem; + if (!it) { + delete sock; + break; + } + + it->sock = sock; + // Order of items in the list doesn't matter + it->next = socket_list_head; + socket_list_head = it; + } + + if (!socket_list_head) { + break; + } + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + int open_count = 0; + for (int j = 0; j < count; j++) { + if ((tls_stats[j].state == SOCK_OPEN) && (tls_stats[j].proto == NSAPI_TLS)) { + open_count++; + } + } + TEST_ASSERT(open_count >= 4); +#endif + + TLSSocketItem *tmp; + for (TLSSocketItem *it = socket_list_head; it;) { + ++open_sockets[i]; + tmp = it; + it = it->next; + socket_list_head = it; + delete tmp->sock; + delete tmp; + } + printf("[round#%02d] %d sockets opened\n", i, open_sockets[i]); + } + TEST_ASSERT_EQUAL(open_sockets[0], open_sockets[1]); + TEST_ASSERT(open_sockets[0] >= 4); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_open_twice.cpp b/TESTS/netsocket/tls/tlssocket_open_twice.cpp new file mode 100644 index 00000000000..4710898ef68 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_open_twice.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "TLSSocket.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_OPEN_TWICE() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state); + } +#endif + TLSSocket *sock = new TLSSocket; + if (!sock) { + TEST_FAIL(); + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock->open(NetworkInterface::get_default_instance())); + + delete sock; +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state); + } +#endif +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp b/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp new file mode 100644 index 00000000000..277d2c094ff --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +namespace { +static const int SIGNAL_SIGIO = 0x1; +static const int SIGIO_TIMEOUT = 20000; //[ms] +} + +static void _sigio_handler(osThreadId id) +{ + osSignalSet(id, SIGNAL_SIGIO); +} + +void TLSSOCKET_RECV_TIMEOUT() +{ + static const int DATA_LEN = 100; + char buff[DATA_LEN] = {0}; + int time_allotted = split2half_rmng_tls_test_time(); // [s] + Timer tc_exec_time; + tc_exec_time.start(); + + TLSSocket sock; + tlssocket_connect_to_echo_srv(sock); + sock.set_timeout(100); + sock.sigio(callback(_sigio_handler, ThisThread::get_id())); + + int recvd = 0; + int pkt_unrecvd; + Timer timer; + for (int i = 0; i < 5; i++) { + pkt_unrecvd = DATA_LEN; + TEST_ASSERT_EQUAL(DATA_LEN, sock.send(buff, DATA_LEN)); + + while (pkt_unrecvd) { + timer.reset(); + timer.start(); + recvd = sock.recv(&(buff[DATA_LEN - pkt_unrecvd]), pkt_unrecvd); + timer.stop(); + + if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted || + (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout)) { + TEST_FAIL(); + goto CLEANUP; + } + printf("MBED: recv() took: %dus\n", timer.read_us()); + TEST_ASSERT_INT_WITHIN(51, 150, (timer.read_us() + 500) / 1000); + continue; + } else if (recvd < 0) { + printf("[pkt#%02d] network error %d\n", i, recvd); + TEST_FAIL(); + goto CLEANUP; + } + pkt_unrecvd -= recvd; + } + } + +CLEANUP: + tc_exec_time.stop(); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_send_closed.cpp b/TESTS/netsocket/tls/tlssocket_send_closed.cpp new file mode 100644 index 00000000000..3fff8414fb0 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_send_closed.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_SEND_CLOSED() +{ + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, + sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_PORT_TLS)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); + TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_SOCKET, sock.send("12345", 5)); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_send_repeat.cpp b/TESTS/netsocket/tls/tlssocket_send_repeat.cpp new file mode 100644 index 00000000000..9b5d465de14 --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_send_repeat.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_SEND_REPEAT() +{ + TLSSocket sock; + tlssocket_connect_to_discard_srv(sock); + + int snd; + Timer timer; + static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'}; + for (int i = 0; i < 1000; i++) { + snd = sock.send(tx_buffer, sizeof(tx_buffer)); + if (snd != sizeof(tx_buffer)) { + TEST_FAIL(); + break; + } + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_send_timeout.cpp b/TESTS/netsocket/tls/tlssocket_send_timeout.cpp new file mode 100644 index 00000000000..46f391bfa9b --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_send_timeout.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_SEND_TIMEOUT() +{ + TLSSocket sock; + if (tlssocket_connect_to_discard_srv(sock) != NSAPI_ERROR_OK) { + TEST_FAIL(); + return; + } + + int err; + Timer timer; + static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'}; + for (int i = 0; i < 10; i++) { + timer.reset(); + timer.start(); + err = sock.send(tx_buffer, sizeof(tx_buffer)); + timer.stop(); + if ((err == sizeof(tx_buffer)) && + (timer.read_ms() <= 800)) { + continue; + } + TEST_FAIL(); + break; + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_send_unconnected.cpp b/TESTS/netsocket/tls/tlssocket_send_unconnected.cpp new file mode 100644 index 00000000000..7a7cafe1c1f --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_send_unconnected.cpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_SEND_UNCONNECTED() +{ + TLSSocket sock; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_CONNECTION, sock.send("12345", 5)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/tls/tlssocket_simultaneous.cpp b/TESTS/netsocket/tls/tlssocket_simultaneous.cpp new file mode 100644 index 00000000000..b2c5c41e13e --- /dev/null +++ b/TESTS/netsocket/tls/tlssocket_simultaneous.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed.h" +#include "TLSSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "tls_tests.h" + +using namespace utest::v1; + +#if defined(MBEDTLS_SSL_CLI_C) + +void TLSSOCKET_SIMULTANEOUS() +{ + TLSSocket sock1; + TLSSocket sock2; + tlssocket_connect_to_echo_srv(sock1); + tlssocket_connect_to_echo_srv(sock2); + + int snd; + int rcvd; + static const char tx_buffer1[] = {'h', 'e', 'l', 'l', 'o', '1'}; + static const char tx_buffer2[] = {'h', 'e', 'l', 'l', 'o', '2'}; + char rx_buffer1[6]; + char rx_buffer2[6]; + for (int i = 0; i < 10; i++) { + snd = sock1.send(tx_buffer1, sizeof(tx_buffer1)); + if (snd != sizeof(tx_buffer1)) { + TEST_FAIL(); + break; + } + snd = sock2.send(tx_buffer2, sizeof(tx_buffer2)); + if (snd != sizeof(tx_buffer2)) { + TEST_FAIL(); + break; + } + + rcvd = sock1.recv(&rx_buffer1, 6); + if ((rcvd != 6) || (memcmp(tx_buffer1, rx_buffer1, 6) != 0)) { + TEST_FAIL(); + break; + } + rcvd = sock2.recv(&rx_buffer2, 6); + if ((rcvd != 6) || (memcmp(tx_buffer2, rx_buffer2, 6) != 0)) { + TEST_FAIL(); + break; + } + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock1.close()); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock2.close()); +} + +#endif // defined(MBEDTLS_SSL_CLI_C) diff --git a/TESTS/netsocket/udp/main.cpp b/TESTS/netsocket/udp/main.cpp index 234ce670f81..0057aed55f3 100644 --- a/TESTS/netsocket/udp/main.cpp +++ b/TESTS/netsocket/udp/main.cpp @@ -34,21 +34,28 @@ using namespace utest::v1; namespace { -NetworkInterface *net; +Timer tc_bucket; // Timer to limit a test cases run time } #if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; #endif -NetworkInterface *get_interface() +void drop_bad_packets(UDPSocket &sock, int orig_timeout) { - return net; + nsapi_error_t err; + sock.set_timeout(0); + while (true) { + err = sock.recv(NULL, 0); + if (err == NSAPI_ERROR_WOULD_BLOCK) { + break; + } + } + sock.set_timeout(orig_timeout); } - static void _ifup() { - net = NetworkInterface::get_default_instance(); + NetworkInterface *net = NetworkInterface::get_default_instance(); nsapi_error_t err = net->connect(); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err); printf("MBED: UDPClient IP address is '%s'\n", net->get_ip_address()); @@ -56,21 +63,18 @@ static void _ifup() static void _ifdown() { - net->disconnect(); + NetworkInterface::get_default_instance()->disconnect(); printf("MBED: ifdown\n"); } -void drop_bad_packets(UDPSocket &sock, int orig_timeout) + +nsapi_version_t get_ip_version() { - nsapi_error_t err; - sock.set_timeout(0); - while (true) { - err = sock.recvfrom(NULL, 0, 0); - if (err == NSAPI_ERROR_WOULD_BLOCK) { - break; - } + SocketAddress test; + if (!test.set_ip_address(NetworkInterface::get_default_instance()->get_ip_address())) { + return NSAPI_UNSPEC; } - sock.set_timeout(orig_timeout); + return test.get_ip_version(); } void fill_tx_buffer_ascii(char *buff, size_t len) @@ -80,6 +84,11 @@ void fill_tx_buffer_ascii(char *buff, size_t len) } } +int split2half_rmng_udp_test_time() +{ + return (udp_global::TESTS_TIMEOUT - tc_bucket.read()) / 2; +} + #if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE int fetch_stats() { @@ -90,29 +99,40 @@ int fetch_stats() // Test setup utest::v1::status_t greentea_setup(const size_t number_of_cases) { - GREENTEA_SETUP(480, "default_auto"); + GREENTEA_SETUP(udp_global::TESTS_TIMEOUT, "default_auto"); _ifup(); + tc_bucket.start(); return greentea_test_setup_handler(number_of_cases); } void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure) { + tc_bucket.stop(); _ifdown(); return greentea_test_teardown_handler(passed, failed, failure); } Case cases[] = { - Case("UDPSOCKET_ECHOTEST_NONBLOCK", UDPSOCKET_ECHOTEST_NONBLOCK), Case("UDPSOCKET_OPEN_CLOSE_REPEAT", UDPSOCKET_OPEN_CLOSE_REPEAT), Case("UDPSOCKET_OPEN_LIMIT", UDPSOCKET_OPEN_LIMIT), + Case("UDPSOCKET_RECV_TIMEOUT", UDPSOCKET_RECV_TIMEOUT), Case("UDPSOCKET_SENDTO_TIMEOUT", UDPSOCKET_SENDTO_TIMEOUT), -#ifdef MBED_EXTENDED_TESTS + Case("UDPSOCKET_OPEN_DESTRUCT", UDPSOCKET_OPEN_DESTRUCT), + Case("UDPSOCKET_OPEN_TWICE", UDPSOCKET_OPEN_TWICE), + Case("UDPSOCKET_BIND_PORT", UDPSOCKET_BIND_PORT), + Case("UDPSOCKET_BIND_PORT_FAIL", UDPSOCKET_BIND_PORT_FAIL), + Case("UDPSOCKET_BIND_ADDRESS_PORT", UDPSOCKET_BIND_ADDRESS_PORT), + Case("UDPSOCKET_BIND_ADDRESS_NULL", UDPSOCKET_BIND_ADDRESS_NULL), + Case("UDPSOCKET_BIND_ADDRESS_INVALID", UDPSOCKET_BIND_ADDRESS_INVALID), + Case("UDPSOCKET_BIND_ADDRESS", UDPSOCKET_BIND_ADDRESS), + Case("UDPSOCKET_BIND_WRONG_TYPE", UDPSOCKET_BIND_WRONG_TYPE), + Case("UDPSOCKET_BIND_UNOPENED", UDPSOCKET_BIND_UNOPENED), Case("UDPSOCKET_SENDTO_INVALID", UDPSOCKET_SENDTO_INVALID), - Case("UDPSOCKET_ECHOTEST", UDPSOCKET_ECHOTEST), - Case("UDPSOCKET_ECHOTEST_BURST", UDPSOCKET_ECHOTEST_BURST), + Case("UDPSOCKET_ECHOTEST_NONBLOCK", UDPSOCKET_ECHOTEST_NONBLOCK), Case("UDPSOCKET_ECHOTEST_BURST_NONBLOCK", UDPSOCKET_ECHOTEST_BURST_NONBLOCK), Case("UDPSOCKET_SENDTO_REPEAT", UDPSOCKET_SENDTO_REPEAT), -#endif + Case("UDPSOCKET_ECHOTEST", UDPSOCKET_ECHOTEST), + Case("UDPSOCKET_ECHOTEST_BURST", UDPSOCKET_ECHOTEST_BURST), }; Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers); diff --git a/TESTS/netsocket/udp/udp_tests.h b/TESTS/netsocket/udp/udp_tests.h index a265688877e..a6222a786d9 100644 --- a/TESTS/netsocket/udp/udp_tests.h +++ b/TESTS/netsocket/udp/udp_tests.h @@ -20,6 +20,7 @@ NetworkInterface *get_interface(); void drop_bad_packets(UDPSocket &sock, int orig_timeout); +nsapi_version_t get_ip_version(); void fill_tx_buffer_ascii(char *buff, size_t len); #if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE @@ -27,6 +28,15 @@ extern mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; int fetch_stats(void); #endif +/** + * Single testcase might take only half of the remaining execution time + */ +int split2half_rmng_udp_test_time(); // [s] + +namespace udp_global { +static const int TESTS_TIMEOUT = 480; +} + /* * Test cases */ @@ -35,7 +45,17 @@ void UDPSOCKET_ECHOTEST_NONBLOCK(); void UDPSOCKET_ECHOTEST_BURST(); void UDPSOCKET_ECHOTEST_BURST_NONBLOCK(); void UDPSOCKET_OPEN_CLOSE_REPEAT(); +void UDPSOCKET_OPEN_DESTRUCT(); void UDPSOCKET_OPEN_LIMIT(); +void UDPSOCKET_OPEN_TWICE(); +void UDPSOCKET_BIND_PORT(); +void UDPSOCKET_BIND_PORT_FAIL(); +void UDPSOCKET_BIND_ADDRESS_PORT(); +void UDPSOCKET_BIND_ADDRESS_NULL(); +void UDPSOCKET_BIND_ADDRESS_INVALID(); +void UDPSOCKET_BIND_ADDRESS(); +void UDPSOCKET_BIND_WRONG_TYPE(); +void UDPSOCKET_BIND_UNOPENED(); void UDPSOCKET_RECV_TIMEOUT(); void UDPSOCKET_SENDTO_INVALID(); void UDPSOCKET_SENDTO_REPEAT(); diff --git a/TESTS/netsocket/udp/udpsocket_bind_address.cpp b/TESTS/netsocket/udp/udpsocket_bind_address.cpp new file mode 100644 index 00000000000..2f8ce542436 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_address.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_ADDRESS() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + SocketAddress sockAddr = SocketAddress(NetworkInterface::get_default_instance()->get_ip_address(), 80); + nsapi_error_t bind_result = sock->bind(sockAddr); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp b/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp new file mode 100644 index 00000000000..44b07176852 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_ADDRESS_INVALID() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + + nsapi_error_t bind_result = NSAPI_ERROR_OK; + if (get_ip_version() == NSAPI_IPv4) { + bind_result = sock->bind("190.2.3.4", 1024); + } else if (get_ip_version() == NSAPI_IPv6) { + bind_result = sock->bind("fe80::ff01", 1024); + } else { + TEST_FAIL_MESSAGE("This stack is neither IPv4 nor IPv6"); + } + + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_address_null.cpp b/TESTS/netsocket/udp/udpsocket_bind_address_null.cpp new file mode 100644 index 00000000000..44bf9333e22 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_address_null.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_ADDRESS_NULL() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(NULL, 1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_address_port.cpp b/TESTS/netsocket/udp/udpsocket_bind_address_port.cpp new file mode 100644 index 00000000000..13bd3bdee62 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_address_port.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_ADDRESS_PORT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(NetworkInterface::get_default_instance()->get_ip_address(), 80); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_port.cpp b/TESTS/netsocket/udp/udpsocket_bind_port.cpp new file mode 100644 index 00000000000..f825b42e03d --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_port.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_PORT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_port_fail.cpp b/TESTS/netsocket/udp/udpsocket_bind_port_fail.cpp new file mode 100644 index 00000000000..95a17bf346e --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_port_fail.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_PORT_FAIL() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + delete sock; + return; + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, bind_result); + } + + UDPSocket *sock2 = new UDPSocket; + if (!sock2) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock2->open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock2->bind(1024)); + + delete sock; + delete sock2; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_unopened.cpp b/TESTS/netsocket/udp/udpsocket_bind_unopened.cpp new file mode 100644 index 00000000000..fcd47033950 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_unopened.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_UNOPENED() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + nsapi_error_t bind_result = sock->bind(1024); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_SOCKET, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp b/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp new file mode 100644 index 00000000000..f6a6e7928bb --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_BIND_WRONG_TYPE() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + char addr_bytes[16] = {0xfe, 0x80, 0xff, 0x1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + SocketAddress sockAddr; + if (get_ip_version() == NSAPI_IPv4) { + sockAddr = SocketAddress(addr_bytes, NSAPI_IPv4, 80); + } else if (get_ip_version() == NSAPI_IPv6) { + sockAddr = SocketAddress(addr_bytes, NSAPI_IPv6, 80); + } else { + TEST_FAIL_MESSAGE("This stack is neither IPv4 nor IPv6"); + } + nsapi_error_t bind_result = sock->bind(sockAddr); + if (bind_result == NSAPI_ERROR_UNSUPPORTED) { + TEST_IGNORE_MESSAGE("bind() not supported"); + } else { + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, bind_result); + } + + delete sock; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_echotest.cpp b/TESTS/netsocket/udp/udpsocket_echotest.cpp index 09b27254e63..1457096fceb 100644 --- a/TESTS/netsocket/udp/udpsocket_echotest.cpp +++ b/TESTS/netsocket/udp/udpsocket_echotest.cpp @@ -45,6 +45,8 @@ static const int pkt_sizes[PKTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, \ 1100, 1200 }; +Timer tc_exec_time; +int time_allotted; } static void _sigio_handler(osThreadId id) @@ -55,11 +57,11 @@ static void _sigio_handler(osThreadId id) void UDPSOCKET_ECHOTEST() { SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); int recvd; int sent; @@ -106,15 +108,22 @@ void udpsocket_echotest_nonblock_receiver(void *receive_bytes) for (int retry_cnt = 0; retry_cnt <= RETRIES; retry_cnt++) { recvd = sock.recvfrom(NULL, rx_buffer, expt2recv); if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + if (tc_exec_time.read() >= time_allotted) { + break; + } wait_ms(WAIT2RECV_TIMEOUT); --retry_cnt; continue; + } else if (recvd < 0) { + printf("sock.recvfrom returned %d\n", recvd); + TEST_FAIL(); + break; } else if (recvd == expt2recv) { break; } } - drop_bad_packets(sock, -1); // timeout equivalent to set_blocking(false) + drop_bad_packets(sock, 0); // timeout equivalent to set_blocking(false) tx_sem.release(); } @@ -128,12 +137,14 @@ void UDPSOCKET_ECHOTEST_NONBLOCK() TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); } #endif + tc_exec_time.start(); + time_allotted = split2half_rmng_udp_test_time(); // [s] SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); sock.set_blocking(false); sock.sigio(callback(_sigio_handler, ThisThread::get_id())); @@ -162,7 +173,8 @@ void UDPSOCKET_ECHOTEST_NONBLOCK() packets_sent++; } if (sent == NSAPI_ERROR_WOULD_BLOCK) { - if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + if (tc_exec_time.read() >= time_allotted || + osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { continue; } --retry_cnt; @@ -205,4 +217,5 @@ void UDPSOCKET_ECHOTEST_NONBLOCK() #endif } TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); + tc_exec_time.stop(); } diff --git a/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp b/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp index d2e6a1ce235..209f9597b3f 100644 --- a/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp +++ b/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp @@ -71,12 +71,12 @@ static void _sigio_handler(osThreadId id) void UDPSOCKET_ECHOTEST_BURST() { SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); UDPSocket sock; const int TIMEOUT = 5000; // [ms] - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); sock.set_timeout(TIMEOUT); sock.sigio(callback(_sigio_handler, ThisThread::get_id())); @@ -150,11 +150,11 @@ void UDPSOCKET_ECHOTEST_BURST() void UDPSOCKET_ECHOTEST_BURST_NONBLOCK() { SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); sock.set_blocking(false); sock.sigio(callback(_sigio_handler, ThisThread::get_id())); diff --git a/TESTS/netsocket/udp/udpsocket_open_close_repeat.cpp b/TESTS/netsocket/udp/udpsocket_open_close_repeat.cpp index 510eb200da1..e118990cf4d 100644 --- a/TESTS/netsocket/udp/udpsocket_open_close_repeat.cpp +++ b/TESTS/netsocket/udp/udpsocket_open_close_repeat.cpp @@ -38,7 +38,7 @@ void UDPSOCKET_OPEN_CLOSE_REPEAT() } for (int i = 0; i < 2; i++) { - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close()); } delete sock; diff --git a/TESTS/netsocket/udp/udpsocket_open_destruct.cpp b/TESTS/netsocket/udp/udpsocket_open_destruct.cpp new file mode 100644 index 00000000000..3042a189e4b --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_open_destruct.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_OPEN_DESTRUCT() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + + for (int i = 0; i < 1000; i++) { + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + delete sock; + } +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_open_limit.cpp b/TESTS/netsocket/udp/udpsocket_open_limit.cpp index 8a2b6becad6..dfe35de3050 100644 --- a/TESTS/netsocket/udp/udpsocket_open_limit.cpp +++ b/TESTS/netsocket/udp/udpsocket_open_limit.cpp @@ -47,7 +47,7 @@ void UDPSOCKET_OPEN_LIMIT() if (!sock) { break; } - ret = sock->open(get_interface()); + ret = sock->open(NetworkInterface::get_default_instance()); if (ret == NSAPI_ERROR_NO_MEMORY || ret == NSAPI_ERROR_NO_SOCKET) { printf("[round#%02d] unable to open new socket, error: %d\n", i, ret); delete sock; diff --git a/TESTS/netsocket/udp/udpsocket_open_twice.cpp b/TESTS/netsocket/udp/udpsocket_open_twice.cpp new file mode 100644 index 00000000000..893450ca9d6 --- /dev/null +++ b/TESTS/netsocket/udp/udpsocket_open_twice.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "greentea-client/test_env.h" +#include "mbed.h" +#include "udp_tests.h" +#include "UDPSocket.h" +#include "unity/unity.h" +#include "utest.h" + +using namespace utest::v1; + +void UDPSOCKET_OPEN_TWICE() +{ +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + int count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif + UDPSocket *sock = new UDPSocket; + if (!sock) { + TEST_FAIL(); + } + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock->open(NetworkInterface::get_default_instance())); + + delete sock; +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (int j = 0; j < count; j++) { + TEST_ASSERT_EQUAL(SOCK_CLOSED, udp_stats[j].state); + } +#endif +} diff --git a/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp b/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp index 2d0d558742f..6db0e22b828 100644 --- a/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp +++ b/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp @@ -37,14 +37,14 @@ static void _sigio_handler(osThreadId id) void UDPSOCKET_RECV_TIMEOUT() { SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(MBED_CONF_APP_ECHO_SERVER_PORT); static const int DATA_LEN = 100; char buff[DATA_LEN] = {0}; UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); sock.set_timeout(100); sock.sigio(callback(_sigio_handler, ThisThread::get_id())); @@ -62,7 +62,7 @@ void UDPSOCKET_RECV_TIMEOUT() if (recvd == NSAPI_ERROR_WOULD_BLOCK) { osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT); printf("MBED: recvfrom() took: %dms\n", timer.read_ms()); - TEST_ASSERT_INT_WITHIN(50, 150, timer.read_ms()); + TEST_ASSERT_INT_WITHIN(51, 150, timer.read_ms()); continue; } else if (recvd < 0) { printf("[bt#%02d] network error %d\n", i, recvd); diff --git a/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp b/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp index 26ae88bda83..a911c8a533c 100644 --- a/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp +++ b/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp @@ -27,12 +27,17 @@ using namespace utest::v1; void UDPSOCKET_SENDTO_INVALID() { UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); TEST_ASSERT(sock.sendto(NULL, 9, NULL, 0) < 0); TEST_ASSERT(sock.sendto("", 9, NULL, 0) < 0); TEST_ASSERT(sock.sendto("", 0, NULL, 0) < 0); - TEST_ASSERT_EQUAL(0, sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, NULL, 0)); + + nsapi_error_t result = sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, NULL, 0); + if (result != NSAPI_ERROR_UNSUPPORTED) { + TEST_ASSERT_EQUAL(0, result); + } + TEST_ASSERT_EQUAL(5, sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, "hello", 5)); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); diff --git a/TESTS/netsocket/udp/udpsocket_sendto_repeat.cpp b/TESTS/netsocket/udp/udpsocket_sendto_repeat.cpp index fdef2452929..249d9661b2c 100644 --- a/TESTS/netsocket/udp/udpsocket_sendto_repeat.cpp +++ b/TESTS/netsocket/udp/udpsocket_sendto_repeat.cpp @@ -27,10 +27,10 @@ using namespace utest::v1; void UDPSOCKET_SENDTO_REPEAT() { UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(9); int sent; diff --git a/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp b/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp index 5fdcb39af75..d229cf7837a 100644 --- a/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp +++ b/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp @@ -30,10 +30,10 @@ void UDPSOCKET_SENDTO_TIMEOUT() fill_tx_buffer_ascii(tx_buffer, sizeof(tx_buffer)); UDPSocket sock; - TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(get_interface())); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); SocketAddress udp_addr; - get_interface()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); + NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); udp_addr.set_port(9); Timer timer; @@ -43,12 +43,14 @@ void UDPSOCKET_SENDTO_TIMEOUT() TEST_ASSERT_EQUAL(sizeof(tx_buffer), sent); TEST_ASSERT(timer.read_ms() <= 100); + sock.set_timeout(1000); + timer.reset(); timer.start(); sent = sock.sendto(udp_addr, tx_buffer, sizeof(tx_buffer)); timer.stop(); TEST_ASSERT_EQUAL(sizeof(tx_buffer), sent); - TEST_ASSERT(timer.read_ms() <= 100); + TEST_ASSERT(timer.read_ms() <= 1000); printf("MBED: Time taken: %fs\n", timer.read()); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); diff --git a/TESTS/network/emac/main.cpp b/TESTS/network/emac/main.cpp index 49ee3cf909a..8da34924214 100644 --- a/TESTS/network/emac/main.cpp +++ b/TESTS/network/emac/main.cpp @@ -35,7 +35,8 @@ !defined(TARGET_MTB_ADV_WISE_1530) && \ !defined(TARGET_MTB_USI_WM_BN_BM_22) && \ !defined(TARGET_MTB_MXCHIP_EMW3166) && \ - !defined(TARGET_MTB_UBLOX_ODIN_W2) + !defined(TARGET_MTB_UBLOX_ODIN_W2) && \ + !defined(TARGET_UNO_91H) #error [NOT_SUPPORTED] Wifi tests are not valid for the target #endif #endif diff --git a/TESTS/network/interface/networkinterface_status.cpp b/TESTS/network/interface/networkinterface_status.cpp index 32d1a2bd8e9..f19a31fa9b6 100644 --- a/TESTS/network/interface/networkinterface_status.cpp +++ b/TESTS/network/interface/networkinterface_status.cpp @@ -137,8 +137,6 @@ void NETWORKINTERFACE_STATUS_NONBLOCK() void NETWORKINTERFACE_STATUS_GET() { - nsapi_connection_status_t status; - net = NetworkInterface::get_default_instance(); net->set_blocking(true); diff --git a/TESTS/network/wifi/main.cpp b/TESTS/network/wifi/main.cpp index 7043e00b426..10d5c4c4df5 100644 --- a/TESTS/network/wifi/main.cpp +++ b/TESTS/network/wifi/main.cpp @@ -52,7 +52,7 @@ using namespace utest::v1; utest::v1::status_t test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(240, "default_auto"); + GREENTEA_SETUP(360, "default_auto"); return verbose_test_setup_handler(number_of_cases); } @@ -62,32 +62,24 @@ Case cases[] = { Case("WIFI-CONNECT-NOCREDENTIALS", wifi_connect_nocredentials), Case("WIFI-SET-CREDENTIAL", wifi_set_credential), Case("WIFI-SET-CHANNEL", wifi_set_channel), -#if defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) - Case("WIFI-GET-RSSI", wifi_get_rssi), -#endif Case("WIFI-CONNECT-PARAMS-NULL", wifi_connect_params_null), + Case("WIFI-SCAN-NULL", wifi_scan_null), +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) + Case("WIFI-SCAN", wifi_scan), +#endif #if defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) + Case("WIFI-GET-RSSI", wifi_get_rssi), Case("WIFI-CONNECT-PARAMS-VALID-UNSECURE", wifi_connect_params_valid_unsecure), + Case("WIFI-CONNECT", wifi_connect), + Case("WIFI-CONNECT-DISCONNECT-REPEAT", wifi_connect_disconnect_repeat), #endif #if defined(MBED_CONF_APP_WIFI_SECURE_SSID) Case("WIFI-CONNECT-PARAMS-VALID-SECURE", wifi_connect_params_valid_secure), Case("WIFI-CONNECT-PARAMS-CHANNEL", wifi_connect_params_channel), Case("WIFI-CONNECT-PARAMS-CHANNEL-FAIL", wifi_connect_params_channel_fail), -#endif -#if defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) - Case("WIFI-CONNECT", wifi_connect), -#endif -#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) Case("WIFI-CONNECT-SECURE", wifi_connect_secure), Case("WIFI-CONNECT-SECURE-FAIL", wifi_connect_secure_fail), #endif -#if defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) - Case("WIFI-CONNECT-DISCONNECT-REPEAT", wifi_connect_disconnect_repeat), -#endif - Case("WIFI-SCAN-NULL", wifi_scan_null), -#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) && defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) - Case("WIFI-SCAN", wifi_scan), -#endif }; Specification specification(test_setup, cases, greentea_continue_handlers); diff --git a/TESTS/network/wifi/wifi_connect_disconnect_repeat.cpp b/TESTS/network/wifi/wifi_connect_disconnect_repeat.cpp index e23980e18af..e70546c486f 100644 --- a/TESTS/network/wifi/wifi_connect_disconnect_repeat.cpp +++ b/TESTS/network/wifi/wifi_connect_disconnect_repeat.cpp @@ -31,13 +31,13 @@ void wifi_connect_disconnect_repeat(void) nsapi_error_t error; error = wifi->set_credentials(MBED_CONF_APP_WIFI_UNSECURE_SSID, NULL); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); for (int i = 0; i < 10; i++) { error = wifi->connect(); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = wifi->disconnect(); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); } } diff --git a/TESTS/network/wifi/wifi_connect_nocredentials.cpp b/TESTS/network/wifi/wifi_connect_nocredentials.cpp index 2fe2b162611..73e8c015fca 100644 --- a/TESTS/network/wifi/wifi_connect_nocredentials.cpp +++ b/TESTS/network/wifi/wifi_connect_nocredentials.cpp @@ -30,5 +30,5 @@ void wifi_connect_nocredentials(void) error_connect = wifi->connect(); error_disconnect = wifi->disconnect(); TEST_ASSERT(error_connect == NSAPI_ERROR_NO_SSID || error_connect == NSAPI_ERROR_PARAMETER); - TEST_ASSERT(error_disconnect == NSAPI_ERROR_NO_CONNECTION); + TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_CONNECTION, error_disconnect); } diff --git a/TESTS/network/wifi/wifi_connect_params_null.cpp b/TESTS/network/wifi/wifi_connect_params_null.cpp index 21bb8cc96ed..0c2350dfcec 100644 --- a/TESTS/network/wifi/wifi_connect_params_null.cpp +++ b/TESTS/network/wifi/wifi_connect_params_null.cpp @@ -29,8 +29,8 @@ void wifi_connect_params_null(void) WiFiInterface *wifi = get_interface(); error = wifi->connect(NULL, NULL); wifi->disconnect(); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = wifi->connect("", ""); wifi->disconnect(); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); } diff --git a/TESTS/network/wifi/wifi_scan.cpp b/TESTS/network/wifi/wifi_scan.cpp index 92130ad3fd4..202a33181cd 100644 --- a/TESTS/network/wifi/wifi_scan.cpp +++ b/TESTS/network/wifi/wifi_scan.cpp @@ -24,8 +24,6 @@ using namespace utest::v1; -#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) && defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) - void wifi_scan(void) { WiFiInterface *wifi = get_interface(); @@ -33,7 +31,7 @@ void wifi_scan(void) WiFiAccessPoint ap[MBED_CONF_APP_MAX_SCAN_SIZE]; int size = wifi->scan(ap, MBED_CONF_APP_MAX_SCAN_SIZE); - TEST_ASSERT(size >= 2); + TEST_ASSERT(size >= 1); bool secure_found = false; bool unsecure_found = false; @@ -49,17 +47,19 @@ void wifi_scan(void) nsapi_security_t security = ap[i].get_security(); int8_t rssi = ap[i].get_rssi(); TEST_ASSERT_INT8_WITHIN(-10, -100, rssi); +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) if (strcmp(MBED_CONF_APP_WIFI_SECURE_SSID, ssid) == 0) { secure_found = true; TEST_ASSERT_EQUAL_INT(get_security(), security); } +#endif +#if defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) if (strcmp(MBED_CONF_APP_WIFI_UNSECURE_SSID, ssid) == 0) { unsecure_found = true; TEST_ASSERT_EQUAL_INT(NSAPI_SECURITY_NONE, security); } +#endif } // Finding one SSID is enough TEST_ASSERT_TRUE(secure_found || unsecure_found); } - -#endif // defined(MBED_CONF_APP_WIFI_SECURE_SSID) && defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) diff --git a/TESTS/network/wifi/wifi_scan_null.cpp b/TESTS/network/wifi/wifi_scan_null.cpp index 784d91b8969..fd5116ac7f2 100644 --- a/TESTS/network/wifi/wifi_scan_null.cpp +++ b/TESTS/network/wifi/wifi_scan_null.cpp @@ -26,6 +26,6 @@ using namespace utest::v1; void wifi_scan_null(void) { WiFiInterface *wifi = get_interface(); - TEST_ASSERT(wifi->scan(NULL, 0) >= 2); + TEST_ASSERT(wifi->scan(NULL, 0) >= 1); } diff --git a/TESTS/network/wifi/wifi_set_channel.cpp b/TESTS/network/wifi/wifi_set_channel.cpp index 5f609e0848b..f9f35f1d002 100644 --- a/TESTS/network/wifi/wifi_set_channel.cpp +++ b/TESTS/network/wifi/wifi_set_channel.cpp @@ -51,22 +51,22 @@ void wifi_set_channel(void) if (is_2Ghz) { error = wifi->set_channel(0); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = wifi->set_channel(1); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = wifi->set_channel(13); TEST_ASSERT(error == NSAPI_ERROR_OK || error == NSAPI_ERROR_PARAMETER); error = wifi->set_channel(15); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); } if (is_5Ghz) { error = wifi->set_channel(30); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = wifi->set_channel(36); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = wifi->set_channel(169); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); } wifi->set_channel(0); diff --git a/TESTS/network/wifi/wifi_set_credential.cpp b/TESTS/network/wifi/wifi_set_credential.cpp index cf659a81d46..d2c0ba66134 100644 --- a/TESTS/network/wifi/wifi_set_credential.cpp +++ b/TESTS/network/wifi/wifi_set_credential.cpp @@ -29,31 +29,31 @@ void wifi_set_credential(void) nsapi_error_t error; error = iface->set_credentials(NULL, NULL, NSAPI_SECURITY_NONE); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("", "", NSAPI_SECURITY_NONE); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("OK", NULL, NSAPI_SECURITY_NONE); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = iface->set_credentials("OK", "", NSAPI_SECURITY_NONE); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = iface->set_credentials("OK", NULL, NSAPI_SECURITY_WEP); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("OK", "", NSAPI_SECURITY_WEP); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("OK", NULL, NSAPI_SECURITY_WPA_WPA2); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("OK", "", NSAPI_SECURITY_WPA_WPA2); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); error = iface->set_credentials("OK", NULL, NSAPI_SECURITY_NONE); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = iface->set_credentials("OK", "12345678", NSAPI_SECURITY_WEP); TEST_ASSERT((error == NSAPI_ERROR_OK) || (error == NSAPI_ERROR_UNSUPPORTED)); @@ -65,11 +65,11 @@ void wifi_set_credential(void) TEST_ASSERT((error == NSAPI_ERROR_OK) || (error == NSAPI_ERROR_UNSUPPORTED)); error = iface->set_credentials("OK", "12345678", NSAPI_SECURITY_WPA_WPA2); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = iface->set_credentials("OK", "kUjd0PHHeAqaDoyfcDDEOvbyiVbYMpUHDukGoR6EJZnO5iLzWsfwiM9JQqOngni", get_security()); - TEST_ASSERT(error == NSAPI_ERROR_OK); + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, error); error = iface->set_credentials("OK", "kUjd0PHHeAqaDoyfcDDEOvbyiVbYMpUHDukGoR6EJZnO5iLzWsfwiM9JQqOngni8", get_security()); - TEST_ASSERT(error == NSAPI_ERROR_PARAMETER); + TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, error); } diff --git a/TESTS/network/wifi/wifi_tests.h b/TESTS/network/wifi/wifi_tests.h index b7d598b8b65..d5f8eea39ef 100644 --- a/TESTS/network/wifi/wifi_tests.h +++ b/TESTS/network/wifi/wifi_tests.h @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018-2019, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #ifndef WIFI_TESTS_H #define WIFI_TESTS_H diff --git a/TESTS/nfc/eeprom/main.cpp b/TESTS/nfc/eeprom/main.cpp index 593e42c602a..4f25ce74830 100644 --- a/TESTS/nfc/eeprom/main.cpp +++ b/TESTS/nfc/eeprom/main.cpp @@ -66,7 +66,7 @@ typedef enum { TERMINATE = 0xFF00 } TestCommand_t; -/* We group the command based on their fist byte to simplify step checking. +/* We group the command based on their first byte to simplify step checking. * Individual conditions of a step are checked in the event so this doesn't * sacrifice any correctness checking */ const size_t TEST_COMMAND_GROUP_MASK = 0xFF00; @@ -359,7 +359,7 @@ class DriverTest : public NFCEEPROMDriver::Delegate { _driver->write_bytes(_address, _operation_data, _operation_size); break; case ERASE_BYTES: - _driver->erase_bytes(_address, 4); + _driver->erase_bytes(_address, _operation_size); break; case READ_SIZE: _driver->read_size(); diff --git a/TESTS/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex b/TESTS/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex new file mode 100644 index 00000000000..70498c96674 --- /dev/null +++ b/TESTS/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex @@ -0,0 +1,4566 @@ +:020000041000EA +:40000000000001089D1803100D000000E1010010000000000000000000000000000000000000000000000000000000001DDA02100000000000000000A1DA0210ADDA0210C1 +:40004000F5180310051F0310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F518031069 +:40008000F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F518031040 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BDA814000800000000445E0410084B10B5002B03D00749084800E000BF07480368002B00D10A +:4001000010BD064B002BFBD09847F9E700000000AC140008445E0410C00F000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F023 +:4001400015FD0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF047F837F0FFF8200029002DF079FA2DF035F8C04600000800000001085D +:400180000000000085D50210A814000850840008F5D102100000000000B583B00190019B002B05D10A490B4B4A2218002CF054F9094B180001F0EEFE084B180002F07AFC93 +:4001C000019B054A1A600223180003B000BDC04694D9031078D90310C4000008EC0000082C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF30980BA +:400200009C46294B196802680A60043142680A60043182680A600431C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A6008314269E5 +:400240000A60043182690A600431C2690A60043103462033154E324200D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A60DE +:400280000431EFF314820A606046074900F010F8FEE700001000000020000000300000004000000004000000A4D903100002000000B587B003900291002305931C4B1800D2 +:4002C0002BF042FF039B302B0AD0402B0FD0202B14D1184B18002BF037FF174B059314E0164B18002BF030FF154B05930DE0154B18002BF029FF144B059306E0134B1800E5 +:400300002BF022FF124B0593C046124B18002BF01BFF00F027F8104B18002BF015FF0F4BDA6B0F4905980023009300232CF02CF9A8D90310D4D903103E01FF80E4D903109B +:400340003F01FF80F0D903104001FF80FCD903103D01FF8008DA031014DA0310EC72000834DA031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF096 +:40038000E3FE059B01330593059B0C2BEFDD264B5C6B254B9D6B244BDE6B234B1A6C224B596C214B9B6C224802930191009233002A0021002BF0C8FE1E4B1A681E4B110065 +:4003C00018002BF0C1FE184BDB6C0822134012D01A4B18002BF0B8FE134B1B6D0122134004D0174B18002BF0AFFE0CE0154B18002BF0AAFE07E0144B18002BF0A5FE114BA3 +:4004000018002BF0A1FE084BDB6C0422134004D00E4B18002BF098FE03E00D4B18002BF093FEC04606B070BDEC72000844DA031054DA031000ED00E0A4DA0310B4DA031022 +:40044000C4DA0310D4DA0310E8DA0310F8DA031004DB031082B001900091009B180002B07047000000B583B00190019B180005F05BFC019B180000F095F8084A019B1A60DC +:40048000019B28330021180000F04CF8019B382201219954019B180003B000BDC8FD031000B583B001900C4A019B1A60019B180005F069FB019B2833180000F04BF8019B07 +:4004C000180000F075F8019B180005F067FC019B180003B000BDC046C8FD031000B583B00190019B1800FFF7DBFF019B18002CF035FF019B180003B000BD000000B583B06C +:400500000190019B1800FFF7ADFF019B180000F07BF8034A019B1A60019B180003B000BDDCFD031000B583B001900091009B002B06D1019B10220021180037F017FB05E07E +:400540006A46019B1100180000F06AF8019B180003B000BD00B583B00190019BDB68002B05D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009B03 +:40058000DB68002B06D0009BDB685B680099019A10009847009BDA68019BDA60019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190D9 +:4005C000019BDB685A1E9341DBB2180002B0704700B583B001900091019A009B9A420FD0019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFFF5 +:40060000019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B001900091019B10220021180037F09CFA019B19000420FFF70BFF031E0E +:4006400002D0009A12681A60019B024ADA60C04603B000BD10DB031000B583B00190019B1B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A4C +:4006800012681A60C04603B000BD82B00190C04602B0704700B583B00190074A019B1A60019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BDDCFD031000B583B0C7 +:4006C0000190019B1800FFF7E5FF019B18002CF045FE019B180003B000BD000000B58DB06B4618002C231A00002137F03FFA00230B936B461900102003F0FAFB6B461B6828 +:40070000022B04D0032B12D0012B10D00CE00BF091F803000B930B9B002B0AD10A4B1B685A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F019 +:40074000ABFDC0460DB000BDC414000800B58DB06B4618002C231A00002137F007FA00230B936A4680235B011100180003F0C0FB6B461B68022B04D0032B11D0012B0FD06E +:400780000BE00E4B1B685A1E0C4B1A600B4B1B68002B07D10BF00AF804E002230B9302E0C04600E0C0466B465B680B9A1100180003F072FDC0460DB000BDC046C4140008D1 +:4007C00000B597B005AB18002C231A00002137F0CDF90023159305AB1900202003F088FB05AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F066FA0E +:4008000003001493149B002B02D10923159332E105AB5B68149A1100180003F0A5FE2AE103AB180008231A00002137F09FF905ABDB68082B02D00B2315931CE105AB586869 +:4008400005ABDB6803AA002103F066FC0300139305ABDA68139B9A4205D08C498C4B722218002BF0F9FD03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB98682E +:4008800003AB598803AB5B681A0007F00BFD03001593DBE005AB986803AB598803AB5B681A0007F013FD03001593CFE005AB1B691900012036F00AFA03001293129B002B76 +:4008C00002D109231593C1E005AB586805AB1B69129A012103F020FC0300139305AB1A69139B9A4205D06949694B8E2218002BF0B3FD05AB986805AB1A69129B190007F05B +:40090000F9FC03001593129B180036F063FD9DE00023029305AB586805AB1B6902AA012103F0FAFB0300139305AB1A69139B9A4205D05649564B9E2218002BF08DFD002322 +:400940000193029B1900012036F0C0F903001193119B002B02D10923159377E005AB9868029A01AB119907F0EBFD03001593159B002B0DD105AB5868019B119A002103F001 +:4009800007FC05AB586801AA0423012103F000FC119B180036F01EFDC04657E00023009305AB586805AB1B696A46012103F0B4FB0300139305AB1A69139B9A4204D105ABE6 +:4009C0005A69009B9A4205D03049314BB82218002BF042FD009B1900012036F077F903001093109B002B02D1092315932EE005AB586805AB5B69109A022103F08DFB0300DC +:400A0000139305AB5A69139B9A4205D01F49204BC12218002BF020FD05AB9B68009A1099180007F0D2FD03001593109B180036F0D1FCC0460AE005AB9B68180007F094F8C5 +:400A40000300159302E002231593C046C04612E005AB9B68180007F087F805AB9B68002B08D005AB9B68180036F0B4FC02E00223159300E0C04605AB5B68159A11001800A6 +:400A800003F00AFCC04617B000BDC04640DC03101CDB03103CDB031000B597B005AB18002C231A00002137F061F80023159305AB1900402003F01CFA05AB1B68022B19D036 +:400AC000032B00D12BE1012B00D037E1E021012036F0FCF803001493149B002B02D1092315932FE105AB5B68149A1100180003F03BFD27E10023139303AB180008231A000F +:400B0000002137F033F805ABDB68082B02D00B23159317E105AB586805ABDB6803AA002103F0FAFA0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF021 +:400B40008BFC03AB1B780F3B042B00D9E2E09A00834BD3181B689F4605AB9A6803AB5B681900100006F060FC03001593D5E005AB1B691900012036F0A9F803001293129B56 +:400B8000002B02D109231593C7E005AB586805AB1B69129A012103F0BFFA0300139305AB1A69139B9A4207D01623FF331A006A496A4B18002BF050FC05AB986805AB1A6912 +:400BC000129B190006F0A8FC03001593129B180036F000FCA1E00023029305AB586805AB1B6902AA012103F097FA0300139305AB1A69139B9A4206D092235A005649574B48 +:400C000018002BF029FC00230193029B1900012036F05CF803001193119B002B02D1092315937AE005AB9868029A01AB119906F0B7FC03001593159B002B0DD105AB5868B6 +:400C4000019B119A002103F0A3FA05AB586801AA0423012103F09CFA119B180036F0BAFBC0465AE00023009305AB586805AB1B696A46012103F050FA0300139305AB1A696B +:400C8000139B9A4204D105AB5A69009B9A4206D09F235A003049314B18002BF0DDFB009B1900012036F012F803001093109B002B02D10923159330E005AB586805AB5B69DD +:400CC000109A022103F028FA0300139305AB5A69139B9A4207D04823FF331A001E491F4B18002BF0B9FB05AB9B68009A1099180006F088FD03001593109B180036F06AFBA4 +:400D0000C0460AE005AB9B68180006F05FFB0300159302E002231593C046C04612E005AB9B68180006F052FB05AB9B68002B08D005AB9B68180036F04DFB02E0092315939D +:400D400000E0C04605AB5B68159A1100180003F0A3FAC04617B000BD54DC03101CDB031054DB031070B5A2B00DAB18002C231A00002136F0FBFE002321930DAB1900802061 +:400D800003F0B6F80DAB1B68022B06D0032B00D197E1012B00D196E190E10DABDB68102B02D00B2321938FE10023209309AB180010231A00002136F0D9FE0DAB58680DAB61 +:400DC000DB6809AA002103F0A7F9030020930DABDA68209B9A4207D08023FF331A00BF49BF4B18002BF038FB09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0A8 +:400E0000002308930DABDB691900012035F05EFF03001F931F9B002B02D1092321934CE10DAB1B691900012035F050FF03001E931E9B002B06D1092321931F9B180036F091 +:400E4000C9FA3AE10DAB58680DAB1B691E9A012103F062F9030020930DAB1A69209B9A4206D0CC235A009D499D4B18002BF0F4FA09AB588809AB59680DAB1D690DABDB69DF +:400E80001E9C08AA029201931F9B00932B00220007F054FE03002193219B002B06D10DAB5868089B1F9A002103F072F90DAB586808AA0423012103F06BF91F9B180036F031 +:400EC00089FAC046F9E00DAB1B691900012035F0FDFE03001D931D9B002B02D109232193EBE00DAB58680DAB1B691D9A012103F013F9030020930DAB1A69209B9A4207D0FB +:400F0000B823FF331A007549754B18002BF0A4FA0DAB5B691900012035F0D8FE03001C931C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F0EEF80300209341 +:400F40000DAB5A69209B9A4206D0E1235A006349634B18002BF080FA09AB588809AB59680DAB5C690DAB1B691C9A01931D9B0093230007F06DFE030021931D9B180036F09B +:400F800029FA1C9B180036F025FA96E0002307930DAB1B691900012035F098FE03001B931B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F0AEF80300209311 +:400FC0000DAB1A69209B9A4207D0E023FF331A004249434B18002BF03FFA1B9B1A9309AB9B681B9AD31819930DABDB691900012035F06CFE03001893189B002B06D10923BA +:4010000021931B9B180036F0E5F956E009AB1B78252B1AD109AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210088 +:4010400007F08EFE0300219319E009AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F017FF03002193219BD3 +:40108000002B06D10DAB5868079B189A002103F07FF80DAB586807AA0423012103F078F8189B180036F096F91B9B180036F092F9C04602E00223219303E002E002232193A4 +:4010C00002E0C04600E0C0460DAB5B68219A1100180003F0E1F8C04622B070BD68DC03101CDB0310F0B5A5B013AB18002C231A00002136F03BFD0023239313AA80239B0005 +:401100001100180002F0F4FE13AB1B68022B06D0032B00D1DBE0012B00D1DAE0D4E013ABDB68242B02D00B232393D3E00023229309AB180024231A00002136F017FD13AB62 +:40114000586813ABDB6809AA002102F0E5FF0300229313ABDA68229B9A4206D08C239A006149624B18002BF077F909AB1B78213B012B00D9A3E00023129313AB1B6919004C +:40118000012035F0A3FD03002193219B002B02D10923239396E013AB586813AB1B69219A012102F0B9FF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF04CF996 +:4011C000219B209309ABDB68219AD3181F9313ABDB691900012035F079FD03001E931E9B002B06D1219B180036F0F4F80923239368E009AB1B78212B23D109AB5C8809AB08 +:401200005D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F076FB0300239375 +:4012400022E009AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200009 +:4012800008F028FC03002393239B002B0DD113AB5868129B1E9A002102F07AFF13AB586812AA0423012102F073FF219B180036F091F81E9B180036F08DF8C04602E0022330 +:4012C0002393C046C04605E00223239302E0C04600E0C04613AB5B68239A1100180002F0DBFFC04625B0F0BD84DC03101CDB03104302000010B5A6B00023259310AB180058 +:401300002C231A00002136F031FC10AA80235B001100180002F0ECFD10AB1B68022B19D0032B00D14FE1012B00D05BE14C21012035F0CCFC03002493249B002B02D109233B +:40134000259353E110AB5B68249A1100180003F00BF94BE10EAB180008231A00002136F005FC10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F0CCFE86 +:401380000300239310ABDA68239B9A4205D09C4A9C499D4B18002BF05FF80EAB1B781A3B062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F084 +:4013C00049FF03002593FCE010AB98680EAB59880EAB5B681A0007F051FF03002593F0E000230D9310ABDB69229309AB180010231A00002136F0BAFB10AB98680DAB229A96 +:4014000009A907F04FFF03002593259B002B00D0D6E010AB58680D9B09AA002102F0B8FE10AB58680DAA0423012102F0B1FEC046C6E010AB1B69219305AB180010231A001A +:40144000002136F093FB10AB5868219B05AA012102F062FE03002393239A219B9A4205D06B4A6849684B18002AF0F6FF10AB9B68219A05A9180007F065FF03002593C046BF +:401480009FE010AB1B69209310ABDB691F9300230493209B1900012035F018FC03001E931E9B002B02D1092325938AE010AB5868209B1E9A012102F02FFE03002393239AC4 +:4014C000209B9A4205D0534A4E494F4B18002AF0C3FF1F9B1900012035F0F8FB03001D931D9B002B06D11E9B180035F073FF0923259366E010AB98681D9C209A1E9904AB1F +:4015000001931F9B0093230007F05BFF03002593259B002B0DD110AB5868049B1D9A002102F036FE10AB586804AA0423012102F02FFE1E9B180035F04DFF1D9B180035F0F2 +:4015400049FFC0463DE010ABDB691C93002303931C9B1900012035F0B9FB03001B931B9B002B02D1092325932BE010AB986803AB1C9A1B9907F06CFF03002593259B002BA0 +:401580000DD110AB5868039B1B9A002102F000FE10AB586803AA0423012102F0F9FD1B9B180035F017FFC0460BE010AB9B68180007F0CCFF0300259303E00223259300E028 +:4015C000C046C04612E010AB9B68180007F0BEFF10AB9B68002B08D010AB9B68180035F0F9FE02E00223259300E0C04610AB5B68259A1100180002F04FFEC04626B010BDBD +:401600009E02000098DC03101CDB031068DB0310C2020000D702000010B5AAB010AB18002C231A00002136F0A1FA0023299310AA8023DB001100180002F05AFC10AB1B6883 +:40164000022B06D0032B00D1CCE1012B00D1D9E1C5E110ABDB680C2B02D00B232993D2E1002327930DAB18000C231A00002136F07DFA10AB586810ABDB680DAA002102F0C3 +:401680004BFD0300279310ABDA68279B9A4205D0D54AD649D64B18002AF0DEFE0DAB1B7A282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180061 +:4016C00007F0CCFF03002993299B002B00D07FE110AB5868269B0CAA002102F059FDC04676E110AB1B69259310AB5868259B0BAA012102F011FD03002793279A259B9A426F +:4017000006D0D3239A00B949B94B18002AF0A4FE0DAB1B880B9A1100180007F0BDFF03002993C04659E110AB1B69249310AB5868249B09AA012102F0EFFC03002793279A2E +:40174000249B9A4206D0D6239A00A849A84B18002AF082FE0DAB1B8809AA1100180007F02BFF03002993C04637E110ABDB6923930DAB1B8807AA1100180007F04BFF03006C +:401780002993299B002B00D024E110AB5868239B07AA002102F0FCFCC0461BE110AB1B692293229B1900012035F090FA03002193219B002B02D1092329930EE110AB586855 +:4017C000229B219A012102F0A7FC03002793279A229B9A4205D0884A8449854B18002AF03BFE0DAB18880DAB5968229B219A05F0A7FA03002993219B180035F0EBFDECE0A9 +:401800000DAB1B88180005F0E7FA03002993E4E00DAB1B8805AA06A9180005F04BFB03002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F0A8FC87 +:4018400010AB1B6A032B00D8C6E010AB586805AA0423012102F09CFCC046BDE010ABDB692093209B1900012035F030FA03001F931F9B002B02D109232993AEE00DAB1888AB +:4018800004AB209A1F9905F075FC03002993299B002B06D110AB5868049B1F9A002102F077FC10AB586804AA0423012102F070FC1F9B180035F08EFDC0468EE010ABDB69FE +:4018C0001E931E9B1900012035F000FA03001D931D9B002B02D1092329937EE00DAB188803AB1E9A1D9905F06DFC03002993299B002B06D110AB5868039B1D9A002102F03C +:4019000047FC10AB586803AA0423012102F040FC1D9B180035F05EFDC0465EE010AB1B691C9310AB5B691B930023289310AB58681C9B02AA012102F0EFFB03002793279ADE +:401940001C9B9A4206D0EF239A002849284B18002AF082FD0DAB5B68284A934222D11B9B002B1FD01B9B1900012035F0AFF903002893289B002B02D1092329932DE010AB4C +:4019800058681B9B289A022102F0C6FB03002793279A1B9B9A4205D0194A1449144B18002AF05AFD0DAB18880DAB5968029A289C1B9B0093230009F01BFE03002993289B5B +:4019C000180035F007FDC04607E00223299304E0C04602E0C04600E0C046C04613E00223299310E0C0460EE035030000B0DC03101CDB031084DB031071030000000001702A +:401A0000CB030000C04610AB5B68299A1100180002F042FCC0462AB010BDC04600B591B001AB18002C231A00002136F09FF800230F9301AA8023DB011100180002F058FA28 +:401A400001AB1B68022B04D0032B3DD0012B3DD037E001ABDB680E930E9A8023DB009A4202D908230F9332E00E9B1900012035F02DF903000D930D9B002B02D109230F931A +:401A800025E001AB58680E9B0D9A002102F044FB03000C930C9A0E9B9A4205D0114A1249124B18002AF0D8FC0E9A0D9B1100180009F05AFD03000F930D9B180035F08AFC7F +:401AC00005E002230F9302E0C04600E0C04601AB5B680F9A1100180002F0DEFBC04611B000BDC04601040000D0DC03101CDB031000B58FB06B4618002C231A00002136F09B +:401B000035F800230D936A4680231B011100180002F0EEF96B461B68022B04D0032B2CD0012B2CD026E06B46DB690C930C9B1900012035F0CBF803000B930B9B002B02D115 +:401B400009230D931CE00C9A0B9B1100180009F0CDFC03000D930D9B002B06D16B4658680C9B0B9A002102F013FB0B9B180035F031FC05E002230D9302E0C04600E0C046B3 +:401B80006B465B680D9A1100180002F085FBC0460FB000BD70B59EB000231D930BAB18002C231A00002135F0E1FF0BAA80239B011100180002F09CF90BAB1B68022B1BD055 +:401BC000032B00D15FE1012B00D06BE1FC235B001900012035F07AF803001C931C9B002B02D109231D9361E10BAB5B681C9A1100180002F0B9FC59E108AB18000C231A0041 +:401C0000002135F0B3FF0BABDB680C2B02D00B231D934BE10BAB58680BABDB6808AA002102F07AFA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF00DFC08AB32 +:401C40001B78293B052B00D917E19A009F4BD3181B689F46002307930BAB9B6807AA1100180008F099F803001D931D9B002B00D006E10BAB586807AA0423002102F088FA8C +:401C8000C046FDE000231A930BABDB691993199B1900012035F01AF803001A931A9B002B02D109231D93ECE00BAB9B68199A1A99180008F0B9FC03001D931D9B002B06D14A +:401CC0000BAB5868199B1A9A002102F061FA1A9B180035F07FFBD4E00BAB58680BAB1B6906AA012102F018FA03001B931B9B042B05D0774A7349744B18002AF0ADFB0BABBB +:401D000058680BAB5B6905AA022102F005FA03001B931B9B042B05D06E4A6A496A4B18002AF09AFB08AB58880699059A0BAB9B6808F006FD03001D93C046A2E00BAB9B68DB +:401D4000180007F0AFFF03001D939AE00BAB1B691900012034F0BAFF03001893189B002B02D109231D938CE00BAB58680BAB1B69189A012102F0D0F903001B930BAB1A6958 +:401D80001B9B9A4205D0544A4E494F4B18002AF063FB0BAB5B691900012034F097FF03001793179B002B06D109231D93189B180035F010FB65E00BAB58680BAB5B69179AD1 +:401DC000022102F0A9F903001B930BAB5A691B9B9A4205D0414A3B493B4B18002AF03CFB0BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179BE0 +:401E00000193009233002A00210009F015FA03001D9336E00BAB1B691900012034F056FF03001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F06CF928 +:401E400003001B930BAB1A691B9B9A4205D0244A1C491D4B18002AF0FFFA0BAB986808AB59880BAB1C6908AB5B68169A0093230009F002FB03001D9303E002231D9300E009 +:401E8000C046C04612E00BAB9B68180007F00AFF0BAB9B68002B08D00BAB9B68180035F099FA02E002231D9300E0C0460BAB5B681D9A1100180002F0EFF9C0461EB070BD3D +:401EC00057040000E8DC03101CDB031028DC031081040000870400009D040000AA040000C204000000B585B00190002303930023029380231B06180001F0ECFF030003932D +:401F0000039B1022134001D0FEF7E8FB039B2022134001D0FEF754FC039B4022134001D0FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A25 +:401F400080239B00134001D0FFF7CCF8039A8023DB00134001D0FFF75FFB039A80231B01134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0E4 +:401F8000FFF708FE039A8023DB011340B1D0FFF745FDAEE700B585B00190019B002B05D11F49204BD42218002AF056FA1E4B18002DF016FD0200019B1A62019B1B6A002BEE +:401FC00005D11749194BD92218002AF045FA0023039309E0164A039B5B01D3180833019A1A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF010FA18 +:402000000200019B5A60019B5B68002B05D104490A4BE32218002AF01FFAC04605B000BDD4DD03101CDD0310C4DD031038DD03103801000814010008E51E001074DD0310FD +:4020400000B583B00190019B180000F051FA019B180003B000BD000010B5144B1B78BFF35B8FDBB21A00012313405A425341DBB2002B17D00D4B18002BF0D6F803005A1EC0 +:402080009341DBB2002B0DD0094B1800FFF7D8FF064B18002BF000F9064A0749044B18002BF096F8024B180010BDC0467855000828550008C00000082983021000B583B051 +:4020C000FFF7CAFF03000193044A019B1100180026F002FB0300180003B000BD20DE031000B589B00390029101920093039B002B05D14349434B3D22180029F06FFF029B3A +:402100000D2B05D83E49404B3E22180029F066FF1F236B4400221A70019B0693009B05931F236B441B780E2B05DD3549374B4622180029F053FF1F236B441B781F226A4480 +:40214000591C11701A00039B9B18069A3F210A402F498A5C1A70069B9B090693069B002B00D0DDE71F236B441B780E2B05DD2449264B4C22180029F031FF1F236B441B78BE +:402180001F226A44591C11701A00039B9B1823221A701F236B441B780E2B05DD18491B4B5122180029F01AFF1F236B441B781F226A44591C11701A00039B9B18059A3F210A +:4021C0000A4013498A5C1A70059B9B090593059B002B00D0DDE71F236B441B780E2B05DD07490A4B5622180029F0F8FE1F236B441B78039AD31800221A70C04609B000BD77 +:4022000040DE0310A0DE0310B8DE0310E4DE0310E0DD031030B58FB00590049103920293FFF74CFF03000B930B9B002B03D1234B18002AF011F9129B002B04D0129B012B60 +:4022400001D0022337E006AB18000E231A00002135F08CFC059B049A06A80E21FFF740FF00230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B9822 +:402280000D9B00932B00A04703000A9300230C930A9B002B0ED00A9B094A934205D0094A934205D101230C9304E003230C9301E005230C930C9B18000FB030BD10DF0310A0 +:4022C0000B01FF801201FF8030B591B00590049103920293FFF7F2FE03000E930E9B002B03D1364B18002AF0B7F809AB18000E231A00002135F03AFC059B049A09A80E2102 +:40230000FFF7EEFE0E9B1B681C331B6807AA09A90E98984703000D9300230F930D9B002B08D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039BD9 +:402340009A4201D2092336E0029A039BD218029B9A4201D208232EE0039A029BD21807AB1B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B8A +:40238000019306AB00932B00A04703000D930D9B002B06D1069A029B9A420BD208230F9308E00D9B064A934202D107230F9301E005230F930F9B180011B030BD48DF03107A +:4023C0000701FF8000B58FB0039002910192FFF775FE03000C930C9B002B03D1204B18002AF03AF807AB18000E231A00002135F0BDFB039B029A07A80E21FFF771FE0C9BF2 +:402400001B681C331B6805AA07A90C98984703000B9300230D930B9B002B08D00B9B114A934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B6801227B +:40244000134005D0019B5B6801221A43019B5A6005AB1A68019B1A600D9B18000FB000BD80DF03100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194BB4 +:40248000180029F0E9FF03AB18000E231A00002135F06CFB019B009A03A80E21FFF720FE089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B3F +:4024C000094A934205D0094A934205D10123099304E00723099301E005230993099B18000BB000BDBCDF03100701FF801201FF8082B00190019B180002B0704700B58FB003 +:402500000590049103920293039B002B04D1049B002B01D0062333E006AB05AA1A6006AB04225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121AD +:40254000180000F077FE03000C930C9B002B01DC052315E006A90C98002300930023032200F04EFF03000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B03 +:4025800018000FB000BDC046011A010000B58FB00590049103920293029B002B04D1039B002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA60CB +:4025C00006AB029A1A6006AB039A5A608D235B020121180000F02EFE03000C930C9B002B01DC052316E006AA08A90C98012300931300022200F004FF03000D930D9A802367 +:402600001B069A4201D105230D930C9B180000F0C1FF0D9B18000FB000BD000000B58DB003900291029B002B01D1062339E008AB180008231A00002135F098FA06AB03AA1E +:402640001A6006AB04225A6004AB08AA1A6004AB08225A60144B0121180000F0EBFD03000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0C1FE030063 +:402680000B93029B08AA03CA03C30B9A80231B069A4201D105230B930A9B180000F07AFF0B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124BFF +:4026C0000121180000F0B6FD03000693069B002B01DC052315E004A90698002300930023012200F08DFE03000793079A80231B069A4201D105230793069B180000F04AFF75 +:40270000079B180009B000BD031A010010B58AB003900023069300230993039B1B69089300230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA79 +:402740000423002101F0E8FC0300042B02D080231B0647E0039B586805AA0423022101F0DBFC0300042B02D080231B063AE0089B180034F025FE03000993099B002B01D10A +:4027800005232FE0039B5868039B1B69099A012101F0C2FC0200039B1B699A4205D0099B180034F017FE05231CE0039B5B68180001F0B2FE03001C000699059B0998089A45 +:4027C000009303002000FFF725FD03000793089A099B0021180035F0C9F9099B180034F0F9FD079B18000AB010BD10B588B003900023059300230493039BDB68042B03D108 +:40280000039B1B69042B02D080231B064FE0039B586805AA0423002101F07EFC0300042B02D080231B0642E0039B586804AA0423012101F071FC0300042B02D080231B065D +:4028400035E0039BDB69180034F0BAFD03000793079B002B01D1052329E0039B5B68180001F05AFE03001C000599049A039BD869079B009303002000FFF726FD03000693F8 +:40288000069B002B07D1039B5868039BDB69079A002101F07DFC039BDA69079B0021180035F064F9079B180034F094FD069B180008B010BD00B587B0019003AB18000823AF +:4028C0001A00002135F052F900230293019BDB68042B03D1019BDB69082B02D080231B0626E0019B586802AA0423002101F014FC0300042B02D080231B0619E0019B5B6873 +:40290000180001F009FE03001800029B03AA1900FFF758FD03000593059B002B07D1019B5868019BDB6903AA002101F031FC059B180007B000BD00B585B0019000230393F8 +:40294000019BDB68042B02D080231B0619E0019B586803AA0423002101F0DEFB0300042B02D080231B060CE0019B5B68180001F0D3FD03001A00039B19001000FFF774FD68 +:402980000300180005B000BD00B585B00190009100230393019B1B68022B04D0032B10D0012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F070 +:4029C0004BFDC046019B5B68039A1100180001F063FCC04605B000BD50E00310F8DF031000B591B0019000230F9303AB18002C231A00002135F0BAF880231B06180001F02F +:402A000069FA03000F9325F01FFC03000E930E9B002B05D00E9B21492148AC2229F01CFD0F9B202213400AD003AB1900202001F05FFA1C4A03AB11001800FFF7A5FF0F9BAA +:402A4000102213400AD003AB1900102001F050FA154A03AB11001800FFF796FF0F9B402213400AD003AB1900402001F041FA0F4A03AB11001800FFF787FF0F9B802213402D +:402A8000BAD003AB1900802001F032FA084A03AB11001800FFF778FFAEE7C04660E003101CE003100D270010EB270010B52800103729001000B585B00190019B002B05D19A +:402AC0001F49204B7822180029F0C6FC1E4B18002CF086FF0200019B1A62019B1B6A002B05D11749194B7D22180029F0B5FC0023039309E0164A039B5B01D3180833019A16 +:402B00001A60039B01330393039B032BF2D9019B0F4A1A610F4A104B002118002EF080FC0200019B5A60019B5B68002B05D104490A4B8722180029F08FFCC04605B000BDEE +:402B400024E103107CE0031014E1031098E00310BC02000898020008E1290010D4E0031000B58BB0039002910192039B002B05D139493A4B2C22180029F030FA029B002B32 +:402B800005D13549364B2D22180029F027FA00F00DFE03000793079B002B02D0079B1B6801E001235B4206932E4B0493039B04A90022180029F0A0FB039B0121180029F0CE +:402BC000E1FB030005930023099300230893002308932CE000230493089B1A04059B13430993039B9A68089B1B01D3181800099A04AB190029F080FB031E15D0039B9A6803 +:402C0000089B1B01D318029ADA60039B9A68089B1B01D318069A5A60039B9A68089B1B01D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A42D5 +:402C400005D10549084B5D22180029F0C7F9099B18000BB000BDC04630E103106CE1031088E10310FFFF0000A4E1031000B589B003900291039B002B05D13649364B662262 +:402C8000180029F0ABF9029B002B05D13149334B6722180029F0A2F9029B1B0C0793039B5A68079B9A4209D8079A039B5B682C492C48009313006D2229F0CEFB039B9A6895 +:402CC000079B1B01D3181A68029B9A4205D0029B23492548712229F0BFFB00F067FD03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A6888 +:402D0000059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01149144B7B22180029F09AFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A6077 +:402D4000039B9A68079B1B01D31800229A60C04609B000BD30E103106CE10310C8E1031074E30310E4E1031030E203106CE2031000B589B003900291039B002B05D1364938 +:402D8000364B8622180029F029F9029B002B05D13349344B8922180029F05EFB029B1B0C0793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F04CFB0B +:402DC000039B9A68079B1B01D3181A68029B9A4205D0029B22492548932229F03DFB00F0E5FC03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B0178 +:402E0000D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01049144B9D22180029F018FB039B9A68079B1B01D318DB68002B05D107490E4BA222180022 +:402E400029F0CCF8039B9A68079B1B01D318DB68180009B000BDC04630E103106CE1031090E30310A8E20310E4E1031030E20310E8E2031038E3031084B00190009100232D +:402E800003930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039B01330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023C0 +:402EC000039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF03000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D8002318008A +:402F000005B000BD6C03000800B587B003900291029B002B0DD1039B1B7D01225340DBB2002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D129 +:402F4000029B1B68134915483D2229F085FA002305930CE0029B9A69059B9B00D3181A68039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B68E6 +:402F80000449074800931300462229F065FAC04607B000BD9CE60310ACE30310E4E303101CE4031000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BD5B +:402FC0007403000800B583B00190019A044B11001800FFF7CDFE0300180003B000BDC0467403000800B585B001900091019B9B681A6A01235B42190010002CF015FD0300AB +:403000000393039B002B05D02349244B5722180028F0E4FF019BDB69002B03D1019B009A9A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B6819001000B3 +:403040002EF046FA03000293029B002B05DA1249134B6622180028F0C1FF019B5B68029A134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD0300039353 +:40308000039B002B05D00449044B6B22180028F0A5FFC04605B000BD5CE4031094E40310A8E40310C4E4031030B58BB005900491049B002B05D15649564B7022180028F0D9 +:4030C0008DFF059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F0BCF9099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68DD +:40310000099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C41480293019100922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE29 +:40314000089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B8122180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4ABF +:403180005A60089B002B0FD0049B9B6818002CF085FF03000693069B002B35D01C49244B8A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B1100180054 +:4031C000FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049ADA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11004A +:403200001800FFF7EFFE00E0C0460BB030BDC0465CE40310E0E4031088E60310F4E4031014E5031070E503106C0300080100008094E4031000B58FB00190009109AB180090 +:4032400010231A00002134F091FC05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6008 +:4032800002AB9B68002B05D119491A4BB722180029F0E2F802AA019B11001800FFF704FF02AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22EB +:4032C000180028F08BFE02AB9B6818002CF008FF03000D930D9B002B05D00749074BC022180028F07BFE02AB5B6818000FB000BDBCE60310A0E503105CE4031094E4031083 +:4033000000B585B001900091009B002B05D13649364BC922180028F061FE019B1800FFF751FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821E7 +:40334000180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F07CF8039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F0DB +:4033800039FA2EE0009B5B6918002CF087FE03000293029B002B24D01349184BD822180028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B2B +:4033C0001868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE00E0C04605B000BD5CE40310E0E40310D8E50310C8E60310F0E5031094E4031083 +:4034000000B595B003900291019200930FAB180010231A00002134F0A9FB0BAB00221A600BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB54 +:40344000009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF0CCFD020005AB5A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B1100180098 +:40348000FFF73EFF05AB5A6901235B42190010002CF0DCFD03001393139B002B06D086235A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D09F +:4034C0001023FF331A000749074B180028F086FD05AB1B69180015B000BDC046D8E60310A0E503105CE4031094E4031000B585B001900091009B002B06D18C235A002049C2 +:40350000204B180028F06AFD019B1800FFF75AFD03000393039B002B07D11C23FF331A001749194B180028F059FD039B1A68009B0821180000F074F903001A00012353404C +:40354000DBB2002B06D08F235A001049104B180028F082FF039B15330321180000F004F9039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BDB2 +:403580005CE40310E0E40310D8E50310E4E6031020E6031000B58FB00190019B002B55D009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A603E +:4035C00005AB1022DA6003AB019A1A6005AB1A00002101202CF00EFD020003AB5A6003AB5B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FFB8 +:4036000003AB5A6801235B42190010002CF01EFD03000D930D9B002B06D0A4235A000F490F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF33EC +:403640001A000649064B180028F0C8FCC0460FB000BDC046F4E6031050E603105CE4031094E4031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD0CB +:4036800000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD000000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049BFB +:4036C000002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B00931300272228F0B8FEC04609B000BDC04610E8031000E7031000B587B00390080077 +:4037000011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A236B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B2332 +:403740006B441B781A0017236B441B780449054800931300302228F07FFEC04607B000BD20E8031054E7031000B585B003900A000B236B441A70039B1B780B226A441278E3 +:403780009A420CD0039B1B781A000B236B441B780449054800931300382228F05DFEC04605B000BD38E8031054E7031000B583B02DF064FE03000093009B002B05D1154999 +:4037C000154B5E22180028F009FC0023019317E0124B1968019A13009B009B18DB00CB185A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B013301937E +:40380000064B5A68019B9A42E2D80023180003B000BDC0469CE70310F0E703106C0300088CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029B49 +:40384000D3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B05099380231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A15 +:40388000079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A4201D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD218F0 +:4038C0000599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A4209D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A4F +:40390000089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002318000CB07047C04600000108007703000000081010B52EF079FE174B1A0018213B +:403940000A202AF04BFF0200144B1A62134B1B6A002B05D1124A134B1100180028F07CFD114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B110061 +:40398000180028F069FD054B1800FCF705FC0200024B5A60C04610BD3C0300086C030008E0E8031080E8031054030008ACE8031010B5034B1B68180001F078F8F9E7C0462A +:4039C0009803000800B583B001900091009A0199034B1800FFF7C4F80300180003B000BD8003000800B583B00190019A044B11001800FFF7BDF90300180003B000BDC046EF +:403A00008003000800B583B00190019A034B11001800FFF72BF9C04603B000BD8003000800B583B00190019A034B11001800FFF71DF9C04603B000BD7403000884B0019004 +:403A400000910023039311E0019B1A69039B5B01D3185A68009B9A4205D1019B1A69039B5B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000065 +:403A800010B596B00190009103AB180028231A00002134F06BF803AB019A1A60019B1B7D022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2E4 +:403AC000002B05D08D498E4B5B22180028F0C4FC019BDB681393139B1B681293139B5B681193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB00 +:403B000024229954119B002B5DD0119BD900019B1A68129B1800FFF783FE03001A0001235340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129A22 +:403B4000D3185B68002B36D0159BDB00129AD01803AA159BDB000421D3185B18020003CA03C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB002E +:403B8000D3180433186803AA159BDB00D31808331968019B1B681A00FFF742FE03001A0001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A85 +:403BC000119B9A42B9D30F9B002B63D00F9BD900019B1A68109B1800FFF722FE03001A0001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB0032 +:403C0000109AD3185B68002B3CD0119A149BD318149AD2001099881803AADB000421D3185B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60B6 +:403C4000119A149BD31803AADB00D31804331868119A149BD31803AADB00D31808331968019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B204924489422BE +:403C800028F0EAFBC046149B01331493149A0F9B9A42B3D31F4B5A6A01235B42190010002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CACC +:403CC00013C313CA13C313CA13C312681A600E9B00211800FFF776FE03000D93019B1B7D1A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC04624EF03104E +:403D0000F0E8031018E9031038E903105CE903107CE903106C030008A0E9031000B587B00190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849A4 +:403D4000284BAD22180028F049F9019B9B690493049B002B05D12449244BB322180028F07BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B1E +:403D80005B6818002DF0CCFB03000393039B002B05DA1349164BBF22180028F01FF9019B5B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE73 +:403DC00003000593059B002B05D00549054BC522180028F003F9049B180007B000BDC046CCE9031004EA031038EF031018EA031038EA031054EA031000B58BB004910392EE +:403E000017236B44021C1A70FFF7D0FC03000993099B002B05D12A492A4BCE22180028F0DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D05A +:403E4000079B04930EE0089B049A1A40049B9A4208D0049A1C491D48089B00931300DB2228F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFBA8 +:403E800003000693069B079A1A40069B9A420DD0039A80231B069A4202D0069B023305D007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC04666 +:403EC000CCE9031070EA031058EF031090EA0310CCEA031000B583B00190019B1A0000210120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC0300099355 +:403F0000099B002B05D15149514BF922180028F065F8099A029B2C211800FFF781FC03001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180062 +:403F400033F014FE039B002B06D0039B013B039A134001D1012200E0002223236B441A701A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A134043 +:403F80000AD1099B9B68039C84225200314933480093230028F060FA2DF0E6FA03000793039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B110018007E +:403FC000FFF73CFD03000693069B002B07D1039C89235A001F492348230028F03DFA069B1800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211B +:404000001800FFF7B1FB18E0059B1533052204211800FFF771FB10E0059B153303211800FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B1100F1 +:404040001800FFF71DFDC0460AB010BDCCE9031070EA031064EF031048EB031064EB0310B0EB0310CCEB03101CEC031000B587B00390029101920093039B1800FFF7B2FC23 +:4040800003000593059B1B68153305211800FFF76BFB029B032B06D99E235A001C491D4B180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31857 +:4040C00004330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D0049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009B14 +:40410000D21A049B5A60009B180007B000BDC0466CEF03104CEC031000B587B00390029101920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F0FE +:404140004DFF059A0099019B1800FFF769FB03001A0001235340DBB2002B06D0AD235A0009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC04669 +:40418000CCE9031070EA03107CEF031068EC031010B58AB00590049103920293029B002B6BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A4A +:4041C0000299039B1800FFF72BFB03001A0001235340DBB2002B07D07023FF331A002A492A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7E4 +:40420000B3FA089B24229B5C1A00049B9B180493049B032B06D9BC235A001B491C4B180028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C67 +:404240007E22FF32104913480093230028F004F9079B1B68029A0399180033F0F5FB079B1A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BDE3 +:40428000CCE9031070EA031088EF031068EC031088EC0310A4EC031010B58EB001900091019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B4962 +:4042C0008B4B180027F08AFE0D9BDB68002B06D1C6235A008549874B180027F07FFE019B1800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FAC7 +:4043000003000A930A9B002B06D0CB235A0077497A4B180027F062FE00230C930D9B1A6827236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B4F +:40434000002B0CD0009B6E4A934208D0009CA023FF331A006B496C48230028F07DF80D9BDB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089BDE +:404380005B681800FFF74CFB0D9B18220021180033F0ECFB584B1B6A0D9A110018002AF071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6044 +:4043C00000230D936BE00D9B1533032202211800FFF792F963E0009A80231B069A420BD0009B4A4A934207DA009CE0235A0045494748230028F030F80D9B153303220521ED +:404400001800FFF779F9009A80231B069A4202D10D9B01229A750D9BDB680693069B009A1A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800EA +:40444000FFF75AF9059B1B681800FFF7E9FA0D9B18220021180033F089FB274B1B6A0D9A110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B0C +:40448000180027F0ABFD0D9B1B7D1C00EA23FF331A001C491F48230027F0DEFFC0460D9B002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F048 +:4044C00099F90FE00C9B18002BF0E8FD03000393039B002B06D0FB235A000449074B180027F07CFDC0460EB010BDC046CCE90310E4EC031004ED03106C03000804EA0310C7 +:404500000100008094EF03102CED03108000008068ED0310A0ED031000B585B00190019B1800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039BE1 +:404540001B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E020000CCE9031040EE031000B585B001900091019B1800FFF736FA03000393039B1B6819 +:40458000009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD03000193019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B69180004 +:4045C0002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFCC04603B000BDC04694030008B8EF03100CF003109803000810B52EF031F9C0468F +:4046000010BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF748 +:4046400033FD3DE001AB9B681A0001AB5B6819001000FEF755FE33E001AB9B681A0001AB5B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F80300C6 +:404680001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF7E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCBE +:4046C000C04607B000BDC046E8F0031044F00310B8EF03106CF0031000B599B0394B17930FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C235A +:404700001A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C22180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B00 +:4047400018002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A00002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194BA2 +:404780001A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFC124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B08A +:4047C00000BDC04600770408779A333D0C4A2863B8F00310B8EF031074F00310C8F0031088F00310D8F00310A0F00310940300089803000800B587B0019003AB18000C239D +:404800001A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C04607B000BD9403000800B585B00390029101920093039B002B05D12349234B2422FD +:40484000180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A934205D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFBFE +:40488000009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61EA +:4048C000C04605B000BDC046F8F0031038F1031048F103100C4A286360F1031090F10310A0F10310FFD948A200B585B0039002910192039B002B05D11C491D4B37221800F8 +:4049000027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D01249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B27 +:40494000104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61C04605B000BDF8F0031038F1031048F103100C4A286360F10310EB +:40498000B8F1031042658BA610B586B003906846016042608360039B002B05D13D493E4B4722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B4F +:4049C0001A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B22180027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B11 +:404A0000023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B681B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3C3 +:404A4000039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039B9B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D0BC +:404A80000449084B5D22180027F0A8FAC04606B010BDC046F8F0031038F10310FFD948A2CCF10310F8F103100CF2031010B586B00190019B002B05D12D492E4B63221800EC +:404AC00027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA235B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822AA +:404B0000180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C3019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B6A +:404B40005B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019B9B681B689A42CED1C04606B010BDC046F8F0031038F1031042658BA644F2031051 +:404B80000CF2031082B00190034A019B1A60019B180002B07047C046BCF2031000B583B00190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B00190002325 +:404BC000180002B0704784B00390009201930023180004B0704784B00390009201930023180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800D8 +:404C0000210002B010BD10B584B0039000920193039B1B682C331B68039A1000984703000C001800210004B010BD82B0019001235B42180002B0704730B585B00390009286 +:404C40000193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF1C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C005D +:404C8000089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D875 +:404CC00001D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B6828331B68039A1000984703000C00009801991A00230036F06DFF1C00130019009C +:404D000022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00230036F057FF1C001300190022000B00134317D10099019A089B099CC9186241AA +:404D40000C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B1A +:404D8000019C03981A002300884703000C00009801991A00230036F01DFF1C001300190022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F68DF +:404DC0000099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B84703000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099AE +:404E0000019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019BB5 +:404E40001A60019B180002B07047C046BCF20310F0B585B0039002910192039B1800FFF7EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F6183 +:404E8000019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B180005B0F0BD78F2031000B583B001900A4A019B1A60019B180000F0E8F8019B0433E8 +:404EC000180000F0E5FA019B1800FFF75BFE019B180003B000BDC04678F2031000B583B00190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64650 +:404F000000B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B24330121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA5A +:404F400003000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA69099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B043318003B +:404F800000F0E5FC030043440093002301930123019A954206D8019A954202D1009A944200D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D698A +:404FC000099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D80023DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A00224339 +:405000000DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BDC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433A9 +:40504000180000F084FC0300069300230793099B5C691B690699079AC91AA2410B0014000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB024 +:4050800004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B04D0019B00225A62002316E0019B24330121180027F09AF903000393039B002BFC +:4050C00001D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD10B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A4F +:405100000C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA0300EE +:405140000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FDC4 +:40518000031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF58 +:4051C00010B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B1969AE +:405200005A69029B039C5B18544106930794059B043306990C9A180000F0F8FA03000993099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B581 +:4052400085B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B0433180000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B0D8 +:405280000190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C691B691900100000F044FB03000393039B1D0000231E002B0034001800210004B01E +:4052C00070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D00025002611E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B5C +:405300001D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C01225340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB03002370DB +:405340000F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD00B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002BF0 +:4053800005D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC0463A0200005CF9031074F9031010B5074B1B68002B08D0054B1A6801235B42190001 +:4053C00010002AF031FB00E0C04610BD9073000810B5064B1B68002B05D0044B1B6818002AF04CFB00E0C04610BDC0469073000800B583B00190019B180000F0C9FA27F0FA +:40540000DDF9019B180003B000BD00B583B0019027F0FCF9019B180000F0C0FA019B180003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B59E +:4054400083B0019027F030FA019B180000F0B2FA019B180003B000BD00B583B001900091019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190B1 +:40548000019B180000F09CFA019B180003B000BD00B583B00190019B180000F097FA019B180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F057 +:4054C000FBFF03AB1800FFF793FF02AB1800FFF7A9FF019B18002FF099FE03005A1E9341DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180010 +:4055000000F00CFA03000493049B180027F00AFF03001A00019B5A60054B180000F05CFA0300180027F0F0FF059B180007B000BD505E000800B587B00190002305931D4B40 +:40554000180000F049FA0300180027F0B5FF04AB1800FFF74DFF03AB1800FFF763FF019B18002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF5D +:4055800004AB1800FFF741FF019B5B68002B04D0019B5B68180027F0EBFE064B180000F01BFA0300180027F0AFFF059B180007B000BDC046505E000800B589B003900291CF +:4055C0000192009301235B420793164B180000F003FA0300180027F06FFF06AB1800FFF707FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF7F7 +:405600001EFF06AB1800FFF700FF064B180000F0E3F90300180027F077FF079B180009B000BDC046505E000810B592B00390029101920093039B180000F070F903000893C6 +:40564000039B18002FF03EFE03000D93039B18002FF031FE03000C93029B1093089A019B11001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019B01 +:40568000D2180C990D9BCB189A4201D9012300E00023002B02D001235B42B1E000230E93594B180000F098F90300180027F004FF009B002B00D19AE0039B019A11001800FB +:4056C0002FF0DAFD03000B93109B032293431900109A2B236B448A1A511E8A411A70019B0B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F9030097 +:405700001B6807932B236B441B78002B03D1079A089B9A4224D208AA07AB1100180000F066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039BAA +:405740005A68079BD018089A079BD31A1A00FF2132F00CFA039B5B680F93089B11930EE0079B089A1100180036F062F803001A00089B53430793109B0F93079B119306ABF1 +:405780001800FFF735FE05AB1800FFF74BFE0398119B0F9A01992FF058FD03005A1E9341DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D000241D +:4057C00001E0C046012406AB1800FFF71EFE012C0DD1C046009A079BD31A0093079B019AD3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B78 +:40580000180012B010BDC046505E000800B58FB0039002910192039B18002FF053FD03000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099AA2 +:405840000A9B9A4202D901235B4261E0099A0A9B9A4217D2039B099A110018002FF00CFD03000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D00123B5 +:405880005B4245E000230D93234B180000F0A4F80300180027F010FE019B002B2FD006AB1800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305ABEE +:4058C0001800FFF7BCFD06AB1800FFF79EFD0D9B002B03D001235B420D9310E0039B029A110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B2D +:40590000180000F069F80300180027F0FDFD0D9B18000FB000BDC046505E000800B583B00190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A1100F7 +:4059400018002FF099FC0300180003B000BD00B583B00190019B18002FF0ADFC0300180003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B001905B +:40598000019B18002FF0A5FC0300180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704768 +:4059C00082B00190019B180002B0704782B00190019B180002B0704700B583B00190019B180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2F5 +:405A0000009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019B1B68002B0FD1019B083319002420FAF711FD041E04D0200027F0ECFC220000E0E7 +:405A40002200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F0BDFA019B1B68180002B010BD7CF9031098F9031082B00190019B074A1A61C04673 +:405A8000019B1B69002B01D0012200E00222019B1A75C04602B07047C0F9031082B00190034A019B1A60019B180002B07047C046B4F9031000B583B00190019B1800FFF711 +:405AC000EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B0039002910192039B1B6810331B68019A0299039898470300180005B000BD00B5D8 +:405B000083B00190019B1B6818331B68019A100098470300180003B000BD00B583B00190019B1B6828331B68019A100098470300180003B000BD82B001900A006B46033360 +:405B40001A706B4603331B78002B01D0002301E019235B42180002B0704782B001900123180002B0704782B001900A006B4602331A801123180002B0704782B00190009109 +:405B8000C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF70DFD031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B88 +:405BC00028331C0002AB00211800FAF7ABFC02AB19002000FAF7FCFC02AB1800FAF7BAFC26F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1855 +:405C000054411A00230000F0DDF8019B28331800FAF7D4FC031E04D0019B28331800FFF79FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF79CFC019B5B +:405C40001800FFF7A0FF02AB1800FFF793FB02AB1800FAF77FFCC04607B000BD10B582B00190019B180000F052F8019B00221A60019A002300249360D460019A00230024EA +:405C80001361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F041 +:405CC00011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B0019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A0023002465 +:405D00001361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019B180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002390 +:405D400000249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B69054A1100180025F08DFF019B180002B010BDC046F0FD03107D5D001000B585B028 +:405D80000190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B00190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BDB3 +:405DC000F0FD031010B586B0059002920393059B9869059B08331900059A029B039C00921A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B0833190010003C +:405E000025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B07047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BD45 +:405E4000E440041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BDD0 +:405E800000B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B00190019B180000F00FF8034A019B1A60019B180003B000BDE440041082B00190AD +:405EC000019B180002B0704782B00190019B180002B0704782B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704784B001900091019BA1 +:405F0000039304E0039B5A1C039200221A70009B5A1E0092002BF5D1C04604B0704786B003900291019213236B4400221A700023059313E0039A059BD3181A780299059B68 +:405F4000CB181B785340D9B213236B4413226A4412780A431A70059B01330593059A019B9A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206BC +:405F8000944663445A425341DBB2180002B0704700B583B00190019B7F3306DA019B5A42FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A9342DD +:405FC00000D1B4E2B54A934200DD7CE0B44A934200D172E2B24A934238DCB24A934200D147E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A93 +:40600000934200D13DE2ACE2AA4A934200D134E2A94A934200D12EE2A3E2A84A934200D151E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D190 +:406040003FE2A24A934200D139E28AE2A04A934200D182E29E4A934218DC9E4A934200D175E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D17C +:4060800067E2984A934200D165E26AE2964A934200D164E2944A934208DC944A934200D153E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A93427D +:4060C00000D13AE24DE28E4A934200D113E28C4A934238DC8B4A934200D11EE2894A934218DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E260 +:406100002FE2844A934200D10BE2834A934200D105E226E2814A934200D1E8E17F4A934208DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A9342A9 +:4061400000D1D6E10DE27A4A934200D1DBE1784A934218DC774A934200D1D0E1754A934208DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A9342EA +:4061800000D1BEE1EDE1704A934200D1BDE16E4A934208DC6D4A934200D1B4E16C4A934200D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E16D +:4061C0001A00263200D146E11A00263200DDCFE01A00373200D1B2E11A00373231DC1A00403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D107 +:406200001FE1663300D11CE1ABE11A00623200D117E1603300D114E1A3E11A003A3200D139E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E13D +:406240008FE11A00313200D163E11A00313216DC1A00343200D11AE11A00343207DC1A00363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A0004 +:406280002B3200D115E11A002B3265DC1A002F3200D10EE12D3300D10BE162E100BCFFFF00AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFFB3 +:4062C000009FFFFF809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF80B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFFB4 +:4063000080C2FFFF00BFFFFF80BDFFFF80BCFFFF00BDFFFF00BEFFFF80BEFFFF00C1FFFF80BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFFF8 +:4063400080C4FFFF00C5FFFF00C7FFFF00C6FFFF80C6FFFF80C7FFFF1A00283200D1F0E01A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A0055 +:40638000193200D15BE01A0019320FDC1A00223209DC1A0023324EDA1A0025324DD0243300D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D01733F8 +:4063C00047D0CEE01A00143200D16EE0133300D16DE0C6E01A000C3200D180E01A000C3213DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3221 +:4064000000D16EE00D332AD0ABE09A1D00D160E09A1D07DC1A000A3200D15EE0083300D159E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D234B +:4064400090E008238EE009238CE004238AE0022388E00D2386E0022384E00D2382E0082380E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102349 +:4064800070E00E236EE00D236CE00D236AE00F2368E0022366E00F2364E0022362E00D2360E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E00923F1 +:4064C00050E00C234EE00D234CE00C234AE0082348E0082346E0042344E0082342E0082340E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E00323D8 +:4065000030E008232EE002232CE010232AE00D2328E00D2326E0082324E0112322E00D2320E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2372 +:4065400010E008230EE00D230CE008230AE0042308E0022306E0102304E0092302E00D2300E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED88B +:406580009A00114BD3181B689F46132318E0152316E0172314E0182312E0192310E01A230EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E0002374 +:4065C000180002B07047C046FCFD031082B002006B4606331A806B4606331B88123B0C2B1ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E07F +:4066000006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E00023180002B0704734FE031000B585B0039002910192039B294A93420FD0284AFB +:40664000934203D8274A934214D020E0A222D20593421ED0A422D20593421AD017E0029B002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD06F +:40668000029A80235B009A4207D0082324E0022322E0C04602E0C04600E0C046029B0722134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB02008B +:4066C000019B1A60019B1B68002B04D1019B00225A60092300E00023180005B000BDC046010000500100004000B589B0039004AB180007F097FB04A90398002301930023A9 +:4067000000930023002218F0C9FE03001800FFF73FFC03000793079B002B09D104AB180007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD19 +:4067400000B587B001900091019B180016F006FA0300012B01D0082323E0019B18685968FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D9B8 +:4067800002230EE0059B1800FFF7AEFF03000393039B002B01D0039B03E0009B059A1A600023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF919 +:4067C0000300022B01D008231DE0029B18685968FFF789FB03000593059B1B7812246C441800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B99 +:40680000059A1A600023180006B010BD10B58AB004910392029316236B44021C1A800E230993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A6074 +:40684000AC21012030F042FA03000893089B002B01D1092362E0089A1F236B441B781900100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499A7 +:40688000180007F09BFF03001800FFF781FB03000993099B002B30D1089A089B7C331900100011F099FF03001800FFF771FB03000993099B002B22D10898089B8833190088 +:4068C000089B7C331A00089B28331C00154B0193154B0093230011F043FD03001800FFF757FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04675 +:4069000000E0C046089B002B07D0089B18000EF0D4FD089B180030F05DFD099B18000AB010BDC046006100085946011000B58BB005900491039200230993059B1B68180002 +:40694000FFF716FB031E21D0039B5D4A934201D90223B1E0059B1868039BD900059B10331A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69CB +:40698000039A0499180031F05FF894E0059B1B681B0C1B044B4A934219D1059B1B684A4A13404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF0300EC +:4069C0000993099B002B00D175E0099B74E0059B1B683F4A13403F4A934206D0059B1B68394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB0512 +:406A00009A420AD1039A049906A800230093002317F0D8F80300089307E0039A049906AB180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B6862 +:406A4000234A1340234A93420AD1059B10331A0006AB11001800FFF773FE030009931EE0059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6869 +:406A800098B200E00020059B10331A0006AB1900FFF78AFE0300099301E002230993099B002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC04659 +:406AC000FFFFFF1F000003700000FFEF00000360FFFFFFEF0000016010B588B0020002910E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188888 +:406B000005AB0093230005F051F803000793079B002B08D10699059A029B1800FFF706FF0300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B056 +:406B4000020000916B4606331A80204B1B68002B01D1072337E06B4606331B88002B04D06B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F0224B +:406B800092009A18114BD218009B1A60009B1B68DB68012B16D1009B1B681B68002B11D100230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0C9 +:406BC000039B00E00023180005B000BD805E000800B585B0020000916B4606331A8000230293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B39 +:406C000001D0039B09E0029B1B68002B01D0052303E0029A009B1A60039B180005B000BD00B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E23ED +:406C40006B441B8811001800FFF778FF03000593059B002B01D0059B29E0049B1B68002B01D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B01229343019307 +:406C8000049B5B68019A1A40019B9A4201D003230DE0009B002B06D0049B9A68009B9A4201D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B6C +:406CC00032D0019B1B681800FFF752F9031E05D0019B1B69180030F07DFB25E0019B1B68134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E045 +:406D0000019B1B680C4A13400C4A93420AD1019B1B6918000EF0D1FB019B1B69180030F059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF000003609C +:406D400010B588B004910392029316236B44021C1A8006AA16236B441B8811001800FFF737FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF79A +:406D8000D5FD03000793079B002B04D0069B00221A60079B1DE0069BDB68012B18D1069B1968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B72 +:406DC00006D0069B1800FFF775FF069B00221A60079B180008B010BD00B587B002006B4606331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493A6 +:406E0000049B002B01D0049B1CE0039BDB68012B07D16B4606331B88180004F0E5FF03000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B1E +:406E400000E0059B180007B000BD000000B583B00190019B1B681800FFF78AF8031E03D0019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC71 +:406E80000300DB000BE0019B1B68084A1340084A934203D1019B1B699B6D00E00023180003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B4407 +:406EC000021C1A80029B002B02D0029B00221A60019B002B02D0019B00221A6004AA0E236B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002BA5 +:406F000001D1062311E0029B002B03D0049B1A68029B1A60019B002B06D0049B1800FFF795FF0200019B1A600023180007B000BD00B58BB00390029101920093009B0022F4 +:406F40001A600C9B002B0AD0039B1A68C023DB051A40C023DB059A4201D00823F8E0039B1B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0AE +:406F8000039B1969039B5A69029B180030F05CFD039B5B69029AD018039B5B69019AD31A1A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A9342E6 +:406FC00032D10C9B002B2FD1039B1800FFF73EFF03000733DB080893089A019B9A4201D90423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF0300079393 +:40700000079B002B01D0079BA2E0029A089BD018019A089BD31A1A00002130F0A7FD009B089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A0A +:40704000934200D083E0039B1B68444A1340444A93420BD105AB180015F007FD05AB434A1A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB83 +:407080005A600C9B002B08D1039B1A68E023DB051A40C023DB059A4208D1019A029905AB180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B6D +:4070C0000EDA019B002B05D0019A029B0021180030F04CFD099B1800FEF75AFF030037E0099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B3E +:40710000019AD31A029AD318099A0021180030F02DFD17E0099A019B9A4213D2099B019AD31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A000021A1 +:4071400030F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF000001600000FFEF00000360E43504101436041010B588B00491039202931623D7 +:407180006B44021C1A80029B00221A6006A916236B44188800230122FFF742FD03000793079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE030018009F +:4071C00008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A4D +:407200000499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049BD5 +:407240001B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B18DD +:407280005A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B681B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D120 +:4072C000039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B6F +:40730000002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A44108800932B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800BB +:40734000FEF7DAFD079B180030F044F8099B18000BB030BD00000170000001600000027000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A84 +:40738000934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E0094B00E00023180002B0704709000001080000010A0000010B000001602A041004 +:4073C000902A0410C02A0410F02A041000B583B00190019B1B68114A934205D8104A934206D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B0833DB +:4074000018001CF0C6FD02E0072304E0C046019B00221A600023180003B000BD09000001080000010B00000100B585B001900091019B00221A60009B334A93421BD0324AD5 +:40744000934203D8314A934207D03EE0304A93421FD0304A93422AD037E0019B083318001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE44 +:40748000019B0833002118001AF03AFE0300039327E0019B083318001CF06FFD019B0833012118001CF094FD0300039319E0019B083318001CF061FD019B083300211800CA +:4074C0001CF086FD030003930BE0009AFE23DB051A4080235B049A4201D1022311E008230FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD71 +:407500000300180005B000BD09000001080000010A0000010B00000100B587B0039002910192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A93429A +:4075400014D809E0039B0833019A029918001CF0E3FA030005930CE0039B0833019A029918001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF37 +:40758000059B1800FEF704FD0300180007B000BD08000001090000010B00000100AFFFFF00B589B00390029101920093039B1B68FF221340802252041343824A934200D133 +:4075C000AEE0039B1B68FF2213408022520413437D4A934200D1A1E0039B1B68FF221340802252041343794A934200D194E0039B1B68FF221340802252041343744A9342F6 +:4076000000D187E0039B1B68FF221340802252041343704A934200D17AE0039B1B68FF2213408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A56 +:40764000934261D0039B1B68FF221340802252041343634A934255D0039B1B68FF2213408022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD096 +:40768000039B1B68FF221340802252041343574A934231D0039B1B68FF221340802252041343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68CB +:4076C000FF2213408022520413434B4A93420DD0039B1B68FF221340802252041343474A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E0CF +:4077000040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059BEF +:407740009A4202D20423079328E0039B1B68224A93421AD3214A934203D9224A934214D809E0039B0833029A110018001CF04DFA030006930CE0039B0833029A11001800F8 +:407780001EF0D2FD0300069302E01D4B0693C046069B1800FEF7FCFB03000793079B002B08D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B1800C0 +:4077C00009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000170 +:4078000000AFFFFF00B597B003900291019204AB05A903984022FFF7C3FE03001593159B002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB7A +:40784000031E01D0102300E00023180017B000BD00B587B00390029101920093039AFE23DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB04F9 +:407880009A4207D0039AFE23DB051A40C023DB049A4248D1039B554A93421ED0534A934209D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934218 +:4078C00010D34F4A934221D04E4A934223D027E017236B4407221A7024E017236B4405221A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A70EF +:4079000010E017236B4402221A700BE017236B4408221A7006E017236B4406221A7001E000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D174 +:4079400017236B4406221A7001E0002348E0029B2F4A934212D02E4A934203D82D4A934207D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B1A +:4079800004D116236B4403221A7003E016236B4404221A70019B802B0ED1C02301930BE016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0A5 +:4079C000009B16226A4412781A70019917236B441A7816236B441B7818000BF02FFA0300180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C004F8 +:407A000001000006020000060200C0020300C0020200004001000040030000400400004082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040237B +:407A40000EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E00023180002B07047C046FFFFFFFE68FE031000B585B00190009102230393019B009A7E +:407A80001A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7904 +:407AC00002218A431A71019B083318000BF0ECF90023039317E0019B1B68134A1A40A0239B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4235 +:407B000001D008230393039B002B06D0B4235A00019B0021180030F029F8039B180005B000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B54 +:407B40001800FFF743FC0300180003B000BD00B583B00190B0235A00019B0021180030F005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204AC0 +:407B8000934205D1019B083318000BF099F90CE0019B1B681B4A1A40A0239B049A4222D1019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A790421C9 +:407BC0008A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A431A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC04673 +:407C00000200C0020000C07F00B587B00390029101920093009B5B69DAB2039B5A71039B0833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800FE +:407C4000019B1B69029A19000CF054F803000593059B180007B000BD00B5A9B00390029101920093009BFF221340802252041343A94A934200D1A0E0009BFF22134080229F +:407C800052041343A54A934200D194E0009BFF221340802252041343A14A934200D188E0009BFF2213408022520413439D4A934200D17CE0009BFF22134080225204134316 +:407CC000994A934200D170E0009BFF221340802252041343954A934200D164E0009BFF221340802252041343914A934259D0009BFF2213408022520413438E4A93424ED027 +:407D0000009BFF2213408022520413438A4A934243D0009BFF221340802252041343874A934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041C +:407D40001343804A934222D0009BFF2213408022520413437C4A934217D0009BFF221340802252041343794A93420CD0009BFF221340802252041343754A934201D1402346 +:407D80001CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009BC5 +:407DC0001800FFF72DFE03002493249B802B01D902239EE0249B802B01D9022399E0249A259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB030067 +:407E00002693269B002B00D077E0039B019A02991800FFF781FB03002693269B002B6ED1039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019AF3 +:407E4000029904AB18002FF0FFFD002327930EE004AA279BD3181B7836225340D9B204AA279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249A17 +:407E8000D31A1A0036212FF071FE0023279310E004AA279BD3181B786A225340D8B2039AE021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A009B +:407EC000019BD018019B249AD31A1A005C212FF04DFE039B009A11001800FFF7A5FA03002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04689 +:407F000000E0C046019A04AB11001800FDF7F4FF269B180029B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C00000147 +:407F40000D0000011000000111000001120000011300000110B58EB00390019200930A236B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F235D +:407F80006B443F210A401A70019BB44A13400A930A9A039B11001800FFF76AFD03000D930D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A9A2 +:407FC0000A236B4418882300FEF72AFE03000D930D9B002B00D02FE1059B1800FEF736FF030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089BB2 +:40800000002B02D102230D9317E1089B5B69DAB2039B5A71059A089B09990398FFF7F4FD03000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D07D +:40804000DBE0019BFF2213408022520413430693069B002B02D102230D93EEE0069BFF2213408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A9342CD +:4080800000D194E0069BFF221340802252041343774A934200D188E0069BFF221340802252041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E015 +:4080C000069BFF2213408022520413436B4A934200D164E0069BFF221340802252041343674A934259D0069BFF221340802252041343644A93424ED0069BFF2213408022B1 +:4081000052041343604A934243D0069BFF2213408022520413435D4A934238D0069BFF221340802252041343594A93422DD0069BFF221340802252041343564A934222D078 +:40814000069BFF221340802252041343524A934217D0069BFF2213408022520413434F4A93420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302329 +:4081800018E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0AF +:4081C000039B5B79802B02D902230D9335E0059B1A68A223DB059A4202D008230D932CE0039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F238A +:408200006B441B78002B18D02F236B441B78032B02D802230D9310E0039B5B792F226A4412789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0B6 +:40824000039B1800FFF790FC04E0039B1A7901210A431A710D9B18000EB010BDFFC0FFFF0200C0020000C07F0100000102000001030000010400000105000001080000018F +:40828000090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123B5 +:4082C000FFF748FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A236B44198803980023FFF734FE0300180005B000BD00B587B00390029101920723AF +:408300000593039B1B7901221340DBB2002B3CD0039B1B7902221340DBB2002B06D0039B1B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD132 +:40834000039B0833019A029918000BF01FFD03000493049B1800FDF71BFE0300059317E0039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300FC +:40838000059305E00723059302E0C04600E0C046059B002B03D0039B1800FFF7E5FB059B180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B681693D0 +:4083C00000230493169B1800FFF72AFB03001593039804AB05A94022FFF7E2F803001793179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D1DB +:408400000398039BE033159A1900FFF785F803001793179B002B1ED1039B049A05A91800FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B08 +:40844000002B0CD1019A05A9029B18002FF0FCFA06E0C04604E0C04602E0C04600E0C046049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039BF8 +:408480001B7901221340DBB2002B01D1072350E0039B1B7902221340DBB2002B08D0039B1B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0F9 +:4084C000039B1B681C4A93421ED1039B083305AA110018000BF008FD03000993099B002B07D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800E4 +:40850000FDF746FD030014E0039B1B680B4A1A40A0239B049A420BD1039B08331800039B5B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F19 +:4085400000B587B00390029101920093009B019A1A60019B002B05D0019A029B212118002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800F0 +:40858000FFF778FF03000593059B002B15D1039B1800FFF7E9FA03000593059B002B05D1039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF798 +:4085C000D3FA059B180007B000BD00B597B0039002910192039B1B7910221340DBB2002B02D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B402270 +:408600001800FFF737FF03001593019A05A9029B1800FDF784FC031E01D010231593159B002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB4021180022 +:40864000FDF75AFC159B180017B000BD00B587B0039002910192039BFF2293432D4A934211D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A13405E +:40868000284A93420CD1039BFF22134006D0039BFF22134080225204134302E0002300E000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A7089 +:4086C000039BFF229343144A934213D1039B124A93420FD0049B002B01D1022316E0049B180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D144 +:40870000049B002B01D1022300E00023180007B000BDC046000003100000021000FFFEFF000004100000061010B58CB0079006910592049327226A440499069B1800FFF7F8 +:4087400085FF03000A930A9B002B01D00A9B5AE0079B180016F0CFFF02000F9B9A4201D9042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B449C +:408780001B78234C234907980E9A0392059A0292049A019200930123220018F0A9FC03000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F09F +:4087C0008BFF134A134907980E9B0393059B0293049B019300230093012318F0ABF903000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B180003 +:40880000FDF7C6FB030018000CB010BD0000021000610008594601100000031010B58CB0079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D0B6 +:408840000A9B56E0079B180016F055FF02000F9B9A4201D904234CE0069BFF229343264A934219D1079B00220021180016F034FF27236B441B78214C214907980E9A039218 +:40888000059A0292049A019200930023220018F037FF03000B9321E0069BFF229343194A934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393B7 +:4088C000059B0293049B019300230093002318F05BFE03000B9301E008230AE00B9B0A4A934201D1102304E00B9B1800FDF750FB030018000CB010BD00000210006100086B +:40890000594601100000031000BFFFFF10B594B00790069105920493079B9B6D0733DB0812930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B1393CA +:408940007FE0069A80235B0213404BD0069BFF229343484A934211D0069BFF229343464A93420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF2295 +:40898000134006D0069BFF22134080225204134302E0002300E000231193119B1800FEF7E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0C +:4089C0000CA93F236B441B780293049B0193059B009323000CF0B2F903001393139B002B16D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B0093FE +:408A000023000CF00BF903001393139B002B15D1129A16990CAB180005F032FF03001393139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0B4 +:408A4000C0460CAB180005F0FFF909AB180005F0FBF9139B002B03D1129B5A00189B1A60139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFFDA +:408A80000000041000000610006100085946011010B58EB00590049103920293059B9B6D0733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D07C +:408AC000102337E00C9A029909AB180005F076FE03000D930D9B002B1CD1029A0C9BD1180C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A0499B6 +:408B000006AB019309AB009323000CF023FA03000D9302E0C04600E0C04609AB180005F093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB0E7 +:408B40000691059204931E236B44021C1A800E9B0D9A1A60069C8023DA0008A91E236B4418882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB0529 +:408B80009A4202D0082309933AE0089B1B682B4A934210D1089B1869049C059A06990E9B02930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A5B +:408BC000934219D1069B204A1340204A934210D1089B1869049C059A06990E9B02930D9B01930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C04605 +:408C0000099B002B0CD10E9B1B680C9AD0180E9B1B680D9AD31A1A0021212EF0A7FF08E00D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC0460000017042 +:408C40000000FFEF0000036000FFFEFF0000061010B588B004910392029316236B44021C1A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D07A +:408C8000079B30E0069B1B68184A1340184A93420DD1069B1869029C039A04990B9B01930A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4AFF +:408CC00013400F4A93420BD1069B18690A9C029A03990B9B00932300FFF7DAFE030002E0082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFFA1 +:408D00000000061010B586B001900091019BFF229343124A934206D1019BFF22134080225204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F070 +:408D400040FB030023700F236B441A78009B0121180016F0C1FCC04606B010BD0000031210B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A88 +:408D8000934204D0119B002B01D008237DE0089C80235A000AA926236B4418882300FDF73FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A425E +:408DC0000AD00A9B1A68E023DB051A40E023DB059A4201D0082358E00A9B1B682D4A13402D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E026 +:408E0000089B264A93420ED1254A26490B98129B0293079B0193069B0093002317F064FA03000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A2E +:408E400018490B98129B0493079B0393069B0293119B0193109B0093002317F0BFF803000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800A9 +:408E8000FDF786F8030000E0022318000EB010BD00000312FFFFFFEF0000016000000212006100085946011010B58EB008910792069326236B44021C1A80149B00221A603D +:408EC000089BFF2293433C4A934204D0119B002B01D008236CE0089C80239A000AA926236B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB057D +:408F00001A40E023DB059A4201D0082350E00A9B1B682A4A93424AD10A9B1B690B930B9B180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B981A +:408F4000139B0393129B0293079B0193149B0093012317F0B5FD03000D9322E0089BFF229343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B3B +:408F80000493079B0393149B0293119B0193109B0093012317F0DEF903000D9301E0082306E00D9B1800FCF7F3FF030000E0022318000EB010BDC0460000031200000170AD +:408FC00000000212006100085946011000B583B001900091009AFE23DB051A408023DB049A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A790121CB +:409000008A431A71019B1A7904218A431A71019B1A7902210A431A71019B00225A71019B00229A71019B0833180009F03DFF0023180003B000BD000010B58AB00390080047 +:40904000019219000A236B44021C1A8009236B440A1C1A70784B09930023089309236B441B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FFDA +:4090800003000693069B002B01D0069BD1E0019C079A04A90A236B4418882300FDF7C0FD03000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059AA1 +:4090C00001980023FEF7C4FB03000893089B002B01D10223ADE0039B0833089A1100180009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030050 +:4091000097E0039B08331800049B1969059A09236B441B785BB209F02DFF03000993099B002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D067 +:409140003F4A934209D011E0039B0833042118000AF01CFB030009930BE0039B0833002118000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F989 +:40918000099B1800FCF704FF030052E0039B1A7901210A431A71019AFF23DB051A409023DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A2B +:4091C000934208D0049B1B68214A944663445A425341DBB206E0102304E0082302E0102300E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B685C +:40920000114A93420FD0049B1B68104A934208D0049B1B680E4A944663445A425341DBB204E0102302E0082300E01023039A5371002318000AB010BD809FFFFF0001600462 +:4092400001016004010000400200004003000040FCFFFFBF00B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B039 +:40928000039001920A236B440A1C1A80019A0A236B44198803980023FFF7CEFE0300180005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039BB7 +:4092C0001B7902221340DBB2002B02D1072305932AE0039B5B791A00019B9A4202D90423059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B50 +:409300001800FCF745FE030005930DE0039B5B791A00009B1A60009B1A680299039B180000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC0463B +:409340000061000800B587B0039002910192039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305931F +:409380000EE0039B0833019A0299180009F06AFE03000493049B1800FCF7FAFD03000593059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B0D9 +:4093C00000BD10B58AB00590049103920293059B1A68FF23DB051A409023DB049A4210D0059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B79534308930C +:4094000001E0039B08930C9A089B9A4202D20423099312E0059B08331800029C039A04990D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D096 +:40944000059B180000F082F8099B18000AB010BD00B58BB0039002910192009301230993384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B790222134096 +:40948000DBB2002B09D0039B1B7904221340DBB2002B02D10723099344E0039B1B7C5BB2012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833E0 +:4094C000009A04A918000AF08FF803000893089B002B06D0089B1800FCF75AFD0300099320E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF06D +:40950000A3FA02E0042309930CE004AB10211800FCF7F2FC039B180000F018F803000993099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B1800DD +:409540000BB000BD809FFFFF0001600400B583B00190019B1B68002B01D1002328E0019B1A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B41 +:4095800000221A60019B1A7901218A431A71019B1A7904218A431A71019B00225A71019B00229A71019B1A7902218A431A710023180003B000BD000000B585B00200009196 +:4095C0006B4606331A80009B002B01D108231BE002AA6B4606331B8811001800FDF7F8FA03000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A4A +:40960000043303CA03C30023180005B000BDC046FEE0FFFF00B585B0020000916B4606331A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393B0 +:40964000039B002B01D0039B05E0029B009A043303CB03C20023180005B000BD00B585B0020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B36 +:40968000002B01D0039B04E0029BDA68009B1A600023180005B000BD00B585B0020000916B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AAE6 +:4096C0006B4606331B8811001800FDF781FA03000393039B002B01D0039B09E0009B064A934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B069 +:409700000190019ACC235B00D3580B4A934203D00A4A934206D00BE0019B0833180008F044FA05E0019B0833180012F007FAC046C04603B000BDC0460110000602100006F4 +:4097400010B588B00390019200930A236B440A1C1A800399009C019A0A236B4418882300FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB030006932A +:40978000039B1B68196817236B44069A0098FEF75FF80200039B5A60039B5B68002B01D10223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B00554904 +:4097C000D150039ACE235B001021D154039B1B681B68514A93420DD0039B1B681B684F4A934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039BB8 +:409800000833180017236B441978039B1B681A69069B08F088F903001800FCF7B9FB03000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039BBA +:409840001B681B68344A93420DD0039B1B681B68324A934205D0039B1B681B68304A934201D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B6889 +:409880001A69069B11F010FB03001800FCF780FB0300079302E0022332E0C046009AFE23DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C90 +:4098C000934202D90823079315E0009AFE23DB051A40C023DB049A4206D1009B1B0ADBB23F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B00 +:40990000180008B010BDC046FFC0FFFF0100000602000006011000060100004002000040030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B52 +:4099400000221A600A9C80235A004F4B76A98C46634419880CA82300FFF7F2FE03007593759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A42B5 +:4099800002D90423759369E07E9A7D9BD31874933E4B76AAD218CC235B00D3583C4A934223D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305940A +:4099C0007E9B04937C9B03937B9B02937A9B0193089B00930B00012112F02EF803001800FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AA7E +:409A0000D2189E23FF33D35C1D00089C099A7D990CAB083318000595749B04937E9B03937C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E037 +:409A400002231EE0759B002B08D07F9B002B05D07F9A7E9B002118002EF088F80CAB1800FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A6038 +:409A8000759B180077B030BD56FEFFFF58FEFFFF021000060110000686B00390029101920093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042335 +:409AC00005E0029A059BD218069B1A600023180006B0704770B5F6B00891079206936D4B76AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46F6 +:409B0000634419880CA82300FFF71AFE03007593759B002B01D0759BB9E05F4B76AAD218CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C9951 +:409B40000BAB009303002000FFF7A6FF03007593759B002B00D084E04F4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAAD6 +:409B8000083210007E9A05927C9A0492039602937B9B01937A9B00932B000A00210011F081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A93421F +:409BC00040D1354B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF75BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B0B +:409C0000254A76A989189E22FF328A5C1600069D07990CAA08321000059604937E9B03937C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300B5 +:409C4000759301E0022322E0759B002B0CD07F9B002B09D07F9A7E9B002118002DF086FF02E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF3356 +:409C8000D35C1A007D9B9A1A809B1A60759B180076B070BD4EFEFFFF58FEFFFF021000060110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1B4 +:409CC000019B9B68002B54D0019B9A68019BDB6819001000FCF710F9019B9B6818002DF079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B103313 +:409D00001800FDF713FF0300039332E0019B1B68FF2293431E4A934206D0019B1B68FF2293431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8DA +:409D4000019B9B6818002DF045FB019B1B69002B0FD0019B1A69019B5B6919001000FCF7CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FEC3 +:409D8000039B180005B000BD0100003100010030000200300003003082B001900091019B5A68009B1A600023180002B07047000000B587B00390029101920093029BFF2252 +:409DC0001340802252041343B64A934200D1A0E0029BFF221340802252041343B24A934200D194E0029BFF221340802252041343AE4A934200D188E0029BFF22134080220F +:409E000052041343AA4A934200D17CE0029BFF221340802252041343A64A934200D170E0029BFF221340802252041343A24A934200D164E0029BFF221340802252041343A7 +:409E40009E4A934259D0029BFF2213408022520413439B4A93424ED0029BFF221340802252041343974A934243D0029BFF221340802252041343944A934238D0029BFF22C5 +:409E80001340802252041343904A93422DD0029BFF2213408022520413438D4A934222D0029BFF221340802252041343894A934217D0029BFF221340802252041343864A3B +:409EC00093420CD0029BFF221340802252041343824A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C234C +:409F000008E0142306E0142304E0102302E0102300E0102316226A441370B8E0039AF4235B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D91723E4 +:409F40006B44009A1A70039BA933FF330399F42252008A5C991817236B441A78019B18002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4232C +:409F80005B00D25C17236B441B78D318D9B2039AF4235B00D154009B002B00D17CE0039AEA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D2 +:409FC000D154039AF4235B000021D154039B08331800039B6933FF33190016236B441A78029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D00E +:40A00000039B08331800039BA933FF33190016236B441B781A00FDF77FFA03000493049B002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493FA +:40A04000049B002B01D0049B28E0039B08331800039BEA33FF3301221900FDF75DFA03000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F9D0 +:40A0800003000493049B002B01D0049B06E0009B002B00D042E700E0C0460023180007B000BDC0460100000102000001030000010400000105000001080000010900000165 +:40A0C0000A0000010B0000010C0000010D0000011000000111000001120000011300000100B5E1B001900091009BFF2213408022520413435C935C9BFF22134080225204CD +:40A100001343A44A934200D1A0E05C9BFF221340802252041343A04A934200D194E05C9BFF2213408022520413439C4A934200D188E05C9BFF221340802252041343984AB0 +:40A14000934200D17CE05C9BFF221340802252041343944A934200D170E05C9BFF221340802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D046 +:40A180005C9BFF221340802252041343884A93424ED05C9BFF221340802252041343854A934243D05C9BFF221340802252041343814A934238D05C9BFF22134080225204ED +:40A1C00013437E4A93422DD05C9BFF2213408022520413437A4A934222D05C9BFF221340802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BD7 +:40A20000FF221340802252041343704A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E063 +:40A24000142304E0102302E0102300E010237022FF326A441370019B51229B5CFF2B01D1072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB180032 +:40A28000FDF765FC019B51229B5C012B10D1019B9A687023FF336B441B78D3185E93019BDA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D9385 +:40A2C000019B1968019B5A685C9B02A8FDF7C4FC03005F935F9B002B41D15D9A5E9902AB1800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB18001E +:40A30000FEF756F803005F935F9B002B2BD1019B1968019B5A685C9B02A8FDF79DFC03005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002BDA +:40A3400015D1019B103319007023FF336B441A7802AB1800FEF72CF803005F9308E0C04606E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002BF1 +:40A3800004D15A9B002B01D05A9B5F935F9B180061B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D000001B7 +:40A3C0001000000111000001120000011300000100B589B00390029101920093029BFF2213408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BF0 +:40A40000FF221340802252041343794A934200D194E0069BFF221340802252041343754A934200D188E0069BFF221340802252041343714A934200D17CE0069BFF22134018 +:40A440008022520413436D4A934200D170E0069BFF221340802252041343694A934200D164E0069BFF221340802252041343654A934259D0069BFF2213408022520413436E +:40A48000614A93424ED0069BFF2213408022520413435E4A934243D0069BFF2213408022520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF228F +:40A4C0001340802252041343534A934222D0069BFF221340802252041343504A934217D0069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494AFE +:40A50000934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E099 +:40A54000102317226A44137049E0039B50229A5C1F236B441721694409788A1A1A701F236B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049BF0 +:40A5800031E01F236B441A78009B9A4203D91F236B44009A1A70039B1033039A5021525C99181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B4428 +:40A5C0001B78009AD31A0093039B50229A5C1F236B441B78D318D9B2039B50229954009B002BB2D10023180009B000BD0100000102000001030000010400000105000001A3 +:40A6000008000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B0039002910192039B5A68019B9A4205D2039B002275 +:40A640005A601223079361E0019B002B09D1039B5B68002B05D1039B1B68002B01D1122362E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68A4 +:40A68000D21A019BD31A0593039B9A68059BD118019A029B18002DF0D7F90023079335E0039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039BFF +:40A6C00008331800019B029A0699FFF771FB030007931BE0039B1B68FF229343164A934206D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF7AE +:40A7000067FE0300079301E007230DE0079B002B09D0039B1800FFF7C5FA019A029B212118002DF023FA079B180009B000BDC0460100003100010030000200300003003044 +:40A7400010B588B00291019200930E236B44021C1A8000230693019B0733DB080593029B1800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B19000120B4 +:40A780002CF0A4FA03000693069B002B01D109231CE0059A0699009B1800FFF745FF03000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E060 +:40A7C000C046069B18002CF005FE079B180008B010BD000000B587B00390029101920093039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B1A +:40A80000002B01D0059BEFE0039B0833019A02991800FCF781FE03000593059B002B01D0059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B91 +:40A8400001D0059BD0E0009BFF221340802252041343674A934200D1A0E0009BFF221340802252041343634A934200D194E0009BFF2213408022520413435F4A934200D1B3 +:40A8800088E0009BFF2213408022520413435B4A934200D17CE0009BFF221340802252041343574A934200D170E0009BFF221340802252041343534A934200D164E0009BB9 +:40A8C000FF2213408022520413434F4A934259D0009BFF2213408022520413434B4A93424ED0009BFF221340802252041343484A934243D0009BFF221340802252041343E6 +:40A90000444A934238D0009BFF221340802252041343414A93422DD0009BFF2213408022520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF22EE +:40A940001340802252041343364A93420CD0009BFF221340802252041343334A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE09C +:40A9800030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230399F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B1900FB +:40A9C00001202CF083F90200039B1A60039B1B68002B01D1092307E0039B1B680B9A0A9918002DF031F80023180007B000BDC04601000001020000010300000104000001C9 +:40AA00000500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093009BFF221340802296 +:40AA400052041343904A934200D1A0E0009BFF2213408022520413438C4A934200D194E0009BFF221340802252041343884A934200D188E0009BFF22134080225204134343 +:40AA8000844A934200D17CE0009BFF221340802252041343804A934200D170E0009BFF2213408022520413437C4A934200D164E0009BFF221340802252041343784A9342A8 +:40AAC00059D0009BFF221340802252041343754A93424ED0009BFF221340802252041343714A934243D0009BFF2213408022520413436E4A934238D0009BFF22134080227B +:40AB0000520413436A4A93422DD0009BFF221340802252041343674A934222D0009BFF221340802252041343634A934217D0009BFF221340802252041343604A93420CD090 +:40AB4000009BFF2213408022520413435C4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142379 +:40AB800006E0142304E0102302E0102300E010231F226A4413701F236B441A780B9BD2180D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D10923AC +:40ABC0005EE0039B019A5A60039B1B68019A029918002CF039FF0B9A0D9BD2180B9B9A420BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E00023CB +:40AC00000593059B002B01D0082339E0069B190001202CF05BF80200039B9A60039B9B68002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D318AF +:40AC40000D9A0C9918002CF0FFFE0B9B002B0CD0039B9A681F236B4419780D9BCB18D3180B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A54002331 +:40AC8000180009B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D00000110000001110000011200000171 +:40ACC0001300000110B5CAB00790069105920493059B802B01D9082351E0059B1B0ADAB2284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A0021F0 +:40AD000018002CF033FF059B02331E4A4AA98C46624411781B4A4AA884466244D154059B0333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A2B +:40AD4000069918002CF080FE059B02335A00049C08A907984F9B03934E9B02934D9B01934C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B180099 +:40AD80004AB010BDF8FEFFFF10B58EB00790069105920493079B049A1A60049BD44A934226D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FFDF +:40ADC0000200079B9A60079B9B68002B01D1092328E2079B9B68059A069918002CF034FE079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049B9F +:40AE0000FF2213408022520413430B930B9BFF221340802252041343B74A934200D1A0E00B9BFF221340802252041343B34A934200D194E00B9BFF2213408022520413433C +:40AE4000AF4A934200D188E00B9BFF221340802252041343AB4A934200D17CE00B9BFF221340802252041343A74A934200D170E00B9BFF221340802252041343A34A9342F3 +:40AE800000D164E00B9BFF2213408022520413439F4A934259D00B9BFF2213408022520413439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340A1 +:40AEC000802252041343954A934238D00B9BFF221340802252041343914A93422DD00B9BFF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A93421B +:40AF000017D00B9BFF221340802252041343874A93420CD00B9BFF221340802252041343834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C23BD +:40AF400010E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B08331800AF +:40AF80000B9C059A0699139B0393129B0293119B0193109B00932300FFF71CFC03000D9329E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF223D +:40AFC00013408022520413430993099BFF221340802252041343484A934200D1CAE0099BFF221340802252041343444A934200D1BEE0099BFF221340802252041343404AA4 +:40B00000934200D1B2E0099BFF2213408022520413433C4A934200D1A6E0099BFF221340802252041343384A934200D19AE0099BFF221340802252041343344A934200D12E +:40B040008EE0099BFF221340802252041343304A934200D182E0099BFF2213408022520413432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099B36 +:40B08000FF221340802252041343244A93425FD0099BFF221340802252041343204A934254D0099BFF2213408022520413431D4A934249D0099BFF22134080225204134372 +:40B0C000194A93423ED0099BFF221340802252041343164A934233D0099BFF221340802252041343124A934228D1402343E0C04601000031000100300100000102000001E8 +:40B1000003000001040000010500000108000001090000010A0000010B0000010C0000010D00000110000001110000011200000113000001000200300003003000231AE0EF +:40B14000302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0DE +:40B18000099B2B4A934201D002234BE0089A13001B029B1A0C93049BFF229343254A934213D1079B08331800099C059A0699139B0393129B0293119B0193109B009323009D +:40B1C000FFF734FC03000D9315E0079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E057 +:40B20000149A0C9B9A4203D8079B149A5A6008E0149B013303D1079B0C9A5A6001E0082300E0002318000EB010BDC046090000010A0000010002003010B58CB00990079225 +:40B24000069322236B440A1C1A80099B1B68002B01D007233FE0079AFE23DB051A40C0239B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC0300DC +:40B280000B930B9B002B01D00B9B24E00A9B1A68A423DB059A4201D008231CE00A9B19690A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF7E2 +:40B2C00063FD03000B930B9B002B03D0099B1800FEF7E8FC0B9B18000CB010BD10B5D8B005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059944 +:40B3000054AB180012F0D0FD03005793579B002B3FD154AB180011F021FC0300023B012B02D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B7870 +:40B340009A4202D01D4B579328E0569907AB0122180009F04FFA03005793579B002B1AD1039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B77 +:40B380000193104B0093230009F084FA0300579304E0C04602E0C04600E0C04654AB180011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFF94 +:40B3C000006100085946011010B59EB0099008910792069300230B93209B234A1340234A93421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907987B +:40B400000BAB0193422300932300FFF767FF03001D93C0461D9B002B02D01BE0022320E00B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293B6 +:40B44000002301930023009313002200FFF79CFC03001D930B9A0CAB11001800FAF74CFD1D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392E7 +:40B48000029312236B440A1C1A800A9AFC23DB051A4088239B059A4201D0082323E00A9C80235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E0C3 +:40B4C0000699029C039A05980A9B00932300FFF77BFF03000793079B002B03D0059B1800FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE00F +:40B50000009A0199074B180009F0A6F803000393039B1800FAF73CFD0300180005B000BD805E00080061000882B00190019B092B13D8019B9A000B4BD3181B689F46002301 +:40B540000CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C04694FE031000B587B0019000911E4B1B68002B01D0032334E0009B1F2B1F +:40B5800007D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B4211001800F7F73CF803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2311 +:40B5C00058420023F6F79AFF03000493049B1800FFF7AAFF0300059304E0049B002B01D103230593059B180007B000BD805E000810B58AB00291019200930E236B44021C77 +:40B600001A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF7D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B1033A2 +:40B640001A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049B5B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFEA5 +:40B68000099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A4264D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C449F +:40B6C00022236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B77 +:40B700009B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D1092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903002C +:40B740000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FC030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D1049972 +:40B78000019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEF00000360006100085946011000B585B00E236B4401221A801EE001AA0E236B447B +:40B7C0001B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B18211800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202B4E +:40B80000DBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFBC04605B000BDC04600610008885E0008805E000810B584B002AB1B4A1A601B4B6C +:40B840001B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039BE3 +:40B88000002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FB0300180004B010BD50534100805E0008885E000800610008B1A9011000B587B06B +:40B8C0000390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B00225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B99 +:40B900005A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A74009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB299 +:40B94000059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CDAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2D9 +:40B98000059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039918002CF051F8C04607B000BDBCFE031000B583B001900749019B082218002CF027 +:40B9C0001DF8031E01D00C2300E00023180003B000BDC046BCFE031000B589B00390029101920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B28 +:40BA0000002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079BDB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A432E +:40BA4000079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D8009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019BE8 +:40BA80001A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7B1B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079BB2 +:40BAC0009B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A43079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B05 +:40BB00001B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021C1A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F8D8 +:40BB400003000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B1800E0 +:40BB80000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019B18002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002349 +:40BBC00009930023079307AA16236B441B881100180000F03DF903000993099B002B01D0099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089968 +:40BC000016236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039B0193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B180033 +:40BC40000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046CB +:40BC8000C4FE031082B002006B4606331A806B4606331B88180002B0704700B58BB0029101920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B1100C1 +:40BCC0001800F6F7ABFC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE0029B019A09980021F6F750FC03000893089B1800FFF7A6FF03000793079B180048 +:40BD00000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059302AA059B11001800F6F778FC03000493049B072B01D1002300E00123180007B027 +:40BD400000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF030008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A01990898002306 +:40BD8000F6F7BCFB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AA089B11001800F6F739FC03000793079B1800FFF747FF03000993099B002B07D154 +:40BDC00005AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F766FC099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FFE7 +:40BE00000300059302AA059B11001800F6F706FC03000493049B072B01D1002315E0059B1800F6F743FC031E01D00C230DE002AA059B11001800F6F7F1FB03000493049B35 +:40BE4000072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B4606331B881800FFF70DFF0300079303AA079B11001800F6F7D1FB03000693069B4A +:40BE80001800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A600023180009B000BD00B585B0019000910199009AAE2358420B000021F6F768FB0300039326 +:40BEC000039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F70EFB03000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF0E9 +:40BF000035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D08022520010 +:40BF4000934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318B5 +:40BF8000059A920002998A1812781000059A9200013202998A181278120201001143059A9200023202988218127812041143059A9200033202988218127812060A431A6055 +:40BFC000059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2B00D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C32E5 +:40C000001268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12025140049A0C321268120EA548825C12045140049A0C321268FF200240A048825CF7 +:40C0400012064A401A60049B1433049A04321168049A103212684A401A60049B1833049A08321168049A143212684A401A60049B1C33049A0C321168049A183212684A4047 +:40C080001A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B1833049A1168854A0598800082585140049A14321268120AFF2002408148825C514070 +:40C0C000049A14321268120CFF2002407C48825C12025140049A14321268120E7848825C12045140049A14321268FF2002407448825C12064A401A60049B1C33049A043222 +:40C100001168049A183212684A401A60049B2033049A08321168049A1C3212684A401A60049B2433049A0C321168049A203212684A401A60049B2833049A10321168049AC9 +:40C14000243212684A401A60049B2C33049A14321168049A283212684A401A60059B01330593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A95 +:40C180000598800082585140049A1C321268120AFF2002404A48825C5140049A1C321268120CFF2002404648825C12025140049A1C321268120E4248825C12045140049AEA +:40C1C0001C321268FF2002403D48825C12064A401A60049B2433049A04321168049A203212684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A8D +:40C200000C321168049A283212684A401A60049B3033049A10321168049A2C321268FF2002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C32E5 +:40C240001268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A401A60049B3433049A14321168049A303212684A401A60049B3833049A183211689E +:40C28000049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B01330593049B20330493059B062B00D861E7C0460023180007B000BDEC20041048 +:40C2C000ECFE031000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9A5A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA9446CA +:40C3000063441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D3184C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C91126822 +:40C340001A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9AFF +:40C380001268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825C10002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825894 +:40C3C00051404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B04334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D5F +:40C400004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C046A9 +:40C4400005AB1800FFF760FD4B9B180051B000BDD4FEFFFFECFE0310EC100410EC140410EC180410EC1C041000B58FB0039002910192039B5B680C93029B1B781A00029B2C +:40C4800001331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B0A +:40C4C00006331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029BB2 +:40C500000B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B061343089362 +:40C540000C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A4018 +:40C58000099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B890034 +:40C5C000CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF21194028 +:40C60000D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AE4 +:40C64000FF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A403E +:40C68000069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B89003D +:40C6C000CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940F0 +:40C70000974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF211940914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BF1 +:40C74000FF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D9395 +:40C780000D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089BB4 +:40C7C000190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB585A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB58B0 +:40C800005A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B8900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B1F +:40C840008900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF2155 +:40C880001940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CE0 +:40C8C000FF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049BC2 +:40C900001B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A403A +:40C94000079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E0ECFF0310EC030410EC070410EC0B0410ECFE03100C9B1A1D0C921B68049AFF210B +:40C980000A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B5A +:40C9C00001330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120C2F +:40CA0000D2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B24 +:40CA40000C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BDECFE031000B58FB003900291F8 +:40CA80000192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B0433B6 +:40CAC0001B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B7880 +:40CB00001B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B785C +:40CB40001B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40E0 +:40CB8000089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A400A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B89001C +:40CBC000CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF21194013 +:40CC0000DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BD0 +:40CC4000FF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C9280 +:40CC80001A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B3D +:40CCC0001A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB585340B1 +:40CD00000A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF211940944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B890026 +:40CD4000CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0AFF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190EC7 +:40CD80007E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099BC9 +:40CDC0001B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB5895 +:40CE00005A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B0B +:40CE40008900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB58534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2144 +:40CE800019403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374B8900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0A4F +:40CEC000FF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E2749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079BA5 +:40CF00001B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B1B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A4025 +:40CF4000069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40049B1B0E0649CB5C1B065340099309E0EC100410EC140410EC180410EC1C041017 +:40CF8000EC0F04100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5CCB +:40CFC0001B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05334B +:40D000000A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B28A +:40D040001A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A7000231800B4 +:40D080000FB000BDEC0F041000B585B00390029101920093029B012B07D1009A0199039B1800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B56C +:40D0C0008BB00390029101920093019B0F22134002D022235B4269E0029B002B62D131E00C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B89 +:40D100000D9AD318099A0D998A181178099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019BF4 +:40D14000103B0193019B002BCAD12EE00023099310E0099B0D9AD318099A0C998A181178099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990D +:40D180000398FFF781FF0D99009B102218002AF05BFC0C9B10330C930D9B10330D93019B103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019BE2 +:40D1C0001B680693069B0F2B39D921235B423FE0069B002B1BD10A9B009A03980121FFF753FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B03 +:40D20000013B0793079B002BEEDC00E0C0460B9B5A1C0B921B7805930C9B5A1C0C92059A51B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029BC5 +:40D240005A1E0292002BC3D1019B069A1A600023180009B000BD84B0039002910192029A039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B6843 +:40D28000591C039A11601B781A00019B1A608CE0039B1B681B781A007F231340022B1ED002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC602391 +:40D2C0005B427EE0039B1B6801331B781A00019B1A60039B1B689A1C039B1A6065E0029A039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B68023370 +:40D300001B781A43019B1A60039B1B68DA1C039B1A604AE0029A039B1B68D31A032B02DC60235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6801 +:40D3400003331B781A43019B1A60039B1B681A1D039B1A6029E0029A039B1B68D31A042B02DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B0A +:40D380001B6803331B781B021A43039B1B6804331B781A43019B1A60039B1B685A1D039B1A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E032 +:40D3C0000023180004B0704700B585B00390029101920093029A039B1B68D31A002B02DC60235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1CCE +:40D40000039B1A60019A0299039B1800FFF723FF0300180005B000BD00B587B003900291019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B2C +:40D4400008D0049B042B05D8039B1B681B785BB2002B02DA64235B4217E0019B00221A600DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B71 +:40D480005A1E0492002BECD10023180007B000BD00B587B003900291019204AA029903980223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F06B +:40D4C0007DF903000593039B1A68049BD218039B1A60059B180007B000BD00B587B0039002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019BCC +:40D500001B68591E019A1160012B07D9039B1B68591C039A11601B78002B02D068235B4200E00023180007B000BD00B587B0039002910192009304AA029903983023FFF789 +:40D5400043FF03000593059B002B01D0059B65E0029A039B1B68D31A002B02DC60235B425CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D0299039812 +:40D580000623FFF721FF03000593059B002B01D0059B43E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F90023C7 +:40D5C0002CE0039B1B681B781A00009B1A60039B1B685A1C039B1A60009B1A1D0299039B1800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A689F +:40D60000009B5B68D218039B1A60039B1A68029B9A4202D066235B4200E00023180007B000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC7C +:40D640006C235B42D3E0039B1B685A1E039B1A60039B1B68019AD2B21A700123C7E0019BFF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039BFD +:40D680001A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6881221A700223A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B5D +:40D6C0001B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B9D +:40D700003D4A934234D8039B1B681A00029BD31A032B02DC6C235B4269E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120A37 +:40D74000D2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B +:40D780005B4234E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120C1B +:40D7C000D2B21A70039B1B685A1E039B1A60039B1B68019A120ED2B21A70039B1B685A1E039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039011 +:40D8000002916B4607331A70039B1B681A00029BD31A002B02DC6C235B420BE0039B1B685A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039006 +:40D8400002910192009300230593039B1A68029B9A4208D3039B1B681A00029BD31A1A00009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B4A +:40D880001B68059A019918002AF0DEF8059B180007B000BD00B587B003900291019200230493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029B55 +:40D8C000D31A1A00049B9A4202D26C235B4259E0039B1A68049B5B42D218039B1A60039B1968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B95 +:40D900001B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B4232E0039B1B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF7D1 +:40D9400071FE03000593059B002B01DA059B19E0059B049AD31804930299039B02221800FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E048 +:40D98000C046059B180007B000BD00B585B001900091002303930099019B00221800FFF741FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800D0 +:40D9C000FFF71CFF03000293029B002B01DA029B04E0029B039AD3180393039B180005B000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF030002 +:40DA00000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF702FE03000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF75B +:40DA4000DDFE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD00B587B0039002910192009300230593089B002B11D1029A039B11001800FFF720 +:40DA800084FF03000493049B002B01DA049B3CE0049B059AD318059303E0059A089BD3180593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059A63 +:40DAC000D3180593059A0299039B1800FFF7AAFD03000493049B002B01DA049B15E0049B059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0A4 +:40DB0000049B059AD3180593059B180007B000BD00B587B003900291019200230593039B1B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039BCD +:40DB40001A60039B1B68019AD2B21A70019B002B1BDD039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B68ED +:40DB800000221A70059B01330593059A0299039B1800FFF747FD03000493049B002B01DA049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002BA0 +:40DBC00001DA049B04E0049B059AD3180593059B180007B000BD000000B58BB003900291019200930023079300230893089B09936FE00023069305E0099B01330993069BDF +:40DC000001330693099A0C9B9A4205D2009A099BD3181B78202BEFD0099A0C9B9A425DD00C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B78FE +:40DC40000A2B40D0009A099BD3181B780A2B3CD0069B002B02D02C235B42D0E0009A099BD3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3185B +:40DC80001B785BB2002B08DB009A099BD3181B781A005C4B9B5C7F2B02D12C235B42AEE0009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089BE9 +:40DCC0000133089302E0C04600E0C046099B01330993099A0C9B9A428BD300E0C046089B002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07225E +:40DD00001A4013005B009B185B000733DB08CB180893089A079BD31A0893039B002B03D0029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893F8 +:40DD4000039B059351E0009B1B780D2B46D0009B1B780A2B42D0009B1B78202B3ED0009B1B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B7866 +:40DD80001900204B5B5C19003F230B4013430693089B01330893089B042B20D100230893079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C05920A +:40DDC000069A120AD2B21A70079B022B07D9059B5A1C0592069AD2B21A7000E0C046099B013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A6000231800AC +:40DE00000BB000BD1421041000B583B001900091009B9A00019B1100180010F097FDC04603B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6047 +:40DE400000E0C04602B0704700B583B00190019B002B1AD0019B9B68002B0CD0019B9A68019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00222A +:40DE80005A60019B00229A6000E0C04603B000BD00B585B001900091009B1E4A934202D910235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039BF7 +:40DEC000002B02D110235B4220E0019B9B68002B15D0019B9968019B5B689A00039B180029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B1B +:40DF0000009A5A60019B039A9A600023180005B000BDC0461027000000B585B001900091019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013BE7 +:40DF400003930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FEE2 +:40DF800003000293029B002B02D110235B421FE0019B9B68002B14D0019B9968039B9A00029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F0AE +:40DFC00009FA019B039A5A60019B029A9A600023180005B000BD00B585B00190009100230393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF0023C2 +:40E0000044E0009B5B68013B02930AE0009B9A68029B9B00D3181B68002B06D1029B013B0293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029BEC +:40E040009A420BD2029A019B11001800FFF720FF03000393039B002B0ED016E0019B9A68029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968F7 +:40E08000029B9B001A0029F0DFFC039B180005B000BD00B587B0039002916B4607331A70002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A705A +:40E0C000029B5A68039B11001800FFF7E1FE03000493049B002B54D1039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0D3 +:40E10000039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A5143029A9068059A92008218126868460730007842438A181A60059B013305937B +:40E14000029B5A68059B9A42DAD814E0039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D885 +:40E1800000E0C046049B180007B000BD00B589B0039002916B4607331A70039A029B9A4201D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D20978 +:40E1C0001A70029B5A68039B11001800FFF760FE03000793079B002B77D1039B5A68029B11001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A46073290 +:40E20000127801218A1A5A43029B1B686946073109784B43D218039B1A60029B1B686A460732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE05E +:40E24000039B9A68069B9B00D3181B680493039B9A68069B9B00D318039A9168069A92008A1812686946073109780120411A5143029A9068069A92008218126868460730DB +:40E28000007842438A181A60029B9A68069B9B00D318029A9168069A92008A1812686946073109780120411A51436A4607321278049842438A181A60069B01330693039B68 +:40E2C0005A68069B9A42BBD802E0C04600E0C046079B180009B000BD00B585B001900091019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00AA +:40E30000002129F033FC019B9B68009AD11752184A401A60009B002B02DA01235A4200E00122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009BB3 +:40E340009A4201D800230EE0019B9A68009B5B099B00D3181A68009B1F210B40DA4013001A0001231340180002B0704700B589B0039002916B4607331A7000230793029BEA +:40E380005B090693029B1F22134005936B4607331B78002B07D06B4607331B78012B02D004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0E7 +:40E3C000069B5A1C039B11001800FFF761FD03000793079B002B25D1039B9A68069B9B00D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68E8 +:40E40000069B9B00D318039A9168069A92008A1811686A4607321078059A904002000A431A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049322 +:40E4400013E0019B9A68059B9B00D3181A68049BDA4013000122134001D0039B11E0049B01330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD84A +:40E480000023180006B0704784B0019080231B0602930023039309E0019B029A134009D1029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B523 +:40E4C00085B00190019B5B68002B01D1002325E0019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B53 +:40E500009B00D3181B681800FFF7BEFF020020239B1A0293039B5A01029BD318180005B000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039015 +:40E5400002916B4607331A70039BFF221A606B4607331B782F2B0BD96B4607331B78392B06D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B7878 +:40E58000462B06D86B4607331B78373B1A00039B1A606B4607331B78602B0BD96B4607331B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D3062337 +:40E5C0005B4200E00023180004B0704710B58EB0039002910192029B012B02DD029B102B02DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B64 +:40E600006BD10A9B6C4A934202D904235B42CFE00A9B9B005B090A9A92001F210A40511E8A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E05A +:40E64000039B00211800FFF747FE03000D930D9B002B00D09CE00A9B0C9300230B9338E00C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9BE8 +:40E68000013B019AD3181A78029908AB1800FFF755FF03000D930D9B002B00D07AE0039B99680B9BDA089300CB180399896892008A18116808980B9A92001C242240904096 +:40E6C00002000A431A600C9B013B0C930B9B01330B930C9B002BC3D165E0039B00211800FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3188B +:40E700001B782D2B04D1039B012252421A6035E0019A0C9BD3181A78029908AB1800FFF70DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002BFA +:40E740002ED1039B1B68012B0CD1089B1A0005A9039B180000F05CFD03000D930D9B002B0CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B0133FF +:40E780000C930C9A0A9B9A42B4D30CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B008 +:40E7C000039002910192019B9B08019A03210A40511E8A41D2B29B180493039B5A68049B9A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB21 +:40E8000003000793079B002B33D1039B00211800FFF762FD03000793079B002B2BD1019B06930023059320E0039B9A68059B03218B43D318039A9168059A032082438A180C +:40E840001168069A013A0298821812781400059AD20018200240944022000A431A60069B013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD63 +:40E8800000B589B0039002910192039B1800FFF748FE03000593019A059B9A4202D208235B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079B20 +:40E8C000D218039B9968069B03208343CB181968069BDB0018200340D9400B00DBB21370079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BDEE +:40E9000000B589B00190009100230593009B5B090493009B1F2213400393019B1800FFF7CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40D1 +:40E94000511E8A41D2B29A18019B11001800FFF79FFA03000793079B002B6ED100230793049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A61 +:40E9800091680698049A821A2E488446624492008A1812681A60069B013B0693069A049B9A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B069381 +:40E9C000069B002BEFD1039B002B37D0049B06932DE0019B9A68069B9B00D3181A68039B2021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A18116803 +:40EA0000039A91400A001A60019B9A68069B9B00D318019A9168069A92008A181168059A0A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180016 +:40EA400009B000BDFFFFFF3F00B589B00190009100230693009B5B090593009B1F2213400493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B0021F6 +:40EA80001800FFF729FC030075E0059B002B2AD00023079310E0019B9A68079B9B00D318019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21AA5 +:40EAC000079B9A42E7D809E0019B9A68079B9B00D31800221A60079B01330793019B5A68079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C46634466 +:40EB00009B00D3181A68049B2021CB1A9A4013000393019B9A68079B18498C4663449B00D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A6866 +:40EB4000079B0E498C4663449B00D318019A9168079A0A488446624492008A181168069A0A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F99 +:40EB800084B001900091019B5B6803930DE0019B9A68039B39498C4663449B00D3181B68002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A6880 +:40EBC000029B2E498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A5D +:40EC0000039B9A4232D901235B4233E0019B9A68039B1A498C4663449B00D3181A68009B9968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F49E7 +:40EC40008C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4202D201235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F00 +:40EC800084B001900091019B5B6803930DE0019B9A68039B45498C4663449B00D3181B68002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A6873 +:40ECC000029B3A498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0BF +:40ED0000029A039B9A4203D9009B1B685B424AE0019B1B68002B05DD009B1B68002B01DA012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039BA0 +:40ED40001A498C4663449B00D3181A68009B9968039B1648844663449B00CB181B689A4202D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B82 +:40ED80000A48844663449B00CB181B689A4203D2019B1B685B4206E0039B013B0393039B002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B185340A6 +:40EDC0000293009B002B02DA01235A4200E0012203AB1A6003AB01225A6003AB02AA9A6003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A8A +:40EE0000019B9A4205D1029B0593039B0293059B0193039A029B9A420BD0029A039B11001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0FB +:40EE4000019B9A68099B47498C4663449B00D3181B68002B06D1099B013B0993099B002BEED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B6898 +:40EE80000893039B9B6807930023069300230A932AE0089B1B680493079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A6065 +:40EEC000079B1A68049B9A429B415B42DBB21A00069B9B1806930A9B01330A93089B04330893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C52 +:40EF0000039B11001800FEF7C3FF03000B930B9B002B21D1039B9A680A9B9B00D3180793079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B0133A6 +:40EF40000A93079B04330793069B002BD1D104E0C04602E0C04600E0C0460B9B18000DB000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069BAF +:40EF80009A429B415B42DBB20593019B1A68069BD21A019B1A60019B1A68029B1B689A429B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B0133A2 +:40EFC0000793029B04330293019B04330193079A039B9A42D1D312E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069BBB +:40F00000002BE9D1C04608B07047000000B58BB0039002910192019A029B11001800FFF7AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05ABE3 +:40F0400011001800FEF7C7FF03000993099B002B35D105AB0193039A029B9A420AD0029A039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019BFC +:40F080005B6808930DE0019B9A68089B11498C4663449B00D3181B68002B06D1089B013B0893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C046CE +:40F0C00000E0C04605AB1800FEF7BEFE099B18000BB000BDFFFFFF3F00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF78F +:40F100003FFD031E0EDB019A0299039B1800FFF77DFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039BA5 +:40F140001A6013E0019A0299039B1800FFF752FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029BD6 +:40F180001B680493029B1A68019B1B685343002B26DD019A029B11001800FFF7F1FC031E0EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0C3 +:40F1C000029A0199039B1800FFF720FF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C046BA +:40F2000002E0C04600E0C046059B180007B000BD00B589B0039002910192019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA48 +:40F240009A6005AA0299039B1800FFF745FF0300180009B000BD00B589B0039002910192019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB012255 +:40F280005A6005AB04AA9A6005AA0299039B1800FFF770FF0300180009B000BD70B5064CA54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131DAB +:40F2C00096931368009300230193949B029300230393029A039B009801992CF09BFC03000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A19381 +:40F30000A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B26 +:40F340001360969A131D96931368069300230793949B089300230993089A099B069807992CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19A8D +:40F38000A59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959ADB +:40F3C000131D9593A19B1360969A131D969313680C9300230D93949B0E9300230F930E9A0F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B0010930023119393 +:40F40000109BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093E3 +:40F44000A09BA593959A131D9593A19B1360969A131D96931368129300231393949B149300231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00EE +:40F48000169300231793169BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A0008 +:40F4C000A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368189300231993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BED +:40F50000A193A39B1B001C9300231D931C9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B412C +:40F540005B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00E4 +:40F58000A293A394A29BA193A39B1B00229300232393229BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68DE +:40F5C000A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368249300232593949B269300232793269A279B249825992CF09D +:40F6000009FB03000C00A293A394A29BA193A39B1B00289300232993289BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B181E +:40F64000A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9BA8 +:40F680002A982B992CF0C6FA03000C00A293A394A29BA193A39B1B002E9300232F932E9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B9F +:40F6C0001A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368309300233193949B32930023F3 +:40F700003393329A339B309831992CF083FA03000C00A293A394A29BA193A39B1B00349300233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09BF9 +:40F740009B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D9693136836930023379367 +:40F78000949B389300233993389A399B369837992CF040FA03000C00A293A394A29BA193A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B4251 +:40F7C000DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368BB +:40F800003C9300233D93949B3E9300233F933E9A3F9B3C983D992CF0FDF903000C00A293A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B71 +:40F840009A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969AB9 +:40F88000131D96931368429300234393949B449300234593449A459B429843992CF0BAF903000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318CD +:40F8C000A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D959369 +:40F90000A19B1360969A131D96931368489300234993949B4A9300234B934A9A4B9B489849992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093D4 +:40F94000A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA59309 +:40F98000959A131D9593A19B1360969A131D969313684E9300234F93949B509300235193509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B0052930023D4 +:40F9C0005393529BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B1829 +:40FA0000A093A09BA593959A131D9593A19B1360969A131D96931368549300235593949B569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39BE4 +:40FA40001B00589300235993589BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB27B +:40FA80001A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313685A9300235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A3941E +:40FAC000A29BA193A39B1D0000231E002B00A093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B41F5 +:40FB00005B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360979B103B9793979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B60930023C5 +:40FB40006193609A619B5E985F992CF063F803000C009E939F949E9B9D939F9B1B00629300236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B8F +:40FB80009B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593E7 +:40FBC000949B669300236793669A679B649865992CF020F803000C009E939F949E9B9D939F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42B5 +:40FC0000DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313689A +:40FC40006A9300236B93949B6C9300236D936C9A6D9B6A986B992BF0DDFF03000C009E939F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B72 +:40FC80009A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A99 +:40FCC000131D96931368709300237193949B729300237393729A739B709871992BF09AFF03000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD318C6 +:40FD00009D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95934C +:40FD40009D9B1360969A131D96931368769300237793949B789300237993789A799B769877992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C93CD +:40FD80009D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593F1 +:40FDC000959A131D95939D9B1360969A131D969313687C9300237D93949B7E9300237F937E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B008093002325 +:40FE00008193809B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B18B0 +:40FE40009C939C9BA593959A131D95939D9B1360969A131D96931368829300238393949B849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B6B +:40FE80001B00869300238793869B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB2D1 +:40FEC0001A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368889300238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949D +:40FF00009E9B9D939F9B1B008C9300238D938C9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B9342A1 +:40FF40009B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360979B083B9793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B90930023F3 +:40FF80009193909A919B8E988F992BF043FE03000C009A939B949A9B99939B9B1B00929300239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B0E +:40FFC0009B189893959B1B68999AD3189993959B1B68999A9A429B415B42DBB21A00989B9B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49BD2 +:020000041001E9 +:400000000133A493959B1A68A59BD218959B1A60959B1A68A59B9A429B415B42DBB2A593959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB00390029166 +:40004000019208AB1800FDF7EDFE05AB1800FDF7E9FE039A029B9A420DD1029A08AB11001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A0F +:4000800005AB11001800FDF7A6FF03000D930D9B002B00D06EE005AB0193029B5B680C930DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B93 +:4000C000002BEED100E0C046019B5B680B930DE0019B9A680B9B30498C4663449B00D3181B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11002A +:400100001800FDF7C5FE03000D930D9B002B33D1039B00211800FEF7DFF803000D930D9B002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9BE7 +:400140001548844663449B00D3181B680C982200FFF7A4F80B9B013B0B930B9B002BE2D1029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB05 +:400180001800FDF761FE08AB1800FDF75DFE0D9B18000EB010BDC046FFFFFF3F00B589B003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299D7 +:4001C000039B1800FFF738FF0300180009B000BDF0B58BB00590049103920293039B002B03D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059BEA +:400200001E0000231F003300079300230693049B1C0000231D00069B23430693079B2B430793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B63 +:40024000002B04D001235B42002408930994029B002B06D0069A089B03994B43D21A029B1A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF70F +:4002800097FD031E02D10C235B42D1E210AB1800FDF7C8FD0DAB1800FDF7C4FD0AAB1800FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC11 +:4002C000031E1EDA039B002B0AD0039B00211800FEF702F803001793179B002B00D05DE2029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E20023CC +:4003000096E2019A10AB11001800FDF764FE03001793179B002B00D044E2009A0DAB11001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60F1 +:40034000019B5B689A1C0AAB11001800FDF7A0FD03001793179B002B00D027E20AAB00211800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD030017938D +:40038000179B002B00D015E204AB03211800FDF77FFD03001793179B002B00D00CE20DAB1800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB92 +:4003C00011001800FEF79CFA03001793179B002B00D0F3E1159A0DAB11001800FEF790FA03001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B139339 +:40040000149A139BD31A5A010DAB11001800FEF777FA03001793179B002B00D0D0E115E00AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE55 +:4004400003001793179B002B00D0BBE10DAA10AB11001800FEF714FC031EE1DA149A139BD31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE144 +:4004800010AB9A68169B9B00D3181A680DAB9968139B9B00CB181B689A420DD30AAB9A681699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139B45 +:4004C000CB1ACD498C4663449B00D41810AB9A68169B9B00D318186810AB9A68169BC6498C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE0300236019 +:400500000AAB9A681699139BCB1ABB498C4663449B00D3181A6801321A600AAB9A681699139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE0300B7 +:400540001793179B002B00D040E107AB9B68139A002A09D00DAA9168139AA7488446624492008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A6047 +:400580000AAB9A681699139BCB1A9B498C4663449B00D3181A6807A907AB1800FFF7FEFD03001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D061 +:4005C00008E104AB9B68169A012A09D910AA9168169A8A488446624492008A18126800E000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A1869 +:40060000126800E000221A6004AB9B68083310AA9168169A92008A1812681A6004AA07AB11001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B0088 +:40064000D3181A680DA907AB1800FFF7A7FD03001793179B002B00D0BEE0169A139BD31A674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA7A +:4006800010A910AB1800FEF775FD03001793179B002B00D0A4E010AB00211800FEF788FB031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139B8C +:4006C000D31A4F4A944663445A0107AB11001800FEF716F903001793179B002B00D083E007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139B11 +:40070000CB1A3D498C4663449B00D3181A68013A1A60169B013B1693169A139B9A4200D9AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B26 +:400740001A68009B1B685A43039B1A60029B002B59D0159A10AB11001800FEF775F903001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC0300179300 +:40078000179B002B3ED1029B00211800FEF710FB031E38D1029B01221A6034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E06F +:4007C000C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FE4 +:40080000FFFFFF07C04610AB1800FDF71DFB0DAB1800FDF719FB0AAB1800FDF715FB07AB1800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B00390029122 +:400840000192019B00211800FEF7B2FA031E02DA0A235B4238E0019B029A03990020FFF705FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B14 +:40088000002B1DD1039B00211800FEF791FA031EEDDB0AE0019A0399039B1800FEF76AFC03000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E082 +:4008C000C04600E0C046059B180007B000BD86B001900091009B9B681B680393039B0593039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A27 +:40090000059B53430593049B5B080493049B072BF1D8059B5A42019B1A60C04606B0704700B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B32 +:4009400002D104235B426EE00C9B98680C9B5B689B001A00002127F009F90C9B9B680893019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099BE8 +:400980009B00D3181B680593089B1A68029B9B681B6805994B43D318009A53430493029B9968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D089236 +:4009C000059A1A60079B01339B00089AD31800221A60099B01330993099A079B9A42CCD3039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031EDB +:400A000008DB019B9968039B9A68079B1800FEF7ABFA07E0039B99680C9B9A68079B1800FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0044 +:400A400006AB1A6006AB1B681A0006AB5A6006AB09AA9A60039C049A06A90598029B00932300FFF75DFF030018000AB010BD000010B5B24CA5440590049103920293012340 +:400A8000AF4A6A441360029B00211800FEF790F9031E05DD029B9B681B680122134003D104235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029A6F +:400AC000A04B6B4411001800FFF701FFC623DB006B441800FDF7A6F99B4B6B441800FDF7A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC19 +:400B00000300CC22D2006A441360CC23DB006B441B688E4A934219D8CC23DB006B441B68EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0BD +:400B4000012304E0042302E0052300E00623804A6A4413607E4B6B441B68062B03D906237B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B110016 +:400B80001800FDF785F90300724A6A441360714B6B441B68002B01D000F0E1FBC923DB006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002BC0 +:400BC00001D000F0CEFBC923DB006B441B685A005D4B6B4411001800FDF75AF903005D4A6A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A5A +:400C00006A441360544B6B441B68002B19D0049A06AB11001800FDF7DEF903004D4A6A4413604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB97 +:400C40000493CF23DB006B441B68002B06D0CF23DB006B441B689B68002B4AD1C623DB006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B74 +:400C80005B689A01C623DB006B4411001800FDF737FE03002F4A6A4413602E4B6B441B68002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A4430 +:400CC0001360244B6B441B68002B00D053E3CF23DB006B441B68002B16D0C621C9006944CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B44E3 +:400D00000C22180026F0A0FE029A049B11001800FDF7B6FF031E23DB029A049909AB0C331800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF04 +:400D40004C0600003C060000240600009F020000640600006C06000044060000A8F9FFFF049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0C5 +:400D8000FBE2E24B6B441C68029AC621C900694409AB0C331800DE4B6B4400932300FFF7BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11003F +:400DC0001800FDF708F90300CF4A6A441360CE4B6B441B68002B00D0D3E2CC4B6B441A68CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E241 +:400E0000C44B6B441B68012B00D800E1C14B6B441B68013BC04A6A4412689A401300C922D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013339 +:400E400019001000FDF724F80300AF4A6A441360AD4B6B441B68002B00D096E209A9C923DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A93 +:400E80006A441360A04B6B441B68002B00D07EE20023CC22D2006A44136030E009A9C923DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B1874 +:400EC0009B00C918914B6B441C68029A904B6B4400932300FFF724FD03008B4A6A441360894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B65 +:400F00006B441B685A1ECC23DB006B441B689A42C4D8C923DB006B441B680133CC22D2006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013360 +:400F400019001000FCF7A4FF03006F4A6A4413606D4B6B441B68002B00D01CE209A9CC23DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B0015 +:400F80009B189B00CB181900FDF725F803005E4A6A4413605C4B6B441B68002B00D0FCE109A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C33AE +:400FC0001900534B6B4400932300FFF7A9FC03004D4A6A4413604C4B6B441B68002B00D0DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B6865 +:401000009A40CC23DB006B441B689A428BD8039B5B68424A6A4413600023CB22D2006A44136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23C9 +:40104000DB006B441B68002B11D1344B6B441B68002B00D1F5E0314B6B441B68013B2F4A6A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A44136016 +:40108000039B9A68254B6B441B689B00D3181A68CB23DB006B441B68DA40130001221340C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D17B +:4010C000BBE0C823DB006B441B68002B2AD1CA23DB006B441B68012B24D10C4B6B441C68029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B6806 +:40110000002B00D19BE055E16C0600003C06000024060000640600004C0600005C060000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B442D +:401140001A68C94B6B441B68D31AC822D2006A4412689A401300CD22D2006A4412681343CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2007A +:401180006A4413601EE0BA4B6B441C68029A05990598B84B6B4400932300FFF7C1FB0300B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D200D1 +:4011C0006A441360CC23DB006B441A68A74B6B441B689A42D7D309A9CD23DB006B441A6813005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FBB6 +:4012000003009D4A6A4413609B4B6B441B68002B00D0C8E0CA23DB006B441B68013BCA22D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046D8 +:40124000FDE6C0460023CC22D2006A4413604DE0874B6B441C68029A05990598854B6B4400932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB00CB +:401280006B441B685B00CD22D2006A4413607B4B6B441A68754B6B441B689A401300CD22D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B44009397 +:4012C0002300FFF72DFB03006B4A6A4413606A4B6B441B68002B00D069E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4BC6 +:401300006B441A685B4B6B4402990598FFF78EFB0300594A6A441360574B6B441B68002B47D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D042 +:40134000059B012252421A60059A0299059B1800FDF7C2FE0300484A6A4413602AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C046F8 +:4013800018E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A44D6 +:4013C00012689A401300CC22D2006A44136015E009A9CC23DB006B441A6813005B009B189B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B4403 +:401400001A681A4B6B441B689A40CC23DB006B441B689A42DCD809AB0C331800FCF714FD144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF2343 +:40144000DB006B441B689B68002B05D1C623DB006B441800FCF7F8FC074B6B441B681800CE23DB009D4410BD54060000640600003C060000240600006C0600004C060000DF +:401480004406000000B591B00390029101920AAB1800FCF7C7FC07AB1800FCF7C3FC04AB1800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A58 +:4014C00004AB11001800FCF786FD03000F930F9B002B00D09FE007AB1800FCF7A8FF03000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001C +:401500001800FDF7A1FA03000F930F9B002B00D083E00E9A04AB11001800FDF795FA03000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF71B +:4015400076FF020007AB11001800FDF77DFA03000F930F9B002B64D104AB1800FCF767FF020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF78A +:401580007FFB031E15DB04AA07A907AB1800FDF73DFD03000F930F9B002B46D107AB01211800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD0300CD +:4015C0000F930F9B002B32D104AB01211800FDF73BFA03000F930F9B002B2AD107AB00211800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD13B +:4016000004AA039B11001800FCF7E5FC03000F9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FCA6 +:4016400007AB1800FCF700FC04AB1800FCF7FCFB0F9B180011B000BD80B51B4FBD440390029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B9847DF +:401680000300FFAA18321360FFAB18331B68002B0AD1029A05A9039B1800FDF78FF80300FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B68180053 +:4016C0008323DB009D4480BDE8FBFFFF00B5A1B0039002910192019B01211800FDF768FB031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF743 +:4017000091FB10AB1800FCF78DFB1CAB1800FCF789FB0DAB1800FCF785FB0AAB1800FCF781FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE0300E8 +:401740001F931F9B002B00D086E11CAB01211800FDF72EFB031E03D00E235B421F93AEE1019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800AB +:40178000FCF729FC03001F931F9B002B00D067E1019A0DAB11001800FCF71DFC03001F931F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E118 +:4017C00013AB01211800FCF787FD03001F931F9B002B00D04AE110AB00211800FCF77CFD03001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D043 +:4018000038E104AB01211800FCF766FD03001F931F9B002B00D02FE144E016AB01211800FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B68FA +:401840001B680122134017D00DAA13A913AB1800FDF742FC03001F931F9B002B00D00FE119AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7B4 +:40188000E3F803001F931F9B002B00D0FCE010AB01211800FDF7D8F803001F931F9B002B00D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F9356 +:4018C0001F9B002B00D0E3E007AB9B681B680122134005D104AB9B681B680122134017D00DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800F6 +:40190000FDF738FC03001F931F9B002B00D0C3E007AB01211800FDF797F803001F931F9B002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B68EB +:401940001B6801221340B4D00AAA16AB11001800FDF796F9031E23DB0AAA16A916AB1800FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F93A0 +:401980001F9B002B00D08FE004AA10A910AB1800FDF7F0FB03001F931F9B002B24D08EE016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800E1 +:4019C000FDF7D8FB03001F931F9B002B00D06FE010AA04A904AB1800FDF7CCFB03001F931F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907ABF5 +:401A00001800FDF769FB03001F931F9B002B53D107AB00211800FDF7CBF9031EEDDB0AE0019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF743 +:401A40001FF9031EECDA07AA039B11001800FCF7C2FA03001F9332E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0F7 +:401A8000C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB10 +:401AC0001800FCF7C1F916AB1800FCF7BDF913AB1800FCF7B9F910AB1800FCF7B5F91CAB1800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB5F +:401B00001800FCF7A1F91F9B180021B000BD00B583B00190019B44220021180026F026F8C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B7807 +:401B40000122180001F07AF903000593059B002B02D10D235B4225E0059B5B69102B02D00D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049BE0 +:401B8000002B01D0049B0DE00398009A0199012301F0F0F903000493049B002B01D0049B00E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0BD +:401BC000C5FEC04603B000BD00B59DB00590049103920293249B022B06D0249B102B03D8249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E25A +:401C0000209AFF231B029A4202D90D235B42ABE21E9BDAB25F236B440F218A1A1A700FAB00221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A70B7 +:401C40000FAB1A78249B023B5B08DBB2DB00DBB21343DAB20FAB1A700FAB1B785AB25F236B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F00A +:401C8000E3FE6F236B4400221A70039B1A9312E06F236B441B780F22D31A1A9AD1B20FAAD1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B441278C0 +:401CC0001B789A42E4D31A9B002B02D00D235B424AE20BAB10220021180025F047FF6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8FD +:401D0000825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169BC0 +:401D400012E2209B002B00D1A6E0209B1A931F9B19930FAB10220021180025F007FF209B1B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A6B +:401D80001999180025F060FE1A9A159BD31A1A93199A159BD31819936F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B269 +:401DC0000BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B77 +:401E000000D9102315930FAB10220021180025F0ADFE159A19990FAB180025F015FE6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA814 +:401E4000825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B1F +:401E800072E11A9A159BD31A1A93199A159BD31819931A9B002BB1D15F236B441B78013BDAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B44C9 +:401EC0001B781A00002125F051FE07AB0122DA73039B1A93219B1993229B1893EBE01A9B102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FABA2 +:401F0000180025F0A1FD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A70A6 +:401F40006F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0E0F803001693169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F8030016934A +:401F8000169B002B01D0169BEEE06F236B4400221A7019E06F236B441B78189AD3186F226A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A782F +:401FC0006F236B4401321A706F236B441A78149B9A42DFD3049B012B3DD10FAB10220021180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B446D +:402000001B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB009375 +:402040001300102201F06AF803001693169B002B01D0169B88E0189A149BD3181893199A149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F2281 +:40208000D31A07AAD25C0132D1B207AAD15407AAD35C002B00D00EE06F236B441A786F236B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F23DA +:4020C0006B4400221A700EE06F236B441B780F22D31A07AA0021D1546F236B441A786F236B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB009362 +:402100001300102201F00AF803001693169B002B01D0169B28E06F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAA1B +:40214000D1546F236B441A786F236B4401321A706F236B441B780F2BE2D9249A0BA9239B180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98CA +:40218000139B0693129B0593119B0493109B03930F9B02930E9B0193089B00930B000021FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235A +:4021C0005B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A91099208930999CC +:402200000A9A0B981B9B06930DAB0593199B0493189B0393179B0293169B0193089B00930B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400225C +:402240001A7017E04F236B441B781A9AD3181A784F236B441B780DA9CB5C5340DBB21A00129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3FB +:40228000129B002B08D00A9A199B110018000CF05DFB0F235B4200E00023180015B000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998DB +:4022C000119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF78AFF030018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A1874 +:402300001168019A92000398821812688A181A60049B9B00039AD318049A920003998A181168029A92000398821812684A401A60049B9B00039AD318049A920003998A1872 +:4023400012681021CA411A60009B9B00039AD318009A920003998A181168049A92000398821812688A181A60019B9B00039AD318019A920003998A181168009A9200039827 +:40238000821812684A401A60019B9B00039AD318019A920003998A1812681421CA411A60029B9B00039AD318029A920003998A181168019A92000398821812688A181A600A +:4023C000049B9B00039AD318049A920003998A181168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD3182D +:40240000009A920003998A181168049A92000398821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD3187D +:40244000019A920003998A1812681921CA411A60C04604B0704700B585B0039003980C230093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300 +:4024800000930A2306220221FFF72DFF03980F2300930B2307220321FFF725FF03980F2300930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D2369 +:4024C0000093082307220221FFF70DFF03980E230093092304220321FFF705FFC04605B000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB180080 +:40250000FFF7A9FF139B01331393139B092BF5D902AB1A68019B1B68D21802AB1A6002AB5A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002AB09 +:40254000DA68019B0C331B68D21802ABDA6002AB1A69019B10331B68D21802AB1A6102AB5A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABC5 +:40258000DA69019B1C331B68D21802ABDA6102AB1A6A019B20331B68D21802AB1A6202AB5A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202AB3D +:4025C000DA6A019B2C331B68D21802ABDA6202AB1A6B019B30331B68D21802AB1A6302AB5A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABB5 +:40260000DA6B019B3C331B68D21802ABDA63002313932FE0139B9B001293009A129BD31802AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B261 +:402640001A70129B0233009AD31802AA139989008A58120CD2B21A70129B0333009AD31802AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB40211800E6 +:402680000CF064F9C04615B000BD00B583B00190019B002B0ED0019B402118000CF056F9019B4033402118000CF050F9019B802240219950C04603B000BD00B583B0019077 +:4026C000019B002B04D0019B842118000CF03EF9C04603B000BD000082B001900091019B002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A1E +:402700009A60019B594ADA60009B1B781A00009B01331B781B021A43009B02331B781B041A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B0228 +:402740001A43009B06331B781B041A43009B07331B781B061A43019B5A61009B08331B781A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43A4 +:40278000019B9A61009B0C331B781A00009B0D331B781B021A43009B0E331B781B041A43009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43EC +:4027C000009B12331B781B041A43009B13331B781B061A43019B1A62009B14331B781A00009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019BDC +:402800005A62009B18331B781A00009B19331B781B021A43009B1A331B781B041A43009B1B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009BA2 +:402840001E331B781B041A43009B1F331B781B061A43019BDA620023180002B07047C046657870616E642033322D62797465206B00B585B0039002910192039B002B02D0C9 +:40288000029B002B02D151235B424BE0039B019A1A63029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B78DC +:4028C0001A00029B05331B781B021A43029B06331B781B041A43029B07331B781B061A43039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A4320 +:40290000029B0B331B781B061A43039BDA63039B4033402118000CF019F8039B8022402199500023180005B000BD10B586B0039002910192009300230593039B002B02D164 +:4029400051235B423BE1029B002B27D0019B002B02D0009B002B21D151235B422FE1009A059BD3180199059A8A181178039A80201258039840248218121912784A40D2B26D +:402980001A70039B80229B585A1C039B80215A50059B01330593029B013B0293029B002B00D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039BDB +:4029C0001B6B5A1C039B1A6300230493B7E0059A049BD318009AD3180599049A8A1801998A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AA3 +:402A0000D3180599049A8A18013201998A181178049A0132039840248218121912784A40D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049AC6 +:402A40000232039840248218121912784A40D2B21A70059A049BD3180333009AD3180599049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70C7 +:402A8000059A049BD3180433009AD3180599049A8A18043201998A181178049A0432039840248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18DA +:402AC000053201998A181178049A0532039840248218121912784A40D2B21A70059A049BD3180633009AD3180599049A8A18063201998A181178049A0632039840248218EE +:402B0000121912784A40D2B21A70059A049BD3180733009AD3180599049A8A18073201998A181178049A0732039840248218121912784A40D2B21A70049B08330493049BB7 +:402B40003F2B00D843E7059B40330593029B403B0293029B3F2B00D92AE7029B002B2DD0039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A54 +:402B8000049BD318009AD3180599049A8A1801998A18117803984024049A8218121912784A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A5000231800E7 +:402BC00006B010BD10B588B00190019BD0335C681B681A000F2313400793079B002B01D1002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB190018 +:402C00000CF086F90300180008B010BD10B582B00190019B002B1ED0019B1800FFF735FD019B843318000CF057F9019BD0331A000023002413605460019BD8331A0000239E +:402C4000002413605460019BE02200219950019BE42200219954C04602B010BD10B582B00190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A00CD +:402C80000023002413605460019BD8331A000023002413605460019BE02200219950019BE42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D15C +:402CC00057235B4208E0019B009A11001800FFF703FD03000393039B180005B000BD70B586B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002BA8 +:402D000002D0009B002B02D157235B426AE0039BE0229B58012B07D0039BE0229B58022B02D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF758 +:402D400041FF03000593059B002B01D0059B49E0039BD8335C681B68029A1500002216005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF730 +:402D8000D4FD03000593059B002B01D0059B29E0039B8433029A009918000CF0B9F803000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059BA9 +:402DC000002B01D0059B0DE00398009B019A0299FFF7ABFD03000593059B002B01D0059B00E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0ED +:402E0000019B1B685B69180002B0704782B00190019B002B03D0019B1B68002B01D1002309E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B00091DE +:402E400011006B460733021C1A706B4606330A1C1A70144B03931CE0039B5B689B691B786A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A4606326A +:402E800012789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B07047C046F824041000B583B00190019B44220021180024F059FEC04603B000BD76 +:402EC00000B583B00190019B002B20D0019B1B6C002B0AD0019B1B6C242118000BF036FD019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B180089 +:402F00009047019B442118000BF020FD00E0C04603B000BD00B583B001900091009B002B02D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB69984779 +:402F40000200019BDA63019BDB6B002B01D1084B08E0019B009A1A60019B0021180000F015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A00A0 +:402F80006B4603331A70039B002B07D0039B1B68002B03D0039BDB6B002B01D1304B5CE06B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B6879 +:402FC0001B690222134008D1039B1B685B681A00019B9A4201D0224B3FE0039B019A5A60039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D012 +:40300000039B1B685B78042B04D0039B1B685B78052B0DD1039B1B689B695C69039BD86B039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B680C +:403040009B699C69039BD86B039B5B681A00029B1900A047030000E0014B180004B010BD009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0F4 +:40308000029B002B04D1019B002B01D0214B3EE0029B002B05D1019B002B02D1039B00229A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B8D +:4030C0001B68DB680593059A019B9A4201D9114B1DE0039B1B681B78482B0AD1039BDB6B029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299AF +:40310000180024F0A1FC039B059A9A630023180007B000BD009FFFFF809FFFFF70B58CB0079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D139 +:40314000C84B8BE1109B00221A60079B1800FFF74CFE03000A93079B1B685B78012B1DD1059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B52 +:4031800008215956049B069AA04703000993099B002B01D0099B61E100235FE1079B1B685B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B40 +:4031C0001B681B78492B0BD1109B059A1A60079BD86B049B069A0599FFF781FD03003DE10A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A991800EB +:4032000028F09CFB0B1E01D0964B27E1079B1B685B78022B00D0DDE000230B93079B1B7A5BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7AC2 +:403240005BB2002B0AD1079BDB68002B06D1079B5B6A0A9AD21A059B9A420BD8079B1B7A5BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433D9 +:40328000059A0699180024F0DFFB079B5A6A059BD218079B5A620023E0E0079B5B6A002B40D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F084 +:4032C000C3FB079B1B689B699C68079BD86B079B08215956079B28331E00079B14330A9D049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9B8C +:40330000D218109B1A60049A0A9BD3180493079B00225A62069A0B9BD3180693059A0B9BD31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B00B6 +:403340000B930B9B002B0AD1079B1B7A5BB2002B05D1079BDB68002B01D00A9B0B93079B14331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B0E +:403380005A62059A0B9BD31A0593059B002B1FD0079B1B689B699C68079BD86B079B08215956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0D0 +:4033C000099B4BE0109B1A68059BD218109B1A60002343E0079B1B685B78052B22D1079B1B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A029285 +:40340000069A0192009333002A00A04703000993099B002B01D0099B20E0109B059A1A6000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A05993D +:40344000A04703000993099B002B01D0099B05E0109B059A1A60002300E0054B18000CB070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019B69 +:40348000D31A049317236B4400221A7010E017236B441A78019BD318039AD318049AD2B21A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B03F +:4034C0007047000088B00390029101921B236B4400221A70039B002B02D0019B002B01D1344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B91 +:403500001A601A236B441B78029A9A429B415B42DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB26B +:403540001B236B441A701A236B441B78029AD31A0593002307931EE0039A079BD3181A781A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B23D2 +:403580006B441B785BB213435AB21B236B441A70079B01330793079A029B9A42DCD31B236B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039056 +:4035C00002910192039B002B02D0019B002B01D1044B03E0019B029A1A600023180004B07047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D067 +:40360000039B002B01D15E4BB7E0039B00221A60059B1B685B78032B18D0059B1B685B78042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B33 +:4036400004D0059B1B685B78072B01D1002394E0059B1B681B78482B04D0059B1B681B78492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE00023F9 +:403680007BE0059B1B685B78022B00D074E000230793059B1B7A5BB2012B1CD1059BDB68002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B58 +:4036C0001800FFF7A3FB03001900059B5B6A1A002800A04714E0059B1800FFF786FB0200059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE024 +:40370000059B1B689B699C68059BDD6B059B08269E57059B1800FFF768FB059B28331900059B1433049A019200930B00020031002800A04703000793079B002B01D0079BB9 +:403740001BE0059B1B7A5BB2002B0CD1059B1C69059B1800FFF749FB0100039A049B1800A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD76 +:40378000009FFFFF809DFFFF809FFFFF82B001900A006B4603331A70019B002B04D0019B1B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4AC0 +:4037C000DA60019B094A1A6108E0019B0022DA60019B074A1A6101E0064B00E00023180002B07047009FFFFF75340110C5340110BD350110809FFFFF00B583B0C8235B0078 +:403800001900012023F062FA03000193019B002B03D0019B180007F0F8F9019B180003B000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B58D +:4038400083B04421012023F041FA03000193019B002B03D0019B1800FEF759F9019B180003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD53 +:4038800000B585B00390019200930B236B440A1C1A700B236B4400215956009B019A0398F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B +:4038C0006B4400215956029C039A0598099B0193089B00932300F9F7F2FB0300180006B010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B74 +:4039000000932300F9F755FC0300180008B010BD00B585B0039002910192019A0299039B1800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B18008B +:40394000F8F7F4FA0300180005B000BD00B583B08C235B001900012023F0B8F903000193019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190BE +:40398000019B1800F8F7C0FA019B180023F022FDC04603B000BD00B585B0039002910192019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B7A +:4039C000029A03980221FEF7AEF80300180005B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E03B +:403A00000023180005B000BD009FFFFF00B587B00390029101920093009B019A02990398FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF93 +:403A400000B583B08421012023F040F903000193019B002B01D1002304E0019B1800FEF714FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFC88 +:403A8000C04603B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE0029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFFB0 +:403AC00000B583B0E821012023F000F903000193019B002B01D1002304E0019B1800FFF795F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFC1C +:403B0000C04603B000BD000088B003900291019217236B4487221A7016236B441B221A701E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B63 +:403B400006D11F236B4416226A4412781A7001E0224B3FE0019B013B06931BE0069B039AD318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B49 +:403B8000029AD3181A781E236B44D2091A70069B013B0693069B002BE0DA029B1B785BB2DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4409 +:403BC00015206844127800780240D2B24A40D2B21A700023180008B07047C046009FFFFF10B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9AF5 +:403C000008A9059807AB00932300FFF787FA03000D930D9B002B13D10C9A08A9049B1800FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E05D +:403C4000C04600E0C04608AB102118000AF07EFE0D9B18000EB010BD86B003900291019200930023059310E0039A059BD3180299059A8A1811780198059A821812784A40FB +:403C8000D2B21A70059B01330593059A009B9A42EAD3C04606B0704786B00390029101920093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A7002 +:403CC0000EE0059A009B9A4205D1039A059BD31880221A7004E0039A059BD31800221A70059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039BF3 +:403D0000002B06D0039B1B68002B02D0029B002B01D11C4B32E0019A029903980123FFF729F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B4454 +:403D40001B78022B03DB042B03DD242B01D00D4B14E0C0462421012022F0B8FF03000593059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B00A +:403D800000BDC046009FFFFF809EFFFF10B58EB005900491039200230D93059B002B0AD0059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93AD +:403DC000059B1B685B690A93059B1B6C09930B9B1B6A002B3AD00B9B1B6A0A9AD21A039B9A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B98 +:403E0000103319000A9B099A0998FFF725FF099C0A9A0999059807AB00932300FFF77EF903000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A93 +:403E4000039AD31803930B9B00221A62039A0A9BD318013B0A99180027F0EAFC0300089301230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB0093230003 +:403E8000FFF74CF903000D930D9B002B24D1039A0A9BD31A0393049A0A9BD31804930C9B01330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499A0 +:403EC000180023F0C1FD0B9B1A6A039BD2180B9B1A6202E0C04600E0C0460D9B18000EB010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039BB5 +:403F00001B6C002B02D0029B002B01D1374B69E0039B1B6C1593039B1B685B691493159B13930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF7CD +:403F40004FFE159B10331293159B1A6A149B9A420DD2159B1B6A129A149905A8FFF79CFE149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A9BC +:403F80001398FFF769FE139C149A1399039804AB00932300FFF7C2F803001193119B002B06D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB1021F5 +:403FC00018000AF0C3FC159B00221A62159B1033102118000AF0BAFC139B102118000AF0B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B00211800AF +:4040000023F0B4FDC04603B000BD000000B58FB0039002910192009305AB20220021180023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B0001990B +:40404000D150039B119A9A61039B114ADA61039B2033180080235A0005AB1900F7F766FF03000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9BA0 +:40408000002B01D00D9B00E0002318000FB000BD1027000010B586B00590049103920293029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B597 +:4040C00083B00190019B002B0CD0019B20331800F7F71AFFA0235A00019B110018000AF035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC02313 +:404100005B009A4202D938235B4212E1D0235A0063AB0021180023F029FD05AB1800F7F7E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120C5A +:40414000D2B21A70D19B5A1CD192019A120AD2B21A70D19B5A1CD192019AD2B21A70D19B0333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD318F0 +:4041800080221A70019B1933CC930023CF930BE0CF9BD9B26A4BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093BF +:4041C000D09B002B00D08AE00023CE9355E063ABD1934BAB10220021180023F0C7FCCC9BCD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B78534071 +:40420000D9B2504BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B0F2BE6DDD19B1033D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093DC +:40424000D09B002B4DD1CD9B002BCBD1CE9B57AAD3184BA91022180023F0F6FB3A4BD2AA94466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD1C +:4042800080235A0057A905AB1800F7F74FFE0300D093D09B002B26D157AB2033CB93039BD1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB9925 +:4042C000D19B1022180023F0BFFBD19B1033D193CE9B1033CE93CE9B2F2BE5DD06E0C04604E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF0B6 +:4043000025FB57AB302118000AF020FB4FAB202118000AF01BFB4BAB102118000AF016FBD09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFD9 +:40434000F4FDFFFFE4FDFFFF44FEFFFF00B593B00190009102AB119300230E9302AB30220021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2BD +:40438000019AD154019AD35C002B06D1109B013B1093109B002BEDDC00E0C046019B20331800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B10331193FA +:4043C0000F9B10330F930F9B2F2BD0DD0023109311E002AA109BD3181A78109B0099CB181B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033EB +:40440000180080235A0002AB1900F7F78FFD03000E930E9B002B01D00E9B07E0019802AB20331022190023F00FFB0023180013B000BD10B5E6B00390029101920023659363 +:40444000039B9A69C0235B009A4207D8039B9B69C0225200D21A019B9A4202D238235B424DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058FA +:40448000039B9A6904AB1900A047031E02D034235B4234E0039B9B69659AD3186593029B002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD318A4 +:4044C0006593659A04A904AB1800FFF70FFE03006493649B002B01D0649B10E004AA039B11001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180080 +:4045000066B010BD00B59BB0039002910192009300231793039B1693029B1993019A8023DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB3022E4 +:404540000021180023F012FB169B1A69169BDB699A4203DC169B5B69002B0ED01C9A0099169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D0DE +:404580001C9A009909AB1800FFF7B0FD03001793179B002B01D0179B5BE009AA169B11001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AC2 +:4045C000D25C0132D1B2169AD154169AD35C002B06D1189B013B1893189B002BEDDC00E0C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E010 +:40460000019B102B00D910231593159A05A9199B180023F019FA199A159BD3181993019A159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002BEA +:4046400001D0179B05E0169B1B695A1C169B1A61002318001BB000BD00B589B0059004910392059B0793039A04990798002300930023FFF747FF03000693069B180009B055 +:4046800000BD000010B592B0079006910592049308AB180000F03DFE059C049A08A90798169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB18004E +:4046C00000F07AFF031E02D00A4B119309E008AA069B11001800F9F77EFC0300119300E0C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069119 +:4047000005920493049C059A06990798002302930B9B01930A9B00932300FFF7B3FF0300180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019BBA +:404740008833180000F0E5FD019BAC33180000F0E0FD019BD0331800F9F764FB019BDC2200219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF3303 +:404780001800F9F74FFBC04603B000BD00B583B00190019B002B29D0019B180000F042FE019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BC2 +:4047C000D0331800F9F740FB019BE033180000F011FE019B0533FF33180000F00BFE019B2933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B460733E7 +:404800001A70039B029A1100180000F09EFE03000593059B002B01D0059B35E06B4607331B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607333C +:404840001B78002B01D0124B1EE0039B88331A00029B88331900100000F047FE03000593059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B05 +:4048800001D0059B00E00023180007B000BDC04680B0FFFF10B588B00590049103920293059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00BB +:4048C000059B7C331C000B9B01930A9B00932300FFF712FF03000793079B002B01D0079B21E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B42 +:404900009B6D07210B40591E8B41DBB2D218049B1A60059BD0331800049B1A68039B1900F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0B +:404940000733DB080693069A009B934200D913000593059A0199029B1800F9F72FFF03000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B71 +:4049800011001800FAF760F803000793079B002B16D1039B4C331A00029B11001800FAF76FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E01E +:4049C000C046079B180009B000BD000010B5A2B007900691059204931BAB20931CAB1F930FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E80 +:404A000009DB079B4C331A00049B11001800FAF737F9031E01DB7F4BF6E012AB180000F078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A602E +:404A4000209B1A1D20921B680A2B02DD724B2193C9E01F9B00221A601F9B1A1D1F921B680A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D009 +:404A80009AE0079B28331C001E9A12A9079800230293279B0193269B0093230003F006FC03002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193D7 +:404AC000219B002B00D07BE01D9B00211800FAF76FF9031EC0D0259B249A0CA90798FFF727FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B05 +:404B0000002B61D1049A1D99059B1800FBF794FA03002193219B002B58D1059A0CA90CAB1800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193C8 +:404B4000219B002B46D109AA1E991E9B1800FBF773FA03002193219B002B3DD1079B4C331A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF708 +:404B80005BFA03002193219B002B29D1079B4C331A000599059B1800FBF74EFE03002193219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0E4 +:404BC000C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB18 +:404C00001800F9F721F9219B180022B010BDC04680B0FFFF80B3FFFF00B3FFFF10B58AB00990089107920693069C079A08990998002304930F9B03930E9B02930D9B01936D +:404C40000C9B00932300FFF7C1FE030018000AB010BD000010B5CCB009900891079206932FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002BA9 +:404C800001D12C4B53E00BAB1800F9F7CBF82FAB180006F064FF499A0EA9069B1800F9F7EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B3F +:404CC00029D10EAA499BD118499A0BAB1800F9F7D7FD03004B934B9B002B1ED1499B5B000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B2C +:404D000001934E9B00932300FFF760FE03004B9304E0C04602E0C04600E0C0462FAB180007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFF51BE011010B588B071 +:404D40000790069105920493049C059A06990798002303930CAB1B7802930B9B01930A9B00932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9341 +:404D800011AB1D9308AB180000F0C3FA1AAB1800F9F748F817AB1800F9F744F814AB1800F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F761 +:404DC000F7FF031E1ADB079B4C331A00229B11001800F9F755FF031E10DA239B01211800F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F93C1 +:404E00008CE0059B069A1AA90798FFF791FD03001F931F9B002B00D071E0079B4C331A00239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF808 +:404E400003001F931F9B002B5DD1079B4C331A001E991E9B1800FBF7EFFC03001F931F9B002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A0004 +:404E80001D991D9B1800FBF7D7FC03001F931F9B002B3ED1079B28331C001E9A08A9079800230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180043 +:404EC00000F07AFB031E02D0214B1F9326E0079B4C331A0008A908AB1800FBF7ADFC03001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460D +:404F00000CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB180000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB180016 +:404F4000F8F782FF1F9B180020B010BD80B0FFFF00B2FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B08F +:404F800010BD00B5ABB0039002910192009305AB8B33049300232993029A05A904AB1800F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904ABDF +:404FC0001800F8F767FC03002893289B002B01DA289B2FE0289B299AD3182993299A05A904AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A95E +:4050000004AB30221800F8F7F9FB03002893289B002B01DA289B0DE0289B299AD31829930499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B0079098 +:40504000059204931B236B440A1C1A700CAB1800F8F7E8FE09AB1800F8F7E4FE0798079B7C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7D5 +:40508000E9FD03000F930F9B002B08D1139B129A09A90CA8FFF775FF03000F9300E0C0460CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB00990079271 +:4050C000069323236B440A1C1A70069C079A23236B4419780998002304930F9B03930E9B02930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B005900491D6 +:4051000003920293029C039A0499059800230193089B0093230000F005F80300180006B010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800E8 +:40514000F8F770FE08AB1800F8F76CFE0EAA10990FA83023F8F738F903001193119B002B05D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E0AE +:405180000BAA10990FAB1800F8F782F903001193119B002B0AD108AA10990FAB1800F8F777F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00D9 +:4051C000059A0699159B029308AB01930BAB00932300FFF7CDFD03001193119B002B06D10F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FEC4 +:40520000119B180012B010BD80B0FFFF1AB0FFFF00B4FFFF00B585B001900091019B009A1100180000F091F903000393039B002B1BD1019B7C331A00009B7C331900100068 +:40524000F8F7C9FE03000393039B002B0DD1019B88331A00009B88331900100000F045F903000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B001909A +:40528000019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B000BD0000014B18007047C0469C27041000B585B002006B4607331A70FFF7F2FF63 +:4052C000030003930BE0039B1B786A46073212789A4201D1039B07E0039B0C330393039B1B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019B90 +:40530000DB6B002B01D1022300E00123180002B0704700B583B00190019B002B0ED0019B1800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B0F1 +:4053400000BD00B583B00190019B002B37D0019B00221A70019B04331800F8F763FD019B10331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C3334 +:405380001800F8F74FFD019B00229A65019B0022DA65019B00221A66019B00225A66019B00229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04605 +:4053C00003B000BD00B583B00190019B002B0ED0019B1800FFF7B5FF019B7C331800F8F721FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0E6 +:40540000019B1800F8F720FD019B0C331800F8F71BFD019B18331800F8F716FD00E0C04603B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F7F5 +:4054400003FD019B10331800F8F7FEFC019B1C331800F8F7F9FC019B28331800FFF7CAFF019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A130055 +:40548000DB009B189B00CB181800FFF7B3FF039B01330393019B9A6F039B9A42ECD8019B5B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B001904F +:4054C000019B002B0ED0019B1800FFF7ABFF019B7C331800F8F7B8FC019B88331800FFF789FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD0300A4 +:405500000393039B002B19D1019B0C331A00009B0C3319001000F8F75EFD03000393039B002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0F3 +:40554000C046039B180005B000BD00B583B001900091009B1A78019B1100180003F00CFD0300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B2A +:4055800013D1019B0C3301211800F8F7A5FE03000393039B002B0AD1019B183300211800F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019BD8 +:4055C000183300211800F9F7F3FB03005A425341DBB2180003B000BD00B587B0039002910192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800E8 +:40560000F9F7D6FB031E0CD1099B002B01D1344B60E0089B00221A70009B01221A60002358E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A6034 +:40564000009B1A68099B9A4201D9254B42E0089B04221A700298089B0133049A1900F9F70FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F74B +:40568000FFF80300059324E0019B012B21D1049B5A1C009B1A60009B1A68099B9A4201D90F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089BAA +:4056C0000133049A1900F9F7DBF80300059300E0C046059B180007B000BDC04680B0FFFF00B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002BA2 +:405700000AD1009B012B05D1029B1800FFF72CFF03003FE0214B3DE0039B04331800F8F700FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B3B +:4057400028E00298019B0133049A1900F9F736F803000593059B002B18D1029B0C331800049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B1833012136 +:405780001800F8F7A9FD0300059302E0C04600E0C046059B180007B000BDC04680B0FFFF80B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF7BE +:4057C0003BF8030055E0019B1B68002B06DA019B00211800F9F7ECFA031E09D1019B1800F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703002F +:405800000393039B002B2ED10BE0009B1A1D0199019B1800F9F760FC03000393039B002B23D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D019978 +:40584000019B1800F9F7E2FB03000393039B002B0DD1009B1A1D019B11001800F9F710FA031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB0F3 +:4058800001900091009B183300211800F9F790FA031E01D10023AEE006AB1800F8F7C2FA03AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099BD0 +:4058C000002B00D07DE006AA06A903AB1800FAF7B3FB03000993099B002B00D073E0019A03AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B69 +:40590000009903AA1800FAF797FB03000993099B002B5CD1009B019A11001800FFF742FF03000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AADB +:405940001900FAF779FB03000993099B002B42D1009B0C33019A11001800FFF723FF03000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA190016 +:40598000FAF75AFB03000993099B002B27D1009B0C33019A11001800FFF704FF03000993099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC03000993DF +:4059C00010E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BD48650008A7 +:405A000000B591B0039002910192019B012B08D8029B1A68039B11001800FFF72FFF03000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE0CC +:405A40000E9A13005B009B189B001A000D9B9B181800F8F7E7F90E9B01330E930E9A019B9A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B684A +:405A800018331A000D9B11001800F8F7A4FA03000F930F9B002B00D082E101230E9339E00E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD11887 +:405AC0000E9B9B00029AD3181B6818331A00FAF7B3FA03000F930F9B002B00D062E10E9A13005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B65 +:405B000000D051E1B24B1B685A1CB14B1A600E9B01330E930E9A019B9A42C1D3019A13005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002BC2 +:405B400000D033E1019B013B0E930E9B002B0BD10AAA07AB11001800F8F73DFA03000F930F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF703 +:405B80005BFA03000F930F9B002B00D010E1039A07AB11001800FFF705FE03000F930F9B002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA932 +:405BC0000AAB1800FAF738FA03000F930F9B002B00D0F1E0039A0AAB11001800FFF7E2FD03000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF728 +:405C00001BFA03000F930F9B002B00D0D8E0039A04AB11001800FFF7C5FD03000F930F9B002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00A3 +:405C4000029AD3181B68190004AB1A00FAF7F4F903000F930F9B002B00D0B5E00E9B9B00029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B4D +:405C80001B685A1C524B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B6822 +:405CC0000C33039A11001800FFF76CFD03000F930F9B002B00D081E03D4B1B685A1C3C4B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA190017 +:405D0000FAF79AF903000F930F9B002B00D067E00E9B9B00029AD3181B680C33039A11001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AEF +:405D4000D3181B681A00039B9B6819001000F8F7E3F803000F930F9B002B45D10E9B9B00029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D1CE +:405D80000E9B9B00029AD3181B6818331800F8F75BF80E9B002B2BD00E9B013B0E93D4E6C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0B9 +:405DC000C04616E0C04614E0C04612E080B2FFFF48650008C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F7C2 +:405E000023F804AB1800F8F71FF800230E930DE00E9A13005B009B189B001A000D9B9B181800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180029 +:405E400011B000BD00B58BB0039002916B4607331A7005AB1800F7F7E5FF039B191D029B0C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F71F +:405E800097FF03005A1E9341DAB223236B441A70029B0C3318006B46073323226A441B7812781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099BDF +:405EC00018000BB000BD000000B593B0039002910192DD4B1B685A1CDB4B1A600EAB1800F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69B0 +:405F0000002B00D0A9E0019B18331900019B18331A000BAB1800FAF78FF803001193119B002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34BD1 +:405F40001B685A1CC14B1A6001990BAA08AB1800F9F7C2F803001193119B002B00D043E30CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1DBA +:405F800008AB11001800F8F77BFE031EE9DA01990BAA05AB1800F9F7EDF803001193119B002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D07A +:405FC00018E305AB1B68002B06DA05AB00211800F8F7EEFE031EE7D105AA08A90BAB1800FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB030011936E +:40600000119B002B00D0F9E2904B1B685A1C8F4B1A600BA90EAB03221800FAF7BFF803001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119BD7 +:40604000002B00D0DEE2039B1A1D0EAB11001800F8F716FE031EE9DAC8E00199019A0BAB1800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB030047 +:406080001193119B002B00D0C0E2704B1B685A1C6E4B1A600BA90EAB03221800FAF77EF803001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF0300119392 +:4060C000119B002B00D0A7E2039B1A1D0EAB11001800F8F7D5FD031EE9DA039B103300211800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFFFD +:4061000003001193119B002B00D087E2039A0BAB11001800FFF746FB03001193119B002B00D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119BB9 +:40614000002B00D06EE2039A08AB11001800FFF729FB03001193119B002B00D064E23B4B1B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002BE9 +:4061800000D053E2039A0BAB11001800FFF70AFB03001193119B002B00D049E22B4B1B685A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE078 +:4061C000039B1A1D0EA90EAB1800F8F71FFF03001193119B002B00D02EE2039B1A1D0EAB11001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF45 +:4062000003001193119B002B00D017E2039A08AB11001800FFF7C6FA03001193119B002B00D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002BD8 +:4062400000D0FFE111E0C0464465000848650008039B1A1D08A908AB1800F8F7D7FE03001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0E +:406280000BAB1800F9F7D8FE03001193119B002B00D0DBE1039A0BAB11001800FFF782FA03001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FBA0 +:4062C00003001193119B002B00D0C3E10CE0039B1A1D0BA90BAB1800F8F798FE03001193119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905ABA3 +:406300001800F9F799FE03001193119B002B00D0A4E1039A05AB11001800FFF743FA03001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA030049 +:406340001193119B002B00D08CE10CE0039B1A1D05A905AB1800F8F759FE03001193119B002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800FC +:40638000F9F75AFE03001193119B002B00D06DE1039A08AB11001800FFF704FA03001193119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE0300C4 +:4063C0001193119B002B00D054E10CE0039B1A1D08A908AB1800F8F77FFE03001193119B002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A9CA +:4064000008AB1800F8F7B6FE03001193119B002B00D033E10CE0039B1A1D08A908AB1800F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F796 +:40644000B7FC031EE7D108AA0BA90BAB1800F8F791FE03001193119B002B00D012E10CE0039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B9F +:4064800006DA0BAB00211800F8F792FC031EE7D10EAA0BA90BAB1800F9F7CEFD03001193119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0AB +:4064C000534B1B685A1C524B1A6005AA0BA90BAB1800F8F74FFE03001193119B002B00D0D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BABA9 +:406500001B68002B06DA0BAB00211800F8F750FC031EE7D1019B0C331900019B18331A0005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F920 +:4065400003001193119B002B00D0A9E0304B1B685A1C2F4B1A6005AB01211800F8F7D0F903001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD030011935F +:40658000119B002B00D08FE0039B1A1D05AB11001800F8F775FB031EE9DA029B08AA11001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFDFF +:4065C00003001193119B002B00D071E0029B183305AA11001800F7F7FEFC0300119368E0C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E03D +:40660000C04656E0C04654E0C04652E0C04650E048650008C0464CE0C0464AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E009 +:40664000C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E04A +:40668000C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F74B +:4066C000C3FB08AB1800F7F7BFFB05AB1800F7F7BBFB119B180013B000BDC04600B59BB00390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E21 +:4067000007D1009A029B11001800FEF7EEFE030039E3009B1B6A002B0FD0009B183300211800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B2C +:4067400009D0009B183301211800F8F731FB031E01D0C44B17E316AB1800F7F763FB13AB1800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07ABE5 +:406780001800F7F74FFB04AB1800F7F74BFB019B18331900019B18331A0016AB1800F9F74BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199BE7 +:4067C000002B00D079E2A84B1B685A1CA64B1A60019B18331A0016A913AB1800F9F72CFC03001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002BBA +:4068000000D05EE2984B1B685A1C974B1A60009A16A916AB1800F9F70FFC03001993199B002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4BC6 +:406840001B685A1C884B1A60009B0C331A0013A913AB1800F9F7F0FB03001993199B002B00D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B6839 +:406880005A1C794B1A60019A16A916AB1800F8F771FC03001993199B002B00D01BE20CE0039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B23 +:4068C00006DA16AB00211800F8F772FA031EE7D1019B0C331A0013A913AB1800F8F74AFC03001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993BD +:40690000199B002B00D0ECE113AB1B68002B06DA13AB00211800F8F74BFA031EE7D116AB00211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B71 +:406940001800FFF7C1FA03001993FFE1029B1800FEF70AFE03001993F8E1019B1833190016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF74C +:4069800011FF03001993199B002B00D0ADE1364B1B685A1C344B1A6016AA16A910AB1800F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993ED +:4069C000199B002B00D094E1274B1B685A1C264B1A6016AA10A90DAB1800F9F72DFB03001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D052 +:406A00007BE1194B1B685A1C174B1A60019A10A910AB1800F9F710FB03001993199B002B00D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B684D +:406A40005A1C094B1A6010A916AB02221800F9F7A5FB03001993199B002B00D053E112E04065000880B0FFFF48650008039B1A1D16A916AB1800F8F7C9FA03001993199BF6 +:406A8000002B00D041E1039B1A1D16AB11001800F8F7F6F8031EE9DA13AA13A90AAB1800F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE0300199341 +:406AC000199B002B00D024E1B04B1B685A1CAF4B1A6016AA0AA90AAB1800F8F74BFB03001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B35 +:406B0000002B00D009E10AAB1B68002B06DA0AAB00211800F8F74CF9031EE7D10DAA0AA90AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB180078 +:406B4000F8F7CAFA03001993199B002B00D0E8E00AAB1B68002B06DA0AAB00211800F8F727F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0FB +:406B8000039B1A1D10A910AB1800F8F7A5FA03001993199B002B00D0C7E010AB1B68002B06DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993C1 +:406BC000199B002B00D0B2E0039A10AB11001800FEF7E8FD03001993199B002B00D0A8E06A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B50 +:406C0000002B00D097E0039A0DAB11001800FEF7C9FD03001993199B002B00D08DE05B4B1B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE0A2 +:406C40000CE0039B1A1D07A907AB1800F8F744FA03001993199B002B00D072E007AB1B68002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF9030060 +:406C80001993199B002B00D05DE0029B0C3307AA11001800F7F79FF903001993199B002B53D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C046DC +:406CC00044E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C046E4 +:406D000024E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C046A3 +:406D400004E0C04602E0C04600E0C04616AB1800F7F77AF813AB1800F7F776F810AB1800F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800A7 +:406D8000F7F762F8199B18001BB000BD4865000800B58FB0039002910192009300230C93039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9978 +:406DC00008A8FAF749FC03000D930D9B002B00D0B5E00AE008AB01211800F7F735FE03000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C24 +:406E00000C920A2B01DD5F4BB9E008AB01211800F7F7CEFF031ED0DD029B18331800029B183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800EA +:406E4000FEF7B0FC03000D930D9B002B00D07CE04D4B1B685A1C4C4B1A6008AA08A905AB1800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC0300A1 +:406E80000D930D9B002B64D13F4B1B685A1C3E4B1A60029B029905AA1800F9F7CDF803000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B76 +:406EC0001B685A1C304B1A6008AA05A905AB1800F9F7B2F803000D930D9B002B3FD1039A05AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B2E +:406F00000C331800029B0C3305AA1900F9F794F803000D930D9B002B25D1029B0C33039A11001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C0460E +:406F400014E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B1800C6 +:406F80000FB000BD00B3FFFF4865000800B589B00390029100936B4607331A70029B5A1C039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD21816 +:406FC000009B11001800F7F7B4F90200069B9A401000039A079BD3180399079A8A18127851B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079BFF +:4070000001330793079A029B9A42D1D317236B4400221A700123079372E0039A079BD3181A7816236B441721694409780A401A70039A079BD3180399079A8A181178172276 +:407040006A4412784A40D2B21A7017236B4416226A4412781A70039A079BD3181B781A00012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A0399A0 +:407080008A1812781521694409784A43D2B252B213405AB217236B441B785BB213435AB217236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812783D +:4070C0001520684400784243D2B252B24A4052B2D2B21A70079B013B039AD318079A013A03998A18127851B215226A441278D20152B20A4352B2D2B21A70079B013307936C +:40710000079A029B9A4288D9C04609B000BD10B5A8B00390029101921A006B4603331A70002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF724 +:40714000D4F903002793279B002B00D0EAE00023259344E02A99259824F06AFB03001A00012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B183C +:407180002393259B2A99180024F0D8FB0B1E17D19B236B441B785B08DBB21A001300DB009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E05A +:4071C000239A2399039B1800FEF77EFE03002793279B002B00D0A9E0259B013325936B4603331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0FF +:40720000259A531C25939B236B4419780B00DB005B189B001900029B591804AB9200D1509B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259AD1 +:4072400004A9039B1800FEF7DBFB03002793279B002B6DD19B236B4401221A7037E09B236B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918BC +:40728000259A1300DB009B189B001A00029B9C189B236B441A781300DB009B189B001A00029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D187 +:4072C0009B226A449B236B441B78DB1813709B226A4493236B4412781B789A42BFD3002325930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259BCD +:4073000001332593259B5A1C93236B441B789A42E8D3259A04A9039B1800FEF771FB0300279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B596 +:4073400087B00390029101921A006B4603331A7008AB1B785B08DAB212236B443F210A401A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B8C +:407380009B18190013226A4412236B4412781B78D31A5A425341DBB21A00F6F77AFE03000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B25 +:4073C0009B180C33190013226A4412236B4412781B78D31A5A425341DBB21A00F6F759FE03000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033360 +:4074000012781B789A42B1D308AB1B78DB09DAB20299039B1800FEF715FD0300059302E0C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A70E5 +:4074400007AB1800FDF765FF159B1093149A109BD3181B780B226A441478039A0499059800932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF030094 +:407480001193119B002B40D1169B002B37D0179B169A04990598FFF77BFC03001193119B002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002BD1 +:4074C00027D1149A109BD3181B780B226A441478039A07A9059800932300FFF730FF03001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109BB9 +:40750000002BD0D10AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04607AB1800FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC21 +:4075400005AB1800F6F76EFC039B4C3300211800F6F7EFFE0300012B01D0254B45E0029B00211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F70E +:407580002AFD03000B930B9B002B20D1039B4C331900029A05AB1800F7F7ECFD03000B930B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB69 +:4075C0000EAA127800990198FFF7E0FC04E0C04602E0C04600E0C04605AB1800F6F734FC08AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693B7 +:40760000089B4C93529C0AAA079909983023FF336B44019351AB1B7800932300FFF786FF03004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B029325 +:40764000529B01930AAB00932300FFF7F0FE03004D934D9B002B18D13023FF336B441A784C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF8A6 +:4076800003004D9304E0C04602E0C04600E0C0464D9B18004EB010BD84B001900A006B4603331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B46033337 +:4076C0001B78002B06D00F236B441A780F236B4401321A700F236B441B78062B03D90F236B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B4458 +:407700001B78180004B0704710B590B00990089107920693069B0C331A00099B343319001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0C1 +:40774000002233236B441A7032246C4433236B441A78099B11001800FFF79EFF0300237032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E83 +:4077800032236B441B781900100024F051F803000B9333236B441B78002B0BD0099B5B6F002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF021 +:4077C00085FA03000D930D9B002B02D1504B0F9363E03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4402 +:4078000001321A703B226A4431236B4412781B789A42E3D33A236B4400221A703A236B441B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FCE6 +:4078400003000F930F9B002B26D133236B441B78002B07D0099B0D9A5A6731236B441A78099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441D +:407880001B78019331236B441B7800932300FFF7B1FE03000F9300E0C046099B5A6F0D9B9A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A7813007A +:4078C000DB009B189B001A000D9B9B181800FDF791FD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089BA5 +:407900001800FDF777FD0F9B180010B010BDC04680B2FFFF00B585B001900091009B18331800009B18331900019B04331A00F9F7CDFE03000393039B002B24D10098009909 +:40794000009B18331A00F8F777FB03000393039B002B1AD1009B019A11001800FDF722FF03000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFCCF +:407980000300039304E0C04602E0C04600E0C046039B180005B000BD4865000800B58BB0039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009BC6 +:4079C000019A079904A8F9F747FE03000993099B002B5CD109E004AB01211800F7F734F803000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C7A +:407A000008920A2B01DD2B4B51E004AB01211800F7F7CEF9031ED2DD029B029904AA1800F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099BD3 +:407A4000002B2AD11C4B1B685A1C1B4B1A60029B18331800029B183304AA1900F8F7ECFA03000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B20 +:407A80000FD10D4B1B685A1C0B4B1A600AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFF4865000800B5A1B028 +:407AC00003900291019200931CAB1800F6F7AAF919AB1800F6F7A6F916AB1800F6F7A2F913AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F9C4 +:407B000007AB1800F6F78EF904AB1800F6F78AF90099009B18331A001CAB1800F7F7DCFA03001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F9383 +:407B40001F9B002B00D04FE2039B1A1D1CAB11001800F7F795F8031EE9DA1CAA1CA919AB1800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE030028 +:407B80001F931F9B002B00D032E29E4B1B685A1C9C4B1A600099009B18331A0016AB1800F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA8B +:407BC00003001F931F9B002B00D015E216AB1B68002B06DA16AB00211800F7F7E9F8031EE7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB110018 +:407C00001800FDF7CFFD03001F931F9B002B00D0F6E17C4B1B685A1C7A4B1A6013AA19A910AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800CD +:407C4000F7F74AFA03001F931F9B002B00D0DBE110AB1B68002B06DA10AB00211800F7F7A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0D9 +:407C8000C4E10CE0039B1A1D0DA90DAB1800F7F7BDF903001F931F9B002B00D0B8E1039B1A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFAD5 +:407CC00003001F931F9B002B00D0A3E10CE0039B1A1D0AA90AAB1800F7F7FEF903001F931F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA7D +:407D00000AA907AB1800F8F797F903001F931F9B002B00D082E1039A07AB11001800FDF741FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB18005F +:407D4000F8F77AF903001F931F9B002B00D069E1039A04AB11001800FDF724FD03001F931F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF90300BC +:407D80001F931F9B002B00D050E1019B039A11001800FDF707FD03001F931F9B002B00D046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B5E +:407DC00000D037E1019B039A11001800FDF7EAFC03001F931F9B002B00D02DE1094B1B685A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE161 +:407E000013E0C04648650008019B18331800019B18331900039B04331A00F7F75DF903001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031E7B +:407E4000E2D1019B18331800019B18331900019B18331A00F8F7F0F803001F931F9B002B00D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914BFF +:407E80001B685A1C8F4B1A60019B18331800019B18331A00239B1900F8F7CEF803001F931F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D050 +:407EC000C6E0804B1B685A1C7E4B1A60029B13AA19A91800F8F7B0F803001F931F9B002B00D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B6826 +:407F00005A1C704B1A60029B18331800039B103310AA1900F8F790F803001F931F9B002B00D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B29 +:407F40001B685A1C5F4B1A60029B18331800029B18331A0013AB1900F7F7BEF803001F931F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F894 +:407F800003001F931F9B002B00D06DE0029B18331A00039B043319001000F6F771FE031EE3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D112 +:407FC000029B1833039A11001800FDF7EBFB03001F931F9B002B4BD13A4B1B685A1C394B1A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0A5 +:40800000C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E070 +:40804000C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F736 +:40808000E3FE16AB1800F5F7DFFE13AB1800F5F7DBFE10AB1800F5F7D7FE0DAB1800F5F7D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B061 +:4080C00000BDC0464865000810B596B005900491039202930AAB1800FDF71BF907AB1800F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB6E +:4081000011001800FDF7F1F903001593159B002B00D0ACE0049B01211800F6F7DDF803001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D0B3 +:4081400099E0049B0C331800F5F77EFE0CE0059B1A1D0AA90AAB1800F6F758FF03001593159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD022 +:40818000199B189A0AA90598FFF708FC03001593159B002B00D072E0039B1800F6F78FF90300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B44DB +:4081C0001A780AAB1900F5F7E1FF03001593159B002B56D1049B183318004F236B441A780AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB0193A9 +:408200000AAB00932300FFF759FC03001593159B002B3AD104984F236B441A780AAB1900F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900E7 +:40824000F5F7A4FF03001593159B002B21D1149B5A1E1492002BA6D1049A059B11001800FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C0466F +:4082800008E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FDF7ACF807AB1800F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B3C +:4082C0001100180000F088FA03000993099B002B3AD1049A079B1100180000F049FA03000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A0699C4 +:4083000007980D9B01930C9B00932300FFF7DCFE03000993099B002B1AD1079B1800FCF7E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7EC +:40834000E3F90300099304E0C04602E0C04600E0C046099B18000AB010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B009353 +:408380002300FFF793FF0300180008B010BD000000B58BB001900091009B00211800F6F707FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000E4 +:4083C000F6F75EFC031E0ADA009B0C331A00019B043319001000F6F753FC031E01DB814BFCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB31 +:408400001800F7F719FE03000993099B002B00D0C4E0019A06AB11001800FDF7C3F903000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD7B +:4084400003000993099B002B00D0ABE0019A03AB11001800FDF7A6F903000993099B002B00D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F762 +:40848000EAFE03000993099B002B00D08EE00CE0019B1A1D03A903AB1800F6F71DFE03000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D1CB +:4084C00023E0019B10331A0003A903AB1800F6F703FE03000993099B002B00D06AE00BE0019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB1100BF +:408500001800F6F7BDFB031EEADA009A03A903AB1800F7F791FD03000993099B002B4DD1019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A6008 +:40854000019B1C331A0003A903AB1800F6F7C4FD03000993099B002B34D10BE0019B1A1D03A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F7F9 +:408580007FFB031EEADA03AA06AB11001800F6F777FB031E19D0134B099316E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0FA +:4085C000C04602E0C04600E0C04606AB1800F5F73BFC03AB1800F5F737FC099B18000BB000BDC04680B3FFFF4865000810B58AB00790069105920493059B01211800F6F794 +:40860000D7FB031E08D1049A069B11001800FCF76CFF0300099339E001235A42059B11001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D192 +:40864000069B0C3300211800F6F7B2FB031E1DD0069B0C331800079B191D069B0C331A00F6F788FD0300099310E0049C059A069907980C9B02930023019300230093230025 +:40868000FFF714FE0300099300E0C046099B18000AB010BD10B592B0059004910392029306AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF7ED +:4086C00028FE029C039A10990598169B00932300FFF78CFF03001193119B002B21D1159C149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F999D +:408700000598FDF7EBFF03001193119B002B0CD10F9A059B11001800FDF7B0F80300119304E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF5A +:4087400000B583B001900091009B1800F5F7E9FE0200019BDB6D0733DB089A4201D9034B00E00023180003B000BDC04680B3FFFF00B583B001900091009B18330121180076 +:40878000F6F716FB031E01D0114B1EE0019B1800FCF7ADFD0300022B07D1009A019B11001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B110018005B +:4087C000FFF7E6FD030000E0024B180003B000BD80B3FFFF80B0FFFF00B583B001900091019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B012116 +:408800001800F5F796FD031E09D1009B1800F5F756FE03005A1E019BDB6D9A4201D0184B2BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0AA +:40884000019B1800FCF753FD0300012B14D1009B01211800F6F7ACFA031E09DB019B4C331A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD91 +:4088800080B3FFFF80B0FFFF00B589B003900291019200935C4B0793039BDB6D0733DB080593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE0300079357 +:4088C000079B002B00D08EE0029B1800F5F7F7FD031EEDD0029B1800F5F7F1FD0300013B0493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F8030092 +:408900000793079B002B0CD07AE0039BD96D029B01221800F5F72AFD03000793079B002B63D1029B002200211800F5F71FFD03000793079B002B5AD1029B0022012118009F +:40894000F5F714FD03000793079B002B51D1039BDB6DFE2B0AD1029B002202211800F5F705FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B22 +:40898000019A05990298F8F767FE03000793079B002B32D1059BDA00039BDB6DD21A029B11001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134BE8 +:4089C0001FE0029B01211800F6F7F2F9031ED6DB039B4C331A00029B11001800F6F750F9031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04689 +:408A0000079B180009B000BD80B0FFFF00B3FFFF10B588B005900491039202930B9B0A9A03990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B92 +:408A400000932300FFF78CFC0300079300E0C046079B180008B010BD10B586B00590049103920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF030078 +:408A8000180006B010BD10B588B004910392029317236B44021C1A70049A17236B441B781900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049BCD +:408AC00088331A00039C029B00932300FFF7C4FF0300180008B010BD10B5AEB003900291039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B88331900AA +:408B00001000F6F7BDF8031E15D1039B94331A00029B943319001000F6F7B2F8031E0AD1039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7BE +:408B4000E8FB05AB1800FCF7FCFB029A05AB11001800FCF7FAFC029B7C331A00029B28331C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B51 +:408B800088331A0024AB11001800F6F779F8031E15D1029B94331A0024AB0C3311001800F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B23 +:408BC0002D9300E0C04624AB1800FCF713FC05AB1800FCF727FC2D9B18002EB010BDC04680B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A6057 +:408C0000C04604B07047000082B00190019B01221A60019B01225A60019B024A9A60C04602B070479C03000800B585B00390029101920093039B0433019A02991800FFF707 +:408C4000D1FF009B002B06D0039B1033069A00991800FFF7C7FF039B1C33089A07991800FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF6F +:408C8000039B34330C9A0B991800FFF7ABFF039B40331800FFF7B8FF039B04331800F5F70EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023EF +:408CC000180005B000BD000000B585B00190019B1033434A10211800F5F778FC03000393039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B043382 +:408D0000FF211800F5F7FCFD03000393039B002B4FD1019B181D019B043313221900F6F79AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C335C +:408D4000284A10211800F5F741FC03000393039B002B32D1019B4C330122FC211800F5F705FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002BBF +:408D80001FD1019B403301211800F5F7A5FA03000393039B002B16D1019B34331800F5F753F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C046BF +:408DC00002E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046502904105829041000B587B0019002AB1800F5F717F8019B10335D4A10211800E4 +:408E0000F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA03000593059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E016 +:408E4000019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E0211800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF918 +:408E800003000593059B002B58D1019B04331800F5F715FB0200019B9A65019B283305211800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA0300059315 +:408EC000059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F745FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B64 +:408F000024D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019BC022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E030 +:408F4000C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D0019B1800FCF75EFA059B180007B000BD7C2904108429041000B58DB00B900A0047 +:408F80002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042B25D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B982023D3 +:408FC0000893284B079320230693274B059320230493264B039320230293254B01930023009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B079314 +:40900000302306931E4B0593302304931D4B0393302302931C4B01930023009300233022FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A66E7 +:409040000B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BD6D910110C0270410402804102028041000280410E0270410A399011060280410202904108A +:40908000F0280410C0280410902804106DA4011059A5011080B1FFFF84B0039002910192039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42D8 +:4090C000DBB2D318DBB25AB2019B1A70C04604B0704784B0039002910192019B1B785BB2DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029B0D +:40910000D21A039B1A60C04604B0704700B587B00390019200930B236B440A1C1A70019B9A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A019985 +:40914000039B1800F5F762FF03000593059B002B04D1039B012252421A6000E0C046059B180007B000BDC046FFFFFF3F00B595B0019042236B4400221A70002313938023D7 +:409180005B0012930CAB01221A600CAB09225A600CAB03AA9A600CAB5B689A0003AB002118001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B78 +:4091C0009A68139B9B00D3181B680F93019B9B682033196842226A440FAB1800FFF75CFF019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A4439 +:409200000FAB1800FFF765FF019B9B683033196842226A440FAB1800FFF75BFF019B9B683433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB18002B +:40924000FFF747FF019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B789B +:409280007F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71BFF09E043236B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FABE4 +:4092C0001800FFF7E9FE019B9B682833196842226A440FAB1800FFF7DFFE019B9B683033196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF799 +:40930000E8FE019B9B683833196842226A440FAB1800FFF7DEFE019B9B683C33196842226A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019BB2 +:409340009A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71B +:40938000A8FE09E043236B440021595642226A440FAB1800FFF780FE019B9B682833196842226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE55 +:4093C000019B9B683433196842226A440FAB1800FFF77FFE019B9B683833196842226A440FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A6847 +:40940000139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B440F +:409440001B785BB25B42190042226A440FAB1800FFF73FFE09E043236B440021595642226A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019BC2 +:409480009B682C33196842226A440FAB1800FFF703FE019B9B683033196842226A440FAB1800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B6834334C +:4094C000196842226A440FAB1800FFF7E5FD019B9B683C33196842226A440FAB1800FFF7F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B68243319684222BE +:409500006A440FAB1800FFF7E4FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7065 +:4095400043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196802 +:4095800042226A440FAB1800FFF786FD019B9B683033196842226A440FAB1800FFF77CFD019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440F +:4095C0000FAB1800FFF768FD019B9B683833196842226A440FAB1800FFF75EFD019B9B682433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB180060 +:40960000FFF767FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B78B9 +:409640007F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73BFD09E043236B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FABD3 +:409680001800FFF709FD019B9B683433196842226A440FAB1800FFF7FFFC019B9B683833196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF77F +:4096C000EBFC019B9B683C33196842226A440FAB1800FFF7E1FC019B9B682833196842226A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B1D +:409700009A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD94323B9 +:409740006B441B785BB25B42190042226A440FAB1800FFF7BEFC09E043236B440021595642226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC29 +:40978000019B9B683833196842226A440FAB1800FFF782FC019B9B683C33196842226A440FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B6877 +:4097C0003833196842226A440FAB1800FFF764FC019B9B683433196842226A440FAB1800FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B68243319685F +:4098000042226A440FAB1800FFF763FC019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400220A +:409840001A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33EE +:40988000196842226A440FAB1800FFF705FC019B9B683C33196842226A440FAB1800FFF7FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B68203319684222C1 +:4098C0006A440FAB1800FFF7E7FB019B9B682833196842226A440FAB1800FFF7FAFB019B9B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB33 +:409900001800FFF7E6FB019B9B683433196842226A440FAB1800FFF7DCFB019B9A68139B9B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00236B +:409940001A1C53B20F93019B9A68139B9B00D3180F9A1A6000230F9306E0019B9A68139B9B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB28E +:40998000002B0ADA42236B4400215956129B0CAA0198FFF7BBFB00E0C046119B180015B000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6075 +:4099C00010AB0D225A6010AB03AA9A6010AB5B689A0003AB002118001EF0C8F8019B18211800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B6899 +:409A00001393019B9B683033196852226A4413AB1800FFF741FB019B9B685433196852226A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019BB7 +:409A40009B685C33196852226A4413AB1800FFF740FB019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A70C3 +:409A800052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA65 +:409AC000019B9B683433196852226A4413AB1800FFF7E2FA019B9B685833196852226A4413AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B68A6 +:409B00003033196852226A4413AB1800FFF7E1FA019B9B685033196852226A4413AB1800FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B009E +:409B4000D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E05323F2 +:409B80006B440021595652226A4413AB1800FFF783FA019B9B683833196852226A4413AB1800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433C3 +:409BC000196852226A4413AB1800FFF782FA019B9B685433196852226A4413AB1800FFF778FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D31810 +:409C00001B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B44CC +:409C40000021595652226A4413AB1800FFF724FA019B9B683C33196852226A4413AB1800FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196859 +:409C800052226A4413AB1800FFF706FA019B9B685433196852226A4413AB1800FFF7FCF9019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A44DD +:409CC00013AB1800FFF705FA019B9B685C33196852226A4413AB1800FFF7FBF9019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B681393532306 +:409D00006B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7CFF909E053236B44002159565222A4 +:409D40006A4413AB1800FFF7A7F9019B9B685433196852226A4413AB1800FFF79DF9019B9B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB0A +:409D80001800FFF789F9019B9B683433196852226A4413AB1800FFF77FF9019B9B683033196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF7B6 +:409DC0006BF9019B9B685833196852226A4413AB1800FFF761F9019B9B683C33196852226A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B86 +:409E00009B685C33196852226A4413AB1800FFF760F9019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A70E1 +:409E400052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF964 +:409E8000019B9B685833196852226A4413AB1800FFF702F9019B9B685833196852226A4413AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B687B +:409EC0003833196852226A4413AB1800FFF7E4F8019B9B683433196852226A4413AB1800FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196859 +:409F000052226A4413AB1800FFF7C6F8019B9B684033196852226A4413AB1800FFF7D9F8019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B683D +:409F4000139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B4400218C +:409F8000595652226A4413AB1800FFF785F8019B9B685C33196852226A4413AB1800FFF77BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B6848331968522262 +:409FC0006A4413AB1800FFF767F8019B9B683C33196852226A4413AB1800FFF75DF8019B9B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB67 +:40A000001800FFF749F8019B9B684433196852226A4413AB1800FFF75CF8019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4447 +:40A0400052226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4402 +:40A0800013AB1800FFF708F8019B9B684C33196852226A4413AB1800FEF7FEFF019B9B684033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB180051 +:40A0C000FEF7EAFF019B9B685C33196852226A4413AB1800FEF7E0FF019B9B684833196852226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B0133179300 +:40A10000019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB18003B +:40A14000FEF7C7FF09E053236B440021595652226A4413AB1800FEF79FFF019B9B685033196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF713 +:40A180008BFF019B9B684033196852226A4413AB1800FEF781FF019B9B684C33196852226A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019BCD +:40A1C0009A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF722 +:40A2000068FF09E053236B440021595652226A4413AB1800FEF740FF019B9B685433196852226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF31 +:40A24000019B9B684433196852226A4413AB1800FEF722FF019B9B685033196852226A4413AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A684A +:40A28000179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF5B +:40A2C00009E053236B440021595652226A4413AB1800FEF7E1FE019B9B685833196852226A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B54 +:40A300009B684833196852226A4413AB1800FEF7C3FE019B9B685433196852226A4413AB1800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B2B +:40A340009B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E0C3 +:40A3800053236B440021595652226A4413AB1800FEF782FE019B9B685C33196852226A4413AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B688E +:40A3C0004C33196852226A4413AB1800FEF764FE019B9B685833196852226A4413AB1800FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB2B0 +:40A400001A1C53B2002B01DA00231A1C53B21393019B9A68179B9B00D318139A1A600023139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42B2 +:40A44000F0D352236B441B785BB2002B0ADA52236B4400215956169B10AA0198FEF756FE00E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DABBC +:40A4800001221A60019B5B68DA1F0DAB5A600DAB5B68092B01D92F4B59E00DAB03AA9A6003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF012 +:40A4C000C3FA0DAB1F211800F4F7BEFA03001193119B002B35D10DAB5B685A1C0DAB5A60019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A681B +:40A50000109B9B00D31800221A60109B01331093019B5A68109B9A42F0D80DA90DAB13221800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC03001193F5 +:40A5400004E0C04602E0C04600E0C046119B180013B000BD80B0FFFF10B5A8B00190019B5B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B68AD +:40A580000E2B01D9494B8DE023AB11AA9A6011AB3C22002118001DF0E9FA019B9B683833190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31894 +:40A5C00000221A60269B01332693019B5A68269B9A42F0D823AA0199019B1800F4F77CFD03002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218006B +:40A600001DF022FA20ABE0211800F4F71DFA03002793279B002B3DD120AA0199019B1800F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B6F +:40A640000133269323AB5A68269B9A42F2D820AA23A923AB1800F4F73FFD03002793279B002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA9B +:40A680000199019B1800F4F727FD0300279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039B76 +:40A6C000E4331800C8235B001A0000211DF04EFA039B00221A60039B0833180009F04DFC07490398012300934023002200F02AF8039A9D239B000021D150C04605B000BDFD +:40A70000B5AB011000B583B00190019B0833180009F03FFC019A9D239B000021D150019BE02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C046BB +:40A7400003B000BD86B0039002910192009300230593039BE0229B580493049B132B03DD3E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A6003999B +:40A78000049AE82013009B009B189B00CB181B18019A1A600399049AF02013009B009B189B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60E2 +:40A7C000039BE0229B585A1C039BE0215A50059B180006B0704700B599B00390019200930B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019865 +:40A8000000230CF0EDFA03001593159B002B34D104AB16934023179314AB0B226A4412781A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB0300B4 +:40A840001593159B002B1BD1039B01221A60039B083314A9022218000BF0DAFC03001593159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C0469A +:40A8800004AB4021180004F061F8159B180019B000BD00B587B0039002910192019B029A03981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BB4 +:40A8C000E0229B58002B02D140235B426DE00023249356E00199249AF42013009B009B189B00CB181B181B68012B01D101232393002302930199249AE42013009B009B18BA +:40A900009B00CB181B181C680199249AE82013009B009B189B00CB181B18186802AB03A98022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF783 +:40A940004AFF03002593259B002B01D0259B2CE00199249AEC2013009B009B189B00CB181B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B0133EF +:40A980002493019BE0229A58249B9A42A2DC239B002B04D13D235B42259300E0C04603AB8021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B04 +:40A9C0001593019B402B02D93C235B42C0E0159A9D239B00D358002B0FD1159A9D239B000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C1892CF +:40AA000080225200934203DD3C235B42199399E0159B1800FFF74EFF03001993199B002B00D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B186C +:40AA400019681598179AF02413009B009B189B00C3181B191B68994201D200231693179B01331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF09A +:40AA800075F8159B083305AA110018000BF04CFC03001993199B002B4DD1159B0833180009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199BA9 +:40AAC000002B3AD1159B083305A9402218000BF09FFB03001993199B002B30D105AA05A8002340210CF07CF903001993199B002B27D1002317930DE01599179AEC201300DA +:40AB00009B009B189B00CB181B1800221A60179B01331793159BE0229A58179B9A42EBDC019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C046DF +:40AB400000E0C04605AB4021180003F0FFFE199B18001AB010BD00B595B001903F235B42139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB402163 +:40AB80001800F1F7A2F9031E02DA3F235B420EE003AB4022002118001CF0E8FF03A9019B40221800FFF775FE03001393139B180015B000BD00B597B0039002910192009370 +:40ABC0004023159305AB4022002118001CF0CEFF05AB40211800F1F765F9031E02DA3C235B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A04 +:40AC00001A600023180017B000BD00B583B00190C8235A00019B002118001CF0A7FFC04603B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A9CC +:40AC400012AB009313001022F8F768FA03001F931F9B002B01D01F9B23E113AB1B781A0613AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B79C1 +:40AC80001A0613AB5B791B041A4313AB9B791B021A4313ABDB7913431A9300231B931C9B1D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A43F9 +:40ACC00013AB9B7A1B021A4313ABDB7A13431C9300231D9313AB1B7B1A0613AB5B7B1B041A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304933E +:40AD00001A9B0499059A0800034322931B9B13432393119B88331A00229B239C13605460119A84235B00D218209B219C13605460119BC8331A000023002413605460119A29 +:40AD4000002300249364D4640423259350E0229A012313401A005B01D21A13061A001992209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343E7 +:40AD8000229313003B432393219BDA07209B5B080293029B13430293219B5B080393199B089300230993089B1B000B9300230A93029C039D23000A990B9A080043402093F9 +:40ADC0002B0053402193119A259B0933DB00D218229B239C13605460119A259B1933DB00D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B483330 +:40AE00001A00259BDB00D3181893119BC8331A00259BDB00D3181793179B5C681B6820932194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B19333E +:40AE4000DB00CB185C681B68209959400C91219961400D910C9B0D9C13605460249BDB00189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9BF5 +:40AE80000F9C13605460249B01332493249A259B9A42CEDB259B5B002593259B082BADDD0023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B445C +:40AEC0001B7801221800F7F7B9FF03000593059B002B02D114235B4230E0059B5B69102B02D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493F5 +:40AF0000049B002B01D0049B18E00398009A01990123F8F72FF803000493049B002B01D0049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B04B +:40AF400000BD000070B5B2B029902891279200233193289B0F331A78172126AB9C4661440F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F9496 +:40AF8000172326AA944663441B78299A0933DB00D3185C681B682C932D940F233193E3E0319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B781622BF +:40AFC00026A98C4662441B091370319B0F2B61D02C9B2D9CDAB2152126AB9C4661440F2313400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119ABC +:40B000000B002B432C93130033432D932F9B1A072E9B1B0913432E932F9B1B092F93152326AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A12 +:40B04000080043402E932F9B53402F93172326AA944663441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D1 +:40B08000D3185C681B682C9A5A402C922D9A624013002D932C9B2D9CDAB2152126AB9C4661440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B1343B1 +:40B0C00000932D9B1B0901930E9B0099019A080003432C930F9B13432D932F9B1A072E9B1B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B68F7 +:40B100001B041593002314932E9B1499159A080043402E932F9B53402F93162326AA944663441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F9316231A +:40B1400026AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A624013002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B18A2 +:40B180001B78279A1370279B5A1C2F9B1B0C1893002319936B4660215B181B781370279B9A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9366 +:40B1C00000231D936B4670215B181B781370279B191D2F9B1A022E9B1B0E0293029B134302932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B1343DE +:40B2000004932F9B1B0C05936B461B7C0B70279B991D2F9B1A062E9B1B0A0693069B134306932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A00F0 +:40B240002D9B1B0E1E9300231F936B4678215B181B781370279B09331A002D9B1B0C2093002321936B4680215B181B781370279B0A332D9A120A2292002223926A46882152 +:40B28000521812781A70279B0B332D9A12002492002225926A469021521812781A70279B0C332D9A12022C99090E08910899114308912D9A120E09926A4620215218127883 +:40B2C0001A70279B0D332D9A12042C99090C0A910A9911430A912D9A120C0B926A462821521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D9276 +:40B300006A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC046C0290410F0B597B00B900A910992089300230D93089B002B15D0089B029300238F +:40B340000393039B5E0F00231F0033003B430AD11D9B049300230593059B5C0F00231D0023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933A5 +:40B38000FF331022002118001CF0F0FB0B9AC4235B000A99D1500B9AA4235B00D21800230024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B693312 +:40B3C000FF33089A099918001CF03EFB0B9A7823FF330121D15485E00EAB1022002118001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB00BF +:40B400001B0ADAB20EAB9A73089BDBB2DB00DAB20EABDA73099B149337E0089B102B00D9102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B78CD +:40B440005340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159A139B9A42E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0C +:40B480000893149A139BD3181493089B002BC4D10023159317E00B99B4235B00159A8A18D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A7086 +:40B4C000159B01331593159B0F2BE4D90B9B6933FF3319000B9B6933FF331A000B9B1800FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F7F1 +:40B500000DFE03001293129B002B01D0129B4AE01D9B0693002307930B9AA8235B00D3180699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B9921 +:40B54000BC235B00159A8A18D3181A781499159BCB181B785340D8B20B99BC235B00159A8A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B53 +:40B580007933FF331A000B9B1800FFF7DBFC1D9A139BD31A1D93149A139BD31814931D9B002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A931F +:40B5C000069A079B9A4209D9069A079BD31A1A00089B9A4202D214235B42EAE0099AA4235B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1891 +:40B6000011685268A24215D801D1994212D8099AA4235B00D3185C681B68089A0492002205920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00F7 +:40B64000D3185C681B68089A1500002216005B1974410999A42252008A1813605460079B1293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9183F +:40B680008A1812780132D0B20999B4225200C9188A18011C11700999B4225200CB189B181B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319008A +:40B6C0000BAA0AAB009313001022F7F727FD03000F930F9B002B01D00F9B6AE00023139346E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BA7 +:40B70000CB181B785340D8B20999BC235B00139A8A18D318021C1A70119A139BD3180BA9139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D1B4 +:40B740000999BC235B00139A8A18D3181A781199139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF3319009A +:40B78000099B7933FF331A00099B1800FFF7DAFB089A109BD31A0893129A109BD3181293119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C91E4 +:40B7C0001B921D9AA4235B00D3185C681B68590FE2000A432592DB0024931D9AA8235B00D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D8142306 +:40B800005B4216E11D9B5933FF3319001B9B1C981A001CF019F9249A259B1A4304D1229A239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B463C +:40B8400028229B181B781EAA1370239B1B0C0C9300230D936B4630229B181B781EAA5370239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311932A +:40B880006B4640229B181B781EAAD370239B1A02229B1D0E1543239B1E0EEBB21EAA1371239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B59 +:40B8C0001A06229B1B0A0293029B13430293239B1B0A03936B461B7A1EAA9371229B239CDBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C9D +:40B900001493002315936B4650229B181A781EAB5A72259B1B0A1693002317936B4658229B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B56 +:40B940001B02249A120E0492049A1A430492259B1B0E05936B461A7C1EAB1A73259B1B04249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249AA0 +:40B98000120A0892089A1A430892259B1B0A09936B4620229B181A781EAB9A73249B259CDAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB1877 +:40B9C0001B785340D8B21D99BC235B00279A8A18D318021C1A70279B01332793279B0F2BE4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E0B4 +:40BA00001C9A279BD3181C99279A8A1811781D9CBC22520027982018821812784A40D2B21A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B00590049142 +:40BA4000039202930A9C029A049905980C9B01930B9B00932300FFF765FC03000793079B002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B66 +:40BA80000DE00F9A1099059B1800FFF795FE03000793079B002B01D0079B00E00023180008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9BE7 +:40BAC00004931A9B0393179B0293169B0193089B00930B000021FFF7AFFF03001193119B002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB182C +:40BB00001B785340DBB21A00129B13431293139B01331393139A199B9A42EAD3129B002B08D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B084 +:40BB40000190019B1800F7F7BBF9C8235A00019B1100180002F0FAFEC04603B000BD00B583B00190019B6422002118001BF0FEFFC04603B000BD00B597B00390029101926D +:40BB8000039B1B68180000F00FFC03001593029B002B04D0019B002B01D0022200E0012253236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190070 +:40BBC00000F032FB039B14A90122180000F02CFB53236B441B78022B05D1039B019A0299180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA039835 +:40BC0000039B0C33159A190000F00EFB039A039B0C331900100000F029FB14AB1B780133DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390AC +:40BC4000029101920093039B02990122180000F08DF903000593059B002B01D0059B21E0039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C3327 +:40BC80001C00029B180000F08FFB03001A00012120001BF06BFF009A0199039B1800FFF76AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B37 +:40BCC0001A6D019BD218C0235B009A4202D905235B4233E0C0235A0005AB002118001BF045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039BBD +:40BD00001B6D6593029B002B0ED0019B002B0BD005AA659BD318019A029918001BF094FE659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B06F +:40BD400010BD00B58BB00390029101920093039B0793079B1B68180000F026FB03000693019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A42CD +:40BD800002D905235B4260E0079BDB6D002B18D0079B5B6D012B05D0079BDA6C079B9B6D9A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E0002358 +:40BDC0000C93009B002B31D00C9B002B2ED00C9A0099079B1800FFF7CEFE27E0069A099B934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A8A +:40BE0000079B0C331900100000F030FA079B0C331900049A089B18001BF016FE089A049BD3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079B3B +:40BE4000DB6C5A1C079BDA64002318000BB000BD00B589B0059004910392059B0793039A04990798002300930023FFF76AFF03000693069B180009B000BD00B583B0019036 +:40BE8000019B002B09D0019B180000F03DF8019B6421180002F05AFD00E0C04603B000BD82B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D028 +:40BEC000082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C046602A0410902A0410C02A0410F02A041000B583B00190019B0C22002118001BF0B9 +:40BF000035FEC04603B000BD00B583B00190019B002B27D0019B1B68002B23D0019B5B68002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B71 +:40BF40001B68DB685B001900100002F0FFFC019B9B6818001BF03EFA019B0C21180002F0F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B70 +:40BF800001D1164B27E0029B1B6A98470200039B5A60039B5B68002B01D1114B1BE0019B002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B00 +:40BFC0005A6A039B5B6818009047054B03E0039B029A1A600023180005B000BD00AFFFFF80AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B683A +:40C000001A69019B5B68180090470300180003B000BDC04600AFFFFF10B584B0039002910192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A68 +:40C0400002991800A0470300180004B010BDC04600AFFFFF00B583B001900091019B002B03D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300D1 +:40C08000180003B000BDC04600AFFFFF00B585B00390029101920093039B002B01D1064B06E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B061 +:40C0C000039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1514B9EE0039B1B68DB681A00019B9A422DD2039B1B681A69039B5B6818009047030017937A +:40C10000179B002B00D07DE0039B1B685C69039B5B68019A02991800A04703001793179B002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B2D +:40C140001B689B68019304AB0293039B9B681593039B9A68039B1B68DB68D3181493039B1B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF013 +:40C18000F5FC002316931EE0159A169BD3181599169A8A1811780298169A821812784A40D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A7012 +:40C1C000169B01331693169A019B9A42DCD3039B1B681A69039B5B681800904703001793179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A047030002 +:40C20000179306E0C04604E0C04602E0C04600E0C04604AB4021180002F098FB179B180018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D086 +:40C24000039B9B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B07 +:40C2800003D0019B9B68002B01D12C4B52E0019B9A68019B1B68DB68D3181393019B1B689A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69FE +:40C2C000019B5B681800904703001293129B002B01D0129B2EE0019B1B685C69019B5868019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B6862 +:40C300005C69019B5868019B1B689B681A0002AB1900A04703001293129B002B01D0129B08E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFFA5 +:40C3400010B584B00190019B002B07D0019B1B68002B03D0019B9B68002B01D1114B1DE0019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B90 +:40C380000CE0019B1B685C69019B5868019B1B68DB681A00039B1900A0470300180004B010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B091 +:40C3C000704782B00190019B002B01D1002301E0019B1B78180002B0704700B583B00190019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A029945 +:40C40000039B180007F088FB0300180005B000BD00B583B001900091009A019B1100180007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F0D7 +:40C4400068FD0300180005B000BD00B583B06C2101201AF03BFC03000193019B002B03D0019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019BF8 +:40C4800018001AF0A7FFC04603B000BD00B583B001900091009A019B1100180005F020FEC04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B09B +:40C4C00000BD00B583B00190019B0021180005F017FE0300180003B000BD00B585B0039002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B5E +:40C500000121180007F064FD0300180003B000BD00B585B0039002910192019A0299039B180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F4 +:40C54000F3FE0300180003B000BD00B585B0039002910192019A0299039801230AF040FC0300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B64 +:40C58000180007F0FAFC019B180003B000BD00B583B00190019B180007F0FBFC019B18001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04691 +:40C5C00003B000BD00B583B001900091009A019B1100180007F0A6FD0300180003B000BD00B583B00190019B0021180007F0F0FC0300180003B000BD00B585B00390029171 +:40C600000192019A0299039800230AF0E9FB0300180005B000BD000000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A425E +:40C640000CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC046A434041000B585B022 +:40C6800001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E011 +:40C6C000059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C046A43404103E +:40C7000000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1E8 +:40C74000039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC046F434041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E2395 +:40C780005B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059BF8 +:40C7C0005A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C046F434041086B0029101920F236B44021C1A70104B059313E0059B1B7C1A +:40C800000F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C0463035041000B583B0BE +:40C840000190019B0C22002118001BF08FF9C04603B000BD10B58EB00590049103920293059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D133 +:40C88000644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A4201D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B31 +:40C8C00001330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D930B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454BA9 +:40C9000083E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9B01330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36498F +:40C940000D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A0D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B5D +:40C98000274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED06A +:40C9C000079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9B002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A02 +:40CA00001A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFF9435041000ECFFFF00EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B68190095 +:40CA4000100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C21180001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A60EF +:40CA800000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B689A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B00200CD +:40CAC0006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C046E4350410DA +:40CB000014360410443604107436041000B583B001900091019B002B06D0009B002B03D0019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1B9 +:40CB4000054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B00190019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B0C1 +:40CB800002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E00023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180071 +:40CBC00005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F08AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B0193B8 +:40CC00001B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E00F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB074 +:40CC40000790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A600F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA04 +:40CC8000030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD0200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9BB1 +:40CCC0000093012303F0FCFE030018000BB000BD80BFFFFF00B58BB00790069105920493079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE09D +:40CD00000F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BD00BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BDD0 +:40CD400000B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F0A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFB36 +:40CD8000C04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A00009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A6044 +:40CDC000C04602B07047C046AC350410B435041082B002006B4607331A706B4607331B78022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180061 +:40CE000002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B440A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B40 +:40CE40000ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F80300319306AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1CDF +:40CE80001A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D1049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F058 +:40CEC00093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009A019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE030013 +:40CF00000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B1800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70AA +:40CF4000009B054A5A60019B88331A00009B9A60C04602B07047C046C035041082B002006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023BC +:40CF8000180002B0704782B002006B4607331A706B4607331B78043B5A425341DBB2180002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9BDA +:40CFC00000932300F8F798F803000793079B044A934201D1034B00E0079B180008B010BD00B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B2308 +:40D000006B44197807980D9B03930C9B02930B9B01930A9B00932300F8F74EF80300180008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F72E +:40D040001CF9019B180003B000BD00B583B00190019B1800F8F71BF9019B18001AF0BAF9C04603B000BD82B06B46186059606B465B68180002B0704782B06B461860596043 +:40D080006B465B68180002B07047000000B587B0039002910192029A039B1B68D31A002B01DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019BA8 +:40D0C0001A1D019B1B6802990398F0F77DF903000593059B002B04D0059B0F4A9446634412E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A42D1 +:40D1000001D0064B00E00023180007B000BDC046A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF00B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E63 +:40D1400003D0124B1EE0124B1CE0009B1B78002B08D0009B1A780B236B441B789A4201D00B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B71 +:40D1800000E00023180005B000BDC04600C6FFFF00C3FFFF10B586B00390029101920198019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002BC7 +:40D1C00008D1019A019B883319001000FBF7D0FA03000593039B029A1A60059B180006B010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9BD0 +:40D20000002B04D00D9B454A9446634482E00B9B1A680C9BD2180A9B9A4201D0404B79E00CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E0DA +:40D240000B9B19680C9A099800230693002305930023049300230393002302930023019300230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD21878 +:40D280000B9B1A600CAA0A990B980223F0F79CF803000D930D9B002B04D00D9B1F4A9446634437E00B9B1B680C9A099806920593002304930023039300230293002301933D +:40D2C0000023009300230022002101F0D3FE03000D930D9B002B01D0104B1BE00B9B1A680C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0E9 +:40D30000064B07E00B9B1A680A9B9A4201D0044B00E0002318000FB000BDC04600C5FFFF9AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA8D +:40D3400002990398F0F7F1F803000793079B002B04D0079B114A944663441CE0019A04AB11001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D06E +:40D38000009B1B68002B03D1009B5B68002B01D0024B00E00023180009B000BD80C5FFFF80C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F731 +:40D3C00003F803000B930B9B002B04D00B9B4E4A9446634495E0039B1A68099BD318029306AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA02997D +:40D40000039B1800F0F769F803000B930B9B002B04D00B9B3D4A9446634472E0039B1A68099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9BD8 +:40D44000002B01D1334B5CE00A9A019B11001800FFF75CFB03000B930B9B002B01D00B9B4FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF790 +:40D48000B1FE03000B932AE017236B441B78032B04D017236B441B78022B1ED1019B18685968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B34 +:40D4C00018685968FFF7D8FD02000299039B1800FFF760FE03000B9301E00E4B0B930B9B002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FAF1 +:40D500000B9B18000DB000BD00C3FFFF00C5FFFF9AC4FFFF80C3FFFF00B595B00B900A9109920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF71F +:40D5400043FF03001393139B002B04D0139B9D4A9446634432E10F9A109BD318129311AA12990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B85 +:40D58000002B01D0904B19E110AA12990FA80223EFF71AFF03001393139B002B00D0F5E00F99109A0B980023069300230593002304930023039300230293002301930023C2 +:40D5C0000093002301F056FD03001393139B002B00D0DBE00F9A109BD3180F9310AA12990FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B98069205930023E7 +:40D6000004930023039300230293002301930023009300230022002101F02CFD03001393139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE030013939D +:40D64000139B002B00D0A1E00F9B109A0B9800210691002105910492039300230293002301930023009300230022002101F002FD03001393139B002B00D087E00F9A109B66 +:40D68000D3180F9310AA12990FA80223EFF79CFE03001393139B002B00D077E00F99109B0B9800220692002205920022049200220392002202920022019200930B00002270 +:40D6C000002101F0D7FC03001393139B002B5DD10F9A109BD3180F9310AA12990FA80223EFF772FE03001393139B002B4ED10F9B109A0B9800210691002105910021049160 +:40D7000000210391029201930023009300230022002101F0AFFC03001393139B002B35D10F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1A +:40D740001800EFF7A5FE03001393139B002B1DD10CAA12990FAB1800EFF79AFE03001393139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B2C +:40D780009A4203D0114B139300E0C0460CAB1800F0F75AFB139B002B0FD0139B0C4A134005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B0CF +:40D7C00000BDC04600C3FFFF80C2FFFF9AC2FFFF80FF000010B590B0059004910392049B0693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D052 +:40D800000F9B824A94466344FCE0069A0A9BD3180D930BAA0D9906AB1800EFF7FDFD03000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D99BE +:40D8400006A80423EFF7C0FD03000F930F9B002B04D00F9B6D4A94466344D3E0059B7C3306990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634AA8 +:40D8800094466344BEE0069A0A9BD318069300230E93069A0D9B9A4234D00AAA0D9906A8A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB6E +:40D8C00003000F930F9B002B0AD1059A07AB11001800FFF725FC03000F930F9B002B11D0059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A94469B +:40D9000063447FE0069A0D9B9A4246D00AAA0D9906A8A123EFF758FD03000F930F9B002B2FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D032 +:40D940000F9B324A944663445CE0069A0A9BD2180C9B9A4201D02F4B54E0059A0C9906AB1800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B3F +:40D9800040E00F9B623308D0059B1800F7F795FD0F9B1E4A9446634434E00E9B002B1ED10598059B88331900059B7C331A00059B28331C0000230193002300932300FAF77C +:40D9C000CFFC03000F930F9B002B08D0059B1800F7F773FD0F9B0D4A9446634412E0059A059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B8A +:40DA000000E00023180010B010BDC04600C3FFFF80C2FFFF9AC2FFFF80B1FFFF00B58FB0039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A871 +:40DA40003023EFF7C1FC03000D930D9B002B04D00D9B584A94466344A9E0059A099BD3180C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634462 +:40DA800095E00A9B002B04D00D9B4B4A944663448DE006AB13226A440C9905A8FFF742FC03000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC1C +:40DAC00003000D930D9B002B04D00D9B394A944663446CE0099B002B01D1384B67E013236B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800A5 +:40DB0000FFF704F803000D930D9B002B01D00D9B4DE013236B441B78012B14D1039B18685968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF774 +:40DB4000A3FF0D9B33E013236B441B78022B04D013236B441B78032B25D1039B18685968FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B1868A9 +:40DB80005968FFF779FA059B099A1900FFF722FE03000D930D9B002B07D0039B1800FEF773FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF84 +:40DBC00080C3FFFF10B58EB0079006910592049308AB1800FEF732FE059B002B06D0059B013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B64 +:40DC00000193049B00932300FEF724FE03000D930D9B002B2AD10120FEF750FF03000C930C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA5A +:40DC400008AB196808AB5B681A00FFF765FC03000D930D9B002B03D0079B1800FEF714FF08AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D171 +:40DC8000834BF5E00D9B7C4A934201D00D9BEFE0059B002B06D0059B013B069AD3181B78002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B009323009A +:40DCC000FEF7C8FD03000D930D9B002B2AD10220FEF7F4FE03000C930C9A079B11001800FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B6842 +:40DD00001A00FFF767FD03000D930D9B002B03D0079B1800FEF7B8FE08AB1800FEF784FE0D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4AFA +:40DD4000934201D00D9B93E0059B002B06D0059B013B069AD3181B78002B02D0464B0D930EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D93CF +:40DD80000D9B002B16D108AB196808AB5A68079B1800FFF743FE03000D930D9B002B03D0079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E023 +:40DDC000059A0699079B1800FFF728FE03000D930D9B002B01D100234AE0079B1800FEF753FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE87 +:40DE0000031E0DD1079B18685968FFF72CF9059A069B1900FFF780FB031E01D1002327E0079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B110004 +:40DE40001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031E01D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFFA43604103B +:40DE8000C436041080ECFFFF80C4FFFF00EDFFFF00C4FFFFE436041004370410243704104037041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0DA +:40DEC000059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB029300230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D93012022 +:40DF0000FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD03000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F8020032 +:40DF40000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002BD5 +:40DF800006D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CAB029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D93BD +:40DFC0000D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9B52E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD012006 +:40E00000FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD03000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F88A +:40E0400002000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF713FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF730 +:40E0800091F903000F930F9B180010B010BDC04680EFFFFF5C3704107C37041080C3FFFF9C370410B83704109EC4FFFF82B06B46186059606B465B68180002B0704782B03B +:40E0C0006B46186059606B465B68180002B0704700B58DB005900491039200230A9307AB1800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B8C +:40E10000002B2CD107AA0499059B1800EFF7C2FB03000B930B9B002B21DB0B9B0A9AD3180A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED1E3 +:40E1400007AA0499059B1800EFF7A4FB03000B930B9B002B03DB0B9B0A9AD3180A9307AB1800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B93B1 +:40E180000B9B002B01DA0B9B15E00B9B0A9AD3180A930499059B30221800EFF72FFB03000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB09F +:40E1C000059004910392002328930398039B8833190028AA8523019306AB009313000022F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B6830 +:40E200001A00049BD31A1A00289B9A4202D26C235B420EE0059B1A68289B5B42D218059B1A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291C7 +:40E24000019200230793019B1B7804AA05A91800FEF7A0FA03000693069B002B01D0069B11E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079A38 +:40E28000D3180793079B180009B000BD00B587B003900291019200230593019B1800FEF75DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000F +:40E2C0000493049B002B01DA049B25E0049B059AD31805931FE0019B1800FEF73FFC0300022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049BE8 +:40E30000002B01DA049B07E0049B059AD318059301E0034B00E0059B180007B000BDC04680C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A69 +:40E34000049908AB1800FFF7A1FF03000993099B002B01DA099BA6E0099B0A9AD3180A93059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C23B4 +:40E380005B4290E0089B013B0893089B00221A700A9B01330A930A9A049908AB1800EFF741F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB0322180041 +:40E3C000EFF71CFA03000993099B002B01DA099B69E0099B0A9AD3180A93059B1800FEF7BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1E +:40E400001800FEF7ABFB0300022B15D1059B18685968FFF754FE0200049908AB1800FFF70BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A817 +:40E440000B9B00932300EFF70BFB03000993099B002B01DA099B26E0099B0A9AD3180A930A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD318B6 +:40E480000A93049908AB30221800EFF7B7F903000993099B002B01DA099B04E0099B0A9AD3180A930A9B18000CB010BD00B591B0059004910392049A039BD31809930023ED +:40E4C0000E93059B1800FEF749FB0300012B00D034E1059B18685968FFF7E8FD03000D9306AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E0D6 +:40E5000006AA049909AB1800EFF7C4F903000F930F9B002B00DAD4E00F9B0E9AD3180E9306AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB180060 +:40E54000EFF7A8F903000F930F9B002B00DAB8E00F9B0E9AD3180E9306A90D980023002201F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F9399 +:40E580000F9B002B00DA9CE00F9B0E9AD3180E9306AA0D98002301930023009313000022002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF90300B9 +:40E5C0000F930F9B002B00DA7BE00F9B0E9AD3180E9306AA0D9800230193002300930023002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F93A5 +:40E600000F9B002B5DDB0F9B0E9AD3180E930D980023019306AB009300230022002100F03DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B88 +:40E640003FDB0F9B0E9AD3180E930D9806AB01930023009300230022002100F01FFF03000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9BEF +:40E680000E9AD3180E9306A90D9800230193002300930023002200F001FF03000F930F9B002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD31859 +:40E6C0000E9306AB1800EFF7BFFB0F9B002B01DA0F9B35E1049909AB00221800EFF718FA03000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF741 +:40E7000091FF03000F930F9B002B01DA0F9B17E10F9B0E9AD3180E93049909AB30221800EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B180012 +:40E74000FEF70CFA0300022B00D0F6E0059B18685968FFF7B4FC03000C9300230B9300230A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AE6 +:40E78000D3180B93099B1A00049BD31A002B02DC6C235B42D4E0099B013B0993099B00221A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9B30 +:40E7C000BEE00F9B0B9AD3180B93049909AB03221800EFF713F803000F930F9B002B01DA0F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B3E +:40E8000001DA0F9B9CE00F9B0B9AD3180B93049909ABA1221800EEF7F1FF03000F930F9B002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800D3 +:40E84000FFF7FAFC03000F930F9B002B01DA0F9B76E00F9B0A9AD3180A930A9A049909AB1800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909AB47 +:40E88000A0221800EEF7BAFF03000F930F9B002B01DA0F9B54E00F9B0A9AD3180A930E9A0A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DAFD +:40E8C0000F9B3DE00F9B0E9AD3180E93099B04221A70049909AB01221800EFF719F903000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE2F +:40E9000003000F930F9B002B01DA0F9B18E00F9B0E9AD3180E93049909AB30221800EEF76DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B7A +:40E94000180011B000BDC04680C6FFFF00B583B001900091044B1B68009A019800219847C04603B000BDC046A0030008F0B583B001900091019B1C0000231D00009B1E00D6 +:40E9800000231F0032003B00200029001DF042F903000C001800210003B0F0BD70B5CAB0339032913192309300234493339B1B684293339B5B684193339B9B684093339BCD +:40E9C000DB683F93419B9A08419BD3183E93409B9A08409BD3183D933F9B9A083F9BD3183C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B459367 +:40EA00000023439351E2319A449BD3181B781900449B5A1C319B9B181B781B021943449B9A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B9353 +:40EA4000449B1A1D319B9B181B781900449B5A1D319B9B181B781B021943449B9A1D319B9B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B083326 +:40EA80001A00319B9B181B781900449B09331A00319B9B181B781B021943449B0A331A00319B9B181B781B041943449B0B331A00319B9B181B781B060B4336930023379320 +:40EAC000449B0C331A00319B9B181B781900449B0D331A00319B9B181B781B021943449B0E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B433493A5 +:40EB000000233593499B0093002301933A9B3B9C0099019A5B1854413A933B94489B0293002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18AD +:40EB4000544138933994479B069300230793399B1B000893002309930699079A089B099CC9186241369B379C5B18544136933794469B0A9300230B93379B1B000C930023AD +:40EB80000D930A990B9A0C9B0D9CC9186241349B359C5B185441349335943A9B4993389B4893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B18459396 +:40EBC000429A499B11001800FFF7D0FE05000E003C9A489B11001800FFF7C8FE03000C00ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800CB +:40EC0000FFF7B4FE03000C005B1974413A933B94419A499B11001800FFF7A8FE05000E00429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE1F +:40EC400003000C00ED1866413D9A469B11001800FFF78CFE03000C00ED1866413E9A459B11001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE45 +:40EC800005000E00419A489B11001800FFF76EFE03000C00ED186641429A479B11001800FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866415A +:40ECC0003D9A459B11001800FFF750FE03000C005B197441369337943F9A499B11001800FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B65 +:40ED000011001800FFF732FE03000C00ED186641429A469B11001800FFF728FE03000C00ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B97 +:40ED4000534345933B9B1B00109300231193389B399C1099119A5B18544138933994399B1B00129300231393369B379C1299139A5B18544136933794379B1B001493002382 +:40ED80001593349B359C1499159A5B185441349335943A9B4993389B4893369B4793349B4693359B1B00169300231793169A459B9B184593499B189300231993459B9B0808 +:40EDC0001A9300231B931899199A1A9B1B9CC9186241459B1C9300231D9303231C9C1D9D200098431E900023280018401F901E9B1F9C5B1854413A933B94459A03231340DC +:40EE000045933A9B4993489B2093002321933B9B1B00229300232393209B219C2299239A5B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B5F +:40EE4000259C2699279A5B1854413A933B943A9B4793469B2893002329933B9B1B002A9300232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D9310 +:40EE80003B9B1B002E9300232F932C9B2D9C2E992F9A5B1854413A933B943A9B4593449B10334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62EB +:40EEC000339B479A9A62339B469ADA62339B459A1A63C0464AB070BD00B583B00190019B002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D049 +:40EF0000019B48211800FFF721FDC04603B000BD00B589B003900291019200230793019B0693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0F5 +:40EF4000069B002B3ED0039B5B6C002B3AD0039B5B6C1022D31A0593019A059B9A4213D2039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B3A +:40EF80005A64002306931DE0039B5B6C3033039AD3180433059A0299180018F055FD039B00225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059B3D +:40EFC000D31A0693069B0F2B13D9069B1B090493029A079BD218049903980123FFF7DEFC049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B33 +:40F0000034331800029A079BD318069A190018F01BFD0023180009B000BD88B0039002910192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A783C +:40F040000499079BCB181B785340D9B21B236B441B226A4412780A431A70079B01330793079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009302 +:40F0800000230593029B002B13D0039B0833019A02991800EFF792FB03000593059B002B41D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A009999 +:40F0C0001800EFF77BFB03000593059B002B2CD1099B002B0BD0039B38330A9A09991800EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF7A0 +:40F100005DFB03000593059B002B12D10D9B002B10D0039B14330E9A0D991800EFF74EFB0300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A94465C +:40F14000634400E00023180007B000BD80BFFFFF10B584B0039002910192039B5C68039B08331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039BB0 +:40F18000083300211800EFF713FE031E07DD039B083300211800EFF7CCF8031E01D12B4B51E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C33002118006E +:40F1C000EFF7B7F8031E0FD0039B383300211800EFF7EEFD031E07DD039B383300211800EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0FE +:40F20000029B002B11D0039B443300211800EFF7CFFD031E07DD039B503300211800EFF7C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC3B +:40F24000024B00E00023180004B010BD80BFFFFF30B591B0039000230F93039B083300211800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1EA5 +:40F280009341DBB20D93039B383300211800EFF78FFD03005A1E9341DBB20C93039B203300211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD030096 +:40F2C0005A1E9341DBB20A930D9B002B0AD00C9B002B07D00B9B002B04D00A9B002B01D0012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D08B +:40F300000A9B002B01D0012300E0002308930D9B002B0AD00C9B002B07D00B9B002B04D10A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D103 +:40F340000B9B002B04D10A9B002B01D0012300E000230693099B002B05D1089B002B02D1079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B02 +:40F38000002B22D10D9B002B1FD00C9B002B1CD0039B08331800039B2C331900039B38331A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B0833180020 +:40F3C000EFF7AFF80200039B5A60089B002B1BD0039B08331800039B14331900039B20331A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B97 +:40F40000254A9446634443E0079B002B16D0039B2C331800039B38331900039B14331A00039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002BE3 +:40F440001FD0039B2C331800039B38331900039B20331C00039B44331D00039B5033039A5C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A94466344EA +:40F4800006E00599039B01221800FFF761FE0300180011B030BDC04680BFFFFF00B587B00390029101920093039B083300211800EFF77EFC031E21D0039B2C33002118009C +:40F4C000EFF776FC031E19D0039B383300211800EFF76EFC031E11D0039B203300211800EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E0002304939C +:40F50000049B002B0AD1019B002B05D1009B002B02D1089B002B01D02B4B52E0029B002B0CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002BDB +:40F540000CD0039B2C331A00019B11001800EEF742FD03000593059B002B2FD1009B002B0CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B88 +:40F580000CD0039B20331A00089B11001800EEF722FD03000593059B002B0FD1099B002B0ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E02A +:40F5C0000023180007B000BD80BFFFFF00B587B00390029101920093039B083300211800EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800BB +:40F60000EFF7D6FB031E11D0039B203300211800EFF7CEFB031E09D0039B143300211800EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD00C +:40F64000039B44331A00029B11001800EEF7C3FC03000593059B002B1FD1019B002B0CD0039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D077 +:40F68000039B5C331A00009B11001800EEF7A3FC03000593059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC22002117 +:40F6C000180018F053FA019A0299039B180000F003F8C04605B000BD84B0039002910192039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180061 +:40F7000002B0704700B583B00190019B002200211800FFF71DFD031E01D0164B27E0019B08331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031EF1 +:40F7400012D0019B14331800EEF7B9FE0300012B0AD9019B14331A00019B083319001000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059BB1 +:40F780001800FFF7BFFF031E07D1059B012201211800FFF7DDFC031E01D01D4B35E0059B08331800059B2C331900059B38331C00059B20331D00059B143300220292002248 +:40F7C000019200932B00220002F0FCFA031E01D00F4B1AE0059B2C331800059B38331900059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF93E +:40F80000031E01D0024B00E00023180007B030BD00BEFFFF00B583B001900091019B1800FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009BD9 +:40F84000083319001000EFF71BFA031E0AD1019B14331A00009B143319001000EFF710FA031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B4F +:40F88000002200211800FFF763FC031E01D0294B4CE007AB1800EEF7C5FA059B5A68049907AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF73C +:40F8C000DFF9031E03DB04235B420B9321E0059B5B680A93059B14331A00059B08331C00059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907ABA7 +:40F900001800EEF7BDFF03000B9302E0C04600E0C04607AB1800EEF797FA0B9B002B04D00B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B025 +:40F9400005900491039200230693059BA0229B58002B3FD0059B8C331800059B8C331900059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C335B +:40F980001900059B08331A00F0F756FF03000793079B002B00D072E0059B98331800059B98331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059BFC +:40F9C00098331900059B08331A00F0F735FF030007935DE0069B5A1C06920A2B01DD2E4B57E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D19A +:40FA0000059B8C331800059B98331900059B08331A00F1F737FD03000793079B002B34D1059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B083378 +:40FA40001A00F1F743FE03000793079B002B1ED1059B8C331800059B8C331900059B14331A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C046B3 +:40FA800006E0C04604E0C04602E0C04600E0C046079B180008B010BD80BBFFFF10B5A8B00590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059BDC +:40FAC00001211800FFF744FB031E01D0DF4BFCE121AB1800EEF7A6F91EAB1800EEF7A2F91BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB8D +:40FB00001800EEF78FF915AB1800EEF78BF912AB1800EEF787F909AB1800EEF783F906AB1800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1B0 +:40FB4000059B08331A0021AB11001800EFF798F8031E03DB04235B42279382E121AA09AB11001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A04999D +:40FB8000059B1800FFF7DAFE03002793279B002B00D039E1059B8C331A0021A921AB1800F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE8D +:40FBC00003002793279B002B00D021E1059B2C3319001EAB01221800EFF73DFB03002793279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00 +:40FC000000D009E1039B049A18A81C21F1F724FD03002793279B002B00D0FFE018AA1EA90FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB180021 +:40FC4000EFF74AFA03002793279B002B00D0E9E00FAB2693039B049A18A81C21F1F7FCFC03002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B95 +:40FC800000D0D3E0059B50331A000CA90CAB1800EFF722FA03002793279B002B00D0C7E00CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE0300279393 +:40FCC000279B002B00D0B5E0059B38331C00059B8033259A21A912A800932300F0F7C8FE03002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B6D +:40FD000000D09BE0059B5C331A0021A915AB1800F0F792F903002793279B002B00D08FE0059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B383327 +:40FD40001A0021A915AB1800F0F776F903002793279B002B00D077E015AA12A921AB1800EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB0F +:40FD80001800F0F759F903002793279B002B00D062E0059B08331A0021A921AB1800F0F74BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A8E7 +:40FDC00000932300F0F754FE03002793279B002B46D109AA06AB11001800EEF751FF031E02D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0F1 +:40FE0000C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E072 +:40FE4000C0460EE0C0460CE0C0460AE080BFFFFF80BCFFFFC04604E0C04602E0C04600E0C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D0D2 +:40FE80000FAB1800EDF7E0FF0CAB1800EDF7DCFF21AB1800EDF7D8FF15AB1800EDF7D4FF12AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279BF7 +:40FEC000034A9446634400E00023180028B010BD00BDFFFF00B59BB003900291019200930023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B688E +:40FF00001800FCF751FA03001593039B199350E0159B1793029A159B9A4201D2029B17931C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF8030098 +:40FF40001693169B002B3AD104A91C9B04221800FCF762F803001693169B002B31D105AA1C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C199278 +:40FF8000197805A8189A821812784A40D2B21A70189B01331893189A179B9A42EDD304ABDB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C0465E +:40FFC00002E0C04600E0C04605AB40211800FEF7BDFC169B18001BB000BD000010B58EB00590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE014 +:020000041002E8 +:40000000049B002B01D1654BC5E0059BA8229B58DBB21800FBF744FF03000B930B9B002B01D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3187B +:400040009A1C129B9A4207D3099B5A00129BD3189A1C0A9B9A4201D9504B9CE00A9A149B0021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D932C +:400080000D9B002B04D00D9B454A9446634482E00C9A099BD3180C930C9B119A10990B98FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9A71 +:4000C000D21A129BD31A023B0C9AD3180C930C9B5A1C0C9201221A70129A13990C9B180017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002BED +:4001000028D1099B0133149AD0180A9A099BD31A591E149B5A1C099C06AB00932300FFF7D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E10 +:40014000099906AB009313002200FFF7C3FE03000D9302E0C04600E0C04606AB1800FBF7D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB03004E +:4001800009E0149C039A04990598149B00932300FFF784FC030018000EB010BD80BFFFFF80BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B5842 +:4001C000002B01D0464B88E0049B002B05D00F9B002B02D0109B002B01D1414B7DE0059B5B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0AE +:40020000089A0E9BD31A033B0B930A9B5A1C0A9200221A70029B002B2FD10A9B5A1C0A9202221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D13C +:40024000099B013B0993099B002B02D0079B002BEBD0099B002B02D0079B002B04D0079B204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9249 +:4002800001221A7004E00A9B5A1C0A92FF221A700B9B5A1E0B92002BF5D10A9B5A1C0A9200221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7C0 +:4002C000D9FA030009E0109C039A04990598109B00932300FFF7E2FB030018000CB010BD80BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B85 +:400300000FD021E0069C079A089909980E9B02930D9B01930C9B00932300FFF743FF030013E0069C079A089909980E9B04930D9B03930C9B02930023019300230093230084 +:40034000FFF74CFE030000E0014B18000AB010BD00BFFFFF10B5E04CA5440590049103920293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA7432136077 +:40038000FFAB74331B680F2B06D9FFAB74331A688023DB009A4201D9D04BD9E1059BA8229B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1C0 +:4003C000FFAB70331B681800FBF7EEFF0300FFAA6C321360FFAB6C331B6801335A00FFAB74331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF7EA +:4004000039FA03000BE0FFABA0331C68039A049905981AAB00932300FFF740FB0300FFAA88321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB68 +:4004400000221800FBF792FD0300FFAA88321360FFAB88331B68002B04D007AB1800FBF753FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B686C +:40048000D31A5A1EFFAB6C33196807AB009313002200FFF71FFD0300FFAA88321360FFAB88331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B6859 +:4004C000D31A591E1AAA0132FFAB6C331C6807AB00932300FFF7FEFC0300FFAA88321360FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAADC +:4005000098321268FFA994310968FFA870300068FBF7BCFD0300FFAA88321360FFAB88331B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CBA +:40054000FFA97C310A601978FFAB7B33FFAA7B3212780A431A70FFAB7C331A68FFAB6C331B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB843371 +:400580001B68D3181A78FFAB7C331B68591CFFA87C3001601B785340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB8433F0 +:4005C0001A68FFAB6C331B689A42D3D30023FFAA80321360FFAB7A3300221A700023FFAA843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A321278C5 +:400600000A431A70FFAB7A331B785B42DAB2FFAB7A331B781343DBB2DB09DBB201225340DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360EA +:40064000FFAB6C331B685B00FFAA74321268D31A9A1EFFAB84331B689A42C4D8FFAB7C331A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7875 +:4006800001225340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB7B331B78002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B68F9 +:4006C0009A1AFFABA8331B689A420FD9064BFFAA883213602DE0C04678FBFFFF80BFFFFFA0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1A53 +:40070000FFAB9C331B681A60FFAB9C331B681A68FFAB7C331968FFABA4331B68180017F093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F916 +:400740000AAB40211800FEF701F9FFAB88331B6818009123DB009D4410BDC04610B5D44CA54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D10F +:40078000059BA4229B58002B01D0CA4B8BE1059B5B68FFAA1C321360FFAB1C331B680F2B06D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40337F +:4007C0001968059B1800FFF755F803000BE0FFAB40331C68039A0499059806AB00932300FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA243213600A +:40080000FFAB233300221A70FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340FC +:40084000DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213603DE0FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B7895 +:400880005B42DBB21343DBB2DB09DBB201225340D9B2FFAB2233FFAA223212780A431A70FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A001E +:4008C000FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA2432AC +:400900001360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A7066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B78D7 +:400940005BB213435AB2FFAB23331A700023FFAA283213602AE0FFAB24331A68FFAB28331B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB223333 +:400980001A70FFAB22331B785A425341DBB21A00FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB34 +:4009C00024331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB212 +:400A00005AB2FFAB23331B785BB213435AB2FFAB23331A70FFAB23331B78002B04D0264BFFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB4833F9 +:400A40001B689A4204D91D4BFFAA3032136020E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B688F +:400A8000180016F0E1FF0023FFAA3032136000E0C0468023DA0006AB11001800FDF756FFFFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFFBA +:400AC00010B58AB00990089107920693099BA4229B58002B02D0012B11D025E0069C079A089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069CCC +:400B0000079A089909980F9B05930E9B04930D9B03930C9B029300230193002300932300FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B0059004910392029346 +:400B4000279B1E9300232093029B012B06D1059BA4229B58012B01D09C4B33E1049B002B01D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F9030031 +:400B80001C931C9B002B01D1904B1BE11C9B1800FBF70AFC03002593059BA8229B58DBB21800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B938D +:400BC0001B9B023B1A931B9A1A9BD3189A1C1D9B9A4201D97D4BF5E01B9A1B9BD3189A1C1D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F074 +:400C0000B5FF219A09A90398049B984703001F931F9B002B04D01F9B6D4A94466344D1E0059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3187F +:400C40001E931E9B5A1C1E9201221A70219A09A91E9B180016F0F8FE1E9A219BD3181E9306AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E02E +:400C800006AB1800FBF7AEF903001F931F9B002B6FD11E9906AB08221800FBF7BDF903001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A6E +:400CC00009A906AB1800FBF7A7F903001F931F9B002B54D11E9A06AB11001800FBF7BAF903001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9B91 +:400D0000D21A209BD31A591E1B9C1E9A06AB00932300FFF7DFF803001F931F9B002B32D1059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2180 +:400D400011410A0052B213405BB2DAB2279B1A701E9A1B9BD3181E931E9B5A1C1E92BC221A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C046D6 +:400D800002E0C04600E0C04606AB1800FBF7BCF81F9B002B01D01F9B14E0029B002B07D1279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF770 +:400DC0006DFE0300180022B010BDC04680BFFFFF80BBFFFF00B58BB00291019200930F236B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D07A +:400E00000F236B441B781800FBF74AF803000793079B002B01D16C4BD3E006AA05A90F236B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069AB6 +:400E4000029BD31808337F2B0ED8029B0A331A00029B9A4208D3069A029BD3180A331A00029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0AD +:400E8000069A029BD318099AD31A0A3B099309E0099A029B9A4201D24B4B92E0099A029BD31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089BC3 +:400EC0005A1C089201221A70099A089BFF21180016F04CFE089A099BD3180893089B5A1C089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0C8 +:400F0000089B5A1C089230221A70089B5A1C0892069AD1B2029AD2B28A18D2B20832D2B21A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1CFB +:400F4000089206221A70089B5A1C0892069AD2B21A700599069A089B180016F075FD069B089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089214 +:400F800004221A70089B5A1C0892029AD2B21A70029A0199089B180016F056FD089A029BD31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E045 +:400FC000002318000BB000BD80BFFFFF10B58AB005900491039202930023089300230793029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB187868 +:401000000F9B00932300FFF7E5FE03000993099B002B01D0099B63E0029B002B07D10F9A0F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B2D +:40104000002B02D110235B424AE0059B5B681900012015F03BFE03000793079B002B06D1089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD29 +:4010800003000993099B002B1ED1079A0899059B1800FEF7EFFB03000993099B002B15D1059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9BBA +:4010C000180016F0C1FC02E0C04600E0C046089B180016F07FF9079B180016F07BF9099B18000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA422D8 +:401100009B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02934E +:401140000B9B01930AAB1B7800932300FFF7F2FC030000E0014B180008B010BD00BFFFFF10B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BBD +:40118000FBE1059B5B68FFAA8C321360FFAB8C331B680F2B06D9FFAB8C331A688023DB009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB0300C5 +:4011C0000BE0FFABB0331C68039A0499059807AB00932300FEF762FC0300FFAA90321360FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B688A +:40120000013B9C4AFFA994318C466244D35CBC2B01D0994BB1E1FFAB9C331B78002B1AD0FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B4F +:401240009BE1FFAB84331B681800FBF7ADF80300FFAAA0321360FFABA8331B781800FAF71FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B68180054 +:40128000FBF792F80300FFAA80321360FFAB2C3308220021180016F069FC059B08331800EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C3363 +:4012C0001A6813005B079B1ADB001A00FFAB7C331B68D318083319410B1E01D0644B4CE1FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B6807 +:40130000013BFFAA8C321360FFAB80331B689A1CFFAB8C331B689A4201D9554B2DE1FFAB8C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB203332 +:401340001800FAF7D5FDFFAB84331968FFAB203300221800FAF70AFE0300FFAA90321360FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB803357 +:401380001C68FFAB78331A68FFAB88331868FFAB203300932300FEF79DFD0300FFAA90321360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C32BA +:4013C0001268D100FFAA7C3212688A1AFF2111410A0052B213405BB2DAB2264BFFA994318C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB0E +:4014000088331B689A4205D9FFAB88331B681B78002BE9D0FFAB88331B685A1CFFA988310A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31A36 +:40144000FFAA74321360FFABAC331B68013315D0FFABAC331B68FFAA743212689A420DD0054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20337F +:401480001800FAF7AFFD0300FFAA90321360FFAB90331B68002B5FD1FFA92C31FFAB203308221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A6845 +:4014C000FFABA4331968FFAB20331800FAF7A4FD0300FFAA90321360FFAB90331B68002B3ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA903213600B +:40150000FFAB90331B68002B2CD1FFAA3432FFAB203311001800FAF79DFD0300FFAA90321360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F007 +:401540005DFA031E11D00F4BFFAA903213600CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB0002 +:401580009D4410BD80BCFFFF10B58CB00990089107920693099BA8229B58002B04D0099BA8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B05930123F4 +:4015C0005B4204932F236B441B780393109B02930F9B01930EAB1B7800932300FFF7C0FD030018000CB010BD10B58AB0059004910392029300230993059B5B680793002384 +:40160000069300230893029B012B06D1059BA4229B58002B01D0384B6BE0079B1900012015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B8D +:4016400003D110235B42099338E0079C0E9A0D990CAB1878089B00932300FFF7BBFB03000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C4F +:40168000039A04990598069B00932300FEF706FA03000993099B002B0FD1079A0899069B1800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B3E +:4016C00009D0079A069B11001800FDF73FF9069B180015F07FFE089B002B09D0079A089B11001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF22 +:4017000010B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E078 +:40174000049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF714FF030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB7A +:40178000019B98331800ECF75FFB019B68331800ECF75AFB019B20331800ECF755FB019B38331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08332D +:4017C0001800ECF741FB019B80331800ECF73CFB019B74331800ECF737FB019B5C331800ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000085 +:4018000010B59EB0059004910392029300231D9306AAB44B1000190036231A0016F014F936231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D050 +:4018400004235B424AE1059B00211800EDF7B0FA031E1DDD039B01211800EDF7A9FA031E16DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DDD8 +:40188000059A049B11001800EDF7FAF9031E02DB04235B4222E114AB1800ECF7C3FA17AB1800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A989 +:4018C00017AB01221800EDF7C6FC03001D931D9B002B00D0E8E017AB1800ECF7A8FD02006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB23 +:4019000011001800EDF7A0F803001D931D9B002B00D0CBE072236B4400221A80059B9B681B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C75 +:401940001A0014AB11001800ECF7C6FC059A14A9029B1800EFF796FD03001D931D9B002B00D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B0093F9 +:401980002300EFF775F803001D931D9B002B00D090E01CAB01221A805EE014AB01211800EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE066 +:4019C000059A14A9029B1800EFF75CFD03001D931D9B002B00D071E0029B01211800EDF7E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A2098A8 +:401A00000021EEF733FC03001D935EE014A914AB01221800EDF71FFC03001D931D9B002B4ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800FF +:401A4000EEF7FAFE03001D931D9B002B3CD11CAB1CAA128801321A801CAA6A236B4412881B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B44DF +:401A800072226A44128801321A8072236B441A881B9B9A4200D24EE700E0C04604235B421D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E022 +:401AC000C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB010BDC046D437041000B58DB0039002910192009300230B93009B002B06D0009B71 +:401B000000211800EDF754F9031E02D004235B4271E0039B01211800EDF74AF9031E0DDD029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4288 +:401B400059E008AB1800ECF76DF905AB1800ECF769F9039908AB01221800EDF77CFB03000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AABC +:401B800008A9009B1800EFF77DFC03000B930B9B002B22D105AA08A908AB1800EEF74CFA03000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D19F +:401BC00008AA0199009B1800EFF780FD03000B9308E0C04606E0C04604E0C04602E0C04600E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB083 +:401C0000039002910192009300230B9308AB1800ECF708F905AB1800ECF704F9009B002B33D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B47 +:401C4000002B00D08CE0019A009905AB1800EDF791FA03000B930B9B002B00D082E008AA05A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F806 +:401C8000031E02D04E4B0B937BE00E9B002B30D0029B002B02D1494B0B9372E0029908AB01221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA030089 +:401CC0000B930B9B002B53D108AA05A905AB1800EEF7B2FD03000B930B9B002B4AD105AB00211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B87 +:401D0000002B02D12D4B0B933BE0029A0F9908AB1800EEF791F903000B930B9B002B2BD108A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF713 +:401D40007BFD03000B930B9B002B19D108AB00211800EDF72DF8031E13D0194B0B9310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E03C +:401D8000C0460B9B002B0CD00B9B0D4A934208D00B9B0A4A934204D00B9B094A944663440B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFFAD +:401DC00000BEFFFF00B58DB0039002910192009300230B9308AB1800ECF724F805AB1800ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF78D +:401E00001BF903000B930B9B002B00D0C8E0039B01211800ECF7CCFF031E07DD039A08AB11001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B7D +:401E4000002B20D0009B01211800ECF7B1FF031E16DD0E9B01211800ECF7AAFF031E0FDD039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DBAF +:401E80005C4B0B939DE0029B002B00D199E0019B002B00D195E0009B002B00D191E00E9B002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E98 +:401EC00002DC4C4B0B937CE00E9A009908AB1800EEF7B2F803000B930B9B002B62D108A908AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF957 +:401F000003000B930B9B002B50D105AA08A908AB1800EEF791FC03000B930B9B002B47D108AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF83E +:401F400003000B930B9B002B34D108A908AB01221800EDF780F903000B930B9B002B2BD1019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF734 +:401F80005BFC03000B930B9B002B19D108AB00211800ECF70DFF031E13D0164B0B9310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E038 +:401FC000C04608AB1800EBF73FFF05AB1800EBF73BFF0B9B002B08D00B9B064A934204D00B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291A3 +:40200000019200930023079304AB1800EBF70AFF009B002B15D0039904AB01221800EDF71AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B33 +:4020400026D10A9B002B15D0029904AB01221800EDF701F903000793079B002B1AD104AA01990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B56 +:402080001800EFF723FB0300079306E0C04604E0C04602E0C04600E0C04604AB1800EBF7D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B02A +:4020C00000BD00B583B00190019B002B05D0019B6C211800FCF73AFC00E0C04603B000BD00B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD00001D +:4021000082B001900091019B00221A60019B00225A60009B002B18D1019B1B4A9A60019B1A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A51 +:402140001A62019B174A5A6217E0019B164A9A60019B164ADA60019B154A1A61019B154A5A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A6651 +:402180000023180002B0704767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF1115586853 +:4021C000A78FF964A44FFABE70B5CEB00190009100234D930EE0019B4D9A02329200D1581F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E016 +:402200004D9B9B00009AD3181B781A064D9B9B0001330099CB181B781B041A434D9B9B0002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA39 +:40224000944663444D9A9200D1504D9B01334D934D9B0F2BD4D900234D9300F09EFCC046D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB41B2 +:402280001900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA4466344A7 +:4022C0005C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D218E34B4EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D9 +:40230000D84B4EA98C4663441B680D21CB415A40D44B4EA98C4663441B681621CB415A40D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA88446634498689F +:40234000C84B4EACA44663441C68C64B4EADAC4663445B68234303400B43D3184B93C14B4EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA918 +:402380008C466344DA61B74B4EAA944663449A69B44B4EA98C466344DB680621CB411900B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B4017 +:4023C000D218A84B4EA98C4663445969A54B4EA884466344D868A34B4EACA44663441C69A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9BD9 +:40240000591C9A4B4EA8844663448900CB58D3184C93944B4EAA94466344DB690222D3411A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB4146 +:402440005A40884B4EA98C466344D969854B4EA8844663441B681940824B4EA8844663445868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93FC +:40248000784B4EAA944663449A684C9BD218754B4EA98C4663449A604C9A4B9BD218714B4EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB41B4 +:4024C0001900684B4EA8844663449B680B20C3415940644B4EA8844663449B681920C3414B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA446634438 +:40250000DC68584B4EADAC4663441B69634003404B40D2184D9B991C534B8900CB58D2184D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B69022223 +:40254000D3411A00474B4EA98C4663449B690D21CB415A40434B4EA98C4663449B691621CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA88446A7 +:4025800063441868374B4EACA44663449C69354B4EADAC466344DB69234303400B43D3184B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218EC +:4025C000284B4EA98C4663445A61264B4EAA944663441A69234B4EA98C4663445B680621CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920BE +:40260000C3414B40D218174B4EA98C466344D968144B4EA8844663445868124B4EACA44663449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB5831 +:40264000D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B6906E0C046D4FEFFFF0C380410F4FEFFFF0222D3411A00FE4B4EA98C4663445B6904 +:402680000D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C4663445969F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C690F +:4026C000EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9BD218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA4D +:4027000094466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B680B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663445E +:402740009968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B68634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA884466344A7 +:402780008900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C4663441B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C46634453 +:4027C0001969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA44663441C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA69D7 +:402800004C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944B4EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA88446634481 +:40284000DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C4663445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663446F +:402880005B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA8844663448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C46FA +:4028C0006344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C466344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA44626 +:402900006344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663449A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A6081 +:402940004B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA8844663449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA948 +:402980008C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4663441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA830 +:4029C000844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA98C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA9E0 +:402A00008C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EACA44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA94465E +:402A400063445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C4663445A60034B4EAA944663441A6806E0C046D4FEFFFF0C380410F4FEFFFF4B4B4EA992 +:402A80008C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA8844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634473 +:402AC00058693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9BD91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4BAC +:402B00004EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234B4EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA884466344A7 +:402B40009B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC4663449B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4640 +:402B800063441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D8FFF762FB10234D9300F08CFFD4FEFFFF0C380410F4FEFFFFFE4B4EAA9446634447 +:402BC000DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B55 +:402C00004EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB58112145 +:402C4000CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B4EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D +:402C80004D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B4EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400F2 +:402CC000E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA98C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA47 +:402D0000944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA98C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B68D1 +:402D400019409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B68234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C4663440E +:402D8000DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA98C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA889 +:402DC00084466344DB681920C3414B40D218794B4EA98C4663445969764B4EA884466344D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9BE9 +:402E0000591C6D4B8900CB58D2184D9B01334D99481E6A494EACA4466144800041581120C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F4912 +:402E40004EADAC466144A4006158890A48404D998C1F5A494EADAC466144A400615840184D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F49DC +:402E80004EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA8EE +:402EC00084466144980044503C494EA8844661449B005B58D3184C93364B4EAA94466344DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344B7 +:402F0000DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B4EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B682343034094 +:402F40000B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9A4B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C466344DC +:402F80009B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA8844663449B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFF0C380410F4FEFFFFB4 +:402FC00063441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC4663441B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA884469F +:4030000061444D98800041581120C1410800EE494EACA44661444D9CA40061581324E1414840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A0 +:40304000A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D990D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAE54 +:40308000B4466144AD006958C908614040184D990E390C00CC494EADAC466144A40061584418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B66 +:4030C0004EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84B4EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA8844663448A +:40310000DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC466344DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C464F +:4031400063445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B4EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B36 +:403180004EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA8844663445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D21850 +:4031C0004D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA4466144800041581120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C5C +:4032000071494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A400615840184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0056 +:4032400061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB4466144AD006958C908614040184D990D390C0055494EADAC466144A40061584418524943 +:403280004EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA944663445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4658 +:4032C00063445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B691940374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B6923430E +:4033000003400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A604C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4620 +:4033400063441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA8844663441B681920C3414B40D218144B4EA98C4663449968124B4EA8844663441868A9 +:403380000F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191D084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C0468E +:4033C000D4FEFFFF0C380410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A40061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1E2C +:40340000F3494EADAC466144A400615840184D990B390C00EE494EADAC466144A40061580724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D9910 +:403440000B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EADAC466144A40061584418D9494EA88446614498004450D6494EA8844661449B0084 +:403480005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B690D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C466344196955 +:4034C000C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C69BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BE7 +:40350000D218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAA944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB6996 +:403540000B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634459689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B6863 +:40358000634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EACA4466144800041581120C14108004D99CC1C87494EADAC466144A400615813247F +:4035C000E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EADAC466144A400615840184D990A390C0077494EADAC466144A40061580724E141B2 +:403600000C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC46614465 +:40364000A4006158441862494EA884466144980044505F494EA8844661449B005B58D3184C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB41EB +:403680005A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA8844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EAD6F +:4036C000AC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B4EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA9446634484 +:403700005A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C34159402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B73 +:403740004EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B68634003404B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA44661441A +:40378000800041581120C14108004D990C1D10494EADAC466144A40061581324E14148404D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144E1 +:4037C000A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFF0C380410CB494EADAC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD00695834 +:403800001225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D990A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3497D +:403840004EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4B4EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B92 +:403880004EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4B4EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA0F +:4038C000944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C4663445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B02 +:403900004EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D2187B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B78 +:403940004EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B07334D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC4601 +:403980006144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A48405A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40053 +:4039C00061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C404D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043499A +:403A00004EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663441E +:403A40005B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C46634459682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663442C +:403A80005C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A694C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B0E +:403AC00008334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4B4EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B23 +:403B0000072BE7D9002318004EB070BDF4FEFFFFD4FEFFFF0C38041000B589B0039002910192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039BD0 +:403B40001A68019BD218039B1A60039B1A68039B1A60039B1A68019B9A4204D2039B5B685A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A18 +:403B80000299180013F060FF039B28331A00039B11001800FEF718FB03000593059B002B01D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039BC6 +:403BC00011001800FEF700FB03000593059B002B01D0059B16E0029B40330293019B403B0193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F037 +:403C000023FF0023180009B000BD00B587B001900091019B1B683F2213400593059B5A1C0592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059BFD +:403C40003822D31A1A00002113F090FF21E0019B28331A00059BD018059B4022D31A1A00002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D044 +:403C8000049B43E1019B283338220021180013F06DFF019B1B685A0F019B5B68DB0013430393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61223F +:403CC0009954039B1B0AD9B2019B62229954039BD9B2019B63229954029B1B0ED9B2019B64229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B200 +:403D0000019B67229954019B28331A00019B11001800FEF759FA03000493049B002B01D0049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009BB1 +:403D40009A1C019B9B681B0ADBB21370009BDA1C019B9B68DBB21370009B1A1D019BDB681B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB284 +:403D80001370009BDA1D019BDB68DBB21370009B08331A00019B1B691B0EDBB21370009B09331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B8C +:403DC0000B331A00019B1B69DBB21370009B0C331A00019B5B691B0EDBB21370009B0D331A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F33BA +:403E00001A00019B5B69DBB21370009B10331A00019B9B691B0EDBB21370009B11331A00019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A008D +:403E4000019B9B69DBB21370009B14331A00019BDB691B0EDBB21370009B15331A00019BDB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BBB +:403E8000DB69DBB21370009B18331A00019B1B6A1B0EDBB21370009B19331A00019B1B6A1B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6A7F +:403EC000DBB21370019B9B6E002B1ED1009B1C331A00019B5B6A1B0EDBB21370009B1D331A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F332F +:403F00001A00019B5B6ADBB213700023180007B000BD00B5A1B0039002910192009304AB1800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039983 +:403F400004AB1800FFF7E8FD03001F931F9B002B0AD1019A04AB11001800FFF756FE03001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190B5 +:403F8000019BD8220021180013F0F0FDC04603B000BD00B583B00190019B002B05D0019BD8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B100019008C +:403FC000D8231A0013F040FDC04603B000BD000010B582B001900091019A0023002413605460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B49 +:404000002B4C9361D461019A2A4B2B4C13625462019A2A4B2A4C9362D462019A294B2A4C13635463019A294B294C9363D463019A284B294C13645464019A284B284C9364EF +:40404000D46427E0019A274B274C13615461019A264B274C9361D461019A264B264C13625462019A254B264C9362D462019A254B254C13635463019A244B254C9363D4630E +:40408000019A244B244C13645464019A234B244C9364D464019BD021009A5A500023180002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5FF8 +:4040C0003AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E1319CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF720 +:40410000D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE1D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A44136062 +:40414000F9E0824B6B441B68DB001A00A723DB006B441B689B181B78069300230793069B1B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A93E3 +:4041800000230B930A9B1B040D9300230C930898099904000C9A0D9B15002C430E9419430F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109BB8 +:4041C0001B021393002312930E980F990400129A139B15002C431494194315915B4B6B441B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B001993002383 +:404200001893149815990400189A199B15002C431A9419431B914D4B6B441B68DB001A1DA723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B06E4 +:404240001E931A981B9904001E9A1F9B15002C432094194321913D4B6B441B68DB005A1DA723DB006B441B689B181B782293002323932299239A0B001B0C100007041F438D +:404280000B001E04209A219B1100314324913B4325932E4B6B441B68DB009A1DA723DB006B441B689B181B782693002327932699279A0B001B0E10000002019001981843B0 +:4042C00001900B001B020093249A259B1100009C019D2000014328912A00134329931B4B6B441B68DB00DA1DA723DB006B441B689B181B782A9300232B93289829990400A5 +:404300002A9A2B9B15002C432C9419432D91104B104A6A44D2180D4B6B441B68DB00D3182C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DC77 +:40434000FFE6E5E0E4F7FFFF3C0500001408000028FDFFFF18080000EB4B6B441B68991EEA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F9235 +:40438000E14B6B441B68991EE04BE14A6A44D218CB00D3185C681B68590FE20011433191620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24BDC +:4043C0006B441B68991ED14BD14A6A44D218CB00D3185C681B68A20699090291029911430291A30903933299339A0800029B039C1D006840349023005A403592C24B6B44C2 +:404400001B68D91FC14BC24A6A44D218CB00D3185C681B68349D359EED186641BA4B6B441B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0788 +:4044400063081A433792B04B6B441B680F3B1900AE4BAF4A6A44D218CB00D3185C681B6821061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A90C6 +:4044800023005A403B92A04B6B441B680F3B19009E4B9F4A6A44D218CB00D3185C681B686206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C900F +:4044C00023005A403D923C993D9A491972418E4B6B441B68103B1C008C4B8D486844C018E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C3181960EE +:404500005A60814B6B441B6801337F4A6A4413607D4B6B441B684F2B00DC1DE77D4B6B441B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605E +:404540005460744B6B441B685C6A1B6AFF22D2006A44136054606F4B6B441B68DC6A9B6AFE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654BDB +:404580006B441B68DC6B9B6BFC22D2006A4413605460604B6B441B685C6C1B6CFB22D2006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A4470 +:4045C0001360564B6B441B689A04FD23DB006B441B689B0B1A433E92FD23DB006B441B689A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C34 +:404600001A434092FD23DB006B441B689A03434B6B441B689B0C1A4341923E993F9A0800409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B680B +:40464000DB051A434592354B6B441B685A0AFD23DB006B441B68DB051A4344924299439A0800449B459C1D006840469023005A404792FA23DB006B445C681B684698479973 +:40468000C0186141FC23DB006B441A68FB23DB006B441B685A404892214B6B441A68214B6B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A6829 +:4046C0002B0013404B93FB23DB006B441B684A9C4B9D22005A404C92124B6B441B682A005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68FA +:40470000C918624112E0C0461408000028FDFFFF180800003C05000008080000EC070000E4070000DC07000010390410EF4BF0486844C018EF4B6B441B68DB00C3185C6853 +:404740001B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0F1A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A085C +:40478000DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A4350924E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B4A +:4047C0006B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A4354925299539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B4410 +:404800001B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B016B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A68C0 +:404840005A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9C1D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A441360E9 +:404880005460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D200CF +:4048C0006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A43619226 +:40490000814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A03794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A408E +:404940006592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0AFE23DB006B441B68DB051A4366926499659A0800669B679C1D00684068902300F6 +:404980005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC23DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441F +:4049C0001A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B686C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900F8 +:404A0000220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354B6B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B68E1 +:404A40001A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B681B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B4457 +:404A80001B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D006840749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B14 +:404AC0006B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D006840789023005A4018E0C04628FDFFFF18080000140800000C080000080800005E +:404B000004080000FC070000F4070000EC070000E407000010390410D40700007992FA23DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B9327 +:404B4000FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A437D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F93CD +:404B80007A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B185441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B6865 +:404BC0005B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4BA7 +:404C00006B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B6B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A43849234 +:404C4000FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859C1D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A430B +:404C800089929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141DE +:404CC000FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B685A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B00134053 +:404D00008F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A409192909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C918624199 +:404D40006F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A4413605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B4413 +:404D80001B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B689B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939AE2 +:404DC0000800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B441B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699D3 +:404E0000979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A6819 +:404E4000FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B441A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09B37 +:404E8000A19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A441360546080231B016B4419685A68F923DB006B445C681B685B185441802212013E +:404EC0006A4413605460F923DB006B4419685A68F823DB006B445C681B6817E008080000D40700000C0800000408000014080000FC070000F4070000EC070000103904109C +:404F000028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B680133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A4928023B2 +:404F40001B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B016B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A79261 +:404F8000A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0ACE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A4300 +:404FC000AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C681B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B32 +:405000006B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B49 +:405040006B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB00C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B686B +:405080005B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F1A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B4430 +:4050C0001B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B689B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB00CA +:405100006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B441B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23B5 +:40514000DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B681340BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B44AF +:405180001B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC4997A +:4051C000C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C681B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C6853 +:405200001B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B6B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B6842 +:405240009B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B689A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA90230069 +:405280005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0A174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A4018 +:4052C000CF92FE23DB006B445C681B68CE98CF99C0186141802317E01408000004080000FC070000F40700001039041028FDFFFF18080000E4070000DC070000D40700000A +:40530000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A68EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A687A +:405340002B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B683A +:40538000C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F922D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB +:4053C000DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64B6B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D89259 +:40540000D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA09B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43D7 +:40544000DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A68FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB0060 +:405480006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E392FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E09976 +:4054C000E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B185441F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B182B +:405500005441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B440C +:405540001B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B441B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23F0 +:40558000DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF9234 +:4055C000504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9C1D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384BE4 +:405600006B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F593802311 +:405640001B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C1B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D481B +:405680006844C018194B6B441B68DB00C3185C681B685B185441F922D2006A4413605460194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01D0 +:4056C000114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC070000080800000C080000103904101408000028FDFFFF18080000EC070000E407000074 +:40570000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A08FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC90230022 +:405740005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B68DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFADAD +:405780000435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B4419 +:4057C0001A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A43FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360CF +:40580000B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C681B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA10 +:405840002432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F923DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A6849 +:40588000F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B680133904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A6092 +:4058C000FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B689A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6D +:405900006B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B681D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4BF4 +:405940006B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB051A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD92 +:405980004C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A68F0 +:4059C0004C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D6823001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA88 +:405A00005C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A60FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B684E +:405A4000C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F922D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C330A +:405A80001A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23B3 +:405AC000DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC070000E407000014080000DC07000008080000D40700000C0800001039041028FDFFFF31 +:405B000018080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C35286023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB39 +:405B400088331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB7C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB6E +:405B800090331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B441A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B68DB +:405BC0001A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340A5 +:405C0000FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC35286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B18544154 +:405C4000F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B185441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68E8 +:405C80005B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B441B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A0442 +:405CC000924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B689B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFAB1F +:405D0000C0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFAB03 +:405D4000D0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFABC43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFAB83 +:405D8000D8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A68FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFAB53 +:405DC000E0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B6B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE43214685568220082 +:405E00005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B681B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B3948F2 +:405E40006844C018304B6B441B68DB00C3185C681B685B185441F922D2006A4413605460314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B4430 +:405E80001B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B6B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B0734 +:405EC0001A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A025ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F2 +:405F0000F4070000EC07000014080000E407000008080000DC070000D40700001039041028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B12 +:405F40006B441A60A54B6B441B68DA0980231B016B441B685B061A43A123DB006B441A60A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D4425 +:405F8000286023005A40974B6B441A6080231B016B441A68FF23DB006B441B681340A322D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B449A +:405FC0001A68FF23DB006B441B681A43A423DB006B441A60814B6B441A68834B6B441B681A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A5229B +:40600000D2006A4413607B4B6B441A680B001340794A6A441360A323DB006B4419685A680800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B449E +:406040001A60A223DB006B445C681B68A622D2006A44116852685B185441F822D2006A4413605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D200F9 +:406080006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441584A6A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF7D3 +:4060C00080FA514B6B441B6819695A694C4B6B445C681B685B1854414B4A6A44126813615461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412681B +:406100009361D461404B6B441B68196A5A6AFF23DB006B445C681B685B1854413A4A6A44126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324AEE +:406140006A4412689362D4622F4B6B441B68196B5A6BFD23DB006B445C681B685B185441294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B18C6 +:406180005441214A6A4412689363D4631E4B6B441B68196C5A6CFB23DB006B445C681B685B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C68AB +:4061C0001B685B185441104A6A4412689364D464002318000D4B9D44F0BDC046040800000C05000014050000FC0700001C05000024050000F40700002C0500003405000054 +:4062000008080000140800003C0500001C08000070B58AB0059004910392039B002B01D100237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B684D +:40624000039A0092002201920099019A5B185441059A13605460059B5C681B68039A150000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A936043 +:40628000D460099B002B3AD0039A089B9A4236D3059B50331A00099BD318089A0499180011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079BAD +:4062C0002EE0049A089BD3180493039A089BD31A03930023099312E0049A059B11001800FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B96 +:406300007F2BE9D8039B002B09D0059B50331A00099BD318039A0499180011F095FB002318000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959399 +:4063400095994B1C95938F9B50225B189A1880231370959B702B0CD88F9B50331A00959BD018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80238C +:406380009B1A1A00002111F0F1FB8F9B50331A008F9B11001800FDF7C5FE03009493949B002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F77 +:4063C0003C9300233D938F9BDC689B685A0FE6001643DD003C993D9A0B002B4392931300334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F93A6 +:406400006B46F8229B181B788F99C0228B54939B1B0C4093002341936B460133FF331B788F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54B4 +:40644000939B1B004493002345936B46882252009B181B788F99C3228B54939B1A02929B1B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929BD6 +:406480001B0C0293029B13430293939B1B0C03936B461B7A8F99C5228B54939B1A06929B1B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB2AB +:4064C0008F99C7228B54919B1B0E4693002347936B468C2252009B181B788F99C8228B54919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9351 +:4065000000234B936B46942252009B181B788F99CA228B54919B1B004C9300234D936B46982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B57 +:406540001B0E07936B461B7E8F99CC228B54919B1A04909B1B0C0893089B13430893919B1B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B1343FC +:406580000A93919B1B0A0B936B4628229B181B788F99CE228B54909B919CDBB28F99CF228B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F0FE +:4065C00009FCC046A8FDFFFF8F9B5C691B69230E4E9300234F936B469C2252009B181B788E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B78C5 +:4066000013708E9B9A1C8F9B5C691B69230A5293002353936B46A42149005B181B7813708E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B06 +:40664000191D8F9B5C691B692202180E0C900C9810430C90230E0D936B4630229B181B780B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B463822F6 +:406680009B181B780B708E9B991D8F9B5C691B692206180A1090109810431090230A11936B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9B52 +:4066C000DC699B69230E5693002357936B46AC2149005B181B7813708E9B09331A008F9BDC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BC1 +:40670000DC699B69230A5A9300235B936B46B42149005B181B7813708E9B0B331A008F9BDC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9B6D +:40674000DC699B692202180E1290129810431290230E13936B4648229B181B780B708E9B0D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B185F +:406780001B780B708E9B0E3319008F9BDC699B692206180A1690169810431690230A17936B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A00ED +:4067C0008F9B5C6A1B6A230E5E9300235F936B46BC2149005B181B7813708E9B11331A008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A006C +:406800008F9B5C6A1B6A230A6293002363936B46C42149005B181B7813708E9B13331A008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B1433190018 +:406840008F9B5C6A1B6A2202180E1890189810431890230E19936B4660229B181B780B708E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668227B +:406880009B181B780B708E9B163319008F9B5C6A1B6A2206180A1C901C9810431C90230A1D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B183307 +:4068C0001A008F9BDC6A9B6A230E6693002367936B46CC2149005B181B7813708E9B19331A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331B +:406900001A008F9BDC6A9B6A230A6A9300236B936B46D42149005B181B7813708E9B1B331A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C33C6 +:4069400019008F9BDC6A9B6A2202180E1E901E9810431E90230E1F936B4678229B181B780B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B469B +:4069800080229B181B780B708E9B1E3319008F9BDC6A9B6A2206180A2290229810432290230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B6F +:4069C00020331A008F9B5C6B1B6B230E6E9300236F936B46DC2149005B181B7813708E9B21331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9BC8 +:406A000022331A008F9B5C6B1B6B230A7293002373936B46E42149005B181B7813708E9B23331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B73 +:406A4000243319008F9B5C6B1B6B2202180E2490249810432490230E25936B4690229B181B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C2793A0 +:406A80006B4698229B181B780B708E9B263319008F9B5C6B1B6B2206180A2890289810432890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708A +:406AC0008E9B28331A008F9BDC6B9B6B230E7693002377936B46EC2149005B181B7813708E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B78137077 +:406B00008E9B2A331A008F9BDC6B9B6B230A7A9300237B936B46F42149005B181B7813708E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B78137022 +:406B40008E9B2C3319008F9BDC6B9B6B2202180E2A902A9810432A90230E2B936B46A8229B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230CDE +:406B80002D936B46B0229B181B780B708E9B2E3319008F9BDC6B9B6B2206180A2E902E9810432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB2F4 +:406BC00013708F9AD023D358002B00D001E18E9B30331A008F9B5C6C1B6C230E7E9300237F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002333 +:406C000081936B46802189005B181B7813708E9B32331A008F9B5C6C1B6C230A8293002383936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C2300849300235B +:406C400085936B46842189005B181B7813708E9B343319008F9B5C6C1B6C2202180E3090309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C21 +:406C80002204180C3290329810433290230C33936B46C8229B181B780B708E9B363319008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B702A +:406CC0008E9B37331A008F9B5C6C1B6CDBB213708E9B38331A008F9BDC6C9B6C230E8693002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893D4 +:406D0000002389936B46882189005B181B7813708E9B3A331A008F9BDC6C9B6C230A8A9300238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C931A +:406D400000238D936B468C2189005B181B7813708E9B3C331A008F9BDC6C9B6C2102180E3690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6CF4 +:406D80009B6C2104180C3890389808433890230C39936B46E0215B181B7813708E9B3E331A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B78C0 +:406DC00013708E9B3F331A008F9BDC6C9B6CDBB213700023180096239B009D4470BDC04600B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F805 +:406E000003003B933B9B002B13D1029A039904AB1800FFF7FDF903003B933B9B002B0AD1019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F828 +:406E40003B9B18003DB000BD00B583B00190019B10331800D9F752FB019B180003B000BD00B583B00190019B10331800D9F712FC019B180003B000BD10B582B00190054C7E +:406E8000054B9C4204D0503C2000FFF7E9FFF7E702B010BD106600087065000830B583B001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4BC8 +:406EC000180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B1900002006F074F9C04603B030BDC046FFFF000050650008C0000008A55C001069 +:406F000070650008796E021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B00290039100920193009A019B0298039914F050FE03000C001A00009B534318002F +:406F400004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A60019A002300249360D460019A0023002413615461019A0023002413625462019B5D +:406F8000282200219954019B0022DA62019B00221A63019B00225A63019B382200219954019B180002B010BD183C041000B583B00190074A019B1A60019B180000F08BF823 +:406FC000019B1800DDF7DEFD019B180003B000BD183C041000B583B00190019B1800FFF7E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180054 +:4070000005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B681800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B680A +:407040001800904703000C00019A13615461019B5B681B6828331A68019B5B681800904703000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C0044 +:40708000019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BDA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019BE6 +:4070C000180000F091F8019B3822012199540023180004B010BD00B585B00190019B38229B5C01225340DBB2002B01D0002332E0019B34330121180005F078F90300039326 +:40710000039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B38220021E7 +:407140009954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B00390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340A3 +:40718000DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039B5868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A8470300BC +:4071C0000593059B002B01D0059B04E0039B180000F00AF80023180006B070BD903B0410C83B04105FF0FFFF10B582B00190019BDC699B69019A13625462019B2822002194 +:407200009954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124B1EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF030091 +:407240000393039B002B01D0039B09E0019B5B681B6810331A68019B5B68180090470300180005B000BDC0465FF0FFFF903B0410C83B0410F0B597B0079006910492059344 +:40728000079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6B002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A009301948B +:4072C00013000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA24202D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059A7D +:40730000A24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079B58681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B1593DF +:407340001C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059AA24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B00EA +:4073800014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A1B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B6851 +:4073C0005B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A68DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FBFE +:4074000003005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFB1C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7002 +:4074400003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B69049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B1969BD +:407480005A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681A +:4074C0001B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C691B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00EB +:40750000159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E0000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499BD +:40754000059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D0139B20E0089B099C1A00159B9B181593089B099C0499059A5B1854410493059499 +:407580001C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFF903B0410D83B04100023180017B0F0BDF0B5C64600B596B00990089106920793099B382202 +:4075C0009B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF22180004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089BAB +:407600001593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD03001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D1E4 +:4076400002E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D625E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D042 +:40768000099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FA03005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D885 +:4076C0001C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A930B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9AB +:40770000099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BDB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193BB +:40774000119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F9099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC6858 +:407780009B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B6818331F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9 +:4077C000A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D0119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0A4 +:40780000119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B1815930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B005C +:4078400014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFF903B0410C83B041070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA6D +:4078800003001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059B38229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AD6 +:4078C000A24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A11 +:407900000A9B0B9C0093019413000A00A8470300180006B070BDC046903B0410F43B04105FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00D4 +:40794000DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8A4 +:40798000039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299AD +:4079C000039A0A9B0B9C0093019413000A00A8470300180006B070BD903B0410F43B04105FF0FFFF10B582B00190012300241800210002B010BD10B582B0019001230024A5 +:407A00001800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D0002300240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B09D +:407A400010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D0002300240DE0039B5B681B6830331968039B5868009B019C1A002300884703000C00180093 +:407A8000210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B09E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF53 +:407AC00010B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC699B691800210002B010BD10B582B001900091009B5C681B68019A11685268A2425E +:407B000002D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C681B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000076 +:407B400082B00190034A019B1A60019B180002B07047C046903C041000B583B00190019B1800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100925D +:407B80000193029B039C01214942CA175B18544118002100009A019B14F01CF803000C0019002200012300245B1854411A00009B5343180004B010BD10B584B0029003913B +:407BC00000920193009A019B0298039914F002F803000C001A00009B5343180004B010BD70B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B681B +:407C00002C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF03000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029BDE +:407C4000012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F910C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D000243D +:407C8000E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029A039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE03001893002337 +:407CC000199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B0F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D925 +:407D000010AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE03000493002305930E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B64 +:407D40009A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9CC91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A4253413A +:407D8000DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834B1800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF751 +:407DC000B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002466 +:407E000022E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079BFFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800E3 +:407E4000DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7B6 +:407E8000E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CD2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D14723EB +:407EC0000CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B0014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A73 +:407F0000099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD047230CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E0472391 +:407F40000CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB186441209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800BD +:407F8000DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F9318E0C046705E04108866000860660008C0000008A94E0010B866000890660008FD +:407FC0001699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9B9A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FE9 +:40800000DBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E9341DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074BC1 +:40804000180005F0C5F8054C10AB1800DDF720FA2300180022B070BDE8660008C0660008C0000008A94E001070B58AB0802212020023069207936A4A002308920993069B7F +:40808000079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA03005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DC +:4080C000DDF737FC0300009300230193009A019B28003100FFF74FFD030008930023099302AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089868 +:4081000009991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB681B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB689C +:408140001800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2B8 +:40818000002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264B180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B68180090470300EB +:4081C0000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D9F73CFF03000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B82 +:40820000180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC046008007100F01FF80705E0410446600080101FF80CC670008EC660008C0000008D5 +:408240004D880210543C041000B583B000230193144B1800DDF7C0FB0300180005F02CF9114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B0B +:4082800004D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180003B000BD10660008406600084466000800B583B001900091009B002B0CD0009BA1 +:4082C00018000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002B01D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D00023FF +:4083000000E00123180003B000BDC046CC3C041082B00190034A019B1A60019B180002B07047C046903C041000B583B00190019B180000F00BF9019B180000F0F7F9019B15 +:40834000180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F0ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B012218 +:40838000DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD00B587B00390029101920023059300230493039B20331800DDF70EFB030018009F +:4083C00005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E0029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF010 +:40840000CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039B9B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B016 +:4084400000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B5B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B68E3 +:408480009B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B685B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B68A5 +:4084C0001B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B685B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B6885 +:40850000DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B681B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009BFA +:4085400000225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA0300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B06 +:408580009A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B11001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF7D6 +:4085C0000BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB0039002910192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0E8 +:40860000009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B2F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A605F +:4086400037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039B9A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341B8 +:40868000DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B01330793DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD318FE +:4086C0005A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B001900091019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF71A +:408700006BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049B1B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091BE +:40874000019B013B0099180013F072F803000133009A5343180003B000BD30B58FB0059004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A86C +:408780000DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD000000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE3A +:4087C000019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009A9A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C220021A6 +:408800009954019B00221A67019B742200219952019B00229A67019B8C2200219950019B902200219950019B942200219950019B982200219954019B9C2200219950019BA3 +:40884000180003B000BDC046AC3E041000B583B001900C4A019B1A60019B180001F0B8FC019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B1800BA +:4088800003B000BDAC3E041000B583B00190019B1800FFF7DBFF019B180004F05FFD019B180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079B4C +:4088C000DB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB047CB +:4089000003000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86DAB +:40894000132302AA944663441B78079A0F33DB00D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B3C +:4089800000E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA944663440A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B936F +:4089C000079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B0013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C00002377 +:408A00001D000094019532003B00884703000993099B002B01D0034B00E0002318000DB0F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D18009047D3 +:408A400002000B00069207938022120600230892099308AA06AB11001800FFF746F803001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B683C +:408A800030331968059B986D119B009300230193009A019B884702000B000C920D93059B982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D157 +:408AC000B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B884702000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B6F +:408B00009A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD3181193C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059BB5 +:408B400088215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A7001235B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B44C6 +:408B80001978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039354 +:408BC00008AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D9934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9AC8 +:408C0000109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE03001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E025 +:408C400047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE01C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B6A +:408C8000012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B1393069B1293069B159AD31800221A7041E0059B90229B581393604A06AB110018002C +:408CC000DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B11001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD063 +:408D00001C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B11001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598B2 +:408D4000139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139A1299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A139943 +:408D8000159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D0229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129B6E +:408DC000D31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129BD31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A421D +:408E000002D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E0C046179B180018B010BDC046836668540201FF800501FF800101FF80A03E041046 +:408E40000701FF8010B598B00F900D920C933B236B440A1C1A700F9BDB6C1693324B17930D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B0022B9 +:408E80001A601A9B1A680F9B5B6D9A4248D21A9B1B681B01169AD3181593159BDC689B681A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B02 +:408EC0002FE00F9B1B6FD9B20C9B1A680D9C0F9811AB0A9313AB099312AB0893002307930123069300230593002304930023039314AB029300230193002300932300FFF79E +:408F000025FE03001793179B074A934207D100E0C0461A9B1B685A1C1A9B1A60B1E7C046179B180018B010BD0701FF8010B584B0039002910192039B8C229B581900182028 +:408F4000FFF7FAFB0400029B18000FF031F90200019BD018039B8C229B581900FFF7ECFB0300E318180004B010BD0000F0B591B00990089107920693099B079A110018001A +:408F8000FFF796F903001A0001235340DBB2002B01D0A84B4AE1169BA74A134001D0A54B44E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF8C1 +:408FC00003005A425341DBB2002B0ED0099B5B6E0293002303930E9B0299039A9961DA610E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099BB6 +:40900000180000F0B7FC03000F930F9B002B00D0F8E0069A0799099B1800FFF787FF03000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B7A +:40904000002B00D0E0E0099B1A6E0D9BD218099B9B6F9A4202D97B4B0F93DEE0099B1B6FD9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002BC9 +:409080001CD1099B1B6FD9B20C9A0E9B099800931823FFF709FC03000F930F9B002B00D0B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A3E +:4090C000934200D0A4E0169B002B00DAA2E0099B5A6D099B1B6D9A4204D3099B0021180000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6F68 +:40910000D9B20E9BDC699B691C000D9A0998002300931300220001F017FD00230F930E9B9C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12195D +:409140006B411C0013000E9A136254620E9B00229A620B9A0E9B1A630A9A0E9BDA620E9B374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803003F +:409180009AB20E9B9A810E9B0022DA810E9B069A1A610E9A01235B4214211800FFF7DDFA02000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099BF5 +:4091C0001B6FD9B20E9B5C6A1B6A1A000E9B9B891C000998079B00932300FFF79FFB03000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362E4 +:40920000546212E0C04608E0C04606E0C04604E0C04602E0C04600E0C0460E9B00221A60099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7FA403000879 +:40924000836668540B01FF801201FF800701FF8070B588B0059004910392029300230793059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E00E +:40928000059B2833180004F017F9049B0693069B1B68002B02D1244B07933CE0069B9A6A029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA09 +:4092C0000200069B5A61059B1B6FD9B2069B5C6A1B6A1C00029A0598039B009313002200FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B1974415C +:40930000069A13625462069B9A6A029BD218069B9A6200E0C046059B2833180004F0F4F8079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6CE8 +:409340000A93059B9C229A58049B9A4201D0714BDDE0049B0993099B1B68002B01D16D4BD5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180040 +:4093800000F0F8FAA9E0059B1B6FD9B2099BDC699B691A00099B059800931823FFF7BEFA03000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000A +:4093C0000893089B002B02D0544B0B9385E0099BDC699B69059A526E029200220392029A934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099B66 +:40940000DA6A059B5B6D9A4213D2099BDB6A1B010A9AD018099BDB6A01331B010A9AD118059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF829 +:409440003AE0099B34229B5C002B25D0099BDA6A059B5B6D9A4213D2099BDB6A01331B010A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FBC7 +:40948000059B5B6D5A1C059B5A65099BDA6A059B0121180001F0B0F8099BDB6A1B010A9AD3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800E5 +:4094C000059B8C229B581900FFF736F90200059B1A6602E0C04600E0C046099B00221A60059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44261 +:4095000004D0059B0433180003F0FEFF0B9B18000CB070BD0101FF800501FF801C01FF8030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B68F2 +:4095400024331C68029D049A06A905980C9B00932B00A04703000793079B002B01D0079B1AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B28 +:409580000AE0059B1B682C331B680699059A1000984703000793079B180009B030BDC0460101FF8010B584B003900291039B1B6814331C680299039880231B060093002350 +:4095C0000022A0470300180004B010BD10B598B00F900E910D920C930F9B0E9A11001800FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF30 +:409600000F9B1B6FD9B215AC0E9A0F9812AB019311AB00932300FFF715FC03001793179B002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB08930023079385 +:409640000023069301230593002304931B9B039316AB02930C9B01930D9B00932300FFF775FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FFC3 +:40968000179B180018B010BD0101FF8010B598B00F900E910D920F9B0E9A11001800FEF707FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9BDB +:4096C0001B6FD9B216AC0E9A0F9813AB019312AB00932300FFF7B6FB03001793179B002B2ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB08930023079300239E +:40970000069300230593002304930023039311AB029301235B420193002300932300FFF715FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E00D +:40974000C04600E0C0460F9B0433180003F0DCFE179B180018B010BD0101FF8010B588B0059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006ABD6 +:4097800001225A8006AB00225A60059B5A6E059B9B6ED218039B1A60059B1B6814331C68054B196806AA0598002300930823A0470300180008B010BDA403000830B591B0C3 +:4097C00005900392029313236B440A1C1A70039A13236B441978059808AB00931823FFF763F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF0400DB +:4098000008AB9B891A0008AB1B69D018059B8C229B581900FEF790FF0300E318079313236B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B1A +:40984000002B01D00F9B90E0059B8C229B5819001820FEF771FF02003A236B441A8013236B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803008E +:409880000F930F9B002B01D00F9B6EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF7E9 +:4098C00096F803001A683A236B441A803A236B441D88059B90229B58039C13226A441178059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B78DB +:409900000122D31AD9B23A236B441C88059B90229B58029A059800932300FEF7FFFF03000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AAA +:40994000D3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF7EBFE0200149B1A600023180011B030BDA03E041070B58CB00390039BDB6C0A939B +:40998000039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED2180398002300931300002201F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE030098 +:4099C0000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B11001800DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313006B +:409A00003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B2069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D06A +:409A4000099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED3180693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB68B0 +:409A800013000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099B002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B0693B4 +:409AC0000B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B74229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF707 +:409B00002DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B1100180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BDA03E0410A4 +:409B400070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E17930D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9338 +:409B800010AB099311AB089301230793002306930023059301230493002303930FAB029300230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B235 +:409BC0000D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002B03D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB8C +:409C00000D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B01D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1CB9 +:409C40000D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A0E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01BF +:409C8000D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE7C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B0019000915D +:409CC000019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB03000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B81 +:409D0000029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A600023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB79 +:409D40000D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA030019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C008E +:409D80000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D180090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B20 +:409DC00007D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6D1800904703000C0019000D9B8C229950402003F097FA030019000D9B9022995067 +:409E0000802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C2299500D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9BB3 +:409E40008C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F802000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD50 +:409E80009AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B783318006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A67B4 +:409EC0000D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB0893002307930123069301230593002304930023039312AB0293082301930FAB00932300FEF703 +:409F000025FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002202F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D98012300937F +:409F4000230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1527E +:409F80006B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB5200D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D11E +:409FC00016AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B74229A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B9800230093A8 +:40A000000023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011AB5B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F0A +:40A0400011AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6FC6 +:40A080000D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E491B98002300930023002202F06DFAC046FFFFFF07F43C04100101FF80A40300083F +:40A0C0000201FF80203D0410483D04101B01FF806C3D04109C3D0410C43D04101B9B364A934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D982D +:40A1000000F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA3B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B7E +:40A140001D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D18007A +:40A18000904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9B6C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80F03D0410D8 +:40A1C0001B01FF80303E0410583E04101C01FF8000B585B00190019B0433180003F06CF9019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D0E +:40A20000002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B03D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8B2 +:40A24000019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B0433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B2C +:40A280005A6E039B9B6ED2180B236B4419780398012300931300002200F056FC0300180005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B75 +:40A2C0000433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A78019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B44013244 +:40A300001A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B742201219952019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B90 +:40A340000433180003F0E0F8029B180005B000BD0E01FF8000B589B003900291019200230793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE033 +:40A38000039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002B03D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF030085 +:40A3C0000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D0012300E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B5D +:40A400009A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059B069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B089 +:40A4400000BDC0460E01FF800101FF802001FF807C3E041010B598B00F900E910D920C930F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180024 +:40A4800003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9B1B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A935F +:40A4C00012AB099313AB0893002307930023069300230593012304930023039314AB0293002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B7C +:40A500000ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D1012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B4175 +:40A54000DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B1793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B029 +:40A5800010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C01225340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B0B +:40A5C00004D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F0BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B2390 +:40A600006B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B15D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6026 +:40A6400008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B07047000000B58BB005900491039200230993039B402B01D9354B66E0059B043367 +:40A68000180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4A934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009386 +:40A6C00013000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A80049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009379 +:40A7000008234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6D1800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059BAE +:40A740000433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF8010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6866 +:40A7800034331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB009308234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B8B +:40A7C000072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E00E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B61 +:40A80000002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB1100180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B581393CB +:40A8400000230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A93059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D085 +:40A880000B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A4204D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B18005C +:40A8C000FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B78002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC04669 +:40A900000501FF80A03E04100701FF800201FF8000B587B00390029101920093039B0433180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FDE7 +:40A94000059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B2308AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C83 +:40A9800001225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A600E +:40A9C0005AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C680B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B185441AD +:40AA00000122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C680B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F9306 +:40AA4000C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B069300230793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B024 +:40AA800005900392029313236B440A1C1A7014AC039A13236B441978059813AB00932300FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF0EA +:40AAC00055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179C039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114BC4 +:40AB00001DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A7000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A70002318004F +:40AB400018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF766 +:40AB800036FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B44197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B780122BF +:40ABC0005340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A930A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE70023180030 +:40AC00000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A60039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B4E +:40AC40001800DAF717FF039B180005B000BDC046B4F9031010B588B005900491029203930A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F08C +:40AC80004DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029B039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6871 +:40ACC00008331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B002B02D00A9B00221A60079B180008B010BDC046803E0410943E041082B0019079 +:40AD00000091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023C1 +:40AD4000180003B000BDC046803E0410943E041010B588B0059004910292039300230793059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F06D +:40AD80004FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079303E001235B420793C046079B180008B010BD000010B584B001900091009B002B45 +:40ADC00007D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60CB +:40AE0000019B1B6808331B68019A100098470023180004B010BDC046803E0410943E041010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F007 +:40AE4000CDF8029B07930E9B1B680B931B236B4400221A70039B1B6905930023002408930994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD318E3 +:40AE80001B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A701B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B184D +:40AEC000544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB010BDC046803E0410943E041010B58AB003900291009201930C9B002B07D1A4234B +:40AF0000FF331A003249334B180001F067F8029B04930C9B1B6809930023002406930794019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B78E2 +:40AF40001A00039B1100180000F086F803001B06099A5340099317236B4408221A7017236B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D038 +:40AF8000099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A70DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099BF1 +:40AFC0001A400C9B1A60002318000AB010BDC046803E0410943E0410B71DC10482B0019001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4435 +:40B0000020221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B236B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B445F +:40B040000B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B1B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B01220A +:40B0800013400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B004 +:40B0C000019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB2180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB23C +:40B10000002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BDD1670008D067000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A700B +:40B14000064B1B78DBB2002B00D062B6C04610BDF03E0410143F0410D1670008D067000800B585B003900291019200930299009A019B18000CF068FC0023180005B000BD24 +:40B1800082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4AE0 +:40B1C0000B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000303F0410E602000010B582B00190009129 +:40B20000019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD803F0410B43F0410F1 +:40B2400000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B4400229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B1100F9 +:40B280001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F9C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022D8 +:40B2C000180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A236B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291E5 +:40B30000039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E0039A0549054800230093002301F02CF9180005B000BDC046D83F041030010180AD +:40B3400082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B07047DC +:40B3800000B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B0133D9 +:40B3C00007D1059A0549064800230093002301F0DBF8059B180007B000BDC046EC3F04103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525ED4 +:40B400009A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E32 +:40B44000013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046D7 +:40B480000C4004103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B880D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054BF3 +:40B4C0000121180000F03EFF00F0B8FEC04603B000BDC046D2670008FFFF00002C4004102301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A00094904 +:40B50000094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BDD2670008544004102401048010B586B000F06AFEFFF7A8FF03000C000493059441 +:40B540000F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002B0ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE0C0 +:40B580000099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFEC04606B010BDC046E0670008D8670008F0B58FB00590059B5B6838229B5C002B81 +:40B5C00000D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB69984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC17 +:40B60000272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944663441B7801229A400B9B9A420AD1272304AA94466344262204A98C4662441278CE +:40B640001A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA944663441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D499A +:40B680004D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474A00230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117FE +:40B6C000801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B6800221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968CF +:40B70000002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B2112785A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D14035 +:40B740000A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A1A61059B5A68069B079C9361D461059B5A680023002413635463059B5B683922B9 +:40B7800000219954059B5B683A2200219954059B5B68382201219954059B180000F01AF8059B180000F0EEF902E0C04600E0C0460FB0F0BD744004108C40041040420F0026 +:40B7C00082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B681593159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149BC9 +:40B800009A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E05A +:40B840006E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A04DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119A78 +:40B88000DA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C8440260008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BF7 +:40B8C000B4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24200D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B185441169386 +:40B900001794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D4625BE0364A00231298139910F073F903000C000E930F94159B9B680693002307930D +:40B94000069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B68089300230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A9441B4 +:40B980005B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD8039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A6C +:40B9C0009B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6B169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F0037 +:40BA0000F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A994102000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E005993F +:40BA4000994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079B9A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C31 +:40BA80001A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D001543049A9A401400244A00232000290080185941204A002310F08CF803000C002D +:40BAC0000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E0000231F00049A059B3000390010F093F803000C0019002200114B0024C918624108003E +:40BB000011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B681B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0037 +:40BB400084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D201230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E000231800DC +:40BB800004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6839229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6BEE +:40BBC0001B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B9A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A002300F8 +:40BC00000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F0DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059AF9 +:40BC400004991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D2180B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD7440041070 +:40BC80009040041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B11001800FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB68984759 +:40BCC000019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B685B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6B9A +:40BD0000A2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A60019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046AA +:40BD4000019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B0039002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089AC7 +:40BD80009A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA24202D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049AE3 +:40BDC000DA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA6000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A42A0 +:40BE000009D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE0039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD17D +:40BE400000F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B1800FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C04617 +:40BE8000D440041010B5054B1B68002B04D0034B1B68034A10009847C04610BDA8030008D440041082B001900023180002B0704782B001900023180002B0704700B585B050 +:40BEC0000190019B1B6810331B68019801220021984703000393039B002B01DA039B12E0019B1B6810331B68019802220021984703000293019B1B6810331B6803990198EF +:40BF000000229847029B180005B000BD00B583B0734601900091002293431A000099019B180000F004F80300180003B000BD00B587B003900291019200230593029A039BA6 +:40BF4000110018000BF050FA03000593059B180007B000BD00B587B003900291019200230593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734696 +:40BF800001900091002293431A000099019B180000F003F8C04603B000BD00B585B0039002910192029A039B110018000BF0D8F8C04605B000BD00B587B0039002910192B1 +:40BFC00000230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF804D +:40C0000082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A92 +:40C040000B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE50200002C410410E602000010B582B001900091DD +:40C08000019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD7C410410B0410410A0 +:40C0C00000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B4601211800FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B0133039345 +:40C10000039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F96B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DD8B +:40C14000C8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C04603B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE0300239334 +:40C18000239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F005F8C04625B000BDC041041000B583B0019000F029F8019B18000BF0F9FF030098 +:40C1C0001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019B012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB274 +:40C20000180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF763FF034B1B685A1C014B1A60C04610BD28680008C8410410E441041010B5094B97 +:40C240001B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C04610BDC0462868000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A +:40C280001A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B0039002916B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A420D +:40C2C00009D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B00390029168 +:40C300000192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B4401221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180046 +:40C3400007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B446A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180032 +:40C3800005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A60FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019BBD +:40C3C0001B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF0E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A26 +:40C400000393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031E05D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001232F +:40C440005340DBB2002B01D0FFF73AFE012000F0C7FEC046306800080FB410B584B07446124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C480093A1 +:40C4800000230022002100F019F80A490A480023002200F0B1F807AB0393039A069B11001800FFF761FEFFF7B5FFC0462C6800080001FF80184204106C68000800B593B080 +:40C4C0000390029101920093039B002B01DB264B039304AB3422002118000BF047FB04AB039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B51 +:40C5000004AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FE134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A955 +:40C540000D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE0023180013B000BD0101FF80B404000834680008386800086C680008A0680008F9 +:40C58000002318007047000010B586B0744605900491039202930F4B1800FFF765FE03001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF710 +:40C5C0007DFF089B029A0499034800F015F8FFF721FFC0462C6800086C68000882B00190019B002B01D0019B00E0024B180002B07047C0463042041070B58AB00790069149 +:40C6000005920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B041B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B91 +:40C64000323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FD3DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FDC8 +:40C680002DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD1DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD1C +:40C6C0000DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B1800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF7EC +:40C7000055FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B11001800FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B00 +:40C740009969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B11001800FFF7F1FC144B1800FFF7EDFCC0460AB070BD3C420410344404109042041077 +:40C78000A8420410B8420410C8420410DC420410F042041004430410144304102C43041040430410544304105C4304106043041074430410CC4304101844041000B583B09C +:40C7C000FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B48002300930023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BDA4680008A8 +:40C80000FFFF0000844404102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD0A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A8011 +:40C84000FFF7FCFCC04603B000BDC046A4680008B44404102401018000B583B0FFF7D4FC0D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF777 +:40C8800083FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BDA6680008FFFF0000DC4404102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B8840 +:40C8C0001A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFCC04603B000BDC046A6680008084504102401018010B5074B1B68002B08D0054BC7 +:40C900001A6801235B421900100003F08DF800E0C04610BD9073000810B5064B1B68002B05D0044B1B68180003F0A8F800E0C04610BDC0469073000884B00390029101928E +:40C940001D235B42180004B0704782B0019016235B42180002B0704782B001900123180002B0704782B001900023180002B0704700B585B003900800110001930A236B4468 +:40C98000021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D102AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F06D +:40C9C00051FE00E0C046039B180005B000BDC046B8460410B0720008D883000800B587B0039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00D5 +:40CA0000064B1100180009F047FE059B01330593EDE7019B180007B000BDC046D883000800B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE4D +:40CA40000300DAB2059B1A700123180007B000BDD883000800B585B001900A006B4602331A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FEAD +:40CA8000031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B4602331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B21 +:40CAC00007D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDD883000882B001900023180002B0704782B001900023180002B0704710B5174B12 +:40CB00001B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FB03005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF35 +:40CB4000064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046346900080105000030690008C000000885D3021000B585B00190019B1800FFF7B9FF0300EF +:40CB80000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039B02E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E011 +:40CBC0000C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF03000393044B019A92000399D150039B180005B000BDAC03000800B583B00190019B59 +:40CC0000180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF03000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4291 +:40CC400015E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF80300029A52421A6001235B4200E00023180005B000BDAC03000882B0019000231800F5 +:40CC800002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A0001235340DBB2002B01D0012300E00023002B07D0059A5549554800230093002367 +:40CCC000FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B089300230B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993C3 +:40CD0000099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099A0B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F80300079380 +:40CD4000079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BD3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA0C +:40CD800001235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B4412781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A38 +:40CDC0001A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD3180B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C0465B +:40CE000000E0C0460B9B18000DB000BD304504102F010180F06800086C45041000B587B0039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF0300092281 +:40CE40001A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002B08DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB0D6 +:40CE80000590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B01D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002BB8 +:40CEC00007DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031E65D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE05A +:40CF0000089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD11F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059B6C +:40CF4000D3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B780A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978E4 +:40CF8000134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B441A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099BAF +:40CFC00018000BB000BDC046704504102F010180B068000800B587B0039002910192039B1800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E096 +:40D00000059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE0300049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019AD6 +:40D040000299039B180000F006F803000593059B180007B000BD00B587B0039002910192039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B42B7 +:40D0800016E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFE0300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800AA +:40D0C000FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B1B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A5242FB +:40D100001A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B680593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB23C +:40D14000002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B68D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B0AB +:40D180007047C046AC0400084C840008AC680008A868000800B583B001900C4B1B689B68180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B8E +:40D1C000002B01D0FEF77CFFFEE7C0460806000884B00390029101920123180004B0704700B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B070475B +:40D2000000B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1FD +:40D24000002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039B1B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB295 +:40D28000039B1A700123180005B000BD8C050000B8450410D845041000B585B00190019B0393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B7885 +:40D2C0005BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC04694050000B84504100046041000B587B00390039B18000AF063F803000593059B87 +:40D30000002B07D1039A05490548002300930023FFF73AF9059B180007B000BD404604101F01018000B587B00390039B18000AF047F803000593059B002B07D1039A0549B2 +:40D340000548002300930023FFF71EF9059B180007B000BD604604101F01018000B583B00190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C046D9 +:40D3800003B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BDB846041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B037 +:40D3C00000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB2002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B8F +:40D40000180004F029FAC04605B000BD004704100601018000B583B00190019B180000F0A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B09C +:40D4400001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FB009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB32 +:40D480000B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B33221800FEF79BFDC04607B000BD88470410A4470410B847041000B587B00390039BCE +:40D4C0001A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B1A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BD9F +:40D50000BC4704101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F0ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180097 +:40D5400007B000BDD04704101701028000B583B00190019B1B68180002F0B6FA019B180000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B1800FF +:40D5800002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A009342 +:40D5C000084B009A1A60084B019A1A6000F06EF800F08AF850840008000001089C69000898690008AC680008A868000810B5154B154A1A60134B0B225A60124B1C22DA604D +:40D60000104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A600C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC046AA +:40D6400010BDC04658690008E44704103C6900083869000888690008F44704106C6900086869000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B42190040 +:40D68000100002F0D1F9C04603B000BD3869000800B583B00190044B1B68180002F0EEF9C04603B000BDC0463869000810B500F013F804F043F900F011F8C04610BD10B59D +:40D6C000FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204BBE +:40D70000214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4B18229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200E7 +:40D74000164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A11491248002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC046C2 +:40D780005C73000800480410407300086C730008D8730008947300081048041090730008BFD60210184804101D0101803448041000B583B00190064B1B68002B04D0044BD6 +:40D7C0001B68019A10009847C04603B000BDC046A069000800B583B0019000F017F9000000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948E4 +:40D80000002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A14491548002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A1049114898 +:40D84000002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046184A04104C4804102501028070480410260102809848041027010280D048041028010280D9 +:40D880000C4904102A0102804C4904100001028082B00190019B0633052B10D89A000A4BD3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B8A +:40D8C000180002B07047C046304A04106849041080490410B4490410CC490410DC490410F4490410104A041000B585B00390039B1800FFF7CDFF0100039A034800230093AB +:40D900000023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039A0248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF6B +:40D940000100039A0248002300930023FEF71CFE3301018000B585B003900291029B11330BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BDE4 +:40D980003401018000B585B003900291029B1800FFF77EFF0100039A0248002300930023FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A02480023EC +:40D9C00000930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FEC04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF719 +:40DA000071FDFEF71BFCC04610BD000010B5024B1B689847FBE7C046B00400087046C0082CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB99 +:40DA400091421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF308800F +:40DA8000D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E46704701B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E7C80400086C4B04100A +:40DAC00082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F0E0 +:40DB00001FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031E09D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0041 +:40DB400000DF03000393039B180004B080BDC046EDDA021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704750 +:40DB800082B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A5202920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002372 +:40DBC00049E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B07D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B35 +:40DC000007D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904BDA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B15 +:40DC40001900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B691900100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BE3 +:40DC8000DA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B80229A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674B76 +:40DCC000DA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B19685F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B1B +:40DD00009B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FA031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B196843 +:40DD4000474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404B1B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FAFF +:40DD8000031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C19682F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284BA7 +:40DDC0009B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C19687A +:40DE0000174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B1B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA96 +:40DE4000031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC046B40400086C4A0410BC04000800B585B0314B1B7A012B07D007235B421800FFF735FD012395 +:40DE80005B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FD01235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B42B1 +:40DEC0001800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F0CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B18007A +:40DF000002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019B83F31488034B02221A720023180005B000BDC046B40400086C4A0410ADDA0210B2 +:40DF4000D004000880B582B000F03AF8FFF702FE031E03D1FFF709FE031E08D006235B421800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BD05 +:40DF8000B5DB021080B582B0FFF7E4FD031E03D1FFF7EBFD031E08D006235B421800FFF7A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BD69DE021024 +:40DFC000C046704782B00190019B180002B0704784B001900091019A009BD3180393039B0293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D188 +:40E00000009B0722134002D1009B172B01D8002329E0019B1800FFF7D5FF03000393039B009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019BF5 +:40E0400011001800FFF7C4FF0200029B1A60029B1B6800221A60029B1B6810225A60029B00225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B97 +:40E0800003D0019B0322934301D0002384E0029B08330793079B0733072293430793039B08211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343E7 +:40E0C000069AD31A0693069A079B9A4208D2089B1B680893089B1B68002BE7D100235BE0C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B6866 +:40E10000083B1A00039B11001800FFF761FF03000593059B5C68039B1800FFF753FF03005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079AC7 +:40E14000019B1A43089B5A60089B08211800FFF73FFF030009931EE0089B5B68032293431A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B12 +:40E180005A60089B059A1A60059B08211800FFF71FFF03000993099B18000AB010BD00B587B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FFC6 +:40E1C00003000393039B083B039300230493019B08211800FFF7FCFE0300059309E0059B0493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7D2 +:40E20000E1FE03005968059A5268032082438A1A5A60049B002B03D1059B00225A6003E0059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB20F +:40E24000180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B6918007047B40400088D +:40E2800086B00390029101920093039B002B08D0029B002B05D0019B002B02D0009B002B01D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039BCE +:40E2C000009A5A61029B019A5343009AD218039B1A61009B059308E0059A019BD3180493059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180028 +:40E3000006B0704786B00190EFF310830393039B0593019B002B01D1002314E072B6019B5B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B89 +:40E3400000D162B6049B180006B0704784B001900091EFF310830293029B0393019B002B09D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B43 +:40E380005A69009B1A60019B009A5A61019B5B685A1E019B5A60039B002B00D162B60023180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF030053 +:40E3C0000393039B002B0FD0019B1800FFF74CFF0300180002F053F9030002930399029B0022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D046 +:40E40000029B002B07D104235B4219000020FFF7B9FA0023F9E0039B0793029B033303229343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D806 +:40E4400004235B4219000020FFF79CFA0023DCE0079B069A53430593019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322BF +:40E48000134003D1019BDB68232B13D809235B4219000020FFF776FA0023B6E0019BDB68002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134046 +:40E4C00003D1049A059B9A4218D20A235B4219000020FFF757FA002397E0049B002B0DD00A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002BDB +:40E500001CD1434B9C229B58002B08D0404B9C229B581800FFF7F6FE03000B9309E03C4B80229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4493 +:40E5400000221A700B9B002B3BD00A9B002B38D12F4B9B6F059900221800FFF787FD03000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B8A +:40E580009C229B580B9A11001800FFF7DFFE07E01F4B80229B580B9A11001800FFF7FFFD00230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A4386 +:40E5C0001A700B9B002B19D00B9B06221A700B9B27226A4412789A700B9B089A5A600B9B00229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B42E2 +:40E6000019000020FFF7BEF90B9B18000CB010BDB4040008A7E3021010B584B001900091019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039BA4 +:40E6400011001800FFF79EF9002320E0039B0C331800FFF757FE03000293029B002B15D1009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF763 +:40E68000F9FD03001900200001F0C2FF029B180004B010BD00B587B001900091019B1800FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800AD +:40E6C000FFF760F904235B422AE0059B0C33009A11001800FFF73AFE03000493049B002B1DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B50 +:40E700001800FFF7B1FD0300180001F0B8FF030002930399029B0122180002F0EBF9049B180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0CF +:40E74000039B1B78062B02D1009B002B08D004235A42039B11001800FFF714F9002307E0039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B13 +:40E780001800FFF76BFD03000393039B002B03D0039B1B78062B09D004235A42039B11001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029BC3 +:40E7C000002B07D1039B1800FFF74EFD0300180001F026FE029B180005B000BD80B588B0039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF78C +:40E80000C1F8002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046F1E3021080B586B001900091FFF7F8FCE4 +:40E84000031E03D1FFF7FFFC031E08D0009A019B11001800FFF767FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04628 +:40E8800019E6021080B586B001900091FFF7D0FC031E03D1FFF7D7FC031E08D0009A019B11001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044BDE +:40E8C0001F0000DF03000593059B180006B080BD95E6021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B07047F0 +:40E9000082B00190019B180002B0704782B00190019B180002B07047014B5B6918007047B404000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B76 +:40E9400005930023049304E0059B0493059B5B680593059B002B05D0059BDA78009BDB789A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B98 +:40E98000009ADA62049B002B03D0049B009A5A600FE0019B009A1A630BE0009B00225A60009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B9C +:40E9C000002B00D162B6C04606B0704788B00190EFF310830393039B069372B6019B9B6A0593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD068 +:40EA0000019BDB6A079314E072B613236B44079A92781A70079B01229A70069B002B00D162B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0E1 +:40EA4000C046079B180008B0704782B001900091009B5B68002B05D0009B5B68009A92689A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E044 +:40EA8000009B5A68019B1A63C04602B0704700B589B00190019B9B78002B5ED0019BDB680793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF765 +:40EAC00045FC079B9B68002B00D195E0079B9B685B78932B00D08FE0079B0C331800FFF711FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03002B +:40EB00000593059B00220021180001F0F3FF059B180001F03FFF03000493049B08331B680393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A7034 +:40EB4000049B0C331B68DAB2069BDA70069A079B11001800FFF7E6FE4EE0019B9B680793019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE9A +:40EB80000300180001F07BFD03000593059B00220021180001F0AEFF059B180001F0FAFE03000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B86 +:40EBC0000C331B68002B06D0049B0C331B681A00019BDB781370019B00221A70079B0C33019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000085 +:40EC000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FEF7C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C000798EC +:40EC40000CF0AAFF0300DBB2E3181F2B07D804235B4219000020FEF7A7FE0023E8E0039B079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B1C +:40EC80005B6905930B9B002B0FD00B9B0322134003D1019BDB68332B13D809235B4219000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE002385 +:40ECC000B6E00A9B002B0FD00A9B0322134003D1059A069B9A4218D20A235B4219000020FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E0002327 +:40ED0000089300230B9300230A930B9B002B1CD1494BA0229B58002B08D0474BA0229B581800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B930B +:40ED400027236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1364BDB6F069900221800FFF780F903000A930A9B002B1ED127236B441B78012213403C +:40ED800015D02D4BA0229B58002B08D02A4BA0229B580B9A11001800FFF7D8FA07E0264B80229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FEEC +:40EDC00027236B4427226A44127802210A431A700B9B002B25D00B9B08221A700B9B27226A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B22 +:40EE00000022DA620B9B00221A630B9B0C3318000A9B079A0399FFF733FA074B074A1A6705E005235B4219000020FEF7BDFD0B9B18000CB010BDC046B40400088FEA0210DF +:40EE400010B58CB00390029100936B4607331A70039B1800FFF754FD03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD042301 +:40EE80005B428DE00A9B9B68002B35D00A9B9B685B78832B30D10A9B1800FFF737FD0300180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD0300A7 +:40EEC0000893089B08331B6807930A9B5A6A0299079B180008F0B8FD089B0C331B68002B07D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF745 +:40EF000001FA03000693069B002B1CD0069B0C3318000A9B5A6A029B190008F095FD069B07221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC10 +:40EF400000230B932BE0009B002B25D0009B1900932001F0F5FD031E1AD00A9B1800FFF7D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833CD +:40EF8000029A1A60089B0C336A46073212781A6002235B420B9302E003235B420B930B9B18000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9BA5 +:40EFC000002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF7E4FC04235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800D1 +:40F00000FFF723FD099B0C3319000A9B5A6A029B180008F019FD019B002B03D0099BDA78019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D07D +:40F040000A9B9B685B78932B3ED10A9B0C331800FFF758F903000993099B002B34D00A9B1800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B19 +:40F08000180001F087FC03000793079B08331B680693099B0C3318000A9B5A6A069B190008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9BFD +:40F0C00011001800FFF72EFC00230B9329E0009B002B23D0009B1900832001F031FD031E18D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF30983059343 +:40F10000059B0793079B0833029A1A60079B0C33019A1A6002235B420B9302E003235B420B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7FA +:40F14000DFFB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F80300DF +:40F180000593059B002B26D0059B0C331800069B5A6A029B190008F057FC059B07221A70059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A603B +:40F1C000059B1800FFF7A2FB0300180001F028F90023079302E003235B420793079B180009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B9E +:40F2000009D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B11001800FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C33C7 +:40F240001900069B5A6A029B180008F0FDFB019B002B03D0059BDA78019B1A70059B0C33069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793F1 +:40F28000079B180009B000BD80B588B0039002910192FFF71FFB031E03D1FFF726FB031E08D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B04932D +:40F2C00006980599049B1A00044B1F0000DF03000793079B180008B080BDC04601EC021090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD015 +:40F30000009C6B4607331A78029903982300FFF70CFF0300099319E0039B0893029B07931B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A0025 +:40F34000059B044C270000DF03000993099B18000BB090BD41EE021090B58BB00390029101920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF53 +:40F380000300099313E0039B0893029B0793019B0693009B0593089B1800079B1900069B1A00059B044C270000DF03000993099B18000BB090BDC046A7EF021082B0EFF397 +:40F3C00005830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B070470A +:40F40000014B5B6918007047B404000800B587B00190019B059331E0059B5B690493059BDB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF59 +:40F440000300180001F01BF903000393039B00220021180001F04EFB059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BE1 +:40F48000CAD1C04607B000BD00B587B00190019B002B27D0019B1B680293019B5B680493019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B42A6 +:40F4C00019000020FEF734FA00235EE0019BDB68002B0DD009235B4219000020FEF728FA002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0F8 +:40F50000234B94229B581800FEF7FCFE0300059309E01F4B80229B5801221C211800FEF7A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B29 +:40F5400004221A70059B0F226A4412789A70049BDAB2059BDA70059B029A5A60059B00229A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B424F +:40F5800019000020FEF7D4F9059B180007B000BDB404000800B587B001900091019B1800FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B1100180007 +:40F5C000FEF7B6F901235B4289E0049B002B03D0049B1B78042B09D004235A42049B11001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049BE7 +:40F600005A61049B00221A61039BDB6A002B03D0039BDB6A049A1A61039B049ADA62049B01221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D187 +:40F64000049B1B7EFF2B0AD110235A42049B11001800FEF76DF903235B4205933EE0049B1B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A0002231340A2 +:40F6800014D0049BDB6820229A56039B20215B569A420BDA049BDB68039A2021515620229954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF781 +:40F6C00099FE0200039B1900100000F0A1FF02235B42059302E003235B420593059B180007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B6A +:40F70000002B09D108235A42059B11001800FEF70FF901235B42A8E0059B002B03D0059B1B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002BFF +:40F7400009D10F235A42059B11001800FEF7F0F803235B4289E0059BDA68049B9A4209D00E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A7627 +:40F78000059B1B7E002B00D06EE0059B5B69002B04D0059B5B69059A12691A61059B1B69002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A000223BB +:40F7C00013402AD01B236B44049A2121525C1A70049BDB6A079317E0079B9B68002B10D0079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C05 +:40F800001A70079B5B690793079B002BE4D1049B1B226A44202112785A54059B9B68002B1FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F0B9 +:40F8400059F9059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B01221A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD0300F3 +:40F880000393039B002B03D0039B1B78042B09D004235A42039B11001800FEF749F804235B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B6922 +:40F8C000039A12691A61039B1B69002B05D0039B1B69039A52695A6103E0039B5A69029BDA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059302 +:40F9000017E0059B9B68002B10D0059B9B6820229B5613226A44127852B29A4206DA059B9A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613229E +:40F940006A44127852B29A4209D0029B13226A44202112785A54029B180000F0B0FE039B9B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B2B +:40F980000022180001F0B6F8039B9B68002BEAD1002001F059F8039B00221A70039B9B781A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF758 +:40F9C000C5FC07E0054B80229B58039A11001800FEF7E5FB0023180007B000BDB404000880B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF7D8 +:40FA000097FF0023039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04689F4021080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD097 +:40FA400006235A42019B11001800FDF771FF06235B4205930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04695F5021080B584B0FA +:40FA80000190FFF79BFC031E03D1FFF7A2FC031E0AD006235A42019B11001800FDF748FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B065 +:40FAC00080BDC046E5F6021080B584B00190FFF775FC031E03D1FFF77CFC031E0AD006235A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F00E0 +:40FB000000DF03000393039B180004B080BDC04671F8021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B07047CE +:40FB400082B00190019B180002B0704782B00190019B180002B07047014B5B6918007047B404000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B8974 +:40FB8000013B9AB2019B9A810123059301E000230593049B002B00D162B6059B180006B0704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B96 +:40FBC0009B8901339AB2019B9A810123059301E000230593049B002B00D162B6059B180006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B56 +:40FC00001800FFF7A3FF0300180000F038FD03000393039B00220021180000F06BFFC04605B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B14 +:40FC40009A4207D904235B4219000020FDF782FE002373E0019B002B24D0019B1B680593019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B42CB +:40FC800019000020FDF766FE002357E0019BDB68002B0BD009235B4219000020FDF75AFE00234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98225F +:40FCC0009B581800FEF71EFB0300079309E01E4B80229B58012210211800FEF7C7F9030007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A708A +:40FD0000079B1B226A4412789A70079B059A5A60079B00229A60029B9AB2079B9A81039B9AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B062 +:40FD400000BDC046FFFF0000B4040008E5FB021010B584B001900091019B1800FFF7F0FE03000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD8D +:40FD800004235B4226E0029B1800FFF7EBFE031E02D0002303931CE0009B002B16D0009B1900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE0300190020002C +:40FDC00000F026FC02235B42039302E003235B420393039B180004B010BD00B587B00190019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B82 +:40FE000011001800FDF7A6FD04235B422AE0049B9B68002B12D0049B1800FFF797FE0300180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800CC +:40FE4000FFF7AFFE031E02D00023059309E011235A42049B11001800FDF77CFD03235B420593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039BFF +:40FE8000002B03D0039B1B78052B09D004235A42039B11001800FDF75DFD04235B423BE0039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB030002930323594266 +:40FEC000029B0022180000F015FE039B9B68002BEAD1002000F0B8FD039B00221A70039B9B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A110018009B +:40FF0000FEF724FA07E0064B80229B58039A11001800FEF744F90023180005B000BDC046B404000800B585B001900091019B1800FFF706FE03000293029B002B06D0029BE9 +:40FF40001B78052B02D1009B002B09D004235A42029B11001800FDF7FDFC04235B420CE0029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD71 +:40FF800000B585B00190019B1800FFF7D9FD03000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD039 +:40FFC000029B1800FFF7C2FD0300180000F028FA0023039309E011235A42029B11001800FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF7ED +:020000041003E7 +:4000000089FD031E03D1FFF790FD031E08D006235B4219000020FDF79DFC002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B72 +:40004000180008B080BDC04625FC021080B586B001900091FFF75EFD031E03D1FFF765FD031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049BDF +:4000800018000399044B1F0000DF03000593059B180006B080BDC04651FD021080B584B00190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0C5 +:4000C000019B0293029B1800044B1F0000DF03000393039B180004B080BDC046DBFD021080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B1100180012 +:40010000FDF728FC06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC0466DFE0210024B802252055A60C046704700ED00E082B0019020 +:40014000019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B18006B +:4001800002B07047014B1B7A18007047B404000886B00190EFF310830293029B04930E236B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B562232 +:4001C0009B5A013399B2164B56229952144BDA6D134B58215B5A9B00D318019A1A60104B58229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084BB3 +:400200005822002199520123059301E000230593049B002B00D162B6059B180006B07047B404000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B6F0 +:400240001C4B56229B5A002B29D01A4B56229B5A013B99B2174B56229952164BDA6D154B5A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B79 +:400280005A2299520B4B5A229B5A6A46063212889A4206D1074B5A220021995201E000230393029B002B00D162B6039B180005B000BDC046B404000800B583B001F0C2FA33 +:4002C0002D4BDB685A1C2C4BDA602B4B1B6D002B02D0294B1B6D984700F004FB002000F0B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B8E +:400300001A6C1D4BDA6334E01B4BDB6B002B04D0194BDB6B5A1E184BDA63174BDB6B002B27D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B6F +:400340009B6B20215B569A4213D1019B180000F0DCF9094B9B6B180000F0F2F9019B180000F062FB044B019A9A63034B1A6C024BDA63C04603B000BDB404000810B582B08C +:40038000FFF750FF03000193019B002B3CD0019B1B78072B36D89A001F4BD3181B689F461E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFEB5 +:4003C00003001800A0471EE0144B9C6E019B1800FFF7C6FE03001800A04714E00F4BDC6E019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800D5 +:40040000A04700E0C046BBE7C046002000F01CFBC04602B010BDC046704B0410B404000800B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE19 +:4004400008E0064B01229A7204E0019B19000220FDF7C6F9C04603B000BDC046B404000882B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B0020070 +:400480006B4607331A702023180002B0704782B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B4D +:4004C000180002B0704782B00190019B180002B0704782B00190019B180002B070470000014B1B7A18007047B4040008014B5B6918007047B404000882B00190024B019A01 +:400500005A61C04602B07047B404000886B001900091EFF310830393039B059372B6019B9A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B07047D0 +:4005400086B001900091EFF310830393039B059372B6019B9B6A0493019B9B6A009AD2431A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019BDB +:400580000222134029D1EFF310830593059B069372B6039B9B6A0793019B0122134005D0079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079345 +:4005C00006E0039B9B6A029AD2431A40039B9A62069B002B18D162B616E0039B9B6A0793019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029AD7 +:40060000134001D100230793079B180008B0704700B587B001900091009B002B2CD0009B20229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049BF1 +:400640009B680493049B002B06D0049B20229B561A00039B9A42F0DA009B059ADA60009B049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B505 +:4006800084B00190019B9B680393039B002B12D0039B9A68019B9A60039B9B68002B07D0039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B532 +:4006C00085B00190019B039302E0039BDB680393039B002B03D0039B1B78012BF5D0039B1800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B1100180012 +:40070000FFF786FFC04605B000BD82B00190019BDB68002B10D0019BDB68019A92689A60019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B070470000F8 +:4007400000B583B00190019B01225A70019A044B11001800FFF75CFFC04603B000BDC046D004000884B001900091009B013321D1002303932C4B1B6B029304E0029B039342 +:40078000029B1B690293029B002BF7D1019B009ADA61019B039A5A61019B00221A61039B002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E072 +:4007C000029BDB69009AD31A0093029B0393029B1B690293029B002B04D0029BDA69009B9A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A6F +:400800001A6102E0084B019ADA62029B002B08D0029BDA69009BD21A029BDA61029B019A5A61C04604B07047B404000882B00190019BDB69013323D1019B5B69002B04D103 +:40084000274B1A6B019B9A4246D1019B1B69002B04D0019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0BA +:40088000019B5B69002B04D1154BDA6A019B9A4222D1019B1B69002B0DD0019B1B69019A1269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B4E +:4008C0005B69019A12691A61019B00225A6103E0019B1A69024BDA62C04602B07047C046B404000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019B89 +:40090000DB69002B42D1019B5B78532B12D006DC332B11D0432B11D0132B11D019E0732B10D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E03C +:40094000C04606E0C04604E0C04602E0C04600E0C046019B1800FFF7D8FE019B1800FFF7EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00226F +:400980005A61034B019ADA6200E0C04603B000BDB404000810B584B00190019B9C6B019B22229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019BE5 +:4009C00001225A70019B20229B560393154B1800FFF77FFD03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B24 +:400A0000059ADA60019B049A9A60059B019A9A60049B002B02D0049B019ADA60C04607B000BDC046D004000800B583B00190019B02225A70034B019A9A6100F0BBF8C04678 +:400A400003B000BDB404000810B586B0019017246C44FFF745FD03002370FFF747FD03000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B8F +:400A8000002B31D0039B20229A56049B20215B569A4229DD039B1800FFF737FE049B1800FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B78 +:400AC00020229A56049B20215B569A4208DD049B1800FFF771FF019B1800FFF7A5FF03E0019B1800FFF72CFEC04606B010BDC046B404000800B587B0039002916B46073304 +:400B00001A70039B1800FFF745FF03000593059B029A1A60039B1800FFF788FE6B4607331B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD0000F8 +:400B400000B585B0020000916B4607331A70FFF7C7FC0300022B01D0002324E0FFF7C6FC03000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A460732DD +:400B800012785A70009A039B11001800FFF7EAFD074B1800FFF773FD03000393039B1800FFF742FF0123180005B000BDB4040008D004000800B583B0FFF798FC03000193FA +:400BC000019B002B10D0019B9A6B019B1B6B9A4205D9019B1B6B1B68054A934204D0019B19000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B9F +:400C000014D1019B596A019B23229B5C1A00019B1800FFF7B0FC03000393039B002B05D00399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B54 +:400C4000002B07D104235B4219000020FCF75EFE0023AFE1019B002B56D0019B1B680793019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9BF0 +:400C8000002B0FD00D9B0322134003D1019BDB68432B13D809235B4219000020FCF736FE002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002BFC +:400CC0000ED00B9B0722134002D10A9B002B07D10B235B4219000020FCF718FE002369E1099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020E3 +:400D0000FCF704FE002355E10023079300230C9300230D9300230B9300230A93182309930A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD59 +:400D4000002337E10D9B002B1CD19C4B88229B58002B08D0994B88229B581800FDF7D2FA03000D9309E0954B80229B58012244211800FDF77BF903000D9323236B440122D4 +:400D80001A7003E023236B4400221A700D9B002B5DD00B9B002B5AD10A9B002B25D1884B5B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B5B +:400DC000002B1BD023236B4423226A44127810210A431A7012E0794B5B6F0A9900221800FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B4D +:400E00001DD123236B441B780122134015D06B4B88229B58002B08D0684B88229B580D9A11001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D93232348 +:400E40006B4423226A44127802210A431A700D9B002B00D1A0E00D9B01221A700D9B01225A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A6023 +:400E80000D9B0022DA600D9B00221A610D9B00225A610D9B00229A610D9B0022DA61099B59B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002188 +:400EC00099540D9B00225A620D9B00229A620D9B0022DA620D9B0B9A1A630D9B0A9A5A630B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B9E +:400F00001B680422134010D00A9B9B08113B059308E0069B04330693069B2B4A1A60059B013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD3180022EB +:400F40001A60059B01330593059B0D2BF3D1069B34331E4A1A60069B3833039A1A60069B3C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB2190080 +:400F8000FFF76EFA03002360069B2033029A1A600A4B0F4A1A6605E005235B4219000020FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC046B4040008DA +:400FC0006C4A0410A52E5AE2CCCCCCCCB1140310F50B031000B583B0FFF788FA03000193019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A00D0 +:401000000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B19001000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134029 +:4010400015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B80229B58019A11001800FDF798F8C04603B000BDB404000800B583B0FFF736FA22 +:4010800003000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6A1800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF3098323 +:4010C0000093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019BDB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B042247 +:401100005A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA60044B019A5A6302E0C04600E0C04603B000BDC046B4040008D004000800B587B0C7 +:4011400001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009B002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D13B +:4011800003235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F903000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF9E5 +:4011C00003000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039A1340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B57B +:4012000085B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB01235B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A5D +:40124000039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F903000193019B002B01D1002301E0019B9B6A180003B000BD00B587B00390029101925E +:40128000FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE0039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049BE8 +:4012C0001800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B2049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B51 +:40130000180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B426D +:401340001EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009A039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029BF7 +:40138000180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D1D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D10D +:4013C0006B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B00211800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B4607335B +:4014000000221A706B4607331B78180003B000BDB40400086C4A0410D5D702102D17031080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B42190025 +:401440000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B1900049B1A00044B1F0000DF03000793079B180008B080BDC046350C031080B582B02B +:40148000FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DF03000193019B180002B080BDD50F031080B5FCF78BFA054B1F0000DF01235B420D +:4014C00019000020FCF722FAFEE7C0467910031080B586B001900091FEF7D9FF031E03D1FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B50 +:401500000393049B18000399044B1F0000DF03000593059B180006B080BDC0463D11031080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF79A +:40154000E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC046FF11031080B582B0FEF78FFF031E03D1FEF796FF031E02D000230193B6 +:4015800004E0044B1F0000DF03000193019B180002B080BD5712031080B588B0039002910192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906239D +:4015C0005B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF03000793079B180008B080BDC0467712031082B00190019B180002B0704784B001906E +:401600000091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB680293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B58 +:40164000029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B002B03D0039B019ADA6002E0024B019A5A64C04604B07047B404000882B00190F2 +:40168000019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047B404000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E095 +:4016C000019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009B002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B1100180004 +:40170000FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD000E0C04603B000BDB404000800B587B00190164B586E154B1B6E1A000821FDF7C1 +:40174000A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4BD86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6810 +:4017800018009047EBE7C04607B000BD6C4A0410B4040008A516031000B585B001900091019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039BF8 +:4017C0000F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A60094B039A5A60084B00229A60074B00221A700023180005B000BDC04658050008E1 +:40180000FFFFFF0000ED00E010E000E0F46F0008094B1B78002B06D0074B00221A70074B8022D2045A60064B054A126801210A431A60C0467047C046F46F000800ED00E03B +:4018400010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B1800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B06D +:4018800000BDC046904B0410304C04107047EFF3108072B6704780F310887047FFF7F6FF0E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A4F +:4018C0000020521A02DD043A8850FCDC074808490860BFF34F8FCEF723FCFEE7485E0410605E0410A8140008508400080000000808ED00E0FEE7FEE700B504207146084281 +:4019000002D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B07047B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F029 +:40194000CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B0364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE023E6 +:401980009B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB0080225204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1506A +:4019C0001E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC0235B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A0076 +:401A0000C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF77FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC04600002640D4 +:401A400084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F2213400D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD318BC +:401A80001B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A0D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB0177 +:401AC0000F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4B0F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70B1 +:401B0000914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0EF +:401B4000002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774B74 +:401B8000D358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B97 +:401BC000012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB00D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322D7 +:401C0000134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B441A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A23FA +:401C40006B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0A1F2213400493384AC023DB00D3581B0C1F22134003930F9B059A534304991800F5 +:401C800009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4AE0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AD7 +:401CC000FF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD03000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4BE7 +:401D00001A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B68174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A6022 +:401D4000C04611B000BDC04600002640784D041000127A0000366E0164050008840500005C050008000021406005000858050008680500083F420F0040420F0070050008C0 +:401D8000E70300006C0500087405000882B0054A8023D358032213400193019B180002B07047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049BD0 +:401DC000032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B0E4A13430393039B03221343039309498022039B8B50C046064A8823D35810228B +:401E00001340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA0500B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093D4 +:401E4000009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019B1800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A00802179 +:401E8000042001F049FCC04610BDC0465871000810B5034B180001F041FBC04610BDC0465070000810B5034B180001F037FBC04610BDC046A870000800B583B002F091FC77 +:401EC000030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B180001F092F9019B180002F07FFCC04603B000BDC046F86F00088C4D0410C04D041085 +:401F0000F44D041010B5034B180001F007FBC04610BDC046F86F0008084B5B6C1B0AFF2213403A2B08D1054B044A526C04490A40E82189010A435A64C04670470000274040 +:401F4000FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C04600002740FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD358BD +:401F80005B005B08054A8B5000230193019B180002B0704703004A00000026400C05000000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B68 +:401FC000013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002B01D000230393039B180005B000BDC04602004A0000002740044B1B6904221340B0 +:402000005A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A49094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B1800CC +:4020400004B0704701004A000000264084B001900A006B4603331A70114B0393019B042B19D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B46FA +:4020800003331B780F2003401A43019BE0339B005A5000230393039B180004B07047C04601004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4663 +:4020C00003331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B781B01302003401A43019BE0339B005A5000230393039B180004B0704701004A0031 +:402100000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B781B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B0020097 +:402140006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B07047C0460000214082B002006B4607331A70084B074A1269074911406A46073223 +:40218000127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C497E +:4021C0000B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA50C04603B000BDC04613090000284E04100000264000B583B002006B4606331A80BD +:402200006B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD3580A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B0900007B +:40224000284E04100000264004050000FEFCFFFF82B002006B4607331A700948084A094BD358094A1A406B4607331B781904FF231B040B401343034A8350C04602B07047E9 +:402280000000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C0467047C046000026400405000000B583B002006B4607331A706B4607331B780F2B19 +:4022C00005D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B4607331B781902F0231B010B401A43A023DB00C250C04603B000BD080A0000284E041041 +:4023000000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4A0D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B78190364 +:40234000E023DB010B401A43A023DB00C250C04603B000BD2E0A0000284E041000002640FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C04606 +:402380000000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B1100180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A4386 +:4023C0001A60C04603B000BD910A0000284E041000002740FFFCFFFF044B044A1268802109060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A4665 +:40240000073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D00520FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE0121002019 +:40244000FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F0F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA70 +:4024800013C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B1900012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF75A +:4024C000C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD6421002002F004FAC04604B010BDC04620A107007C4E04101027000010B584B038 +:402500006B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC046884E041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0C7 +:40254000D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A480023009300230022002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039AB8 +:402580001F480023009313000622032100F0F8FB039A1C480023009313000622012100F0EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042168 +:4025C00000F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062100F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC046DA +:4026000000003240800032408005324006060000070600000003324010B5034B1800FFF7C3FBC04610BDC04600000810C046704782B002006B4606331A806B460633002260 +:402640009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180080 +:4026800002F0CEF8019B5B01034A94466344180003B000BD984E04100000234000B583B00190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A9446634451 +:4026C000180003B000BDC046984E04100010234000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084BC7 +:402700001100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC046984E041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F0CA +:402740006FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A020000984E04106B02000000B583B0B3 +:4027800001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C019B9A60C04603B000BDC046984E041010B5D1F7EBFE054B186880235B001A00EF +:4027C0000021FFF7AFFFC04610BDC046EC71000800B583B06B4603221A806B4622229A706B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B48 +:402800001B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF6B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D125 +:40284000054B5321180001F0EBFFC04603B000BDB1270310EC710008EC4E0410E871000810B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000EA +:40288000FFF77CFFC04610BDE8710008EC4E0410024B1B691B0EDBB21800704700002140024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF339B +:4028C0001A00064B1100180001F0AAFF019B5B01034A94466344180003B000BD404F04100000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB21800C1 +:4029000002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F07FFF019A0299039B180000F0FDFA0300180005B000BDC046404F041010B5044B52 +:4029400002221900002000F0B7FDC04610BDC046C50F000810B584B001901E4B0393019B180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60A4 +:40298000154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B1A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00AE +:4029C000110018000AF0D0FF03000393039B180004B010BD06005200F07100080001001C60F590005C0500089808000010B584B001900091204B0393019B180000F092F8FF +:402A0000031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A9A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A4314005D +:402A4000114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A1880235B00110018000AF07EFF03000393039B180004B010BD06005200F071000834 +:402A800000010006808D5B005C05000884B00190019B1E4A93420BD9019B1D4A934207D8019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD84D +:402AC000019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019B0F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B428E +:402B00000393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF15FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D156 +:402B4000012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D02B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD080225200934223 +:402B80003BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE01E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E004 +:402BC000A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB03039311E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E073 +:402C00000F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F0050000F0030000F0010052000200520003005200010050000200500005005200B3 +:402C4000FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A0001235340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C04635 +:402C8000084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD02005000F0710008000025400C0400008C04000000B589B0039002916B4607331A70029B85 +:402CC000072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A00244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B018F +:402D00000693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B6844 +:402D4000029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40059B1A43069B5A60C04609B000BDC04643020000944F04100000CEBF00100304A5 +:402D800000B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F22934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB85 +:402DC0001B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D24313400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2171 +:402E000091400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB1A780299039B1800FFF742FFC04607B000BDC046E44F041000B583B00190009149 +:402E4000009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A60C04603B000BDC0463450041000B583B001900091009B1B0C1B0405D0064A074B03 +:402E80001100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA50200003450041082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B07047EF +:402EC00082B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF1F +:402F0000031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019AA7 +:402F4000039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B0593059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180019 +:402F800001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A600023039301E0034B0393039B180005B000BD8850041001008A0082B002006B46063311 +:402FC0001A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF33E5 +:403000001A00064B1100180001F00AFC019B5B01034A94466344180003B000BDDC5004100000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B9B +:403040005B01044A94466344180003B000BDC046DC5004100010234000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D026 +:40308000D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A60C04605B000BDC046DC50041082B00190019BDB68180002B0704782B00190019BC9 +:4030C0001B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029BAF +:403100001B041B0C1A43039B1A60039B1B68C04605B000BD6A020000DC5004106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B8F +:403140001B041A0C019B9A60C04603B000BDC046DC50041082B001900091019B009ADA60C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C24 +:40318000180002B0704782B00190019B1B041B0C180002B07047000000B583B001900091009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300A4 +:4031C000180003B000BDC0467E030000DC50041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04642 +:4032000002B070471072000810B590B00390039B002B04D13B4B4F21180001F001FB039B5B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F030 +:40324000EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B5721180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C3B6 +:4032800003CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B68DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB59 +:4032C0001C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B069 +:4033000010BDC0463051041000B587B00390029101920093039B072B04D9244BB321180001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AA1 +:40334000FF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A61059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF7A8 +:403380006BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5E059B9A81C04607B000BDC046305104101072000800B58BB00390029101920093C4 +:4033C000019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FA029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B2B +:403400001A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089B5B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B69180036 +:40344000FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A60089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A02 +:4034800011001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099B18000BB000BDC046305104101072000807028A0004028A0000B587B003900291E1 +:4034C0000192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B43D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059322 +:4035000001E0054B0593059B180007B000BDC04630510410107200080A028A0010B588B001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9F8 +:40354000019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B423FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180015 +:4035800001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019B5C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FDA7 +:4035C000031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039B1B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B68049326 +:40360000049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B1800FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FDC3 +:40364000019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019B9B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC04630510410BD +:4036800000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B01034A94466344180003B000BD845104100000234082B00190019BDB68180002B0A5 +:4036C0007047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F09FF8019A0299039B1800FFF71DFC0300180005B000BDC0468451041082B0019001 +:40370000019B1B68002B01DA002300E0014B180002B0704701008A0000B587B0039002910192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B77 +:403740001800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029B1F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A60A3 +:403780001A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B68124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D10023E9 +:4037C00005930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B000BDC04603018A00147200081872000801018A0000B589B001900A006B46033319 +:403800001A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A424DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B78012218 +:403840005340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059B5A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A1C +:4038800092008A1812680399C9430A401A600023069301E00F4B06930D4B1B6800211800FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B03 +:4038C0000693069B180009B000BDC04603018800147200080201880004018A0000B587B00190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393BA +:40390000039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A134002D0074B059304E0064B059301E0064B0593059B180007B000BDC0461472000856 +:40394000010188000001880004018A0082B001900091019A90239B000099D150C04602B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A684C +:4039800080231B01134001D0802300E04023180002B0704710B584B00190009100230393019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800BC +:4039C000FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0802300E04023180002B0704710B586B0039002910192039B002B02D0029B002BDB +:403A000001D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B08D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7BC2 +:403A4000032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B30 +:403A80009B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002B09D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D096 +:403AC000029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B78012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340E1 +:403B0000DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B68032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B6832 +:403B4000072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B10 +:403B800004D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B9B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4BE9 +:403BC0004B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F0122534087 +:403C0000DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A0200E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802214 +:403C400092041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B6321180000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FDA3 +:403C8000029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B781A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002BEF +:403CC00002D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029B5B7C002B0CD080239B000AE00160AA00000069408052041092F4FFFF8CF8FFFF42 +:403D000000231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A43029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022DD +:403D4000029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF22DD +:403D80001A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F0F6 +:403DC0002FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B0000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64B6 +:403E0000029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B78012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213406C +:403E40001900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B21215B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E063 +:403E800000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A81239B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A5009 +:403EC000019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019B00221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046D6 +:403F0000805204106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019B1B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B002282 +:403F40001A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B4121180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B8B +:403F80001B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB059A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D216E +:403FC000180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A6880239B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B0254 +:404000009A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A43019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BDDE +:40404000D452041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042B32D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF33D6 +:404080009A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD033BA +:4040C0009B005A5000230393039B180004B0704701004A000000264070B590B00590049100230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF3365 +:404100009B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A934202D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049BF2 +:404140005B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A7007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B70 +:4041800001D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F052 +:4041C00009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7A002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99AC +:40420000180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BA7 +:40424000DAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102B04D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E07023AB +:404280000E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049B5A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B110013 +:4042C000180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A00FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71743 +:4043000084B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B7882 +:40434000102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002B01D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934205 +:4043800001D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B781A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B40BB +:4043C0001A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019B8133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF333B +:404400009B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B0019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B2C +:404440008133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F9009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009BEB +:40448000002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063322 +:4044C00000229B5E9B0830496A4606320020125E9208C03292005258694606310988080003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150020 +:4045000003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F231340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B +:404540001B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60A2 +:40458000C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B35D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B72 +:4045C00000229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF75FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B002287 +:404600009B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC0463053041000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B4673 +:40464000063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069B9A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B38 +:40468000072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039A0A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A5B +:4046C000049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B0299039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B98 +:404700005B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4B0299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0E2 +:40474000C046C04608B07047845304100000214000B585B0020000916B4606331A80184B9A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E70 +:4047800010331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D15009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC046CE +:4047C00000ED00E00000000830530410000000100230800803D001300238FCD1C046C0467047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606334A +:404800001B88044A127853431800FFF7E1FFC04603B000BD7005000882B0019001BEFEE700B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFF4C +:404840006814000880140008064B802212069A64044B9B6C002B01DB002300E0024B18007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134052 +:4048800004D0019B8022D20213430193019B180002B070470000264000B583B00190019B1A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019BCC +:4048C0001A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F005F8C04603B000BD84140008FEE7000084B0020000916B4607331A706B46073399 +:404900001B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334AE8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8238C +:404940005B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039B032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA50F8 +:404980006B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E00023039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E075 +:4049C000042304E0022302E0012300E000230393084B084A12680F218A431100039A0F2002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD358B0 +:404A00001F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180002B07047000026401CFF000000B585B002006B4607331A70002303936B460733F7 +:404A40001B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FE1F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE030065 +:404A80000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4607331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821B5 +:404AC000002000F06BF905E00221002000F066F9054B0393039B180005B000BDA45304102872000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002BF8 +:404B00000AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE03000293FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA20 +:404B400000F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A05E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B50FD +:404B80000920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F2293431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FEF2 +:404BC00000F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC060000A4530410000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD030018 +:404C00000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A7801210A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B77 +:404C40001B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B0393049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B7E +:404C8000019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B1B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17237A +:404CC0006B441B78180007B000BDC04628720008207200082472000800B587B0019017236B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049AA5 +:404D0000019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B441B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D017 +:404D4000019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4B1A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF78A +:404D800034FD17236B441B78180007B000BDC04628720008207200082472000800B589B002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B46DA +:404DC00007331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B4607331B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B466F +:404E000006331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494B11001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B680C +:404E400006932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A78069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A4619 +:404E8000063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B690693069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1EA +:404EC000234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A4220D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803ABCF +:404F00005A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA1000984703000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B1800BC +:404F400009B000BDA453041021080000207200082C720008FF00420024720008044B044A9269802149040A439A61C0467047C04600F02540034B034A926903490A409A615B +:404F8000C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B500649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214022 +:404FC00004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A66 +:40500000064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C04606 +:405040000000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE0019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A4362 +:40508000019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7F002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D134 +:4050C0000399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A680398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31805 +:4051000001221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A60019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0053 +:4051400089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F0231B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A4367 +:40518000019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6A03221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BCF +:4051C000DB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B0089014118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059BA1 +:40520000180006B07047C0460100B60082B001900023180002B0704782B001900023180002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B42B5 +:405240000393039B180005B000BD00B587B0039002910192009300230593019A029B11001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B03 +:40528000074A934206D9009B064A934202D880239B0001E001235B42180002B07047C046FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B0518005F +:4052C00002B0704782B0019080235B03180002B0704782B001900023180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4657 +:4053000006331A806B46063300229B5E1B121BB29BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B18006D +:4053400004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B11001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D197 +:405380000122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000F8530410E602000000B587B0039002910192029B072B05D9134A144B1100180008 +:4053C000FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039B9B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039BCF +:405400009A62C04607B000BD8E030000F85304108F03000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B46CE +:4054400007331B78002B02D0012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046EA +:40548000039B180004B07047D454041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B21 +:4054C000002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D221800F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E42 +:405500001800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019B1B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE004 +:40554000019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC046C04605B000BDC046485404107C540410805404108C54041010B586B003900A00EF +:405580000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A4412889A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E57 +:4055C0001800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A0001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B446E +:4056000000229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF76CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E180077 +:40564000FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC046485404107C5404109C540410B454041000B583B001900A006B4603331A70019BFF +:40568000002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B56221800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC0461F +:4056C000485404107C5404108C54041000B583B001900A006B4603331A70019B002B05D10E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F7F5 +:405700006DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046485404107C5404108C54041082B00190019BDBB2180002B0704782B00190019B1B14DBB2E4 +:405740000F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B068 +:4057800002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393EC +:4057C000039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019BE6 +:40580000002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000F0540410E602000084B002006B4607331A706B4606330A1C1A70002358 +:4058400003936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE065 +:405880000B23039308E00C23039305E00D23039302E000230393C046039B180004B070474055041010B586B0020002910E236B441A800E236B4400229B5E013353D00E23D4 +:4058C0006B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FF03001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400222F +:405900009B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF72FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059BD7 +:4059400001221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B00221800FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007239B +:405980001340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E88 +:4059C0001800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B420593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A412C +:405A000013000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB2D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFDC3 +:405A4000180007B000BDC0467C0500085C55041000B585B0020000916B4607331A70FF2303936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D926 +:405A80001E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F79DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91408F +:405AC0000A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B689A4202D9029B00225A60F6F7A7FB039B180005B000BDC0468C050008A85504100E +:405B0000DC550410FC55041000B587B002006B4607331A70FF2305936B4607331A7813005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F72E +:405B40004DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B5B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A42BF +:405B800013D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF03000593059BFF2BDED000E0C046F6F746FB059B180007B000BD8C050008A85504107E +:405BC000DC5504104456041000B585B0020000916B4606331A806B46063300229B5E0393039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A00E0 +:405C00001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B460633012252421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B013 +:405C400000BDC046A8550410BC560410B05604103072000800B585B0020000916B4606331A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F74B +:405C8000ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFA01 +:405CC000C04605B000BDC046A8550410BC560410B056041030720008D456041010B58EB008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D318D8 +:405D000001331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C301230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A682749030064 +:405D40005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001AB00225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A786C +:405D8000174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A930FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B0133F8 +:405DC0000A930A9B002BECD0C0460EB010BDC046005704107C050008085704108C050008BC050008C405000882B00190019B1B12DBB2180002B0704786B0029101920F2321 +:405E00006B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43FB +:405E4000029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A02 +:405E80001A40019B1B020D4803401A43029B90208000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF00EE +:405EC00086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA020800084463F +:405F000063449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2078 +:405F400003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032B38D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB020800018 +:405F8000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A501049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003402D +:405FC0001A43029BB0208000844663449B005A5000230593059B180006B0704701004A00FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021CAA +:406000001A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B02 +:406040000FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C021FB +:4060800089008C4663449B001A5000230393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78E3 +:4060C000002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B46073301 +:406100001B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008084B00200C0 +:4061400000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D173 +:40618000009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B01FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B1800A1 +:4061C00004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B00190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358F5 +:40620000DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B5B7 +:4062400083B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019B11001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B82 +:406280005B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B0019000914D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C2C +:4062C000049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B9A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF7F7 +:4063000079FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF728 +:40634000FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039B5B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220AD +:40638000FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C00009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD0300F3 +:4063C0000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A001C58041000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E8A +:40640000174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019B08229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11006D +:406440001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BDDC4C0410404C04104458041000B593B0019002AB180040231A00002101F078FB02AB0C221B +:406480005A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A0002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E93412D +:4064C000D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FEC04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80BF +:40650000019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D1012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434BA5 +:406540001B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E11001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B110050 +:406580001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E12 +:4065C00011001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059B0822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A8107 +:40660000E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13236B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B18006D +:40664000F5F70AFF07B000BD01050000B0720008D8830008DC4C0410404C041000009FBFBC58041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039BAE +:4066800011001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B001900091019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDAA +:4066C000C04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B1B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B68180094 +:40670000FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B681800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B003 +:4067400010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B0C9 +:406780007047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09496B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04628 +:4067C00002B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB07496B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E0D0 +:4068000086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B23 +:406840001B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B902080008446C5 +:4068800063449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF000053 +:4068C000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1B8 +:40690000009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A4677 +:40694000063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014084B0020000916B4607331A70FF +:40698000204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B46D2 +:4069C00007331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B024 +:406A00007047C04601004A000000014000FF008082B001900091019B009A9A61C04602B0704784B00390029101920399029A98235B0092018A18D318019A1A600399029AF2 +:406A400098235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019B9A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B016 +:406A80000390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B0019000910199009A84235B0092018A18D3181B68180002B07047000000B583B0A5 +:406AC0000190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF0023180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD0000A6 +:406B000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF7D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA06 +:406B4000194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D0134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300F0 +:406B8000013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC046B47200083059041000003840F00500087C590410A0590410ED6A03102859041064 +:406BC00010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B0019000020FFF738F8044B00221A60C04610BDC04600003840F0050008B472000810B5074B09 +:406C00001B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC046B47200080000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02937D +:406C40000E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B05481A000021FFF70AFF0020FFF770FDC04605B000BDC04600003840B472000869 +:406C800010B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC0460000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C04673 +:406CC00020590410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC0460806000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D830 +:406D00000300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B1868F6 +:406D40007047C0460806000870B505000C1E40D0002802D0836B002B3ED00126636E334233D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002818 +:406D800044DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF800232363616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06DFF +:406DC00000F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE721692800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636EF0 +:406E00001E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E804693B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D04246F8 +:406E40004146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D0E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3813A +:406E80002260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF800232363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260F5 +:406EC000002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC40220120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A38950 +:406F0000164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD8AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BEC +:406F4000F8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF0100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626E2A +:406F8000D20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D5300070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054BE0 +:406FC0001868FFF7CFFF10BD034B0449186800F0A5F9F8E708060008D8590410656F031010B5024900F09AF910BDC046496D0310002310B504000360436083608181436607 +:40700000C281036143618361082200215C3000F0ADFD2000064BE4612362064B58306362054BA362054BE36200F0C2F910BDC046A17F0310C97F0310058003103180031085 +:4070400070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B92303229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF61 +:4070800002221221E068FFF7B3FF0123A363280000F094F970BDC04628840008E16F031010B5024800F088F910BDC0463484000810B5024800F082F910BDC0463484000850 +:4070C000F8B50C000600F6F79BF8204FBB685D6803239D431E4B2C1B9C466444240B1D4B013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF8002072 +:40710000F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B1C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A86 +:407140000549086001210B435360D5E7A40B0008EF0F0000FF0F0000B8720008AC0F0008F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F6A +:407180005368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B04265D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED083E +:4071C000FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000F6F719F8F8BD680A042850D8A809020039303832C000381808388368032698424CD07E +:407200005A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E9368B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D1D4 +:407240000A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4B20001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C36046 +:40728000986063462B434B604D51A7E7142814D802005C305B32C000ACE70123921093407A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B0E +:4072C00002006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B601560B5 +:407300006CE7C046A40B0008FF010000AC0B0008B00F0008E872000854050000F8B54746CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012BC7 +:4073400007D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD130000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A54225 +:40738000F9D106F0E5FA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BDB40F0008B40F0008B40F0008BC0F00087047C0467047C0467047C0467047C046FD +:4073C00010B5034B01001868F4F7A0FD10BDC0460806000810B5034B01001868F4F7CDFD10BDC04608060008F0B557464546DE464E46E0B50D000B3583B00700162D00D89A +:407400009FE007239D4300D5C4E0A94200D9C1E0F5F7F6FEF823FF339D4200D88FE2680A00D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14291 +:4074400019D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E06246636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D165 +:4074800090E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B46914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1604C +:4074C0009C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E46807 +:40750000A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E5680836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083075 +:4075400021E0102926D83800F5F75AFE1025182302208B4EF3181A005C68083A944200D12EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F7B3 +:4075800049FE2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F2340208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B72 +:4075C0000F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4A944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D93E +:40760000FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B68013300D16CE14B46019A9B1A59185346196007234A46134000D124E108218946F6 +:407640005549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D142E14B46C01A01235844184353461B685B441900534619604B46B3605860B4423E +:4076800013D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E218506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323F7 +:4076C000B46862689A43531B954200D9C9E00F2B00DCC6E00122290013431143651961603800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280BD0 +:4077000080446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B429C46B218944463469A6803239846944500D1ABE0434651689943894500D395E0A3 +:4077400092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C04659 +:40778000A40B0008FF010000AC0F0008E87200080F100000B872000808100000E0720008E472000873688EE608239B46073BDC449B46DA4443465246134200D097E637E036 +:4077C000DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A60F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D200FA +:407800008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B429C46E1444B469B680138994500D084E043460342F2D173688B43736049009942C7 +:4078400000D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4653603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B8044B1 +:407880007830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B98421CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B110071 +:4078C0006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E237F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E623 +:407900005B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B498A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00F5 +:40794000E808083305E6C046B87200085405000082B000290AD0002A0BD0002B0BD013780B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB244 +:40798000830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D001301042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D00130844213 +:4079C000F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A433242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032AB5 +:407A00001CD903000B439B070FD003780C788218A34204D015E003780C78A34211D1013001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D195 +:407A4000F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103E350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D166 +:407A80000F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF500433A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD171 +:407AC000F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5CC254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E7AD +:407B00000B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E60A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D968 +:407B40000023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D193240C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E00B +:407B80001A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2C14D927001A00103F3E09013636019E19156055609560D56010329642F8D10F221A +:407BC00097431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD1032297430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E78F +:407C0000F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083FF5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D841 +:407C40009C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504681438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9DD +:407C8000051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132A00D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000E8 +:407CC000F5F7A8FA1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B25D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280040 +:407D000005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029A3500D36892685C46D3609A60D5E74A460120464652684946024032434E46414437 +:407D4000034372604C444B6063680831184360600198F4F712F9CFE71100F4F7D7F80500CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DBFC +:407D8000029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D996E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A6874 +:407DC000BA1A924651460322496891430A009346A3449B4500DA4FE7D7E7032002998446496881434046091910300290814258DAD20700D540E760463A68BA1A924652682F +:407E000082430298511803918842E0DC5346524655469268DB680835D3609A60221F242A00D98EE0132A00D888E05346316899607168D9601B2A00D988E032001033083228 +:407E4000116819605168596092689A6051465B46424641449960039B01989A1A01231A434A605246526813404246134352465360F5F7D0F943E733680360736843601B2AE8 +:407E80002DD803003200083308320DE72B00320011685C4619605168D146596092689A601BE74346FA185B469A604346C91A0123194351607A6801981340424613437B6055 +:407EC000F5F7A8F935001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B3688360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE602 +:407F00005346B1681961F1685961242A0CD0320018331032BCE733693200036103007169183318324161BFE65346326951469A613200706920331832C861A9E72B00320007 +:407F40007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D03200183310326EE75346326951469A613200706920331832C86164E7C046A40B0008002370B5CE +:407F8000064C050008002360F5F7C6F8431C00D070BD2368002BFBD02B60F9E74C84000870B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A38110 +:407FC000F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E0022022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BD25 +:40800000FFEFFFFF70B50C000E25495F03F010F8431C06D08023A2895B011343A381206570BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB21E +:40804000002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A8A +:40808000244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A4313433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD0C4 +:4080C0000378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D488A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378D5 +:40810000002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392072AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B2FC +:4081400099B2401A210401430AD110021902000A090A401A2102014302D1100E190E401A70BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131A2 +:40818000002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD01010101031C0A7801311A700133002AF9D1704710B5830725D00378002B24D003000321B6 +:4081C00002E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D1043319680A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AA2 +:40820000FCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B439B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194DE2 +:408240002B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD104300431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D0C4 +:408280000133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C046FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A2E +:4082C000731C3470002C1DD0012406E00D5D013A355501330134002D14D0002AF6D1F0BD05000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D04A +:408300002E00DBE79C180021002AE8D019700133A342FBD1E3E7C04680808080FFFEFEFE30B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AEE +:40834000F9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002CE3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B19D7 +:408380008B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D3444663461C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD927 +:4083C00044461C1BA1461D0001242B199942F1D84346501C0133834203D362464946180011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D0012302 +:40840000A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE71D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F0079 +:40844000280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002C09D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF793 +:40848000BDFA002800D074E000231A009A46631E9846594601233800A14617004446B0465B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608216A +:4084C0009B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1A9A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34231 +:4085000007D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE042465244505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C82426D +:4085400003D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E70020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300238A +:408580009A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A00214044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D35808 +:4085C000002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D10133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C46BB +:408600006744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E7404650449FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D0062 +:40864000002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A42534101301E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB +:40868000AB46F0BD781CFFF7D9FC641B061E12D0012CF0D03F190121B84200D8391A0F001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800B6 +:4086C000FFF752FE039B80460200E9182800FFF795F900285CD1002399464346013B009342460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF900280A +:40870000D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED15246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D444614610 +:40874000009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C884203D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A3D +:40878000002694466744FF184846B1E7380072E74346E31A434500D243460133039300234246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF72E +:4087C000DDF8002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C8019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15C4E +:40880000EA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039B38009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B545 +:40884000C3B00D00069114000F93099002F0E2FB036818001993FFF7ABFC1890AB891B0605D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693EE +:40888000159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001342378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072BEC +:4088C0002EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD377012252429246002200210B9220329146203263788846002000249446594601311A0086 +:40890000203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE73A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F033 +:40894000E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD01220B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A46594614 +:40898000092ABCD80300110050465A469A46A34683001B1814785B0058182100531C30391A000929F4D9524619008246230010005C46A4E780231C430B789FE78B46414682 +:4089C0001293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FD630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A5B +:408A0000080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A00D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119311 +:408A400008D02723302128AAD15416AA944648336344119353460E9A0793924500DA0792002313934346002B02D0079B013307930223089A1A40914602D0079B023307930D +:408A80008423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B688846102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B606E +:408AC000072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DCB0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836D3 +:408B0000984612E28B4641461293002901D001F077F907220F9B07339343013294469C4462460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414660 +:408B400004F02CFE002801D000F0FDFD0122484B52422800414603F001F8002801D000F0F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B9C +:408B800001DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E70022303B15001A000300079408002C009B46A3001C190378640014191A000131303AEC +:408BC0000800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A30600D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F93F7 +:408C000000230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B00D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D461440C1 +:408C40002C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A119166460E93F5E6EC590410945B0410FFFFEF7F505B0410129310231C438B464A +:408C8000A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C92002204330D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D594 +:408CC000ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA908704825EF +:408D00006846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FDE30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93AA +:408D4000A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A01D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F092 +:408D800054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A4613935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB771300043395 +:408DC0000F93002308949846013307930E93002311959A4613934BE68B4641461293002900D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD10221443B3 +:408E00007CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B07339343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A080009 +:408E4000104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A7048325A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D9B +:408E80001B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE58B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6817 +:408EC00011001A00080010430C910D920123020099E68B461293A30600D483E607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D9200236C +:408F0000020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002316AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B68B6 +:408F400001340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B6802340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D56 +:408F80003CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0605B0410745B0410A45B0410103E0832102E16DD50461031013315605060B9607B60072BC6 +:408FC000F2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA9460C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0570 +:4090000000D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE00836089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD10222100914618 +:40904000099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B9607B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102E23 +:40908000E7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002CB3 +:4090C00000D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B01343360012373607B68BC6001337B60072B00DDDFE20836199A01333260189A984694466444726014 +:40910000BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119D149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083677 +:4091400021AB33601A9B9C467360434664440133BC607B60072B00DC61E73A000699099802F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD0022002316981599BD +:4091800002F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DD66E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A5B +:4091C000002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103D0832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F0D4 +:4092000087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A466419013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773601E +:409240007B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D158 +:4092800020E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA78 +:4092C000002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FBBC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E01E +:40930000A1464A0794464B4665465C1EC6080723CA08354311002A0003403033237028000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93E0 +:40934000FFF788FB945B0410905B0410A45B04101F98002800DC96E2139A1499130090468B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B71 +:4093800000DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DC00F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E73 +:4093C00000DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F9002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1464F +:409400001E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFB030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB0023E5 +:409440000E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7FBC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A46A6 +:409480002E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B9607B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA6A +:4094C000102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFB13680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B78 +:409500009C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DC7EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E0A +:40954000102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F8002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A4664190133326050 +:409580007560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930338B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A9A +:4095C000137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401337260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A139990 +:40960000D31A521A90469A4200DD98464246002A0FDD1399119A8C4662443260424672607A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DC4A +:40964000EEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103E102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F831 +:40968000002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A6864440132BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BE +:4096C000BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC68984632AE13E5A45B0410072307329A4301339C46944463460F93536812680D930C9230 +:40970000002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C377080010430C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F90D +:40974000BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E25346013300D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA67 +:4097800021E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A13005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B60 +:4097C0004A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE2002300224846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B22 +:409800009842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D1F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A4018 +:40984000672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9A0A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF773 +:4098800060F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC0836002807D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96096 +:4098C00001337B60072B00DDF2E132000832002800DACCE111980133106014987B6044185060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0077 +:4099000004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A000699099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18602D +:409940001861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB02935346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B37 +:4099800000D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D0FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846AB +:4099C000079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF81198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F8F6 +:409A00001F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B186A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE16E +:409A400016AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E3031217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B215 +:409A80004346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C013321AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1AD8 +:409AC0009C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB171A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE00284B +:409B000001D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9BBC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A00E9 +:409B40000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FFF4 +:409B80002023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019303234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD37771 +:409BC0009846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B9446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C046B4 +:409C0000905B0410545B0410885B04101F9B1393002B00DCD5E05246002A00D092E0E20700D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A46139339 +:409C4000FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A14930E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832C6 +:409C8000103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF769 +:409CC00040FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013350 +:409D000010605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF710FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193CA +:409D4000FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E501232340139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B394A +:409D80009D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF7F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF719 +:409DC0009DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF16ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE657 +:409E000016ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716ABD877FEF779FF01235B429A46C4E7C046A45B0410585B04105C5B041030B504007B +:409E40009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202920592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B42D3 +:409E800002920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E78B232360F7E78B23012023604042F2E710B50400054882B00068009313000A00AC +:409EC0002100FFF7BBFF02B010BDC04608060008002904D0FF2A04D801200A7070470020FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE12 +:409F0000431C00D070BD2368002BFBD02B60F9E74C840008002370B5064C050008002360F2F76AFE431C00D070BD2368002BFBD02B60F9E74C840008F0B545468046DE464C +:409F400057464E464246E0B50C69126985B00B0002910020944200DD90E014229446634499464A46013CA300D6181422424493469B4433681500591C5B461868019201F05B +:409F800057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C94 +:409FC0002D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD2039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C3C +:40A000009A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B18D7 +:40A0400012041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B0A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC78 +:40A0800090469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D0016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002FF2 +:40A0C00037DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD00282FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246FE +:40A10000AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD003000833269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F0055 +:40A14000C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B03B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FF0E +:40A18000B04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F067FD02000B002000290001F01DFE04000D0003F013FB002203900023200029007F +:40A1C00001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849683B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A0023069372 +:40A200001300013B049300D5A1E2039B002B00DA84E29C460D930023049A9946110061440491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC6D +:40A2400001DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239A039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364F6 +:40A28000172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE5346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F029 +:40A2C00025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E401A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D0DC +:40A300009C463A687B6820002900E04402F0B0FC04000D0076100837002EEED12200089809992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC00280F +:40A3400001D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B0094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B84 +:40A3800001D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B02F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F03C +:40A3C000D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002801D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002860 +:40A4000001D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149B994638E00000F07F915B04100F270000B85C0410C45C04100000F03F01FCFFFFB1 +:40A440000000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33FF05C0410C85C041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B09 +:40A4800001F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F0E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F9AB +:40A4C00002000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B25 +:40A50000002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE13100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D6A +:40A540000F93491918E68A48D5E50023524600215364504600F080FD5346186401235B4207930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DD96 +:40A58000A7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D300022002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B0030001C +:40A5C000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069379 +:40A6000053466244AA46049C059D914607930FE00022534B02F02CFB01239C460022002306000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF87F +:40A64000804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013B303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B00300039004D +:40A6800001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B0001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E39F +:40A6C000023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012121 +:40A7000094469C4462460692049A504694469C446346049300F060FD804632E0069A039BD21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF921 +:40A74000020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03F000024403204000012040000000010FE905B0410F05C0410069B4C46089300237E +:40A78000984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A0892049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0A2 +:40A7C000BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B814616 +:40A80000012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020223000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D171 +:40A8400004991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C46844463460693089B9C46844463468C468444089363460493069B002B05DD5946E4 +:40A880001A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B00D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600 +:40A8C00000F09EFD804643460C93002C00D050E2079C0A9A013C23009446634408930123334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB94 +:40A9000003000B90303329003000049300F0D8FD494604004246380000F0ECFDC3688146002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1A8 +:40A94000079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002B00DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380018 +:40A9800000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A22380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C468444634641 +:40A9C0000893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E256 +:40AA000007930A9B5D460024079F9B4606E0290000230A22504600F051FB050049462800FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B002732 +:40AA40009C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B780A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F052 +:40AA800013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6C6 +:40AAC000069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D0098460E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F856 +:40AB00003B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F0C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D129 +:40AB4000B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA24605008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F059 +:40AB80006BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E6079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD312314 +:40ABC0000A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B93FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226E +:40AC00006B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FA089E099F32003B0004000D0000F0A0FF002800D0B2E08020000684463900614474 +:40AC40000B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21A0D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB02 +:40AC80000023524600215364504600F0E5F95346186401230A90079323930E93FFF707FB43460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F07B +:40ACC0009FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C2E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B994624 +:40AD0000109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A2340DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123EE +:40AD4000234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED1FFF7E4FA039B30270133039330232B70ACE45968504600F06FF9434641460400BE +:40AD80001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E50023994698460CE70000F07F000014403304000000001C400000C0FCF05C0410C85C041070 +:40ADC000129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F0FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46E5 +:40AE0000303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F00060002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D113 +:40AE40004446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD0A8 +:40AE80000C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223AB +:40AEC000109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013B13933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE76 +:40AF00000022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B700C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F00A +:40AF400017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BA84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FBD5 +:40AF8000002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B01DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B79 +:40AFC000303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF773FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C0467A +:40B00000F05C0410000024400000E03F00001C400000C0FC044B1B68586B002801D0F03070470248FBE7C04608060008380A000870B50500080011000022064C22601A00CB +:40B04000F1F7F8FF431C00D070BD2368002BFBD02B60F9E74C84000870B50400C06C0D0000280AD0AB00C318186800280FD002681A6000230361C36070BD2122042120001D +:40B08000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF0028F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE46B7 +:40B0C00047468146080080B50D000C691F0000211430036801311E04360C56431B0C5343F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA67 +:40B10000231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF29002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A602D +:40B140001D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0F01D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0764 +:40B1800009D00022D90704D49A0720D402229B0803601000704719040022002901D11B0C1032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D4BA +:40B1C0005B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF73BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F0087 +:40B200001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF71BFF14220300944663449B4643469B005B441900029303905B4600228B4503D269 +:40B24000029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B44401939A454FD253461B681E04360C20D05C460027009D210008CC04CD99464846130414 +:40B280001B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120C1B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F00DF +:40B2C0006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734307043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB4403 +:40B300005345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D1013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC0461B +:40B34000F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D022 +:40B380002A0031004046FFF731FF002E1BD04246D26C736894469B0063441A68641032601E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286061 +:40B3C00003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE701214046FFF73AFE054B05004361012303614346986400230360B5E7B85D0410710200007B +:40B40000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB3688346914649689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021C1 +:40B44000A4001A001B1902C29342FCD132694846970031001F2214311040CF198146002825D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D8A7 +:40B480001A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A6832601E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E747 +:40B4C0000A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B04391C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E46140020 +:40B500000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F4200D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C0001250B +:40B5400006E0002D6ADB4746260000251437143643465968FFF780FD43468146C56018694D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C00934628 +:40B58000594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B1812041914120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C5244161473 +:40B5C0001B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA243043289180439002B04D104390B680138002BFAD04B46186148463CBC9046994609 +:40B60000A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E00A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640074 +:40B6400007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D1009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A1E +:40B68000099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B9C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B019 +:40B6C000F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFFCEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D0A7 +:40B7000070BD2368002BFBD02B60F9E74C840008F0B557464E46DE464546E0B5936883B001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D08A +:40B740003169421A9346706942001218D00F8218521090465A46501CC0194246404501D9804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F99B +:40B78000B3892A4A134080221343B381434620005A463461B8463C00584473619B1A3060B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B534684 +:40B7C0009F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E70198F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3817D +:40B800005246002340429360536003E0002352460020536003B03CBC90469946A246AB46F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030AAE +:40B840008B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B0324 +:40B88000C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241CF +:40B8C000030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3081E +:40B900008B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D009 +:40B9400076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B42D2 +:40B9800019D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01AEB +:40B9C0005241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524151 +:40BA000043098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D2A1 +:40BA400001465241104670475DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D389019211A8 +:40BA80008B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C308D6 +:40BAC0008B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A5241411A00D20146634652415B10104601D34042002B00D549427047634648 +:40BB00005B1000D3404201B5002000F005F802BD0029F8D016E770477047C0468446101C62468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F07A +:40BB400097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD0120B5 +:40BB800010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B04984201D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40184C +:40BBC0007047C04604030202010101010000000000000000002B11D1002A0FD1002900D1002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684642 +:40BC000001B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E0080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D95B +:40BC400080235B029846C4444B46514343433604360C250C24046544A4195918491920000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B42F9 +:40BC80002FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D574E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B4A +:40BCC00000DA79E0002200230092019301235A4693400193012342469340009319E08242D0D900220023009201930C9B002B01D01C605D600098019903B03CBC904699462A +:40BD0000A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A4346467B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002EB5 +:40BD400006D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE40BA +:40BD80003200801A994100900191AEE7424620239B1A5246DA40414613004A468A4017001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A05 +:40BDC0000022009101920122DA40019282E74246202326009B1ADE402F00B446974066463B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A50 +:40BE0000440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D1AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF +:40BE4000BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E11F2D00DD38E12020431B9A460B0050468340994613004846EB4018430300504629 +:40BE80008240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650A002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4401E +:40BEC0009F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD840914097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB4248 +:40BF0000BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C406007760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B006D +:40BF4000ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E2040067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E70B +:40BF8000331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E00A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E42D9 +:40BFC00000D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE18022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE062 +:40C00000BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C4005400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA42D4 +:40C0400092411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D002838854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0BA +:40C08000701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E419E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B58 +:40C0C00000D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD8400300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EDD +:40C10000B04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51A2600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BA1 +:40C14000BA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E600250026002706E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A08009840EA +:40C180009C46834653461000D84003005846184363469A40531E9A4153460243D94003E726003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B2A +:40C1C0009A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E6002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E65D +:40C20000BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E620003843002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E6B1 +:40C2400050460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A414B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D0A4 +:40C280005346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418AB +:40C2C000060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE71800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4256 +:40C3000092411C1B5242A41AD846F1E51800104300D163E7F808670707438020E4080003044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304E8F +:40C34000D6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E40800030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E50021EF +:40C380006BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027437C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E77A +:40C3C0000C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED0402356469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E75B +:40C40000FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F6001343334399461C +:40C44000C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D01955ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A94462F +:40C48000002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F460300334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B36 +:40C4C0004A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB03000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B46CE +:40C500008B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E7594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102004E +:40C540005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B00221B1A8FE7002301229B468BE75146032288E700239846013304260024039367E7BB +:40C580000323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C46002300240022984600211203130B0A0D12051A432305124C40462240134362465B00D207BA +:40C5C0005B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034CE0E70023014C00229846DBE7FF07000001FCFFFFC45D04100DFCFFFFFFFF0F80D3 +:40C60000D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C039313041B0C3900280090460193FFF7FFF80200019B83465A4328003900914679 +:40C64000FFF77CF9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E102235B429C464544E3444B46EB1A390018000493FFF7DCF8019B050043433900BC +:40C6800004989946FFF75AF9330409041B0C0B43994509D943446A1E984500D91AE1994500D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A4676 +:40C6C000090C4E460D001204120C4543059151437243704352190E0CB218954203D980256D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A5346F9 +:40C700009E1AB24592415242AB1A9A46984500D117E139001800FFF78BF8019B05004343390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1BD +:40C74000884200D804E1023D4144049BCB1A180039000493FFF76CF8019B82464343390004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D97F +:40C78000E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F462A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC468F +:40C7C00060441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE318002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318D5 +:40C80000994A934268DD0123029A984C1A400023944698460022C5E680224B46120313420AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC462A +:40C840008A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E603005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0848 +:40C8800043465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B245AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE7984575 +:40C8C000FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A435B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1E36 +:40C90000B04529D91100864200D065E7039A934200D061E762E7012149420120C21A382A21DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934449 +:40C9400054E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED011003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340AA +:40C98000204308431A00430709D00F230340042B05D00100081D88429B415B42D21813023AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC464B +:40C9C000E244AA45AD416D424544ED182D1A96E68A1E03994D008D42894149424144761803958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E7D +:40CA000091411943072300220B4009D00F2300220B400800042BBDD1010053075202120BC9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D429A +:40CA4000C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E5FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F10 +:40CA80009A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C4201D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120B9 +:40CAC000BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E7FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D00844697 +:40CB0000360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD130430700814678427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D1584641 +:40CB4000024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D00120013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA95 +:40CB8000481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D80020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F9946D0 +:40CBC0002A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D0002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC16 +:40CC000090469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE7310002230143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1C4 +:40CC4000E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C445D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C03984697 +:40CC80004E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F2404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00A2 +:40CCC000DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E4008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554A33 +:40CD0000BF00D25997465B460343994600D087E000239B46023308270293CEE742460192022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002116 +:40CD400012030B0D120B1B051343434A240513401C436400ED0764082C434846210007B03CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFFD6 +:40CD800003000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F4023439B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234382 +:40CDC00020D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A51460200D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002203 +:40CE000099469CE70024002201206EE7534603206BE700239B4601330427002602934CE7032381460C27029347E780220023002512039946054C82E75C464B4602986FE7D7 +:40CE40005C464B46019502986AE7C046FF07000001FCFFFF045E0410FFFF0F800DFCFFFF4A464946170C1A0C1B041B0C08041900000C41431500884619007D43794303957A +:40CE800089462900150045434D44029545462D0CAA46029D5544A94506D98A46802149028946CA4451460391290C0491414609042D04090C88462900250C24044144240C8F +:40CEC0000591210041438846210079438A466843414650448146080C48446F43824503D98021490289464F44010C894639004944029141460F0404993F0C88460004C0194A +:40CF000080444146049159460F0C0904090C884659438A4639005143894641464A435146090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A464146C9 +:40CF400061437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D19A94503D98021490288464444049F0399B84641448B468345804141428846514652 +:40CF800008042F04000C3F185846029910188946904292414F44BA46524299469346C244D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B42E2 +:40CFC00013437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D034352021343E20156D501205A0803401343E207134364085A48604400284DDD5A07BD +:40D0000009D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC00014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D9E +:40D040001D407CE6802259461203114208D0144206D122431203120B45469946434C6EE65B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E65B +:40D080000300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382A06DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A8408C +:40D0C000D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B415B42E418230221D50125019B01241D4000230022994622E61F2521006D42281ACD +:40D10000C1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D00F2200241A401800042AD6D1030065076402220BDB082B4301259946019B002414 +:40D140001D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C046FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E0088 +:40D18000610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E10028C0 +:40D1C00010D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241A01261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F0048 +:40D200005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A44164420C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DD32 +:40D24000E9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE120223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D053 +:40D280000F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D1AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B19 +:40D2C0000C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760D89 +:40D30000DBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382B00DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B16 +:40D3400001369E4200D14BE101225B4B1C407B0817401F43E207174364088FE70800104300D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE7080044 +:40D38000104300D1CAE0581E8446002800D0E7E052445245804164184042241817000126230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4396 +:40D3C00001254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A8245BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B9846C7 +:40D4000014E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E73800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C46B4 +:40D440005B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E707520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D1E7 +:40D480007FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202D71D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F8027 +:40D4C000002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE1202627005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B42 +:40D500005242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE61F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743A7 +:40D54000F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE68C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E60 +:40D580007CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B00134300D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6FD +:40D5C000250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE666460024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511EA1 +:40D600008A410021174392E6002E14D126005046064362D0DB43002B5CD187189742924164185242A418664687E650462043441EA041002460E7574EB4454ED080263604F9 +:40D640005B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A90 +:40D680007F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D00154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C003F +:40D6C0009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C0017006646CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E408000396 +:40D700000442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE68024E2 +:40D7400000252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE50C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441E53 +:40D78000A04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E0D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD0543E8 +:40D7C0000120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134D0A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A82 +:40D800001F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE840A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FAB +:40D84000EDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21A1F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B120569 +:40D880002243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081AC4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000081 +:40D8C00013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144AD21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B0548 +:40D90000224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E7002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF787 +:40D940002BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E46704701B40248844601BC604700BF5D10000825732025753A20703D +:40D980006172746974696F6E73206973204E554C4C210A00696E69745F706172746974696F6E7300EC7200080A2B2B204D6265644F53204661756C742048616E646C6572AE +:40D9C000202B2B0A0A4661756C74547970653A20000000004D656D4D616E6167654661756C7400004275734661756C740000000055736167654661756C74000048617264AB +:40DA00004661756C740000000A0A436F6E746578743A00000A0A2D2D204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074E2 +:40DA4000696F6E000A52252D34643A202530386C580000000A53502020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352E5 +:40DA8000203A202530386C580A50535020203A202530386C580A4D535020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A205468726508 +:40DAC000616400000A50726976203A2055736572000000000A50726976203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A204C +:40DB0000505350000A537461636B3A204D53500059060010690600108B06001025732025753A2053504D2072656164206C656E677468206D69736D61746368007C08001015 +:40DB400094080010AC080010100900109C090010360A0010580B00106E0B0010D60B0010640C0010040D0010B0130010C8130010E013001032140010821400104615001051 +:40DB8000AA150010CA190010CA1900109C17001000180010101800105C180010BC180010CA190010CA190010CA190010CA190010261700106A170010E2160010B01600109D +:40DBC000CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010F5 +:40DC0000CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA190010CA1900101C190010541C0010841C0010D81C00103C1D00104C1D0010141E0010BC +:40DC40007073615F6D61635F6F7065726174696F6E0000007073615F686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E18 +:40DC8000000000007073615F616561645F6F7065726174696F6E00007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D65D0 +:40DCC0006E745F6F7065726174696F6E000000007073615F656E74726F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F706521 +:40DD0000726174696F6E73007073615F660000007073615F665F6D757465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204645 +:40DD400061696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C65D1 +:40DD80006420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A010026 +:40DDC000031A010010DD03100B0000000C5500081C0000007073615F665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A61626364656625 +:40DE00006768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000003E +:40DE40002E2F636F6D706F6E656E74732F5441524745545F5053412F73657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504FDF +:40DE80004E454E545F5053415F5352565F494D504C2F706974735F696D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C65A2 +:40DEC0005F6C656E203E3D205053415F4954535F46494C454E414D455F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C4523 +:40DF00004E414D455F4D41585F4C454E000000007073615F6974735F7365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E73746D +:40DF4000616E63650A0000007073615F6974735F6765745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000009B +:40DF80007073615F6974735F6765745F696E666F5F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F4E +:40DFC0006974735F72656D6F76655F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A205510 +:40E000006E6578706563746564206D657373616765207479706520256421000025732025753A204B5653746F726520696E6974696174696F6E206661696C656420776974C4 +:40E04000682073746174757320256421000000006D6573736167655F68616E646C657200706974735F656E7472790000697473006974735F6D757465780000002573202528 +:40E08000753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F72207365637572654C +:40E0C00020706172746974696F6E20697473210A0000000025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6663 +:40E1000020706172746974696F6E20697473210A0000000070E003100B000000C45900081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441527F +:40E140004745545F5053412F73706D2F434F4D504F4E454E545F5350452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F69644A +:40E18000202A29302900000068616E646C655F6D656D20213D202828766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5FF0 +:40E1C00073697A650000000068616E646C6520213D2028287073615F68616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E6465F2 +:40E2000078205B25645D20697320626967676572207468616E2068616E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048F8 +:40E24000616E646C65202564206973206E6F7420666F756E6420696E20657870656374656420696E64657821200A000025732025753A205B4552524F525D2052657175654C +:40E28000737420666F722064657374726F79206279206E6F6E2D6F776E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746FD6 +:40E2C00020676574206D656D6F727920666F7220616E20696E76616C69642068616E646C6521200A0000000025732025753A205B4552524F525D2052657175657374206654 +:40E300006F722068616E646C65206D656D6F7279206973206E6F7420616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D86 +:40E3400067722D3E68616E646C65735F706F6F6C5B706F6F6C5F69785D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67721D +:40E380005F68616E646C655F64657374726F79007073615F686E646C5F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206EB8 +:40E3C0006F7420616C6C6F77656420746F2062652063616C6C65642066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74209E +:40E400006465636C6172652065787465726E2066756E6374696F6E730A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E20E4 +:40E4400025642065787465726E2066756E6374696F6E73206C6973740A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E95 +:40E48000545F5350452F73706D5F636C69656E742E6300006F734F4B203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D16 +:40E4C0003D203000666C616773202620726F745F736572766963652D3E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A205349442030D1 +:40E5000078257820697320696E76616C6964210A0000000025732025753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C7920776974682C +:40E5400020736964202564206D696E6F722076657273696F6E20256420616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E67206399 +:40E580006F6E6E656374206D65737361676520697320696E61636365737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D617068DD +:40E5C0006F726520666F7220636F6E6E656374206D657373616765006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E67206326 +:40E60000616C6C206D65737361676520697320696E61636365737369626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320C9 +:40E64000696E61636365737369626C650A00000025732025753A20436F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D650F +:40E6800073736167650000007073615F636F6E6E6563745F6173796E6300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615FCB +:40E6C000636F6E6E656374007073615F63616C6C5F6173796E6300007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F736500000046 +:40E7000025732025753A204661696C656420696F7665632056616C69646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D28300F +:40E7400058257029206F75746C656E3D282564290A00000025732025753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E67207374617465A8 +:40E780003A202564207768696C65202564206973206578706563746564210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E12 +:40E7C000545F5350452F73706D5F636F6D6D6F6E2E6300002828766F6964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206141 +:40E8000063746976655F7468726561645F69640076616C69646174655F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F79 +:40E8400073746174655F6173736572740000000053504D5F6368616E6E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C00000000AA +:40E880002573202D204661696C656420746F20637265617465206368616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F20637265617444 +:40E8C0006520616374697665206D65737361676573206D656D6F727920706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D6573736167652064C6 +:40E9000061746120697320696E61636365737369626C650A0000000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A206956 +:40E940006E5F7665635B25645D20697320696E61636365737369626C650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025B7 +:40E98000753A206F75745F7665635B25645D20697320696E61636365737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F636174652061637469766532 +:40E9C000206D657373616765000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F73657276657219 +:40EA00002E6300006F734F4B203D3D206F735F73746174757300000025732025753A20446571756575652066726F6D20656D7074792071756575650028666C6167732026CD +:40EA40002028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D2063E4 +:40EA80007572725F706172746974696F6E00000025732025753A20696E74657272757074206D61736B2030782578206D7573742068617665206F6E6C792062697473206613 +:40EAC000726F6D2030782578210A00002861737365727465645F7369676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C29297B +:40EB0000207C7C2028282830783830303030303030554C2920213D2074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F736967C6 +:40EB40006E616C732929000025732025753A206D736720697320696E61636365737369626C650A0025732025753A207369676E756D2030782578206D757374206861766546 +:40EB8000206F6E6C79203120626974204F4E20616E64206D757374206265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E57 +:40EBC0006F7420616374697665210A0025732025753A205265636569766564207369676E616C202830782530387829207468617420646F6573206E6F74206D617463682082 +:40EC0000616E7920726F6F74206F66207472757374207365727669636500000025732025753A207073615F676574202D20756E6578706563746564206D65737361676520EA +:40EC4000747970653D3078253038580025732025753A20496E76616C696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365739A +:40EC80007369626C650A000025732025753A20496E76616C6964206F75747665635F6964780A000025732025753A20496E76616C6964207772697465206F70657261746992 +:40ECC0006F6E20285265717565737465642025642C20417669616C61626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A2930F4 +:40ED0000290000006163746976655F6368616E6E656C2D3E6D73675F70747220213D202828766F6964202A293029000025732025753A207374617475732028305825303876 +:40ED40007829206973206E6F7420616C6C6F77656420666F72205053415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206997 +:40ED800073206E6F7420616C6C6F77656420666F72205053415F4950435F43414C4C000025732025753A207073615F7265706C792829202D20556E657870656374656420D8 +:40EDC0006D65737361676520747970653D3078253038580025732025753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F69C9 +:40EE000064203D202564290A0000000025732025753A207073615F63616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A005C +:40EE40006163746976655F6D73672D3E6368616E6E656C20213D202828766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E7465727A +:40EE80007275707420666C616720776974686F7574206465636C6172696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E6775 +:40EEC000650A000025732025753A207369676E616C2030782578206D7573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F6539 +:40EF00006F6928292063616C6C656420776974686F7574207369676E616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F1F +:40EF4000736572766963655F71756575655F646571756575650000007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615FFF +:40EF800072656164000000007073615F77726974650000007073615F7265706C79000000515F4D5554000000515F575F53454D00515F525F53454D002E2F636F6D706F6EF8 +:40EFC000656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C59 +:40F00000626F785F7370652E63000000286F734F4B203D3D206F735F73746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F737461747573B0 +:40F040002900000025732025753A206D657373616765206461746120697320696E61636365737369626C650A0000000066616C736500000071756575655F6D75746578202F +:40F08000213D204E554C4C0066756C6C5F71756575655F73656D20213D204E554C4C000071756575655F726561645F73656D20213D204E554C4C0000A0EF03100B00000099 +:40F0C000E85D00081C000000A8EF031000000000045E000810000000B0EF031000000000145E0008100000006F6E5F706F707065645F6974656D00002E2F636F6D706F6E8C +:40F10000656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F6970635F71756575652E63000000717565756520213D9E +:40F14000204E554C4C000000626173655F71756575655F6D656D20213D204E554C4C0000626173655F71756575655F6D656D2D3E6D61676963203D3D204950435F51554595 +:40F1800055455F424153455F4D414749430000006D7574657820213D204E554C4C00000066756C6C5F71756575655F73656D20213D204E554C4C0000726561645F73656D7B +:40F1C00020213D204E554C4C0000000071756575652D3E6D61676963203D3D204950435F51554555455F50524F44554345525F4D41474943000000006F734F4B203D3D2072 +:40F200006F735F737461747573000000286F734F4B203D3D206F735F73746174757329207C7C20286F734572726F7254696D656F7574203D3D206F735F7374617475732982 +:40F240000000000071756575652D3E6D61676963203D3D204950435F51554555455F434F4E53554D45525F4D41474943000000000000000000000000A94E0010DD4E0010B6 +:40F28000FD4E00108D500010BB4B0010E150001051510010C1510010D74B00102D5200103F5200107D520010C3520010135300104D5300100000000000000000000000004F +:40F2C0000000000011D1021011D10210BB4B001011D1021011D10210C74B0010D74B001011D1021011D10210E74B0010074C00102B4C001011D102100D0000000D0A0000A8 +:40F300002B49504400000000302C434C4F53454400000000312C434C4F53454400000000322C434C4F53454400000000332C434C4F53454400000000342C434C4F5345444D +:40F34000000000002B43574A41503A005749464920000000554E4C494E4B0000414C524541445920434F4E4E45435445440000004552524F52000000776474207265736536 +:40F3800074000000536F667420574454207265736574000062757379200000002B43495052454356444154412C000000415400004F4B0A00415445300000000041542B4741 +:40F3C0004D52000053444B2076657273696F6E3A25642E25642E25640000000041542076657273696F6E3A25642E25642E25642E2564000041542B554152545F4355523D10 +:40F4000025752C382C312C302C30000041542B554152545F4355523D25752C382C312C302C33000041542B554152545F4355523D25752C382C312C302C32000041542B5575 +:40F440004152545F4355523D25752C382C312C302C31000041542B43574D4F44455F4355523D25640000000041542B4349504D55583D310041542B52535400007265616424 +:40F480007900000041542B4357444843505F4355523D25642C25640041542B434950524543564D4F44453D310000000041542B43574A41505F4355523D222573222C22252D +:40F4C0007322000041542B43575141500000000041542B4349465352000000002B43494653523A53544149502C222531355B5E225D2200002B43494653523A5354414D4122 +:40F50000432C222531375B5E225D220041542B4349505354415F4355523F00002B4349505354415F4355523A676174657761793A222531355B5E225D220000002B4349509B +:40F540005354415F4355523A6E65746D61736B3A222531355B5E225D2200000041542B43574A41505F4355523F0000002B43574A41505F4355523A22252A5B5E225D222C15 +:40F58000222531375B5E225D2200000041542B43574C41503D22222C222573222C0000002B43574C41503A28252A642C22252A5B5E225D222C256868642C000041542B43F4 +:40F5C000574C4150000000005544500041542B43495053544152543D25642C222573222C222573222C25642C2564000041542B43495053544152543D25642C222573222C60 +:40F60000222573222C256400455350383236363A3A5F6F70656E5F7564703A20646576696365207265667573656420746F20636C6F736520736F636B6574000054435000AD +:40F64000455350383236363A3A5F6F70656E5F7463703A20646576696365207265667573656420746F20636C6F736520736F636B6574000041542B434950444F4D41494E93 +:40F680003D222573220000002B434950444F4D41494E3A2573252A5B0D5D252A5B0A5D0041542B43495053454E443D25642C256C750000003E00000053454E44204F4B009B +:40F6C0002C25642C0000000025640A0025643A0041542B43495052454356444154413D25642C256C7500000041542B434950434C4F53453D256400002B43574C41503A2819 +:40F7000025642C222533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C25642C25642C88 +:40F7400025642C25642C2564290A00002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A8E +:40F7800025686878222C256868752C25642C2564290A000025345B5E225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3A5F6F6F625F627573792829B1 +:40F7C00020756E7265636F676E697A656420627573792073746174650A000000455350383236363A3A5F6F6F625F6275737928292041542074696D656F75740A0000000084 +:40F800002E2F636F6D706F6E656E74732F776966692F657370383236362D6472697665722F455350383236362F455350383236362E637070000000005F736F636B5F6163C4 +:40F84000746976655F6964203E3D2030202626205F736F636B5F6163746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0AC8 +:40F8800000000000474F542049500A00444953434F4E4E4543540A00434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F73746103 +:40F8C0007475733A20696E76616C696420415420636D640A00000000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B91 +:40F90000207374617475732074696D6564206F75740A00005F636F6E6E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463AC4 +:40F94000256868640000000041542B43574D4F44455F4445463D2568686400002E2F706C6174666F726D2F43616C6C6261636B2E680000005F6F7073000000002E2F706C6D +:40F980006174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F646174610000000000000000009D5A0010B55A0010D35A001030 +:40F9C00000000000B71DC1046E3B8209D926430DDC7604136B6BC517B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F38A7 +:40FA000070DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BC2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E7466 +:40FA4000E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F52FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA026 +:40FA8000906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C32220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DECE6 +:40FAC00077708634C06D4730194B043DAE56C539AB0682271C1B4323C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90CA6 +:40FB000007AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84065 +:40FB400097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BB258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA9425 +:40FB8000E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F7555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8E5 +:40FBC000EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E5CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D4351A5 +:40FC00009E3B1D252926DC21F0009F2C471D5E28424D1936F550D8322C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D64 +:40FC40000E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE6BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C924 +:40FC80007E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAACCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C3307185E4 +:40FCC00099908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4A2BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565A4 +:40FD0000E94B9B115E565A1587701918306DD81C353D9F0282205E065B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D42963 +:40FD40007926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD2CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD23 +:40FD800009FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9EBBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B1E3 +:40FDC0000000000000000000A1040010DD040010EB5B0010000000000000000095060010BD060010295C00100000000000000000000000000000000011D10210BE650010CD +:40FE00008A6500108E65001092650010966500109A6500109E650010A2650010A6650010AA650010AE650010B2650010B6650010BA65001010660010EC6500101466001026 +:40FE4000F065001018660010F4650010F8650010FC6500100066001004660010086600100C6600101C6600103A7A00103E7A0010427A0010467A00104A7A00105E7A0010E2 +:40FE80005E7A00104E7A0010527A0010567A00105A7A00103EB5001056B5001052B500104AB500104EB5001046B500104EB5001042B500104EB500104EB50010505341005C +:40FEC0004B4559005ABC001072BC00106EBC001066BC00106ABC001062BC00106ABC00105EBC00106ABC00106ABC0010637C777BF26B6FC53001672BFED7AB76CA82C97D6C +:40FF0000FA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F171D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED23 +:40FF400020FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027F503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC2A +:40FF8000222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC629195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB56690 +:40FFC0004803F60E613557B986C11D9EE1F8981169D98E949B1E87E9CE5528DF8CA1890DBFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20D51 +:020000041004E6 +:40000000D66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA1544 +:40004000B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FD45AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A8F +:400080007E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E534F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828ED +:4000C000379696A10A05050F2F9A9AB50E070709241212361B80809BDFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2D44 +:40010000DC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D6617DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060F3 +:40014000E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED97239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C52B +:400180009A4D4DD766333355118585948A4545CFE9F9F91004020206FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292ADB7 +:4001C000219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA754221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE143 +:40020000359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E827A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F442222665D +:40024000542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D32814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB05 +:400280000C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEFC46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8C06 +:4002C000B1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F407CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C24FC +:4003000057A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C3E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D801 +:4003400006030305F7F6F6011C0E0E12C26161A36A35355FAE5757F969B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BB61 +:40038000A9D9D970078E8E89339494A72D9B9BB63C1E1E2215878792C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDA0D +:4003C000D7E6E631844242C6D06868B8824141C3299999B05A2D2D771E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2F9 +:40040000BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE67677D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFA40 +:40044000EBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A2EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C36368B +:40048000417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E508F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818E9 +:4004C000A13796960F0A0505B52F9A9A090E0707362412129B1B80803DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1B40 +:40050000B2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D6CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED60402020EF +:400540001FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBE4B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC586434327 +:40058000D79A4D4D5566333394118585CF8A454510E9F9F90604020281FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292B3 +:4005C000BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA63422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5F3F +:40060000A2359797CC884444392E17175793C4C4F255A7A782FC7E7E477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC6644222259 +:400640007E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B83C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB92494901 +:400680000A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACACA6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D02 +:4006C00064B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F425CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF8 +:40070000F157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE87474213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D8904848FD +:400740000506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD269695D +:4007800070A9D9D989078E8EA7339494B62D9B9B223C1E1E9215878720C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF09 +:4007C00031D7E6E6C6844242B8D06868C3824141B0299999775A2D2D111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF2F5 +:400800006BBDD66B6FB1DE6FC55491C5305060300103020167A9CE672B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA3C +:4008400059EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA2AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C3687 +:400880003F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E5F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC318283018E5 +:4008C00096A13796050F0A059AB52F9A07090E0712362412809B1B80E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B3C +:400900006EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D6B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020EB +:40094000FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BE394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C5864323 +:400980004DD79A4D335566338594118545CF8A45F910E9F9020604027F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F92AF +:4009C0009DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA2163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F3B +:400A000097A2359744CC884417392E17C45793C4A7F255A77E82FC7E3D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC2266442255 +:400A40002A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB8143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249FD +:400A8000060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43AC62A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DFE +:400AC000D564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F4EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CF4 +:400B0000A6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE8741F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D89048F9 +:400B400003050603F601F7F60E121C0E61A3C261355F6A3557F9AE57B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD26959 +:400B8000D970A9D98E89078E94A733949BB62D9B1E223C1E87921587E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BF05 +:400BC000E631D7E642C6844268B8D06841C3824199B029992D775A2D0F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFFF1 +:400C00006B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE2B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF38 +:400C40005959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5FAFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C83 +:400C80003F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D1F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D18182830E1 +:400CC0009696A13705050F0A9A9AB52F0707090E1212362480809B1BE2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D3638 +:400D00006E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B7B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040E7 +:400D4000FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED96739394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5861F +:400D80004D4DD79A33335566858594114545CF8AF9F910E9020206047F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3FAB +:400DC0009D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF2121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE37 +:400E00009797A2354444CC881717392EC4C45793A7A7F2557E7E82FC3D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA32222664451 +:400E40002A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B14143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB92F9 +:400E800006060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF436262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01FA +:400EC000D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F3EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438F0 +:400F0000A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE81F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D890F5 +:400F400003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEB9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD255 +:400F8000D9D970A98E8E89079494A7339B9BB62D1E1E223C87879215E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA6501 +:400FC000E6E631D74242C6846868B8D04141C3829999B0292D2D775A0F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE33982F3 +:401000009B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950B42FAC34E082EA16628D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C70485001 +:40104000FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422D8 +:40108000E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620EAA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA95B +:4010C00019B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C83539961172B047EBA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB4D +:401100001F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691F5024C254FE5D7FCC52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F75029B +:40114000814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB955259DAD4BE832D587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB612 +:40118000F088AD17C920AC667DCE3AB463DF4A18E51A31829751336062537F45B16477E0BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D3235F +:4011C000724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AD33708A5302887F223BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD1A +:401200000605BED5D134621FC4A6FE8A342E539DA2F355A0058AE132A4F6EB750B83EC394060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571 +:4012400071C45D050406D46F605015FF1998FB24D6BDE997894043CC67D99E77B0E842BD07898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683C6 +:40128000322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51E362D39270A0FD964685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54FF4 +:4012C00061DC20A25A774B691C121A16E293BA0AC0A02AE53C22E043121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269FC3 +:401300005C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC68B8E4F163D731DCCA426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BCA +:40134000DCB230F30D8652EC77C1E3D02BB3166CA970B999119448FA47E96422A8FC8CC4A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFFA +:40138000A57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9B547E4662F68D13C290D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993BDA +:4013C00010187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB701834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AFED +:401400002A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B033A7D815F104984A41ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34D +:401440004C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473FB0B412EB3671D5A92DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB0 +:40148000B761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7973C737BF53F7CDEA5FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC37201 +:4014C000BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49C6456C1907BCB8461D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6B3B +:40150000F11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7625F5024CFC4FE5D7D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7597 +:4015400012814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7ADA9552592DD4BE83D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F0E +:4015800017F088AD66C920ACB47DCE3A1863DF4A82E51A31609751334562537FE0B1647784BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D35B +:4015C000E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BA5D33708F2302887B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF416 +:40160000D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE175A4F6EB390B83ECAA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D6D +:401640000571C45D6F0406D4FF605015241998FB97D6BDE9CC8940437767D99EBDB0E8428807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E0000000083098086C2 +:4016800048322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED527362D39640A0FD921685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5F0 +:4016C000A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E01D121B170B0E090DADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BF +:40170000BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC63B8E4F1CAD731DC10426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FC6 +:40174000F3DCB230EC0D8652D077C1E36C2BB31699A970B9FA1194482247E964C4A8FC8C1AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F581F6 +:4017800028A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCC62547E46C2F68D13E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99D6 +:4017C000A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB7A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2E9 +:40180000312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D01533A7D84AF10498F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B549 +:401840001B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA87742EFB0B415AB3671D5292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA927AC +:4018800035B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CEBF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC3FD +:4018C0000CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4906456C1617BCB8470D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB37 +:4019000045F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC4C25F502D7FC4FE5CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32F93 +:40194000F012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D59DA9552832DD4BE21D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE10A +:40198000AD17F088AC66C9203AB47DCE4A1863DF3182E51A336097517F45625377E0B164AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7357 +:4019C00002E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C508A5D33787F23028A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DA12 +:401A0000BED50605621FD134FE8AC4A6539D342E55A0A2F3E132058AEB75A4F6EC390B83EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB5915469 +:401A40005D0571C4D46F040615FF6050FB241998E997D6BD43CC89409E7767D942BDB0E88B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980BE +:401A8000ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAE3927362DD9640A0FA621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C0EC +:401AC00020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C22171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701BB +:401B0000F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6EDF163B8E4DCCAD7318510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9EC2 +:401B400030F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194642247E98CC4A8FC3F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5F2 +:401B8000DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5F4662547E13C2F68DB8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8ACD2 +:401BC0007DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A9AA8834F6E65E695E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A4E5 +:401C000023312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D81533A7984AF104DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED145 +:401C4000881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87412EFB0B1D5AB367D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9A8 +:401C8000C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181437BF73C7CDEA53F7AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161DF9 +:401CC000250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4C190645684617BCBB670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B33 +:401D00009D45F11FFA58ABACE303934B30FA5520766DF6ADCC769188024C25F5E5D7FC4F2ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C38F +:401D40004CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF5259DA95BE832DD47421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE06 +:401D800088AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097537F45626477E0B16BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB53 +:401DC0004B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A863708A5D32887F230BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD650E +:401E000005BED50634621FD1A6FE8AC42E539D34F355A0A28AE13205F6EB75A483EC390B60EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB59165 +:401E4000C45D057106D46F045015FF6098FB2419BDE997D64043CC89D99E7767E842BDB0898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F80000000080868309BA +:401E80002BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3D2D3927360FD9640A5CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80E8 +:401EC000DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C1B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF7B7 +:401F000072F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B6E4F163B831DCCAD76385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DBE +:401F4000B230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11E9642247FC8CC4A8F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA6EE +:401F80007ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6A7E4662548D13C2F6D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8CE +:401FC000187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC4F9AA883956E65E6FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF31E1 +:402000003F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0A7D8153304984AF1ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E41 +:402040006A881B4C2C1FB8C165517F465EEA049D8C355D01877473FA0B412EFB671D5AB3DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECEA4 +:4020800061C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE7918C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216F5 +:4020C000E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD856C19064CB84617B32B670D56C5C7448B85742D00100000002000000040000000800000010000000CC +:402100002000000040000000800000001B000000360000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3EDB +:402140007F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F000102030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F2021222324A0 +:4021800025262728292A2B2C2D2E2F303132337F7F7F7F7F0200000081380110AD380110E3380110000000002F390110113901104D3901107B3901104145532D3132382D24 +:4021C000454342004145532D3139322D454342004145532D3235362D454342004145532D3132382D434243004145532D3139322D434243004145532D3235362D434243001D +:402200004145532D3132382D435452004145532D3139322D435452004145532D3235362D435452004145532D3132382D47434D004145532D3139322D47434D004145532D25 +:402240003235362D47434D004145532D3132382D43434D004145532D3139322D43434D004145532D3235362D43434D004348414348413230000000004348414348413230E3 +:402280002D504F4C59313330350000000201000080000000B82104100000000000000000100000009421041003010000C0000000C4210410000000000000000010000000CE +:4022C000942104100401000000010000D0210410000000000000000010000000942104100502000080000000DC2104101000000000000000100000009421041006020000A8 +:40230000C0000000E8210410100000000000000010000000942104100702000000010000F4210410100000000000000010000000942104100B0500008000000000220410F5 +:40234000100000000000000010000000942104100C050000C00000000C220410100000000000000010000000942104100D0500000001000018220410100000000000000007 +:40238000100000009421041002000000000000000000000000000000000000009739011097390110F9370110233801100E06000080000000242204100C00000001000000D8 +:4023C00010000000882304100F060000C0000000302204100C00000001000000100000008823041010060000000100003C2204100C00000001000000100000008823041092 +:402400000200000000000000000000000000000000000000B5390110B53901103F380110653801102B08000080000000482204100C000000010000001000000000240410E0 +:402440002C080000C0000000542204100C0000000100000010000000002404102D08000000010000602204100C00000001000000100000000024041009000000000000005F +:4024800000000000000000000D3A0110D5390110D5390110413A01106B3A011048070000000100006C2204100C00000000000000010000007824041009000000000000008C +:4024C000000000000000000000000000893A0110893A0110C13A0110EB3A0110490A000000010000782204100C0000000000000001000000B8240410020000008C2204102F +:4025000003000000A822041004000000C422041005000000E022041006000000FC22041007000000182304100B000000342304100C000000502304100D0000006C2304105A +:402540000E000000AC2304100F000000C823041010000000E42304102B000000242404102C000000402404102D0000005C240410480000009C24041049000000DC240410CC +:402580000000000000000000736563703338347231000000736563703235367231000000202045435020746573742023312028636F6E7374616E74206F705F636F756E749E +:4025C0002C206261736520706F696E742047293A200000006661696C656420282575290A000000007061737365640A00202045435020746573742023322028636F6E7374E0 +:40260000616E74206F705F636F756E742C206F7468657220706F696E74293A2000000000556E6578706563746564206572726F722C2072657475726E20636F6465203D2012 +:40264000253038580A0000000A0000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030310000000060 +:40268000464646464646464646464646464646464646464646464646393944454638333631343642433942314234443232383330000000003545413646333839413338425A +:4026C000384243383145373637373533423135414135353639453137383245333041424537443235000000003430303030303030303030303030303030303030303030303C +:402700003030303030303030303030303030303030303030303030300000000037464646464646464646464646464646464646464646464646464646464646464646464650 +:402740004646464646464646464646460000000035353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353521 +:40278000000000004C26041080260410B4260410E82604101C27041050270410040018008001000088250410030017000001000094250410000000000000000000000000A1 +:4027C000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A39 +:4028000096C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF847422CE1F2D1176BF551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34FA6 +:40284000512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +:40288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A9DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B385 +:4028C000B70A7672385E543A6C2955BF5DF20255382A5482E041F759989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AAD +:40290000C0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5D6F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFF1B +:40294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303144423432000031344445463944454132463739434436353831323633314135434635443345440000000039384141AD +:402980000000000038333335444331363342423132344236353132394339364644453933334438443732334137304141444338373344364435344137424230440000000059 +:4029C0000000000000000000201C000000000000403800000000000060240000000000008070000000000000A06C000000000000C048000000000000E05400000000000067 +:402A000000E100000000000020FD00000000000040D900000000000060C50000000000008091000000000000A08D000000000000C0A9000000000000E0B50000000000001E +:402A4000534841323234000053484132353600005348413338340000534841353132000005000000402A04101C00000040000000DBC30110F3C3011011C401102DC401103D +:402A80004BC4011071C401108DC40110A7C4011006000000482A04102000000040000000C3C40110F3C3011011C40110DBC401104BC4011071C401108DC40110A7C40110AD +:402AC00007000000502A04103000000080000000F9C4011011C501102FC501104BC5011069C501108FC50110ABC50110C5C5011008000000582A0410400000008000000098 +:402B0000E1C5011011C501102FC50110F9C5011069C501108FC50110ABC50110C5C501105504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E2A +:402B4000616D6500434E00005504060069642D61742D636F756E7472794E616D65000000436F756E74727900430000005504070069642D61742D6C6F63616C6974790000AD +:402B80004C6F63616C697479000000004C0000005504080069642D61742D73746174650053746174650000005354000055040A0069642D61742D6F7267616E697A617469CB +:402BC0006F6E4E616D6500004F7267616E697A6174696F6E000000004F00000055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E616D6500000000D0 +:402C00004F726720556E6974000000004F5500002A864886F70D010901000000656D61696C4164647265737300000000452D6D61696C206164647265737300005504050034 +:402C400069642D61742D73657269616C4E756D626572000053657269616C206E756D62657200000073657269616C4E756D626572000000005504100069642D61742D706F39 +:402C80007374616C4164647265737300506F7374616C20616464726573730000706F7374616C416464726573730000005504110069642D61742D706F7374616C436F646554 +:402CC00000000000506F7374616C20636F646500706F7374616C436F646500005504040069642D61742D7375724E616D650000005375726E616D6500534E000055042A0065 +:402D000069642D61742D676976656E4E616D6500476976656E206E616D650000474E000055042B0069642D61742D696E697469616C730000496E697469616C730000000094 +:402D4000696E697469616C730000000055042C0069642D61742D67656E65726174696F6E5175616C696669657200000047656E65726174696F6E207175616C6966696572B9 +:402D80000000000067656E65726174696F6E5175616C69666965720055040C0069642D61742D7469746C65005469746C650000007469746C6500000055042E0069642D61BC +:402DC000742D646E5175616C696669657200000044697374696E67756973686564204E616D65207175616C696669657200000000646E5175616C69666965720055044100D9 +:402E000069642D61742D70736575646F6E796D0050736575646F6E796D00000070736575646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D00 +:402E4000706F6E656E740000446F6D61696E20636F6D706F6E656E74000000004443000055042D0069642D61742D756E697175654964656E7469666965720000556E697133 +:402E80007565204964656E746966696572000000756E697175654964656E74696669657200000000551D130069642D63652D6261736963436F6E73747261696E747300006D +:402EC000426173696320436F6E73747261696E7473000000551D0F0069642D63652D6B6579557361676500004B6579205573616765000000551D250069642D63652D6578E9 +:402F0000744B65795573616765000000457874656E646564204B65792055736167650000551D110069642D63652D7375626A656374416C744E616D65000000005375626AD8 +:402F400065637420416C74204E616D65000000006086480186F842010100000069642D6E657473636170652D6365727474797065000000004E6574736361706520436572EB +:402F8000746966696361746520547970650000002B060105050703010000000069642D6B702D7365727665724175746800000000544C53205765622053657276657220416B +:402FC000757468656E7469636174696F6E0000002B060105050703020000000069642D6B702D636C69656E744175746800000000544C532057656220436C69656E742041E6 +:40300000757468656E7469636174696F6E0000002B060105050703030000000069642D6B702D636F64655369676E696E67000000436F6465205369676E696E6700000000F2 +:403040002B060105050703040000000069642D6B702D656D61696C50726F74656374696F6E000000452D6D61696C2050726F74656374696F6E0000002B060105050703082B +:403080000000000069642D6B702D74696D655374616D70696E67000054696D65205374616D70696E670000002B060105050703090000000069642D6B702D4F4353505369E8 +:4030C000676E696E670000004F435350205369676E696E67000000002A864886F70D01010E00000073686132323457697468525341456E6372797074696F6E005253412080 +:4031000077697468205348412D323234000000002A864886F70D01010B00000073686132353657697468525341456E6372797074696F6E005253412077697468205348413F +:403140002D323536000000002A864886F70D01010C00000073686133383457697468525341456E6372797074696F6E005253412077697468205348412D33383400000000E3 +:403180002A864886F70D01010D00000073686135313257697468525341456E6372797074696F6E005253412077697468205348412D353132000000002A8648CE3D0403016F +:4031C0000000000065636473612D776974682D53484132323400000045434453412077697468205348413232340000002A8648CE3D0403020000000065636473612D77695C +:4032000074682D53484132353600000045434453412077697468205348413235360000002A8648CE3D0403030000000065636473612D776974682D53484133383400000099 +:4032400045434453412077697468205348413338340000002A8648CE3D0403040000000065636473612D776974682D53484135313200000045434453412077697468205330 +:4032800048413531320000002A864886F70D01010A0000005253415353412D50535300002A864886F70D010101000000727361456E6372797074696F6E0000005253410093 +:4032C0002A8648CE3D02010069642D65635075626C69634B6579000047656E65726963204543206B657900002B8104010C00000069642D65634448004543206B657920662E +:403300006F722045434448002A8648CE3D030107000000007365637032353672310000002B810400220000007365637033383472310000002B0E03020700000064657343FC +:40334000424300004445532D434243002A864886F70D0307000000006465732D656465332D636263000000004445532D454445332D434243000000006086480165030402B0 +:403380000400000069642D7368613232340000005348412D3232340060864801650304020100000069642D7368613235360000005348412D323536006086480165030402E6 +:4033C0000200000069642D7368613338340000005348412D3338340060864801650304020300000069642D7368613531320000005348412D353132002A864886F70D0208B3 +:4034000000000000686D61635348413232340000484D41432D5348412D323234000000002A864886F70D020900000000686D61635348413235360000484D41432D534841D7 +:403440002D323536000000002A864886F70D020A00000000686D61635348413338340000484D41432D5348412D333834000000002A864886F70D020B00000000686D6163CA +:403480005348413531320000484D41432D5348412D3531320000000025642E25640000002E256400A032041009000000AC320410BC32041001000000C032041007000000C9 +:4034C000C8320410D832041002000000E832041005000000F0320410F832041003000000000000000000000000000000000000000000000008330410080000001433041042 +:403500001433041003000000203304100500000028330410283304100400000000000000000000000000000000000000000000007833041009000000843304109033041075 +:40354000050000009833041009000000A4330410B033041006000000B833041009000000C4330410D033041007000000D833041009000000E4330410F033041008000000B3 +:40358000000000000000000000000000000000000000000050726F632D547970653A20342C454E4352595054454400007273612E4E0000007273612E4500000052534100DF +:4035C00065636B65792E51004543000045435F444800000045434453410000005253412D616C740001000000BC350410A9CB01107FCB0110C5CB01103DCC011089CC011085 +:40360000D5CC011025CD011041CD01106BCD011089CD011002000000C835041005CE0110D1CD011013CE011071CE01100000000000000000D7CE0110F3CE011019CF01109D +:4036400035CF011003000000CC35041005CE01105DCF011000000000000000000000000000000000D7CE0110F3CE011019CF011035CF011004000000D435041005CE011061 +:4036800087CF0110A5CF0110E9CF01100000000000000000D7CE011025D001104BD0011035CF01102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2DA2 +:4036C0002D0000002D2D2D2D2D424547494E205253412050524956415445204B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2DA7 +:40370000000000002D2D2D2D2D424547494E2045432050524956415445204B45592D2D2D2D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D00000099 +:403740002D2D2D2D2D424547494E2050524956415445204B45592D2D2D2D2D002D2D2D2D2D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2DA3 +:403780002D424547494E20525341205055424C4943204B45592D2D2D2D2D00002D2D2D2D2D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D42454778 +:4037C000494E205055424C4943204B45592D2D2D2D2D0000020305070B0D1113171D1F25292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC172 +:40380000C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B5A5DBB5E95BC25639F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE721C +:40384000FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FCCA10C246F2CE92DAA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C63B +:403880004791A7D55163CA0667292914850AB72738211B2EFC6D2C4D130D385354730A65BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D10D +:4038C000240699D685350EF470A06A1016C1A419086C371E4C774827B5BCB034B30C1C394AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90F1 +:40390000EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42CD65EF23914437712F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F159C2 +:403940009B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8BE6F7045015B83128CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE80C8 +:403980003512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4E3254F388647BEEFB5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AF8 +:4039C000D4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E981032B42D6DC631A83F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D54D +:403A00006F8203E05163CA06706E0E0A67292914FC2FD246850AB72726C9265C38211B2EED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76BF +:403A4000E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA2013042BC4B661AA89197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D653 +:403A80002A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41953AB4151086C371E99EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E53 +:403AC00073E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F74602F17436F63A57872ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A47C +:403B00001579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA07C2C021C7B886D11EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630A6E +:403B4000AE0DF9BE04983F111B471C13350B711B847D0423F577DB289324C7407BABCA32BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F593F +:403B8000ECFAD63AAB6FCB5F1758474A8C19446C2E2F66656174757265732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766927 +:403BC00063652E63707000005F77726974655F6361636865000000005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F657261CD +:403C0000736528616464722C2073697A652900000000000000000000AD6F0210D56F0210F36F0210D77002100972021075720210AD7502106178021025790210E5790210A3 +:403C4000F7790210097A0210437A0210897A0210C17A02106B7600002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A76 +:403C800029265F64617461000000000000000000000000000000000011D1021011D1021011D1021011D1021011D1021011D1021011D1021011D1021011D1021011D1021034 +:403CC00011D1021011D1021011D10210202A2F3F3A3B227C3C3E5C006B7673746F726500202A2F3F3A3B227C3C3E5C005444425300000000556E6465726C79696E672042E8 +:403D000044206D757374206861766520666C61736820617474726962757465730000000054444253544F52453A20556E61626C6520746F2072656164207265636F72642067 +:403D4000617420696E69740054444253544F52453A20556E61626C65207265736574206172656120617420696E69740054444253544F52453A20556E61626C6520746F2082 +:403D80007772697465206D6173746572207265636F726420617420696E69740054444253544F52453A20556E61626C6520746F207265736574206172656120617420696EC1 +:403DC0006974000054444253544F52453A20556E61626C6520746F206275696C642052414D207461626C6520617420696E69740054444253544F52453A20556E61626C6592 +:403E000020746F20636865636B207768657468657220657261736520756E69742069732065726173656420617420696E6974000054444253544F52453A20556E61626C65C9 +:403E400020746F20706572666F726D20474320617420696E6974000054444253544F52453A20556E61626C6520746F2073796E6320424420617420696E697400000000004A +:403E80002E2F647269766572732F4D6265644352432E680063726320213D204E554C4C004000000000000000000000004D880210898802102D9D0210D1A10210A5A202107D +:403EC00021950210CD9502108D960210A59502106D8F0210519202103193021055A3021055A4021091A5021065A6021011A902102E2F68616C2F6D6265645F637269746913 +:403F000063616C5F73656374696F6E5F6170692E63000000216172655F696E74657272757074735F656E61626C656428290000002E2F746172676574732F544152474554F3 +:403F40005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E68000084 +:403F80002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D20D7 +:403FC0004E430000636F756C64206E6F742070696E6F75740000000070696E6D6170206D69732D6D617463680000000070696E6D6170206E6F7420666F756E6420666F7228 +:40400000207065726970686572616C0070696E6D6170206E6F7420666F756E6420666F722066756E6374696F6E00000044656570536C6565704C6F636B206F766572666C67 +:404040006F7720283E2055534852545F4D4158290000000044656570536C6565704C6F636B20756E646572666C6F7720283C2030290000002E2F68616C2F6D6265645F7491 +:4040800069636B65725F6170692E6300300000006D617463685F7469636B20213D2071756575652D3E7469636B5F6C6173745F7265616400016B0310FD6B0310816C0310A0 +:4040C0008D6C0310256C0310A56C0310C16B0310B96C0310B4400410E86700080000000000000000000000000000000011D1021011D1021011D1021011D10210A5BE0210D1 +:40410000B1BE0210635E0010815E0010BDBE0210DD5A0010FF5A00101B5B0010375B00105B5B0010675B00107B5B00102E2F746172676574732F5441524745545F43797083 +:40414000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F7461DB +:4041800072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E43000076 +:4041C0002E2E2E0A000000002E2F706C6174666F726D2F6D6265645F637269746963616C2E630000637269746963616C5F73656374696F6E5F7265656E7472616E63795FCF +:40420000636F756E746572203C2055494E5433325F4D415800000000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D65643E0000000A0A2B2BE9 +:40424000204D6265644F53204572726F7220496E666F202B2B0A4572726F72205374617475733A203078255820436F64653A202564204D6F64756C653A2025640A45727267 +:404280006F72204D6573736167653A20000000004B65726E656C204572726F723A203078256C582C200000005468726561643A203078256C582C20004D757465783A2030F0 +:4042C00078256C582C20000053656D6170686F72653A203078256C582C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C6167733A203078256C6A +:40430000582C200054696D65723A203078256C582C2000004D65737361676551756575653A203078256C582C20000000417373657274696F6E206661696C65643A20000009 +:404340000A4C6F636174696F6E3A203078256C58000000000A46696C653A20002B2564000A4572726F722056616C75653A203078256C58000A43757272656E742054687220 +:404380006561643A202573202049643A203078256C5820456E7472793A203078256C5820537461636B53697A653A203078256C5820537461636B4D656D3A203078256C5830 +:4043C0002053503A203078256C5820000A466F72206D6F726520696E666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875622E696F2F6D62658D +:40440000646F732D6572726F722F3F6572726F723D307825303858000A2D2D204D6265644F53204572726F7220496E666F202D2D0A00000052C6021062C6021072C60210D7 +:4044400082C6021092C60210B2C60210A2C60210C2C60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC602101E +:40448000D2C6021052616D2065786563757465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900000052616D20657865637574652085 +:4044C0006E65766572206C6F636B20756E646572666C6F7720283C2030290000526F6D207772697465206E65766572206C6F636B206F766572666C6F7720283E2055534834 +:4045000052545F4D41582900526F6D207772697465206E65766572206C6F636B20756E646572666C6F7720283C203029000000004572726F72202D2077726974696E672057 +:40454000746F20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D2072656164696E67200D +:4045800066726F6D20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696F6E0D0A00457863657074696F6E0000002E2F706C6174666FE8 +:4045C000726D2F6D6265645F72657461726765742E6370700000000030203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B29000000FA +:404600004358415F47554152445F494E49545F494E5F50524F4752455353203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000B2 +:404640004F70657261746F72206E6577206F7574206F66206D656D6F72790D0A000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00009C +:404680002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F6461746100000000000000000085D30210A5D3021019 +:4046C00021CA0210DDC9021039C9021065C90210A5BE021059C90210635E0010815E00104BC90210DD5A0010FF5A00101B5B0010375B00105B5B001055CA02107B5B00106D +:4047000044657072656361746564206265686176696F723A206D696C6C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E746572FF +:40474000727570742E0A0000776169745F757320626C6F636B73206465657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E67206B +:4047800064656C6179730A0061706C69636174696F6E5F756E6E616D65645F6D75746578000000002E2F72746F732F4D757465782E637070000000005F6964004D757465D1 +:4047C00078206C6F636B206661696C65640000004D7574657820756E6C6F636B206661696C6564006D616C6C6F635F6D7574657800000000656E765F6D75746578000000CA +:4048000073696E676C65746F6E5F6D75746578006D61696E00000000507265206D61696E20746872656164206E6F742063726561746564004661696C656420746F20737432 +:404840006172742052544F5300000000434D5349532D52544F53206572726F723A20537461636B206F766572666C6F7700000000434D5349532D52544F53206572726F7229 +:404880003A20495352205175657565206F766572666C6F7700000000434D5349532D52544F53206572726F723A20557365722054696D65722043616C6C6261636B2051758C +:4048C000657565206F766572666C6F7700000000434D5349532D52544F53206572726F723A2053544420432F432B2B206C696272617279206C69627370616365206E6F744E +:4049000020617661696C61626C650000434D5349532D52544F53206572726F723A2053544420432F432B2B206C696272617279206D7574657820696E697469616C697A6152 +:4049400074696F6E206661696C656400434D5349532D52544F53206572726F723A20556E6B6E6F776E000000556E7370656369666965642052544F53206572726F7200004F +:404980004F7065726174696F6E206E6F7420636F6D706C657465642077697468696E207468652074696D656F757420706572696F640000005265736F75726365206E6F7461 +:4049C00020617661696C61626C650000506172616D65746572206572726F720053797374656D206973206F7574206F66206D656D6F7279004E6F7420616C6C6F776564200B +:404A0000696E2049535220636F6E746578740000556E6B6E6F776E004AD80210FAD702100AD802101AD802102AD802103AD80210BAD80210B6D80210B2D80210AED80210BD +:404A4000AAD80210A6D802105254582056352E342E3000007274785F69646C65000000007274785F74696D657200000003000000E803000005000000A46900081000000058 +:404A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6 +:404AC000001000000C4B0410304B0410544B0410040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5 +:404B0000000000000000000000000000544A041000000000E469000844000000706A000800020000010000000100000000000000604A041000000000286A000844000000A8 +:404B4000706C0008000300002800000001000000000000000000000000000000706F000834000000A46F0008500000000000000004040310A003031004040310B4030310E9 +:404B800004040310C8030310DC030310F00303102E2F72746F732F546869735468726561642E6370700000002128666C6167732026206F73466C6167734572726F72290091 +:404BC00028666C616773203D3D206F73466C6167734572726F7254696D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028B1 +:404C0000666C616773203D3D206F73466C6167734572726F725265736F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B0000C1 +:404C4000020000000000614012000000000100000000684012070000000500000000664012050000000600000000644012030000040600000000674012060000000700006C +:404C80000000654012040000000800000000654012040000000900000000634012020000000A00000000624012010000000B00000000664012050000000C0000000067407C +:404CC00012060000000D00000000674012060000FFFF0000FFFFFFFF000000000300000000006140120015000101000000006840120715000105000000006640120515005B +:404D0000010600000000644012031500050600000000674012061500010700000000654012041500010800000000654012041500010900000000634012021500010A00002D +:404D40000000624012011500010B00000000664012051500010C00000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000841A03108A1A031066 +:404D8000901A0310961A03109E1A03100300000001000000010000000000000005036000040000000100000000000000010000000604600008000000C8710008051F03104B +:404DC0000800000001000000020000000200000008080003090000000100000000000000030000000909000308000000A8710008911E03100A000000010000000400000077 +:404E0000040000000A0A000C0B0000000100000000000000050000000B0B000C1000000068710008A51E03102E2F746172676574732F5441524745545F43797072657373BF +:404E40002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973636C6B2F63795F737973636C6B2E68000000127A005D +:404E800000E1F50500000000000000000000010000001000000000502E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646569 +:404EC000766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F43797058 +:404F0000726573732F5441524745545F50534F43362F5441524745545F4655545552455F53455155414E415F4D305F5053412F73706D5F696E69745F6170692E630000007C +:404F40002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F85 +:404F80006970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646576696365DA +:404FC0002F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F544152F0 +:405000004745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6300002E2F746172676574732F5441FB +:40504000524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F64FA +:4050800072762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572DA +:4050C0006970686572616C2F6970632F63795F6970635F6472762E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F435F +:40510000362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F54415247455472 +:405140005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F706970652EB3 +:40518000630000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572697068654E +:4051C00072616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465D1 +:40520000766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970DF +:40524000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E68000000CF +:405280002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F42 +:4052C0007363622F63795F7363625F756172742E630000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64657669636534 +:405300002F647269766572732F7065726970686572616C2F737973616E616C6F672F63795F737973616E616C6F672E63000000002E2F746172676574732F544152474554CB +:405340005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E7410 +:405380002E63000090460310A6460310BC460310D2460310E8460310FE460310144703102A4703102E2F746172676574732F5441524745545F437970726573732F544152FF +:4053C0004745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973706D2F63795F737973706D2E63000000002E2F74617267657455 +:40540000732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F8B +:405440006770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6170692E63000000006F626A004F +:405480006F626A2D3E706F72740000006F626A2D3E70696E20213D204E43000043595F50494E286F626A2D3E70696E29203C2038000000004750494F2070696E2072657391 +:4054C0006572766174696F6E20636F6E666C6963742E00003E54031062540310685403106E540310745403105C5403107A5403102E2F746172676574732F544152474554C6 +:405500005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E680000AE +:40554000565803107A58031080580310865803108C5803107458031092580310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F30 +:4055800070696E2100000000547279696E6720746F20667265652077726F6E6720706F72742F70696E2E00002E2F746172676574732F5441524745545F43797072657373D6 +:4055C0002F5441524745545F50534F43362F70736F63365F7574696C732E63006469765F74797065203C2043595F4E554D5F444956494445525F5459504553006469765FE9 +:405600006E756D203C3D20705F616C6C6F632D3E6D61785F696E646578000000547279696E6720746F2072656C656173652077726F6E6720636C6F636B20646976696465D0 +:40564000722E0000705F616C6C6F632D3E63757272656E745F696E646578203C20705F616C6C6F632D3E6D61785F696E64657800547279696E6720746F2072656C65617331 +:40568000652077726F6E67205343422E00000000547279696E6720746F2072656C656173652077726F6E6720544350574D2E00006368616E6E656C5F6964000063686E200D +:4056C0003C204E554D5F4E5649435F4348414E4E454C53004E564943206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00D5 +:40570000000000FC063F0BFD000000000000000000000000FEFF000001000000FEFF00002E2F746172676574732F5441524745545F437970726573732F5441524745545F3B +:4057400050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F544152474554BC +:405780005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F36 +:4057C0006E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F73657269616C5F6170692E63000073657269616C5F692F +:4058000064203C204E554D5F53455249414C5F504F525453000000006F626A0053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E04 +:405840000000000053657269616C2054582F52582070696E207265736572766174696F6E20636F6E666C6963742E000053657269616C205254532070696E20726573657229 +:40588000766174696F6E20636F6E666C6963742E0000000053657269616C204354532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269E1 +:4058C000616C2070696E6F7574206D69736D617463682E205265717565737465642070696E7320527820616E642054782063616E2774206265207573656420666F72207403 +:4059000068652073616D652053657269616C20636F6D6D756E69636174696F6E2E00000040420F002000000000005A0003000000FFFFFFFF00000000000000000000000086 +:40594000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000300000001000000504D206301 +:40598000616C6C6261636B20726567697374726174696F6E206661696C656421000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C20BB +:4059C0007265736572766174696F6E20636F6E666C6963742E0000001006000843000000504F5349580000002E000000908E0310048F0310048F0310748E0310048F0310FB +:405A0000048F0310048F0310048F0310048F0310048F03107C8E03105E890310048F03101889031068890310048F0310B48903109E8B03109E8B03109E8B03109E8B0310CD +:405A40009E8B03109E8B03109E8B03109E8B03109E8B0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310BC89031026 +:405A8000048B0310048F0310048B0310048F0310048F0310048F0310048F0310CE8B0310048F0310048F0310D68B0310048F0310048F0310048F0310048F0310048F0310FA +:405AC000788C0310048F0310048F0310AA8C0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310A48D0310D88D0310C2 +:405B0000048B0310048B0310048B0310EA8D0310D88D0310048F0310048F0310F28D0310048F03100C8D0310D28E0310488E0310428D0310048F03104A8D0310048F0310D9 +:405B4000A08E0310048F0310048F0310028E0310494E4600696E66004E414E006E616E0030313233343536373839414243444546000000003031323334353637383961624F +:405B80006364656600000000286E756C6C290000300000002020202020202020202020202020202030303030303030303030303030303030002020202020202020202828A7 +:405BC0002828282020202020202020202020202020202020208810101010101010101010101010101004040404040404040404101010101010104141414141410101010153 +:405C000001010101010101010101010101010101101010101010424242424242020202020202020202020202020202020202020210101010200000000000000000000000E0 +:405C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024 +:405C80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000496E66696E6974799A +:405CC000000000004E614E000080E03779C34143176E05B5B5B89346F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244095 +:405D000000000000000059400000000000408F40000000000088C34000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD4122 +:405D4000000000205FA00242000000E876483742000000A2941A6D42000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D88557347643E6 +:405D800000C84E676DC1AB43003D9160E458E143408CB5781DAF154450EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA44050000001900000023 +:405DC0007D00000000C60310E2C503109CC50310BAC403109CC50310D4C503109CC50310BAC40310E2C50310E2C50310D4C50310BAC40310B2C40310B2C40310B2C403101D +:405E000018C8031060CE031020CD031020CD03101CCD031038CE031038CE03102ACE03101CCD031038CE03102ACE031038CE03101CCD031040CE031040CE031040CE03105D +:405E400044D00310000000000000001000000008C0000000705E0410C0000008A8130000A8140008A86F0000B8A2FB7F01000000000000002300000000000000F07F00007C +:405E800000000000000000000B000000B4DD03100400000000000000000000000A00000000000000F000000000000000000000000400000000000000000000000000000031 +:405EC0000000000008DD031000000000C854000844000000C814000800400000180000000000000000000000000F00001000000000000000010000000100000001000000E4 +:405F00000000000000000000010F000020000000000000000100000001000000010000000000000000000000020F00004000000000000000010000000100000001000000DA +:405F40000000000000000000030F000080000000000000000100000001000000010000000000000000000000040F0000000100000000000001000000010000000100000075 +:405F80000000000000000000050F000000020000000000000100000001000000010000000000000000000000060F00000004000000000000010000000100000001000000AC +:405FC0000000000000000000070F000000080000000000000100000001000000010000000000000000000000080F0000001000000000000001000000010000000100000056 +:406000000000000000000000090F0000002000000000000001000000010000000100000000000000000000000A0F00000040000000000000010000000100000001000000C9 +:4060400000000000000000006CE003100000000080590008440000008055000800040000180000000000000000000000001A01001000000000000000010000000000000077 +:40608000010000000000000000000000011A010020000000000000000100000000000000010000000000000000000000021A01004000000000000000010000000000000043 +:4060C000010000000000000000000000031A01008000000000000000010000000000000001000000000000000000000050E8031000000000705B000824000000805A0008DB +:40610000F000000064E8031000000000C45D000824000000345C0008900100000000000000000000000000000A000000E0590008000000000A000000945B0008000000004E +:4061400000000000245E00083C5E0008010000006D7B0310EC3C0410AFBC0210FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000004A +:4061800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF +:4061C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F +:40620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E +:406240000000000000000000000000000000000000000000000000000000000050840008F1D90210484A0410C08CFB02000000000000000000000000000000000000000077 +:4062800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE +:4062C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E +:40630000000000000000000080F0FA0200E1F50580F0FA0200127A0080F0FA0250C30000320000000000A86102FF0000FF000000000000000000000000000000070000005D +:4063400002000000FF0000000F00000000000000FFFF00000300000000000000FFFF00000000000000000000FFFF000001000000000000000100000000000000000000000E +:406380000000000000000000000000000000000000000000000000000000384000000000BD6A03100100000007000000E40500080000000000000000100600080000000014 +:4063C00000000000FC08000864090008CC0900080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F +:40640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C +:406440000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000E33CDAB34126DE6ECDE05000B000000EF +:4064800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC +:4064C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C +:40650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B +:40654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B +:4065800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB +:4065C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B +:40660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A +:40664000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A +:4066800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA +:4066C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A +:406700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059 +:406740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019 +:4067800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9 +:4067C0000000000000000000000000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000056 +:4068000000000000000000004300000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000D2 +:406840000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000092 +:406880000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000052 +:4068C0000000000000000000D19E03105179031000000000B45B0410E8590410705B0410705B0410705B0410705B0410705B0410705B0410705B0410705B0410705B0410EA +:40690000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000001004153434949000000000000000000000000000000000000000000000000000000415343494900000000000000000092 +:4069400000000000000000000000000000000000000000000000000000000000A40B0008A40B0008AC0B0008AC0B0008B40B0008B40B0008BC0B0008BC0B0008C40B000828 +:40698000C40B0008CC0B0008CC0B0008D40B0008D40B0008DC0B0008DC0B0008E40B0008E40B0008EC0B0008EC0B0008F40B0008F40B0008FC0B0008FC0B0008040C000866 +:4069C000040C00080C0C00080C0C0008140C0008140C00081C0C00081C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C000817 +:406A0000440C00084C0C00084C0C0008540C0008540C00085C0C00085C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008D6 +:406A4000840C00088C0C00088C0C0008940C0008940C00089C0C00089C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C000896 +:406A8000C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C0008DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D000855 +:406AC000040D00080C0D00080C0D0008140D0008140D00081C0D00081C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D000806 +:406B0000440D00084C0D00084C0D0008540D0008540D00085C0D00085C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008C5 +:406B4000840D00088C0D00088C0D0008940D0008940D00089C0D00089C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D000885 +:406B8000C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D0008DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E000844 +:406BC000040E00080C0E00080C0E0008140E0008140E00081C0E00081C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008F5 +:406C0000440E00084C0E00084C0E0008540E0008540E00085C0E00085C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008B4 +:406C4000840E00088C0E00088C0E0008940E0008940E00089C0E00089C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E000874 +:406C8000C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E0008DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F000833 +:406CC000040F00080C0F00080C0F0008140F0008140F00081C0F00081C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008E4 +:406D0000440F00084C0F00084C0F0008540F0008540F00085C0F00085C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008A3 +:406D4000840F00088C0F00088C0F0008940F0008940F00089C0F00089C0F0008FFFFFFFF00000200E9000010096F0210C10000100000000000B585B00190019B0393039BD9 +:406D80005B78FF2B37D100F0F7F903000293042000F03AFA0300180000F026FA03001A00164B1A60164B00221A60154B1B685B015B4201229A40134B1A60104B1B685A689D +:406DC0000F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A12680A431A60C046094B1B681A68074B1B681340F8D1029B180000F0D1F9C04605B000BD00720008F0 +:406E000004720008087200080C72000800B589B001900091444B0793002000F0F5F9030005930023069300F0C7F9020013236B44033A51424A411A7013236B441B78012227 +:406E40005340DBB2002B02D00023079331E0062000F0DAF90300180000F0CEF903001A0001235340DBB2002B23D0002000F0ACF902002E4B9A421CD02D4A00230021012019 +:406E800000F072F9031E14D102E0069B01330693002000F099F90200244B9A4203D0069B244A9342F1D9069B224A934201D800230793079B002B33D100F05EF90300039388 +:406EC000002000F0A1F91C4B1A00012100F05CF9031E13D1019B002B06D1009B180000F02FF8164B07930BE0C046059B1B69002BFBDB00F071F90300079301E00A4B0793BB +:406F000013236B441B78002B06D0C0460121002000F04AF9031EF9D1039B180000F03CF9079B180009B000BD050052000101880078050008EF490200F0710008010050000D +:406F400084B00190019B1B041B0CDB000393039B002B1DD0104B3E221A60104B104A1A60104AA323DB000621D1500E49039B1B021B0A0D4A8B500B4A0B4BD358DB0F012250 +:406F800013400393C046074A074BD358002BFADAC04604B07047C04604012640080126401E1F0000000026401C05000010B582B002006B4607331A70C046414B1B68002B52 +:406FC000FBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0394B394AD2681204110C384A1269120A1004FF2212041040344C9022A258120A120602430A43DA6036 +:40700000304B304A126930490A40902109010A431A612C492B4A9023D3582B4A134090221201134390228B50264B1B69254A9023D358234B00225A60214B5B68234B234ACC +:40704000126904210A431A616B4607331B78012B01D030BF00E020BFC046194B1B68002BFBDA174BDB68012213401DD0154B154A126915491140124AD268120C1002FF22BA +:40708000120202400A431A610E480E4A9023D3580D4A1A400A4BDB681B0E1902FF231B020B40134390228350054B054AD26802218A43DA60024B00225A60C04602B010BD83 +:4070C000E000234000002140FF00FFFF00ED00E082B002006B4607331A701A4B194A126904210A431A616B4607331B78012B01D030BF00E020BFC046134B1B68002BFBDA39 +:40710000124A86235B00D358002B15D1104B114A1A60114B06221A60104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A86235B000B49D150034B00225A60C04639 +:4071400002B0704700ED00E0E000234000002540080126401E1F000018052640040126401C052640AAAAAAAA01B40248844601BC604700BFB533031001B40248844601BCFB +:40718000604700BFE347031001B40248844601BC604700BF0529031001B40248844601BC604700BFEB47031001B40248844601BC604700BFF537031001B40248844601BC1D +:4071C000604700BF8D1D031001B40248844601BC604700BFDD38031001B40248844601BC604700BF452C031001B40248844601BC604700BFE528031001B40248844601BC56 +:40720000604700BFF328031001B40248844601BC604700BFB128031000000000000000000000000000000000000000000000000000000000000000000000000000000000E2 +:40724000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E +:4072800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE +:4072C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E +:0200000490303A +:0200000035CDFC +:0200000490501A +:0C0000000005E20721002101000056CDA0 +:00000001FF diff --git a/TESTS/psa/crypto_init/main.cpp b/TESTS/psa/crypto_init/main.cpp index 3c6db65d53b..b7fa4824e2e 100644 --- a/TESTS/psa/crypto_init/main.cpp +++ b/TESTS/psa/crypto_init/main.cpp @@ -16,8 +16,8 @@ * limitations under the License. */ -#if ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C)) || (!defined(MBEDTLS_PSA_CRYPTO_SPM ))) -#error [NOT_SUPPORTED] Mbed SPM Crypto is OFF - skipping. +#if ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C))) +#error [NOT_SUPPORTED] Mbed Crypto is OFF - skipping. #endif // TARGET_PSA #include "greentea-client/test_env.h" @@ -49,23 +49,24 @@ utest::v1::status_t greentea_test_setup(const size_t number_of_cases) static void check_multi_crypto_init_deinit() { +#if !defined(COMPONENT_PSA_SRV_IPC) + TEST_SKIP(); +#endif uint8_t output[TEST_RANDOM_SIZE] = {0}; - uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; - /* inject some a seed for test*/ - for (int i; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { - seed[i] = i; - } - /* don't really care if this succeed this is just to make crypto init pass*/ - mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); + psa_status_t status = psa_crypto_init(); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + status = psa_crypto_init(); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_NOT_EQUAL(PSA_ERROR_BAD_STATE, status); + mbedtls_psa_crypto_free(); status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_NOT_EQUAL(PSA_ERROR_BAD_STATE, status); + mbedtls_psa_crypto_free(); status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, status); @@ -75,19 +76,17 @@ static void check_crypto_init_deinit() { psa_status_t status; uint8_t output[TEST_RANDOM_SIZE] = {0}; - uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; - /* inject some a seed for test*/ - for (int i; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { - seed[i] = i; - } - /* don't really care if this succeed this is just to make crypto init pass*/ - mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); + + // Should fail as init is required first status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, status); + status = psa_crypto_init(); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_NOT_EQUAL(PSA_ERROR_BAD_STATE, status); + mbedtls_psa_crypto_free(); status = psa_generate_random(output, sizeof(output)); TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, status); @@ -102,5 +101,15 @@ Specification specification(greentea_test_setup, cases, greentea_test_teardown_h int main() { +#if (defined(COMPONENT_PSA_SRV_IPC) || defined(MBEDTLS_ENTROPY_NV_SEED)) + uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; + /* inject some a seed for test*/ + for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { + seed[i] = i; + } + + /* don't really care if this succeed this is just to make crypto init pass*/ + mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); +#endif return !Harness::run(specification); } diff --git a/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c b/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c index 3b8bff8eac6..1d89eb712eb 100644 --- a/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c @@ -19,6 +19,8 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ #include "spm_panic.h" @@ -26,10 +28,10 @@ #include "handles_manager.h" #include "cmsis.h" #include "psa_test_its_reset_partition.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; spm_partition_t g_partitions[3] = { { @@ -44,25 +46,25 @@ spm_partition_t g_partitions[3] = { .irq_mapper = NULL, }, { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -76,8 +78,8 @@ const uint32_t mem_region_count = 0; // forward declaration of partition initializers void test_its_reset_init(spm_partition_t *partition); +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) { @@ -86,8 +88,8 @@ uint32_t init_partitions(spm_partition_t **partitions) } test_its_reset_init(&(g_partitions[0])); - its_init(&(g_partitions[1])); - psa_f_init(&(g_partitions[2])); + crypto_srv_init(&(g_partitions[1])); + its_init(&(g_partitions[2])); *partitions = g_partitions; return 3; diff --git a/TESTS/psa/entropy_inject/TARGET_FUTURE_SEQUANA_PSA/entropy_inject.hex b/TESTS/psa/entropy_inject/TARGET_FUTURE_SEQUANA_PSA/entropy_inject.hex new file mode 100644 index 00000000000..e5cc3bff461 --- /dev/null +++ b/TESTS/psa/entropy_inject/TARGET_FUTURE_SEQUANA_PSA/entropy_inject.hex @@ -0,0 +1,4578 @@ +:020000041000EA +:40000000000001083D1A03100D0000000904001000000000000000000000000000000000000000000000000000000000BDDB0210000000000000000041DC02104DDC02100F +:40004000951A0310A5200310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A03104A +:40008000951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A031020 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD10150008000000002C610410084B10B5002B03D00749084800E000BF07480368002B00D1B6 +:4001000010BD064B002BFBD09847F9E700000000141500082C6104102810000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F066 +:40014000E5FD0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF017F937F0CFF9200029002DF049FB2DF005F9C046000008000000010849 +:400180000000000025D70210101500081889000895D302100000000000B583B00190019B002B05D10C490D4B572218002CF024FA0B4B180000F01AF80A4B180001F0FEFF88 +:4001C000094B180002F046FD019B054A1A600323180003B000BDC04634DB031018DB0310C4000008EC0000081401000800B585B00190019B002B05D11F49204B54221800C7 +:400200002CF0FAF91E4B18002FF0BAFC0200019B1A62019B1B6A002B05D11749194B592218002CF0E9F90023039309E0164A039B5B01D3180833019A1A60039B0133039329 +:40024000039B002BF2D0019B0F4A1A610F4A104B0021180031F0B4F90200019B5A60019B5B68002B05D104490A4B632218002CF0C3F9C04605B000BD24DC03106CDB031014 +:4002800014DC031088DB0310600100083C01000889030010CCDB031000B583B00190019B180000F06BF8019B180003B000BD000010B5144B1B78BFF35B8FDBB21A000123FF +:4002C00013405A425341DBB2002B17D00D4B18002DF07AF803005A1E9341DBB2002B0DD0094B1800FFF7D8FF064B18002DF0A4F8064A0749044B18002DF03AF8024B1800E3 +:4003000010BDC046E019000890190008C0000008C984021000B585B00023039328F064F803000293029B002B01D0052320E0FFF7BFFF03000193104A019B1100180028F01F +:400340009BFA03000093009B002B01D105230FE0009B1B6810331B68009A1000984703005A1E9341DBB2002B01D005230393039B180005B000BDC04638DC031082B0019088 +:40038000019B180002B0704700B591B0019000230E9303AB18002C231A00002137F0B6FC00230F9380231B06180003F063FE03000E930E9B10221340F4D003AB190010202A +:4003C00003F066FE03AB1B68022B04D0032B0ED0012B0CD004E0FFF79DFF03000F9307E003AB1B680649074835222CF005F9C04603AB5B680F9A1100180004F01DF8D1E714 +:400400007CDC031058DC03102C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B196802680A60043142680A60043182680A600431CF +:40044000C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A600431C2690A60043103462033154E3242EF +:4004800000D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A606046074900F010F8FEE700001000000008 +:4004C000200000003000000040000000040000008CDC03100002000000B587B003900291002305931C4B18002BF0FEFE039B302B0AD0402B0FD0202B14D1184B18002BF0A5 +:40050000F3FE174B059314E0164B18002BF0ECFE154B05930DE0154B18002BF0E5FE144B059306E0134B18002BF0DEFE124B0593C046124B18002BF0D7FE00F027F8104BEF +:4005400018002BF0D1FE0F4BDA6B0F4905980023009300232CF0E8F890DC0310BCDC03103E01FF80CCDC03103F01FF80D8DC03104001FF80E4DC03103D01FF80F0DC0310B8 +:40058000FCDC0310B47700081CDD031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF09FFE059B01330593059B0C2BEFDD264B5C6B254B9D6B244BDC +:4005C000DE6B234B1A6C224B596C214B9B6C224802930191009233002A0021002BF084FE1E4B1A681E4B110018002BF07DFE184BDB6C0822134012D01A4B18002BF074FEB5 +:40060000134B1B6D0122134004D0174B18002BF06BFE0CE0154B18002BF066FE07E0144B18002BF061FE114B18002BF05DFE084BDB6C0422134004D00E4B18002BF054FE22 +:4006400003E00D4B18002BF04FFEC04606B070BDB47700082CDD03103CDD031000ED00E08CDD03109CDD0310ACDD0310BCDD0310D0DD0310E0DD0310ECDD031082B001900F +:400680000091009B180002B07047000000B583B00190019B180005F017FC019B180000F095F8084A019B1A60019B28330021180000F04CF8019B382201219954019B1800A2 +:4006C00003B000BDB000041000B583B001900C4A019B1A60019B180005F025FB019B2833180000F04BF8019B180000F075F8019B180005F023FC019B180003B000BDC046D3 +:40070000B000041000B583B00190019B1800FFF7DBFF019B18002CF0F1FE019B180003B000BD000000B583B00190019B1800FFF7ADFF019B180000F07BF8034A019B1A60CC +:40074000019B180003B000BDC400041000B583B001900091009B002B06D1019B10220021180037F0D3FA05E06A46019B1100180000F06AF8019B180003B000BD00B583B023 +:400780000190019BDB68002B05D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BDB685B680099019A10009847009BDA68AF +:4007C000019BDA60019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341DBB2180002B0704700B583B00190009139 +:40080000019A009B9A420FD0019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD82B00190019B180002B0704782B001902E +:40084000019B180002B0704700B583B001900091019B10220021180037F058FA019B19000420FFF70BFF031E02D0009A12681A60019B024ADA60C04603B000BDF8DD0310F7 +:4008800000B583B00190019B1B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B000BD82B00190C04602B0704700B583B07C +:4008C0000190074A019B1A60019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BDC400041000B583B00190019B1800FFF7E5FF019B18002CF001FE019B180003B0C8 +:4009000000BD000000B58DB06B4618002C231A00002137F0FBF900230B936B461900102003F0B6FB6B461B68022B04D0032B12D0012B10D00CE00BF04DF803000B930B9B77 +:40094000002B0AD10A4B1B685A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F067FDC0460DB000BDE419000800B58DB06B4618002C231A009E +:40098000002137F0C3F900230B936A4680235B011100180003F07CFB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E0C4B1A600B4B1B68002B07D10AF0C6FF36 +:4009C00004E002230B9302E0C04600E0C0466B465B680B9A1100180003F02EFDC0460DB000BDC046E419000800B597B005AB18002C231A00002137F089F90023159305AB25 +:400A00001900202003F044FB05AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F022FA03001493149B002B02D10923159332E105AB5B68149A110099 +:400A4000180003F061FE2AE103AB180008231A00002137F05BF905ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002103F022FC0300139305ABDA68139B9A4228 +:400A800005D08C498C4B722218002BF0B5FD03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B681A0007F0C7FC03001593DBE005AB986881 +:400AC00003AB598803AB5B681A0007F0CFFC03001593CFE005AB1B691900012036F0C6F903001293129B002B02D109231593C1E005AB586805AB1B69129A012103F0DCFB69 +:400B00000300139305AB1A69139B9A4205D06949694B8E2218002BF06FFD05AB986805AB1A69129B190007F0B5FC03001593129B180036F01FFD9DE00023029305AB58681D +:400B400005AB1B6902AA012103F0B6FB0300139305AB1A69139B9A4205D05649564B9E2218002BF049FD00230193029B1900012036F07CF903001193119B002B02D1092375 +:400B8000159377E005AB9868029A01AB119907F0A7FD03001593159B002B0DD105AB5868019B119A002103F0C3FB05AB586801AA0423012103F0BCFB119B180036F0DAFC3E +:400BC000C04657E00023009305AB586805AB1B696A46012103F070FB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D03049314BB82218002BF0FEFC009B190084 +:400C0000012036F033F903001093109B002B02D1092315932EE005AB586805AB5B69109A022103F049FB0300139305AB5A69139B9A4205D01F49204BC12218002BF0DCFCEC +:400C400005AB9B68009A1099180007F08EFD03001593109B180036F08DFCC0460AE005AB9B68180007F050F80300159302E002231593C046C04612E005AB9B68180007F0B3 +:400C800043F805AB9B68002B08D005AB9B68180036F070FC02E00223159300E0C04605AB5B68159A1100180003F0C6FBC04617B000BDC04628DF031004DE031024DE03109E +:400CC00000B597B005AB18002C231A00002137F01DF80023159305AB1900402003F0D8F905AB1B68022B19D0032B00D12BE1012B00D037E1E021012036F0B8F803001493A8 +:400D0000149B002B02D1092315932FE105AB5B68149A1100180003F0F7FC27E10023139303AB180008231A00002136F0EFFF05ABDB68082B02D00B23159317E105AB5868AB +:400D400005ABDB6803AA002103F0B6FA0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF047FC03AB1B780F3B042B00D9E2E09A00834BD3181B689F4679 +:400D800005AB9A6803AB5B681900100006F01CFC03001593D5E005AB1B691900012036F065F803001293129B002B02D109231593C7E005AB586805AB1B69129A012103F055 +:400DC0007BFA0300139305AB1A69139B9A4207D01623FF331A006A496A4B18002BF00CFC05AB986805AB1A69129B190006F064FC03001593129B180036F0BCFBA1E0002329 +:400E0000029305AB586805AB1B6902AA012103F053FA0300139305AB1A69139B9A4206D092235A005649574B18002BF0E5FB00230193029B1900012036F018F80300119361 +:400E4000119B002B02D1092315937AE005AB9868029A01AB119906F073FC03001593159B002B0DD105AB5868019B119A002103F05FFA05AB586801AA0423012103F058FA62 +:400E8000119B180036F076FBC0465AE00023009305AB586805AB1B696A46012103F00CFA0300139305AB1A69139B9A4204D105AB5A69009B9A4206D09F235A003049314B66 +:400EC00018002BF099FB009B1900012035F0CEFF03001093109B002B02D10923159330E005AB586805AB5B69109A022103F0E4F90300139305AB5A69139B9A4207D04823C8 +:400F0000FF331A001E491F4B18002BF075FB05AB9B68009A1099180006F044FD03001593109B180036F026FBC0460AE005AB9B68180006F01BFB0300159302E002231593D6 +:400F4000C046C04612E005AB9B68180006F00EFB05AB9B68002B08D005AB9B68180036F009FB02E00923159300E0C04605AB5B68159A1100180003F05FFAC04617B000BD41 +:400F80003CDF031004DE03103CDE031070B5A2B00DAB18002C231A00002136F0B7FE002321930DAB1900802003F072F80DAB1B68022B06D0032B00D197E1012B00D196E167 +:400FC00090E10DABDB68102B02D00B2321938FE10023209309AB180010231A00002136F095FE0DAB58680DABDB6809AA002103F063F9030020930DABDA68209B9A4207D0A9 +:401000008023FF331A00BF49BF4B18002BF0F4FA09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB691900012035F01AFF03001F931F9B002BA6 +:4010400002D1092321934CE10DAB1B691900012035F00CFF03001E931E9B002B06D1092321931F9B180036F085FA3AE10DAB58680DAB1B691E9A012103F01EF903002093BB +:401080000DAB1A69209B9A4206D0CC235A009D499D4B18002BF0B0FA09AB588809AB59680DAB1D690DABDB691E9C08AA029201931F9B00932B00220007F010FE0300219367 +:4010C000219B002B06D10DAB5868089B1F9A002103F02EF90DAB586808AA0423012103F027F91F9B180036F045FAC046F9E00DAB1B691900012035F0B9FE03001D931D9BCA +:40110000002B02D109232193EBE00DAB58680DAB1B691D9A012103F0CFF8030020930DAB1A69209B9A4207D0B823FF331A007549754B18002BF060FA0DAB5B691900012078 +:4011400035F094FE03001C931C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F0AAF8030020930DAB5A69209B9A4206D0E1235A006349634B18002BF03CFAAA +:4011800009AB588809AB59680DAB5C690DAB1B691C9A01931D9B0093230007F029FE030021931D9B180036F0E5F91C9B180036F0E1F996E0002307930DAB1B691900012094 +:4011C00035F054FE03001B931B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F06AF8030020930DAB1A69209B9A4207D0E023FF331A004249434B18002BF0F3 +:40120000FBF91B9B1A9309AB9B681B9AD31819930DABDB691900012035F028FE03001893189B002B06D1092321931B9B180036F0A1F956E009AB1B78252B1AD109AB5888B6 +:4012400009AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F04AFE0300219319E009AB588809AB5C6809AB9E6809ABAF +:40128000DA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F0D3FE03002193219B002B06D10DAB5868079B189A002103F03BF80DAB586807AA45 +:4012C0000423012103F034F8189B180036F052F91B9B180036F04EF9C04602E00223219303E002E00223219302E0C04600E0C0460DAB5B68219A1100180003F09DF8C046F5 +:4013000022B070BD50DF031004DE0310F0B5A5B013AB18002C231A00002136F0F7FC0023239313AA80239B001100180002F0B0FE13AB1B68022B06D0032B00D1DBE0012B3D +:4013400000D1DAE0D4E013ABDB68242B02D00B232393D3E00023229309AB180024231A00002136F0D3FC13AB586813ABDB6809AA002102F0A1FF0300229313ABDA68229B00 +:401380009A4206D08C239A006149624B18002BF033F909AB1B78213B012B00D9A3E00023129313AB1B691900012035F05FFD03002193219B002B02D10923239396E013AB05 +:4013C000586813AB1B69219A012102F075FF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF008F9219B209309ABDB68219AD3181F9313ABDB691900012035F02A +:4014000035FD03001E931E9B002B06D1219B180036F0B0F80923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A814300D +:40144000060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F032FB0300239322E009AB5C8809AB5D6809AB1B891F0009ABDA6809AB196920 +:4014800013ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F0E4FB03002393239B002B0DD113AB5868129B1E9A002122 +:4014C00002F036FF13AB586812AA0423012102F02FFF219B180036F04DF81E9B180036F049F8C04602E002232393C046C04605E00223239302E0C04600E0C04613AB5B68CD +:40150000239A1100180002F097FFC04625B0F0BD6CDF031004DE03104302000010B5A6B00023259310AB18002C231A00002136F0EDFB10AA80235B001100180002F0A8FD44 +:4015400010AB1B68022B19D0032B00D14FE1012B00D05BE14C21012035F088FC03002493249B002B02D10923259353E110AB5B68249A1100180003F0C7F84BE10EAB1800D6 +:4015800008231A00002136F0C1FB10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F088FE0300239310ABDA68239B9A4205D09C4A9C499D4B18002BF007 +:4015C0001BF80EAB1B781A3B062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F005FF03002593FCE010AB98680EAB59880EAB5B681A0007F014 +:401600000DFF03002593F0E000230D9310ABDB69229309AB180010231A00002136F076FB10AB98680DAB229A09A907F00BFF03002593259B002B00D0D6E010AB58680D9B9A +:4016400009AA002102F074FE10AB58680DAA0423012102F06DFEC046C6E010AB1B69219305AB180010231A00002136F04FFB10AB5868219B05AA012102F01EFE0300239346 +:40168000239A219B9A4205D06B4A6849684B18002AF0B2FF10AB9B68219A05A9180007F021FF03002593C0469FE010AB1B69209310ABDB691F9300230493209B190001201C +:4016C00035F0D4FB03001E931E9B002B02D1092325938AE010AB5868209B1E9A012102F0EBFD03002393239A209B9A4205D0534A4E494F4B18002AF07FFF1F9B19000120FF +:4017000035F0B4FB03001D931D9B002B06D11E9B180035F02FFF0923259366E010AB98681D9C209A1E9904AB01931F9B0093230007F017FF03002593259B002B0DD110AB36 +:401740005868049B1D9A002102F0F2FD10AB586804AA0423012102F0EBFD1E9B180035F009FF1D9B180035F005FFC0463DE010ABDB691C93002303931C9B1900012035F06E +:4017800075FB03001B931B9B002B02D1092325932BE010AB986803AB1C9A1B9907F028FF03002593259B002B0DD110AB5868039B1B9A002102F0BCFD10AB586803AA042307 +:4017C000012102F0B5FD1B9B180035F0D3FEC0460BE010AB9B68180007F088FF0300259303E00223259300E0C046C04612E010AB9B68180007F07AFF10AB9B68002B08D0BA +:4018000010AB9B68180035F0B5FE02E00223259300E0C04610AB5B68259A1100180002F00BFEC04626B010BD9E02000080DF031004DE031050DE0310C2020000D702000066 +:4018400010B5AAB010AB18002C231A00002136F05DFA0023299310AA8023DB001100180002F016FC10AB1B68022B06D0032B00D1CCE1012B00D1D9E1C5E110ABDB680C2BAC +:4018800002D00B232993D2E1002327930DAB18000C231A00002136F039FA10AB586810ABDB680DAA002102F007FD0300279310ABDA68279B9A4205D0D54AD649D64B18005E +:4018C0002AF09AFE0DAB1B7A282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180007F088FF03002993299B002B00D07FE110AB5868269B0CAA01 +:40190000002102F015FDC04676E110AB1B69259310AB5868259B0BAA012102F0CDFC03002793279A259B9A4206D0D3239A00B949B94B18002AF060FE0DAB1B880B9A11003A +:40194000180007F079FF03002993C04659E110AB1B69249310AB5868249B09AA012102F0ABFC03002793279A249B9A4206D0D6239A00A849A84B18002AF03EFE0DAB1B8814 +:4019800009AA1100180007F0E7FE03002993C04637E110ABDB6923930DAB1B8807AA1100180007F007FF03002993299B002B00D024E110AB5868239B07AA002102F0B8FC77 +:4019C000C0461BE110AB1B692293229B1900012035F04CFA03002193219B002B02D1092329930EE110AB5868229B219A012102F063FC03002793279A229B9A4205D0884A23 +:401A00008449854B18002AF0F7FD0DAB18880DAB5968229B219A05F063FA03002993219B180035F0A7FDECE00DAB1B88180005F0A3FA03002993E4E00DAB1B8805AA06A9DF +:401A4000180005F007FB03002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F064FC10AB1B6A032B00D8C6E010AB586805AA0423012102F058FCAD +:401A8000C046BDE010ABDB692093209B1900012035F0ECF903001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F031FC03002993299B002B06D110AB586854 +:401AC000049B1F9A002102F033FC10AB586804AA0423012102F02CFC1F9B180035F04AFDC0468EE010ABDB691E931E9B1900012035F0BCF903001D931D9B002B02D10923FC +:401B000029937EE00DAB188803AB1E9A1D9905F029FC03002993299B002B06D110AB5868039B1D9A002102F003FC10AB586803AA0423012102F0FCFB1D9B180035F01AFD30 +:401B4000C0465EE010AB1B691C9310AB5B691B930023289310AB58681C9B02AA012102F0ABFB03002793279A1C9B9A4206D0EF239A002849284B18002AF03EFD0DAB5B6831 +:401B8000284A934222D11B9B002B1FD01B9B1900012035F06BF903002893289B002B02D1092329932DE010AB58681B9B289A022102F082FB03002793279A1B9B9A4205D0C4 +:401BC000194A1449144B18002AF016FD0DAB18880DAB5968029A289C1B9B0093230009F0D7FD03002993289B180035F0C3FCC04607E00223299304E0C04602E0C04600E019 +:401C0000C046C04613E00223299310E0C0460EE03503000098DF031004DE03106CDE03107103000000000170CB030000C04610AB5B68299A1100180002F0FEFBC0462AB0DE +:401C400010BDC04600B591B001AB18002C231A00002136F05BF800230F9301AA8023DB011100180002F014FA01AB1B68022B04D0032B3DD0012B3DD037E001ABDB680E9371 +:401C80000E9A8023DB009A4202D908230F9332E00E9B1900012035F0E9F803000D930D9B002B02D109230F9325E001AB58680E9B0D9A002102F000FB03000C930C9A0E9BA8 +:401CC0009A4205D0114A1249124B18002AF094FC0E9A0D9B1100180009F016FD03000F930D9B180035F046FC05E002230F9302E0C04600E0C04601AB5B680F9A1100180052 +:401D000002F09AFBC04611B000BDC04601040000B8DF031004DE031000B58FB06B4618002C231A00002135F0F1FF00230D936A4680231B011100180002F0AAF96B461B686E +:401D4000022B04D0032B2CD0012B2CD026E06B46DB690C930C9B1900012035F087F803000B930B9B002B02D109230D931CE00C9A0B9B1100180009F089FC03000D930D9BA6 +:401D8000002B06D16B4658680C9B0B9A002102F0CFFA0B9B180035F0EDFB05E002230D9302E0C04600E0C0466B465B680D9A1100180002F041FBC0460FB000BD70B59EB0DE +:401DC00000231D930BAB18002C231A00002135F09DFF0BAA80239B011100180002F058F90BAB1B68022B1BD0032B00D15FE1012B00D06BE1FC235B001900012035F036F8B8 +:401E000003001C931C9B002B02D109231D9361E10BAB5B681C9A1100180002F075FC59E108AB18000C231A00002135F06FFF0BABDB680C2B02D00B231D934BE10BAB5868DE +:401E40000BABDB6808AA002102F036FA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF0C9FB08AB1B78293B052B00D917E19A009F4BD3181B689F460023079367 +:401E80000BAB9B6807AA1100180008F055F803001D931D9B002B00D006E10BAB586807AA0423002102F044FAC046FDE000231A930BABDB691993199B1900012034F0D6FF1E +:401EC00003001A931A9B002B02D109231D93ECE00BAB9B68199A1A99180008F075FC03001D931D9B002B06D10BAB5868199B1A9A002102F01DFA1A9B180035F03BFBD4E0E6 +:401F00000BAB58680BAB1B6906AA012102F0D4F903001B931B9B042B05D0774A7349744B18002AF069FB0BAB58680BAB5B6905AA022102F0C1F903001B931B9B042B05D04A +:401F40006E4A6A496A4B18002AF056FB08AB58880699059A0BAB9B6808F0C2FC03001D93C046A2E00BAB9B68180007F06BFF03001D939AE00BAB1B691900012034F076FFD7 +:401F800003001893189B002B02D109231D938CE00BAB58680BAB1B69189A012102F08CF903001B930BAB1A691B9B9A4205D0544A4E494F4B18002AF01FFB0BAB5B69190080 +:401FC000012034F053FF03001793179B002B06D109231D93189B180035F0CCFA65E00BAB58680BAB5B69179A022102F065F903001B930BAB5A691B9B9A4205D0414A3B495E +:402000003B4B18002AF0F8FA0BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A00210009F0D1F903001D9336E00BAB1B69CF +:402040001900012034F012FF03001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F028F903001B930BAB1A691B9B9A4205D0244A1C491D4B18002AF05F +:40208000BBFA0BAB986808AB59880BAB1C6908AB5B68169A0093230009F0BEFA03001D9303E002231D9300E0C046C04612E00BAB9B68180007F0C6FE0BAB9B68002B08D0C8 +:4020C0000BAB9B68180035F055FA02E002231D9300E0C0460BAB5B681D9A1100180002F0ABF9C0461EB070BD57040000D0DF031004DE031010DF03108104000087040000EA +:402100009D040000AA040000C204000000B585B00190002303930023029380231B06180001F0A8FF03000393039B1022134001D0FEF7E8FB039B2022134001D0FEF754FC7C +:40214000039B4022134001D0FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0FFF7CCF8039A8023DB00134001D0FFF7A7 +:402180005FFB039A80231B01134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A8023DB011340B1D0FFF745FDAEE700B585B050 +:4021C0000190019B002B05D11F49204BD42218002AF012FA1E4B18002DF0D2FC0200019B1A62019B1B6A002B05D11749194BD92218002AF001FA0023039309E0164A039B76 +:402200005B01D3180833019A1A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF0CCF90200019B5A60019B5B68002B05D104490A4BE32218002AF02F +:40224000DBF9C04605B000BDBCE0031004E00310ACE0031020E00310A4010008800100080D2100105CE0031000B583B0FEF720F803000193044A019B1100180026F0FCFA4C +:402280000300180003B000BD08E1031000B589B00390029101920093039B002B05D14349434B3D22180029F069FF029B0D2B05D83E49404B3E22180029F060FF1F236B4407 +:4022C00000221A70019B0693009B05931F236B441B780E2B05DD3549374B4622180029F04DFF1F236B441B781F226A44591C11701A00039B9B18069A3F210A402F498A5CCA +:402300001A70069B9B090693069B002B00D0DDE71F236B441B780E2B05DD2449264B4C22180029F02BFF1F236B441B781F226A44591C11701A00039B9B1823221A701F23AA +:402340006B441B780E2B05DD18491B4B5122180029F014FF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70059B9B090593059B002B00D022 +:40238000DDE71F236B441B780E2B05DD07490A4B5622180029F0F2FE1F236B441B78039AD31800221A70C04609B000BD28E1031088E10310A0E10310CCE10310C8E00310A1 +:4023C00030B58FB00590049103920293FFF74CFF03000B930B9B002B03D1234B18002AF00BF9129B002B04D0129B012B01D0022337E006AB18000E231A00002135F086FCCC +:40240000059B049A06A80E21FFF740FF00230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A04703000A9300230C930A9B002BD0 +:402440000ED00A9B094A934205D0094A934205D101230C9304E003230C9301E005230C930C9B18000FB030BDF8E103100B01FF801201FF8030B591B00590049103920293DC +:40248000FFF7F2FE03000E930E9B002B03D1364B18002AF0B1F809AB18000E231A00002135F034FC059B049A09A80E21FFF7EEFE0E9B1B681C331B6807AA09A90E9898471B +:4024C00003000D9300230F930D9B002B08D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E0029A039BD218029B9A4201D27F +:4025000008232EE0039A029BD21807AB1B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00A04703000D930D9B002B06D1F2 +:40254000069A029B9A420BD208230F9308E00D9B064A934202D107230F9301E005230F930F9B180011B030BD30E203100701FF8000B58FB0039002910192FFF775FE030064 +:402580000C930C9B002B03D1204B18002AF034F807AB18000E231A00002135F0B7FB039B029A07A80E21FFF771FE0C9B1B681C331B6805AA07A90C98984703000B930023E1 +:4025C0000D930B9B002B08D00B9B114A934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6801221A43019B5A6005AB1A6826 +:40260000019B1A600D9B18000FB000BD68E203100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B180029F0E3FF03AB18000E231A00002135F066FBCB +:40264000019B009A03A80E21FFF720FE089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094A934205D10123099304E007238B +:40268000099301E005230993099B18000BB000BDA4E203100701FF801201FF8000B58FB00590049103920293039B002B04D1049B002B01D0062333E006AB05AA1A6006ABAB +:4026C00004225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F077FE03000C930C9B002B01DC052315E006A90C98002300930023032204 +:4027000000F04EFF03000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B18000FB000BDC046011A010000B58FB00590049103920293029B002B04D1039B44 +:40274000002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB039A5A608D235B020121180000F02EFE03000C930C9B002B9C +:4027800001DC052316E006AA08A90C98012300931300022200F004FF03000D930D9A80231B069A4201D105230D930C9B180000F0C1FF0D9B18000FB000BD000000B58DB017 +:4027C00003900291029B002B01D1062339E008AB180008231A00002135F098FA06AB03AA1A6006AB04225A6004AB08AA1A6004AB08225A60144B0121180000F0EBFD0300A4 +:402800000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0C1FE03000B93029B08AA03CA03C30B9A80231B069A4201D105230B930A9B180000F07AFF0B +:402840000B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0B6FD03000693069B002B01DC052315E004A906980023009300235D +:40288000012200F08DFE03000793079A80231B069A4201D105230793069B180000F04AFF079B180009B000BD031A010010B58AB003900023069300230993039B1B690893FE +:4028C00000230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F0E8FC0300042B02D080231B0647E0039B586805AA0423022101F07C +:40290000DBFC0300042B02D080231B063AE0089B180034F025FE03000993099B002B01D105232FE0039B5868039B1B69099A012101F0C2FC0200039B1B699A4205D0099BF8 +:40294000180034F017FE05231CE0039B5B68180001F0B2FE03001C000699059B0998089A009303002000FFF72BFD03000793089A099B0021180035F0C9F9099B180034F070 +:40298000F9FD079B18000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D080231B064FE0039B586805AA0423002101F07EFC0300042BEF +:4029C00002D080231B0642E0039B586804AA0423012101F071FC0300042B02D080231B0635E0039BDB69180034F0BAFD03000793079B002B01D1052329E0039B5B681800D4 +:402A000001F05AFE03001C000599049A039BD869079B009303002000FFF72CFD03000693069B002B07D1039B5868039BDB69079A002101F07DFC039BDA69079B0021180034 +:402A400035F064F9079B180034F094FD069B180008B010BD00B587B0019003AB180008231A00002135F052F900230293019BDB68042B03D1019BDB69082B02D080231B06CB +:402A800026E0019B586802AA0423002101F014FC0300042B02D080231B0619E0019B5B68180001F009FE03001800029B03AA1900FFF75EFD03000593059B002B07D1019BE6 +:402AC0005868019BDB6903AA002101F031FC059B180007B000BD00B585B0019000230393019BDB68042B02D080231B0619E0019B586803AA0423002101F0DEFB0300042B00 +:402B000002D080231B060CE0019B5B68180001F0D3FD03001A00039B19001000FFF77AFD0300180005B000BD00B585B00190009100230393019B1B68022B04D0032B10D00A +:402B4000012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F04BFDC046019B5B68039A1100180001F063FCC04605B000BD38E30310E0E20310F0 +:402B800000B591B0019000230F9303AB18002C231A00002135F0BAF880231B06180001F069FA03000F9325F01FFC03000E930E9B002B05D00E9B21492148AC2229F01CFDD4 +:402BC0000F9B202213400AD003AB1900202001F05FFA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB1900102001F050FA154A03AB11001800FFF796FF0F9B40228C +:402C000013400AD003AB1900402001F041FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802001F032FA084A03AB11001800FFF778FFAEE7C04648E303104C +:402C400004E30310AD2800108B290010552A0010D72A001000B585B00190019B002B05D11F49204B7822180029F0C6FC1E4B18002CF086FF0200019B1A62019B1B6A002B11 +:402C800005D11749194B7D22180029F0B5FC0023039309E0164A039B5B01D3180833019A1A60039B01330393039B032BF2D9019B0F4A1A610F4A104B002118002EF080FCCC +:402CC0000200019B5A60019B5B68002B05D104490A4B8722180029F08FFCC04605B000BD0CE4031064E30310FCE3031080E303102803000804030008812B0010BCE3031028 +:402D000000B58BB0039002910192039B002B05D139493A4B2C22180029F030FA029B002B05D13549364B2D22180029F027FA00F00DFE03000793079B002B02D0079B1B6801 +:402D400001E001235B4206932E4B0493039B04A90022180029F0A0FB039B0121180029F0E1FB030005930023099300230893002308932CE000230493089B1A04059B1343AF +:402D80000993039B9A68089B1B01D3181800099A04AB190029F080FB031E15D0039B9A68089B1B01D318029ADA60039B9A68089B1B01D318069A5A60039B9A68089B1B01ED +:402DC000D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D22180029F0C7F9099B18000BB000BDC04618E4031054E403101C +:402E000070E40310FFFF00008CE4031000B589B003900291039B002B05D13649364B6622180029F0ABF9029B002B05D13149334B6722180029F0A2F9029B1B0C0793039BB3 +:402E40005A68079B9A4209D8079A039B5B682C492C48009313006D2229F0CEFB039B9A68079B1B01D3181A68029B9A4205D0029B23492548712229F0BFFB00F067FD0300E3 +:402E80000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01149144B7B2218000E +:402EC00029F09AFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B01D31800229A60C04609B000BD18E4031054E40310B0E4031038 +:402F00005CE60310CCE4031018E5031054E5031000B589B003900291039B002B05D13649364B8622180029F029F9029B002B05D13349344B8922180029F05EFB029B1B0CDD +:402F40000793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F04CFB039B9A68079B1B01D3181A68029B9A4205D0029B22492548932229F03DFB00F0D3 +:402F8000E5FC03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01049144BDF +:402FC0009D22180029F018FB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F0CCF8039B9A68079B1B01D318DB68180009B000BDC04618E4031054E4031065 +:4030000078E6031090E50310CCE4031018E50310D0E5031020E6031084B001900091002303930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039BC1 +:4030400001330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF0300FB +:403080000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D80023180005B000BDD803000800B587B003900291029B002B0DD1039B1B7D01225340DBB2EE +:4030C000002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D1029B1B68134915483D2229F085FA002305930CE0029B9A69059B9B00D3181A68C3 +:40310000039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B680449074800931300462229F065FAC04607B000BD84E9031094E60310CCE6031075 +:4031400004E7031000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BDE003000800B583B00190019A044B11001800FFF7CDFE0300180003B000BDC04692 +:40318000E003000800B585B001900091019B9B681A6A01235B42190010002CF015FD03000393039B002B05D02349244B5722180028F0E4FF019BDB69002B03D1019B009A2A +:4031C0009A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B68190010002EF046FA03000293029B002B05DA1249134B6622180028F0C1FF019B5B68029AD9 +:40320000134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD03000393039B002B05D00449044B6B22180028F0A5FFC04605B000BD44E703107CE7031093 +:4032400090E70310ACE7031030B58BB005900491049B002B05D15649564B7022180028F08DFF059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F0BCF98A +:40328000099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C4148029301918D +:4032C00000922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B8122CB +:40330000180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4A5A60089B002B0FD0049B9B6818002CF085FF03000693069B002B35D01C49244BCE +:403340008A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B11001800FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049AC3 +:40338000DA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11001800FFF7EFFE00E0C0460BB030BDC04644E70310C8E7031070E90310DCE7031088 +:4033C000FCE7031058E80310D8030008010000807CE7031000B58FB00190009109AB180010231A00002134F091FC05AB00221A6005AB00225A6005AB09AA9A6005AB102292 +:40340000DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6002AB9B68002B05D119491A4BB722180029F0E2F802AA019B11001800FFF704FFB6 +:4034400002AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22180028F08BFE02AB9B6818002CF008FF03000D930D9B002B05D00749074BC0227C +:40348000180028F07BFE02AB5B6818000FB000BDA4E9031088E8031044E703107CE7031000B585B001900091009B002B05D13649364BC922180028F061FE019B1800FFF7BC +:4034C00051FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F07CF8AA +:40350000039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F039FA2EE0009B5B6918002CF087FE03000293029B002B24D01349184BD8221800E3 +:4035400028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B1868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE23 +:4035800000E0C04605B000BD44E70310C8E70310C0E80310B0E90310D8E803107CE7031000B595B003900291019200930FAB180010231A00002134F0A9FB0BAB00221A6063 +:4035C0000BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF0CCFD020005AB0F +:403600005A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B11001800FFF73EFF05AB5A6901235B42190010002CF0DCFD03001393139B002B06D0862374 +:403640005A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D01023FF331A000749074B180028F086FD05AB1B69180015B000BDC046C0E90310FF +:4036800088E8031044E703107CE7031000B585B001900091009B002B06D18C235A002049204B180028F06AFD019B1800FFF75AFD03000393039B002B07D11C23FF331A00F0 +:4036C0001749194B180028F059FD039B1A68009B0821180000F074F903001A0001235340DBB2002B06D08F235A001049104B180028F082FF039B15330321180000F004F945 +:40370000039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BD44E70310C8E70310C0E80310CCE9031008E9031000B58FB00190019B002B55D006 +:4037400009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6003AB019A1A6005AB1A00002101202CF00EFD020003AB5A6003ABB3 +:403780005B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FF03AB5A6801235B42190010002CF01EFD03000D930D9B002B06D0A4235A000F49CA +:4037C0000F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF331A000649064B180028F0C8FCC0460FB000BDC046DCE9031038E9031044E7031001 +:403800007CE7031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD00009C +:4038400000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049B002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B00935F +:403880001300272228F0B8FEC04609B000BDC046F8EA0310E8E9031000B587B00390080011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A23D5 +:4038C0006B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B236B441B781A0017236B441B780449054800931300302228F07FFEC04607B000BD1F +:4039000008EB03103CEA031000B585B003900A000B236B441A70039B1B780B226A4412789A420CD0039B1B781A000B236B441B780449054800931300382228F05DFEC0463E +:4039400005B000BD20EB03103CEA031000B583B02DF064FE03000093009B002B05D11549154B5E22180028F009FC0023019317E0124B1968019A13009B009B18DB00CB182C +:403980005A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B01330193064B5A68019B9A42E2D80023180003B000BDC04684EA0310D8EA0310D8030008E8 +:4039C0008CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029BD3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B050993BD +:403A000080231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A42FF +:403A400001D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD2180599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A4262 +:403A800009D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002354 +:403AC00018000CB07047C04600000108007703000000081010B52EF079FE174B1A0018210A202AF04BFF0200144B1A62134B1B6A002B05D1124A134B1100180028F07CFDC8 +:403B0000114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B1100180028F069FD054B1800FCF735FB0200024B5A60C04610BDA8030008D8030008CF +:403B4000C8EB031068EB0310C003000894EB031010B5034B1B68180001F078F8F9E7C0460404000800B583B001900091009A0199034B1800FFF7C4F80300180003B000BDD6 +:403B8000EC03000800B583B00190019A044B11001800FFF7BDF90300180003B000BDC046EC03000800B583B00190019A034B11001800FFF72BF9C04603B000BDEC0300083C +:403BC00000B583B00190019A034B11001800FFF71DF9C04603B000BDE003000884B0019000910023039311E0019B1A69039B5B01D3185A68009B9A4205D1019B1A69039BFD +:403C00005B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000010B596B00190009103AB180028231A00002134F06BF803AB019A1A60019B1B7DB7 +:403C4000022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2002B05D08D498E4B5B22180028F0C4FC019BDB681393139B1B681293139B5B6831 +:403C80001193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB24229954119B002B5DD0119BD900019B1A68129B1800FFF783FE03001A000123CF +:403CC0005340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129AD3185B68002B36D0159BDB00129AD01803AA159BDB000421D3185B18020003CA30 +:403D000003C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB00D3180433186803AA159BDB00D31808331968019B1B681A00FFF742FE03001A00E7 +:403D400001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A119B9A42B9D30F9B002B63D00F9BD900019B1A68109B1800FFF722FE03001A001D +:403D800001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB00109AD3185B68002B3CD0119A149BD318149AD2001099881803AADB000421D318EE +:403DC0005B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60119A149BD31803AADB00D31804331868119A149BD31803AADB00D3180833196847 +:403E0000019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B20492448942228F0EAFBC046149B01331493149A0F9B9A42B3D31F4B5A6A01235B421900100080 +:403E40002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CA13C313CA13C313CA13C312681A600E9B00211800FFF776FE03000D93019B1B7D16 +:403E80001A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC0460CF20310D8EB031000EC031020EC031044EC031064EC0310D803000888EC031000B587B004 +:403EC0000190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849284BAD22180028F049F9019B9B690493049B002B05D12449244BB322180028F079 +:403F00007BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B5B6818002DF0CCFB03000393039B002B05DA1349164BBF22180028F01FF9019B46 +:403F40005B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE03000593059B002B05D00549054BC522180028F003F9049B180007B000BDC04616 +:403F8000B4EC0310ECEC031020F2031000ED031020ED03103CED031000B58BB00491039217236B44021C1A70FFF7D0FC03000993099B002B05D12A492A4BCE22180028F029 +:403FC000DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D0079B04930EE0089B049A1A40049B9A4208D0049A1C491D48089B00931300DB2275 +:4040000028F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFB03000693069B079A1A40069B9A420DD0039A80231B069A4202D0069B023305D05D +:4040400007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC046B4EC031058ED031040F2031078ED0310B4ED031000B583B00190019B1A00002124 +:404080000120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC03000993099B002B05D15149514BF922180028F065F8099A029B2C211800FFF781FC03002A +:4040C0001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180033F014FE039B002B06D0039B013B039A134001D1012200E0002223236B441A702B +:404100001A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A13400AD1099B9B68039C84225200314933480093230028F060FA2DF0E6FA03000793C5 +:40414000039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B11001800FFF73CFD03000693069B002B07D1039C89235A001F492348230028F03DFA069B92 +:404180001800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211800FFF7B1FB18E0059B1533052204211800FFF771FB10E0059B153303211800DF +:4041C000FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B11001800FFF71DFDC0460AB010BDB4EC031058ED03104CF2031030EE03104CEE031015 +:4042000098EE0310B4EE031004EF031000B587B00390029101920093039B1800FFF7B2FC03000593059B1B68153305211800FFF76BFB029B032B06D99E235A001C491D4B66 +:40424000180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31804330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D010 +:40428000049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009BD21A049B5A60009B180007B000BDC04654F2031034EF031000B587B003900291F6 +:4042C00001920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F04DFF059A0099019B1800FFF769FB03001A0001235340DBB2002B06D0AD235A005C +:4043000009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC046B4EC031058ED031064F2031050EF031010B58AB00590049103920293029B002BE4 +:404340006BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A0299039B1800FFF72BFB03001A0001235340DBB2002B07D07023FF331A002A499B +:404380002A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7B3FA089B24229B5C1A00049B9B180493049B032B06D9BC235A001B491C4B1800EC +:4043C00028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C7E22FF32104913480093230028F004F9079B1B68029A0399180033F0F5FB079B84 +:404400001A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BDB4EC031058ED031070F2031050EF031070EF03108CEF031010B58EB001900091A4 +:40444000019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B498B4B180027F08AFE0D9BDB68002B06D1C6235A008549874B180027F07FFE019B70 +:404480001800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FA03000A930A9B002B06D0CB235A0077497A4B180027F062FE00230C930D9B1A681C +:4044C00027236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B002B0CD0009B6E4A934208D0009CA023FF331A006B496C48230028F07DF80D9BAA +:40450000DB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089B5B681800FFF74CFB0D9B18220021180033F0ECFB584B1B6A0D9A110018002AF03F +:4045400071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6000230D936BE00D9B1533032202211800FFF792F963E0009A80231B069A420BD09A +:40458000009B4A4A934207DA009CE0235A0045494748230028F030F80D9B1533032205211800FFF779F9009A80231B069A4202D10D9B01229A750D9BDB680693069B009A3C +:4045C0001A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800FFF75AF9059B1B681800FFF7E9FA0D9B18220021180033F089FB274B1B6A0D9A92 +:40460000110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B180027F0ABFD0D9B1B7D1C00EA23FF331A001C491F48230027F0DEFFC0460D9BEA +:40464000002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F099F90FE00C9B18002BF0E8FD03000393039B002B06D0FB235A000449074B1800FC +:4046800027F07CFDC0460EB010BDC046B4EC0310CCEF0310ECEF0310D8030008ECEC0310010000807CF2031014F003108000008050F0031088F0031000B585B00190019B88 +:4046C0001800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B1B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E02000009 +:40470000B4EC031028F1031000B585B001900091019B1800FFF736FA03000393039B1B68009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD0300019318 +:40474000019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B6918002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFC92 +:40478000C04603B000BDC04600040008A0F20310F4F203100404000810B52EF031F9C04610BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D008 +:4047C00002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF733FD3DE001AB9B681A0001AB5B6819001000FEF755FE33E001AB9B681A0001ABB1 +:404800005B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F803001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF71C +:40484000E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCC04607B000BDC046D0F303102CF30310A0F2031054F3031000B599B0394B1793AF +:404880000FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C231A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C2227 +:4048C000180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B18002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A005F +:40490000002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194B1A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFC73 +:40494000124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B000BDC04600770408779A333D0C4A2863A0F30310A0F203105CF30310B0F3031082 +:4049800070F30310C0F3031088F30310000400080404000800B587B0019003AB18000C231A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C0462C +:4049C00007B000BD0004000800B585B00390029101920093039B002B05D12349234B2422180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A93424E +:404A000005D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFB009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A6021 +:404A4000029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61C04605B000BDC046E0F3031020F4031030F403100C4A286348F4031078F40310C6 +:404A800088F40310FFD948A200B585B0039002910192039B002B05D11C491D4B3722180027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D032 +:404AC0001249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA6001 +:404B0000039B019A1A61C04605B000BDE0F3031020F4031030F403100C4A286348F40310A0F4031042658BA610B586B003906846016042608360039B002B05D13D493E4B86 +:404B40004722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B1A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B2218007A +:404B800027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B6824 +:404BC0001B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039BA2 +:404C00009B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D00449084B5D22180027F0A8FAC04606B010BDC046E0F3031020F40310FFD948A2AE +:404C4000B4F40310E0F40310F4F4031010B586B00190019B002B05D12D492E4B6322180027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA23B5 +:404C80005B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C3C5 +:404CC000019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B5B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019BFD +:404D00009B681B689A42CED1C04606B010BDC046E0F3031020F4031042658BA62CF50310F4F4031082B00190034A019B1A60019B180002B07047C046A4F5031000B583B0F2 +:404D40000190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B001900023180002B0704784B00390009201930023180004B0704784B0039000920193002342 +:404D8000180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800210002B010BD10B584B0039000920193039B1B682C331B68039A10009847030056 +:404DC0000C001800210004B010BD82B0019001235B42180002B0704730B585B0039000920193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF31 +:404E00001C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C00089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B41 +:404E4000099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B682F +:404E800028331B68039A1000984703000C00009801991A00230036F06DFF1C001300190022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00B9 +:404EC000230036F057FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D85B +:404F0000012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B019C03981A002300884703000C00009801991A00230036F01DFF1C001300190011 +:404F400022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F680099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B8476B +:404F800003000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B00B6 +:404FC0009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019B1A60019B180002B07047C046A4F50310F0B585B0039002910192039B1800FFF7A0 +:40500000EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B18006D +:4050400005B0F0BD60F5031000B583B001900A4A019B1A60019B180000F0E8F8019B0433180000F0E5FA019B1800FFF75BFE019B180003B000BDC04660F5031000B583B0C8 +:405080000190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64600B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B2433E3 +:4050C0000121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA03000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA69E7 +:40510000099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B0433180000F0E5FC030043440093002301930123019A954206D8019A954202D1009A944281 +:4051400000D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D69099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D80023ED +:40518000DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A0022430DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BBC +:4051C000DC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433180000F084FC0300069300230793099B5C691B690699079AC91AA2410B00140059 +:405200000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B01 +:4052400004D0019B00225A62002316E0019B24330121180027F09AF903000393039B002B01D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD35 +:4052800010B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B05 +:4052C00019695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B09938B +:40530000059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FD031E01D0012300E00023002B11D0059B19695A69029B039C5B1854410693079403 +:40534000059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9BFE +:405380000D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B043306990C9A180000F0F8FA0300099316 +:4053C000099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B585B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B04331800B7 +:4054000000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B00190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C69FC +:405440001B691900100000F044FB03000393039B1D0000231E002B0034001800210004B070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D000250026CC +:4054800011E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B1D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C0122E2 +:4054C0005340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB030023700F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD43 +:4055000000B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002B05D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC046E1 +:405540003A02000044FC03105CFC031010B5074B1B68002B08D0054B1A6801235B42190010002AF031FB00E0C04610BD5878000810B5064B1B68002B05D0044B1B68180084 +:405580002AF04CFB00E0C04610BDC0465878000800B583B00190019B180000F0C9FA27F0DDF9019B180003B000BD00B583B0019027F0FCF9019B180000F0C0FA019B180071 +:4055C00003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B583B0019027F030FA019B180000F0B2FA019B180003B000BD00B583B001900091EB +:40560000019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190019B180000F09CFA019B180003B000BD00B583B00190019B180000F097FA019BCA +:40564000180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F0FBFF03AB1800FFF793FF02AB1800FFF7A9FF019B18002FF099FE03005A1E9341D9 +:40568000DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180000F00CFA03000493049B180027F00AFF03001A00019B5A60054B180000F05CFA2A +:4056C0000300180027F0F0FF059B180007B000BD1863000800B587B00190002305931D4B180000F049FA0300180027F0B5FF04AB1800FFF74DFF03AB1800FFF763FF019B46 +:4057000018002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF04AB1800FFF741FF019B5B68002B04D0019B5B68180027F0EBFE064B180000F064 +:405740001BFA0300180027F0AFFF059B180007B000BDC0461863000800B589B0039002910192009301235B420793164B180000F003FA0300180027F06FFF06AB1800FFF725 +:4057800007FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF71EFF06AB1800FFF700FF064B180000F0E3F90300180027F077FF079B180009B050 +:4057C00000BDC0461863000810B592B00390029101920093039B180000F070F903000893039B18002FF03EFE03000D93039B18002FF031FE03000C93029B1093089A019B8B +:4058000011001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019BD2180C990D9BCB189A4201D9012300E00023002B02D001235B42B1E000230E930D +:40584000594B180000F098F90300180027F004FF009B002B00D19AE0039B019A110018002FF0DAFD03000B93109B032293431900109A2B236B448A1A511E8A411A70019B42 +:405880000B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F903001B6807932B236B441B78002B03D1079A089B9A4224D208AA07AB1100180000F097 +:4058C00066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039B5A68079BD018089A079BD31A1A00FF2132F00CFA039B5B680F93089B11930EE011 +:40590000079B089A1100180036F062F803001A00089B53430793109B0F93079B119306AB1800FFF735FE05AB1800FFF74BFE0398119B0F9A01992FF058FD03005A1E9341B1 +:40594000DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D0002401E0C046012406AB1800FFF71EFE012C0DD1C046009A079BD31A0093079B019AFF +:40598000D3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B180012B010BDC0461863000800B58FB0039002910192039B18002FF053FD0300A2 +:4059C0000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099A0A9B9A4202D901235B4261E0099A0A9B9A4217D2039B099A110018002FF00CFD1C +:405A000003000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D001235B4245E000230D93234B180000F0A4F80300180027F010FE019B002B2FD006ABA2 +:405A40001800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305AB1800FFF7BCFD06AB1800FFF79EFD0D9B002B03D001235B420D9310E0039B029A28 +:405A8000110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B180000F069F80300180027F0FDFD0D9B18000FB000BDC0461863000800B583B07B +:405AC0000190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A110018002FF099FC0300180003B000BD00B583B00190019B18002FF0ADFC0300180044 +:405B000003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B00190019B18002FF0A5FC0300180003B000BD82B00190019B180002B0704782B001905E +:405B4000019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700B583B00190019B73 +:405B8000180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019B61 +:405BC0001B68002B0FD1019B083319002420FAF755FD041E04D0200027F0ECFC220000E02200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F0A0 +:405C0000BDFA019B1B68180002B010BD64FC031080FC031082B00190019B074A1A61C046019B1B69002B01D0012200E00222019B1A75C04602B07047A8FC031082B001906D +:405C4000034A019B1A60019B180002B07047C0469CFC031000B583B00190019B1800FFF7EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B094 +:405C8000039002910192039B1B6810331B68019A0299039898470300180005B000BD00B583B00190019B1B6818331B68019A100098470300180003B000BD00B583B0019013 +:405CC000019B1B6828331B68019A100098470300180003B000BD82B001900A006B4603331A706B4603331B78002B01D0002301E019235B42180002B0704782B00190012399 +:405D0000180002B0704782B001900A006B4602331A801123180002B0704782B001900091C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF77C +:405D400051FD031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B28331C0002AB00211800FAF7EFFC02AB19002000FAF740FD02AB1800FAF7FEFC95 +:405D800026F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1854411A00230000F0DDF8019B28331800FAF718FD031E04D0019B28331800FFF71D +:405DC0009FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF7E0FC019B1800FFF7A0FF02AB1800FFF793FB02AB1800FAF7C3FCC04607B000BD10B582B0DB +:405E00000190019B180000F052F8019B00221A60019A002300249360D460019A002300241361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180038 +:405E400002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B020 +:405E8000019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A002300241361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019BF3 +:405EC000180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002300249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B6991 +:405F0000054A1100180025F08DFF019B180002B010BDC046D80004101D5F001000B585B00190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B01F +:405F40000190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BDD800041010B586B0059002920393059B9869059B08331900059A029B039C0092D7 +:405F80001A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B08331900100025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B0B0 +:405FC0007047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BDCC43041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B02F +:4060000000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BD00B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B087 +:406040000190019B180000F00FF8034A019B1A60019B180003B000BDCC43041082B00190019B180002B0704782B00190019B180002B0704782B06B46186059606B465B68F2 +:40608000180002B0704782B06B46186059606B465B68180002B0704784B001900091019B039304E0039B5A1C039200221A70009B5A1E0092002BF5D1C04604B0704786B058 +:4060C00003900291019213236B4400221A700023059313E0039A059BD3181A780299059BCB181B785340D9B213236B4413226A4412780A431A70059B01330593059A019B4F +:406100009A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206944663445A425341DBB2180002B0704700B583B00190019B7F3306DA019B5A42C0 +:40614000FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A934200D1B4E2B54A934200DD7CE0B44A934200D172E2B24A934238DCB24A934200D1C6 +:4061800047E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A934200D13DE2ACE2AA4A934200D134E2A94A934200D12EE2A3E2A84A934200D1FB +:4061C00051E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D13FE2A24A934200D139E28AE2A04A934200D182E29E4A934218DC9E4A934200D12B +:4062000075E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D167E2984A934200D165E26AE2964A934200D164E2944A934208DC944A934200D1DC +:4062400053E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A934200D13AE24DE28E4A934200D113E28C4A934238DC8B4A934200D11EE2894A934295 +:4062800018DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E22FE2844A934200D10BE2834A934200D105E226E2814A934200D1E8E17F4A934263 +:4062C00008DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A934200D1D6E10DE27A4A934200D1DBE1784A934218DC774A934200D1D0E1754A9342C0 +:4063000008DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A934200D1BEE1EDE1704A934200D1BDE16E4A934208DC6D4A934200D1B4E16C4A9342D2 +:4063400000D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E11A00263200D146E11A00263200DDCFE01A00373200D1B2E11A00373231DC1A00DC +:40638000403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D11FE1663300D11CE1ABE11A00623200D117E1603300D114E1A3E11A003A3200D1A0 +:4063C00039E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E18FE11A00313200D163E11A00313216DC1A00343200D11AE11A00343207DC1A00E0 +:40640000363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A002B3200D115E11A002B3265DC1A002F3200D10EE12D3300D10BE162E100BCFFFF4B +:4064400000AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFF809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF56 +:4064800080B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFF80C2FFFF00BFFFFF80BDFFFF80BCFFFF00BDFFFF00BEFFFF80BEFFFF00C1FFFFDA +:4064C00080BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFF80C4FFFF00C5FFFF00C7FFFF00C6FFFF80C6FFFF80C7FFFF1A00283200D1F0E0EF +:406500001A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A00193200D15BE01A0019320FDC1A00223209DC1A0023324EDA1A0025324DD0243349 +:4065400000D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D0173347D0CEE01A00143200D16EE0133300D16DE0C6E01A000C3200D180E01A000C327D +:4065800013DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3200D16EE00D332AD0ABE09A1D00D160E09A1D07DC1A000A3200D15EE0083300D1D7 +:4065C00059E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D2390E008238EE009238CE004238AE0022388E00D2386E0022384E00D2382E00823A6 +:4066000080E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102370E00E236EE00D236CE00D236AE00F2368E0022366E00F2364E0022362E00D236B +:4066400060E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E0092350E00C234EE00D234CE00C234AE0082348E0082346E0042344E0082342E008233D +:4066800040E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E0032330E008232EE002232CE010232AE00D2328E00D2326E0082324E0112322E00D2305 +:4066C00020E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2310E008230EE00D230CE008230AE0042308E0022306E0102304E0092302E00D23C2 +:4067000000E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED89A00114BD3181B689F46132318E0152316E0172314E0182312E0192310E01A2309 +:406740000EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E00023180002B07047C046E400041082B002006B4606331A806B4606331B88123B0C2BD3 +:406780001ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E07D +:4067C0000023180002B070471C01041000B585B0039002910192039B294A93420FD0284A934203D8274A934214D020E0A222D20593421ED0A422D20593421AD017E0029BC2 +:40680000002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD0029A80235B009A4207D0082324E0022322E0C04602E0C04600E0C046029B072298 +:40684000134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB0200019B1A60019B1B68002B04D1019B00225A60092300E00023180005B000BDC0469A +:40688000010000500100004000B589B0039004AB180007F097FB04A9039800230193002300930023002218F0C9FE03001800FFF73FFC03000793079B002B09D104AB180055 +:4068C00007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD00B587B001900091019B180016F006FA0300012B01D0082323E0019B1868596883 +:40690000FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D902230EE0059B1800FFF7AEFF03000393039B002B01D0039B03E0009B059A1A60F3 +:406940000023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF90300022B01D008231DE0029B18685968FFF789FB03000593059B1B7812246C44F8 +:406980001800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B059A1A600023180006B010BD10B58AB004910392029316236B44021C1A800E23A6 +:4069C0000993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A60AC21012030F042FA03000893089B002B01D1092362E0089A1F236B441B781900E4 +:406A0000100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499180007F09BFF03001800FFF781FB03000993099B002B30D1089A089B7C33190068 +:406A4000100011F099FF03001800FFF771FB03000993099B002B22D10898089B88331900089B7C331A00089B28331C00154B0193154B0093230011F043FD03001800FFF796 +:406A800057FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04600E0C046089B002B07D0089B18000EF0D4FD089B180030F05DFD099B18000AB0D5 +:406AC00010BDC046C8650008F947011000B58BB005900491039200230993059B1B681800FFF716FB031E21D0039B5D4A934201D90223B1E0059B1868039BD900059B103357 +:406B00001A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69039A0499180031F05FF894E0059B1B681B0C1B044B4A934219D1059B1B684A4A94 +:406B400013404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF03000993099B002B00D175E0099B74E0059B1B683F4A13403F4A934206D0059B1B68FD +:406B8000394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB059A420AD1039A049906A800230093002317F0D8F80300089307E0039A049906AB70 +:406BC000180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B68234A1340234A93420AD1059B10331A0006AB11001800FFF773FE030009931EE0A8 +:406C0000059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6898B200E00020059B10331A0006AB1900FFF78AFE0300099301E002230993099BEB +:406C4000002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC046FFFFFF1F000003700000FFEF00000360FFFFFFEF0000016010B588B0020002914C +:406C80000E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188805AB0093230005F051F803000793079B002B08D10699059A029B1800FFF706FFB0 +:406CC0000300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B0020000916B4606331A80204B1B68002B01D1072337E06B4606331B88002B04D09B +:406D00006B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F02292009A18114BD218009B1A60009B1B68DB68012B16D1009B1B681B68002B11D197 +:406D400000230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0039B00E00023180005B000BD4863000800B585B0020000916B4606331A800023C6 +:406D80000293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B01D0039B09E0029B1B68002B01D0052303E0029A009B1A60039B180005B000BD54 +:406DC00000B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E236B441B8811001800FFF778FF03000593059B002B01D0059B29E0049B1B68002B6F +:406E000001D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B012293430193049B5B68019A1A40019B9A4201D003230DE0009B002B06D0049B9A68009B9A42F3 +:406E400001D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B32D0019B1B681800FFF752F9031E05D0019B1B69180030F07DFB25E0019B1B68AD +:406E8000134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E0019B1B680C4A13400C4A93420AD1019B1B6918000EF0D1FB019B1B69180030F0BF +:406EC00059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF0000036010B588B004910392029316236B44021C1A8006AA16236B441B8811001800FFF74D +:406F000037FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF7D5FD03000793079B002B04D0069B00221A60079B1DE0069BDB68012B18D1069B08 +:406F40001968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B06D0069B1800FFF775FF069B00221A60079B180008B010BD00B587B002006B4622 +:406F800006331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493049B002B01D0049B1CE0039BDB68012B07D16B4606331B88180004F0E5FF03005D +:406FC0000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B00E0059B180007B000BD000000B583B00190019B1B681800FFF78AF8031E03D0D0 +:40700000019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC0300DB000BE0019B1B68084A1340084A934203D1019B1B699B6D00E0002318000C +:4070400003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B44021C1A80029B002B02D0029B00221A60019B002B02D0019B00221A6004AA0E23D5 +:407080006B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002B01D1062311E0029B002B03D0049B1A68029B1A60019B002B06D0049B1800FFF715 +:4070C00095FF0200019B1A600023180007B000BD00B58BB00390029101920093009B00221A600C9B002B0AD0039B1A68C023DB051A40C023DB059A4201D00823F8E0039BC8 +:407100001B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0039B1969039B5A69029B180030F05CFD039B5B69029AD018039B5B69019AD31AE1 +:407140001A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A934232D10C9B002B2FD1039B1800FFF73EFF03000733DB080893089A019B9A4201D936 +:407180000423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF03000793079B002B01D0079BA2E0029A089BD018019A089BD31A1A00002130F0A7FD009B90 +:4071C000089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A934200D083E0039B1B68444A1340444A93420BD105AB180015F007FD05AB434AA0 +:407200001A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB5A600C9B002B08D1039B1A68E023DB051A40C023DB059A4208D1019A029905ABF8 +:40724000180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B0EDA019B002B05D0019A029B0021180030F04CFD099B1800FEF75AFF030037E049 +:40728000099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B019AD31A029AD318099A0021180030F02DFD17E0099A019B9A4213D2099B019A93 +:4072C000D31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A00002130F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF45 +:40730000000001600000FFEF00000360CC380410FC38041010B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230122FFF742FD0300079357 +:40734000079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE0300180008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A91623CA +:407380006B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A0499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44BE +:4073C000021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049B1B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A3B +:40740000934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B185A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B68AD +:407440001B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D1039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B4B +:40748000002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A44108800935A +:4074C0002B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800FEF7DAFD079B180030F044F8099B18000BB030BD000001700000016000000270EC +:4075000000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E023 +:40754000094B00E00023180002B0704709000001080000010A0000010B000001482D0410782D0410A82D0410D82D041000B583B00190019B1B68114A934205D8104A9342F1 +:4075800006D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083318001CF0C6FD02E0072304E0C046019B00221A600023180003B000BD090000011D +:4075C000080000010B00000100B585B001900091019B00221A60009B334A93421BD0324A934203D8314A934207D03EE0304A93421FD0304A93422AD037E0019B083318005C +:407600001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE019B0833002118001AF03AFE0300039327E0019B083318001CF06FFD019B0833D4 +:40764000012118001CF094FD0300039319E0019B083318001CF061FD019B0833002118001CF086FD030003930BE0009AFE23DB051A4080235B049A4201D1022311E008233F +:407680000FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD0300180005B000BD09000001080000010A0000010B00000100B587B003900291DF +:4076C0000192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A934214D809E0039B0833019A029918001CF0E3FA030005930CE0039B0833019A029927 +:4077000018001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF059B1800FEF704FD0300180007B000BD08000001090000010B00000100AFFFFFE7 +:4077400000B589B00390029101920093039B1B68FF221340802252041343824A934200D1AEE0039B1B68FF2213408022520413437D4A934200D1A1E0039B1B68FF22134086 +:40778000802252041343794A934200D194E0039B1B68FF221340802252041343744A934200D187E0039B1B68FF221340802252041343704A934200D17AE0039B1B68FF2211 +:4077C00013408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A934261D0039B1B68FF221340802252041343634A934255D0039B1B68FF22134087 +:407800008022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD0039B1B68FF221340802252041343574A934231D0039B1B68FF2213408022520412 +:407840001343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68FF2213408022520413434B4A93420DD0039B1B68FF221340802252041343474A73 +:40788000934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E046 +:4078C00010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059B9A4202D20423079328E0039B1B68224A93421AD3214A934203D9224A934214D861 +:4079000009E0039B0833029A110018001CF04DFA030006930CE0039B0833029A110018001EF0D2FD0300069302E01D4B0693C046069B1800FEF7FCFB03000793079B002BD6 +:4079400008D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B180009B000BD01000001020000010300000104000001050000010800000109000001D2 +:407980000A0000010B0000010C0000010D0000011000000111000001120000011300000100AFFFFF00B597B003900291019204AB05A903984022FFF7C3FE03001593159B7D +:4079C000002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB031E01D0102300E00023180017B000BD00B587B00390029101920093039AFE23CD +:407A0000DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB049A4207D0039AFE23DB051A40C023DB049A4248D1039B554A93421ED0534A93421D +:407A400009D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934210D34F4A934221D04E4A934223D027E017236B4407221A7024E017236B440522D1 +:407A80001A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A7010E017236B4402221A700BE017236B4408221A7006E017236B4406221A7001E015 +:407AC00000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D117236B4406221A7001E0002348E0029B2F4A934212D02E4A934203D82D4A93421C +:407B000007D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B04D116236B4403221A7003E016236B4404221A70019B802B0ED1C02301930BE0F1 +:407B400016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0009B16226A4412781A70019917236B441A7816236B441B7818000BF02FFA0300EE +:407B8000180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C00401000006020000060200C0020300C00202000040010000400300004004000040F8 +:407BC00082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040230EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E00023CC +:407C0000180002B07047C046FFFFFFFE5001041000B585B00190009102230393019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71E7 +:407C4000019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7902218A431A71019B083318000BF0ECF90023039317E0019B1B68134A1A40A02328 +:407C80009B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4201D008230393039B002B06D0B4235A00019B0021180030F029F8039B180005B023 +:407CC00000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B1800FFF743FC0300180003B000BD00B583B00190B0235A00019B0021180030F003 +:407D000005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204A934205D1019B083318000BF099F90CE0019B1B681B4A1A40A0239B049A4222D14F +:407D4000019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A434A +:407D80001A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC0460200C0020000C07F00B587B00390029101920093009B5B69DAB2039B5A71039B63 +:407DC0000833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800019B1B69029A19000CF054F803000593059B180007B000BD00B5A9B00390029152 +:407E000001920093009BFF221340802252041343A94A934200D1A0E0009BFF221340802252041343A54A934200D194E0009BFF221340802252041343A14A934200D188E0EA +:407E4000009BFF2213408022520413439D4A934200D17CE0009BFF221340802252041343994A934200D170E0009BFF221340802252041343954A934200D164E0009BFF22A4 +:407E80001340802252041343914A934259D0009BFF2213408022520413438E4A93424ED0009BFF2213408022520413438A4A934243D0009BFF221340802252041343874AD9 +:407EC000934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041343804A934222D0009BFF2213408022520413437C4A934217D0009BFF221340CD +:407F0000802252041343794A93420CD0009BFF221340802252041343754A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE0302381 +:407F40000CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009B1800FFF72DFE03002493249B802B01D902239EE0249B802B01D9022399E0249A61 +:407F8000259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB03002693269B002B00D077E0039B019A02991800FFF781FB03002693269B002B6ED10E +:407FC000039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019A029904AB18002FF0FFFD002327930EE004AA279BD3181B7836225340D9B204AAE9 +:40800000279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249AD31A1A0036212FF071FE0023279310E004AA279BD3181B786A225340D8B2039AC2 +:40804000E021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A00019BD018019B249AD31A1A005C212FF04DFE039B009A11001800FFF7A5FA030001 +:408080002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04600E0C046019A04AB11001800FDF7F4FF269B180029B000BD0100000102000001D8 +:4080C00003000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B58EB00390019200930A23F9 +:408100006B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F236B443F210A401A70019BB44A13400A930A9A039B11001800FFF76AFD03000D9304 +:408140000D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A90A236B4418882300FEF72AFE03000D930D9B002B00D02FE1059B1800FEF736FFC4 +:40818000030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089B002B02D102230D9317E1089B5B69DAB2039B5A71059A089B09990398FFF7F4FD67 +:4081C00003000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D0DBE0019BFF2213408022520413430693069B002B02D102230D93EEE0069BFF2293 +:4082000013408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A934200D194E0069BFF221340802252041343774A934200D188E0069BFF221340802283 +:4082400052041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E0069BFF2213408022520413436B4A934200D164E0069BFF2213408022520413431C +:40828000674A934259D0069BFF221340802252041343644A93424ED0069BFF221340802252041343604A934243D0069BFF2213408022520413435D4A934238D0069BFF226D +:4082C0001340802252041343594A93422DD0069BFF221340802252041343564A934222D0069BFF221340802252041343524A934217D0069BFF2213408022520413434F4AE7 +:4083000093420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C235A +:4083400008E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0039B5B79802B02D902230D9335E0059B1A68A223DB059A4202D008230D932CE093 +:40838000039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F236B441B78002B18D02F236B441B78032B02D802230D9310E0039B5B792F226A44CF +:4083C00012789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0039B1800FFF790FC04E0039B1A7901210A431A710D9B18000EB010BDFFC0FFFFBD +:408400000200C0020000C07F010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D000001100000011100000112000001AA +:408440001300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF748FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A2328 +:408480006B44198803980023FFF734FE0300180005B000BD00B587B003900291019207230593039B1B7901221340DBB2002B3CD0039B1B7902221340DBB2002B06D0039B51 +:4084C0001B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD1039B0833019A029918000BF01FFD03000493049B1800FDF71BFE0300059317E01C +:40850000039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300059305E00723059302E0C04600E0C046059B002B03D0039B1800FFF7E5FB059B91 +:40854000180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B68169300230493169B1800FFF72AFB03001593039804AB05A94022FFF7E2F803001793C5 +:40858000179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D10398039BE033159A1900FFF785F803001793179B002B1ED1039B049A05A9180037 +:4085C000FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B002B0CD1019A05A9029B18002FF0FCFA06E0C04604E0C04602E0C04600E0C0468A +:40860000049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039B1B7901221340DBB2002B01D1072350E0039B1B7902221340DBB2002B08D0039B30 +:408640001B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0039B1B681C4A93421ED1039B083305AA110018000BF008FD03000993099B002B92 +:4086800007D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800FDF746FD030014E0039B1B680B4A1A40A0239B049A420BD1039B08331800039BE5 +:4086C0005B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F00B587B00390029101920093009B019A1A60019B002B05D0019A029B21211800E9 +:408700002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800FFF778FF03000593059B002B15D1039B1800FFF7E9FA03000593059B002B05D1C0 +:40874000039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF7D3FA059B180007B000BD00B597B0039002910192039B1B7910221340DBB2002B3D +:4087800002D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B40221800FFF737FF03001593019A05A9029B1800FDF784FC031E01D010231593159BED +:4087C000002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB40211800FDF75AFC159B180017B000BD00B587B0039002910192039BFF2293432D4A934223 +:4088000011D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A1340284A93420CD1039BFF22134006D0039BFF22134080225204134302E0002300E067 +:4088400000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A70039BFF229343144A934213D1039B124A93420FD0049B002B01D1022316E0049B68 +:40888000180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D1049B002B01D1022300E00023180007B000BDC046000003100000021000FFFEFFBB +:4088C000000004100000061010B58CB0079006910592049327226A440499069B1800FFF785FF03000A930A9B002B01D00A9B5AE0079B180016F0CFFF02000F9B9A4201D91A +:40890000042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B441B78234C234907980E9A0392059A0292049A019200930123220018F0A9FC030037 +:408940000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F08BFF134A134907980E9B0393059B0293049B019300230093012318F0ABF9030002 +:408980000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B1800FDF7C6FB030018000CB010BD00000210C8650008F94701100000031010B58CB04E +:4089C000079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D00A9B56E0079B180016F055FF02000F9B9A4201D904234CE0069BFF229343264AE1 +:408A0000934219D1079B00220021180016F034FF27236B441B78214C214907980E9A0392059A0292049A019200930023220018F037FF03000B9321E0069BFF229343194AEB +:408A4000934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393059B0293049B019300230093002318F05BFE03000B9301E008230AE00B9B0A4AD9 +:408A8000934201D1102304E00B9B1800FDF750FB030018000CB010BD00000210C8650008F94701100000031000BFFFFF10B594B00790069105920493079B9B6D0733DB08C3 +:408AC00012930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B13937FE0069A80235B0213404BD0069BFF229343484A934211D0069BFF229343464A40 +:408B000093420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF22134006D0069BFF22134080225204134302E0002300E000231193119B1800FEF757 +:408B4000E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0CA93F236B441B780293049B0193059B009323000CF0B2F903001393139B002B9B +:408B800016D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B009323000CF00BF903001393139B002B15D1129A16990CAB180005F032FF0300139358 +:408BC000139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0C0460CAB180005F0FFF909AB180005F0FBF9139B002B03D1129B5A00189B1A601F +:408C0000139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFF0000041000000610C8650008F947011010B58EB00590049103920293059B9B6DC1 +:408C40000733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D0102337E00C9A029909AB180005F076FE03000D930D9B002B1CD1029A0C9BD118AD +:408C80000C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A049906AB019309AB009323000CF023FA03000D9302E0C04600E0C04609AB180005F049 +:408CC00093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB00691059204931E236B44021C1A800E9B0D9A1A60069C8023DA0008A91E236B4429 +:408D000018882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB059A4202D0082309933AE0089B1B682B4A934210D1089B1869049C059A06990E9BD3 +:408D400002930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A934219D1069B204A1340204A934210D1089B1869049C059A06990E9B02930D9BFF +:408D800001930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C046099B002B0CD10E9B1B680C9AD0180E9B1B680D9AD31A1A0021212EF0A7FF08E03A +:408DC0000D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC046000001700000FFEF0000036000FFFEFF0000061010B588B004910392029316236B44021C8A +:408E00001A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D0079B30E0069B1B68184A1340184A93420DD1069B1869029C039A04990B9B019309 +:408E40000A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4A13400F4A93420BD1069B18690A9C029A03990B9B00932300FFF7DAFE030002E0A5 +:408E8000082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFF0000061010B586B001900091019BFF229343124A934206D1019BFF2213408022CB +:408EC0005204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F040FB030023700F236B441A78009B0121180016F0C1FCC04606B010BD00000312B5 +:408F000010B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A934204D0119B002B01D008237DE0089C80235A000AA926236B4418882300FDF764 +:408F40003FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A420AD00A9B1A68E023DB051A40E023DB059A4201D0082358E00A9B1B682D4A134055 +:408F80002D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E0089B264A93420ED1254A26490B98129B0293079B0193069B0093002317F064FA0B +:408FC00003000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A18490B98129B0493079B0393069B0293119B0193109B0093002317F0BFF80300D1 +:409000000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800FDF786F8030000E0022318000EB010BD00000312FFFFFFEF00000160000002126C +:40904000C8650008F947011010B58EB008910792069326236B44021C1A80149B00221A60089BFF2293433C4A934204D0119B002B01D008236CE0089C80239A000AA92623DC +:409080006B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB051A40E023DB059A4201D0082350E00A9B1B682A4A93424AD10A9B1B690B930B9B42 +:4090C000180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B98139B0393129B0293079B0193149B0093012317F0B5FD03000D9322E0089BFF2253 +:409100009343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B0493079B0393149B0293119B0193109B0093012317F0DEF903000D9301E008237B +:4091400006E00D9B1800FCF7F3FF030000E0022318000EB010BDC046000003120000017000000212C8650008F947011000B583B001900091009AFE23DB051A408023DB0412 +:409180009A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902210A431A71019B00225A71019B64 +:4091C00000229A71019B0833180009F03DFF0023180003B000BD000010B58AB003900800019219000A236B44021C1A8009236B440A1C1A70784B09930023089309236B4416 +:409200001B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FF03000693069B002B01D0069BD1E0019C079A04A90A236B4418882300FDF7C0FD15 +:4092400003000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059A01980023FEF7C4FB03000893089B002B01D10223ADE0039B0833089A11001800A1 +:4092800009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030097E0039B08331800049B1969059A09236B441B785BB209F02DFF03000993099B87 +:4092C000002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D03F4A934209D011E0039B0833042118000AF01CFB030009930BE0039B08330021DE +:4093000018000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F9099B1800FCF704FF030052E0039B1A7901210A431A71019AFF23DB051A409023DE +:40934000DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A934208D0049B1B68214A944663445A425341DBB206E0102304E0082302E0102370 +:4093800000E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B68114A93420FD0049B1B68104A934208D0049B1B680E4A944663445A425341DBB25F +:4093C00004E0102302E0082300E01023039A5371002318000AB010BD809FFFFF0001600401016004010000400200004003000040FCFFFFBF00B585B0039001920A236B44C0 +:409400000A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A236B44198803980023FFF7CEFE03001800D3 +:4094400005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D1072305932AE0039B5B791A00019B9A4202D9042302 +:40948000059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B1800FCF745FE030005930DE0039B5B791A00009B1A60009B1A680299039B180011 +:4094C00000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC046C865000800B587B0039002910192039B1B7904221340DBB2002B06D1039B1B7919 +:4095000002221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305930EE0039B0833019A0299180009F06AFE03000493049B1800FCF7FAFD030005938B +:40954000059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B000BD10B58AB00590049103920293059B1A68FF23DB051A409023DB049A4210D087 +:40958000059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B795343089301E0039B08930C9A089B9A4202D20423099312E0059B08331800029C039A049993 +:4095C0000D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D0059B180000F082F8099B18000AB010BD00B58BB003900291019200930123099307 +:40960000384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B7902221340DBB2002B09D0039B1B7904221340DBB2002B02D10723099344E0039B1B7C5BB242 +:40964000012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833009A04A918000AF08FF803000893089B002B06D0089B1800FCF75AFD030009934B +:4096800020E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF0A3FA02E0042309930CE004AB10211800FCF7F2FC039B180000F018F80300099315 +:4096C000099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B18000BB000BD809FFFFF0001600400B583B00190019B1B68002B01D1002328E0019B22 +:409700001A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B00225A71019BBF +:4097400000229A71019B1A7902218A431A710023180003B000BD000000B585B0020000916B4606331A80009B002B01D108231BE002AA6B4606331B8811001800FDF7F8FA60 +:4097800003000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A043303CA03C30023180005B000BDC046FEE0FFFF00B585B0020000916B46063352 +:4097C0001A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393039B002B01D0039B05E0029B009A043303CB03C20023180005B000BD00B585B0FA +:40980000020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B002B01D0039B04E0029BDA68009B1A600023180005B000BD00B585B0020000918D +:409840006B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AA6B4606331B8811001800FDF781FA03000393039B002B01D0039B09E0009B064AF6 +:40988000934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B00190019ACC235B00D3580B4A934203D00A4A934206D00BE0019B0833180008F002 +:4098C00044FA05E0019B0833180012F007FAC046C04603B000BDC046011000060210000610B588B00390019200930A236B440A1C1A800399009C019A0A236B4418882300DE +:40990000FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB03000693039B1B68196817236B44069A0098FEF75FF80200039B5A60039B5B68002B01D165 +:409940000223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B005549D150039ACE235B001021D154039B1B681B68514A93420DD0039B1B681B684F4A7B +:40998000934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039B0833180017236B441978039B1B681A69069B08F088F903001800FCF7B9FB030034 +:4099C0000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039B1B681B68344A93420DD0039B1B681B68324A934205D0039B1B681B68304A934256 +:409A000001D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B681A69069B11F010FB03001800FCF780FB0300079302E0022332E0C046009AFE238A +:409A4000DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C934202D90823079315E0009AFE23DB051A40C023DB049A4206D1009B1B0ADBB2DD +:409A80003F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B180008B010BDC046FFC0FFFF010000060200000601100006010000400200004056 +:409AC000030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B00221A600A9C80235A004F4B76A98C46634419880CA82300FFF7F2FE03007593C0 +:409B0000759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A4202D90423759369E07E9A7D9BD31874933E4B76AAD218CC235B00D3583C4A9342F5 +:409B400023D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305947E9B04937C9B03937B9B02937A9B0193089B00930B00012112F02EF803001800C9 +:409B8000FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AAD2189E23FF33D35C1D00089C099A7D990CAB083318000595749B04937E9B039394 +:409BC0007C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E002231EE0759B002B08D07F9B002B05D07F9A7E9B002118002EF088F80CAB1800CD +:409C0000FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A60759B180077B030BD56FEFFFF58FEFFFF021000060110000686B00390029101929E +:409C40000093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042305E0029A059BD218069B1A600023180006B0704770B5F6B00891079206936D4B57 +:409C800076AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46634419880CA82300FFF71AFE03007593759B002B01D0759BB9E05F4B76AAD218AF +:409CC000CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF7A6FF03007593759B002B00D084E04F4B76AAD2189E234B +:409D0000FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAA083210007E9A05927C9A0492039602937B9B01937A9B00932B000A00210011F07E +:409D400081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A934240D1354B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF75B +:409D80005BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B254A76A989189E22FF328A5C1600069D07990CAA08321000059604937E9B039387 +:409DC0007C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300759301E0022322E0759B002B0CD07F9B002B09D07F9A7E9B002118002DF086FFE2 +:409E000002E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF33D35C1A007D9B9A1A809B1A60759B180076B070BD4EFEFFFF58FEFFFF021000060B +:409E40000110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1019B9B68002B54D0019B9A68019BDB6819001000FCF710F9019B9B6818002DF069 +:409E800079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B10331800FDF713FF0300039332E0019B1B68FF2293431E4A934206D0019B1B68FF2283 +:409EC00093431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8019B9B6818002DF045FB019B1B69002B0FD0019B1A69019B5B6919001000FCF772 +:409F0000CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FE039B180005B000BD0100003100010030000200300003003082B001900091019BFA +:409F40005A68009B1A600023180002B07047000000B587B00390029101920093029BFF221340802252041343B64A934200D1A0E0029BFF221340802252041343B24A934279 +:409F800000D194E0029BFF221340802252041343AE4A934200D188E0029BFF221340802252041343AA4A934200D17CE0029BFF221340802252041343A64A934200D170E05D +:409FC000029BFF221340802252041343A24A934200D164E0029BFF2213408022520413439E4A934259D0029BFF2213408022520413439B4A93424ED0029BFF2213408022FD +:40A0000052041343974A934243D0029BFF221340802252041343944A934238D0029BFF221340802252041343904A93422DD0029BFF2213408022520413438D4A934222D089 +:40A04000029BFF221340802252041343894A934217D0029BFF221340802252041343864A93420CD0029BFF221340802252041343824A934201D140231CE000231AE0302371 +:40A0800018E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102316226A441370B8E0039AF423AC +:40A0C0005B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D917236B44009A1A70039BA933FF330399F42252008A5C991817236B441A78019B18000A +:40A100002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4235B00D25C17236B441B78D318D9B2039AF4235B00D154009B002B00D17CE0039A74 +:40A14000EA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D154039AF4235B000021D154039B08331800039B6933FF33190016236B441A78E5 +:40A18000029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D0039B08331800039BA933FF33190016236B441B781A00FDF77FFA03000493049BC5 +:40A1C000002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493049B002B01D0049B28E0039B08331800039BEA33FF3301221900FDF75DFA030080 +:40A200000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F903000493049B002B01D0049B06E0009B002B00D042E700E0C0460023180007B067 +:40A2400000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000178 +:40A2800000B5E1B001900091009BFF2213408022520413435C935C9BFF221340802252041343A44A934200D1A0E05C9BFF221340802252041343A04A934200D194E05C9B69 +:40A2C000FF2213408022520413439C4A934200D188E05C9BFF221340802252041343984A934200D17CE05C9BFF221340802252041343944A934200D170E05C9BFF22134013 +:40A30000802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D05C9BFF221340802252041343884A93424ED05C9BFF221340802252041343854A78 +:40A34000934243D05C9BFF221340802252041343814A934238D05C9BFF2213408022520413437E4A93422DD05C9BFF2213408022520413437A4A934222D05C9BFF22134092 +:40A38000802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BFF221340802252041343704A934201D140231CE000231AE0302318E0202316E091 +:40A3C0001C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010237022FF326A441370019B51229B5CFF2B01D159 +:40A40000072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB1800FDF765FC019B51229B5C012B10D1019B9A687023FF336B441B78D3185E93019B57 +:40A44000DA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D93019B1968019B5A685C9B02A8FDF7C4FC03005F935F9B002B41D15D9A5E9902ABB1 +:40A480001800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB1800FEF756F803005F935F9B002B2BD1019B1968019B5A685C9B02A8FDF79DFC0300EE +:40A4C0005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002B15D1019B103319007023FF336B441A7802AB1800FEF72CF803005F9308E0C04679 +:40A5000006E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002B04D15A9B002B01D05A9B5F935F9B180061B000BD0100000102000001030000013E +:40A54000040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093029BFF2249 +:40A5800013408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BFF221340802252041343794A934200D194E0069BFF221340802252041343754AAF +:40A5C000934200D188E0069BFF221340802252041343714A934200D17CE0069BFF2213408022520413436D4A934200D170E0069BFF221340802252041343694A934200D161 +:40A6000064E0069BFF221340802252041343654A934259D0069BFF221340802252041343614A93424ED0069BFF2213408022520413435E4A934243D0069BFF22134080221B +:40A64000520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF221340802252041343534A934222D0069BFF221340802252041343504A934217D057 +:40A68000069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E0BC +:40A6C00040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102317226A44137049E0039B50229A5C1F236B441721694409788A1A1A701F2383 +:40A700006B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049B31E01F236B441A78009B9A4203D91F236B44009A1A70039B1033039A5021525C28 +:40A7400099181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B441B78009AD31A0093039B50229A5C1F236B441B78D318D9B2039B50229954009BBA +:40A78000002BB2D10023180009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001BE +:40A7C000120000011300000100B589B0039002910192039B5A68019B9A4205D2039B00225A601223079361E0019B002B09D1039B5B68002B05D1039B1B68002B01D11223FC +:40A8000062E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68D21A019BD31A0593039B9A68059BD118019A029B18002DF0D7F90023079335E0BD +:40A84000039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039B08331800019B029A0699FFF771FB030007931BE0039B1B68FF229343164A934211 +:40A8800006D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF767FE0300079301E007230DE0079B002B09D0039B1800FFF7C5FA019A029B2121D8 +:40A8C00018002DF023FA079B180009B000BDC0460100003100010030000200300003003010B588B00291019200930E236B44021C1A8000230693019B0733DB080593029B10 +:40A900001800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B190001202CF0A4FA03000693069B002B01D109231CE0059A0699009B1800FFF745FF0300A0 +:40A940000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E0C046069B18002CF005FE079B180008B010BD000000B587B0039002910192009393 +:40A98000039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B002B01D0059BEFE0039B0833019A02991800FCF781FE03000593059B002B01D072 +:40A9C000059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B01D0059BD0E0009BFF221340802252041343674A934200D1A0E0009BFF221340A7 +:40AA0000802252041343634A934200D194E0009BFF2213408022520413435F4A934200D188E0009BFF2213408022520413435B4A934200D17CE0009BFF22134080225204E2 +:40AA40001343574A934200D170E0009BFF221340802252041343534A934200D164E0009BFF2213408022520413434F4A934259D0009BFF2213408022520413434B4A93424A +:40AA80004ED0009BFF221340802252041343484A934243D0009BFF221340802252041343444A934238D0009BFF221340802252041343414A93422DD0009BFF22134080226E +:40AAC000520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF221340802252041343364A93420CD0009BFF221340802252041343334A934201D1B0 +:40AB000040231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102303996B +:40AB4000F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B190001202CF083F90200039B1A60039B1B68002B01D1092307E0039B1B680B9A0A998E +:40AB800018002DF031F80023180007B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000118 +:40ABC00011000001120000011300000100B589B00390029101920093009BFF221340802252041343904A934200D1A0E0009BFF2213408022520413438C4A934200D194E038 +:40AC0000009BFF221340802252041343884A934200D188E0009BFF221340802252041343844A934200D17CE0009BFF221340802252041343804A934200D170E0009BFF22D1 +:40AC400013408022520413437C4A934200D164E0009BFF221340802252041343784A934259D0009BFF221340802252041343754A93424ED0009BFF221340802252041343FA +:40AC8000714A934243D0009BFF2213408022520413436E4A934238D0009BFF2213408022520413436A4A93422DD0009BFF221340802252041343674A934222D0009BFF228B +:40ACC0001340802252041343634A934217D0009BFF221340802252041343604A93420CD0009BFF2213408022520413435C4A934201D140231CE000231AE0302318E02023DE +:40AD000016E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010231F226A4413701F236B441A780B9BD2188A +:40AD40000D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D109235EE0039B019A5A60039B1B68019A029918002CF039FF0B9A0D9BD2180B9B9A421E +:40AD80000BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E000230593059B002B01D0082339E0069B190001202CF05BF80200039B9A60039B9B68B9 +:40ADC000002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D3180D9A0C9918002CF0FFFE0B9B002B0CD0039B9A681F236B4419780D9BCB18D31829 +:40AE00000B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A540023180009B000BDC04601000001020000010300000104000001050000010800000180 +:40AE4000090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B5CAB00790069105920493059B802B01D9082351E0059B1B0ADAB2DF +:40AE8000284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A002118002CF033FF059B02331E4A4AA98C46624411781B4A4AA884466244D154059B8C +:40AEC0000333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A069918002CF080FE059B02335A00049C08A907984F9B03934E9B02934D9B0193A3 +:40AF00004C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B18004AB010BDF8FEFFFF10B58EB00790069105920493079B049A1A60049BD44A93425B +:40AF400026D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FF0200079B9A60079B9B68002B01D1092328E2079B9B68059A069918002CF034FEC4 +:40AF8000079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049BFF2213408022520413430B930B9BFF221340802252041343B74A934200D1A0E0AD +:40AFC0000B9BFF221340802252041343B34A934200D194E00B9BFF221340802252041343AF4A934200D188E00B9BFF221340802252041343AB4A934200D17CE00B9BFF223D +:40B000001340802252041343A74A934200D170E00B9BFF221340802252041343A34A934200D164E00B9BFF2213408022520413439F4A934259D00B9BFF22134080225204E8 +:40B0400013439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340802252041343954A934238D00B9BFF221340802252041343914A93422DD00B9B90 +:40B08000FF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A934217D00B9BFF221340802252041343874A93420CD00B9BFF221340802252041343E5 +:40B0C000834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E01023E1 +:40B1000000E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B083318000B9C059A0699139B0393129B0293119B0193109B00932300FFF71CFC03000D9384 +:40B1400029E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF2213408022520413430993099BFF221340802252041343484A934200D1CAE0099B0F +:40B18000FF221340802252041343444A934200D1BEE0099BFF221340802252041343404A934200D1B2E0099BFF2213408022520413433C4A934200D1A6E0099BFF221340A3 +:40B1C000802252041343384A934200D19AE0099BFF221340802252041343344A934200D18EE0099BFF221340802252041343304A934200D182E0099BFF221340802252046F +:40B2000013432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099BFF221340802252041343244A93425FD0099BFF221340802252041343204A934201 +:40B2400054D0099BFF2213408022520413431D4A934249D0099BFF221340802252041343194A93423ED0099BFF221340802252041343164A934233D0099BFF2213408022EB +:40B2800052041343124A934228D1402343E0C0460100003100010030010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000017E +:40B2C0000D00000110000001110000011200000113000001000200300003003000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE09C +:40B300001C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0099B2B4A934201D002234BE0089A13001B029B1A0C93049BFF229343254A9342E5 +:40B3400013D1079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF734FC03000D9315E0079B08331800099C059A0699139B0393129B0293119B22 +:40B380000193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E0149A0C9B9A4203D8079B149A5A6008E0149B013303D1079B0C9A5A6001E008239A +:40B3C00000E0002318000EB010BDC046090000010A0000010002003010B58CB009900792069322236B440A1C1A80099B1B68002B01D007233FE0079AFE23DB051A40C0238F +:40B400009B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC03000B930B9B002B01D00B9B24E00A9B1A68A423DB059A4201D008231CE00A9B1969FF +:40B440000A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF763FD03000B930B9B002B03D0099B1800FEF7E8FC0B9B18000CB010BD10B5D8B005 +:40B4800005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059954AB180012F0D0FD03005793579B002B3FD154AB180011F021FC0300023B012BAF +:40B4C00002D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B789A4202D01D4B579328E0569907AB0122180009F04FFA03005793579B002B1AD135 +:40B50000039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B0193104B0093230009F084FA0300579304E0C04602E0C04600E0C04654AB1800F8 +:40B5400011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFFC8650008F947011010B59EB0099008910792069300230B93209B234A1340234A04 +:40B5800093421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907980BAB0193422300932300FFF767FF03001D93C0461D9B002B02D01BE0022320E0A3 +:40B5C0000B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293002301930023009313002200FFF79CFC03001D930B9A0CAB11001800FAF74CFDA2 +:40B600001D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392029312236B440A1C1A800A9AFC23DB051A4088239B059A4201D0082323E00A9CC5 +:40B6400080235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E00699029C039A05980A9B00932300FFF77BFF03000793079B002B03D0059B1800CC +:40B68000FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE0009A0199074B180009F0A6F803000393039B1800FAF73CFD0300180005B000BD49 +:40B6C00048630008C865000882B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B0AD +:40B700007047C0467C01041000B587B0019000911E4B1B68002B01D0032334E0009B1F2B07D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B4211001800A1 +:40B74000F7F73CF803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2358420023F6F79AFF03000493049B1800FFF7AAFF0300059304E0049B002B01D106 +:40B7800003230593059B180007B000BD4863000810B58AB00291019200930E236B44021C1A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF747 +:40B7C000D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B10331A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049B67 +:40B800005B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFE099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A42AA +:40B8400064D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C4422236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793AF +:40B88000009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B9B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D19A +:40B8C000092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FCE4 +:40B90000030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D10499019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEFA0 +:40B9400000000360C8650008F947011000B585B00E236B4401221A801EE001AA0E236B441B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B182143 +:40B980001800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202BDBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFB21 +:40B9C000C04605B000BDC046C8650008506300084863000810B584B002AB1B4A1A601B4B1B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF55 +:40BA0000144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039B002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FBFE +:40BA40000300180004B010BD505341004863000850630008C865000851AB011000B587B00390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B07 +:40BA800000225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B5A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A749B +:40BAC000009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB2059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CAD +:40BB0000DAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039948 +:40BB400018002CF051F8C04607B000BDA401041000B583B001900749019B082218002CF01DF8031E01D00C2300E00023180003B000BDC046A401041000B589B003900291BE +:40BB800001920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079BFA +:40BBC000DB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A43079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D8F2 +:40BC0000009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019B1A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7BDA +:40BC40001B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079B9B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A4359 +:40BC8000079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B1B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021CE9 +:40BCC0001A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F803000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE0B +:40BD0000099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B18000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019BF7 +:40BD400018002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002309930023079307AA16236B441B881100180000F03DF903000993099B002B01D063 +:40BD8000099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089916236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039B89 +:40BDC0000193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B18000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE0062396 +:40BE00000AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046AC01041082B002006B4606331A806B4606331B88180002B0704700B58BB002911B +:40BE400001920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B11001800F6F7ABFC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE09F +:40BE8000029B019A09980021F6F750FC03000893089B1800FFF7A6FF03000793079B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059331 +:40BEC00002AA059B11001800F6F778FC03000493049B072B01D1002300E00123180007B000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF0300A8 +:40BF000008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A019908980023F6F7BCFB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AA6D +:40BF4000089B11001800F6F739FC03000793079B1800FFF747FF03000993099B002B07D105AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F766FC20 +:40BF8000099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0300059302AA059B11001800F6F706FC03000493049B072B01D1002315E0059B0B +:40BFC0001800F6F743FC031E01D00C230DE002AA059B11001800F6F7F1FB03000493049B072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B46F1 +:40C0000006331B881800FFF70DFF0300079303AA079B11001800F6F7D1FB03000693069B1800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A6000231800D9 +:40C0400009B000BD00B585B0019000910199009AAE2358420B000021F6F768FB03000393039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F70EFB01 +:40C0800003000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F020 +:40C0C00015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D080225200934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E026 +:40C1000020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318059A920002998A1812781000059A9200013202998A181278120201001143059A71 +:40C140009200023202988218127812041143059A9200033202988218127812060A431A60059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2BCF +:40C1800000D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C321268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12020F +:40C1C0005140049A0C321268120EA548825C12045140049A0C321268FF200240A048825C12064A401A60049B1433049A04321168049A103212684A401A60049B1833049A14 +:40C2000008321168049A143212684A401A60049B1C33049A0C321168049A183212684A401A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B18332B +:40C24000049A1168854A0598800082585140049A14321268120AFF2002408148825C5140049A14321268120CFF2002407C48825C12025140049A14321268120E7848825CFD +:40C2800012045140049A14321268FF2002407448825C12064A401A60049B1C33049A04321168049A183212684A401A60049B2033049A08321168049A1C3212684A401A6014 +:40C2C000049B2433049A0C321168049A203212684A401A60049B2833049A10321168049A243212684A401A60049B2C33049A14321168049A283212684A401A60059B01331B +:40C300000593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A0598800082585140049A1C321268120AFF2002404A48825C5140049A1C3212687A +:40C34000120CFF2002404648825C12025140049A1C321268120E4248825C12045140049A1C321268FF2002403D48825C12064A401A60049B2433049A04321168049A20321F +:40C3800012684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A0C321168049A283212684A401A60049B3033049A10321168049A2C321268FF2089 +:40C3C00002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C321268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A40E7 +:40C400001A60049B3433049A14321168049A303212684A401A60049B3833049A18321168049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B1B +:40C4400001330593049B20330493059B062B00D861E7C0460023180007B000BDD4230410D401041000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9AD8 +:40C480005A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA944663441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D3184A +:40C4C0004C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112684B +:40C500001A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9A1268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825C96 +:40C5400010002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825851404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B24 +:40C5800004334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1DF2 +:40C5C0004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C04605AB1800FFF760FD4B9B180051B000BDD4FEFFFFD4010410D4130410D417041024 +:40C60000D41B0410D41F041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B18 +:40C640001A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A534090 +:40C680000A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00AE +:40C6C000029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C9239 +:40C700001A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9BA6 +:40C740001A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534016 +:40C7800006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B890090 +:40C7C000CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190E75 +:40C80000C24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40A8 +:40C84000049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B89009F +:40C88000CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF21194048 +:40C8C000914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0C50 +:40C90000FF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B3C +:40C940001B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB580C +:40C980005A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B7E +:40C9C0008900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF21BA +:40CA000019403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B688B +:40CA4000079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C9278 +:40CA80001B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1D95 +:40CAC0000C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E0F0 +:40CB0000D4020410D4060410D40A0410D40E0410D40104100C9B1A1D0C921B68049AFF210A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B407C +:40CB40003449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B2EB +:40CB80001A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A74 +:40CBC000120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70DA +:40CC0000019B0F33089A120ED2B21A70002318000FB000BDD401041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B044D +:40CC40001A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0634 +:40CC800013430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C925D +:40CCC0001B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B8E +:40CD00001B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40F3 +:40CD40000A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B89007A +:40CD8000CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF2119406B +:40CDC000D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0C33 +:40CE0000FF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A408D +:40CE4000059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B890083 +:40CE8000CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF21194037 +:40CEC000944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0A3C +:40CF0000FF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A68A6 +:40CF40000B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1DD5 +:40CF80000C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB585340069398 +:40CFC0000C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB58EA +:40D00000534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374B6E +:40D040008900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E02 +:40D080002749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B09 +:40D0C0001B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A4082 +:40D10000049B1B0E0649CB5C1B065340099309E0D4130410D4170410D41B0410D41F0410D41204100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B403E +:40D140003849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A98 +:40D18000120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A702A +:40D1C000019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120A8A +:40D20000D2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BDD412041000B585B00390029101920093029B012B07D1009A0199039B2D +:40D240001800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B58BB00390029101920093019B0F22134002D022235B4269E0029B002B62D131E02E +:40D280000C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B0D9AD318099A0D998A181178099A0098821812784A40D2B21A70099B0133099306 +:40D2C000099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019B103B0193019B002BCAD12EE00023099310E0099B0D9AD318099A0C998A181178FD +:40D30000099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990398FFF781FF0D99009B102218002AF05BFC0C9B10330C930D9B10330D93019B35 +:40D34000103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019B1B680693069B0F2B39D921235B423FE0069B002B1BD10A9B009A03980121FFF72A +:40D3800053FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B013B0793079B002BEEDC00E0C0460B9B5A1C0B921B7805930C9B5A1C0C92059A63 +:40D3C00051B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029B5A1E0292002BC3D1019B069A1A600023180009B000BD84B0039002910192029ADA +:40D40000039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B68591C039A11601B781A00019B1A608CE0039B1B681B781A007F231340022B1ED0AC +:40D4400002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC60235B427EE0039B1B6801331B781A00019B1A60039B1B689A1C039B1A6065E0029A7C +:40D48000039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B6802331B781A43019B1A60039B1B68DA1C039B1A604AE0029A039B1B68D31A032B02DC7C +:40D4C00060235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6803331B781A43019B1A60039B1B681A1D039B1A6029E0029A039B1B68D31A042BC7 +:40D5000002DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B1B6803331B781B021A43039B1B6804331B781A43019B1A60039B1B685A1D039B7C +:40D540001A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E00023180004B0704700B585B00390029101920093029A039B1B68D31A002B02DC3B +:40D5800060235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1C039B1A60019A0299039B1800FFF723FF0300180005B000BD00B587B003900291E0 +:40D5C000019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B08D0049B042B05D8039B1B681B785BB2002B02DA64235B4217E0019B00221A6088 +:40D600000DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B5A1E0492002BECD10023180007B000BD00B587B003900291019204AA029903981F +:40D640000223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F07DF903000593039B1A68049BD218039B1A60059B180007B000BD00B587B003905A +:40D6800002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019B1B68591E019A1160012B07D9039B1B68591C039A11601B78002B02D068235B4219 +:40D6C00000E00023180007B000BD00B587B0039002910192009304AA029903983023FFF743FF03000593059B002B01D0059B65E0029A039B1B68D31A002B02DC60235B4205 +:40D700005CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D029903980623FFF721FF03000593059B002B01D0059B43E0039B1A68019B9A60039B1A6872 +:40D74000019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F900232CE0039B1B681B781A00009B1A60039B1B685A1C039B1A60009B1A1D0299039B6B +:40D780001800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A68009B5B68D218039B1A60039B1A68029B9A4202D066235B4200E00023180007B0C3 +:40D7C00000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC6C235B42D3E0039B1B685A1E039B1A60039B1B68019AD2B21A700123C7E0019BBD +:40D80000FF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6881221A70022394 +:40D84000A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6854 +:40D88000019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B3D4A934234D8039B1B681A00029BD31A032B02DC6C235B4269E0039B1B685A1E43 +:40D8C000039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E7D +:40D90000039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B4234E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B76 +:40D940001A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039B1B68019A120ED2B21A70039B1B685A1E7A +:40D98000039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039002916B4607331A70039B1B681A00029BD31A002B02DC6C235B420BE0039B1B6883 +:40D9C0005A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039002910192009300230593039B1A68029B9A4208D3039B1B681A00029BD31A1A008C +:40DA0000009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B1B68059A019918002AF0DEF8059B180007B000BD00B587B0039002910192002397 +:40DA40000493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029BD31A1A00049B9A4202D26C235B4259E0039B1A68049B5B42D218039B1A60039B94 +:40DA80001968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B4232E0039BA3 +:40DAC0001B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF771FE03000593059B002B01DA059B19E0059B049AD31804930299039B0222180079 +:40DB0000FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E0C046059B180007B000BD00B585B001900091002303930099019B00221800FFF7A8 +:40DB400041FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800FFF71CFF03000293029B002B01DA029B04E0029B039AD3180393039B180005B077 +:40DB800000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF702FEAB +:40DBC00003000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF7DDFE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD98 +:40DC000000B587B0039002910192009300230593089B002B11D1029A039B11001800FFF784FF03000493049B002B01DA049B3CE0049B059AD318059303E0059A089BD3189A +:40DC40000593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF7AAFD03000493049B002B01DA049B15E0049B6D +:40DC8000059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD00B587B003900291019200230593039B79 +:40DCC0001B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039B1A60039B1B68019AD2B21A70019B002B1BDD039B1B681B785BB2002B15DA039B7B +:40DD00001B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B6800221A70059B01330593059A0299039B1800FFF747FD03000493049B002B01DA26 +:40DD4000049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD000000B58BB003900291FE +:40DD8000019200930023079300230893089B09936FE00023069305E0099B01330993069B01330693099A0C9B9A4205D2009A099BD3181B78202BEFD0099A0C9B9A425DD09B +:40DDC0000C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B780A2B40D0009A099BD3181B780A2B3CD0069B002B02D02C235B42D0E0009A099B66 +:40DE0000D3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3181B785BB2002B08DB009A099BD3181B781A005C4B9B5C7F2B02D12C235B42AEE03A +:40DE4000009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089B0133089302E0C04600E0C046099B01330993099A0C9B9A428BD300E0C046089B22 +:40DE8000002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07221A4013005B009B185B000733DB08CB180893089A079BD31A0893039B002B03D0E1 +:40DEC000029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893039B059351E0009B1B780D2B46D0009B1B780A2B42D0009B1B78202B3ED0009B96 +:40DF00001B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B781900204B5B5C19003F230B4013430693089B01330893089B042B20D1002308933B +:40DF4000079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C0592069A120AD2B21A70079B022B07D9059B5A1C0592069AD2B21A7000E0C046099BCD +:40DF8000013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A60002318000BB000BDFC23041000B583B001900091009B9A00019B1100180010F097FDC046FF +:40DFC00003B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6000E0C04602B0704700B583B00190019B002B1AD0019B9B68002B0CD0019B9A6828 +:40E00000019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00225A60019B00229A6000E0C04603B000BD00B585B001900091009B1E4A934202D99E +:40E0400010235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039B002B02D110235B4220E0019B9B68002B15D0019B9968019B5B689A00039B1800F3 +:40E0800029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B009A5A60019B039A9A600023180005B000BDC0461027000000B585B001900091A5 +:40E0C000019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D1E1 +:40E1000000E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FE03000293029B002B02D110235B421FE0019B9B68002B14D0019B9968039B9A005D +:40E14000029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F009FA019B039A5A60019B029A9A600023180005B000BD00B585B00190009100236D +:40E180000393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF002344E0009B5B68013B02930AE0009B9A68029B9B00D3181B68002B06D1029B013BA9 +:40E1C0000293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029B9A420BD2029A019B11001800FFF720FF03000393039B002B0ED016E0019B9A6883 +:40E20000029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968029B9B001A0029F0DFFC039B180005B000BD00B587B0039002916B4607331A7043 +:40E24000002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF7E1FE03000493049B002B54D1039B1B686A460732FF +:40E28000127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A12 +:40E2C0005143029A9068059A92008218126868460730007842438A181A60059B01330593029B5A68059B9A42DAD814E0039B9A68059B9B00D318039A9168059A92008A1897 +:40E3000012686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D800E0C046049B180007B000BD00B589B0039002916B4607331A70039A029B9A42C3 +:40E3400001D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF760FE03000793079B002B77D1039B5A68029BB3 +:40E3800011001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60029B1B686A46AC +:40E3C0000732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE0039B9A68069B9B00D3181B680493039B9A68069B9B00D318039A9168069A920002 +:40E400008A1812686946073109780120411A5143029A9068069A92008218126868460730007842438A181A60029B9A68069B9B00D318029A9168069A92008A181268694618 +:40E44000073109780120411A51436A4607321278049842438A181A60069B01330693039B5A68069B9A42BBD802E0C04600E0C046079B180009B000BD00B585B0019000913B +:40E48000019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00002129F033FC019B9B68009AD11752184A401A60009B002B02DA01235A4200E08A +:40E4C0000122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009B9A4201D800230EE0019B9A68009B5B099B00D3181A68009B1F210B40DA4013006E +:40E500001A0001231340180002B0704700B589B0039002916B4607331A7000230793029B5B090693029B1F22134005936B4607331B78002B07D06B4607331B78012B02D024 +:40E5400004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0069B5A1C039B11001800FFF761FD03000793079B002B25D1039B9A68069B9B0079 +:40E58000D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68069B9B00D318039A9168069A92008A1811686A4607321078059A904002000A435B +:40E5C0001A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049313E0019B9A68059B9B00D3181A68049BDA4013000122134001D0039B11E0049B20 +:40E6000001330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD80023180006B0704784B0019080231B0602930023039309E0019B029A134009D135 +:40E64000029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B585B00190019B5B68002B01D1002325E0019B5B68013B03930AE0019B9A68039B8D +:40E680009B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B9B00D3181B681800FFF7BEFF020020239B1A0293039B5A01029BD318180005B081 +:40E6C00000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039002916B4607331A70039BFF221A606B4607331B782F2B0BD96B4607331B78392B26 +:40E7000006D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B78462B06D86B4607331B78373B1A00039B1A606B4607331B78602B0BD96B4607334C +:40E740001B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D306235B4200E00023180004B0704710B58EB0039002910192029B012B02DD029B102B5F +:40E7800002DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B6BD10A9B6C4A934202D904235B42CFE00A9B9B005B090A9A92001F210A40511E74 +:40E7C0008A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E0039B00211800FFF747FE03000D930D9B002B00D09CE00A9B0C9300230B9338E035 +:40E800000C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9B013B019AD3181A78029908AB1800FFF755FF03000D930D9B002B00D07AE0039BD5 +:40E8400099680B9BDA089300CB180399896892008A18116808980B9A92001C242240904002000A431A600C9B013B0C930B9B01330B930C9B002BC3D165E0039B00211800D1 +:40E88000FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3181B782D2B04D1039B012252421A6035E0019A0C9BD3181A78029908AB1800FFF74F +:40E8C0000DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002B2ED1039B1B68012B0CD1089B1A0005A9039B180000F05CFD03000D930D9B002BEF +:40E900000CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B01330C930C9A0A9B9A42B4D30CE0C0460AE0C04608E0C04606E0C04604E0C04602E071 +:40E94000C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B0039002910192019B9B08019A03210A40511E8A41D2B29B180493039B5A68049B13 +:40E980009A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB03000793079B002B33D1039B00211800FFF762FD03000793079B002B2BD1019BCB +:40E9C00006930023059320E0039B9A68059B03218B43D318039A9168059A032082438A181168069A013A0298821812781400059AD20018200240944022000A431A60069B78 +:40EA0000013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD00B589B0039002910192039B1800FFF748FE03000593019A059B9A4202D20823C6 +:40EA40005B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079BD218039B9968069B03208343CB181968069BDB0018200340D9400B00DBB2137006 +:40EA8000079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BD00B589B00190009100230593009B5B090493009B1F2213400393019B1800FFF7FE +:40EAC000CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40511E8A41D2B29A18019B11001800FFF79FFA03000793079B002B6ED100230793B6 +:40EB0000049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A91680698049A821A2E488446624492008A1812681A60069B013B0693069A049B35 +:40EB40009A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B0693069B002BEFD1039B002B37D0049B06932DE0019B9A68069B9B00D3181A68039BCD +:40EB80002021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A181168039A91400A001A60019B9A68069B9B00D318019A9168069A92008A181168059A90 +:40EBC0000A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180009B000BDFFFFFF3F00B589B00190009100230693009B5B090593009B1F22134048 +:40EC00000493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B00211800FFF729FC030075E0059B002B2AD00023079310E0019B9A68079B9B00D318B5 +:40EC4000019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21A079B9A42E7D809E0019B9A68079B9B00D31800221A60079B01330793019B5A6850 +:40EC8000079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C4663449B00D3181A68049B2021CB1A9A4013000393019B9A68079B18498C4663449B00F5 +:40ECC000D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A68079B0E498C4663449B00D318019A9168079A0A488446624492008A181168069A6E +:40ED00000A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F84B001900091019B5B6803930DE0019B9A68039B39498C4663449B00D3181B689B +:40ED4000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B2E498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0C9 +:40ED8000C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A039B9A4232D901235B4233E0019B9A68039B1A498C4663449B00D3181A68009BF4 +:40EDC0009968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4202D20B +:40EE000001235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F84B001900091019B5B6803930DE0019B9A68039B45498C4663449B00D3181B68E9 +:40EE4000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B3A498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0BC +:40EE8000C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0029A039B9A4203D9009B1B685B424AE0019B1B68002B05DD009B1B68002B01DA4F +:40EEC000012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039B1A498C4663449B00D3181A68009B9968039B1648844663449B00CB181B689A423C +:40EF000002D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4203D2019B1B685B4206E0039B013B0393039B65 +:40EF4000002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B1853400293009B002B02DA01235A4200E0012203AB1A6003AB01225A6003AB02AA9A6008 +:40EF800003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A019B9A4205D1029B0593039B0293059B0193039A029B9A420BD0029A039B1100A3 +:40EFC0001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0019B9A68099B47498C4663449B00D3181B68002B06D1099B013B0993099B002BBF +:40F00000EED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B680893039B9B6807930023069300230A932AE0089B1B680493079B1A68069BD218AF +:40F04000079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A60079B1A68049B9A429B415B42DBB21A00069B9B1806930A9B01330A93089B04336F +:40F080000893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C039B11001800FEF7C3FF03000B930B9B002B21D1039B9A680A9B9B00D318079345 +:40F0C000079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B01330A93079B04330793069B002BD1D104E0C04602E0C04600E0C0460B9B18000DB07B +:40F1000000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60019B1A68029B1B689A4249 +:40F140009B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B01330793029B04330293019B04330193079A039B9A42D1D312E0019B1A68069B9A427F +:40F180009B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069B002BE9D1C04608B07047000000B58BB0039002910192019A029B11001800FFF755 +:40F1C000AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05AB11001800FEF7C7FF03000993099B002B35D105AB0193039A029B9A420AD0029A54 +:40F20000039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019B5B6808930DE0019B9A68089B11498C4663449B00D3181B68002B06D1089B013B19 +:40F240000893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C04600E0C04605AB1800FEF7BEFE099B18000BB000BDFFFFFF3F00B587B00390029174 +:40F280000192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF73FFD031E0EDB019A0299039B1800FFF77DFF03000593059B002B22D1039B049A75 +:40F2C0001A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF752FE03000593059B002B07D1039B049A1A608A +:40F3000004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DD019A029B11001800FFF7F1FC031E26 +:40F340000EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF720FF03000593059B002B15D1049B5A42039B1A6013E0EF +:40F38000019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B589B0039002910192019BDA179B18AA +:40F3C00053400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF745FF0300180009B000BD00B589B0039002910192FC +:40F40000019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF770FF0300180009B000BD70B5064C80 +:40F44000A54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131D96931368009300230193949B029300230393029A039B009801992CF09BFC0300DB +:40F480000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959BAF +:40F4C0001A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368069300230793949B089300230993089A099B0698079928 +:40F500002CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19BC0 +:40F540009B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313680C9300230D93949B0E9300230F930E9A54 +:40F580000F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B00109300231193109BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A0936B +:40F5C000959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368129300231393949B149341 +:40F6000000231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00169300231793169BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00B2 +:40F64000A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313681893002315 +:40F680001993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BA193A39B1B001C9300231D931C9BA093A19AA59BD318A193A19AA59B9A429B4101 +:40F6C0005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96939A +:40F7000013681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00A293A394A29BA193A39B1B00229300232393229BA093A19AA59BD318A193A19A30 +:40F74000A59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360AA +:40F78000969A131D96931368249300232593949B269300232793269A279B249825992CF009FB03000C00A293A394A29BA193A39B1B00289300232993289BA093A19AA59B82 +:40F7C000D318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131DA7 +:40F800009593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9B2A982B992CF0C6FA03000C00A293A394A29BA193A39B1B002E9300232F932E9BDA +:40F84000A093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09B0F +:40F88000A593959A131D9593A19B1360969A131D96931368309300233193949B329300233393329A339B309831992CF083FA03000C00A293A394A29BA193A39B1B0034937E +:40F8C00000233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09BF6 +:40F900009B18A093A09BA593959A131D9593A19B1360969A131D96931368369300233793949B389300233993389A399B369837992CF040FA03000C00A293A394A29BA1930F +:40F94000A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B4225 +:40F98000DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313683C9300233D93949B3E9300233F933E9A3F9B3C983D992CF0FDF903000C00A29369 +:40F9C000A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B39 +:40FA000093429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368429300234393949B449300234593449A459B429843992CF0BAF9F1 +:40FA400003000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A19350 +:40FA8000959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368489300234993949B4A9300234B934A9A4B9B489804 +:40FAC00049992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A6873 +:40FB0000A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313684E9300234F93949B509300235193F2 +:40FB4000509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B00529300235393529BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B1846 +:40FB8000A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368549300235593949B6B +:40FBC000569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39B1B00589300235993589BA093A19AA59BD318A193A19AA59B9A429B415B42DBB2F2 +:40FC00001A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313685A9316 +:40FC400000235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A394A29BA193A39B1D0000231E002B00A093A19AA59BD318A193A19AA59B9A429B41F9 +:40FC80005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360979B103B9793B6 +:40FCC000979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B609300236193609A619B5E985F992CF063F803000C009E939F949E9B9D939F9B1B00629344 +:40FD000000236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B7D +:40FD40009B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593949B669300236793669A679B649865992CF020F803000C009E939F949E9B9D9399 +:40FD80009F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B427F +:40FDC000DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313686A9300236B93949B6C9300236D936C9A6D9B6A986B992BF0DDFF03000C009E93E4 +:40FE00009F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B9E +:40FE400093429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368709300237193949B729300237393729A739B709871992BF09AFF68 +:40FE800003000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93B6 +:40FEC000959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368769300237793949B789300237993789A799B769892 +:40FF000077992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A68BD +:40FF40009D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313687C9300237D93949B7E9300237F9312 +:40FF80007E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B00809300238193809B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B1803 +:40FFC0009C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368829300238393949BEB +:020000041001E9 +:40000000849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B1B00869300238793869B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB24E +:400040001A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313688893C8 +:4000800000238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949E9B9D939F9B1B008C9300238D938C9B9C939D9AA59BD3189D939D9AA59B9A4273 +:4000C0009B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360979B083BEC +:400100009793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B909300239193909A919B8E988F992BF043FE03000C009A939B949A9B99939B9B1B0092931A +:4001400000239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B9B189893959B1B68999AD3189993959B1B68999A9A429B415B42DBB21A00989BC2 +:400180009B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49B0133A493959B1A68A59BD218959B1A60959B1A68A59B9A429B415B42DBB2A59303 +:4001C000959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB003900291019208AB1800FDF7EDFE05AB1800FDF7E9FE039A029B9A420DD1029A08AB11006E +:400200001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A05AB11001800FDF7A6FF03000D930D9B002B00D06EE005AB0193029B5B680C9338 +:400240000DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B002BEED100E0C046019B5B680B930DE0019B9A680B9B30498C4663449B00D318A4 +:400280001B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11001800FDF7C5FE03000D930D9B002B33D1039B00211800FEF7DFF803000D930D9BA7 +:4002C000002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9B1548844663449B00D3181B680C982200FFF7A4F80B9B013B0B930B9B002BE2D12A +:40030000029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB1800FDF761FE08AB1800FDF75DFE0D9B18000EB010BDC046FFFFFF3F00B589B076 +:4003400003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299039B1800FFF738FF0300180009B000BDF0B58BB00590049103920293039B002BA4 +:4003800003D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059B1E0000231F003300079300230693049B1C0000231D00069B23430693079B2B4305 +:4003C0000793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B002B04D001235B42002408930994029B002B06D0069A089B03994B43D21A029B86 +:400400001A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF797FD031E02D10C235B42D1E210AB1800FDF7C8FD0DAB1800FDF7C4FD0AAB180018 +:40044000FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC031E1EDA039B002B0AD0039B00211800FEF702F803001793179B002B00D05DE219 +:40048000029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E2002396E2019A10AB11001800FDF764FE03001793179B002B00D044E2009A0DAB1100F5 +:4004C0001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60019B5B689A1C0AAB11001800FDF7A0FD03001793179B002B00D027E20AAB0021A3 +:400500001800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD03001793179B002B00D015E204AB03211800FDF77FFD03001793179B002B00D00CE20DAB89 +:400540001800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB11001800FEF79CFA03001793179B002B00D0F3E1159A0DAB11001800FEF790FADE +:4005800003001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B1393149A139BD31A5A010DAB11001800FEF777FA03001793179B002B00D0D0E115E07D +:4005C0000AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE03001793179B002B00D0BBE10DAA10AB11001800FEF714FC031EE1DA149A139BB1 +:40060000D31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE110AB9A68169B9B00D3181A680DAB9968139B9B00CB181B689A420DD30AAB9A68FF +:400640001699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139BCB1ACD498C4663449B00D41810AB9A68169B9B00D318186810AB9A68169BC649E8 +:400680008C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE030023600AAB9A681699139BCB1ABB498C4663449B00D3181A6801321A600AAB9A681699B2 +:4006C000139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE03001793179B002B00D040E107AB9B68139A002A09D00DAA9168139AA74884466244EE +:4007000092008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A600AAB9A681699139BCB1A9B498C4663449B00D3181A6807A907AB1800FFF7FEFD55 +:4007400003001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D008E104AB9B68169A012A09D910AA9168169A8A488446624492008A18126800E0DD +:4007800000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A18126800E000221A6004AB9B68083310AA9168169A92008A1812681A6004AA07AB64 +:4007C00011001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B00D3181A680DA907AB1800FFF7A7FD03001793179B002B00D0BEE0169A139BD31ACB +:40080000674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA10A910AB1800FEF775FD03001793179B002B00D0A4E010AB00211800FEF788FB45 +:40084000031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139BD31A4F4A944663445A0107AB11001800FEF716F903001793179B002B00D083E009 +:4008800007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139BCB1A3D498C4663449B00D3181A68013A1A60169B013B1693169A139B9A4200D903 +:4008C000AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B1A68009B1B685A43039B1A60029B002B59D0159A10AB11001800FEF775F9030070 +:400900001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC03001793179B002B3ED1029B00211800FEF710FB031E38D1029B01221A6034E0C04632E02B +:40094000C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E007 +:40098000C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FFFFFFF07C04610AB1800FDF71DFB0DAB1800FDF719FB0AAB1800FDF715FB07ABD6 +:4009C0001800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B0039002910192019B00211800FEF7B2FA031E02DA0A235B4238E0019B029A03990020FFF7D3 +:400A000005FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B002B1DD1039B00211800FEF791FA031EEDDB0AE0019A0399039B1800FEF76AFC99 +:400A400003000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E0C04600E0C046059B180007B000BD86B001900091009B9B681B680393039B0593EE +:400A8000039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A059B53430593049B5B080493049B072BF1D8059B5A42019B1A60C04606B07047FC +:400AC00000B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B02D104235B426EE00C9B98680C9B5B689B001A00002127F009F90C9B9B6808930D +:400B0000019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099B9B00D3181B680593089B1A68029B9B681B6805994B43D318009A53430493029BEC +:400B40009968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D0892059A1A60079B01339B00089AD31800221A60099B01330993099A079B9A42CCD3F1 +:400B8000039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031E08DB019B9968039B9A68079B1800FEF7ABFA07E0039B99680C9B9A68079B1800A3 +:400BC000FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0006AB1A6006AB1B681A0006AB5A6006AB09AA9A60039C049A06A90598029B0093E5 +:400C00002300FFF75DFF030018000AB010BD000010B5B24CA54405900491039202930123AF4A6A441360029B00211800FEF790F9031E05DD029B9B681B680122134003D19B +:400C400004235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029AA04B6B4411001800FFF701FFC623DB006B441800FDF7A6F99B4B6B441800FDF713 +:400C8000A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC0300CC22D2006A441360CC23DB006B441B688E4A934219D8CC23DB006B441B6855 +:400CC000EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0012304E0042302E0052300E00623804A6A4413607E4B6B441B68062B03D9062318 +:400D00007B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B11001800FDF785F90300724A6A441360714B6B441B68002B01D000F0E1FBC923DB00CB +:400D40006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002B01D000F0CEFBC923DB006B441B685A005D4B6B4411001800FDF75AF903005D4A97 +:400D80006A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A6A441360544B6B441B68002B19D0049A06AB11001800FDF7DEF903004D4A6A4455 +:400DC00013604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB0493CF23DB006B441B68002B06D0CF23DB006B441B689B68002B4AD1C623DB00C4 +:400E00006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B5B689A01C623DB006B4411001800FDF737FE03002F4A6A4413602E4B6B441B68EA +:400E4000002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A441360244B6B441B68002B00D053E3CF23DB006B441B68002B16D0C621C900694427 +:400E8000CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B440C22180026F0A0FE029A049B11001800FDF7B6FF031E23DB029A049909AB0C3381 +:400EC0001800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF4C0600003C060000240600009F020000640600006C06000044060000A8F9FFFF71 +:400F0000049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0FBE2E24B6B441C68029AC621C900694409AB0C331800DE4B6B4400932300FFF762 +:400F4000BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11001800FDF708F90300CF4A6A441360CE4B6B441B68002B00D0D3E2CC4B6B441A68B5 +:400F8000CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E2C44B6B441B68012B00D800E1C14B6B441B68013BC04A6A4412689A401300C92262 +:400FC000D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013319001000FDF724F80300AF4A6A441360AD4B6B441B68002B00D096E209A9C92391 +:40100000DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A6A441360A04B6B441B68002B00D07EE20023CC22D2006A44136030E009A9C92317 +:40104000DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B189B00C918914B6B441C68029A904B6B4400932300FFF724FD03008B4A6A44136086 +:40108000894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B6B441B685A1ECC23DB006B441B689A42C4D8C923DB006B441B680133CC22D2000F +:4010C0006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013319001000FCF7A4FF03006F4A6A4413606D4B6B441B68002B00D01CE209A9CC238A +:40110000DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B009B189B00CB181900FDF725F803005E4A6A4413605C4B6B441B68002B00D0FCE19B +:4011400009A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C331900534B6B4400932300FFF7A9FC03004D4A6A4413604C4B6B441B68002B00D08E +:40118000DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B689A40CC23DB006B441B689A428BD8039B5B68424A6A4413600023CB22D2006A4426 +:4011C000136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23DB006B441B68002B11D1344B6B441B68002B00D1F5E0314B6B441B68013B2F4ABC +:401200006A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A441360039B9A68254B6B441B689B00D3181A68CB23DB006B441B68DA401300012213406B +:40124000C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D1BBE0C823DB006B441B68002B2AD1CA23DB006B441B68012B24D10C4B6B441C6843 +:40128000029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B68002B00D19BE055E16C0600003C06000024060000640600004C0600005C060000F9 +:4012C000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B441A68C94B6B441B68D31AC822D2006A4412689A401300CD22D2006A441268134350 +:40130000CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2006A4413601EE0BA4B6B441C68029A05990598B84B6B4400932300FFF7C1FB030032 +:40134000B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A68A74B6B441B689A42D7D309A9CD23DB006B441A68E6 +:4013800013005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FB03009D4A6A4413609B4B6B441B68002B00D0C8E0CA23DB006B441B68013BCA2280 +:4013C000D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046FDE6C0460023CC22D2006A4413604DE0874B6B441C68029A05990598854B6B448A +:4014000000932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB006B441B685B00CD22D2006A4413607B4B6B441A68754B6B441B689A401300CD224A +:40144000D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B4400932300FFF72DFB03006B4A6A4413606A4B6B441B68002B00D069E0CC23DB006B444B +:401480001B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4B6B441A685B4B6B4402990598FFF78EFB0300594A6A441360574B6B441B68002BBF +:4014C00047D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D0059B012252421A60059A0299059B1800FDF7C2FE0300484A6A4413602AE0C04647 +:4015000028E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C046BB +:4015400008E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A4412689A401300CC22D2006A44136015E009A9CC23DB006B441A6813005B009B18C1 +:401580009B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B441A681A4B6B441B689A40CC23DB006B441B689A42DCD809AB0C331800FCF714FDBE +:4015C000144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF23DB006B441B689B68002B05D1C623DB006B441800FCF7F8FC074B6B441B681800F1 +:40160000CE23DB009D4410BD54060000640600003C060000240600006C0600004C0600004406000000B591B00390029101920AAB1800FCF7C7FC07AB1800FCF7C3FC04AB95 +:401640001800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A04AB11001800FCF786FD03000F930F9B002B00D09FE007AB1800FCF7A8FF0300BF +:401680000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001800FDF7A1FA03000F930F9B002B00D083E00E9A04AB11001800FDF795FA03007E +:4016C0000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF776FF020007AB11001800FDF77DFA03000F930F9B002B64D104AB1800FCF767FF28 +:40170000020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF77FFB031E15DB04AA07A907AB1800FDF73DFD03000F930F9B002B46D107AB01210E +:401740001800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD03000F930F9B002B32D104AB01211800FDF73BFA03000F930F9B002B2AD107AB00217D +:401780001800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD104AA039B11001800FCF7E5FC03000F9312E0C04610E0C0460EE0C0460CE0C0468B +:4017C0000AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FC07AB1800FCF700FC04AB1800FCF7FCFB0F9B180011B000BD80B51B4FBD440390CA +:40180000029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B98470300FFAA18321360FFAB18331B68002B0AD1029A05A9039B1800FDF78FF8030095 +:40184000FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B6818008323DB009D4480BDE8FBFFFF00B5A1B0039002910192019B01211800FDF768FB8A +:40188000031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF791FB10AB1800FCF78DFB1CAB1800FCF789FB0DAB1800FCF785FB0AAB1800FCF7BA +:4018C00081FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE03001F931F9B002B00D086E11CAB01211800FDF72EFB031E03D00E235B421F93AEE16B +:40190000019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800FCF729FC03001F931F9B002B00D067E1019A0DAB11001800FCF71DFC03001F93D1 +:401940001F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E113AB01211800FCF787FD03001F931F9B002B00D04AE110AB00211800FCF77CFDF9 +:4019800003001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D038E104AB01211800FCF766FD03001F931F9B002B00D02FE144E016AB01211800F4 +:4019C000FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B681B680122134017D00DAA13A913AB1800FDF742FC03001F931F9B002B00D00FE175 +:401A000019AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7E3F803001F931F9B002B00D0FCE010AB01211800FDF7D8F803001F931F9B002B33 +:401A400000D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F931F9B002B00D0E3E007AB9B681B680122134005D104AB9B681B680122134017D07A +:401A80000DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800FDF738FC03001F931F9B002B00D0C3E007AB01211800FDF797F803001F931F9BAF +:401AC000002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B681B6801221340B4D00AAA16AB11001800FDF796F9031E23DB0AAA16A916AB180034 +:401B0000FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F931F9B002B00D08FE004AA10A910AB1800FDF7F0FB03001F931F9B002B24D08EE0AE +:401B400016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800FDF7D8FB03001F931F9B002B00D06FE010AA04A904AB1800FDF7CCFB03001F933A +:401B80001F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907AB1800FDF769FB03001F931F9B002B53D107AB00211800FDF7CBF9031EEDDB0AE0AD +:401BC000019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF71FF9031EECDA07AA039B11001800FCF7C2FA03001F9332E0C04630E0C0462EE00F +:401C0000C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE074 +:401C4000C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB1800FCF7C1F916AB1800FCF7BDF913AB1800FCF7B9F910AB1800FCF7B5F91CAB29 +:401C80001800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB1800FCF7A1F91F9B180021B000BD00B583B00190019B44220021180026F026F8AD +:401CC000C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B780122180001F07AF903000593059B002B02D10D235B4225E0059B5B69102B02D018 +:401D00000D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049B002B01D0049B0DE00398009A0199012301F0F0F903000493049B002B01D0049B10 +:401D400000E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0C5FEC04603B000BD00B59DB00590049103920293249B022B06D0249B102B03D8FE +:401D8000249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E2209AFF231B029A4202D90D235B42ABE21E9BDAB25F236B440F218A1A1A700FAB26 +:401DC00000221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A700FAB1A78249B023B5B08DBB2DB00DBB21343DAB20FAB1A700FAB1B785AB25F23ED +:401E00006B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F0E3FE6F236B4400221A70039B1A9312E06F236B441B780F22D31A1A9AD1B20FAAFC +:401E4000D1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B4412781B789A42E4D31A9B002B02D00D235B424AE20BAB10220021180025F047FF6F230C +:401E80006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B76 +:401EC000E2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169B12E2209B002B00D1A6E0209B1A931F9B19930FAB10220021180025F007FF209BA9 +:401F00001B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A1999180025F060FE1A9A159BD31A1A93199A159BD31819936F236B4400221A7081 +:401F400017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA03 +:401F80000BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B00D9102315930FAB10220021180025F0ADFE159A19990FAB180025F015FE6F23F5 +:401FC0006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B35 +:40200000E2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B72E11A9A159BD31A1A93199A159BD31819931A9B002BB1D15F236B441B78013B54 +:40204000DAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B441B781A00002125F051FE07AB0122DA73039B1A93219B1993229B1893EBE01A9BC5 +:40208000102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FAB180025F0A1FD6F236B4400221A7017E06F236B441B786F226A4412780BA9895CEA +:4020C0006F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0E0F803001693F0 +:40210000169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F803001693169B002B01D0169BEEE06F236B4400221A7019E06F236B441B78189AD3186F224E +:402140006A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A786F236B4401321A706F236B441A78149B9A42DFD3049B012B3DD10FAB102200218D +:40218000180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F23D3 +:4021C0006B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F06AF803001693169B002B01D0169B88E0189A149BD3181893199ACC +:40220000149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F22D31A07AAD25C0132D1B207AAD15407AAD35C002B00D00EE06F236B441A786F23ED +:402240006B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F236B4400221A700EE06F236B441B780F22D31A07AA0021D1546F236B441A786F2307 +:402280006B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB00931300102201F00AF803001693169B002B01D0169B28E06F236B4400221A7017E009 +:4022C0006F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D9249A0BA9239B99 +:40230000180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98139B0693129B0593119B0493109B03930F9B02930E9B0193089B00930B00002109 +:40234000FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B019331 +:402380000C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A910992089309990A9A0B981B9B06930DAB0593199B0493189B0393179B0293169B0193089B009323 +:4023C0000B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400221A7017E04F236B441B781A9AD3181A784F236B441B780DA9CB5C5340DBB21A00A6 +:40240000129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3129B002B08D00A9A199B110018000CF05DFB0F235B4200E00023180015B000BD79 +:4024400010B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF78AFF0300EB +:4024800018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A1830 +:4024C0001168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681021CA411A60009B9B00039AD318009A920003998A181168049A92000398B6 +:40250000821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681421CA411A608B +:40254000029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A181168029A92000398821812684A401A6034 +:40258000049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD318009A920003998A181168049A92000398821812688A181A60019B9B00039AD31858 +:4025C000019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681921CA411A60C04604B0704700B585B0039003980C23FD +:402600000093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300930A2306220221FFF72DFF03980F2300930B2307220321FFF725FF03980F23AB +:4026400000930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D230093082307220221FFF70DFF03980E230093092304220321FFF705FFC04605B000 +:4026800000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB1800FFF7A9FF139B01331393139B092BF5D902AB1A68019B1B68D21802AB1A6002AB72 +:4026C0005A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002ABDA68019B0C331B68D21802ABDA6002AB1A69019B10331B68D21802AB1A6102AB68 +:402700005A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABDA69019B1C331B68D21802ABDA6102AB1A6A019B20331B68D21802AB1A6202ABDF +:402740005A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202ABDA6A019B2C331B68D21802ABDA6202AB1A6B019B30331B68D21802AB1A6302AB57 +:402780005A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABDA6B019B3C331B68D21802ABDA63002313932FE0139B9B001293009A129BD3185E +:4027C00002AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B21A70129B0233009AD31802AA139989008A58120CD2B21A70129B0333009AD318F7 +:4028000002AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB402118000CF064F9C04615B000BD00B583B00190019B002B0ED0019B402118000CF056F90D +:40284000019B4033402118000CF050F9019B802240219950C04603B000BD00B583B00190019B002B04D0019B842118000CF03EF9C04603B000BD000082B001900091019B87 +:40288000002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A9A60019B594ADA60009B1B781A00009B01331B781B021A43009B02331B781B04D0 +:4028C0001A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B021A43009B06331B781B041A43009B07331B781B061A43019B5A61009B08331B789A +:402900001A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43019B9A61009B0C331B781A00009B0D331B781B021A43009B0E331B781B041A43D7 +:40294000009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43009B12331B781B041A43009B13331B781B061A43019B1A62009B14331B781A0093 +:40298000009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019B5A62009B18331B781A00009B19331B781B021A43009B1A331B781B041A43009BCD +:4029C0001B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009B1E331B781B041A43009B1F331B781B061A43019BDA620023180002B07047C046D6 +:402A0000657870616E642033322D62797465206B00B585B0039002910192039B002B02D0029B002B02D151235B424BE0039B019A1A63029B1B781A00029B01331B781B028F +:402A40001A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B061A43A9 +:402A8000039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B061A43039BDA63039B4033402118000CF019F8039B8022402128 +:402AC00099500023180005B000BD10B586B0039002910192009300230593039B002B02D151235B423BE1029B002B27D0019B002B02D0009B002B21D151235B422FE1009AAA +:402B0000059BD3180199059A8A181178039A80201258039840248218121912784A40D2B21A70039B80229B585A1C039B80215A50059B01330593029B013B0293029B002BE5 +:402B400000D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039B1B6B5A1C039B1A6300230493B7E0059A049BD318009AD3180599049A8A18019949 +:402B80008A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AD3180599049A8A18013201998A181178049A0132039840248218121912784A4005 +:402BC000D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049A0232039840248218121912784A40D2B21A70059A049BD3180333009AD3180599D3 +:402C0000049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70059A049BD3180433009AD3180599049A8A18043201998A181178049A0432039874 +:402C400040248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18053201998A181178049A0532039840248218121912784A40D2B21A70059A049B50 +:402C8000D3180633009AD3180599049A8A18063201998A181178049A0632039840248218121912784A40D2B21A70059A049BD3180733009AD3180599049A8A18073201993B +:402CC0008A181178049A0732039840248218121912784A40D2B21A70049B08330493049B3F2B00D843E7059B40330593029B403B0293029B3F2B00D92AE7029B002B2DD062 +:402D0000039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A049BD318009AD3180599049A8A1801998A18117803984024049A8218121912786E +:402D40004A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A500023180006B010BD10B588B00190019BD0335C681B681A000F2313400793079B002B01D1F4 +:402D8000002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB19000CF086F90300180008B010BD10B582B00190019B002B1ED0019B1800FFF735FDF1 +:402DC000019B843318000CF057F9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019BE42200219954C04602B010BD10B582B0F2 +:402E00000190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019B49 +:402E4000E42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D157235B4208E0019B009A11001800FFF703FD03000393039B180005B000BD70B541 +:402E800086B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002B02D0009B002B02D157235B426AE0039BE0229B58012B07D0039BE0229B58022BFE +:402EC00002D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF741FF03000593059B002B01D0059B49E0039BD8335C681B68029A150000221600A0 +:402F00005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF7D4FD03000593059B002B01D0059B29E0039B8433029A009918000CF0B9F8030084 +:402F40000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059B002B01D0059B0DE00398009B019A0299FFF7ABFD03000593059B002B01D0059B80 +:402F800000E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0019B1B685B69180002B0704782B00190019B002B03D0019B1B68002B01D1002395 +:402FC00009E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B0009111006B460733021C1A706B4606330A1C1A70144B03931CE0039B5B689B691B78F6 +:403000006A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A46063212789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B0B5 +:403040007047C046E027041000B583B00190019B44220021180024F059FEC04603B000BD00B583B00190019B002B20D0019B1B6C002B0AD0019B1B6C242118000BF036FDDD +:40308000019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B18009047019B442118000BF020FD00E0C04603B000BD00B583B001900091009B002B9F +:4030C00002D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB6998470200019BDA63019BDB6B002B01D1084B08E0019B009A1A60019B0021180000F07C +:4031000015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A006B4603331A70039B002B07D0039B1B68002B03D0039BDB6B002B01D1304B5CE080 +:403140006B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B681B690222134008D1039B1B685B681A00019B9A4201D0224B3FE0039B019A5A60E5 +:40318000039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D0039B1B685B78042B04D0039B1B685B78052B0DD1039B1B689B695C69039BD86B26 +:4031C000039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B689B699C69039BD86B039B5B681A00029B1900A047030000E0014B180004B010BD45 +:40320000009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0029B002B04D1019B002B01D0214B3EE0029B002B05D1019B002B02D1039B002245 +:403240009A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B1B68DB680593059A019B9A4201D9114B1DE0039B1B681B78482B0AD1039BDB6BF4 +:40328000029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299180024F0A1FC039B059A9A630023180007B000BD009FFFFF809FFFFF70B58CB0AE +:4032C000079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D1C84B8BE1109B00221A60079B1800FFF74CFE03000A93079B1B685B78012B1DD1D3 +:40330000059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B08215956049B069AA04703000993099B002B01D0099B61E100235FE1079B1B6857 +:403340005B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B1B681B78492B0BD1109B059A1A60079BD86B049B069A0599FFF781FD03003DE1A8 +:403380000A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A99180028F09CFB0B1E01D0964B27E1079B1B685B78022B00D0DDE000230B93079B1B7A6E +:4033C0005BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7A5BB2002B0AD1079BDB68002B06D1079B5B6A0A9AD21A059B9A420BD8079B1B7AB6 +:403400005BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433059A0699180024F0DFFB079B5A6A059BD218079B5A620023E0E0079B5B6A002B97 +:4034400040D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F0C3FB079B1B689B699C68079BD86B079B08215956079B28331E00079B14330A9DD4 +:40348000049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9BD218109B1A60049A0A9BD3180493079B00225A62069A0B9BD3180693059A0B9B5C +:4034C000D31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B000B930B9B002B0AD1079B1B7A5BB2002B05D1079BDB68002B01D00A9B0B93079B03 +:4035000014331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B5A62059A0B9BD31A0593059B002B1FD0079B1B689B699C68079BD86B079B082184 +:403540005956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0099B4BE0109B1A68059BD218109B1A60002343E0079B1B685B78052B22D1079B7D +:403580001B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A0292069A0192009333002A00A04703000993099B002B01D0099B20E0109B059A1A60C0 +:4035C00000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A0599A04703000993099B002B01D0099B05E0109B059A1A60002300E0054B18000CB093 +:4036000070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019BD31A049317236B4400221A7010E017236B441A78019BD318039AD318049AD2B28C +:403640001A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B07047000088B00390029101921B236B4400221A70039B002B02D0019B002B01D1BD +:40368000344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B1A601A236B441B78029A9A429B415B42DBB25AB21B236B441B785BB213435AB2D2 +:4036C0001B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B78029AD31A0593002307931EE0039A079BD3181A788E +:403700001A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B236B441B785BB213435AB21B236B441A70079B01330793079A029B9A42DCD31B23FF +:403740006B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039002910192039B002B02D0019B002B01D1044B03E0019B029A1A600023180004B006 +:403780007047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D0039B002B01D15E4BB7E0039B00221A60059B1B685B78032B18D0059B1B685B78BB +:4037C000042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B04D0059B1B685B78072B01D1002394E0059B1B681B78482B04D0059B1B681B7871 +:40380000492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE000237BE0059B1B685B78022B00D074E000230793059B1B7A5BB2012B1CD1059BDB68B2 +:40384000002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B1800FFF7A3FB03001900059B5B6A1A002800A04714E0059B1800FFF786FB0200B8 +:40388000059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE0059B1B689B699C68059BDD6B059B08269E57059B1800FFF768FB059B28331900E2 +:4038C000059B1433049A019200930B00020031002800A04703000793079B002B01D0079B1BE0059B1B7A5BB2002B0CD1059B1C69059B1800FFF749FB0100039A049B180042 +:40390000A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD009FFFFF809DFFFF809FFFFF82B001900A006B4603331A70019B002B04D0019B1B +:403940001B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4ADA60019B094A1A6108E0019B0022DA60019B074A1A6101E0064B00E0002318000F +:4039800002B07047009FFFFF15360110653601105D370110809FFFFF00B583B0C8235B001900012023F062FA03000193019B002B03D0019B180007F0F8F9019B180003B02C +:4039C00000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B583B04421012023F041FA03000193019B002B03D0019B1800FEF759F9019B1800C2 +:403A000003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD00B585B00390019200930B236B440A1C1A700B236B4400215956009B019A0398CA +:403A4000F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B4400215956029C039A0598099B0193089B00932300F9F7F2FB0300180006B0C1 +:403A800010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B00932300F9F755FC0300180008B010BD00B585B0039002910192019A0299039B3A +:403AC0001800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B1800F8F7F4FA0300180005B000BD00B583B08C235B001900012023F0B8F903000193E7 +:403B0000019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190019B1800F8F7C0FA019B180023F022FDC04603B000BD00B585B003900291019291 +:403B4000019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B029A03980221FEF7AEF80300180005B000BD000000B585B0039002910192019A54 +:403B800080235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E00023180005B000BD009FFFFF00B587B00390029101920093009B019A029903984B +:403BC000FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF00B583B08421012023F040F903000193019B002B01D1002304E0019B1800FEF7E6 +:403C000014FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFCC04603B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE005 +:403C4000029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFF00B583B0E821012023F000F903000193019B002B01D1002304E0019B1800FFF78A +:403C800095F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFCC04603B000BD000088B003900291019217236B4487221A7016236B441B221A7027 +:403CC0001E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B06D11F236B4416226A4412781A7001E0224B3FE0019B013B06931BE0069B039AFB +:403D0000D318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B029AD3181A781E236B44D2091A70069B013B0693069B002BE0DA029B1B785BB2B9 +:403D4000DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4415206844127800780240D2B24A40D2B21A700023180008B07047C046009FFFFF60 +:403D800010B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9A08A9059807AB00932300FFF787FA03000D930D9B002B13D10C9A08A9049B18002C +:403DC000FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E0C04600E0C04608AB102118000AF07EFE0D9B18000EB010BD86B003900291019299 +:403E000000930023059310E0039A059BD3180299059A8A1811780198059A821812784A40D2B21A70059B01330593059A009B9A42EAD3C04606B0704786B003900291019222 +:403E40000093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A700EE0059A009B9A4205D1039A059BD31880221A7004E0039A059BD31800221A7009 +:403E8000059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039B002B06D0039B1B68002B02D0029B002B01D11C4B32E0019A029903980123FFF7FA +:403EC00029F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B441B78022B03DB042B03DD242B01D00D4B14E0C0462421012022F0B8FF03000593C7 +:403F0000059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B000BDC046009FFFFF809EFFFF10B58EB005900491039200230D93059B002B0AD08B +:403F4000059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93059B1B685B690A93059B1B6C09930B9B1B6A002B3AD00B9B1B6A0A9AD21A039B91 +:403F80009A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B103319000A9B099A0998FFF725FF099C0A9A0999059807AB00932300FFF77EF91A +:403FC00003000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A039AD31803930B9B00221A62039A0A9BD318013B0A99180027F0EAFC030008936D +:4040000001230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB00932300FFF74CF903000D930D9B002B24D1039A0A9BD31A0393049A0A9BD31804930C9B8B +:4040400001330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499180023F0C1FD0B9B1A6A039BD2180B9B1A6202E0C04600E0C0460D9B18000EB0AC +:4040800010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039B1B6C002B02D0029B002B01D1374B69E0039B1B6C1593039B1B685B691493159B0A +:4040C00013930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF74FFE159B10331293159B1A6A149B9A420DD2159B1B6A129A149905A8FFF79CFEB0 +:40410000149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A91398FFF769FE139C149A1399039804AB00932300FFF7C2F803001193119B002B09 +:4041400006D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB102118000AF0C3FC159B00221A62159B1033102118000AF0BAFC139B102118000AF076 +:40418000B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B0021180023F0B4FDC04603B000BD000000B58FB0039002910192009305AB20220021180044 +:4041C00023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B000199D150039B119A9A61039B114ADA61039B2033180080235A0005AB1900F7F766FF34 +:4042000003000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9B002B01D00D9B00E0002318000FB000BD1027000010B586B00590049103920293D8 +:40424000029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B583B00190019B002B0CD0019B20331800F7F71AFFA0235A00019B110018000AF045 +:4042800035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC0235B009A4202D938235B4212E1D0235A0063AB0021180023F029FD05AB1800F7F722 +:4042C000E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120CD2B21A70D19B5A1CD192019A120AD2B21A70D19B5A1CD192019AD2B21A70D19BA7 +:404300000333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD31880221A70019B1933CC930023CF930BE0CF9BD9B26A4BD2AAD218CF9BD3180A1C32 +:404340001A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093D09B002B00D08AE00023CE9355E063ABD1934BAB10220021180023F0C7FCCC9BD2 +:40438000CD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B785340D9B2504BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B0F2BE6DDD19B1033A1 +:4043C000D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093D09B002B4DD1CD9B002BCBD1CE9B57AAD3184BA91022180023F0F6FB3A4BD2AA47 +:4044000094466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD80235A0057A905AB1800F7F74FFE0300D093D09B002B26D157AB2033CB93039B91 +:40444000D1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB99D19B1022180023F0BFFBD19B1033D193CE9B1033CE93CE9B2F2BE5DD06E0C04693 +:4044800004E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF025FB57AB302118000AF020FB4FAB202118000AF01BFB4BAB102118000AF016FBBB +:4044C000D09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFF4FDFFFFE4FDFFFF44FEFFFF00B593B00190009102AB119300230E9302AB302229 +:404500000021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2019AD154019AD35C002B06D1109B013B1093109B002BEDDC00E0C046019B2033AD +:404540001800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B103311930F9B10330F930F9B2F2BD0DD0023109311E002AA109BD3181A78109B0099CB18D0 +:404580001B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033180080235A0002AB1900F7F78FFD03000E930E9B002B01D00E9B07E0019802ABA7 +:4045C00020331022190023F00FFB0023180013B000BD10B5E6B003900291019200236593039B9A69C0235B009A4207D8039B9B69C0225200D21A019B9A4202D238235B4276 +:404600004DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058039B9A6904AB1900A047031E02D034235B4234E0039B9B69659AD3186593029B6C +:40464000002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD3186593659A04A904AB1800FFF70FFE03006493649B002B01D0649B10E004AA039BB0 +:4046800011001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180066B010BD00B59BB0039002910192009300231793039B1693029B1993019A802392 +:4046C000DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB30220021180023F012FB169B1A69169BDB699A4203DC169B5B69002B0ED01C9A0099E3 +:40470000169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D01C9A009909AB1800FFF7B0FD03001793179B002B01D0179B5BE009AA169B1100AB +:404740001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AD25C0132D1B2169AD154169AD35C002B06D1189B013B1893189B002BEDDC00E0C0 +:40478000C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E0019B102B00D910231593159A05A9199B180023F019FA199A159BD3181993019A9A +:4047C000159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002B01D0179B05E0169B1B695A1C169B1A61002318001BB000BD00B589B0059004917E +:404800000392059B0793039A04990798002300930023FFF747FF03000693069B180009B000BD000010B592B0079006910592049308AB180000F03DFE059C049A08A9079808 +:40484000169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB180000F07AFF031E02D00A4B119309E008AA069B11001800F9F77EFC0300119300E086 +:40488000C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7B3FF03005F +:4048C000180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019B8833180000F0E5FD019BAC33180000F0E0FD019BD0331800F9F764FB019BDC22F7 +:4049000000219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF331800F9F74FFBC04603B000BD00B583B00190019B002B29D0019B180000F042FE01 +:40494000019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BD0331800F9F740FB019BE033180000F011FE019B0533FF33180000F00BFE019B26 +:404980002933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B4607331A70039B029A1100180000F09EFE03000593059B002B01D0059B35E06B46073394 +:4049C0001B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607331B78002B01D0124B1EE0039B88331A00029B88331900100000F047FE030005931D +:404A0000059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B01D0059B00E00023180007B000BDC04680B0FFFF10B588B005900491039202936C +:404A4000059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00059B7C331C000B9B01930A9B00932300FFF712FF03000793079B002B01D0079B9A +:404A800021E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B9B6D07210B40591E8B41DBB2D218049B1A60059BD0331800049B1A68039B190083 +:404AC000F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0733DB080693069A009B934200D913000593059A0199029B1800F9F72FFF0300D2 +:404B00000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B11001800FAF760F803000793079B002B16D1039B4C331A00029B11001800FAF757 +:404B40006FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E0C046079B180009B000BD000010B5A2B007900691059204931BAB20931CAB1F9372 +:404B80000FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E09DB079B4C331A00049B11001800FAF737F9031E01DB7F4BF6E012AB180000F0EF +:404BC00078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A60209B1A1D20921B680A2B02DD724B2193C9E01F9B00221A601F9B1A1D1F921B6807 +:404C00000A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D09AE0079B28331C001E9A12A9079800230293279B0193269B0093230003F006FCF8 +:404C400003002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193219B002B00D07BE01D9B00211800FAF76FF9031EC0D0259B249A0CA90798FFF75F +:404C800027FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B002B61D1049A1D99059B1800FBF794FA03002193219B002B58D1059A0CA90CAB5D +:404CC0001800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193219B002B46D109AA1E991E9B1800FBF773FA03002193219B002B3DD1079B4C335D +:404D00001A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF75BFA03002193219B002B29D1079B4C331A000599059B1800FBF74EFE0300219338 +:404D4000219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E01D +:404D8000C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB1800F9F721F9219B180022B010BDC04680B0FFFF80B3FFFF00B3FFFF10B58AB024 +:404DC0000990089107920693069C079A08990998002304930F9B03930E9B02930D9B01930C9B00932300FFF7C1FE030018000AB010BD000010B5CCB00990089107920693FD +:404E00002FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002B01D12C4B53E00BAB1800F9F7CBF82FAB180006F064FF499A0EA9069B1800F9F7B5 +:404E4000EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B29D10EAA499BD118499A0BAB1800F9F7D7FD03004B934B9B002B1ED1499B5B00F4 +:404E80000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B01934E9B00932300FFF760FE03004B9304E0C04602E0C04600E0C0462FAB18006C +:404EC00007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFFF1BF011010B588B00790069105920493049C059A06990798002303930CAB1B7802930B9B01930A9BD1 +:404F000000932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9311AB1D9308AB180000F0C3FA1AAB1800F9F748F817AB1800F9F744F814AB180001 +:404F4000F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F7F7FF031E1ADB079B4C331A00229B11001800F9F755FF031E10DA239B01211800F9 +:404F8000F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F938CE0059B069A1AA90798FFF791FD03001F931F9B002B00D071E0079B4C331A00EB +:404FC000239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF803001F931F9B002B5DD1079B4C331A001E991E9B1800FBF7EFFC03001F931F9BF8 +:40500000002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A001D991D9B1800FBF7D7FC03001F931F9B002B3ED1079B28331C001E9A08A9079804 +:4050400000230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180000F07AFB031E02D0214B1F9326E0079B4C331A0008A908AB1800FBF7ADFC0300C5 +:405080001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800DD +:4050C00000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB1800F8F782FF1F9B180020B010BD80B0FFFF00B2FFFF10B588B007900691059204937E +:40510000049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B010BD00B5ABB0039002910192009305AB8B33049300232993029A05A904AB1800C5 +:40514000F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904AB1800F8F767FC03002893289B002B01DA289B2FE0289B299AD3182993299A05A9DA +:4051800004AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A904AB30221800F8F7F9FB03002893289B002B01DA289B0DE0289B299AD31829939D +:4051C0000499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B00790059204931B236B440A1C1A700CAB1800F8F7E8FE09AB1800F8F7E4FE0798079BEA +:405200007C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7E9FD03000F930F9B002B08D1139B129A09A90CA8FFF775FF03000F9300E0C04672 +:405240000CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB009900792069323236B440A1C1A70069C079A23236B4419780998002304930F9B03930E9B52 +:4052800002930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B00590049103920293029C039A0499059800230193089B0093230000F005F80300180006B0F2 +:4052C00010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800F8F770FE08AB1800F8F76CFE0EAA10990FA83023F8F738F903001193119B002B0A +:4053000005D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E00BAA10990FAB1800F8F782F903001193119B002B0AD108AA10990FAB1800F8F767 +:4053400077F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00059A0699159B029308AB01930BAB00932300FFF7CDFD03001193119B002B06D1DB +:405380000F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FE119B180012B010BD80B0FFFF1AB0FFFF00B4FFFF00B585B001900091019B009A10 +:4053C0001100180000F091F903000393039B002B1BD1019B7C331A00009B7C3319001000F8F7C9FE03000393039B002B0DD1019B88331A00009B88331900100000F045F9D0 +:4054000003000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B00190019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B05E +:4054400000BD0000014B18007047C046842A041000B585B002006B4607331A70FFF7F2FF030003930BE0039B1B786A46073212789A4201D1039B07E0039B0C330393039BD8 +:405480001B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019BDB6B002B01D1022300E00123180002B0704700B583B00190019B002B0ED0019B93 +:4054C0001800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B000BD00B583B00190019B002B37D0019B00221A70019B04331800F8F763FD019BB5 +:4055000010331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C331800F8F74FFD019B00229A65019B0022DA65019B00221A66019B00225A66019B2F +:4055400000229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04603B000BD00B583B00190019B002B0ED0019B1800FFF7B5FF019B7C331800F8F76A +:4055800021FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0019B1800F8F720FD019B0C331800F8F71BFD019B18331800F8F716FD00E0C046C1 +:4055C00003B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F703FD019B10331800F8F7FEFC019B1C331800F8F7F9FC019B28331800FFF7CAFF40 +:40560000019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A1300DB009B189B00CB181800FFF7B3FF039B01330393019B9A6F039B9A42ECD8019B75 +:405640005B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B00190019B002B0ED0019B1800FFF7ABFF019B7C331800F8F7B8FC019B88331800FFF7DC +:4056800089FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD03000393039B002B19D1019B0C331A00009B0C3319001000F8F75EFD03000393039B84 +:4056C000002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0C046039B180005B000BD00B583B001900091009B1A78019B1100180003F00CFDCE +:405700000300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B13D1019B0C3301211800F8F7A5FE03000393039B002B0AD1019B183300211800A6 +:40574000F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019B183300211800F9F7F3FB03005A425341DBB2180003B000BD00B587B00390029142 +:405780000192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800F9F7D6FB031E0CD1099B002B01D1344B60E0089B00221A70009B01221A60002319 +:4057C00058E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A60009B1A68099B9A4201D9254B42E0089B04221A700298089B0133049A1900F9F7C8 +:405800000FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F7FFF80300059324E0019B012B21D1049B5A1C009B1A60009B1A68099B9A4201D90C +:405840000F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089B0133049A1900F9F7DBF80300059300E0C046059B180007B000BDC04680B0FFFF4A +:4058800000B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002B0AD1009B012B05D1029B1800FFF72CFF03003FE0214B3DE0039B04331800F8F79A +:4058C00000FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B28E00298019B0133049A1900F9F736F803000593059B002B18D1029B0C331800C5 +:40590000049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B183301211800F8F7A9FD0300059302E0C04600E0C046059B180007B000BDC04680B0FFFF88 +:4059400080B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF73BF8030055E0019B1B68002B06DA019B00211800F9F7ECFA031E09D1019B180083 +:40598000F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703000393039B002B2ED10BE0009B1A1D0199019B1800F9F760FC03000393039B002B45 +:4059C00023D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D0199019B1800F9F7E2FB03000393039B002B0DD1009B1A1D019B11001800F9F710FA7C +:405A0000031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB001900091009B183300211800F9F790FA031E01D10023AEE006AB1800F8F7C2FAB0 +:405A400003AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099B002B00D07DE006AA06A903AB1800FAF7B3FB03000993099B002B00D073E0019A99 +:405A800003AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B009903AA1800FAF797FB03000993099B002B5CD1009B019A11001800FFF742FFDD +:405AC00003000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AA1900FAF779FB03000993099B002B42D1009B0C33019A11001800FFF723FF030074 +:405B00000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA1900FAF75AFB03000993099B002B27D1009B0C33019A11001800FFF704FF030009932A +:405B4000099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC0300099310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04687 +:405B800000E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BD106A000800B591B0039002910192019B012B08D8029B1A68039B11001800FFF72FFF03002C +:405BC0000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE00E9A13005B009B189B001A000D9B9B181800F8F7E7F90E9B01330E930E9A019BED +:405C00009A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B6818331A000D9B11001800F8F7A4FA03000F930F9B002B00D082E101230E9339E0BC +:405C40000E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD1180E9B9B00029AD3181B6818331A00FAF7B3FA03000F930F9B002B00D062E10E9A8D +:405C800013005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B00D051E1B24B1B685A1CB14B1A600E9B01330E930E9A019B9A42C1D3019A1300DB +:405CC0005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002B00D033E1019B013B0E930E9B002B0BD10AAA07AB11001800F8F73DFA03000F93E8 +:405D00000F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF75BFA03000F930F9B002B00D010E1039A07AB11001800FFF705FE03000F930F9B58 +:405D4000002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA90AAB1800FAF738FA03000F930F9B002B00D0F1E0039A0AAB11001800FFF7E2FD65 +:405D800003000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF71BFA03000F930F9B002B00D0D8E0039A04AB11001800FFF7C5FD03000F930F9B2E +:405DC000002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00029AD3181B68190004AB1A00FAF7F4F903000F930F9B002B00D0B5E00E9B9B0088 +:405E0000029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B1B685A1C524B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B6875 +:405E40000C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B680C33039A11001800FFF76CFD03000F930F9B002B00D081E03D4B1B685A1C3C4B4C +:405E80001A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA1900FAF79AF903000F930F9B002B00D067E00E9B9B00029AD3181B680C33039A11001C +:405EC0001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AD3181B681A00039B9B6819001000F8F7E3F803000F930F9B002B45D10E9B9B008E +:405F0000029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D10E9B9B00029AD3181B6818331800F8F75BF80E9B002B2BD00E9B013B0E93D4E6FA +:405F4000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E080B2FFFF106A0008C0460CE0C0460AE0C04608E089 +:405F8000C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F723F804AB1800F8F71FF800230E930DE00E9A13005B009B189B001A000D9B9B1831 +:405FC0001800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180011B000BD00B58BB0039002916B4607331A7005AB1800F7F7E5FF039B191D029BC6 +:406000000C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F797FF03005A1E9341DAB223236B441A70029B0C3318006B46073323226A441B781C +:4060400012781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099B18000BB000BD000000B593B0039002910192DD4B1B685A1CDB4B1A600EAB18009F +:40608000F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69002B00D0A9E0019B18331900019B18331A000BAB1800FAF78FF803001193119BA3 +:4060C000002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34B1B685A1CC14B1A6001990BAA08AB1800F9F7C2F803001193119B002B00D043E377 +:406100000CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1D08AB11001800F8F77BFE031EE9DA01990BAA05AB1800F9F7EDF803001193119B48 +:40614000002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D018E305AB1B68002B06DA05AB00211800F8F7EEFE031EE7D105AA08A90BAB18001B +:40618000FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB03001193119B002B00D0F9E2904B1B685A1C8F4B1A600BA90EAB03221800FAF7BFF80300B1 +:4061C0001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119B002B00D0DEE2039B1A1D0EAB11001800F8F716FE031EE9DAC8E00199019A0BAB29 +:406200001800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB03001193119B002B00D0C0E2704B1B685A1C6E4B1A600BA90EAB03221800FAF77EF88C +:4062400003001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF03001193119B002B00D0A7E2039B1A1D0EAB11001800F8F7D5FD031EE9DA039B1033002127 +:406280001800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFF03001193119B002B00D087E2039A0BAB11001800FFF746FB03001193119B002BE1 +:4062C00000D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119B002B00D06EE2039A08AB11001800FFF729FB03001193119B002B00D064E23B4BE8 +:406300001B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002B00D053E2039A0BAB11001800FFF70AFB03001193119B002B00D049E22B4B1B6831 +:406340005A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE0039B1A1D0EA90EAB1800F8F71FFF03001193119B002B00D02EE2039B1A1D0EAB4E +:4063800011001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF03001193119B002B00D017E2039A08AB11001800FFF7C6FA03001193119B002BE5 +:4063C00000D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002B00D0FFE111E0C0460C6A0008106A0008039B1A1D08A908AB1800F8F7D7FE03004C +:406400001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0BAB1800F9F7D8FE03001193119B002B00D0DBE1039A0BAB11001800FFF782FAE5 +:4064400003001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FB03001193119B002B00D0C3E10CE0039B1A1D0BA90BAB1800F8F798FE0300119309 +:40648000119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905AB1800F9F799FE03001193119B002B00D0A4E1039A05AB11001800FFF743FA030024 +:4064C0001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA03001193119B002B00D08CE10CE0039B1A1D05A905AB1800F8F759FE03001193119B1E +:40650000002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800F9F75AFE03001193119B002B00D06DE1039A08AB11001800FFF704FA03001193CA +:40654000119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE03001193119B002B00D054E10CE0039B1A1D08A908AB1800F8F77FFE03001193119B7E +:40658000002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A908AB1800F8F7B6FE03001193119B002B00D033E10CE0039B1A1D08A908AB180077 +:4065C000F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F7B7FC031EE7D108AA0BA90BAB1800F8F791FE03001193119B002B00D012E10CE077 +:40660000039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B06DA0BAB00211800F8F792FC031EE7D10EAA0BA90BAB1800F9F7CEFD0300119387 +:40664000119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0534B1B685A1C524B1A6005AA0BA90BAB1800F8F74FFE03001193119B002B00D041 +:40668000D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BAB1B68002B06DA0BAB00211800F8F750FC031EE7D1019B0C331900019B18331A00CA +:4066C00005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F903001193119B002B00D0A9E0304B1B685A1C2F4B1A6005AB01211800F8F7D0F904 +:4067000003001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD03001193119B002B00D08FE0039B1A1D05AB11001800F8F775FB031EE9DA029B08AA110017 +:406740001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFD03001193119B002B00D071E0029B183305AA11001800F7F7FEFC0300119368E06E +:40678000C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E0C04656E0C04654E0C04652E0C04650E0106A0008C0464CE0C0464AE0C04648E0BB +:4067C000C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C9 +:40680000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E088 +:40684000C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F7C3FB08AB1800F7F7BFFB05AB1800F7F7BBFB119B180013B000BDC04600B59BB04A +:406880000390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E07D1009A029B11001800FEF7EEFE030039E3009B1B6A002B0FD0009B18330021DD +:4068C0001800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B09D0009B183301211800F8F731FB031E01D0C44B17E316AB1800F7F763FB13ABE2 +:406900001800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07AB1800F7F74FFB04AB1800F7F74BFB019B18331900019B18331A0016AB1800F9F700 +:406940004BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199B002B00D079E2A84B1B685A1CA64B1A60019B18331A0016A913AB1800F9F72CFCDF +:4069800003001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002B00D05EE2984B1B685A1C974B1A60009A16A916AB1800F9F70FFC03001993199B7B +:4069C000002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4B1B685A1C884B1A60009B0C331A0013A913AB1800F9F7F0FB03001993199B002BA8 +:406A000000D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B685A1C794B1A60019A16A916AB1800F8F771FC03001993199B002B00D01BE20CE022 +:406A4000039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B06DA16AB00211800F8F772FA031EE7D1019B0C331A0013A913AB1800F8F74AFC21 +:406A800003001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993199B002B00D0ECE113AB1B68002B06DA13AB00211800F8F74BFA031EE7D116AB38 +:406AC00000211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B1800FFF7C1FA03001993FFE1029B1800FEF70AFE03001993F8E1019B18331900AB +:406B000016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF711FF03001993199B002B00D0ADE1364B1B685A1C344B1A6016AA16A910AB18005B +:406B4000F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993199B002B00D094E1274B1B685A1C264B1A6016AA10A90DAB1800F9F72DFB03000E +:406B80001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D07BE1194B1B685A1C174B1A60019A10A910AB1800F9F710FB03001993199B002B29 +:406BC00000D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B685A1C094B1A6010A916AB02221800F9F7A5FB03001993199B002B00D053E112E0C3 +:406C0000086A000880B0FFFF106A0008039B1A1D16A916AB1800F8F7C9FA03001993199B002B00D041E1039B1A1D16AB11001800F8F7F6F8031EE9DA13AA13A90AAB1800C5 +:406C4000F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE03001993199B002B00D024E1B04B1B685A1CAF4B1A6016AA0AA90AAB1800F8F74BFB0300CE +:406C80001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B002B00D009E10AAB1B68002B06DA0AAB00211800F8F74CF9031EE7D10DAA0AA97A +:406CC0000AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB1800F8F7CAFA03001993199B002B00D0E8E00AAB1B68002B06DA0AAB00211800F8F74B +:406D000027F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0039B1A1D10A910AB1800F8F7A5FA03001993199B002B00D0C7E010AB1B68002BD5 +:406D400006DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993199B002B00D0B2E0039A10AB11001800FEF7E8FD03001993199B002B00D0A8E0DA +:406D80006A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B002B00D097E0039A0DAB11001800FEF7C9FD03001993199B002B00D08DE05B4BF4 +:406DC0001B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE00CE0039B1A1D07A907AB1800F8F744FA03001993199B002B00D072E007AB1B68B0 +:406E0000002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF903001993199B002B00D05DE0029B0C3307AA11001800F7F79FF903001993199B002B89 +:406E400053D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04664 +:406E800034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04622 +:406EC00014E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04616AB1800F7F77AF813AB1800F7F776F810AB180004 +:406F0000F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800F7F762F8199B18001BB000BD106A000800B58FB0039002910192009300230C93BB +:406F4000039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9908A8FAF749FC03000D930D9B002B00D0B5E00AE008AB01211800F7F735FE03004D +:406F80000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C0C920A2B01DD5F4BB9E008AB01211800F7F7CEFF031ED0DD029B18331800029B17 +:406FC000183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800FEF7B0FC03000D930D9B002B00D07CE04D4B1B685A1C4C4B1A6008AA08A905AB38 +:407000001800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC03000D930D9B002B64D13F4B1B685A1C3E4B1A60029B029905AA1800F9F7CDF80300F2 +:407040000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B1B685A1C304B1A6008AA05A905AB1800F9F7B2F803000D930D9B002B3FD1039AC6 +:4070800005AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B0C331800029B0C3305AA1900F9F794F803000D930D9B002B25D1029B0C33039AE3 +:4070C00011001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04611 +:4071000004E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B18000FB000BD00B3FFFF106A000800B589B00390029100936B4607331A70029B5A1CBE +:40714000039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD218009B11001800F7F7B4F90200069B9A401000039A079BD3180399079A8A181278E6 +:4071800051B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079B01330793079A029B9A42D1D317236B4400221A700123079372E0039A079BD31861 +:4071C0001A7816236B441721694409780A401A70039A079BD3180399079A8A18117817226A4412784A40D2B21A7017236B4416226A4412781A70039A079BD3181B781A0086 +:40720000012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A03998A1812781521694409784A43D2B252B213405AB217236B441B785BB213435AB279 +:4072400017236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812781520684400784243D2B252B24A4052B2D2B21A70079B013B039AD318079A013A26 +:4072800003998A18127851B215226A441278D20152B20A4352B2D2B21A70079B01330793079A029B9A4288D9C04609B000BD10B5A8B00390029101921A006B4603331A7096 +:4072C000002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF7D4F903002793279B002B00D0EAE00023259344E02A99259824F06AFB03001A0095 +:40730000012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B182393259B2A99180024F0D8FB0B1E17D19B236B441B785B08DBB21A001300DB005F +:407340009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E0239A2399039B1800FEF77EFE03002793279B002B00D0A9E0259B013325936B46D9 +:4073800003331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0259A531C25939B236B4419780B00DB005B189B001900029B591804AB9200D150DC +:4073C0009B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259A04A9039B1800FEF7DBFB03002793279B002B6DD19B236B4401221A7037E09B236C +:407400006B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918259A1300DB009B189B001A00029B9C189B236B441A781300DB009B189B001A0044 +:40744000029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D19B226A449B236B441B78DB1813709B226A4493236B4412781B789A42BFD3002321 +:4074800025930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259B01332593259B5A1C93236B441B789A42E8D3259A04A9039B1800FEF771FB030033 +:4074C000279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B587B00390029101921A006B4603331A7008AB1B785B08DAB212236B443F210A40CE +:407500001A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B9B18190013226A4412236B4412781B78D31A5A425341DBB21A00F6F77AFE03002C +:407540000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B9B180C33190013226A4412236B4412781B78D31A5A425341DBB21A00F6F759FE48 +:4075800003000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033312781B789A42B1D308AB1B78DB09DAB20299039B1800FEF715FD0300059302E08D +:4075C000C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A7007AB1800FDF765FF159B1093149A109BD3181B780B226A441478039A04990598A2 +:4076000000932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF03001193119B002B40D1169B002B37D0179B169A04990598FFF77BFC03001193119B91 +:40764000002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002B27D1149A109BD3181B780B226A441478039A07A9059800932300FFF730FF0300DC +:407680001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109B002BD0D10AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04607AB1800DD +:4076C000FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC05AB1800F6F76EFC039B4C3300211800F6F7EFFE0300012B01D0254B45E0029BF7 +:4077000000211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F72AFD03000B930B9B002B20D1039B4C331900029A05AB1800F7F7ECFD03000B9331 +:407740000B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB0EAA127800990198FFF7E0FC04E0C04602E0C04600E0C04605AB1800F6F734FC60 +:4077800008AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693089B4C93529C0AAA079909983023FF336B44019351AB1B7800932300FFF786FFEB +:4077C00003004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B0293529B01930AAB00932300FFF7F0FE03004D934D9B002B18D13023FF336B441A78DC +:407800004C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF803004D9304E0C04602E0C04600E0C0464D9B18004EB010BD84B001900A006B4673 +:4078400003331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B4603331B78002B06D00F236B441A780F236B4401321A700F236B441B78062B03D90F2303 +:407880006B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B441B78180004B0704710B590B00990089107920693069B0C331A00099B3433190051 +:4078C0001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0002233236B441A7032246C4433236B441A78099B11001800FFF79EFF0300237059 +:4079000032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E32236B441B781900100024F051F803000B9333236B441B78002B0BD0099B5B6F3B +:40794000002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF085FA03000D930D9B002B02D1504B0F9363E03B236B4400221A7013E03B236B4428 +:407980001A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D33A236B4400221A703A236B4403 +:4079C0001B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FC03000F930F9B002B26D133236B441B78002B07D0099B0D9A5A6731236B441A78B7 +:407A0000099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441B78019331236B441B7800932300FFF7B1FE03000F9300E0C046099B5A6F0D9B4F +:407A40009A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF791FD3B236B441A783B236B4401321A70CF +:407A80003B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089B1800FDF777FD0F9B180010B010BDC04680B2FFFF00B585B001900091009B18338D +:407AC0001800009B18331900019B04331A00F9F7CDFE03000393039B002B24D100980099009B18331A00F8F777FB03000393039B002B1AD1009B019A11001800FDF722FF1D +:407B000003000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFC0300039304E0C04602E0C04600E0C046039B180005B000BD106A000800B58BB044 +:407B4000039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009B019A079904A8F9F747FE03000993099B002B5CD109E004AB01211800F7F734F87F +:407B800003000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C08920A2B01DD2B4B51E004AB01211800F7F7CEF9031ED2DD029B029904AA18009B +:407BC000F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099B002B2AD11C4B1B685A1C1B4B1A60029B18331800029B183304AA1900F8F7ECFAE8 +:407C000003000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B0FD10D4B1B685A1C0B4B1A600AE0C04608E0C04606E0C04604E0C04602E0C046AB +:407C400000E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFF106A000800B5A1B003900291019200931CAB1800F6F7AAF919AB1800F6F7A6F916AB1800F6F7A2F9B2 +:407C800013AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F907AB1800F6F78EF904AB1800F6F78AF90099009B18331A001CAB1800F7F7DCFAD5 +:407CC00003001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F931F9B002B00D04FE2039B1A1D1CAB11001800F7F795F8031EE9DA1CAA1CA919AB1A +:407D00001800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE03001F931F9B002B00D032E29E4B1B685A1C9C4B1A600099009B18331A0016AB18008F +:407D4000F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA03001F931F9B002B00D015E216AB1B68002B06DA16AB00211800F7F7E9F8031E5F +:407D8000E7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB11001800FDF7CFFD03001F931F9B002B00D0F6E17C4B1B685A1C7A4B1A6013AA19A959 +:407DC00010AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800F7F74AFA03001F931F9B002B00D0DBE110AB1B68002B06DA10AB00211800F7F720 +:407E0000A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0C4E10CE0039B1A1D0DA90DAB1800F7F7BDF903001F931F9B002B00D0B8E1039B69 +:407E40001A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFA03001F931F9B002B00D0A3E10CE0039B1A1D0AA90AAB1800F7F7FEF903001F937B +:407E80001F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA0AA907AB1800F8F797F903001F931F9B002B00D082E1039A07AB11001800FDF74F +:407EC00041FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB1800F8F77AF903001F931F9B002B00D069E1039A04AB11001800FDF724FD03001F937E +:407F00001F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF903001F931F9B002B00D050E1019B039A11001800FDF707FD03001F931F9B002B00D0F3 +:407F400046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B00D037E1019B039A11001800FDF7EAFC03001F931F9B002B00D02DE1094B1B6885 +:407F80005A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE113E0C046106A0008019B18331800019B18331900039B04331A00F7F75DF9030062 +:407FC0001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031EE2D1019B18331800019B18331900019B18331A00F8F7F0F803001F931F9B002B79 +:4080000000D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914B1B685A1C8F4B1A60019B18331800019B18331A00239B1900F8F7CEF803001F93D3 +:408040001F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D0C6E0804B1B685A1C7E4B1A60029B13AA19A91800F8F7B0F803001F931F9B002B0A +:4080800000D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B685A1C704B1A60029B18331800039B103310AA1900F8F790F803001F931F9B002B06 +:4080C00000D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B1B685A1C5F4B1A60029B18331800029B18331A0013AB1900F7F7BEF803001F9389 +:408100001F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F803001F931F9B002B00D06DE0029B18331A00039B043319001000F6F771FE031EED +:40814000E3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D1029B1833039A11001800FDF7EBFB03001F931F9B002B4BD13A4B1B685A1C394B44 +:408180001A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E07B +:4081C000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0AF +:40820000C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F7E3FE16AB1800F5F7DFFE13AB1800F5F7DBFE10AB1800F5F7D7FE0DAB1800F5F7AE +:40824000D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B000BDC046106A000810B596B005900491039202930AAB1800FDF71BF907AB1800CA +:40828000F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB11001800FDF7F1F903001593159B002B00D0ACE0049B01211800F6F7DDF803009B +:4082C0001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D099E0049B0C331800F5F77EFE0CE0059B1A1D0AA90AAB1800F6F758FF0300159370 +:40830000159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD0199B189A0AA90598FFF708FC03001593159B002B00D072E0039B1800F6F78FF9E6 +:408340000300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B441A780AAB1900F5F7E1FF03001593159B002B56D1049B183318004F236B441A780E +:408380000AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB01930AAB00932300FFF759FC03001593159B002B3AD104984F236B441A780AAB190011 +:4083C000F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900F5F7A4FF03001593159B002B21D1149B5A1E1492002BA6D1049A059B11001800AD +:40840000FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FDF7ACF807AB1800C9 +:40844000F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B1100180000F088FA03000993099B002B3AD1049A079B1100180000F049FA030088 +:408480000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A069907980D9B01930C9B00932300FFF7DCFE03000993099B002B1AD1079B1800FCF7A7 +:4084C000E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7E3F90300099304E0C04602E0C04600E0C046099B18000AB010BDC04680B0FFFF8F +:4085000010B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF793FF0300180008B010BD000000B58BB001900091009B00211800F6F71D +:4085400007FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000F6F75EFC031E0ADA009B0C331A00019B043319001000F6F753FC031E01DB814BFF +:40858000FCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB1800F7F719FE03000993099B002B00D0C4E0019A06AB11001800FDF7C3F9030089 +:4085C0000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD03000993099B002B00D0ABE0019A03AB11001800FDF7A6F903000993099B002BA5 +:4086000000D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F7EAFE03000993099B002B00D08EE00CE0019B1A1D03A903AB1800F6F71DFE03000C +:408640000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D123E0019B10331A0003A903AB1800F6F703FE03000993099B002B00D06AE00BE00A +:40868000019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB11001800F6F7BDFB031EEADA009A03A903AB1800F7F791FD03000993099B002B4DD116 +:4086C000019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A60019B1C331A0003A903AB1800F6F7C4FD03000993099B002B34D10BE0019B1A1DA7 +:4087000003A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F77FFB031EEADA03AA06AB11001800F6F777FB031E19D0134B099316E0C04614E054 +:40874000C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F5F73BFC03AB1800F5F737FC099B18000BB055 +:4087800000BDC04680B3FFFF106A000810B58AB00790069105920493059B01211800F6F7D7FB031E08D1049A069B11001800FCF76CFF0300099339E001235A42059B110066 +:4087C0001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D1069B0C3300211800F6F7B2FB031E1DD0069B0C331800079B191D069B0C331A0001 +:40880000F6F788FD0300099310E0049C059A069907980C9B029300230193002300932300FFF714FE0300099300E0C046099B18000AB010BD10B592B00590049103920293C3 +:4088400006AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF728FE029C039A10990598169B00932300FFF78CFF03001193119B002B21D1159CA6 +:40888000149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F990598FDF7EBFF03001193119B002B0CD10F9A059B11001800FDF7B0F80300119300 +:4088C00004E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF00B583B001900091009B1800F5F7E9FE0200019BDB6D0733DB089A4201D9034B8D +:4089000000E00023180003B000BDC04680B3FFFF00B583B001900091009B183301211800F6F716FB031E01D0114B1EE0019B1800FCF7ADFD0300022B07D1009A019B110061 +:408940001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B11001800FFF7E6FD030000E0024B180003B000BD80B3FFFF80B0FFFF00B583B00190009189 +:40898000019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B01211800F5F796FD031E09D1009B1800F5F756FE03005A1E019BDB6D9A4201D0184B5A +:4089C0002BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0019B1800FCF753FD0300012B14D1009B01211800F6F7ACFA031E09DB019B4C334A +:408A00001A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD80B3FFFF80B0FFFF00B589B003900291019200935C4B0793039BDB6D0733DB0885 +:408A40000593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE03000793079B002B00D08EE0029B1800F5F7F7FD031EEDD0029B1800F5F7F1FD0300013B26 +:408A80000493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F803000793079B002B0CD07AE0039BD96D029B01221800F5F72AFD03000793079B002B46 +:408AC00063D1029B002200211800F5F71FFD03000793079B002B5AD1029B002201211800F5F714FD03000793079B002B51D1039BDB6DFE2B0AD1029B002202211800F5F75B +:408B000005FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B019A05990298F8F767FE03000793079B002B32D1059BDA00039BDB6DD21A029B3C +:408B400011001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134B1FE0029B01211800F6F7F2F9031ED6DB039B4C331A00029B11001800F6F750F9F0 +:408B8000031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180009B000BD80B0FFFF00B3FFFF10B588B005900491039202930B9B0A9AD0 +:408BC00003990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B00932300FFF78CFC0300079300E0C046079B180008B010BD10B586B00590049160 +:408C000003920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF0300180006B010BD10B588B004910392029317236B44021C1A70049A17236B441B78CF +:408C40001900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049B88331A00039C029B00932300FFF7C4FF0300180008B010BD10B5AEB003900291A4 +:408C8000039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B883319001000F6F7BDF8031E15D1039B94331A00029B943319001000F6F7B2F8031E0AD1F9 +:408CC000039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7E8FB05AB1800FCF7FCFB029A05AB11001800FCF7FAFC029B7C331A00029B283304 +:408D00001C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B88331A0024AB11001800F6F779F8031E15D1029B94331A0024AB0C3311001800F9 +:408D4000F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B2D9300E0C04624AB1800FCF713FC05AB1800FCF727FC2D9B18002EB010BDC0464A +:408D800080B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A60C04604B07047000082B00190019B01221A60019B01225A60019B024A9A60C046C5 +:408DC00002B070470804000800B585B00390029101920093039B0433019A02991800FFF7D1FF009B002B06D0039B1033069A00991800FFF7C7FF039B1C33089A0799180006 +:408E0000FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF039B34330C9A0B991800FFF7ABFF039B40331800FFF7B8FF039B04331800F5F798 +:408E40000EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023180005B000BD000000B585B00190019B1033434A10211800F5F778FC0300039330 +:408E8000039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B0433FF211800F5F7FCFD03000393039B002B4FD1019B181D019B043313221900F6F7F5 +:408EC0009AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C33284A10211800F5F741FC03000393039B002B32D1019B4C330122FC211800F5F771 +:408F000005FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002B1FD1019B403301211800F5F7A5FA03000393039B002B16D1019B34331800F5F791 +:408F400053F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046B0 +:408F8000382C0410402C041000B587B0019002AB1800F5F717F8019B10335D4A10211800F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA0300059355 +:408FC000059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E0019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E0216C +:409000001800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF903000593059B002B58D1019B04331800F5F715FB0200019B9A65019B2833052167 +:409040001800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA03000593059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F730 +:4090800045FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B24D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019BEC +:4090C000C022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D00A +:40910000019B1800FCF75EFA059B180007B000BD642C04106C2C041000B58DB00B900A002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042B2C +:4091400025D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B9820230893284B079320230693274B059320230493264B039320230293254B0193002394 +:40918000009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B0793302306931E4B0593302304931D4B0393302302931C4B01930023009300233022DD +:4091C000FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A660B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BD0D93011071 +:40920000A82A0410282B0410082B0410E82A0410C82A0410439B0110482B0410082C0410D82B0410A82B0410782B04100DA60110F9A6011080B1FFFF84B00390029101926B +:40924000039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42DBB2D318DBB25AB2019B1A70C04604B0704784B0039002910192019B1B785BB286 +:40928000DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029BD21A039B1A60C04604B0704700B587B00390019200930B236B440A1C1A70019BD9 +:4092C0009A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A0199039B1800F5F762FF03000593059B002B04D1039B012252421A6000E0C046059B74 +:40930000180007B000BDC046FFFFFF3F00B595B0019042236B4400221A700023139380235B0012930CAB01221A600CAB09225A600CAB03AA9A600CAB5B689A0003AB002177 +:4093400018001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B9A68139B9B00D3181B680F93019B9B682033196842226A440FAB1800FFF75CFFE4 +:40938000019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A440FAB1800FFF765FF019B9B683033196842226A440FAB1800FFF75BFF019B9B68F8 +:4093C0003433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB1800FFF747FF019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B004C +:40940000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71BFF09E043233C +:409440006B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FAB1800FFF7E9FE019B9B682833196842226A440FAB1800FFF7DFFE019B9B68303336 +:40948000196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF7E8FE019B9B683833196842226A440FAB1800FFF7DEFE019B9B683C3319684222E6 +:4094C0006A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A70B5 +:4095000043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7A8FE09E043236B440021595642226A440FAB1800FFF780FE019B9B682833196868 +:4095400042226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE019B9B683433196842226A440FAB1800FFF77FFE019B9B683833196842226A445F +:409580000FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F934323C4 +:4095C0006B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73FFE09E043236B44002159564222EB +:409600006A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019B9B682C33196842226A440FAB1800FFF703FE019B9B683033196842226A440FAB92 +:409640001800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B683433196842226A440FAB1800FFF7E5FD019B9B683C33196842226A440FAB1800FFF7F1 +:40968000F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B682433196842226A440FAB1800FFF7E4FD019B9A68139B9B00D3180F9A1A60139B01331393019B32 +:4096C0009A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF798 +:40970000B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196842226A440FAB1800FFF786FD019B9B683033196842226A440FAB1800FFF77CFD89 +:40974000019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440FAB1800FFF768FD019B9B683833196842226A440FAB1800FFF75EFD019B9B68F4 +:409780002433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB1800FFF767FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B006C +:4097C000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73BFD09E043235B +:409800006B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FAB1800FFF709FD019B9B683433196842226A440FAB1800FFF7FFFC019B9B683833F2 +:40984000196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF7EBFC019B9B683C33196842226A440FAB1800FFF7E1FC019B9B682833196842222B +:409880006A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F938F +:4098C00043236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7BEFC09E043236B440021595669 +:4099000042226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC019B9B683833196842226A440FAB1800FFF782FC019B9B683C33196842226A444A +:409940000FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B683833196842226A440FAB1800FFF764FC019B9B683433196842226A440FAB1800A8 +:40998000FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B682433196842226A440FAB1800FFF763FC019B9A68139B9B00D3180F9A1A60139B0133139378 +:4099C000019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800EF +:409A0000FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33196842226A440FAB1800FFF705FC019B9B683C33196842226A440FAB1800FFF777 +:409A4000FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B682033196842226A440FAB1800FFF7E7FB019B9B682833196842226A440FAB1800FFF7FAFB019B86 +:409A80009B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB1800FFF7E6FB019B9B683433196842226A440FAB1800FFF7DCFB019B9A68139B3C +:409AC0009B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00231A1C53B20F93019B9A68139B9B00D3180F9A1A6000230F9306E0019B9A68139B54 +:409B00009B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB2002B0ADA42236B4400215956129B0CAA0198FFF7BBFB00E0C046119B180015B08B +:409B400000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6010AB0D225A6010AB03AA9A6010AB5B689A0003AB002118001EF0C8F8019B182115 +:409B80001800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B681393019B9B683033196852226A4413AB1800FFF741FB019B9B6854331968522211 +:409BC0006A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019B9B685C33196852226A4413AB1800FFF740FB019B9A68179B9B00D318139A1A602B +:409C0000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522234 +:409C40006A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA019B9B683433196852226A4413AB1800FFF7E2FA019B9B685833196852226A448B +:409C800013AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B683033196852226A4413AB1800FFF7E1FA019B9B685033196852226A4413AB1800BA +:409CC000FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B782E +:409D00007F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E053236B440021595652226A4413AB1800FFF783FA019B9B683833196852226A4413ABD2 +:409D40001800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433196852226A4413AB1800FFF782FA019B9B685433196852226A4413AB1800FFF7D6 +:409D800078FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B18 +:409DC0000CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B440021595652226A4413AB1800FFF724FA019B9B683C33196852226A4413AB18005E +:409E0000FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196852226A4413AB1800FFF706FA019B9B685433196852226A4413AB1800FFF7FCF982 +:409E4000019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A4413AB1800FFF705FA019B9B685C33196852226A4413AB1800FFF7FBF9019B9A6899 +:409E8000179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441D +:409EC0001B785BB25B42190052226A4413AB1800FFF7CFF909E053236B440021595652226A4413AB1800FFF7A7F9019B9B685433196852226A4413AB1800FFF79DF9019B23 +:409F00009B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB1800FFF789F9019B9B683433196852226A4413AB1800FFF77FF9019B9B683033AA +:409F4000196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF76BF9019B9B685833196852226A4413AB1800FFF761F9019B9B683C331968522219 +:409F80006A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B9B685C33196852226A4413AB1800FFF760F9019B9A68179B9B00D318139A1A60C7 +:409FC000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522271 +:40A000006A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF9019B9B685833196852226A4413AB1800FFF702F9019B9B685833196852226A4447 +:40A0400013AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B683833196852226A4413AB1800FFF7E4F8019B9B683433196852226A4413AB1800E5 +:40A08000FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196852226A4413AB1800FFF7C6F8019B9B684033196852226A4413AB1800FFF7D9F8CE +:40A0C000019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD962 +:40A1000053236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B440021595652226A4413AB1800FFF785F8019B9B685C33196852226A4413AB1800FFF72B +:40A140007BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B684833196852226A4413AB1800FFF767F8019B9B683C33196852226A4413AB1800FFF75DF8019B10 +:40A180009B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB1800FFF749F8019B9B684433196852226A4413AB1800FFF75CF8019B9A68179B74 +:40A1C0009B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B78F9 +:40A200005BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4413AB1800FFF708F8019B9B684C33196852226A4413AB1800FEF7FEFF019B9B6851 +:40A240004033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB1800FEF7EAFF019B9B685C33196852226A4413AB1800FEF7E0FF019B9B68483319688F +:40A2800052226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B44002292 +:40A2C0001A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7C7FF09E053236B440021595652226A4413AB1800FEF79FFF019B9B685033D4 +:40A30000196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF78BFF019B9B684033196852226A4413AB1800FEF781FF019B9B684C3319685222FA +:40A340006A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A701A +:40A3800053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF768FF09E053236B440021595652226A4413AB1800FEF740FF019B9B6854331968D6 +:40A3C00052226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF019B9B684433196852226A4413AB1800FEF722FF019B9B685033196852226A441E +:40A4000013AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A705323F0 +:40A440006B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF09E053236B440021595652226A4413AB1800FEF7E1FE019B9B68583319685222D2 +:40A480006A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B9B684833196852226A4413AB1800FEF7C3FE019B9B685433196852226A4413AB27 +:40A4C0001800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B449F +:40A500001B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E053236B440021595652226A4413AB1800FEF782FE019B9B685C33196852226A44CD +:40A5400013AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B684C33196852226A4413AB1800FEF764FE019B9B685833196852226A4413AB18000D +:40A58000FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB21A1C53B2002B01DA00231A1C53B21393019B9A68179B9B00D318139A1A6000237B +:40A5C000139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42F0D352236B441B785BB2002B0ADA52236B4400215956169B10AA0198FEF756FE7F +:40A6000000E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DAB01221A60019B5B68DA1F0DAB5A600DAB5B68092B01D92F4B59E00DAB03AA9A60CF +:40A6400003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF0C3FA0DAB1F211800F4F7BEFA03001193119B002B35D10DAB5B685A1C0DAB5A60FB +:40A68000019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A68109B9B00D31800221A60109B01331093019B5A68109B9A42F0D80DA90DAB132211 +:40A6C0001800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC0300119304E0C04602E0C04600E0C046119B180013B000BD80B0FFFF10B5A8B00190019B5F +:40A700005B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B680E2B01D9494B8DE023AB11AA9A6011AB3C22002118001DF0E9FA019B9B6838337B +:40A74000190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31800221A60269B01332693019B5A68269B9A42F0D823AA0199019B1800F4F77CFD2A +:40A7800003002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218001DF022FA20ABE0211800F4F71DFA03002793279B002B3DD120AA0199019B180056 +:40A7C000F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B0133269323AB5A68269B9A42F2D820AA23A923AB1800F4F73FFD03002793279B87 +:40A80000002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA0199019B1800F4F727FD0300279308E0C04606E0C04604E0C04602E0C04600E039 +:40A84000C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039BE4331800C8235B001A0000211DF04EFA039B00221A60039B0833180009F04DFCE8 +:40A8800007490398012300934023002200F02AF8039A9D239B000021D150C04605B000BD55AD011000B583B00190019B0833180009F03FFC019A9D239B000021D150019B2A +:40A8C000E02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C04603B000BD86B0039002910192009300230593039BE0229B580493049B132B03DD47 +:40A900003E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A600399049AE82013009B009B189B00CB181B18019A1A600399049AF02013009B009B18F5 +:40A940009B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60039BE0229B585A1C039BE0215A50059B180006B0704700B599B00390019200936A +:40A980000B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019800230CF0EDFA03001593159B002B34D104AB16934023179314AB0B226A441278B7 +:40A9C0001A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB03001593159B002B1BD1039B01221A60039B083314A9022218000BF0DAFC0300159315 +:40AA0000159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C04604AB4021180004F061F8159B180019B000BD00B587B0039002910192019B029A30 +:40AA400003981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BE0229B58002B02D140235B426DE00023249356E00199249AF42013009B009B1875 +:40AA80009B00CB181B181B68012B01D101232393002302930199249AE42013009B009B189B00CB181B181C680199249AE82013009B009B189B00CB181B18186802AB03A995 +:40AAC0008022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF74AFF03002593259B002B01D0259B2CE00199249AEC2013009B009B189B00CB1873 +:40AB00001B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B01332493019BE0229A58249B9A42A2DC239B002B04D13D235B42259300E0C04603AB95 +:40AB40008021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B1593019B402B02D93C235B42C0E0159A9D239B00D358002B0FD1159A9D239B0039 +:40AB80000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C189280225200934203DD3C235B42199399E0159B1800FFF74EFF03001993199B002B1A +:40ABC00000D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B1819681598179AF02413009B009B189B00C3181B191B68994201D200231693179B61 +:40AC000001331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF075F8159B083305AA110018000BF04CFC03001993199B002B4DD1159B0833180063 +:40AC400009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199B002B3AD1159B083305A9402218000BF09FFB03001993199B002B30D105AA05A840 +:40AC8000002340210CF07CF903001993199B002B27D1002317930DE01599179AEC2013009B009B189B00CB181B1800221A60179B01331793159BE0229A58179B9A42EBDCBD +:40ACC000019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C04600E0C04605AB4021180003F0FFFE199B18001AB010BD00B595B001903F235B4256 +:40AD0000139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB40211800F1F7A2F9031E02DA3F235B420EE003AB4022002118001CF0E8FF03A9019B84 +:40AD400040221800FFF775FE03001393139B180015B000BD00B597B003900291019200934023159305AB4022002118001CF0CEFF05AB40211800F1F765F9031E02DA3C23BD +:40AD80005B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A1A600023180017B000BD00B583B00190C8235A00019B002118001CF0A7FFC046B8 +:40ADC00003B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A912AB009313001022F8F768FA03001F931F9B002B01D01F9B23E113AB1B781A060F +:40AE000013AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B791A0613AB5B791B041A4313AB9B791B021A4313ABDB7913431A9300231B931C9B68 +:40AE40001D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A4313AB9B7A1B021A4313ABDB7A13431C9300231D9313AB1B7B1A0613AB5B7B1B04EF +:40AE80001A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304931A9B0499059A0800034322931B9B13432393119B88331A00229B239C1360546001 +:40AEC000119A84235B00D218209B219C13605460119BC8331A000023002413605460119A002300249364D4640423259350E0229A012313401A005B01D21A13061A0019924A +:40AF0000209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343229313003B432393219BDA07209B5B080293029B13430293219B5B080393199BE0 +:40AF4000089300230993089B1B000B9300230A93029C039D23000A990B9A0800434020932B0053402193119A259B0933DB00D218229B239C13605460119A259B1933DB0061 +:40AF8000D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B48331A00259BDB00D3181893119BC8331A00259BDB00D3181793179B5C681B68209399 +:40AFC0002194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B1933DB00CB185C681B68209959400C91219961400D910C9B0D9C13605460249BDB0067 +:40B00000189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9B0F9C13605460249B01332493249A259B9A42CEDB259B5B002593259B082BADDD62 +:40B040000023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B441B7801221800F7F7B9FF03000593059B002B02D114235B4230E0059B5B69102B39 +:40B0800002D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493049B002B01D0049B18E00398009A01990123F8F72FF803000493049B002B01D0F3 +:40B0C000049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B000BD000070B5B2B029902891279200233193289B0F331A78172126AB9C4661447D +:40B100000F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F94172326AA944663441B78299A0933DB00D3185C681B682C932D940F233193E3E0EE +:40B14000319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B78162226A98C4662441B091370319B0F2B61D02C9B2D9CDAB2152126AB9C4661440F235F +:40B1800013400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119A0B002B432C93130033432D932F9B1A072E9B1B0913432E932F9B1B092F931523A3 +:40B1C00026AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A080043402E932F9B53402F93172326AA944663441B78299A1933DB00D3185C6887 +:40B200001B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A624013002D932C9B2D9CDAB2152126AB9C46A0 +:40B2400061440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B134300932D9B1B0901930E9B0099019A080003432C930F9B13432D932F9B1A072E9B0F +:40B280001B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B681B041593002314932E9B1499159A080043402E932F9B53402F93162326AA9446A2 +:40B2C00063441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93162326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A62401300D3 +:40B300002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B181B78279A1370279B5A1C2F9B1B0C1893002319936B4660215B181B781370279B73 +:40B340009A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9300231D936B4670215B181B781370279B191D2F9B1A022E9B1B0E0293029B1343A5 +:40B3800002932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B134304932F9B1B0C05936B461B7C0B70279B991D2F9B1A062E9B1B0A0693069B13434F +:40B3C00006932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A002D9B1B0E1E9300231F936B4678215B181B781370279B09331A002D9B1B0C2093EE +:40B40000002321936B4680215B181B781370279B0A332D9A120A2292002223926A468821521812781A70279B0B332D9A12002492002225926A469021521812781A70279B0D +:40B440000C332D9A12022C99090E08910899114308912D9A120E09926A462021521812781A70279B0D332D9A12042C99090C0A910A9911430A912D9A120C0B926A4628215D +:40B48000521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D926A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC04647 +:40B4C000A82C0410F0B597B00B900A910992089300230D93089B002B15D0089B029300230393039B5E0F00231F0033003B430AD11D9B049300230593059B5C0F00231D0077 +:40B5000023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933FF331022002118001CF0F0FB0B9AC4235B000A99D1500B9AA4235B00D218002394 +:40B540000024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B6933FF33089A099918001CF03EFB0B9A7823FF330121D15485E00EAB1022002118004E +:40B580001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB001B0ADAB20EAB9A73089BDBB2DB00DAB20EABDA73099B149337E0089B102B00D9E5 +:40B5C000102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159A139B9A429D +:40B60000E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0893149A139BD3181493089B002BC4D10023159317E00B99B4235B00159A8A1811 +:40B64000D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159B0F2BE4D90B9B6933FF3319000B9B6933FF331A000B9B18008D +:40B68000FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F70DFE03001293129B002B01D0129B4AE01D9B0693002307930B9AA8235B00D31844 +:40B6C0000699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B99BC235B00159A8A18D3181A781499159BCB181B785340D8B20B99BC235B00159AD2 +:40B700008A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B7933FF331A000B9B1800FFF7DBFC1D9A139BD31A1D93149A139BD31814931D9BEB +:40B74000002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A93069A079B9A4209D9069A079BD31A1A00089B9A4202D214235B42EAE0099AA423E4 +:40B780005B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1811685268A24215D801D1994212D8099AA4235B00D3185C681B68089A0492002287 +:40B7C00005920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00D3185C681B68089A1500002216005B1974410999A42252008A1813605460079BB3 +:40B800001293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9188A1812780132D0B20999B4225200C9188A18011C11700999B4225200CB189B18C0 +:40B840001B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319000BAA0AAB009313001022F7F727FD03000F930F9B002B01D00F9B6AE00023139398 +:40B8800046E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70119A139BD3180BA9F8 +:40B8C000139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D10999BC235B00139A8A18D3181A781199139BCB181B785340D8B20999BC235B00CD +:40B90000139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF331900099B7933FF331A00099B1800FFF7DAFB089A109BD31A0893129A109BD318129368 +:40B94000119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C911B921D9AA4235B00D3185C681B68590FE2000A432592DB0024931D9AA8235B008C +:40B98000D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D814235B4216E11D9B5933FF3319001B9B1C981A001CF019F9249A259B1A4304D1229A88 +:40B9C000239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B4628229B181B781EAA1370239B1B0C0C9300230D936B4630229B181B781EAA5370B6 +:40BA0000239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311936B4640229B181B781EAAD370239B1A02229B1D0E1543239B1E0EEBB21EAA13710D +:40BA4000239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B1A06229B1B0A0293029B13430293239B1B0A03936B461B7A1EAA9371229B239CC2 +:40BA8000DBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C1493002315936B4650229B181A781EAB5A72259B1B0A1693002317936B4658220C +:40BAC0009B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B1B02249A120E0492049A1A430492259B1B0E05936B461A7C1EAB1A73259B1B046B +:40BB0000249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249A120A0892089A1A430892259B1B0A09936B4620229B181A781EAB9A73249B259C9F +:40BB4000DAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB181B785340D8B21D99BC235B00279A8A18D318021C1A70279B01332793279B0F2BD1 +:40BB8000E4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E01C9A279BD3181C99279A8A1811781D9CBC22520027982018821812784A40D2B21E +:40BBC0001A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B005900491039202930A9C029A049905980C9B01930B9B00932300FFF765FC03000793079BC4 +:40BC0000002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B0DE00F9A1099059B1800FFF795FE03000793079B002B01D0079B00E000231800FF +:40BC400008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9B04931A9B0393179B0293169B0193089B00930B000021FFF7AFFF03001193119BD6 +:40BC8000002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB181B785340DBB21A00129B13431293139B01331393139A199B9A42EAD3129B002B62 +:40BCC00008D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B00190019B1800F7F7BBF9C8235A00019B1100180002F0FAFEC04603B000BD00B58C +:40BD000083B00190019B6422002118001BF0FEFFC04603B000BD00B597B0039002910192039B1B68180000F00FFC03001593029B002B04D0019B002B01D0022200E0012277 +:40BD400053236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190000F032FB039B14A90122180000F02CFB53236B441B78022B05D1039B019A02998F +:40BD8000180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA0398039B0C33159A190000F00EFB039A039B0C331900100000F029FB14AB1B780133F1 +:40BDC000DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390029101920093039B02990122180000F08DF903000593059B002B01D0059B21E04B +:40BE0000039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C331C00029B180000F08FFB03001A00012120001BF06BFF009A0199039B1800FFF7E1 +:40BE40006AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B1A6D019BD218C0235B009A4202D905235B4233E0C0235A0005AB002118001BF069 +:40BE800045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039B1B6D6593029B002B0ED0019B002B0BD005AA659BD318019A029918001BF094FEB9 +:40BEC000659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B010BD00B58BB00390029101920093039B0793079B1B68180000F026FB03000693D0 +:40BF0000019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A4202D905235B4260E0079BDB6D002B18D0079B5B6D012B05D0079BDA6C079B9B6D5C +:40BF40009A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E000230C93009B002B31D00C9B002B2ED00C9A0099079B1800FFF7CEFE27E0069A099B34 +:40BF8000934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A079B0C331900100000F030FA079B0C331900049A089B18001BF016FE089A049B2D +:40BFC000D3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079BDB6C5A1C079BDA64002318000BB000BD00B589B0059004910392059B0793039A7D +:40C0000004990798002300930023FFF76AFF03000693069B180009B000BD00B583B00190019B002B09D0019B180000F03DF8019B6421180002F05AFD00E0C04603B000BDF7 +:40C0400082B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D0082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C0464D +:40C08000482D0410782D0410A82D0410D82D041000B583B00190019B0C22002118001BF035FEC04603B000BD00B583B00190019B002B27D0019B1B68002B23D0019B5B6839 +:40C0C000002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B1B68DB685B001900100002F0FFFC019B9B6818001BF03EFA019B0C21180002F028 +:40C10000F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B01D1164B27E0029B1B6A98470200039B5A60039B5B68002B01D1114B1BE0019BCC +:40C14000002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B5A6A039B5B6818009047054B03E0039B029A1A600023180005B000BD00AFFFFFCF +:40C1800080AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B681A69019B5B68180090470300180003B000BDC04600AFFFFF10B584B0039002919F +:40C1C0000192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF00B583B001900091019B002B1B +:40C2000003D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300180003B000BDC04600AFFFFF00B585B00390029101920093039B002B01D1064B6C +:40C2400006E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1514B9EE0CC +:40C28000039B1B68DB681A00019B9A422DD2039B1B681A69039B5B681800904703001793179B002B00D07DE0039B1B685C69039B5B68019A02991800A04703001793179B03 +:40C2C000002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B1B689B68019304AB0293039B9B681593039B9A68039B1B68DB68D3181493039B76 +:40C300001B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF0F5FC002316931EE0159A169BD3181599169A8A1811780298169A821812784A40A5 +:40C34000D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A70169B01331693169A019B9A42DCD3039B1B681A69039B5B681800904703001793D1 +:40C38000179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A0470300179306E0C04604E0C04602E0C04600E0C04604AB4021180002F098FB179B180081 +:40C3C00018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A047030032 +:40C40000180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B03D0019B9B68002B01D12C4B52E0019B9A68019B1B68DB68D3181393019B1B68D5 +:40C440009A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69019B5B681800904703001293129B002B01D0129B2EE0019B1B685C69019B58686A +:40C48000019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B685C69019B5868019B1B689B681A0002AB1900A04703001293129B002B01D0129B32 +:40C4C00008E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFF10B584B00190019B002B07D0019B1B68002B03D0019B9B68002B01D1114B1DE0B2 +:40C50000019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B0CE0019B1B685C69019B5868019B1B68DB681A00039B1900A0470300180004B0F3 +:40C5400010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B0704782B00190019B002B01D1002301E0019B1B78180002B0704700B583B00190A4 +:40C58000019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A0299039B180007F088FB0300180005B000BD00B583B001900091009A019B110018009D +:40C5C00007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F068FD0300180005B000BD00B583B06C2101201AF03BFC03000193019B002B03D042 +:40C60000019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019B18001AF0A7FFC04603B000BD00B583B001900091009A019B1100180005F020FE76 +:40C64000C04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B000BD00B583B00190019B0021180005F017FE0300180003B000BD00B585B0039076 +:40C6800002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B0121180007F064FD0300180003B000BD00B585B0039002910192019A0299039B25 +:40C6C000180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F3FE0300180003B000BD00B585B0039002910192019A0299039801230AF040FC7D +:40C700000300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B180007F0FAFC019B180003B000BD00B583B00190019B180007F0FBFC019B1800F4 +:40C740001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04603B000BD00B583B001900091009A019B1100180007F0A6FD0300180003B000BDC9 +:40C7800000B583B00190019B0021180007F0F0FC0300180003B000BD00B585B0039002910192019A0299039800230AF0E9FB0300180005B000BD000000B585B00190164BDF +:40C7C0000393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B143324 +:40C800000393039B0293029B1B68002BE3D10023180005B000BDC0468C37041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7CF0 +:40C84000009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A600023F1 +:40C8800008E0059B14330593059B1B68002BE7D12E235B42180006B07047C0468C37041000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B0E +:40C8C0005A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC046ED +:40C90000DC37041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021CED +:40C940001A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B0F4 +:40C980007047C046DC37041086B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B16 +:40C9C00014330593059B1B68002BE7D12E235B42180006B07047C0461838041000B583B00190019B0C22002118001BF08FF9C04603B000BD10B58EB0059004910392029399 +:40CA0000059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D1644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A426C +:40CA400001D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B01330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D9304 +:40CA80000B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454B83E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9BC6 +:40CAC00001330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36490D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A00 +:40CB00000D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E0A2 +:40CB400007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED0079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9BFA +:40CB8000002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A1A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFF7C38041000ECFFFF77 +:40CBC00000EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B681900100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C211800CF +:40CC000001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A6000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B6856 +:40CC40009A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B002006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D0F1 +:40CC800007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C046CC380410FC3804102C3904105C39041000B583B001900091019B002B06D0009B002B03D051 +:40CCC000019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B001900E +:40CD0000019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E059 +:40CD40000023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F073 +:40CD80008AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B01931B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E002 +:40CDC0000F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB00790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A60A0 +:40CE00000F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD0C +:40CE40000200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9B0093012303F0FCFE030018000BB000BD80BFFFFF00B58BB0079006910592049322 +:40CE8000079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE00F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BD83 +:40CEC00000BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BD00B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F06D +:40CF0000A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFBC04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A0080 +:40CF4000009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A60C04602B07047C046943804109C38041082B002006B4607331A706B4607331B78CC +:40CF8000022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B4411 +:40CFC0000A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B0ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F80300319321 +:40D0000006AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1C1A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D199 +:40D04000049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009A72 +:40D08000019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE03000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B15 +:40D0C0001800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70009B054A5A60019B88331A00009B9A60C04602B07047C046A838041082B0020000 +:40D100006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023180002B0704782B002006B4607331A706B4607331B78043B5A425341DBB218009A +:40D1400002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9B00932300F8F798F803000793079B044A934201D1034B00E0079B180008B010BDFE +:40D1800000B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B236B44197807980D9B03930C9B02930B9B01930A9B00932300F8F74EF803001800DE +:40D1C00008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F71CF9019B180003B000BD00B583B00190019B1800F8F71BF9019B18001AF0BAF9D1 +:40D20000C04603B000BD82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B07047000000B587B0039002910192029A039B1B68D31A002BEC +:40D2400001DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019B1A1D019B1B6802990398F0F77DF903000593059B002B04D0059B0F4A94466344B8 +:40D2800012E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4201D0064B00E00023180007B000BDC046A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF1C +:40D2C00000B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E03D0124B1EE0124B1CE0009B1B78002B08D0009B1A780B236B441B789A4201D030 +:40D300000B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B00E00023180005B000BDC04600C6FFFF00C3FFFF10B586B003900291019201984C +:40D34000019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002B08D1019A019B883319001000FBF7D0FA03000593039B029A1A60059B180006B0FD +:40D3800010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9B002B04D00D9B454A9446634482E00B9B1A680C9BD2180A9B9A4201D0404B79E073 +:40D3C0000CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E00B9B19680C9A09980023069300230593002304930023039300230293002301935A +:40D4000000230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD2180B9B1A600CAA0A990B980223F0F79CF803000D930D9B002B04D00D9B1F4A94468C +:40D44000634437E00B9B1B680C9A099806920593002304930023039300230293002301930023009300230022002101F0D3FE03000D930D9B002B01D0104B1BE00B9B1A68C9 +:40D480000C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0064B07E00B9B1A680A9B9A4201D0044B00E0002318000FB000BDC04600C5FFFF69 +:40D4C0009AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA02990398F0F7F1F803000793079B002B04D0079B114A944663441CE0019A04AB25 +:40D5000011001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D0009B1B68002B03D1009B5B68002B01D0024B00E00023180009B000BD80C5FFFF1C +:40D5400080C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F703F803000B930B9B002B04D00B9B4E4A9446634495E0039B1A68099BD31802934E +:40D5800006AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA0299039B1800F0F769F803000B930B9B002B04D00B9B3D4A9446634472E0039B1A6810 +:40D5C000099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9B002B01D1334B5CE00A9A019B11001800FFF75CFB03000B930B9B002B01D00B9B25 +:40D600004FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF7B1FE03000B932AE017236B441B78032B04D017236B441B78022B1ED1019B186898 +:40D640005968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B18685968FFF7D8FD02000299039B1800FFF760FE03000B9301E00E4B0B930B9B2C +:40D68000002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FA0B9B18000DB000BD00C3FFFF00C5FFFF9AC4FFFF80C3FFFF00B595B00B900A9178 +:40D6C00009920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF743FF03001393139B002B04D0139B9D4A9446634432E10F9A109BD318129311AA87 +:40D7000012990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B002B01D0904B19E110AA12990FA80223EFF71AFF03001393139B002B00D0F5E0EB +:40D740000F99109A0B9800230693002305930023049300230393002302930023019300230093002301F056FD03001393139B002B00D0DBE00F9A109BD3180F9310AA1299EB +:40D780000FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B9806920593002304930023039300230293002301930023009300230022002101F02CFD03001393D4 +:40D7C000139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE03001393139B002B00D0A1E00F9B109A0B98002106910021059104920393002302930023E3 +:40D8000001930023009300230022002101F002FD03001393139B002B00D087E00F9A109BD3180F9310AA12990FA80223EFF79CFE03001393139B002B00D077E00F99109BF1 +:40D840000B9800220692002205920022049200220392002202920022019200930B000022002101F0D7FC03001393139B002B5DD10F9A109BD3180F9310AA12990FA8022341 +:40D88000EFF772FE03001393139B002B4ED10F9B109A0B9800210691002105910021049100210391029201930023009300230022002101F0AFFC03001393139B002B35D138 +:40D8C0000F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1800EFF7A5FE03001393139B002B1DD10CAA12990FAB1800EFF79AFE030013930B +:40D90000139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B9A4203D0114B139300E0C0460CAB1800F0F75AFB139B002B0FD0139B0C4A134024 +:40D9400005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B000BDC04600C3FFFF80C2FFFF9AC2FFFF80FF000010B590B0059004910392049BBE +:40D980000693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D00F9B824A94466344FCE0069A0A9BD3180D930BAA0D9906AB1800EFF7FDFD0300E6 +:40D9C0000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D9906A80423EFF7C0FD03000F930F9B002B04D00F9B6D4A94466344D3E0059B7C33FD +:40DA000006990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634A94466344BEE0069A0A9BD318069300230E93069A0D9B9A4234D00AAA0D9906A8B4 +:40DA4000A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB03000F930F9B002B0AD1059A07AB11001800FFF725FC03000F930F9B002B11D047 +:40DA8000059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A944663447FE0069A0D9B9A4246D00AAA0D9906A8A123EFF758FD03000F930F9B002B59 +:40DAC0002FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D00F9B324A944663445CE0069A0A9BD2180C9B9A4201D02F4B54E0059A0C9906AB29 +:40DB00001800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B40E00F9B623308D0059B1800F7F795FD0F9B1E4A9446634434E00E9B002B1ED1AD +:40DB40000598059B88331900059B7C331A00059B28331C0000230193002300932300FAF7CFFC03000F930F9B002B08D0059B1800F7F773FD0F9B0D4A9446634412E0059A4D +:40DB8000059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B00E00023180010B010BDC04600C3FFFF80C2FFFF9AC2FFFF80B1FFFF00B58FB0E2 +:40DBC000039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A83023EFF7C1FC03000D930D9B002B04D00D9B584A94466344A9E0059A099BD3181A +:40DC00000C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634495E00A9B002B04D00D9B4B4A944663448DE006AB13226A440C9905A8FFF742FC04 +:40DC400003000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC03000D930D9B002B04D00D9B394A944663446CE0099B002B01D1384B67E01323D5 +:40DC80006B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800FFF704F803000D930D9B002B01D00D9B4DE013236B441B78012B14D1039B186811 +:40DCC0005968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF7A3FF0D9B33E013236B441B78022B04D013236B441B78032B25D1039B1868596817 +:40DD0000FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B18685968FFF779FA059B099A1900FFF722FE03000D930D9B002B07D0039B1800FEF7A4 +:40DD400073FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF80C3FFFF10B58EB0079006910592049308AB1800FEF732FE059B002B06D0059B85 +:40DD8000013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B0193049B00932300FEF724FE03000D930D9B002B2AD10120FEF750FF03000C93FB +:40DDC0000C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA08AB196808AB5B681A00FFF765FC03000D930D9B002B03D0079B1800FEF714FFEB +:40DE000008AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D1834BF5E00D9B7C4A934201D00D9BEFE0059B002B06D0059B013B069AD3181B780C +:40DE4000002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B00932300FEF7C8FD03000D930D9B002B2AD10220FEF7F4FE03000C930C9A079B110018005A +:40DE8000FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B681A00FFF767FD03000D930D9B002B03D0079B1800FEF7B8FE08AB1800FEF784FE63 +:40DEC0000D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4A934201D00D9B93E0059B002B06D0059B013B069AD3181B78002B02D0464B0D9313 +:40DF00000EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D930D9B002B16D108AB196808AB5A68079B1800FFF743FE03000D930D9B002B03D0FA +:40DF4000079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E0059A0699079B1800FFF728FE03000D930D9B002B01D100234AE0079B1800FEF7A6 +:40DF800053FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE031E0DD1079B18685968FFF72CF9059A069B1900FFF780FB031E01D1002327E039 +:40DFC000079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B11001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031EAF +:40E0000001D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFF8C390410AC39041080ECFFFF80C4FFFF00EDFFFF00C4FFFFCC390410EC3904100C3A041008 +:40E04000283A041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB02932E +:40E0800000230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D930120FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD0300F3 +:40E0C0000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F802000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800A8 +:40E10000FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002B06D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CAB94 +:40E14000029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D930D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9B80 +:40E1800052E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD0120FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD0300C7 +:40E1C0000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F802000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF780 +:40E2000013FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF791F903000F930F9B180010B010BDC04680EFFFFF443A0410643A041080C3FFFF40 +:40E24000843A0410A03A04109EC4FFFF82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704700B58DB005900491039200230A9307AB49 +:40E280001800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B002B2CD107AA0499059B1800EFF7C2FB03000B930B9B002B21DB0B9B0A9AD31850 +:40E2C0000A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED107AA0499059B1800EFF7A4FB03000B930B9B002B03DB0B9B0A9AD3180A9307AB37 +:40E300001800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B930B9B002B01DA0B9B15E00B9B0A9AD3180A930499059B30221800EFF72FFB03007B +:40E340000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB0059004910392002328930398039B8833190028AA8523019306AB0093130000227F +:40E38000F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B681A00049BD31A1A00289B9A4202D26C235B420EE0059B1A68289B5B42D218059B46 +:40E3C0001A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291019200230793019B1B7804AA05A91800FEF7A0FA03000693069B002B01D0069B03 +:40E4000011E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079AD3180793079B180009B000BD00B587B003900291019200230593019B1800FEF714 +:40E440005DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000493049B002B01DA049B25E0049B059AD31805931FE0019B1800FEF73FFC030084 +:40E48000022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049B002B01DA049B07E0049B059AD318059301E0034B00E0059B180007B000BDC0461F +:40E4C00080C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A049908AB1800FFF7A1FF03000993099B002B01DA099BA6E0099B0A9AD3180A93F5 +:40E50000059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C235B4290E0089B013B0893089B00221A700A9B01330A930A9A049908AB1800EFF7F5 +:40E5400041F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB03221800EFF71CFA03000993099B002B01DA099B69E0099B0A9AD3180A93059B1800FEF70E +:40E58000BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1800FEF7ABFB0300022B15D1059B18685968FFF754FE0200049908AB1800FFF7B9 +:40E5C0000BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A80B9B00932300EFF70BFB03000993099B002B01DA099B26E0099B0A9AD3180A939D +:40E600000A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD3180A93049908AB30221800EFF7B7F903000993099B002B01DA099B04E0099B0A9AF9 +:40E64000D3180A930A9B18000CB010BD00B591B0059004910392049A039BD318099300230E93059B1800FEF749FB0300012B00D034E1059B18685968FFF7E8FD03000D932C +:40E6800006AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E006AA049909AB1800EFF7C4F903000F930F9B002B00DAD4E00F9B0E9AD3180E9377 +:40E6C00006AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB1800EFF7A8F903000F930F9B002B00DAB8E00F9B0E9AD3180E9306A90D980023002257 +:40E7000001F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F930F9B002B00DA9CE00F9B0E9AD3180E9306AA0D98002301930023009313000022C1 +:40E74000002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF903000F930F9B002B00DA7BE00F9B0E9AD3180E9306AA0D980023019300230093002388 +:40E78000002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F930F9B002B5DDB0F9B0E9AD3180E930D980023019306AB009300230022002100F071 +:40E7C0003DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B3FDB0F9B0E9AD3180E930D9806AB01930023009300230022002100F01FFF030099 +:40E800000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9B0E9AD3180E9306A90D9800230193002300930023002200F001FF03000F930F9BC3 +:40E84000002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD3180E9306AB1800EFF7BFFB0F9B002B01DA0F9B35E1049909AB00221800EFF718FA13 +:40E8800003000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF791FF03000F930F9B002B01DA0F9B17E10F9B0E9AD3180E93049909AB302218005C +:40E8C000EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B1800FEF70CFA0300022B00D0F6E0059B18685968FFF7B4FC03000C9300230B93002393 +:40E900000A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AD3180B93099B1A00049BD31A002B02DC6C235B42D4E0099B013B0993099B002204 +:40E940001A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9BBEE00F9B0B9AD3180B93049909AB03221800EFF713F803000F930F9B002B01DA22 +:40E980000F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B01DA0F9B9CE00F9B0B9AD3180B93049909ABA1221800EEF7F1FF03000F930F9B9D +:40E9C000002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800FFF7FAFC03000F930F9B002B01DA0F9B76E00F9B0A9AD3180A930A9A049909AB2F +:40EA00001800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909ABA0221800EEF7BAFF03000F930F9B002B01DA0F9B54E00F9B0A9AD3180A930E9A68 +:40EA40000A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DA0F9B3DE00F9B0E9AD3180E93099B04221A70049909AB01221800EFF719F90300E4 +:40EA80000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE03000F930F9B002B01DA0F9B18E00F9B0E9AD3180E93049909AB30221800EEF778 +:40EAC0006DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B180011B000BDC04680C6FFFF00B583B001900091044B1B68009A0198002198473F +:40EB0000C04603B000BDC0460C040008F0B583B001900091019B1C0000231D00009B1E0000231F0032003B00200029001DF042F903000C001800210003B0F0BD70B5CAB00F +:40EB4000339032913192309300234493339B1B684293339B5B684193339B9B684093339BDB683F93419B9A08419BD3183E93409B9A08409BD3183D933F9B9A083F9BD31813 +:40EB80003C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B45930023439351E2319A449BD3181B781900449B5A1C319B9B181B781B021943449BF8 +:40EBC0009A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B93449B1A1D319B9B181B781900449B5A1D319B9B181B781B021943449B9A1D319B3A +:40EC00009B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B08331A00319B9B181B781900449B09331A00319B9B181B781B021943449B0A331A00AD +:40EC4000319B9B181B781B041943449B0B331A00319B9B181B781B060B43369300233793449B0C331A00319B9B181B781900449B0D331A00319B9B181B781B021943449B93 +:40EC80000E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B43349300233593499B0093002301933A9B3B9C0099019A5B1854413A933B94489B0293D4 +:40ECC000002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18544138933994479B069300230793399B1B000893002309930699079A089B099CCB +:40ED0000C9186241369B379C5B18544136933794469B0A9300230B93379B1B000C9300230D930A990B9A0C9B0D9CC9186241349B359C5B185441349335943A9B4993389BA9 +:40ED40004893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B184593429A499B11001800FFF7D0FE05000E003C9A489B11001800FFF7C8FE03000C00DF +:40ED8000ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800FFF7B4FE03000C005B1974413A933B94419A499B11001800FFF7A8FE05000E0063 +:40EDC000429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE03000C00ED1866413D9A469B11001800FFF78CFE03000C00ED1866413E9A459BE2 +:40EE000011001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE05000E00419A489B11001800FFF76EFE03000C00ED186641429A479B1100180014 +:40EE4000FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866413D9A459B11001800FFF750FE03000C005B197441369337943F9A499B11001800C0 +:40EE8000FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B11001800FFF732FE03000C00ED186641429A469B11001800FFF728FE03000C005E +:40EEC000ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B534345933B9B1B00109300231193389B399C1099119A5B18544138933994399BB8 +:40EF00001B00129300231393369B379C1299139A5B18544136933794379B1B00149300231593349B359C1499159A5B185441349335943A9B4993389B4893369B4793349BE4 +:40EF40004693359B1B00169300231793169A459B9B184593499B189300231993459B9B081A9300231B931899199A1A9B1B9CC9186241459B1C9300231D9303231C9C1D9D8F +:40EF8000200098431E900023280018401F901E9B1F9C5B1854413A933B94459A0323134045933A9B4993489B2093002321933B9B1B00229300232393209B219C2299239A81 +:40EFC0005B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B259C2699279A5B1854413A933B943A9B4793469B2893002329933B9B1B002A9346 +:40F0000000232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D933B9B1B002E9300232F932C9B2D9C2E992F9A5B1854413A933B943A9B4593449B24 +:40F0400010334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62339B479A9A62339B469ADA62339B459A1A63C0464AB070BD00B583B00190019B0F +:40F08000002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D0019B48211800FFF721FDC04603B000BD00B589B003900291019200230793019BE1 +:40F0C0000693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0069B002B3ED0039B5B6C002B3AD0039B5B6C1022D31A0593019A059B9A4213D24F +:40F10000039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B5A64002306931DE0039B5B6C3033039AD3180433059A0299180018F055FD039BBC +:40F1400000225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059BD31A0693069B0F2B13D9069B1B090493029A079BD218049903980123FFF7DEFCC6 +:40F18000049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B34331800029A079BD318069A190018F01BFD0023180009B000BD88B003900291DE +:40F1C0000192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A780499079BCB181B785340D9B21B236B441B226A4412780A431A70079B013307938F +:40F20000079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009300230593029B002B13D0039B0833019A02991800EFF792FB03000593059B002B56 +:40F2400041D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A00991800EFF77BFB03000593059B002B2CD1099B002B0BD0039B38330A9A0999180055 +:40F28000EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF75DFB03000593059B002B12D10D9B002B10D0039B14330E9A0D991800EFF74EFBF8 +:40F2C0000300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF10B584B0039002910192039B5C68039B44 +:40F3000008331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039B083300211800EFF713FE031E07DD039B083300211800EFF7CCF8031E01D12B4B7E +:40F3400051E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C3300211800EFF7B7F8031E0FD0039B383300211800EFF7EEFD031E07DD039B38330021180052 +:40F38000EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0029B002B11D0039B443300211800EFF7CFFD031E07DD039B503300211800EFF73D +:40F3C000C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC024B00E00023180004B010BD80BFFFFF30B591B0039000230F93039B08330021CA +:40F400001800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1E9341DBB20D93039B383300211800EFF78FFD03005A1E9341DBB20C93039B203360 +:40F4400000211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD03005A1E9341DBB20A930D9B002B0AD00C9B002B07D00B9B002B04D00A9B002B01D0E3 +:40F48000012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D00A9B002B01D0012300E0002308930D9B002B0AD00C9B002B07D00B9B002B04D17C +:40F4C0000A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D10A9B002B01D0012300E000230693099B002B05D1089B002B02D154 +:40F50000079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B002B22D10D9B002B1FD00C9B002B1CD0039B08331800039B2C331900039B3833DF +:40F540001A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B08331800EFF7AFF80200039B5A60089B002B1BD0039B08331800039B14331900039B20338C +:40F580001A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B254A9446634443E0079B002B16D0039B2C331800039B38331900039B14331A0059 +:40F5C000039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002B1FD0039B2C331800039B38331900039B20331C00039B44331D00039B5033039AFB +:40F600005C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A9446634406E00599039B01221800FFF761FE0300180011B030BDC04680BFFFFF00B587B0A1 +:40F640000390029101920093039B083300211800EFF77EFC031E21D0039B2C3300211800EFF776FC031E19D0039B383300211800EFF76EFC031E11D0039B20330021180064 +:40F68000EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E000230493049B002B0AD1019B002B05D1009B002B02D1089B002B01D02B4B52E0029B002B10 +:40F6C0000CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002B0CD0039B2C331A00019B11001800EEF742FD03000593059B002B2FD1009B002BFC +:40F700000CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B0CD0039B20331A00089B11001800EEF722FD03000593059B002B0FD1099B002B02 +:40F740000ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E00023180007B000BD80BFFFFF00B587B00390029101920093039B083300211800FE +:40F78000EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800EFF7D6FB031E11D0039B203300211800EFF7CEFB031E09D0039B14330021180085 +:40F7C000EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD0039B44331A00029B11001800EEF7C3FC03000593059B002B1FD1019B002B0CD063 +:40F80000039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D0039B5C331A00009B11001800EEF7A3FC03000593059B002B04D0059B034A9446B7 +:40F84000634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC220021180018F053FA019A0299039B180000F003F8C04605B000BD84B00390029101923C +:40F88000039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180002B0704700B583B00190019B002200211800FFF71DFD031E01D0164B27E0019B69 +:40F8C00008331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031E12D0019B14331800EEF7B9FE0300012B0AD9019B14331A00019B08331900100087 +:40F90000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059B1800FFF7BFFF031E07D1059B012201211800FFF7DDFC031E01D01D4B35E0059BD7 +:40F9400008331800059B2C331900059B38331C00059B20331D00059B1433002202920022019200932B00220002F0FCFA031E01D00F4B1AE0059B2C331800059B383319004A +:40F98000059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF9031E01D0024B00E00023180007B030BD00BEFFFF00B583B001900091019B1800E0 +:40F9C000FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009B083319001000EFF71BFA031E0AD1019B14331A00009B143319001000EFF710FA3D +:40FA0000031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B002200211800FFF763FC031E01D0294B4CE007AB1800EEF7C5FA059B5A68049931 +:40FA400007AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF7DFF9031E03DB04235B420B9321E0059B5B680A93059B14331A00059B08331C00F7 +:40FA8000059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907AB1800EEF7BDFF03000B9302E0C04600E0C04607AB1800EEF797FA0B9B002B04D00A +:40FAC0000B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B005900491039200230693059BA0229B58002B3FD0059B8C331800059B8C33190078 +:40FB0000059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C331900059B08331A00F0F756FF03000793079B002B00D072E0059B98331800059B99 +:40FB400098331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059B98331900059B08331A00F0F735FF030007935DE0069B5A1C06920A2B01DD2E4B2A +:40FB800057E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D1059B8C331800059B98331900059B08331A00F1F737FD03000793079B002B34D166 +:40FBC000059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B08331A00F1F743FE03000793079B002B1ED1059B8C331800059B8C331900059B1433C0 +:40FC00001A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180008B010BD80BBFFFF10B5A8B02A +:40FC40000590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059B01211800FFF744FB031E01D0DF4BFCE121AB1800EEF7A6F91EAB1800EEF7A2F922 +:40FC80001BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB1800EEF78FF915AB1800EEF78BF912AB1800EEF787F909AB1800EEF783F906AB1E +:40FCC0001800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1059B08331A0021AB11001800EFF798F8031E03DB04235B42279382E121AA09AB0E +:40FD000011001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A0499059B1800FFF7DAFE03002793279B002B00D039E1059B8C331A0021A921AB180059 +:40FD4000F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE03002793279B002B00D021E1059B2C3319001EAB01221800EFF73DFB0300279399 +:40FD8000279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00D009E1039B049A18A81C21F1F724FD03002793279B002B00D0FFE018AA1EA9D3 +:40FDC0000FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB1800EFF74AFA03002793279B002B00D0E9E00FAB2693039B049A18A81C21F1F7FCFC45 +:40FE000003002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B00D0D3E0059B50331A000CA90CAB1800EFF722FA03002793279B002B00D0C7E065 +:40FE40000CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE03002793279B002B00D0B5E0059B38331C00059B8033259A21A912A800932300F0F7C8FEC6 +:40FE800003002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B00D09BE0059B5C331A0021A915AB1800F0F792F903002793279B002B00D08FE08C +:40FEC000059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B38331A0021A915AB1800F0F776F903002793279B002B00D077E015AA12A921AB1800B6 +:40FF0000EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB1800F0F759F903002793279B002B00D062E0059B08331A0021A921AB1800F0F7F7 +:40FF40004BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A800932300F0F754FE03002793279B002B46D109AA06AB11001800EEF751FF031E29 +:40FF800002D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E05A +:40FFC000C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE080BFFFFF80BCFFFFC04604E0C04602E0C04600E014 +:020000041002E8 +:40000000C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D00FAB1800EDF7E0FF0CAB1800EDF7DCFF21AB1800EDF7D8FF15AB1800EDF7D4FFC4 +:4000400012AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279B034A9446634400E00023180028B010BD00BDFFFF00B59BB00390029101920093F1 +:400080000023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B681800FCF751FA03001593039B199350E0159B1793029A159B9A4201D2029B17934A +:4000C0001C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF803001693169B002B3AD104A91C9B04221800FCF762F803001693169B002B31D105AA36 +:400100001C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C1992197805A8189A821812784A40D2B21A70189B01331893189A179B9A42EDD304AB81 +:40014000DB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C04602E0C04600E0C04605AB40211800FEF7BDFC169B18001BB000BD000010B58EB090 +:400180000590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE0049B002B01D1654BC5E0059BA8229B58DBB21800FBF744FF03000B930B9B002BB1 +:4001C00001D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3189A1C129B9A4207D3099B5A00129BD3189A1C0A9B9A4201D9504B9CE00A9A149B2A +:400200000021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D930D9B002B04D00D9B454A9446634482E00C9A099BD3180C930C9B119A10990B9861 +:40024000FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9AD21A129BD31A023B0C9AD3180C930C9B5A1C0C9201221A70129A13990C9B180070 +:4002800017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002B28D1099B0133149AD0180A9A099BD31A591E149B5A1C099C06AB00932300FFF763 +:4002C000D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E099906AB009313002200FFF7C3FE03000D9302E0C04600E0C04606AB1800FBF78B +:40030000D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB030009E0149C039A04990598149B00932300FFF784FC030018000EB010BD80BFFFFF5C +:4003400080BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B58002B01D0464B88E0049B002B05D00F9B002B02D0109B002B01D1414B7DE0059B42 +:400380005B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0089A0E9BD31A033B0B930A9B5A1C0A9200221A70029B002B2FD10A9B5A1C0A9262 +:4003C00002221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D1099B013B0993099B002B02D0079B002BEBD0099B002B02D0079B002B04D0079BE8 +:40040000204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9201221A7004E00A9B5A1C0A92FF221A700B9B5A1E0B92002BF5D10A9B5A1C0A92BA +:4004400000221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7D9FA030009E0109C039A04990598109B00932300FFF7E2FB030018000CB010BD3A +:4004800080BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B0FD021E0069C079A089909980E9B02930D9B01930C9B00932300FFF743FF030066 +:4004C00013E0069C079A089909980E9B04930D9B03930C9B029300230193002300932300FFF74CFE030000E0014B18000AB010BD00BFFFFF10B5E04CA544059004910392D6 +:400500000293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA74321360FFAB74331B680F2B06D9FFAB74331A688023DB009A4201D9D04BD9E1059BA822E6 +:400540009B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1FFAB70331B681800FBF7EEFF0300FFAA6C321360FFAB6C331B6801335A00FFABA9 +:4005800074331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF739FA03000BE0FFABA0331C68039A049905981AAB00932300FFF740FB0300FFAA5F +:4005C00088321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB00221800FBF792FD0300FFAA88321360FFAB88331B68002B04D007AB1800FBF7C1 +:4006000053FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B68D31A5A1EFFAB6C33196807AB009313002200FFF71FFD0300FFAA88321360FFABA3 +:4006400088331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B68D31A591E1AAA0132FFAB6C331C6807AB00932300FFF7FEFC0300FFAA883213607C +:40068000FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAA98321268FFA994310968FFA870300068FBF7BCFD0300FFAA88321360FFAB8833B9 +:4006C0001B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CFFA97C310A601978FFAB7B33FFAA7B3212780A431A70FFAB7C331A68FFAB6C3330 +:400700001B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB84331B68D3181A78FFAB7C331B68591CFFA87C3001601B785340DBB25AB2FFAB7B3316 +:400740001B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB84331A68FFAB6C331B689A42D3D30023FFAA80321360FFAB7A3300221A700023FFAABA +:40078000843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A3212780A431A70FFAB7A331B785B42DAB2FFAB7A331B781343DBB2DB09DBB201225340B5 +:4007C000DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360FFAB6C331B685B00FFAA74321268D31A9A1EFFAB84331B689A42C4D8FFAB7C33BD +:400800001A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7801225340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB7B331B7887 +:40084000002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B689A1AFFABA8331B689A420FD9064BFFAA883213602DE0C04678FBFFFF80BFFFFF45 +:40088000A0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1AFFAB9C331B681A60FFAB9C331B681A68FFAB7C331968FFABA4331B68180017F008 +:4008C00093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F90AAB40211800FEF701F9FFAB88331B6818009123DB009D4410BDC04610B5D44C01 +:40090000A54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D1059BA4229B58002B01D0CA4B8BE1059B5B68FFAA1C321360FFAB1C331B680F2B39 +:4009400006D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40331968059B1800FFF755F803000BE0FFAB40331C68039A0499059806AB00932300CD +:40098000FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA24321360FFAB233300221A70FFAB24331B685A1CFFA924310A601978FFAB2333FFAA2332F5 +:4009C00012780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213603DE0FC +:400A0000FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B785B42DBB21343DBB2DB09DBB201225340D9B2FFAB2233FFAA223212780A431A7092 +:400A4000FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A00FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C3394 +:400A80001B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A700A +:400AC00066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213602AE0FFAB24331A68FFAB2833B6 +:400B00001B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB22331A70FFAB22331B785A425341DBB21A00FFAB2C331B689B18FFAA2C321360FFAB3F +:400B400028331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A60A5 +:400B80001978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB25AB2FFAB23331B785BB213435AB2FFAB23331A70FFAB23331B78002B04D0264BD8 +:400BC000FFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB48331B689A4204D91D4BFFAA3032136020E0FFAB24331A6806ABD31A1A00FFAB1C337D +:400C00001B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B68180016F0E1FF0023FFAA3032136000E0C0468023DA0006AB11001800FDF756FFFE +:400C4000FFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFF10B58AB00990089107920693099BA4229B58002B02D0012B11D025E0069C079A0B +:400C8000089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069C079A089909980F9B05930E9B04930D9B03930C9B029300230193002300932300AD +:400CC000FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B00590049103920293279B1E9300232093029B012B06D1059BA4229B58012B01D09C4B33E1049B002BF0 +:400D000001D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F903001C931C9B002B01D1904B1BE11C9B1800FBF70AFC03002593059BA8229B58DBB2CD +:400D40001800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B931B9B023B1A931B9A1A9BD3189A1C1D9B9A4201D97D4BF5E01B9A1B9BD3189A1CAF +:400D80001D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F0B5FF219A09A90398049B984703001F931F9B002B04D01F9B6D4A94466344D1E029 +:400DC000059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3181E931E9B5A1C1E9201221A70219A09A91E9B180016F0F8FE1E9A219BD3181E9382 +:400E000006AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E006AB1800FBF7AEF903001F931F9B002B6FD11E9906AB08221800FBF7BDF9030062 +:400E40001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A09A906AB1800FBF7A7F903001F931F9B002B54D11E9A06AB11001800FBF7BAF93A +:400E800003001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9BD21A209BD31A591E1B9C1E9A06AB00932300FFF7DFF803001F931F9B002B32D187 +:400EC000059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2111410A0052B213405BB2DAB2279B1A701E9A1B9BD3181E931E9B5A1C1E92BC22AB +:400F00001A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800FBF7BCF81F9B002B01D01F9B14E0029B002B07D132 +:400F4000279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF76DFE0300180022B010BDC04680BFFFFF80BBFFFF00B58BB00291019200930F2373 +:400F80006B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D00F236B441B781800FBF74AF803000793079B002B01D16C4BD3E006AA05A90F233E +:400FC0006B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069A029BD31808337F2B0ED8029B0A331A00029B9A4208D3069A029BD3180A331A00D1 +:40100000029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0069A029BD318099AD31A0A3B099309E0099A029B9A4201D24B4B92E0099A029B4C +:40104000D31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089B5A1C089201221A70099A089BFF21180016F04CFE089A099BD3180893089B5A1C4A +:40108000089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0089B5A1C089230221A70089B5A1C0892069AD1B2029AD2B28A18D2B20832D2B20D +:4010C0001A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1C089206221A70089B5A1C0892069AD2B21A700599069A089B180016F075FD069BE4 +:40110000089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089204221A70089B5A1C0892029AD2B21A70029A0199089B180016F056FD089A029B7B +:40114000D31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E0002318000BB000BD80BFFFFF10B58AB0059004910392029300230893002307935B +:40118000029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB18780F9B00932300FFF7E5FE03000993099B002B01D0099B63E0029B002B07D10F9ABC +:4011C0000F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B002B02D110235B424AE0059B5B681900012015F03BFE03000793079B002B06D100 +:40120000089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD03000993099B002B1ED1079A0899059B1800FEF7EFFB03000993099B002B15D1F1 +:40124000059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9B180016F0C1FC02E0C04600E0C046089B180016F07FF9079B180016F07BF9099BC8 +:4012800018000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B01939E +:4012C0000AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF7F2FC030000E0014B180008B010BD00BFFFFF1A +:4013000010B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BFBE1059B5B68FFAA8C321360FFAB8C331B680F2B06D9FFAB8C331A688023DB0019 +:401340009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB03000BE0FFABB0331C68039A0499059807AB00932300FEF762FC0300FFAA903213601B +:40138000FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B68013B9C4AFFA994318C466244D35CBC2B01D0994BB1E1FFAB9C331B78002B1AD0B2 +:4013C000FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B9BE1FFAB84331B681800FBF7ADF80300FFAAA0321360FFABA8331B781800FAF7F2 +:401400001FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B681800FBF792F80300FFAA80321360FFAB2C3308220021180016F069FC059B083318009C +:40144000EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C331A6813005B079B1ADB001A00FFAB7C331B68D318083319410B1E01D0644B4CE1E5 +:40148000FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B68013BFFAA8C321360FFAB80331B689A1CFFAB8C331B689A4201D9554B2DE1FFAB72 +:4014C0008C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB20331800FAF7D5FDFFAB84331968FFAB203300221800FAF70AFE0300FFAA9032136049 +:40150000FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB80331C68FFAB78331A68FFAB88331868FFAB203300932300FEF79DFD0300FFAA903273 +:401540001360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C321268D100FFAA7C3212688A1AFF2111410A0052B213405BB2DAB2264BFFA99431DE +:401580008C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB88331B689A4205D9FFAB88331B681B78002BE9D0FFAB88331B685A1CFFA9883140 +:4015C0000A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31AFFAA74321360FFABAC331B68013315D0FFABAC331B68FFAA743212689A420DD016 +:40160000054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20331800FAF7AFFD0300FFAA90321360FFAB90331B68002B5FD1FFA92C31FFAB20334F +:4016400008221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A68FFABA4331968FFAB20331800FAF7A4FD0300FFAA90321360FFAB90331B68002BC1 +:401680003ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA90321360FFAB90331B68002B2CD1FFAA3432FFAB203311001800FAF79DFD0300FFAA9032A8 +:4016C0001360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F05DFA031E11D00F4BFFAA903213600CE0C0460AE0C04608E0C04606E0C04604E05B +:40170000C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB009D4410BD80BCFFFF10B58CB00990089107920693099BA8229B58002B04D0099B20 +:40174000A8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B059301235B4204932F236B441B780393109B02930F9B01930EAB1B7800932300FFF7C0FDF2 +:40178000030018000CB010BD10B58AB0059004910392029300230993059B5B6807930023069300230893029B012B06D1059BA4229B58002B01D0384B6BE0079B190001205D +:4017C00015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B03D110235B42099338E0079C0E9A0D990CAB1878089B00932300FFF7BBFB03002A +:401800000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C039A04990598069B00932300FEF706FA03000993099B002B0FD1079A0899069BD1 +:401840001800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B09D0079A069B11001800FDF73FF9069B180015F07FFE089B002B09D0079A089B3A +:4018800011001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059AF5 +:4018C000069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF714FF80 +:40190000030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB019B98331800ECF75FFB019B68331800ECF75AFB019B20331800ECF755FB019BD7 +:4019400038331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08331800ECF741FB019B80331800ECF73CFB019B74331800ECF737FB019B5C33180019 +:40198000ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000010B59EB0059004910392029300231D9306AAB44B1000190036231A0016F014F996 +:4019C00036231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D004235B424AE1059B00211800EDF7B0FA031E1DDD039B01211800EDF7A9FA031E36 +:401A000016DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DD059A049B11001800EDF7FAF9031E02DB04235B4222E114AB1800ECF7C3FA17ABCB +:401A40001800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A917AB01221800EDF7C6FC03001D931D9B002B00D0E8E017AB1800ECF7A8FD0200CE +:401A80006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB11001800EDF7A0F803001D931D9B002B00D0CBE072236B4400221A80059B9B683D +:401AC0001B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C1A0014AB11001800ECF7C6FC059A14A9029B1800EFF796FD03001D931D9B002B46 +:401B000000D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B00932300EFF775F803001D931D9B002B00D090E01CAB01221A805EE014AB01211800F7 +:401B4000EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE0059A14A9029B1800EFF75CFD03001D931D9B002B00D071E0029B01211800EDF7E9 +:401B8000E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A20980021EEF733FC03001D935EE014A914AB01221800EDF71FFC03001D931D9B002B36 +:401BC0004ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800EEF7FAFE03001D931D9B002B3CD11CAB1CAA128801321A801CAA6A236B441288A0 +:401C00001B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B4472226A44128801321A8072236B441A881B9B9A4200D24EE700E0C04604235B425B +:401C40001D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB0E5 +:401C800010BDC046BC3A041000B58DB0039002910192009300230B93009B002B06D0009B00211800EDF754F9031E02D004235B4271E0039B01211800EDF74AF9031E0DDD95 +:401CC000029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4259E008AB1800ECF76DF905AB1800ECF769F9039908AB01221800EDF77CFB030001 +:401D00000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AA08A9009B1800EFF77DFC03000B930B9B002B22D105AA08A908AB1800EEF74CFABE +:401D400003000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D108AA0199009B1800EFF780FD03000B9308E0C04606E0C04604E0C04602E0C046AC +:401D800000E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB0039002910192009300230B9308AB1800ECF708F905AB1800ECF704F9009B002B46 +:401DC00033D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B002B00D08CE0019A009905AB1800EDF791FA03000B930B9B002B00D082E008AA88 +:401E000005A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F8031E02D04E4B0B937BE00E9B002B30D0029B002B02D1494B0B9372E0029908ABA6 +:401E400001221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA03000B930B9B002B53D108AA05A905AB1800EEF7B2FD03000B930B9B002B4AD105AB01 +:401E800000211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B002B02D12D4B0B933BE0029A0F9908AB1800EEF791F903000B930B9B002B2BD136 +:401EC00008A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF77BFD03000B930B9B002B19D108AB00211800EDF72DF8031E13D0194B0B9310E0AE +:401F0000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460B9B002B0CD00B9B0D4A934208D00B9B0A4A934204D00B9B094A94466344BF +:401F40000B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFF00BEFFFF00B58DB0039002910192009300230B9308AB1800ECF724F805AB180018 +:401F8000ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF71BF903000B930B9B002B00D0C8E0039B01211800ECF7CCFF031E07DD039A08AB3F +:401FC00011001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B002B20D0009B01211800ECF7B1FF031E16DD0E9B01211800ECF7AAFF031E0FDD82 +:40200000039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DB5C4B0B939DE0029B002B00D199E0019B002B00D195E0009B002B00D191E00E9B6E +:40204000002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E02DC4C4B0B937CE00E9A009908AB1800EEF7B2F803000B930B9B002B62D108A908 +:4020800008AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF903000B930B9B002B50D105AA08A908AB1800EEF791FC03000B930B9B002B47D13B +:4020C00008AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF803000B930B9B002B34D108A908AB01221800EDF780F903000B930B9B002B2BD156 +:40210000019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF75BFC03000B930B9B002B19D108AB00211800ECF70DFF031E13D0164B0B9310E0D2 +:40214000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800EBF73FFF05AB1800EBF73BFF0B9B002B08D00B9B064A934204D0DA +:402180000B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291019200930023079304AB1800EBF70AFF009B002B15D0039904AB01221800EDF754 +:4021C0001AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B26D10A9B002B15D0029904AB01221800EDF701F903000793079B002B1AD104AA0A +:4022000001990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B1800EFF723FB0300079306E0C04604E0C04602E0C04600E0C04604AB1800EBF7A0 +:40224000D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B000BD00B583B00190019B002B05D0019B6C211800FCF73AFC00E0C04603B000BDDC +:4022800000B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD000082B001900091019B00221A60019B00225A60009B002B18D1019B1B4A9A60019BA3 +:4022C0001A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A1A62019B174A5A6217E0019B164A9A60019B164ADA60019B154A1A61019B154A11 +:402300005A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A660023180002B0704767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BA9 +:40234000ABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964A44FFABE70B5CEB00190009100234D930EE0019B4D9A02329200D158DA +:402380001F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E04D9B9B00009AD3181B781A064D9B9B0001330099CB181B781B041A434D9B9B003A +:4023C00002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA944663444D9A9200D1504D9B01334D934D9B0F2BD4D900234D9300F09EFCC0467F +:40240000D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C341F3 +:402440004B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D218E34B97 +:402480004EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D84B4EA98C4663441B680D21CB415A40D44B4EA98C4663441B681621CB415A4002 +:4024C000D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA8844663449868C84B4EACA44663441C68C64B4EADAC4663445B68234303400B43D3184B93C14B61 +:402500004EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA98C466344DA61B74B4EAA944663449A69B44B4EA98C466344DB680621CB4119007C +:40254000B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B40D218A84B4EA98C4663445969A54B4EA884466344D868A34B4EACA44663441C69E1 +:40258000A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9B591C9A4B4EA8844663448900CB58D3184C93944B4EAA94466344DB690222D341B0 +:4025C0001A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB415A40884B4EA98C466344D969854B4EA8844663441B681940824B4EA8844663442A +:402600005868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93784B4EAA944663449A684C9BD218754B4EA98C4663449A604C9A4B9BD218714BF5 +:402640004EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB411900684B4EA8844663449B680B20C3415940644B4EA8844663449B681920C34149 +:402680004B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA4466344DC68584B4EADAC4663441B69634003404B40D2184D9B991C534B8900CB58D2189F +:4026C0004D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B690222D3411A00474B4EA98C4663449B690D21CB415A40434B4EA98C4663449B6916214C +:40270000CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA8844663441868374B4EACA44663449C69354B4EADAC466344DB69234303400B43D318B3 +:402740004B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218284B4EA98C4663445A61264B4EAA944663441A69234B4EA98C4663445B680621CA +:40278000CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920C3414B40D218174B4EA98C466344D968144B4EA8844663445868124B4EACA4467C +:4027C00063449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB58D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B6940 +:4028000006E0C046D4FEFFFFF43A0410F4FEFFFF0222D3411A00FE4B4EA98C4663445B690D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C46634459693E +:40284000F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C69EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9B49 +:40288000D218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA94466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B68FA +:4028C0000B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663449968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B68C7 +:40290000634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA8844663448900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C466344B4 +:402940001B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C4663441969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA4466344F8 +:402980001C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA694C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944B66 +:4029C0004EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA884466344DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C466B +:402A000063445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663445B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA88446CD +:402A400063448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C466344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C4673 +:402A80006344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA4466344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663445E +:402AC0009A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A604B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA88446CC +:402B000063449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA98C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4655 +:402B400063441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA8844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA986 +:402B80008C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA98C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EAC27 +:402BC000A44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA944663445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C466344F2 +:402C00005A60034B4EAA944663441A6806E0C046D4FEFFFFF43A0410F4FEFFFF4B4B4EA98C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA884 +:402C4000844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634458693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9BD0 +:402C8000D91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4B4EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234BE8 +:402CC0004EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA8844663449B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC46634450 +:402D00009B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4663441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D876 +:402D4000FFF762FB10234D9300F08CFFD4FEFFFFF43A0410F4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C34187 +:402D80005940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003409C +:402DC0004B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB581121CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B02 +:402E00004EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B00 +:402E40004EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA989 +:402E80008C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA95F +:402EC0008C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B6819409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B6835 +:402F0000234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C466344DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA999 +:402F40008C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA884466344DB681920C3414B40D218794B4EA98C4663445969764B4EA884466344C9 +:402F8000D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9B591C6D4B8900CB58D2184D9B01334D99481E6A494EACA4466144800041581120FA +:402FC000C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F494EADAC466144A4006158890A48404D998C1F5A494EADAC466144A400615840187D +:403000004D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F494EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD0095 +:403040006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93364B4EAA944663449F +:40308000DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B1E +:4030C0004EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B68234303400B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9AC6 +:403100004B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C4663449B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA88446634407 +:403140009B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFFF43A0410F4FEFFFF63441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC466344CF +:403180001B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA8844661444D98800041581120C1410800EE494EACA44661444D9CA40061581324E14167 +:4031C0004840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D99DA +:403200000D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAEB4466144AD006958C908614040184D990E390C00CC494EADAC466144A4006158C0 +:403240004418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B4EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84B97 +:403280004EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA884466344DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC4663445D +:4032C000DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C4663445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B2C +:403300004EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B4EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA884466B +:4033400063445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D2184D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA44661448000415879 +:403380001120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C71494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A40061582D +:4033C00040184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB4466144F7 +:40340000AD006958C908614040184D990D390C0055494EADAC466144A4006158441852494EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA94468C +:4034400063445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4663445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B69194057 +:40348000374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B69234303400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A609A +:4034C0004C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4663441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA88446A8 +:4035000063441B681920C3414B40D218144B4EA98C4663449968124B4EA88446634418680F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191D8A +:40354000084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C046D4FEFFFFF43A0410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A40095 +:4035800061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1EF3494EADAC466144A400615840184D990B390C00EE494EADAC466144A4006158E9 +:4035C0000724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D990B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EAD88 +:40360000AC466144A40061584418D9494EA88446614498004450D6494EA8844661449B005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B6970 +:403640000D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C4663441969C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C696A +:40368000BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BD218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAA67 +:4036C000944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB690B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634448 +:4037000059689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B68634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EAC28 +:40374000A4466144800041581120C14108004D99CC1C87494EADAC466144A40061581324E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EAD06 +:40378000AC466144A400615840184D990A390C0077494EADAC466144A40061580724E1410C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D0064 +:4037C0006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC466144A4006158441862494EA884466144980044505F494EA8844661449B005B58D31891 +:403800004C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB415A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA8C1 +:40384000844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EADAC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B13 +:403880004EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA944663445A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C341E9 +:4038C00059402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B4EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B6863400340BB +:403900004B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA4466144800041581120C14108004D990C1D10494EADAC466144A40061581324E1414840D9 +:403940004D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFFF43A0410CB494EADC5 +:40398000AC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD0069581225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D998B +:4039C0000A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3494EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4B62 +:403A00004EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B4EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4BF5 +:403A40004EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C46F2 +:403A800063445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B4EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D21818 +:403AC0007B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B4EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B0733CF +:403B00004D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC466144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A4840DF +:403B40005A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C40A0 +:403B80004D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661445E +:403BC0009B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663445B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C466344A0 +:403C000059682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663445C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A6987 +:403C40004C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B08334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4BD0 +:403C80004EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B072BE7D9002318004EB070BDF4FEFFFFD4FEFFFFF43A041000B589B0039002915D +:403CC0000192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039B1A68019BD218039B1A60039B1A68039B1A60039B1A68019B9A4204D2039B5B686C +:403D00005A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A0299180013F060FF039B28331A00039B11001800FEF718FB03000593059B002B20 +:403D400001D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039B11001800FEF700FB03000593059B002B01D0059B16E0029B40330293019B403BBF +:403D80000193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F023FF0023180009B000BD00B587B001900091019B1B683F2213400593059B5A1CB5 +:403DC0000592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059B3822D31A1A00002113F090FF21E0019B28331A00059BD018059B4022D31A1A00E7 +:403E0000002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D0049B43E1019B283338220021180013F06DFF019B1B685A0F019B5B68DB00134365 +:403E40000393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61229954039B1B0AD9B2019B62229954039BD9B2019B63229954029B1B0ED9B2019BE5 +:403E800064229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B2019B67229954019B28331A00019B11001800FEF759FA03000493049B002B01D045 +:403EC000049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009B9A1C019B9B681B0ADBB21370009BDA1C019B9B68DBB21370009B1A1D019BDB68DA +:403F00001B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB21370009BDA1D019BDB68DBB21370009B08331A00019B1B691B0EDBB21370009B55 +:403F400009331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B0B331A00019B1B69DBB21370009B0C331A00019B5B691B0EDBB21370009B0D33C2 +:403F80001A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F331A00019B5B69DBB21370009B10331A00019B9B691B0EDBB21370009B11331A0094 +:403FC000019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A00019B9B69DBB21370009B14331A00019BDB691B0EDBB21370009B15331A00019BC2 +:40400000DB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BDB69DBB21370009B18331A00019B1B6A1B0EDBB21370009B19331A00019B1B6A87 +:404040001B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6ADBB21370019B9B6E002B1ED1009B1C331A00019B5B6A1B0EDBB21370009B1D3335 +:404080001A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F331A00019B5B6ADBB213700023180007B000BD00B5A1B0039002910192009304AB8A +:4040C0001800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039904AB1800FFF7E8FD03001F931F9B002B0AD1019A04AB11001800FFF756FE030026 +:404100001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190019BD8220021180013F0F0FDC04603B000BD00B583B00190019B002B05D0019BE4 +:40414000D8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B10001900D8231A0013F040FDC04603B000BD000010B582B001900091019A00230024136077 +:404180005460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B2B4C9361D461019A2A4B2B4C13625462019A2A4B2A4C9362D462019A294B2A4C38 +:4041C00013635463019A294B294C9363D463019A284B294C13645464019A284B284C9364D46427E0019A274B274C13615461019A264B274C9361D461019A264B264C136233 +:404200005462019A254B264C9362D462019A254B254C13635463019A244B254C9363D463019A244B244C13645464019A234B244C9364D464019BD021009A5A500023180072 +:4042400002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E131D +:4042800019CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE51 +:4042C0001D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A441360F9E0824B6B441B68DB001A00A723DB006B441B689B181B78069300230793069B43 +:404300001B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A9300230B930A9B1B040D9300230C930898099904000C9A0D9B15002C430E94194305 +:404340000F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109B1B021393002312930E980F990400129A139B15002C431494194315915B4B6B4439 +:404380001B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B00199300231893149815990400189A199B15002C431A9419431B914D4B6B441B68DB001A1DF6 +:4043C000A723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B061E931A981B9904001E9A1F9B15002C432094194321913D4B6B441B68DB005A1DC9 +:40440000A723DB006B441B689B181B782293002323932299239A0B001B0C100007041F430B001E04209A219B1100314324913B4325932E4B6B441B68DB009A1DA723DB00B5 +:404440006B441B689B181B782693002327932699279A0B001B0E1000000201900198184301900B001B020093249A259B1100009C019D2000014328912A00134329931B4B0F +:404480006B441B68DB00DA1DA723DB006B441B689B181B782A9300232B932898299904002A9A2B9B15002C432C9419432D91104B104A6A44D2180D4B6B441B68DB00D31832 +:4044C0002C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DCFFE6E5E0E4F7FFFF3C0500001408000028FDFFFF18080000EB4B6B441B68991EF9 +:40450000EA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F92E14B6B441B68991EE04BE14A6A44D218CB00D3185C681B68590FE2001143319155 +:40454000620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24B6B441B68991ED14BD14A6A44D218CB00D3185C681B68A2069909029102991143F9 +:404580000291A30903933299339A0800029B039C1D006840349023005A403592C24B6B441B68D91FC14BC24A6A44D218CB00D3185C681B68349D359EED186641BA4B6B4455 +:4045C0001B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0763081A433792B04B6B441B680F3B1900AE4BAF4A6A44D218CB00D3185C681B684B +:4046000021061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A9023005A403B92A04B6B441B680F3B19009E4B9F4A6A44D218CB00D3185C681B683B +:404640006206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C9023005A403D923C993D9A491972418E4B6B441B68103B1C008C4B8D486844C018CF +:40468000E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C31819605A60814B6B441B6801337F4A6A4413607D4B6B441B684F2B00DC1DE77D4B6B447A +:4046C0001B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605460744B6B441B685C6A1B6AFF22D2006A44136054606F4B6B441B68DC6A9B6A4F +:40470000FE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654B6B441B68DC6B9B6BFC22D2006A4413605460604B6B441B685C6C1B6CFB22D200A9 +:404740006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A441360564B6B441B689A04FD23DB006B441B689B0B1A433E92FD23DB006B441B68FC +:404780009A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C1A434092FD23DB006B441B689A03434B6B441B689B0C1A4341923E993F9A08003B +:4047C000409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B68DB051A434592354B6B441B685A0AFD23DB006B441B68DB051A4344924299439A70 +:404800000800449B459C1D006840469023005A404792FA23DB006B445C681B6846984799C0186141FC23DB006B441A68FB23DB006B441B685A404892214B6B441A68214B86 +:404840006B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A682B0013404B93FB23DB006B441B684A9C4B9D22005A404C92124B6B441B682A000C +:404880005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68C918624112E0C0461408000028FDFFFF180800003C05000008080000EC070000C1 +:4048C000E4070000DC070000F83B0410EF4BF0486844C018EF4B6B441B68DB00C3185C681B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0F6A +:404900001A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A08DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A4350928B +:404940004E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B6B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A43549252991C +:40498000539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B441B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B01C1 +:4049C0006B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A685A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9CE5 +:404A00001D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A4413605460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A446F +:404A400013605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D2006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB009C +:404A80006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A436192814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A0380 +:404AC000794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A406592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0A63 +:404B0000FE23DB006B441B68DB051A4366926499659A0800669B679C1D006840689023005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC23DF +:404B4000DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B682F +:404B80006C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354BC7 +:404BC0006B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B681A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B6849 +:404C00001B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B441B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D00684005 +:404C4000749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B6B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D0037 +:404C80006840789023005A4018E0C04628FDFFFF18080000140800000C0800000808000004080000FC070000F4070000EC070000E4070000F83B0410D40700007992FA23D4 +:404CC000DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B93FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A439E +:404D00007D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F937A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B18BD +:404D40005441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B685B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C68DF +:404D80001B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4B6B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B25 +:404DC0006B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A438492FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859CC8 +:404E00001D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A4389929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B4E +:404E4000899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B688B +:404E80005A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B0013408F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A4091924B +:404EC000909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C91862416F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A44BC +:404F000013605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B441B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B6800 +:404F40009B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939A0800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B4461 +:404F80001B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB0000 +:404FC0006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A68FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B444C +:405000001A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09BA19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A44EB +:405040001360546080231B016B4419685A68F923DB006B445C681B685B185441802212016A4413605460F923DB006B4419685A68F823DB006B445C681B6817E008080000FD +:40508000D40700000C0800000408000014080000FC070000F4070000EC070000F83B041028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B6842 +:4050C0000133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A49280231B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B010F +:405100006B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A792A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0A8E +:40514000CE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A43AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C68D1 +:405180001B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B6B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093B0 +:4051C000AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B6B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB0052 +:40520000C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B685B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F0D +:405240001A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B441B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B6877 +:405280009B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B44B7 +:4052C0001B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B68134097 +:40530000BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B441B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B004B +:405340001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC499C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C6836 +:405380001B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B5A +:4053C0006B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B689B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B6880 +:405400009A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA9023005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0AD2 +:40544000174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A40CF92FE23DB006B445C681B68CE98CF99C0186141802317E0140800000408000020 +:40548000FC070000F4070000F83B041028FDFFFF18080000E4070000DC070000D4070000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A68B4 +:4054C000EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A682B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A0026 +:405500005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B68C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F9224E +:40554000D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64B9D +:405580006B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D892D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA099E +:4055C000B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A6874 +:40560000FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E3924E +:40564000FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E099E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B18544169 +:40568000F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B185441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68B2 +:4056C0005B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B441B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B4485 +:405700001B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D00E6 +:405740006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF92504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9C6D +:405780001D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384B6B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392A6 +:4057C000FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F59380231B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C49 +:405800001B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D486844C018194B6B441B68DB00C3185C681B685B185441F922D2006A44136054603B +:40584000194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC07000077 +:40588000080800000C080000F83B04101408000028FDFFFF18080000EC070000E4070000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A087E +:4058C000FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC9023005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B68DF +:40590000DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFAD0435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340A5 +:40594000FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B441A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A4393 +:40598000FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C686B +:4059C0001B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA2432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F923E6 +:405A0000DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B680133E1 +:405A4000904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A60FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B6878 +:405A80009A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B6891 +:405AC0001D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4B6B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB0544 +:405B00001A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD4C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168B6 +:405B4000C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A684C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D682300CF +:405B80001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA5C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A6029 +:405BC000FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B68C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F9224B +:405C0000D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C331A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB0057 +:405C40006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC0700008E +:405C8000E407000014080000DC07000008080000D40700000C080000F83B041028FDFFFF18080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C352860E1 +:405CC00023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB88331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB34 +:405D00007C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB90331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B4401 +:405D40001A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B681A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB0088 +:405D80006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC3584 +:405DC000286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B185441F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B1815 +:405E00005441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B44B6 +:405E40001B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A04924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B6808 +:405E80009B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFABC0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286037 +:405EC00023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFABD0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFAB58 +:405F0000C43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFABD8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A681A +:405F4000FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFABE0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B45 +:405F80006B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE4321468556822005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B6800 +:405FC0001B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B39486844C018304B6B441B68DB00C3185C681B685B185441F922D2006A4413605460F1 +:40600000314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B441B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B4D +:406040006B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B071A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A02515 +:40608000ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F4070000EC07000014080000E407000008080000DC070000D4070000F83B04109C +:4060C00028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B6B441A60A54B6B441B68DA0980231B016B441B685B061A43A123DB006B441A60CC +:40610000A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D44286023005A40974B6B441A6080231B016B441A68FF23DB006B441B681340A32281 +:40614000D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B441A68FF23DB006B441B681A43A423DB006B441A60814B6B441A68834B6B441B6889 +:406180001A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A522D2006A4413607B4B6B441A680B001340794A6A441360A323DB006B4419685A68F0 +:4061C0000800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B441A60A223DB006B445C681B68A622D2006A44116852685B185441F822D2006A446F +:4062000013605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441584A10 +:406240006A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF780FA514B6B441B6819695A694C4B6B445C681B685B1854414B4A6A441268136112 +:406280005461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412689361D461404B6B441B68196A5A6AFF23DB006B445C681B685B1854413A4A6A4452 +:4062C000126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324A6A4412689362D4622F4B6B441B68196B5A6BFD23DB006B445C681B685B18544146 +:40630000294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B185441214A6A4412689363D4631E4B6B441B68196C5A6CFB23DB006B445C681B681B +:406340005B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C681B685B185441104A6A4412689364D464002318000D4B9D44F0BDC04604080000A4 +:406380000C05000014050000FC0700001C05000024050000F40700002C0500003405000008080000140800003C0500001C08000070B58AB0059004910392039B002B01D1B7 +:4063C00000237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B68039A0092002201920099019A5B185441059A13605460059B5C681B68039A150057 +:4064000000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A9360D460099B002B3AD0039A089B9A4236D3059B50331A00099BD318089A04991800AB +:4064400011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079B2EE0049A089BD3180493039A089BD31A03930023099312E0049A059B1100180094 +:40648000FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B7F2BE9D8039B002B09D0059B50331A00099BD318039A0499180011F095FB0023A1 +:4064C00018000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959395994B1C95938F9B50225B189A1880231370959B702B0CD88F9B50331A00959B6D +:40650000D018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80239B1A1A00002111F0F1FB8F9B50331A008F9B11001800FDF7C5FE03009493949B0D +:40654000002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F3C9300233D938F9BDC689B685A0FE6001643DD003C993D9A0B002B4392931300A7 +:40658000334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F936B46F8229B181B788F99C0228B54939B1B0C4093002341936B460133FF331B7836 +:4065C0008F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54939B1B004493002345936B46882252009B181B788F99C3228B54939B1A02929B45 +:406600001B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929B1B0C0293029B13430293939B1B0C03936B461B7A8F99C5228B54939B1A06929BA7 +:406640001B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB28F99C7228B54919B1B0E4693002347936B468C2252009B181B788F99C8228B54C4 +:40668000919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9300234B936B46942252009B181B788F99CA228B54919B1B004C9300234D936B46C5 +:4066C000982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B1B0E07936B461B7E8F99CC228B54919B1A04909B1B0C0893089B13430893919B6A +:406700001B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B13430A93919B1B0A0B936B4628229B181B788F99CE228B54909B919CDBB28F99CF2271 +:406740008B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F009FCC046A8FDFFFF8F9B5C691B69230E4E9300234F936B469C2252009B181B78BF +:406780008E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B7813708E9B9A1C8F9B5C691B69230A5293002353936B46A42149005B181B7813700A +:4067C0008E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B191D8F9B5C691B692202180E0C900C9810430C90230E0D936B4630229B181B7841 +:406800000B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B4638229B181B780B708E9B991D8F9B5C691B692206180A1090109810431090230A119307 +:406840006B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9BDC699B69230E5693002357936B46AC2149005B181B7813708E9B09331A008F9B90 +:40688000DC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BDC699B69230A5A9300235B936B46B42149005B181B7813708E9B0B331A008F9BF1 +:4068C000DC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9BDC699B692202180E1290129810431290230E13936B4648229B181B780B708E9B73 +:406900000D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B181B780B708E9B0E3319008F9BDC699B692206180A1690169810431690230A1793DB +:406940006B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A008F9B5C6A1B6A230E5E9300235F936B46BC2149005B181B7813708E9B11331A000A +:406980008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A008F9B5C6A1B6A230A6293002363936B46C42149005B181B7813708E9B13331A009C +:4069C0008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B143319008F9B5C6A1B6A2202180E1890189810431890230E19936B4660229B181B780B7015 +:406A00008E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668229B181B780B708E9B163319008F9B5C6A1B6A2206180A1C901C9810431C90230A05 +:406A40001D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B18331A008F9BDC6A9B6A230E6693002367936B46CC2149005B181B7813708E9B193321 +:406A80001A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331A008F9BDC6A9B6A230A6A9300236B936B46D42149005B181B7813708E9B1B334B +:406AC0001A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C3319008F9BDC6A9B6A2202180E1E901E9810431E90230E1F936B4678229B181B781D +:406B00000B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B4680229B181B780B708E9B1E3319008F9BDC6A9B6A2206180A229022981043229064 +:406B4000230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B20331A008F9B5C6B1B6B230E6E9300236F936B46DC2149005B181B7813708E9BEF +:406B800021331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9B22331A008F9B5C6B1B6B230A7293002373936B46E42149005B181B7813708E9BF8 +:406BC00023331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B243319008F9B5C6B1B6B2202180E2490249810432490230E25936B4690229B18FD +:406C00001B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C27936B4698229B181B780B708E9B263319008F9B5C6B1B6B2206180A28902898104332 +:406C40002890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708E9B28331A008F9BDC6B9B6B230E7693002377936B46EC2149005B181B7813700F +:406C80008E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B7813708E9B2A331A008F9BDC6B9B6B230A7A9300237B936B46F42149005B181B781370A7 +:406CC0008E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B7813708E9B2C3319008F9BDC6B9B6B2202180E2A902A9810432A90230E2B936B46A82226 +:406D00009B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230C2D936B46B0229B181B780B708E9B2E3319008F9BDC6B9B6B2206180A2E902E9885 +:406D400010432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB213708F9AD023D358002B00D001E18E9B30331A008F9B5C6C1B6C230E7E930023F3 +:406D80007F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002381936B46802189005B181B7813708E9B32331A008F9B5C6C1B6C230A829300239E +:406DC00083936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C23008493002385936B46842189005B181B7813708E9B343319008F9B5C6C1B6C2202180E3090EC +:406E0000309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C2204180C3290329810433290230C33936B46C8229B181B780B708E9B3633190024 +:406E40008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B708E9B37331A008F9B5C6C1B6CDBB213708E9B38331A008F9BDC6C9B6C230E8693A8 +:406E8000002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893002389936B46882189005B181B7813708E9B3A331A008F9BDC6C9B6C230A8A939B +:406EC00000238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C9300238D936B468C2189005B181B7813708E9B3C331A008F9BDC6C9B6C2102180E50 +:406F00003690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6C9B6C2104180C3890389808433890230C39936B46E0215B181B7813708E9B3E338E +:406F40001A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B7813708E9B3F331A008F9BDC6C9B6CDBB213700023180096239B009D4470BDC04665 +:406F800000B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F803003B933B9B002B13D1029A039904AB1800FFF7FDF903003B933B9B002B0AD159 +:406FC000019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F83B9B18003DB000BD00B583B00190019B10331800D9F796FB019B180003B000BD28 +:4070000000B583B00190019B10331800D9F756FC019B180003B000BD10B582B00190054C054B9C4204D0503C2000FFF7E9FFF7E702B010BDD86A0008386A000830B583B0CC +:4070400001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4B180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B15 +:407080001900002006F074F9C04603B030BDC046FFFF0000186A0008C0000008455E0010386A00081970021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B070 +:4070C0000290039100920193009A019B0298039914F050FE03000C001A00009B5343180004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A601D +:40710000019A002300249360D460019A0023002413615461019A0023002413625462019B282200219954019B0022DA62019B00221A63019B00225A63019B38220021995486 +:40714000019B180002B010BD003F041000B583B00190074A019B1A60019B180000F08BF8019B1800DDF7DEFD019B180003B000BD003F041000B583B00190019B1800FFF785 +:40718000E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B6863 +:4071C0001800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B681800904703000C00019A13615461019B5B681B6828331A68019B5B6818009047BB +:4072000003000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C00019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BBF +:40724000DA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019B180000F091F8019B3822012199540023180004B010BD00B585B00190019B3822F3 +:407280009B5C01225340DBB2002B01D0002332E0019B34330121180005F078F903000393039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022B5 +:4072C000DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B382200219954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B0D2 +:407300000390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039B6C +:407340005868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A84703000593059B002B01D0059B04E0039B180000F00AF80023180006B070BD783E0410ED +:40738000B03E04105FF0FFFF10B582B00190019BDC699B69019A13625462019B282200219954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124BCE +:4073C0001EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF03000393039B002B01D0039B09E0019B5B681B6810331A68019B5B6818009047030097 +:40740000180005B000BDC0465FF0FFFF783E0410B03E0410F0B597B00790069104920593079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6BA7 +:40744000002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A0093019413000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA242C6 +:4074800002D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059AA24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079BDA +:4074C00058681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B15931C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059A16 +:40750000A24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B0014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A2E +:407540001B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B685B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A682A +:40758000DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FB03005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFB97 +:4075C0001C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B69E1 +:40760000049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B19695A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0027 +:4076400014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C69B4 +:407680001B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E00BE +:4076C00000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D048 +:40770000139B20E0089B099C1A00159B9B181593089B099C0499059A5B185441049305941C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFF783E0410A2 +:40774000C03E04100023180017B0F0BDF0B5C64600B596B00990089106920793099B38229B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF22180045 +:4077800004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089B1593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD030049 +:4077C0001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D102E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D6295 +:407800005E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D0099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FAA0 +:4078400003005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D81C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A93F3 +:407880000B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BBD +:4078C000DB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F931 +:40790000099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC689B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B681833F0 +:407940001F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D082 +:40798000119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B18C2 +:4079C00015930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B0014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFF783E0410B03E0410E1 +:407A000070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA03001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059B8D +:407A400038229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D893 +:407A800001D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BDC046783E0410DC3E041049 +:407AC0005FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB55 +:407B0000059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24211 +:407B400006D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BD783E0410DC3E04100D +:407B80005FF0FFFF10B582B00190012300241800210002B010BD10B582B00190012300241800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D0002390 +:407BC00000240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D00023002477 +:407C00000DE0039B5B681B6830331968039B5868009B019C1A002300884703000C001800210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B2D +:407C400009E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF10B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC696B +:407C80009B691800210002B010BD10B582B001900091009B5C681B68019A11685268A24202D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C68D1 +:407CC0001B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000082B00190034A019B1A60019B180002B07047C046783F041000B583B00190019B16 +:407D00001800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100920193029B039C01214942CA175B18544118002100009A019B14F01CF803000C00DD +:407D400019002200012300245B1854411A00009B5343180004B010BD10B584B00290039100920193009A019B0298039914F002F803000C001A00009B5343180004B010BDF2 +:407D800070B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B682C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF0300D5 +:407DC0000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029B012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F918B +:407E00000C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D00024E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029AF3 +:407E4000039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE030018930023199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B09 +:407E80000F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D910AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE0300049300230593D5 +:407EC0000E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9C98 +:407F0000C91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834BC1 +:407F40001800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF7B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A4D +:407F8000179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002422E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079B5E +:407FC000FFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B62 +:4080000019D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CAF +:40804000D2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D147230CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B00A6 +:4080800014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD047238B +:4080C0000CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E047230CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB18644194 +:40810000209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F931D +:4081400018E0C04658610410506B0008286B0008C000000849500010806B0008586B00081699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9BCA +:408180009A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E93415D +:4081C000DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074B180005F0C5F8054C10AB1800DDF720FA2300180022B070BDB06B0008886B000873 +:40820000C00000084950001070B58AB0802212020023069207936A4A002308920993069B079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA0300F3 +:408240005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DDF737FC0300009300230193009A019B28003100FFF74FFD03000893002309935A +:4082800002AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089809991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB6855 +:4082C0001B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB681800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB27E +:408300001A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264B89 +:40834000180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B681800904703000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D7F798FF69 +:4083800003000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC046F2 +:4083C000008007100F01FF80586104100C6B00080101FF80946C0008B46B0008C0000008ED8902103C3F041000B583B000230193144B1800DDF7C0FB0300180005F02CF9A2 +:40840000114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B04D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180026 +:4084400003B000BDD86A0008086B00080C6B000800B583B001900091009B002B0CD0009B18000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002B85 +:4084800001D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D0002300E00123180003B000BDC046B43F041082B00190034A019B1A60019B180002B094 +:4084C0007047C046783F041000B583B00190019B180000F00BF9019B180000F0F7F9019B180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F0C2 +:40850000ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B0122DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD34 +:4085400000B587B00390029101920023059300230493039B20331800DDF70EFB0300180005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E0E0 +:40858000029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF0CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039BC3 +:4085C0009B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B5D +:408600005B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B689B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B68AB +:408640005B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B681B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B6880 +:408680005B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B68DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B6884 +:4086C0001B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009B00225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA5D +:408700000300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B9A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B11 +:4087400011001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF70BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB0039002913A +:408780000192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B55 +:4087C0002F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A6037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039BD8 +:408800009A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B0133079352 +:40884000DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD3185A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B00190009113 +:40888000019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF76BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049BC1 +:4088C0001B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091019B013B0099180013F072F803000133009A5343180003B000BD30B58FB00590DE +:4089000004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A80DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD0000B6 +:4089400000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009AF8 +:408980009A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C2200219954019B00221A67019B742200219952019B00229A67019B8C2200219950019BDD +:4089C000902200219950019B942200219950019B982200219954019B9C2200219950019B180003B000BDC0469441041000B583B001900C4A019B1A60019B180001F0B8FC46 +:408A0000019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180003B000BD9441041000B583B00190019B1800FFF7DBFF019B180004F05FFD019BCC +:408A4000180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D318043340 +:408A80001A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB0CF +:408AC000079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD31802930023039348 +:408B0000049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA9446634494 +:408B40000A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B93079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B0082 +:408B800013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C0000231D000094019532003B00884703000993099B002B01D0034B00E0002318000DB00F +:408BC000F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D1800904702000B00069207938022120600230892099308AA06AB11001800FFF746F80300E5 +:408C00001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B6830331968059B986D119B009300230193009A019B884702000B000C920D93059B20 +:408C4000982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D1B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B884750 +:408C800002000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B9A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD31811939C +:408CC000C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059B88215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A7001236B +:408D00005B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B441978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68BB +:408D4000A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039308AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D92F +:408D8000934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9A109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE030089 +:408DC0001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE0A5 +:408E00001C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B139313 +:408E4000069B1293069B159AD31800221A7041E0059B90229B581393604A06AB11001800DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B18 +:408E800011001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD01C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B1100FE +:408EC0001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139A90 +:408F00001299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A1399159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D04A +:408F4000229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129BD31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129BE1 +:408F8000D31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A4202D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E01C +:408FC000C046179B180018B010BDC046836668540201FF800501FF800101FF80884104100701FF8010B598B00F900D920C933B236B440A1C1A700F9BDB6C1693324B17930D +:409000000D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B00221A601A9B1A680F9B5B6D9A4248D21A9B1B681B01169AD3181593159BDC689B683F +:409040001A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B2FE00F9B1B6FD9B20C9B1A680D9C0F9811AB0A9313AB099312AB089300230793D8 +:409080000123069300230593002304930023039314AB029300230193002300932300FFF725FE03001793179B074A934207D100E0C0461A9B1B685A1C1A9B1A60B1E7C0460A +:4090C000179B180018B010BD0701FF8010B584B0039002910192039B8C229B5819001820FFF7FAFB0400029B18000FF031F90200019BD018039B8C229B581900FFF7ECFBC0 +:409100000300E318180004B010BD0000F0B591B00990089107920693099B079A11001800FFF796F903001A0001235340DBB2002B01D0A84B4AE1169BA74A134001D0A54B2A +:4091400044E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF803005A425341DBB2002B0ED0099B5B6E0293002303930E9B0299039A9961DA611B +:409180000E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099B180000F0B7FC03000F930F9B002B00D0F8E0069A0799099B1800FFF787FF030036 +:4091C0000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B002B00D0E0E0099B1A6E0D9BD218099B9B6F9A4202D97B4B0F93DEE0099B1B6FDF +:40920000D9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002B1CD1099B1B6FD9B20C9A0E9B099800931823FFF709FC03000F930F9B002B00D090 +:40924000B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A934200D0A4E0169B002B00DAA2E0099B5A6D099B1B6D9A4204D3099B002118009D +:4092800000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6FD9B20E9BDC699B691C000D9A0998002300931300220001F017FD00230F930E9BEF +:4092C0009C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12196B411C0013000E9A136254620E9B00229A620B9A0E9B1A630A9A0E9BDA620E9B69 +:40930000374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803009AB20E9B9A810E9B0022DA810E9B069A1A610E9A01235B4214211800FFF7DDFA72 +:4093400002000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099B1B6FD9B20E9B5C6A1B6A1A000E9B9B891C000998079B00932300FFF79FFB030018 +:409380000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362546212E0C04608E0C04606E0C04604E0C04602E0C04600E0C0460E9B00221A6035 +:4093C000099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7F10040008836668540B01FF801201FF800701FF8070B588B005900491039202930023079319 +:40940000059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E0059B2833180004F017F9049B0693069B1B68002B02D1244B07933CE0069B9A6AC8 +:40944000029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA0200069B5A61059B1B6FD9B2069B5C6A1B6A1C00029A0598039B009313002200C8 +:40948000FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B197441069A13625462069B9A6A029BD218069B9A6200E0C046059B2833180004F0F4F8E7 +:4094C000079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6C0A93059B9C229A58049B9A4201D0714BDDE0049B0993099B1B68002B01D16D4BCB +:40950000D5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180000F0F8FAA9E0059B1B6FD9B2099BDC699B691A00099B059800931823FFF7BEFA63 +:4095400003000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000893089B002B02D0544B0B9385E0099BDC699B69059A526E029200220392029A1C +:40958000934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099BDA6A059B5B6D9A4213D2099BDB6A1B010A9AD018099BDB6A01331B010A9AD118F0 +:4095C000059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF83AE0099B34229B5C002B25D0099BDA6A059B5B6D9A4213D2099BDB6A01331B01B7 +:409600000A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FB059B5B6D5A1C059B5A65099BDA6A059B0121180001F0B0F8099BDB6A1B010A9A39 +:40964000D3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800059B8C229B581900FFF736F90200059B1A6602E0C04600E0C046099B00221A60B5 +:40968000059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44204D0059B0433180003F0FEFF0B9B18000CB070BD0101FF800501FF801C01FF8052 +:4096C00030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B6824331C68029D049A06A905980C9B00932B00A04703000793079B002B01D0079BA0 +:409700001AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B0AE0059B1B682C331B680699059A1000984703000793079B180009B030BDC046D4 +:409740000101FF8010B584B003900291039B1B6814331C680299039880231B06009300230022A0470300180004B010BD10B598B00F900E910D920C930F9B0E9A1100180004 +:40978000FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF0F9B1B6FD9B215AC0E9A0F9812AB019311AB00932300FFF715FC03001793179B1F +:4097C000002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB0893002307930023069301230593002304931B9B039316AB02930C9B01930D9B00932300FFF759 +:4098000075FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FF179B180018B010BD0101FF8010B598B00F900E910D920F9B0E9A11001800FEF72A +:4098400007FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9B1B6FD9B216AC0E9A0F9813AB019312AB00932300FFF7B6FB03001793179B002B37 +:409880002ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB0893002307930023069300230593002304930023039311AB029301235B420193002300932300FFF7BC +:4098C00015FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E0C04600E0C0460F9B0433180003F0DCFE179B180018B010BD0101FF8010B588B0F9 +:40990000059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006AB01225A8006AB00225A60059B5A6E059B9B6ED218039B1A60059B1B6814331C6818 +:40994000054B196806AA0598002300930823A0470300180008B010BD1004000830B591B005900392029313236B440A1C1A70039A13236B441978059808AB00931823FFF7A4 +:4099800063F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF040008AB9B891A0008AB1B69D018059B8C229B581900FEF790FF0300E31807931323D8 +:4099C0006B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B002B01D00F9B90E0059B8C229B5819001820FEF771FF02003A236B441A8013232A +:409A00006B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803000F930F9B002B01D00F9B6EE03A236B441B88039AD31803933A236B441B88029A5F +:409A4000D3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF796F803001A683A236B441A803A236B441D88059B90229B58039C13226A441178C5 +:409A8000059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B780122D31AD9B23A236B441C88059B90229B58029A059800932300FEF7FFFF03005E +:409AC0000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF777 +:409B0000EBFE0200149B1A600023180011B030BD8841041070B58CB00390039BDB6C0A93039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED2180398002300931300002208 +:409B400001F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE03000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B1100180015 +:409B8000DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B21D +:409BC000069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D0099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED3189F +:409C00000693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB6813000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099B94 +:409C4000002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B06930B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B57 +:409C800074229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF72DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B11005E +:409CC000180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD8841041070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E17931F +:409D00000D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9310AB099311AB089301230793002306930023059301230493002303930FAB0293A9 +:409D400000230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B20D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002BE8 +:409D800003D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB0D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B013A +:409DC000D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1C0D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A3B +:409E00000E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE746 +:409E4000C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B001900091019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB0B +:409E800003000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A60AB +:409EC0000023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB0D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA03008E +:409F000019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D1800FD +:409F400090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B07D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6DCD +:409F80001800904703000C0019000D9B8C229950402003F097FA030019000D9B90229950802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C2299506E +:409FC0000D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9B8C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F8F5 +:40A0000002000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD9AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B783361 +:40A0400018006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A670D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB089300230793B9 +:40A080000123069301230593002304930023039312AB0293082301930FAB00932300FEF725FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002234 +:40A0C00002F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D9801230093230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F0A0 +:40A1000013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1526B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB520037 +:40A14000D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D116AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B7422C8 +:40A180009A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B98002300930023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011ABB7 +:40A1C0005B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F11AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F03B +:40A2000007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6F0D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E49A6 +:40A240001B98002300930023002202F06DFAC046FFFFFF07DC3F04100101FF80100400080201FF8008400410304004101B01FF805440041084400410AC4004101B9B364A4E +:40A28000934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D9800F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA00 +:40A2C0003B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B1D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D026 +:40A3000018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D1800904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9B65 +:40A340006C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80D84004101B01FF8018410410404104101C01FF8000B585B00190019B0433180003F06CF9A5 +:40A38000019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B35 +:40A3C00003D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B3B +:40A400000433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B5A6E039B9B6ED2180B236B4419780398012300931300002200F056FC03001800AD +:40A4400005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B0433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A789C +:40A48000019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B4401321A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B74220121995273 +:40A4C000019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B0433180003F0E0F8029B180005B000BD0E01FF8000B589B0039002910192002307 +:40A500000793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE0039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002B9D +:40A5400003D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF03000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D0012363 +:40A5800000E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B9A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059B8A +:40A5C000069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B000BDC0460E01FF800101FF802001FF806441041010B598B00F900E910D920C93F2 +:40A600000F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9BE2 +:40A640001B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A9312AB099313AB0893002307930023069300230593012304930023039314AB029338 +:40A68000002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B0ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D1D9 +:40A6C000012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B41DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B4C +:40A700001793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C0122A1 +:40A740005340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B04D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F025 +:40A78000BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B236B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B05 +:40A7C00015D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B041 +:40A800007047000000B58BB005900491039200230993039B402B01D9354B66E0059B0433180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4A63 +:40A84000934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009313000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A802C +:40A88000049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009308234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6D6F +:40A8C0001800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059B0433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF8060 +:40A9000010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6834331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB00933A +:40A9400008234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E0D8 +:40A980000E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB110070 +:40A9C000180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B58139300230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A930C +:40AA0000059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D00B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A42FF +:40AA400004D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B1800FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B7878 +:40AA8000002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC0460501FF80884104100701FF800201FF8000B587B00390029101920093039B04331A +:40AAC000180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B2312 +:40AB000008AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C01225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C00CB +:40AB40000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A605AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C6891 +:40AB80000B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B1854410122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C686A +:40ABC0000B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F93C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B069300236F +:40AC00000793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B005900392029313236B440A1C1A7014AC039A13236B441978059813AB00932300D3 +:40AC4000FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179C6D +:40AC8000039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114B1DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A7031 +:40ACC00000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A700023180018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD0E8 +:40AD000008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF736FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B442F +:40AD4000197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B7801225340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A93EB +:40AD80000A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE7002318000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A609D +:40ADC000039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B1800DAF717FF039B180005B000BDC0469CFC031010B588B0059004910292039326 +:40AE00000A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F04DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029BCD +:40AE4000039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6808331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B0D +:40AE8000002B02D00A9B00221A60079B180008B010BDC046684104107C41041082B001900091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B0C2 +:40AEC00001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023180003B000BDC046684104107C41041010B588B0059004910292039300230793D2 +:40AF0000059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F04FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079315 +:40AF400003E001235B420793C046079B180008B010BD000010B584B001900091009B002B07D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180044 +:40AF800000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60019B1B6808331B68019A100098470023180004B010BDC046684104107C4104107B +:40AFC00010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F0CDF8029B07930E9B1B680B931B236B4400221A70039B1B6905930023002408932C +:40B000000994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD3181B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A70F1 +:40B040001B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B18544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB0F6 +:40B0800010BDC046684104107C41041010B58AB003900291009201930C9B002B07D1A423FF331A003249334B180001F067F8029B04930C9B1B680993002300240693079451 +:40B0C000019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B781A00039B1100180000F086F803001B06099A5340099317236B4408221A70172327 +:40B100006B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D0099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A706A +:40B14000DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099B1A400C9B1A60002318000AB010BDC046684104107C410410B71DC10482B001902A +:40B1800001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4420221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B23AB +:40B1C0006B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B47 +:40B200001B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B012213400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0858 +:40B2400000930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B0019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB2C8 +:40B28000180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB2002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BD996C00089B +:40B2C000986C000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A70064B1B78DBB2002B00D062B6C04610BDD8410410FC410410996C0008986C000881 +:40B3000000B585B003900291019200930299009A019B18000CF068FC0023180005B000BD82B002006B4606331A806B4606331B881A0007231340180002B0704700B585B09A +:40B34000039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4A0B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029B94 +:40B380009A40039B9A60C04605B000BDE502000018420410E602000010B582B001900091019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5EC9 +:40B3C0001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD684204109C42041000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B44B9 +:40B4000000229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B11001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F99D +:40B44000C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A23E8 +:40B480006B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E044 +:40B4C000039A0549054800230093002301F02CF9180005B000BDC046C04204103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D178 +:40B50000009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D119 +:40B5400001235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F0DBF8059B180007B000BDC046D442041061 +:40B580003001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B42180011 +:40B5C00002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF0300059302 +:40B60000059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046F44204103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B8811 +:40B640000D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B0121180000F03EFF00F0B8FEC04603B000BDC0469A6C0008FFFF000014430410DC +:40B680002301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A000949094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BD81 +:40B6C0009A6C00083C4304102401048010B586B000F06AFEFFF7A8FF03000C00049305940F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002BEF +:40B700000ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE00099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFE53 +:40B74000C04606B010BDC046A86C0008A06C0008F0B58FB00590059B5B6838229B5C002B00D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB69A6 +:40B78000984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944629 +:40B7C00063441B7801229A400B9B9A420AD1272304AA94466344262204A98C46624412781A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA9446C5 +:40B8000063441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D494D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474AA1 +:40B8400000230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B6877 +:40B8800000221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B21127872 +:40B8C0005A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D1400A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A59 +:40B900001A61059B5A68069B079C9361D461059B5A680023002413635463059B5B68392200219954059B5B683A2200219954059B5B68382201219954059B180000F01AF8C8 +:40B94000059B180000F0EEF902E0C04600E0C0460FB0F0BD5C4304107443041040420F0082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B6815939C +:40B98000159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149B9A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362B9 +:40B9C000159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E06E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A33 +:40BA000004DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119ADA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C844026005B +:40BA400008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BB4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24256 +:40BA800000D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B18544116931794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D46207 +:40BAC0005BE0364A00231298139910F073F903000C000E930F94159B9B68069300230793069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B680893CD +:40BB000000230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A94415B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD808 +:40BB4000039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A9B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6BA3 +:40BB8000169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F00F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A99410200BE +:40BBC0000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E00599994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079BA8 +:40BC00009A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C1A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D0021 +:40BC40001543049A9A401400244A00232000290080185941204A002310F08CF803000C000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E00002353 +:40BC80001F00049A059B3000390010F093F803000C0019002200114B0024C9186241080011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B68B4 +:40BCC0001B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D2E7 +:40BD000001230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E00023180004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6839 +:40BD400039229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6B1B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B20 +:40BD80009A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A0023000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F0FC +:40BDC000DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059A04991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D218FB +:40BE00000B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD5C4304107843041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B11001800D1 +:40BE4000FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB689847019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B6822 +:40BE80005B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6BA2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A60E0 +:40BEC000019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B0039083 +:40BF000002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089A9A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA242D6 +:40BF400002D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049ADA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA60D9 +:40BF800000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A4209D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE08C +:40BFC000039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD100F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B1800D2 +:40C00000FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C046BC43041010B5054B1B68002B04D0034B1B68034A10009847C04610BD1404000854 +:40C04000BC43041082B001900023180002B0704782B001900023180002B0704700B585B00190019B1B6810331B68019801220021984703000393039B002B01DA039B12E0F6 +:40C08000019B1B6810331B68019802220021984703000293019B1B6810331B680399019800229847029B180005B000BD00B583B0734601900091002293431A000099019BFA +:40C0C000180000F004F80300180003B000BD00B587B003900291019200230593029A039B110018000BF050FA03000593059B180007B000BD00B587B003900291019200231A +:40C100000593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734601900091002293431A000099019B180000F003F8C04603B000BD00B585B0039072 +:40C1400002910192029A039B110018000BF0D8F8C04605B000BD00B587B003900291019200230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B072 +:40C1800005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF8082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B020 +:40C1C000039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A0B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029B88 +:40C200009A40039B9A60C04605B000BDE502000014440410E602000010B582B001900091019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5E75 +:40C240001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD644404109844041000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B460121180032 +:40C28000FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B01330393039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F939 +:40C2C0006B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DDC8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C04633 +:40C3000003B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE03002393239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F06B +:40C3400005F8C04625B000BDA844041000B583B0019000F029F8019B18000BF0F9FF03001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019B82 +:40C38000012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB2180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF706 +:40C3C00063FF034B1B685A1C014B1A60C04610BDF06C0008B0440410CC44041010B5094B1B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C046A3 +:40C4000010BDC046F06C000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B003900291F8 +:40C440006B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A4209D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7004 +:40C4800017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B0039002910192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B4461 +:40C4C00001221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B4423 +:40C500006A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A6005 +:40C54000FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019B1B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF3C +:40C580000E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A0393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031ECF +:40C5C00005D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001235340DBB2002B01D0FFF73AFE012000F0C7FEC046F86C00080FB410B584B0744656 +:40C60000124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C48009300230022002100F019F80A490A480023002200F0B1F807AB0393039A069B11009A +:40C640001800FFF761FEFFF7B5FFC046F46C00080001FF8000450410346D000800B593B00390029101920093039B002B01DB264B039304AB3422002118000BF047FB04AB99 +:40C68000039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B04AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FEB6 +:40C6C000134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A90D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE01 +:40C700000023180013B000BD0101FF8020050008FC6C0008006D0008346D0008686D0008002318007047000010B586B0744605900491039202930F4B1800FFF765FE03005C +:40C740001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF77DFF089B029A0499034800F015F8FFF721FFC046F46C0008346D000882B0019087 +:40C78000019B002B01D0019B00E0024B180002B07047C0461845041070B58AB00790069105920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B046B +:40C7C0001B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FDA7 +:40C800003DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FD2DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD02 +:40C840001DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD0DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B1C +:40C880001800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF755FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B11001800EF +:40C8C000FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B9969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B11000D +:40C900001800FFF7F1FC144B1800FFF7EDFCC0460AB070BD244504101C4704107845041090450410A0450410B0450410C4450410D8450410EC450410FC45041014460410B3 +:40C94000284604103C46041044460410484604105C460410B44604100047041000B583B0FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B4800230093AA +:40C980000023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BD6C6D0008FFFF00006C4704102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD86 +:40C9C0000A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80FFF7FCFCC04603B000BDC0466C6D00089C4704102401018000B583B0FFF7D4FC10 +:40CA00000D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF783FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BD6E6D0008FFFF000099 +:40CA4000C44704102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B881A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFCD5 +:40CA8000C04603B000BDC0466E6D0008F04704102401018010B5074B1B68002B08D0054B1A6801235B421900100003F08DF800E0C04610BD5878000810B5064B1B68002B06 +:40CAC00005D0044B1B68180003F0A8F800E0C04610BDC0465878000884B00390029101921D235B42180004B0704782B0019016235B42180002B0704782B0019001231800ED +:40CB000002B0704782B001900023180002B0704700B585B003900800110001930A236B44021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D19B +:40CB400002AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F051FE00E0C046039B180005B000BDC046A049041078770008A088000800B587B0BC +:40CB8000039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00064B1100180009F047FE059B01330593EDE7019B180007B000BDC046A0880008AB +:40CBC00000B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE0300DAB2059B1A700123180007B000BDA088000800B585B001900A006B46023311 +:40CC00001A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FE031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B46F5 +:40CC400002331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B07D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDC0 +:40CC8000A088000882B001900023180002B0704782B001900023180002B0704710B5174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FB4B +:40CCC00003005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046FC6D00089F +:40CD000001050000F86D0008C000000825D5021000B585B00190019B1800FFF7B9FF03000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039BEF +:40CD400002E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E00C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF030013 +:40CD80000393044B019A92000399D150039B180005B000BD1804000800B583B00190019B180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF0300C3 +:40CDC0000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4215E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF803003E +:40CE0000029A52421A6001235B4200E00023180005B000BD1804000882B001900023180002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A00E7 +:40CE400001235340DBB2002B01D0012300E00023002B07D0059A55495548002300930023FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B0893002328 +:40CE80000B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099AA6 +:40CEC0000B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F803000793079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BAB +:40CF0000D3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA01235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B448B +:40CF400012781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A1A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD31804 +:40CF80000B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C04600E0C0460B9B18000DB000BD184804102F010180B86D00085448041000B587B09B +:40CFC000039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF030009221A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002BFD +:40D0000008DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB00590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B35 +:40D0400001D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002B07DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031EC8 +:40D0800065D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE0089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD11B +:40D0C0001F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059BD3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B784E +:40D100000A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B4405 +:40D140001A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099B18000BB000BDC046584804102F010180786D000800B587B0039002910192039BF2 +:40D180001800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E0059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE0300E5 +:40D1C000049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019A0299039B180000F006F803000593059B180007B000BD00B587B0039002910192CC +:40D20000039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B4216E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFE84 +:40D240000300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B39 +:40D280001B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A52421A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B685C +:40D2C0000593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB2002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B68D3 +:40D30000D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B07047C0461805000814890008746D0008706D000800B583B001900C4B1B689B688E +:40D34000180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B002B01D0FEF77CFFFEE7C0467406000884B00390029101920123180004B0704736 +:40D3800000B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B0704700B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F0BF +:40D3C00037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039BE5 +:40D400001B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB2039B1A700123180005B000BD8C050000A0480410C048041000B585B00190019B6F +:40D440000393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B785BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC046A5 +:40D4800094050000A0480410E848041000B587B00390039B18000AF063F803000593059B002B07D1039A05490548002300930023FFF73AF9059B180007B000BD28490410E0 +:40D4C0001F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05490548002300930023FFF71EF9059B180007B000BD484904101F01018000B583B067 +:40D500000190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04603B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BD81 +:40D54000A049041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB234 +:40D58000002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B180004F029FAC04605B000BDE84904100601018000B583B00190019B180000F0CA +:40D5C000A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FBE6 +:40D60000009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB0B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B33229F +:40D640001800FEF79BFDC04607B000BD704A04108C4A0410A04A041000B587B00390039B1A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B41 +:40D680001A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BDA44A04101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F05B +:40D6C000ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180007B000BDB84A04101701028000B583B00190019B1B68180002F0B6FA019B1800BA +:40D7000000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023A1 +:40D74000DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A0093084B009A1A60084B019A1A6000F06EF800F08AF81889000800000108646E000838 +:40D78000606E0008746D0008706D000810B5154B154A1A60134B0B225A60124B1C22DA60104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A6072 +:40D7C0000C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC04610BDC046206E0008CC4A0410046E0008006E0008506E0008DC4A0410346E0008F7 +:40D80000306E000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B421900100002F0D1F9C04603B000BD006E000800B583B00190044B1B68180002F0EEF913 +:40D84000C04603B000BDC046006E000810B500F013F804F043F900F011F8C04610BD10B5FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F0AF +:40D8800031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204B214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4B77 +:40D8C00018229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A11491248C4 +:40D90000002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC04624780008E84A04100878000834780008A07800085C780008F84A0410587800081D +:40D940005FD80210004B04101D0101801C4B041000B583B00190064B1B68002B04D0044B1B68019A10009847C04603B000BDC046686E000800B583B0019000F017F900006A +:40D9800000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A1449154875 +:40D9C000002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A10491148002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046004D041017 +:40DA0000344B041025010280584B041026010280804B041027010280B84B041028010280F44B04102A010280344C04100001028082B00190019B0633052B10D89A000A4B4A +:40DA4000D3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B180002B07047C046184D0410504C0410684C04109C4C0410B44C0410C44C0410FD +:40DA8000DC4C0410F84C041000B585B00390039B1800FFF7CDFF0100039A0348002300930023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039A1C +:40DAC0000248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF0100039A0248002300930023FEF71CFE3301018000B585B003900291029B113356 +:40DB00000BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BD3401018000B585B003900291029B1800FFF77EFF0100039A0248002300930023E9 +:40DB4000FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A0248002300930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FE44 +:40DB8000C04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF771FDFEF71BFCC04610BD000010B5024B1B689847FBE7C0461C0500087046C0089C +:40DBC0002CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB91421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60CF +:40DC0000906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF30880D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E467047AE +:40DC400001B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E734050008544E041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B7E +:40DC80005A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F01FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031EAE +:40DCC00009D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC0468DDC021082B0EFF305830193019B5A1E09 +:40DD00009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A52024E +:40DD4000920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002349E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B24 +:40DD800007D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B07D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904B5B +:40DDC000DA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B1900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B691900FE +:40DE0000100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BDA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B802260 +:40DE40009A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674BDA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B1968B2 +:40DE80005F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B9B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FA93 +:40DEC000031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B1968474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404BDD +:40DF00001B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FA031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C1968B8 +:40DF40002F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284B9B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA2A +:40DF8000031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C1968174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B35 +:40DFC0001B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC0462005000883 +:40E00000544D04102805000800B585B0314B1B7A012B07D007235B421800FFF735FD01235B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FD3D +:40E0400001235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B421800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F00C +:40E08000CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B180002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019BE2 +:40E0C00083F31488034B02221A720023180005B000BDC04620050008544D04104DDC02103C05000880B582B000F03AF8FFF702FE031E03D1FFF709FE031E08D006235B42C7 +:40E100001800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BD55DD021080B582B0FFF7E4FD031E03D1FFF7EBFD031E08D006235B421800FFF72D +:40E14000A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BD09E00210C046704782B00190019B180002B0704784B001900091019A009BD3180393039BF8 +:40E180000293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D1009B0722134002D1009B172B01D8002329E0019B1800FFF7D5FF03000393039B8D +:40E1C000009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019B11001800FFF7C4FF0200029B1A60029B1B6800221A60029B1B6810225A60029B55 +:40E2000000225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B03D0019B0322934301D0002384E0029B08330793079B0733072293430793039BEE +:40E2400008211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343069AD31A0693069A079B9A4208D2089B1B680893089B1B68002BE7D100235BE026 +:40E28000C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B68083B1A00039B11001800FFF761FF03000593059B5C68039B1800FFF753FF030070 +:40E2C0005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079A019B1A43089B5A60089B08211800FFF73FFF030009931EE0089B5B680322934314 +:40E300001A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B5A60089B059A1A60059B08211800FFF71FFF03000993099B18000AB010BD00B5BA +:40E3400087B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FF03000393039B083B039300230493019B08211800FFF7FCFE0300059309E0059B4B +:40E380000493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7E1FE03005968059A5268032082438A1A5A60049B002B03D1059B00225A6003E08C +:40E3C000059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B0019018 +:40E40000019B180002B0704782B00190019B180002B07047014B5B69180070472005000886B00390029101920093039B002B08D0029B002B05D0019B002B02D0009B002BB4 +:40E4400001D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039B009A5A61029B019A5343009AD218039B1A61009B059308E0059A019BD318049393 +:40E48000059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180006B0704786B00190EFF310830393039B0593019B002B01D1002314E072B6019B15 +:40E4C0005B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B00D162B6049B180006B0704784B001900091EFF310830293029B0393019B002B4A +:40E5000009D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B5A69009B1A60019B009A5A61019B5B685A1E019B5A60039B002B00D162B600231D +:40E54000180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF03000393039B002B0FD0019B1800FFF74CFF0300180002F053F9030002930399029BFF +:40E580000022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FFF7B9FA0023F9E0039B0793029B033303226F +:40E5C0009343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D804235B4219000020FFF79CFA0023DCE0079B069A53430593019B002B48D0019B64 +:40E600001B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322134003D1019BDB68232B13D809235B4219000020FFF776FA0023B6E0019BDB6811 +:40E64000002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134003D1049A059B9A4218D20A235B4219000020FFF757FA002397E0049B002B0DD060 +:40E680000A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002B1CD1434B9C229B58002B08D0404B9C229B581800FFF7F6FE03000B9309E03C4BFE +:40E6C00080229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D12F4B9B6F059900221800FFF787FD030016 +:40E700000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B9C229B580B9A11001800FFF7DFFE07E01F4B80229B580B9A11001800FFF7FFFD0A +:40E7400000230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A431A700B9B002B19D00B9B06221A700B9B27226A4412789A700B9B089A5A600B9B47 +:40E7800000229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B4219000020FFF7BEF90B9B18000CB010BD2005000847E5021010B584B001900091E2 +:40E7C000019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039B11001800FFF79EF9002320E0039B0C331800FFF757FE03000293029B002B15D128 +:40E80000009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF7F9FD03001900200001F0C2FF029B180004B010BD00B587B001900091019B180024 +:40E84000FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800FFF760F904235B422AE0059B0C33009A11001800FFF73AFE03000493049B002B76 +:40E880001DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B1800FFF7B1FD0300180001F0B8FF030002930399029B0122180002F0EBF9049BDF +:40E8C000180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0039B1B78062B02D1009B002B08D004235A42039B11001800FFF714F9002307E0A4 +:40E90000039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B1800FFF76BFD03000393039B002B03D0039B1B78062B09D004235A42039B110063 +:40E940001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029B002B07D1039B1800FFF74EFD0300180001F026FE029B180005B000BD80B588B09B +:40E98000039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF7C1F8002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0022 +:40E9C00000DF03000793079B180008B080BDC04691E5021080B586B001900091FFF7F8FC031E03D1FFF7FFFC031E08D0009A019B11001800FFF767FF030005930BE0019B2B +:40EA00000493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046B9E7021080B586B001900091FFF7D0FC031E03D1FFF7D7FC031E08D0009A019B34 +:40EA400011001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044B1F0000DF03000593059B180006B080BD35E8021082B0EFF305830193019B5A1EB2 +:40EA80009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B6918007047A4 +:40EAC0002005000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B05930023049304E0059B0493059B5B680593059B002B05D0059BDA78009BDB78FF +:40EB00009A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B009ADA62049B002B03D0049B009A5A600FE0019B009A1A630BE0009B00225A6054 +:40EB4000009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B002B00D162B6C04606B0704788B00190EFF310830393039B069372B6019B9B6AE9 +:40EB80000593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD0019BDB6A079314E072B613236B44079A92781A70079B01229A70069B002B00D1E4 +:40EBC00062B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0C046079B180008B0704782B001900091009B5B68002B05D0009B5B68009A92686A +:40EC00009A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E0009B5A68019B1A63C04602B0704700B589B00190019B9B78002B5ED0019BDB680A +:40EC40000793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF745FC079B9B68002B00D195E0079B9B685B78932B00D08FE0079B0C331800FFF733 +:40EC800011FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03000593059B00220021180001F0F3FF059B180001F03FFF03000493049B08331B68D0 +:40ECC0000393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A70049B0C331B68DAB2069BDA70069A079B11001800FFF7E6FE4EE0019B9B68079343 +:40ED0000019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE0300180001F07BFD03000593059B00220021180001F0AEFF059B180001F0FAFE03 +:40ED400003000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B0C331B68002B06D0049B0C331B681A00019BDB781370019B00221A70079B0C3344 +:40ED8000019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FEF7B5 +:40EDC000C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C0007980CF0AAFF0300DBB2E3181F2B07D804235B4219000020FEF7A7FE0023E8E0039B99 +:40EE0000079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6905930B9B002B0FD00B9B0322134003D1019BDB68332B13D809235B421900CB +:40EE40000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE0023B6E00A9B002B0FD00A9B0322134003D1059A069B9A4218D20A235B42190000208C +:40EE8000FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E00023089300230B9300230A930B9B002B1CD1494BA0229B58002B08D0474BA0229B5837 +:40EEC0001800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1364B53 +:40EF0000DB6F069900221800FFF780F903000A930A9B002B1ED127236B441B780122134015D02D4BA0229B58002B08D02A4BA0229B580B9A11001800FFF7D8FA07E0264BB1 +:40EF400080229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FE27236B4427226A44127802210A431A700B9B002B25D00B9B08221A700B9B2722D4 +:40EF80006A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B0022DA620B9B00221A630B9B0C3318000A9B079A0399FFF733FA074B074A1A671A +:40EFC00005E005235B4219000020FEF7BDFD0B9B18000CB010BDC046200500082FEC021010B58CB00390029100936B4607331A70039B1800FFF754FD03000A930A9B002B3C +:40F0000006D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD04235B428DE00A9B9B68002B35D00A9B9B685B78832B30D10A9B1800FFF737FD0300E5 +:40F04000180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD03000893089B08331B6807930A9B5A6A0299079B180008F0B8FD089B0C331B68002B4A +:40F0800007D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF701FA03000693069B002B1CD0069B0C3318000A9B5A6A029B190008F095FD069B83 +:40F0C00007221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC00230B932BE0009B002B25D0009B1900932001F0F5FD031E1AD00A9B1800FFF751 +:40F10000D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833029A1A60089B0C336A46073212781A6002235B420B9302E003235B420B930B9B6C +:40F1400018000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF7E4FCCA +:40F1800004235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800FFF723FD099B0C3319000A9B5A6A029B180008F019FD019B002B03D0099BDA7888 +:40F1C000019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D00A9B9B685B78932B3ED10A9B0C331800FFF758F903000993099B002B34D00A9BE8 +:40F200001800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B180001F087FC03000793079B08331B680693099B0C3318000A9B5A6A069B1900B9 +:40F2400008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9B11001800FFF72EFC00230B9329E0009B002B23D0009B1900832001F031FD031E18 +:40F2800018D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF309830593059B0793079B0833029A1A60079B0C33019A1A6002235B420B9302E003235B42BC +:40F2C0000B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7DFFB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D0D0 +:40F3000004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F803000593059B002B26D0059B0C331800069B5A6A029B190008F057FC059B07221A70A5 +:40F34000059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A60059B1800FFF7A2FB0300180001F028F90023079302E003235B420793079B180054 +:40F3800009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B110018002E +:40F3C000FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C331900069B5A6A029B180008F0FDFB019B002B03D0059BDA78019B1A70059B0C332E +:40F40000069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793079B180009B000BD80B588B0039002910192FFF71FFB031E03D1FFF726FB031E50 +:40F4400008D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046A1ED0210CA +:40F4800090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD0009C6B4607331A78029903982300FFF70CFF0300099319E0039B0893029B07936B +:40F4C0001B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A00059B044C270000DF03000993099B18000BB090BDE1EF021090B58BB003900291FE +:40F5000001920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF0300099313E0039B0893029B0793019B0693009B0593089B1800079B1900069B50 +:40F540001A00059B044C270000DF03000993099B18000BB090BDC04647F1021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E93417F +:40F58000DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070472005000800B587B00190019B059331E0059B5B690493059B14 +:40F5C000DB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF0300180001F01BF903000393039B00220021180001F04EFB059B039ADA60039B93 +:40F60000DA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BCAD1C04607B000BD00B587B00190019B002B27D0019B1B680293019B5B68049326 +:40F64000019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B4219000020FEF734FA00235EE0019BDB68002B0DD009235B4219000020FEF728FA21 +:40F68000002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0234B94229B581800FEF7FCFE0300059309E01F4B80229B5801221C211800FEF7E5 +:40F6C000A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B04221A70059B0F226A4412789A70049BDAB2059BDA70059B029A5A60059B0022E6 +:40F700009A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B4219000020FEF7D4F9059B180007B000BD2005000800B587B001900091019B180007 +:40F74000FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B11001800FEF7B6F901235B4289E0049B002B03D0049B1B78042B09D004235A42049B1100D6 +:40F780001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049B5A61049B00221A61039BDB6A002B03D0039BDB6A049A1A61039B049ADA62049B52 +:40F7C00001221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D1049B1B7EFF2B0AD110235A42049B11001800FEF76DF903235B4205933EE0049B6A +:40F800001B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A000223134014D0049BDB6820229A56039B20215B569A420BDA049BDB68039A20215156202235 +:40F840009954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF799FE0200039B1900100000F0A1FF02235B42059302E003235B420593059B180072 +:40F8800007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B002B09D108235A42059B11001800FEF70FF901235B42A8E0059B002B03D0059BCE +:40F8C0001B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002B09D10F235A42059B11001800FEF7F0F803235B4289E0059BDA68049B9A4209D0A7 +:40F900000E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A76059B1B7E002B00D06EE0059B5B69002B04D0059B5B69059A12691A61059B1B6913 +:40F94000002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A00022313402AD01B236B44049A2121525C1A70049BDB6A079317E0079B9B68002B10D084 +:40F98000079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C1A70079B5B690793079B002BE4D1049B1B226A44202112785A54059B9B68002BDD +:40F9C0001FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F059F9059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B012256 +:40FA00001A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD03000393039B002B03D0039B1B78042B09D004235A42039B11001800FEF749F804235E +:40FA40005B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B69039A12691A61039B1B69002B05D0039B1B69039A52695A6103E0039B5A69029BE7 +:40FA8000DA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059317E0059B9B68002B10D0059B9B6820229B5613226A44127852B29A4206DA059BC3 +:40FAC0009A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613226A44127852B29A4209D0029B13226A44202112785A54029B180000F0B0FE039B4A +:40FB00009B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B0022180001F0B6F8039B9B68002BEAD1002001F059F8039B00221A70039B9B7887 +:40FB40001A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF7C5FC07E0054B80229B58039A11001800FEF7E5FB0023180007B000BD200500084F +:40FB800080B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF797FF0023039308E0019B0293029B1800044B1F0000DF03000393039B180004B040 +:40FBC00080BDC04629F6021080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD006235A42019B11001800FDF771FF06235B4205930BE0019B0493009B0393049B67 +:40FC000018000399044B1F0000DF03000593059B180006B080BDC04635F7021080B584B00190FFF79BFC031E03D1FFF7A2FC031E0AD006235A42019B11001800FDF748FF69 +:40FC400006235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04685F8021080B584B00190FFF775FC031E03D1FFF77CFC031E0AD0062350 +:40FC80005A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04611FA021082B0EFF305830193019B5A1EB0 +:40FCC0009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B691800704752 +:40FD00002005000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B89013B9AB2019B9A810123059301E000230593049B002B00D162B6059B180006B02C +:40FD4000704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B9B8901339AB2019B9A810123059301E000230593049B002B00D162B6059B18006E +:40FD800006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B1800FFF7A3FF0300180000F038FD03000393039B00220021180000F06BFFC046D0 +:40FDC00005B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B9A4207D904235B4219000020FDF782FE002373E0019B002B24D0019B1B68059320 +:40FE0000019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B4219000020FDF766FE002357E0019BDB68002B0BD009235B4219000020FDF75AFE00 +:40FE400000234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98229B581800FEF71EFB0300079309E01E4B80229B58012210211800FEF7C7F90300FA +:40FE800007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A70079B1B226A4412789A70079B059A5A60079B00229A60029B9AB2079B9A81039B6B +:40FEC0009AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B000BDC046FFFF00002005000885FD021010B584B001900091019B1800FFF7F0FE8A +:40FF000003000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD04235B4226E0029B1800FFF7EBFE031E02D0002303931CE0009B002B16D0009BA4 +:40FF40001900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE03001900200000F026FC02235B42039302E003235B420393039B180004B010BD00B587B001905E +:40FF8000019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B11001800FDF7A6FD04235B422AE0049B9B68002B12D0049B1800FFF797FE030097 +:40FFC000180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800FFF7AFFE031E02D00023059309E011235A42049B11001800FDF77CFD03235B428B +:020000041003E7 +:400000000593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039B002B03D0039B1B78052B09D004235A42039B11001800FDF75DFD04235B423BE050 +:40004000039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB0300029303235942029B0022180000F015FE039B9B68002BEAD1002000F0B8FD039B00221A70039B85 +:400080009B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A11001800FEF724FA07E0064B80229B58039A11001800FEF744F90023180005B000BDC0465C +:4000C0002005000800B585B001900091019B1800FFF706FE03000293029B002B06D0029B1B78052B02D1009B002B09D004235A42029B11001800FDF7FDFC04235B420CE0EB +:40010000029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD00B585B00190019B1800FFF7D9FD03000293029B002B03D0029B1B78052B09D0A3 +:4001400004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD0029B1800FFF7C2FD0300180000F028FA0023039309E011235A42029B110018000F +:40018000FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF789FD031E03D1FFF790FD031E08D006235B4219000020FDF79DFC002307930EE0CC +:4001C000039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046C5FD021080B586B001900091FFF75EFD031E03D1FFF765FDCD +:40020000031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046F1FE021080B584B0D7 +:400240000190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC0467BFF021014 +:4002800080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B11001800FDF728FC06235B42039308E0019B0293029B1800044B1F0000DF03000393039BED +:4002C000180004B080BDC0460D000310024B802252055A60C046704700ED00E082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047A5 +:4003000082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047014B1B7A180070472005000886B00190EFF310830293029B04930E230A +:400340006B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B56229B5A013399B2164B56229952144BDA6D134B58215B5A9B00D318019A1A60104B1F +:4003800058229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084B5822002199520123059301E000230593049B002B00D162B6059B180006B070479B +:4003C0002005000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B61C4B56229B5A002B29D01A4B56229B5A013B99B2174B56229952164BDA6D154B5A +:400400005A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B5A2299520B4B5A229B5A6A46063212889A4206D1074B5A220021995201E0002394 +:400440000393029B002B00D162B6039B180005B000BDC0462005000800B583B001F0C2FA2D4BDB685A1C2C4BDA602B4B1B6D002B02D0294B1B6D984700F004FB002000F08E +:40048000B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B1A6C1D4BDA6334E01B4BDB6B002B04D0194BDB6B5A1E184BDA63174BDB6B002B04 +:4004C00027D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B9B6B20215B569A4213D1019B180000F0DCF9094B9B6B180000F0F2F9019B1800FB +:4005000000F062FB044B019A9A63034B1A6C024BDA63C04603B000BD2005000810B582B0FFF750FF03000193019B002B3CD0019B1B78072B36D89A001F4BD3181B689F461A +:400540001E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFE03001800A0471EE0144B9C6E019B1800FFF7C6FE03001800A04714E00F4BDC6EF7 +:40058000019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800A04700E0C046BBE7C046002000F01CFBC04602B010BDC046584E04102005000876 +:4005C00000B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE08E0064B01229A7204E0019B19000220FDF7C6F9C04603B000BDC046200500088F +:4006000082B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B002006B4607331A702023180002B0704782B0EFF305830193019B5A1E9341DBB21800CA +:4006400002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047000040 +:40068000014B1B7A1800704720050008014B5B69180070472005000882B00190024B019A5A61C04602B070472005000886B001900091EFF310830393039B059372B6019BF2 +:4006C0009A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B0704786B001900091EFF310830393039B059372B6019B9B6A0493019B9B6A009AD2430D +:400700001A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019B0222134029D1EFF310830593059B069372B6039B9B6A0793019B0122134005D05F +:40074000079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079306E0039B9B6A029AD2431A40039B9A62069B002B18D162B616E0039B9B6A079358 +:40078000019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029A134001D100230793079B180008B0704700B587B001900091009B002B2CD0009BCD +:4007C00020229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DA009B059ADA60009B2D +:40080000049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B584B00190019B9B680393039B002B12D0039B9A68019B9A60039B9B68002B07D03E +:40084000039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B585B00190019B039302E0039BDB680393039B002B03D0039B1B78012BF5D0039B41 +:400880001800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B11001800FFF786FFC04605B000BD82B00190019BDB68002B10D0019BDB68019A92689A60EF +:4008C000019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B07047000000B583B00190019B01225A70019A044B11001800FFF75CFFC04603B000BDC04663 +:400900003C05000884B001900091009B013321D1002303932C4B1B6B029304E0029B0393029B1B690293029B002BF7D1019B009ADA61019B039A5A61019B00221A61039B73 +:40094000002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E0029BDB69009AD31A0093029B0393029B1B690293029B002B04D0029BDA69009B37 +:400980009A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A1A6102E0084B019ADA62029B002B08D0029BDA69009BD21A029BDA61029B019A0A +:4009C0005A61C04604B070472005000882B00190019BDB69013323D1019B5B69002B04D1274B1A6B019B9A4246D1019B1B69002B04D0019B1B69019A52695A61019B5B693D +:400A0000002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0019B5B69002B04D1154BDA6A019B9A4222D1019B1B69002B0DD0019B1B69019ADC +:400A40001269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6103E0019B1A69024BDA62C04602B07047C04610 +:400A80002005000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019BDB69002B42D1019B5B78532B12D006DC332B11D0432B11D0132B11D019E0732BB1 +:400AC00010D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046019B1800FFF7D8FE019B1800FFF71E +:400B0000EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00225A61034B019ADA6200E0C04603B000BD2005000810B584B00190019B9C6B019B55 +:400B400022229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019B01225A70019B20229B560393154B1800FFF77FFD03000593059B9B68049304E0ED +:400B8000049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B059ADA60019B049A9A60059B019A9A60049B002B02D0049B019ADA60C04607B048 +:400BC00000BDC0463C05000800B583B00190019B02225A70034B019A9A6100F0BBF8C04603B000BD2005000810B586B0019017246C44FFF745FD03002370FFF747FD03003A +:400C00000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B002B31D0039B20229A56049B20215B569A4229DD039B1800FFF737FE049B180078 +:400C4000FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B20229A56049B20215B569A4208DD049B1800FFF771FF019B1800FFF7A5FF03E0EB +:400C8000019B1800FFF72CFEC04606B010BDC0462005000800B587B0039002916B4607331A70039B1800FFF745FF03000593059B029A1A60039B1800FFF788FE6B460733BF +:400CC0001B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD000000B585B0020000916B4607331A70FFF7C7FC0300022B01D0002324E0FFF7C6FC94 +:400D000003000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A46073212785A70009A039B11001800FFF7EAFD074B1800FFF773FD03000393039B1800F5 +:400D4000FFF742FF0123180005B000BD200500083C05000800B583B0FFF798FC03000193019B002B10D0019B9A6B019B1B6B9A4205D9019B1B6B1B68054A934204D0019BB2 +:400D800019000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B14D1019B596A019B23229B5C1A00019B1800FFF7B0FC03000393039B002B05D077 +:400DC0000399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B002B07D104235B4219000020FCF75EFE0023AFE1019B002B56D0019B1B680793AE +:400E0000019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9B002B0FD00D9B0322134003D1019BDB68432B13D809235B4219000020FCF736FE77 +:400E4000002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002B0ED00B9B0722134002D10A9B002B07D10B235B4219000020FCF718FE002369E1A4 +:400E8000099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020FCF704FE002355E10023079300230C9300230D9300230B9300230A93182309932E +:400EC0000A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD002337E10D9B002B1CD19C4B88229B58002B08D0994B88229B581800FDF7D2FAA5 +:400F000003000D9309E0954B80229B58012244211800FDF77BF903000D9323236B4401221A7003E023236B4400221A700D9B002B5DD00B9B002B5AD10A9B002B25D1884B4A +:400F40005B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B002B1BD023236B4423226A44127810210A431A7012E0794B5B6F0A99002218004F +:400F8000FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B1DD123236B441B780122134015D06B4B88229B58002B08D0684B88229B580D9A5A +:400FC00011001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D9323236B4423226A44127802210A431A700D9B002B00D1A0E00D9B01221A700D9B01223B +:401000005A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A600D9B0022DA600D9B00221A610D9B00225A610D9B00229A610D9B0022DA61099B8F +:4010400059B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002199540D9B00225A620D9B00229A620D9B0022DA620D9B0B9A1A630D9B0A9A5A63F0 +:401080000B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B1B680422134010D00A9B9B08113B059308E0069B04330693069B2B4A1A60059B5D +:4010C000013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD31800221A60059B01330593059B0D2BF3D1069B34331E4A1A60069B3833039A1A60069B8B +:401100003C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB21900FFF76EFA03002360069B2033029A1A600A4B0F4A1A6605E005235B4219000020EF +:40114000FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC04620050008544D0410A52E5AE2CCCCCCCC51160310950D031000B583B0FFF788FA0300019390 +:40118000019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B190010002C +:4011C000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B08 +:4012000080229B58019A11001800FDF798F8C04603B000BD2005000800B583B0FFF736FA03000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6AE5 +:401240001800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF309830093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019B23 +:40128000DB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B04225A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA6089 +:4012C000044B019A5A6302E0C04600E0C04603B000BDC046200500083C05000800B587B001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009B1F +:40130000002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D103235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F9E9 +:4013400003000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF903000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039A8B +:401380001340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B585B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB012377 +:4013C0005B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F9030077 +:401400000193019B002B01D1002301E0019B9B6A180003B000BD00B587B0039002910192FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE055 +:40144000039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049B1800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B20B +:40148000049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0BE +:4014C000039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B421EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009ADB +:40150000039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029B180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D52 +:401540001D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D16B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B0021E5 +:401580001800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B46073300221A706B4607331B78180003B000BD20050008544D041075D90210CD1803100B +:4015C00080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B4219000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B190087 +:40160000049B1A00044B1F0000DF03000793079B180008B080BDC046D50D031080B582B0FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DFC4 +:4016400003000193019B180002B080BD7511031080B5FCF78BFA054B1F0000DF01235B4219000020FCF722FAFEE7C0461912031080B586B001900091FEF7D9FF031E03D11B +:40168000FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046DD12031028 +:4016C00080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF7E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B080 +:4017000080BDC0469F13031080B582B0FEF78FFF031E03D1FEF796FF031E02D00023019304E0044B1F0000DF03000193019B180002B080BDF713031080B588B00390029173 +:401740000192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906235B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF030068 +:401780000793079B180008B080BDC0461714031082B00190019B180002B0704784B001900091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB68B3 +:4017C0000293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B50 +:40180000002B03D0039B019ADA6002E0024B019A5A64C04604B070472005000882B00190019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047AA +:401840002005000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E0019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009B76 +:40188000002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B11001800FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD0C8 +:4018C00000E0C04603B000BD2005000800B587B00190164B586E154B1B6E1A000821FDF7A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4BCB +:40190000D86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6818009047EBE7C04607B000BD544D0410200500084518031000B585B0019000918B +:40194000019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B0F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A60FD +:40198000094B039A5A60084B00229A60074B00221A700023180005B000BDC046C4050008FFFFFF0000ED00E010E000E0BC740008094B1B78002B06D0074B00221A70074B81 +:4019C0008022D2045A60064B054A126801210A431A60C0467047C046BC74000800ED00E010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B17 +:401A00001800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B000BDC046784E0410184F04107047EFF3108072B6704780F310887047FFF7F6FFB1 +:401A40000E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808490860BFF34F8FCEF753FBFEE730610410F6 +:401A80004861041010150008188900080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B0704765 +:401AC000B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F0CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B0C9 +:401B0000364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE0239B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB00802236 +:401B40005204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1501E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC02399 +:401B80005B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A00C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF78D +:401BC0007FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC0460000264084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F221340DA +:401C00000D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD3181B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A2F +:401C40000D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB010F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4BA3 +:401C80000F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00B2 +:401CC000D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78A5 +:401D0000002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774BD358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F032 +:401D400047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB000E +:401D8000D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B444A +:401DC0001A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A236B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0AA3 +:401E00001F2213400493384AC023DB00D3581B0C1F22134003930F9B059A53430499180009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4A6A +:401E4000E0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AFF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD030059 +:401E80000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4B1A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B68F8 +:401EC000174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A60C04611B000BDC046000026406050041000127A0000366E01D005000884050000BC +:401F0000C805000800002140CC050008C4050008D40500083F420F0040420F00DC050008E7030000D8050008E005000882B0054A8023D358032213400193019B180002B059 +:401F40007047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049B032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B19 +:401F80000E4A13430393039B03221343039309498022039B8B50C046064A8823D35810221340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA057C +:401FC00000B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019BD4 +:402000001800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A008021042001F049FCC04610BDC0462076000810B5034B180001F041FBC04610BDC046DB +:402040001875000810B5034B180001F037FBC04610BDC0467075000800B583B002F091FC030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B180089 +:4020800001F092F9019B180002F07FFCC04603B000BDC046C074000874500410A8500410DC50041010B5034B180001F007FBC04610BDC046C0740008084B5B6C1B0AFF2214 +:4020C00013403A2B08D1054B044A526C04490A40E82189010A435A64C046704700002740FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C046000027403B +:40210000FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD3585B005B08054A8B5000230193019B180002B0704703004A00000026400C050000DA +:4021400000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002BAC +:4021800001D000230393039B180005B000BDC04602004A0000002740044B1B69042213405A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A499E +:4021C000094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B180004B0704701004A000000264084B001900A006B4603331A70114B0393019B042BBC +:4022000019D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B4603331B780F2003401A43019BE0339B005A5000230393039B180004B07047C046E5 +:4022400001004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4603331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B7883 +:402280001B01302003401A43019BE0339B005A5000230393039B180004B0704701004A000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B783E +:4022C0001B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B002006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B0C5 +:402300007047C0460000214082B002006B4607331A70084B074A1269074911406A460732127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B0D8 +:4023400002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C490B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA50E5 +:40238000C04603B000BDC04613090000105104100000264000B583B002006B4606331A806B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD358B9 +:4023C0000A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B090000105104100000264004050000FEFCFFFF82B002006B4607331A700948084A094BC1 +:40240000D358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070470000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C046F6 +:402440007047C046000026400405000000B583B002006B4607331A706B4607331B780F2B05D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B460733C3 +:402480001B781902F0231B010B401A43A023DB00C250C04603B000BD080A00001051041000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4A53 +:4024C0000D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B781903E023DB010B401A43A023DB00C250C04603B000BD2E0A000010510410000026407A +:40250000FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0460000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B110010 +:40254000180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A431A60C04603B000BD910A00001051041000002740FFFCFFFF044B044A12688021B5 +:4025800009060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D00520F8 +:4025C000FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE01210020FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F084 +:40260000F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA13C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B190014 +:40264000012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF7C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD32 +:402680006421002002F004FAC04604B010BDC04620A10700645104101027000010B584B06B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC046D7 +:4026C0007051041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A48002300930023002201 +:40270000002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039A1F480023009313000622032100F0F8FB039A1C480023009313000622012100F00D +:40274000EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042100F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062105 +:4027800000F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC04600003240800032408005324006060000070600000003324010B5034B1800FFF712 +:4027C000C3FBC04610BDC04600000810C046704782B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B001 +:402800007047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180002F0CEF8019B5B01034A94466344180003B000BD805104100000234000B583B030 +:402840000190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A94466344180003B000BDC046805104100010234000B585B0039002910192019B1B0C1B046F +:4028800006D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084B1100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC046D6 +:4028C0008051041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F06FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0CF0 +:402900001A43039B1A60039B1B68C04605B000BD6A020000805104106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C23 +:40294000019B9A60C04603B000BDC0468051041010B5D1F7EBFE054B186880235B001A000021FFF7AFFFC04610BDC046B476000800B583B06B4603221A806B4622229A70DB +:402980006B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B1B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF26 +:4029C0006B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D1054B5321180001F0EBFFC04603B000BD51290310B4760008D4510410B0760008CB +:402A000010B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000FFF77CFFC04610BDB0760008D4510410024B1B691B0EDBB21800704700002140F2 +:402A4000024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0AAFF019B5B01034A94466344180003B000BD2852041079 +:402A80000000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F074 +:402AC0007FFF019A0299039B180000F0FDFA0300180005B000BDC0462852041010B5044B02221900002000F0B7FDC04610BDC0462D10000810B584B001901E4B0393019B0C +:402B0000180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B4D +:402B40001A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00110018000AF0D0FF03000393039B180004B010BD06005200B87600080001001CEF +:402B800060F59000C80500089808000010B584B001900091204B0393019B180000F092F8031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A1D +:402BC0009A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A431400114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A18FD +:402C000080235B00110018000AF07EFF03000393039B180004B010BD06005200B876000800010006808D5B00C805000884B00190019B1E4A93420BD9019B1D4A934207D81B +:402C4000019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD8019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019BCF +:402C80000F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B420393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF15FF +:402CC000FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D1012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D089 +:402D00002B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD08022520093423BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE0CA +:402D40001E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E0A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB03039340 +:402D800011E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E00F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F0ED +:402DC000050000F0030000F0010052000200520003005200010050000200500005005200FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A000123EA +:402E00005340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C046084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD0200500083 +:402E4000B8760008000025400C0400008C04000000B589B0039002916B4607331A70029B072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A007F +:402E8000244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B010693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B46073355 +:402EC0001B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A4079 +:402F0000059B1A43069B5A60C04609B000BDC046430200007C5204100000CEBF0010030400B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F2290 +:402F4000934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB1B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D2434D +:402F800013400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2191400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB23 +:402FC0001A780299039B1800FFF742FFC04607B000BDC046CC52041000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A6022 +:40300000C04603B000BDC0461C53041000B583B001900091009B1B0C1B0405D0064A074B1100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA50200001C53041077 +:4030400082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA37 +:40308000002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B03C +:4030C00000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019A039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B059319 +:40310000059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A60002320 +:40314000039301E0034B0393039B180005B000BD7053041001008A0082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191403A +:403180000A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180001F00AFC019B5B01034A94466344180003B000BDC453041031 +:4031C0000000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B5B01044A94466344180003B000BDC046C45304100010234000B585B0039002918C +:403200000192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D0D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A60D9 +:40324000C04605B000BDC046C453041082B00190019BDB68180002B0704782B00190019B1B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B110003 +:40328000180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A020000C45304106B020000B5 +:4032C00000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B1B041A0C019B9A60C04603B000BDC046C453041082B001900091019B009ADA60F5 +:40330000C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C180002B0704782B00190019B1B041B0C180002B07047000000B583B0019000910C +:40334000009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300180003B000BDC0467E030000C453041082B00190019B1B68002B01DA002300E06E +:40338000014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04602B07047D876000810B590B00390039B002B04D13B4B4F21180001F001FB039B2C +:4033C0005B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F0EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B572161 +:40340000180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C303CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B684B +:40344000DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB1C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F0F9 +:4034800013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B010BDC0461854041000B587B00390029101920093039B072B04D9244BB32118002B +:4034C00001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AFF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A61C1 +:40350000059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF76BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5EFA +:40354000059B9A81C04607B000BDC04618540410D876000800B58BB00390029101920093019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FA2C +:40358000029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B1A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089BB2 +:4035C0005B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B691800FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A6084 +:40360000089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A11001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099B79 +:4036400018000BB000BDC04618540410D876000807028A0004028A0000B587B0039002910192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B43D3 +:40368000D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059301E0054B0593059B180007B000BDC04618540410D87600080A028A0010B588B0D2 +:4036C00001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B42324 +:40370000FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019BDF +:403740005C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FD031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039BA4 +:403780001B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B680493049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B180012 +:4037C000FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FD019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019B8D +:403800009B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC0461854041000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B01F5 +:40384000034A94466344180003B000BD6C5404100000234082B00190019BDB68180002B07047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F057 +:403880009FF8019A0299039B1800FFF71DFC0300180005B000BDC0466C54041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B587B003900291BA +:4038C0000192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B1800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029B8D +:403900001F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A601A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B684A +:40394000124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D1002305930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B036 +:4039800000BDC04603018A00DC760008E076000801018A0000B589B001900A006B4603331A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A4215 +:4039C0004DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B7801225340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059BD0 +:403A00005A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A92008A1812680399C9430A401A600023069301E00F4B06930D4B1B680021180010 +:403A4000FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B0693069B180009B000BDC04603018800DC7600080201880004018A0000B587B045 +:403A80000190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A1340C8 +:403AC00002D0074B059304E0064B059301E0064B0593059B180007B000BDC046DC760008010188000001880004018A0082B001900091019A90239B000099D150C04602B096 +:403B0000704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704710B584B00190009100230393BD +:403B4000019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0AA +:403B8000802300E04023180002B0704710B586B0039002910192039B002B02D0029B002B01D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B25 +:403BC00008D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7B032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B51 +:403C0000072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B9B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002B9D +:403C400009D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D0029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B7895 +:403C8000012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B6898 +:403CC000032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B68072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE38 +:403D0000029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B04D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B5B +:403D40009B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4B4B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B34 +:403D8000464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F01225340DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A02FE +:403DC00000E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802292041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B6321180086 +:403E000000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FD029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B78F6 +:403E40001A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002B02D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029B98 +:403E80005B7C002B0CD080239B000AE00160AA00000069406855041092F4FFFF8CF8FFFF00231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A435E +:403EC000029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E0CC +:403F000000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF221A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399AF +:403F4000C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F02FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B0090 +:403F800000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B7854 +:403FC000012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213401900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B212173 +:404000005B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A8123B4 +:404040009B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A50019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019BD5 +:4040800000221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046685504106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019B36 +:4040C0001B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B00221A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B41217E +:40410000180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B1B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB0573 +:404140009A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D21180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A68802371 +:404180009B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B029A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A436F +:4041C000019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BDBC55041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042BA7 +:4042000032D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF339A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B001A +:404240005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD0339B005A5000230393039B180004B0704701004A000000264070B590B005900491B2 +:4042800000230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF339B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A9342CB +:4042C00002D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049B5B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A70B7 +:4043000007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B01D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A3F +:40434000019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7AFC +:40438000002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F022 +:4043C00051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BDAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102B9F +:4044000004D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E070230E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049B64 +:404440005A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B1100180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A0024 +:40448000FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71784B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B57 +:4044C000013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B78102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002BB2 +:4045000001D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934201D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B78FC +:404540001A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B401A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019B8B +:404580008133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF339B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B002 +:4045C000019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B8133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F93C +:40460000009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009B002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0027 +:4046400030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063300229B5E9B0830496A4606320020125E9208C03292005258694606310988080075 +:4046800003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F2384 +:4046C0001340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2026 +:4047000018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B1E +:4047400035D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B00229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF73A +:404780005FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B00229B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC0461856041043 +:4047C00000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B46063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069B90 +:404800009A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039AC8 +:404840000A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B02997D +:40488000039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B5B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4B7C +:4048C0000299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0C046C04608B070476C5604100000214000B585B0020000916B4606331A80184B24 +:404900009A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E10331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D150CC +:4049400009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC04600ED00E00000000818560410000000100230800803D001300238FCD1C046C046E1 +:404980007047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606331B88044A127853431800FFF7E1FFC04603B000BDDC05000882B0019001BEFEE710 +:4049C00000B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFFD0140008E8140008064B802212069A64044B9B6C002B01DB002300E0024B180026 +:404A00007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134004D0019B8022D20213430193019B180002B070470000264000B583B00190019B16 +:404A40001A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019B1A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F072 +:404A800005F8C04603B000BDEC140008FEE7000084B0020000916B4607331A706B4607331B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334A00 +:404AC000E8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8235B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039BAA +:404B0000032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA506B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E000239E +:404B4000039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E0042304E0022302E0012300E000230393084B084A12680F218A431100039A0F2013 +:404B800002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD3581F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180026 +:404BC00002B07047000026401CFF000000B585B002006B4607331A70002303936B4607331B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FEA5 +:404C00001F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE03000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4644 +:404C400007331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821002000F06BF905E00221002000F066F9054B0393039B180005B000BD8C56041084 +:404C8000F076000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B0AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE030002938B +:404CC000FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA00F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A056B +:404D0000E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B500920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F225D +:404D400093431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FE00F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC0600008C56041020 +:404D8000000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD03000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A78012192 +:404DC0000A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B1B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B0393F8 +:404E0000049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B3C +:404E40001B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17236B441B78180007B000BDC046F0760008E8760008EC76000800B587B001901723CB +:404E80006B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049A019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B4412 +:404EC0001B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D0019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4B63 +:404F00001A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF734FD17236B441B78180007B000BDC046F0760008E8760008EC76000800B589B086 +:404F400002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B4607331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B46073344 +:404F80001B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B4606331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494B7D +:404FC00011001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B6806932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A7817 +:40500000069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B6906935C +:40504000069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A42C2 +:4050800020D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847FB +:4050C00003000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B180009B000BD8C56041021080000E8760008F4760008FF004200EC760008044B044AF8 +:405100009269802149040A439A61C0467047C04600F02540034B034A926903490A409A61C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B501A +:405140000649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02A9 +:40518000D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F00000D6 +:4051C000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE048 +:40520000019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A43019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7FE4 +:40524000002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D10399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A68A4 +:405280000398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31801221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A608F +:4052C000019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F023AF +:405300001B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A43019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6AC1 +:4053400003221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BDB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B0089012C +:405380004118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059B180006B07047C0460100B60082B001900023180002B0704782B001900023180085 +:4053C00002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B420393039B180005B000BD00B587B0039002910192009300230593019A029B1100A1 +:405400001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B074A934206D9009B064A934202D880239B0001E001235B42180002B07047C04635 +:40544000FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B05180002B0704782B0019080235B03180002B0704782B001900023180002B0704782B05C +:4054800002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B070470000AD +:4054C00084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B16 +:4055000011001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE502000033 +:40554000E0560410E602000000B587B0039002910192029B072B05D9134A144B11001800FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039BCD +:405580009B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039B9A62C04607B000BD8E030000E05604108F03000084B002006B4607331A706B46C3 +:4055C00006330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E23039378 +:405600000EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B07047BC57041082B0EFF305830193019B5A1E9341DBB2180002B05A +:40564000704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D2218002C +:40568000F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E1800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019B80 +:4056C0001B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE0019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC0468C +:40570000C04605B000BDC0463057041064570410685704107457041010B586B003900A000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A44128899 +:405740009A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E1800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A00DD +:4057800001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B4400229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF7CF +:4057C0006CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E1800FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC04602 +:405800003057041064570410845704109C57041000B583B001900A006B4603331A70019B002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B5622C4 +:405840001800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC04630570410645704107457041000B583B001900A006B4603331A70019B002B05D137 +:405880000E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F76DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046305704103C +:4058C000645704107457041082B00190019BDBB2180002B0704782B00190019B1B14DBB20F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B0F7 +:40590000704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B0F6 +:405940007047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D98E +:405980000F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BD6A +:4059C000E5020000D8570410E602000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D025 +:405A0000012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B07047CD +:405A40002858041010B586B0020002910E236B441A800E236B4400229B5E013353D00E236B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FFE2 +:405A800003001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400229B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF79A +:405AC0002FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059B01221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B00221800C3 +:405B0000FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB24A +:405B40001A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E1800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B42E0 +:405B80000593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A4113000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB225 +:405BC000D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFD180007B000BDC046E80500084458041000B585B0020000916B4607331A70FF23BA +:405C000003936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D91E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F7D2 +:405C40009DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91400A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B6852 +:405C80009A4202D9029B00225A60F6F7A7FB039B180005B000BDC046F805000890580410C4580410E458041000B587B002006B4607331A70FF2305936B4607331A781300C9 +:405CC0005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F74DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B39 +:405D00005B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A4213D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF03001B +:405D40000593059BFF2BDED000E0C046F6F746FB059B180007B000BDF805000890580410C45804102C59041000B585B0020000916B4606331A806B46063300229B5E03936D +:405D8000039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B46063301226A +:405DC00052421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B000BDC04690580410A459041098590410F876000800B585B0020000916B460633E3 +:405E00001A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F7ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200B1 +:405E4000D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFAC04605B000BDC04690580410A459041098590410F8760008BC59041010B58EB00A +:405E800008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D31801331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C33A +:405EC00001230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A68274903005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001AB67 +:405F000000225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A78174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A93AC +:405F40000FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B01330A930A9B002BECD0C0460EB010BDC046E8590410E8050008F0590410F80500089A +:405F8000280600083006000882B00190019B1B12DBB2180002B0704786B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED890 +:405FC0002249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B90 +:406000000F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059BB9 +:40604000180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B2A +:40608000032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA0208000844663449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B0093 +:4060C0005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032BDC +:4061000038D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB0208000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A50D0 +:406140001049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BB0208000844663449B005A5000230593059B180006B0704701004A0073 +:40618000FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B4B +:4061C00035D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002BA1 +:4062000015D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014018 +:4062400084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B7837 +:40628000022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB005F +:4062C000D35800230393039B180004B07047C04601004A000000014000FF008084B0020000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D11B +:40630000009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B0195 +:40634000FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B180004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B071 +:406380000190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E0402301 +:4063C000180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B583B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019BF1 +:4064000011001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B5B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B001900091E3 +:406440004D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B28 +:406480009A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF779FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800B8 +:4064C000F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF7FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039BE7 +:406500005B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C006A +:40654000009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD03000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A00045B0410E5 +:4065800000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019B84 +:4065C00008229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BDC44F041075 +:40660000284F04102C5B041000B593B0019002AB180040231A00002101F078FB02AB0C225A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A001E +:4066400002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E9341D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FEA4 +:40668000C04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D120 +:4066C000012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434B1B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E110027 +:406700001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B11001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C1A +:40674000059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E11001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059BFC +:406780000822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A81E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13235E +:4067C0006B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B1800F5F70AFF07B000BD0105000078770008A0880008C44F0410284F041000009FBF01 +:40680000A45B041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039B11001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B00190009198 +:40684000019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDC04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B2D +:406880001B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B681800FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B6889 +:4068C0001800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B46063300223D +:406900009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09490D +:406940006B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04602B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB0749C0 +:406980006B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B08 +:4069C00041D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B44DD +:406A00001B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B0068 +:406A40005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234BDD +:406A800003936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1A5 +:406AC000009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A500023AC +:406B00000393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4616 +:406B400007331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F203E +:406B800003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008082B001900091019B009A9A61C04602B0D3 +:406BC000704784B00390029101920399029A98235B0092018A18D318019A1A600399029A98235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019B84 +:406C00009A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B00390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B039 +:406C4000019000910199009A84235B0092018A18D3181B68180002B07047000000B583B00190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF00236A +:406C8000180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF76E +:406CC000D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D0D7 +:406D0000134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC0461C +:406D40007C770008185C0410000038405C060008645C0410885C04108D6C0310105C041010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B00190000206E +:406D8000FFF738F8044B00221A60C04610BDC046000038405C0600087C77000810B5074B1B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC0467C77000859 +:406DC0000000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02930E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B0E +:406E000005481A000021FFF70AFF0020FFF770FDC04605B000BDC046000038407C77000810B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC0462A +:406E40000000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C046085C0410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC04686 +:406E80007406000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833E8 +:406EC000416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B18687047C0467406000870B505000C1E40D0002802D0836B002B3ED00126636E33428B +:406F000033D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF8002323633D +:406F4000616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE7216937 +:406F80002800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E80465D +:406FC00093B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D007 +:40700000E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF8002310 +:407040002363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC4022C1 +:407080000120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD23 +:4070C0008AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF2D +:407100000100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D5300076 +:4071400070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F0A5F9F8E774060008C05C04100571031064 +:4071800010B5024900F09AF910BDC046E96E0310002310B5040003604360836081814366C281036143618361082200215C3000F0ADFD2000064BE4612362064B5830636206 +:4071C000054BA362054BE36200F0C2F910BDC0464181031069810310A5810310D181031070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B9233E +:4072000003229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A363280000F094F970BDC046F0880008817103104A +:4072400010B5024800F088F910BDC046FC88000810B5024800F082F910BDC046FC880008F8B50C000600F6F79BF8204FBB685D6803239D431E4B2C1B9C466444240B1D4BE9 +:40728000013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF80020F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B53 +:4072C0001C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E70C0C0008EF0F0000FF0F00008077000814100008A3 +:40730000F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F5368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B0424C +:4073400065D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000F6F780 +:4073800019F8F8BD680A042850D8A809020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E936883 +:4073C000B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4BE2 +:4074000020001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D802005C305B32C000ACE70123921093407E +:407440007A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A49 +:40748000904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B6015606CE7C0460C0C0008FF010000140C000818100008B077000854050000F8B5474678 +:4074C000CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD130001C +:407500000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0E5FA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BD30 +:407540001C1000081C1000081C100008241000087047C0467047C0467047C0467047C04610B5034B01001868F4F7A0FD10BDC0467406000810B5034B01001868F4F7CDFD85 +:4075800010BDC04674060008F0B557464546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E0F5F7F6FEF823FF339D4200D88FE2680A8C +:4075C00000D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E0624623 +:40760000636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B4652 +:40764000914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD024 +:4076800003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E56883 +:4076C0000836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083021E0102926D83800F5F75AFE1025182302208B4EF3181A005C68083A944200D117 +:407700002EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F749FE2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F2395 +:4077400040208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4AF3 +:40778000944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B68C3 +:4077C000013300D16CE14B46019A9B1A59185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D10D +:4078000042E14B46C01A01235844184353461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E218CA +:40784000506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2B00DCC6E001222900134311436519616057 +:407880003800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B427F +:4078C0009C46B218944463469A6803239846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656024 +:4079000070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C0460C0C0008FF01000014100008B07700080F1000008077000808100000A877000887 +:40794000AC77000873688EE608239B46073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A608F +:40798000F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B4285 +:4079C0009C46E1444B469B680138994500D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4617 +:407A000053603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B984287 +:407A40001CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E23F0 +:407A80007F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E65B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B491B +:407AC0008A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C046807700085405000082B000290AD0002A0BD0002B0BD01378BB +:407B00000B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D00130E6 +:407B40001042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A43AB +:407B80003242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C788218A34204D015E003780C78A34211D10130A2 +:407BC00001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103E9B +:407C0000350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF50043343 +:407C4000A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5C8A +:407C8000C254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E6025 +:407CC000A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D19324068 +:407D0000C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2CB8 +:407D400014D927001A00103F3E09013636019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD10322A2 +:407D800097430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083F4B +:407DC000F5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504656 +:407E000081438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132A79 +:407E400000D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000F5F7A8FA1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B53 +:407E800025D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029AEE +:407EC0003500D36892685C46D3609A60D5E74A460120464652684946024032434E464144034372604C444B6063680831184360600198F4F712F9CFE71100F4F7D7F80500B0 +:407F0000CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D9E8 +:407F400096E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A009346A3449B4500DA4FE7D7E70320029984469E +:407F8000496881434046091910300290814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC5346524655469268DB680835D3609A60221F242A76 +:407FC00000D98EE0132A00D888E05346316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46424641449960039B01989A1A01231A4349 +:408000004A605246526813404246134352465360F5F7D0F943E733680360736843601B2A2DD803003200083308320DE72B00320011685C4619605168D146596092689A6017 +:408040001BE74346FA185B469A604346C91A0123194351607A6801981340424613437B60F5F7A8F935001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B368EA +:408080008360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320018331032BCE73369320003610300716920 +:4080C000183318324161BFE65346326951469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D032001833103229 +:408100006EE75346326951469A613200706920331832C86164E7C0460C0C0008002370B5064C050008002360F5F7C6F8431C00D070BD2368002BFBD02B60F9E71489000821 +:4081400070B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E0022E9 +:40818000022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BDFFEFFFFF70B50C000E25495F03F010F8431C06D08023A2895B011343A381206523 +:4081C00070BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB2002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD0B0 +:4082000001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A43E4 +:4082400013433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D48FD +:408280008A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392073F +:4082C0002AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A090A401A2102014302D1100E190E401A90 +:4083000070BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD010101017E +:40834000031C0A7801311A700133002AF9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D10433196853 +:408380000A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B430E +:4083C0009B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD1043019 +:408400000431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C04600 +:40844000FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A731C3470002C1DD0012406E00D5D013A355501330134002D14D0002AF6D1F0BD13 +:4084800005000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D02E00DBE79C180021002AE8D019700133A342FBD1E3E7C04680808080FFFEFEFE48 +:4084C00030B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002C0D +:40850000E3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D34446634635 +:408540001C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D84346501C0133834203D36246494618005E +:4085800011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE7F5 +:4085C0001D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002C6B +:4086000009D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7BDFA002800D074E000231A009A46631E9846594601233800A14617004446B04656 +:408640005B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1AAE +:408680009A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE0424652446E +:4086C000505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E726 +:408700000020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A0021A6 +:408740004044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D1CB +:408780000133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E7404650449E +:4087C0009FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A4253410130FF +:408800001E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF7D9FC641B061E12D0012CF0D03F190121B84200D8391A0F00DF +:408840001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF795F900285CD1002399464346013B009309 +:4088800042460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF90028D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED133 +:4088C0005246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C88424E +:4089000003D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E74346E31A434500D24346013303930023CA +:408940004246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF7DDF8002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C10 +:408980008019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039B86 +:4089C00038009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FB036818001993FFF7ABFC1890AB891B06B7 +:408A000005D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001344D +:408A40002378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD37701228E +:408A800052429246002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE7B5 +:408AC0003A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD012277 +:408B00000B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34683001B1814785B0058182100531C3039F5 +:408B40001A000929F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FD9B +:408B8000630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A5D +:408BC00000D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA944648336344119353460E9A0793924500DA0792A2 +:408C0000002313934346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B68884638 +:408C4000102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DCDF +:408C8000B0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F077F907220F9B07339343013294469C44E6 +:408CC00062460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414604F02CFE002801D000F0FDFD0122484B52422800414603F001F8002801D000F0CA +:408D0000F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E70022C7 +:408D4000303B15001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A30671 +:408D800000D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B2A +:408DC00000D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A55 +:408E0000119166460E93F5E6D45C04107C5E0410FFFFEF7F385E0410129310231C438B46A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C920022043332 +:408E40000D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93CA +:408E8000E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FD0F +:408EC000E30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A54 +:408F000001D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A469B +:408F400013935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E93002311959A4613934BE68B4641461293002955 +:408F800000D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B0733FA +:408FC0009343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A70483254 +:409000005A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE5A1 +:409040008B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920123020099E68B461293A30600D483E607220F9B36 +:4090800007339343013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002347 +:4090C00016AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B68DE +:4091000002340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0485E0410D3 +:409140005C5E04108C5E0410103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA9460B +:409180000C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE008362F +:4091C000089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B9605A +:409200007B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F02F +:4092400037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B0134336001237360C5 +:409280007B68BC6001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119D64 +:4092C000149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C467360434664440133BC607B60072B00DC61E73A000699099892 +:4093000002F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DDD5 +:4093400066E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103D85 +:409380000832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A466419E7 +:4093C000013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA33 +:40940000002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A0091 +:409440000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FB51 +:40948000BC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723CA08354311002A000340303323702800A4 +:4094C0000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB7C5E0410785E04108C5E04101F98002800DC96E2139A14991300904600 +:409500008B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DCEA +:4095400000F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F912 +:40958000002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFBCD +:4095C000030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7FFA +:40960000BC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B96040 +:409640007B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFBDC +:4096800013680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DC99 +:4096C0007EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F828 +:40970000002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930332A +:409740008B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401334B +:409780007260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A0FDD1399119A8C466244326042467260A0 +:4097C0007A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103ECF +:40980000102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A6864440132F6 +:40984000BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC689846EB +:4098800032AE13E58C5E0410072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C37708001043EB +:4098C0000C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E253460133E4 +:4099000000D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A6D +:4099400013005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE200230022A9 +:409980004846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D14C +:4099C000F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9AA8 +:409A00000A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC0836002876 +:409A400007D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E132000832002800DACCE111980133106014987B60441826 +:409A80005060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A0006992D +:409AC000099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18601861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB029381 +:409B00005346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D005 +:409B4000FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF8D2 +:409B80001198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B18A8 +:409BC0006A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E3031E7 +:409C0000217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C013373 +:409C400021AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB17CC +:409C80001A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9B16 +:409CC000BC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793B3 +:409D0000062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019355 +:409D400003234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B54 +:409D80009446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C046785E04103C5E0410705E04101F9B1393002B00DCD5E05246002A00D092E0E20741 +:409DC00000D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A149330 +:409E00000E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD3B +:409E4000002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA50 +:409E8000521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF742 +:409EC00010FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E50123234051 +:409F0000139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF779 +:409F4000F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF36 +:409F800016ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716ABE8 +:409FC000D877FEF779FF01235B429A46C4E7C0468C5E0410405E0410445E041030B504009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202928E +:40A000000592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E7AD +:40A040008B232360F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC04674060008002904D0FF2A04D801200A707047002078 +:40A08000FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE431C00D070BD2368002BFBD02B60F9E714890008002370B5064C05000800236019 +:40A0C000F2F76AFE431C00D070BD2368002BFBD02B60F9E714890008F0B545468046DE4657464E464246E0B50C69126985B00B0002910020944200DD90E0142294466344FD +:40A1000099464A46013CA300D6181422424493469B4433681500591C5B461868019201F057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395B9 +:40A14000634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD201 +:40A18000039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B2B +:40A1C000019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B44 +:40A200000A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D009D +:40A2400016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD002805 +:40A280002FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD003000833FF +:40A2C000269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B0306 +:40A30000B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FFB04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F011 +:40A3400067FD02000B002000290001F01DFE04000D0003F013FB0022039000232000290001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849681D +:40A380003B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA84E29C460D930023049A99461100614458 +:40A3C0000491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239AD2 +:40A40000039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE6A +:40A440005346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E401A +:40A480001A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0B0FC04000D0076100837002EEED12200089833 +:40A4C00009992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC002801D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B0072 +:40A5000094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B48 +:40A5400002F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F0D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002829 +:40A5800001D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002801D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149BF3 +:40A5C000994638E00000F07F795E04100F270000A05F0410AC5F04100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33FD85F041058 +:40A60000B05F041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B01F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F037 +:40A64000E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F902000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F0B1 +:40A6800033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE12B +:40A6C0003100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D0F93491918E68A48D5E50023524600215364504600F080FD5346186401235B4279 +:40A7000007930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D30002200A4 +:40A740002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B003000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F044 +:40A7800047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE00022534B02F02CFB01239C460022002302 +:40A7C00006000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF8804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013B6B +:40A80000303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B00E8 +:40A8400001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2CB +:40A88000079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C446346049300F060FD804632E0069A039BD1 +:40A8C000D21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF9020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03F9E +:40A90000000024403204000012040000000010FE785E0410D85F0410069B4C4608930023984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A08928A +:40A94000049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0BF +:40A98000A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020225E +:40A9C0003000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C463E +:40AA0000844463460693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B0E +:40AA400000D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E2079C0A9A013C23009446634408930123F6 +:40AA8000334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD494604004246380000F0ECFDC36881468C +:40AAC000002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002BC9 +:40AB000000DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A2297 +:40AB4000380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946B8 +:40AB8000013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E0290000230A22504600F051FB05004946280093 +:40ABC000FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B787A +:40AC00000A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F028 +:40AC400003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D00984603 +:40AC80000E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F83B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F07F +:40ACC000C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA246050068 +:40AD00008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E6EA +:40AD4000079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B9389 +:40AD8000FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FAA3 +:40ADC000089E099F32003B0004000D0000F0A0FF002800D0B2E0802000068446390061440B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21AE1 +:40AE00000D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346186401230A90079323930E93FFF707FBCC +:40AE400043460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C51 +:40AE80002E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A2340F9 +:40AEC000DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED170 +:40AF0000FFF7E4FA039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E50023994695 +:40AF400098460CE70000F07F000014403304000000001C400000C0FCD85F0410B05F0410129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F0BA +:40AF8000FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F0006008E +:40AFC00002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D14446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B4A +:40B00000651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5A2 +:40B04000069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013B7A +:40B0800013933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE0022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B701A +:40B0C0000C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BBA +:40B10000A84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B6C +:40B1400001DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF70A +:40B1800073FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C046D85F0410000024400000E03F00001C400000C0FC044B1B68586B002801D0F030B7 +:40B1C00070470248FBE7C04674060008A00A000870B50500080011000022064C22601A00F1F7F8FF431C00D070BD2368002BFBD02B60F9E71489000870B50400C06C0D00B1 +:40B2000000280AD0AB00C318186800280FD002681A6000230361C36070BD212204212000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF002807 +:40B24000F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000211430036801311E04360C56431B0C5343BC +:40B28000F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF73 +:40B2C00029002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0FB7 +:40B3000001D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B0803601000704719040022002901D11B0CDD +:40B340001032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF756 +:40B380003BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF77D +:40B3C0001BFF14220300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B444019392 +:40B400009A454FD253461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120C95 +:40B440001B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734326 +:40B4800007043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D148 +:40B4C000013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C0C +:40B50000002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD04246D26C736894469B0063441A686410326090 +:40B540001E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE70121404624 +:40B58000FFF73AFE054B05004361012303614346986400230360B5E7A060041071020000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB36883469146FE +:40B5C00049689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD132694846970031001F2214311040CF1981460028BA +:40B6000025D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A68326075 +:40B640001E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B0439F3 +:40B680001C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F424B +:40B6C00000D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB4746260000251437143643465968FFF780FD43468146C5601869DD +:40B700004D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B18120419145E +:40B74000120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA24326 +:40B78000043289180439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E003D +:40B7C000A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D172 +:40B80000009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B06 +:40B840009C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFF88 +:40B88000CEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D070BD2368002BFBD02B60F9E714890008F0B557464E46DE464546E0B5936883B05A +:40B8C00001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218521090465A46501CC0194246404501D971 +:40B90000804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F9B3892A4A134080221343B381434620005A463461B8463C00584473619B1A30606E +:40B94000B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E7019848 +:40B98000F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3815246002340429360536003E0002352460020536003B03CBC90469946A246AB46A4 +:40B9C000F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D3121209022C +:40BA000065D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B42D5 +:40BA400001D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D34E +:40BA80008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01AE8 +:40BAC0005241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030BCD +:40BB00008B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B98 +:40BB40008B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D319 +:40BB80000B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB009D +:40BBC000C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B42B3 +:40BC00002DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D3F6 +:40BC40008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B0055 +:40BC8000C01A5241411A00D20146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C0468446101CCB +:40BCC00062468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F0C5 +:40BD000025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD012010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B0498420F +:40BD400001D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40187047C04604030202010101010000000000000000002B11D1002A0FD1002900D11F +:40BD8000002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684601B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E0078 +:40BDC00080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D980235B029846C4444B46514343433604360C250C24046544A419591849192000C0 +:40BE00000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B422FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D5BE +:40BE400074E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E0824228 +:40BE8000D0D900220023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A434646AA +:40BEC0007B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B00B6 +:40BF00005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A401700F2 +:40BF40001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B44697406646EE +:40BF80003B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D129 +:40BFC000AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E17C +:40C000001F2D00DD38E12020431B9A460B0050468340994613004846EB401843030050468240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650AA2 +:40C04000002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD840914097 +:40C0800097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C4060076C +:40C0C000760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B00ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E204001C +:40C1000067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E7331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E0F0 +:40C140000A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE104 +:40C180008022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE0BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C400558 +:40C1C000400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA4292411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D00283845 +:40C20000854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E419CE +:40C24000E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B00D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD84078 +:40C280000300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EB04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51ADA +:40C2C0002600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BBA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E600250026002770 +:40C3000006E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A080098409C46834653461000D84003005846184363469A40531E9A4153460243D94003E795 +:40C3400026003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B9A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E622 +:40C38000002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E6BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E620003843FC +:40C3C000002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E650460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A415A +:40C400004B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4059 +:40C4400033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE757 +:40C480001800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4292411C1B5242A41AD846F1E51800104300D163E7F808670707438020E408000325 +:40C4C000044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304ED6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E4087E +:40C5000000030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E500216BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027430F +:40C540007C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E70C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED0402360 +:40C5800056469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D008E +:40C5C0008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F600134333439946C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D01955A +:40C600005ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A9446002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F46030022 +:40C64000334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B4A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB39 +:40C6800003000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B468B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E761 +:40C6C000594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B002283 +:40C700001B1A8FE7002301229B468BE75146032288E700239846013304260024039367E70323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C4600230024E1 +:40C740000022984600211203130B0A0D12051A432305124C40462240134362465B00D2075B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034C95 +:40C78000E0E70023014C00229846DBE7FF07000001FCFFFFAC6004100DFCFFFFFFFF0F80D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C12 +:40C7C000039313041B0C3900280090460193FFF7FFF80200019B83465A43280039009146FFF77CF9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E16F +:40C8000002235B429C464544E3444B46EB1A390018000493FFF7DCF8019B05004343390004989946FFF75AF9330409041B0C0B43994509D943446A1E984500D91AE1994521 +:40C8400000D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A46090C4E460D001204120C4543059151437243704352190E0CB218954203D98025E4 +:40C880006D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D117E139001800FFF78BF8019B0500434390 +:40C8C000390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1884200D804E1023D4144049BCB1A180039000493FFF76CF8019B8246434339001A +:40C9000004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D9E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F4684 +:40C940002A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC4660441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE31875 +:40C98000002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318994A934268DD0123029A984C1A400023944698460022C5E680224B461203134298 +:40C9C0000AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC468A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E60300A4 +:40CA00005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0843465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B2450B +:40CA4000AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A434B +:40CA80005B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1EB04529D91100864200D065E7039A934200D061E762E7012149420120C21A382A91 +:40CAC00021DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934454E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED01100DC +:40CB00003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340204308431A00430709D00F230340042B05D00100081D88429B415B42D218130293 +:40CB40003AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC46E244AA45AD416D424544ED182D1A96E68A1E03994D008D4289414942414476188A +:40CB800003958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E91411943072300220B4009D00F2300220B400800042BBDD1010053075202120BB8 +:40CBC000C9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D42C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E5C8 +:40CC0000FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C4222 +:40CC400001D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E7DD +:40CC8000FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD130430700814681 +:40CCC00078427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D15846024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D00120EB +:40CD0000013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D84E +:40CD40000020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D001 +:40CD8000002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC90469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE731000223D6 +:40CDC0000143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C44569 +:40CE0000D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C0398464E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F1F +:40CE40002404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E4008F +:40CE80008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554ABF00D25997465B460343994600D087E000239B46023308270293CEE7424601929F +:40CEC000022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002112030B0D120B1B051343434A240513401C436400ED0764082C434846210007B025 +:40CF00003CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F40234395 +:40CF40009B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234320D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A5146020090 +:40CF8000D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002299469CE70024002201206EE7534603206BE700239B4601330427002602934CE734 +:40CFC000032381460C27029347E780220023002512039946054C82E75C464B4602986FE75C464B46019502986AE7C046FF07000001FCFFFFEC600410FFFF0F800DFCFFFFE4 +:40D000004A464946170C1A0C1B041B0C08041900000C41431500884619007D437943039589462900150045434D44029545462D0CAA46029D5544A94506D98A46802149024B +:40D040008946CA4451460391290C0491414609042D04090C88462900250C24044144240C0591210041438846210079438A466843414650448146080C48446F43824503D9C7 +:40D080008021490289464F44010C894639004944029141460F0404993F0C88460004C01980444146049159460F0C0904090C884659438A4639005143894641464A43514683 +:40D0C000090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A46414661437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D19F6 +:40D10000A94503D98021490288464444049F0399B84641448B468345804141428846514608042F04000C3F185846029910188946904292414F44BA46524299469346C24483 +:40D14000D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B4213437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D034380 +:40D1800052021343E20156D501205A0803401343E207134364085A48604400284DDD5A0709D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC0003E +:40D1C00014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D1D407CE6802259461203114208D0144206D122431203120B45469946434C6EE645 +:40D200005B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382AB9 +:40D2400006DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B4112 +:40D280005B42E418230221D50125019B01241D4000230022994622E61F2521006D42281AC1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D0CD +:40D2C0000F2200241A401800042AD6D1030065076402220BDB082B4301259946019B00241D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C046EB +:40D30000FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E00610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846A8 +:40D34000DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E1002810D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241AE1 +:40D3800001261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A441644238 +:40D3C0000C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DDE9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE14C +:40D4000020223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D113 +:40D44000AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B0C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946B9 +:40D48000A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760DDBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382B98 +:40D4C00000DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B01369E4200D14BE101225B4B1C407B0817401F43E207174364088FE708001043E8 +:40D5000000D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE70800104300D1CAE0581E8446002800D0E7E05244524580416418404224181700012644 +:40D54000230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4301254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A8245CF +:40D58000BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B984614E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E71D +:40D5C0003800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E707F2 +:40D60000520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202DAC +:40D6400071D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE1202675 +:40D6800027005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B5242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE6C3 +:40D6C0001F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE6F3 +:40D700008C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E7CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B001343B4 +:40D7400000D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE66646AC +:40D780000024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511E8A410021174392E6002E14D126005046064362D0DB43002B5CD1871897429241C9 +:40D7C00064185242A418664687E650462043441EA041002460E7574EB4454ED0802636045B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046BA +:40D80000B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A7F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D0044 +:40D84000154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C001700664623 +:40D88000CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E40800030442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E0023 +:40D8C0002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE6802400252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE53C +:40D900000C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441EA04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E1B +:40D940000D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD05430120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134D66 +:40D980000A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE840F2 +:40D9C000A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21AC3 +:40DA00001F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B12052243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081A4A +:40DA4000C4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144ABB +:40DA8000D21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B05224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E759 +:40DAC000002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF72BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C04666 +:40DB0000F8BC08BC9E46704701B40248844601BC604700BFC510000825732025753A20706172746974696F6E73206973204E554C4C210A00696E69745F706172746974697E +:40DB40006F6E7300746573745F6974735F72657365740000746573745F6974735F72657365745F6D757465780000000025732025753A20706172746974696F6E206973203F +:40DB80004E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20746573745FDD +:40DBC0006974735F7265736574210A0025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F662070617274697469E3 +:40DC00006F6E20746573745F6974735F7265736574210A0054DB03100B000000741900081C000000746573745F6974735F72657365745F696E6974004D4245445F434F4E72 +:40DC4000465F53544F524147455F44454641554C545F4B560000000025732025753A20556E6578706563746564206D65737361676520747970652025642100007465737454 +:40DC80005F706974735F656E74727900B47700080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0A0A4661756C74547970653A20000000004D656D4DFF +:40DCC000616E6167654661756C7400004275734661756C740000000055736167654661756C740000486172644661756C740000000A0A436F6E746578743A00000A0A2D2DF9 +:40DD0000204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074696F6E000A52252D34643A202530386C580000000A53502078 +:40DD400020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A202530386C580A4D5389 +:40DD80005020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A2054687265616400000A50726976203A2055736572000000000A507269A4 +:40DDC00076203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D535000810800109108001088 +:40DE0000B308001025732025753A2053504D2072656164206C656E677468206D69736D6174636800A40A0010BC0A0010D40A0010380B0010C40B00105E0C0010800D0010DC +:40DE4000960D0010FE0D00108C0E00102C0F0010D8150010F0150010081600105A160010AA1600106E170010D2170010F21B0010F21B0010C4190010281A0010381A0010E6 +:40DE8000841A0010E41A0010F21B0010F21B0010F21B0010F21B00104E190010921900100A190010D8180010F21B0010F21B0010F21B0010F21B0010F21B0010F21B00101F +:40DEC000F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B001052 +:40DF0000F21B0010F21B0010F21B0010441B00107C1E0010AC1E0010001F0010641F0010741F00103C2000107073615F6D61635F6F7065726174696F6E0000007073615F1F +:40DF4000686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E000000007073615F616561645F6F7065726174696F6E00005E +:40DF80007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E000000007073615F656E7472BD +:40DFC0006F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F7065726174696F6E73007073615F660000007073615F665F6D7539 +:40E000007465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666FB7 +:40E04000722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C656420746F20637265617465207374617274206D61696E20740A +:40E080006872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A0100031A0100F8DF03100B0000002C5A00081C0000007073615F65 +:40E0C000665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233E3 +:40E100003435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000002E2F636F6D706F6E656E74732F5441524745545F5053412FC0 +:40E1400073657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E545F5053415F5352565F494D504C2F706974735F69CD +:40E180006D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E203E3D205053415F4954535F46494C454E414D458D +:40E1C0005F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D455F4D41585F4C454E000000007073615F6974735F56 +:40E200007365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696D706C1C +:40E240002829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696E666F5F696D706C282920BD +:40E280002D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735F72656D6F76655F696D706C2829202D204661696CE2 +:40E2C00065642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E6578706563746564206D65737361676520747970652025A9 +:40E300006421000025732025753A204B5653746F726520696E6974696174696F6E206661696C656420776974682073746174757320256421000000006D6573736167655F73 +:40E3400068616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A20706172746974696F6E206973204E554C4C210A000034 +:40E3800025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20697473210A000000002573202502 +:40E3C000753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E20697473210A0000000058E30310EF +:40E400000B0000008C5E00081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F535021 +:40E44000452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F6964202A29302900000068616E646C655F6D656D20213D20282809 +:40E48000766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5F73697A650000000068616E646C6520213D2028287073615FF9 +:40E4C00068616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E646578205B25645D20697320626967676572207468616E2068618E +:40E500006E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048616E646C65202564206973206E6F7420666F756E6420696EC1 +:40E5400020657870656374656420696E64657821200A000025732025753A205B4552524F525D205265717565737420666F722064657374726F79206279206E6F6E2D6F77A5 +:40E580006E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746F20676574206D656D6F727920666F7220616E20696E76616C1B +:40E5C00069642068616E646C6521200A0000000025732025753A205B4552524F525D205265717565737420666F722068616E646C65206D656D6F7279206973206E6F742047 +:40E60000616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D67722D3E68616E646C65735F706F6F6C5B706F6F6C5F6978A5 +:40E640005D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67725F68616E646C655F64657374726F79007073615F686E646C2E +:40E680005F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206E6F7420616C6C6F77656420746F2062652063616C6C656420B8 +:40E6C00066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74206465636C6172652065787465726E2066756E6374696F6E7396 +:40E700000A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065787465726E2066756E6374696F6E73206C6973744C +:40E740000A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636C69656E742E6300006F734F4BA1 +:40E78000203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D46 +:40E7C0003E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A20534944203078257820697320696E76616C6964210A000000002573202580 +:40E80000753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F722076657273696F6E2025642C +:40E8400020616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E656374206D65737361676520697320696E61636365A8 +:40E88000737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D6170686F726520666F7220636F6E6E656374206D6573736167650029 +:40E8C0006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E672063616C6C206D65737361676520697320696E61636365737369D3 +:40E90000626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A00000025732025753A2043F4 +:40E940006F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D6573736167650000007073615F636F6E6E6563745F6173796E30 +:40E980006300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E656374007073615F63616C6C5F6173796E630000DC +:40E9C0007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F736500000025732025753A204661696C656420696F7665632056616C6916 +:40EA0000646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D282564290A0000002573202514 +:40EA4000753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E672073746174653A202564207768696C652025642069732065787065637465A1 +:40EA800064210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636F6D6D6F6E2E6300002828766F16 +:40EAC0006964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206163746976655F7468726561645F69640076616C69646174659E +:40EB00005F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174655F6173736572740000000053504D5F6368616EE3 +:40EB40006E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202D204661696C656420746F20637265617465206368D6 +:40EB8000616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616374697665206D65737361676573206D656D6F7279DB +:40EBC00020706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D657373616765206461746120697320696E61636365737369626C650A00000000B4 +:40EC000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F7665635B25645D20697320696E61636365737369626CAC +:40EC4000650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F7665635B25645D20697320696E6163636518 +:40EC8000737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D657373616765000000002E2F636F6D706F6E656E74730B +:40ECC0002F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F7365727665722E6300006F734F4B203D3D206F735F73746174757300000012 +:40ED000025732025753A20446571756575652066726F6D20656D7074792071756575650028666C61677320262028307838303030303030302929203D3D203000666C616728 +:40ED400073202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D20637572725F706172746974696F6E00000025732025753A206988 +:40ED80006E74657272757074206D61736B2030782578206D7573742068617665206F6E6C7920626974732066726F6D2030782578210A00002861737365727465645F73691B +:40EDC000676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C2929207C7C2028282830783830303030303030554C2920213D20CC +:40EE000074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F7369676E616C732929000025732025753A206D736720697320696E25 +:40EE400061636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6C79203120626974204F4E20616E64206D757374207E +:40EE80006265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E6F7420616374697665210A0025732025753A205265636569C1 +:40EEC000766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920726F6F74206F66207472757374207365727669638E +:40EF00006500000025732025753A207073615F676574202D20756E6578706563746564206D65737361676520747970653D3078253038580025732025753A20496E76616CE4 +:40EF4000696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365737369626C650A000025732025753A20496E76616C6964206FAE +:40EF800075747665635F6964780A000025732025753A20496E76616C6964207772697465206F7065726174696F6E20285265717565737465642025642C20417669616C6190 +:40EFC000626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A2930290000006163746976655F6368616E6E656C2D3E6D73675F1D +:40F0000070747220213D202828766F6964202A293029000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F7220505321 +:40F04000415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F495085 +:40F08000435F43414C4C000025732025753A207073615F7265706C792829202D20556E6578706563746564206D65737361676520747970653D3078253038580025732025B6 +:40F0C000753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F6964203D202564290A0000000025732025753A207073615F63E5 +:40F10000616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A006163746976655F6D73672D3E6368616E6E656C20213D20287C +:40F1400028766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E7465727275707420666C616720776974686F7574206465636C61725F +:40F18000696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E67650A000025732025753A207369676E616C2030782578206D2B +:40F1C0007573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F656F6928292063616C6C656420776974686F7574207369676E0E +:40F20000616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F736572766963655F71756575655F646571756575650000000D +:40F240007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615F72656164000000007073615F77726974650000007073615FB1 +:40F280007265706C79000000515F4D5554000000515F575F53454D00515F525F53454D002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D5032 +:40F2C0004F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E63000000286F734F4B203D3D206F735F06 +:40F3000073746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F7374617475732900000025732025753A206D65737361676520646174612039 +:40F34000697320696E61636365737369626C650A0000000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756575655F73656D2021EB +:40F380003D204E554C4C000071756575655F726561645F73656D20213D204E554C4C000088F203100B000000B06200081C00000090F2031000000000CC620008100000006F +:40F3C00098F2031000000000DC620008100000006F6E5F706F707065645F6974656D00002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D508F +:40F400004F4E454E545F53504D5F4D41494C424F582F6970635F71756575652E63000000717565756520213D204E554C4C000000626173655F71756575655F6D656D202112 +:40F440003D204E554C4C0000626173655F71756575655F6D656D2D3E6D61676963203D3D204950435F51554555455F424153455F4D414749430000006D7574657820213D66 +:40F48000204E554C4C00000066756C6C5F71756575655F73656D20213D204E554C4C0000726561645F73656D20213D204E554C4C0000000071756575652D3E6D6167696393 +:40F4C000203D3D204950435F51554555455F50524F44554345525F4D41474943000000006F734F4B203D3D206F735F737461747573000000286F734F4B203D3D206F735F55 +:40F5000073746174757329207C7C20286F734572726F7254696D656F7574203D3D206F735F737461747573290000000071756575652D3E6D61676963203D3D204950435F7D +:40F5400051554555455F434F4E53554D45525F4D41474943000000000000000000000000495000107D5000109D5000102D5200105B4D001081520010F152001061530010B7 +:40F58000774D0010CD530010DF5300101D54001063540010B3540010ED54001000000000000000000000000000000000B1D20210B1D202105B4D0010B1D20210B1D2021049 +:40F5C000674D0010774D0010B1D20210B1D20210874D0010A74D0010CB4D0010B1D202100D0000000D0A00002B49504400000000302C434C4F53454400000000312C434C76 +:40F600004F53454400000000322C434C4F53454400000000332C434C4F53454400000000342C434C4F534544000000002B43574A41503A005749464920000000554E4C49F3 +:40F640004E4B0000414C524541445920434F4E4E45435445440000004552524F52000000776474207265736574000000536F6674205744542072657365740000627573796F +:40F68000200000002B43495052454356444154412C000000415400004F4B0A00415445300000000041542B474D52000053444B2076657273696F6E3A25642E25642E25648B +:40F6C0000000000041542076657273696F6E3A25642E25642E25642E2564000041542B554152545F4355523D25752C382C312C302C30000041542B554152545F4355523D50 +:40F7000025752C382C312C302C33000041542B554152545F4355523D25752C382C312C302C32000041542B554152545F4355523D25752C382C312C302C31000041542B4383 +:40F74000574D4F44455F4355523D25640000000041542B4349504D55583D310041542B5253540000726561647900000041542B4357444843505F4355523D25642C256400EF +:40F7800041542B434950524543564D4F44453D310000000041542B43574A41505F4355523D222573222C22257322000041542B43575141500000000041542B4349465352D8 +:40F7C000000000002B43494653523A53544149502C222531355B5E225D2200002B43494653523A5354414D41432C222531375B5E225D220041542B4349505354415F435534 +:40F80000523F00002B4349505354415F4355523A676174657761793A222531355B5E225D220000002B4349505354415F4355523A6E65746D61736B3A222531355B5E225D0E +:40F840002200000041542B43574A41505F4355523F0000002B43574A41505F4355523A22252A5B5E225D222C222531375B5E225D2200000041542B43574C41503D22222CA2 +:40F88000222573222C0000002B43574C41503A28252A642C22252A5B5E225D222C256868642C000041542B43574C4150000000005544500041542B43495053544152543D5A +:40F8C00025642C222573222C222573222C25642C2564000041542B43495053544152543D25642C222573222C222573222C256400455350383236363A3A5F6F70656E5F7539 +:40F9000064703A20646576696365207265667573656420746F20636C6F736520736F636B6574000054435000455350383236363A3A5F6F70656E5F7463703A206465766967 +:40F940006365207265667573656420746F20636C6F736520736F636B6574000041542B434950444F4D41494E3D222573220000002B434950444F4D41494E3A2573252A5B27 +:40F980000D5D252A5B0A5D0041542B43495053454E443D25642C256C750000003E00000053454E44204F4B002C25642C0000000025640A0025643A0041542B434950524582 +:40F9C0004356444154413D25642C256C7500000041542B434950434C4F53453D256400002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A4B +:40FA0000256868783A256868783A256868783A256868783A25686878222C256868752C25642C25642C25642C25642C25642C2564290A00002B43574C41503A2825642C22B9 +:40FA40002533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C2564290A000025345B5EB8 +:40FA8000225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3A5F6F6F625F62757379282920756E7265636F676E697A6564206275737920737461746531 +:40FAC0000A000000455350383236363A3A5F6F6F625F6275737928292041542074696D656F75740A000000002E2F636F6D706F6E656E74732F776966692F6573703832363A +:40FB0000362D6472697665722F455350383236362F455350383236362E637070000000005F736F636B5F6163746976655F6964203E3D2030202626205F736F636B5F6163CC +:40FB4000746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953434F4E4E4543540A00B1 +:40FB8000434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C696420415420636D640A00000000F1 +:40FBC000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F75740A00005F636F6E26 +:40FC00006E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F44455F4445463D256809 +:40FC4000686400002E2F706C6174666F726D2F43616C6C6261636B2E680000005F6F7073000000002E2F706C6174666F726D2F53696E676C65746F6E5074722E6800000003 +:40FC80005F707472203D3D202854202A29265F646174610000000000000000003D5C0010555C0010735C001000000000B71DC1046E3B8209D926430DDC7604136B6BC51747 +:40FCC000B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BB8 +:40FD0000C2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F1F +:40FD400052FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C34F +:40FD80002220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B43233B +:40FDC000C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB7 +:40FE0000B5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BBE6 +:40FE4000258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F74E +:40FE8000555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E94 +:40FEC0005CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D832D6 +:40FF00002C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE69D +:40FF4000BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAA2D +:40FF8000CCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4AC9 +:40FFC0002BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E06D5 +:020000041004E6 +:400000005B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD264 +:40004000CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9E2C +:40008000BBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B10000000000000000C9060010050700108B5D001000000000B2 +:4000C00000000000BD080010E5080010C95D001000000000000000000000000000000000B1D202105E6700102A6700102E67001032670010366700103A6700103E6700108C +:4001000042670010466700104A6700104E67001052670010566700105A670010B06700108C670010B467001090670010B867001094670010986700109C670010A06700108D +:40014000A4670010A8670010AC670010BC670010DA7B0010DE7B0010E27B0010E67B0010EA7B0010FE7B0010FE7B0010EE7B0010F27B0010F67B0010FA7B0010DEB600101C +:40018000F6B60010F2B60010EAB60010EEB60010E6B60010EEB60010E2B60010EEB60010EEB60010505341004B455900FABD001012BE00100EBE001006BE00100ABE0010FB +:4001C00002BE00100ABE0010FEBD00100ABE00100ABE0010637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F10D +:4002000071D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027FC6 +:40024000503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC6255 +:400280009195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949B1E87E9D5 +:4002C000CE5528DF8CA1890DBFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9B3 +:40030000562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FDDF +:4003400045AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E53479 +:40038000F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212361B80809B68 +:4003C000DFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D66148 +:400400007DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED900 +:400440007239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F91004020206F2 +:40048000FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA7517 +:4004C0004221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E829D +:400500007A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D32B +:400540002814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEFDB +:40058000C46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F40774 +:4005C000CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C2A +:400600003E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FAE5757F9BB +:4006400069B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E22158787926B +:40068000C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B05A2D2D77F4 +:4006C0001E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE67674C +:400700007D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A2DB +:40074000EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E575 +:4007800008F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E0707362412129B1B808064 +:4007C0003DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D644 +:40080000CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBEFC +:400840004B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F906040202EE +:4008800081FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA13 +:4008C00063422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A782FC7E7E99 +:40090000477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B827 +:400940003C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACACD7 +:40098000A6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F470 +:4009C00025CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE8747426 +:400A0000213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757B7 +:400A4000D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E9215878767 +:400A800020C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999775A2D2DF0 +:400AC000111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060300103020167A9CE6748 +:400B00002B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA2D7 +:400B4000AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E571 +:400B8000F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0712362412809B1B8060 +:400BC000E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D640 +:400C0000B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BEF8 +:400C4000394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F902060402EA +:400C80007F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA0F +:400CC0002163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A77E82FC7E95 +:400D00003D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB823 +:400D4000143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43ACD3 +:400D800062A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F46C +:400DC000EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE87422 +:400E00001F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A3557F9AE57B3 +:400E4000B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E8792158763 +:400E8000E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B029992D775A2DEC +:400EC0000F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE44 +:400F00002B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5FD3 +:400F4000AFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D16D +:400F8000F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362480809B1B5C +:400FC000E2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B73C +:40100000B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED967F4 +:4010400039394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E902020604E6 +:401080007F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF0B +:4010C0002121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F2557E7E82FC91 +:401100003D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B1F +:4011400014143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF43CF +:401180006262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F368 +:4011C000EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE81E +:401200001F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEAF +:40124000B9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C878792155F +:40128000E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B0292D2D775AE8 +:4012C0000F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950BC1 +:4013000042FAC34E082EA16628D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805D2 +:40134000B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620E14 +:40138000AA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C05 +:4013C00083539961172B047EBA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691D1 +:40140000F5024C254FE5D7FCC52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB5D +:40144000955259DAD4BE832D587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A318297513360E8 +:4014800062537F45B16477E0BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AAF +:4014C000D33708A5302887F223BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE13271 +:40150000A4F6EB750B83EC394060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CC9F +:4015400067D99E77B0E842BD07898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51EBE +:40158000362D39270A0FD964685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E0434E +:4015C000121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC6896 +:40160000B8E4F163D731DCCA426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FADD +:4016400047E96422A8FC8CC4A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9BDF +:40168000547E4662F68D13C290D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB7019C +:4016C000834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B0E0 +:4017000033A7D815F104984A41ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473BE +:40174000FB0B412EB3671D5A92DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7910 +:4017800073C737BF53F7CDEA5FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49CB6 +:4017C0006456C1907BCB8461D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7646 +:4018000025F5024CFC4FE5D7D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7A59 +:40184000DA9552592DD4BE83D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A3160975133E4 +:401880004562537FE0B1647784BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BAB +:4018C000A5D33708F2302887B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE16D +:4019000075A4F6EB390B83ECAA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC8940439B +:401940007767D99EBDB0E8428807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED5BA +:4019800027362D39640A0FD921685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E04A +:4019C0001D121B170B0E090DADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC92 +:401A000063B8E4F1CAD731DC10426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA119448D9 +:401A40002247E964C4A8FC8C1AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCCDB +:401A800062547E46C2F68D13E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB798 +:401AC000A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D0DC +:401B00001533A7D84AF10498F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA8774BA +:401B40002EFB0B415AB3671D5292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CE0C +:401B8000BF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4B2 +:401BC000906456C1617BCB8470D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC42 +:401C00004C25F502D7FC4FE5CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D55 +:401C400059DA9552832DD4BE21D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A33609751E0 +:401C80007F45625377E0B164AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C5A7 +:401CC00008A5D33787F23028A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058A69 +:401D0000EB75A4F6EC390B83EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC894097 +:401D40009E7767D942BDB0E88B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAEB6 +:401D80003927362DD9640A0FA621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C2246 +:401DC000171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6ED8E +:401E0000F163B8E4DCCAD7318510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194D5 +:401E4000642247E98CC4A8FC3F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5FD7 +:401E80004662547E13C2F68DB8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A94 +:401EC0009AA8834F6E65E695E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D8 +:401F0000D81533A7984AF104DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87B6 +:401F4000412EFB0B1D5AB367D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181408 +:401F800037BF73C7CDEA53F7AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4AE +:401FC000C190645684617BCBB670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC7691883E +:40200000024C25F5E5D7FC4F2ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF51 +:402040005259DA95BE832DD47421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097DC +:40208000537F45626477E0B16BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A86A3 +:4020C0003708A5D32887F230BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE1320565 +:40210000F6EB75A483EC390B60EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC8993 +:40214000D99E7767E842BDB0898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3DB2 +:402180002D3927360FD9640A5CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C42 +:4021C0001B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B68A +:40220000E4F163B831DCCAD76385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11D1 +:40224000E9642247FC8CC4A8F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6AD3 +:402280007E4662548D13C2F6D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC90 +:4022C0004F9AA883956E65E6FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0D4 +:40230000A7D8153304984AF1ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FAB2 +:402340000B412EFB671D5AB3DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE791804 +:40238000C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD8AA +:4023C00056C19064CB84617B32B670D56C5C7448B85742D001000000020000000400000008000000100000002000000040000000800000001B000000360000007F7F7F7F89 +:402400007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F000102D7 +:40244000030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F02000000BA +:40248000213A01104D3A0110833A011000000000CF3A0110B13A0110ED3A01101B3B01104145532D3132382D454342004145532D3139322D454342004145532D3235362D94 +:4024C000454342004145532D3132382D434243004145532D3139322D434243004145532D3235362D434243004145532D3132382D435452004145532D3139322D43545200DE +:402500004145532D3235362D435452004145532D3132382D47434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382D43434D004145532D49 +:402540003139322D43434D004145532D3235362D43434D0043484143484132300000000043484143484132302D504F4C59313330350000000201000080000000A024041093 +:402580000000000000000000100000007C24041003010000C0000000AC2404100000000000000000100000007C2404100401000000010000B82404100000000000000000F5 +:4025C000100000007C2404100502000080000000C42404101000000000000000100000007C24041006020000C0000000D02404101000000000000000100000007C2404101C +:402600000702000000010000DC2404101000000000000000100000007C2404100B05000080000000E82404101000000000000000100000007C2404100C050000C000000053 +:40264000F42404101000000000000000100000007C2404100D05000000010000002504101000000000000000100000007C2404100200000000000000000000000000000038 +:4026800000000000373B0110373B011099390110C33901100E060000800000000C2504100C0000000100000010000000702604100F060000C0000000182504100C00000052 +:4026C0000100000010000000702604101006000000010000242504100C0000000100000010000000702604100200000000000000000000000000000000000000553B011041 +:40270000553B0110DF390110053A01102B08000080000000302504100C0000000100000010000000E82604102C080000C00000003C2504100C00000001000000100000009E +:40274000E82604102D08000000010000482504100C0000000100000010000000E826041009000000000000000000000000000000AD3B0110753B0110753B0110E13B011090 +:402780000B3C01104807000000010000542504100C0000000000000001000000602704100900000000000000000000000000000000000000293C0110293C0110613C011099 +:4027C0008B3C0110490A000000010000602504100C0000000000000001000000A02704100200000074250410030000009025041004000000AC25041005000000C8250410C2 +:4028000006000000E425041007000000002604100B0000001C2604100C000000382604100D000000542604100E000000942604100F000000B026041010000000CC260410CF +:402840002B0000000C2704102C000000282704102D00000044270410480000008427041049000000C4270410000000000000000073656370333834723100000073656370C4 +:402880003235367231000000202045435020746573742023312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A200000006661696C7C +:4028C000656420282575290A000000007061737365640A00202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F7468657220706F696E86 +:4029000074293A2000000000556E6578706563746564206572726F722C2072657475726E20636F6465203D20253038580A0000000A000000303030303030303030303030E4 +:402940003030303030303030303030303030303030303030303030303030303030303030303030310000000046464646464646464646464646464646464646464646464606 +:402980003939444546383336313436424339423142344432323833300000000035454136463338394133384238424338314537363737353342313541413535363945313789 +:4029C0003832453330414245374432350000000034303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303017 +:402A000000000000374646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646000000003535353535353535DD +:402A4000353535353535353535353535353535353535353535353535353535353535353535353535353535350000000034290410682904109C290410D0290410042A0410D0 +:402A8000382A041004001800800100007028041003001700000100007C280410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000090 +:402AC00001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF834 +:402B000047422CE1F2D1176BF551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF6B +:402B400000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A46 +:402B80009DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F759E9 +:402BC000989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5DB8 +:402C00006F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303144423432000092 +:402C4000313444454639444541324637394344363538313236333141354346354433454400000000393841410000000038333335444331363342423132344236353132398F +:402C8000433936464445393333443844373233413730414144433837334436443534413742423044000000000000000000000000201C0000000000004038000000000000FA +:402CC00060240000000000008070000000000000A06C000000000000C048000000000000E05400000000000000E100000000000020FD00000000000040D900000000000001 +:402D000060C50000000000008091000000000000A08D000000000000C0A9000000000000E0B5000000000000534841323234000053484132353600005348413338340000CA +:402D4000534841353132000005000000282D04101C000000400000007BC5011093C50110B1C50110CDC50110EBC5011011C601102DC6011047C6011006000000302D0410EF +:402D8000200000004000000063C6011093C50110B1C501107BC60110EBC5011011C601102DC6011047C6011007000000382D0410300000008000000099C60110B1C6011044 +:402DC000CFC60110EBC6011009C701102FC701104BC7011065C7011008000000402D0410400000008000000081C70110B1C60110CFC6011099C7011009C701102FC70110FA +:402E00004BC7011065C701105504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61742D636F756E74723F +:402E4000794E616D65000000436F756E74727900430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C0000005504080069642D611B +:402E8000742D73746174650053746174650000005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A6174696F6E00000000BE +:402EC0004F00000055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F5500002A864886F70D010908 +:402F000001000000656D61696C4164647265737300000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D626572000053657269D1 +:402F4000616C206E756D62657200000073657269616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F7374616C206164647265A1 +:402F800073730000706F7374616C416464726573730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F646500706F7374616C436FEB +:402FC000646500005504040069642D61742D7375724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D6500476976656E206E6157 +:403000006D650000474E000055042B0069642D61742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0069642D61742D676565 +:403040006E65726174696F6E5175616C696669657200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175616C69666965720092 +:4030800055040C0069642D61742D7469746C65005469746C650000007469746C6500000055042E0069642D61742D646E5175616C696669657200000044697374696E67752B +:4030C0006973686564204E616D65207175616C696669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D0050736575646F6E79FB +:403100006D00000070736575646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E20636F6D706F6E656E7455 +:40314000000000004443000055042D0069642D61742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000756E697175654964CE +:40318000656E74696669657200000000551D130069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E7473000000551D0F0090 +:4031C00069642D63652D6B6579557361676500004B6579205573616765000000551D250069642D63652D6578744B65795573616765000000457874656E646564204B6579F5 +:403200002055736167650000551D110069642D63652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000006086480186F84201D3 +:403240000100000069642D6E657473636170652D6365727474797065000000004E6574736361706520436572746966696361746520547970650000002B06010505070301A4 +:403280000000000069642D6B702D7365727665724175746800000000544C5320576562205365727665722041757468656E7469636174696F6E0000002B06010505070302F3 +:4032C0000000000069642D6B702D636C69656E744175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E0000002B06010505070303E2 +:403300000000000069642D6B702D636F64655369676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6B702D656D61696C5013 +:40334000726F74656374696F6E000000452D6D61696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D655374616D70696E670000D8 +:4033800054696D65205374616D70696E670000002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F435350205369676E696E6700000000A2 +:4033C0002A864886F70D01010E00000073686132323457697468525341456E6372797074696F6E005253412077697468205348412D323234000000002A864886F70D0101B3 +:403400000B00000073686132353657697468525341456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D01010C0000007368613374 +:40344000383457697468525341456E6372797074696F6E005253412077697468205348412D333834000000002A864886F70D01010D00000073686135313257697468525303 +:4034800041456E6372797074696F6E005253412077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D53484132323400000088 +:4034C00045434453412077697468205348413232340000002A8648CE3D0403020000000065636473612D776974682D534841323536000000454344534120776974682053B2 +:4035000048413235360000002A8648CE3D0403030000000065636473612D776974682D53484133383400000045434453412077697468205348413338340000002A8648CE2A +:403540003D0403040000000065636473612D776974682D53484135313200000045434453412077697468205348413531320000002A864886F70D01010A00000052534153E2 +:4035800053412D50535300002A864886F70D010101000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D65635075626C69634B6579000028 +:4035C00047656E65726963204543206B657900002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D0301070000000073656370AD +:4036000032353672310000002B810400220000007365637033383472310000002B0E03020700000064657343424300004445532D434243002A864886F70D030700000000E5 +:403640006465732D656465332D636263000000004445532D454445332D4342430000000060864801650304020400000069642D7368613232340000005348412D323234001C +:4036800060864801650304020100000069642D7368613235360000005348412D3235360060864801650304020200000069642D7368613338340000005348412D33383400D7 +:4036C00060864801650304020300000069642D7368613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000484D41432D53484100 +:403700002D323234000000002A864886F70D020900000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020A00000000686D616312 +:403740005348413338340000484D41432D5348412D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D5348412D353132000000005D +:4037800025642E25640000002E256400883504100900000094350410A435041001000000A835041007000000B0350410C035041002000000D035041005000000D835041032 +:4037C000E0350410030000000000000000000000000000000000000000000000F035041008000000FC350410FC3504100300000008360410050000001036041010360410C4 +:4038000004000000000000000000000000000000000000000000000060360410090000006C360410783604100500000080360410090000008C3604109836041006000000C3 +:40384000A036041009000000AC360410B836041007000000C036041009000000CC360410D836041008000000000000000000000000000000000000000000000050726F636F +:403880002D547970653A20342C454E4352595054454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F444800000045434453C6 +:4038C000410000005253412D616C740001000000A438041049CD01101FCD011065CD0110DDCD011029CE011075CE0110C5CE0110E1CE01100BCF011029CF0110020000006A +:40390000B0380410A5CF011071CF0110B3CF011011D00110000000000000000077D0011093D00110B9D00110D5D0011003000000B4380410A5CF0110FDD0011000000000AE +:4039400000000000000000000000000077D0011093D00110B9D00110D5D0011004000000BC380410A5CF011027D1011045D1011089D10110000000000000000077D00110A7 +:40398000C5D10110EBD10110D5D001102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E205253412050524956410C +:4039C0005445204B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20454320505249564154DB +:403A000045204B45592D2D2D2D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2050524956415445204B45592D2D96 +:403A40002D2D2D002D2D2D2D2D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2D7D +:403A80002D2D00002D2D2D2D2D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D0000020305070B +:403AC0000B0D1113171D1F25292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B5C7 +:403B0000A5DBB5E95BC25639F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FEA +:403B4000CCA10C246F2CE92DAA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4DEA +:403B8000130D385354730A65BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C77482732 +:403BC000B5BCB034B30C1C394AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42BD +:403C0000CD65EF23914437712F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8D0 +:403C4000BE6F7045015B83128CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4F5 +:403C8000E3254F388647BEEFB5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E9831 +:403CC0001032B42D6DC631A83F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB727A1 +:403D000026C9265C38211B2EED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA23C +:403D4000013042BC4B661AA89197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41917 +:403D800053AB4151086C371E99EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F744C +:403DC000602F17436F63A57872ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA2C +:403E000007C2C021C7B886D11EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB28EE +:403E40009324C7407BABCA32BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C2E2F6665617475721B +:403E800065732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766963652E63707000005F77726974655F63616368650000000081 +:403EC0005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F657261736528616464722C2073697A65290000000000000000000015 +:403F00004D710210757102109371021077720210A9730210157402104D770210017A0210C57A0210857B0210977B0210A97B0210E37B0210297C0210617C02106B760000C8 +:403F40002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F64617461000000000000000000000000000000000054 +:403F8000B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210202A2F3F3A3B227C3C3E5C00CF +:403FC0006B7673746F726500202A2F3F3A3B227C3C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C617368206174747269629D +:40400000757465730000000054444253544F52453A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52453A20556E61626C6568 +:40404000207265736574206172656120617420696E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265636F726420617420694C +:404080006E69740054444253544F52453A20556E61626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556E61626C6520746F209A +:4040C0006275696C642052414D207461626C6520617420696E69740054444253544F52453A20556E61626C6520746F20636865636B2077686574686572206572617365201F +:40410000756E69742069732065726173656420617420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D20474320617420696E69740000BD +:4041400054444253544F52453A20556E61626C6520746F2073796E6320424420617420696E697400000000002E2F647269766572732F4D6265644352432E6800637263200F +:40418000213D204E554C4C00400000000000000000000000ED890210298A0210CD9E021071A3021045A40210C19602106D9702102D980210459702100D910210F193021091 +:4041C000D1940210F5A40210F5A5021031A7021005A80210B1AA02102E2F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692E630000002161726501 +:404200005F696E74657272757074735F656E61626C656428290000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465F7 +:40424000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F43797072657373EC +:404280002F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E430000636F756C64206E6F742070696E6F75740000000091 +:4042C00070696E6D6170206D69732D6D617463680000000070696E6D6170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D6170206E6F74206635 +:404300006F756E6420666F722066756E6374696F6E00000044656570536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D41582900000000446565701E +:40434000536C6565704C6F636B20756E646572666C6F7720283C2030290000002E2F68616C2F6D6265645F7469636B65725F6170692E6300300000006D617463685F7469EB +:40438000636B20213D2071756575652D3E7469636B5F6C6173745F7265616400A16C03109D6D0310216E03102D6E0310C56D0310456E0310616D0310596E03109C43041002 +:4043C000B06C000800000000000000000000000000000000B1D20210B1D20210B1D20210B1D2021045C0021051C0021003600010216000105DC002107D5C00109F5C0010E4 +:40440000BB5C0010D75C0010FB5C0010075D00101B5D00102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646576696365BB +:404440002F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441527B +:404480004745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E4300002E2E2E0A000000002E2F706C6174666F726D2F6D6265645F70 +:4044C000637269746963616C2E630000637269746963616C5F73656374696F6E5F7265656E7472616E63795F636F756E746572203C2055494E5433325F4D415800000000E2 +:40450000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D65643E0000000A0A2B2B204D6265644F53204572726F7220496E666F202B2B0A457205 +:40454000726F72205374617475733A203078255820436F64653A202564204D6F64756C653A2025640A4572726F72204D6573736167653A20000000004B65726E656C2045C5 +:4045800072726F723A203078256C582C200000005468726561643A203078256C582C20004D757465783A203078256C582C20000053656D6170686F72653A203078256C5897 +:4045C0002C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C6167733A203078256C582C200054696D65723A203078256C582C2000004D6573732F +:4046000061676551756575653A203078256C582C20000000417373657274696F6E206661696C65643A2000000A4C6F636174696F6E3A203078256C58000000000A46696C27 +:40464000653A20002B2564000A4572726F722056616C75653A203078256C58000A43757272656E74205468726561643A202573202049643A203078256C5820456E7472794A +:404680003A203078256C5820537461636B53697A653A203078256C5820537461636B4D656D3A203078256C582053503A203078256C5820000A466F72206D6F726520696E8A +:4046C000666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875622E696F2F6D6265646F732D6572726F722F3F6572726F723D3078253038580054 +:404700000A2D2D204D6265644F53204572726F7220496E666F202D2D0A000000F2C7021002C8021012C8021022C8021032C8021052C8021042C8021062C802107CC802100C +:404740007CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC8021072C8021052616D2065786563757465206E65766572206C6F23 +:40478000636B206F766572666C6F7720283E2055534852545F4D41582900000052616D2065786563757465206E65766572206C6F636B20756E646572666C6F7720283C2017 +:4047C00030290000526F6D207772697465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900526F6D207772697465206E6576657220C7 +:404800006C6F636B20756E646572666C6F7720283C203029000000004572726F72202D2077726974696E6720746F20612066696C6520696E20616E20495352206F722063A5 +:404840007269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D2072656164696E672066726F6D20612066696C6520696E20616E20495352206F72BC +:4048800020637269746963616C2073656374696F6E0D0A00457863657074696F6E0000002E2F706C6174666F726D2F6D6265645F72657461726765742E63707000000000FB +:4048C00030203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F494E5F50524F47524566 +:404900005353203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574206F66206D656D6F23 +:4049400072790D0A000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00002E2F706C6174666F726D2F53696E676C65746F6E5074722E82 +:40498000680000005F707472203D3D202854202A29265F6461746100000000000000000025D5021045D50210C1CB02107DCB0210D9CA021005CB021045C00210F9CA02105F +:4049C0000360001021600010EBCA02107D5C00109F5C0010BB5C0010D75C0010FB5C0010F5CB02101B5D001044657072656361746564206265686176696F723A206D696CD0 +:404A00006C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E746572727570742E0A0000776169745F757320626C6F636B732064D8 +:404A400065657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E672064656C6179730A0061706C69636174696F6E5F756E6E616D5B +:404A800065645F6D75746578000000002E2F72746F732F4D757465782E637070000000005F6964004D75746578206C6F636B206661696C65640000004D7574657820756E20 +:404AC0006C6F636B206661696C6564006D616C6C6F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D75746578006D61696E0000000099 +:404B0000507265206D61696E20746872656164206E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349532D52544F53206511 +:404B400072726F723A20537461636B206F766572666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572666C6F77000000004D +:404B8000434D5349532D52544F53206572726F723A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F7700000000434D5349532D525465 +:404BC0004F53206572726F723A2053544420432F432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D5349532D52544F53206536 +:404C000072726F723A2053544420432F432B2B206C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D5349532D52544F532065D1 +:404C400072726F723A20556E6B6E6F776E000000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636F6D706C6574656420E5 +:404C800077697468696E207468652074696D656F757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616D6574657220657224 +:404CC000726F720053797374656D206973206F7574206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E746578740000556E6B6E6F776E0067 +:404D0000EAD902109AD90210AAD90210BAD90210CAD90210DAD902105ADA021056DA021052DA02104EDA02104ADA021046DA02105254582056352E342E3000007274785FD7 +:404D400069646C65000000007274785F74696D657200000003000000E8030000050000006C6E000810000000000000000000000000000000000000000000000000000000D2 +:404D80000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000F44D0410184E04103C4E0410040000000000000072 +:404DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C4D041000000000AC6E0008F4 +:404E000044000000386F000800020000010000000100000000000000484D041000000000F06E0008440000003871000800030000280000000100000000000000000000004B +:404E40000000000038740008340000006C7400085000000000000000A405031040050310A405031054050310A4050310680503107C050310900503102E2F72746F732F54B6 +:404E80006869735468726561642E6370700000002128666C6167732026206F73466C6167734572726F72290028666C616773203D3D206F73466C6167734572726F725469A2 +:404EC0006D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028666C616773203D3D206F73466C6167734572726F7252657369 +:404F00006F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B000002000000000061401200000000010000000068401207000011 +:404F40000005000000006640120500000006000000006440120300000406000000006740120600000007000000006540120400000008000000006540120400000009000059 +:404F80000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D00000000674012060000FFFF0000FFFFFFFF22 +:404FC0000000000003000000000061401200150001010000000068401207150001050000000066401205150001060000000064401203150005060000000067401206150082 +:40500000010700000000654012041500010800000000654012041500010900000000634012021500010A00000000624012011500010B00000000664012051500010C000029 +:405040000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000241C03102A1C0310301C0310361C03103E1C03100300000001000000010000009E +:40508000000000000503600004000000010000000000000001000000060460000800000090760008A520031008000000010000000200000002000000080800030900000001 +:4050C000010000000000000003000000090900030800000070760008312003100A0000000100000004000000040000000A0A000C0B000000010000000000000005000000F9 +:405100000B0B000C1000000030760008452003102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269B5 +:40514000766572732F7065726970686572616C2F737973636C6B2F63795F737973636C6B2E68000000127A0000E1F5050000000000000000000001000000100000000050EB +:405180002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F43 +:4051C0006970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F54415247455441 +:405200005F4655545552455F53455155414E415F4D305F5053412F73706D5F696E69745F6170692E630000002E2F746172676574732F5441524745545F4379707265737357 +:405240002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F7461C2 +:4052800072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696FC5 +:4052C0002F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726976657273DD +:405300002F7065726970686572616C2F6770696F2F63795F6770696F2E6300002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F436B +:40534000362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F54415247455430 +:405380005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E6370 +:4053C000000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572697068656F +:4054000072616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64658E +:40544000766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F706970652E630000002E2F746172676574732F5441524745545F43797075 +:40548000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E6800000000F5 +:4054C0002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F00 +:405500007363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963651F +:405540002F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E680000002E2F746172676574732F5441524745545F4379707265737353 +:405580002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E630000002E2F74611C +:4055C00072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7379736171 +:405600006E616C6F672F63795F737973616E616C6F672E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646540 +:40564000766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E742E63000030480310464803105C4803107248031088480310E9 +:405680009E480310B4480310CA4803102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572739B +:4056C0002F7065726970686572616C2F737973706D2F63795F737973706D2E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545FC3 +:4057000050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F544152474554FC +:405740005F437970726573732F5441524745545F50534F43362F6770696F5F6170692E63000000006F626A006F626A2D3E706F72740000006F626A2D3E70696E20213D20E8 +:405780004E43000043595F50494E286F626A2D3E70696E29203C2038000000004750494F2070696E207265736572766174696F6E20636F6E666C6963742E0000DE55031036 +:4057C00002560310085603100E56031014560310FC5503101A5603102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465A5 +:40580000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E680000F65903101A5A0310205A0310265A03102C5A0310145A031088 +:40584000325A0310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720746F20667265652077A2 +:40588000726F6E6720706F72742F70696E2E00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F70736F63365F7574696C1D +:4058C000732E63006469765F74797065203C2043595F4E554D5F444956494445525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3E6D61785F696E64654A +:4059000078000000547279696E6720746F2072656C656173652077726F6E6720636C6F636B20646976696465722E0000705F616C6C6F632D3E63757272656E745F696E64DE +:405940006578203C20705F616C6C6F632D3E6D61785F696E64657800547279696E6720746F2072656C656173652077726F6E67205343422E00000000547279696E672074C7 +:405980006F2072656C656173652077726F6E6720544350574D2E00006368616E6E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E454C53004E5649433D +:4059C000206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00000000FC063F0BFD000000000000000000000000FEFF000042 +:405A000001000000FEFF00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572D0 +:405A40006970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646567 +:405A8000766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F43797057 +:405AC000726573732F5441524745545F50534F43362F73657269616C5F6170692E63000073657269616C5F6964203C204E554D5F53455249414C5F504F5254530000000022 +:405B00006F626A0053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F52582070696E2072657311 +:405B40006572766174696F6E20636F6E666C6963742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E000000005365726938 +:405B8000616C204354532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617463682E2052657175B5 +:405BC00065737465642070696E7320527820616E642054782063616E2774206265207573656420666F72207468652073616D652053657269616C20636F6D6D756E696361FE +:405C000074696F6E2E00000040420F002000000000005A0003000000FFFFFFFF00000000000000000000000000000000000000000000000000000000020000000000000070 +:405C4000000000000000000000000000000000000000000000000000000000000300000001000000504D2063616C6C6261636B20726567697374726174696F6E20666169AB +:405C80006C656421000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E000000BB +:405CC0007806000843000000504F5349580000002E00000030900310A4900310A490031014900310A4900310A4900310A4900310A4900310A4900310A49003101C90031099 +:405D0000FE8A0310A4900310B88A0310088B0310A4900310548B03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D0310A490031038 +:405D4000A4900310A4900310A4900310A4900310A4900310A4900310A4900310A4900310A49003105C8B0310A48C0310A4900310A48C0310A4900310A4900310A490031008 +:405D8000A49003106E8D0310A4900310A4900310768D0310A4900310A4900310A4900310A4900310A4900310188E0310A4900310A49003104A8E0310A4900310A4900310C7 +:405DC000A4900310A4900310A4900310A4900310A4900310A4900310A4900310A4900310448F0310788F0310A48C0310A48C0310A48C03108A8F0310788F0310A490031015 +:405E0000A4900310928F0310A4900310AC8E031072900310E88F0310E28E0310A4900310EA8E0310A490031040900310A4900310A4900310A28F0310494E4600696E660049 +:405E40004E414E006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C290000300000002020202048 +:405E80002020202020202020202020203030303030303030303030303030303000202020202020202020282828282820202020202020202020202020202020202088101092 +:405EC00010101010101010101010101010040404040404040404041010101010101041414141414101010101010101010101010101010101010101011010101010104242BC +:405F000042424242020202020202020202020202020202020202020210101010200000000000000000000000000000000000000000000000000000000000000000000000D1 +:405F40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021 +:405F80000000000000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E000080E03779C34143176E05B5B5B89346BE +:405FC000F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C34038 +:4060000000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D42D1 +:40604000000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF15441F +:4060800050EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D000000A0C7031082C703103CC703105AC603103CC70310B3 +:4060C00074C703103CC703105AC6031082C7031082C7031074C703105AC6031052C6031052C6031052C60310B8C9031000D00310C0CE0310C0CE0310BCCE0310D8CF03103F +:40610000D8CF0310CACF0310BCCE0310D8CF0310CACF0310D8CF0310BCCE0310E0CF0310E0CF0310E0CF0310E4D10310000000000000001000000008C000000058610410EC +:40614000C0000008101400001015000808740000D09FFB7F01000000000000000B000000000000001000000000000000000000000100000000000000000000000000000084 +:40618000000000002300000000000000F07F000000000000000000000B0000009CE003100400000000000000000000000A00000000000000F00000000000000000000000B5 +:4061C000040000000000000000000000000000000000000044DB03100000000030190008440000003015000800040000180000000000000000000000041A0100100000003C +:40620000000000000100000000000000010000000000000000000000F0DF031000000000E859000844000000E819000800400000180000000000000000000000000F00007D +:4062400010000000000000000100000001000000010000000000000000000000010F000020000000000000000100000001000000010000000000000000000000020F0000C7 +:4062800040000000000000000100000001000000010000000000000000000000030F000080000000000000000100000001000000010000000000000000000000040F0000F3 +:4062C00000010000000000000100000001000000010000000000000000000000050F000000020000000000000100000001000000010000000000000000000000060F00006C +:4063000000040000000000000100000001000000010000000000000000000000070F000000080000000000000100000001000000010000000000000000000000080F00001E +:4063400000100000000000000100000001000000010000000000000000000000090F0000002000000000000001000000010000000100000000000000000000000A0F0000B6 +:406380000040000000000000010000000100000001000000000000000000000054E3031000000000485E000844000000485A00080004000018000000000000000000000098 +:4063C000001A010010000000000000000100000000000000010000000000000000000000011A01002000000000000000010000000000000001000000000000000000000032 +:40640000021A010040000000000000000100000000000000010000000000000000000000031A0100800000000000000001000000000000000100000000000000000000005D +:4064400038EB0310000000003860000824000000485F0008F00000004CEB0310000000008C62000824000000FC600008900100000000000000000000000000000A00000020 +:40648000A85E0008000000000A0000005C6000080000000000000000EC62000804630008010000000D7D0310D43F04104FBE0210FFFFFFFFFFFFFFFFFFFFFFFF0000000063 +:4064C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C +:40650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B +:40654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B +:406580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001889000891DB0210304D0410C08CFB02DA +:4065C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B +:40660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A +:406640000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A0080F0FA0250C30000320000000000A86102FF000020 +:40668000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF00000300000000000000FFFF00000000000000000000FFFF0000C7 +:4066C000010000000000000001000000000000000000000000000000000000000000000000000000000000000000000000003840000000005D6C031001000000070000003C +:40670000500600080000000000000000780600080000000064090008CC090008340A00080000000000000000000000000000000000000000000000000000000000000000DD +:406740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019 +:4067800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000D8 +:4067C0000E33CDAB34126DE6ECDE05000B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D +:406800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058 +:406840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018 +:4068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8 +:4068C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098 +:406900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057 +:406940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017 +:4069800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7 +:4069C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 +:406A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 +:406A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016 +:406A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6 +:406AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 +:406B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000430000000000000012 +:406B4000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000008F +:406B8000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000004F +:406BC000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000F +:406C000000000000000000000000000000000000000000000000000071A00310F17A0310000000009C5E0410D05C0410585E0410585E0410585E0410585E0410585E041072 +:406C4000585E0410585E0410585E0410585E0410FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000010041534349490000000000000000000000000000000000000000000000000090 +:406C800000004153434949000000000000000000000000000000000000000000000000000000000000000000000000000C0C00080C0C0008140C0008140C00081C0C0008AB +:406CC0001C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C0008440C00084C0C00084C0C0008540C0008540C00085C0C000894 +:406D00005C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C0008940C00089C0C000853 +:406D40009C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C000813 +:406D8000DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D0008CC +:406DC0001C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D000883 +:406E00005C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D000842 +:406E40009C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D000802 +:406E8000DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E0008BB +:406EC0001C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E000872 +:406F00005C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E000831 +:406F40009C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E0008F1 +:406F8000DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F0008AA +:406FC0001C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F000861 +:407000005C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008940F00089C0F000820 +:407040009C0F0008A40F0008A40F0008AC0F0008AC0F0008B40F0008B40F0008BC0F0008BC0F0008C40F0008C40F0008CC0F0008CC0F0008D40F0008D40F0008DC0F0008E0 +:40708000DC0F0008E40F0008E40F0008EC0F0008EC0F0008F40F0008F40F0008FC0F0008FC0F00080410000804100008FFFFFFFF00000200E9000010A9700210C10000107A +:4070C0000000000000B585B00190019B0393039B5B78FF2B37D100F03FFA03000293042000F00AFA0300180000F016FA03001A00164B1A60164B00221A60154B1B685B0118 +:407100005B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A12680A431A60C046094B1B681A68074B1B681340F8D1029B5E +:40714000180000F0B9F9C04605B000BDC8760008CC760008D0760008D476000800B589B001900091444B0793002000F0C5F9030005930023069300F0B7F9020013236B44C8 +:40718000033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F0AAF90300180000F0CEF903001A0001235340DBB2002B23D0002000F0B4F99D +:4071C00002002E4B9A421CD02D4A00230021012000F082F9031E14D102E0069B01330693002000F0A1F90200244B9A4203D0069B244A9342F1D9069B224A934201D8002359 +:407200000793079B002B33D100F0A6F903000393002000F071F91C4B1A00012100F074F9031E13D1019B002B06D1009B180000F02FF8164B07930BE0C046059B1B69002B99 +:40724000FBDB00F041F90300079301E00A4B079313236B441B78002B06D0C0460121002000F06AF9031EF9D1039B180000F024F9079B180009B000BD0500520001018800CE +:40728000E4050008EF490200B87600080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E221A60104B104A1A60104AA323DB000621D1500E49039B1B0295 +:4072C0001B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04604012640080126401E1F0000000026401C05000010B582B08C +:4073000002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0394B394AD2681204110C384A1269120A1004FF221204104067 +:40734000344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A9023D3582B4A134090221201134390228B50264B1B69254A9023DC +:40738000D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BFC046194B1B68002BFBDA174BDB68012213401DD0154B154A09 +:4073C000126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB681B0E1902FF231B020B40134390228350054B054AD2680221E4 +:407400008A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B4607331A701A4B194A126904210A431A616B4607331B78012B01D0D5 +:4074400030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A60104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A0A +:4074800086235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F000018052640040126401C052640AAAAAAAA01B40248844601BCF6 +:4074C000604700BF8B49031001B40248844601BC604700BFE52D031001B40248844601BC604700BF5535031001B40248844601BC604700BF2D1F031001B40248844601BCD4 +:40750000604700BF512A031001B40248844601BC604700BFA52A031001B40248844601BC604700BF852A031001B40248844601BC604700BF7D3A031001B40248844601BC9F +:40754000604700BF9539031001B40248844601BC604700BF932A031001B40248844601BC604700BF834903100000000000000000000000000000000000000000000000003D +:4075800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB +:4075C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B +:0200000490303A +:0200000026EEEA +:0200000490501A +:0C0000000005E20721002101000047EE8E +:00000001FF diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp b/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp index 7b2f4e57f35..e5eae50392e 100644 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp +++ b/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp @@ -42,7 +42,7 @@ psa_its_status_t test_psa_its_reset_impl(void) } KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_main_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); if (!kvstore) { return PSA_ITS_ERROR_STORAGE_FAILURE; } diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c index 7f340853ddf..88b3fc93078 100644 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c +++ b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c @@ -19,6 +19,8 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ #include "cmsis.h" diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h index 4e41e026551..58012ba0aa7 100644 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h +++ b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h @@ -19,6 +19,8 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ #ifndef PSA_TEST_ITS_RESET_PARTITION_H @@ -44,11 +46,5 @@ #define TEST_ITS_RESET_WAIT_ANY_SID_MSK (\ TEST_PSA_ITS_RESET_MSK) -/* -#define TEST_ITS_RESET_WAIT_ANY_MSK (\ - TEST_ITS_RESET_WAIT_ANY_SID_MSK) | \ - PSA_DOORBELL) -*/ - #endif // PSA_TEST_ITS_RESET_PARTITION_H diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_impl.cpp b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_impl.cpp index 7b2f4e57f35..e5eae50392e 100644 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_impl.cpp +++ b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_impl.cpp @@ -42,7 +42,7 @@ psa_its_status_t test_psa_its_reset_impl(void) } KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_main_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); if (!kvstore) { return PSA_ITS_ERROR_STORAGE_FAILURE; } diff --git a/TESTS/psa/entropy_inject/its_reset/psa_test_its_reset_ifs.h b/TESTS/psa/entropy_inject/its_reset/psa_test_its_reset_ifs.h index 4dccfa0284b..e61ae5e349e 100644 --- a/TESTS/psa/entropy_inject/its_reset/psa_test_its_reset_ifs.h +++ b/TESTS/psa/entropy_inject/its_reset/psa_test_its_reset_ifs.h @@ -19,6 +19,8 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ #ifndef PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H diff --git a/TESTS/psa/entropy_inject/main.cpp b/TESTS/psa/entropy_inject/main.cpp index d3826234154..d6f72bfcf14 100644 --- a/TESTS/psa/entropy_inject/main.cpp +++ b/TESTS/psa/entropy_inject/main.cpp @@ -41,6 +41,7 @@ using namespace utest::v1; uint8_t seed[MBEDTLS_ENTROPY_MAX_SEED_SIZE + 2] = {0}; +bool skip_tests = false; void validate_entropy_seed_injection(int seed_length_a, int expected_status_a, @@ -83,31 +84,46 @@ utest::v1::status_t greentea_test_setup(const size_t number_of_cases) #ifndef NO_GREENTEA GREENTEA_SETUP(60, "default_auto"); #endif + + /* fill seed in some data */ + for (size_t i = 0; i < sizeof(seed); ++i) { + seed[i] = i; + } + + if (mbedtls_psa_inject_entropy(seed, MBEDTLS_ENTROPY_MAX_SEED_SIZE) == PSA_ERROR_NOT_SUPPORTED) { + skip_tests = true; + } + return greentea_test_setup_handler(number_of_cases); } static void injection_small_good() { + TEST_SKIP_UNLESS(!skip_tests); validate_entropy_seed_injection(MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE, PSA_SUCCESS, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE, PSA_ERROR_NOT_PERMITTED); } static void injection_big_good() { + TEST_SKIP_UNLESS(!skip_tests); validate_entropy_seed_injection(MBEDTLS_ENTROPY_MAX_SEED_SIZE, PSA_SUCCESS, MBEDTLS_ENTROPY_MAX_SEED_SIZE, PSA_ERROR_NOT_PERMITTED); } static void injection_too_small() { + TEST_SKIP_UNLESS(!skip_tests); validate_entropy_seed_injection((MBEDTLS_ENTROPY_MIN_PLATFORM - 1), PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE, PSA_SUCCESS); } static void injection_too_big() { + TEST_SKIP_UNLESS(!skip_tests); validate_entropy_seed_injection((MBEDTLS_ENTROPY_MAX_SEED_SIZE + 1), PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ENTROPY_MAX_SEED_SIZE, PSA_SUCCESS); } static void injection_and_init_deinit() { + TEST_SKIP_UNLESS(!skip_tests); run_entropy_inject_with_crypto_init(); } @@ -129,10 +145,6 @@ utest::v1::status_t case_setup_handler(const Case *const source, const size_t in psa_status_t status; status = test_psa_its_reset(); TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - /* fill seed in some data */ - for (size_t i = 0; i < MBEDTLS_ENTROPY_MAX_SEED_SIZE + 2; ++i) { - seed[i] = i; - } return greentea_case_setup_handler(source, index_of_case); } diff --git a/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c b/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c index 7924bfa2074..1d89eb712eb 100644 --- a/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c @@ -28,10 +28,10 @@ #include "handles_manager.h" #include "cmsis.h" #include "psa_test_its_reset_partition.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; spm_partition_t g_partitions[3] = { { @@ -46,25 +46,25 @@ spm_partition_t g_partitions[3] = { .irq_mapper = NULL, }, { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -78,8 +78,8 @@ const uint32_t mem_region_count = 0; // forward declaration of partition initializers void test_its_reset_init(spm_partition_t *partition); +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) { @@ -88,8 +88,8 @@ uint32_t init_partitions(spm_partition_t **partitions) } test_its_reset_init(&(g_partitions[0])); - its_init(&(g_partitions[1])); - psa_f_init(&(g_partitions[2])); + crypto_srv_init(&(g_partitions[1])); + its_init(&(g_partitions[2])); *partitions = g_partitions; return 3; diff --git a/TESTS/psa/prot_internal_storage/TARGET_FUTURE_SEQUANA_PSA/prot_internal_storage.hex b/TESTS/psa/prot_internal_storage/TARGET_FUTURE_SEQUANA_PSA/prot_internal_storage.hex new file mode 100644 index 00000000000..e5cc3bff461 --- /dev/null +++ b/TESTS/psa/prot_internal_storage/TARGET_FUTURE_SEQUANA_PSA/prot_internal_storage.hex @@ -0,0 +1,4578 @@ +:020000041000EA +:40000000000001083D1A03100D0000000904001000000000000000000000000000000000000000000000000000000000BDDB0210000000000000000041DC02104DDC02100F +:40004000951A0310A5200310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A03104A +:40008000951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A0310951A031020 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD10150008000000002C610410084B10B5002B03D00749084800E000BF07480368002B00D1B6 +:4001000010BD064B002BFBD09847F9E700000000141500082C6104102810000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F066 +:40014000E5FD0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF017F937F0CFF9200029002DF049FB2DF005F9C046000008000000010849 +:400180000000000025D70210101500081889000895D302100000000000B583B00190019B002B05D10C490D4B572218002CF024FA0B4B180000F01AF80A4B180001F0FEFF88 +:4001C000094B180002F046FD019B054A1A600323180003B000BDC04634DB031018DB0310C4000008EC0000081401000800B585B00190019B002B05D11F49204B54221800C7 +:400200002CF0FAF91E4B18002FF0BAFC0200019B1A62019B1B6A002B05D11749194B592218002CF0E9F90023039309E0164A039B5B01D3180833019A1A60039B0133039329 +:40024000039B002BF2D0019B0F4A1A610F4A104B0021180031F0B4F90200019B5A60019B5B68002B05D104490A4B632218002CF0C3F9C04605B000BD24DC03106CDB031014 +:4002800014DC031088DB0310600100083C01000889030010CCDB031000B583B00190019B180000F06BF8019B180003B000BD000010B5144B1B78BFF35B8FDBB21A000123FF +:4002C00013405A425341DBB2002B17D00D4B18002DF07AF803005A1E9341DBB2002B0DD0094B1800FFF7D8FF064B18002DF0A4F8064A0749044B18002DF03AF8024B1800E3 +:4003000010BDC046E019000890190008C0000008C984021000B585B00023039328F064F803000293029B002B01D0052320E0FFF7BFFF03000193104A019B1100180028F01F +:400340009BFA03000093009B002B01D105230FE0009B1B6810331B68009A1000984703005A1E9341DBB2002B01D005230393039B180005B000BDC04638DC031082B0019088 +:40038000019B180002B0704700B591B0019000230E9303AB18002C231A00002137F0B6FC00230F9380231B06180003F063FE03000E930E9B10221340F4D003AB190010202A +:4003C00003F066FE03AB1B68022B04D0032B0ED0012B0CD004E0FFF79DFF03000F9307E003AB1B680649074835222CF005F9C04603AB5B680F9A1100180004F01DF8D1E714 +:400400007CDC031058DC03102C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B196802680A60043142680A60043182680A600431CF +:40044000C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A600431C2690A60043103462033154E3242EF +:4004800000D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A606046074900F010F8FEE700001000000008 +:4004C000200000003000000040000000040000008CDC03100002000000B587B003900291002305931C4B18002BF0FEFE039B302B0AD0402B0FD0202B14D1184B18002BF0A5 +:40050000F3FE174B059314E0164B18002BF0ECFE154B05930DE0154B18002BF0E5FE144B059306E0134B18002BF0DEFE124B0593C046124B18002BF0D7FE00F027F8104BEF +:4005400018002BF0D1FE0F4BDA6B0F4905980023009300232CF0E8F890DC0310BCDC03103E01FF80CCDC03103F01FF80D8DC03104001FF80E4DC03103D01FF80F0DC0310B8 +:40058000FCDC0310B47700081CDD031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF09FFE059B01330593059B0C2BEFDD264B5C6B254B9D6B244BDC +:4005C000DE6B234B1A6C224B596C214B9B6C224802930191009233002A0021002BF084FE1E4B1A681E4B110018002BF07DFE184BDB6C0822134012D01A4B18002BF074FEB5 +:40060000134B1B6D0122134004D0174B18002BF06BFE0CE0154B18002BF066FE07E0144B18002BF061FE114B18002BF05DFE084BDB6C0422134004D00E4B18002BF054FE22 +:4006400003E00D4B18002BF04FFEC04606B070BDB47700082CDD03103CDD031000ED00E08CDD03109CDD0310ACDD0310BCDD0310D0DD0310E0DD0310ECDD031082B001900F +:400680000091009B180002B07047000000B583B00190019B180005F017FC019B180000F095F8084A019B1A60019B28330021180000F04CF8019B382201219954019B1800A2 +:4006C00003B000BDB000041000B583B001900C4A019B1A60019B180005F025FB019B2833180000F04BF8019B180000F075F8019B180005F023FC019B180003B000BDC046D3 +:40070000B000041000B583B00190019B1800FFF7DBFF019B18002CF0F1FE019B180003B000BD000000B583B00190019B1800FFF7ADFF019B180000F07BF8034A019B1A60CC +:40074000019B180003B000BDC400041000B583B001900091009B002B06D1019B10220021180037F0D3FA05E06A46019B1100180000F06AF8019B180003B000BD00B583B023 +:400780000190019BDB68002B05D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BDB685B680099019A10009847009BDA68AF +:4007C000019BDA60019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341DBB2180002B0704700B583B00190009139 +:40080000019A009B9A420FD0019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD82B00190019B180002B0704782B001902E +:40084000019B180002B0704700B583B001900091019B10220021180037F058FA019B19000420FFF70BFF031E02D0009A12681A60019B024ADA60C04603B000BDF8DD0310F7 +:4008800000B583B00190019B1B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B000BD82B00190C04602B0704700B583B07C +:4008C0000190074A019B1A60019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BDC400041000B583B00190019B1800FFF7E5FF019B18002CF001FE019B180003B0C8 +:4009000000BD000000B58DB06B4618002C231A00002137F0FBF900230B936B461900102003F0B6FB6B461B68022B04D0032B12D0012B10D00CE00BF04DF803000B930B9B77 +:40094000002B0AD10A4B1B685A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F067FDC0460DB000BDE419000800B58DB06B4618002C231A009E +:40098000002137F0C3F900230B936A4680235B011100180003F07CFB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E0C4B1A600B4B1B68002B07D10AF0C6FF36 +:4009C00004E002230B9302E0C04600E0C0466B465B680B9A1100180003F02EFDC0460DB000BDC046E419000800B597B005AB18002C231A00002137F089F90023159305AB25 +:400A00001900202003F044FB05AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F022FA03001493149B002B02D10923159332E105AB5B68149A110099 +:400A4000180003F061FE2AE103AB180008231A00002137F05BF905ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002103F022FC0300139305ABDA68139B9A4228 +:400A800005D08C498C4B722218002BF0B5FD03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B681A0007F0C7FC03001593DBE005AB986881 +:400AC00003AB598803AB5B681A0007F0CFFC03001593CFE005AB1B691900012036F0C6F903001293129B002B02D109231593C1E005AB586805AB1B69129A012103F0DCFB69 +:400B00000300139305AB1A69139B9A4205D06949694B8E2218002BF06FFD05AB986805AB1A69129B190007F0B5FC03001593129B180036F01FFD9DE00023029305AB58681D +:400B400005AB1B6902AA012103F0B6FB0300139305AB1A69139B9A4205D05649564B9E2218002BF049FD00230193029B1900012036F07CF903001193119B002B02D1092375 +:400B8000159377E005AB9868029A01AB119907F0A7FD03001593159B002B0DD105AB5868019B119A002103F0C3FB05AB586801AA0423012103F0BCFB119B180036F0DAFC3E +:400BC000C04657E00023009305AB586805AB1B696A46012103F070FB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D03049314BB82218002BF0FEFC009B190084 +:400C0000012036F033F903001093109B002B02D1092315932EE005AB586805AB5B69109A022103F049FB0300139305AB5A69139B9A4205D01F49204BC12218002BF0DCFCEC +:400C400005AB9B68009A1099180007F08EFD03001593109B180036F08DFCC0460AE005AB9B68180007F050F80300159302E002231593C046C04612E005AB9B68180007F0B3 +:400C800043F805AB9B68002B08D005AB9B68180036F070FC02E00223159300E0C04605AB5B68159A1100180003F0C6FBC04617B000BDC04628DF031004DE031024DE03109E +:400CC00000B597B005AB18002C231A00002137F01DF80023159305AB1900402003F0D8F905AB1B68022B19D0032B00D12BE1012B00D037E1E021012036F0B8F803001493A8 +:400D0000149B002B02D1092315932FE105AB5B68149A1100180003F0F7FC27E10023139303AB180008231A00002136F0EFFF05ABDB68082B02D00B23159317E105AB5868AB +:400D400005ABDB6803AA002103F0B6FA0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF047FC03AB1B780F3B042B00D9E2E09A00834BD3181B689F4679 +:400D800005AB9A6803AB5B681900100006F01CFC03001593D5E005AB1B691900012036F065F803001293129B002B02D109231593C7E005AB586805AB1B69129A012103F055 +:400DC0007BFA0300139305AB1A69139B9A4207D01623FF331A006A496A4B18002BF00CFC05AB986805AB1A69129B190006F064FC03001593129B180036F0BCFBA1E0002329 +:400E0000029305AB586805AB1B6902AA012103F053FA0300139305AB1A69139B9A4206D092235A005649574B18002BF0E5FB00230193029B1900012036F018F80300119361 +:400E4000119B002B02D1092315937AE005AB9868029A01AB119906F073FC03001593159B002B0DD105AB5868019B119A002103F05FFA05AB586801AA0423012103F058FA62 +:400E8000119B180036F076FBC0465AE00023009305AB586805AB1B696A46012103F00CFA0300139305AB1A69139B9A4204D105AB5A69009B9A4206D09F235A003049314B66 +:400EC00018002BF099FB009B1900012035F0CEFF03001093109B002B02D10923159330E005AB586805AB5B69109A022103F0E4F90300139305AB5A69139B9A4207D04823C8 +:400F0000FF331A001E491F4B18002BF075FB05AB9B68009A1099180006F044FD03001593109B180036F026FBC0460AE005AB9B68180006F01BFB0300159302E002231593D6 +:400F4000C046C04612E005AB9B68180006F00EFB05AB9B68002B08D005AB9B68180036F009FB02E00923159300E0C04605AB5B68159A1100180003F05FFAC04617B000BD41 +:400F80003CDF031004DE03103CDE031070B5A2B00DAB18002C231A00002136F0B7FE002321930DAB1900802003F072F80DAB1B68022B06D0032B00D197E1012B00D196E167 +:400FC00090E10DABDB68102B02D00B2321938FE10023209309AB180010231A00002136F095FE0DAB58680DABDB6809AA002103F063F9030020930DABDA68209B9A4207D0A9 +:401000008023FF331A00BF49BF4B18002BF0F4FA09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB691900012035F01AFF03001F931F9B002BA6 +:4010400002D1092321934CE10DAB1B691900012035F00CFF03001E931E9B002B06D1092321931F9B180036F085FA3AE10DAB58680DAB1B691E9A012103F01EF903002093BB +:401080000DAB1A69209B9A4206D0CC235A009D499D4B18002BF0B0FA09AB588809AB59680DAB1D690DABDB691E9C08AA029201931F9B00932B00220007F010FE0300219367 +:4010C000219B002B06D10DAB5868089B1F9A002103F02EF90DAB586808AA0423012103F027F91F9B180036F045FAC046F9E00DAB1B691900012035F0B9FE03001D931D9BCA +:40110000002B02D109232193EBE00DAB58680DAB1B691D9A012103F0CFF8030020930DAB1A69209B9A4207D0B823FF331A007549754B18002BF060FA0DAB5B691900012078 +:4011400035F094FE03001C931C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F0AAF8030020930DAB5A69209B9A4206D0E1235A006349634B18002BF03CFAAA +:4011800009AB588809AB59680DAB5C690DAB1B691C9A01931D9B0093230007F029FE030021931D9B180036F0E5F91C9B180036F0E1F996E0002307930DAB1B691900012094 +:4011C00035F054FE03001B931B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F06AF8030020930DAB1A69209B9A4207D0E023FF331A004249434B18002BF0F3 +:40120000FBF91B9B1A9309AB9B681B9AD31819930DABDB691900012035F028FE03001893189B002B06D1092321931B9B180036F0A1F956E009AB1B78252B1AD109AB5888B6 +:4012400009AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F04AFE0300219319E009AB588809AB5C6809AB9E6809ABAF +:40128000DA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F0D3FE03002193219B002B06D10DAB5868079B189A002103F03BF80DAB586807AA45 +:4012C0000423012103F034F8189B180036F052F91B9B180036F04EF9C04602E00223219303E002E00223219302E0C04600E0C0460DAB5B68219A1100180003F09DF8C046F5 +:4013000022B070BD50DF031004DE0310F0B5A5B013AB18002C231A00002136F0F7FC0023239313AA80239B001100180002F0B0FE13AB1B68022B06D0032B00D1DBE0012B3D +:4013400000D1DAE0D4E013ABDB68242B02D00B232393D3E00023229309AB180024231A00002136F0D3FC13AB586813ABDB6809AA002102F0A1FF0300229313ABDA68229B00 +:401380009A4206D08C239A006149624B18002BF033F909AB1B78213B012B00D9A3E00023129313AB1B691900012035F05FFD03002193219B002B02D10923239396E013AB05 +:4013C000586813AB1B69219A012102F075FF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF008F9219B209309ABDB68219AD3181F9313ABDB691900012035F02A +:4014000035FD03001E931E9B002B06D1219B180036F0B0F80923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A814300D +:40144000060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F032FB0300239322E009AB5C8809AB5D6809AB1B891F0009ABDA6809AB196920 +:4014800013ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F0E4FB03002393239B002B0DD113AB5868129B1E9A002122 +:4014C00002F036FF13AB586812AA0423012102F02FFF219B180036F04DF81E9B180036F049F8C04602E002232393C046C04605E00223239302E0C04600E0C04613AB5B68CD +:40150000239A1100180002F097FFC04625B0F0BD6CDF031004DE03104302000010B5A6B00023259310AB18002C231A00002136F0EDFB10AA80235B001100180002F0A8FD44 +:4015400010AB1B68022B19D0032B00D14FE1012B00D05BE14C21012035F088FC03002493249B002B02D10923259353E110AB5B68249A1100180003F0C7F84BE10EAB1800D6 +:4015800008231A00002136F0C1FB10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F088FE0300239310ABDA68239B9A4205D09C4A9C499D4B18002BF007 +:4015C0001BF80EAB1B781A3B062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F005FF03002593FCE010AB98680EAB59880EAB5B681A0007F014 +:401600000DFF03002593F0E000230D9310ABDB69229309AB180010231A00002136F076FB10AB98680DAB229A09A907F00BFF03002593259B002B00D0D6E010AB58680D9B9A +:4016400009AA002102F074FE10AB58680DAA0423012102F06DFEC046C6E010AB1B69219305AB180010231A00002136F04FFB10AB5868219B05AA012102F01EFE0300239346 +:40168000239A219B9A4205D06B4A6849684B18002AF0B2FF10AB9B68219A05A9180007F021FF03002593C0469FE010AB1B69209310ABDB691F9300230493209B190001201C +:4016C00035F0D4FB03001E931E9B002B02D1092325938AE010AB5868209B1E9A012102F0EBFD03002393239A209B9A4205D0534A4E494F4B18002AF07FFF1F9B19000120FF +:4017000035F0B4FB03001D931D9B002B06D11E9B180035F02FFF0923259366E010AB98681D9C209A1E9904AB01931F9B0093230007F017FF03002593259B002B0DD110AB36 +:401740005868049B1D9A002102F0F2FD10AB586804AA0423012102F0EBFD1E9B180035F009FF1D9B180035F005FFC0463DE010ABDB691C93002303931C9B1900012035F06E +:4017800075FB03001B931B9B002B02D1092325932BE010AB986803AB1C9A1B9907F028FF03002593259B002B0DD110AB5868039B1B9A002102F0BCFD10AB586803AA042307 +:4017C000012102F0B5FD1B9B180035F0D3FEC0460BE010AB9B68180007F088FF0300259303E00223259300E0C046C04612E010AB9B68180007F07AFF10AB9B68002B08D0BA +:4018000010AB9B68180035F0B5FE02E00223259300E0C04610AB5B68259A1100180002F00BFEC04626B010BD9E02000080DF031004DE031050DE0310C2020000D702000066 +:4018400010B5AAB010AB18002C231A00002136F05DFA0023299310AA8023DB001100180002F016FC10AB1B68022B06D0032B00D1CCE1012B00D1D9E1C5E110ABDB680C2BAC +:4018800002D00B232993D2E1002327930DAB18000C231A00002136F039FA10AB586810ABDB680DAA002102F007FD0300279310ABDA68279B9A4205D0D54AD649D64B18005E +:4018C0002AF09AFE0DAB1B7A282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180007F088FF03002993299B002B00D07FE110AB5868269B0CAA01 +:40190000002102F015FDC04676E110AB1B69259310AB5868259B0BAA012102F0CDFC03002793279A259B9A4206D0D3239A00B949B94B18002AF060FE0DAB1B880B9A11003A +:40194000180007F079FF03002993C04659E110AB1B69249310AB5868249B09AA012102F0ABFC03002793279A249B9A4206D0D6239A00A849A84B18002AF03EFE0DAB1B8814 +:4019800009AA1100180007F0E7FE03002993C04637E110ABDB6923930DAB1B8807AA1100180007F007FF03002993299B002B00D024E110AB5868239B07AA002102F0B8FC77 +:4019C000C0461BE110AB1B692293229B1900012035F04CFA03002193219B002B02D1092329930EE110AB5868229B219A012102F063FC03002793279A229B9A4205D0884A23 +:401A00008449854B18002AF0F7FD0DAB18880DAB5968229B219A05F063FA03002993219B180035F0A7FDECE00DAB1B88180005F0A3FA03002993E4E00DAB1B8805AA06A9DF +:401A4000180005F007FB03002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F064FC10AB1B6A032B00D8C6E010AB586805AA0423012102F058FCAD +:401A8000C046BDE010ABDB692093209B1900012035F0ECF903001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F031FC03002993299B002B06D110AB586854 +:401AC000049B1F9A002102F033FC10AB586804AA0423012102F02CFC1F9B180035F04AFDC0468EE010ABDB691E931E9B1900012035F0BCF903001D931D9B002B02D10923FC +:401B000029937EE00DAB188803AB1E9A1D9905F029FC03002993299B002B06D110AB5868039B1D9A002102F003FC10AB586803AA0423012102F0FCFB1D9B180035F01AFD30 +:401B4000C0465EE010AB1B691C9310AB5B691B930023289310AB58681C9B02AA012102F0ABFB03002793279A1C9B9A4206D0EF239A002849284B18002AF03EFD0DAB5B6831 +:401B8000284A934222D11B9B002B1FD01B9B1900012035F06BF903002893289B002B02D1092329932DE010AB58681B9B289A022102F082FB03002793279A1B9B9A4205D0C4 +:401BC000194A1449144B18002AF016FD0DAB18880DAB5968029A289C1B9B0093230009F0D7FD03002993289B180035F0C3FCC04607E00223299304E0C04602E0C04600E019 +:401C0000C046C04613E00223299310E0C0460EE03503000098DF031004DE03106CDE03107103000000000170CB030000C04610AB5B68299A1100180002F0FEFBC0462AB0DE +:401C400010BDC04600B591B001AB18002C231A00002136F05BF800230F9301AA8023DB011100180002F014FA01AB1B68022B04D0032B3DD0012B3DD037E001ABDB680E9371 +:401C80000E9A8023DB009A4202D908230F9332E00E9B1900012035F0E9F803000D930D9B002B02D109230F9325E001AB58680E9B0D9A002102F000FB03000C930C9A0E9BA8 +:401CC0009A4205D0114A1249124B18002AF094FC0E9A0D9B1100180009F016FD03000F930D9B180035F046FC05E002230F9302E0C04600E0C04601AB5B680F9A1100180052 +:401D000002F09AFBC04611B000BDC04601040000B8DF031004DE031000B58FB06B4618002C231A00002135F0F1FF00230D936A4680231B011100180002F0AAF96B461B686E +:401D4000022B04D0032B2CD0012B2CD026E06B46DB690C930C9B1900012035F087F803000B930B9B002B02D109230D931CE00C9A0B9B1100180009F089FC03000D930D9BA6 +:401D8000002B06D16B4658680C9B0B9A002102F0CFFA0B9B180035F0EDFB05E002230D9302E0C04600E0C0466B465B680D9A1100180002F041FBC0460FB000BD70B59EB0DE +:401DC00000231D930BAB18002C231A00002135F09DFF0BAA80239B011100180002F058F90BAB1B68022B1BD0032B00D15FE1012B00D06BE1FC235B001900012035F036F8B8 +:401E000003001C931C9B002B02D109231D9361E10BAB5B681C9A1100180002F075FC59E108AB18000C231A00002135F06FFF0BABDB680C2B02D00B231D934BE10BAB5868DE +:401E40000BABDB6808AA002102F036FA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF0C9FB08AB1B78293B052B00D917E19A009F4BD3181B689F460023079367 +:401E80000BAB9B6807AA1100180008F055F803001D931D9B002B00D006E10BAB586807AA0423002102F044FAC046FDE000231A930BABDB691993199B1900012034F0D6FF1E +:401EC00003001A931A9B002B02D109231D93ECE00BAB9B68199A1A99180008F075FC03001D931D9B002B06D10BAB5868199B1A9A002102F01DFA1A9B180035F03BFBD4E0E6 +:401F00000BAB58680BAB1B6906AA012102F0D4F903001B931B9B042B05D0774A7349744B18002AF069FB0BAB58680BAB5B6905AA022102F0C1F903001B931B9B042B05D04A +:401F40006E4A6A496A4B18002AF056FB08AB58880699059A0BAB9B6808F0C2FC03001D93C046A2E00BAB9B68180007F06BFF03001D939AE00BAB1B691900012034F076FFD7 +:401F800003001893189B002B02D109231D938CE00BAB58680BAB1B69189A012102F08CF903001B930BAB1A691B9B9A4205D0544A4E494F4B18002AF01FFB0BAB5B69190080 +:401FC000012034F053FF03001793179B002B06D109231D93189B180035F0CCFA65E00BAB58680BAB5B69179A022102F065F903001B930BAB5A691B9B9A4205D0414A3B495E +:402000003B4B18002AF0F8FA0BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A00210009F0D1F903001D9336E00BAB1B69CF +:402040001900012034F012FF03001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F028F903001B930BAB1A691B9B9A4205D0244A1C491D4B18002AF05F +:40208000BBFA0BAB986808AB59880BAB1C6908AB5B68169A0093230009F0BEFA03001D9303E002231D9300E0C046C04612E00BAB9B68180007F0C6FE0BAB9B68002B08D0C8 +:4020C0000BAB9B68180035F055FA02E002231D9300E0C0460BAB5B681D9A1100180002F0ABF9C0461EB070BD57040000D0DF031004DE031010DF03108104000087040000EA +:402100009D040000AA040000C204000000B585B00190002303930023029380231B06180001F0A8FF03000393039B1022134001D0FEF7E8FB039B2022134001D0FEF754FC7C +:40214000039B4022134001D0FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0FFF7CCF8039A8023DB00134001D0FFF7A7 +:402180005FFB039A80231B01134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A8023DB011340B1D0FFF745FDAEE700B585B050 +:4021C0000190019B002B05D11F49204BD42218002AF012FA1E4B18002DF0D2FC0200019B1A62019B1B6A002B05D11749194BD92218002AF001FA0023039309E0164A039B76 +:402200005B01D3180833019A1A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF0CCF90200019B5A60019B5B68002B05D104490A4BE32218002AF02F +:40224000DBF9C04605B000BDBCE0031004E00310ACE0031020E00310A4010008800100080D2100105CE0031000B583B0FEF720F803000193044A019B1100180026F0FCFA4C +:402280000300180003B000BD08E1031000B589B00390029101920093039B002B05D14349434B3D22180029F069FF029B0D2B05D83E49404B3E22180029F060FF1F236B4407 +:4022C00000221A70019B0693009B05931F236B441B780E2B05DD3549374B4622180029F04DFF1F236B441B781F226A44591C11701A00039B9B18069A3F210A402F498A5CCA +:402300001A70069B9B090693069B002B00D0DDE71F236B441B780E2B05DD2449264B4C22180029F02BFF1F236B441B781F226A44591C11701A00039B9B1823221A701F23AA +:402340006B441B780E2B05DD18491B4B5122180029F014FF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70059B9B090593059B002B00D022 +:40238000DDE71F236B441B780E2B05DD07490A4B5622180029F0F2FE1F236B441B78039AD31800221A70C04609B000BD28E1031088E10310A0E10310CCE10310C8E00310A1 +:4023C00030B58FB00590049103920293FFF74CFF03000B930B9B002B03D1234B18002AF00BF9129B002B04D0129B012B01D0022337E006AB18000E231A00002135F086FCCC +:40240000059B049A06A80E21FFF740FF00230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A04703000A9300230C930A9B002BD0 +:402440000ED00A9B094A934205D0094A934205D101230C9304E003230C9301E005230C930C9B18000FB030BDF8E103100B01FF801201FF8030B591B00590049103920293DC +:40248000FFF7F2FE03000E930E9B002B03D1364B18002AF0B1F809AB18000E231A00002135F034FC059B049A09A80E21FFF7EEFE0E9B1B681C331B6807AA09A90E9898471B +:4024C00003000D9300230F930D9B002B08D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E0029A039BD218029B9A4201D27F +:4025000008232EE0039A029BD21807AB1B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00A04703000D930D9B002B06D1F2 +:40254000069A029B9A420BD208230F9308E00D9B064A934202D107230F9301E005230F930F9B180011B030BD30E203100701FF8000B58FB0039002910192FFF775FE030064 +:402580000C930C9B002B03D1204B18002AF034F807AB18000E231A00002135F0B7FB039B029A07A80E21FFF771FE0C9B1B681C331B6805AA07A90C98984703000B930023E1 +:4025C0000D930B9B002B08D00B9B114A934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6801221A43019B5A6005AB1A6826 +:40260000019B1A600D9B18000FB000BD68E203100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B180029F0E3FF03AB18000E231A00002135F066FBCB +:40264000019B009A03A80E21FFF720FE089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094A934205D10123099304E007238B +:40268000099301E005230993099B18000BB000BDA4E203100701FF801201FF8000B58FB00590049103920293039B002B04D1049B002B01D0062333E006AB05AA1A6006ABAB +:4026C00004225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F077FE03000C930C9B002B01DC052315E006A90C98002300930023032204 +:4027000000F04EFF03000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B18000FB000BDC046011A010000B58FB00590049103920293029B002B04D1039B44 +:40274000002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB039A5A608D235B020121180000F02EFE03000C930C9B002B9C +:4027800001DC052316E006AA08A90C98012300931300022200F004FF03000D930D9A80231B069A4201D105230D930C9B180000F0C1FF0D9B18000FB000BD000000B58DB017 +:4027C00003900291029B002B01D1062339E008AB180008231A00002135F098FA06AB03AA1A6006AB04225A6004AB08AA1A6004AB08225A60144B0121180000F0EBFD0300A4 +:402800000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0C1FE03000B93029B08AA03CA03C30B9A80231B069A4201D105230B930A9B180000F07AFF0B +:402840000B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0B6FD03000693069B002B01DC052315E004A906980023009300235D +:40288000012200F08DFE03000793079A80231B069A4201D105230793069B180000F04AFF079B180009B000BD031A010010B58AB003900023069300230993039B1B690893FE +:4028C00000230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F0E8FC0300042B02D080231B0647E0039B586805AA0423022101F07C +:40290000DBFC0300042B02D080231B063AE0089B180034F025FE03000993099B002B01D105232FE0039B5868039B1B69099A012101F0C2FC0200039B1B699A4205D0099BF8 +:40294000180034F017FE05231CE0039B5B68180001F0B2FE03001C000699059B0998089A009303002000FFF72BFD03000793089A099B0021180035F0C9F9099B180034F070 +:40298000F9FD079B18000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D080231B064FE0039B586805AA0423002101F07EFC0300042BEF +:4029C00002D080231B0642E0039B586804AA0423012101F071FC0300042B02D080231B0635E0039BDB69180034F0BAFD03000793079B002B01D1052329E0039B5B681800D4 +:402A000001F05AFE03001C000599049A039BD869079B009303002000FFF72CFD03000693069B002B07D1039B5868039BDB69079A002101F07DFC039BDA69079B0021180034 +:402A400035F064F9079B180034F094FD069B180008B010BD00B587B0019003AB180008231A00002135F052F900230293019BDB68042B03D1019BDB69082B02D080231B06CB +:402A800026E0019B586802AA0423002101F014FC0300042B02D080231B0619E0019B5B68180001F009FE03001800029B03AA1900FFF75EFD03000593059B002B07D1019BE6 +:402AC0005868019BDB6903AA002101F031FC059B180007B000BD00B585B0019000230393019BDB68042B02D080231B0619E0019B586803AA0423002101F0DEFB0300042B00 +:402B000002D080231B060CE0019B5B68180001F0D3FD03001A00039B19001000FFF77AFD0300180005B000BD00B585B00190009100230393019B1B68022B04D0032B10D00A +:402B4000012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F04BFDC046019B5B68039A1100180001F063FCC04605B000BD38E30310E0E20310F0 +:402B800000B591B0019000230F9303AB18002C231A00002135F0BAF880231B06180001F069FA03000F9325F01FFC03000E930E9B002B05D00E9B21492148AC2229F01CFDD4 +:402BC0000F9B202213400AD003AB1900202001F05FFA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB1900102001F050FA154A03AB11001800FFF796FF0F9B40228C +:402C000013400AD003AB1900402001F041FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802001F032FA084A03AB11001800FFF778FFAEE7C04648E303104C +:402C400004E30310AD2800108B290010552A0010D72A001000B585B00190019B002B05D11F49204B7822180029F0C6FC1E4B18002CF086FF0200019B1A62019B1B6A002B11 +:402C800005D11749194B7D22180029F0B5FC0023039309E0164A039B5B01D3180833019A1A60039B01330393039B032BF2D9019B0F4A1A610F4A104B002118002EF080FCCC +:402CC0000200019B5A60019B5B68002B05D104490A4B8722180029F08FFCC04605B000BD0CE4031064E30310FCE3031080E303102803000804030008812B0010BCE3031028 +:402D000000B58BB0039002910192039B002B05D139493A4B2C22180029F030FA029B002B05D13549364B2D22180029F027FA00F00DFE03000793079B002B02D0079B1B6801 +:402D400001E001235B4206932E4B0493039B04A90022180029F0A0FB039B0121180029F0E1FB030005930023099300230893002308932CE000230493089B1A04059B1343AF +:402D80000993039B9A68089B1B01D3181800099A04AB190029F080FB031E15D0039B9A68089B1B01D318029ADA60039B9A68089B1B01D318069A5A60039B9A68089B1B01ED +:402DC000D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D22180029F0C7F9099B18000BB000BDC04618E4031054E403101C +:402E000070E40310FFFF00008CE4031000B589B003900291039B002B05D13649364B6622180029F0ABF9029B002B05D13149334B6722180029F0A2F9029B1B0C0793039BB3 +:402E40005A68079B9A4209D8079A039B5B682C492C48009313006D2229F0CEFB039B9A68079B1B01D3181A68029B9A4205D0029B23492548712229F0BFFB00F067FD0300E3 +:402E80000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01149144B7B2218000E +:402EC00029F09AFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B01D31800229A60C04609B000BD18E4031054E40310B0E4031038 +:402F00005CE60310CCE4031018E5031054E5031000B589B003900291039B002B05D13649364B8622180029F029F9029B002B05D13349344B8922180029F05EFB029B1B0CDD +:402F40000793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F04CFB039B9A68079B1B01D3181A68029B9A4205D0029B22492548932229F03DFB00F0D3 +:402F8000E5FC03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01049144BDF +:402FC0009D22180029F018FB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F0CCF8039B9A68079B1B01D318DB68180009B000BDC04618E4031054E4031065 +:4030000078E6031090E50310CCE4031018E50310D0E5031020E6031084B001900091002303930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039BC1 +:4030400001330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF0300FB +:403080000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D80023180005B000BDD803000800B587B003900291029B002B0DD1039B1B7D01225340DBB2EE +:4030C000002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D1029B1B68134915483D2229F085FA002305930CE0029B9A69059B9B00D3181A68C3 +:40310000039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B680449074800931300462229F065FAC04607B000BD84E9031094E60310CCE6031075 +:4031400004E7031000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BDE003000800B583B00190019A044B11001800FFF7CDFE0300180003B000BDC04692 +:40318000E003000800B585B001900091019B9B681A6A01235B42190010002CF015FD03000393039B002B05D02349244B5722180028F0E4FF019BDB69002B03D1019B009A2A +:4031C0009A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B68190010002EF046FA03000293029B002B05DA1249134B6622180028F0C1FF019B5B68029AD9 +:40320000134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD03000393039B002B05D00449044B6B22180028F0A5FFC04605B000BD44E703107CE7031093 +:4032400090E70310ACE7031030B58BB005900491049B002B05D15649564B7022180028F08DFF059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F0BCF98A +:40328000099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C4148029301918D +:4032C00000922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B8122CB +:40330000180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4A5A60089B002B0FD0049B9B6818002CF085FF03000693069B002B35D01C49244BCE +:403340008A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B11001800FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049AC3 +:40338000DA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11001800FFF7EFFE00E0C0460BB030BDC04644E70310C8E7031070E90310DCE7031088 +:4033C000FCE7031058E80310D8030008010000807CE7031000B58FB00190009109AB180010231A00002134F091FC05AB00221A6005AB00225A6005AB09AA9A6005AB102292 +:40340000DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6002AB9B68002B05D119491A4BB722180029F0E2F802AA019B11001800FFF704FFB6 +:4034400002AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22180028F08BFE02AB9B6818002CF008FF03000D930D9B002B05D00749074BC0227C +:40348000180028F07BFE02AB5B6818000FB000BDA4E9031088E8031044E703107CE7031000B585B001900091009B002B05D13649364BC922180028F061FE019B1800FFF7BC +:4034C00051FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F07CF8AA +:40350000039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F039FA2EE0009B5B6918002CF087FE03000293029B002B24D01349184BD8221800E3 +:4035400028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B1868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE23 +:4035800000E0C04605B000BD44E70310C8E70310C0E80310B0E90310D8E803107CE7031000B595B003900291019200930FAB180010231A00002134F0A9FB0BAB00221A6063 +:4035C0000BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF0CCFD020005AB0F +:403600005A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B11001800FFF73EFF05AB5A6901235B42190010002CF0DCFD03001393139B002B06D0862374 +:403640005A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D01023FF331A000749074B180028F086FD05AB1B69180015B000BDC046C0E90310FF +:4036800088E8031044E703107CE7031000B585B001900091009B002B06D18C235A002049204B180028F06AFD019B1800FFF75AFD03000393039B002B07D11C23FF331A00F0 +:4036C0001749194B180028F059FD039B1A68009B0821180000F074F903001A0001235340DBB2002B06D08F235A001049104B180028F082FF039B15330321180000F004F945 +:40370000039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BD44E70310C8E70310C0E80310CCE9031008E9031000B58FB00190019B002B55D006 +:4037400009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6003AB019A1A6005AB1A00002101202CF00EFD020003AB5A6003ABB3 +:403780005B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FF03AB5A6801235B42190010002CF01EFD03000D930D9B002B06D0A4235A000F49CA +:4037C0000F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF331A000649064B180028F0C8FCC0460FB000BDC046DCE9031038E9031044E7031001 +:403800007CE7031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD00009C +:4038400000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049B002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B00935F +:403880001300272228F0B8FEC04609B000BDC046F8EA0310E8E9031000B587B00390080011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A23D5 +:4038C0006B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B236B441B781A0017236B441B780449054800931300302228F07FFEC04607B000BD1F +:4039000008EB03103CEA031000B585B003900A000B236B441A70039B1B780B226A4412789A420CD0039B1B781A000B236B441B780449054800931300382228F05DFEC0463E +:4039400005B000BD20EB03103CEA031000B583B02DF064FE03000093009B002B05D11549154B5E22180028F009FC0023019317E0124B1968019A13009B009B18DB00CB182C +:403980005A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B01330193064B5A68019B9A42E2D80023180003B000BDC04684EA0310D8EA0310D8030008E8 +:4039C0008CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029BD3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B050993BD +:403A000080231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A42FF +:403A400001D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD2180599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A4262 +:403A800009D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002354 +:403AC00018000CB07047C04600000108007703000000081010B52EF079FE174B1A0018210A202AF04BFF0200144B1A62134B1B6A002B05D1124A134B1100180028F07CFDC8 +:403B0000114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B1100180028F069FD054B1800FCF735FB0200024B5A60C04610BDA8030008D8030008CF +:403B4000C8EB031068EB0310C003000894EB031010B5034B1B68180001F078F8F9E7C0460404000800B583B001900091009A0199034B1800FFF7C4F80300180003B000BDD6 +:403B8000EC03000800B583B00190019A044B11001800FFF7BDF90300180003B000BDC046EC03000800B583B00190019A034B11001800FFF72BF9C04603B000BDEC0300083C +:403BC00000B583B00190019A034B11001800FFF71DF9C04603B000BDE003000884B0019000910023039311E0019B1A69039B5B01D3185A68009B9A4205D1019B1A69039BFD +:403C00005B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000010B596B00190009103AB180028231A00002134F06BF803AB019A1A60019B1B7DB7 +:403C4000022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2002B05D08D498E4B5B22180028F0C4FC019BDB681393139B1B681293139B5B6831 +:403C80001193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB24229954119B002B5DD0119BD900019B1A68129B1800FFF783FE03001A000123CF +:403CC0005340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129AD3185B68002B36D0159BDB00129AD01803AA159BDB000421D3185B18020003CA30 +:403D000003C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB00D3180433186803AA159BDB00D31808331968019B1B681A00FFF742FE03001A00E7 +:403D400001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A119B9A42B9D30F9B002B63D00F9BD900019B1A68109B1800FFF722FE03001A001D +:403D800001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB00109AD3185B68002B3CD0119A149BD318149AD2001099881803AADB000421D318EE +:403DC0005B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60119A149BD31803AADB00D31804331868119A149BD31803AADB00D3180833196847 +:403E0000019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B20492448942228F0EAFBC046149B01331493149A0F9B9A42B3D31F4B5A6A01235B421900100080 +:403E40002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CA13C313CA13C313CA13C312681A600E9B00211800FFF776FE03000D93019B1B7D16 +:403E80001A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC0460CF20310D8EB031000EC031020EC031044EC031064EC0310D803000888EC031000B587B004 +:403EC0000190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849284BAD22180028F049F9019B9B690493049B002B05D12449244BB322180028F079 +:403F00007BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B5B6818002DF0CCFB03000393039B002B05DA1349164BBF22180028F01FF9019B46 +:403F40005B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE03000593059B002B05D00549054BC522180028F003F9049B180007B000BDC04616 +:403F8000B4EC0310ECEC031020F2031000ED031020ED03103CED031000B58BB00491039217236B44021C1A70FFF7D0FC03000993099B002B05D12A492A4BCE22180028F029 +:403FC000DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D0079B04930EE0089B049A1A40049B9A4208D0049A1C491D48089B00931300DB2275 +:4040000028F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFB03000693069B079A1A40069B9A420DD0039A80231B069A4202D0069B023305D05D +:4040400007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC046B4EC031058ED031040F2031078ED0310B4ED031000B583B00190019B1A00002124 +:404080000120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC03000993099B002B05D15149514BF922180028F065F8099A029B2C211800FFF781FC03002A +:4040C0001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180033F014FE039B002B06D0039B013B039A134001D1012200E0002223236B441A702B +:404100001A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A13400AD1099B9B68039C84225200314933480093230028F060FA2DF0E6FA03000793C5 +:40414000039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B11001800FFF73CFD03000693069B002B07D1039C89235A001F492348230028F03DFA069B92 +:404180001800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211800FFF7B1FB18E0059B1533052204211800FFF771FB10E0059B153303211800DF +:4041C000FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B11001800FFF71DFDC0460AB010BDB4EC031058ED03104CF2031030EE03104CEE031015 +:4042000098EE0310B4EE031004EF031000B587B00390029101920093039B1800FFF7B2FC03000593059B1B68153305211800FFF76BFB029B032B06D99E235A001C491D4B66 +:40424000180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31804330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D010 +:40428000049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009BD21A049B5A60009B180007B000BDC04654F2031034EF031000B587B003900291F6 +:4042C00001920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F04DFF059A0099019B1800FFF769FB03001A0001235340DBB2002B06D0AD235A005C +:4043000009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC046B4EC031058ED031064F2031050EF031010B58AB00590049103920293029B002BE4 +:404340006BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A0299039B1800FFF72BFB03001A0001235340DBB2002B07D07023FF331A002A499B +:404380002A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7B3FA089B24229B5C1A00049B9B180493049B032B06D9BC235A001B491C4B1800EC +:4043C00028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C7E22FF32104913480093230028F004F9079B1B68029A0399180033F0F5FB079B84 +:404400001A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BDB4EC031058ED031070F2031050EF031070EF03108CEF031010B58EB001900091A4 +:40444000019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B498B4B180027F08AFE0D9BDB68002B06D1C6235A008549874B180027F07FFE019B70 +:404480001800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FA03000A930A9B002B06D0CB235A0077497A4B180027F062FE00230C930D9B1A681C +:4044C00027236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B002B0CD0009B6E4A934208D0009CA023FF331A006B496C48230028F07DF80D9BAA +:40450000DB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089B5B681800FFF74CFB0D9B18220021180033F0ECFB584B1B6A0D9A110018002AF03F +:4045400071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6000230D936BE00D9B1533032202211800FFF792F963E0009A80231B069A420BD09A +:40458000009B4A4A934207DA009CE0235A0045494748230028F030F80D9B1533032205211800FFF779F9009A80231B069A4202D10D9B01229A750D9BDB680693069B009A3C +:4045C0001A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800FFF75AF9059B1B681800FFF7E9FA0D9B18220021180033F089FB274B1B6A0D9A92 +:40460000110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B180027F0ABFD0D9B1B7D1C00EA23FF331A001C491F48230027F0DEFFC0460D9BEA +:40464000002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F099F90FE00C9B18002BF0E8FD03000393039B002B06D0FB235A000449074B1800FC +:4046800027F07CFDC0460EB010BDC046B4EC0310CCEF0310ECEF0310D8030008ECEC0310010000807CF2031014F003108000008050F0031088F0031000B585B00190019B88 +:4046C0001800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B1B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E02000009 +:40470000B4EC031028F1031000B585B001900091019B1800FFF736FA03000393039B1B68009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD0300019318 +:40474000019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B6918002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFC92 +:40478000C04603B000BDC04600040008A0F20310F4F203100404000810B52EF031F9C04610BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D008 +:4047C00002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF733FD3DE001AB9B681A0001AB5B6819001000FEF755FE33E001AB9B681A0001ABB1 +:404800005B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F803001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF71C +:40484000E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCC04607B000BDC046D0F303102CF30310A0F2031054F3031000B599B0394B1793AF +:404880000FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C231A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C2227 +:4048C000180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B18002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A005F +:40490000002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194B1A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFC73 +:40494000124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B000BDC04600770408779A333D0C4A2863A0F30310A0F203105CF30310B0F3031082 +:4049800070F30310C0F3031088F30310000400080404000800B587B0019003AB18000C231A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C0462C +:4049C00007B000BD0004000800B585B00390029101920093039B002B05D12349234B2422180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A93424E +:404A000005D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFB009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A6021 +:404A4000029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61C04605B000BDC046E0F3031020F4031030F403100C4A286348F4031078F40310C6 +:404A800088F40310FFD948A200B585B0039002910192039B002B05D11C491D4B3722180027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D032 +:404AC0001249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA6001 +:404B0000039B019A1A61C04605B000BDE0F3031020F4031030F403100C4A286348F40310A0F4031042658BA610B586B003906846016042608360039B002B05D13D493E4B86 +:404B40004722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B1A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B2218007A +:404B800027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B6824 +:404BC0001B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039BA2 +:404C00009B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D00449084B5D22180027F0A8FAC04606B010BDC046E0F3031020F40310FFD948A2AE +:404C4000B4F40310E0F40310F4F4031010B586B00190019B002B05D12D492E4B6322180027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA23B5 +:404C80005B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C3C5 +:404CC000019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B5B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019BFD +:404D00009B681B689A42CED1C04606B010BDC046E0F3031020F4031042658BA62CF50310F4F4031082B00190034A019B1A60019B180002B07047C046A4F5031000B583B0F2 +:404D40000190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B001900023180002B0704784B00390009201930023180004B0704784B0039000920193002342 +:404D8000180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800210002B010BD10B584B0039000920193039B1B682C331B68039A10009847030056 +:404DC0000C001800210004B010BD82B0019001235B42180002B0704730B585B0039000920193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF31 +:404E00001C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C00089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B41 +:404E4000099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B682F +:404E800028331B68039A1000984703000C00009801991A00230036F06DFF1C001300190022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00B9 +:404EC000230036F057FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D85B +:404F0000012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B019C03981A002300884703000C00009801991A00230036F01DFF1C001300190011 +:404F400022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F680099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B8476B +:404F800003000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B00B6 +:404FC0009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019B1A60019B180002B07047C046A4F50310F0B585B0039002910192039B1800FFF7A0 +:40500000EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B18006D +:4050400005B0F0BD60F5031000B583B001900A4A019B1A60019B180000F0E8F8019B0433180000F0E5FA019B1800FFF75BFE019B180003B000BDC04660F5031000B583B0C8 +:405080000190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64600B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B2433E3 +:4050C0000121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA03000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA69E7 +:40510000099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B0433180000F0E5FC030043440093002301930123019A954206D8019A954202D1009A944281 +:4051400000D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D69099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D80023ED +:40518000DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A0022430DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BBC +:4051C000DC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433180000F084FC0300069300230793099B5C691B690699079AC91AA2410B00140059 +:405200000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B01 +:4052400004D0019B00225A62002316E0019B24330121180027F09AF903000393039B002B01D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD35 +:4052800010B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B05 +:4052C00019695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B09938B +:40530000059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FD031E01D0012300E00023002B11D0059B19695A69029B039C5B1854410693079403 +:40534000059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9BFE +:405380000D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B043306990C9A180000F0F8FA0300099316 +:4053C000099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B585B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B04331800B7 +:4054000000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B00190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C69FC +:405440001B691900100000F044FB03000393039B1D0000231E002B0034001800210004B070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D000250026CC +:4054800011E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B1D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C0122E2 +:4054C0005340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB030023700F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD43 +:4055000000B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002B05D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC046E1 +:405540003A02000044FC03105CFC031010B5074B1B68002B08D0054B1A6801235B42190010002AF031FB00E0C04610BD5878000810B5064B1B68002B05D0044B1B68180084 +:405580002AF04CFB00E0C04610BDC0465878000800B583B00190019B180000F0C9FA27F0DDF9019B180003B000BD00B583B0019027F0FCF9019B180000F0C0FA019B180071 +:4055C00003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B583B0019027F030FA019B180000F0B2FA019B180003B000BD00B583B001900091EB +:40560000019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190019B180000F09CFA019B180003B000BD00B583B00190019B180000F097FA019BCA +:40564000180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F0FBFF03AB1800FFF793FF02AB1800FFF7A9FF019B18002FF099FE03005A1E9341D9 +:40568000DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180000F00CFA03000493049B180027F00AFF03001A00019B5A60054B180000F05CFA2A +:4056C0000300180027F0F0FF059B180007B000BD1863000800B587B00190002305931D4B180000F049FA0300180027F0B5FF04AB1800FFF74DFF03AB1800FFF763FF019B46 +:4057000018002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF04AB1800FFF741FF019B5B68002B04D0019B5B68180027F0EBFE064B180000F064 +:405740001BFA0300180027F0AFFF059B180007B000BDC0461863000800B589B0039002910192009301235B420793164B180000F003FA0300180027F06FFF06AB1800FFF725 +:4057800007FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF71EFF06AB1800FFF700FF064B180000F0E3F90300180027F077FF079B180009B050 +:4057C00000BDC0461863000810B592B00390029101920093039B180000F070F903000893039B18002FF03EFE03000D93039B18002FF031FE03000C93029B1093089A019B8B +:4058000011001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019BD2180C990D9BCB189A4201D9012300E00023002B02D001235B42B1E000230E930D +:40584000594B180000F098F90300180027F004FF009B002B00D19AE0039B019A110018002FF0DAFD03000B93109B032293431900109A2B236B448A1A511E8A411A70019B42 +:405880000B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F903001B6807932B236B441B78002B03D1079A089B9A4224D208AA07AB1100180000F097 +:4058C00066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039B5A68079BD018089A079BD31A1A00FF2132F00CFA039B5B680F93089B11930EE011 +:40590000079B089A1100180036F062F803001A00089B53430793109B0F93079B119306AB1800FFF735FE05AB1800FFF74BFE0398119B0F9A01992FF058FD03005A1E9341B1 +:40594000DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D0002401E0C046012406AB1800FFF71EFE012C0DD1C046009A079BD31A0093079B019AFF +:40598000D3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B180012B010BDC0461863000800B58FB0039002910192039B18002FF053FD0300A2 +:4059C0000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099A0A9B9A4202D901235B4261E0099A0A9B9A4217D2039B099A110018002FF00CFD1C +:405A000003000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D001235B4245E000230D93234B180000F0A4F80300180027F010FE019B002B2FD006ABA2 +:405A40001800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305AB1800FFF7BCFD06AB1800FFF79EFD0D9B002B03D001235B420D9310E0039B029A28 +:405A8000110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B180000F069F80300180027F0FDFD0D9B18000FB000BDC0461863000800B583B07B +:405AC0000190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A110018002FF099FC0300180003B000BD00B583B00190019B18002FF0ADFC0300180044 +:405B000003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B00190019B18002FF0A5FC0300180003B000BD82B00190019B180002B0704782B001905E +:405B4000019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700B583B00190019B73 +:405B8000180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019B61 +:405BC0001B68002B0FD1019B083319002420FAF755FD041E04D0200027F0ECFC220000E02200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F0A0 +:405C0000BDFA019B1B68180002B010BD64FC031080FC031082B00190019B074A1A61C046019B1B69002B01D0012200E00222019B1A75C04602B07047A8FC031082B001906D +:405C4000034A019B1A60019B180002B07047C0469CFC031000B583B00190019B1800FFF7EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B094 +:405C8000039002910192039B1B6810331B68019A0299039898470300180005B000BD00B583B00190019B1B6818331B68019A100098470300180003B000BD00B583B0019013 +:405CC000019B1B6828331B68019A100098470300180003B000BD82B001900A006B4603331A706B4603331B78002B01D0002301E019235B42180002B0704782B00190012399 +:405D0000180002B0704782B001900A006B4602331A801123180002B0704782B001900091C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF77C +:405D400051FD031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B28331C0002AB00211800FAF7EFFC02AB19002000FAF740FD02AB1800FAF7FEFC95 +:405D800026F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1854411A00230000F0DDF8019B28331800FAF718FD031E04D0019B28331800FFF71D +:405DC0009FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF7E0FC019B1800FFF7A0FF02AB1800FFF793FB02AB1800FAF7C3FCC04607B000BD10B582B0DB +:405E00000190019B180000F052F8019B00221A60019A002300249360D460019A002300241361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180038 +:405E400002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B020 +:405E8000019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A002300241361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019BF3 +:405EC000180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002300249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B6991 +:405F0000054A1100180025F08DFF019B180002B010BDC046D80004101D5F001000B585B00190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B01F +:405F40000190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BDD800041010B586B0059002920393059B9869059B08331900059A029B039C0092D7 +:405F80001A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B08331900100025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B0B0 +:405FC0007047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BDCC43041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B02F +:4060000000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BD00B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B087 +:406040000190019B180000F00FF8034A019B1A60019B180003B000BDCC43041082B00190019B180002B0704782B00190019B180002B0704782B06B46186059606B465B68F2 +:40608000180002B0704782B06B46186059606B465B68180002B0704784B001900091019B039304E0039B5A1C039200221A70009B5A1E0092002BF5D1C04604B0704786B058 +:4060C00003900291019213236B4400221A700023059313E0039A059BD3181A780299059BCB181B785340D9B213236B4413226A4412780A431A70059B01330593059A019B4F +:406100009A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206944663445A425341DBB2180002B0704700B583B00190019B7F3306DA019B5A42C0 +:40614000FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A934200D1B4E2B54A934200DD7CE0B44A934200D172E2B24A934238DCB24A934200D1C6 +:4061800047E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A934200D13DE2ACE2AA4A934200D134E2A94A934200D12EE2A3E2A84A934200D1FB +:4061C00051E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D13FE2A24A934200D139E28AE2A04A934200D182E29E4A934218DC9E4A934200D12B +:4062000075E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D167E2984A934200D165E26AE2964A934200D164E2944A934208DC944A934200D1DC +:4062400053E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A934200D13AE24DE28E4A934200D113E28C4A934238DC8B4A934200D11EE2894A934295 +:4062800018DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E22FE2844A934200D10BE2834A934200D105E226E2814A934200D1E8E17F4A934263 +:4062C00008DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A934200D1D6E10DE27A4A934200D1DBE1784A934218DC774A934200D1D0E1754A9342C0 +:4063000008DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A934200D1BEE1EDE1704A934200D1BDE16E4A934208DC6D4A934200D1B4E16C4A9342D2 +:4063400000D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E11A00263200D146E11A00263200DDCFE01A00373200D1B2E11A00373231DC1A00DC +:40638000403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D11FE1663300D11CE1ABE11A00623200D117E1603300D114E1A3E11A003A3200D1A0 +:4063C00039E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E18FE11A00313200D163E11A00313216DC1A00343200D11AE11A00343207DC1A00E0 +:40640000363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A002B3200D115E11A002B3265DC1A002F3200D10EE12D3300D10BE162E100BCFFFF4B +:4064400000AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFF809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF56 +:4064800080B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFF80C2FFFF00BFFFFF80BDFFFF80BCFFFF00BDFFFF00BEFFFF80BEFFFF00C1FFFFDA +:4064C00080BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFF80C4FFFF00C5FFFF00C7FFFF00C6FFFF80C6FFFF80C7FFFF1A00283200D1F0E0EF +:406500001A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A00193200D15BE01A0019320FDC1A00223209DC1A0023324EDA1A0025324DD0243349 +:4065400000D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D0173347D0CEE01A00143200D16EE0133300D16DE0C6E01A000C3200D180E01A000C327D +:4065800013DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3200D16EE00D332AD0ABE09A1D00D160E09A1D07DC1A000A3200D15EE0083300D1D7 +:4065C00059E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D2390E008238EE009238CE004238AE0022388E00D2386E0022384E00D2382E00823A6 +:4066000080E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102370E00E236EE00D236CE00D236AE00F2368E0022366E00F2364E0022362E00D236B +:4066400060E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E0092350E00C234EE00D234CE00C234AE0082348E0082346E0042344E0082342E008233D +:4066800040E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E0032330E008232EE002232CE010232AE00D2328E00D2326E0082324E0112322E00D2305 +:4066C00020E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2310E008230EE00D230CE008230AE0042308E0022306E0102304E0092302E00D23C2 +:4067000000E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED89A00114BD3181B689F46132318E0152316E0172314E0182312E0192310E01A2309 +:406740000EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E00023180002B07047C046E400041082B002006B4606331A806B4606331B88123B0C2BD3 +:406780001ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E07D +:4067C0000023180002B070471C01041000B585B0039002910192039B294A93420FD0284A934203D8274A934214D020E0A222D20593421ED0A422D20593421AD017E0029BC2 +:40680000002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD0029A80235B009A4207D0082324E0022322E0C04602E0C04600E0C046029B072298 +:40684000134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB0200019B1A60019B1B68002B04D1019B00225A60092300E00023180005B000BDC0469A +:40688000010000500100004000B589B0039004AB180007F097FB04A9039800230193002300930023002218F0C9FE03001800FFF73FFC03000793079B002B09D104AB180055 +:4068C00007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD00B587B001900091019B180016F006FA0300012B01D0082323E0019B1868596883 +:40690000FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D902230EE0059B1800FFF7AEFF03000393039B002B01D0039B03E0009B059A1A60F3 +:406940000023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF90300022B01D008231DE0029B18685968FFF789FB03000593059B1B7812246C44F8 +:406980001800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B059A1A600023180006B010BD10B58AB004910392029316236B44021C1A800E23A6 +:4069C0000993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A60AC21012030F042FA03000893089B002B01D1092362E0089A1F236B441B781900E4 +:406A0000100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499180007F09BFF03001800FFF781FB03000993099B002B30D1089A089B7C33190068 +:406A4000100011F099FF03001800FFF771FB03000993099B002B22D10898089B88331900089B7C331A00089B28331C00154B0193154B0093230011F043FD03001800FFF796 +:406A800057FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04600E0C046089B002B07D0089B18000EF0D4FD089B180030F05DFD099B18000AB0D5 +:406AC00010BDC046C8650008F947011000B58BB005900491039200230993059B1B681800FFF716FB031E21D0039B5D4A934201D90223B1E0059B1868039BD900059B103357 +:406B00001A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69039A0499180031F05FF894E0059B1B681B0C1B044B4A934219D1059B1B684A4A94 +:406B400013404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF03000993099B002B00D175E0099B74E0059B1B683F4A13403F4A934206D0059B1B68FD +:406B8000394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB059A420AD1039A049906A800230093002317F0D8F80300089307E0039A049906AB70 +:406BC000180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B68234A1340234A93420AD1059B10331A0006AB11001800FFF773FE030009931EE0A8 +:406C0000059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6898B200E00020059B10331A0006AB1900FFF78AFE0300099301E002230993099BEB +:406C4000002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC046FFFFFF1F000003700000FFEF00000360FFFFFFEF0000016010B588B0020002914C +:406C80000E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188805AB0093230005F051F803000793079B002B08D10699059A029B1800FFF706FFB0 +:406CC0000300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B0020000916B4606331A80204B1B68002B01D1072337E06B4606331B88002B04D09B +:406D00006B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F02292009A18114BD218009B1A60009B1B68DB68012B16D1009B1B681B68002B11D197 +:406D400000230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0039B00E00023180005B000BD4863000800B585B0020000916B4606331A800023C6 +:406D80000293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B01D0039B09E0029B1B68002B01D0052303E0029A009B1A60039B180005B000BD54 +:406DC00000B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E236B441B8811001800FFF778FF03000593059B002B01D0059B29E0049B1B68002B6F +:406E000001D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B012293430193049B5B68019A1A40019B9A4201D003230DE0009B002B06D0049B9A68009B9A42F3 +:406E400001D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B32D0019B1B681800FFF752F9031E05D0019B1B69180030F07DFB25E0019B1B68AD +:406E8000134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E0019B1B680C4A13400C4A93420AD1019B1B6918000EF0D1FB019B1B69180030F0BF +:406EC00059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF0000036010B588B004910392029316236B44021C1A8006AA16236B441B8811001800FFF74D +:406F000037FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF7D5FD03000793079B002B04D0069B00221A60079B1DE0069BDB68012B18D1069B08 +:406F40001968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B06D0069B1800FFF775FF069B00221A60079B180008B010BD00B587B002006B4622 +:406F800006331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493049B002B01D0049B1CE0039BDB68012B07D16B4606331B88180004F0E5FF03005D +:406FC0000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B00E0059B180007B000BD000000B583B00190019B1B681800FFF78AF8031E03D0D0 +:40700000019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC0300DB000BE0019B1B68084A1340084A934203D1019B1B699B6D00E0002318000C +:4070400003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B44021C1A80029B002B02D0029B00221A60019B002B02D0019B00221A6004AA0E23D5 +:407080006B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002B01D1062311E0029B002B03D0049B1A68029B1A60019B002B06D0049B1800FFF715 +:4070C00095FF0200019B1A600023180007B000BD00B58BB00390029101920093009B00221A600C9B002B0AD0039B1A68C023DB051A40C023DB059A4201D00823F8E0039BC8 +:407100001B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0039B1969039B5A69029B180030F05CFD039B5B69029AD018039B5B69019AD31AE1 +:407140001A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A934232D10C9B002B2FD1039B1800FFF73EFF03000733DB080893089A019B9A4201D936 +:407180000423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF03000793079B002B01D0079BA2E0029A089BD018019A089BD31A1A00002130F0A7FD009B90 +:4071C000089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A934200D083E0039B1B68444A1340444A93420BD105AB180015F007FD05AB434AA0 +:407200001A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB5A600C9B002B08D1039B1A68E023DB051A40C023DB059A4208D1019A029905ABF8 +:40724000180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B0EDA019B002B05D0019A029B0021180030F04CFD099B1800FEF75AFF030037E049 +:40728000099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B019AD31A029AD318099A0021180030F02DFD17E0099A019B9A4213D2099B019A93 +:4072C000D31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A00002130F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF45 +:40730000000001600000FFEF00000360CC380410FC38041010B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230122FFF742FD0300079357 +:40734000079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE0300180008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A91623CA +:407380006B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A0499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44BE +:4073C000021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049B1B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A3B +:40740000934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B185A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B68AD +:407440001B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D1039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B4B +:40748000002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A44108800935A +:4074C0002B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800FEF7DAFD079B180030F044F8099B18000BB030BD000001700000016000000270EC +:4075000000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E023 +:40754000094B00E00023180002B0704709000001080000010A0000010B000001482D0410782D0410A82D0410D82D041000B583B00190019B1B68114A934205D8104A9342F1 +:4075800006D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083318001CF0C6FD02E0072304E0C046019B00221A600023180003B000BD090000011D +:4075C000080000010B00000100B585B001900091019B00221A60009B334A93421BD0324A934203D8314A934207D03EE0304A93421FD0304A93422AD037E0019B083318005C +:407600001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE019B0833002118001AF03AFE0300039327E0019B083318001CF06FFD019B0833D4 +:40764000012118001CF094FD0300039319E0019B083318001CF061FD019B0833002118001CF086FD030003930BE0009AFE23DB051A4080235B049A4201D1022311E008233F +:407680000FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD0300180005B000BD09000001080000010A0000010B00000100B587B003900291DF +:4076C0000192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A934214D809E0039B0833019A029918001CF0E3FA030005930CE0039B0833019A029927 +:4077000018001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF059B1800FEF704FD0300180007B000BD08000001090000010B00000100AFFFFFE7 +:4077400000B589B00390029101920093039B1B68FF221340802252041343824A934200D1AEE0039B1B68FF2213408022520413437D4A934200D1A1E0039B1B68FF22134086 +:40778000802252041343794A934200D194E0039B1B68FF221340802252041343744A934200D187E0039B1B68FF221340802252041343704A934200D17AE0039B1B68FF2211 +:4077C00013408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A934261D0039B1B68FF221340802252041343634A934255D0039B1B68FF22134087 +:407800008022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD0039B1B68FF221340802252041343574A934231D0039B1B68FF2213408022520412 +:407840001343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68FF2213408022520413434B4A93420DD0039B1B68FF221340802252041343474A73 +:40788000934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E046 +:4078C00010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059B9A4202D20423079328E0039B1B68224A93421AD3214A934203D9224A934214D861 +:4079000009E0039B0833029A110018001CF04DFA030006930CE0039B0833029A110018001EF0D2FD0300069302E01D4B0693C046069B1800FEF7FCFB03000793079B002BD6 +:4079400008D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B180009B000BD01000001020000010300000104000001050000010800000109000001D2 +:407980000A0000010B0000010C0000010D0000011000000111000001120000011300000100AFFFFF00B597B003900291019204AB05A903984022FFF7C3FE03001593159B7D +:4079C000002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB031E01D0102300E00023180017B000BD00B587B00390029101920093039AFE23CD +:407A0000DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB049A4207D0039AFE23DB051A40C023DB049A4248D1039B554A93421ED0534A93421D +:407A400009D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934210D34F4A934221D04E4A934223D027E017236B4407221A7024E017236B440522D1 +:407A80001A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A7010E017236B4402221A700BE017236B4408221A7006E017236B4406221A7001E015 +:407AC00000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D117236B4406221A7001E0002348E0029B2F4A934212D02E4A934203D82D4A93421C +:407B000007D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B04D116236B4403221A7003E016236B4404221A70019B802B0ED1C02301930BE0F1 +:407B400016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0009B16226A4412781A70019917236B441A7816236B441B7818000BF02FFA0300EE +:407B8000180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C00401000006020000060200C0020300C00202000040010000400300004004000040F8 +:407BC00082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040230EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E00023CC +:407C0000180002B07047C046FFFFFFFE5001041000B585B00190009102230393019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71E7 +:407C4000019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7902218A431A71019B083318000BF0ECF90023039317E0019B1B68134A1A40A02328 +:407C80009B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4201D008230393039B002B06D0B4235A00019B0021180030F029F8039B180005B023 +:407CC00000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B1800FFF743FC0300180003B000BD00B583B00190B0235A00019B0021180030F003 +:407D000005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204A934205D1019B083318000BF099F90CE0019B1B681B4A1A40A0239B049A4222D14F +:407D4000019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A434A +:407D80001A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC0460200C0020000C07F00B587B00390029101920093009B5B69DAB2039B5A71039B63 +:407DC0000833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800019B1B69029A19000CF054F803000593059B180007B000BD00B5A9B00390029152 +:407E000001920093009BFF221340802252041343A94A934200D1A0E0009BFF221340802252041343A54A934200D194E0009BFF221340802252041343A14A934200D188E0EA +:407E4000009BFF2213408022520413439D4A934200D17CE0009BFF221340802252041343994A934200D170E0009BFF221340802252041343954A934200D164E0009BFF22A4 +:407E80001340802252041343914A934259D0009BFF2213408022520413438E4A93424ED0009BFF2213408022520413438A4A934243D0009BFF221340802252041343874AD9 +:407EC000934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041343804A934222D0009BFF2213408022520413437C4A934217D0009BFF221340CD +:407F0000802252041343794A93420CD0009BFF221340802252041343754A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE0302381 +:407F40000CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009B1800FFF72DFE03002493249B802B01D902239EE0249B802B01D9022399E0249A61 +:407F8000259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB03002693269B002B00D077E0039B019A02991800FFF781FB03002693269B002B6ED10E +:407FC000039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019A029904AB18002FF0FFFD002327930EE004AA279BD3181B7836225340D9B204AAE9 +:40800000279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249AD31A1A0036212FF071FE0023279310E004AA279BD3181B786A225340D8B2039AC2 +:40804000E021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A00019BD018019B249AD31A1A005C212FF04DFE039B009A11001800FFF7A5FA030001 +:408080002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04600E0C046019A04AB11001800FDF7F4FF269B180029B000BD0100000102000001D8 +:4080C00003000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B58EB00390019200930A23F9 +:408100006B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F236B443F210A401A70019BB44A13400A930A9A039B11001800FFF76AFD03000D9304 +:408140000D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A90A236B4418882300FEF72AFE03000D930D9B002B00D02FE1059B1800FEF736FFC4 +:40818000030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089B002B02D102230D9317E1089B5B69DAB2039B5A71059A089B09990398FFF7F4FD67 +:4081C00003000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D0DBE0019BFF2213408022520413430693069B002B02D102230D93EEE0069BFF2293 +:4082000013408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A934200D194E0069BFF221340802252041343774A934200D188E0069BFF221340802283 +:4082400052041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E0069BFF2213408022520413436B4A934200D164E0069BFF2213408022520413431C +:40828000674A934259D0069BFF221340802252041343644A93424ED0069BFF221340802252041343604A934243D0069BFF2213408022520413435D4A934238D0069BFF226D +:4082C0001340802252041343594A93422DD0069BFF221340802252041343564A934222D0069BFF221340802252041343524A934217D0069BFF2213408022520413434F4AE7 +:4083000093420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C235A +:4083400008E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0039B5B79802B02D902230D9335E0059B1A68A223DB059A4202D008230D932CE093 +:40838000039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F236B441B78002B18D02F236B441B78032B02D802230D9310E0039B5B792F226A44CF +:4083C00012789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0039B1800FFF790FC04E0039B1A7901210A431A710D9B18000EB010BDFFC0FFFFBD +:408400000200C0020000C07F010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D000001100000011100000112000001AA +:408440001300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF748FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A2328 +:408480006B44198803980023FFF734FE0300180005B000BD00B587B003900291019207230593039B1B7901221340DBB2002B3CD0039B1B7902221340DBB2002B06D0039B51 +:4084C0001B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD1039B0833019A029918000BF01FFD03000493049B1800FDF71BFE0300059317E01C +:40850000039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300059305E00723059302E0C04600E0C046059B002B03D0039B1800FFF7E5FB059B91 +:40854000180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B68169300230493169B1800FFF72AFB03001593039804AB05A94022FFF7E2F803001793C5 +:40858000179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D10398039BE033159A1900FFF785F803001793179B002B1ED1039B049A05A9180037 +:4085C000FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B002B0CD1019A05A9029B18002FF0FCFA06E0C04604E0C04602E0C04600E0C0468A +:40860000049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039B1B7901221340DBB2002B01D1072350E0039B1B7902221340DBB2002B08D0039B30 +:408640001B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0039B1B681C4A93421ED1039B083305AA110018000BF008FD03000993099B002B92 +:4086800007D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800FDF746FD030014E0039B1B680B4A1A40A0239B049A420BD1039B08331800039BE5 +:4086C0005B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F00B587B00390029101920093009B019A1A60019B002B05D0019A029B21211800E9 +:408700002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800FFF778FF03000593059B002B15D1039B1800FFF7E9FA03000593059B002B05D1C0 +:40874000039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF7D3FA059B180007B000BD00B597B0039002910192039B1B7910221340DBB2002B3D +:4087800002D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B40221800FFF737FF03001593019A05A9029B1800FDF784FC031E01D010231593159BED +:4087C000002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB40211800FDF75AFC159B180017B000BD00B587B0039002910192039BFF2293432D4A934223 +:4088000011D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A1340284A93420CD1039BFF22134006D0039BFF22134080225204134302E0002300E067 +:4088400000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A70039BFF229343144A934213D1039B124A93420FD0049B002B01D1022316E0049B68 +:40888000180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D1049B002B01D1022300E00023180007B000BDC046000003100000021000FFFEFFBB +:4088C000000004100000061010B58CB0079006910592049327226A440499069B1800FFF785FF03000A930A9B002B01D00A9B5AE0079B180016F0CFFF02000F9B9A4201D91A +:40890000042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B441B78234C234907980E9A0392059A0292049A019200930123220018F0A9FC030037 +:408940000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F08BFF134A134907980E9B0393059B0293049B019300230093012318F0ABF9030002 +:408980000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B1800FDF7C6FB030018000CB010BD00000210C8650008F94701100000031010B58CB04E +:4089C000079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D00A9B56E0079B180016F055FF02000F9B9A4201D904234CE0069BFF229343264AE1 +:408A0000934219D1079B00220021180016F034FF27236B441B78214C214907980E9A0392059A0292049A019200930023220018F037FF03000B9321E0069BFF229343194AEB +:408A4000934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393059B0293049B019300230093002318F05BFE03000B9301E008230AE00B9B0A4AD9 +:408A8000934201D1102304E00B9B1800FDF750FB030018000CB010BD00000210C8650008F94701100000031000BFFFFF10B594B00790069105920493079B9B6D0733DB08C3 +:408AC00012930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B13937FE0069A80235B0213404BD0069BFF229343484A934211D0069BFF229343464A40 +:408B000093420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF22134006D0069BFF22134080225204134302E0002300E000231193119B1800FEF757 +:408B4000E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0CA93F236B441B780293049B0193059B009323000CF0B2F903001393139B002B9B +:408B800016D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B009323000CF00BF903001393139B002B15D1129A16990CAB180005F032FF0300139358 +:408BC000139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0C0460CAB180005F0FFF909AB180005F0FBF9139B002B03D1129B5A00189B1A601F +:408C0000139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFF0000041000000610C8650008F947011010B58EB00590049103920293059B9B6DC1 +:408C40000733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D0102337E00C9A029909AB180005F076FE03000D930D9B002B1CD1029A0C9BD118AD +:408C80000C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A049906AB019309AB009323000CF023FA03000D9302E0C04600E0C04609AB180005F049 +:408CC00093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB00691059204931E236B44021C1A800E9B0D9A1A60069C8023DA0008A91E236B4429 +:408D000018882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB059A4202D0082309933AE0089B1B682B4A934210D1089B1869049C059A06990E9BD3 +:408D400002930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A934219D1069B204A1340204A934210D1089B1869049C059A06990E9B02930D9BFF +:408D800001930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C046099B002B0CD10E9B1B680C9AD0180E9B1B680D9AD31A1A0021212EF0A7FF08E03A +:408DC0000D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC046000001700000FFEF0000036000FFFEFF0000061010B588B004910392029316236B44021C8A +:408E00001A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D0079B30E0069B1B68184A1340184A93420DD1069B1869029C039A04990B9B019309 +:408E40000A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4A13400F4A93420BD1069B18690A9C029A03990B9B00932300FFF7DAFE030002E0A5 +:408E8000082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFF0000061010B586B001900091019BFF229343124A934206D1019BFF2213408022CB +:408EC0005204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F040FB030023700F236B441A78009B0121180016F0C1FCC04606B010BD00000312B5 +:408F000010B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A934204D0119B002B01D008237DE0089C80235A000AA926236B4418882300FDF764 +:408F40003FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A420AD00A9B1A68E023DB051A40E023DB059A4201D0082358E00A9B1B682D4A134055 +:408F80002D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E0089B264A93420ED1254A26490B98129B0293079B0193069B0093002317F064FA0B +:408FC00003000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A18490B98129B0493079B0393069B0293119B0193109B0093002317F0BFF80300D1 +:409000000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800FDF786F8030000E0022318000EB010BD00000312FFFFFFEF00000160000002126C +:40904000C8650008F947011010B58EB008910792069326236B44021C1A80149B00221A60089BFF2293433C4A934204D0119B002B01D008236CE0089C80239A000AA92623DC +:409080006B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB051A40E023DB059A4201D0082350E00A9B1B682A4A93424AD10A9B1B690B930B9B42 +:4090C000180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B98139B0393129B0293079B0193149B0093012317F0B5FD03000D9322E0089BFF2253 +:409100009343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B0493079B0393149B0293119B0193109B0093012317F0DEF903000D9301E008237B +:4091400006E00D9B1800FCF7F3FF030000E0022318000EB010BDC046000003120000017000000212C8650008F947011000B583B001900091009AFE23DB051A408023DB0412 +:409180009A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902210A431A71019B00225A71019B64 +:4091C00000229A71019B0833180009F03DFF0023180003B000BD000010B58AB003900800019219000A236B44021C1A8009236B440A1C1A70784B09930023089309236B4416 +:409200001B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FF03000693069B002B01D0069BD1E0019C079A04A90A236B4418882300FDF7C0FD15 +:4092400003000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059A01980023FEF7C4FB03000893089B002B01D10223ADE0039B0833089A11001800A1 +:4092800009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030097E0039B08331800049B1969059A09236B441B785BB209F02DFF03000993099B87 +:4092C000002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D03F4A934209D011E0039B0833042118000AF01CFB030009930BE0039B08330021DE +:4093000018000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F9099B1800FCF704FF030052E0039B1A7901210A431A71019AFF23DB051A409023DE +:40934000DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A934208D0049B1B68214A944663445A425341DBB206E0102304E0082302E0102370 +:4093800000E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B68114A93420FD0049B1B68104A934208D0049B1B680E4A944663445A425341DBB25F +:4093C00004E0102302E0082300E01023039A5371002318000AB010BD809FFFFF0001600401016004010000400200004003000040FCFFFFBF00B585B0039001920A236B44C0 +:409400000A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A236B44198803980023FFF7CEFE03001800D3 +:4094400005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D1072305932AE0039B5B791A00019B9A4202D9042302 +:40948000059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B1800FCF745FE030005930DE0039B5B791A00009B1A60009B1A680299039B180011 +:4094C00000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC046C865000800B587B0039002910192039B1B7904221340DBB2002B06D1039B1B7919 +:4095000002221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305930EE0039B0833019A0299180009F06AFE03000493049B1800FCF7FAFD030005938B +:40954000059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B000BD10B58AB00590049103920293059B1A68FF23DB051A409023DB049A4210D087 +:40958000059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B795343089301E0039B08930C9A089B9A4202D20423099312E0059B08331800029C039A049993 +:4095C0000D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D0059B180000F082F8099B18000AB010BD00B58BB003900291019200930123099307 +:40960000384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B7902221340DBB2002B09D0039B1B7904221340DBB2002B02D10723099344E0039B1B7C5BB242 +:40964000012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833009A04A918000AF08FF803000893089B002B06D0089B1800FCF75AFD030009934B +:4096800020E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF0A3FA02E0042309930CE004AB10211800FCF7F2FC039B180000F018F80300099315 +:4096C000099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B18000BB000BD809FFFFF0001600400B583B00190019B1B68002B01D1002328E0019B22 +:409700001A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B00225A71019BBF +:4097400000229A71019B1A7902218A431A710023180003B000BD000000B585B0020000916B4606331A80009B002B01D108231BE002AA6B4606331B8811001800FDF7F8FA60 +:4097800003000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A043303CA03C30023180005B000BDC046FEE0FFFF00B585B0020000916B46063352 +:4097C0001A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393039B002B01D0039B05E0029B009A043303CB03C20023180005B000BD00B585B0FA +:40980000020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B002B01D0039B04E0029BDA68009B1A600023180005B000BD00B585B0020000918D +:409840006B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AA6B4606331B8811001800FDF781FA03000393039B002B01D0039B09E0009B064AF6 +:40988000934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B00190019ACC235B00D3580B4A934203D00A4A934206D00BE0019B0833180008F002 +:4098C00044FA05E0019B0833180012F007FAC046C04603B000BDC046011000060210000610B588B00390019200930A236B440A1C1A800399009C019A0A236B4418882300DE +:40990000FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB03000693039B1B68196817236B44069A0098FEF75FF80200039B5A60039B5B68002B01D165 +:409940000223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B005549D150039ACE235B001021D154039B1B681B68514A93420DD0039B1B681B684F4A7B +:40998000934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039B0833180017236B441978039B1B681A69069B08F088F903001800FCF7B9FB030034 +:4099C0000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039B1B681B68344A93420DD0039B1B681B68324A934205D0039B1B681B68304A934256 +:409A000001D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B681A69069B11F010FB03001800FCF780FB0300079302E0022332E0C046009AFE238A +:409A4000DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C934202D90823079315E0009AFE23DB051A40C023DB049A4206D1009B1B0ADBB2DD +:409A80003F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B180008B010BDC046FFC0FFFF010000060200000601100006010000400200004056 +:409AC000030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B00221A600A9C80235A004F4B76A98C46634419880CA82300FFF7F2FE03007593C0 +:409B0000759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A4202D90423759369E07E9A7D9BD31874933E4B76AAD218CC235B00D3583C4A9342F5 +:409B400023D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305947E9B04937C9B03937B9B02937A9B0193089B00930B00012112F02EF803001800C9 +:409B8000FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AAD2189E23FF33D35C1D00089C099A7D990CAB083318000595749B04937E9B039394 +:409BC0007C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E002231EE0759B002B08D07F9B002B05D07F9A7E9B002118002EF088F80CAB1800CD +:409C0000FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A60759B180077B030BD56FEFFFF58FEFFFF021000060110000686B00390029101929E +:409C40000093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042305E0029A059BD218069B1A600023180006B0704770B5F6B00891079206936D4B57 +:409C800076AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46634419880CA82300FFF71AFE03007593759B002B01D0759BB9E05F4B76AAD218AF +:409CC000CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF7A6FF03007593759B002B00D084E04F4B76AAD2189E234B +:409D0000FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAA083210007E9A05927C9A0492039602937B9B01937A9B00932B000A00210011F07E +:409D400081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A934240D1354B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF75B +:409D80005BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B254A76A989189E22FF328A5C1600069D07990CAA08321000059604937E9B039387 +:409DC0007C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300759301E0022322E0759B002B0CD07F9B002B09D07F9A7E9B002118002DF086FFE2 +:409E000002E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF33D35C1A007D9B9A1A809B1A60759B180076B070BD4EFEFFFF58FEFFFF021000060B +:409E40000110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1019B9B68002B54D0019B9A68019BDB6819001000FCF710F9019B9B6818002DF069 +:409E800079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B10331800FDF713FF0300039332E0019B1B68FF2293431E4A934206D0019B1B68FF2283 +:409EC00093431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8019B9B6818002DF045FB019B1B69002B0FD0019B1A69019B5B6919001000FCF772 +:409F0000CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FE039B180005B000BD0100003100010030000200300003003082B001900091019BFA +:409F40005A68009B1A600023180002B07047000000B587B00390029101920093029BFF221340802252041343B64A934200D1A0E0029BFF221340802252041343B24A934279 +:409F800000D194E0029BFF221340802252041343AE4A934200D188E0029BFF221340802252041343AA4A934200D17CE0029BFF221340802252041343A64A934200D170E05D +:409FC000029BFF221340802252041343A24A934200D164E0029BFF2213408022520413439E4A934259D0029BFF2213408022520413439B4A93424ED0029BFF2213408022FD +:40A0000052041343974A934243D0029BFF221340802252041343944A934238D0029BFF221340802252041343904A93422DD0029BFF2213408022520413438D4A934222D089 +:40A04000029BFF221340802252041343894A934217D0029BFF221340802252041343864A93420CD0029BFF221340802252041343824A934201D140231CE000231AE0302371 +:40A0800018E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102316226A441370B8E0039AF423AC +:40A0C0005B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D917236B44009A1A70039BA933FF330399F42252008A5C991817236B441A78019B18000A +:40A100002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4235B00D25C17236B441B78D318D9B2039AF4235B00D154009B002B00D17CE0039A74 +:40A14000EA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D154039AF4235B000021D154039B08331800039B6933FF33190016236B441A78E5 +:40A18000029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D0039B08331800039BA933FF33190016236B441B781A00FDF77FFA03000493049BC5 +:40A1C000002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493049B002B01D0049B28E0039B08331800039BEA33FF3301221900FDF75DFA030080 +:40A200000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F903000493049B002B01D0049B06E0009B002B00D042E700E0C0460023180007B067 +:40A2400000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000178 +:40A2800000B5E1B001900091009BFF2213408022520413435C935C9BFF221340802252041343A44A934200D1A0E05C9BFF221340802252041343A04A934200D194E05C9B69 +:40A2C000FF2213408022520413439C4A934200D188E05C9BFF221340802252041343984A934200D17CE05C9BFF221340802252041343944A934200D170E05C9BFF22134013 +:40A30000802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D05C9BFF221340802252041343884A93424ED05C9BFF221340802252041343854A78 +:40A34000934243D05C9BFF221340802252041343814A934238D05C9BFF2213408022520413437E4A93422DD05C9BFF2213408022520413437A4A934222D05C9BFF22134092 +:40A38000802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BFF221340802252041343704A934201D140231CE000231AE0302318E0202316E091 +:40A3C0001C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010237022FF326A441370019B51229B5CFF2B01D159 +:40A40000072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB1800FDF765FC019B51229B5C012B10D1019B9A687023FF336B441B78D3185E93019B57 +:40A44000DA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D93019B1968019B5A685C9B02A8FDF7C4FC03005F935F9B002B41D15D9A5E9902ABB1 +:40A480001800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB1800FEF756F803005F935F9B002B2BD1019B1968019B5A685C9B02A8FDF79DFC0300EE +:40A4C0005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002B15D1019B103319007023FF336B441A7802AB1800FEF72CF803005F9308E0C04679 +:40A5000006E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002B04D15A9B002B01D05A9B5F935F9B180061B000BD0100000102000001030000013E +:40A54000040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093029BFF2249 +:40A5800013408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BFF221340802252041343794A934200D194E0069BFF221340802252041343754AAF +:40A5C000934200D188E0069BFF221340802252041343714A934200D17CE0069BFF2213408022520413436D4A934200D170E0069BFF221340802252041343694A934200D161 +:40A6000064E0069BFF221340802252041343654A934259D0069BFF221340802252041343614A93424ED0069BFF2213408022520413435E4A934243D0069BFF22134080221B +:40A64000520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF221340802252041343534A934222D0069BFF221340802252041343504A934217D057 +:40A68000069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E0BC +:40A6C00040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102317226A44137049E0039B50229A5C1F236B441721694409788A1A1A701F2383 +:40A700006B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049B31E01F236B441A78009B9A4203D91F236B44009A1A70039B1033039A5021525C28 +:40A7400099181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B441B78009AD31A0093039B50229A5C1F236B441B78D318D9B2039B50229954009BBA +:40A78000002BB2D10023180009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001BE +:40A7C000120000011300000100B589B0039002910192039B5A68019B9A4205D2039B00225A601223079361E0019B002B09D1039B5B68002B05D1039B1B68002B01D11223FC +:40A8000062E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68D21A019BD31A0593039B9A68059BD118019A029B18002DF0D7F90023079335E0BD +:40A84000039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039B08331800019B029A0699FFF771FB030007931BE0039B1B68FF229343164A934211 +:40A8800006D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF767FE0300079301E007230DE0079B002B09D0039B1800FFF7C5FA019A029B2121D8 +:40A8C00018002DF023FA079B180009B000BDC0460100003100010030000200300003003010B588B00291019200930E236B44021C1A8000230693019B0733DB080593029B10 +:40A900001800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B190001202CF0A4FA03000693069B002B01D109231CE0059A0699009B1800FFF745FF0300A0 +:40A940000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E0C046069B18002CF005FE079B180008B010BD000000B587B0039002910192009393 +:40A98000039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B002B01D0059BEFE0039B0833019A02991800FCF781FE03000593059B002B01D072 +:40A9C000059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B01D0059BD0E0009BFF221340802252041343674A934200D1A0E0009BFF221340A7 +:40AA0000802252041343634A934200D194E0009BFF2213408022520413435F4A934200D188E0009BFF2213408022520413435B4A934200D17CE0009BFF22134080225204E2 +:40AA40001343574A934200D170E0009BFF221340802252041343534A934200D164E0009BFF2213408022520413434F4A934259D0009BFF2213408022520413434B4A93424A +:40AA80004ED0009BFF221340802252041343484A934243D0009BFF221340802252041343444A934238D0009BFF221340802252041343414A93422DD0009BFF22134080226E +:40AAC000520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF221340802252041343364A93420CD0009BFF221340802252041343334A934201D1B0 +:40AB000040231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102303996B +:40AB4000F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B190001202CF083F90200039B1A60039B1B68002B01D1092307E0039B1B680B9A0A998E +:40AB800018002DF031F80023180007B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000118 +:40ABC00011000001120000011300000100B589B00390029101920093009BFF221340802252041343904A934200D1A0E0009BFF2213408022520413438C4A934200D194E038 +:40AC0000009BFF221340802252041343884A934200D188E0009BFF221340802252041343844A934200D17CE0009BFF221340802252041343804A934200D170E0009BFF22D1 +:40AC400013408022520413437C4A934200D164E0009BFF221340802252041343784A934259D0009BFF221340802252041343754A93424ED0009BFF221340802252041343FA +:40AC8000714A934243D0009BFF2213408022520413436E4A934238D0009BFF2213408022520413436A4A93422DD0009BFF221340802252041343674A934222D0009BFF228B +:40ACC0001340802252041343634A934217D0009BFF221340802252041343604A93420CD0009BFF2213408022520413435C4A934201D140231CE000231AE0302318E02023DE +:40AD000016E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010231F226A4413701F236B441A780B9BD2188A +:40AD40000D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D109235EE0039B019A5A60039B1B68019A029918002CF039FF0B9A0D9BD2180B9B9A421E +:40AD80000BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E000230593059B002B01D0082339E0069B190001202CF05BF80200039B9A60039B9B68B9 +:40ADC000002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D3180D9A0C9918002CF0FFFE0B9B002B0CD0039B9A681F236B4419780D9BCB18D31829 +:40AE00000B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A540023180009B000BDC04601000001020000010300000104000001050000010800000180 +:40AE4000090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B5CAB00790069105920493059B802B01D9082351E0059B1B0ADAB2DF +:40AE8000284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A002118002CF033FF059B02331E4A4AA98C46624411781B4A4AA884466244D154059B8C +:40AEC0000333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A069918002CF080FE059B02335A00049C08A907984F9B03934E9B02934D9B0193A3 +:40AF00004C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B18004AB010BDF8FEFFFF10B58EB00790069105920493079B049A1A60049BD44A93425B +:40AF400026D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FF0200079B9A60079B9B68002B01D1092328E2079B9B68059A069918002CF034FEC4 +:40AF8000079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049BFF2213408022520413430B930B9BFF221340802252041343B74A934200D1A0E0AD +:40AFC0000B9BFF221340802252041343B34A934200D194E00B9BFF221340802252041343AF4A934200D188E00B9BFF221340802252041343AB4A934200D17CE00B9BFF223D +:40B000001340802252041343A74A934200D170E00B9BFF221340802252041343A34A934200D164E00B9BFF2213408022520413439F4A934259D00B9BFF22134080225204E8 +:40B0400013439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340802252041343954A934238D00B9BFF221340802252041343914A93422DD00B9B90 +:40B08000FF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A934217D00B9BFF221340802252041343874A93420CD00B9BFF221340802252041343E5 +:40B0C000834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E01023E1 +:40B1000000E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B083318000B9C059A0699139B0393129B0293119B0193109B00932300FFF71CFC03000D9384 +:40B1400029E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF2213408022520413430993099BFF221340802252041343484A934200D1CAE0099B0F +:40B18000FF221340802252041343444A934200D1BEE0099BFF221340802252041343404A934200D1B2E0099BFF2213408022520413433C4A934200D1A6E0099BFF221340A3 +:40B1C000802252041343384A934200D19AE0099BFF221340802252041343344A934200D18EE0099BFF221340802252041343304A934200D182E0099BFF221340802252046F +:40B2000013432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099BFF221340802252041343244A93425FD0099BFF221340802252041343204A934201 +:40B2400054D0099BFF2213408022520413431D4A934249D0099BFF221340802252041343194A93423ED0099BFF221340802252041343164A934233D0099BFF2213408022EB +:40B2800052041343124A934228D1402343E0C0460100003100010030010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000017E +:40B2C0000D00000110000001110000011200000113000001000200300003003000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE09C +:40B300001C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0099B2B4A934201D002234BE0089A13001B029B1A0C93049BFF229343254A9342E5 +:40B3400013D1079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF734FC03000D9315E0079B08331800099C059A0699139B0393129B0293119B22 +:40B380000193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E0149A0C9B9A4203D8079B149A5A6008E0149B013303D1079B0C9A5A6001E008239A +:40B3C00000E0002318000EB010BDC046090000010A0000010002003010B58CB009900792069322236B440A1C1A80099B1B68002B01D007233FE0079AFE23DB051A40C0238F +:40B400009B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC03000B930B9B002B01D00B9B24E00A9B1A68A423DB059A4201D008231CE00A9B1969FF +:40B440000A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF763FD03000B930B9B002B03D0099B1800FEF7E8FC0B9B18000CB010BD10B5D8B005 +:40B4800005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059954AB180012F0D0FD03005793579B002B3FD154AB180011F021FC0300023B012BAF +:40B4C00002D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B789A4202D01D4B579328E0569907AB0122180009F04FFA03005793579B002B1AD135 +:40B50000039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B0193104B0093230009F084FA0300579304E0C04602E0C04600E0C04654AB1800F8 +:40B5400011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFFC8650008F947011010B59EB0099008910792069300230B93209B234A1340234A04 +:40B5800093421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907980BAB0193422300932300FFF767FF03001D93C0461D9B002B02D01BE0022320E0A3 +:40B5C0000B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293002301930023009313002200FFF79CFC03001D930B9A0CAB11001800FAF74CFDA2 +:40B600001D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392029312236B440A1C1A800A9AFC23DB051A4088239B059A4201D0082323E00A9CC5 +:40B6400080235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E00699029C039A05980A9B00932300FFF77BFF03000793079B002B03D0059B1800CC +:40B68000FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE0009A0199074B180009F0A6F803000393039B1800FAF73CFD0300180005B000BD49 +:40B6C00048630008C865000882B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B0AD +:40B700007047C0467C01041000B587B0019000911E4B1B68002B01D0032334E0009B1F2B07D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B4211001800A1 +:40B74000F7F73CF803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2358420023F6F79AFF03000493049B1800FFF7AAFF0300059304E0049B002B01D106 +:40B7800003230593059B180007B000BD4863000810B58AB00291019200930E236B44021C1A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF747 +:40B7C000D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B10331A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049B67 +:40B800005B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFE099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A42AA +:40B8400064D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C4422236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793AF +:40B88000009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B9B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D19A +:40B8C000092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FCE4 +:40B90000030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D10499019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEFA0 +:40B9400000000360C8650008F947011000B585B00E236B4401221A801EE001AA0E236B441B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B182143 +:40B980001800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202BDBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFB21 +:40B9C000C04605B000BDC046C8650008506300084863000810B584B002AB1B4A1A601B4B1B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF55 +:40BA0000144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039B002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FBFE +:40BA40000300180004B010BD505341004863000850630008C865000851AB011000B587B00390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B07 +:40BA800000225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B5A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A749B +:40BAC000009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB2059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CAD +:40BB0000DAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039948 +:40BB400018002CF051F8C04607B000BDA401041000B583B001900749019B082218002CF01DF8031E01D00C2300E00023180003B000BDC046A401041000B589B003900291BE +:40BB800001920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079BFA +:40BBC000DB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A43079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D8F2 +:40BC0000009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019B1A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7BDA +:40BC40001B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079B9B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A4359 +:40BC8000079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B1B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021CE9 +:40BCC0001A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F803000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE0B +:40BD0000099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B18000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019BF7 +:40BD400018002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002309930023079307AA16236B441B881100180000F03DF903000993099B002B01D063 +:40BD8000099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089916236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039B89 +:40BDC0000193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B18000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE0062396 +:40BE00000AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046AC01041082B002006B4606331A806B4606331B88180002B0704700B58BB002911B +:40BE400001920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B11001800F6F7ABFC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE09F +:40BE8000029B019A09980021F6F750FC03000893089B1800FFF7A6FF03000793079B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059331 +:40BEC00002AA059B11001800F6F778FC03000493049B072B01D1002300E00123180007B000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF0300A8 +:40BF000008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A019908980023F6F7BCFB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AA6D +:40BF4000089B11001800F6F739FC03000793079B1800FFF747FF03000993099B002B07D105AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F766FC20 +:40BF8000099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0300059302AA059B11001800F6F706FC03000493049B072B01D1002315E0059B0B +:40BFC0001800F6F743FC031E01D00C230DE002AA059B11001800F6F7F1FB03000493049B072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B46F1 +:40C0000006331B881800FFF70DFF0300079303AA079B11001800F6F7D1FB03000693069B1800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A6000231800D9 +:40C0400009B000BD00B585B0019000910199009AAE2358420B000021F6F768FB03000393039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F70EFB01 +:40C0800003000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F020 +:40C0C00015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D080225200934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E026 +:40C1000020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318059A920002998A1812781000059A9200013202998A181278120201001143059A71 +:40C140009200023202988218127812041143059A9200033202988218127812060A431A60059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2BCF +:40C1800000D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C321268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12020F +:40C1C0005140049A0C321268120EA548825C12045140049A0C321268FF200240A048825C12064A401A60049B1433049A04321168049A103212684A401A60049B1833049A14 +:40C2000008321168049A143212684A401A60049B1C33049A0C321168049A183212684A401A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B18332B +:40C24000049A1168854A0598800082585140049A14321268120AFF2002408148825C5140049A14321268120CFF2002407C48825C12025140049A14321268120E7848825CFD +:40C2800012045140049A14321268FF2002407448825C12064A401A60049B1C33049A04321168049A183212684A401A60049B2033049A08321168049A1C3212684A401A6014 +:40C2C000049B2433049A0C321168049A203212684A401A60049B2833049A10321168049A243212684A401A60049B2C33049A14321168049A283212684A401A60059B01331B +:40C300000593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A0598800082585140049A1C321268120AFF2002404A48825C5140049A1C3212687A +:40C34000120CFF2002404648825C12025140049A1C321268120E4248825C12045140049A1C321268FF2002403D48825C12064A401A60049B2433049A04321168049A20321F +:40C3800012684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A0C321168049A283212684A401A60049B3033049A10321168049A2C321268FF2089 +:40C3C00002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C321268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A40E7 +:40C400001A60049B3433049A14321168049A303212684A401A60049B3833049A18321168049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B1B +:40C4400001330593049B20330493059B062B00D861E7C0460023180007B000BDD4230410D401041000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9AD8 +:40C480005A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA944663441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D3184A +:40C4C0004C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112684B +:40C500001A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9A1268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825C96 +:40C5400010002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825851404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B24 +:40C5800004334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1DF2 +:40C5C0004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C04605AB1800FFF760FD4B9B180051B000BDD4FEFFFFD4010410D4130410D417041024 +:40C60000D41B0410D41F041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B18 +:40C640001A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A534090 +:40C680000A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00AE +:40C6C000029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C9239 +:40C700001A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9BA6 +:40C740001A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534016 +:40C7800006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B890090 +:40C7C000CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190E75 +:40C80000C24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40A8 +:40C84000049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B89009F +:40C88000CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF21194048 +:40C8C000914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0C50 +:40C90000FF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B3C +:40C940001B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB580C +:40C980005A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B7E +:40C9C0008900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF21BA +:40CA000019403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B688B +:40CA4000079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C9278 +:40CA80001B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1D95 +:40CAC0000C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E0F0 +:40CB0000D4020410D4060410D40A0410D40E0410D40104100C9B1A1D0C921B68049AFF210A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B407C +:40CB40003449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B2EB +:40CB80001A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A74 +:40CBC000120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70DA +:40CC0000019B0F33089A120ED2B21A70002318000FB000BDD401041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B044D +:40CC40001A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0634 +:40CC800013430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C925D +:40CCC0001B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B8E +:40CD00001B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40F3 +:40CD40000A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B89007A +:40CD8000CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF2119406B +:40CDC000D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0C33 +:40CE0000FF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A408D +:40CE4000059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B890083 +:40CE8000CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF21194037 +:40CEC000944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0A3C +:40CF0000FF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A68A6 +:40CF40000B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1DD5 +:40CF80000C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB585340069398 +:40CFC0000C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB58EA +:40D00000534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374B6E +:40D040008900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E02 +:40D080002749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B09 +:40D0C0001B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A4082 +:40D10000049B1B0E0649CB5C1B065340099309E0D4130410D4170410D41B0410D41F0410D41204100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B403E +:40D140003849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A98 +:40D18000120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A702A +:40D1C000019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120A8A +:40D20000D2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BDD412041000B585B00390029101920093029B012B07D1009A0199039B2D +:40D240001800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B58BB00390029101920093019B0F22134002D022235B4269E0029B002B62D131E02E +:40D280000C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B0D9AD318099A0D998A181178099A0098821812784A40D2B21A70099B0133099306 +:40D2C000099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019B103B0193019B002BCAD12EE00023099310E0099B0D9AD318099A0C998A181178FD +:40D30000099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990398FFF781FF0D99009B102218002AF05BFC0C9B10330C930D9B10330D93019B35 +:40D34000103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019B1B680693069B0F2B39D921235B423FE0069B002B1BD10A9B009A03980121FFF72A +:40D3800053FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B013B0793079B002BEEDC00E0C0460B9B5A1C0B921B7805930C9B5A1C0C92059A63 +:40D3C00051B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029B5A1E0292002BC3D1019B069A1A600023180009B000BD84B0039002910192029ADA +:40D40000039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B68591C039A11601B781A00019B1A608CE0039B1B681B781A007F231340022B1ED0AC +:40D4400002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC60235B427EE0039B1B6801331B781A00019B1A60039B1B689A1C039B1A6065E0029A7C +:40D48000039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B6802331B781A43019B1A60039B1B68DA1C039B1A604AE0029A039B1B68D31A032B02DC7C +:40D4C00060235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6803331B781A43019B1A60039B1B681A1D039B1A6029E0029A039B1B68D31A042BC7 +:40D5000002DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B1B6803331B781B021A43039B1B6804331B781A43019B1A60039B1B685A1D039B7C +:40D540001A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E00023180004B0704700B585B00390029101920093029A039B1B68D31A002B02DC3B +:40D5800060235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1C039B1A60019A0299039B1800FFF723FF0300180005B000BD00B587B003900291E0 +:40D5C000019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B08D0049B042B05D8039B1B681B785BB2002B02DA64235B4217E0019B00221A6088 +:40D600000DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B5A1E0492002BECD10023180007B000BD00B587B003900291019204AA029903981F +:40D640000223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F07DF903000593039B1A68049BD218039B1A60059B180007B000BD00B587B003905A +:40D6800002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019B1B68591E019A1160012B07D9039B1B68591C039A11601B78002B02D068235B4219 +:40D6C00000E00023180007B000BD00B587B0039002910192009304AA029903983023FFF743FF03000593059B002B01D0059B65E0029A039B1B68D31A002B02DC60235B4205 +:40D700005CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D029903980623FFF721FF03000593059B002B01D0059B43E0039B1A68019B9A60039B1A6872 +:40D74000019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F900232CE0039B1B681B781A00009B1A60039B1B685A1C039B1A60009B1A1D0299039B6B +:40D780001800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A68009B5B68D218039B1A60039B1A68029B9A4202D066235B4200E00023180007B0C3 +:40D7C00000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC6C235B42D3E0039B1B685A1E039B1A60039B1B68019AD2B21A700123C7E0019BBD +:40D80000FF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6881221A70022394 +:40D84000A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6854 +:40D88000019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B3D4A934234D8039B1B681A00029BD31A032B02DC6C235B4269E0039B1B685A1E43 +:40D8C000039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E7D +:40D90000039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B4234E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B76 +:40D940001A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039B1B68019A120ED2B21A70039B1B685A1E7A +:40D98000039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039002916B4607331A70039B1B681A00029BD31A002B02DC6C235B420BE0039B1B6883 +:40D9C0005A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039002910192009300230593039B1A68029B9A4208D3039B1B681A00029BD31A1A008C +:40DA0000009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B1B68059A019918002AF0DEF8059B180007B000BD00B587B0039002910192002397 +:40DA40000493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029BD31A1A00049B9A4202D26C235B4259E0039B1A68049B5B42D218039B1A60039B94 +:40DA80001968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B4232E0039BA3 +:40DAC0001B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF771FE03000593059B002B01DA059B19E0059B049AD31804930299039B0222180079 +:40DB0000FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E0C046059B180007B000BD00B585B001900091002303930099019B00221800FFF7A8 +:40DB400041FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800FFF71CFF03000293029B002B01DA029B04E0029B039AD3180393039B180005B077 +:40DB800000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF702FEAB +:40DBC00003000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF7DDFE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD98 +:40DC000000B587B0039002910192009300230593089B002B11D1029A039B11001800FFF784FF03000493049B002B01DA049B3CE0049B059AD318059303E0059A089BD3189A +:40DC40000593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF7AAFD03000493049B002B01DA049B15E0049B6D +:40DC8000059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD00B587B003900291019200230593039B79 +:40DCC0001B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039B1A60039B1B68019AD2B21A70019B002B1BDD039B1B681B785BB2002B15DA039B7B +:40DD00001B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B6800221A70059B01330593059A0299039B1800FFF747FD03000493049B002B01DA26 +:40DD4000049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD000000B58BB003900291FE +:40DD8000019200930023079300230893089B09936FE00023069305E0099B01330993069B01330693099A0C9B9A4205D2009A099BD3181B78202BEFD0099A0C9B9A425DD09B +:40DDC0000C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B780A2B40D0009A099BD3181B780A2B3CD0069B002B02D02C235B42D0E0009A099B66 +:40DE0000D3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3181B785BB2002B08DB009A099BD3181B781A005C4B9B5C7F2B02D12C235B42AEE03A +:40DE4000009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089B0133089302E0C04600E0C046099B01330993099A0C9B9A428BD300E0C046089B22 +:40DE8000002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07221A4013005B009B185B000733DB08CB180893089A079BD31A0893039B002B03D0E1 +:40DEC000029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893039B059351E0009B1B780D2B46D0009B1B780A2B42D0009B1B78202B3ED0009B96 +:40DF00001B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B781900204B5B5C19003F230B4013430693089B01330893089B042B20D1002308933B +:40DF4000079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C0592069A120AD2B21A70079B022B07D9059B5A1C0592069AD2B21A7000E0C046099BCD +:40DF8000013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A60002318000BB000BDFC23041000B583B001900091009B9A00019B1100180010F097FDC046FF +:40DFC00003B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6000E0C04602B0704700B583B00190019B002B1AD0019B9B68002B0CD0019B9A6828 +:40E00000019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00225A60019B00229A6000E0C04603B000BD00B585B001900091009B1E4A934202D99E +:40E0400010235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039B002B02D110235B4220E0019B9B68002B15D0019B9968019B5B689A00039B1800F3 +:40E0800029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B009A5A60019B039A9A600023180005B000BDC0461027000000B585B001900091A5 +:40E0C000019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D1E1 +:40E1000000E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FE03000293029B002B02D110235B421FE0019B9B68002B14D0019B9968039B9A005D +:40E14000029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F009FA019B039A5A60019B029A9A600023180005B000BD00B585B00190009100236D +:40E180000393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF002344E0009B5B68013B02930AE0009B9A68029B9B00D3181B68002B06D1029B013BA9 +:40E1C0000293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029B9A420BD2029A019B11001800FFF720FF03000393039B002B0ED016E0019B9A6883 +:40E20000029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968029B9B001A0029F0DFFC039B180005B000BD00B587B0039002916B4607331A7043 +:40E24000002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF7E1FE03000493049B002B54D1039B1B686A460732FF +:40E28000127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A12 +:40E2C0005143029A9068059A92008218126868460730007842438A181A60059B01330593029B5A68059B9A42DAD814E0039B9A68059B9B00D318039A9168059A92008A1897 +:40E3000012686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D800E0C046049B180007B000BD00B589B0039002916B4607331A70039A029B9A42C3 +:40E3400001D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF760FE03000793079B002B77D1039B5A68029BB3 +:40E3800011001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60029B1B686A46AC +:40E3C0000732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE0039B9A68069B9B00D3181B680493039B9A68069B9B00D318039A9168069A920002 +:40E400008A1812686946073109780120411A5143029A9068069A92008218126868460730007842438A181A60029B9A68069B9B00D318029A9168069A92008A181268694618 +:40E44000073109780120411A51436A4607321278049842438A181A60069B01330693039B5A68069B9A42BBD802E0C04600E0C046079B180009B000BD00B585B0019000913B +:40E48000019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00002129F033FC019B9B68009AD11752184A401A60009B002B02DA01235A4200E08A +:40E4C0000122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009B9A4201D800230EE0019B9A68009B5B099B00D3181A68009B1F210B40DA4013006E +:40E500001A0001231340180002B0704700B589B0039002916B4607331A7000230793029B5B090693029B1F22134005936B4607331B78002B07D06B4607331B78012B02D024 +:40E5400004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0069B5A1C039B11001800FFF761FD03000793079B002B25D1039B9A68069B9B0079 +:40E58000D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68069B9B00D318039A9168069A92008A1811686A4607321078059A904002000A435B +:40E5C0001A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049313E0019B9A68059B9B00D3181A68049BDA4013000122134001D0039B11E0049B20 +:40E6000001330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD80023180006B0704784B0019080231B0602930023039309E0019B029A134009D135 +:40E64000029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B585B00190019B5B68002B01D1002325E0019B5B68013B03930AE0019B9A68039B8D +:40E680009B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B9B00D3181B681800FFF7BEFF020020239B1A0293039B5A01029BD318180005B081 +:40E6C00000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039002916B4607331A70039BFF221A606B4607331B782F2B0BD96B4607331B78392B26 +:40E7000006D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B78462B06D86B4607331B78373B1A00039B1A606B4607331B78602B0BD96B4607334C +:40E740001B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D306235B4200E00023180004B0704710B58EB0039002910192029B012B02DD029B102B5F +:40E7800002DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B6BD10A9B6C4A934202D904235B42CFE00A9B9B005B090A9A92001F210A40511E74 +:40E7C0008A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E0039B00211800FFF747FE03000D930D9B002B00D09CE00A9B0C9300230B9338E035 +:40E800000C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9B013B019AD3181A78029908AB1800FFF755FF03000D930D9B002B00D07AE0039BD5 +:40E8400099680B9BDA089300CB180399896892008A18116808980B9A92001C242240904002000A431A600C9B013B0C930B9B01330B930C9B002BC3D165E0039B00211800D1 +:40E88000FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3181B782D2B04D1039B012252421A6035E0019A0C9BD3181A78029908AB1800FFF74F +:40E8C0000DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002B2ED1039B1B68012B0CD1089B1A0005A9039B180000F05CFD03000D930D9B002BEF +:40E900000CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B01330C930C9A0A9B9A42B4D30CE0C0460AE0C04608E0C04606E0C04604E0C04602E071 +:40E94000C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B0039002910192019B9B08019A03210A40511E8A41D2B29B180493039B5A68049B13 +:40E980009A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB03000793079B002B33D1039B00211800FFF762FD03000793079B002B2BD1019BCB +:40E9C00006930023059320E0039B9A68059B03218B43D318039A9168059A032082438A181168069A013A0298821812781400059AD20018200240944022000A431A60069B78 +:40EA0000013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD00B589B0039002910192039B1800FFF748FE03000593019A059B9A4202D20823C6 +:40EA40005B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079BD218039B9968069B03208343CB181968069BDB0018200340D9400B00DBB2137006 +:40EA8000079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BD00B589B00190009100230593009B5B090493009B1F2213400393019B1800FFF7FE +:40EAC000CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40511E8A41D2B29A18019B11001800FFF79FFA03000793079B002B6ED100230793B6 +:40EB0000049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A91680698049A821A2E488446624492008A1812681A60069B013B0693069A049B35 +:40EB40009A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B0693069B002BEFD1039B002B37D0049B06932DE0019B9A68069B9B00D3181A68039BCD +:40EB80002021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A181168039A91400A001A60019B9A68069B9B00D318019A9168069A92008A181168059A90 +:40EBC0000A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180009B000BDFFFFFF3F00B589B00190009100230693009B5B090593009B1F22134048 +:40EC00000493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B00211800FFF729FC030075E0059B002B2AD00023079310E0019B9A68079B9B00D318B5 +:40EC4000019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21A079B9A42E7D809E0019B9A68079B9B00D31800221A60079B01330793019B5A6850 +:40EC8000079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C4663449B00D3181A68049B2021CB1A9A4013000393019B9A68079B18498C4663449B00F5 +:40ECC000D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A68079B0E498C4663449B00D318019A9168079A0A488446624492008A181168069A6E +:40ED00000A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F84B001900091019B5B6803930DE0019B9A68039B39498C4663449B00D3181B689B +:40ED4000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B2E498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0C9 +:40ED8000C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A039B9A4232D901235B4233E0019B9A68039B1A498C4663449B00D3181A68009BF4 +:40EDC0009968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4202D20B +:40EE000001235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F84B001900091019B5B6803930DE0019B9A68039B45498C4663449B00D3181B68E9 +:40EE4000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B3A498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0BC +:40EE8000C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0029A039B9A4203D9009B1B685B424AE0019B1B68002B05DD009B1B68002B01DA4F +:40EEC000012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039B1A498C4663449B00D3181A68009B9968039B1648844663449B00CB181B689A423C +:40EF000002D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4203D2019B1B685B4206E0039B013B0393039B65 +:40EF4000002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B1853400293009B002B02DA01235A4200E0012203AB1A6003AB01225A6003AB02AA9A6008 +:40EF800003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A019B9A4205D1029B0593039B0293059B0193039A029B9A420BD0029A039B1100A3 +:40EFC0001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0019B9A68099B47498C4663449B00D3181B68002B06D1099B013B0993099B002BBF +:40F00000EED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B680893039B9B6807930023069300230A932AE0089B1B680493079B1A68069BD218AF +:40F04000079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A60079B1A68049B9A429B415B42DBB21A00069B9B1806930A9B01330A93089B04336F +:40F080000893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C039B11001800FEF7C3FF03000B930B9B002B21D1039B9A680A9B9B00D318079345 +:40F0C000079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B01330A93079B04330793069B002BD1D104E0C04602E0C04600E0C0460B9B18000DB07B +:40F1000000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60019B1A68029B1B689A4249 +:40F140009B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B01330793029B04330293019B04330193079A039B9A42D1D312E0019B1A68069B9A427F +:40F180009B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069B002BE9D1C04608B07047000000B58BB0039002910192019A029B11001800FFF755 +:40F1C000AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05AB11001800FEF7C7FF03000993099B002B35D105AB0193039A029B9A420AD0029A54 +:40F20000039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019B5B6808930DE0019B9A68089B11498C4663449B00D3181B68002B06D1089B013B19 +:40F240000893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C04600E0C04605AB1800FEF7BEFE099B18000BB000BDFFFFFF3F00B587B00390029174 +:40F280000192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF73FFD031E0EDB019A0299039B1800FFF77DFF03000593059B002B22D1039B049A75 +:40F2C0001A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF752FE03000593059B002B07D1039B049A1A608A +:40F3000004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DD019A029B11001800FFF7F1FC031E26 +:40F340000EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF720FF03000593059B002B15D1049B5A42039B1A6013E0EF +:40F38000019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B589B0039002910192019BDA179B18AA +:40F3C00053400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF745FF0300180009B000BD00B589B0039002910192FC +:40F40000019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF770FF0300180009B000BD70B5064C80 +:40F44000A54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131D96931368009300230193949B029300230393029A039B009801992CF09BFC0300DB +:40F480000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959BAF +:40F4C0001A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368069300230793949B089300230993089A099B0698079928 +:40F500002CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19BC0 +:40F540009B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313680C9300230D93949B0E9300230F930E9A54 +:40F580000F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B00109300231193109BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A0936B +:40F5C000959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368129300231393949B149341 +:40F6000000231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00169300231793169BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00B2 +:40F64000A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313681893002315 +:40F680001993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BA193A39B1B001C9300231D931C9BA093A19AA59BD318A193A19AA59B9A429B4101 +:40F6C0005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96939A +:40F7000013681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00A293A394A29BA193A39B1B00229300232393229BA093A19AA59BD318A193A19A30 +:40F74000A59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360AA +:40F78000969A131D96931368249300232593949B269300232793269A279B249825992CF009FB03000C00A293A394A29BA193A39B1B00289300232993289BA093A19AA59B82 +:40F7C000D318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131DA7 +:40F800009593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9B2A982B992CF0C6FA03000C00A293A394A29BA193A39B1B002E9300232F932E9BDA +:40F84000A093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09B0F +:40F88000A593959A131D9593A19B1360969A131D96931368309300233193949B329300233393329A339B309831992CF083FA03000C00A293A394A29BA193A39B1B0034937E +:40F8C00000233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09BF6 +:40F900009B18A093A09BA593959A131D9593A19B1360969A131D96931368369300233793949B389300233993389A399B369837992CF040FA03000C00A293A394A29BA1930F +:40F94000A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B4225 +:40F98000DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313683C9300233D93949B3E9300233F933E9A3F9B3C983D992CF0FDF903000C00A29369 +:40F9C000A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B39 +:40FA000093429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368429300234393949B449300234593449A459B429843992CF0BAF9F1 +:40FA400003000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A19350 +:40FA8000959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368489300234993949B4A9300234B934A9A4B9B489804 +:40FAC00049992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A6873 +:40FB0000A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313684E9300234F93949B509300235193F2 +:40FB4000509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B00529300235393529BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B1846 +:40FB8000A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368549300235593949B6B +:40FBC000569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39B1B00589300235993589BA093A19AA59BD318A193A19AA59B9A429B415B42DBB2F2 +:40FC00001A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313685A9316 +:40FC400000235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A394A29BA193A39B1D0000231E002B00A093A19AA59BD318A193A19AA59B9A429B41F9 +:40FC80005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360979B103B9793B6 +:40FCC000979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B609300236193609A619B5E985F992CF063F803000C009E939F949E9B9D939F9B1B00629344 +:40FD000000236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B7D +:40FD40009B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593949B669300236793669A679B649865992CF020F803000C009E939F949E9B9D9399 +:40FD80009F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B427F +:40FDC000DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313686A9300236B93949B6C9300236D936C9A6D9B6A986B992BF0DDFF03000C009E93E4 +:40FE00009F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B9E +:40FE400093429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368709300237193949B729300237393729A739B709871992BF09AFF68 +:40FE800003000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93B6 +:40FEC000959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368769300237793949B789300237993789A799B769892 +:40FF000077992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A68BD +:40FF40009D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313687C9300237D93949B7E9300237F9312 +:40FF80007E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B00809300238193809B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B1803 +:40FFC0009C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368829300238393949BEB +:020000041001E9 +:40000000849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B1B00869300238793869B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB24E +:400040001A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313688893C8 +:4000800000238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949E9B9D939F9B1B008C9300238D938C9B9C939D9AA59BD3189D939D9AA59B9A4273 +:4000C0009B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360979B083BEC +:400100009793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B909300239193909A919B8E988F992BF043FE03000C009A939B949A9B99939B9B1B0092931A +:4001400000239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B9B189893959B1B68999AD3189993959B1B68999A9A429B415B42DBB21A00989BC2 +:400180009B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49B0133A493959B1A68A59BD218959B1A60959B1A68A59B9A429B415B42DBB2A59303 +:4001C000959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB003900291019208AB1800FDF7EDFE05AB1800FDF7E9FE039A029B9A420DD1029A08AB11006E +:400200001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A05AB11001800FDF7A6FF03000D930D9B002B00D06EE005AB0193029B5B680C9338 +:400240000DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B002BEED100E0C046019B5B680B930DE0019B9A680B9B30498C4663449B00D318A4 +:400280001B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11001800FDF7C5FE03000D930D9B002B33D1039B00211800FEF7DFF803000D930D9BA7 +:4002C000002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9B1548844663449B00D3181B680C982200FFF7A4F80B9B013B0B930B9B002BE2D12A +:40030000029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB1800FDF761FE08AB1800FDF75DFE0D9B18000EB010BDC046FFFFFF3F00B589B076 +:4003400003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299039B1800FFF738FF0300180009B000BDF0B58BB00590049103920293039B002BA4 +:4003800003D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059B1E0000231F003300079300230693049B1C0000231D00069B23430693079B2B4305 +:4003C0000793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B002B04D001235B42002408930994029B002B06D0069A089B03994B43D21A029B86 +:400400001A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF797FD031E02D10C235B42D1E210AB1800FDF7C8FD0DAB1800FDF7C4FD0AAB180018 +:40044000FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC031E1EDA039B002B0AD0039B00211800FEF702F803001793179B002B00D05DE219 +:40048000029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E2002396E2019A10AB11001800FDF764FE03001793179B002B00D044E2009A0DAB1100F5 +:4004C0001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60019B5B689A1C0AAB11001800FDF7A0FD03001793179B002B00D027E20AAB0021A3 +:400500001800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD03001793179B002B00D015E204AB03211800FDF77FFD03001793179B002B00D00CE20DAB89 +:400540001800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB11001800FEF79CFA03001793179B002B00D0F3E1159A0DAB11001800FEF790FADE +:4005800003001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B1393149A139BD31A5A010DAB11001800FEF777FA03001793179B002B00D0D0E115E07D +:4005C0000AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE03001793179B002B00D0BBE10DAA10AB11001800FEF714FC031EE1DA149A139BB1 +:40060000D31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE110AB9A68169B9B00D3181A680DAB9968139B9B00CB181B689A420DD30AAB9A68FF +:400640001699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139BCB1ACD498C4663449B00D41810AB9A68169B9B00D318186810AB9A68169BC649E8 +:400680008C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE030023600AAB9A681699139BCB1ABB498C4663449B00D3181A6801321A600AAB9A681699B2 +:4006C000139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE03001793179B002B00D040E107AB9B68139A002A09D00DAA9168139AA74884466244EE +:4007000092008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A600AAB9A681699139BCB1A9B498C4663449B00D3181A6807A907AB1800FFF7FEFD55 +:4007400003001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D008E104AB9B68169A012A09D910AA9168169A8A488446624492008A18126800E0DD +:4007800000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A18126800E000221A6004AB9B68083310AA9168169A92008A1812681A6004AA07AB64 +:4007C00011001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B00D3181A680DA907AB1800FFF7A7FD03001793179B002B00D0BEE0169A139BD31ACB +:40080000674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA10A910AB1800FEF775FD03001793179B002B00D0A4E010AB00211800FEF788FB45 +:40084000031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139BD31A4F4A944663445A0107AB11001800FEF716F903001793179B002B00D083E009 +:4008800007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139BCB1A3D498C4663449B00D3181A68013A1A60169B013B1693169A139B9A4200D903 +:4008C000AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B1A68009B1B685A43039B1A60029B002B59D0159A10AB11001800FEF775F9030070 +:400900001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC03001793179B002B3ED1029B00211800FEF710FB031E38D1029B01221A6034E0C04632E02B +:40094000C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E007 +:40098000C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FFFFFFF07C04610AB1800FDF71DFB0DAB1800FDF719FB0AAB1800FDF715FB07ABD6 +:4009C0001800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B0039002910192019B00211800FEF7B2FA031E02DA0A235B4238E0019B029A03990020FFF7D3 +:400A000005FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B002B1DD1039B00211800FEF791FA031EEDDB0AE0019A0399039B1800FEF76AFC99 +:400A400003000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E0C04600E0C046059B180007B000BD86B001900091009B9B681B680393039B0593EE +:400A8000039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A059B53430593049B5B080493049B072BF1D8059B5A42019B1A60C04606B07047FC +:400AC00000B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B02D104235B426EE00C9B98680C9B5B689B001A00002127F009F90C9B9B6808930D +:400B0000019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099B9B00D3181B680593089B1A68029B9B681B6805994B43D318009A53430493029BEC +:400B40009968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D0892059A1A60079B01339B00089AD31800221A60099B01330993099A079B9A42CCD3F1 +:400B8000039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031E08DB019B9968039B9A68079B1800FEF7ABFA07E0039B99680C9B9A68079B1800A3 +:400BC000FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0006AB1A6006AB1B681A0006AB5A6006AB09AA9A60039C049A06A90598029B0093E5 +:400C00002300FFF75DFF030018000AB010BD000010B5B24CA54405900491039202930123AF4A6A441360029B00211800FEF790F9031E05DD029B9B681B680122134003D19B +:400C400004235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029AA04B6B4411001800FFF701FFC623DB006B441800FDF7A6F99B4B6B441800FDF713 +:400C8000A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC0300CC22D2006A441360CC23DB006B441B688E4A934219D8CC23DB006B441B6855 +:400CC000EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0012304E0042302E0052300E00623804A6A4413607E4B6B441B68062B03D9062318 +:400D00007B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B11001800FDF785F90300724A6A441360714B6B441B68002B01D000F0E1FBC923DB00CB +:400D40006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002B01D000F0CEFBC923DB006B441B685A005D4B6B4411001800FDF75AF903005D4A97 +:400D80006A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A6A441360544B6B441B68002B19D0049A06AB11001800FDF7DEF903004D4A6A4455 +:400DC00013604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB0493CF23DB006B441B68002B06D0CF23DB006B441B689B68002B4AD1C623DB00C4 +:400E00006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B5B689A01C623DB006B4411001800FDF737FE03002F4A6A4413602E4B6B441B68EA +:400E4000002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A441360244B6B441B68002B00D053E3CF23DB006B441B68002B16D0C621C900694427 +:400E8000CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B440C22180026F0A0FE029A049B11001800FDF7B6FF031E23DB029A049909AB0C3381 +:400EC0001800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF4C0600003C060000240600009F020000640600006C06000044060000A8F9FFFF71 +:400F0000049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0FBE2E24B6B441C68029AC621C900694409AB0C331800DE4B6B4400932300FFF762 +:400F4000BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11001800FDF708F90300CF4A6A441360CE4B6B441B68002B00D0D3E2CC4B6B441A68B5 +:400F8000CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E2C44B6B441B68012B00D800E1C14B6B441B68013BC04A6A4412689A401300C92262 +:400FC000D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013319001000FDF724F80300AF4A6A441360AD4B6B441B68002B00D096E209A9C92391 +:40100000DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A6A441360A04B6B441B68002B00D07EE20023CC22D2006A44136030E009A9C92317 +:40104000DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B189B00C918914B6B441C68029A904B6B4400932300FFF724FD03008B4A6A44136086 +:40108000894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B6B441B685A1ECC23DB006B441B689A42C4D8C923DB006B441B680133CC22D2000F +:4010C0006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013319001000FCF7A4FF03006F4A6A4413606D4B6B441B68002B00D01CE209A9CC238A +:40110000DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B009B189B00CB181900FDF725F803005E4A6A4413605C4B6B441B68002B00D0FCE19B +:4011400009A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C331900534B6B4400932300FFF7A9FC03004D4A6A4413604C4B6B441B68002B00D08E +:40118000DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B689A40CC23DB006B441B689A428BD8039B5B68424A6A4413600023CB22D2006A4426 +:4011C000136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23DB006B441B68002B11D1344B6B441B68002B00D1F5E0314B6B441B68013B2F4ABC +:401200006A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A441360039B9A68254B6B441B689B00D3181A68CB23DB006B441B68DA401300012213406B +:40124000C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D1BBE0C823DB006B441B68002B2AD1CA23DB006B441B68012B24D10C4B6B441C6843 +:40128000029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B68002B00D19BE055E16C0600003C06000024060000640600004C0600005C060000F9 +:4012C000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B441A68C94B6B441B68D31AC822D2006A4412689A401300CD22D2006A441268134350 +:40130000CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2006A4413601EE0BA4B6B441C68029A05990598B84B6B4400932300FFF7C1FB030032 +:40134000B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A68A74B6B441B689A42D7D309A9CD23DB006B441A68E6 +:4013800013005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FB03009D4A6A4413609B4B6B441B68002B00D0C8E0CA23DB006B441B68013BCA2280 +:4013C000D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046FDE6C0460023CC22D2006A4413604DE0874B6B441C68029A05990598854B6B448A +:4014000000932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB006B441B685B00CD22D2006A4413607B4B6B441A68754B6B441B689A401300CD224A +:40144000D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B4400932300FFF72DFB03006B4A6A4413606A4B6B441B68002B00D069E0CC23DB006B444B +:401480001B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4B6B441A685B4B6B4402990598FFF78EFB0300594A6A441360574B6B441B68002BBF +:4014C00047D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D0059B012252421A60059A0299059B1800FDF7C2FE0300484A6A4413602AE0C04647 +:4015000028E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C046BB +:4015400008E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A4412689A401300CC22D2006A44136015E009A9CC23DB006B441A6813005B009B18C1 +:401580009B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B441A681A4B6B441B689A40CC23DB006B441B689A42DCD809AB0C331800FCF714FDBE +:4015C000144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF23DB006B441B689B68002B05D1C623DB006B441800FCF7F8FC074B6B441B681800F1 +:40160000CE23DB009D4410BD54060000640600003C060000240600006C0600004C0600004406000000B591B00390029101920AAB1800FCF7C7FC07AB1800FCF7C3FC04AB95 +:401640001800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A04AB11001800FCF786FD03000F930F9B002B00D09FE007AB1800FCF7A8FF0300BF +:401680000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001800FDF7A1FA03000F930F9B002B00D083E00E9A04AB11001800FDF795FA03007E +:4016C0000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF776FF020007AB11001800FDF77DFA03000F930F9B002B64D104AB1800FCF767FF28 +:40170000020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF77FFB031E15DB04AA07A907AB1800FDF73DFD03000F930F9B002B46D107AB01210E +:401740001800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD03000F930F9B002B32D104AB01211800FDF73BFA03000F930F9B002B2AD107AB00217D +:401780001800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD104AA039B11001800FCF7E5FC03000F9312E0C04610E0C0460EE0C0460CE0C0468B +:4017C0000AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FC07AB1800FCF700FC04AB1800FCF7FCFB0F9B180011B000BD80B51B4FBD440390CA +:40180000029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B98470300FFAA18321360FFAB18331B68002B0AD1029A05A9039B1800FDF78FF8030095 +:40184000FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B6818008323DB009D4480BDE8FBFFFF00B5A1B0039002910192019B01211800FDF768FB8A +:40188000031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF791FB10AB1800FCF78DFB1CAB1800FCF789FB0DAB1800FCF785FB0AAB1800FCF7BA +:4018C00081FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE03001F931F9B002B00D086E11CAB01211800FDF72EFB031E03D00E235B421F93AEE16B +:40190000019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800FCF729FC03001F931F9B002B00D067E1019A0DAB11001800FCF71DFC03001F93D1 +:401940001F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E113AB01211800FCF787FD03001F931F9B002B00D04AE110AB00211800FCF77CFDF9 +:4019800003001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D038E104AB01211800FCF766FD03001F931F9B002B00D02FE144E016AB01211800F4 +:4019C000FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B681B680122134017D00DAA13A913AB1800FDF742FC03001F931F9B002B00D00FE175 +:401A000019AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7E3F803001F931F9B002B00D0FCE010AB01211800FDF7D8F803001F931F9B002B33 +:401A400000D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F931F9B002B00D0E3E007AB9B681B680122134005D104AB9B681B680122134017D07A +:401A80000DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800FDF738FC03001F931F9B002B00D0C3E007AB01211800FDF797F803001F931F9BAF +:401AC000002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B681B6801221340B4D00AAA16AB11001800FDF796F9031E23DB0AAA16A916AB180034 +:401B0000FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F931F9B002B00D08FE004AA10A910AB1800FDF7F0FB03001F931F9B002B24D08EE0AE +:401B400016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800FDF7D8FB03001F931F9B002B00D06FE010AA04A904AB1800FDF7CCFB03001F933A +:401B80001F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907AB1800FDF769FB03001F931F9B002B53D107AB00211800FDF7CBF9031EEDDB0AE0AD +:401BC000019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF71FF9031EECDA07AA039B11001800FCF7C2FA03001F9332E0C04630E0C0462EE00F +:401C0000C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE074 +:401C4000C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB1800FCF7C1F916AB1800FCF7BDF913AB1800FCF7B9F910AB1800FCF7B5F91CAB29 +:401C80001800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB1800FCF7A1F91F9B180021B000BD00B583B00190019B44220021180026F026F8AD +:401CC000C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B780122180001F07AF903000593059B002B02D10D235B4225E0059B5B69102B02D018 +:401D00000D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049B002B01D0049B0DE00398009A0199012301F0F0F903000493049B002B01D0049B10 +:401D400000E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0C5FEC04603B000BD00B59DB00590049103920293249B022B06D0249B102B03D8FE +:401D8000249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E2209AFF231B029A4202D90D235B42ABE21E9BDAB25F236B440F218A1A1A700FAB26 +:401DC00000221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A700FAB1A78249B023B5B08DBB2DB00DBB21343DAB20FAB1A700FAB1B785AB25F23ED +:401E00006B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F0E3FE6F236B4400221A70039B1A9312E06F236B441B780F22D31A1A9AD1B20FAAFC +:401E4000D1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B4412781B789A42E4D31A9B002B02D00D235B424AE20BAB10220021180025F047FF6F230C +:401E80006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B76 +:401EC000E2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169B12E2209B002B00D1A6E0209B1A931F9B19930FAB10220021180025F007FF209BA9 +:401F00001B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A1999180025F060FE1A9A159BD31A1A93199A159BD31819936F236B4400221A7081 +:401F400017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA03 +:401F80000BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B00D9102315930FAB10220021180025F0ADFE159A19990FAB180025F015FE6F23F5 +:401FC0006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B35 +:40200000E2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B72E11A9A159BD31A1A93199A159BD31819931A9B002BB1D15F236B441B78013B54 +:40204000DAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B441B781A00002125F051FE07AB0122DA73039B1A93219B1993229B1893EBE01A9BC5 +:40208000102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FAB180025F0A1FD6F236B4400221A7017E06F236B441B786F226A4412780BA9895CEA +:4020C0006F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0E0F803001693F0 +:40210000169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F803001693169B002B01D0169BEEE06F236B4400221A7019E06F236B441B78189AD3186F224E +:402140006A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A786F236B4401321A706F236B441A78149B9A42DFD3049B012B3DD10FAB102200218D +:40218000180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F23D3 +:4021C0006B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F06AF803001693169B002B01D0169B88E0189A149BD3181893199ACC +:40220000149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F22D31A07AAD25C0132D1B207AAD15407AAD35C002B00D00EE06F236B441A786F23ED +:402240006B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F236B4400221A700EE06F236B441B780F22D31A07AA0021D1546F236B441A786F2307 +:402280006B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB00931300102201F00AF803001693169B002B01D0169B28E06F236B4400221A7017E009 +:4022C0006F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D9249A0BA9239B99 +:40230000180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98139B0693129B0593119B0493109B03930F9B02930E9B0193089B00930B00002109 +:40234000FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B019331 +:402380000C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A910992089309990A9A0B981B9B06930DAB0593199B0493189B0393179B0293169B0193089B009323 +:4023C0000B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400221A7017E04F236B441B781A9AD3181A784F236B441B780DA9CB5C5340DBB21A00A6 +:40240000129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3129B002B08D00A9A199B110018000CF05DFB0F235B4200E00023180015B000BD79 +:4024400010B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF78AFF0300EB +:4024800018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A1830 +:4024C0001168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681021CA411A60009B9B00039AD318009A920003998A181168049A92000398B6 +:40250000821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681421CA411A608B +:40254000029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A181168029A92000398821812684A401A6034 +:40258000049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD318009A920003998A181168049A92000398821812688A181A60019B9B00039AD31858 +:4025C000019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681921CA411A60C04604B0704700B585B0039003980C23FD +:402600000093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300930A2306220221FFF72DFF03980F2300930B2307220321FFF725FF03980F23AB +:4026400000930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D230093082307220221FFF70DFF03980E230093092304220321FFF705FFC04605B000 +:4026800000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB1800FFF7A9FF139B01331393139B092BF5D902AB1A68019B1B68D21802AB1A6002AB72 +:4026C0005A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002ABDA68019B0C331B68D21802ABDA6002AB1A69019B10331B68D21802AB1A6102AB68 +:402700005A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABDA69019B1C331B68D21802ABDA6102AB1A6A019B20331B68D21802AB1A6202ABDF +:402740005A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202ABDA6A019B2C331B68D21802ABDA6202AB1A6B019B30331B68D21802AB1A6302AB57 +:402780005A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABDA6B019B3C331B68D21802ABDA63002313932FE0139B9B001293009A129BD3185E +:4027C00002AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B21A70129B0233009AD31802AA139989008A58120CD2B21A70129B0333009AD318F7 +:4028000002AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB402118000CF064F9C04615B000BD00B583B00190019B002B0ED0019B402118000CF056F90D +:40284000019B4033402118000CF050F9019B802240219950C04603B000BD00B583B00190019B002B04D0019B842118000CF03EF9C04603B000BD000082B001900091019B87 +:40288000002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A9A60019B594ADA60009B1B781A00009B01331B781B021A43009B02331B781B04D0 +:4028C0001A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B021A43009B06331B781B041A43009B07331B781B061A43019B5A61009B08331B789A +:402900001A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43019B9A61009B0C331B781A00009B0D331B781B021A43009B0E331B781B041A43D7 +:40294000009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43009B12331B781B041A43009B13331B781B061A43019B1A62009B14331B781A0093 +:40298000009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019B5A62009B18331B781A00009B19331B781B021A43009B1A331B781B041A43009BCD +:4029C0001B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009B1E331B781B041A43009B1F331B781B061A43019BDA620023180002B07047C046D6 +:402A0000657870616E642033322D62797465206B00B585B0039002910192039B002B02D0029B002B02D151235B424BE0039B019A1A63029B1B781A00029B01331B781B028F +:402A40001A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B061A43A9 +:402A8000039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B061A43039BDA63039B4033402118000CF019F8039B8022402128 +:402AC00099500023180005B000BD10B586B0039002910192009300230593039B002B02D151235B423BE1029B002B27D0019B002B02D0009B002B21D151235B422FE1009AAA +:402B0000059BD3180199059A8A181178039A80201258039840248218121912784A40D2B21A70039B80229B585A1C039B80215A50059B01330593029B013B0293029B002BE5 +:402B400000D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039B1B6B5A1C039B1A6300230493B7E0059A049BD318009AD3180599049A8A18019949 +:402B80008A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AD3180599049A8A18013201998A181178049A0132039840248218121912784A4005 +:402BC000D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049A0232039840248218121912784A40D2B21A70059A049BD3180333009AD3180599D3 +:402C0000049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70059A049BD3180433009AD3180599049A8A18043201998A181178049A0432039874 +:402C400040248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18053201998A181178049A0532039840248218121912784A40D2B21A70059A049B50 +:402C8000D3180633009AD3180599049A8A18063201998A181178049A0632039840248218121912784A40D2B21A70059A049BD3180733009AD3180599049A8A18073201993B +:402CC0008A181178049A0732039840248218121912784A40D2B21A70049B08330493049B3F2B00D843E7059B40330593029B403B0293029B3F2B00D92AE7029B002B2DD062 +:402D0000039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A049BD318009AD3180599049A8A1801998A18117803984024049A8218121912786E +:402D40004A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A500023180006B010BD10B588B00190019BD0335C681B681A000F2313400793079B002B01D1F4 +:402D8000002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB19000CF086F90300180008B010BD10B582B00190019B002B1ED0019B1800FFF735FDF1 +:402DC000019B843318000CF057F9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019BE42200219954C04602B010BD10B582B0F2 +:402E00000190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019B49 +:402E4000E42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D157235B4208E0019B009A11001800FFF703FD03000393039B180005B000BD70B541 +:402E800086B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002B02D0009B002B02D157235B426AE0039BE0229B58012B07D0039BE0229B58022BFE +:402EC00002D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF741FF03000593059B002B01D0059B49E0039BD8335C681B68029A150000221600A0 +:402F00005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF7D4FD03000593059B002B01D0059B29E0039B8433029A009918000CF0B9F8030084 +:402F40000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059B002B01D0059B0DE00398009B019A0299FFF7ABFD03000593059B002B01D0059B80 +:402F800000E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0019B1B685B69180002B0704782B00190019B002B03D0019B1B68002B01D1002395 +:402FC00009E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B0009111006B460733021C1A706B4606330A1C1A70144B03931CE0039B5B689B691B78F6 +:403000006A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A46063212789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B0B5 +:403040007047C046E027041000B583B00190019B44220021180024F059FEC04603B000BD00B583B00190019B002B20D0019B1B6C002B0AD0019B1B6C242118000BF036FDDD +:40308000019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B18009047019B442118000BF020FD00E0C04603B000BD00B583B001900091009B002B9F +:4030C00002D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB6998470200019BDA63019BDB6B002B01D1084B08E0019B009A1A60019B0021180000F07C +:4031000015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A006B4603331A70039B002B07D0039B1B68002B03D0039BDB6B002B01D1304B5CE080 +:403140006B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B681B690222134008D1039B1B685B681A00019B9A4201D0224B3FE0039B019A5A60E5 +:40318000039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D0039B1B685B78042B04D0039B1B685B78052B0DD1039B1B689B695C69039BD86B26 +:4031C000039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B689B699C69039BD86B039B5B681A00029B1900A047030000E0014B180004B010BD45 +:40320000009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0029B002B04D1019B002B01D0214B3EE0029B002B05D1019B002B02D1039B002245 +:403240009A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B1B68DB680593059A019B9A4201D9114B1DE0039B1B681B78482B0AD1039BDB6BF4 +:40328000029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299180024F0A1FC039B059A9A630023180007B000BD009FFFFF809FFFFF70B58CB0AE +:4032C000079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D1C84B8BE1109B00221A60079B1800FFF74CFE03000A93079B1B685B78012B1DD1D3 +:40330000059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B08215956049B069AA04703000993099B002B01D0099B61E100235FE1079B1B6857 +:403340005B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B1B681B78492B0BD1109B059A1A60079BD86B049B069A0599FFF781FD03003DE1A8 +:403380000A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A99180028F09CFB0B1E01D0964B27E1079B1B685B78022B00D0DDE000230B93079B1B7A6E +:4033C0005BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7A5BB2002B0AD1079BDB68002B06D1079B5B6A0A9AD21A059B9A420BD8079B1B7AB6 +:403400005BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433059A0699180024F0DFFB079B5A6A059BD218079B5A620023E0E0079B5B6A002B97 +:4034400040D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F0C3FB079B1B689B699C68079BD86B079B08215956079B28331E00079B14330A9DD4 +:40348000049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9BD218109B1A60049A0A9BD3180493079B00225A62069A0B9BD3180693059A0B9B5C +:4034C000D31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B000B930B9B002B0AD1079B1B7A5BB2002B05D1079BDB68002B01D00A9B0B93079B03 +:4035000014331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B5A62059A0B9BD31A0593059B002B1FD0079B1B689B699C68079BD86B079B082184 +:403540005956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0099B4BE0109B1A68059BD218109B1A60002343E0079B1B685B78052B22D1079B7D +:403580001B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A0292069A0192009333002A00A04703000993099B002B01D0099B20E0109B059A1A60C0 +:4035C00000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A0599A04703000993099B002B01D0099B05E0109B059A1A60002300E0054B18000CB093 +:4036000070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019BD31A049317236B4400221A7010E017236B441A78019BD318039AD318049AD2B28C +:403640001A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B07047000088B00390029101921B236B4400221A70039B002B02D0019B002B01D1BD +:40368000344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B1A601A236B441B78029A9A429B415B42DBB25AB21B236B441B785BB213435AB2D2 +:4036C0001B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B78029AD31A0593002307931EE0039A079BD3181A788E +:403700001A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B236B441B785BB213435AB21B236B441A70079B01330793079A029B9A42DCD31B23FF +:403740006B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039002910192039B002B02D0019B002B01D1044B03E0019B029A1A600023180004B006 +:403780007047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D0039B002B01D15E4BB7E0039B00221A60059B1B685B78032B18D0059B1B685B78BB +:4037C000042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B04D0059B1B685B78072B01D1002394E0059B1B681B78482B04D0059B1B681B7871 +:40380000492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE000237BE0059B1B685B78022B00D074E000230793059B1B7A5BB2012B1CD1059BDB68B2 +:40384000002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B1800FFF7A3FB03001900059B5B6A1A002800A04714E0059B1800FFF786FB0200B8 +:40388000059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE0059B1B689B699C68059BDD6B059B08269E57059B1800FFF768FB059B28331900E2 +:4038C000059B1433049A019200930B00020031002800A04703000793079B002B01D0079B1BE0059B1B7A5BB2002B0CD1059B1C69059B1800FFF749FB0100039A049B180042 +:40390000A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD009FFFFF809DFFFF809FFFFF82B001900A006B4603331A70019B002B04D0019B1B +:403940001B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4ADA60019B094A1A6108E0019B0022DA60019B074A1A6101E0064B00E0002318000F +:4039800002B07047009FFFFF15360110653601105D370110809FFFFF00B583B0C8235B001900012023F062FA03000193019B002B03D0019B180007F0F8F9019B180003B02C +:4039C00000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B583B04421012023F041FA03000193019B002B03D0019B1800FEF759F9019B1800C2 +:403A000003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD00B585B00390019200930B236B440A1C1A700B236B4400215956009B019A0398CA +:403A4000F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B4400215956029C039A0598099B0193089B00932300F9F7F2FB0300180006B0C1 +:403A800010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B00932300F9F755FC0300180008B010BD00B585B0039002910192019A0299039B3A +:403AC0001800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B1800F8F7F4FA0300180005B000BD00B583B08C235B001900012023F0B8F903000193E7 +:403B0000019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190019B1800F8F7C0FA019B180023F022FDC04603B000BD00B585B003900291019291 +:403B4000019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B029A03980221FEF7AEF80300180005B000BD000000B585B0039002910192019A54 +:403B800080235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E00023180005B000BD009FFFFF00B587B00390029101920093009B019A029903984B +:403BC000FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF00B583B08421012023F040F903000193019B002B01D1002304E0019B1800FEF7E6 +:403C000014FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFCC04603B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE005 +:403C4000029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFF00B583B0E821012023F000F903000193019B002B01D1002304E0019B1800FFF78A +:403C800095F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFCC04603B000BD000088B003900291019217236B4487221A7016236B441B221A7027 +:403CC0001E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B06D11F236B4416226A4412781A7001E0224B3FE0019B013B06931BE0069B039AFB +:403D0000D318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B029AD3181A781E236B44D2091A70069B013B0693069B002BE0DA029B1B785BB2B9 +:403D4000DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4415206844127800780240D2B24A40D2B21A700023180008B07047C046009FFFFF60 +:403D800010B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9A08A9059807AB00932300FFF787FA03000D930D9B002B13D10C9A08A9049B18002C +:403DC000FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E0C04600E0C04608AB102118000AF07EFE0D9B18000EB010BD86B003900291019299 +:403E000000930023059310E0039A059BD3180299059A8A1811780198059A821812784A40D2B21A70059B01330593059A009B9A42EAD3C04606B0704786B003900291019222 +:403E40000093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A700EE0059A009B9A4205D1039A059BD31880221A7004E0039A059BD31800221A7009 +:403E8000059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039B002B06D0039B1B68002B02D0029B002B01D11C4B32E0019A029903980123FFF7FA +:403EC00029F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B441B78022B03DB042B03DD242B01D00D4B14E0C0462421012022F0B8FF03000593C7 +:403F0000059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B000BDC046009FFFFF809EFFFF10B58EB005900491039200230D93059B002B0AD08B +:403F4000059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93059B1B685B690A93059B1B6C09930B9B1B6A002B3AD00B9B1B6A0A9AD21A039B91 +:403F80009A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B103319000A9B099A0998FFF725FF099C0A9A0999059807AB00932300FFF77EF91A +:403FC00003000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A039AD31803930B9B00221A62039A0A9BD318013B0A99180027F0EAFC030008936D +:4040000001230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB00932300FFF74CF903000D930D9B002B24D1039A0A9BD31A0393049A0A9BD31804930C9B8B +:4040400001330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499180023F0C1FD0B9B1A6A039BD2180B9B1A6202E0C04600E0C0460D9B18000EB0AC +:4040800010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039B1B6C002B02D0029B002B01D1374B69E0039B1B6C1593039B1B685B691493159B0A +:4040C00013930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF74FFE159B10331293159B1A6A149B9A420DD2159B1B6A129A149905A8FFF79CFEB0 +:40410000149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A91398FFF769FE139C149A1399039804AB00932300FFF7C2F803001193119B002B09 +:4041400006D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB102118000AF0C3FC159B00221A62159B1033102118000AF0BAFC139B102118000AF076 +:40418000B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B0021180023F0B4FDC04603B000BD000000B58FB0039002910192009305AB20220021180044 +:4041C00023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B000199D150039B119A9A61039B114ADA61039B2033180080235A0005AB1900F7F766FF34 +:4042000003000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9B002B01D00D9B00E0002318000FB000BD1027000010B586B00590049103920293D8 +:40424000029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B583B00190019B002B0CD0019B20331800F7F71AFFA0235A00019B110018000AF045 +:4042800035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC0235B009A4202D938235B4212E1D0235A0063AB0021180023F029FD05AB1800F7F722 +:4042C000E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120CD2B21A70D19B5A1CD192019A120AD2B21A70D19B5A1CD192019AD2B21A70D19BA7 +:404300000333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD31880221A70019B1933CC930023CF930BE0CF9BD9B26A4BD2AAD218CF9BD3180A1C32 +:404340001A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093D09B002B00D08AE00023CE9355E063ABD1934BAB10220021180023F0C7FCCC9BD2 +:40438000CD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B785340D9B2504BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B0F2BE6DDD19B1033A1 +:4043C000D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093D09B002B4DD1CD9B002BCBD1CE9B57AAD3184BA91022180023F0F6FB3A4BD2AA47 +:4044000094466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD80235A0057A905AB1800F7F74FFE0300D093D09B002B26D157AB2033CB93039B91 +:40444000D1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB99D19B1022180023F0BFFBD19B1033D193CE9B1033CE93CE9B2F2BE5DD06E0C04693 +:4044800004E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF025FB57AB302118000AF020FB4FAB202118000AF01BFB4BAB102118000AF016FBBB +:4044C000D09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFF4FDFFFFE4FDFFFF44FEFFFF00B593B00190009102AB119300230E9302AB302229 +:404500000021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2019AD154019AD35C002B06D1109B013B1093109B002BEDDC00E0C046019B2033AD +:404540001800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B103311930F9B10330F930F9B2F2BD0DD0023109311E002AA109BD3181A78109B0099CB18D0 +:404580001B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033180080235A0002AB1900F7F78FFD03000E930E9B002B01D00E9B07E0019802ABA7 +:4045C00020331022190023F00FFB0023180013B000BD10B5E6B003900291019200236593039B9A69C0235B009A4207D8039B9B69C0225200D21A019B9A4202D238235B4276 +:404600004DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058039B9A6904AB1900A047031E02D034235B4234E0039B9B69659AD3186593029B6C +:40464000002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD3186593659A04A904AB1800FFF70FFE03006493649B002B01D0649B10E004AA039BB0 +:4046800011001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180066B010BD00B59BB0039002910192009300231793039B1693029B1993019A802392 +:4046C000DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB30220021180023F012FB169B1A69169BDB699A4203DC169B5B69002B0ED01C9A0099E3 +:40470000169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D01C9A009909AB1800FFF7B0FD03001793179B002B01D0179B5BE009AA169B1100AB +:404740001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AD25C0132D1B2169AD154169AD35C002B06D1189B013B1893189B002BEDDC00E0C0 +:40478000C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E0019B102B00D910231593159A05A9199B180023F019FA199A159BD3181993019A9A +:4047C000159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002B01D0179B05E0169B1B695A1C169B1A61002318001BB000BD00B589B0059004917E +:404800000392059B0793039A04990798002300930023FFF747FF03000693069B180009B000BD000010B592B0079006910592049308AB180000F03DFE059C049A08A9079808 +:40484000169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB180000F07AFF031E02D00A4B119309E008AA069B11001800F9F77EFC0300119300E086 +:40488000C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7B3FF03005F +:4048C000180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019B8833180000F0E5FD019BAC33180000F0E0FD019BD0331800F9F764FB019BDC22F7 +:4049000000219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF331800F9F74FFBC04603B000BD00B583B00190019B002B29D0019B180000F042FE01 +:40494000019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BD0331800F9F740FB019BE033180000F011FE019B0533FF33180000F00BFE019B26 +:404980002933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B4607331A70039B029A1100180000F09EFE03000593059B002B01D0059B35E06B46073394 +:4049C0001B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607331B78002B01D0124B1EE0039B88331A00029B88331900100000F047FE030005931D +:404A0000059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B01D0059B00E00023180007B000BDC04680B0FFFF10B588B005900491039202936C +:404A4000059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00059B7C331C000B9B01930A9B00932300FFF712FF03000793079B002B01D0079B9A +:404A800021E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B9B6D07210B40591E8B41DBB2D218049B1A60059BD0331800049B1A68039B190083 +:404AC000F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0733DB080693069A009B934200D913000593059A0199029B1800F9F72FFF0300D2 +:404B00000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B11001800FAF760F803000793079B002B16D1039B4C331A00029B11001800FAF757 +:404B40006FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E0C046079B180009B000BD000010B5A2B007900691059204931BAB20931CAB1F9372 +:404B80000FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E09DB079B4C331A00049B11001800FAF737F9031E01DB7F4BF6E012AB180000F0EF +:404BC00078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A60209B1A1D20921B680A2B02DD724B2193C9E01F9B00221A601F9B1A1D1F921B6807 +:404C00000A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D09AE0079B28331C001E9A12A9079800230293279B0193269B0093230003F006FCF8 +:404C400003002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193219B002B00D07BE01D9B00211800FAF76FF9031EC0D0259B249A0CA90798FFF75F +:404C800027FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B002B61D1049A1D99059B1800FBF794FA03002193219B002B58D1059A0CA90CAB5D +:404CC0001800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193219B002B46D109AA1E991E9B1800FBF773FA03002193219B002B3DD1079B4C335D +:404D00001A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF75BFA03002193219B002B29D1079B4C331A000599059B1800FBF74EFE0300219338 +:404D4000219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E01D +:404D8000C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB1800F9F721F9219B180022B010BDC04680B0FFFF80B3FFFF00B3FFFF10B58AB024 +:404DC0000990089107920693069C079A08990998002304930F9B03930E9B02930D9B01930C9B00932300FFF7C1FE030018000AB010BD000010B5CCB00990089107920693FD +:404E00002FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002B01D12C4B53E00BAB1800F9F7CBF82FAB180006F064FF499A0EA9069B1800F9F7B5 +:404E4000EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B29D10EAA499BD118499A0BAB1800F9F7D7FD03004B934B9B002B1ED1499B5B00F4 +:404E80000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B01934E9B00932300FFF760FE03004B9304E0C04602E0C04600E0C0462FAB18006C +:404EC00007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFFF1BF011010B588B00790069105920493049C059A06990798002303930CAB1B7802930B9B01930A9BD1 +:404F000000932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9311AB1D9308AB180000F0C3FA1AAB1800F9F748F817AB1800F9F744F814AB180001 +:404F4000F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F7F7FF031E1ADB079B4C331A00229B11001800F9F755FF031E10DA239B01211800F9 +:404F8000F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F938CE0059B069A1AA90798FFF791FD03001F931F9B002B00D071E0079B4C331A00EB +:404FC000239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF803001F931F9B002B5DD1079B4C331A001E991E9B1800FBF7EFFC03001F931F9BF8 +:40500000002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A001D991D9B1800FBF7D7FC03001F931F9B002B3ED1079B28331C001E9A08A9079804 +:4050400000230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180000F07AFB031E02D0214B1F9326E0079B4C331A0008A908AB1800FBF7ADFC0300C5 +:405080001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800DD +:4050C00000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB1800F8F782FF1F9B180020B010BD80B0FFFF00B2FFFF10B588B007900691059204937E +:40510000049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B010BD00B5ABB0039002910192009305AB8B33049300232993029A05A904AB1800C5 +:40514000F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904AB1800F8F767FC03002893289B002B01DA289B2FE0289B299AD3182993299A05A9DA +:4051800004AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A904AB30221800F8F7F9FB03002893289B002B01DA289B0DE0289B299AD31829939D +:4051C0000499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B00790059204931B236B440A1C1A700CAB1800F8F7E8FE09AB1800F8F7E4FE0798079BEA +:405200007C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7E9FD03000F930F9B002B08D1139B129A09A90CA8FFF775FF03000F9300E0C04672 +:405240000CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB009900792069323236B440A1C1A70069C079A23236B4419780998002304930F9B03930E9B52 +:4052800002930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B00590049103920293029C039A0499059800230193089B0093230000F005F80300180006B0F2 +:4052C00010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800F8F770FE08AB1800F8F76CFE0EAA10990FA83023F8F738F903001193119B002B0A +:4053000005D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E00BAA10990FAB1800F8F782F903001193119B002B0AD108AA10990FAB1800F8F767 +:4053400077F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00059A0699159B029308AB01930BAB00932300FFF7CDFD03001193119B002B06D1DB +:405380000F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FE119B180012B010BD80B0FFFF1AB0FFFF00B4FFFF00B585B001900091019B009A10 +:4053C0001100180000F091F903000393039B002B1BD1019B7C331A00009B7C3319001000F8F7C9FE03000393039B002B0DD1019B88331A00009B88331900100000F045F9D0 +:4054000003000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B00190019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B05E +:4054400000BD0000014B18007047C046842A041000B585B002006B4607331A70FFF7F2FF030003930BE0039B1B786A46073212789A4201D1039B07E0039B0C330393039BD8 +:405480001B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019BDB6B002B01D1022300E00123180002B0704700B583B00190019B002B0ED0019B93 +:4054C0001800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B000BD00B583B00190019B002B37D0019B00221A70019B04331800F8F763FD019BB5 +:4055000010331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C331800F8F74FFD019B00229A65019B0022DA65019B00221A66019B00225A66019B2F +:4055400000229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04603B000BD00B583B00190019B002B0ED0019B1800FFF7B5FF019B7C331800F8F76A +:4055800021FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0019B1800F8F720FD019B0C331800F8F71BFD019B18331800F8F716FD00E0C046C1 +:4055C00003B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F703FD019B10331800F8F7FEFC019B1C331800F8F7F9FC019B28331800FFF7CAFF40 +:40560000019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A1300DB009B189B00CB181800FFF7B3FF039B01330393019B9A6F039B9A42ECD8019B75 +:405640005B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B00190019B002B0ED0019B1800FFF7ABFF019B7C331800F8F7B8FC019B88331800FFF7DC +:4056800089FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD03000393039B002B19D1019B0C331A00009B0C3319001000F8F75EFD03000393039B84 +:4056C000002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0C046039B180005B000BD00B583B001900091009B1A78019B1100180003F00CFDCE +:405700000300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B13D1019B0C3301211800F8F7A5FE03000393039B002B0AD1019B183300211800A6 +:40574000F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019B183300211800F9F7F3FB03005A425341DBB2180003B000BD00B587B00390029142 +:405780000192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800F9F7D6FB031E0CD1099B002B01D1344B60E0089B00221A70009B01221A60002319 +:4057C00058E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A60009B1A68099B9A4201D9254B42E0089B04221A700298089B0133049A1900F9F7C8 +:405800000FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F7FFF80300059324E0019B012B21D1049B5A1C009B1A60009B1A68099B9A4201D90C +:405840000F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089B0133049A1900F9F7DBF80300059300E0C046059B180007B000BDC04680B0FFFF4A +:4058800000B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002B0AD1009B012B05D1029B1800FFF72CFF03003FE0214B3DE0039B04331800F8F79A +:4058C00000FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B28E00298019B0133049A1900F9F736F803000593059B002B18D1029B0C331800C5 +:40590000049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B183301211800F8F7A9FD0300059302E0C04600E0C046059B180007B000BDC04680B0FFFF88 +:4059400080B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF73BF8030055E0019B1B68002B06DA019B00211800F9F7ECFA031E09D1019B180083 +:40598000F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703000393039B002B2ED10BE0009B1A1D0199019B1800F9F760FC03000393039B002B45 +:4059C00023D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D0199019B1800F9F7E2FB03000393039B002B0DD1009B1A1D019B11001800F9F710FA7C +:405A0000031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB001900091009B183300211800F9F790FA031E01D10023AEE006AB1800F8F7C2FAB0 +:405A400003AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099B002B00D07DE006AA06A903AB1800FAF7B3FB03000993099B002B00D073E0019A99 +:405A800003AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B009903AA1800FAF797FB03000993099B002B5CD1009B019A11001800FFF742FFDD +:405AC00003000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AA1900FAF779FB03000993099B002B42D1009B0C33019A11001800FFF723FF030074 +:405B00000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA1900FAF75AFB03000993099B002B27D1009B0C33019A11001800FFF704FF030009932A +:405B4000099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC0300099310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04687 +:405B800000E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BD106A000800B591B0039002910192019B012B08D8029B1A68039B11001800FFF72FFF03002C +:405BC0000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE00E9A13005B009B189B001A000D9B9B181800F8F7E7F90E9B01330E930E9A019BED +:405C00009A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B6818331A000D9B11001800F8F7A4FA03000F930F9B002B00D082E101230E9339E0BC +:405C40000E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD1180E9B9B00029AD3181B6818331A00FAF7B3FA03000F930F9B002B00D062E10E9A8D +:405C800013005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B00D051E1B24B1B685A1CB14B1A600E9B01330E930E9A019B9A42C1D3019A1300DB +:405CC0005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002B00D033E1019B013B0E930E9B002B0BD10AAA07AB11001800F8F73DFA03000F93E8 +:405D00000F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF75BFA03000F930F9B002B00D010E1039A07AB11001800FFF705FE03000F930F9B58 +:405D4000002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA90AAB1800FAF738FA03000F930F9B002B00D0F1E0039A0AAB11001800FFF7E2FD65 +:405D800003000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF71BFA03000F930F9B002B00D0D8E0039A04AB11001800FFF7C5FD03000F930F9B2E +:405DC000002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00029AD3181B68190004AB1A00FAF7F4F903000F930F9B002B00D0B5E00E9B9B0088 +:405E0000029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B1B685A1C524B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B6875 +:405E40000C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B680C33039A11001800FFF76CFD03000F930F9B002B00D081E03D4B1B685A1C3C4B4C +:405E80001A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA1900FAF79AF903000F930F9B002B00D067E00E9B9B00029AD3181B680C33039A11001C +:405EC0001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AD3181B681A00039B9B6819001000F8F7E3F803000F930F9B002B45D10E9B9B008E +:405F0000029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D10E9B9B00029AD3181B6818331800F8F75BF80E9B002B2BD00E9B013B0E93D4E6FA +:405F4000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E080B2FFFF106A0008C0460CE0C0460AE0C04608E089 +:405F8000C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F723F804AB1800F8F71FF800230E930DE00E9A13005B009B189B001A000D9B9B1831 +:405FC0001800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180011B000BD00B58BB0039002916B4607331A7005AB1800F7F7E5FF039B191D029BC6 +:406000000C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F797FF03005A1E9341DAB223236B441A70029B0C3318006B46073323226A441B781C +:4060400012781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099B18000BB000BD000000B593B0039002910192DD4B1B685A1CDB4B1A600EAB18009F +:40608000F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69002B00D0A9E0019B18331900019B18331A000BAB1800FAF78FF803001193119BA3 +:4060C000002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34B1B685A1CC14B1A6001990BAA08AB1800F9F7C2F803001193119B002B00D043E377 +:406100000CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1D08AB11001800F8F77BFE031EE9DA01990BAA05AB1800F9F7EDF803001193119B48 +:40614000002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D018E305AB1B68002B06DA05AB00211800F8F7EEFE031EE7D105AA08A90BAB18001B +:40618000FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB03001193119B002B00D0F9E2904B1B685A1C8F4B1A600BA90EAB03221800FAF7BFF80300B1 +:4061C0001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119B002B00D0DEE2039B1A1D0EAB11001800F8F716FE031EE9DAC8E00199019A0BAB29 +:406200001800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB03001193119B002B00D0C0E2704B1B685A1C6E4B1A600BA90EAB03221800FAF77EF88C +:4062400003001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF03001193119B002B00D0A7E2039B1A1D0EAB11001800F8F7D5FD031EE9DA039B1033002127 +:406280001800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFF03001193119B002B00D087E2039A0BAB11001800FFF746FB03001193119B002BE1 +:4062C00000D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119B002B00D06EE2039A08AB11001800FFF729FB03001193119B002B00D064E23B4BE8 +:406300001B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002B00D053E2039A0BAB11001800FFF70AFB03001193119B002B00D049E22B4B1B6831 +:406340005A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE0039B1A1D0EA90EAB1800F8F71FFF03001193119B002B00D02EE2039B1A1D0EAB4E +:4063800011001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF03001193119B002B00D017E2039A08AB11001800FFF7C6FA03001193119B002BE5 +:4063C00000D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002B00D0FFE111E0C0460C6A0008106A0008039B1A1D08A908AB1800F8F7D7FE03004C +:406400001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0BAB1800F9F7D8FE03001193119B002B00D0DBE1039A0BAB11001800FFF782FAE5 +:4064400003001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FB03001193119B002B00D0C3E10CE0039B1A1D0BA90BAB1800F8F798FE0300119309 +:40648000119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905AB1800F9F799FE03001193119B002B00D0A4E1039A05AB11001800FFF743FA030024 +:4064C0001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA03001193119B002B00D08CE10CE0039B1A1D05A905AB1800F8F759FE03001193119B1E +:40650000002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800F9F75AFE03001193119B002B00D06DE1039A08AB11001800FFF704FA03001193CA +:40654000119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE03001193119B002B00D054E10CE0039B1A1D08A908AB1800F8F77FFE03001193119B7E +:40658000002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A908AB1800F8F7B6FE03001193119B002B00D033E10CE0039B1A1D08A908AB180077 +:4065C000F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F7B7FC031EE7D108AA0BA90BAB1800F8F791FE03001193119B002B00D012E10CE077 +:40660000039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B06DA0BAB00211800F8F792FC031EE7D10EAA0BA90BAB1800F9F7CEFD0300119387 +:40664000119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0534B1B685A1C524B1A6005AA0BA90BAB1800F8F74FFE03001193119B002B00D041 +:40668000D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BAB1B68002B06DA0BAB00211800F8F750FC031EE7D1019B0C331900019B18331A00CA +:4066C00005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F903001193119B002B00D0A9E0304B1B685A1C2F4B1A6005AB01211800F8F7D0F904 +:4067000003001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD03001193119B002B00D08FE0039B1A1D05AB11001800F8F775FB031EE9DA029B08AA110017 +:406740001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFD03001193119B002B00D071E0029B183305AA11001800F7F7FEFC0300119368E06E +:40678000C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E0C04656E0C04654E0C04652E0C04650E0106A0008C0464CE0C0464AE0C04648E0BB +:4067C000C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C9 +:40680000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E088 +:40684000C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F7C3FB08AB1800F7F7BFFB05AB1800F7F7BBFB119B180013B000BDC04600B59BB04A +:406880000390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E07D1009A029B11001800FEF7EEFE030039E3009B1B6A002B0FD0009B18330021DD +:4068C0001800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B09D0009B183301211800F8F731FB031E01D0C44B17E316AB1800F7F763FB13ABE2 +:406900001800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07AB1800F7F74FFB04AB1800F7F74BFB019B18331900019B18331A0016AB1800F9F700 +:406940004BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199B002B00D079E2A84B1B685A1CA64B1A60019B18331A0016A913AB1800F9F72CFCDF +:4069800003001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002B00D05EE2984B1B685A1C974B1A60009A16A916AB1800F9F70FFC03001993199B7B +:4069C000002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4B1B685A1C884B1A60009B0C331A0013A913AB1800F9F7F0FB03001993199B002BA8 +:406A000000D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B685A1C794B1A60019A16A916AB1800F8F771FC03001993199B002B00D01BE20CE022 +:406A4000039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B06DA16AB00211800F8F772FA031EE7D1019B0C331A0013A913AB1800F8F74AFC21 +:406A800003001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993199B002B00D0ECE113AB1B68002B06DA13AB00211800F8F74BFA031EE7D116AB38 +:406AC00000211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B1800FFF7C1FA03001993FFE1029B1800FEF70AFE03001993F8E1019B18331900AB +:406B000016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF711FF03001993199B002B00D0ADE1364B1B685A1C344B1A6016AA16A910AB18005B +:406B4000F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993199B002B00D094E1274B1B685A1C264B1A6016AA10A90DAB1800F9F72DFB03000E +:406B80001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D07BE1194B1B685A1C174B1A60019A10A910AB1800F9F710FB03001993199B002B29 +:406BC00000D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B685A1C094B1A6010A916AB02221800F9F7A5FB03001993199B002B00D053E112E0C3 +:406C0000086A000880B0FFFF106A0008039B1A1D16A916AB1800F8F7C9FA03001993199B002B00D041E1039B1A1D16AB11001800F8F7F6F8031EE9DA13AA13A90AAB1800C5 +:406C4000F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE03001993199B002B00D024E1B04B1B685A1CAF4B1A6016AA0AA90AAB1800F8F74BFB0300CE +:406C80001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B002B00D009E10AAB1B68002B06DA0AAB00211800F8F74CF9031EE7D10DAA0AA97A +:406CC0000AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB1800F8F7CAFA03001993199B002B00D0E8E00AAB1B68002B06DA0AAB00211800F8F74B +:406D000027F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0039B1A1D10A910AB1800F8F7A5FA03001993199B002B00D0C7E010AB1B68002BD5 +:406D400006DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993199B002B00D0B2E0039A10AB11001800FEF7E8FD03001993199B002B00D0A8E0DA +:406D80006A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B002B00D097E0039A0DAB11001800FEF7C9FD03001993199B002B00D08DE05B4BF4 +:406DC0001B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE00CE0039B1A1D07A907AB1800F8F744FA03001993199B002B00D072E007AB1B68B0 +:406E0000002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF903001993199B002B00D05DE0029B0C3307AA11001800F7F79FF903001993199B002B89 +:406E400053D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04664 +:406E800034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04622 +:406EC00014E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04616AB1800F7F77AF813AB1800F7F776F810AB180004 +:406F0000F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800F7F762F8199B18001BB000BD106A000800B58FB0039002910192009300230C93BB +:406F4000039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9908A8FAF749FC03000D930D9B002B00D0B5E00AE008AB01211800F7F735FE03004D +:406F80000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C0C920A2B01DD5F4BB9E008AB01211800F7F7CEFF031ED0DD029B18331800029B17 +:406FC000183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800FEF7B0FC03000D930D9B002B00D07CE04D4B1B685A1C4C4B1A6008AA08A905AB38 +:407000001800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC03000D930D9B002B64D13F4B1B685A1C3E4B1A60029B029905AA1800F9F7CDF80300F2 +:407040000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B1B685A1C304B1A6008AA05A905AB1800F9F7B2F803000D930D9B002B3FD1039AC6 +:4070800005AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B0C331800029B0C3305AA1900F9F794F803000D930D9B002B25D1029B0C33039AE3 +:4070C00011001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04611 +:4071000004E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B18000FB000BD00B3FFFF106A000800B589B00390029100936B4607331A70029B5A1CBE +:40714000039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD218009B11001800F7F7B4F90200069B9A401000039A079BD3180399079A8A181278E6 +:4071800051B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079B01330793079A029B9A42D1D317236B4400221A700123079372E0039A079BD31861 +:4071C0001A7816236B441721694409780A401A70039A079BD3180399079A8A18117817226A4412784A40D2B21A7017236B4416226A4412781A70039A079BD3181B781A0086 +:40720000012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A03998A1812781521694409784A43D2B252B213405AB217236B441B785BB213435AB279 +:4072400017236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812781520684400784243D2B252B24A4052B2D2B21A70079B013B039AD318079A013A26 +:4072800003998A18127851B215226A441278D20152B20A4352B2D2B21A70079B01330793079A029B9A4288D9C04609B000BD10B5A8B00390029101921A006B4603331A7096 +:4072C000002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF7D4F903002793279B002B00D0EAE00023259344E02A99259824F06AFB03001A0095 +:40730000012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B182393259B2A99180024F0D8FB0B1E17D19B236B441B785B08DBB21A001300DB005F +:407340009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E0239A2399039B1800FEF77EFE03002793279B002B00D0A9E0259B013325936B46D9 +:4073800003331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0259A531C25939B236B4419780B00DB005B189B001900029B591804AB9200D150DC +:4073C0009B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259A04A9039B1800FEF7DBFB03002793279B002B6DD19B236B4401221A7037E09B236C +:407400006B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918259A1300DB009B189B001A00029B9C189B236B441A781300DB009B189B001A0044 +:40744000029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D19B226A449B236B441B78DB1813709B226A4493236B4412781B789A42BFD3002321 +:4074800025930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259B01332593259B5A1C93236B441B789A42E8D3259A04A9039B1800FEF771FB030033 +:4074C000279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B587B00390029101921A006B4603331A7008AB1B785B08DAB212236B443F210A40CE +:407500001A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B9B18190013226A4412236B4412781B78D31A5A425341DBB21A00F6F77AFE03002C +:407540000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B9B180C33190013226A4412236B4412781B78D31A5A425341DBB21A00F6F759FE48 +:4075800003000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033312781B789A42B1D308AB1B78DB09DAB20299039B1800FEF715FD0300059302E08D +:4075C000C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A7007AB1800FDF765FF159B1093149A109BD3181B780B226A441478039A04990598A2 +:4076000000932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF03001193119B002B40D1169B002B37D0179B169A04990598FFF77BFC03001193119B91 +:40764000002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002B27D1149A109BD3181B780B226A441478039A07A9059800932300FFF730FF0300DC +:407680001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109B002BD0D10AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04607AB1800DD +:4076C000FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC05AB1800F6F76EFC039B4C3300211800F6F7EFFE0300012B01D0254B45E0029BF7 +:4077000000211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F72AFD03000B930B9B002B20D1039B4C331900029A05AB1800F7F7ECFD03000B9331 +:407740000B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB0EAA127800990198FFF7E0FC04E0C04602E0C04600E0C04605AB1800F6F734FC60 +:4077800008AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693089B4C93529C0AAA079909983023FF336B44019351AB1B7800932300FFF786FFEB +:4077C00003004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B0293529B01930AAB00932300FFF7F0FE03004D934D9B002B18D13023FF336B441A78DC +:407800004C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF803004D9304E0C04602E0C04600E0C0464D9B18004EB010BD84B001900A006B4673 +:4078400003331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B4603331B78002B06D00F236B441A780F236B4401321A700F236B441B78062B03D90F2303 +:407880006B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B441B78180004B0704710B590B00990089107920693069B0C331A00099B3433190051 +:4078C0001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0002233236B441A7032246C4433236B441A78099B11001800FFF79EFF0300237059 +:4079000032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E32236B441B781900100024F051F803000B9333236B441B78002B0BD0099B5B6F3B +:40794000002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF085FA03000D930D9B002B02D1504B0F9363E03B236B4400221A7013E03B236B4428 +:407980001A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D33A236B4400221A703A236B4403 +:4079C0001B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FC03000F930F9B002B26D133236B441B78002B07D0099B0D9A5A6731236B441A78B7 +:407A0000099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441B78019331236B441B7800932300FFF7B1FE03000F9300E0C046099B5A6F0D9B4F +:407A40009A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF791FD3B236B441A783B236B4401321A70CF +:407A80003B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089B1800FDF777FD0F9B180010B010BDC04680B2FFFF00B585B001900091009B18338D +:407AC0001800009B18331900019B04331A00F9F7CDFE03000393039B002B24D100980099009B18331A00F8F777FB03000393039B002B1AD1009B019A11001800FDF722FF1D +:407B000003000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFC0300039304E0C04602E0C04600E0C046039B180005B000BD106A000800B58BB044 +:407B4000039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009B019A079904A8F9F747FE03000993099B002B5CD109E004AB01211800F7F734F87F +:407B800003000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C08920A2B01DD2B4B51E004AB01211800F7F7CEF9031ED2DD029B029904AA18009B +:407BC000F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099B002B2AD11C4B1B685A1C1B4B1A60029B18331800029B183304AA1900F8F7ECFAE8 +:407C000003000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B0FD10D4B1B685A1C0B4B1A600AE0C04608E0C04606E0C04604E0C04602E0C046AB +:407C400000E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFF106A000800B5A1B003900291019200931CAB1800F6F7AAF919AB1800F6F7A6F916AB1800F6F7A2F9B2 +:407C800013AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F907AB1800F6F78EF904AB1800F6F78AF90099009B18331A001CAB1800F7F7DCFAD5 +:407CC00003001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F931F9B002B00D04FE2039B1A1D1CAB11001800F7F795F8031EE9DA1CAA1CA919AB1A +:407D00001800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE03001F931F9B002B00D032E29E4B1B685A1C9C4B1A600099009B18331A0016AB18008F +:407D4000F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA03001F931F9B002B00D015E216AB1B68002B06DA16AB00211800F7F7E9F8031E5F +:407D8000E7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB11001800FDF7CFFD03001F931F9B002B00D0F6E17C4B1B685A1C7A4B1A6013AA19A959 +:407DC00010AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800F7F74AFA03001F931F9B002B00D0DBE110AB1B68002B06DA10AB00211800F7F720 +:407E0000A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0C4E10CE0039B1A1D0DA90DAB1800F7F7BDF903001F931F9B002B00D0B8E1039B69 +:407E40001A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFA03001F931F9B002B00D0A3E10CE0039B1A1D0AA90AAB1800F7F7FEF903001F937B +:407E80001F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA0AA907AB1800F8F797F903001F931F9B002B00D082E1039A07AB11001800FDF74F +:407EC00041FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB1800F8F77AF903001F931F9B002B00D069E1039A04AB11001800FDF724FD03001F937E +:407F00001F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF903001F931F9B002B00D050E1019B039A11001800FDF707FD03001F931F9B002B00D0F3 +:407F400046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B00D037E1019B039A11001800FDF7EAFC03001F931F9B002B00D02DE1094B1B6885 +:407F80005A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE113E0C046106A0008019B18331800019B18331900039B04331A00F7F75DF9030062 +:407FC0001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031EE2D1019B18331800019B18331900019B18331A00F8F7F0F803001F931F9B002B79 +:4080000000D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914B1B685A1C8F4B1A60019B18331800019B18331A00239B1900F8F7CEF803001F93D3 +:408040001F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D0C6E0804B1B685A1C7E4B1A60029B13AA19A91800F8F7B0F803001F931F9B002B0A +:4080800000D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B685A1C704B1A60029B18331800039B103310AA1900F8F790F803001F931F9B002B06 +:4080C00000D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B1B685A1C5F4B1A60029B18331800029B18331A0013AB1900F7F7BEF803001F9389 +:408100001F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F803001F931F9B002B00D06DE0029B18331A00039B043319001000F6F771FE031EED +:40814000E3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D1029B1833039A11001800FDF7EBFB03001F931F9B002B4BD13A4B1B685A1C394B44 +:408180001A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E07B +:4081C000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0AF +:40820000C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F7E3FE16AB1800F5F7DFFE13AB1800F5F7DBFE10AB1800F5F7D7FE0DAB1800F5F7AE +:40824000D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B000BDC046106A000810B596B005900491039202930AAB1800FDF71BF907AB1800CA +:40828000F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB11001800FDF7F1F903001593159B002B00D0ACE0049B01211800F6F7DDF803009B +:4082C0001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D099E0049B0C331800F5F77EFE0CE0059B1A1D0AA90AAB1800F6F758FF0300159370 +:40830000159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD0199B189A0AA90598FFF708FC03001593159B002B00D072E0039B1800F6F78FF9E6 +:408340000300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B441A780AAB1900F5F7E1FF03001593159B002B56D1049B183318004F236B441A780E +:408380000AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB01930AAB00932300FFF759FC03001593159B002B3AD104984F236B441A780AAB190011 +:4083C000F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900F5F7A4FF03001593159B002B21D1149B5A1E1492002BA6D1049A059B11001800AD +:40840000FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FDF7ACF807AB1800C9 +:40844000F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B1100180000F088FA03000993099B002B3AD1049A079B1100180000F049FA030088 +:408480000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A069907980D9B01930C9B00932300FFF7DCFE03000993099B002B1AD1079B1800FCF7A7 +:4084C000E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7E3F90300099304E0C04602E0C04600E0C046099B18000AB010BDC04680B0FFFF8F +:4085000010B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF793FF0300180008B010BD000000B58BB001900091009B00211800F6F71D +:4085400007FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000F6F75EFC031E0ADA009B0C331A00019B043319001000F6F753FC031E01DB814BFF +:40858000FCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB1800F7F719FE03000993099B002B00D0C4E0019A06AB11001800FDF7C3F9030089 +:4085C0000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD03000993099B002B00D0ABE0019A03AB11001800FDF7A6F903000993099B002BA5 +:4086000000D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F7EAFE03000993099B002B00D08EE00CE0019B1A1D03A903AB1800F6F71DFE03000C +:408640000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D123E0019B10331A0003A903AB1800F6F703FE03000993099B002B00D06AE00BE00A +:40868000019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB11001800F6F7BDFB031EEADA009A03A903AB1800F7F791FD03000993099B002B4DD116 +:4086C000019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A60019B1C331A0003A903AB1800F6F7C4FD03000993099B002B34D10BE0019B1A1DA7 +:4087000003A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F77FFB031EEADA03AA06AB11001800F6F777FB031E19D0134B099316E0C04614E054 +:40874000C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F5F73BFC03AB1800F5F737FC099B18000BB055 +:4087800000BDC04680B3FFFF106A000810B58AB00790069105920493059B01211800F6F7D7FB031E08D1049A069B11001800FCF76CFF0300099339E001235A42059B110066 +:4087C0001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D1069B0C3300211800F6F7B2FB031E1DD0069B0C331800079B191D069B0C331A0001 +:40880000F6F788FD0300099310E0049C059A069907980C9B029300230193002300932300FFF714FE0300099300E0C046099B18000AB010BD10B592B00590049103920293C3 +:4088400006AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF728FE029C039A10990598169B00932300FFF78CFF03001193119B002B21D1159CA6 +:40888000149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F990598FDF7EBFF03001193119B002B0CD10F9A059B11001800FDF7B0F80300119300 +:4088C00004E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF00B583B001900091009B1800F5F7E9FE0200019BDB6D0733DB089A4201D9034B8D +:4089000000E00023180003B000BDC04680B3FFFF00B583B001900091009B183301211800F6F716FB031E01D0114B1EE0019B1800FCF7ADFD0300022B07D1009A019B110061 +:408940001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B11001800FFF7E6FD030000E0024B180003B000BD80B3FFFF80B0FFFF00B583B00190009189 +:40898000019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B01211800F5F796FD031E09D1009B1800F5F756FE03005A1E019BDB6D9A4201D0184B5A +:4089C0002BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0019B1800FCF753FD0300012B14D1009B01211800F6F7ACFA031E09DB019B4C334A +:408A00001A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD80B3FFFF80B0FFFF00B589B003900291019200935C4B0793039BDB6D0733DB0885 +:408A40000593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE03000793079B002B00D08EE0029B1800F5F7F7FD031EEDD0029B1800F5F7F1FD0300013B26 +:408A80000493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F803000793079B002B0CD07AE0039BD96D029B01221800F5F72AFD03000793079B002B46 +:408AC00063D1029B002200211800F5F71FFD03000793079B002B5AD1029B002201211800F5F714FD03000793079B002B51D1039BDB6DFE2B0AD1029B002202211800F5F75B +:408B000005FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B019A05990298F8F767FE03000793079B002B32D1059BDA00039BDB6DD21A029B3C +:408B400011001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134B1FE0029B01211800F6F7F2F9031ED6DB039B4C331A00029B11001800F6F750F9F0 +:408B8000031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180009B000BD80B0FFFF00B3FFFF10B588B005900491039202930B9B0A9AD0 +:408BC00003990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B00932300FFF78CFC0300079300E0C046079B180008B010BD10B586B00590049160 +:408C000003920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF0300180006B010BD10B588B004910392029317236B44021C1A70049A17236B441B78CF +:408C40001900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049B88331A00039C029B00932300FFF7C4FF0300180008B010BD10B5AEB003900291A4 +:408C8000039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B883319001000F6F7BDF8031E15D1039B94331A00029B943319001000F6F7B2F8031E0AD1F9 +:408CC000039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7E8FB05AB1800FCF7FCFB029A05AB11001800FCF7FAFC029B7C331A00029B283304 +:408D00001C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B88331A0024AB11001800F6F779F8031E15D1029B94331A0024AB0C3311001800F9 +:408D4000F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B2D9300E0C04624AB1800FCF713FC05AB1800FCF727FC2D9B18002EB010BDC0464A +:408D800080B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A60C04604B07047000082B00190019B01221A60019B01225A60019B024A9A60C046C5 +:408DC00002B070470804000800B585B00390029101920093039B0433019A02991800FFF7D1FF009B002B06D0039B1033069A00991800FFF7C7FF039B1C33089A0799180006 +:408E0000FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF039B34330C9A0B991800FFF7ABFF039B40331800FFF7B8FF039B04331800F5F798 +:408E40000EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023180005B000BD000000B585B00190019B1033434A10211800F5F778FC0300039330 +:408E8000039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B0433FF211800F5F7FCFD03000393039B002B4FD1019B181D019B043313221900F6F7F5 +:408EC0009AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C33284A10211800F5F741FC03000393039B002B32D1019B4C330122FC211800F5F771 +:408F000005FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002B1FD1019B403301211800F5F7A5FA03000393039B002B16D1019B34331800F5F791 +:408F400053F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046B0 +:408F8000382C0410402C041000B587B0019002AB1800F5F717F8019B10335D4A10211800F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA0300059355 +:408FC000059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E0019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E0216C +:409000001800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF903000593059B002B58D1019B04331800F5F715FB0200019B9A65019B2833052167 +:409040001800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA03000593059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F730 +:4090800045FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B24D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019BEC +:4090C000C022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D00A +:40910000019B1800FCF75EFA059B180007B000BD642C04106C2C041000B58DB00B900A002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042B2C +:4091400025D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B9820230893284B079320230693274B059320230493264B039320230293254B0193002394 +:40918000009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B0793302306931E4B0593302304931D4B0393302302931C4B01930023009300233022DD +:4091C000FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A660B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BD0D93011071 +:40920000A82A0410282B0410082B0410E82A0410C82A0410439B0110482B0410082C0410D82B0410A82B0410782B04100DA60110F9A6011080B1FFFF84B00390029101926B +:40924000039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42DBB2D318DBB25AB2019B1A70C04604B0704784B0039002910192019B1B785BB286 +:40928000DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029BD21A039B1A60C04604B0704700B587B00390019200930B236B440A1C1A70019BD9 +:4092C0009A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A0199039B1800F5F762FF03000593059B002B04D1039B012252421A6000E0C046059B74 +:40930000180007B000BDC046FFFFFF3F00B595B0019042236B4400221A700023139380235B0012930CAB01221A600CAB09225A600CAB03AA9A600CAB5B689A0003AB002177 +:4093400018001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B9A68139B9B00D3181B680F93019B9B682033196842226A440FAB1800FFF75CFFE4 +:40938000019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A440FAB1800FFF765FF019B9B683033196842226A440FAB1800FFF75BFF019B9B68F8 +:4093C0003433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB1800FFF747FF019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B004C +:40940000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71BFF09E043233C +:409440006B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FAB1800FFF7E9FE019B9B682833196842226A440FAB1800FFF7DFFE019B9B68303336 +:40948000196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF7E8FE019B9B683833196842226A440FAB1800FFF7DEFE019B9B683C3319684222E6 +:4094C0006A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A70B5 +:4095000043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7A8FE09E043236B440021595642226A440FAB1800FFF780FE019B9B682833196868 +:4095400042226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE019B9B683433196842226A440FAB1800FFF77FFE019B9B683833196842226A445F +:409580000FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F934323C4 +:4095C0006B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73FFE09E043236B44002159564222EB +:409600006A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019B9B682C33196842226A440FAB1800FFF703FE019B9B683033196842226A440FAB92 +:409640001800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B683433196842226A440FAB1800FFF7E5FD019B9B683C33196842226A440FAB1800FFF7F1 +:40968000F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B682433196842226A440FAB1800FFF7E4FD019B9A68139B9B00D3180F9A1A60139B01331393019B32 +:4096C0009A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF798 +:40970000B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196842226A440FAB1800FFF786FD019B9B683033196842226A440FAB1800FFF77CFD89 +:40974000019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440FAB1800FFF768FD019B9B683833196842226A440FAB1800FFF75EFD019B9B68F4 +:409780002433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB1800FFF767FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B006C +:4097C000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73BFD09E043235B +:409800006B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FAB1800FFF709FD019B9B683433196842226A440FAB1800FFF7FFFC019B9B683833F2 +:40984000196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF7EBFC019B9B683C33196842226A440FAB1800FFF7E1FC019B9B682833196842222B +:409880006A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F938F +:4098C00043236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7BEFC09E043236B440021595669 +:4099000042226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC019B9B683833196842226A440FAB1800FFF782FC019B9B683C33196842226A444A +:409940000FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B683833196842226A440FAB1800FFF764FC019B9B683433196842226A440FAB1800A8 +:40998000FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B682433196842226A440FAB1800FFF763FC019B9A68139B9B00D3180F9A1A60139B0133139378 +:4099C000019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800EF +:409A0000FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33196842226A440FAB1800FFF705FC019B9B683C33196842226A440FAB1800FFF777 +:409A4000FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B682033196842226A440FAB1800FFF7E7FB019B9B682833196842226A440FAB1800FFF7FAFB019B86 +:409A80009B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB1800FFF7E6FB019B9B683433196842226A440FAB1800FFF7DCFB019B9A68139B3C +:409AC0009B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00231A1C53B20F93019B9A68139B9B00D3180F9A1A6000230F9306E0019B9A68139B54 +:409B00009B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB2002B0ADA42236B4400215956129B0CAA0198FFF7BBFB00E0C046119B180015B08B +:409B400000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6010AB0D225A6010AB03AA9A6010AB5B689A0003AB002118001EF0C8F8019B182115 +:409B80001800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B681393019B9B683033196852226A4413AB1800FFF741FB019B9B6854331968522211 +:409BC0006A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019B9B685C33196852226A4413AB1800FFF740FB019B9A68179B9B00D318139A1A602B +:409C0000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522234 +:409C40006A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA019B9B683433196852226A4413AB1800FFF7E2FA019B9B685833196852226A448B +:409C800013AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B683033196852226A4413AB1800FFF7E1FA019B9B685033196852226A4413AB1800BA +:409CC000FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B782E +:409D00007F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E053236B440021595652226A4413AB1800FFF783FA019B9B683833196852226A4413ABD2 +:409D40001800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433196852226A4413AB1800FFF782FA019B9B685433196852226A4413AB1800FFF7D6 +:409D800078FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B18 +:409DC0000CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B440021595652226A4413AB1800FFF724FA019B9B683C33196852226A4413AB18005E +:409E0000FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196852226A4413AB1800FFF706FA019B9B685433196852226A4413AB1800FFF7FCF982 +:409E4000019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A4413AB1800FFF705FA019B9B685C33196852226A4413AB1800FFF7FBF9019B9A6899 +:409E8000179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441D +:409EC0001B785BB25B42190052226A4413AB1800FFF7CFF909E053236B440021595652226A4413AB1800FFF7A7F9019B9B685433196852226A4413AB1800FFF79DF9019B23 +:409F00009B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB1800FFF789F9019B9B683433196852226A4413AB1800FFF77FF9019B9B683033AA +:409F4000196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF76BF9019B9B685833196852226A4413AB1800FFF761F9019B9B683C331968522219 +:409F80006A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B9B685C33196852226A4413AB1800FFF760F9019B9A68179B9B00D318139A1A60C7 +:409FC000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522271 +:40A000006A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF9019B9B685833196852226A4413AB1800FFF702F9019B9B685833196852226A4447 +:40A0400013AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B683833196852226A4413AB1800FFF7E4F8019B9B683433196852226A4413AB1800E5 +:40A08000FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196852226A4413AB1800FFF7C6F8019B9B684033196852226A4413AB1800FFF7D9F8CE +:40A0C000019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD962 +:40A1000053236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B440021595652226A4413AB1800FFF785F8019B9B685C33196852226A4413AB1800FFF72B +:40A140007BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B684833196852226A4413AB1800FFF767F8019B9B683C33196852226A4413AB1800FFF75DF8019B10 +:40A180009B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB1800FFF749F8019B9B684433196852226A4413AB1800FFF75CF8019B9A68179B74 +:40A1C0009B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B78F9 +:40A200005BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4413AB1800FFF708F8019B9B684C33196852226A4413AB1800FEF7FEFF019B9B6851 +:40A240004033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB1800FEF7EAFF019B9B685C33196852226A4413AB1800FEF7E0FF019B9B68483319688F +:40A2800052226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B44002292 +:40A2C0001A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7C7FF09E053236B440021595652226A4413AB1800FEF79FFF019B9B685033D4 +:40A30000196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF78BFF019B9B684033196852226A4413AB1800FEF781FF019B9B684C3319685222FA +:40A340006A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A701A +:40A3800053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF768FF09E053236B440021595652226A4413AB1800FEF740FF019B9B6854331968D6 +:40A3C00052226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF019B9B684433196852226A4413AB1800FEF722FF019B9B685033196852226A441E +:40A4000013AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A705323F0 +:40A440006B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF09E053236B440021595652226A4413AB1800FEF7E1FE019B9B68583319685222D2 +:40A480006A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B9B684833196852226A4413AB1800FEF7C3FE019B9B685433196852226A4413AB27 +:40A4C0001800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B449F +:40A500001B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E053236B440021595652226A4413AB1800FEF782FE019B9B685C33196852226A44CD +:40A5400013AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B684C33196852226A4413AB1800FEF764FE019B9B685833196852226A4413AB18000D +:40A58000FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB21A1C53B2002B01DA00231A1C53B21393019B9A68179B9B00D318139A1A6000237B +:40A5C000139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42F0D352236B441B785BB2002B0ADA52236B4400215956169B10AA0198FEF756FE7F +:40A6000000E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DAB01221A60019B5B68DA1F0DAB5A600DAB5B68092B01D92F4B59E00DAB03AA9A60CF +:40A6400003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF0C3FA0DAB1F211800F4F7BEFA03001193119B002B35D10DAB5B685A1C0DAB5A60FB +:40A68000019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A68109B9B00D31800221A60109B01331093019B5A68109B9A42F0D80DA90DAB132211 +:40A6C0001800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC0300119304E0C04602E0C04600E0C046119B180013B000BD80B0FFFF10B5A8B00190019B5F +:40A700005B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B680E2B01D9494B8DE023AB11AA9A6011AB3C22002118001DF0E9FA019B9B6838337B +:40A74000190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31800221A60269B01332693019B5A68269B9A42F0D823AA0199019B1800F4F77CFD2A +:40A7800003002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218001DF022FA20ABE0211800F4F71DFA03002793279B002B3DD120AA0199019B180056 +:40A7C000F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B0133269323AB5A68269B9A42F2D820AA23A923AB1800F4F73FFD03002793279B87 +:40A80000002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA0199019B1800F4F727FD0300279308E0C04606E0C04604E0C04602E0C04600E039 +:40A84000C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039BE4331800C8235B001A0000211DF04EFA039B00221A60039B0833180009F04DFCE8 +:40A8800007490398012300934023002200F02AF8039A9D239B000021D150C04605B000BD55AD011000B583B00190019B0833180009F03FFC019A9D239B000021D150019B2A +:40A8C000E02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C04603B000BD86B0039002910192009300230593039BE0229B580493049B132B03DD47 +:40A900003E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A600399049AE82013009B009B189B00CB181B18019A1A600399049AF02013009B009B18F5 +:40A940009B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60039BE0229B585A1C039BE0215A50059B180006B0704700B599B00390019200936A +:40A980000B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019800230CF0EDFA03001593159B002B34D104AB16934023179314AB0B226A441278B7 +:40A9C0001A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB03001593159B002B1BD1039B01221A60039B083314A9022218000BF0DAFC0300159315 +:40AA0000159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C04604AB4021180004F061F8159B180019B000BD00B587B0039002910192019B029A30 +:40AA400003981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BE0229B58002B02D140235B426DE00023249356E00199249AF42013009B009B1875 +:40AA80009B00CB181B181B68012B01D101232393002302930199249AE42013009B009B189B00CB181B181C680199249AE82013009B009B189B00CB181B18186802AB03A995 +:40AAC0008022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF74AFF03002593259B002B01D0259B2CE00199249AEC2013009B009B189B00CB1873 +:40AB00001B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B01332493019BE0229A58249B9A42A2DC239B002B04D13D235B42259300E0C04603AB95 +:40AB40008021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B1593019B402B02D93C235B42C0E0159A9D239B00D358002B0FD1159A9D239B0039 +:40AB80000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C189280225200934203DD3C235B42199399E0159B1800FFF74EFF03001993199B002B1A +:40ABC00000D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B1819681598179AF02413009B009B189B00C3181B191B68994201D200231693179B61 +:40AC000001331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF075F8159B083305AA110018000BF04CFC03001993199B002B4DD1159B0833180063 +:40AC400009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199B002B3AD1159B083305A9402218000BF09FFB03001993199B002B30D105AA05A840 +:40AC8000002340210CF07CF903001993199B002B27D1002317930DE01599179AEC2013009B009B189B00CB181B1800221A60179B01331793159BE0229A58179B9A42EBDCBD +:40ACC000019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C04600E0C04605AB4021180003F0FFFE199B18001AB010BD00B595B001903F235B4256 +:40AD0000139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB40211800F1F7A2F9031E02DA3F235B420EE003AB4022002118001CF0E8FF03A9019B84 +:40AD400040221800FFF775FE03001393139B180015B000BD00B597B003900291019200934023159305AB4022002118001CF0CEFF05AB40211800F1F765F9031E02DA3C23BD +:40AD80005B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A1A600023180017B000BD00B583B00190C8235A00019B002118001CF0A7FFC046B8 +:40ADC00003B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A912AB009313001022F8F768FA03001F931F9B002B01D01F9B23E113AB1B781A060F +:40AE000013AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B791A0613AB5B791B041A4313AB9B791B021A4313ABDB7913431A9300231B931C9B68 +:40AE40001D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A4313AB9B7A1B021A4313ABDB7A13431C9300231D9313AB1B7B1A0613AB5B7B1B04EF +:40AE80001A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304931A9B0499059A0800034322931B9B13432393119B88331A00229B239C1360546001 +:40AEC000119A84235B00D218209B219C13605460119BC8331A000023002413605460119A002300249364D4640423259350E0229A012313401A005B01D21A13061A0019924A +:40AF0000209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343229313003B432393219BDA07209B5B080293029B13430293219B5B080393199BE0 +:40AF4000089300230993089B1B000B9300230A93029C039D23000A990B9A0800434020932B0053402193119A259B0933DB00D218229B239C13605460119A259B1933DB0061 +:40AF8000D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B48331A00259BDB00D3181893119BC8331A00259BDB00D3181793179B5C681B68209399 +:40AFC0002194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B1933DB00CB185C681B68209959400C91219961400D910C9B0D9C13605460249BDB0067 +:40B00000189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9B0F9C13605460249B01332493249A259B9A42CEDB259B5B002593259B082BADDD62 +:40B040000023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B441B7801221800F7F7B9FF03000593059B002B02D114235B4230E0059B5B69102B39 +:40B0800002D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493049B002B01D0049B18E00398009A01990123F8F72FF803000493049B002B01D0F3 +:40B0C000049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B000BD000070B5B2B029902891279200233193289B0F331A78172126AB9C4661447D +:40B100000F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F94172326AA944663441B78299A0933DB00D3185C681B682C932D940F233193E3E0EE +:40B14000319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B78162226A98C4662441B091370319B0F2B61D02C9B2D9CDAB2152126AB9C4661440F235F +:40B1800013400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119A0B002B432C93130033432D932F9B1A072E9B1B0913432E932F9B1B092F931523A3 +:40B1C00026AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A080043402E932F9B53402F93172326AA944663441B78299A1933DB00D3185C6887 +:40B200001B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A624013002D932C9B2D9CDAB2152126AB9C46A0 +:40B2400061440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B134300932D9B1B0901930E9B0099019A080003432C930F9B13432D932F9B1A072E9B0F +:40B280001B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B681B041593002314932E9B1499159A080043402E932F9B53402F93162326AA9446A2 +:40B2C00063441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93162326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A62401300D3 +:40B300002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B181B78279A1370279B5A1C2F9B1B0C1893002319936B4660215B181B781370279B73 +:40B340009A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9300231D936B4670215B181B781370279B191D2F9B1A022E9B1B0E0293029B1343A5 +:40B3800002932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B134304932F9B1B0C05936B461B7C0B70279B991D2F9B1A062E9B1B0A0693069B13434F +:40B3C00006932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A002D9B1B0E1E9300231F936B4678215B181B781370279B09331A002D9B1B0C2093EE +:40B40000002321936B4680215B181B781370279B0A332D9A120A2292002223926A468821521812781A70279B0B332D9A12002492002225926A469021521812781A70279B0D +:40B440000C332D9A12022C99090E08910899114308912D9A120E09926A462021521812781A70279B0D332D9A12042C99090C0A910A9911430A912D9A120C0B926A4628215D +:40B48000521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D926A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC04647 +:40B4C000A82C0410F0B597B00B900A910992089300230D93089B002B15D0089B029300230393039B5E0F00231F0033003B430AD11D9B049300230593059B5C0F00231D0077 +:40B5000023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933FF331022002118001CF0F0FB0B9AC4235B000A99D1500B9AA4235B00D218002394 +:40B540000024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B6933FF33089A099918001CF03EFB0B9A7823FF330121D15485E00EAB1022002118004E +:40B580001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB001B0ADAB20EAB9A73089BDBB2DB00DAB20EABDA73099B149337E0089B102B00D9E5 +:40B5C000102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159A139B9A429D +:40B60000E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0893149A139BD3181493089B002BC4D10023159317E00B99B4235B00159A8A1811 +:40B64000D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159B0F2BE4D90B9B6933FF3319000B9B6933FF331A000B9B18008D +:40B68000FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F70DFE03001293129B002B01D0129B4AE01D9B0693002307930B9AA8235B00D31844 +:40B6C0000699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B99BC235B00159A8A18D3181A781499159BCB181B785340D8B20B99BC235B00159AD2 +:40B700008A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B7933FF331A000B9B1800FFF7DBFC1D9A139BD31A1D93149A139BD31814931D9BEB +:40B74000002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A93069A079B9A4209D9069A079BD31A1A00089B9A4202D214235B42EAE0099AA423E4 +:40B780005B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1811685268A24215D801D1994212D8099AA4235B00D3185C681B68089A0492002287 +:40B7C00005920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00D3185C681B68089A1500002216005B1974410999A42252008A1813605460079BB3 +:40B800001293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9188A1812780132D0B20999B4225200C9188A18011C11700999B4225200CB189B18C0 +:40B840001B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319000BAA0AAB009313001022F7F727FD03000F930F9B002B01D00F9B6AE00023139398 +:40B8800046E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70119A139BD3180BA9F8 +:40B8C000139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D10999BC235B00139A8A18D3181A781199139BCB181B785340D8B20999BC235B00CD +:40B90000139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF331900099B7933FF331A00099B1800FFF7DAFB089A109BD31A0893129A109BD318129368 +:40B94000119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C911B921D9AA4235B00D3185C681B68590FE2000A432592DB0024931D9AA8235B008C +:40B98000D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D814235B4216E11D9B5933FF3319001B9B1C981A001CF019F9249A259B1A4304D1229A88 +:40B9C000239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B4628229B181B781EAA1370239B1B0C0C9300230D936B4630229B181B781EAA5370B6 +:40BA0000239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311936B4640229B181B781EAAD370239B1A02229B1D0E1543239B1E0EEBB21EAA13710D +:40BA4000239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B1A06229B1B0A0293029B13430293239B1B0A03936B461B7A1EAA9371229B239CC2 +:40BA8000DBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C1493002315936B4650229B181A781EAB5A72259B1B0A1693002317936B4658220C +:40BAC0009B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B1B02249A120E0492049A1A430492259B1B0E05936B461A7C1EAB1A73259B1B046B +:40BB0000249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249A120A0892089A1A430892259B1B0A09936B4620229B181A781EAB9A73249B259C9F +:40BB4000DAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB181B785340D8B21D99BC235B00279A8A18D318021C1A70279B01332793279B0F2BD1 +:40BB8000E4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E01C9A279BD3181C99279A8A1811781D9CBC22520027982018821812784A40D2B21E +:40BBC0001A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B005900491039202930A9C029A049905980C9B01930B9B00932300FFF765FC03000793079BC4 +:40BC0000002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B0DE00F9A1099059B1800FFF795FE03000793079B002B01D0079B00E000231800FF +:40BC400008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9B04931A9B0393179B0293169B0193089B00930B000021FFF7AFFF03001193119BD6 +:40BC8000002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB181B785340DBB21A00129B13431293139B01331393139A199B9A42EAD3129B002B62 +:40BCC00008D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B00190019B1800F7F7BBF9C8235A00019B1100180002F0FAFEC04603B000BD00B58C +:40BD000083B00190019B6422002118001BF0FEFFC04603B000BD00B597B0039002910192039B1B68180000F00FFC03001593029B002B04D0019B002B01D0022200E0012277 +:40BD400053236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190000F032FB039B14A90122180000F02CFB53236B441B78022B05D1039B019A02998F +:40BD8000180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA0398039B0C33159A190000F00EFB039A039B0C331900100000F029FB14AB1B780133F1 +:40BDC000DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390029101920093039B02990122180000F08DF903000593059B002B01D0059B21E04B +:40BE0000039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C331C00029B180000F08FFB03001A00012120001BF06BFF009A0199039B1800FFF7E1 +:40BE40006AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B1A6D019BD218C0235B009A4202D905235B4233E0C0235A0005AB002118001BF069 +:40BE800045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039B1B6D6593029B002B0ED0019B002B0BD005AA659BD318019A029918001BF094FEB9 +:40BEC000659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B010BD00B58BB00390029101920093039B0793079B1B68180000F026FB03000693D0 +:40BF0000019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A4202D905235B4260E0079BDB6D002B18D0079B5B6D012B05D0079BDA6C079B9B6D5C +:40BF40009A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E000230C93009B002B31D00C9B002B2ED00C9A0099079B1800FFF7CEFE27E0069A099B34 +:40BF8000934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A079B0C331900100000F030FA079B0C331900049A089B18001BF016FE089A049B2D +:40BFC000D3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079BDB6C5A1C079BDA64002318000BB000BD00B589B0059004910392059B0793039A7D +:40C0000004990798002300930023FFF76AFF03000693069B180009B000BD00B583B00190019B002B09D0019B180000F03DF8019B6421180002F05AFD00E0C04603B000BDF7 +:40C0400082B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D0082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C0464D +:40C08000482D0410782D0410A82D0410D82D041000B583B00190019B0C22002118001BF035FEC04603B000BD00B583B00190019B002B27D0019B1B68002B23D0019B5B6839 +:40C0C000002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B1B68DB685B001900100002F0FFFC019B9B6818001BF03EFA019B0C21180002F028 +:40C10000F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B01D1164B27E0029B1B6A98470200039B5A60039B5B68002B01D1114B1BE0019BCC +:40C14000002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B5A6A039B5B6818009047054B03E0039B029A1A600023180005B000BD00AFFFFFCF +:40C1800080AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B681A69019B5B68180090470300180003B000BDC04600AFFFFF10B584B0039002919F +:40C1C0000192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF00B583B001900091019B002B1B +:40C2000003D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300180003B000BDC04600AFFFFF00B585B00390029101920093039B002B01D1064B6C +:40C2400006E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1514B9EE0CC +:40C28000039B1B68DB681A00019B9A422DD2039B1B681A69039B5B681800904703001793179B002B00D07DE0039B1B685C69039B5B68019A02991800A04703001793179B03 +:40C2C000002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B1B689B68019304AB0293039B9B681593039B9A68039B1B68DB68D3181493039B76 +:40C300001B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF0F5FC002316931EE0159A169BD3181599169A8A1811780298169A821812784A40A5 +:40C34000D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A70169B01331693169A019B9A42DCD3039B1B681A69039B5B681800904703001793D1 +:40C38000179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A0470300179306E0C04604E0C04602E0C04600E0C04604AB4021180002F098FB179B180081 +:40C3C00018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A047030032 +:40C40000180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B03D0019B9B68002B01D12C4B52E0019B9A68019B1B68DB68D3181393019B1B68D5 +:40C440009A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69019B5B681800904703001293129B002B01D0129B2EE0019B1B685C69019B58686A +:40C48000019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B685C69019B5868019B1B689B681A0002AB1900A04703001293129B002B01D0129B32 +:40C4C00008E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFF10B584B00190019B002B07D0019B1B68002B03D0019B9B68002B01D1114B1DE0B2 +:40C50000019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B0CE0019B1B685C69019B5868019B1B68DB681A00039B1900A0470300180004B0F3 +:40C5400010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B0704782B00190019B002B01D1002301E0019B1B78180002B0704700B583B00190A4 +:40C58000019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A0299039B180007F088FB0300180005B000BD00B583B001900091009A019B110018009D +:40C5C00007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F068FD0300180005B000BD00B583B06C2101201AF03BFC03000193019B002B03D042 +:40C60000019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019B18001AF0A7FFC04603B000BD00B583B001900091009A019B1100180005F020FE76 +:40C64000C04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B000BD00B583B00190019B0021180005F017FE0300180003B000BD00B585B0039076 +:40C6800002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B0121180007F064FD0300180003B000BD00B585B0039002910192019A0299039B25 +:40C6C000180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F3FE0300180003B000BD00B585B0039002910192019A0299039801230AF040FC7D +:40C700000300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B180007F0FAFC019B180003B000BD00B583B00190019B180007F0FBFC019B1800F4 +:40C740001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04603B000BD00B583B001900091009A019B1100180007F0A6FD0300180003B000BDC9 +:40C7800000B583B00190019B0021180007F0F0FC0300180003B000BD00B585B0039002910192019A0299039800230AF0E9FB0300180005B000BD000000B585B00190164BDF +:40C7C0000393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B143324 +:40C800000393039B0293029B1B68002BE3D10023180005B000BDC0468C37041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7CF0 +:40C84000009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A600023F1 +:40C8800008E0059B14330593059B1B68002BE7D12E235B42180006B07047C0468C37041000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B0E +:40C8C0005A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC046ED +:40C90000DC37041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021CED +:40C940001A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B0F4 +:40C980007047C046DC37041086B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B16 +:40C9C00014330593059B1B68002BE7D12E235B42180006B07047C0461838041000B583B00190019B0C22002118001BF08FF9C04603B000BD10B58EB0059004910392029399 +:40CA0000059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D1644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A426C +:40CA400001D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B01330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D9304 +:40CA80000B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454B83E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9BC6 +:40CAC00001330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36490D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A00 +:40CB00000D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E0A2 +:40CB400007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED0079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9BFA +:40CB8000002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A1A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFF7C38041000ECFFFF77 +:40CBC00000EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B681900100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C211800CF +:40CC000001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A6000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B6856 +:40CC40009A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B002006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D0F1 +:40CC800007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C046CC380410FC3804102C3904105C39041000B583B001900091019B002B06D0009B002B03D051 +:40CCC000019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B001900E +:40CD0000019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E059 +:40CD40000023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F073 +:40CD80008AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B01931B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E002 +:40CDC0000F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB00790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A60A0 +:40CE00000F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD0C +:40CE40000200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9B0093012303F0FCFE030018000BB000BD80BFFFFF00B58BB0079006910592049322 +:40CE8000079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE00F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BD83 +:40CEC00000BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BD00B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F06D +:40CF0000A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFBC04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A0080 +:40CF4000009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A60C04602B07047C046943804109C38041082B002006B4607331A706B4607331B78CC +:40CF8000022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B4411 +:40CFC0000A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B0ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F80300319321 +:40D0000006AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1C1A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D199 +:40D04000049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009A72 +:40D08000019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE03000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B15 +:40D0C0001800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70009B054A5A60019B88331A00009B9A60C04602B07047C046A838041082B0020000 +:40D100006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023180002B0704782B002006B4607331A706B4607331B78043B5A425341DBB218009A +:40D1400002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9B00932300F8F798F803000793079B044A934201D1034B00E0079B180008B010BDFE +:40D1800000B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B236B44197807980D9B03930C9B02930B9B01930A9B00932300F8F74EF803001800DE +:40D1C00008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F71CF9019B180003B000BD00B583B00190019B1800F8F71BF9019B18001AF0BAF9D1 +:40D20000C04603B000BD82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B07047000000B587B0039002910192029A039B1B68D31A002BEC +:40D2400001DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019B1A1D019B1B6802990398F0F77DF903000593059B002B04D0059B0F4A94466344B8 +:40D2800012E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4201D0064B00E00023180007B000BDC046A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF1C +:40D2C00000B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E03D0124B1EE0124B1CE0009B1B78002B08D0009B1A780B236B441B789A4201D030 +:40D300000B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B00E00023180005B000BDC04600C6FFFF00C3FFFF10B586B003900291019201984C +:40D34000019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002B08D1019A019B883319001000FBF7D0FA03000593039B029A1A60059B180006B0FD +:40D3800010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9B002B04D00D9B454A9446634482E00B9B1A680C9BD2180A9B9A4201D0404B79E073 +:40D3C0000CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E00B9B19680C9A09980023069300230593002304930023039300230293002301935A +:40D4000000230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD2180B9B1A600CAA0A990B980223F0F79CF803000D930D9B002B04D00D9B1F4A94468C +:40D44000634437E00B9B1B680C9A099806920593002304930023039300230293002301930023009300230022002101F0D3FE03000D930D9B002B01D0104B1BE00B9B1A68C9 +:40D480000C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0064B07E00B9B1A680A9B9A4201D0044B00E0002318000FB000BDC04600C5FFFF69 +:40D4C0009AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA02990398F0F7F1F803000793079B002B04D0079B114A944663441CE0019A04AB25 +:40D5000011001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D0009B1B68002B03D1009B5B68002B01D0024B00E00023180009B000BD80C5FFFF1C +:40D5400080C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F703F803000B930B9B002B04D00B9B4E4A9446634495E0039B1A68099BD31802934E +:40D5800006AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA0299039B1800F0F769F803000B930B9B002B04D00B9B3D4A9446634472E0039B1A6810 +:40D5C000099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9B002B01D1334B5CE00A9A019B11001800FFF75CFB03000B930B9B002B01D00B9B25 +:40D600004FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF7B1FE03000B932AE017236B441B78032B04D017236B441B78022B1ED1019B186898 +:40D640005968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B18685968FFF7D8FD02000299039B1800FFF760FE03000B9301E00E4B0B930B9B2C +:40D68000002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FA0B9B18000DB000BD00C3FFFF00C5FFFF9AC4FFFF80C3FFFF00B595B00B900A9178 +:40D6C00009920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF743FF03001393139B002B04D0139B9D4A9446634432E10F9A109BD318129311AA87 +:40D7000012990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B002B01D0904B19E110AA12990FA80223EFF71AFF03001393139B002B00D0F5E0EB +:40D740000F99109A0B9800230693002305930023049300230393002302930023019300230093002301F056FD03001393139B002B00D0DBE00F9A109BD3180F9310AA1299EB +:40D780000FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B9806920593002304930023039300230293002301930023009300230022002101F02CFD03001393D4 +:40D7C000139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE03001393139B002B00D0A1E00F9B109A0B98002106910021059104920393002302930023E3 +:40D8000001930023009300230022002101F002FD03001393139B002B00D087E00F9A109BD3180F9310AA12990FA80223EFF79CFE03001393139B002B00D077E00F99109BF1 +:40D840000B9800220692002205920022049200220392002202920022019200930B000022002101F0D7FC03001393139B002B5DD10F9A109BD3180F9310AA12990FA8022341 +:40D88000EFF772FE03001393139B002B4ED10F9B109A0B9800210691002105910021049100210391029201930023009300230022002101F0AFFC03001393139B002B35D138 +:40D8C0000F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1800EFF7A5FE03001393139B002B1DD10CAA12990FAB1800EFF79AFE030013930B +:40D90000139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B9A4203D0114B139300E0C0460CAB1800F0F75AFB139B002B0FD0139B0C4A134024 +:40D9400005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B000BDC04600C3FFFF80C2FFFF9AC2FFFF80FF000010B590B0059004910392049BBE +:40D980000693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D00F9B824A94466344FCE0069A0A9BD3180D930BAA0D9906AB1800EFF7FDFD0300E6 +:40D9C0000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D9906A80423EFF7C0FD03000F930F9B002B04D00F9B6D4A94466344D3E0059B7C33FD +:40DA000006990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634A94466344BEE0069A0A9BD318069300230E93069A0D9B9A4234D00AAA0D9906A8B4 +:40DA4000A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB03000F930F9B002B0AD1059A07AB11001800FFF725FC03000F930F9B002B11D047 +:40DA8000059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A944663447FE0069A0D9B9A4246D00AAA0D9906A8A123EFF758FD03000F930F9B002B59 +:40DAC0002FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D00F9B324A944663445CE0069A0A9BD2180C9B9A4201D02F4B54E0059A0C9906AB29 +:40DB00001800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B40E00F9B623308D0059B1800F7F795FD0F9B1E4A9446634434E00E9B002B1ED1AD +:40DB40000598059B88331900059B7C331A00059B28331C0000230193002300932300FAF7CFFC03000F930F9B002B08D0059B1800F7F773FD0F9B0D4A9446634412E0059A4D +:40DB8000059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B00E00023180010B010BDC04600C3FFFF80C2FFFF9AC2FFFF80B1FFFF00B58FB0E2 +:40DBC000039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A83023EFF7C1FC03000D930D9B002B04D00D9B584A94466344A9E0059A099BD3181A +:40DC00000C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634495E00A9B002B04D00D9B4B4A944663448DE006AB13226A440C9905A8FFF742FC04 +:40DC400003000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC03000D930D9B002B04D00D9B394A944663446CE0099B002B01D1384B67E01323D5 +:40DC80006B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800FFF704F803000D930D9B002B01D00D9B4DE013236B441B78012B14D1039B186811 +:40DCC0005968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF7A3FF0D9B33E013236B441B78022B04D013236B441B78032B25D1039B1868596817 +:40DD0000FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B18685968FFF779FA059B099A1900FFF722FE03000D930D9B002B07D0039B1800FEF7A4 +:40DD400073FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF80C3FFFF10B58EB0079006910592049308AB1800FEF732FE059B002B06D0059B85 +:40DD8000013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B0193049B00932300FEF724FE03000D930D9B002B2AD10120FEF750FF03000C93FB +:40DDC0000C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA08AB196808AB5B681A00FFF765FC03000D930D9B002B03D0079B1800FEF714FFEB +:40DE000008AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D1834BF5E00D9B7C4A934201D00D9BEFE0059B002B06D0059B013B069AD3181B780C +:40DE4000002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B00932300FEF7C8FD03000D930D9B002B2AD10220FEF7F4FE03000C930C9A079B110018005A +:40DE8000FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B681A00FFF767FD03000D930D9B002B03D0079B1800FEF7B8FE08AB1800FEF784FE63 +:40DEC0000D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4A934201D00D9B93E0059B002B06D0059B013B069AD3181B78002B02D0464B0D9313 +:40DF00000EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D930D9B002B16D108AB196808AB5A68079B1800FFF743FE03000D930D9B002B03D0FA +:40DF4000079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E0059A0699079B1800FFF728FE03000D930D9B002B01D100234AE0079B1800FEF7A6 +:40DF800053FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE031E0DD1079B18685968FFF72CF9059A069B1900FFF780FB031E01D1002327E039 +:40DFC000079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B11001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031EAF +:40E0000001D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFF8C390410AC39041080ECFFFF80C4FFFF00EDFFFF00C4FFFFCC390410EC3904100C3A041008 +:40E04000283A041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB02932E +:40E0800000230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D930120FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD0300F3 +:40E0C0000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F802000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800A8 +:40E10000FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002B06D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CAB94 +:40E14000029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D930D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9B80 +:40E1800052E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD0120FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD0300C7 +:40E1C0000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F802000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF780 +:40E2000013FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF791F903000F930F9B180010B010BDC04680EFFFFF443A0410643A041080C3FFFF40 +:40E24000843A0410A03A04109EC4FFFF82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704700B58DB005900491039200230A9307AB49 +:40E280001800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B002B2CD107AA0499059B1800EFF7C2FB03000B930B9B002B21DB0B9B0A9AD31850 +:40E2C0000A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED107AA0499059B1800EFF7A4FB03000B930B9B002B03DB0B9B0A9AD3180A9307AB37 +:40E300001800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B930B9B002B01DA0B9B15E00B9B0A9AD3180A930499059B30221800EFF72FFB03007B +:40E340000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB0059004910392002328930398039B8833190028AA8523019306AB0093130000227F +:40E38000F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B681A00049BD31A1A00289B9A4202D26C235B420EE0059B1A68289B5B42D218059B46 +:40E3C0001A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291019200230793019B1B7804AA05A91800FEF7A0FA03000693069B002B01D0069B03 +:40E4000011E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079AD3180793079B180009B000BD00B587B003900291019200230593019B1800FEF714 +:40E440005DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000493049B002B01DA049B25E0049B059AD31805931FE0019B1800FEF73FFC030084 +:40E48000022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049B002B01DA049B07E0049B059AD318059301E0034B00E0059B180007B000BDC0461F +:40E4C00080C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A049908AB1800FFF7A1FF03000993099B002B01DA099BA6E0099B0A9AD3180A93F5 +:40E50000059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C235B4290E0089B013B0893089B00221A700A9B01330A930A9A049908AB1800EFF7F5 +:40E5400041F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB03221800EFF71CFA03000993099B002B01DA099B69E0099B0A9AD3180A93059B1800FEF70E +:40E58000BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1800FEF7ABFB0300022B15D1059B18685968FFF754FE0200049908AB1800FFF7B9 +:40E5C0000BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A80B9B00932300EFF70BFB03000993099B002B01DA099B26E0099B0A9AD3180A939D +:40E600000A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD3180A93049908AB30221800EFF7B7F903000993099B002B01DA099B04E0099B0A9AF9 +:40E64000D3180A930A9B18000CB010BD00B591B0059004910392049A039BD318099300230E93059B1800FEF749FB0300012B00D034E1059B18685968FFF7E8FD03000D932C +:40E6800006AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E006AA049909AB1800EFF7C4F903000F930F9B002B00DAD4E00F9B0E9AD3180E9377 +:40E6C00006AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB1800EFF7A8F903000F930F9B002B00DAB8E00F9B0E9AD3180E9306A90D980023002257 +:40E7000001F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F930F9B002B00DA9CE00F9B0E9AD3180E9306AA0D98002301930023009313000022C1 +:40E74000002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF903000F930F9B002B00DA7BE00F9B0E9AD3180E9306AA0D980023019300230093002388 +:40E78000002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F930F9B002B5DDB0F9B0E9AD3180E930D980023019306AB009300230022002100F071 +:40E7C0003DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B3FDB0F9B0E9AD3180E930D9806AB01930023009300230022002100F01FFF030099 +:40E800000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9B0E9AD3180E9306A90D9800230193002300930023002200F001FF03000F930F9BC3 +:40E84000002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD3180E9306AB1800EFF7BFFB0F9B002B01DA0F9B35E1049909AB00221800EFF718FA13 +:40E8800003000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF791FF03000F930F9B002B01DA0F9B17E10F9B0E9AD3180E93049909AB302218005C +:40E8C000EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B1800FEF70CFA0300022B00D0F6E0059B18685968FFF7B4FC03000C9300230B93002393 +:40E900000A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AD3180B93099B1A00049BD31A002B02DC6C235B42D4E0099B013B0993099B002204 +:40E940001A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9BBEE00F9B0B9AD3180B93049909AB03221800EFF713F803000F930F9B002B01DA22 +:40E980000F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B01DA0F9B9CE00F9B0B9AD3180B93049909ABA1221800EEF7F1FF03000F930F9B9D +:40E9C000002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800FFF7FAFC03000F930F9B002B01DA0F9B76E00F9B0A9AD3180A930A9A049909AB2F +:40EA00001800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909ABA0221800EEF7BAFF03000F930F9B002B01DA0F9B54E00F9B0A9AD3180A930E9A68 +:40EA40000A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DA0F9B3DE00F9B0E9AD3180E93099B04221A70049909AB01221800EFF719F90300E4 +:40EA80000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE03000F930F9B002B01DA0F9B18E00F9B0E9AD3180E93049909AB30221800EEF778 +:40EAC0006DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B180011B000BDC04680C6FFFF00B583B001900091044B1B68009A0198002198473F +:40EB0000C04603B000BDC0460C040008F0B583B001900091019B1C0000231D00009B1E0000231F0032003B00200029001DF042F903000C001800210003B0F0BD70B5CAB00F +:40EB4000339032913192309300234493339B1B684293339B5B684193339B9B684093339BDB683F93419B9A08419BD3183E93409B9A08409BD3183D933F9B9A083F9BD31813 +:40EB80003C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B45930023439351E2319A449BD3181B781900449B5A1C319B9B181B781B021943449BF8 +:40EBC0009A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B93449B1A1D319B9B181B781900449B5A1D319B9B181B781B021943449B9A1D319B3A +:40EC00009B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B08331A00319B9B181B781900449B09331A00319B9B181B781B021943449B0A331A00AD +:40EC4000319B9B181B781B041943449B0B331A00319B9B181B781B060B43369300233793449B0C331A00319B9B181B781900449B0D331A00319B9B181B781B021943449B93 +:40EC80000E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B43349300233593499B0093002301933A9B3B9C0099019A5B1854413A933B94489B0293D4 +:40ECC000002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18544138933994479B069300230793399B1B000893002309930699079A089B099CCB +:40ED0000C9186241369B379C5B18544136933794469B0A9300230B93379B1B000C9300230D930A990B9A0C9B0D9CC9186241349B359C5B185441349335943A9B4993389BA9 +:40ED40004893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B184593429A499B11001800FFF7D0FE05000E003C9A489B11001800FFF7C8FE03000C00DF +:40ED8000ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800FFF7B4FE03000C005B1974413A933B94419A499B11001800FFF7A8FE05000E0063 +:40EDC000429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE03000C00ED1866413D9A469B11001800FFF78CFE03000C00ED1866413E9A459BE2 +:40EE000011001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE05000E00419A489B11001800FFF76EFE03000C00ED186641429A479B1100180014 +:40EE4000FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866413D9A459B11001800FFF750FE03000C005B197441369337943F9A499B11001800C0 +:40EE8000FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B11001800FFF732FE03000C00ED186641429A469B11001800FFF728FE03000C005E +:40EEC000ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B534345933B9B1B00109300231193389B399C1099119A5B18544138933994399BB8 +:40EF00001B00129300231393369B379C1299139A5B18544136933794379B1B00149300231593349B359C1499159A5B185441349335943A9B4993389B4893369B4793349BE4 +:40EF40004693359B1B00169300231793169A459B9B184593499B189300231993459B9B081A9300231B931899199A1A9B1B9CC9186241459B1C9300231D9303231C9C1D9D8F +:40EF8000200098431E900023280018401F901E9B1F9C5B1854413A933B94459A0323134045933A9B4993489B2093002321933B9B1B00229300232393209B219C2299239A81 +:40EFC0005B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B259C2699279A5B1854413A933B943A9B4793469B2893002329933B9B1B002A9346 +:40F0000000232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D933B9B1B002E9300232F932C9B2D9C2E992F9A5B1854413A933B943A9B4593449B24 +:40F0400010334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62339B479A9A62339B469ADA62339B459A1A63C0464AB070BD00B583B00190019B0F +:40F08000002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D0019B48211800FFF721FDC04603B000BD00B589B003900291019200230793019BE1 +:40F0C0000693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0069B002B3ED0039B5B6C002B3AD0039B5B6C1022D31A0593019A059B9A4213D24F +:40F10000039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B5A64002306931DE0039B5B6C3033039AD3180433059A0299180018F055FD039BBC +:40F1400000225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059BD31A0693069B0F2B13D9069B1B090493029A079BD218049903980123FFF7DEFCC6 +:40F18000049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B34331800029A079BD318069A190018F01BFD0023180009B000BD88B003900291DE +:40F1C0000192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A780499079BCB181B785340D9B21B236B441B226A4412780A431A70079B013307938F +:40F20000079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009300230593029B002B13D0039B0833019A02991800EFF792FB03000593059B002B56 +:40F2400041D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A00991800EFF77BFB03000593059B002B2CD1099B002B0BD0039B38330A9A0999180055 +:40F28000EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF75DFB03000593059B002B12D10D9B002B10D0039B14330E9A0D991800EFF74EFBF8 +:40F2C0000300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF10B584B0039002910192039B5C68039B44 +:40F3000008331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039B083300211800EFF713FE031E07DD039B083300211800EFF7CCF8031E01D12B4B7E +:40F3400051E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C3300211800EFF7B7F8031E0FD0039B383300211800EFF7EEFD031E07DD039B38330021180052 +:40F38000EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0029B002B11D0039B443300211800EFF7CFFD031E07DD039B503300211800EFF73D +:40F3C000C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC024B00E00023180004B010BD80BFFFFF30B591B0039000230F93039B08330021CA +:40F400001800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1E9341DBB20D93039B383300211800EFF78FFD03005A1E9341DBB20C93039B203360 +:40F4400000211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD03005A1E9341DBB20A930D9B002B0AD00C9B002B07D00B9B002B04D00A9B002B01D0E3 +:40F48000012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D00A9B002B01D0012300E0002308930D9B002B0AD00C9B002B07D00B9B002B04D17C +:40F4C0000A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D10A9B002B01D0012300E000230693099B002B05D1089B002B02D154 +:40F50000079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B002B22D10D9B002B1FD00C9B002B1CD0039B08331800039B2C331900039B3833DF +:40F540001A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B08331800EFF7AFF80200039B5A60089B002B1BD0039B08331800039B14331900039B20338C +:40F580001A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B254A9446634443E0079B002B16D0039B2C331800039B38331900039B14331A0059 +:40F5C000039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002B1FD0039B2C331800039B38331900039B20331C00039B44331D00039B5033039AFB +:40F600005C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A9446634406E00599039B01221800FFF761FE0300180011B030BDC04680BFFFFF00B587B0A1 +:40F640000390029101920093039B083300211800EFF77EFC031E21D0039B2C3300211800EFF776FC031E19D0039B383300211800EFF76EFC031E11D0039B20330021180064 +:40F68000EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E000230493049B002B0AD1019B002B05D1009B002B02D1089B002B01D02B4B52E0029B002B10 +:40F6C0000CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002B0CD0039B2C331A00019B11001800EEF742FD03000593059B002B2FD1009B002BFC +:40F700000CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B0CD0039B20331A00089B11001800EEF722FD03000593059B002B0FD1099B002B02 +:40F740000ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E00023180007B000BD80BFFFFF00B587B00390029101920093039B083300211800FE +:40F78000EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800EFF7D6FB031E11D0039B203300211800EFF7CEFB031E09D0039B14330021180085 +:40F7C000EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD0039B44331A00029B11001800EEF7C3FC03000593059B002B1FD1019B002B0CD063 +:40F80000039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D0039B5C331A00009B11001800EEF7A3FC03000593059B002B04D0059B034A9446B7 +:40F84000634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC220021180018F053FA019A0299039B180000F003F8C04605B000BD84B00390029101923C +:40F88000039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180002B0704700B583B00190019B002200211800FFF71DFD031E01D0164B27E0019B69 +:40F8C00008331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031E12D0019B14331800EEF7B9FE0300012B0AD9019B14331A00019B08331900100087 +:40F90000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059B1800FFF7BFFF031E07D1059B012201211800FFF7DDFC031E01D01D4B35E0059BD7 +:40F9400008331800059B2C331900059B38331C00059B20331D00059B1433002202920022019200932B00220002F0FCFA031E01D00F4B1AE0059B2C331800059B383319004A +:40F98000059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF9031E01D0024B00E00023180007B030BD00BEFFFF00B583B001900091019B1800E0 +:40F9C000FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009B083319001000EFF71BFA031E0AD1019B14331A00009B143319001000EFF710FA3D +:40FA0000031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B002200211800FFF763FC031E01D0294B4CE007AB1800EEF7C5FA059B5A68049931 +:40FA400007AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF7DFF9031E03DB04235B420B9321E0059B5B680A93059B14331A00059B08331C00F7 +:40FA8000059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907AB1800EEF7BDFF03000B9302E0C04600E0C04607AB1800EEF797FA0B9B002B04D00A +:40FAC0000B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B005900491039200230693059BA0229B58002B3FD0059B8C331800059B8C33190078 +:40FB0000059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C331900059B08331A00F0F756FF03000793079B002B00D072E0059B98331800059B99 +:40FB400098331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059B98331900059B08331A00F0F735FF030007935DE0069B5A1C06920A2B01DD2E4B2A +:40FB800057E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D1059B8C331800059B98331900059B08331A00F1F737FD03000793079B002B34D166 +:40FBC000059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B08331A00F1F743FE03000793079B002B1ED1059B8C331800059B8C331900059B1433C0 +:40FC00001A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180008B010BD80BBFFFF10B5A8B02A +:40FC40000590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059B01211800FFF744FB031E01D0DF4BFCE121AB1800EEF7A6F91EAB1800EEF7A2F922 +:40FC80001BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB1800EEF78FF915AB1800EEF78BF912AB1800EEF787F909AB1800EEF783F906AB1E +:40FCC0001800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1059B08331A0021AB11001800EFF798F8031E03DB04235B42279382E121AA09AB0E +:40FD000011001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A0499059B1800FFF7DAFE03002793279B002B00D039E1059B8C331A0021A921AB180059 +:40FD4000F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE03002793279B002B00D021E1059B2C3319001EAB01221800EFF73DFB0300279399 +:40FD8000279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00D009E1039B049A18A81C21F1F724FD03002793279B002B00D0FFE018AA1EA9D3 +:40FDC0000FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB1800EFF74AFA03002793279B002B00D0E9E00FAB2693039B049A18A81C21F1F7FCFC45 +:40FE000003002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B00D0D3E0059B50331A000CA90CAB1800EFF722FA03002793279B002B00D0C7E065 +:40FE40000CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE03002793279B002B00D0B5E0059B38331C00059B8033259A21A912A800932300F0F7C8FEC6 +:40FE800003002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B00D09BE0059B5C331A0021A915AB1800F0F792F903002793279B002B00D08FE08C +:40FEC000059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B38331A0021A915AB1800F0F776F903002793279B002B00D077E015AA12A921AB1800B6 +:40FF0000EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB1800F0F759F903002793279B002B00D062E0059B08331A0021A921AB1800F0F7F7 +:40FF40004BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A800932300F0F754FE03002793279B002B46D109AA06AB11001800EEF751FF031E29 +:40FF800002D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E05A +:40FFC000C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE080BFFFFF80BCFFFFC04604E0C04602E0C04600E014 +:020000041002E8 +:40000000C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D00FAB1800EDF7E0FF0CAB1800EDF7DCFF21AB1800EDF7D8FF15AB1800EDF7D4FFC4 +:4000400012AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279B034A9446634400E00023180028B010BD00BDFFFF00B59BB00390029101920093F1 +:400080000023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B681800FCF751FA03001593039B199350E0159B1793029A159B9A4201D2029B17934A +:4000C0001C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF803001693169B002B3AD104A91C9B04221800FCF762F803001693169B002B31D105AA36 +:400100001C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C1992197805A8189A821812784A40D2B21A70189B01331893189A179B9A42EDD304AB81 +:40014000DB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C04602E0C04600E0C04605AB40211800FEF7BDFC169B18001BB000BD000010B58EB090 +:400180000590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE0049B002B01D1654BC5E0059BA8229B58DBB21800FBF744FF03000B930B9B002BB1 +:4001C00001D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3189A1C129B9A4207D3099B5A00129BD3189A1C0A9B9A4201D9504B9CE00A9A149B2A +:400200000021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D930D9B002B04D00D9B454A9446634482E00C9A099BD3180C930C9B119A10990B9861 +:40024000FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9AD21A129BD31A023B0C9AD3180C930C9B5A1C0C9201221A70129A13990C9B180070 +:4002800017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002B28D1099B0133149AD0180A9A099BD31A591E149B5A1C099C06AB00932300FFF763 +:4002C000D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E099906AB009313002200FFF7C3FE03000D9302E0C04600E0C04606AB1800FBF78B +:40030000D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB030009E0149C039A04990598149B00932300FFF784FC030018000EB010BD80BFFFFF5C +:4003400080BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B58002B01D0464B88E0049B002B05D00F9B002B02D0109B002B01D1414B7DE0059B42 +:400380005B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0089A0E9BD31A033B0B930A9B5A1C0A9200221A70029B002B2FD10A9B5A1C0A9262 +:4003C00002221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D1099B013B0993099B002B02D0079B002BEBD0099B002B02D0079B002B04D0079BE8 +:40040000204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9201221A7004E00A9B5A1C0A92FF221A700B9B5A1E0B92002BF5D10A9B5A1C0A92BA +:4004400000221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7D9FA030009E0109C039A04990598109B00932300FFF7E2FB030018000CB010BD3A +:4004800080BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B0FD021E0069C079A089909980E9B02930D9B01930C9B00932300FFF743FF030066 +:4004C00013E0069C079A089909980E9B04930D9B03930C9B029300230193002300932300FFF74CFE030000E0014B18000AB010BD00BFFFFF10B5E04CA544059004910392D6 +:400500000293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA74321360FFAB74331B680F2B06D9FFAB74331A688023DB009A4201D9D04BD9E1059BA822E6 +:400540009B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1FFAB70331B681800FBF7EEFF0300FFAA6C321360FFAB6C331B6801335A00FFABA9 +:4005800074331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF739FA03000BE0FFABA0331C68039A049905981AAB00932300FFF740FB0300FFAA5F +:4005C00088321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB00221800FBF792FD0300FFAA88321360FFAB88331B68002B04D007AB1800FBF7C1 +:4006000053FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B68D31A5A1EFFAB6C33196807AB009313002200FFF71FFD0300FFAA88321360FFABA3 +:4006400088331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B68D31A591E1AAA0132FFAB6C331C6807AB00932300FFF7FEFC0300FFAA883213607C +:40068000FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAA98321268FFA994310968FFA870300068FBF7BCFD0300FFAA88321360FFAB8833B9 +:4006C0001B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CFFA97C310A601978FFAB7B33FFAA7B3212780A431A70FFAB7C331A68FFAB6C3330 +:400700001B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB84331B68D3181A78FFAB7C331B68591CFFA87C3001601B785340DBB25AB2FFAB7B3316 +:400740001B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB84331A68FFAB6C331B689A42D3D30023FFAA80321360FFAB7A3300221A700023FFAABA +:40078000843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A3212780A431A70FFAB7A331B785B42DAB2FFAB7A331B781343DBB2DB09DBB201225340B5 +:4007C000DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360FFAB6C331B685B00FFAA74321268D31A9A1EFFAB84331B689A42C4D8FFAB7C33BD +:400800001A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7801225340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB7B331B7887 +:40084000002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B689A1AFFABA8331B689A420FD9064BFFAA883213602DE0C04678FBFFFF80BFFFFF45 +:40088000A0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1AFFAB9C331B681A60FFAB9C331B681A68FFAB7C331968FFABA4331B68180017F008 +:4008C00093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F90AAB40211800FEF701F9FFAB88331B6818009123DB009D4410BDC04610B5D44C01 +:40090000A54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D1059BA4229B58002B01D0CA4B8BE1059B5B68FFAA1C321360FFAB1C331B680F2B39 +:4009400006D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40331968059B1800FFF755F803000BE0FFAB40331C68039A0499059806AB00932300CD +:40098000FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA24321360FFAB233300221A70FFAB24331B685A1CFFA924310A601978FFAB2333FFAA2332F5 +:4009C00012780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213603DE0FC +:400A0000FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B785B42DBB21343DBB2DB09DBB201225340D9B2FFAB2233FFAA223212780A431A7092 +:400A4000FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A00FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C3394 +:400A80001B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A700A +:400AC00066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213602AE0FFAB24331A68FFAB2833B6 +:400B00001B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB22331A70FFAB22331B785A425341DBB21A00FFAB2C331B689B18FFAA2C321360FFAB3F +:400B400028331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A60A5 +:400B80001978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB25AB2FFAB23331B785BB213435AB2FFAB23331A70FFAB23331B78002B04D0264BD8 +:400BC000FFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB48331B689A4204D91D4BFFAA3032136020E0FFAB24331A6806ABD31A1A00FFAB1C337D +:400C00001B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B68180016F0E1FF0023FFAA3032136000E0C0468023DA0006AB11001800FDF756FFFE +:400C4000FFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFF10B58AB00990089107920693099BA4229B58002B02D0012B11D025E0069C079A0B +:400C8000089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069C079A089909980F9B05930E9B04930D9B03930C9B029300230193002300932300AD +:400CC000FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B00590049103920293279B1E9300232093029B012B06D1059BA4229B58012B01D09C4B33E1049B002BF0 +:400D000001D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F903001C931C9B002B01D1904B1BE11C9B1800FBF70AFC03002593059BA8229B58DBB2CD +:400D40001800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B931B9B023B1A931B9A1A9BD3189A1C1D9B9A4201D97D4BF5E01B9A1B9BD3189A1CAF +:400D80001D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F0B5FF219A09A90398049B984703001F931F9B002B04D01F9B6D4A94466344D1E029 +:400DC000059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3181E931E9B5A1C1E9201221A70219A09A91E9B180016F0F8FE1E9A219BD3181E9382 +:400E000006AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E006AB1800FBF7AEF903001F931F9B002B6FD11E9906AB08221800FBF7BDF9030062 +:400E40001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A09A906AB1800FBF7A7F903001F931F9B002B54D11E9A06AB11001800FBF7BAF93A +:400E800003001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9BD21A209BD31A591E1B9C1E9A06AB00932300FFF7DFF803001F931F9B002B32D187 +:400EC000059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2111410A0052B213405BB2DAB2279B1A701E9A1B9BD3181E931E9B5A1C1E92BC22AB +:400F00001A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800FBF7BCF81F9B002B01D01F9B14E0029B002B07D132 +:400F4000279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF76DFE0300180022B010BDC04680BFFFFF80BBFFFF00B58BB00291019200930F2373 +:400F80006B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D00F236B441B781800FBF74AF803000793079B002B01D16C4BD3E006AA05A90F233E +:400FC0006B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069A029BD31808337F2B0ED8029B0A331A00029B9A4208D3069A029BD3180A331A00D1 +:40100000029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0069A029BD318099AD31A0A3B099309E0099A029B9A4201D24B4B92E0099A029B4C +:40104000D31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089B5A1C089201221A70099A089BFF21180016F04CFE089A099BD3180893089B5A1C4A +:40108000089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0089B5A1C089230221A70089B5A1C0892069AD1B2029AD2B28A18D2B20832D2B20D +:4010C0001A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1C089206221A70089B5A1C0892069AD2B21A700599069A089B180016F075FD069BE4 +:40110000089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089204221A70089B5A1C0892029AD2B21A70029A0199089B180016F056FD089A029B7B +:40114000D31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E0002318000BB000BD80BFFFFF10B58AB0059004910392029300230893002307935B +:40118000029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB18780F9B00932300FFF7E5FE03000993099B002B01D0099B63E0029B002B07D10F9ABC +:4011C0000F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B002B02D110235B424AE0059B5B681900012015F03BFE03000793079B002B06D100 +:40120000089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD03000993099B002B1ED1079A0899059B1800FEF7EFFB03000993099B002B15D1F1 +:40124000059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9B180016F0C1FC02E0C04600E0C046089B180016F07FF9079B180016F07BF9099BC8 +:4012800018000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B01939E +:4012C0000AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF7F2FC030000E0014B180008B010BD00BFFFFF1A +:4013000010B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BFBE1059B5B68FFAA8C321360FFAB8C331B680F2B06D9FFAB8C331A688023DB0019 +:401340009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB03000BE0FFABB0331C68039A0499059807AB00932300FEF762FC0300FFAA903213601B +:40138000FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B68013B9C4AFFA994318C466244D35CBC2B01D0994BB1E1FFAB9C331B78002B1AD0B2 +:4013C000FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B9BE1FFAB84331B681800FBF7ADF80300FFAAA0321360FFABA8331B781800FAF7F2 +:401400001FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B681800FBF792F80300FFAA80321360FFAB2C3308220021180016F069FC059B083318009C +:40144000EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C331A6813005B079B1ADB001A00FFAB7C331B68D318083319410B1E01D0644B4CE1E5 +:40148000FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B68013BFFAA8C321360FFAB80331B689A1CFFAB8C331B689A4201D9554B2DE1FFAB72 +:4014C0008C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB20331800FAF7D5FDFFAB84331968FFAB203300221800FAF70AFE0300FFAA9032136049 +:40150000FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB80331C68FFAB78331A68FFAB88331868FFAB203300932300FEF79DFD0300FFAA903273 +:401540001360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C321268D100FFAA7C3212688A1AFF2111410A0052B213405BB2DAB2264BFFA99431DE +:401580008C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB88331B689A4205D9FFAB88331B681B78002BE9D0FFAB88331B685A1CFFA9883140 +:4015C0000A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31AFFAA74321360FFABAC331B68013315D0FFABAC331B68FFAA743212689A420DD016 +:40160000054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20331800FAF7AFFD0300FFAA90321360FFAB90331B68002B5FD1FFA92C31FFAB20334F +:4016400008221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A68FFABA4331968FFAB20331800FAF7A4FD0300FFAA90321360FFAB90331B68002BC1 +:401680003ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA90321360FFAB90331B68002B2CD1FFAA3432FFAB203311001800FAF79DFD0300FFAA9032A8 +:4016C0001360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F05DFA031E11D00F4BFFAA903213600CE0C0460AE0C04608E0C04606E0C04604E05B +:40170000C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB009D4410BD80BCFFFF10B58CB00990089107920693099BA8229B58002B04D0099B20 +:40174000A8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B059301235B4204932F236B441B780393109B02930F9B01930EAB1B7800932300FFF7C0FDF2 +:40178000030018000CB010BD10B58AB0059004910392029300230993059B5B6807930023069300230893029B012B06D1059BA4229B58002B01D0384B6BE0079B190001205D +:4017C00015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B03D110235B42099338E0079C0E9A0D990CAB1878089B00932300FFF7BBFB03002A +:401800000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C039A04990598069B00932300FEF706FA03000993099B002B0FD1079A0899069BD1 +:401840001800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B09D0079A069B11001800FDF73FF9069B180015F07FFE089B002B09D0079A089B3A +:4018800011001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059AF5 +:4018C000069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF714FF80 +:40190000030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB019B98331800ECF75FFB019B68331800ECF75AFB019B20331800ECF755FB019BD7 +:4019400038331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08331800ECF741FB019B80331800ECF73CFB019B74331800ECF737FB019B5C33180019 +:40198000ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000010B59EB0059004910392029300231D9306AAB44B1000190036231A0016F014F996 +:4019C00036231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D004235B424AE1059B00211800EDF7B0FA031E1DDD039B01211800EDF7A9FA031E36 +:401A000016DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DD059A049B11001800EDF7FAF9031E02DB04235B4222E114AB1800ECF7C3FA17ABCB +:401A40001800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A917AB01221800EDF7C6FC03001D931D9B002B00D0E8E017AB1800ECF7A8FD0200CE +:401A80006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB11001800EDF7A0F803001D931D9B002B00D0CBE072236B4400221A80059B9B683D +:401AC0001B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C1A0014AB11001800ECF7C6FC059A14A9029B1800EFF796FD03001D931D9B002B46 +:401B000000D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B00932300EFF775F803001D931D9B002B00D090E01CAB01221A805EE014AB01211800F7 +:401B4000EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE0059A14A9029B1800EFF75CFD03001D931D9B002B00D071E0029B01211800EDF7E9 +:401B8000E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A20980021EEF733FC03001D935EE014A914AB01221800EDF71FFC03001D931D9B002B36 +:401BC0004ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800EEF7FAFE03001D931D9B002B3CD11CAB1CAA128801321A801CAA6A236B441288A0 +:401C00001B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B4472226A44128801321A8072236B441A881B9B9A4200D24EE700E0C04604235B425B +:401C40001D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB0E5 +:401C800010BDC046BC3A041000B58DB0039002910192009300230B93009B002B06D0009B00211800EDF754F9031E02D004235B4271E0039B01211800EDF74AF9031E0DDD95 +:401CC000029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4259E008AB1800ECF76DF905AB1800ECF769F9039908AB01221800EDF77CFB030001 +:401D00000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AA08A9009B1800EFF77DFC03000B930B9B002B22D105AA08A908AB1800EEF74CFABE +:401D400003000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D108AA0199009B1800EFF780FD03000B9308E0C04606E0C04604E0C04602E0C046AC +:401D800000E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB0039002910192009300230B9308AB1800ECF708F905AB1800ECF704F9009B002B46 +:401DC00033D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B002B00D08CE0019A009905AB1800EDF791FA03000B930B9B002B00D082E008AA88 +:401E000005A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F8031E02D04E4B0B937BE00E9B002B30D0029B002B02D1494B0B9372E0029908ABA6 +:401E400001221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA03000B930B9B002B53D108AA05A905AB1800EEF7B2FD03000B930B9B002B4AD105AB01 +:401E800000211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B002B02D12D4B0B933BE0029A0F9908AB1800EEF791F903000B930B9B002B2BD136 +:401EC00008A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF77BFD03000B930B9B002B19D108AB00211800EDF72DF8031E13D0194B0B9310E0AE +:401F0000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460B9B002B0CD00B9B0D4A934208D00B9B0A4A934204D00B9B094A94466344BF +:401F40000B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFF00BEFFFF00B58DB0039002910192009300230B9308AB1800ECF724F805AB180018 +:401F8000ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF71BF903000B930B9B002B00D0C8E0039B01211800ECF7CCFF031E07DD039A08AB3F +:401FC00011001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B002B20D0009B01211800ECF7B1FF031E16DD0E9B01211800ECF7AAFF031E0FDD82 +:40200000039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DB5C4B0B939DE0029B002B00D199E0019B002B00D195E0009B002B00D191E00E9B6E +:40204000002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E02DC4C4B0B937CE00E9A009908AB1800EEF7B2F803000B930B9B002B62D108A908 +:4020800008AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF903000B930B9B002B50D105AA08A908AB1800EEF791FC03000B930B9B002B47D13B +:4020C00008AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF803000B930B9B002B34D108A908AB01221800EDF780F903000B930B9B002B2BD156 +:40210000019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF75BFC03000B930B9B002B19D108AB00211800ECF70DFF031E13D0164B0B9310E0D2 +:40214000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800EBF73FFF05AB1800EBF73BFF0B9B002B08D00B9B064A934204D0DA +:402180000B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291019200930023079304AB1800EBF70AFF009B002B15D0039904AB01221800EDF754 +:4021C0001AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B26D10A9B002B15D0029904AB01221800EDF701F903000793079B002B1AD104AA0A +:4022000001990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B1800EFF723FB0300079306E0C04604E0C04602E0C04600E0C04604AB1800EBF7A0 +:40224000D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B000BD00B583B00190019B002B05D0019B6C211800FCF73AFC00E0C04603B000BDDC +:4022800000B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD000082B001900091019B00221A60019B00225A60009B002B18D1019B1B4A9A60019BA3 +:4022C0001A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A1A62019B174A5A6217E0019B164A9A60019B164ADA60019B154A1A61019B154A11 +:402300005A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A660023180002B0704767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BA9 +:40234000ABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964A44FFABE70B5CEB00190009100234D930EE0019B4D9A02329200D158DA +:402380001F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E04D9B9B00009AD3181B781A064D9B9B0001330099CB181B781B041A434D9B9B003A +:4023C00002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA944663444D9A9200D1504D9B01334D934D9B0F2BD4D900234D9300F09EFCC0467F +:40240000D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C341F3 +:402440004B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D218E34B97 +:402480004EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D84B4EA98C4663441B680D21CB415A40D44B4EA98C4663441B681621CB415A4002 +:4024C000D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA8844663449868C84B4EACA44663441C68C64B4EADAC4663445B68234303400B43D3184B93C14B61 +:402500004EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA98C466344DA61B74B4EAA944663449A69B44B4EA98C466344DB680621CB4119007C +:40254000B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B40D218A84B4EA98C4663445969A54B4EA884466344D868A34B4EACA44663441C69E1 +:40258000A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9B591C9A4B4EA8844663448900CB58D3184C93944B4EAA94466344DB690222D341B0 +:4025C0001A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB415A40884B4EA98C466344D969854B4EA8844663441B681940824B4EA8844663442A +:402600005868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93784B4EAA944663449A684C9BD218754B4EA98C4663449A604C9A4B9BD218714BF5 +:402640004EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB411900684B4EA8844663449B680B20C3415940644B4EA8844663449B681920C34149 +:402680004B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA4466344DC68584B4EADAC4663441B69634003404B40D2184D9B991C534B8900CB58D2189F +:4026C0004D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B690222D3411A00474B4EA98C4663449B690D21CB415A40434B4EA98C4663449B6916214C +:40270000CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA8844663441868374B4EACA44663449C69354B4EADAC466344DB69234303400B43D318B3 +:402740004B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218284B4EA98C4663445A61264B4EAA944663441A69234B4EA98C4663445B680621CA +:40278000CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920C3414B40D218174B4EA98C466344D968144B4EA8844663445868124B4EACA4467C +:4027C00063449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB58D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B6940 +:4028000006E0C046D4FEFFFFF43A0410F4FEFFFF0222D3411A00FE4B4EA98C4663445B690D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C46634459693E +:40284000F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C69EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9B49 +:40288000D218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA94466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B68FA +:4028C0000B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663449968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B68C7 +:40290000634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA8844663448900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C466344B4 +:402940001B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C4663441969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA4466344F8 +:402980001C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA694C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944B66 +:4029C0004EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA884466344DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C466B +:402A000063445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663445B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA88446CD +:402A400063448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C466344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C4673 +:402A80006344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA4466344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663445E +:402AC0009A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A604B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA88446CC +:402B000063449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA98C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4655 +:402B400063441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA8844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA986 +:402B80008C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA98C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EAC27 +:402BC000A44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA944663445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C466344F2 +:402C00005A60034B4EAA944663441A6806E0C046D4FEFFFFF43A0410F4FEFFFF4B4B4EA98C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA884 +:402C4000844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634458693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9BD0 +:402C8000D91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4B4EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234BE8 +:402CC0004EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA8844663449B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC46634450 +:402D00009B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4663441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D876 +:402D4000FFF762FB10234D9300F08CFFD4FEFFFFF43A0410F4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C34187 +:402D80005940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003409C +:402DC0004B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB581121CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B02 +:402E00004EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B00 +:402E40004EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA989 +:402E80008C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA95F +:402EC0008C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B6819409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B6835 +:402F0000234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C466344DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA999 +:402F40008C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA884466344DB681920C3414B40D218794B4EA98C4663445969764B4EA884466344C9 +:402F8000D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9B591C6D4B8900CB58D2184D9B01334D99481E6A494EACA4466144800041581120FA +:402FC000C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F494EADAC466144A4006158890A48404D998C1F5A494EADAC466144A400615840187D +:403000004D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F494EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD0095 +:403040006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93364B4EAA944663449F +:40308000DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B1E +:4030C0004EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B68234303400B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9AC6 +:403100004B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C4663449B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA88446634407 +:403140009B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFFF43A0410F4FEFFFF63441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC466344CF +:403180001B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA8844661444D98800041581120C1410800EE494EACA44661444D9CA40061581324E14167 +:4031C0004840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D99DA +:403200000D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAEB4466144AD006958C908614040184D990E390C00CC494EADAC466144A4006158C0 +:403240004418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B4EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84B97 +:403280004EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA884466344DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC4663445D +:4032C000DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C4663445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B2C +:403300004EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B4EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA884466B +:4033400063445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D2184D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA44661448000415879 +:403380001120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C71494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A40061582D +:4033C00040184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB4466144F7 +:40340000AD006958C908614040184D990D390C0055494EADAC466144A4006158441852494EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA94468C +:4034400063445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4663445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B69194057 +:40348000374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B69234303400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A609A +:4034C0004C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4663441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA88446A8 +:4035000063441B681920C3414B40D218144B4EA98C4663449968124B4EA88446634418680F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191D8A +:40354000084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C046D4FEFFFFF43A0410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A40095 +:4035800061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1EF3494EADAC466144A400615840184D990B390C00EE494EADAC466144A4006158E9 +:4035C0000724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D990B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EAD88 +:40360000AC466144A40061584418D9494EA88446614498004450D6494EA8844661449B005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B6970 +:403640000D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C4663441969C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C696A +:40368000BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BD218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAA67 +:4036C000944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB690B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634448 +:4037000059689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B68634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EAC28 +:40374000A4466144800041581120C14108004D99CC1C87494EADAC466144A40061581324E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EAD06 +:40378000AC466144A400615840184D990A390C0077494EADAC466144A40061580724E1410C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D0064 +:4037C0006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC466144A4006158441862494EA884466144980044505F494EA8844661449B005B58D31891 +:403800004C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB415A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA8C1 +:40384000844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EADAC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B13 +:403880004EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA944663445A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C341E9 +:4038C00059402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B4EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B6863400340BB +:403900004B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA4466144800041581120C14108004D990C1D10494EADAC466144A40061581324E1414840D9 +:403940004D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFFF43A0410CB494EADC5 +:40398000AC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD0069581225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D998B +:4039C0000A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3494EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4B62 +:403A00004EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B4EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4BF5 +:403A40004EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C46F2 +:403A800063445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B4EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D21818 +:403AC0007B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B4EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B0733CF +:403B00004D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC466144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A4840DF +:403B40005A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C40A0 +:403B80004D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661445E +:403BC0009B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663445B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C466344A0 +:403C000059682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663445C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A6987 +:403C40004C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B08334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4BD0 +:403C80004EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B072BE7D9002318004EB070BDF4FEFFFFD4FEFFFFF43A041000B589B0039002915D +:403CC0000192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039B1A68019BD218039B1A60039B1A68039B1A60039B1A68019B9A4204D2039B5B686C +:403D00005A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A0299180013F060FF039B28331A00039B11001800FEF718FB03000593059B002B20 +:403D400001D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039B11001800FEF700FB03000593059B002B01D0059B16E0029B40330293019B403BBF +:403D80000193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F023FF0023180009B000BD00B587B001900091019B1B683F2213400593059B5A1CB5 +:403DC0000592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059B3822D31A1A00002113F090FF21E0019B28331A00059BD018059B4022D31A1A00E7 +:403E0000002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D0049B43E1019B283338220021180013F06DFF019B1B685A0F019B5B68DB00134365 +:403E40000393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61229954039B1B0AD9B2019B62229954039BD9B2019B63229954029B1B0ED9B2019BE5 +:403E800064229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B2019B67229954019B28331A00019B11001800FEF759FA03000493049B002B01D045 +:403EC000049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009B9A1C019B9B681B0ADBB21370009BDA1C019B9B68DBB21370009B1A1D019BDB68DA +:403F00001B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB21370009BDA1D019BDB68DBB21370009B08331A00019B1B691B0EDBB21370009B55 +:403F400009331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B0B331A00019B1B69DBB21370009B0C331A00019B5B691B0EDBB21370009B0D33C2 +:403F80001A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F331A00019B5B69DBB21370009B10331A00019B9B691B0EDBB21370009B11331A0094 +:403FC000019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A00019B9B69DBB21370009B14331A00019BDB691B0EDBB21370009B15331A00019BC2 +:40400000DB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BDB69DBB21370009B18331A00019B1B6A1B0EDBB21370009B19331A00019B1B6A87 +:404040001B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6ADBB21370019B9B6E002B1ED1009B1C331A00019B5B6A1B0EDBB21370009B1D3335 +:404080001A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F331A00019B5B6ADBB213700023180007B000BD00B5A1B0039002910192009304AB8A +:4040C0001800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039904AB1800FFF7E8FD03001F931F9B002B0AD1019A04AB11001800FFF756FE030026 +:404100001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190019BD8220021180013F0F0FDC04603B000BD00B583B00190019B002B05D0019BE4 +:40414000D8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B10001900D8231A0013F040FDC04603B000BD000010B582B001900091019A00230024136077 +:404180005460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B2B4C9361D461019A2A4B2B4C13625462019A2A4B2A4C9362D462019A294B2A4C38 +:4041C00013635463019A294B294C9363D463019A284B294C13645464019A284B284C9364D46427E0019A274B274C13615461019A264B274C9361D461019A264B264C136233 +:404200005462019A254B264C9362D462019A254B254C13635463019A244B254C9363D463019A244B244C13645464019A234B244C9364D464019BD021009A5A500023180072 +:4042400002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E131D +:4042800019CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE51 +:4042C0001D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A441360F9E0824B6B441B68DB001A00A723DB006B441B689B181B78069300230793069B43 +:404300001B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A9300230B930A9B1B040D9300230C930898099904000C9A0D9B15002C430E94194305 +:404340000F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109B1B021393002312930E980F990400129A139B15002C431494194315915B4B6B4439 +:404380001B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B00199300231893149815990400189A199B15002C431A9419431B914D4B6B441B68DB001A1DF6 +:4043C000A723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B061E931A981B9904001E9A1F9B15002C432094194321913D4B6B441B68DB005A1DC9 +:40440000A723DB006B441B689B181B782293002323932299239A0B001B0C100007041F430B001E04209A219B1100314324913B4325932E4B6B441B68DB009A1DA723DB00B5 +:404440006B441B689B181B782693002327932699279A0B001B0E1000000201900198184301900B001B020093249A259B1100009C019D2000014328912A00134329931B4B0F +:404480006B441B68DB00DA1DA723DB006B441B689B181B782A9300232B932898299904002A9A2B9B15002C432C9419432D91104B104A6A44D2180D4B6B441B68DB00D31832 +:4044C0002C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DCFFE6E5E0E4F7FFFF3C0500001408000028FDFFFF18080000EB4B6B441B68991EF9 +:40450000EA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F92E14B6B441B68991EE04BE14A6A44D218CB00D3185C681B68590FE2001143319155 +:40454000620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24B6B441B68991ED14BD14A6A44D218CB00D3185C681B68A2069909029102991143F9 +:404580000291A30903933299339A0800029B039C1D006840349023005A403592C24B6B441B68D91FC14BC24A6A44D218CB00D3185C681B68349D359EED186641BA4B6B4455 +:4045C0001B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0763081A433792B04B6B441B680F3B1900AE4BAF4A6A44D218CB00D3185C681B684B +:4046000021061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A9023005A403B92A04B6B441B680F3B19009E4B9F4A6A44D218CB00D3185C681B683B +:404640006206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C9023005A403D923C993D9A491972418E4B6B441B68103B1C008C4B8D486844C018CF +:40468000E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C31819605A60814B6B441B6801337F4A6A4413607D4B6B441B684F2B00DC1DE77D4B6B447A +:4046C0001B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605460744B6B441B685C6A1B6AFF22D2006A44136054606F4B6B441B68DC6A9B6A4F +:40470000FE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654B6B441B68DC6B9B6BFC22D2006A4413605460604B6B441B685C6C1B6CFB22D200A9 +:404740006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A441360564B6B441B689A04FD23DB006B441B689B0B1A433E92FD23DB006B441B68FC +:404780009A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C1A434092FD23DB006B441B689A03434B6B441B689B0C1A4341923E993F9A08003B +:4047C000409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B68DB051A434592354B6B441B685A0AFD23DB006B441B68DB051A4344924299439A70 +:404800000800449B459C1D006840469023005A404792FA23DB006B445C681B6846984799C0186141FC23DB006B441A68FB23DB006B441B685A404892214B6B441A68214B86 +:404840006B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A682B0013404B93FB23DB006B441B684A9C4B9D22005A404C92124B6B441B682A000C +:404880005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68C918624112E0C0461408000028FDFFFF180800003C05000008080000EC070000C1 +:4048C000E4070000DC070000F83B0410EF4BF0486844C018EF4B6B441B68DB00C3185C681B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0F6A +:404900001A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A08DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A4350928B +:404940004E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B6B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A43549252991C +:40498000539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B441B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B01C1 +:4049C0006B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A685A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9CE5 +:404A00001D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A4413605460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A446F +:404A400013605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D2006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB009C +:404A80006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A436192814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A0380 +:404AC000794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A406592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0A63 +:404B0000FE23DB006B441B68DB051A4366926499659A0800669B679C1D006840689023005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC23DF +:404B4000DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B682F +:404B80006C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354BC7 +:404BC0006B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B681A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B6849 +:404C00001B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B441B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D00684005 +:404C4000749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B6B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D0037 +:404C80006840789023005A4018E0C04628FDFFFF18080000140800000C0800000808000004080000FC070000F4070000EC070000E4070000F83B0410D40700007992FA23D4 +:404CC000DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B93FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A439E +:404D00007D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F937A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B18BD +:404D40005441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B685B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C68DF +:404D80001B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4B6B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B25 +:404DC0006B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A438492FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859CC8 +:404E00001D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A4389929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B4E +:404E4000899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B688B +:404E80005A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B0013408F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A4091924B +:404EC000909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C91862416F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A44BC +:404F000013605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B441B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B6800 +:404F40009B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939A0800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B4461 +:404F80001B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB0000 +:404FC0006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A68FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B444C +:405000001A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09BA19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A44EB +:405040001360546080231B016B4419685A68F923DB006B445C681B685B185441802212016A4413605460F923DB006B4419685A68F823DB006B445C681B6817E008080000FD +:40508000D40700000C0800000408000014080000FC070000F4070000EC070000F83B041028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B6842 +:4050C0000133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A49280231B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B010F +:405100006B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A792A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0A8E +:40514000CE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A43AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C68D1 +:405180001B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B6B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093B0 +:4051C000AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B6B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB0052 +:40520000C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B685B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F0D +:405240001A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B441B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B6877 +:405280009B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B44B7 +:4052C0001B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B68134097 +:40530000BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B441B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B004B +:405340001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC499C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C6836 +:405380001B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B5A +:4053C0006B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B689B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B6880 +:405400009A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA9023005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0AD2 +:40544000174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A40CF92FE23DB006B445C681B68CE98CF99C0186141802317E0140800000408000020 +:40548000FC070000F4070000F83B041028FDFFFF18080000E4070000DC070000D4070000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A68B4 +:4054C000EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A682B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A0026 +:405500005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B68C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F9224E +:40554000D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64B9D +:405580006B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D892D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA099E +:4055C000B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A6874 +:40560000FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E3924E +:40564000FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E099E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B18544169 +:40568000F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B185441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68B2 +:4056C0005B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B441B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B4485 +:405700001B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D00E6 +:405740006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF92504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9C6D +:405780001D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384B6B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392A6 +:4057C000FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F59380231B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C49 +:405800001B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D486844C018194B6B441B68DB00C3185C681B685B185441F922D2006A44136054603B +:40584000194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC07000077 +:40588000080800000C080000F83B04101408000028FDFFFF18080000EC070000E4070000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A087E +:4058C000FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC9023005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B68DF +:40590000DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFAD0435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340A5 +:40594000FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B441A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A4393 +:40598000FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C686B +:4059C0001B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA2432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F923E6 +:405A0000DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B680133E1 +:405A4000904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A60FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B6878 +:405A80009A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B6891 +:405AC0001D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4B6B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB0544 +:405B00001A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD4C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168B6 +:405B4000C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A684C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D682300CF +:405B80001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA5C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A6029 +:405BC000FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B68C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F9224B +:405C0000D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C331A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB0057 +:405C40006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC0700008E +:405C8000E407000014080000DC07000008080000D40700000C080000F83B041028FDFFFF18080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C352860E1 +:405CC00023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB88331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB34 +:405D00007C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB90331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B4401 +:405D40001A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B681A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB0088 +:405D80006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC3584 +:405DC000286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B185441F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B1815 +:405E00005441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B44B6 +:405E40001B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A04924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B6808 +:405E80009B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFABC0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286037 +:405EC00023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFABD0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFAB58 +:405F0000C43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFABD8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A681A +:405F4000FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFABE0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B45 +:405F80006B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE4321468556822005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B6800 +:405FC0001B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B39486844C018304B6B441B68DB00C3185C681B685B185441F922D2006A4413605460F1 +:40600000314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B441B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B4D +:406040006B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B071A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A02515 +:40608000ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F4070000EC07000014080000E407000008080000DC070000D4070000F83B04109C +:4060C00028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B6B441A60A54B6B441B68DA0980231B016B441B685B061A43A123DB006B441A60CC +:40610000A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D44286023005A40974B6B441A6080231B016B441A68FF23DB006B441B681340A32281 +:40614000D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B441A68FF23DB006B441B681A43A423DB006B441A60814B6B441A68834B6B441B6889 +:406180001A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A522D2006A4413607B4B6B441A680B001340794A6A441360A323DB006B4419685A68F0 +:4061C0000800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B441A60A223DB006B445C681B68A622D2006A44116852685B185441F822D2006A446F +:4062000013605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441584A10 +:406240006A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF780FA514B6B441B6819695A694C4B6B445C681B685B1854414B4A6A441268136112 +:406280005461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412689361D461404B6B441B68196A5A6AFF23DB006B445C681B685B1854413A4A6A4452 +:4062C000126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324A6A4412689362D4622F4B6B441B68196B5A6BFD23DB006B445C681B685B18544146 +:40630000294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B185441214A6A4412689363D4631E4B6B441B68196C5A6CFB23DB006B445C681B681B +:406340005B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C681B685B185441104A6A4412689364D464002318000D4B9D44F0BDC04604080000A4 +:406380000C05000014050000FC0700001C05000024050000F40700002C0500003405000008080000140800003C0500001C08000070B58AB0059004910392039B002B01D1B7 +:4063C00000237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B68039A0092002201920099019A5B185441059A13605460059B5C681B68039A150057 +:4064000000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A9360D460099B002B3AD0039A089B9A4236D3059B50331A00099BD318089A04991800AB +:4064400011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079B2EE0049A089BD3180493039A089BD31A03930023099312E0049A059B1100180094 +:40648000FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B7F2BE9D8039B002B09D0059B50331A00099BD318039A0499180011F095FB0023A1 +:4064C00018000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959395994B1C95938F9B50225B189A1880231370959B702B0CD88F9B50331A00959B6D +:40650000D018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80239B1A1A00002111F0F1FB8F9B50331A008F9B11001800FDF7C5FE03009493949B0D +:40654000002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F3C9300233D938F9BDC689B685A0FE6001643DD003C993D9A0B002B4392931300A7 +:40658000334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F936B46F8229B181B788F99C0228B54939B1B0C4093002341936B460133FF331B7836 +:4065C0008F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54939B1B004493002345936B46882252009B181B788F99C3228B54939B1A02929B45 +:406600001B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929B1B0C0293029B13430293939B1B0C03936B461B7A8F99C5228B54939B1A06929BA7 +:406640001B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB28F99C7228B54919B1B0E4693002347936B468C2252009B181B788F99C8228B54C4 +:40668000919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9300234B936B46942252009B181B788F99CA228B54919B1B004C9300234D936B46C5 +:4066C000982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B1B0E07936B461B7E8F99CC228B54919B1A04909B1B0C0893089B13430893919B6A +:406700001B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B13430A93919B1B0A0B936B4628229B181B788F99CE228B54909B919CDBB28F99CF2271 +:406740008B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F009FCC046A8FDFFFF8F9B5C691B69230E4E9300234F936B469C2252009B181B78BF +:406780008E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B7813708E9B9A1C8F9B5C691B69230A5293002353936B46A42149005B181B7813700A +:4067C0008E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B191D8F9B5C691B692202180E0C900C9810430C90230E0D936B4630229B181B7841 +:406800000B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B4638229B181B780B708E9B991D8F9B5C691B692206180A1090109810431090230A119307 +:406840006B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9BDC699B69230E5693002357936B46AC2149005B181B7813708E9B09331A008F9B90 +:40688000DC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BDC699B69230A5A9300235B936B46B42149005B181B7813708E9B0B331A008F9BF1 +:4068C000DC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9BDC699B692202180E1290129810431290230E13936B4648229B181B780B708E9B73 +:406900000D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B181B780B708E9B0E3319008F9BDC699B692206180A1690169810431690230A1793DB +:406940006B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A008F9B5C6A1B6A230E5E9300235F936B46BC2149005B181B7813708E9B11331A000A +:406980008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A008F9B5C6A1B6A230A6293002363936B46C42149005B181B7813708E9B13331A009C +:4069C0008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B143319008F9B5C6A1B6A2202180E1890189810431890230E19936B4660229B181B780B7015 +:406A00008E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668229B181B780B708E9B163319008F9B5C6A1B6A2206180A1C901C9810431C90230A05 +:406A40001D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B18331A008F9BDC6A9B6A230E6693002367936B46CC2149005B181B7813708E9B193321 +:406A80001A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331A008F9BDC6A9B6A230A6A9300236B936B46D42149005B181B7813708E9B1B334B +:406AC0001A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C3319008F9BDC6A9B6A2202180E1E901E9810431E90230E1F936B4678229B181B781D +:406B00000B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B4680229B181B780B708E9B1E3319008F9BDC6A9B6A2206180A229022981043229064 +:406B4000230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B20331A008F9B5C6B1B6B230E6E9300236F936B46DC2149005B181B7813708E9BEF +:406B800021331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9B22331A008F9B5C6B1B6B230A7293002373936B46E42149005B181B7813708E9BF8 +:406BC00023331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B243319008F9B5C6B1B6B2202180E2490249810432490230E25936B4690229B18FD +:406C00001B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C27936B4698229B181B780B708E9B263319008F9B5C6B1B6B2206180A28902898104332 +:406C40002890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708E9B28331A008F9BDC6B9B6B230E7693002377936B46EC2149005B181B7813700F +:406C80008E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B7813708E9B2A331A008F9BDC6B9B6B230A7A9300237B936B46F42149005B181B781370A7 +:406CC0008E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B7813708E9B2C3319008F9BDC6B9B6B2202180E2A902A9810432A90230E2B936B46A82226 +:406D00009B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230C2D936B46B0229B181B780B708E9B2E3319008F9BDC6B9B6B2206180A2E902E9885 +:406D400010432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB213708F9AD023D358002B00D001E18E9B30331A008F9B5C6C1B6C230E7E930023F3 +:406D80007F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002381936B46802189005B181B7813708E9B32331A008F9B5C6C1B6C230A829300239E +:406DC00083936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C23008493002385936B46842189005B181B7813708E9B343319008F9B5C6C1B6C2202180E3090EC +:406E0000309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C2204180C3290329810433290230C33936B46C8229B181B780B708E9B3633190024 +:406E40008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B708E9B37331A008F9B5C6C1B6CDBB213708E9B38331A008F9BDC6C9B6C230E8693A8 +:406E8000002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893002389936B46882189005B181B7813708E9B3A331A008F9BDC6C9B6C230A8A939B +:406EC00000238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C9300238D936B468C2189005B181B7813708E9B3C331A008F9BDC6C9B6C2102180E50 +:406F00003690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6C9B6C2104180C3890389808433890230C39936B46E0215B181B7813708E9B3E338E +:406F40001A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B7813708E9B3F331A008F9BDC6C9B6CDBB213700023180096239B009D4470BDC04665 +:406F800000B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F803003B933B9B002B13D1029A039904AB1800FFF7FDF903003B933B9B002B0AD159 +:406FC000019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F83B9B18003DB000BD00B583B00190019B10331800D9F796FB019B180003B000BD28 +:4070000000B583B00190019B10331800D9F756FC019B180003B000BD10B582B00190054C054B9C4204D0503C2000FFF7E9FFF7E702B010BDD86A0008386A000830B583B0CC +:4070400001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4B180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B15 +:407080001900002006F074F9C04603B030BDC046FFFF0000186A0008C0000008455E0010386A00081970021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B070 +:4070C0000290039100920193009A019B0298039914F050FE03000C001A00009B5343180004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A601D +:40710000019A002300249360D460019A0023002413615461019A0023002413625462019B282200219954019B0022DA62019B00221A63019B00225A63019B38220021995486 +:40714000019B180002B010BD003F041000B583B00190074A019B1A60019B180000F08BF8019B1800DDF7DEFD019B180003B000BD003F041000B583B00190019B1800FFF785 +:40718000E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B6863 +:4071C0001800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B681800904703000C00019A13615461019B5B681B6828331A68019B5B6818009047BB +:4072000003000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C00019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BBF +:40724000DA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019B180000F091F8019B3822012199540023180004B010BD00B585B00190019B3822F3 +:407280009B5C01225340DBB2002B01D0002332E0019B34330121180005F078F903000393039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022B5 +:4072C000DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B382200219954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B0D2 +:407300000390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039B6C +:407340005868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A84703000593059B002B01D0059B04E0039B180000F00AF80023180006B070BD783E0410ED +:40738000B03E04105FF0FFFF10B582B00190019BDC699B69019A13625462019B282200219954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124BCE +:4073C0001EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF03000393039B002B01D0039B09E0019B5B681B6810331A68019B5B6818009047030097 +:40740000180005B000BDC0465FF0FFFF783E0410B03E0410F0B597B00790069104920593079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6BA7 +:40744000002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A0093019413000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA242C6 +:4074800002D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059AA24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079BDA +:4074C00058681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B15931C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059A16 +:40750000A24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B0014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A2E +:407540001B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B685B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A682A +:40758000DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FB03005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFB97 +:4075C0001C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B69E1 +:40760000049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B19695A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0027 +:4076400014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C69B4 +:407680001B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E00BE +:4076C00000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D048 +:40770000139B20E0089B099C1A00159B9B181593089B099C0499059A5B185441049305941C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFF783E0410A2 +:40774000C03E04100023180017B0F0BDF0B5C64600B596B00990089106920793099B38229B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF22180045 +:4077800004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089B1593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD030049 +:4077C0001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D102E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D6295 +:407800005E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D0099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FAA0 +:4078400003005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D81C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A93F3 +:407880000B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BBD +:4078C000DB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F931 +:40790000099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC689B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B681833F0 +:407940001F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D082 +:40798000119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B18C2 +:4079C00015930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B0014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFF783E0410B03E0410E1 +:407A000070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA03001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059B8D +:407A400038229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D893 +:407A800001D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BDC046783E0410DC3E041049 +:407AC0005FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB55 +:407B0000059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24211 +:407B400006D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BD783E0410DC3E04100D +:407B80005FF0FFFF10B582B00190012300241800210002B010BD10B582B00190012300241800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D0002390 +:407BC00000240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D00023002477 +:407C00000DE0039B5B681B6830331968039B5868009B019C1A002300884703000C001800210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B2D +:407C400009E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF10B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC696B +:407C80009B691800210002B010BD10B582B001900091009B5C681B68019A11685268A24202D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C68D1 +:407CC0001B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000082B00190034A019B1A60019B180002B07047C046783F041000B583B00190019B16 +:407D00001800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100920193029B039C01214942CA175B18544118002100009A019B14F01CF803000C00DD +:407D400019002200012300245B1854411A00009B5343180004B010BD10B584B00290039100920193009A019B0298039914F002F803000C001A00009B5343180004B010BDF2 +:407D800070B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B682C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF0300D5 +:407DC0000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029B012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F918B +:407E00000C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D00024E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029AF3 +:407E4000039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE030018930023199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B09 +:407E80000F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D910AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE0300049300230593D5 +:407EC0000E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9C98 +:407F0000C91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834BC1 +:407F40001800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF7B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A4D +:407F8000179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002422E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079B5E +:407FC000FFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B62 +:4080000019D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CAF +:40804000D2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D147230CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B00A6 +:4080800014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD047238B +:4080C0000CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E047230CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB18644194 +:40810000209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F931D +:4081400018E0C04658610410506B0008286B0008C000000849500010806B0008586B00081699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9BCA +:408180009A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E93415D +:4081C000DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074B180005F0C5F8054C10AB1800DDF720FA2300180022B070BDB06B0008886B000873 +:40820000C00000084950001070B58AB0802212020023069207936A4A002308920993069B079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA0300F3 +:408240005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DDF737FC0300009300230193009A019B28003100FFF74FFD03000893002309935A +:4082800002AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089809991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB6855 +:4082C0001B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB681800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB27E +:408300001A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264B89 +:40834000180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B681800904703000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D7F798FF69 +:4083800003000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC046F2 +:4083C000008007100F01FF80586104100C6B00080101FF80946C0008B46B0008C0000008ED8902103C3F041000B583B000230193144B1800DDF7C0FB0300180005F02CF9A2 +:40840000114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B04D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180026 +:4084400003B000BDD86A0008086B00080C6B000800B583B001900091009B002B0CD0009B18000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002B85 +:4084800001D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D0002300E00123180003B000BDC046B43F041082B00190034A019B1A60019B180002B094 +:4084C0007047C046783F041000B583B00190019B180000F00BF9019B180000F0F7F9019B180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F0C2 +:40850000ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B0122DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD34 +:4085400000B587B00390029101920023059300230493039B20331800DDF70EFB0300180005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E0E0 +:40858000029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF0CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039BC3 +:4085C0009B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B5D +:408600005B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B689B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B68AB +:408640005B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B681B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B6880 +:408680005B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B68DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B6884 +:4086C0001B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009B00225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA5D +:408700000300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B9A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B11 +:4087400011001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF70BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB0039002913A +:408780000192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B55 +:4087C0002F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A6037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039BD8 +:408800009A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B0133079352 +:40884000DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD3185A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B00190009113 +:40888000019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF76BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049BC1 +:4088C0001B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091019B013B0099180013F072F803000133009A5343180003B000BD30B58FB00590DE +:4089000004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A80DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD0000B6 +:4089400000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009AF8 +:408980009A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C2200219954019B00221A67019B742200219952019B00229A67019B8C2200219950019BDD +:4089C000902200219950019B942200219950019B982200219954019B9C2200219950019B180003B000BDC0469441041000B583B001900C4A019B1A60019B180001F0B8FC46 +:408A0000019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180003B000BD9441041000B583B00190019B1800FFF7DBFF019B180004F05FFD019BCC +:408A4000180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D318043340 +:408A80001A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB0CF +:408AC000079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD31802930023039348 +:408B0000049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA9446634494 +:408B40000A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B93079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B0082 +:408B800013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C0000231D000094019532003B00884703000993099B002B01D0034B00E0002318000DB00F +:408BC000F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D1800904702000B00069207938022120600230892099308AA06AB11001800FFF746F80300E5 +:408C00001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B6830331968059B986D119B009300230193009A019B884702000B000C920D93059B20 +:408C4000982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D1B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B884750 +:408C800002000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B9A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD31811939C +:408CC000C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059B88215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A7001236B +:408D00005B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B441978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68BB +:408D4000A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039308AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D92F +:408D8000934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9A109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE030089 +:408DC0001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE0A5 +:408E00001C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B139313 +:408E4000069B1293069B159AD31800221A7041E0059B90229B581393604A06AB11001800DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B18 +:408E800011001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD01C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B1100FE +:408EC0001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139A90 +:408F00001299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A1399159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D04A +:408F4000229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129BD31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129BE1 +:408F8000D31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A4202D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E01C +:408FC000C046179B180018B010BDC046836668540201FF800501FF800101FF80884104100701FF8010B598B00F900D920C933B236B440A1C1A700F9BDB6C1693324B17930D +:409000000D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B00221A601A9B1A680F9B5B6D9A4248D21A9B1B681B01169AD3181593159BDC689B683F +:409040001A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B2FE00F9B1B6FD9B20C9B1A680D9C0F9811AB0A9313AB099312AB089300230793D8 +:409080000123069300230593002304930023039314AB029300230193002300932300FFF725FE03001793179B074A934207D100E0C0461A9B1B685A1C1A9B1A60B1E7C0460A +:4090C000179B180018B010BD0701FF8010B584B0039002910192039B8C229B5819001820FFF7FAFB0400029B18000FF031F90200019BD018039B8C229B581900FFF7ECFBC0 +:409100000300E318180004B010BD0000F0B591B00990089107920693099B079A11001800FFF796F903001A0001235340DBB2002B01D0A84B4AE1169BA74A134001D0A54B2A +:4091400044E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF803005A425341DBB2002B0ED0099B5B6E0293002303930E9B0299039A9961DA611B +:409180000E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099B180000F0B7FC03000F930F9B002B00D0F8E0069A0799099B1800FFF787FF030036 +:4091C0000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B002B00D0E0E0099B1A6E0D9BD218099B9B6F9A4202D97B4B0F93DEE0099B1B6FDF +:40920000D9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002B1CD1099B1B6FD9B20C9A0E9B099800931823FFF709FC03000F930F9B002B00D090 +:40924000B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A934200D0A4E0169B002B00DAA2E0099B5A6D099B1B6D9A4204D3099B002118009D +:4092800000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6FD9B20E9BDC699B691C000D9A0998002300931300220001F017FD00230F930E9BEF +:4092C0009C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12196B411C0013000E9A136254620E9B00229A620B9A0E9B1A630A9A0E9BDA620E9B69 +:40930000374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803009AB20E9B9A810E9B0022DA810E9B069A1A610E9A01235B4214211800FFF7DDFA72 +:4093400002000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099B1B6FD9B20E9B5C6A1B6A1A000E9B9B891C000998079B00932300FFF79FFB030018 +:409380000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362546212E0C04608E0C04606E0C04604E0C04602E0C04600E0C0460E9B00221A6035 +:4093C000099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7F10040008836668540B01FF801201FF800701FF8070B588B005900491039202930023079319 +:40940000059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E0059B2833180004F017F9049B0693069B1B68002B02D1244B07933CE0069B9A6AC8 +:40944000029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA0200069B5A61059B1B6FD9B2069B5C6A1B6A1C00029A0598039B009313002200C8 +:40948000FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B197441069A13625462069B9A6A029BD218069B9A6200E0C046059B2833180004F0F4F8E7 +:4094C000079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6C0A93059B9C229A58049B9A4201D0714BDDE0049B0993099B1B68002B01D16D4BCB +:40950000D5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180000F0F8FAA9E0059B1B6FD9B2099BDC699B691A00099B059800931823FFF7BEFA63 +:4095400003000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000893089B002B02D0544B0B9385E0099BDC699B69059A526E029200220392029A1C +:40958000934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099BDA6A059B5B6D9A4213D2099BDB6A1B010A9AD018099BDB6A01331B010A9AD118F0 +:4095C000059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF83AE0099B34229B5C002B25D0099BDA6A059B5B6D9A4213D2099BDB6A01331B01B7 +:409600000A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FB059B5B6D5A1C059B5A65099BDA6A059B0121180001F0B0F8099BDB6A1B010A9A39 +:40964000D3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800059B8C229B581900FFF736F90200059B1A6602E0C04600E0C046099B00221A60B5 +:40968000059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44204D0059B0433180003F0FEFF0B9B18000CB070BD0101FF800501FF801C01FF8052 +:4096C00030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B6824331C68029D049A06A905980C9B00932B00A04703000793079B002B01D0079BA0 +:409700001AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B0AE0059B1B682C331B680699059A1000984703000793079B180009B030BDC046D4 +:409740000101FF8010B584B003900291039B1B6814331C680299039880231B06009300230022A0470300180004B010BD10B598B00F900E910D920C930F9B0E9A1100180004 +:40978000FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF0F9B1B6FD9B215AC0E9A0F9812AB019311AB00932300FFF715FC03001793179B1F +:4097C000002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB0893002307930023069301230593002304931B9B039316AB02930C9B01930D9B00932300FFF759 +:4098000075FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FF179B180018B010BD0101FF8010B598B00F900E910D920F9B0E9A11001800FEF72A +:4098400007FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9B1B6FD9B216AC0E9A0F9813AB019312AB00932300FFF7B6FB03001793179B002B37 +:409880002ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB0893002307930023069300230593002304930023039311AB029301235B420193002300932300FFF7BC +:4098C00015FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E0C04600E0C0460F9B0433180003F0DCFE179B180018B010BD0101FF8010B588B0F9 +:40990000059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006AB01225A8006AB00225A60059B5A6E059B9B6ED218039B1A60059B1B6814331C6818 +:40994000054B196806AA0598002300930823A0470300180008B010BD1004000830B591B005900392029313236B440A1C1A70039A13236B441978059808AB00931823FFF7A4 +:4099800063F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF040008AB9B891A0008AB1B69D018059B8C229B581900FEF790FF0300E31807931323D8 +:4099C0006B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B002B01D00F9B90E0059B8C229B5819001820FEF771FF02003A236B441A8013232A +:409A00006B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803000F930F9B002B01D00F9B6EE03A236B441B88039AD31803933A236B441B88029A5F +:409A4000D3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF796F803001A683A236B441A803A236B441D88059B90229B58039C13226A441178C5 +:409A8000059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B780122D31AD9B23A236B441C88059B90229B58029A059800932300FEF7FFFF03005E +:409AC0000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF777 +:409B0000EBFE0200149B1A600023180011B030BD8841041070B58CB00390039BDB6C0A93039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED2180398002300931300002208 +:409B400001F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE03000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B1100180015 +:409B8000DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B21D +:409BC000069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D0099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED3189F +:409C00000693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB6813000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099B94 +:409C4000002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B06930B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B57 +:409C800074229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF72DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B11005E +:409CC000180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD8841041070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E17931F +:409D00000D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9310AB099311AB089301230793002306930023059301230493002303930FAB0293A9 +:409D400000230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B20D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002BE8 +:409D800003D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB0D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B013A +:409DC000D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1C0D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A3B +:409E00000E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE746 +:409E4000C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B001900091019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB0B +:409E800003000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A60AB +:409EC0000023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB0D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA03008E +:409F000019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D1800FD +:409F400090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B07D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6DCD +:409F80001800904703000C0019000D9B8C229950402003F097FA030019000D9B90229950802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C2299506E +:409FC0000D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9B8C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F8F5 +:40A0000002000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD9AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B783361 +:40A0400018006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A670D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB089300230793B9 +:40A080000123069301230593002304930023039312AB0293082301930FAB00932300FEF725FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002234 +:40A0C00002F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D9801230093230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F0A0 +:40A1000013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1526B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB520037 +:40A14000D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D116AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B7422C8 +:40A180009A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B98002300930023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011ABB7 +:40A1C0005B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F11AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F03B +:40A2000007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6F0D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E49A6 +:40A240001B98002300930023002202F06DFAC046FFFFFF07DC3F04100101FF80100400080201FF8008400410304004101B01FF805440041084400410AC4004101B9B364A4E +:40A28000934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D9800F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA00 +:40A2C0003B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B1D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D026 +:40A3000018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D1800904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9B65 +:40A340006C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80D84004101B01FF8018410410404104101C01FF8000B585B00190019B0433180003F06CF9A5 +:40A38000019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B35 +:40A3C00003D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B3B +:40A400000433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B5A6E039B9B6ED2180B236B4419780398012300931300002200F056FC03001800AD +:40A4400005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B0433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A789C +:40A48000019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B4401321A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B74220121995273 +:40A4C000019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B0433180003F0E0F8029B180005B000BD0E01FF8000B589B0039002910192002307 +:40A500000793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE0039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002B9D +:40A5400003D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF03000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D0012363 +:40A5800000E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B9A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059B8A +:40A5C000069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B000BDC0460E01FF800101FF802001FF806441041010B598B00F900E910D920C93F2 +:40A600000F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9BE2 +:40A640001B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A9312AB099313AB0893002307930023069300230593012304930023039314AB029338 +:40A68000002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B0ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D1D9 +:40A6C000012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B41DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B4C +:40A700001793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C0122A1 +:40A740005340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B04D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F025 +:40A78000BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B236B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B05 +:40A7C00015D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B041 +:40A800007047000000B58BB005900491039200230993039B402B01D9354B66E0059B0433180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4A63 +:40A84000934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009313000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A802C +:40A88000049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009308234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6D6F +:40A8C0001800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059B0433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF8060 +:40A9000010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6834331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB00933A +:40A9400008234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E0D8 +:40A980000E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB110070 +:40A9C000180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B58139300230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A930C +:40AA0000059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D00B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A42FF +:40AA400004D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B1800FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B7878 +:40AA8000002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC0460501FF80884104100701FF800201FF8000B587B00390029101920093039B04331A +:40AAC000180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B2312 +:40AB000008AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C01225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C00CB +:40AB40000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A605AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C6891 +:40AB80000B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B1854410122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C686A +:40ABC0000B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F93C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B069300236F +:40AC00000793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B005900392029313236B440A1C1A7014AC039A13236B441978059813AB00932300D3 +:40AC4000FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179C6D +:40AC8000039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114B1DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A7031 +:40ACC00000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A700023180018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD0E8 +:40AD000008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF736FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B442F +:40AD4000197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B7801225340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A93EB +:40AD80000A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE7002318000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A609D +:40ADC000039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B1800DAF717FF039B180005B000BDC0469CFC031010B588B0059004910292039326 +:40AE00000A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F04DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029BCD +:40AE4000039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6808331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B0D +:40AE8000002B02D00A9B00221A60079B180008B010BDC046684104107C41041082B001900091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B0C2 +:40AEC00001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023180003B000BDC046684104107C41041010B588B0059004910292039300230793D2 +:40AF0000059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F04FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079315 +:40AF400003E001235B420793C046079B180008B010BD000010B584B001900091009B002B07D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180044 +:40AF800000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60019B1B6808331B68019A100098470023180004B010BDC046684104107C4104107B +:40AFC00010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F0CDF8029B07930E9B1B680B931B236B4400221A70039B1B6905930023002408932C +:40B000000994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD3181B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A70F1 +:40B040001B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B18544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB0F6 +:40B0800010BDC046684104107C41041010B58AB003900291009201930C9B002B07D1A423FF331A003249334B180001F067F8029B04930C9B1B680993002300240693079451 +:40B0C000019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B781A00039B1100180000F086F803001B06099A5340099317236B4408221A70172327 +:40B100006B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D0099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A706A +:40B14000DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099B1A400C9B1A60002318000AB010BDC046684104107C410410B71DC10482B001902A +:40B1800001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4420221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B23AB +:40B1C0006B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B47 +:40B200001B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B012213400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0858 +:40B2400000930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B0019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB2C8 +:40B28000180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB2002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BD996C00089B +:40B2C000986C000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A70064B1B78DBB2002B00D062B6C04610BDD8410410FC410410996C0008986C000881 +:40B3000000B585B003900291019200930299009A019B18000CF068FC0023180005B000BD82B002006B4606331A806B4606331B881A0007231340180002B0704700B585B09A +:40B34000039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4A0B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029B94 +:40B380009A40039B9A60C04605B000BDE502000018420410E602000010B582B001900091019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5EC9 +:40B3C0001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD684204109C42041000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B44B9 +:40B4000000229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B11001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F99D +:40B44000C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A23E8 +:40B480006B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E044 +:40B4C000039A0549054800230093002301F02CF9180005B000BDC046C04204103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D178 +:40B50000009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D119 +:40B5400001235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F0DBF8059B180007B000BDC046D442041061 +:40B580003001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B42180011 +:40B5C00002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF0300059302 +:40B60000059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046F44204103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B8811 +:40B640000D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B0121180000F03EFF00F0B8FEC04603B000BDC0469A6C0008FFFF000014430410DC +:40B680002301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A000949094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BD81 +:40B6C0009A6C00083C4304102401048010B586B000F06AFEFFF7A8FF03000C00049305940F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002BEF +:40B700000ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE00099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFE53 +:40B74000C04606B010BDC046A86C0008A06C0008F0B58FB00590059B5B6838229B5C002B00D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB69A6 +:40B78000984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944629 +:40B7C00063441B7801229A400B9B9A420AD1272304AA94466344262204A98C46624412781A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA9446C5 +:40B8000063441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D494D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474AA1 +:40B8400000230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B6877 +:40B8800000221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B21127872 +:40B8C0005A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D1400A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A59 +:40B900001A61059B5A68069B079C9361D461059B5A680023002413635463059B5B68392200219954059B5B683A2200219954059B5B68382201219954059B180000F01AF8C8 +:40B94000059B180000F0EEF902E0C04600E0C0460FB0F0BD5C4304107443041040420F0082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B6815939C +:40B98000159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149B9A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362B9 +:40B9C000159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E06E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A33 +:40BA000004DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119ADA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C844026005B +:40BA400008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BB4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24256 +:40BA800000D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B18544116931794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D46207 +:40BAC0005BE0364A00231298139910F073F903000C000E930F94159B9B68069300230793069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B680893CD +:40BB000000230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A94415B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD808 +:40BB4000039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A9B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6BA3 +:40BB8000169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F00F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A99410200BE +:40BBC0000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E00599994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079BA8 +:40BC00009A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C1A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D0021 +:40BC40001543049A9A401400244A00232000290080185941204A002310F08CF803000C000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E00002353 +:40BC80001F00049A059B3000390010F093F803000C0019002200114B0024C9186241080011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B68B4 +:40BCC0001B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D2E7 +:40BD000001230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E00023180004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6839 +:40BD400039229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6B1B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B20 +:40BD80009A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A0023000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F0FC +:40BDC000DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059A04991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D218FB +:40BE00000B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD5C4304107843041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B11001800D1 +:40BE4000FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB689847019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B6822 +:40BE80005B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6BA2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A60E0 +:40BEC000019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B0039083 +:40BF000002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089A9A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA242D6 +:40BF400002D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049ADA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA60D9 +:40BF800000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A4209D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE08C +:40BFC000039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD100F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B1800D2 +:40C00000FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C046BC43041010B5054B1B68002B04D0034B1B68034A10009847C04610BD1404000854 +:40C04000BC43041082B001900023180002B0704782B001900023180002B0704700B585B00190019B1B6810331B68019801220021984703000393039B002B01DA039B12E0F6 +:40C08000019B1B6810331B68019802220021984703000293019B1B6810331B680399019800229847029B180005B000BD00B583B0734601900091002293431A000099019BFA +:40C0C000180000F004F80300180003B000BD00B587B003900291019200230593029A039B110018000BF050FA03000593059B180007B000BD00B587B003900291019200231A +:40C100000593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734601900091002293431A000099019B180000F003F8C04603B000BD00B585B0039072 +:40C1400002910192029A039B110018000BF0D8F8C04605B000BD00B587B003900291019200230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B072 +:40C1800005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF8082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B020 +:40C1C000039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A0B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029B88 +:40C200009A40039B9A60C04605B000BDE502000014440410E602000010B582B001900091019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5E75 +:40C240001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD644404109844041000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B460121180032 +:40C28000FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B01330393039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F939 +:40C2C0006B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DDC8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C04633 +:40C3000003B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE03002393239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F06B +:40C3400005F8C04625B000BDA844041000B583B0019000F029F8019B18000BF0F9FF03001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019B82 +:40C38000012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB2180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF706 +:40C3C00063FF034B1B685A1C014B1A60C04610BDF06C0008B0440410CC44041010B5094B1B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C046A3 +:40C4000010BDC046F06C000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B003900291F8 +:40C440006B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A4209D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7004 +:40C4800017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B0039002910192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B4461 +:40C4C00001221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B4423 +:40C500006A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A6005 +:40C54000FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019B1B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF3C +:40C580000E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A0393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031ECF +:40C5C00005D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001235340DBB2002B01D0FFF73AFE012000F0C7FEC046F86C00080FB410B584B0744656 +:40C60000124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C48009300230022002100F019F80A490A480023002200F0B1F807AB0393039A069B11009A +:40C640001800FFF761FEFFF7B5FFC046F46C00080001FF8000450410346D000800B593B00390029101920093039B002B01DB264B039304AB3422002118000BF047FB04AB99 +:40C68000039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B04AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FEB6 +:40C6C000134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A90D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE01 +:40C700000023180013B000BD0101FF8020050008FC6C0008006D0008346D0008686D0008002318007047000010B586B0744605900491039202930F4B1800FFF765FE03005C +:40C740001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF77DFF089B029A0499034800F015F8FFF721FFC046F46C0008346D000882B0019087 +:40C78000019B002B01D0019B00E0024B180002B07047C0461845041070B58AB00790069105920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B046B +:40C7C0001B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FDA7 +:40C800003DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FD2DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD02 +:40C840001DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD0DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B1C +:40C880001800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF755FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B11001800EF +:40C8C000FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B9969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B11000D +:40C900001800FFF7F1FC144B1800FFF7EDFCC0460AB070BD244504101C4704107845041090450410A0450410B0450410C4450410D8450410EC450410FC45041014460410B3 +:40C94000284604103C46041044460410484604105C460410B44604100047041000B583B0FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B4800230093AA +:40C980000023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BD6C6D0008FFFF00006C4704102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD86 +:40C9C0000A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80FFF7FCFCC04603B000BDC0466C6D00089C4704102401018000B583B0FFF7D4FC10 +:40CA00000D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF783FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BD6E6D0008FFFF000099 +:40CA4000C44704102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B881A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFCD5 +:40CA8000C04603B000BDC0466E6D0008F04704102401018010B5074B1B68002B08D0054B1A6801235B421900100003F08DF800E0C04610BD5878000810B5064B1B68002B06 +:40CAC00005D0044B1B68180003F0A8F800E0C04610BDC0465878000884B00390029101921D235B42180004B0704782B0019016235B42180002B0704782B0019001231800ED +:40CB000002B0704782B001900023180002B0704700B585B003900800110001930A236B44021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D19B +:40CB400002AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F051FE00E0C046039B180005B000BDC046A049041078770008A088000800B587B0BC +:40CB8000039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00064B1100180009F047FE059B01330593EDE7019B180007B000BDC046A0880008AB +:40CBC00000B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE0300DAB2059B1A700123180007B000BDA088000800B585B001900A006B46023311 +:40CC00001A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FE031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B46F5 +:40CC400002331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B07D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDC0 +:40CC8000A088000882B001900023180002B0704782B001900023180002B0704710B5174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FB4B +:40CCC00003005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046FC6D00089F +:40CD000001050000F86D0008C000000825D5021000B585B00190019B1800FFF7B9FF03000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039BEF +:40CD400002E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E00C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF030013 +:40CD80000393044B019A92000399D150039B180005B000BD1804000800B583B00190019B180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF0300C3 +:40CDC0000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4215E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF803003E +:40CE0000029A52421A6001235B4200E00023180005B000BD1804000882B001900023180002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A00E7 +:40CE400001235340DBB2002B01D0012300E00023002B07D0059A55495548002300930023FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B0893002328 +:40CE80000B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099AA6 +:40CEC0000B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F803000793079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BAB +:40CF0000D3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA01235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B448B +:40CF400012781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A1A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD31804 +:40CF80000B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C04600E0C0460B9B18000DB000BD184804102F010180B86D00085448041000B587B09B +:40CFC000039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF030009221A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002BFD +:40D0000008DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB00590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B35 +:40D0400001D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002B07DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031EC8 +:40D0800065D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE0089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD11B +:40D0C0001F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059BD3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B784E +:40D100000A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B4405 +:40D140001A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099B18000BB000BDC046584804102F010180786D000800B587B0039002910192039BF2 +:40D180001800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E0059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE0300E5 +:40D1C000049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019A0299039B180000F006F803000593059B180007B000BD00B587B0039002910192CC +:40D20000039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B4216E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFE84 +:40D240000300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B39 +:40D280001B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A52421A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B685C +:40D2C0000593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB2002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B68D3 +:40D30000D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B07047C0461805000814890008746D0008706D000800B583B001900C4B1B689B688E +:40D34000180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B002B01D0FEF77CFFFEE7C0467406000884B00390029101920123180004B0704736 +:40D3800000B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B0704700B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F0BF +:40D3C00037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039BE5 +:40D400001B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB2039B1A700123180005B000BD8C050000A0480410C048041000B585B00190019B6F +:40D440000393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B785BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC046A5 +:40D4800094050000A0480410E848041000B587B00390039B18000AF063F803000593059B002B07D1039A05490548002300930023FFF73AF9059B180007B000BD28490410E0 +:40D4C0001F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05490548002300930023FFF71EF9059B180007B000BD484904101F01018000B583B067 +:40D500000190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04603B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BD81 +:40D54000A049041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB234 +:40D58000002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B180004F029FAC04605B000BDE84904100601018000B583B00190019B180000F0CA +:40D5C000A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FBE6 +:40D60000009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB0B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B33229F +:40D640001800FEF79BFDC04607B000BD704A04108C4A0410A04A041000B587B00390039B1A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B41 +:40D680001A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BDA44A04101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F05B +:40D6C000ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180007B000BDB84A04101701028000B583B00190019B1B68180002F0B6FA019B1800BA +:40D7000000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023A1 +:40D74000DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A0093084B009A1A60084B019A1A6000F06EF800F08AF81889000800000108646E000838 +:40D78000606E0008746D0008706D000810B5154B154A1A60134B0B225A60124B1C22DA60104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A6072 +:40D7C0000C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC04610BDC046206E0008CC4A0410046E0008006E0008506E0008DC4A0410346E0008F7 +:40D80000306E000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B421900100002F0D1F9C04603B000BD006E000800B583B00190044B1B68180002F0EEF913 +:40D84000C04603B000BDC046006E000810B500F013F804F043F900F011F8C04610BD10B5FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F0AF +:40D8800031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204B214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4B77 +:40D8C00018229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A11491248C4 +:40D90000002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC04624780008E84A04100878000834780008A07800085C780008F84A0410587800081D +:40D940005FD80210004B04101D0101801C4B041000B583B00190064B1B68002B04D0044B1B68019A10009847C04603B000BDC046686E000800B583B0019000F017F900006A +:40D9800000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A1449154875 +:40D9C000002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A10491148002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046004D041017 +:40DA0000344B041025010280584B041026010280804B041027010280B84B041028010280F44B04102A010280344C04100001028082B00190019B0633052B10D89A000A4B4A +:40DA4000D3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B180002B07047C046184D0410504C0410684C04109C4C0410B44C0410C44C0410FD +:40DA8000DC4C0410F84C041000B585B00390039B1800FFF7CDFF0100039A0348002300930023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039A1C +:40DAC0000248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF0100039A0248002300930023FEF71CFE3301018000B585B003900291029B113356 +:40DB00000BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BD3401018000B585B003900291029B1800FFF77EFF0100039A0248002300930023E9 +:40DB4000FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A0248002300930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FE44 +:40DB8000C04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF771FDFEF71BFCC04610BD000010B5024B1B689847FBE7C0461C0500087046C0089C +:40DBC0002CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB91421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60CF +:40DC0000906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF30880D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E467047AE +:40DC400001B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E734050008544E041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B7E +:40DC80005A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F01FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031EAE +:40DCC00009D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC0468DDC021082B0EFF305830193019B5A1E09 +:40DD00009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A52024E +:40DD4000920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002349E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B24 +:40DD800007D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B07D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904B5B +:40DDC000DA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B1900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B691900FE +:40DE0000100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BDA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B802260 +:40DE40009A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674BDA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B1968B2 +:40DE80005F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B9B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FA93 +:40DEC000031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B1968474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404BDD +:40DF00001B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FA031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C1968B8 +:40DF40002F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284B9B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA2A +:40DF8000031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C1968174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B35 +:40DFC0001B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC0462005000883 +:40E00000544D04102805000800B585B0314B1B7A012B07D007235B421800FFF735FD01235B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FD3D +:40E0400001235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B421800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F00C +:40E08000CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B180002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019BE2 +:40E0C00083F31488034B02221A720023180005B000BDC04620050008544D04104DDC02103C05000880B582B000F03AF8FFF702FE031E03D1FFF709FE031E08D006235B42C7 +:40E100001800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BD55DD021080B582B0FFF7E4FD031E03D1FFF7EBFD031E08D006235B421800FFF72D +:40E14000A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BD09E00210C046704782B00190019B180002B0704784B001900091019A009BD3180393039BF8 +:40E180000293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D1009B0722134002D1009B172B01D8002329E0019B1800FFF7D5FF03000393039B8D +:40E1C000009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019B11001800FFF7C4FF0200029B1A60029B1B6800221A60029B1B6810225A60029B55 +:40E2000000225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B03D0019B0322934301D0002384E0029B08330793079B0733072293430793039BEE +:40E2400008211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343069AD31A0693069A079B9A4208D2089B1B680893089B1B68002BE7D100235BE026 +:40E28000C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B68083B1A00039B11001800FFF761FF03000593059B5C68039B1800FFF753FF030070 +:40E2C0005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079A019B1A43089B5A60089B08211800FFF73FFF030009931EE0089B5B680322934314 +:40E300001A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B5A60089B059A1A60059B08211800FFF71FFF03000993099B18000AB010BD00B5BA +:40E3400087B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FF03000393039B083B039300230493019B08211800FFF7FCFE0300059309E0059B4B +:40E380000493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7E1FE03005968059A5268032082438A1A5A60049B002B03D1059B00225A6003E08C +:40E3C000059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B0019018 +:40E40000019B180002B0704782B00190019B180002B07047014B5B69180070472005000886B00390029101920093039B002B08D0029B002B05D0019B002B02D0009B002BB4 +:40E4400001D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039B009A5A61029B019A5343009AD218039B1A61009B059308E0059A019BD318049393 +:40E48000059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180006B0704786B00190EFF310830393039B0593019B002B01D1002314E072B6019B15 +:40E4C0005B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B00D162B6049B180006B0704784B001900091EFF310830293029B0393019B002B4A +:40E5000009D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B5A69009B1A60019B009A5A61019B5B685A1E019B5A60039B002B00D162B600231D +:40E54000180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF03000393039B002B0FD0019B1800FFF74CFF0300180002F053F9030002930399029BFF +:40E580000022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FFF7B9FA0023F9E0039B0793029B033303226F +:40E5C0009343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D804235B4219000020FFF79CFA0023DCE0079B069A53430593019B002B48D0019B64 +:40E600001B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322134003D1019BDB68232B13D809235B4219000020FFF776FA0023B6E0019BDB6811 +:40E64000002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134003D1049A059B9A4218D20A235B4219000020FFF757FA002397E0049B002B0DD060 +:40E680000A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002B1CD1434B9C229B58002B08D0404B9C229B581800FFF7F6FE03000B9309E03C4BFE +:40E6C00080229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D12F4B9B6F059900221800FFF787FD030016 +:40E700000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B9C229B580B9A11001800FFF7DFFE07E01F4B80229B580B9A11001800FFF7FFFD0A +:40E7400000230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A431A700B9B002B19D00B9B06221A700B9B27226A4412789A700B9B089A5A600B9B47 +:40E7800000229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B4219000020FFF7BEF90B9B18000CB010BD2005000847E5021010B584B001900091E2 +:40E7C000019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039B11001800FFF79EF9002320E0039B0C331800FFF757FE03000293029B002B15D128 +:40E80000009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF7F9FD03001900200001F0C2FF029B180004B010BD00B587B001900091019B180024 +:40E84000FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800FFF760F904235B422AE0059B0C33009A11001800FFF73AFE03000493049B002B76 +:40E880001DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B1800FFF7B1FD0300180001F0B8FF030002930399029B0122180002F0EBF9049BDF +:40E8C000180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0039B1B78062B02D1009B002B08D004235A42039B11001800FFF714F9002307E0A4 +:40E90000039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B1800FFF76BFD03000393039B002B03D0039B1B78062B09D004235A42039B110063 +:40E940001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029B002B07D1039B1800FFF74EFD0300180001F026FE029B180005B000BD80B588B09B +:40E98000039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF7C1F8002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0022 +:40E9C00000DF03000793079B180008B080BDC04691E5021080B586B001900091FFF7F8FC031E03D1FFF7FFFC031E08D0009A019B11001800FFF767FF030005930BE0019B2B +:40EA00000493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046B9E7021080B586B001900091FFF7D0FC031E03D1FFF7D7FC031E08D0009A019B34 +:40EA400011001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044B1F0000DF03000593059B180006B080BD35E8021082B0EFF305830193019B5A1EB2 +:40EA80009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B6918007047A4 +:40EAC0002005000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B05930023049304E0059B0493059B5B680593059B002B05D0059BDA78009BDB78FF +:40EB00009A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B009ADA62049B002B03D0049B009A5A600FE0019B009A1A630BE0009B00225A6054 +:40EB4000009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B002B00D162B6C04606B0704788B00190EFF310830393039B069372B6019B9B6AE9 +:40EB80000593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD0019BDB6A079314E072B613236B44079A92781A70079B01229A70069B002B00D1E4 +:40EBC00062B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0C046079B180008B0704782B001900091009B5B68002B05D0009B5B68009A92686A +:40EC00009A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E0009B5A68019B1A63C04602B0704700B589B00190019B9B78002B5ED0019BDB680A +:40EC40000793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF745FC079B9B68002B00D195E0079B9B685B78932B00D08FE0079B0C331800FFF733 +:40EC800011FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03000593059B00220021180001F0F3FF059B180001F03FFF03000493049B08331B68D0 +:40ECC0000393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A70049B0C331B68DAB2069BDA70069A079B11001800FFF7E6FE4EE0019B9B68079343 +:40ED0000019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE0300180001F07BFD03000593059B00220021180001F0AEFF059B180001F0FAFE03 +:40ED400003000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B0C331B68002B06D0049B0C331B681A00019BDB781370019B00221A70079B0C3344 +:40ED8000019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FEF7B5 +:40EDC000C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C0007980CF0AAFF0300DBB2E3181F2B07D804235B4219000020FEF7A7FE0023E8E0039B99 +:40EE0000079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6905930B9B002B0FD00B9B0322134003D1019BDB68332B13D809235B421900CB +:40EE40000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE0023B6E00A9B002B0FD00A9B0322134003D1059A069B9A4218D20A235B42190000208C +:40EE8000FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E00023089300230B9300230A930B9B002B1CD1494BA0229B58002B08D0474BA0229B5837 +:40EEC0001800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1364B53 +:40EF0000DB6F069900221800FFF780F903000A930A9B002B1ED127236B441B780122134015D02D4BA0229B58002B08D02A4BA0229B580B9A11001800FFF7D8FA07E0264BB1 +:40EF400080229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FE27236B4427226A44127802210A431A700B9B002B25D00B9B08221A700B9B2722D4 +:40EF80006A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B0022DA620B9B00221A630B9B0C3318000A9B079A0399FFF733FA074B074A1A671A +:40EFC00005E005235B4219000020FEF7BDFD0B9B18000CB010BDC046200500082FEC021010B58CB00390029100936B4607331A70039B1800FFF754FD03000A930A9B002B3C +:40F0000006D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD04235B428DE00A9B9B68002B35D00A9B9B685B78832B30D10A9B1800FFF737FD0300E5 +:40F04000180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD03000893089B08331B6807930A9B5A6A0299079B180008F0B8FD089B0C331B68002B4A +:40F0800007D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF701FA03000693069B002B1CD0069B0C3318000A9B5A6A029B190008F095FD069B83 +:40F0C00007221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC00230B932BE0009B002B25D0009B1900932001F0F5FD031E1AD00A9B1800FFF751 +:40F10000D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833029A1A60089B0C336A46073212781A6002235B420B9302E003235B420B930B9B6C +:40F1400018000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF7E4FCCA +:40F1800004235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800FFF723FD099B0C3319000A9B5A6A029B180008F019FD019B002B03D0099BDA7888 +:40F1C000019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D00A9B9B685B78932B3ED10A9B0C331800FFF758F903000993099B002B34D00A9BE8 +:40F200001800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B180001F087FC03000793079B08331B680693099B0C3318000A9B5A6A069B1900B9 +:40F2400008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9B11001800FFF72EFC00230B9329E0009B002B23D0009B1900832001F031FD031E18 +:40F2800018D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF309830593059B0793079B0833029A1A60079B0C33019A1A6002235B420B9302E003235B42BC +:40F2C0000B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7DFFB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D0D0 +:40F3000004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F803000593059B002B26D0059B0C331800069B5A6A029B190008F057FC059B07221A70A5 +:40F34000059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A60059B1800FFF7A2FB0300180001F028F90023079302E003235B420793079B180054 +:40F3800009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B110018002E +:40F3C000FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C331900069B5A6A029B180008F0FDFB019B002B03D0059BDA78019B1A70059B0C332E +:40F40000069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793079B180009B000BD80B588B0039002910192FFF71FFB031E03D1FFF726FB031E50 +:40F4400008D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046A1ED0210CA +:40F4800090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD0009C6B4607331A78029903982300FFF70CFF0300099319E0039B0893029B07936B +:40F4C0001B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A00059B044C270000DF03000993099B18000BB090BDE1EF021090B58BB003900291FE +:40F5000001920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF0300099313E0039B0893029B0793019B0693009B0593089B1800079B1900069B50 +:40F540001A00059B044C270000DF03000993099B18000BB090BDC04647F1021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E93417F +:40F58000DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070472005000800B587B00190019B059331E0059B5B690493059B14 +:40F5C000DB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF0300180001F01BF903000393039B00220021180001F04EFB059B039ADA60039B93 +:40F60000DA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BCAD1C04607B000BD00B587B00190019B002B27D0019B1B680293019B5B68049326 +:40F64000019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B4219000020FEF734FA00235EE0019BDB68002B0DD009235B4219000020FEF728FA21 +:40F68000002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0234B94229B581800FEF7FCFE0300059309E01F4B80229B5801221C211800FEF7E5 +:40F6C000A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B04221A70059B0F226A4412789A70049BDAB2059BDA70059B029A5A60059B0022E6 +:40F700009A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B4219000020FEF7D4F9059B180007B000BD2005000800B587B001900091019B180007 +:40F74000FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B11001800FEF7B6F901235B4289E0049B002B03D0049B1B78042B09D004235A42049B1100D6 +:40F780001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049B5A61049B00221A61039BDB6A002B03D0039BDB6A049A1A61039B049ADA62049B52 +:40F7C00001221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D1049B1B7EFF2B0AD110235A42049B11001800FEF76DF903235B4205933EE0049B6A +:40F800001B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A000223134014D0049BDB6820229A56039B20215B569A420BDA049BDB68039A20215156202235 +:40F840009954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF799FE0200039B1900100000F0A1FF02235B42059302E003235B420593059B180072 +:40F8800007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B002B09D108235A42059B11001800FEF70FF901235B42A8E0059B002B03D0059BCE +:40F8C0001B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002B09D10F235A42059B11001800FEF7F0F803235B4289E0059BDA68049B9A4209D0A7 +:40F900000E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A76059B1B7E002B00D06EE0059B5B69002B04D0059B5B69059A12691A61059B1B6913 +:40F94000002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A00022313402AD01B236B44049A2121525C1A70049BDB6A079317E0079B9B68002B10D084 +:40F98000079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C1A70079B5B690793079B002BE4D1049B1B226A44202112785A54059B9B68002BDD +:40F9C0001FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F059F9059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B012256 +:40FA00001A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD03000393039B002B03D0039B1B78042B09D004235A42039B11001800FEF749F804235E +:40FA40005B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B69039A12691A61039B1B69002B05D0039B1B69039A52695A6103E0039B5A69029BE7 +:40FA8000DA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059317E0059B9B68002B10D0059B9B6820229B5613226A44127852B29A4206DA059BC3 +:40FAC0009A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613226A44127852B29A4209D0029B13226A44202112785A54029B180000F0B0FE039B4A +:40FB00009B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B0022180001F0B6F8039B9B68002BEAD1002001F059F8039B00221A70039B9B7887 +:40FB40001A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF7C5FC07E0054B80229B58039A11001800FEF7E5FB0023180007B000BD200500084F +:40FB800080B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF797FF0023039308E0019B0293029B1800044B1F0000DF03000393039B180004B040 +:40FBC00080BDC04629F6021080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD006235A42019B11001800FDF771FF06235B4205930BE0019B0493009B0393049B67 +:40FC000018000399044B1F0000DF03000593059B180006B080BDC04635F7021080B584B00190FFF79BFC031E03D1FFF7A2FC031E0AD006235A42019B11001800FDF748FF69 +:40FC400006235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04685F8021080B584B00190FFF775FC031E03D1FFF77CFC031E0AD0062350 +:40FC80005A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04611FA021082B0EFF305830193019B5A1EB0 +:40FCC0009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B691800704752 +:40FD00002005000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B89013B9AB2019B9A810123059301E000230593049B002B00D162B6059B180006B02C +:40FD4000704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B9B8901339AB2019B9A810123059301E000230593049B002B00D162B6059B18006E +:40FD800006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B1800FFF7A3FF0300180000F038FD03000393039B00220021180000F06BFFC046D0 +:40FDC00005B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B9A4207D904235B4219000020FDF782FE002373E0019B002B24D0019B1B68059320 +:40FE0000019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B4219000020FDF766FE002357E0019BDB68002B0BD009235B4219000020FDF75AFE00 +:40FE400000234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98229B581800FEF71EFB0300079309E01E4B80229B58012210211800FEF7C7F90300FA +:40FE800007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A70079B1B226A4412789A70079B059A5A60079B00229A60029B9AB2079B9A81039B6B +:40FEC0009AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B000BDC046FFFF00002005000885FD021010B584B001900091019B1800FFF7F0FE8A +:40FF000003000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD04235B4226E0029B1800FFF7EBFE031E02D0002303931CE0009B002B16D0009BA4 +:40FF40001900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE03001900200000F026FC02235B42039302E003235B420393039B180004B010BD00B587B001905E +:40FF8000019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B11001800FDF7A6FD04235B422AE0049B9B68002B12D0049B1800FFF797FE030097 +:40FFC000180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800FFF7AFFE031E02D00023059309E011235A42049B11001800FDF77CFD03235B428B +:020000041003E7 +:400000000593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039B002B03D0039B1B78052B09D004235A42039B11001800FDF75DFD04235B423BE050 +:40004000039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB0300029303235942029B0022180000F015FE039B9B68002BEAD1002000F0B8FD039B00221A70039B85 +:400080009B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A11001800FEF724FA07E0064B80229B58039A11001800FEF744F90023180005B000BDC0465C +:4000C0002005000800B585B001900091019B1800FFF706FE03000293029B002B06D0029B1B78052B02D1009B002B09D004235A42029B11001800FDF7FDFC04235B420CE0EB +:40010000029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD00B585B00190019B1800FFF7D9FD03000293029B002B03D0029B1B78052B09D0A3 +:4001400004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD0029B1800FFF7C2FD0300180000F028FA0023039309E011235A42029B110018000F +:40018000FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF789FD031E03D1FFF790FD031E08D006235B4219000020FDF79DFC002307930EE0CC +:4001C000039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046C5FD021080B586B001900091FFF75EFD031E03D1FFF765FDCD +:40020000031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046F1FE021080B584B0D7 +:400240000190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC0467BFF021014 +:4002800080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B11001800FDF728FC06235B42039308E0019B0293029B1800044B1F0000DF03000393039BED +:4002C000180004B080BDC0460D000310024B802252055A60C046704700ED00E082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047A5 +:4003000082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047014B1B7A180070472005000886B00190EFF310830293029B04930E230A +:400340006B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B56229B5A013399B2164B56229952144BDA6D134B58215B5A9B00D318019A1A60104B1F +:4003800058229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084B5822002199520123059301E000230593049B002B00D162B6059B180006B070479B +:4003C0002005000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B61C4B56229B5A002B29D01A4B56229B5A013B99B2174B56229952164BDA6D154B5A +:400400005A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B5A2299520B4B5A229B5A6A46063212889A4206D1074B5A220021995201E0002394 +:400440000393029B002B00D162B6039B180005B000BDC0462005000800B583B001F0C2FA2D4BDB685A1C2C4BDA602B4B1B6D002B02D0294B1B6D984700F004FB002000F08E +:40048000B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B1A6C1D4BDA6334E01B4BDB6B002B04D0194BDB6B5A1E184BDA63174BDB6B002B04 +:4004C00027D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B9B6B20215B569A4213D1019B180000F0DCF9094B9B6B180000F0F2F9019B1800FB +:4005000000F062FB044B019A9A63034B1A6C024BDA63C04603B000BD2005000810B582B0FFF750FF03000193019B002B3CD0019B1B78072B36D89A001F4BD3181B689F461A +:400540001E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFE03001800A0471EE0144B9C6E019B1800FFF7C6FE03001800A04714E00F4BDC6EF7 +:40058000019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800A04700E0C046BBE7C046002000F01CFBC04602B010BDC046584E04102005000876 +:4005C00000B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE08E0064B01229A7204E0019B19000220FDF7C6F9C04603B000BDC046200500088F +:4006000082B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B002006B4607331A702023180002B0704782B0EFF305830193019B5A1E9341DBB21800CA +:4006400002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047000040 +:40068000014B1B7A1800704720050008014B5B69180070472005000882B00190024B019A5A61C04602B070472005000886B001900091EFF310830393039B059372B6019BF2 +:4006C0009A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B0704786B001900091EFF310830393039B059372B6019B9B6A0493019B9B6A009AD2430D +:400700001A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019B0222134029D1EFF310830593059B069372B6039B9B6A0793019B0122134005D05F +:40074000079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079306E0039B9B6A029AD2431A40039B9A62069B002B18D162B616E0039B9B6A079358 +:40078000019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029A134001D100230793079B180008B0704700B587B001900091009B002B2CD0009BCD +:4007C00020229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DA009B059ADA60009B2D +:40080000049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B584B00190019B9B680393039B002B12D0039B9A68019B9A60039B9B68002B07D03E +:40084000039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B585B00190019B039302E0039BDB680393039B002B03D0039B1B78012BF5D0039B41 +:400880001800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B11001800FFF786FFC04605B000BD82B00190019BDB68002B10D0019BDB68019A92689A60EF +:4008C000019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B07047000000B583B00190019B01225A70019A044B11001800FFF75CFFC04603B000BDC04663 +:400900003C05000884B001900091009B013321D1002303932C4B1B6B029304E0029B0393029B1B690293029B002BF7D1019B009ADA61019B039A5A61019B00221A61039B73 +:40094000002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E0029BDB69009AD31A0093029B0393029B1B690293029B002B04D0029BDA69009B37 +:400980009A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A1A6102E0084B019ADA62029B002B08D0029BDA69009BD21A029BDA61029B019A0A +:4009C0005A61C04604B070472005000882B00190019BDB69013323D1019B5B69002B04D1274B1A6B019B9A4246D1019B1B69002B04D0019B1B69019A52695A61019B5B693D +:400A0000002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0019B5B69002B04D1154BDA6A019B9A4222D1019B1B69002B0DD0019B1B69019ADC +:400A40001269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6103E0019B1A69024BDA62C04602B07047C04610 +:400A80002005000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019BDB69002B42D1019B5B78532B12D006DC332B11D0432B11D0132B11D019E0732BB1 +:400AC00010D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046019B1800FFF7D8FE019B1800FFF71E +:400B0000EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00225A61034B019ADA6200E0C04603B000BD2005000810B584B00190019B9C6B019B55 +:400B400022229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019B01225A70019B20229B560393154B1800FFF77FFD03000593059B9B68049304E0ED +:400B8000049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B059ADA60019B049A9A60059B019A9A60049B002B02D0049B019ADA60C04607B048 +:400BC00000BDC0463C05000800B583B00190019B02225A70034B019A9A6100F0BBF8C04603B000BD2005000810B586B0019017246C44FFF745FD03002370FFF747FD03003A +:400C00000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B002B31D0039B20229A56049B20215B569A4229DD039B1800FFF737FE049B180078 +:400C4000FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B20229A56049B20215B569A4208DD049B1800FFF771FF019B1800FFF7A5FF03E0EB +:400C8000019B1800FFF72CFEC04606B010BDC0462005000800B587B0039002916B4607331A70039B1800FFF745FF03000593059B029A1A60039B1800FFF788FE6B460733BF +:400CC0001B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD000000B585B0020000916B4607331A70FFF7C7FC0300022B01D0002324E0FFF7C6FC94 +:400D000003000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A46073212785A70009A039B11001800FFF7EAFD074B1800FFF773FD03000393039B1800F5 +:400D4000FFF742FF0123180005B000BD200500083C05000800B583B0FFF798FC03000193019B002B10D0019B9A6B019B1B6B9A4205D9019B1B6B1B68054A934204D0019BB2 +:400D800019000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B14D1019B596A019B23229B5C1A00019B1800FFF7B0FC03000393039B002B05D077 +:400DC0000399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B002B07D104235B4219000020FCF75EFE0023AFE1019B002B56D0019B1B680793AE +:400E0000019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9B002B0FD00D9B0322134003D1019BDB68432B13D809235B4219000020FCF736FE77 +:400E4000002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002B0ED00B9B0722134002D10A9B002B07D10B235B4219000020FCF718FE002369E1A4 +:400E8000099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020FCF704FE002355E10023079300230C9300230D9300230B9300230A93182309932E +:400EC0000A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD002337E10D9B002B1CD19C4B88229B58002B08D0994B88229B581800FDF7D2FAA5 +:400F000003000D9309E0954B80229B58012244211800FDF77BF903000D9323236B4401221A7003E023236B4400221A700D9B002B5DD00B9B002B5AD10A9B002B25D1884B4A +:400F40005B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B002B1BD023236B4423226A44127810210A431A7012E0794B5B6F0A99002218004F +:400F8000FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B1DD123236B441B780122134015D06B4B88229B58002B08D0684B88229B580D9A5A +:400FC00011001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D9323236B4423226A44127802210A431A700D9B002B00D1A0E00D9B01221A700D9B01223B +:401000005A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A600D9B0022DA600D9B00221A610D9B00225A610D9B00229A610D9B0022DA61099B8F +:4010400059B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002199540D9B00225A620D9B00229A620D9B0022DA620D9B0B9A1A630D9B0A9A5A63F0 +:401080000B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B1B680422134010D00A9B9B08113B059308E0069B04330693069B2B4A1A60059B5D +:4010C000013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD31800221A60059B01330593059B0D2BF3D1069B34331E4A1A60069B3833039A1A60069B8B +:401100003C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB21900FFF76EFA03002360069B2033029A1A600A4B0F4A1A6605E005235B4219000020EF +:40114000FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC04620050008544D0410A52E5AE2CCCCCCCC51160310950D031000B583B0FFF788FA0300019390 +:40118000019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B190010002C +:4011C000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B08 +:4012000080229B58019A11001800FDF798F8C04603B000BD2005000800B583B0FFF736FA03000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6AE5 +:401240001800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF309830093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019B23 +:40128000DB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B04225A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA6089 +:4012C000044B019A5A6302E0C04600E0C04603B000BDC046200500083C05000800B587B001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009B1F +:40130000002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D103235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F9E9 +:4013400003000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF903000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039A8B +:401380001340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B585B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB012377 +:4013C0005B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F9030077 +:401400000193019B002B01D1002301E0019B9B6A180003B000BD00B587B0039002910192FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE055 +:40144000039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049B1800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B20B +:40148000049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0BE +:4014C000039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B421EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009ADB +:40150000039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029B180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D52 +:401540001D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D16B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B0021E5 +:401580001800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B46073300221A706B4607331B78180003B000BD20050008544D041075D90210CD1803100B +:4015C00080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B4219000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B190087 +:40160000049B1A00044B1F0000DF03000793079B180008B080BDC046D50D031080B582B0FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DFC4 +:4016400003000193019B180002B080BD7511031080B5FCF78BFA054B1F0000DF01235B4219000020FCF722FAFEE7C0461912031080B586B001900091FEF7D9FF031E03D11B +:40168000FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046DD12031028 +:4016C00080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF7E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B080 +:4017000080BDC0469F13031080B582B0FEF78FFF031E03D1FEF796FF031E02D00023019304E0044B1F0000DF03000193019B180002B080BDF713031080B588B00390029173 +:401740000192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906235B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF030068 +:401780000793079B180008B080BDC0461714031082B00190019B180002B0704784B001900091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB68B3 +:4017C0000293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B50 +:40180000002B03D0039B019ADA6002E0024B019A5A64C04604B070472005000882B00190019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047AA +:401840002005000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E0019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009B76 +:40188000002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B11001800FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD0C8 +:4018C00000E0C04603B000BD2005000800B587B00190164B586E154B1B6E1A000821FDF7A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4BCB +:40190000D86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6818009047EBE7C04607B000BD544D0410200500084518031000B585B0019000918B +:40194000019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B0F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A60FD +:40198000094B039A5A60084B00229A60074B00221A700023180005B000BDC046C4050008FFFFFF0000ED00E010E000E0BC740008094B1B78002B06D0074B00221A70074B81 +:4019C0008022D2045A60064B054A126801210A431A60C0467047C046BC74000800ED00E010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B17 +:401A00001800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B000BDC046784E0410184F04107047EFF3108072B6704780F310887047FFF7F6FFB1 +:401A40000E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808490860BFF34F8FCEF753FBFEE730610410F6 +:401A80004861041010150008188900080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B0704765 +:401AC000B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F0CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B0C9 +:401B0000364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE0239B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB00802236 +:401B40005204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1501E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC02399 +:401B80005B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A00C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF78D +:401BC0007FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC0460000264084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F221340DA +:401C00000D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD3181B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A2F +:401C40000D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB010F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4BA3 +:401C80000F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00B2 +:401CC000D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78A5 +:401D0000002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774BD358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F032 +:401D400047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB000E +:401D8000D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B444A +:401DC0001A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A236B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0AA3 +:401E00001F2213400493384AC023DB00D3581B0C1F22134003930F9B059A53430499180009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4A6A +:401E4000E0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AFF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD030059 +:401E80000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4B1A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B68F8 +:401EC000174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A60C04611B000BDC046000026406050041000127A0000366E01D005000884050000BC +:401F0000C805000800002140CC050008C4050008D40500083F420F0040420F00DC050008E7030000D8050008E005000882B0054A8023D358032213400193019B180002B059 +:401F40007047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049B032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B19 +:401F80000E4A13430393039B03221343039309498022039B8B50C046064A8823D35810221340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA057C +:401FC00000B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019BD4 +:402000001800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A008021042001F049FCC04610BDC0462076000810B5034B180001F041FBC04610BDC046DB +:402040001875000810B5034B180001F037FBC04610BDC0467075000800B583B002F091FC030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B180089 +:4020800001F092F9019B180002F07FFCC04603B000BDC046C074000874500410A8500410DC50041010B5034B180001F007FBC04610BDC046C0740008084B5B6C1B0AFF2214 +:4020C00013403A2B08D1054B044A526C04490A40E82189010A435A64C046704700002740FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C046000027403B +:40210000FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD3585B005B08054A8B5000230193019B180002B0704703004A00000026400C050000DA +:4021400000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002BAC +:4021800001D000230393039B180005B000BDC04602004A0000002740044B1B69042213405A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A499E +:4021C000094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B180004B0704701004A000000264084B001900A006B4603331A70114B0393019B042BBC +:4022000019D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B4603331B780F2003401A43019BE0339B005A5000230393039B180004B07047C046E5 +:4022400001004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4603331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B7883 +:402280001B01302003401A43019BE0339B005A5000230393039B180004B0704701004A000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B783E +:4022C0001B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B002006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B0C5 +:402300007047C0460000214082B002006B4607331A70084B074A1269074911406A460732127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B0D8 +:4023400002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C490B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA50E5 +:40238000C04603B000BDC04613090000105104100000264000B583B002006B4606331A806B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD358B9 +:4023C0000A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B090000105104100000264004050000FEFCFFFF82B002006B4607331A700948084A094BC1 +:40240000D358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070470000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C046F6 +:402440007047C046000026400405000000B583B002006B4607331A706B4607331B780F2B05D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B460733C3 +:402480001B781902F0231B010B401A43A023DB00C250C04603B000BD080A00001051041000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4A53 +:4024C0000D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B781903E023DB010B401A43A023DB00C250C04603B000BD2E0A000010510410000026407A +:40250000FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0460000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B110010 +:40254000180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A431A60C04603B000BD910A00001051041000002740FFFCFFFF044B044A12688021B5 +:4025800009060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D00520F8 +:4025C000FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE01210020FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F084 +:40260000F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA13C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B190014 +:40264000012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF7C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD32 +:402680006421002002F004FAC04604B010BDC04620A10700645104101027000010B584B06B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC046D7 +:4026C0007051041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A48002300930023002201 +:40270000002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039A1F480023009313000622032100F0F8FB039A1C480023009313000622012100F00D +:40274000EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042100F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062105 +:4027800000F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC04600003240800032408005324006060000070600000003324010B5034B1800FFF712 +:4027C000C3FBC04610BDC04600000810C046704782B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B001 +:402800007047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180002F0CEF8019B5B01034A94466344180003B000BD805104100000234000B583B030 +:402840000190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A94466344180003B000BDC046805104100010234000B585B0039002910192019B1B0C1B046F +:4028800006D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084B1100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC046D6 +:4028C0008051041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F06FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0CF0 +:402900001A43039B1A60039B1B68C04605B000BD6A020000805104106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C23 +:40294000019B9A60C04603B000BDC0468051041010B5D1F7EBFE054B186880235B001A000021FFF7AFFFC04610BDC046B476000800B583B06B4603221A806B4622229A70DB +:402980006B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B1B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF26 +:4029C0006B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D1054B5321180001F0EBFFC04603B000BD51290310B4760008D4510410B0760008CB +:402A000010B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000FFF77CFFC04610BDB0760008D4510410024B1B691B0EDBB21800704700002140F2 +:402A4000024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0AAFF019B5B01034A94466344180003B000BD2852041079 +:402A80000000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F074 +:402AC0007FFF019A0299039B180000F0FDFA0300180005B000BDC0462852041010B5044B02221900002000F0B7FDC04610BDC0462D10000810B584B001901E4B0393019B0C +:402B0000180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B4D +:402B40001A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00110018000AF0D0FF03000393039B180004B010BD06005200B87600080001001CEF +:402B800060F59000C80500089808000010B584B001900091204B0393019B180000F092F8031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A1D +:402BC0009A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A431400114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A18FD +:402C000080235B00110018000AF07EFF03000393039B180004B010BD06005200B876000800010006808D5B00C805000884B00190019B1E4A93420BD9019B1D4A934207D81B +:402C4000019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD8019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019BCF +:402C80000F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B420393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF15FF +:402CC000FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D1012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D089 +:402D00002B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD08022520093423BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE0CA +:402D40001E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E0A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB03039340 +:402D800011E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E00F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F0ED +:402DC000050000F0030000F0010052000200520003005200010050000200500005005200FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A000123EA +:402E00005340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C046084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD0200500083 +:402E4000B8760008000025400C0400008C04000000B589B0039002916B4607331A70029B072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A007F +:402E8000244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B010693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B46073355 +:402EC0001B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A4079 +:402F0000059B1A43069B5A60C04609B000BDC046430200007C5204100000CEBF0010030400B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F2290 +:402F4000934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB1B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D2434D +:402F800013400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2191400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB23 +:402FC0001A780299039B1800FFF742FFC04607B000BDC046CC52041000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A6022 +:40300000C04603B000BDC0461C53041000B583B001900091009B1B0C1B0405D0064A074B1100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA50200001C53041077 +:4030400082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA37 +:40308000002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B03C +:4030C00000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019A039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B059319 +:40310000059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A60002320 +:40314000039301E0034B0393039B180005B000BD7053041001008A0082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191403A +:403180000A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180001F00AFC019B5B01034A94466344180003B000BDC453041031 +:4031C0000000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B5B01044A94466344180003B000BDC046C45304100010234000B585B0039002918C +:403200000192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D0D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A60D9 +:40324000C04605B000BDC046C453041082B00190019BDB68180002B0704782B00190019B1B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B110003 +:40328000180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A020000C45304106B020000B5 +:4032C00000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B1B041A0C019B9A60C04603B000BDC046C453041082B001900091019B009ADA60F5 +:40330000C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C180002B0704782B00190019B1B041B0C180002B07047000000B583B0019000910C +:40334000009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300180003B000BDC0467E030000C453041082B00190019B1B68002B01DA002300E06E +:40338000014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04602B07047D876000810B590B00390039B002B04D13B4B4F21180001F001FB039B2C +:4033C0005B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F0EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B572161 +:40340000180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C303CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B684B +:40344000DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB1C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F0F9 +:4034800013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B010BDC0461854041000B587B00390029101920093039B072B04D9244BB32118002B +:4034C00001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AFF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A61C1 +:40350000059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF76BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5EFA +:40354000059B9A81C04607B000BDC04618540410D876000800B58BB00390029101920093019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FA2C +:40358000029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B1A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089BB2 +:4035C0005B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B691800FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A6084 +:40360000089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A11001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099B79 +:4036400018000BB000BDC04618540410D876000807028A0004028A0000B587B0039002910192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B43D3 +:40368000D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059301E0054B0593059B180007B000BDC04618540410D87600080A028A0010B588B0D2 +:4036C00001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B42324 +:40370000FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019BDF +:403740005C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FD031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039BA4 +:403780001B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B680493049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B180012 +:4037C000FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FD019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019B8D +:403800009B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC0461854041000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B01F5 +:40384000034A94466344180003B000BD6C5404100000234082B00190019BDB68180002B07047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F057 +:403880009FF8019A0299039B1800FFF71DFC0300180005B000BDC0466C54041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B587B003900291BA +:4038C0000192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B1800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029B8D +:403900001F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A601A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B684A +:40394000124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D1002305930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B036 +:4039800000BDC04603018A00DC760008E076000801018A0000B589B001900A006B4603331A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A4215 +:4039C0004DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B7801225340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059BD0 +:403A00005A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A92008A1812680399C9430A401A600023069301E00F4B06930D4B1B680021180010 +:403A4000FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B0693069B180009B000BDC04603018800DC7600080201880004018A0000B587B045 +:403A80000190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A1340C8 +:403AC00002D0074B059304E0064B059301E0064B0593059B180007B000BDC046DC760008010188000001880004018A0082B001900091019A90239B000099D150C04602B096 +:403B0000704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704710B584B00190009100230393BD +:403B4000019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0AA +:403B8000802300E04023180002B0704710B586B0039002910192039B002B02D0029B002B01D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B25 +:403BC00008D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7B032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B51 +:403C0000072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B9B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002B9D +:403C400009D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D0029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B7895 +:403C8000012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B6898 +:403CC000032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B68072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE38 +:403D0000029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B04D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B5B +:403D40009B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4B4B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B34 +:403D8000464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F01225340DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A02FE +:403DC00000E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802292041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B6321180086 +:403E000000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FD029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B78F6 +:403E40001A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002B02D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029B98 +:403E80005B7C002B0CD080239B000AE00160AA00000069406855041092F4FFFF8CF8FFFF00231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A435E +:403EC000029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E0CC +:403F000000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF221A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399AF +:403F4000C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F02FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B0090 +:403F800000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B7854 +:403FC000012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213401900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B212173 +:404000005B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A8123B4 +:404040009B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A50019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019BD5 +:4040800000221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046685504106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019B36 +:4040C0001B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B00221A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B41217E +:40410000180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B1B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB0573 +:404140009A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D21180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A68802371 +:404180009B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B029A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A436F +:4041C000019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BDBC55041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042BA7 +:4042000032D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF339A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B001A +:404240005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD0339B005A5000230393039B180004B0704701004A000000264070B590B005900491B2 +:4042800000230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF339B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A9342CB +:4042C00002D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049B5B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A70B7 +:4043000007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B01D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A3F +:40434000019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7AFC +:40438000002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F022 +:4043C00051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BDAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102B9F +:4044000004D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E070230E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049B64 +:404440005A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B1100180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A0024 +:40448000FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71784B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B57 +:4044C000013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B78102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002BB2 +:4045000001D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934201D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B78FC +:404540001A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B401A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019B8B +:404580008133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF339B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B002 +:4045C000019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B8133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F93C +:40460000009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009B002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0027 +:4046400030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063300229B5E9B0830496A4606320020125E9208C03292005258694606310988080075 +:4046800003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F2384 +:4046C0001340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2026 +:4047000018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B1E +:4047400035D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B00229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF73A +:404780005FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B00229B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC0461856041043 +:4047C00000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B46063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069B90 +:404800009A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039AC8 +:404840000A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B02997D +:40488000039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B5B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4B7C +:4048C0000299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0C046C04608B070476C5604100000214000B585B0020000916B4606331A80184B24 +:404900009A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E10331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D150CC +:4049400009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC04600ED00E00000000818560410000000100230800803D001300238FCD1C046C046E1 +:404980007047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606331B88044A127853431800FFF7E1FFC04603B000BDDC05000882B0019001BEFEE710 +:4049C00000B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFFD0140008E8140008064B802212069A64044B9B6C002B01DB002300E0024B180026 +:404A00007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134004D0019B8022D20213430193019B180002B070470000264000B583B00190019B16 +:404A40001A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019B1A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F072 +:404A800005F8C04603B000BDEC140008FEE7000084B0020000916B4607331A706B4607331B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334A00 +:404AC000E8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8235B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039BAA +:404B0000032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA506B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E000239E +:404B4000039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E0042304E0022302E0012300E000230393084B084A12680F218A431100039A0F2013 +:404B800002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD3581F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180026 +:404BC00002B07047000026401CFF000000B585B002006B4607331A70002303936B4607331B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FEA5 +:404C00001F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE03000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4644 +:404C400007331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821002000F06BF905E00221002000F066F9054B0393039B180005B000BD8C56041084 +:404C8000F076000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B0AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE030002938B +:404CC000FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA00F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A056B +:404D0000E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B500920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F225D +:404D400093431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FE00F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC0600008C56041020 +:404D8000000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD03000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A78012192 +:404DC0000A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B1B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B0393F8 +:404E0000049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B3C +:404E40001B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17236B441B78180007B000BDC046F0760008E8760008EC76000800B587B001901723CB +:404E80006B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049A019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B4412 +:404EC0001B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D0019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4B63 +:404F00001A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF734FD17236B441B78180007B000BDC046F0760008E8760008EC76000800B589B086 +:404F400002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B4607331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B46073344 +:404F80001B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B4606331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494B7D +:404FC00011001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B6806932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A7817 +:40500000069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B6906935C +:40504000069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A42C2 +:4050800020D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847FB +:4050C00003000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B180009B000BD8C56041021080000E8760008F4760008FF004200EC760008044B044AF8 +:405100009269802149040A439A61C0467047C04600F02540034B034A926903490A409A61C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B501A +:405140000649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02A9 +:40518000D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F00000D6 +:4051C000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE048 +:40520000019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A43019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7FE4 +:40524000002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D10399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A68A4 +:405280000398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31801221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A608F +:4052C000019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F023AF +:405300001B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A43019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6AC1 +:4053400003221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BDB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B0089012C +:405380004118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059B180006B07047C0460100B60082B001900023180002B0704782B001900023180085 +:4053C00002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B420393039B180005B000BD00B587B0039002910192009300230593019A029B1100A1 +:405400001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B074A934206D9009B064A934202D880239B0001E001235B42180002B07047C04635 +:40544000FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B05180002B0704782B0019080235B03180002B0704782B001900023180002B0704782B05C +:4054800002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B070470000AD +:4054C00084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B16 +:4055000011001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE502000033 +:40554000E0560410E602000000B587B0039002910192029B072B05D9134A144B11001800FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039BCD +:405580009B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039B9A62C04607B000BD8E030000E05604108F03000084B002006B4607331A706B46C3 +:4055C00006330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E23039378 +:405600000EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B07047BC57041082B0EFF305830193019B5A1E9341DBB2180002B05A +:40564000704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D2218002C +:40568000F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E1800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019B80 +:4056C0001B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE0019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC0468C +:40570000C04605B000BDC0463057041064570410685704107457041010B586B003900A000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A44128899 +:405740009A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E1800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A00DD +:4057800001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B4400229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF7CF +:4057C0006CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E1800FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC04602 +:405800003057041064570410845704109C57041000B583B001900A006B4603331A70019B002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B5622C4 +:405840001800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC04630570410645704107457041000B583B001900A006B4603331A70019B002B05D137 +:405880000E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F76DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046305704103C +:4058C000645704107457041082B00190019BDBB2180002B0704782B00190019B1B14DBB20F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B0F7 +:40590000704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B0F6 +:405940007047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D98E +:405980000F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BD6A +:4059C000E5020000D8570410E602000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D025 +:405A0000012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B07047CD +:405A40002858041010B586B0020002910E236B441A800E236B4400229B5E013353D00E236B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FFE2 +:405A800003001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400229B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF79A +:405AC0002FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059B01221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B00221800C3 +:405B0000FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB24A +:405B40001A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E1800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B42E0 +:405B80000593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A4113000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB225 +:405BC000D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFD180007B000BDC046E80500084458041000B585B0020000916B4607331A70FF23BA +:405C000003936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D91E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F7D2 +:405C40009DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91400A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B6852 +:405C80009A4202D9029B00225A60F6F7A7FB039B180005B000BDC046F805000890580410C4580410E458041000B587B002006B4607331A70FF2305936B4607331A781300C9 +:405CC0005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F74DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B39 +:405D00005B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A4213D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF03001B +:405D40000593059BFF2BDED000E0C046F6F746FB059B180007B000BDF805000890580410C45804102C59041000B585B0020000916B4606331A806B46063300229B5E03936D +:405D8000039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B46063301226A +:405DC00052421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B000BDC04690580410A459041098590410F876000800B585B0020000916B460633E3 +:405E00001A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F7ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200B1 +:405E4000D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFAC04605B000BDC04690580410A459041098590410F8760008BC59041010B58EB00A +:405E800008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D31801331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C33A +:405EC00001230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A68274903005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001AB67 +:405F000000225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A78174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A93AC +:405F40000FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B01330A930A9B002BECD0C0460EB010BDC046E8590410E8050008F0590410F80500089A +:405F8000280600083006000882B00190019B1B12DBB2180002B0704786B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED890 +:405FC0002249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B90 +:406000000F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059BB9 +:40604000180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B2A +:40608000032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA0208000844663449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B0093 +:4060C0005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032BDC +:4061000038D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB0208000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A50D0 +:406140001049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BB0208000844663449B005A5000230593059B180006B0704701004A0073 +:40618000FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B4B +:4061C00035D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002BA1 +:4062000015D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014018 +:4062400084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B7837 +:40628000022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB005F +:4062C000D35800230393039B180004B07047C04601004A000000014000FF008084B0020000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D11B +:40630000009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B0195 +:40634000FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B180004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B071 +:406380000190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E0402301 +:4063C000180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B583B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019BF1 +:4064000011001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B5B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B001900091E3 +:406440004D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B28 +:406480009A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF779FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800B8 +:4064C000F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF7FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039BE7 +:406500005B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C006A +:40654000009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD03000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A00045B0410E5 +:4065800000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019B84 +:4065C00008229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BDC44F041075 +:40660000284F04102C5B041000B593B0019002AB180040231A00002101F078FB02AB0C225A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A001E +:4066400002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E9341D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FEA4 +:40668000C04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D120 +:4066C000012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434B1B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E110027 +:406700001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B11001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C1A +:40674000059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E11001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059BFC +:406780000822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A81E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13235E +:4067C0006B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B1800F5F70AFF07B000BD0105000078770008A0880008C44F0410284F041000009FBF01 +:40680000A45B041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039B11001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B00190009198 +:40684000019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDC04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B2D +:406880001B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B681800FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B6889 +:4068C0001800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B46063300223D +:406900009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09490D +:406940006B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04602B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB0749C0 +:406980006B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B08 +:4069C00041D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B44DD +:406A00001B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B0068 +:406A40005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234BDD +:406A800003936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1A5 +:406AC000009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A500023AC +:406B00000393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4616 +:406B400007331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F203E +:406B800003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008082B001900091019B009A9A61C04602B0D3 +:406BC000704784B00390029101920399029A98235B0092018A18D318019A1A600399029A98235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019B84 +:406C00009A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B00390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B039 +:406C4000019000910199009A84235B0092018A18D3181B68180002B07047000000B583B00190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF00236A +:406C8000180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF76E +:406CC000D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D0D7 +:406D0000134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC0461C +:406D40007C770008185C0410000038405C060008645C0410885C04108D6C0310105C041010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B00190000206E +:406D8000FFF738F8044B00221A60C04610BDC046000038405C0600087C77000810B5074B1B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC0467C77000859 +:406DC0000000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02930E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B0E +:406E000005481A000021FFF70AFF0020FFF770FDC04605B000BDC046000038407C77000810B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC0462A +:406E40000000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C046085C0410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC04686 +:406E80007406000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833E8 +:406EC000416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B18687047C0467406000870B505000C1E40D0002802D0836B002B3ED00126636E33428B +:406F000033D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF8002323633D +:406F4000616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE7216937 +:406F80002800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E80465D +:406FC00093B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D007 +:40700000E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF8002310 +:407040002363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC4022C1 +:407080000120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD23 +:4070C0008AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF2D +:407100000100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D5300076 +:4071400070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F0A5F9F8E774060008C05C04100571031064 +:4071800010B5024900F09AF910BDC046E96E0310002310B5040003604360836081814366C281036143618361082200215C3000F0ADFD2000064BE4612362064B5830636206 +:4071C000054BA362054BE36200F0C2F910BDC0464181031069810310A5810310D181031070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B9233E +:4072000003229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A363280000F094F970BDC046F0880008817103104A +:4072400010B5024800F088F910BDC046FC88000810B5024800F082F910BDC046FC880008F8B50C000600F6F79BF8204FBB685D6803239D431E4B2C1B9C466444240B1D4BE9 +:40728000013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF80020F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B53 +:4072C0001C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E70C0C0008EF0F0000FF0F00008077000814100008A3 +:40730000F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F5368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B0424C +:4073400065D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000F6F780 +:4073800019F8F8BD680A042850D8A809020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E936883 +:4073C000B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4BE2 +:4074000020001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D802005C305B32C000ACE70123921093407E +:407440007A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A49 +:40748000904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B6015606CE7C0460C0C0008FF010000140C000818100008B077000854050000F8B5474678 +:4074C000CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD130001C +:407500000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0E5FA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BD30 +:407540001C1000081C1000081C100008241000087047C0467047C0467047C0467047C04610B5034B01001868F4F7A0FD10BDC0467406000810B5034B01001868F4F7CDFD85 +:4075800010BDC04674060008F0B557464546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E0F5F7F6FEF823FF339D4200D88FE2680A8C +:4075C00000D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E0624623 +:40760000636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B4652 +:40764000914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD024 +:4076800003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E56883 +:4076C0000836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083021E0102926D83800F5F75AFE1025182302208B4EF3181A005C68083A944200D117 +:407700002EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F749FE2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F2395 +:4077400040208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4AF3 +:40778000944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B68C3 +:4077C000013300D16CE14B46019A9B1A59185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D10D +:4078000042E14B46C01A01235844184353461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E218CA +:40784000506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2B00DCC6E001222900134311436519616057 +:407880003800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B427F +:4078C0009C46B218944463469A6803239846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656024 +:4079000070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C0460C0C0008FF01000014100008B07700080F1000008077000808100000A877000887 +:40794000AC77000873688EE608239B46073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A608F +:40798000F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B4285 +:4079C0009C46E1444B469B680138994500D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4617 +:407A000053603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B984287 +:407A40001CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E23F0 +:407A80007F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E65B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B491B +:407AC0008A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C046807700085405000082B000290AD0002A0BD0002B0BD01378BB +:407B00000B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D00130E6 +:407B40001042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A43AB +:407B80003242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C788218A34204D015E003780C78A34211D10130A2 +:407BC00001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103E9B +:407C0000350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF50043343 +:407C4000A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5C8A +:407C8000C254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E6025 +:407CC000A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D19324068 +:407D0000C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2CB8 +:407D400014D927001A00103F3E09013636019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD10322A2 +:407D800097430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083F4B +:407DC000F5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504656 +:407E000081438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132A79 +:407E400000D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000F5F7A8FA1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B53 +:407E800025D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029AEE +:407EC0003500D36892685C46D3609A60D5E74A460120464652684946024032434E464144034372604C444B6063680831184360600198F4F712F9CFE71100F4F7D7F80500B0 +:407F0000CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D9E8 +:407F400096E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A009346A3449B4500DA4FE7D7E70320029984469E +:407F8000496881434046091910300290814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC5346524655469268DB680835D3609A60221F242A76 +:407FC00000D98EE0132A00D888E05346316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46424641449960039B01989A1A01231A4349 +:408000004A605246526813404246134352465360F5F7D0F943E733680360736843601B2A2DD803003200083308320DE72B00320011685C4619605168D146596092689A6017 +:408040001BE74346FA185B469A604346C91A0123194351607A6801981340424613437B60F5F7A8F935001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B368EA +:408080008360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320018331032BCE73369320003610300716920 +:4080C000183318324161BFE65346326951469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D032001833103229 +:408100006EE75346326951469A613200706920331832C86164E7C0460C0C0008002370B5064C050008002360F5F7C6F8431C00D070BD2368002BFBD02B60F9E71489000821 +:4081400070B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E0022E9 +:40818000022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BDFFEFFFFF70B50C000E25495F03F010F8431C06D08023A2895B011343A381206523 +:4081C00070BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB2002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD0B0 +:4082000001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A43E4 +:4082400013433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D48FD +:408280008A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392073F +:4082C0002AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A090A401A2102014302D1100E190E401A90 +:4083000070BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD010101017E +:40834000031C0A7801311A700133002AF9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D10433196853 +:408380000A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B430E +:4083C0009B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD1043019 +:408400000431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C04600 +:40844000FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A731C3470002C1DD0012406E00D5D013A355501330134002D14D0002AF6D1F0BD13 +:4084800005000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D02E00DBE79C180021002AE8D019700133A342FBD1E3E7C04680808080FFFEFEFE48 +:4084C00030B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002C0D +:40850000E3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D34446634635 +:408540001C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D84346501C0133834203D36246494618005E +:4085800011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE7F5 +:4085C0001D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002C6B +:4086000009D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7BDFA002800D074E000231A009A46631E9846594601233800A14617004446B04656 +:408640005B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1AAE +:408680009A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE0424652446E +:4086C000505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E726 +:408700000020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A0021A6 +:408740004044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D1CB +:408780000133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E7404650449E +:4087C0009FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A4253410130FF +:408800001E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF7D9FC641B061E12D0012CF0D03F190121B84200D8391A0F00DF +:408840001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF795F900285CD1002399464346013B009309 +:4088800042460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF90028D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED133 +:4088C0005246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C88424E +:4089000003D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E74346E31A434500D24346013303930023CA +:408940004246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF7DDF8002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C10 +:408980008019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039B86 +:4089C00038009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FB036818001993FFF7ABFC1890AB891B06B7 +:408A000005D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001344D +:408A40002378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD37701228E +:408A800052429246002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE7B5 +:408AC0003A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD012277 +:408B00000B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34683001B1814785B0058182100531C3039F5 +:408B40001A000929F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FD9B +:408B8000630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A5D +:408BC00000D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA944648336344119353460E9A0793924500DA0792A2 +:408C0000002313934346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B68884638 +:408C4000102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DCDF +:408C8000B0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F077F907220F9B07339343013294469C44E6 +:408CC00062460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414604F02CFE002801D000F0FDFD0122484B52422800414603F001F8002801D000F0CA +:408D0000F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E70022C7 +:408D4000303B15001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A30671 +:408D800000D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B2A +:408DC00000D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A55 +:408E0000119166460E93F5E6D45C04107C5E0410FFFFEF7F385E0410129310231C438B46A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C920022043332 +:408E40000D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93CA +:408E8000E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FD0F +:408EC000E30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A54 +:408F000001D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A469B +:408F400013935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E93002311959A4613934BE68B4641461293002955 +:408F800000D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B0733FA +:408FC0009343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A70483254 +:409000005A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE5A1 +:409040008B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920123020099E68B461293A30600D483E607220F9B36 +:4090800007339343013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002347 +:4090C00016AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B68DE +:4091000002340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0485E0410D3 +:409140005C5E04108C5E0410103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA9460B +:409180000C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE008362F +:4091C000089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B9605A +:409200007B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F02F +:4092400037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B0134336001237360C5 +:409280007B68BC6001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119D64 +:4092C000149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C467360434664440133BC607B60072B00DC61E73A000699099892 +:4093000002F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DDD5 +:4093400066E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103D85 +:409380000832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A466419E7 +:4093C000013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA33 +:40940000002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A0091 +:409440000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FB51 +:40948000BC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723CA08354311002A000340303323702800A4 +:4094C0000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB7C5E0410785E04108C5E04101F98002800DC96E2139A14991300904600 +:409500008B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DCEA +:4095400000F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F912 +:40958000002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFBCD +:4095C000030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7FFA +:40960000BC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B96040 +:409640007B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFBDC +:4096800013680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DC99 +:4096C0007EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F828 +:40970000002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930332A +:409740008B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401334B +:409780007260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A0FDD1399119A8C466244326042467260A0 +:4097C0007A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103ECF +:40980000102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A6864440132F6 +:40984000BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC689846EB +:4098800032AE13E58C5E0410072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C37708001043EB +:4098C0000C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E253460133E4 +:4099000000D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A6D +:4099400013005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE200230022A9 +:409980004846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D14C +:4099C000F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9AA8 +:409A00000A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC0836002876 +:409A400007D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E132000832002800DACCE111980133106014987B60441826 +:409A80005060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A0006992D +:409AC000099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18601861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB029381 +:409B00005346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D005 +:409B4000FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF8D2 +:409B80001198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B18A8 +:409BC0006A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E3031E7 +:409C0000217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C013373 +:409C400021AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB17CC +:409C80001A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9B16 +:409CC000BC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793B3 +:409D0000062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019355 +:409D400003234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B54 +:409D80009446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C046785E04103C5E0410705E04101F9B1393002B00DCD5E05246002A00D092E0E20741 +:409DC00000D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A149330 +:409E00000E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD3B +:409E4000002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA50 +:409E8000521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF742 +:409EC00010FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E50123234051 +:409F0000139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF779 +:409F4000F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF36 +:409F800016ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716ABE8 +:409FC000D877FEF779FF01235B429A46C4E7C0468C5E0410405E0410445E041030B504009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202928E +:40A000000592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E7AD +:40A040008B232360F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC04674060008002904D0FF2A04D801200A707047002078 +:40A08000FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE431C00D070BD2368002BFBD02B60F9E714890008002370B5064C05000800236019 +:40A0C000F2F76AFE431C00D070BD2368002BFBD02B60F9E714890008F0B545468046DE4657464E464246E0B50C69126985B00B0002910020944200DD90E0142294466344FD +:40A1000099464A46013CA300D6181422424493469B4433681500591C5B461868019201F057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395B9 +:40A14000634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD201 +:40A18000039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B2B +:40A1C000019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B44 +:40A200000A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D009D +:40A2400016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD002805 +:40A280002FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD003000833FF +:40A2C000269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B0306 +:40A30000B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FFB04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F011 +:40A3400067FD02000B002000290001F01DFE04000D0003F013FB0022039000232000290001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849681D +:40A380003B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA84E29C460D930023049A99461100614458 +:40A3C0000491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239AD2 +:40A40000039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE6A +:40A440005346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E401A +:40A480001A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0B0FC04000D0076100837002EEED12200089833 +:40A4C00009992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC002801D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B0072 +:40A5000094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B48 +:40A5400002F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F0D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002829 +:40A5800001D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002801D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149BF3 +:40A5C000994638E00000F07F795E04100F270000A05F0410AC5F04100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33FD85F041058 +:40A60000B05F041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B01F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F037 +:40A64000E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F902000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F0B1 +:40A6800033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE12B +:40A6C0003100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D0F93491918E68A48D5E50023524600215364504600F080FD5346186401235B4279 +:40A7000007930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D30002200A4 +:40A740002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B003000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F044 +:40A7800047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE00022534B02F02CFB01239C460022002302 +:40A7C00006000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF8804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013B6B +:40A80000303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B00E8 +:40A8400001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2CB +:40A88000079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C446346049300F060FD804632E0069A039BD1 +:40A8C000D21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF9020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03F9E +:40A90000000024403204000012040000000010FE785E0410D85F0410069B4C4608930023984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A08928A +:40A94000049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0BF +:40A98000A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020225E +:40A9C0003000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C463E +:40AA0000844463460693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B0E +:40AA400000D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E2079C0A9A013C23009446634408930123F6 +:40AA8000334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD494604004246380000F0ECFDC36881468C +:40AAC000002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002BC9 +:40AB000000DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A2297 +:40AB4000380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946B8 +:40AB8000013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E0290000230A22504600F051FB05004946280093 +:40ABC000FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B787A +:40AC00000A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F028 +:40AC400003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D00984603 +:40AC80000E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F83B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F07F +:40ACC000C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA246050068 +:40AD00008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E6EA +:40AD4000079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B9389 +:40AD8000FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FAA3 +:40ADC000089E099F32003B0004000D0000F0A0FF002800D0B2E0802000068446390061440B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21AE1 +:40AE00000D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346186401230A90079323930E93FFF707FBCC +:40AE400043460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C51 +:40AE80002E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A2340F9 +:40AEC000DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED170 +:40AF0000FFF7E4FA039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E50023994695 +:40AF400098460CE70000F07F000014403304000000001C400000C0FCD85F0410B05F0410129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F0BA +:40AF8000FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F0006008E +:40AFC00002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D14446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B4A +:40B00000651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5A2 +:40B04000069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013B7A +:40B0800013933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE0022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B701A +:40B0C0000C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BBA +:40B10000A84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B6C +:40B1400001DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF70A +:40B1800073FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C046D85F0410000024400000E03F00001C400000C0FC044B1B68586B002801D0F030B7 +:40B1C00070470248FBE7C04674060008A00A000870B50500080011000022064C22601A00F1F7F8FF431C00D070BD2368002BFBD02B60F9E71489000870B50400C06C0D00B1 +:40B2000000280AD0AB00C318186800280FD002681A6000230361C36070BD212204212000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF002807 +:40B24000F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000211430036801311E04360C56431B0C5343BC +:40B28000F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF73 +:40B2C00029002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0FB7 +:40B3000001D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B0803601000704719040022002901D11B0CDD +:40B340001032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF756 +:40B380003BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF77D +:40B3C0001BFF14220300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B444019392 +:40B400009A454FD253461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120C95 +:40B440001B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734326 +:40B4800007043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D148 +:40B4C000013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C0C +:40B50000002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD04246D26C736894469B0063441A686410326090 +:40B540001E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE70121404624 +:40B58000FFF73AFE054B05004361012303614346986400230360B5E7A060041071020000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB36883469146FE +:40B5C00049689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD132694846970031001F2214311040CF1981460028BA +:40B6000025D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A68326075 +:40B640001E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B0439F3 +:40B680001C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F424B +:40B6C00000D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB4746260000251437143643465968FFF780FD43468146C5601869DD +:40B700004D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B18120419145E +:40B74000120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA24326 +:40B78000043289180439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E003D +:40B7C000A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D172 +:40B80000009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B06 +:40B840009C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFF88 +:40B88000CEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D070BD2368002BFBD02B60F9E714890008F0B557464E46DE464546E0B5936883B05A +:40B8C00001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218521090465A46501CC0194246404501D971 +:40B90000804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F9B3892A4A134080221343B381434620005A463461B8463C00584473619B1A30606E +:40B94000B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E7019848 +:40B98000F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3815246002340429360536003E0002352460020536003B03CBC90469946A246AB46A4 +:40B9C000F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D3121209022C +:40BA000065D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B42D5 +:40BA400001D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D34E +:40BA80008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01AE8 +:40BAC0005241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030BCD +:40BB00008B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B98 +:40BB40008B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D319 +:40BB80000B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB009D +:40BBC000C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B42B3 +:40BC00002DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D3F6 +:40BC40008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B0055 +:40BC8000C01A5241411A00D20146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C0468446101CCB +:40BCC00062468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F0C5 +:40BD000025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD012010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B0498420F +:40BD400001D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40187047C04604030202010101010000000000000000002B11D1002A0FD1002900D11F +:40BD8000002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684601B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E0078 +:40BDC00080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D980235B029846C4444B46514343433604360C250C24046544A419591849192000C0 +:40BE00000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B422FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D5BE +:40BE400074E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E0824228 +:40BE8000D0D900220023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A434646AA +:40BEC0007B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B00B6 +:40BF00005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A401700F2 +:40BF40001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B44697406646EE +:40BF80003B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D129 +:40BFC000AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E17C +:40C000001F2D00DD38E12020431B9A460B0050468340994613004846EB401843030050468240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650AA2 +:40C04000002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD840914097 +:40C0800097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C4060076C +:40C0C000760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B00ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E204001C +:40C1000067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E7331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E0F0 +:40C140000A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE104 +:40C180008022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE0BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C400558 +:40C1C000400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA4292411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D00283845 +:40C20000854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E419CE +:40C24000E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B00D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD84078 +:40C280000300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EB04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51ADA +:40C2C0002600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BBA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E600250026002770 +:40C3000006E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A080098409C46834653461000D84003005846184363469A40531E9A4153460243D94003E795 +:40C3400026003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B9A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E622 +:40C38000002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E6BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E620003843FC +:40C3C000002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E650460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A415A +:40C400004B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4059 +:40C4400033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE757 +:40C480001800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4292411C1B5242A41AD846F1E51800104300D163E7F808670707438020E408000325 +:40C4C000044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304ED6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E4087E +:40C5000000030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E500216BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027430F +:40C540007C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E70C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED0402360 +:40C5800056469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D008E +:40C5C0008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F600134333439946C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D01955A +:40C600005ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A9446002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F46030022 +:40C64000334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B4A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB39 +:40C6800003000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B468B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E761 +:40C6C000594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B002283 +:40C700001B1A8FE7002301229B468BE75146032288E700239846013304260024039367E70323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C4600230024E1 +:40C740000022984600211203130B0A0D12051A432305124C40462240134362465B00D2075B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034C95 +:40C78000E0E70023014C00229846DBE7FF07000001FCFFFFAC6004100DFCFFFFFFFF0F80D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C12 +:40C7C000039313041B0C3900280090460193FFF7FFF80200019B83465A43280039009146FFF77CF9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E16F +:40C8000002235B429C464544E3444B46EB1A390018000493FFF7DCF8019B05004343390004989946FFF75AF9330409041B0C0B43994509D943446A1E984500D91AE1994521 +:40C8400000D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A46090C4E460D001204120C4543059151437243704352190E0CB218954203D98025E4 +:40C880006D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D117E139001800FFF78BF8019B0500434390 +:40C8C000390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1884200D804E1023D4144049BCB1A180039000493FFF76CF8019B8246434339001A +:40C9000004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D9E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F4684 +:40C940002A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC4660441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE31875 +:40C98000002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318994A934268DD0123029A984C1A400023944698460022C5E680224B461203134298 +:40C9C0000AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC468A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E60300A4 +:40CA00005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0843465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B2450B +:40CA4000AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A434B +:40CA80005B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1EB04529D91100864200D065E7039A934200D061E762E7012149420120C21A382A91 +:40CAC00021DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934454E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED01100DC +:40CB00003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340204308431A00430709D00F230340042B05D00100081D88429B415B42D218130293 +:40CB40003AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC46E244AA45AD416D424544ED182D1A96E68A1E03994D008D4289414942414476188A +:40CB800003958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E91411943072300220B4009D00F2300220B400800042BBDD1010053075202120BB8 +:40CBC000C9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D42C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E5C8 +:40CC0000FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C4222 +:40CC400001D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E7DD +:40CC8000FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD130430700814681 +:40CCC00078427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D15846024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D00120EB +:40CD0000013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D84E +:40CD40000020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D001 +:40CD8000002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC90469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE731000223D6 +:40CDC0000143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C44569 +:40CE0000D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C0398464E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F1F +:40CE40002404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E4008F +:40CE80008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554ABF00D25997465B460343994600D087E000239B46023308270293CEE7424601929F +:40CEC000022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002112030B0D120B1B051343434A240513401C436400ED0764082C434846210007B025 +:40CF00003CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F40234395 +:40CF40009B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234320D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A5146020090 +:40CF8000D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002299469CE70024002201206EE7534603206BE700239B4601330427002602934CE734 +:40CFC000032381460C27029347E780220023002512039946054C82E75C464B4602986FE75C464B46019502986AE7C046FF07000001FCFFFFEC600410FFFF0F800DFCFFFFE4 +:40D000004A464946170C1A0C1B041B0C08041900000C41431500884619007D437943039589462900150045434D44029545462D0CAA46029D5544A94506D98A46802149024B +:40D040008946CA4451460391290C0491414609042D04090C88462900250C24044144240C0591210041438846210079438A466843414650448146080C48446F43824503D9C7 +:40D080008021490289464F44010C894639004944029141460F0404993F0C88460004C01980444146049159460F0C0904090C884659438A4639005143894641464A43514683 +:40D0C000090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A46414661437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D19F6 +:40D10000A94503D98021490288464444049F0399B84641448B468345804141428846514608042F04000C3F185846029910188946904292414F44BA46524299469346C24483 +:40D14000D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B4213437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D034380 +:40D1800052021343E20156D501205A0803401343E207134364085A48604400284DDD5A0709D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC0003E +:40D1C00014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D1D407CE6802259461203114208D0144206D122431203120B45469946434C6EE645 +:40D200005B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382AB9 +:40D2400006DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B4112 +:40D280005B42E418230221D50125019B01241D4000230022994622E61F2521006D42281AC1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D0CD +:40D2C0000F2200241A401800042AD6D1030065076402220BDB082B4301259946019B00241D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C046EB +:40D30000FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E00610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846A8 +:40D34000DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E1002810D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241AE1 +:40D3800001261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A441644238 +:40D3C0000C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DDE9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE14C +:40D4000020223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D113 +:40D44000AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B0C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946B9 +:40D48000A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760DDBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382B98 +:40D4C00000DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B01369E4200D14BE101225B4B1C407B0817401F43E207174364088FE708001043E8 +:40D5000000D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE70800104300D1CAE0581E8446002800D0E7E05244524580416418404224181700012644 +:40D54000230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4301254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A8245CF +:40D58000BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B984614E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E71D +:40D5C0003800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E707F2 +:40D60000520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202DAC +:40D6400071D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE1202675 +:40D6800027005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B5242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE6C3 +:40D6C0001F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE6F3 +:40D700008C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E7CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B001343B4 +:40D7400000D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE66646AC +:40D780000024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511E8A410021174392E6002E14D126005046064362D0DB43002B5CD1871897429241C9 +:40D7C00064185242A418664687E650462043441EA041002460E7574EB4454ED0802636045B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046BA +:40D80000B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A7F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D0044 +:40D84000154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C001700664623 +:40D88000CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E40800030442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E0023 +:40D8C0002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE6802400252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE53C +:40D900000C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441EA04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E1B +:40D940000D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD05430120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134D66 +:40D980000A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE840F2 +:40D9C000A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21AC3 +:40DA00001F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B12052243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081A4A +:40DA4000C4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144ABB +:40DA8000D21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B05224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E759 +:40DAC000002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF72BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C04666 +:40DB0000F8BC08BC9E46704701B40248844601BC604700BFC510000825732025753A20706172746974696F6E73206973204E554C4C210A00696E69745F706172746974697E +:40DB40006F6E7300746573745F6974735F72657365740000746573745F6974735F72657365745F6D757465780000000025732025753A20706172746974696F6E206973203F +:40DB80004E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20746573745FDD +:40DBC0006974735F7265736574210A0025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F662070617274697469E3 +:40DC00006F6E20746573745F6974735F7265736574210A0054DB03100B000000741900081C000000746573745F6974735F72657365745F696E6974004D4245445F434F4E72 +:40DC4000465F53544F524147455F44454641554C545F4B560000000025732025753A20556E6578706563746564206D65737361676520747970652025642100007465737454 +:40DC80005F706974735F656E74727900B47700080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0A0A4661756C74547970653A20000000004D656D4DFF +:40DCC000616E6167654661756C7400004275734661756C740000000055736167654661756C740000486172644661756C740000000A0A436F6E746578743A00000A0A2D2DF9 +:40DD0000204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074696F6E000A52252D34643A202530386C580000000A53502078 +:40DD400020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A202530386C580A4D5389 +:40DD80005020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A2054687265616400000A50726976203A2055736572000000000A507269A4 +:40DDC00076203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D535000810800109108001088 +:40DE0000B308001025732025753A2053504D2072656164206C656E677468206D69736D6174636800A40A0010BC0A0010D40A0010380B0010C40B00105E0C0010800D0010DC +:40DE4000960D0010FE0D00108C0E00102C0F0010D8150010F0150010081600105A160010AA1600106E170010D2170010F21B0010F21B0010C4190010281A0010381A0010E6 +:40DE8000841A0010E41A0010F21B0010F21B0010F21B0010F21B00104E190010921900100A190010D8180010F21B0010F21B0010F21B0010F21B0010F21B0010F21B00101F +:40DEC000F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B0010F21B001052 +:40DF0000F21B0010F21B0010F21B0010441B00107C1E0010AC1E0010001F0010641F0010741F00103C2000107073615F6D61635F6F7065726174696F6E0000007073615F1F +:40DF4000686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E000000007073615F616561645F6F7065726174696F6E00005E +:40DF80007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E000000007073615F656E7472BD +:40DFC0006F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F7065726174696F6E73007073615F660000007073615F665F6D7539 +:40E000007465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666FB7 +:40E04000722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C656420746F20637265617465207374617274206D61696E20740A +:40E080006872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A0100031A0100F8DF03100B0000002C5A00081C0000007073615F65 +:40E0C000665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233E3 +:40E100003435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000002E2F636F6D706F6E656E74732F5441524745545F5053412FC0 +:40E1400073657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E545F5053415F5352565F494D504C2F706974735F69CD +:40E180006D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E203E3D205053415F4954535F46494C454E414D458D +:40E1C0005F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D455F4D41585F4C454E000000007073615F6974735F56 +:40E200007365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696D706C1C +:40E240002829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696E666F5F696D706C282920BD +:40E280002D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735F72656D6F76655F696D706C2829202D204661696CE2 +:40E2C00065642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E6578706563746564206D65737361676520747970652025A9 +:40E300006421000025732025753A204B5653746F726520696E6974696174696F6E206661696C656420776974682073746174757320256421000000006D6573736167655F73 +:40E3400068616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A20706172746974696F6E206973204E554C4C210A000034 +:40E3800025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20697473210A000000002573202502 +:40E3C000753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E20697473210A0000000058E30310EF +:40E400000B0000008C5E00081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F535021 +:40E44000452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F6964202A29302900000068616E646C655F6D656D20213D20282809 +:40E48000766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5F73697A650000000068616E646C6520213D2028287073615FF9 +:40E4C00068616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E646578205B25645D20697320626967676572207468616E2068618E +:40E500006E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048616E646C65202564206973206E6F7420666F756E6420696EC1 +:40E5400020657870656374656420696E64657821200A000025732025753A205B4552524F525D205265717565737420666F722064657374726F79206279206E6F6E2D6F77A5 +:40E580006E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746F20676574206D656D6F727920666F7220616E20696E76616C1B +:40E5C00069642068616E646C6521200A0000000025732025753A205B4552524F525D205265717565737420666F722068616E646C65206D656D6F7279206973206E6F742047 +:40E60000616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D67722D3E68616E646C65735F706F6F6C5B706F6F6C5F6978A5 +:40E640005D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67725F68616E646C655F64657374726F79007073615F686E646C2E +:40E680005F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206E6F7420616C6C6F77656420746F2062652063616C6C656420B8 +:40E6C00066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74206465636C6172652065787465726E2066756E6374696F6E7396 +:40E700000A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065787465726E2066756E6374696F6E73206C6973744C +:40E740000A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636C69656E742E6300006F734F4BA1 +:40E78000203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D46 +:40E7C0003E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A20534944203078257820697320696E76616C6964210A000000002573202580 +:40E80000753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F722076657273696F6E2025642C +:40E8400020616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E656374206D65737361676520697320696E61636365A8 +:40E88000737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D6170686F726520666F7220636F6E6E656374206D6573736167650029 +:40E8C0006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E672063616C6C206D65737361676520697320696E61636365737369D3 +:40E90000626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A00000025732025753A2043F4 +:40E940006F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D6573736167650000007073615F636F6E6E6563745F6173796E30 +:40E980006300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E656374007073615F63616C6C5F6173796E630000DC +:40E9C0007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F736500000025732025753A204661696C656420696F7665632056616C6916 +:40EA0000646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D282564290A0000002573202514 +:40EA4000753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E672073746174653A202564207768696C652025642069732065787065637465A1 +:40EA800064210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636F6D6D6F6E2E6300002828766F16 +:40EAC0006964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206163746976655F7468726561645F69640076616C69646174659E +:40EB00005F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174655F6173736572740000000053504D5F6368616EE3 +:40EB40006E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202D204661696C656420746F20637265617465206368D6 +:40EB8000616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616374697665206D65737361676573206D656D6F7279DB +:40EBC00020706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D657373616765206461746120697320696E61636365737369626C650A00000000B4 +:40EC000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F7665635B25645D20697320696E61636365737369626CAC +:40EC4000650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F7665635B25645D20697320696E6163636518 +:40EC8000737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D657373616765000000002E2F636F6D706F6E656E74730B +:40ECC0002F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F7365727665722E6300006F734F4B203D3D206F735F73746174757300000012 +:40ED000025732025753A20446571756575652066726F6D20656D7074792071756575650028666C61677320262028307838303030303030302929203D3D203000666C616728 +:40ED400073202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D20637572725F706172746974696F6E00000025732025753A206988 +:40ED80006E74657272757074206D61736B2030782578206D7573742068617665206F6E6C7920626974732066726F6D2030782578210A00002861737365727465645F73691B +:40EDC000676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C2929207C7C2028282830783830303030303030554C2920213D20CC +:40EE000074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F7369676E616C732929000025732025753A206D736720697320696E25 +:40EE400061636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6C79203120626974204F4E20616E64206D757374207E +:40EE80006265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E6F7420616374697665210A0025732025753A205265636569C1 +:40EEC000766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920726F6F74206F66207472757374207365727669638E +:40EF00006500000025732025753A207073615F676574202D20756E6578706563746564206D65737361676520747970653D3078253038580025732025753A20496E76616CE4 +:40EF4000696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365737369626C650A000025732025753A20496E76616C6964206FAE +:40EF800075747665635F6964780A000025732025753A20496E76616C6964207772697465206F7065726174696F6E20285265717565737465642025642C20417669616C6190 +:40EFC000626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A2930290000006163746976655F6368616E6E656C2D3E6D73675F1D +:40F0000070747220213D202828766F6964202A293029000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F7220505321 +:40F04000415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F495085 +:40F08000435F43414C4C000025732025753A207073615F7265706C792829202D20556E6578706563746564206D65737361676520747970653D3078253038580025732025B6 +:40F0C000753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F6964203D202564290A0000000025732025753A207073615F63E5 +:40F10000616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A006163746976655F6D73672D3E6368616E6E656C20213D20287C +:40F1400028766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E7465727275707420666C616720776974686F7574206465636C61725F +:40F18000696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E67650A000025732025753A207369676E616C2030782578206D2B +:40F1C0007573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F656F6928292063616C6C656420776974686F7574207369676E0E +:40F20000616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F736572766963655F71756575655F646571756575650000000D +:40F240007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615F72656164000000007073615F77726974650000007073615FB1 +:40F280007265706C79000000515F4D5554000000515F575F53454D00515F525F53454D002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D5032 +:40F2C0004F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E63000000286F734F4B203D3D206F735F06 +:40F3000073746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F7374617475732900000025732025753A206D65737361676520646174612039 +:40F34000697320696E61636365737369626C650A0000000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756575655F73656D2021EB +:40F380003D204E554C4C000071756575655F726561645F73656D20213D204E554C4C000088F203100B000000B06200081C00000090F2031000000000CC620008100000006F +:40F3C00098F2031000000000DC620008100000006F6E5F706F707065645F6974656D00002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D508F +:40F400004F4E454E545F53504D5F4D41494C424F582F6970635F71756575652E63000000717565756520213D204E554C4C000000626173655F71756575655F6D656D202112 +:40F440003D204E554C4C0000626173655F71756575655F6D656D2D3E6D61676963203D3D204950435F51554555455F424153455F4D414749430000006D7574657820213D66 +:40F48000204E554C4C00000066756C6C5F71756575655F73656D20213D204E554C4C0000726561645F73656D20213D204E554C4C0000000071756575652D3E6D6167696393 +:40F4C000203D3D204950435F51554555455F50524F44554345525F4D41474943000000006F734F4B203D3D206F735F737461747573000000286F734F4B203D3D206F735F55 +:40F5000073746174757329207C7C20286F734572726F7254696D656F7574203D3D206F735F737461747573290000000071756575652D3E6D61676963203D3D204950435F7D +:40F5400051554555455F434F4E53554D45525F4D41474943000000000000000000000000495000107D5000109D5000102D5200105B4D001081520010F152001061530010B7 +:40F58000774D0010CD530010DF5300101D54001063540010B3540010ED54001000000000000000000000000000000000B1D20210B1D202105B4D0010B1D20210B1D2021049 +:40F5C000674D0010774D0010B1D20210B1D20210874D0010A74D0010CB4D0010B1D202100D0000000D0A00002B49504400000000302C434C4F53454400000000312C434C76 +:40F600004F53454400000000322C434C4F53454400000000332C434C4F53454400000000342C434C4F534544000000002B43574A41503A005749464920000000554E4C49F3 +:40F640004E4B0000414C524541445920434F4E4E45435445440000004552524F52000000776474207265736574000000536F6674205744542072657365740000627573796F +:40F68000200000002B43495052454356444154412C000000415400004F4B0A00415445300000000041542B474D52000053444B2076657273696F6E3A25642E25642E25648B +:40F6C0000000000041542076657273696F6E3A25642E25642E25642E2564000041542B554152545F4355523D25752C382C312C302C30000041542B554152545F4355523D50 +:40F7000025752C382C312C302C33000041542B554152545F4355523D25752C382C312C302C32000041542B554152545F4355523D25752C382C312C302C31000041542B4383 +:40F74000574D4F44455F4355523D25640000000041542B4349504D55583D310041542B5253540000726561647900000041542B4357444843505F4355523D25642C256400EF +:40F7800041542B434950524543564D4F44453D310000000041542B43574A41505F4355523D222573222C22257322000041542B43575141500000000041542B4349465352D8 +:40F7C000000000002B43494653523A53544149502C222531355B5E225D2200002B43494653523A5354414D41432C222531375B5E225D220041542B4349505354415F435534 +:40F80000523F00002B4349505354415F4355523A676174657761793A222531355B5E225D220000002B4349505354415F4355523A6E65746D61736B3A222531355B5E225D0E +:40F840002200000041542B43574A41505F4355523F0000002B43574A41505F4355523A22252A5B5E225D222C222531375B5E225D2200000041542B43574C41503D22222CA2 +:40F88000222573222C0000002B43574C41503A28252A642C22252A5B5E225D222C256868642C000041542B43574C4150000000005544500041542B43495053544152543D5A +:40F8C00025642C222573222C222573222C25642C2564000041542B43495053544152543D25642C222573222C222573222C256400455350383236363A3A5F6F70656E5F7539 +:40F9000064703A20646576696365207265667573656420746F20636C6F736520736F636B6574000054435000455350383236363A3A5F6F70656E5F7463703A206465766967 +:40F940006365207265667573656420746F20636C6F736520736F636B6574000041542B434950444F4D41494E3D222573220000002B434950444F4D41494E3A2573252A5B27 +:40F980000D5D252A5B0A5D0041542B43495053454E443D25642C256C750000003E00000053454E44204F4B002C25642C0000000025640A0025643A0041542B434950524582 +:40F9C0004356444154413D25642C256C7500000041542B434950434C4F53453D256400002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A4B +:40FA0000256868783A256868783A256868783A256868783A25686878222C256868752C25642C25642C25642C25642C25642C2564290A00002B43574C41503A2825642C22B9 +:40FA40002533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C2564290A000025345B5EB8 +:40FA8000225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3A5F6F6F625F62757379282920756E7265636F676E697A6564206275737920737461746531 +:40FAC0000A000000455350383236363A3A5F6F6F625F6275737928292041542074696D656F75740A000000002E2F636F6D706F6E656E74732F776966692F6573703832363A +:40FB0000362D6472697665722F455350383236362F455350383236362E637070000000005F736F636B5F6163746976655F6964203E3D2030202626205F736F636B5F6163CC +:40FB4000746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953434F4E4E4543540A00B1 +:40FB8000434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C696420415420636D640A00000000F1 +:40FBC000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F75740A00005F636F6E26 +:40FC00006E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F44455F4445463D256809 +:40FC4000686400002E2F706C6174666F726D2F43616C6C6261636B2E680000005F6F7073000000002E2F706C6174666F726D2F53696E676C65746F6E5074722E6800000003 +:40FC80005F707472203D3D202854202A29265F646174610000000000000000003D5C0010555C0010735C001000000000B71DC1046E3B8209D926430DDC7604136B6BC51747 +:40FCC000B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BB8 +:40FD0000C2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F1F +:40FD400052FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C34F +:40FD80002220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B43233B +:40FDC000C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB7 +:40FE0000B5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BBE6 +:40FE4000258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F74E +:40FE8000555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E94 +:40FEC0005CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D832D6 +:40FF00002C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE69D +:40FF4000BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAA2D +:40FF8000CCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4AC9 +:40FFC0002BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E06D5 +:020000041004E6 +:400000005B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD264 +:40004000CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9E2C +:40008000BBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B10000000000000000C9060010050700108B5D001000000000B2 +:4000C00000000000BD080010E5080010C95D001000000000000000000000000000000000B1D202105E6700102A6700102E67001032670010366700103A6700103E6700108C +:4001000042670010466700104A6700104E67001052670010566700105A670010B06700108C670010B467001090670010B867001094670010986700109C670010A06700108D +:40014000A4670010A8670010AC670010BC670010DA7B0010DE7B0010E27B0010E67B0010EA7B0010FE7B0010FE7B0010EE7B0010F27B0010F67B0010FA7B0010DEB600101C +:40018000F6B60010F2B60010EAB60010EEB60010E6B60010EEB60010E2B60010EEB60010EEB60010505341004B455900FABD001012BE00100EBE001006BE00100ABE0010FB +:4001C00002BE00100ABE0010FEBD00100ABE00100ABE0010637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F10D +:4002000071D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027FC6 +:40024000503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC6255 +:400280009195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949B1E87E9D5 +:4002C000CE5528DF8CA1890DBFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9B3 +:40030000562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FDDF +:4003400045AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E53479 +:40038000F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212361B80809B68 +:4003C000DFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D66148 +:400400007DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED900 +:400440007239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F91004020206F2 +:40048000FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA7517 +:4004C0004221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E829D +:400500007A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D32B +:400540002814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEFDB +:40058000C46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F40774 +:4005C000CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C2A +:400600003E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FAE5757F9BB +:4006400069B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E22158787926B +:40068000C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B05A2D2D77F4 +:4006C0001E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE67674C +:400700007D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A2DB +:40074000EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E575 +:4007800008F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E0707362412129B1B808064 +:4007C0003DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D644 +:40080000CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBEFC +:400840004B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F906040202EE +:4008800081FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA13 +:4008C00063422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A782FC7E7E99 +:40090000477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B827 +:400940003C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACACD7 +:40098000A6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F470 +:4009C00025CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE8747426 +:400A0000213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757B7 +:400A4000D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E9215878767 +:400A800020C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999775A2D2DF0 +:400AC000111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060300103020167A9CE6748 +:400B00002B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA2D7 +:400B4000AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E571 +:400B8000F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0712362412809B1B8060 +:400BC000E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D640 +:400C0000B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BEF8 +:400C4000394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F902060402EA +:400C80007F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA0F +:400CC0002163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A77E82FC7E95 +:400D00003D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB823 +:400D4000143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43ACD3 +:400D800062A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F46C +:400DC000EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE87422 +:400E00001F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A3557F9AE57B3 +:400E4000B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E8792158763 +:400E8000E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B029992D775A2DEC +:400EC0000F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE44 +:400F00002B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5FD3 +:400F4000AFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D16D +:400F8000F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362480809B1B5C +:400FC000E2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B73C +:40100000B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED967F4 +:4010400039394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E902020604E6 +:401080007F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF0B +:4010C0002121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F2557E7E82FC91 +:401100003D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B1F +:4011400014143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF43CF +:401180006262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F368 +:4011C000EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE81E +:401200001F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEAF +:40124000B9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C878792155F +:40128000E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B0292D2D775AE8 +:4012C0000F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950BC1 +:4013000042FAC34E082EA16628D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805D2 +:40134000B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620E14 +:40138000AA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C05 +:4013C00083539961172B047EBA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691D1 +:40140000F5024C254FE5D7FCC52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB5D +:40144000955259DAD4BE832D587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A318297513360E8 +:4014800062537F45B16477E0BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AAF +:4014C000D33708A5302887F223BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE13271 +:40150000A4F6EB750B83EC394060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CC9F +:4015400067D99E77B0E842BD07898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51EBE +:40158000362D39270A0FD964685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E0434E +:4015C000121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC6896 +:40160000B8E4F163D731DCCA426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FADD +:4016400047E96422A8FC8CC4A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9BDF +:40168000547E4662F68D13C290D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB7019C +:4016C000834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B0E0 +:4017000033A7D815F104984A41ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473BE +:40174000FB0B412EB3671D5A92DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7910 +:4017800073C737BF53F7CDEA5FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49CB6 +:4017C0006456C1907BCB8461D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7646 +:4018000025F5024CFC4FE5D7D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7A59 +:40184000DA9552592DD4BE83D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A3160975133E4 +:401880004562537FE0B1647784BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BAB +:4018C000A5D33708F2302887B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE16D +:4019000075A4F6EB390B83ECAA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC8940439B +:401940007767D99EBDB0E8428807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED5BA +:4019800027362D39640A0FD921685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E04A +:4019C0001D121B170B0E090DADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC92 +:401A000063B8E4F1CAD731DC10426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA119448D9 +:401A40002247E964C4A8FC8C1AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCCDB +:401A800062547E46C2F68D13E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB798 +:401AC000A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D0DC +:401B00001533A7D84AF10498F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA8774BA +:401B40002EFB0B415AB3671D5292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CE0C +:401B8000BF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4B2 +:401BC000906456C1617BCB8470D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC42 +:401C00004C25F502D7FC4FE5CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D55 +:401C400059DA9552832DD4BE21D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A33609751E0 +:401C80007F45625377E0B164AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C5A7 +:401CC00008A5D33787F23028A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058A69 +:401D0000EB75A4F6EC390B83EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC894097 +:401D40009E7767D942BDB0E88B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAEB6 +:401D80003927362DD9640A0FA621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C2246 +:401DC000171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6ED8E +:401E0000F163B8E4DCCAD7318510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194D5 +:401E4000642247E98CC4A8FC3F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5FD7 +:401E80004662547E13C2F68DB8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A94 +:401EC0009AA8834F6E65E695E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D8 +:401F0000D81533A7984AF104DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87B6 +:401F4000412EFB0B1D5AB367D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181408 +:401F800037BF73C7CDEA53F7AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4AE +:401FC000C190645684617BCBB670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC7691883E +:40200000024C25F5E5D7FC4F2ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF51 +:402040005259DA95BE832DD47421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097DC +:40208000537F45626477E0B16BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A86A3 +:4020C0003708A5D32887F230BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE1320565 +:40210000F6EB75A483EC390B60EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC8993 +:40214000D99E7767E842BDB0898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3DB2 +:402180002D3927360FD9640A5CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C42 +:4021C0001B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B68A +:40220000E4F163B831DCCAD76385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11D1 +:40224000E9642247FC8CC4A8F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6AD3 +:402280007E4662548D13C2F6D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC90 +:4022C0004F9AA883956E65E6FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0D4 +:40230000A7D8153304984AF1ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FAB2 +:402340000B412EFB671D5AB3DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE791804 +:40238000C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD8AA +:4023C00056C19064CB84617B32B670D56C5C7448B85742D001000000020000000400000008000000100000002000000040000000800000001B000000360000007F7F7F7F89 +:402400007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F000102D7 +:40244000030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F02000000BA +:40248000213A01104D3A0110833A011000000000CF3A0110B13A0110ED3A01101B3B01104145532D3132382D454342004145532D3139322D454342004145532D3235362D94 +:4024C000454342004145532D3132382D434243004145532D3139322D434243004145532D3235362D434243004145532D3132382D435452004145532D3139322D43545200DE +:402500004145532D3235362D435452004145532D3132382D47434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382D43434D004145532D49 +:402540003139322D43434D004145532D3235362D43434D0043484143484132300000000043484143484132302D504F4C59313330350000000201000080000000A024041093 +:402580000000000000000000100000007C24041003010000C0000000AC2404100000000000000000100000007C2404100401000000010000B82404100000000000000000F5 +:4025C000100000007C2404100502000080000000C42404101000000000000000100000007C24041006020000C0000000D02404101000000000000000100000007C2404101C +:402600000702000000010000DC2404101000000000000000100000007C2404100B05000080000000E82404101000000000000000100000007C2404100C050000C000000053 +:40264000F42404101000000000000000100000007C2404100D05000000010000002504101000000000000000100000007C2404100200000000000000000000000000000038 +:4026800000000000373B0110373B011099390110C33901100E060000800000000C2504100C0000000100000010000000702604100F060000C0000000182504100C00000052 +:4026C0000100000010000000702604101006000000010000242504100C0000000100000010000000702604100200000000000000000000000000000000000000553B011041 +:40270000553B0110DF390110053A01102B08000080000000302504100C0000000100000010000000E82604102C080000C00000003C2504100C00000001000000100000009E +:40274000E82604102D08000000010000482504100C0000000100000010000000E826041009000000000000000000000000000000AD3B0110753B0110753B0110E13B011090 +:402780000B3C01104807000000010000542504100C0000000000000001000000602704100900000000000000000000000000000000000000293C0110293C0110613C011099 +:4027C0008B3C0110490A000000010000602504100C0000000000000001000000A02704100200000074250410030000009025041004000000AC25041005000000C8250410C2 +:4028000006000000E425041007000000002604100B0000001C2604100C000000382604100D000000542604100E000000942604100F000000B026041010000000CC260410CF +:402840002B0000000C2704102C000000282704102D00000044270410480000008427041049000000C4270410000000000000000073656370333834723100000073656370C4 +:402880003235367231000000202045435020746573742023312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A200000006661696C7C +:4028C000656420282575290A000000007061737365640A00202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F7468657220706F696E86 +:4029000074293A2000000000556E6578706563746564206572726F722C2072657475726E20636F6465203D20253038580A0000000A000000303030303030303030303030E4 +:402940003030303030303030303030303030303030303030303030303030303030303030303030310000000046464646464646464646464646464646464646464646464606 +:402980003939444546383336313436424339423142344432323833300000000035454136463338394133384238424338314537363737353342313541413535363945313789 +:4029C0003832453330414245374432350000000034303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303017 +:402A000000000000374646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646000000003535353535353535DD +:402A4000353535353535353535353535353535353535353535353535353535353535353535353535353535350000000034290410682904109C290410D0290410042A0410D0 +:402A8000382A041004001800800100007028041003001700000100007C280410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000090 +:402AC00001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF834 +:402B000047422CE1F2D1176BF551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF6B +:402B400000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A46 +:402B80009DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F759E9 +:402BC000989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5DB8 +:402C00006F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303144423432000092 +:402C4000313444454639444541324637394344363538313236333141354346354433454400000000393841410000000038333335444331363342423132344236353132398F +:402C8000433936464445393333443844373233413730414144433837334436443534413742423044000000000000000000000000201C0000000000004038000000000000FA +:402CC00060240000000000008070000000000000A06C000000000000C048000000000000E05400000000000000E100000000000020FD00000000000040D900000000000001 +:402D000060C50000000000008091000000000000A08D000000000000C0A9000000000000E0B5000000000000534841323234000053484132353600005348413338340000CA +:402D4000534841353132000005000000282D04101C000000400000007BC5011093C50110B1C50110CDC50110EBC5011011C601102DC6011047C6011006000000302D0410EF +:402D8000200000004000000063C6011093C50110B1C501107BC60110EBC5011011C601102DC6011047C6011007000000382D0410300000008000000099C60110B1C6011044 +:402DC000CFC60110EBC6011009C701102FC701104BC7011065C7011008000000402D0410400000008000000081C70110B1C60110CFC6011099C7011009C701102FC70110FA +:402E00004BC7011065C701105504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61742D636F756E74723F +:402E4000794E616D65000000436F756E74727900430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C0000005504080069642D611B +:402E8000742D73746174650053746174650000005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A6174696F6E00000000BE +:402EC0004F00000055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F5500002A864886F70D010908 +:402F000001000000656D61696C4164647265737300000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D626572000053657269D1 +:402F4000616C206E756D62657200000073657269616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F7374616C206164647265A1 +:402F800073730000706F7374616C416464726573730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F646500706F7374616C436FEB +:402FC000646500005504040069642D61742D7375724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D6500476976656E206E6157 +:403000006D650000474E000055042B0069642D61742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0069642D61742D676565 +:403040006E65726174696F6E5175616C696669657200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175616C69666965720092 +:4030800055040C0069642D61742D7469746C65005469746C650000007469746C6500000055042E0069642D61742D646E5175616C696669657200000044697374696E67752B +:4030C0006973686564204E616D65207175616C696669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D0050736575646F6E79FB +:403100006D00000070736575646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E20636F6D706F6E656E7455 +:40314000000000004443000055042D0069642D61742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000756E697175654964CE +:40318000656E74696669657200000000551D130069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E7473000000551D0F0090 +:4031C00069642D63652D6B6579557361676500004B6579205573616765000000551D250069642D63652D6578744B65795573616765000000457874656E646564204B6579F5 +:403200002055736167650000551D110069642D63652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000006086480186F84201D3 +:403240000100000069642D6E657473636170652D6365727474797065000000004E6574736361706520436572746966696361746520547970650000002B06010505070301A4 +:403280000000000069642D6B702D7365727665724175746800000000544C5320576562205365727665722041757468656E7469636174696F6E0000002B06010505070302F3 +:4032C0000000000069642D6B702D636C69656E744175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E0000002B06010505070303E2 +:403300000000000069642D6B702D636F64655369676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6B702D656D61696C5013 +:40334000726F74656374696F6E000000452D6D61696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D655374616D70696E670000D8 +:4033800054696D65205374616D70696E670000002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F435350205369676E696E6700000000A2 +:4033C0002A864886F70D01010E00000073686132323457697468525341456E6372797074696F6E005253412077697468205348412D323234000000002A864886F70D0101B3 +:403400000B00000073686132353657697468525341456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D01010C0000007368613374 +:40344000383457697468525341456E6372797074696F6E005253412077697468205348412D333834000000002A864886F70D01010D00000073686135313257697468525303 +:4034800041456E6372797074696F6E005253412077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D53484132323400000088 +:4034C00045434453412077697468205348413232340000002A8648CE3D0403020000000065636473612D776974682D534841323536000000454344534120776974682053B2 +:4035000048413235360000002A8648CE3D0403030000000065636473612D776974682D53484133383400000045434453412077697468205348413338340000002A8648CE2A +:403540003D0403040000000065636473612D776974682D53484135313200000045434453412077697468205348413531320000002A864886F70D01010A00000052534153E2 +:4035800053412D50535300002A864886F70D010101000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D65635075626C69634B6579000028 +:4035C00047656E65726963204543206B657900002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D0301070000000073656370AD +:4036000032353672310000002B810400220000007365637033383472310000002B0E03020700000064657343424300004445532D434243002A864886F70D030700000000E5 +:403640006465732D656465332D636263000000004445532D454445332D4342430000000060864801650304020400000069642D7368613232340000005348412D323234001C +:4036800060864801650304020100000069642D7368613235360000005348412D3235360060864801650304020200000069642D7368613338340000005348412D33383400D7 +:4036C00060864801650304020300000069642D7368613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000484D41432D53484100 +:403700002D323234000000002A864886F70D020900000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020A00000000686D616312 +:403740005348413338340000484D41432D5348412D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D5348412D353132000000005D +:4037800025642E25640000002E256400883504100900000094350410A435041001000000A835041007000000B0350410C035041002000000D035041005000000D835041032 +:4037C000E0350410030000000000000000000000000000000000000000000000F035041008000000FC350410FC3504100300000008360410050000001036041010360410C4 +:4038000004000000000000000000000000000000000000000000000060360410090000006C360410783604100500000080360410090000008C3604109836041006000000C3 +:40384000A036041009000000AC360410B836041007000000C036041009000000CC360410D836041008000000000000000000000000000000000000000000000050726F636F +:403880002D547970653A20342C454E4352595054454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F444800000045434453C6 +:4038C000410000005253412D616C740001000000A438041049CD01101FCD011065CD0110DDCD011029CE011075CE0110C5CE0110E1CE01100BCF011029CF0110020000006A +:40390000B0380410A5CF011071CF0110B3CF011011D00110000000000000000077D0011093D00110B9D00110D5D0011003000000B4380410A5CF0110FDD0011000000000AE +:4039400000000000000000000000000077D0011093D00110B9D00110D5D0011004000000BC380410A5CF011027D1011045D1011089D10110000000000000000077D00110A7 +:40398000C5D10110EBD10110D5D001102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E205253412050524956410C +:4039C0005445204B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20454320505249564154DB +:403A000045204B45592D2D2D2D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2050524956415445204B45592D2D96 +:403A40002D2D2D002D2D2D2D2D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2D7D +:403A80002D2D00002D2D2D2D2D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D0000020305070B +:403AC0000B0D1113171D1F25292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B5C7 +:403B0000A5DBB5E95BC25639F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FEA +:403B4000CCA10C246F2CE92DAA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4DEA +:403B8000130D385354730A65BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C77482732 +:403BC000B5BCB034B30C1C394AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42BD +:403C0000CD65EF23914437712F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8D0 +:403C4000BE6F7045015B83128CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4F5 +:403C8000E3254F388647BEEFB5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E9831 +:403CC0001032B42D6DC631A83F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB727A1 +:403D000026C9265C38211B2EED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA23C +:403D4000013042BC4B661AA89197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41917 +:403D800053AB4151086C371E99EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F744C +:403DC000602F17436F63A57872ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA2C +:403E000007C2C021C7B886D11EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB28EE +:403E40009324C7407BABCA32BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C2E2F6665617475721B +:403E800065732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766963652E63707000005F77726974655F63616368650000000081 +:403EC0005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F657261736528616464722C2073697A65290000000000000000000015 +:403F00004D710210757102109371021077720210A9730210157402104D770210017A0210C57A0210857B0210977B0210A97B0210E37B0210297C0210617C02106B760000C8 +:403F40002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F64617461000000000000000000000000000000000054 +:403F8000B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210B1D20210202A2F3F3A3B227C3C3E5C00CF +:403FC0006B7673746F726500202A2F3F3A3B227C3C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C617368206174747269629D +:40400000757465730000000054444253544F52453A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52453A20556E61626C6568 +:40404000207265736574206172656120617420696E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265636F726420617420694C +:404080006E69740054444253544F52453A20556E61626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556E61626C6520746F209A +:4040C0006275696C642052414D207461626C6520617420696E69740054444253544F52453A20556E61626C6520746F20636865636B2077686574686572206572617365201F +:40410000756E69742069732065726173656420617420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D20474320617420696E69740000BD +:4041400054444253544F52453A20556E61626C6520746F2073796E6320424420617420696E697400000000002E2F647269766572732F4D6265644352432E6800637263200F +:40418000213D204E554C4C00400000000000000000000000ED890210298A0210CD9E021071A3021045A40210C19602106D9702102D980210459702100D910210F193021091 +:4041C000D1940210F5A40210F5A5021031A7021005A80210B1AA02102E2F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692E630000002161726501 +:404200005F696E74657272757074735F656E61626C656428290000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465F7 +:40424000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F43797072657373EC +:404280002F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E430000636F756C64206E6F742070696E6F75740000000091 +:4042C00070696E6D6170206D69732D6D617463680000000070696E6D6170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D6170206E6F74206635 +:404300006F756E6420666F722066756E6374696F6E00000044656570536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D41582900000000446565701E +:40434000536C6565704C6F636B20756E646572666C6F7720283C2030290000002E2F68616C2F6D6265645F7469636B65725F6170692E6300300000006D617463685F7469EB +:40438000636B20213D2071756575652D3E7469636B5F6C6173745F7265616400A16C03109D6D0310216E03102D6E0310C56D0310456E0310616D0310596E03109C43041002 +:4043C000B06C000800000000000000000000000000000000B1D20210B1D20210B1D20210B1D2021045C0021051C0021003600010216000105DC002107D5C00109F5C0010E4 +:40440000BB5C0010D75C0010FB5C0010075D00101B5D00102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646576696365BB +:404440002F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441527B +:404480004745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E4300002E2E2E0A000000002E2F706C6174666F726D2F6D6265645F70 +:4044C000637269746963616C2E630000637269746963616C5F73656374696F6E5F7265656E7472616E63795F636F756E746572203C2055494E5433325F4D415800000000E2 +:40450000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D65643E0000000A0A2B2B204D6265644F53204572726F7220496E666F202B2B0A457205 +:40454000726F72205374617475733A203078255820436F64653A202564204D6F64756C653A2025640A4572726F72204D6573736167653A20000000004B65726E656C2045C5 +:4045800072726F723A203078256C582C200000005468726561643A203078256C582C20004D757465783A203078256C582C20000053656D6170686F72653A203078256C5897 +:4045C0002C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C6167733A203078256C582C200054696D65723A203078256C582C2000004D6573732F +:4046000061676551756575653A203078256C582C20000000417373657274696F6E206661696C65643A2000000A4C6F636174696F6E3A203078256C58000000000A46696C27 +:40464000653A20002B2564000A4572726F722056616C75653A203078256C58000A43757272656E74205468726561643A202573202049643A203078256C5820456E7472794A +:404680003A203078256C5820537461636B53697A653A203078256C5820537461636B4D656D3A203078256C582053503A203078256C5820000A466F72206D6F726520696E8A +:4046C000666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875622E696F2F6D6265646F732D6572726F722F3F6572726F723D3078253038580054 +:404700000A2D2D204D6265644F53204572726F7220496E666F202D2D0A000000F2C7021002C8021012C8021022C8021032C8021052C8021042C8021062C802107CC802100C +:404740007CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC802107CC8021072C8021052616D2065786563757465206E65766572206C6F23 +:40478000636B206F766572666C6F7720283E2055534852545F4D41582900000052616D2065786563757465206E65766572206C6F636B20756E646572666C6F7720283C2017 +:4047C00030290000526F6D207772697465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900526F6D207772697465206E6576657220C7 +:404800006C6F636B20756E646572666C6F7720283C203029000000004572726F72202D2077726974696E6720746F20612066696C6520696E20616E20495352206F722063A5 +:404840007269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D2072656164696E672066726F6D20612066696C6520696E20616E20495352206F72BC +:4048800020637269746963616C2073656374696F6E0D0A00457863657074696F6E0000002E2F706C6174666F726D2F6D6265645F72657461726765742E63707000000000FB +:4048C00030203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F494E5F50524F47524566 +:404900005353203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574206F66206D656D6F23 +:4049400072790D0A000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00002E2F706C6174666F726D2F53696E676C65746F6E5074722E82 +:40498000680000005F707472203D3D202854202A29265F6461746100000000000000000025D5021045D50210C1CB02107DCB0210D9CA021005CB021045C00210F9CA02105F +:4049C0000360001021600010EBCA02107D5C00109F5C0010BB5C0010D75C0010FB5C0010F5CB02101B5D001044657072656361746564206265686176696F723A206D696CD0 +:404A00006C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E746572727570742E0A0000776169745F757320626C6F636B732064D8 +:404A400065657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E672064656C6179730A0061706C69636174696F6E5F756E6E616D5B +:404A800065645F6D75746578000000002E2F72746F732F4D757465782E637070000000005F6964004D75746578206C6F636B206661696C65640000004D7574657820756E20 +:404AC0006C6F636B206661696C6564006D616C6C6F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D75746578006D61696E0000000099 +:404B0000507265206D61696E20746872656164206E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349532D52544F53206511 +:404B400072726F723A20537461636B206F766572666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572666C6F77000000004D +:404B8000434D5349532D52544F53206572726F723A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F7700000000434D5349532D525465 +:404BC0004F53206572726F723A2053544420432F432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D5349532D52544F53206536 +:404C000072726F723A2053544420432F432B2B206C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D5349532D52544F532065D1 +:404C400072726F723A20556E6B6E6F776E000000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636F6D706C6574656420E5 +:404C800077697468696E207468652074696D656F757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616D6574657220657224 +:404CC000726F720053797374656D206973206F7574206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E746578740000556E6B6E6F776E0067 +:404D0000EAD902109AD90210AAD90210BAD90210CAD90210DAD902105ADA021056DA021052DA02104EDA02104ADA021046DA02105254582056352E342E3000007274785FD7 +:404D400069646C65000000007274785F74696D657200000003000000E8030000050000006C6E000810000000000000000000000000000000000000000000000000000000D2 +:404D80000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000F44D0410184E04103C4E0410040000000000000072 +:404DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C4D041000000000AC6E0008F4 +:404E000044000000386F000800020000010000000100000000000000484D041000000000F06E0008440000003871000800030000280000000100000000000000000000004B +:404E40000000000038740008340000006C7400085000000000000000A405031040050310A405031054050310A4050310680503107C050310900503102E2F72746F732F54B6 +:404E80006869735468726561642E6370700000002128666C6167732026206F73466C6167734572726F72290028666C616773203D3D206F73466C6167734572726F725469A2 +:404EC0006D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028666C616773203D3D206F73466C6167734572726F7252657369 +:404F00006F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B000002000000000061401200000000010000000068401207000011 +:404F40000005000000006640120500000006000000006440120300000406000000006740120600000007000000006540120400000008000000006540120400000009000059 +:404F80000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D00000000674012060000FFFF0000FFFFFFFF22 +:404FC0000000000003000000000061401200150001010000000068401207150001050000000066401205150001060000000064401203150005060000000067401206150082 +:40500000010700000000654012041500010800000000654012041500010900000000634012021500010A00000000624012011500010B00000000664012051500010C000029 +:405040000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000241C03102A1C0310301C0310361C03103E1C03100300000001000000010000009E +:40508000000000000503600004000000010000000000000001000000060460000800000090760008A520031008000000010000000200000002000000080800030900000001 +:4050C000010000000000000003000000090900030800000070760008312003100A0000000100000004000000040000000A0A000C0B000000010000000000000005000000F9 +:405100000B0B000C1000000030760008452003102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269B5 +:40514000766572732F7065726970686572616C2F737973636C6B2F63795F737973636C6B2E68000000127A0000E1F5050000000000000000000001000000100000000050EB +:405180002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F43 +:4051C0006970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F54415247455441 +:405200005F4655545552455F53455155414E415F4D305F5053412F73706D5F696E69745F6170692E630000002E2F746172676574732F5441524745545F4379707265737357 +:405240002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F7461C2 +:4052800072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696FC5 +:4052C0002F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726976657273DD +:405300002F7065726970686572616C2F6770696F2F63795F6770696F2E6300002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F436B +:40534000362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F54415247455430 +:405380005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E6370 +:4053C000000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572697068656F +:4054000072616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64658E +:40544000766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F706970652E630000002E2F746172676574732F5441524745545F43797075 +:40548000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E6800000000F5 +:4054C0002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F00 +:405500007363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963651F +:405540002F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E680000002E2F746172676574732F5441524745545F4379707265737353 +:405580002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E630000002E2F74611C +:4055C00072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7379736171 +:405600006E616C6F672F63795F737973616E616C6F672E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646540 +:40564000766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E742E63000030480310464803105C4803107248031088480310E9 +:405680009E480310B4480310CA4803102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572739B +:4056C0002F7065726970686572616C2F737973706D2F63795F737973706D2E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545FC3 +:4057000050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F544152474554FC +:405740005F437970726573732F5441524745545F50534F43362F6770696F5F6170692E63000000006F626A006F626A2D3E706F72740000006F626A2D3E70696E20213D20E8 +:405780004E43000043595F50494E286F626A2D3E70696E29203C2038000000004750494F2070696E207265736572766174696F6E20636F6E666C6963742E0000DE55031036 +:4057C00002560310085603100E56031014560310FC5503101A5603102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465A5 +:40580000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E680000F65903101A5A0310205A0310265A03102C5A0310145A031088 +:40584000325A0310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720746F20667265652077A2 +:40588000726F6E6720706F72742F70696E2E00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F70736F63365F7574696C1D +:4058C000732E63006469765F74797065203C2043595F4E554D5F444956494445525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3E6D61785F696E64654A +:4059000078000000547279696E6720746F2072656C656173652077726F6E6720636C6F636B20646976696465722E0000705F616C6C6F632D3E63757272656E745F696E64DE +:405940006578203C20705F616C6C6F632D3E6D61785F696E64657800547279696E6720746F2072656C656173652077726F6E67205343422E00000000547279696E672074C7 +:405980006F2072656C656173652077726F6E6720544350574D2E00006368616E6E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E454C53004E5649433D +:4059C000206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00000000FC063F0BFD000000000000000000000000FEFF000042 +:405A000001000000FEFF00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572D0 +:405A40006970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646567 +:405A8000766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F43797057 +:405AC000726573732F5441524745545F50534F43362F73657269616C5F6170692E63000073657269616C5F6964203C204E554D5F53455249414C5F504F5254530000000022 +:405B00006F626A0053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F52582070696E2072657311 +:405B40006572766174696F6E20636F6E666C6963742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E000000005365726938 +:405B8000616C204354532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617463682E2052657175B5 +:405BC00065737465642070696E7320527820616E642054782063616E2774206265207573656420666F72207468652073616D652053657269616C20636F6D6D756E696361FE +:405C000074696F6E2E00000040420F002000000000005A0003000000FFFFFFFF00000000000000000000000000000000000000000000000000000000020000000000000070 +:405C4000000000000000000000000000000000000000000000000000000000000300000001000000504D2063616C6C6261636B20726567697374726174696F6E20666169AB +:405C80006C656421000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E000000BB +:405CC0007806000843000000504F5349580000002E00000030900310A4900310A490031014900310A4900310A4900310A4900310A4900310A4900310A49003101C90031099 +:405D0000FE8A0310A4900310B88A0310088B0310A4900310548B03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D03103E8D0310A490031038 +:405D4000A4900310A4900310A4900310A4900310A4900310A4900310A4900310A4900310A49003105C8B0310A48C0310A4900310A48C0310A4900310A4900310A490031008 +:405D8000A49003106E8D0310A4900310A4900310768D0310A4900310A4900310A4900310A4900310A4900310188E0310A4900310A49003104A8E0310A4900310A4900310C7 +:405DC000A4900310A4900310A4900310A4900310A4900310A4900310A4900310A4900310448F0310788F0310A48C0310A48C0310A48C03108A8F0310788F0310A490031015 +:405E0000A4900310928F0310A4900310AC8E031072900310E88F0310E28E0310A4900310EA8E0310A490031040900310A4900310A4900310A28F0310494E4600696E660049 +:405E40004E414E006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C290000300000002020202048 +:405E80002020202020202020202020203030303030303030303030303030303000202020202020202020282828282820202020202020202020202020202020202088101092 +:405EC00010101010101010101010101010040404040404040404041010101010101041414141414101010101010101010101010101010101010101011010101010104242BC +:405F000042424242020202020202020202020202020202020202020210101010200000000000000000000000000000000000000000000000000000000000000000000000D1 +:405F40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021 +:405F80000000000000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E000080E03779C34143176E05B5B5B89346BE +:405FC000F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C34038 +:4060000000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D42D1 +:40604000000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF15441F +:4060800050EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D000000A0C7031082C703103CC703105AC603103CC70310B3 +:4060C00074C703103CC703105AC6031082C7031082C7031074C703105AC6031052C6031052C6031052C60310B8C9031000D00310C0CE0310C0CE0310BCCE0310D8CF03103F +:40610000D8CF0310CACF0310BCCE0310D8CF0310CACF0310D8CF0310BCCE0310E0CF0310E0CF0310E0CF0310E4D10310000000000000001000000008C000000058610410EC +:40614000C0000008101400001015000808740000D09FFB7F01000000000000000B000000000000001000000000000000000000000100000000000000000000000000000084 +:40618000000000002300000000000000F07F000000000000000000000B0000009CE003100400000000000000000000000A00000000000000F00000000000000000000000B5 +:4061C000040000000000000000000000000000000000000044DB03100000000030190008440000003015000800040000180000000000000000000000041A0100100000003C +:40620000000000000100000000000000010000000000000000000000F0DF031000000000E859000844000000E819000800400000180000000000000000000000000F00007D +:4062400010000000000000000100000001000000010000000000000000000000010F000020000000000000000100000001000000010000000000000000000000020F0000C7 +:4062800040000000000000000100000001000000010000000000000000000000030F000080000000000000000100000001000000010000000000000000000000040F0000F3 +:4062C00000010000000000000100000001000000010000000000000000000000050F000000020000000000000100000001000000010000000000000000000000060F00006C +:4063000000040000000000000100000001000000010000000000000000000000070F000000080000000000000100000001000000010000000000000000000000080F00001E +:4063400000100000000000000100000001000000010000000000000000000000090F0000002000000000000001000000010000000100000000000000000000000A0F0000B6 +:406380000040000000000000010000000100000001000000000000000000000054E3031000000000485E000844000000485A00080004000018000000000000000000000098 +:4063C000001A010010000000000000000100000000000000010000000000000000000000011A01002000000000000000010000000000000001000000000000000000000032 +:40640000021A010040000000000000000100000000000000010000000000000000000000031A0100800000000000000001000000000000000100000000000000000000005D +:4064400038EB0310000000003860000824000000485F0008F00000004CEB0310000000008C62000824000000FC600008900100000000000000000000000000000A00000020 +:40648000A85E0008000000000A0000005C6000080000000000000000EC62000804630008010000000D7D0310D43F04104FBE0210FFFFFFFFFFFFFFFFFFFFFFFF0000000063 +:4064C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C +:40650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B +:40654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B +:406580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001889000891DB0210304D0410C08CFB02DA +:4065C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B +:40660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A +:406640000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A0080F0FA0250C30000320000000000A86102FF000020 +:40668000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF00000300000000000000FFFF00000000000000000000FFFF0000C7 +:4066C000010000000000000001000000000000000000000000000000000000000000000000000000000000000000000000003840000000005D6C031001000000070000003C +:40670000500600080000000000000000780600080000000064090008CC090008340A00080000000000000000000000000000000000000000000000000000000000000000DD +:406740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019 +:4067800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000D8 +:4067C0000E33CDAB34126DE6ECDE05000B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D +:406800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058 +:406840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018 +:4068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8 +:4068C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098 +:406900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057 +:406940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017 +:4069800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7 +:4069C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 +:406A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 +:406A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016 +:406A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6 +:406AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 +:406B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000430000000000000012 +:406B4000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000008F +:406B8000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000004F +:406BC000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000F +:406C000000000000000000000000000000000000000000000000000071A00310F17A0310000000009C5E0410D05C0410585E0410585E0410585E0410585E0410585E041072 +:406C4000585E0410585E0410585E0410585E0410FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000010041534349490000000000000000000000000000000000000000000000000090 +:406C800000004153434949000000000000000000000000000000000000000000000000000000000000000000000000000C0C00080C0C0008140C0008140C00081C0C0008AB +:406CC0001C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C0008440C00084C0C00084C0C0008540C0008540C00085C0C000894 +:406D00005C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C0008940C00089C0C000853 +:406D40009C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C000813 +:406D8000DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D0008CC +:406DC0001C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D000883 +:406E00005C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D000842 +:406E40009C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D000802 +:406E8000DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E0008BB +:406EC0001C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E000872 +:406F00005C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E000831 +:406F40009C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E0008F1 +:406F8000DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F0008AA +:406FC0001C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F000861 +:407000005C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008940F00089C0F000820 +:407040009C0F0008A40F0008A40F0008AC0F0008AC0F0008B40F0008B40F0008BC0F0008BC0F0008C40F0008C40F0008CC0F0008CC0F0008D40F0008D40F0008DC0F0008E0 +:40708000DC0F0008E40F0008E40F0008EC0F0008EC0F0008F40F0008F40F0008FC0F0008FC0F00080410000804100008FFFFFFFF00000200E9000010A9700210C10000107A +:4070C0000000000000B585B00190019B0393039B5B78FF2B37D100F03FFA03000293042000F00AFA0300180000F016FA03001A00164B1A60164B00221A60154B1B685B0118 +:407100005B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A12680A431A60C046094B1B681A68074B1B681340F8D1029B5E +:40714000180000F0B9F9C04605B000BDC8760008CC760008D0760008D476000800B589B001900091444B0793002000F0C5F9030005930023069300F0B7F9020013236B44C8 +:40718000033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F0AAF90300180000F0CEF903001A0001235340DBB2002B23D0002000F0B4F99D +:4071C00002002E4B9A421CD02D4A00230021012000F082F9031E14D102E0069B01330693002000F0A1F90200244B9A4203D0069B244A9342F1D9069B224A934201D8002359 +:407200000793079B002B33D100F0A6F903000393002000F071F91C4B1A00012100F074F9031E13D1019B002B06D1009B180000F02FF8164B07930BE0C046059B1B69002B99 +:40724000FBDB00F041F90300079301E00A4B079313236B441B78002B06D0C0460121002000F06AF9031EF9D1039B180000F024F9079B180009B000BD0500520001018800CE +:40728000E4050008EF490200B87600080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E221A60104B104A1A60104AA323DB000621D1500E49039B1B0295 +:4072C0001B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04604012640080126401E1F0000000026401C05000010B582B08C +:4073000002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0394B394AD2681204110C384A1269120A1004FF221204104067 +:40734000344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A9023D3582B4A134090221201134390228B50264B1B69254A9023DC +:40738000D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BFC046194B1B68002BFBDA174BDB68012213401DD0154B154A09 +:4073C000126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB681B0E1902FF231B020B40134390228350054B054AD2680221E4 +:407400008A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B4607331A701A4B194A126904210A431A616B4607331B78012B01D0D5 +:4074400030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A60104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A0A +:4074800086235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F000018052640040126401C052640AAAAAAAA01B40248844601BCF6 +:4074C000604700BF8B49031001B40248844601BC604700BFE52D031001B40248844601BC604700BF5535031001B40248844601BC604700BF2D1F031001B40248844601BCD4 +:40750000604700BF512A031001B40248844601BC604700BFA52A031001B40248844601BC604700BF852A031001B40248844601BC604700BF7D3A031001B40248844601BC9F +:40754000604700BF9539031001B40248844601BC604700BF932A031001B40248844601BC604700BF834903100000000000000000000000000000000000000000000000003D +:4075800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB +:4075C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B +:0200000490303A +:0200000026EEEA +:0200000490501A +:0C0000000005E20721002101000047EE8E +:00000001FF diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp index 7b2f4e57f35..e5eae50392e 100644 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp +++ b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp @@ -42,7 +42,7 @@ psa_its_status_t test_psa_its_reset_impl(void) } KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_main_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); if (!kvstore) { return PSA_ITS_ERROR_STORAGE_FAILURE; } diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_impl.cpp b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_impl.cpp index 7b2f4e57f35..e5eae50392e 100644 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_impl.cpp +++ b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_impl.cpp @@ -42,7 +42,7 @@ psa_its_status_t test_psa_its_reset_impl(void) } KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_main_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); if (!kvstore) { return PSA_ITS_ERROR_STORAGE_FAILURE; } diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c index b4ca8cc81a3..4c2bf56b647 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c @@ -28,10 +28,10 @@ #include "handles_manager.h" #include "cmsis.h" #include "psa_client_tests_part1_partition.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; spm_partition_t g_partitions[3] = { { @@ -46,25 +46,25 @@ spm_partition_t g_partitions[3] = { .irq_mapper = NULL, }, { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -78,8 +78,8 @@ const uint32_t mem_region_count = 0; // forward declaration of partition initializers void client_tests_part1_init(spm_partition_t *partition); +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) { @@ -88,8 +88,8 @@ uint32_t init_partitions(spm_partition_t **partitions) } client_tests_part1_init(&(g_partitions[0])); - its_init(&(g_partitions[1])); - psa_f_init(&(g_partitions[2])); + crypto_srv_init(&(g_partitions[1])); + its_init(&(g_partitions[2])); *partitions = g_partitions; return 3; diff --git a/TESTS/psa/spm_client/TARGET_FUTURE_SEQUANA_PSA/spm_client.hex b/TESTS/psa/spm_client/TARGET_FUTURE_SEQUANA_PSA/spm_client.hex new file mode 100644 index 00000000000..487d99cfffa --- /dev/null +++ b/TESTS/psa/spm_client/TARGET_FUTURE_SEQUANA_PSA/spm_client.hex @@ -0,0 +1,4582 @@ +:020000041000EA +:4000000000000108FD1A03100D00000041040010000000000000000000000000000000000000000000000000000000007DDC0210000000000000000001DD02100DDD0210D4 +:40004000551B031065210310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B03103A +:40008000551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B0310551B031010 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD5015000800000000F4610410084B10B5002B03D00749084800E000BF07480368002B00D1AE +:4001000010BD064B002BFBD09847F9E70000000054150008F46104106810000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F01E +:4001400045FE0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF077F937F02FFA200029002DF0A9FB2DF065F9C046000008000000010867 +:4001800000000000E5D7021050150008E089000855D402100000000000B585B00190019B002B05D11F49204B6C2218002CF084FA1E4B18002FF044FD0200019B1A62019B96 +:4001C0001B6A002B05D11749194B712218002CF073FA0023039309E0164A039B5B01D3180833019A1A60039B01330393039B022BF2D9019B0F4A1A610F4A104B00211800EF +:4002000031F03EFA0200019B5A60019B5B68002B05D104490A4B7B2218002CF04DFAC04605B000BDC8DC031008DC0310B8DC031024DC0310E8000008C400000899020010AC +:400240006CDC031000B583B00190019B002B05D10C490D4B572218002CF02EFA0B4B1800FFF79AFF0A4B180001F0C4FF094B180002F050FD019B054A1A600323180003B06C +:4002800000BDC046FCDC0310E0DC031048010008700100089801000800B591B0019000230F9302AB18002C231A00002137F08EFD80231B06180003F03DFF03000F930F9BAF +:4002C000102213406BD002AB1900102003F040FF02AB1B68022B04D0032B56D0012B54D04DE0534B80220021180037F06FFD02ABDA6802AB1B69D21802AB5B69D318012B76 +:4003000021D902AB586802ABDB68494A002104F033F803000E9302AB58680E9A444BD21802AB1B69012104F027F802000E9B9B180E9302AB58680E9A3D4BD21802AB5B6904 +:40034000022104F019F802ABDB69002B1FD037236B44374A12781A7036236B44344A52781A7002AB586836236B441A78304BD21837236B441B78002104F03AF807E02D4926 +:400380002D4B342218002CF097F9C04600E0C04602AB5B680021180004F0AEF888E70F9B2022134022D002AB1900202003F0D0FE02AB1B68022B0AD0032B01D0012B0FD1D3 +:4003C00002AB5B680021180004F096F82FE002AB5A6880231B061900100004F08DF826E01449154B432218002CF066F90F9B4022134016D002AB1900402003F0A9FE02AB81 +:400400001B68013B022B06D802AB5B680021180004F072F80BE00749074B4E2218002CF04BF90F9B0349054851222CF045F93FE7D019000848DD03100CDD031024DD031007 +:400440002C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B196802680A60043142680A60043182680A600431C2680A600431F0C1C7 +:4004800047460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A600431C2690A60043103462033154E324200D0043375460D4E0C +:4004C000354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A606046074900F010F8FEE7000010000000200000003000000095 +:40050000400000000400000054DD03100002000000B587B003900291002305931C4B18002BF042FF039B302B0AD0402B0FD0202B14D1184B18002BF037FF174B059314E082 +:40054000164B18002BF030FF154B05930DE0154B18002BF029FF144B059306E0134B18002BF022FF124B0593C046124B18002BF01BFF00F027F8104B18002BF015FF0F4BD9 +:40058000DA6B0F4905980023009300232CF02CF958DD031084DD03103E01FF8094DD03103F01FF80A0DD03104001FF80ACDD03103D01FF80B8DD0310C4DD03107C78000829 +:4005C000E4DD031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF0E3FE059B01330593059B0C2BEFDD264B5C6B254B9D6B244BDE6B234B1A6C224B04 +:40060000596C214B9B6C224802930191009233002A0021002BF0C8FE1E4B1A681E4B110018002BF0C1FE184BDB6C0822134012D01A4B18002BF0B8FE134B1B6D01221340F6 +:4006400004D0174B18002BF0AFFE0CE0154B18002BF0AAFE07E0144B18002BF0A5FE114B18002BF0A1FE084BDB6C0422134004D00E4B18002BF098FE03E00D4B18002BF07C +:4006800093FEC04606B070BD7C780008F4DD031004DE031000ED00E054DE031064DE031074DE031084DE031098DE0310A8DE0310B4DE031082B001900091009B180002B02A +:4006C0007047000000B583B00190019B180005F05BFC019B180000F095F8084A019B1A60019B28330021180000F04CF8019B382201219954019B180003B000BD7801041017 +:4007000000B583B001900C4A019B1A60019B180005F069FB019B2833180000F04BF8019B180000F075F8019B180005F067FC019B180003B000BDC0467801041000B583B0C9 +:400740000190019B1800FFF7DBFF019B18002CF035FF019B180003B000BD000000B583B00190019B1800FFF7ADFF019B180000F07BF8034A019B1A60019B180003B000BDCF +:400780008C01041000B583B001900091009B002B06D1019B10220021180037F017FB05E06A46019B1100180000F06AF8019B180003B000BD00B583B00190019BDB68002B5E +:4007C00005D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BDB685B680099019A10009847009BDA68019BDA60019B180080 +:4008000003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341DBB2180002B0704700B583B001900091019A009B9A420FD091 +:40084000019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD82B00190019B180002B0704782B00190019B180002B07047C2 +:4008800000B583B001900091019B10220021180037F09CFA019B19000420FFF70BFF031E02D0009A12681A60019B024ADA60C04603B000BDC0DE031000B583B00190019BB2 +:4008C0001B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B000BD82B00190C04602B0704700B583B00190074A019B1A6059 +:40090000019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BD8C01041000B583B00190019B1800FFF7E5FF019B18002CF045FE019B180003B000BD000000B58DB0C3 +:400940006B4618002C231A00002137F03FFA00230B936B461900102003F0FAFB6B461B68022B04D0032B12D0012B10D00CE00BF091F803000B930B9B002B0AD10A4B1B683B +:400980005A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F0ABFDC0460DB000BD501A000800B58DB06B4618002C231A00002137F007FA00231F +:4009C0000B936A4680235B011100180003F0C0FB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E0C4B1A600B4B1B68002B07D10BF00AF804E002230B9302E012 +:400A0000C04600E0C0466B465B680B9A1100180003F072FDC0460DB000BDC046501A000800B597B005AB18002C231A00002137F0CDF90023159305AB1900202003F088FBA9 +:400A400005AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F066FA03001493149B002B02D10923159332E105AB5B68149A1100180003F0A5FE2AE1E7 +:400A800003AB180008231A00002137F09FF905ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002103F066FC0300139305ABDA68139B9A4205D08C498C4B7222C0 +:400AC00018002BF0F9FD03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B681A0007F00BFD03001593DBE005AB986803AB598803AB5B68CD +:400B00001A0007F013FD03001593CFE005AB1B691900012036F00AFA03001293129B002B02D109231593C1E005AB586805AB1B69129A012103F020FC0300139305AB1A697D +:400B4000139B9A4205D06949694B8E2218002BF0B3FD05AB986805AB1A69129B190007F0F9FC03001593129B180036F063FD9DE00023029305AB586805AB1B6902AA0121EB +:400B800003F0FAFB0300139305AB1A69139B9A4205D05649564B9E2218002BF08DFD00230193029B1900012036F0C0F903001193119B002B02D10923159377E005AB9868BC +:400BC000029A01AB119907F0EBFD03001593159B002B0DD105AB5868019B119A002103F007FC05AB586801AA0423012103F000FC119B180036F01EFDC04657E000230093A7 +:400C000005AB586805AB1B696A46012103F0B4FB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D03049314BB82218002BF042FD009B1900012036F077F90300F3 +:400C40001093109B002B02D1092315932EE005AB586805AB5B69109A022103F08DFB0300139305AB5A69139B9A4205D01F49204BC12218002BF020FD05AB9B68009A1099A3 +:400C8000180007F0D2FD03001593109B180036F0D1FCC0460AE005AB9B68180007F094F80300159302E002231593C046C04612E005AB9B68180007F087F805AB9B68002B40 +:400CC00008D005AB9B68180036F0B4FC02E00223159300E0C04605AB5B68159A1100180003F00AFCC04617B000BDC046F0DF0310CCDE0310ECDE031000B597B005AB1800D2 +:400D00002C231A00002137F061F80023159305AB1900402003F01CFA05AB1B68022B19D0032B00D12BE1012B00D037E1E021012036F0FCF803001493149B002B02D1092385 +:400D400015932FE105AB5B68149A1100180003F03BFD27E10023139303AB180008231A00002137F033F805ABDB68082B02D00B23159317E105AB586805ABDB6803AA002100 +:400D800003F0FAFA0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF08BFC03AB1B780F3B042B00D9E2E09A00834BD3181B689F4605AB9A6803AB5B684F +:400DC0001900100006F060FC03001593D5E005AB1B691900012036F0A9F803001293129B002B02D109231593C7E005AB586805AB1B69129A012103F0BFFA0300139305AB9E +:400E00001A69139B9A4207D01623FF331A006A496A4B18002BF050FC05AB986805AB1A69129B190006F0A8FC03001593129B180036F000FCA1E00023029305AB586805AB34 +:400E40001B6902AA012103F097FA0300139305AB1A69139B9A4206D092235A005649574B18002BF029FC00230193029B1900012036F05CF803001193119B002B02D1092333 +:400E800015937AE005AB9868029A01AB119906F0B7FC03001593159B002B0DD105AB5868019B119A002103F0A3FA05AB586801AA0423012103F09CFA119B180036F0BAFB8D +:400EC000C0465AE00023009305AB586805AB1B696A46012103F050FA0300139305AB1A69139B9A4204D105AB5A69009B9A4206D09F235A003049314B18002BF0DDFB009B97 +:400F00001900012036F012F803001093109B002B02D10923159330E005AB586805AB5B69109A022103F028FA0300139305AB5A69139B9A4207D04823FF331A001E491F4B49 +:400F400018002BF0B9FB05AB9B68009A1099180006F088FD03001593109B180036F06AFBC0460AE005AB9B68180006F05FFB0300159302E002231593C046C04612E005ABF5 +:400F80009B68180006F052FB05AB9B68002B08D005AB9B68180036F04DFB02E00923159300E0C04605AB5B68159A1100180003F0A3FAC04617B000BD04E00310CCDE03102F +:400FC00004DF031070B5A2B00DAB18002C231A00002136F0FBFE002321930DAB1900802003F0B6F80DAB1B68022B06D0032B00D197E1012B00D196E190E10DABDB68102B52 +:4010000002D00B2321938FE10023209309AB180010231A00002136F0D9FE0DAB58680DABDB6809AA002103F0A7F9030020930DABDA68209B9A4207D08023FF331A00BF4990 +:40104000BF4B18002BF038FB09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB691900012035F05EFF03001F931F9B002B02D1092321934CE1F4 +:401080000DAB1B691900012035F050FF03001E931E9B002B06D1092321931F9B180036F0C9FA3AE10DAB58680DAB1B691E9A012103F062F9030020930DAB1A69209B9A42BD +:4010C00006D0CC235A009D499D4B18002BF0F4FA09AB588809AB59680DAB1D690DABDB691E9C08AA029201931F9B00932B00220007F054FE03002193219B002B06D10DABFB +:401100005868089B1F9A002103F072F90DAB586808AA0423012103F06BF91F9B180036F089FAC046F9E00DAB1B691900012035F0FDFE03001D931D9B002B02D10923219311 +:40114000EBE00DAB58680DAB1B691D9A012103F013F9030020930DAB1A69209B9A4207D0B823FF331A007549754B18002BF0A4FA0DAB5B691900012035F0D8FE03001C93E0 +:401180001C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F0EEF8030020930DAB5A69209B9A4206D0E1235A006349634B18002BF080FA09AB588809AB596842 +:4011C0000DAB5C690DAB1B691C9A01931D9B0093230007F06DFE030021931D9B180036F029FA1C9B180036F025FA96E0002307930DAB1B691900012035F098FE03001B9323 +:401200001B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F0AEF8030020930DAB1A69209B9A4207D0E023FF331A004249434B18002BF03FFA1B9B1A9309AB46 +:401240009B681B9AD31819930DABDB691900012035F06CFE03001893189B002B06D1092321931B9B180036F0E5F956E009AB1B78252B1AD109AB588809AB5C6809AB9E68C7 +:4012800009ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F08EFE0300219319E009AB588809AB5C6809AB9E6809ABDA680DABDB691A9D68 +:4012C00007A904910393189B02930192199B009333002A00210007F017FF03002193219B002B06D10DAB5868079B189A002103F07FF80DAB586807AA0423012103F078F8C5 +:40130000189B180036F096F91B9B180036F092F9C04602E00223219303E002E00223219302E0C04600E0C0460DAB5B68219A1100180003F0E1F8C04622B070BD18E0031046 +:40134000CCDE0310F0B5A5B013AB18002C231A00002136F03BFD0023239313AA80239B001100180002F0F4FE13AB1B68022B06D0032B00D1DBE0012B00D1DAE0D4E013ABF0 +:40138000DB68242B02D00B232393D3E00023229309AB180024231A00002136F017FD13AB586813ABDB6809AA002102F0E5FF0300229313ABDA68229B9A4206D08C239A0039 +:4013C0006149624B18002BF077F909AB1B78213B012B00D9A3E00023129313AB1B691900012035F0A3FD03002193219B002B02D10923239396E013AB586813AB1B69219A7B +:40140000012102F0B9FF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF04CF9219B209309ABDB68219AD3181F9313ABDB691900012035F079FD03001E931E9B3B +:40144000002B06D1219B180036F0F4F80923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8069005933A +:401480001E9B049303911F9B02930192209B00933B0032002900200008F076FB0300239322E009AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A8143093 +:4014C000060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F028FC03002393239B002B0DD113AB5868129B1E9A002102F07AFF13AB5868AB +:4015000012AA0423012102F073FF219B180036F091F81E9B180036F08DF8C04602E002232393C046C04605E00223239302E0C04600E0C04613AB5B68239A1100180002F08D +:40154000DBFFC04625B0F0BD34E00310CCDE03104302000010B5A6B00023259310AB18002C231A00002136F031FC10AA80235B001100180002F0ECFD10AB1B68022B19D02A +:40158000032B00D14FE1012B00D05BE14C21012035F0CCFC03002493249B002B02D10923259353E110AB5B68249A1100180003F00BF94BE10EAB180008231A00002136F0D5 +:4015C00005FC10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F0CCFE0300239310ABDA68239B9A4205D09C4A9C499D4B18002BF05FF80EAB1B781A3BD2 +:40160000062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F049FF03002593FCE010AB98680EAB59880EAB5B681A0007F051FF03002593F0E068 +:4016400000230D9310ABDB69229309AB180010231A00002136F0BAFB10AB98680DAB229A09A907F04FFF03002593259B002B00D0D6E010AB58680D9B09AA002102F0B8FEED +:4016800010AB58680DAA0423012102F0B1FEC046C6E010AB1B69219305AB180010231A00002136F093FB10AB5868219B05AA012102F062FE03002393239A219B9A4205D048 +:4016C0006B4A6849684B18002AF0F6FF10AB9B68219A05A9180007F065FF03002593C0469FE010AB1B69209310ABDB691F9300230493209B1900012035F018FC03001E9391 +:401700001E9B002B02D1092325938AE010AB5868209B1E9A012102F02FFE03002393239A209B9A4205D0534A4E494F4B18002AF0C3FF1F9B1900012035F0F8FB03001D9312 +:401740001D9B002B06D11E9B180035F073FF0923259366E010AB98681D9C209A1E9904AB01931F9B0093230007F05BFF03002593259B002B0DD110AB5868049B1D9A0021BE +:4017800002F036FE10AB586804AA0423012102F02FFE1E9B180035F04DFF1D9B180035F049FFC0463DE010ABDB691C93002303931C9B1900012035F0B9FB03001B931B9B38 +:4017C000002B02D1092325932BE010AB986803AB1C9A1B9907F06CFF03002593259B002B0DD110AB5868039B1B9A002102F000FE10AB586803AA0423012102F0F9FD1B9B55 +:40180000180035F017FFC0460BE010AB9B68180007F0CCFF0300259303E00223259300E0C046C04612E010AB9B68180007F0BEFF10AB9B68002B08D010AB9B68180035F02D +:40184000F9FE02E00223259300E0C04610AB5B68259A1100180002F04FFEC04626B010BD9E02000048E00310CCDE031018DF0310C2020000D702000010B5AAB010AB18004D +:401880002C231A00002136F0A1FA0023299310AA8023DB001100180002F05AFC10AB1B68022B06D0032B00D1CCE1012B00D1D9E1C5E110ABDB680C2B02D00B232993D2E167 +:4018C000002327930DAB18000C231A00002136F07DFA10AB586810ABDB680DAA002102F04BFD0300279310ABDA68279B9A4205D0D54AD649D64B18002AF0DEFE0DAB1B7AC2 +:40190000282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180007F0CCFF03002993299B002B00D07FE110AB5868269B0CAA002102F059FDC0460C +:4019400076E110AB1B69259310AB5868259B0BAA012102F011FD03002793279A259B9A4206D0D3239A00B949B94B18002AF0A4FE0DAB1B880B9A1100180007F0BDFF0300CE +:401980002993C04659E110AB1B69249310AB5868249B09AA012102F0EFFC03002793279A249B9A4206D0D6239A00A849A84B18002AF082FE0DAB1B8809AA1100180007F003 +:4019C0002BFF03002993C04637E110ABDB6923930DAB1B8807AA1100180007F04BFF03002993299B002B00D024E110AB5868239B07AA002102F0FCFCC0461BE110AB1B69FC +:401A00002293229B1900012035F090FA03002193219B002B02D1092329930EE110AB5868229B219A012102F0A7FC03002793279A229B9A4205D0884A8449854B18002AF0CC +:401A40003BFE0DAB18880DAB5968229B219A05F0A7FA03002993219B180035F0EBFDECE00DAB1B88180005F0E7FA03002993E4E00DAB1B8805AA06A9180005F04BFB030007 +:401A80002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F0A8FC10AB1B6A032B00D8C6E010AB586805AA0423012102F09CFCC046BDE010ABDB6955 +:401AC0002093209B1900012035F030FA03001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F075FC03002993299B002B06D110AB5868049B1F9A002102F0C2 +:401B000077FC10AB586804AA0423012102F070FC1F9B180035F08EFDC0468EE010ABDB691E931E9B1900012035F000FA03001D931D9B002B02D1092329937EE00DAB1888A3 +:401B400003AB1E9A1D9905F06DFC03002993299B002B06D110AB5868039B1D9A002102F047FC10AB586803AA0423012102F040FC1D9B180035F05EFDC0465EE010AB1B69CE +:401B80001C9310AB5B691B930023289310AB58681C9B02AA012102F0EFFB03002793279A1C9B9A4206D0EF239A002849284B18002AF082FD0DAB5B68284A934222D11B9BFC +:401BC000002B1FD01B9B1900012035F0AFF903002893289B002B02D1092329932DE010AB58681B9B289A022102F0C6FB03002793279A1B9B9A4205D0194A1449144B1800B5 +:401C00002AF05AFD0DAB18880DAB5968029A289C1B9B0093230009F01BFE03002993289B180035F007FDC04607E00223299304E0C04602E0C04600E0C046C04613E002231D +:401C4000299310E0C0460EE03503000060E00310CCDE031034DF03107103000000000170CB030000C04610AB5B68299A1100180002F042FCC0462AB010BDC04600B591B05A +:401C800001AB18002C231A00002136F09FF800230F9301AA8023DB011100180002F058FA01AB1B68022B04D0032B3DD0012B3DD037E001ABDB680E930E9A8023DB009A4270 +:401CC00002D908230F9332E00E9B1900012035F02DF903000D930D9B002B02D109230F9325E001AB58680E9B0D9A002102F044FB03000C930C9A0E9B9A4205D0114A12497A +:401D0000124B18002AF0D8FC0E9A0D9B1100180009F05AFD03000F930D9B180035F08AFC05E002230F9302E0C04600E0C04601AB5B680F9A1100180002F0DEFBC04611B01A +:401D400000BDC0460104000080E00310CCDE031000B58FB06B4618002C231A00002136F035F800230D936A4680231B011100180002F0EEF96B461B68022B04D0032B2CD03E +:401D8000012B2CD026E06B46DB690C930C9B1900012035F0CBF803000B930B9B002B02D109230D931CE00C9A0B9B1100180009F0CDFC03000D930D9B002B06D16B46586896 +:401DC0000C9B0B9A002102F013FB0B9B180035F031FC05E002230D9302E0C04600E0C0466B465B680D9A1100180002F085FBC0460FB000BD70B59EB000231D930BAB1800A2 +:401E00002C231A00002135F0E1FF0BAA80239B011100180002F09CF90BAB1B68022B1BD0032B00D15FE1012B00D06BE1FC235B001900012035F07AF803001C931C9B002BB8 +:401E400002D109231D9361E10BAB5B681C9A1100180002F0B9FC59E108AB18000C231A00002135F0B3FF0BABDB680C2B02D00B231D934BE10BAB58680BABDB6808AA0021DE +:401E800002F07AFA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF00DFC08AB1B78293B052B00D917E19A009F4BD3181B689F46002307930BAB9B6807AA1100EF +:401EC000180008F099F803001D931D9B002B00D006E10BAB586807AA0423002102F088FAC046FDE000231A930BABDB691993199B1900012035F01AF803001A931A9B002B03 +:401F000002D109231D93ECE00BAB9B68199A1A99180008F0B9FC03001D931D9B002B06D10BAB5868199B1A9A002102F061FA1A9B180035F07FFBD4E00BAB58680BAB1B69B9 +:401F400006AA012102F018FA03001B931B9B042B05D0774A7349744B18002AF0ADFB0BAB58680BAB5B6905AA022102F005FA03001B931B9B042B05D06E4A6A496A4B1800B4 +:401F80002AF09AFB08AB58880699059A0BAB9B6808F006FD03001D93C046A2E00BAB9B68180007F0AFFF03001D939AE00BAB1B691900012034F0BAFF03001893189B002B32 +:401FC00002D109231D938CE00BAB58680BAB1B69189A012102F0D0F903001B930BAB1A691B9B9A4205D0544A4E494F4B18002AF063FB0BAB5B691900012034F097FF030066 +:402000001793179B002B06D109231D93189B180035F010FB65E00BAB58680BAB5B69179A022102F0A9F903001B930BAB5A691B9B9A4205D0414A3B493B4B18002AF03CFB3F +:402040000BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A00210009F015FA03001D9336E00BAB1B691900012034F056FF41 +:4020800003001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F06CF903001B930BAB1A691B9B9A4205D0244A1C491D4B18002AF0FFFA0BAB986808ABE8 +:4020C00059880BAB1C6908AB5B68169A0093230009F002FB03001D9303E002231D9300E0C046C04612E00BAB9B68180007F00AFF0BAB9B68002B08D00BAB9B68180035F026 +:4021000099FA02E002231D9300E0C0460BAB5B681D9A1100180002F0EFF9C0461EB070BD5704000098E00310CCDE0310D8DF031081040000870400009D040000AA0400006F +:40214000C204000000B585B00190002303930023029380231B06180001F0ECFF03000393039B1022134001D0FEF7E8FB039B2022134001D0FEF754FC039B4022134001D023 +:40218000FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0FFF7CCF8039A8023DB00134001D0FFF75FFB039A80231B01D5 +:4021C000134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A8023DB011340B1D0FFF745FDAEE700B585B00190019B002B05D198 +:402200001F49204BD42218002AF056FA1E4B18002DF016FD0200019B1A62019B1B6A002B05D11749194BD92218002AF045FA0023039309E0164A039B5B01D3180833019A79 +:402240001A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF010FA0200019B5A60019B5B68002B05D104490A4BE32218002AF01FFAC04605B000BD36 +:4022800084E10310CCE0031074E10310E8E00310E4010008C00100084521001024E1031000B583B00190019B180000F051FA019B180003B000BD000010B5144B1B78BFF36B +:4022C0005B8FDBB21A00012313405A425341DBB2002B17D00D4B18002BF0D6F803005A1E9341DBB2002B0DD0094B1800FFF7D8FF064B18002BF000F9064A0749044B18000D +:402300002BF096F8024B180010BDC046085B0008B85A0008C00000088985021000B583B0FFF7CAFF03000193044A019B1100180026F002FB0300180003B000BDD0E103109C +:4023400000B589B00390029101920093039B002B05D14349434B3D22180029F06FFF029B0D2B05D83E49404B3E22180029F066FF1F236B4400221A70019B0693009B0593AD +:402380001F236B441B780E2B05DD3549374B4622180029F053FF1F236B441B781F226A44591C11701A00039B9B18069A3F210A402F498A5C1A70069B9B090693069B002BE3 +:4023C00000D0DDE71F236B441B780E2B05DD2449264B4C22180029F031FF1F236B441B781F226A44591C11701A00039B9B1823221A701F236B441B780E2B05DD18491B4BF4 +:402400005122180029F01AFF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70059B9B090593059B002B00D0DDE71F236B441B780E2B05DD1C +:4024400007490A4B5622180029F0F8FE1F236B441B78039AD31800221A70C04609B000BDF0E1031050E2031068E2031094E2031090E1031030B58FB00590049103920293D9 +:40248000FFF74CFF03000B930B9B002B03D1234B18002AF011F9129B002B04D0129B012B01D0022337E006AB18000E231A00002135F08CFC059B049A06A80E21FFF740FF27 +:4024C00000230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A04703000A9300230C930A9B002B0ED00A9B094A934205D0094A8D +:40250000934205D101230C9304E003230C9301E005230C930C9B18000FB030BDC0E203100B01FF801201FF8030B591B00590049103920293FFF7F2FE03000E930E9B002BC7 +:4025400003D1364B18002AF0B7F809AB18000E231A00002135F03AFC059B049A09A80E21FFF7EEFE0E9B1B681C331B6807AA09A90E98984703000D9300230F930D9B002B71 +:4025800008D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E0029A039BD218029B9A4201D208232EE0039A029BD21807ABEA +:4025C0001B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00A04703000D930D9B002B06D1069A029B9A420BD208230F937E +:4026000008E00D9B064A934202D107230F9301E005230F930F9B180011B030BDF8E203100701FF8000B58FB0039002910192FFF775FE03000C930C9B002B03D1204B1800D6 +:402640002AF03AF807AB18000E231A00002135F0BDFB039B029A07A80E21FFF771FE0C9B1B681C331B6805AA07A90C98984703000B9300230D930B9B002B08D00B9B114A92 +:40268000934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6801221A43019B5A6005AB1A68019B1A600D9B18000FB000BD5D +:4026C00030E303100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B180029F0E9FF03AB18000E231A00002135F06CFB019B009A03A80E21FFF720FE64 +:40270000089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094A934205D10123099304E00723099301E005230993099B1800F1 +:402740000BB000BD6CE303100701FF801201FF8082B00190019B180002B0704700B58FB00590049103920293039B002B04D1049B002B01D0062333E006AB05AA1A6006AB3E +:4027800004225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F077FE03000C930C9B002B01DC052315E006A90C98002300930023032243 +:4027C00000F04EFF03000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B18000FB000BDC046011A010000B58FB00590049103920293029B002B04D1039B84 +:40280000002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB039A5A608D235B020121180000F02EFE03000C930C9B002BDB +:4028400001DC052316E006AA08A90C98012300931300022200F004FF03000D930D9A80231B069A4201D105230D930C9B180000F0C1FF0D9B18000FB000BD000000B58DB056 +:4028800003900291029B002B01D1062339E008AB180008231A00002135F098FA06AB03AA1A6006AB04225A6004AB08AA1A6004AB08225A60144B0121180000F0EBFD0300E3 +:4028C0000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0C1FE03000B93029B08AA03CA03C30B9A80231B069A4201D105230B930A9B180000F07AFF4B +:402900000B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0B6FD03000693069B002B01DC052315E004A906980023009300239C +:40294000012200F08DFE03000793079A80231B069A4201D105230793069B180000F04AFF079B180009B000BD031A010010B58AB003900023069300230993039B1B6908933D +:4029800000230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F0E8FC0300042B02D080231B0647E0039B586805AA0423022101F0BB +:4029C000DBFC0300042B02D080231B063AE0089B180034F025FE03000993099B002B01D105232FE0039B5868039B1B69099A012101F0C2FC0200039B1B699A4205D0099B38 +:402A0000180034F017FE05231CE0039B5B68180001F0B2FE03001C000699059B0998089A009303002000FFF725FD03000793089A099B0021180035F0C9F9099B180034F0B5 +:402A4000F9FD079B18000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D080231B064FE0039B586805AA0423002101F07EFC0300042B2E +:402A800002D080231B0642E0039B586804AA0423012101F071FC0300042B02D080231B0635E0039BDB69180034F0BAFD03000793079B002B01D1052329E0039B5B68180013 +:402AC00001F05AFE03001C000599049A039BD869079B009303002000FFF726FD03000693069B002B07D1039B5868039BDB69079A002101F07DFC039BDA69079B002118007A +:402B000035F064F9079B180034F094FD069B180008B010BD00B587B0019003AB180008231A00002135F052F900230293019BDB68042B03D1019BDB69082B02D080231B060A +:402B400026E0019B586802AA0423002101F014FC0300042B02D080231B0619E0019B5B68180001F009FE03001800029B03AA1900FFF758FD03000593059B002B07D1019B2B +:402B80005868019BDB6903AA002101F031FC059B180007B000BD00B585B0019000230393019BDB68042B02D080231B0619E0019B586803AA0423002101F0DEFB0300042B3F +:402BC00002D080231B060CE0019B5B68180001F0D3FD03001A00039B19001000FFF774FD0300180005B000BD00B585B00190009100230393019B1B68022B04D0032B10D050 +:402C0000012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F04BFDC046019B5B68039A1100180001F063FCC04605B000BD00E40310A8E303109D +:402C400000B591B0019000230F9303AB18002C231A00002135F0BAF880231B06180001F069FA03000F9325F01FFC03000E930E9B002B05D00E9B21492148AC2229F01CFD13 +:402C80000F9B202213400AD003AB1900202001F05FFA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB1900102001F050FA154A03AB11001800FFF796FF0F9B4022CB +:402CC00013400AD003AB1900402001F041FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802001F032FA084A03AB11001800FFF778FFAEE7C04610E40310C3 +:402D0000CCE303106D2900104B2A0010152B0010972B001000B585B00190019B002B05D11F49204B7822180029F0C6FC1E4B18002CF086FF0200019B1A62019B1B6A002B84 +:402D400005D11749194B7D22180029F0B5FC0023039309E0164A039B5B01D3180833019A1A60039B01330393039B032BF2D9019B0F4A1A610F4A104B002118002EF080FC0B +:402D80000200019B5A60019B5B68002B05D104490A4B8722180029F08FFCC04605B000BDD4E403102CE40310C4E4031048E403106803000844030008412C001084E403103A +:402DC00000B58BB0039002910192039B002B05D139493A4B2C22180029F030FA029B002B05D13549364B2D22180029F027FA00F00DFE03000793079B002B02D0079B1B6841 +:402E000001E001235B4206932E4B0493039B04A90022180029F0A0FB039B0121180029F0E1FB030005930023099300230893002308932CE000230493089B1A04059B1343EE +:402E40000993039B9A68089B1B01D3181800099A04AB190029F080FB031E15D0039B9A68089B1B01D318029ADA60039B9A68089B1B01D318069A5A60039B9A68089B1B012C +:402E8000D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D22180029F0C7F9099B18000BB000BDC046E0E403101CE50310CA +:402EC00038E50310FFFF000054E5031000B589B003900291039B002B05D13649364B6622180029F0ABF9029B002B05D13149334B6722180029F0A2F9029B1B0C0793039B61 +:402F00005A68079B9A4209D8079A039B5B682C492C48009313006D2229F0CEFB039B9A68079B1B01D3181A68029B9A4205D0029B23492548712229F0BFFB00F067FD030022 +:402F40000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01149144B7B2218004D +:402F800029F09AFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B01D31800229A60C04609B000BDE0E403101CE5031078E503101D +:402FC00024E7031094E50310E0E503101CE6031000B589B003900291039B002B05D13649364B8622180029F029F9029B002B05D13349344B8922180029F05EFB029B1B0CFA +:403000000793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F04CFB039B9A68079B1B01D3181A68029B9A4205D0029B22492548932229F03DFB00F012 +:40304000E5FC03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01049144B1E +:403080009D22180029F018FB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F0CCF8039B9A68079B1B01D318DB68180009B000BDC046E0E403101CE5031013 +:4030C00040E7031058E6031094E50310E0E5031098E60310E8E6031084B001900091002303930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039B4D +:4031000001330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF03003A +:403140000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D80023180005B000BD1804000800B587B003900291029B002B0DD1039B1B7D01225340DBB2EC +:40318000002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D1029B1B68134915483D2229F085FA002305930CE0029B9A69059B9B00D3181A6802 +:4031C000039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B680449074800931300462229F065FAC04607B000BD4CEA03105CE7031094E703105A +:40320000CCE7031000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BD2004000800B583B00190019A044B11001800FFF7CDFE0300180003B000BDC046C8 +:403240002004000800B585B001900091019B9B681A6A01235B42190010002CF015FD03000393039B002B05D02349244B5722180028F0E4FF019BDB69002B03D1019B009A28 +:403280009A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B68190010002EF046FA03000293029B002B05DA1249134B6622180028F0C1FF019B5B68029A18 +:4032C000134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD03000393039B002B05D00449044B6B22180028F0A5FFC04605B000BD0CE8031044E8031041 +:4033000058E8031074E8031030B58BB005900491049B002B05D15649564B7022180028F08DFF059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F0BCF937 +:40334000099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C414802930191CC +:4033800000922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B81220A +:4033C000180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4A5A60089B002B0FD0049B9B6818002CF085FF03000693069B002B35D01C49244B0E +:403400008A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B11001800FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049A02 +:40344000DA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11001800FFF7EFFE00E0C0460BB030BDC0460CE8031090E8031038EA0310A4E80310A3 +:40348000C4E8031020E90310180400080100008044E8031000B58FB00190009109AB180010231A00002134F091FC05AB00221A6005AB00225A6005AB09AA9A6005AB102235 +:4034C000DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6002AB9B68002B05D119491A4BB722180029F0E2F802AA019B11001800FFF704FFF6 +:4035000002AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22180028F08BFE02AB9B6818002CF008FF03000D930D9B002B05D00749074BC022BB +:40354000180028F07BFE02AB5B6818000FB000BD6CEA031050E903100CE8031044E8031000B585B001900091009B002B05D13649364BC922180028F061FE019B1800FFF7D7 +:4035800051FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F07CF8E9 +:4035C000039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F039FA2EE0009B5B6918002CF087FE03000293029B002B24D01349184BD822180023 +:4036000028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B1868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE62 +:4036400000E0C04605B000BD0CE8031090E8031088E9031078EA0310A0E9031044E8031000B595B003900291019200930FAB180010231A00002134F0A9FB0BAB00221A60EC +:403680000BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF0CCFD020005AB4E +:4036C0005A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B11001800FFF73EFF05AB5A6901235B42190010002CF0DCFD03001393139B002B06D08623B4 +:403700005A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D01023FF331A000749074B180028F086FD05AB1B69180015B000BDC04688EA031075 +:4037400050E903100CE8031044E8031000B585B001900091009B002B06D18C235A002049204B180028F06AFD019B1800FFF75AFD03000393039B002B07D11C23FF331A00D4 +:403780001749194B180028F059FD039B1A68009B0821180000F074F903001A0001235340DBB2002B06D08F235A001049104B180028F082FF039B15330321180000F004F984 +:4037C000039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BD0CE8031090E8031088E9031094EA0310D0E9031000B58FB00190019B002B55D05A +:4038000009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6003AB019A1A6005AB1A00002101202CF00EFD020003AB5A6003ABF2 +:403840005B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FF03AB5A6801235B42190010002CF01EFD03000D930D9B002B06D0A4235A000F4909 +:403880000F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF331A000649064B180028F0C8FCC0460FB000BDC046A4EA031000EA03100CE80310E5 +:4038C00044E8031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD000013 +:4039000000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049B002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B00939E +:403940001300272228F0B8FEC04609B000BDC046C0EB0310B0EA031000B587B00390080011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A2382 +:403980006B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B236B441B781A0017236B441B780449054800931300302228F07FFEC04607B000BD5E +:4039C000D0EB031004EB031000B585B003900A000B236B441A70039B1B780B226A4412789A420CD0039B1B781A000B236B441B780449054800931300382228F05DFEC046ED +:403A000005B000BDE8EB031004EB031000B583B02DF064FE03000093009B002B05D11549154B5E22180028F009FC0023019317E0124B1968019A13009B009B18DB00CB18DA +:403A40005A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B01330193064B5A68019B9A42E2D80023180003B000BDC0464CEB0310A0EB03101804000854 +:403A80008CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029BD3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B050993FC +:403AC00080231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A423F +:403B000001D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD2180599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A42A1 +:403B400009D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002393 +:403B800018000CB07047C04600000108007703000000081010B52EF079FE174B1A0018210A202AF04BFF0200144B1A62134B1B6A002B05D1124A134B1100180028F07CFD07 +:403BC000114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B1100180028F069FD054B1800FCF72BFB0200024B5A60C04610BDE80300081804000898 +:403C000090EC031030EC0310000400085CEC031010B5034B1B68180001F078F8F9E7C0464404000800B583B001900091009A0199034B1800FFF7C4F80300180003B000BD39 +:403C40002C04000800B583B00190019A044B11001800FFF7BDF90300180003B000BDC0462C04000800B583B00190019A034B11001800FFF72BF9C04603B000BD2C040008B8 +:403C800000B583B00190019A034B11001800FFF71DF9C04603B000BD2004000884B0019000910023039311E0019B1A69039B5B01D3185A68009B9A4205D1019B1A69039BFB +:403CC0005B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000010B596B00190009103AB180028231A00002134F06BF803AB019A1A60019B1B7DF7 +:403D0000022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2002B05D08D498E4B5B22180028F0C4FC019BDB681393139B1B681293139B5B6870 +:403D40001193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB24229954119B002B5DD0119BD900019B1A68129B1800FFF783FE03001A0001230E +:403D80005340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129AD3185B68002B36D0159BDB00129AD01803AA159BDB000421D3185B18020003CA6F +:403DC00003C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB00D3180433186803AA159BDB00D31808331968019B1B681A00FFF742FE03001A0027 +:403E000001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A119B9A42B9D30F9B002B63D00F9BD900019B1A68109B1800FFF722FE03001A005C +:403E400001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB00109AD3185B68002B3CD0119A149BD318149AD2001099881803AADB000421D3182D +:403E80005B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60119A149BD31803AADB00D31804331868119A149BD31803AADB00D3180833196886 +:403EC000019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B20492448942228F0EAFBC046149B01331493149A0F9B9A42B3D31F4B5A6A01235B4219001000C0 +:403F00002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CA13C313CA13C313CA13C312681A600E9B00211800FFF776FE03000D93019B1B7D55 +:403F40001A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC046D4F20310A0EC0310C8EC0310E8EC03100CED03102CED03101804000850ED031000B587B086 +:403F80000190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849284BAD22180028F049F9019B9B690493049B002B05D12449244BB322180028F0B8 +:403FC0007BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B5B6818002DF0CCFB03000393039B002B05DA1349164BBF22180028F01FF9019B86 +:404000005B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE03000593059B002B05D00549054BC522180028F003F9049B180007B000BDC04655 +:404040007CED0310B4ED0310E8F20310C8ED0310E8ED031004EE031000B58BB00491039217236B44021C1A70FFF7D0FC03000993099B002B05D12A492A4BCE22180028F0B5 +:40408000DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D0079B04930EE0089B049A1A40049B9A4208D0049A1C491D48089B00931300DB22B4 +:4040C00028F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFB03000693069B079A1A40069B9A420DD0039A80231B069A4202D0069B023305D09D +:4041000007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC0467CED031020EE031008F3031040EE03107CEE031000B583B00190019B1A00002176 +:404140000120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC03000993099B002B05D15149514BF922180028F065F8099A029B2C211800FFF781FC030069 +:404180001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180033F014FE039B002B06D0039B013B039A134001D1012200E0002223236B441A706A +:4041C0001A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A13400AD1099B9B68039C84225200314933480093230028F060FA2DF0E6FA0300079305 +:40420000039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B11001800FFF73CFD03000693069B002B07D1039C89235A001F492348230028F03DFA069BD1 +:404240001800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211800FFF7B1FB18E0059B1533052204211800FFF771FB10E0059B1533032118001E +:40428000FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B11001800FFF71DFDC0460AB010BD7CED031020EE031014F30310F8EE031014EF031068 +:4042C00060EF03107CEF0310CCEF031000B587B00390029101920093039B1800FFF7B2FC03000593059B1B68153305211800FFF76BFB029B032B06D99E235A001C491D4B4C +:40430000180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31804330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D04F +:40434000049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009BD21A049B5A60009B180007B000BDC0461CF30310FCEF031000B587B003900291A4 +:4043800001920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F04DFF059A0099019B1800FFF769FB03001A0001235340DBB2002B06D0AD235A009B +:4043C00009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC0467CED031020EE03102CF3031018F0031010B58AB00590049103920293029B002B00 +:404400006BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A0299039B1800FFF72BFB03001A0001235340DBB2002B07D07023FF331A002A49DA +:404440002A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7B3FA089B24229B5C1A00049B9B180493049B032B06D9BC235A001B491C4B18002B +:4044800028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C7E22FF32104913480093230028F004F9079B1B68029A0399180033F0F5FB079BC3 +:4044C0001A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BD7CED031020EE031038F3031018F0031038F0031054F0031010B58EB0019000912E +:40450000019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B498B4B180027F08AFE0D9BDB68002B06D1C6235A008549874B180027F07FFE019BAF +:404540001800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FA03000A930A9B002B06D0CB235A0077497A4B180027F062FE00230C930D9B1A685B +:4045800027236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B002B0CD0009B6E4A934208D0009CA023FF331A006B496C48230028F07DF80D9BE9 +:4045C000DB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089B5B681800FFF74CFB0D9B18220021180033F0ECFB584B1B6A0D9A110018002AF07F +:4046000071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6000230D936BE00D9B1533032202211800FFF792F963E0009A80231B069A420BD0D9 +:40464000009B4A4A934207DA009CE0235A0045494748230028F030F80D9B1533032205211800FFF779F9009A80231B069A4202D10D9B01229A750D9BDB680693069B009A7B +:404680001A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800FFF75AF9059B1B681800FFF7E9FA0D9B18220021180033F089FB274B1B6A0D9AD1 +:4046C000110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B180027F0ABFD0D9B1B7D1C00EA23FF331A001C491F48230027F0DEFFC0460D9B2A +:40470000002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F099F90FE00C9B18002BF0E8FD03000393039B002B06D0FB235A000449074B18003B +:4047400027F07CFDC0460EB010BDC0467CED031094F00310B4F0031018040008B4ED03100100008044F30310DCF003108000008018F1031050F1031000B585B00190019B3F +:404780001800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B1B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E02000048 +:4047C0007CED0310F0F1031000B585B001900091019B1800FFF736FA03000393039B1B68009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD03000193C7 +:40480000019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B6918002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFCD1 +:40484000C04603B000BDC0464004000868F30310BCF303104404000810B52EF031F9C04610BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D035 +:4048800002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF733FD3DE001AB9B681A0001AB5B6819001000FEF755FE33E001AB9B681A0001ABF0 +:4048C0005B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F803001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF75C +:40490000E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCC04607B000BDC04698F40310F4F3031068F303101CF4031000B599B0394B1793CB +:404940000FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C231A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C2266 +:40498000180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B18002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A009E +:4049C000002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194B1A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFCB3 +:404A0000124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B000BDC04600770408779A333D0C4A286368F4031068F3031024F4031078F403109D +:404A400038F4031088F4031050F40310400400084404000800B587B0019003AB18000C231A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C04690 +:404A800007B000BD4004000800B585B00390029101920093039B002B05D12349234B2422180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A93424D +:404AC00005D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFB009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A6061 +:404B0000029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61C04605B000BDC046A8F40310E8F40310F8F403100C4A286310F5031040F503101A +:404B400050F50310FFD948A200B585B0039002910192039B002B05D11C491D4B3722180027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D0A8 +:404B80001249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA6040 +:404BC000039B019A1A61C04605B000BDA8F40310E8F40310F8F403100C4A286310F5031068F5031042658BA610B586B003906846016042608360039B002B05D13D493E4BDB +:404C00004722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B1A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B221800B9 +:404C400027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B6863 +:404C80001B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039BE1 +:404CC0009B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D00449084B5D22180027F0A8FAC04606B010BDC046A8F40310E8F40310FFD948A25D +:404D00007CF50310A8F50310BCF5031010B586B00190019B002B05D12D492E4B6322180027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA2399 +:404D40005B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C304 +:404D8000019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B5B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019B3C +:404DC0009B681B689A42CED1C04606B010BDC046A8F40310E8F4031042658BA6F4F50310BCF5031082B00190034A019B1A60019B180002B07047C0466CF6031000B583B047 +:404E00000190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B001900023180002B0704784B00390009201930023180004B0704784B0039000920193002381 +:404E4000180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800210002B010BD10B584B0039000920193039B1B682C331B68039A10009847030095 +:404E80000C001800210004B010BD82B0019001235B42180002B0704730B585B0039000920193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF70 +:404EC0001C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C00089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B81 +:404F0000099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B686E +:404F400028331B68039A1000984703000C00009801991A00230036F06DFF1C001300190022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00F8 +:404F8000230036F057FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D89A +:404FC000012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B019C03981A002300884703000C00009801991A00230036F01DFF1C001300190051 +:4050000022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F680099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B847AA +:4050400003000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B00F5 +:405080009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019B1A60019B180002B07047C0466CF60310F0B585B0039002910192039B1800FFF716 +:4050C000EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B1800AD +:4051000005B0F0BD28F6031000B583B001900A4A019B1A60019B180000F0E8F8019B0433180000F0E5FA019B1800FFF75BFE019B180003B000BDC04628F6031000B583B075 +:405140000190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64600B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B243322 +:405180000121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA03000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA6926 +:4051C000099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B0433180000F0E5FC030043440093002301930123019A954206D8019A954202D1009A9442C1 +:4052000000D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D69099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D800232C +:40524000DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A0022430DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BFB +:40528000DC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433180000F084FC0300069300230793099B5C691B690699079AC91AA2410B00140098 +:4052C0000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B41 +:4053000004D0019B00225A62002316E0019B24330121180027F09AF903000393039B002B01D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD74 +:4053400010B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B44 +:4053800019695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B0993CA +:4053C000059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FD031E01D0012300E00023002B11D0059B19695A69029B039C5B1854410693079443 +:40540000059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9B3D +:405440000D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B043306990C9A180000F0F8FA0300099355 +:40548000099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B585B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B04331800F6 +:4054C00000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B00190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C693C +:405500001B691900100000F044FB03000393039B1D0000231E002B0034001800210004B070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D0002500260B +:4055400011E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B1D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C012221 +:405580005340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB030023700F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD82 +:4055C00000B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002B05D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC04621 +:405600003A0200000CFD031024FD031010B5074B1B68002B08D0054B1A6801235B42190010002AF031FB00E0C04610BD2079000810B5064B1B68002B05D0044B1B68180068 +:405640002AF04CFB00E0C04610BDC0462079000800B583B00190019B180000F0C9FA27F0DDF9019B180003B000BD00B583B0019027F0FCF9019B180000F0C0FA019B1800E7 +:4056800003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B583B0019027F030FA019B180000F0B2FA019B180003B000BD00B583B0019000912A +:4056C000019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190019B180000F09CFA019B180003B000BD00B583B00190019B180000F097FA019B0A +:40570000180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F0FBFF03AB1800FFF793FF02AB1800FFF7A9FF019B18002FF099FE03005A1E934118 +:40574000DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180000F00CFA03000493049B180027F00AFF03001A00019B5A60054B180000F05CFA69 +:405780000300180027F0F0FF059B180007B000BDE063000800B587B00190002305931D4B180000F049FA0300180027F0B5FF04AB1800FFF74DFF03AB1800FFF763FF019BBD +:4057C00018002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF04AB1800FFF741FF019B5B68002B04D0019B5B68180027F0EBFE064B180000F0A4 +:405800001BFA0300180027F0AFFF059B180007B000BDC046E063000800B589B0039002910192009301235B420793164B180000F003FA0300180027F06FFF06AB1800FFF79C +:4058400007FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF71EFF06AB1800FFF700FF064B180000F0E3F90300180027F077FF079B180009B08F +:4058800000BDC046E063000810B592B00390029101920093039B180000F070F903000893039B18002FF03EFE03000D93039B18002FF031FE03000C93029B1093089A019B02 +:4058C00011001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019BD2180C990D9BCB189A4201D9012300E00023002B02D001235B42B1E000230E934D +:40590000594B180000F098F90300180027F004FF009B002B00D19AE0039B019A110018002FF0DAFD03000B93109B032293431900109A2B236B448A1A511E8A411A70019B81 +:405940000B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F903001B6807932B236B441B78002B03D1079A089B9A4224D208AA07AB1100180000F0D6 +:4059800066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039B5A68079BD018089A079BD31A1A00FF2132F00CFA039B5B680F93089B11930EE050 +:4059C000079B089A1100180036F062F803001A00089B53430793109B0F93079B119306AB1800FFF735FE05AB1800FFF74BFE0398119B0F9A01992FF058FD03005A1E9341F1 +:405A0000DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D0002401E0C046012406AB1800FFF71EFE012C0DD1C046009A079BD31A0093079B019A3E +:405A4000D3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B180012B010BDC046E063000800B58FB0039002910192039B18002FF053FD030019 +:405A80000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099A0A9B9A4202D901235B4261E0099A0A9B9A4217D2039B099A110018002FF00CFD5B +:405AC00003000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D001235B4245E000230D93234B180000F0A4F80300180027F010FE019B002B2FD006ABE2 +:405B00001800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305AB1800FFF7BCFD06AB1800FFF79EFD0D9B002B03D001235B420D9310E0039B029A67 +:405B4000110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B180000F069F80300180027F0FDFD0D9B18000FB000BDC046E063000800B583B0F2 +:405B80000190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A110018002FF099FC0300180003B000BD00B583B00190019B18002FF0ADFC0300180083 +:405BC00003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B00190019B18002FF0A5FC0300180003B000BD82B00190019B180002B0704782B001909E +:405C0000019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700B583B00190019BB2 +:405C4000180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019BA0 +:405C80001B68002B0FD1019B083319002420FAF711FD041E04D0200027F0ECFC220000E02200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F023 +:405CC000BDFA019B1B68180002B010BD2CFD031048FD031082B00190019B074A1A61C046019B1B69002B01D0012200E00222019B1A75C04602B0704770FD031082B0019052 +:405D0000034A019B1A60019B180002B07047C04664FD031000B583B00190019B1800FFF7EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B00A +:405D4000039002910192039B1B6810331B68019A0299039898470300180005B000BD00B583B00190019B1B6818331B68019A100098470300180003B000BD00B583B0019052 +:405D8000019B1B6828331B68019A100098470300180003B000BD82B001900A006B4603331A706B4603331B78002B01D0002301E019235B42180002B0704782B001900123D8 +:405DC000180002B0704782B001900A006B4602331A801123180002B0704782B001900091C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF7BC +:405E00000DFD031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B28331C0002AB00211800FAF7ABFC02AB19002000FAF7FCFC02AB1800FAF7BAFCE5 +:405E400026F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1854411A00230000F0DDF8019B28331800FAF7D4FC031E04D0019B28331800FFF7A1 +:405E80009FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF79CFC019B1800FFF7A0FF02AB1800FFF793FB02AB1800FAF77FFCC04607B000BD10B582B0A2 +:405EC0000190019B180000F052F8019B00221A60019A002300249360D460019A002300241361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180078 +:405F000002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B05F +:405F4000019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A002300241361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019B32 +:405F8000180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002300249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B69D0 +:405FC000054A1100180025F08DFF019B180002B010BDC046A0010410DD5F001000B585B00190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B0D6 +:406000000190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BDA001041010B586B0059002920393059B9869059B08331900059A029B039C00924D +:406040001A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B08331900100025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B0EF +:406080007047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BD9444041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B0A5 +:4060C00000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BD00B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B0C7 +:406100000190019B180000F00FF8034A019B1A60019B180003B000BD9444041082B00190019B180002B0704782B00190019B180002B0704782B06B46186059606B465B6868 +:40614000180002B0704782B06B46186059606B465B68180002B0704784B001900091019B039304E0039B5A1C039200221A70009B5A1E0092002BF5D1C04604B0704786B097 +:4061800003900291019213236B4400221A700023059313E0039A059BD3181A780299059BCB181B785340D9B213236B4413226A4412780A431A70059B01330593059A019B8E +:4061C0009A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206944663445A425341DBB2180002B0704700B583B00190019B7F3306DA019B5A4200 +:40620000FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A934200D1B4E2B54A934200DD7CE0B44A934200D172E2B24A934238DCB24A934200D105 +:4062400047E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A934200D13DE2ACE2AA4A934200D134E2A94A934200D12EE2A3E2A84A934200D13A +:4062800051E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D13FE2A24A934200D139E28AE2A04A934200D182E29E4A934218DC9E4A934200D16A +:4062C00075E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D167E2984A934200D165E26AE2964A934200D164E2944A934208DC944A934200D11C +:4063000053E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A934200D13AE24DE28E4A934200D113E28C4A934238DC8B4A934200D11EE2894A9342D4 +:4063400018DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E22FE2844A934200D10BE2834A934200D105E226E2814A934200D1E8E17F4A9342A2 +:4063800008DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A934200D1D6E10DE27A4A934200D1DBE1784A934218DC774A934200D1D0E1754A9342FF +:4063C00008DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A934200D1BEE1EDE1704A934200D1BDE16E4A934208DC6D4A934200D1B4E16C4A934212 +:4064000000D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E11A00263200D146E11A00263200DDCFE01A00373200D1B2E11A00373231DC1A001B +:40644000403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D11FE1663300D11CE1ABE11A00623200D117E1603300D114E1A3E11A003A3200D1DF +:4064800039E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E18FE11A00313200D163E11A00313216DC1A00343200D11AE11A00343207DC1A001F +:4064C000363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A002B3200D115E11A002B3265DC1A002F3200D10EE12D3300D10BE162E100BCFFFF8B +:4065000000AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFF809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF95 +:4065400080B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFF80C2FFFF00BFFFFF80BDFFFF80BCFFFF00BDFFFF00BEFFFF80BEFFFF00C1FFFF19 +:4065800080BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFF80C4FFFF00C5FFFF00C7FFFF00C6FFFF80C6FFFF80C7FFFF1A00283200D1F0E02E +:4065C0001A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A00193200D15BE01A0019320FDC1A00223209DC1A0023324EDA1A0025324DD0243389 +:4066000000D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D0173347D0CEE01A00143200D16EE0133300D16DE0C6E01A000C3200D180E01A000C32BC +:4066400013DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3200D16EE00D332AD0ABE09A1D00D160E09A1D07DC1A000A3200D15EE0083300D116 +:4066800059E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D2390E008238EE009238CE004238AE0022388E00D2386E0022384E00D2382E00823E5 +:4066C00080E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102370E00E236EE00D236CE00D236AE00F2368E0022366E00F2364E0022362E00D23AB +:4067000060E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E0092350E00C234EE00D234CE00C234AE0082348E0082346E0042344E0082342E008237C +:4067400040E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E0032330E008232EE002232CE010232AE00D2328E00D2326E0082324E0112322E00D2344 +:4067800020E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2310E008230EE00D230CE008230AE0042308E0022306E0102304E0092302E00D2301 +:4067C00000E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED89A00114BD3181B689F46132318E0152316E0172314E0182312E0192310E01A2349 +:406800000EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E00023180002B07047C046AC01041082B002006B4606331A806B4606331B88123B0C2B49 +:406840001ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E0BC +:406880000023180002B07047E401041000B585B0039002910192039B294A93420FD0284A934203D8274A934214D020E0A222D20593421ED0A422D20593421AD017E0029B39 +:4068C000002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD0029A80235B009A4207D0082324E0022322E0C04602E0C04600E0C046029B0722D8 +:40690000134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB0200019B1A60019B1B68002B04D1019B00225A60092300E00023180005B000BDC046D9 +:40694000010000500100004000B589B0039004AB180007F097FB04A9039800230193002300930023002218F0C9FE03001800FFF73FFC03000793079B002B09D104AB180094 +:4069800007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD00B587B001900091019B180016F006FA0300012B01D0082323E0019B18685968C2 +:4069C000FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D902230EE0059B1800FFF7AEFF03000393039B002B01D0039B03E0009B059A1A6033 +:406A00000023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF90300022B01D008231DE0029B18685968FFF789FB03000593059B1B7812246C4437 +:406A40001800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B059A1A600023180006B010BD10B58AB004910392029316236B44021C1A800E23E5 +:406A80000993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A60AC21012030F042FA03000893089B002B01D1092362E0089A1F236B441B78190023 +:406AC000100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499180007F09BFF03001800FFF781FB03000993099B002B30D1089A089B7C331900A8 +:406B0000100011F099FF03001800FFF771FB03000993099B002B22D10898089B88331900089B7C331A00089B28331C00154B0193154B0093230011F043FD03001800FFF7D5 +:406B400057FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04600E0C046089B002B07D0089B18000EF0D4FD089B180030F05DFD099B18000AB014 +:406B800010BDC04690660008B948011000B58BB005900491039200230993059B1B681800FFF716FB031E21D0039B5D4A934201D90223B1E0059B1868039BD900059B10330C +:406BC0001A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69039A0499180031F05FF894E0059B1B681B0C1B044B4A934219D1059B1B684A4AD4 +:406C000013404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF03000993099B002B00D175E0099B74E0059B1B683F4A13403F4A934206D0059B1B683C +:406C4000394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB059A420AD1039A049906A800230093002317F0D8F80300089307E0039A049906ABAF +:406C8000180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B68234A1340234A93420AD1059B10331A0006AB11001800FFF773FE030009931EE0E7 +:406CC000059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6898B200E00020059B10331A0006AB1900FFF78AFE0300099301E002230993099B2B +:406D0000002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC046FFFFFF1F000003700000FFEF00000360FFFFFFEF0000016010B588B0020002918B +:406D40000E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188805AB0093230005F051F803000793079B002B08D10699059A029B1800FFF706FFEF +:406D80000300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B0020000916B4606331A80204B1B68002B01D1072337E06B4606331B88002B04D0DA +:406DC0006B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F02292009A18114BD218009B1A60009B1B68DB68012B16D1009B1B681B68002B11D1D7 +:406E000000230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0039B00E00023180005B000BD1064000800B585B0020000916B4606331A8000233C +:406E40000293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B01D0039B09E0029B1B68002B01D0052303E0029A009B1A60039B180005B000BD93 +:406E800000B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E236B441B8811001800FFF778FF03000593059B002B01D0059B29E0049B1B68002BAE +:406EC00001D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B012293430193049B5B68019A1A40019B9A4201D003230DE0009B002B06D0049B9A68009B9A4233 +:406F000001D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B32D0019B1B681800FFF752F9031E05D0019B1B69180030F07DFB25E0019B1B68EC +:406F4000134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E0019B1B680C4A13400C4A93420AD1019B1B6918000EF0D1FB019B1B69180030F0FE +:406F800059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF0000036010B588B004910392029316236B44021C1A8006AA16236B441B8811001800FFF78C +:406FC00037FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF7D5FD03000793079B002B04D0069B00221A60079B1DE0069BDB68012B18D1069B48 +:407000001968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B06D0069B1800FFF775FF069B00221A60079B180008B010BD00B587B002006B4661 +:4070400006331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493049B002B01D0049B1CE0039BDB68012B07D16B4606331B88180004F0E5FF03009C +:407080000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B00E0059B180007B000BD000000B583B00190019B1B681800FFF78AF8031E03D00F +:4070C000019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC0300DB000BE0019B1B68084A1340084A934203D1019B1B699B6D00E0002318004C +:4071000003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B44021C1A80029B002B02D0029B00221A60019B002B02D0019B00221A6004AA0E2314 +:407140006B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002B01D1062311E0029B002B03D0049B1A68029B1A60019B002B06D0049B1800FFF754 +:4071800095FF0200019B1A600023180007B000BD00B58BB00390029101920093009B00221A600C9B002B0AD0039B1A68C023DB051A40C023DB059A4201D00823F8E0039B07 +:4071C0001B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0039B1969039B5A69029B180030F05CFD039B5B69029AD018039B5B69019AD31A21 +:407200001A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A934232D10C9B002B2FD1039B1800FFF73EFF03000733DB080893089A019B9A4201D975 +:407240000423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF03000793079B002B01D0079BA2E0029A089BD018019A089BD31A1A00002130F0A7FD009BCF +:40728000089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A934200D083E0039B1B68444A1340444A93420BD105AB180015F007FD05AB434ADF +:4072C0001A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB5A600C9B002B08D1039B1A68E023DB051A40C023DB059A4208D1019A029905AB38 +:40730000180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B0EDA019B002B05D0019A029B0021180030F04CFD099B1800FEF75AFF030037E088 +:40734000099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B019AD31A029AD318099A0021180030F02DFD17E0099A019B9A4213D2099B019AD2 +:40738000D31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A00002130F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF84 +:4073C000000001600000FFEF0000036094390410C439041010B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230122FFF742FD0300079305 +:40740000079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE0300180008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A9162309 +:407440006B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A0499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44FD +:40748000021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049B1B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A7A +:4074C000934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B185A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B68ED +:407500001B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D1039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B8A +:40754000002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A441088009399 +:407580002B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800FEF7DAFD079B180030F044F8099B18000BB030BD0000017000000160000002702B +:4075C00000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E063 +:40760000094B00E00023180002B0704709000001080000010A0000010B000001102E0410402E0410702E0410A02E041000B583B00190019B1B68114A934205D8104A93420C +:4076400006D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083318001CF0C6FD02E0072304E0C046019B00221A600023180003B000BD090000015C +:40768000080000010B00000100B585B001900091019B00221A60009B334A93421BD0324A934203D8314A934207D03EE0304A93421FD0304A93422AD037E0019B083318009B +:4076C0001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE019B0833002118001AF03AFE0300039327E0019B083318001CF06FFD019B083314 +:40770000012118001CF094FD0300039319E0019B083318001CF061FD019B0833002118001CF086FD030003930BE0009AFE23DB051A4080235B049A4201D1022311E008237E +:407740000FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD0300180005B000BD09000001080000010A0000010B00000100B587B0039002911E +:407780000192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A934214D809E0039B0833019A029918001CF0E3FA030005930CE0039B0833019A029966 +:4077C00018001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF059B1800FEF704FD0300180007B000BD08000001090000010B00000100AFFFFF27 +:4078000000B589B00390029101920093039B1B68FF221340802252041343824A934200D1AEE0039B1B68FF2213408022520413437D4A934200D1A1E0039B1B68FF221340C5 +:40784000802252041343794A934200D194E0039B1B68FF221340802252041343744A934200D187E0039B1B68FF221340802252041343704A934200D17AE0039B1B68FF2250 +:4078800013408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A934261D0039B1B68FF221340802252041343634A934255D0039B1B68FF221340C6 +:4078C0008022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD0039B1B68FF221340802252041343574A934231D0039B1B68FF2213408022520452 +:407900001343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68FF2213408022520413434B4A93420DD0039B1B68FF221340802252041343474AB2 +:40794000934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E085 +:4079800010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059B9A4202D20423079328E0039B1B68224A93421AD3214A934203D9224A934214D8A0 +:4079C00009E0039B0833029A110018001CF04DFA030006930CE0039B0833029A110018001EF0D2FD0300069302E01D4B0693C046069B1800FEF7FCFB03000793079B002B16 +:407A000008D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B180009B000BD0100000102000001030000010400000105000001080000010900000111 +:407A40000A0000010B0000010C0000010D0000011000000111000001120000011300000100AFFFFF00B597B003900291019204AB05A903984022FFF7C3FE03001593159BBC +:407A8000002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB031E01D0102300E00023180017B000BD00B587B00390029101920093039AFE230C +:407AC000DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB049A4207D0039AFE23DB051A40C023DB049A4248D1039B554A93421ED0534A93425D +:407B000009D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934210D34F4A934221D04E4A934223D027E017236B4407221A7024E017236B44052210 +:407B40001A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A7010E017236B4402221A700BE017236B4408221A7006E017236B4406221A7001E054 +:407B800000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D117236B4406221A7001E0002348E0029B2F4A934212D02E4A934203D82D4A93425B +:407BC00007D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B04D116236B4403221A7003E016236B4404221A70019B802B0ED1C02301930BE031 +:407C000016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0009B16226A4412781A70019917236B441A7816236B441B7818000BF02FFA03002D +:407C4000180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C00401000006020000060200C0020300C0020200004001000040030000400400004037 +:407C800082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040230EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E000230B +:407CC000180002B07047C046FFFFFFFE1802041000B585B00190009102230393019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A715E +:407D0000019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7902218A431A71019B083318000BF0ECF90023039317E0019B1B68134A1A40A02367 +:407D40009B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4201D008230393039B002B06D0B4235A00019B0021180030F029F8039B180005B062 +:407D800000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B1800FFF743FC0300180003B000BD00B583B00190B0235A00019B0021180030F042 +:407DC00005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204A934205D1019B083318000BF099F90CE0019B1B681B4A1A40A0239B049A4222D18F +:407E0000019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A4389 +:407E40001A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC0460200C0020000C07F00B587B00390029101920093009B5B69DAB2039B5A71039BA2 +:407E80000833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800019B1B69029A19000CF054F803000593059B180007B000BD00B5A9B00390029191 +:407EC00001920093009BFF221340802252041343A94A934200D1A0E0009BFF221340802252041343A54A934200D194E0009BFF221340802252041343A14A934200D188E02A +:407F0000009BFF2213408022520413439D4A934200D17CE0009BFF221340802252041343994A934200D170E0009BFF221340802252041343954A934200D164E0009BFF22E3 +:407F40001340802252041343914A934259D0009BFF2213408022520413438E4A93424ED0009BFF2213408022520413438A4A934243D0009BFF221340802252041343874A18 +:407F8000934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041343804A934222D0009BFF2213408022520413437C4A934217D0009BFF2213400C +:407FC000802252041343794A93420CD0009BFF221340802252041343754A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE03023C1 +:408000000CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009B1800FFF72DFE03002493249B802B01D902239EE0249B802B01D9022399E0249AA0 +:40804000259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB03002693269B002B00D077E0039B019A02991800FFF781FB03002693269B002B6ED14D +:40808000039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019A029904AB18002FF0FFFD002327930EE004AA279BD3181B7836225340D9B204AA28 +:4080C000279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249AD31A1A0036212FF071FE0023279310E004AA279BD3181B786A225340D8B2039A02 +:40810000E021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A00019BD018019B249AD31A1A005C212FF04DFE039B009A11001800FFF7A5FA030040 +:408140002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04600E0C046019A04AB11001800FDF7F4FF269B180029B000BD010000010200000117 +:4081800003000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B58EB00390019200930A2338 +:4081C0006B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F236B443F210A401A70019BB44A13400A930A9A039B11001800FFF76AFD03000D9344 +:408200000D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A90A236B4418882300FEF72AFE03000D930D9B002B00D02FE1059B1800FEF736FF03 +:40824000030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089B002B02D102230D9317E1089B5B69DAB2039B5A71059A089B09990398FFF7F4FDA6 +:4082800003000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D0DBE0019BFF2213408022520413430693069B002B02D102230D93EEE0069BFF22D2 +:4082C00013408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A934200D194E0069BFF221340802252041343774A934200D188E0069BFF2213408022C3 +:4083000052041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E0069BFF2213408022520413436B4A934200D164E0069BFF2213408022520413435B +:40834000674A934259D0069BFF221340802252041343644A93424ED0069BFF221340802252041343604A934243D0069BFF2213408022520413435D4A934238D0069BFF22AC +:408380001340802252041343594A93422DD0069BFF221340802252041343564A934222D0069BFF221340802252041343524A934217D0069BFF2213408022520413434F4A26 +:4083C00093420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C239A +:4084000008E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0039B5B79802B02D902230D9335E0059B1A68A223DB059A4202D008230D932CE0D2 +:40844000039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F236B441B78002B18D02F236B441B78032B02D802230D9310E0039B5B792F226A440E +:4084800012789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0039B1800FFF790FC04E0039B1A7901210A431A710D9B18000EB010BDFFC0FFFFFC +:4084C0000200C0020000C07F010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D000001100000011100000112000001EA +:408500001300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF748FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A2367 +:408540006B44198803980023FFF734FE0300180005B000BD00B587B003900291019207230593039B1B7901221340DBB2002B3CD0039B1B7902221340DBB2002B06D0039B90 +:408580001B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD1039B0833019A029918000BF01FFD03000493049B1800FDF71BFE0300059317E05B +:4085C000039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300059305E00723059302E0C04600E0C046059B002B03D0039B1800FFF7E5FB059BD1 +:40860000180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B68169300230493169B1800FFF72AFB03001593039804AB05A94022FFF7E2F80300179304 +:40864000179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D10398039BE033159A1900FFF785F803001793179B002B1ED1039B049A05A9180076 +:40868000FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B002B0CD1019A05A9029B18002FF0FCFA06E0C04604E0C04602E0C04600E0C046C9 +:4086C000049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039B1B7901221340DBB2002B01D1072350E0039B1B7902221340DBB2002B08D0039B70 +:408700001B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0039B1B681C4A93421ED1039B083305AA110018000BF008FD03000993099B002BD1 +:4087400007D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800FDF746FD030014E0039B1B680B4A1A40A0239B049A420BD1039B08331800039B24 +:408780005B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F00B587B00390029101920093009B019A1A60019B002B05D0019A029B2121180028 +:4087C0002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800FFF778FF03000593059B002B15D1039B1800FFF7E9FA03000593059B002B05D100 +:40880000039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF7D3FA059B180007B000BD00B597B0039002910192039B1B7910221340DBB2002B7C +:4088400002D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B40221800FFF737FF03001593019A05A9029B1800FDF784FC031E01D010231593159B2C +:40888000002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB40211800FDF75AFC159B180017B000BD00B587B0039002910192039BFF2293432D4A934262 +:4088C00011D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A1340284A93420CD1039BFF22134006D0039BFF22134080225204134302E0002300E0A7 +:4089000000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A70039BFF229343144A934213D1039B124A93420FD0049B002B01D1022316E0049BA7 +:40894000180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D1049B002B01D1022300E00023180007B000BDC046000003100000021000FFFEFFFA +:40898000000004100000061010B58CB0079006910592049327226A440499069B1800FFF785FF03000A930A9B002B01D00A9B5AE0079B180016F0CFFF02000F9B9A4201D959 +:4089C000042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B441B78234C234907980E9A0392059A0292049A019200930123220018F0A9FC030077 +:408A00000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F08BFF134A134907980E9B0393059B0293049B019300230093012318F0ABF9030041 +:408A40000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B1800FDF7C6FB030018000CB010BD0000021090660008B94801100000031010B58CB003 +:408A8000079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D00A9B56E0079B180016F055FF02000F9B9A4201D904234CE0069BFF229343264A20 +:408AC000934219D1079B00220021180016F034FF27236B441B78214C214907980E9A0392059A0292049A019200930023220018F037FF03000B9321E0069BFF229343194A2B +:408B0000934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393059B0293049B019300230093002318F05BFE03000B9301E008230AE00B9B0A4A18 +:408B4000934201D1102304E00B9B1800FDF750FB030018000CB010BD0000021090660008B94801100000031000BFFFFF10B594B00790069105920493079B9B6D0733DB0878 +:408B800012930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B13937FE0069A80235B0213404BD0069BFF229343484A934211D0069BFF229343464A7F +:408BC00093420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF22134006D0069BFF22134080225204134302E0002300E000231193119B1800FEF797 +:408C0000E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0CA93F236B441B780293049B0193059B009323000CF0B2F903001393139B002BDA +:408C400016D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B009323000CF00BF903001393139B002B15D1129A16990CAB180005F032FF0300139397 +:408C8000139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0C0460CAB180005F0FFF909AB180005F0FBF9139B002B03D1129B5A00189B1A605E +:408CC000139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFF000004100000061090660008B948011010B58EB00590049103920293059B9B6D77 +:408D00000733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D0102337E00C9A029909AB180005F076FE03000D930D9B002B1CD1029A0C9BD118EC +:408D40000C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A049906AB019309AB009323000CF023FA03000D9302E0C04600E0C04609AB180005F088 +:408D800093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB00691059204931E236B44021C1A800E9B0D9A1A60069C8023DA0008A91E236B4468 +:408DC00018882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB059A4202D0082309933AE0089B1B682B4A934210D1089B1869049C059A06990E9B13 +:408E000002930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A934219D1069B204A1340204A934210D1089B1869049C059A06990E9B02930D9B3E +:408E400001930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C046099B002B0CD10E9B1B680C9AD0180E9B1B680D9AD31A1A0021212EF0A7FF08E079 +:408E80000D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC046000001700000FFEF0000036000FFFEFF0000061010B588B004910392029316236B44021CC9 +:408EC0001A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D0079B30E0069B1B68184A1340184A93420DD1069B1869029C039A04990B9B019349 +:408F00000A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4A13400F4A93420BD1069B18690A9C029A03990B9B00932300FFF7DAFE030002E0E4 +:408F4000082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFF0000061010B586B001900091019BFF229343124A934206D1019BFF22134080220A +:408F80005204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F040FB030023700F236B441A78009B0121180016F0C1FCC04606B010BD00000312F4 +:408FC00010B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A934204D0119B002B01D008237DE0089C80235A000AA926236B4418882300FDF7A4 +:409000003FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A420AD00A9B1A68E023DB051A40E023DB059A4201D0082358E00A9B1B682D4A134094 +:409040002D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E0089B264A93420ED1254A26490B98129B0293079B0193069B0093002317F064FA4A +:4090800003000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A18490B98129B0493079B0393069B0293119B0193109B0093002317F0BFF8030010 +:4090C0000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800FDF786F8030000E0022318000EB010BD00000312FFFFFFEF0000016000000212AC +:4091000090660008B948011010B58EB008910792069326236B44021C1A80149B00221A60089BFF2293433C4A934204D0119B002B01D008236CE0089C80239A000AA9262391 +:409140006B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB051A40E023DB059A4201D0082350E00A9B1B682A4A93424AD10A9B1B690B930B9B81 +:40918000180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B98139B0393129B0293079B0193149B0093012317F0B5FD03000D9322E0089BFF2292 +:4091C0009343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B0493079B0393149B0293119B0193109B0093012317F0DEF903000D9301E00823BB +:4092000006E00D9B1800FCF7F3FF030000E0022318000EB010BDC04600000312000001700000021290660008B948011000B583B001900091009AFE23DB051A408023DB04C7 +:409240009A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902210A431A71019B00225A71019BA3 +:4092800000229A71019B0833180009F03DFF0023180003B000BD000010B58AB003900800019219000A236B44021C1A8009236B440A1C1A70784B09930023089309236B4455 +:4092C0001B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FF03000693069B002B01D0069BD1E0019C079A04A90A236B4418882300FDF7C0FD55 +:4093000003000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059A01980023FEF7C4FB03000893089B002B01D10223ADE0039B0833089A11001800E0 +:4093400009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030097E0039B08331800049B1969059A09236B441B785BB209F02DFF03000993099BC6 +:40938000002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D03F4A934209D011E0039B0833042118000AF01CFB030009930BE0039B083300211D +:4093C00018000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F9099B1800FCF704FF030052E0039B1A7901210A431A71019AFF23DB051A4090231E +:40940000DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A934208D0049B1B68214A944663445A425341DBB206E0102304E0082302E01023AF +:4094400000E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B68114A93420FD0049B1B68104A934208D0049B1B680E4A944663445A425341DBB29E +:4094800004E0102302E0082300E01023039A5371002318000AB010BD809FFFFF0001600401016004010000400200004003000040FCFFFFBF00B585B0039001920A236B44FF +:4094C0000A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A236B44198803980023FFF7CEFE0300180013 +:4095000005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D1072305932AE0039B5B791A00019B9A4202D9042341 +:40954000059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B1800FCF745FE030005930DE0039B5B791A00009B1A60009B1A680299039B180050 +:4095800000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC0469066000800B587B0039002910192039B1B7904221340DBB2002B06D1039B1B798F +:4095C00002221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305930EE0039B0833019A0299180009F06AFE03000493049B1800FCF7FAFD03000593CB +:40960000059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B000BD10B58AB00590049103920293059B1A68FF23DB051A409023DB049A4210D0C6 +:40964000059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B795343089301E0039B08930C9A089B9A4202D20423099312E0059B08331800029C039A0499D2 +:409680000D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D0059B180000F082F8099B18000AB010BD00B58BB003900291019200930123099346 +:4096C000384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B7902221340DBB2002B09D0039B1B7904221340DBB2002B02D10723099344E0039B1B7C5BB282 +:40970000012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833009A04A918000AF08FF803000893089B002B06D0089B1800FCF75AFD030009938A +:4097400020E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF0A3FA02E0042309930CE004AB10211800FCF7F2FC039B180000F018F80300099354 +:40978000099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B18000BB000BD809FFFFF0001600400B583B00190019B1B68002B01D1002328E0019B61 +:4097C0001A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B00225A71019BFF +:4098000000229A71019B1A7902218A431A710023180003B000BD000000B585B0020000916B4606331A80009B002B01D108231BE002AA6B4606331B8811001800FDF7F8FA9F +:4098400003000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A043303CA03C30023180005B000BDC046FEE0FFFF00B585B0020000916B46063391 +:409880001A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393039B002B01D0039B05E0029B009A043303CB03C20023180005B000BD00B585B039 +:4098C000020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B002B01D0039B04E0029BDA68009B1A600023180005B000BD00B585B002000091CD +:409900006B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AA6B4606331B8811001800FDF781FA03000393039B002B01D0039B09E0009B064A35 +:40994000934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B00190019ACC235B00D3580B4A934203D00A4A934206D00BE0019B0833180008F041 +:4099800044FA05E0019B0833180012F007FAC046C04603B000BDC046011000060210000610B588B00390019200930A236B440A1C1A800399009C019A0A236B44188823001D +:4099C000FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB03000693039B1B68196817236B44069A0098FEF75FF80200039B5A60039B5B68002B01D1A5 +:409A00000223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B005549D150039ACE235B001021D154039B1B681B68514A93420DD0039B1B681B684F4ABA +:409A4000934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039B0833180017236B441978039B1B681A69069B08F088F903001800FCF7B9FB030073 +:409A80000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039B1B681B68344A93420DD0039B1B681B68324A934205D0039B1B681B68304A934295 +:409AC00001D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B681A69069B11F010FB03001800FCF780FB0300079302E0022332E0C046009AFE23CA +:409B0000DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C934202D90823079315E0009AFE23DB051A40C023DB049A4206D1009B1B0ADBB21C +:409B40003F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B180008B010BDC046FFC0FFFF010000060200000601100006010000400200004095 +:409B8000030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B00221A600A9C80235A004F4B76A98C46634419880CA82300FFF7F2FE03007593FF +:409BC000759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A4202D90423759369E07E9A7D9BD31874933E4B76AAD218CC235B00D3583C4A934235 +:409C000023D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305947E9B04937C9B03937B9B02937A9B0193089B00930B00012112F02EF80300180008 +:409C4000FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AAD2189E23FF33D35C1D00089C099A7D990CAB083318000595749B04937E9B0393D3 +:409C80007C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E002231EE0759B002B08D07F9B002B05D07F9A7E9B002118002EF088F80CAB18000C +:409CC000FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A60759B180077B030BD56FEFFFF58FEFFFF021000060110000686B0039002910192DE +:409D00000093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042305E0029A059BD218069B1A600023180006B0704770B5F6B00891079206936D4B96 +:409D400076AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46634419880CA82300FFF71AFE03007593759B002B01D0759BB9E05F4B76AAD218EE +:409D8000CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF7A6FF03007593759B002B00D084E04F4B76AAD2189E238A +:409DC000FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAA083210007E9A05927C9A0492039602937B9B01937A9B00932B000A00210011F0BE +:409E000081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A934240D1354B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF79A +:409E40005BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B254A76A989189E22FF328A5C1600069D07990CAA08321000059604937E9B0393C6 +:409E80007C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300759301E0022322E0759B002B0CD07F9B002B09D07F9A7E9B002118002DF086FF21 +:409EC00002E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF33D35C1A007D9B9A1A809B1A60759B180076B070BD4EFEFFFF58FEFFFF021000064B +:409F00000110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1019B9B68002B54D0019B9A68019BDB6819001000FCF710F9019B9B6818002DF0A8 +:409F400079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B10331800FDF713FF0300039332E0019B1B68FF2293431E4A934206D0019B1B68FF22C2 +:409F800093431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8019B9B6818002DF045FB019B1B69002B0FD0019B1A69019B5B6919001000FCF7B1 +:409FC000CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FE039B180005B000BD0100003100010030000200300003003082B001900091019B3A +:40A000005A68009B1A600023180002B07047000000B587B00390029101920093029BFF221340802252041343B64A934200D1A0E0029BFF221340802252041343B24A9342B8 +:40A0400000D194E0029BFF221340802252041343AE4A934200D188E0029BFF221340802252041343AA4A934200D17CE0029BFF221340802252041343A64A934200D170E09C +:40A08000029BFF221340802252041343A24A934200D164E0029BFF2213408022520413439E4A934259D0029BFF2213408022520413439B4A93424ED0029BFF22134080223C +:40A0C00052041343974A934243D0029BFF221340802252041343944A934238D0029BFF221340802252041343904A93422DD0029BFF2213408022520413438D4A934222D0C9 +:40A10000029BFF221340802252041343894A934217D0029BFF221340802252041343864A93420CD0029BFF221340802252041343824A934201D140231CE000231AE03023B0 +:40A1400018E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102316226A441370B8E0039AF423EB +:40A180005B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D917236B44009A1A70039BA933FF330399F42252008A5C991817236B441A78019B180049 +:40A1C0002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4235B00D25C17236B441B78D318D9B2039AF4235B00D154009B002B00D17CE0039AB4 +:40A20000EA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D154039AF4235B000021D154039B08331800039B6933FF33190016236B441A7824 +:40A24000029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D0039B08331800039BA933FF33190016236B441B781A00FDF77FFA03000493049B04 +:40A28000002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493049B002B01D0049B28E0039B08331800039BEA33FF3301221900FDF75DFA0300BF +:40A2C0000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F903000493049B002B01D0049B06E0009B002B00D042E700E0C0460023180007B0A7 +:40A3000000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D00000110000001110000011200000113000001B7 +:40A3400000B5E1B001900091009BFF2213408022520413435C935C9BFF221340802252041343A44A934200D1A0E05C9BFF221340802252041343A04A934200D194E05C9BA8 +:40A38000FF2213408022520413439C4A934200D188E05C9BFF221340802252041343984A934200D17CE05C9BFF221340802252041343944A934200D170E05C9BFF22134052 +:40A3C000802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D05C9BFF221340802252041343884A93424ED05C9BFF221340802252041343854AB8 +:40A40000934243D05C9BFF221340802252041343814A934238D05C9BFF2213408022520413437E4A93422DD05C9BFF2213408022520413437A4A934222D05C9BFF221340D1 +:40A44000802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BFF221340802252041343704A934201D140231CE000231AE0302318E0202316E0D0 +:40A480001C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010237022FF326A441370019B51229B5CFF2B01D198 +:40A4C000072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB1800FDF765FC019B51229B5C012B10D1019B9A687023FF336B441B78D3185E93019B97 +:40A50000DA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D93019B1968019B5A685C9B02A8FDF7C4FC03005F935F9B002B41D15D9A5E9902ABF0 +:40A540001800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB1800FEF756F803005F935F9B002B2BD1019B1968019B5A685C9B02A8FDF79DFC03002D +:40A580005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002B15D1019B103319007023FF336B441A7802AB1800FEF72CF803005F9308E0C046B8 +:40A5C00006E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002B04D15A9B002B01D05A9B5F935F9B180061B000BD0100000102000001030000017E +:40A60000040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093029BFF2288 +:40A6400013408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BFF221340802252041343794A934200D194E0069BFF221340802252041343754AEE +:40A68000934200D188E0069BFF221340802252041343714A934200D17CE0069BFF2213408022520413436D4A934200D170E0069BFF221340802252041343694A934200D1A0 +:40A6C00064E0069BFF221340802252041343654A934259D0069BFF221340802252041343614A93424ED0069BFF2213408022520413435E4A934243D0069BFF22134080225B +:40A70000520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF221340802252041343534A934222D0069BFF221340802252041343504A934217D096 +:40A74000069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E0FB +:40A7800040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102317226A44137049E0039B50229A5C1F236B441721694409788A1A1A701F23C2 +:40A7C0006B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049B31E01F236B441A78009B9A4203D91F236B44009A1A70039B1033039A5021525C68 +:40A8000099181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B441B78009AD31A0093039B50229A5C1F236B441B78D318D9B2039B50229954009BF9 +:40A84000002BB2D10023180009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001FD +:40A88000120000011300000100B589B0039002910192039B5A68019B9A4205D2039B00225A601223079361E0019B002B09D1039B5B68002B05D1039B1B68002B01D112233B +:40A8C00062E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68D21A019BD31A0593039B9A68059BD118019A029B18002DF0D7F90023079335E0FD +:40A90000039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039B08331800019B029A0699FFF771FB030007931BE0039B1B68FF229343164A934250 +:40A9400006D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF767FE0300079301E007230DE0079B002B09D0039B1800FFF7C5FA019A029B212117 +:40A9800018002DF023FA079B180009B000BDC0460100003100010030000200300003003010B588B00291019200930E236B44021C1A8000230693019B0733DB080593029B4F +:40A9C0001800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B190001202CF0A4FA03000693069B002B01D109231CE0059A0699009B1800FFF745FF0300E0 +:40AA00000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E0C046069B18002CF005FE079B180008B010BD000000B587B00390029101920093D2 +:40AA4000039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B002B01D0059BEFE0039B0833019A02991800FCF781FE03000593059B002B01D0B1 +:40AA8000059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B01D0059BD0E0009BFF221340802252041343674A934200D1A0E0009BFF221340E6 +:40AAC000802252041343634A934200D194E0009BFF2213408022520413435F4A934200D188E0009BFF2213408022520413435B4A934200D17CE0009BFF2213408022520422 +:40AB00001343574A934200D170E0009BFF221340802252041343534A934200D164E0009BFF2213408022520413434F4A934259D0009BFF2213408022520413434B4A934289 +:40AB40004ED0009BFF221340802252041343484A934243D0009BFF221340802252041343444A934238D0009BFF221340802252041343414A93422DD0009BFF2213408022AD +:40AB8000520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF221340802252041343364A93420CD0009BFF221340802252041343334A934201D1EF +:40ABC00040231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230399AB +:40AC0000F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B190001202CF083F90200039B1A60039B1B68002B01D1092307E0039B1B680B9A0A99CD +:40AC400018002DF031F80023180007B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000157 +:40AC800011000001120000011300000100B589B00390029101920093009BFF221340802252041343904A934200D1A0E0009BFF2213408022520413438C4A934200D194E077 +:40ACC000009BFF221340802252041343884A934200D188E0009BFF221340802252041343844A934200D17CE0009BFF221340802252041343804A934200D170E0009BFF2211 +:40AD000013408022520413437C4A934200D164E0009BFF221340802252041343784A934259D0009BFF221340802252041343754A93424ED0009BFF22134080225204134339 +:40AD4000714A934243D0009BFF2213408022520413436E4A934238D0009BFF2213408022520413436A4A93422DD0009BFF221340802252041343674A934222D0009BFF22CA +:40AD80001340802252041343634A934217D0009BFF221340802252041343604A93420CD0009BFF2213408022520413435C4A934201D140231CE000231AE0302318E020231D +:40ADC00016E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010231F226A4413701F236B441A780B9BD218CA +:40AE00000D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D109235EE0039B019A5A60039B1B68019A029918002CF039FF0B9A0D9BD2180B9B9A425D +:40AE40000BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E000230593059B002B01D0082339E0069B190001202CF05BF80200039B9A60039B9B68F8 +:40AE8000002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D3180D9A0C9918002CF0FFFE0B9B002B0CD0039B9A681F236B4419780D9BCB18D31868 +:40AEC0000B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A540023180009B000BDC046010000010200000103000001040000010500000108000001C0 +:40AF0000090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B5CAB00790069105920493059B802B01D9082351E0059B1B0ADAB21E +:40AF4000284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A002118002CF033FF059B02331E4A4AA98C46624411781B4A4AA884466244D154059BCB +:40AF80000333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A069918002CF080FE059B02335A00049C08A907984F9B03934E9B02934D9B0193E2 +:40AFC0004C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B18004AB010BDF8FEFFFF10B58EB00790069105920493079B049A1A60049BD44A93429B +:40B0000026D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FF0200079B9A60079B9B68002B01D1092328E2079B9B68059A069918002CF034FE03 +:40B04000079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049BFF2213408022520413430B930B9BFF221340802252041343B74A934200D1A0E0EC +:40B080000B9BFF221340802252041343B34A934200D194E00B9BFF221340802252041343AF4A934200D188E00B9BFF221340802252041343AB4A934200D17CE00B9BFF227C +:40B0C0001340802252041343A74A934200D170E00B9BFF221340802252041343A34A934200D164E00B9BFF2213408022520413439F4A934259D00B9BFF2213408022520428 +:40B1000013439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340802252041343954A934238D00B9BFF221340802252041343914A93422DD00B9BCF +:40B14000FF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A934217D00B9BFF221340802252041343874A93420CD00B9BFF22134080225204134324 +:40B18000834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102320 +:40B1C00000E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B083318000B9C059A0699139B0393129B0293119B0193109B00932300FFF71CFC03000D93C4 +:40B2000029E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF2213408022520413430993099BFF221340802252041343484A934200D1CAE0099B4E +:40B24000FF221340802252041343444A934200D1BEE0099BFF221340802252041343404A934200D1B2E0099BFF2213408022520413433C4A934200D1A6E0099BFF221340E2 +:40B28000802252041343384A934200D19AE0099BFF221340802252041343344A934200D18EE0099BFF221340802252041343304A934200D182E0099BFF22134080225204AE +:40B2C00013432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099BFF221340802252041343244A93425FD0099BFF221340802252041343204A934241 +:40B3000054D0099BFF2213408022520413431D4A934249D0099BFF221340802252041343194A93423ED0099BFF221340802252041343164A934233D0099BFF22134080222A +:40B3400052041343124A934228D1402343E0C0460100003100010030010000010200000103000001040000010500000108000001090000010A0000010B0000010C000001BD +:40B380000D00000110000001110000011200000113000001000200300003003000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE0DB +:40B3C0001C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0099B2B4A934201D002234BE0089A13001B029B1A0C93049BFF229343254A934225 +:40B4000013D1079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF734FC03000D9315E0079B08331800099C059A0699139B0393129B0293119B61 +:40B440000193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E0149A0C9B9A4203D8079B149A5A6008E0149B013303D1079B0C9A5A6001E00823D9 +:40B4800000E0002318000EB010BDC046090000010A0000010002003010B58CB009900792069322236B440A1C1A80099B1B68002B01D007233FE0079AFE23DB051A40C023CE +:40B4C0009B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC03000B930B9B002B01D00B9B24E00A9B1A68A423DB059A4201D008231CE00A9B19693F +:40B500000A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF763FD03000B930B9B002B03D0099B1800FEF7E8FC0B9B18000CB010BD10B5D8B044 +:40B5400005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059954AB180012F0D0FD03005793579B002B3FD154AB180011F021FC0300023B012BEE +:40B5800002D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B789A4202D01D4B579328E0569907AB0122180009F04FFA03005793579B002B1AD174 +:40B5C000039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B0193104B0093230009F084FA0300579304E0C04602E0C04600E0C04654AB180038 +:40B6000011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFF90660008B948011010B59EB0099008910792069300230B93209B234A1340234AB9 +:40B6400093421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907980BAB0193422300932300FFF767FF03001D93C0461D9B002B02D01BE0022320E0E2 +:40B680000B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293002301930023009313002200FFF79CFC03001D930B9A0CAB11001800FAF74CFDE1 +:40B6C0001D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392029312236B440A1C1A800A9AFC23DB051A4088239B059A4201D0082323E00A9C05 +:40B7000080235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E00699029C039A05980A9B00932300FFF77BFF03000793079B002B03D0059B18000B +:40B74000FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE0009A0199074B180009F0A6F803000393039B1800FAF73CFD0300180005B000BD88 +:40B78000106400089066000882B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B05A +:40B7C0007047C0464402041000B587B0019000911E4B1B68002B01D0032334E0009B1F2B07D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B421100180018 +:40B80000F7F73CF803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2358420023F6F79AFF03000493049B1800FFF7AAFF0300059304E0049B002B01D145 +:40B8400003230593059B180007B000BD1064000810B58AB00291019200930E236B44021C1A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF7BD +:40B88000D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B10331A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049BA6 +:40B8C0005B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFE099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A42EA +:40B9000064D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C4422236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793EE +:40B94000009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B9B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D1D9 +:40B98000092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FC23 +:40B9C000030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D10499019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEFE0 +:40BA00000000036090660008B948011000B585B00E236B4401221A801EE001AA0E236B441B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B1821F8 +:40BA40001800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202BDBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFB60 +:40BA8000C04605B000BDC04690660008186400081064000810B584B002AB1B4A1A601B4B1B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF39 +:40BAC000144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039B002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FB3E +:40BB00000300180004B010BD5053410010640008186400089066000811AC011000B587B00390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B2A +:40BB400000225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B5A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A74DA +:40BB8000009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB2059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CEC +:40BBC000DAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039988 +:40BC000018002CF051F8C04607B000BD6C02041000B583B001900749019B082218002CF01DF8031E01D00C2300E00023180003B000BDC0466C02041000B589B0039002916B +:40BC400001920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079B39 +:40BC8000DB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A43079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D831 +:40BCC000009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019B1A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7B1A +:40BD00001B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079B9B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A4398 +:40BD4000079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B1B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021C28 +:40BD80001A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F803000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE4A +:40BDC000099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B18000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019B37 +:40BE000018002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002309930023079307AA16236B441B881100180000F03DF903000993099B002B01D0A2 +:40BE4000099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089916236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039BC8 +:40BE80000193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B18000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE00623D5 +:40BEC0000AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C0467402041082B002006B4606331A806B4606331B88180002B0704700B58BB0029192 +:40BF000001920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B11001800F6F7ABFC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE0DE +:40BF4000029B019A09980021F6F750FC03000893089B1800FFF7A6FF03000793079B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059370 +:40BF800002AA059B11001800F6F778FC03000493049B072B01D1002300E00123180007B000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF0300E7 +:40BFC00008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A019908980023F6F7BCFB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AAAD +:40C00000089B11001800F6F739FC03000793079B1800FFF747FF03000993099B002B07D105AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F766FC5F +:40C04000099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0300059302AA059B11001800F6F706FC03000493049B072B01D1002315E0059B4A +:40C080001800F6F743FC031E01D00C230DE002AA059B11001800F6F7F1FB03000493049B072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B4630 +:40C0C00006331B881800FFF70DFF0300079303AA079B11001800F6F7D1FB03000693069B1800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A600023180019 +:40C1000009B000BD00B585B0019000910199009AAE2358420B000021F6F768FB03000393039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F70EFB40 +:40C1400003000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F05F +:40C1800015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D080225200934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E065 +:40C1C00020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318059A920002998A1812781000059A9200013202998A181278120201001143059AB1 +:40C200009200023202988218127812041143059A9200033202988218127812060A431A60059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2B0E +:40C2400000D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C321268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12024E +:40C280005140049A0C321268120EA548825C12045140049A0C321268FF200240A048825C12064A401A60049B1433049A04321168049A103212684A401A60049B1833049A53 +:40C2C00008321168049A143212684A401A60049B1C33049A0C321168049A183212684A401A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B18336B +:40C30000049A1168854A0598800082585140049A14321268120AFF2002408148825C5140049A14321268120CFF2002407C48825C12025140049A14321268120E7848825C3C +:40C3400012045140049A14321268FF2002407448825C12064A401A60049B1C33049A04321168049A183212684A401A60049B2033049A08321168049A1C3212684A401A6053 +:40C38000049B2433049A0C321168049A203212684A401A60049B2833049A10321168049A243212684A401A60049B2C33049A14321168049A283212684A401A60059B01335A +:40C3C0000593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A0598800082585140049A1C321268120AFF2002404A48825C5140049A1C321268BA +:40C40000120CFF2002404648825C12025140049A1C321268120E4248825C12045140049A1C321268FF2002403D48825C12064A401A60049B2433049A04321168049A20325E +:40C4400012684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A0C321168049A283212684A401A60049B3033049A10321168049A2C321268FF20C8 +:40C4800002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C321268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A4026 +:40C4C0001A60049B3433049A14321168049A303212684A401A60049B3833049A18321168049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B5B +:40C5000001330593049B20330493059B062B00D861E7C0460023180007B000BD9C2404109C02041000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9A85 +:40C540005A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA944663441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D31889 +:40C580004C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112688A +:40C5C0001A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9A1268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825CD6 +:40C6000010002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825851404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B63 +:40C6400004334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D31 +:40C680004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C04605AB1800FFF760FD4B9B180051B000BDD4FEFFFF9C0204109C1404109C18041008 +:40C6C0009C1C04109C20041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9BC6 +:40C700001A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A5340CF +:40C740000A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00ED +:40C78000029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C9278 +:40C7C0001A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9BE6 +:40C800001A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534055 +:40C8400006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B8900CF +:40C88000CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190EB4 +:40C8C000C24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40E8 +:40C90000049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900DE +:40C94000CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF21194087 +:40C98000914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0C8F +:40C9C000FF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B7C +:40CA00001B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB584B +:40CA40005A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504BBD +:40CA80008900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF21F9 +:40CAC00019403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B68CB +:40CB0000079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C92B7 +:40CB40001B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1DD4 +:40CB80000C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E02F +:40CBC0009C0304109C0704109C0B04109C0F04109C0204100C9B1A1D0C921B68049AFF210A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B40CF +:40CC00003449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B22A +:40CC40001A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099AB3 +:40CC8000120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A7019 +:40CCC000019B0F33089A120ED2B21A70002318000FB000BD9C02041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B04C4 +:40CD00001A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0673 +:40CD400013430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C929C +:40CD80001B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039BCD +:40CDC0001B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A4033 +:40CE00000A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900B9 +:40CE4000CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940AA +:40CE8000D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0C72 +:40CEC000FF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A40CD +:40CF0000059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B8900C2 +:40CF4000CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF21194076 +:40CF8000944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0A7B +:40CFC000FF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A68E6 +:40D000000B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1D14 +:40D040000C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB5853400693D7 +:40D080000C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB5829 +:40D0C000534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374BAE +:40D100008900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E41 +:40D140002749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B48 +:40D180001B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40C1 +:40D1C000049B1B0E0649CB5C1B065340099309E09C1404109C1804109C1C04109C2004109C1304100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B4091 +:40D200003849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9AD7 +:40D24000120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A7069 +:40D28000019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AC9 +:40D2C000D2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BD9C13041000B585B00390029101920093029B012B07D1009A0199039BA4 +:40D300001800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B58BB00390029101920093019B0F22134002D022235B4269E0029B002B62D131E06D +:40D340000C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B0D9AD318099A0D998A181178099A0098821812784A40D2B21A70099B0133099345 +:40D38000099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019B103B0193019B002BCAD12EE00023099310E0099B0D9AD318099A0C998A1811783C +:40D3C000099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990398FFF781FF0D99009B102218002AF05BFC0C9B10330C930D9B10330D93019B75 +:40D40000103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019B1B680693069B0F2B39D921235B423FE0069B002B1BD10A9B009A03980121FFF769 +:40D4400053FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B013B0793079B002BEEDC00E0C0460B9B5A1C0B921B7805930C9B5A1C0C92059AA2 +:40D4800051B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029B5A1E0292002BC3D1019B069A1A600023180009B000BD84B0039002910192029A19 +:40D4C000039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B68591C039A11601B781A00019B1A608CE0039B1B681B781A007F231340022B1ED0EC +:40D5000002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC60235B427EE0039B1B6801331B781A00019B1A60039B1B689A1C039B1A6065E0029ABB +:40D54000039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B6802331B781A43019B1A60039B1B68DA1C039B1A604AE0029A039B1B68D31A032B02DCBB +:40D5800060235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6803331B781A43019B1A60039B1B681A1D039B1A6029E0029A039B1B68D31A042B06 +:40D5C00002DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B1B6803331B781B021A43039B1B6804331B781A43019B1A60039B1B685A1D039BBC +:40D600001A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E00023180004B0704700B585B00390029101920093029A039B1B68D31A002B02DC7A +:40D6400060235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1C039B1A60019A0299039B1800FFF723FF0300180005B000BD00B587B0039002911F +:40D68000019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B08D0049B042B05D8039B1B681B785BB2002B02DA64235B4217E0019B00221A60C7 +:40D6C0000DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B5A1E0492002BECD10023180007B000BD00B587B003900291019204AA029903985F +:40D700000223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F07DF903000593039B1A68049BD218039B1A60059B180007B000BD00B587B0039099 +:40D7400002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019B1B68591E019A1160012B07D9039B1B68591C039A11601B78002B02D068235B4258 +:40D7800000E00023180007B000BD00B587B0039002910192009304AA029903983023FFF743FF03000593059B002B01D0059B65E0029A039B1B68D31A002B02DC60235B4244 +:40D7C0005CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D029903980623FFF721FF03000593059B002B01D0059B43E0039B1A68019B9A60039B1A68B2 +:40D80000019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F900232CE0039B1B681B781A00009B1A60039B1B685A1C039B1A60009B1A1D0299039BAA +:40D840001800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A68009B5B68D218039B1A60039B1A68029B9A4202D066235B4200E00023180007B002 +:40D8800000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC6C235B42D3E0039B1B685A1E039B1A60039B1B68019AD2B21A700123C7E0019BFC +:40D8C000FF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6881221A700223D4 +:40D90000A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6893 +:40D94000019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B3D4A934234D8039B1B681A00029BD31A032B02DC6C235B4269E0039B1B685A1E82 +:40D98000039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1EBC +:40D9C000039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B4234E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039BB6 +:40DA00001A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039B1B68019A120ED2B21A70039B1B685A1EB9 +:40DA4000039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039002916B4607331A70039B1B681A00029BD31A002B02DC6C235B420BE0039B1B68C2 +:40DA80005A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039002910192009300230593039B1A68029B9A4208D3039B1B681A00029BD31A1A00CB +:40DAC000009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B1B68059A019918002AF0DEF8059B180007B000BD00B587B00390029101920023D7 +:40DB00000493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029BD31A1A00049B9A4202D26C235B4259E0039B1A68049B5B42D218039B1A60039BD3 +:40DB40001968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B4232E0039BE2 +:40DB80001B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF771FE03000593059B002B01DA059B19E0059B049AD31804930299039B02221800B8 +:40DBC000FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E0C046059B180007B000BD00B585B001900091002303930099019B00221800FFF7E8 +:40DC000041FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800FFF71CFF03000293029B002B01DA029B04E0029B039AD3180393039B180005B0B6 +:40DC400000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF702FEEA +:40DC800003000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF7DDFE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BDD7 +:40DCC00000B587B0039002910192009300230593089B002B11D1029A039B11001800FFF784FF03000493049B002B01DA049B3CE0049B059AD318059303E0059A089BD318DA +:40DD00000593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF7AAFD03000493049B002B01DA049B15E0049BAC +:40DD4000059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD00B587B003900291019200230593039BB8 +:40DD80001B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039B1A60039B1B68019AD2B21A70019B002B1BDD039B1B681B785BB2002B15DA039BBA +:40DDC0001B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B6800221A70059B01330593059A0299039B1800FFF747FD03000493049B002B01DA66 +:40DE0000049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD000000B58BB0039002913D +:40DE4000019200930023079300230893089B09936FE00023069305E0099B01330993069B01330693099A0C9B9A4205D2009A099BD3181B78202BEFD0099A0C9B9A425DD0DA +:40DE80000C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B780A2B40D0009A099BD3181B780A2B3CD0069B002B02D02C235B42D0E0009A099BA5 +:40DEC000D3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3181B785BB2002B08DB009A099BD3181B781A005C4B9B5C7F2B02D12C235B42AEE07A +:40DF0000009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089B0133089302E0C04600E0C046099B01330993099A0C9B9A428BD300E0C046089B61 +:40DF4000002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07221A4013005B009B185B000733DB08CB180893089A079BD31A0893039B002B03D020 +:40DF8000029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893039B059351E0009B1B780D2B46D0009B1B780A2B42D0009B1B78202B3ED0009BD5 +:40DFC0001B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B781900204B5B5C19003F230B4013430693089B01330893089B042B20D1002308937B +:40E00000079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C0592069A120AD2B21A70079B022B07D9059B5A1C0592069AD2B21A7000E0C046099B0C +:40E04000013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A60002318000BB000BDC424041000B583B001900091009B9A00019B1100180010F097FDC04675 +:40E0800003B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6000E0C04602B0704700B583B00190019B002B1AD0019B9B68002B0CD0019B9A6867 +:40E0C000019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00225A60019B00229A6000E0C04603B000BD00B585B001900091009B1E4A934202D9DE +:40E1000010235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039B002B02D110235B4220E0019B9B68002B15D0019B9968019B5B689A00039B180032 +:40E1400029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B009A5A60019B039A9A600023180005B000BDC0461027000000B585B001900091E4 +:40E18000019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D120 +:40E1C00000E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FE03000293029B002B02D110235B421FE0019B9B68002B14D0019B9968039B9A009D +:40E20000029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F009FA019B039A5A60019B029A9A600023180005B000BD00B585B0019000910023AC +:40E240000393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF002344E0009B5B68013B02930AE0009B9A68029B9B00D3181B68002B06D1029B013BE8 +:40E280000293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029B9A420BD2029A019B11001800FFF720FF03000393039B002B0ED016E0019B9A68C2 +:40E2C000029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968029B9B001A0029F0DFFC039B180005B000BD00B587B0039002916B4607331A7083 +:40E30000002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF7E1FE03000493049B002B54D1039B1B686A4607323E +:40E34000127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A51 +:40E380005143029A9068059A92008218126868460730007842438A181A60059B01330593029B5A68059B9A42DAD814E0039B9A68059B9B00D318039A9168059A92008A18D6 +:40E3C00012686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D800E0C046049B180007B000BD00B589B0039002916B4607331A70039A029B9A4203 +:40E4000001D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF760FE03000793079B002B77D1039B5A68029BF2 +:40E4400011001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60029B1B686A46EB +:40E480000732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE0039B9A68069B9B00D3181B680493039B9A68069B9B00D318039A9168069A920041 +:40E4C0008A1812686946073109780120411A5143029A9068069A92008218126868460730007842438A181A60029B9A68069B9B00D318029A9168069A92008A181268694658 +:40E50000073109780120411A51436A4607321278049842438A181A60069B01330693039B5A68069B9A42BBD802E0C04600E0C046079B180009B000BD00B585B0019000917A +:40E54000019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00002129F033FC019B9B68009AD11752184A401A60009B002B02DA01235A4200E0C9 +:40E580000122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009B9A4201D800230EE0019B9A68009B5B099B00D3181A68009B1F210B40DA401300AD +:40E5C0001A0001231340180002B0704700B589B0039002916B4607331A7000230793029B5B090693029B1F22134005936B4607331B78002B07D06B4607331B78012B02D064 +:40E6000004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0069B5A1C039B11001800FFF761FD03000793079B002B25D1039B9A68069B9B00B8 +:40E64000D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68069B9B00D318039A9168069A92008A1811686A4607321078059A904002000A439A +:40E680001A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049313E0019B9A68059B9B00D3181A68049BDA4013000122134001D0039B11E0049B5F +:40E6C00001330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD80023180006B0704784B0019080231B0602930023039309E0019B029A134009D175 +:40E70000029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B585B00190019B5B68002B01D1002325E0019B5B68013B03930AE0019B9A68039BCC +:40E740009B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B9B00D3181B681800FFF7BEFF020020239B1A0293039B5A01029BD318180005B0C0 +:40E7800000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039002916B4607331A70039BFF221A606B4607331B782F2B0BD96B4607331B78392B65 +:40E7C00006D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B78462B06D86B4607331B78373B1A00039B1A606B4607331B78602B0BD96B4607338C +:40E800001B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D306235B4200E00023180004B0704710B58EB0039002910192029B012B02DD029B102B9E +:40E8400002DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B6BD10A9B6C4A934202D904235B42CFE00A9B9B005B090A9A92001F210A40511EB3 +:40E880008A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E0039B00211800FFF747FE03000D930D9B002B00D09CE00A9B0C9300230B9338E074 +:40E8C0000C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9B013B019AD3181A78029908AB1800FFF755FF03000D930D9B002B00D07AE0039B15 +:40E9000099680B9BDA089300CB180399896892008A18116808980B9A92001C242240904002000A431A600C9B013B0C930B9B01330B930C9B002BC3D165E0039B0021180010 +:40E94000FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3181B782D2B04D1039B012252421A6035E0019A0C9BD3181A78029908AB1800FFF78E +:40E980000DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002B2ED1039B1B68012B0CD1089B1A0005A9039B180000F05CFD03000D930D9B002B2E +:40E9C0000CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B01330C930C9A0A9B9A42B4D30CE0C0460AE0C04608E0C04606E0C04604E0C04602E0B1 +:40EA0000C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B0039002910192019B9B08019A03210A40511E8A41D2B29B180493039B5A68049B52 +:40EA40009A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB03000793079B002B33D1039B00211800FFF762FD03000793079B002B2BD1019B0A +:40EA800006930023059320E0039B9A68059B03218B43D318039A9168059A032082438A181168069A013A0298821812781400059AD20018200240944022000A431A60069BB7 +:40EAC000013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD00B589B0039002910192039B1800FFF748FE03000593019A059B9A4202D2082306 +:40EB00005B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079BD218039B9968069B03208343CB181968069BDB0018200340D9400B00DBB2137045 +:40EB4000079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BD00B589B00190009100230593009B5B090493009B1F2213400393019B1800FFF73D +:40EB8000CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40511E8A41D2B29A18019B11001800FFF79FFA03000793079B002B6ED100230793F5 +:40EBC000049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A91680698049A821A2E488446624492008A1812681A60069B013B0693069A049B75 +:40EC00009A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B0693069B002BEFD1039B002B37D0049B06932DE0019B9A68069B9B00D3181A68039B0C +:40EC40002021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A181168039A91400A001A60019B9A68069B9B00D318019A9168069A92008A181168059ACF +:40EC80000A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180009B000BDFFFFFF3F00B589B00190009100230693009B5B090593009B1F22134087 +:40ECC0000493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B00211800FFF729FC030075E0059B002B2AD00023079310E0019B9A68079B9B00D318F5 +:40ED0000019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21A079B9A42E7D809E0019B9A68079B9B00D31800221A60079B01330793019B5A688F +:40ED4000079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C4663449B00D3181A68049B2021CB1A9A4013000393019B9A68079B18498C4663449B0034 +:40ED8000D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A68079B0E498C4663449B00D318019A9168079A0A488446624492008A181168069AAD +:40EDC0000A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F84B001900091019B5B6803930DE0019B9A68039B39498C4663449B00D3181B68DB +:40EE0000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B2E498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E008 +:40EE4000C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A039B9A4232D901235B4233E0019B9A68039B1A498C4663449B00D3181A68009B33 +:40EE80009968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4202D24A +:40EEC00001235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F84B001900091019B5B6803930DE0019B9A68039B45498C4663449B00D3181B6829 +:40EF0000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B3A498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0FB +:40EF4000C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0029A039B9A4203D9009B1B685B424AE0019B1B68002B05DD009B1B68002B01DA8E +:40EF8000012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039B1A498C4663449B00D3181A68009B9968039B1648844663449B00CB181B689A427B +:40EFC00002D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4203D2019B1B685B4206E0039B013B0393039BA5 +:40F00000002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B1853400293009B002B02DA01235A4200E0012203AB1A6003AB01225A6003AB02AA9A6047 +:40F0400003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A019B9A4205D1029B0593039B0293059B0193039A029B9A420BD0029A039B1100E2 +:40F080001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0019B9A68099B47498C4663449B00D3181B68002B06D1099B013B0993099B002BFE +:40F0C000EED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B680893039B9B6807930023069300230A932AE0089B1B680493079B1A68069BD218EF +:40F10000079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A60079B1A68049B9A429B415B42DBB21A00069B9B1806930A9B01330A93089B0433AE +:40F140000893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C039B11001800FEF7C3FF03000B930B9B002B21D1039B9A680A9B9B00D318079384 +:40F18000079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B01330A93079B04330793069B002BD1D104E0C04602E0C04600E0C0460B9B18000DB0BA +:40F1C00000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60019B1A68029B1B689A4289 +:40F200009B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B01330793029B04330293019B04330193079A039B9A42D1D312E0019B1A68069B9A42BE +:40F240009B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069B002BE9D1C04608B07047000000B58BB0039002910192019A029B11001800FFF794 +:40F28000AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05AB11001800FEF7C7FF03000993099B002B35D105AB0193039A029B9A420AD0029A93 +:40F2C000039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019B5B6808930DE0019B9A68089B11498C4663449B00D3181B68002B06D1089B013B59 +:40F300000893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C04600E0C04605AB1800FEF7BEFE099B18000BB000BDFFFFFF3F00B587B003900291B3 +:40F340000192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF73FFD031E0EDB019A0299039B1800FFF77DFF03000593059B002B22D1039B049AB4 +:40F380001A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF752FE03000593059B002B07D1039B049A1A60C9 +:40F3C00004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DD019A029B11001800FFF7F1FC031E66 +:40F400000EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF720FF03000593059B002B15D1049B5A42039B1A6013E02E +:40F44000019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B589B0039002910192019BDA179B18E9 +:40F4800053400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF745FF0300180009B000BD00B589B00390029101923B +:40F4C000019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF770FF0300180009B000BD70B5064CC0 +:40F50000A54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131D96931368009300230193949B029300230393029A039B009801992CF09BFC03001A +:40F540000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959BEE +:40F580001A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368069300230793949B089300230993089A099B0698079967 +:40F5C0002CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B00 +:40F600009B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313680C9300230D93949B0E9300230F930E9A93 +:40F640000F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B00109300231193109BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093AA +:40F68000959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368129300231393949B149380 +:40F6C00000231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00169300231793169BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00F2 +:40F70000A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313681893002354 +:40F740001993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BA193A39B1B001C9300231D931C9BA093A19AA59BD318A193A19AA59B9A429B4140 +:40F780005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D9693D9 +:40F7C00013681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00A293A394A29BA193A39B1B00229300232393229BA093A19AA59BD318A193A19A70 +:40F80000A59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360E9 +:40F84000969A131D96931368249300232593949B269300232793269A279B249825992CF009FB03000C00A293A394A29BA193A39B1B00289300232993289BA093A19AA59BC1 +:40F88000D318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131DE6 +:40F8C0009593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9B2A982B992CF0C6FA03000C00A293A394A29BA193A39B1B002E9300232F932E9B1A +:40F90000A093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09B4E +:40F94000A593959A131D9593A19B1360969A131D96931368309300233193949B329300233393329A339B309831992CF083FA03000C00A293A394A29BA193A39B1B003493BD +:40F9800000233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B35 +:40F9C0009B18A093A09BA593959A131D9593A19B1360969A131D96931368369300233793949B389300233993389A399B369837992CF040FA03000C00A293A394A29BA1934F +:40FA0000A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B4264 +:40FA4000DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313683C9300233D93949B3E9300233F933E9A3F9B3C983D992CF0FDF903000C00A293A8 +:40FA8000A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B78 +:40FAC00093429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368429300234393949B449300234593449A459B429843992CF0BAF931 +:40FB000003000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A1938F +:40FB4000959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368489300234993949B4A9300234B934A9A4B9B489843 +:40FB800049992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68B2 +:40FBC000A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313684E9300234F93949B50930023519332 +:40FC0000509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B00529300235393529BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B1885 +:40FC4000A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368549300235593949BAA +:40FC8000569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39B1B00589300235993589BA093A19AA59BD318A193A19AA59B9A429B415B42DBB231 +:40FCC0001A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313685A9356 +:40FD000000235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A394A29BA193A39B1D0000231E002B00A093A19AA59BD318A193A19AA59B9A429B4138 +:40FD40005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360979B103B9793F5 +:40FD8000979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B609300236193609A619B5E985F992CF063F803000C009E939F949E9B9D939F9B1B00629383 +:40FDC00000236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9BBD +:40FE00009B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593949B669300236793669A679B649865992CF020F803000C009E939F949E9B9D93D8 +:40FE40009F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42BE +:40FE8000DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313686A9300236B93949B6C9300236D936C9A6D9B6A986B992BF0DDFF03000C009E9323 +:40FEC0009F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9BDE +:40FF000093429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368709300237193949B729300237393729A739B709871992BF09AFFA7 +:40FF400003000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93F5 +:40FF8000959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368769300237793949B789300237993789A799B7698D1 +:40FFC00077992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A68FD +:020000041001E9 +:400000009D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313687C9300237D93949B7E9300237F9351 +:400040007E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B00809300238193809B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B1842 +:400080009C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368829300238393949B2A +:4000C000849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B1B00869300238793869B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB28E +:400100001A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368889307 +:4001400000238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949E9B9D939F9B1B008C9300238D938C9B9C939D9AA59BD3189D939D9AA59B9A42B2 +:400180009B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360979B083B2B +:4001C0009793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B909300239193909A919B8E988F992BF043FE03000C009A939B949A9B99939B9B1B0092935A +:4002000000239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B9B189893959B1B68999AD3189993959B1B68999A9A429B415B42DBB21A00989B01 +:400240009B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49B0133A493959B1A68A59BD218959B1A60959B1A68A59B9A429B415B42DBB2A59342 +:40028000959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB003900291019208AB1800FDF7EDFE05AB1800FDF7E9FE039A029B9A420DD1029A08AB1100AD +:4002C0001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A05AB11001800FDF7A6FF03000D930D9B002B00D06EE005AB0193029B5B680C9378 +:400300000DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B002BEED100E0C046019B5B680B930DE0019B9A680B9B30498C4663449B00D318E3 +:400340001B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11001800FDF7C5FE03000D930D9B002B33D1039B00211800FEF7DFF803000D930D9BE6 +:40038000002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9B1548844663449B00D3181B680C982200FFF7A4F80B9B013B0B930B9B002BE2D169 +:4003C000029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB1800FDF761FE08AB1800FDF75DFE0D9B18000EB010BDC046FFFFFF3F00B589B0B6 +:4004000003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299039B1800FFF738FF0300180009B000BDF0B58BB00590049103920293039B002BE3 +:4004400003D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059B1E0000231F003300079300230693049B1C0000231D00069B23430693079B2B4344 +:400480000793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B002B04D001235B42002408930994029B002B06D0069A089B03994B43D21A029BC5 +:4004C0001A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF797FD031E02D10C235B42D1E210AB1800FDF7C8FD0DAB1800FDF7C4FD0AAB180058 +:40050000FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC031E1EDA039B002B0AD0039B00211800FEF702F803001793179B002B00D05DE258 +:40054000029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E2002396E2019A10AB11001800FDF764FE03001793179B002B00D044E2009A0DAB110034 +:400580001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60019B5B689A1C0AAB11001800FDF7A0FD03001793179B002B00D027E20AAB0021E2 +:4005C0001800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD03001793179B002B00D015E204AB03211800FDF77FFD03001793179B002B00D00CE20DABC9 +:400600001800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB11001800FEF79CFA03001793179B002B00D0F3E1159A0DAB11001800FEF790FA1D +:4006400003001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B1393149A139BD31A5A010DAB11001800FEF777FA03001793179B002B00D0D0E115E0BC +:400680000AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE03001793179B002B00D0BBE10DAA10AB11001800FEF714FC031EE1DA149A139BF0 +:4006C000D31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE110AB9A68169B9B00D3181A680DAB9968139B9B00CB181B689A420DD30AAB9A683F +:400700001699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139BCB1ACD498C4663449B00D41810AB9A68169B9B00D318186810AB9A68169BC64927 +:400740008C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE030023600AAB9A681699139BCB1ABB498C4663449B00D3181A6801321A600AAB9A681699F1 +:40078000139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE03001793179B002B00D040E107AB9B68139A002A09D00DAA9168139AA748844662442D +:4007C00092008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A600AAB9A681699139BCB1A9B498C4663449B00D3181A6807A907AB1800FFF7FEFD95 +:4008000003001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D008E104AB9B68169A012A09D910AA9168169A8A488446624492008A18126800E01C +:4008400000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A18126800E000221A6004AB9B68083310AA9168169A92008A1812681A6004AA07ABA3 +:4008800011001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B00D3181A680DA907AB1800FFF7A7FD03001793179B002B00D0BEE0169A139BD31A0A +:4008C000674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA10A910AB1800FEF775FD03001793179B002B00D0A4E010AB00211800FEF788FB85 +:40090000031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139BD31A4F4A944663445A0107AB11001800FEF716F903001793179B002B00D083E048 +:4009400007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139BCB1A3D498C4663449B00D3181A68013A1A60169B013B1693169A139B9A4200D942 +:40098000AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B1A68009B1B685A43039B1A60029B002B59D0159A10AB11001800FEF775F90300AF +:4009C0001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC03001793179B002B3ED1029B00211800FEF710FB031E38D1029B01221A6034E0C04632E06B +:400A0000C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E046 +:400A4000C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FFFFFFF07C04610AB1800FDF71DFB0DAB1800FDF719FB0AAB1800FDF715FB07AB15 +:400A80001800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B0039002910192019B00211800FEF7B2FA031E02DA0A235B4238E0019B029A03990020FFF712 +:400AC00005FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B002B1DD1039B00211800FEF791FA031EEDDB0AE0019A0399039B1800FEF76AFCD9 +:400B000003000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E0C04600E0C046059B180007B000BD86B001900091009B9B681B680393039B05932D +:400B4000039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A059B53430593049B5B080493049B072BF1D8059B5A42019B1A60C04606B070473B +:400B800000B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B02D104235B426EE00C9B98680C9B5B689B001A00002127F009F90C9B9B6808934C +:400BC000019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099B9B00D3181B680593089B1A68029B9B681B6805994B43D318009A53430493029B2C +:400C00009968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D0892059A1A60079B01339B00089AD31800221A60099B01330993099A079B9A42CCD330 +:400C4000039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031E08DB019B9968039B9A68079B1800FEF7ABFA07E0039B99680C9B9A68079B1800E2 +:400C8000FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0006AB1A6006AB1B681A0006AB5A6006AB09AA9A60039C049A06A90598029B009324 +:400CC0002300FFF75DFF030018000AB010BD000010B5B24CA54405900491039202930123AF4A6A441360029B00211800FEF790F9031E05DD029B9B681B680122134003D1DB +:400D000004235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029AA04B6B4411001800FFF701FFC623DB006B441800FDF7A6F99B4B6B441800FDF752 +:400D4000A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC0300CC22D2006A441360CC23DB006B441B688E4A934219D8CC23DB006B441B6894 +:400D8000EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0012304E0042302E0052300E00623804A6A4413607E4B6B441B68062B03D9062357 +:400DC0007B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B11001800FDF785F90300724A6A441360714B6B441B68002B01D000F0E1FBC923DB000B +:400E00006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002B01D000F0CEFBC923DB006B441B685A005D4B6B4411001800FDF75AF903005D4AD6 +:400E40006A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A6A441360544B6B441B68002B19D0049A06AB11001800FDF7DEF903004D4A6A4494 +:400E800013604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB0493CF23DB006B441B68002B06D0CF23DB006B441B689B68002B4AD1C623DB0003 +:400EC0006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B5B689A01C623DB006B4411001800FDF737FE03002F4A6A4413602E4B6B441B682A +:400F0000002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A441360244B6B441B68002B00D053E3CF23DB006B441B68002B16D0C621C900694466 +:400F4000CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B440C22180026F0A0FE029A049B11001800FDF7B6FF031E23DB029A049909AB0C33C0 +:400F80001800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF4C0600003C060000240600009F020000640600006C06000044060000A8F9FFFFB0 +:400FC000049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0FBE2E24B6B441C68029AC621C900694409AB0C331800DE4B6B4400932300FFF7A2 +:40100000BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11001800FDF708F90300CF4A6A441360CE4B6B441B68002B00D0D3E2CC4B6B441A68F4 +:40104000CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E2C44B6B441B68012B00D800E1C14B6B441B68013BC04A6A4412689A401300C922A1 +:40108000D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013319001000FDF724F80300AF4A6A441360AD4B6B441B68002B00D096E209A9C923D0 +:4010C000DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A6A441360A04B6B441B68002B00D07EE20023CC22D2006A44136030E009A9C92357 +:40110000DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B189B00C918914B6B441C68029A904B6B4400932300FFF724FD03008B4A6A441360C5 +:40114000894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B6B441B685A1ECC23DB006B441B689A42C4D8C923DB006B441B680133CC22D2004E +:401180006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013319001000FCF7A4FF03006F4A6A4413606D4B6B441B68002B00D01CE209A9CC23C9 +:4011C000DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B009B189B00CB181900FDF725F803005E4A6A4413605C4B6B441B68002B00D0FCE1DB +:4012000009A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C331900534B6B4400932300FFF7A9FC03004D4A6A4413604C4B6B441B68002B00D0CD +:40124000DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B689A40CC23DB006B441B689A428BD8039B5B68424A6A4413600023CB22D2006A4465 +:40128000136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23DB006B441B68002B11D1344B6B441B68002B00D1F5E0314B6B441B68013B2F4AFB +:4012C0006A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A441360039B9A68254B6B441B689B00D3181A68CB23DB006B441B68DA40130001221340AB +:40130000C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D1BBE0C823DB006B441B68002B2AD1CA23DB006B441B68012B24D10C4B6B441C6882 +:40134000029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B68002B00D19BE055E16C0600003C06000024060000640600004C0600005C06000038 +:40138000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B441A68C94B6B441B68D31AC822D2006A4412689A401300CD22D2006A44126813438F +:4013C000CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2006A4413601EE0BA4B6B441C68029A05990598B84B6B4400932300FFF7C1FB030072 +:40140000B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A68A74B6B441B689A42D7D309A9CD23DB006B441A6825 +:4014400013005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FB03009D4A6A4413609B4B6B441B68002B00D0C8E0CA23DB006B441B68013BCA22BF +:40148000D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046FDE6C0460023CC22D2006A4413604DE0874B6B441C68029A05990598854B6B44C9 +:4014C00000932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB006B441B685B00CD22D2006A4413607B4B6B441A68754B6B441B689A401300CD228A +:40150000D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B4400932300FFF72DFB03006B4A6A4413606A4B6B441B68002B00D069E0CC23DB006B448A +:401540001B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4B6B441A685B4B6B4402990598FFF78EFB0300594A6A441360574B6B441B68002BFE +:4015800047D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D0059B012252421A60059A0299059B1800FDF7C2FE0300484A6A4413602AE0C04686 +:4015C00028E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C046FB +:4016000008E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A4412689A401300CC22D2006A44136015E009A9CC23DB006B441A6813005B009B1800 +:401640009B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B441A681A4B6B441B689A40CC23DB006B441B689A42DCD809AB0C331800FCF714FDFD +:40168000144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF23DB006B441B689B68002B05D1C623DB006B441800FCF7F8FC074B6B441B68180030 +:4016C000CE23DB009D4410BD54060000640600003C060000240600006C0600004C0600004406000000B591B00390029101920AAB1800FCF7C7FC07AB1800FCF7C3FC04ABD5 +:401700001800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A04AB11001800FCF786FD03000F930F9B002B00D09FE007AB1800FCF7A8FF0300FE +:401740000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001800FDF7A1FA03000F930F9B002B00D083E00E9A04AB11001800FDF795FA0300BD +:401780000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF776FF020007AB11001800FDF77DFA03000F930F9B002B64D104AB1800FCF767FF67 +:4017C000020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF77FFB031E15DB04AA07A907AB1800FDF73DFD03000F930F9B002B46D107AB01214E +:401800001800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD03000F930F9B002B32D104AB01211800FDF73BFA03000F930F9B002B2AD107AB0021BC +:401840001800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD104AA039B11001800FCF7E5FC03000F9312E0C04610E0C0460EE0C0460CE0C046CA +:401880000AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FC07AB1800FCF700FC04AB1800FCF7FCFB0F9B180011B000BD80B51B4FBD44039009 +:4018C000029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B98470300FFAA18321360FFAB18331B68002B0AD1029A05A9039B1800FDF78FF80300D5 +:40190000FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B6818008323DB009D4480BDE8FBFFFF00B5A1B0039002910192019B01211800FDF768FBC9 +:40194000031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF791FB10AB1800FCF78DFB1CAB1800FCF789FB0DAB1800FCF785FB0AAB1800FCF7F9 +:4019800081FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE03001F931F9B002B00D086E11CAB01211800FDF72EFB031E03D00E235B421F93AEE1AA +:4019C000019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800FCF729FC03001F931F9B002B00D067E1019A0DAB11001800FCF71DFC03001F9311 +:401A00001F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E113AB01211800FCF787FD03001F931F9B002B00D04AE110AB00211800FCF77CFD38 +:401A400003001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D038E104AB01211800FCF766FD03001F931F9B002B00D02FE144E016AB0121180033 +:401A8000FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B681B680122134017D00DAA13A913AB1800FDF742FC03001F931F9B002B00D00FE1B4 +:401AC00019AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7E3F803001F931F9B002B00D0FCE010AB01211800FDF7D8F803001F931F9B002B73 +:401B000000D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F931F9B002B00D0E3E007AB9B681B680122134005D104AB9B681B680122134017D0B9 +:401B40000DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800FDF738FC03001F931F9B002B00D0C3E007AB01211800FDF797F803001F931F9BEE +:401B8000002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B681B6801221340B4D00AAA16AB11001800FDF796F9031E23DB0AAA16A916AB180073 +:401BC000FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F931F9B002B00D08FE004AA10A910AB1800FDF7F0FB03001F931F9B002B24D08EE0EE +:401C000016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800FDF7D8FB03001F931F9B002B00D06FE010AA04A904AB1800FDF7CCFB03001F9379 +:401C40001F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907AB1800FDF769FB03001F931F9B002B53D107AB00211800FDF7CBF9031EEDDB0AE0EC +:401C8000019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF71FF9031EECDA07AA039B11001800FCF7C2FA03001F9332E0C04630E0C0462EE04E +:401CC000C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0B4 +:401D0000C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB1800FCF7C1F916AB1800FCF7BDF913AB1800FCF7B9F910AB1800FCF7B5F91CAB68 +:401D40001800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB1800FCF7A1F91F9B180021B000BD00B583B00190019B44220021180026F026F8EC +:401D8000C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B780122180001F07AF903000593059B002B02D10D235B4225E0059B5B69102B02D057 +:401DC0000D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049B002B01D0049B0DE00398009A0199012301F0F0F903000493049B002B01D0049B50 +:401E000000E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0C5FEC04603B000BD00B59DB00590049103920293249B022B06D0249B102B03D83D +:401E4000249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E2209AFF231B029A4202D90D235B42ABE21E9BDAB25F236B440F218A1A1A700FAB65 +:401E800000221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A700FAB1A78249B023B5B08DBB2DB00DBB21343DAB20FAB1A700FAB1B785AB25F232C +:401EC0006B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F0E3FE6F236B4400221A70039B1A9312E06F236B441B780F22D31A1A9AD1B20FAA3C +:401F0000D1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B4412781B789A42E4D31A9B002B02D00D235B424AE20BAB10220021180025F047FF6F234B +:401F40006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BB5 +:401F8000E2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169B12E2209B002B00D1A6E0209B1A931F9B19930FAB10220021180025F007FF209BE8 +:401FC0001B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A1999180025F060FE1A9A159BD31A1A93199A159BD31819936F236B4400221A70C1 +:4020000017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA42 +:402040000BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B00D9102315930FAB10220021180025F0ADFE159A19990FAB180025F015FE6F2334 +:402080006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B74 +:4020C000E2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B72E11A9A159BD31A1A93199A159BD31819931A9B002BB1D15F236B441B78013B94 +:40210000DAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B441B781A00002125F051FE07AB0122DA73039B1A93219B1993229B1893EBE01A9B04 +:40214000102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FAB180025F0A1FD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C29 +:402180006F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0E0F8030016932F +:4021C000169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F803001693169B002B01D0169BEEE06F236B4400221A7019E06F236B441B78189AD3186F228E +:402200006A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A786F236B4401321A706F236B441A78149B9A42DFD3049B012B3DD10FAB10220021CC +:40224000180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F2312 +:402280006B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F06AF803001693169B002B01D0169B88E0189A149BD3181893199A0B +:4022C000149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F22D31A07AAD25C0132D1B207AAD15407AAD35C002B00D00EE06F236B441A786F232D +:402300006B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F236B4400221A700EE06F236B441B780F22D31A07AA0021D1546F236B441A786F2346 +:402340006B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB00931300102201F00AF803001693169B002B01D0169B28E06F236B4400221A7017E048 +:402380006F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D9249A0BA9239BD8 +:4023C000180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98139B0693129B0593119B0493109B03930F9B02930E9B0193089B00930B00002149 +:40240000FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B019370 +:402440000C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A910992089309990A9A0B981B9B06930DAB0593199B0493189B0393179B0293169B0193089B009362 +:402480000B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400221A7017E04F236B441B781A9AD3181A784F236B441B780DA9CB5C5340DBB21A00E5 +:4024C000129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3129B002B08D00A9A199B110018000CF05DFB0F235B4200E00023180015B000BDB9 +:4025000010B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF78AFF03002A +:4025400018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A186F +:402580001168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681021CA411A60009B9B00039AD318009A920003998A181168049A92000398F5 +:4025C000821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681421CA411A60CB +:40260000029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A181168029A92000398821812684A401A6073 +:40264000049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD318009A920003998A181168049A92000398821812688A181A60019B9B00039AD31897 +:40268000019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681921CA411A60C04604B0704700B585B0039003980C233C +:4026C0000093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300930A2306220221FFF72DFF03980F2300930B2307220321FFF725FF03980F23EB +:4027000000930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D230093082307220221FFF70DFF03980E230093092304220321FFF705FFC04605B03F +:4027400000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB1800FFF7A9FF139B01331393139B092BF5D902AB1A68019B1B68D21802AB1A6002ABB1 +:402780005A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002ABDA68019B0C331B68D21802ABDA6002AB1A69019B10331B68D21802AB1A6102ABA7 +:4027C0005A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABDA69019B1C331B68D21802ABDA6102AB1A6A019B20331B68D21802AB1A6202AB1F +:402800005A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202ABDA6A019B2C331B68D21802ABDA6202AB1A6B019B30331B68D21802AB1A6302AB96 +:402840005A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABDA6B019B3C331B68D21802ABDA63002313932FE0139B9B001293009A129BD3189D +:4028800002AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B21A70129B0233009AD31802AA139989008A58120CD2B21A70129B0333009AD31836 +:4028C00002AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB402118000CF064F9C04615B000BD00B583B00190019B002B0ED0019B402118000CF056F94D +:40290000019B4033402118000CF050F9019B802240219950C04603B000BD00B583B00190019B002B04D0019B842118000CF03EF9C04603B000BD000082B001900091019BC6 +:40294000002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A9A60019B594ADA60009B1B781A00009B01331B781B021A43009B02331B781B040F +:402980001A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B021A43009B06331B781B041A43009B07331B781B061A43019B5A61009B08331B78D9 +:4029C0001A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43019B9A61009B0C331B781A00009B0D331B781B021A43009B0E331B781B041A4317 +:402A0000009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43009B12331B781B041A43009B13331B781B061A43019B1A62009B14331B781A00D2 +:402A4000009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019B5A62009B18331B781A00009B19331B781B021A43009B1A331B781B041A43009B0C +:402A80001B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009B1E331B781B041A43009B1F331B781B061A43019BDA620023180002B07047C04615 +:402AC000657870616E642033322D62797465206B00B585B0039002910192039B002B02D0029B002B02D151235B424BE0039B019A1A63029B1B781A00029B01331B781B02CF +:402B00001A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B061A43E8 +:402B4000039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B061A43039BDA63039B4033402118000CF019F8039B8022402167 +:402B800099500023180005B000BD10B586B0039002910192009300230593039B002B02D151235B423BE1029B002B27D0019B002B02D0009B002B21D151235B422FE1009AE9 +:402BC000059BD3180199059A8A181178039A80201258039840248218121912784A40D2B21A70039B80229B585A1C039B80215A50059B01330593029B013B0293029B002B25 +:402C000000D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039B1B6B5A1C039B1A6300230493B7E0059A049BD318009AD3180599049A8A18019988 +:402C40008A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AD3180599049A8A18013201998A181178049A0132039840248218121912784A4044 +:402C8000D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049A0232039840248218121912784A40D2B21A70059A049BD3180333009AD318059912 +:402CC000049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70059A049BD3180433009AD3180599049A8A18043201998A181178049A04320398B4 +:402D000040248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18053201998A181178049A0532039840248218121912784A40D2B21A70059A049B8F +:402D4000D3180633009AD3180599049A8A18063201998A181178049A0632039840248218121912784A40D2B21A70059A049BD3180733009AD3180599049A8A18073201997A +:402D80008A181178049A0732039840248218121912784A40D2B21A70049B08330493049B3F2B00D843E7059B40330593029B403B0293029B3F2B00D92AE7029B002B2DD0A1 +:402DC000039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A049BD318009AD3180599049A8A1801998A18117803984024049A821812191278AE +:402E00004A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A500023180006B010BD10B588B00190019BD0335C681B681A000F2313400793079B002B01D133 +:402E4000002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB19000CF086F90300180008B010BD10B582B00190019B002B1ED0019B1800FFF735FD30 +:402E8000019B843318000CF057F9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019BE42200219954C04602B010BD10B582B031 +:402EC0000190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019B89 +:402F0000E42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D157235B4208E0019B009A11001800FFF703FD03000393039B180005B000BD70B580 +:402F400086B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002B02D0009B002B02D157235B426AE0039BE0229B58012B07D0039BE0229B58022B3D +:402F800002D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF741FF03000593059B002B01D0059B49E0039BD8335C681B68029A150000221600DF +:402FC0005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF7D4FD03000593059B002B01D0059B29E0039B8433029A009918000CF0B9F80300C4 +:403000000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059B002B01D0059B0DE00398009B019A0299FFF7ABFD03000593059B002B01D0059BBF +:4030400000E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0019B1B685B69180002B0704782B00190019B002B03D0019B1B68002B01D10023D4 +:4030800009E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B0009111006B460733021C1A706B4606330A1C1A70144B03931CE0039B5B689B691B7835 +:4030C0006A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A46063212789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B0F5 +:403100007047C046A828041000B583B00190019B44220021180024F059FEC04603B000BD00B583B00190019B002B20D0019B1B6C002B0AD0019B1B6C242118000BF036FD53 +:40314000019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B18009047019B442118000BF020FD00E0C04603B000BD00B583B001900091009B002BDE +:4031800002D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB6998470200019BDA63019BDB6B002B01D1084B08E0019B009A1A60019B0021180000F0BB +:4031C00015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A006B4603331A70039B002B07D0039B1B68002B03D0039BDB6B002B01D1304B5CE0C0 +:403200006B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B681B690222134008D1039B1B685B681A00019B9A4201D0224B3FE0039B019A5A6024 +:40324000039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D0039B1B685B78042B04D0039B1B685B78052B0DD1039B1B689B695C69039BD86B65 +:40328000039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B689B699C69039BD86B039B5B681A00029B1900A047030000E0014B180004B010BD84 +:4032C000009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0029B002B04D1019B002B01D0214B3EE0029B002B05D1019B002B02D1039B002285 +:403300009A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B1B68DB680593059A019B9A4201D9114B1DE0039B1B681B78482B0AD1039BDB6B33 +:40334000029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299180024F0A1FC039B059A9A630023180007B000BD009FFFFF809FFFFF70B58CB0ED +:40338000079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D1C84B8BE1109B00221A60079B1800FFF74CFE03000A93079B1B685B78012B1DD112 +:4033C000059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B08215956049B069AA04703000993099B002B01D0099B61E100235FE1079B1B6897 +:403400005B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B1B681B78492B0BD1109B059A1A60079BD86B049B069A0599FFF781FD03003DE1E7 +:403440000A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A99180028F09CFB0B1E01D0964B27E1079B1B685B78022B00D0DDE000230B93079B1B7AAD +:403480005BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7A5BB2002B0AD1079BDB68002B06D1079B5B6A0A9AD21A059B9A420BD8079B1B7AF5 +:4034C0005BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433059A0699180024F0DFFB079B5A6A059BD218079B5A620023E0E0079B5B6A002BD7 +:4035000040D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F0C3FB079B1B689B699C68079BD86B079B08215956079B28331E00079B14330A9D13 +:40354000049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9BD218109B1A60049A0A9BD3180493079B00225A62069A0B9BD3180693059A0B9B9B +:40358000D31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B000B930B9B002B0AD1079B1B7A5BB2002B05D1079BDB68002B01D00A9B0B93079B42 +:4035C00014331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B5A62059A0B9BD31A0593059B002B1FD0079B1B689B699C68079BD86B079B0821C4 +:403600005956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0099B4BE0109B1A68059BD218109B1A60002343E0079B1B685B78052B22D1079BBC +:403640001B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A0292069A0192009333002A00A04703000993099B002B01D0099B20E0109B059A1A60FF +:4036800000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A0599A04703000993099B002B01D0099B05E0109B059A1A60002300E0054B18000CB0D2 +:4036C00070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019BD31A049317236B4400221A7010E017236B441A78019BD318039AD318049AD2B2CC +:403700001A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B07047000088B00390029101921B236B4400221A70039B002B02D0019B002B01D1FC +:40374000344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B1A601A236B441B78029A9A429B415B42DBB25AB21B236B441B785BB213435AB211 +:403780001B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B78029AD31A0593002307931EE0039A079BD3181A78CD +:4037C0001A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B236B441B785BB213435AB21B236B441A70079B01330793079A029B9A42DCD31B233F +:403800006B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039002910192039B002B02D0019B002B01D1044B03E0019B029A1A600023180004B045 +:403840007047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D0039B002B01D15E4BB7E0039B00221A60059B1B685B78032B18D0059B1B685B78FA +:40388000042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B04D0059B1B685B78072B01D1002394E0059B1B681B78482B04D0059B1B681B78B0 +:4038C000492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE000237BE0059B1B685B78022B00D074E000230793059B1B7A5BB2012B1CD1059BDB68F2 +:40390000002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B1800FFF7A3FB03001900059B5B6A1A002800A04714E0059B1800FFF786FB0200F7 +:40394000059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE0059B1B689B699C68059BDD6B059B08269E57059B1800FFF768FB059B2833190021 +:40398000059B1433049A019200930B00020031002800A04703000793079B002B01D0079B1BE0059B1B7A5BB2002B0CD1059B1C69059B1800FFF749FB0100039A049B180081 +:4039C000A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD009FFFFF809DFFFF809FFFFF82B001900A006B4603331A70019B002B04D0019B5B +:403A00001B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4ADA60019B094A1A6108E0019B0022DA60019B074A1A6101E0064B00E0002318004E +:403A400002B07047009FFFFFD5360110253701101D380110809FFFFF00B583B0C8235B001900012023F062FA03000193019B002B03D0019B180007F0F8F9019B180003B029 +:403A800000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B583B04421012023F041FA03000193019B002B03D0019B1800FEF759F9019B180001 +:403AC00003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD00B585B00390019200930B236B440A1C1A700B236B4400215956009B019A03980A +:403B0000F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B4400215956029C039A0598099B0193089B00932300F9F7F2FB0300180006B000 +:403B400010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B00932300F9F755FC0300180008B010BD00B585B0039002910192019A0299039B79 +:403B80001800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B1800F8F7F4FA0300180005B000BD00B583B08C235B001900012023F0B8F90300019326 +:403BC000019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190019B1800F8F7C0FA019B180023F022FDC04603B000BD00B585B0039002910192D1 +:403C0000019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B029A03980221FEF7AEF80300180005B000BD000000B585B0039002910192019A93 +:403C400080235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E00023180005B000BD009FFFFF00B587B00390029101920093009B019A029903988A +:403C8000FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF00B583B08421012023F040F903000193019B002B01D1002304E0019B1800FEF725 +:403CC00014FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFCC04603B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE045 +:403D0000029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFF00B583B0E821012023F000F903000193019B002B01D1002304E0019B1800FFF7C9 +:403D400095F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFCC04603B000BD000088B003900291019217236B4487221A7016236B441B221A7066 +:403D80001E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B06D11F236B4416226A4412781A7001E0224B3FE0019B013B06931BE0069B039A3A +:403DC000D318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B029AD3181A781E236B44D2091A70069B013B0693069B002BE0DA029B1B785BB2F9 +:403E0000DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4415206844127800780240D2B24A40D2B21A700023180008B07047C046009FFFFF9F +:403E400010B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9A08A9059807AB00932300FFF787FA03000D930D9B002B13D10C9A08A9049B18006B +:403E8000FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E0C04600E0C04608AB102118000AF07EFE0D9B18000EB010BD86B0039002910192D8 +:403EC00000930023059310E0039A059BD3180299059A8A1811780198059A821812784A40D2B21A70059B01330593059A009B9A42EAD3C04606B0704786B003900291019262 +:403F00000093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A700EE0059A009B9A4205D1039A059BD31880221A7004E0039A059BD31800221A7048 +:403F4000059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039B002B06D0039B1B68002B02D0029B002B01D11C4B32E0019A029903980123FFF739 +:403F800029F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B441B78022B03DB042B03DD242B01D00D4B14E0C0462421012022F0B8FF0300059306 +:403FC000059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B000BDC046009FFFFF809EFFFF10B58EB005900491039200230D93059B002B0AD0CB +:40400000059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93059B1B685B690A93059B1B6C09930B9B1B6A002B3AD00B9B1B6A0A9AD21A039BD0 +:404040009A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B103319000A9B099A0998FFF725FF099C0A9A0999059807AB00932300FFF77EF959 +:4040800003000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A039AD31803930B9B00221A62039A0A9BD318013B0A99180027F0EAFC03000893AC +:4040C00001230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB00932300FFF74CF903000D930D9B002B24D1039A0A9BD31A0393049A0A9BD31804930C9BCB +:4041000001330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499180023F0C1FD0B9B1A6A039BD2180B9B1A6202E0C04600E0C0460D9B18000EB0EB +:4041400010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039B1B6C002B02D0029B002B01D1374B69E0039B1B6C1593039B1B685B691493159B49 +:4041800013930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF74FFE159B10331293159B1A6A149B9A420DD2159B1B6A129A149905A8FFF79CFEEF +:4041C000149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A91398FFF769FE139C149A1399039804AB00932300FFF7C2F803001193119B002B49 +:4042000006D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB102118000AF0C3FC159B00221A62159B1033102118000AF0BAFC139B102118000AF0B5 +:40424000B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B0021180023F0B4FDC04603B000BD000000B58FB0039002910192009305AB20220021180083 +:4042800023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B000199D150039B119A9A61039B114ADA61039B2033180080235A0005AB1900F7F766FF73 +:4042C00003000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9B002B01D00D9B00E0002318000FB000BD1027000010B586B0059004910392029318 +:40430000029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B583B00190019B002B0CD0019B20331800F7F71AFFA0235A00019B110018000AF084 +:4043400035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC0235B009A4202D938235B4212E1D0235A0063AB0021180023F029FD05AB1800F7F761 +:40438000E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120CD2B21A70D19B5A1CD192019A120AD2B21A70D19B5A1CD192019AD2B21A70D19BE6 +:4043C0000333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD31880221A70019B1933CC930023CF930BE0CF9BD9B26A4BD2AAD218CF9BD3180A1C72 +:404400001A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093D09B002B00D08AE00023CE9355E063ABD1934BAB10220021180023F0C7FCCC9B11 +:40444000CD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B785340D9B2504BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B0F2BE6DDD19B1033E0 +:40448000D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093D09B002B4DD1CD9B002BCBD1CE9B57AAD3184BA91022180023F0F6FB3A4BD2AA86 +:4044C00094466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD80235A0057A905AB1800F7F74FFE0300D093D09B002B26D157AB2033CB93039BD1 +:40450000D1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB99D19B1022180023F0BFFBD19B1033D193CE9B1033CE93CE9B2F2BE5DD06E0C046D2 +:4045400004E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF025FB57AB302118000AF020FB4FAB202118000AF01BFB4BAB102118000AF016FBFA +:40458000D09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFF4FDFFFFE4FDFFFF44FEFFFF00B593B00190009102AB119300230E9302AB302268 +:4045C0000021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2019AD154019AD35C002B06D1109B013B1093109B002BEDDC00E0C046019B2033ED +:404600001800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B103311930F9B10330F930F9B2F2BD0DD0023109311E002AA109BD3181A78109B0099CB180F +:404640001B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033180080235A0002AB1900F7F78FFD03000E930E9B002B01D00E9B07E0019802ABE6 +:4046800020331022190023F00FFB0023180013B000BD10B5E6B003900291019200236593039B9A69C0235B009A4207D8039B9B69C0225200D21A019B9A4202D238235B42B5 +:4046C0004DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058039B9A6904AB1900A047031E02D034235B4234E0039B9B69659AD3186593029BAC +:40470000002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD3186593659A04A904AB1800FFF70FFE03006493649B002B01D0649B10E004AA039BEF +:4047400011001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180066B010BD00B59BB0039002910192009300231793039B1693029B1993019A8023D1 +:40478000DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB30220021180023F012FB169B1A69169BDB699A4203DC169B5B69002B0ED01C9A009922 +:4047C000169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D01C9A009909AB1800FFF7B0FD03001793179B002B01D0179B5BE009AA169B1100EB +:404800001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AD25C0132D1B2169AD154169AD35C002B06D1189B013B1893189B002BEDDC00E0FF +:40484000C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E0019B102B00D910231593159A05A9199B180023F019FA199A159BD3181993019AD9 +:40488000159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002B01D0179B05E0169B1B695A1C169B1A61002318001BB000BD00B589B005900491BD +:4048C0000392059B0793039A04990798002300930023FFF747FF03000693069B180009B000BD000010B592B0079006910592049308AB180000F03DFE059C049A08A9079848 +:40490000169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB180000F07AFF031E02D00A4B119309E008AA069B11001800F9F77EFC0300119300E0C5 +:40494000C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7B3FF03009E +:40498000180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019B8833180000F0E5FD019BAC33180000F0E0FD019BD0331800F9F764FB019BDC2236 +:4049C00000219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF331800F9F74FFBC04603B000BD00B583B00190019B002B29D0019B180000F042FE41 +:404A0000019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BD0331800F9F740FB019BE033180000F011FE019B0533FF33180000F00BFE019B65 +:404A40002933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B4607331A70039B029A1100180000F09EFE03000593059B002B01D0059B35E06B460733D3 +:404A80001B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607331B78002B01D0124B1EE0039B88331A00029B88331900100000F047FE030005935C +:404AC000059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B01D0059B00E00023180007B000BDC04680B0FFFF10B588B00590049103920293AC +:404B0000059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00059B7C331C000B9B01930A9B00932300FFF712FF03000793079B002B01D0079BD9 +:404B400021E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B9B6D07210B40591E8B41DBB2D218049B1A60059BD0331800049B1A68039B1900C2 +:404B8000F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0733DB080693069A009B934200D913000593059A0199029B1800F9F72FFF030011 +:404BC0000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B11001800FAF760F803000793079B002B16D1039B4C331A00029B11001800FAF797 +:404C00006FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E0C046079B180009B000BD000010B5A2B007900691059204931BAB20931CAB1F93B1 +:404C40000FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E09DB079B4C331A00049B11001800FAF737F9031E01DB7F4BF6E012AB180000F02E +:404C800078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A60209B1A1D20921B680A2B02DD724B2193C9E01F9B00221A601F9B1A1D1F921B6846 +:404CC0000A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D09AE0079B28331C001E9A12A9079800230293279B0193269B0093230003F006FC38 +:404D000003002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193219B002B00D07BE01D9B00211800FAF76FF9031EC0D0259B249A0CA90798FFF79E +:404D400027FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B002B61D1049A1D99059B1800FBF794FA03002193219B002B58D1059A0CA90CAB9C +:404D80001800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193219B002B46D109AA1E991E9B1800FBF773FA03002193219B002B3DD1079B4C339C +:404DC0001A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF75BFA03002193219B002B29D1079B4C331A000599059B1800FBF74EFE0300219378 +:404E0000219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E05C +:404E4000C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB1800F9F721F9219B180022B010BDC04680B0FFFF80B3FFFF00B3FFFF10B58AB063 +:404E80000990089107920693069C079A08990998002304930F9B03930E9B02930D9B01930C9B00932300FFF7C1FE030018000AB010BD000010B5CCB009900891079206933C +:404EC0002FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002B01D12C4B53E00BAB1800F9F7CBF82FAB180006F064FF499A0EA9069B1800F9F7F5 +:404F0000EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B29D10EAA499BD118499A0BAB1800F9F7D7FD03004B934B9B002B1ED1499B5B0033 +:404F40000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B01934E9B00932300FFF760FE03004B9304E0C04602E0C04600E0C0462FAB1800AB +:404F800007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFFB1C0011010B588B00790069105920493049C059A06990798002303930CAB1B7802930B9B01930A9B4F +:404FC00000932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9311AB1D9308AB180000F0C3FA1AAB1800F9F748F817AB1800F9F744F814AB180041 +:40500000F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F7F7FF031E1ADB079B4C331A00229B11001800F9F755FF031E10DA239B0121180038 +:40504000F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F938CE0059B069A1AA90798FFF791FD03001F931F9B002B00D071E0079B4C331A002A +:40508000239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF803001F931F9B002B5DD1079B4C331A001E991E9B1800FBF7EFFC03001F931F9B37 +:4050C000002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A001D991D9B1800FBF7D7FC03001F931F9B002B3ED1079B28331C001E9A08A9079844 +:4051000000230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180000F07AFB031E02D0214B1F9326E0079B4C331A0008A908AB1800FBF7ADFC030004 +:405140001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB18001C +:4051800000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB1800F8F782FF1F9B180020B010BD80B0FFFF00B2FFFF10B588B00790069105920493BD +:4051C000049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B010BD00B5ABB0039002910192009305AB8B33049300232993029A05A904AB180005 +:40520000F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904AB1800F8F767FC03002893289B002B01DA289B2FE0289B299AD3182993299A05A919 +:4052400004AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A904AB30221800F8F7F9FB03002893289B002B01DA289B0DE0289B299AD3182993DC +:405280000499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B00790059204931B236B440A1C1A700CAB1800F8F7E8FE09AB1800F8F7E4FE0798079B29 +:4052C0007C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7E9FD03000F930F9B002B08D1139B129A09A90CA8FFF775FF03000F9300E0C046B2 +:405300000CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB009900792069323236B440A1C1A70069C079A23236B4419780998002304930F9B03930E9B91 +:4053400002930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B00590049103920293029C039A0499059800230193089B0093230000F005F80300180006B031 +:4053800010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800F8F770FE08AB1800F8F76CFE0EAA10990FA83023F8F738F903001193119B002B49 +:4053C00005D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E00BAA10990FAB1800F8F782F903001193119B002B0AD108AA10990FAB1800F8F7A7 +:4054000077F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00059A0699159B029308AB01930BAB00932300FFF7CDFD03001193119B002B06D11A +:405440000F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FE119B180012B010BD80B0FFFF1AB0FFFF00B4FFFF00B585B001900091019B009A4F +:405480001100180000F091F903000393039B002B1BD1019B7C331A00009B7C3319001000F8F7C9FE03000393039B002B0DD1019B88331A00009B88331900100000F045F90F +:4054C00003000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B00190019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B09E +:4055000000BD0000014B18007047C0464C2B041000B585B002006B4607331A70FFF7F2FF030003930BE0039B1B786A46073212789A4201D1039B07E0039B0C330393039B4E +:405540001B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019BDB6B002B01D1022300E00123180002B0704700B583B00190019B002B0ED0019BD2 +:405580001800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B000BD00B583B00190019B002B37D0019B00221A70019B04331800F8F763FD019BF4 +:4055C00010331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C331800F8F74FFD019B00229A65019B0022DA65019B00221A66019B00225A66019B6F +:4056000000229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04603B000BD00B583B00190019B002B0ED0019B1800FFF7B5FF019B7C331800F8F7A9 +:4056400021FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0019B1800F8F720FD019B0C331800F8F71BFD019B18331800F8F716FD00E0C04600 +:4056800003B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F703FD019B10331800F8F7FEFC019B1C331800F8F7F9FC019B28331800FFF7CAFF7F +:4056C000019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A1300DB009B189B00CB181800FFF7B3FF039B01330393019B9A6F039B9A42ECD8019BB5 +:405700005B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B00190019B002B0ED0019B1800FFF7ABFF019B7C331800F8F7B8FC019B88331800FFF71B +:4057400089FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD03000393039B002B19D1019B0C331A00009B0C3319001000F8F75EFD03000393039BC3 +:40578000002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0C046039B180005B000BD00B583B001900091009B1A78019B1100180003F00CFD0D +:4057C0000300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B13D1019B0C3301211800F8F7A5FE03000393039B002B0AD1019B183300211800E6 +:40580000F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019B183300211800F9F7F3FB03005A425341DBB2180003B000BD00B587B00390029181 +:405840000192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800F9F7D6FB031E0CD1099B002B01D1344B60E0089B00221A70009B01221A60002358 +:4058800058E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A60009B1A68099B9A4201D9254B42E0089B04221A700298089B0133049A1900F9F707 +:4058C0000FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F7FFF80300059324E0019B012B21D1049B5A1C009B1A60009B1A68099B9A4201D94C +:405900000F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089B0133049A1900F9F7DBF80300059300E0C046059B180007B000BDC04680B0FFFF89 +:4059400000B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002B0AD1009B012B05D1029B1800FFF72CFF03003FE0214B3DE0039B04331800F8F7D9 +:4059800000FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B28E00298019B0133049A1900F9F736F803000593059B002B18D1029B0C33180004 +:4059C000049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B183301211800F8F7A9FD0300059302E0C04600E0C046059B180007B000BDC04680B0FFFFC8 +:405A000080B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF73BF8030055E0019B1B68002B06DA019B00211800F9F7ECFA031E09D1019B1800C2 +:405A4000F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703000393039B002B2ED10BE0009B1A1D0199019B1800F9F760FC03000393039B002B84 +:405A800023D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D0199019B1800F9F7E2FB03000393039B002B0DD1009B1A1D019B11001800F9F710FABB +:405AC000031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB001900091009B183300211800F9F790FA031E01D10023AEE006AB1800F8F7C2FAF0 +:405B000003AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099B002B00D07DE006AA06A903AB1800FAF7B3FB03000993099B002B00D073E0019AD8 +:405B400003AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B009903AA1800FAF797FB03000993099B002B5CD1009B019A11001800FFF742FF1C +:405B800003000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AA1900FAF779FB03000993099B002B42D1009B0C33019A11001800FFF723FF0300B3 +:405BC0000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA1900FAF75AFB03000993099B002B27D1009B0C33019A11001800FFF704FF030009936A +:405C0000099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC0300099310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C046C6 +:405C400000E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BDD86A000800B591B0039002910192019B012B08D8029B1A68039B11001800FFF72FFF0300A3 +:405C80000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE00E9A13005B009B189B001A000D9B9B181800F8F7E7F90E9B01330E930E9A019B2C +:405CC0009A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B6818331A000D9B11001800F8F7A4FA03000F930F9B002B00D082E101230E9339E0FC +:405D00000E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD1180E9B9B00029AD3181B6818331A00FAF7B3FA03000F930F9B002B00D062E10E9ACC +:405D400013005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B00D051E1B24B1B685A1CB14B1A600E9B01330E930E9A019B9A42C1D3019A13001A +:405D80005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002B00D033E1019B013B0E930E9B002B0BD10AAA07AB11001800F8F73DFA03000F9327 +:405DC0000F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF75BFA03000F930F9B002B00D010E1039A07AB11001800FFF705FE03000F930F9B98 +:405E0000002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA90AAB1800FAF738FA03000F930F9B002B00D0F1E0039A0AAB11001800FFF7E2FDA4 +:405E400003000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF71BFA03000F930F9B002B00D0D8E0039A04AB11001800FFF7C5FD03000F930F9B6D +:405E8000002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00029AD3181B68190004AB1A00FAF7F4F903000F930F9B002B00D0B5E00E9B9B00C7 +:405EC000029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B1B685A1C524B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B68B5 +:405F00000C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B680C33039A11001800FFF76CFD03000F930F9B002B00D081E03D4B1B685A1C3C4B8B +:405F40001A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA1900FAF79AF903000F930F9B002B00D067E00E9B9B00029AD3181B680C33039A11005B +:405F80001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AD3181B681A00039B9B6819001000F8F7E3F803000F930F9B002B45D10E9B9B00CD +:405FC000029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D10E9B9B00029AD3181B6818331800F8F75BF80E9B002B2BD00E9B013B0E93D4E63A +:40600000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E080B2FFFFD86A0008C0460CE0C0460AE0C04608E000 +:40604000C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F723F804AB1800F8F71FF800230E930DE00E9A13005B009B189B001A000D9B9B1870 +:406080001800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180011B000BD00B58BB0039002916B4607331A7005AB1800F7F7E5FF039B191D029B05 +:4060C0000C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F797FF03005A1E9341DAB223236B441A70029B0C3318006B46073323226A441B785C +:4061000012781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099B18000BB000BD000000B593B0039002910192DD4B1B685A1CDB4B1A600EAB1800DE +:40614000F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69002B00D0A9E0019B18331900019B18331A000BAB1800FAF78FF803001193119BE2 +:40618000002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34B1B685A1CC14B1A6001990BAA08AB1800F9F7C2F803001193119B002B00D043E3B6 +:4061C0000CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1D08AB11001800F8F77BFE031EE9DA01990BAA05AB1800F9F7EDF803001193119B88 +:40620000002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D018E305AB1B68002B06DA05AB00211800F8F7EEFE031EE7D105AA08A90BAB18005A +:40624000FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB03001193119B002B00D0F9E2904B1B685A1C8F4B1A600BA90EAB03221800FAF7BFF80300F0 +:406280001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119B002B00D0DEE2039B1A1D0EAB11001800F8F716FE031EE9DAC8E00199019A0BAB68 +:4062C0001800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB03001193119B002B00D0C0E2704B1B685A1C6E4B1A600BA90EAB03221800FAF77EF8CC +:4063000003001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF03001193119B002B00D0A7E2039B1A1D0EAB11001800F8F7D5FD031EE9DA039B1033002166 +:406340001800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFF03001193119B002B00D087E2039A0BAB11001800FFF746FB03001193119B002B20 +:4063800000D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119B002B00D06EE2039A08AB11001800FFF729FB03001193119B002B00D064E23B4B27 +:4063C0001B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002B00D053E2039A0BAB11001800FFF70AFB03001193119B002B00D049E22B4B1B6871 +:406400005A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE0039B1A1D0EA90EAB1800F8F71FFF03001193119B002B00D02EE2039B1A1D0EAB8D +:4064400011001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF03001193119B002B00D017E2039A08AB11001800FFF7C6FA03001193119B002B24 +:4064800000D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002B00D0FFE111E0C046D46A0008D86A0008039B1A1D08A908AB1800F8F7D7FE0300FB +:4064C0001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0BAB1800F9F7D8FE03001193119B002B00D0DBE1039A0BAB11001800FFF782FA25 +:4065000003001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FB03001193119B002B00D0C3E10CE0039B1A1D0BA90BAB1800F8F798FE0300119348 +:40654000119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905AB1800F9F799FE03001193119B002B00D0A4E1039A05AB11001800FFF743FA030063 +:406580001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA03001193119B002B00D08CE10CE0039B1A1D05A905AB1800F8F759FE03001193119B5D +:4065C000002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800F9F75AFE03001193119B002B00D06DE1039A08AB11001800FFF704FA030011930A +:40660000119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE03001193119B002B00D054E10CE0039B1A1D08A908AB1800F8F77FFE03001193119BBD +:40664000002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A908AB1800F8F7B6FE03001193119B002B00D033E10CE0039B1A1D08A908AB1800B6 +:40668000F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F7B7FC031EE7D108AA0BA90BAB1800F8F791FE03001193119B002B00D012E10CE0B6 +:4066C000039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B06DA0BAB00211800F8F792FC031EE7D10EAA0BA90BAB1800F9F7CEFD03001193C7 +:40670000119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0534B1B685A1C524B1A6005AA0BA90BAB1800F8F74FFE03001193119B002B00D080 +:40674000D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BAB1B68002B06DA0BAB00211800F8F750FC031EE7D1019B0C331900019B18331A0009 +:4067800005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F903001193119B002B00D0A9E0304B1B685A1C2F4B1A6005AB01211800F8F7D0F943 +:4067C00003001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD03001193119B002B00D08FE0039B1A1D05AB11001800F8F775FB031EE9DA029B08AA110057 +:406800001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFD03001193119B002B00D071E0029B183305AA11001800F7F7FEFC0300119368E0AD +:40684000C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E0C04656E0C04654E0C04652E0C04650E0D86A0008C0464CE0C0464AE0C04648E032 +:40688000C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E008 +:4068C000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C8 +:40690000C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F7C3FB08AB1800F7F7BFFB05AB1800F7F7BBFB119B180013B000BDC04600B59BB089 +:406940000390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E07D1009A029B11001800FEF7EEFE030039E3009B1B6A002B0FD0009B183300211C +:406980001800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B09D0009B183301211800F8F731FB031E01D0C44B17E316AB1800F7F763FB13AB21 +:4069C0001800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07AB1800F7F74FFB04AB1800F7F74BFB019B18331900019B18331A0016AB1800F9F740 +:406A00004BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199B002B00D079E2A84B1B685A1CA64B1A60019B18331A0016A913AB1800F9F72CFC1E +:406A400003001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002B00D05EE2984B1B685A1C974B1A60009A16A916AB1800F9F70FFC03001993199BBA +:406A8000002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4B1B685A1C884B1A60009B0C331A0013A913AB1800F9F7F0FB03001993199B002BE7 +:406AC00000D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B685A1C794B1A60019A16A916AB1800F8F771FC03001993199B002B00D01BE20CE062 +:406B0000039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B06DA16AB00211800F8F772FA031EE7D1019B0C331A0013A913AB1800F8F74AFC60 +:406B400003001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993199B002B00D0ECE113AB1B68002B06DA13AB00211800F8F74BFA031EE7D116AB77 +:406B800000211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B1800FFF7C1FA03001993FFE1029B1800FEF70AFE03001993F8E1019B18331900EA +:406BC00016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF711FF03001993199B002B00D0ADE1364B1B685A1C344B1A6016AA16A910AB18009B +:406C0000F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993199B002B00D094E1274B1B685A1C264B1A6016AA10A90DAB1800F9F72DFB03004D +:406C40001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D07BE1194B1B685A1C174B1A60019A10A910AB1800F9F710FB03001993199B002B68 +:406C800000D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B685A1C094B1A6010A916AB02221800F9F7A5FB03001993199B002B00D053E112E002 +:406CC000D06A000880B0FFFFD86A0008039B1A1D16A916AB1800F8F7C9FA03001993199B002B00D041E1039B1A1D16AB11001800F8F7F6F8031EE9DA13AA13A90AAB180075 +:406D0000F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE03001993199B002B00D024E1B04B1B685A1CAF4B1A6016AA0AA90AAB1800F8F74BFB03000D +:406D40001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B002B00D009E10AAB1B68002B06DA0AAB00211800F8F74CF9031EE7D10DAA0AA9B9 +:406D80000AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB1800F8F7CAFA03001993199B002B00D0E8E00AAB1B68002B06DA0AAB00211800F8F78A +:406DC00027F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0039B1A1D10A910AB1800F8F7A5FA03001993199B002B00D0C7E010AB1B68002B15 +:406E000006DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993199B002B00D0B2E0039A10AB11001800FEF7E8FD03001993199B002B00D0A8E019 +:406E40006A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B002B00D097E0039A0DAB11001800FEF7C9FD03001993199B002B00D08DE05B4B33 +:406E80001B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE00CE0039B1A1D07A907AB1800F8F744FA03001993199B002B00D072E007AB1B68EF +:406EC000002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF903001993199B002B00D05DE0029B0C3307AA11001800F7F79FF903001993199B002BC9 +:406F000053D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C046A3 +:406F400034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04661 +:406F800014E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04616AB1800F7F77AF813AB1800F7F776F810AB180043 +:406FC000F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800F7F762F8199B18001BB000BDD86A000800B58FB0039002910192009300230C9333 +:40700000039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9908A8FAF749FC03000D930D9B002B00D0B5E00AE008AB01211800F7F735FE03008C +:407040000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C0C920A2B01DD5F4BB9E008AB01211800F7F7CEFF031ED0DD029B18331800029B56 +:40708000183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800FEF7B0FC03000D930D9B002B00D07CE04D4B1B685A1C4C4B1A6008AA08A905AB77 +:4070C0001800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC03000D930D9B002B64D13F4B1B685A1C3E4B1A60029B029905AA1800F9F7CDF8030032 +:407100000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B1B685A1C304B1A6008AA05A905AB1800F9F7B2F803000D930D9B002B3FD1039A05 +:4071400005AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B0C331800029B0C3305AA1900F9F794F803000D930D9B002B25D1029B0C33039A22 +:4071800011001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04650 +:4071C00004E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B18000FB000BD00B3FFFFD86A000800B589B00390029100936B4607331A70029B5A1C36 +:40720000039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD218009B11001800F7F7B4F90200069B9A401000039A079BD3180399079A8A18127825 +:4072400051B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079B01330793079A029B9A42D1D317236B4400221A700123079372E0039A079BD318A0 +:407280001A7816236B441721694409780A401A70039A079BD3180399079A8A18117817226A4412784A40D2B21A7017236B4416226A4412781A70039A079BD3181B781A00C5 +:4072C000012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A03998A1812781521694409784A43D2B252B213405AB217236B441B785BB213435AB2B9 +:4073000017236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812781520684400784243D2B252B24A4052B2D2B21A70079B013B039AD318079A013A65 +:4073400003998A18127851B215226A441278D20152B20A4352B2D2B21A70079B01330793079A029B9A4288D9C04609B000BD10B5A8B00390029101921A006B4603331A70D5 +:40738000002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF7D4F903002793279B002B00D0EAE00023259344E02A99259824F06AFB03001A00D4 +:4073C000012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B182393259B2A99180024F0D8FB0B1E17D19B236B441B785B08DBB21A001300DB009F +:407400009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E0239A2399039B1800FEF77EFE03002793279B002B00D0A9E0259B013325936B4618 +:4074400003331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0259A531C25939B236B4419780B00DB005B189B001900029B591804AB9200D1501B +:407480009B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259A04A9039B1800FEF7DBFB03002793279B002B6DD19B236B4401221A7037E09B23AB +:4074C0006B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918259A1300DB009B189B001A00029B9C189B236B441A781300DB009B189B001A0084 +:40750000029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D19B226A449B236B441B78DB1813709B226A4493236B4412781B789A42BFD3002360 +:4075400025930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259B01332593259B5A1C93236B441B789A42E8D3259A04A9039B1800FEF771FB030072 +:40758000279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B587B00390029101921A006B4603331A7008AB1B785B08DAB212236B443F210A400D +:4075C0001A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B9B18190013226A4412236B4412781B78D31A5A425341DBB21A00F6F77AFE03006C +:407600000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B9B180C33190013226A4412236B4412781B78D31A5A425341DBB21A00F6F759FE87 +:4076400003000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033312781B789A42B1D308AB1B78DB09DAB20299039B1800FEF715FD0300059302E0CC +:40768000C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A7007AB1800FDF765FF159B1093149A109BD3181B780B226A441478039A04990598E1 +:4076C00000932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF03001193119B002B40D1169B002B37D0179B169A04990598FFF77BFC03001193119BD1 +:40770000002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002B27D1149A109BD3181B780B226A441478039A07A9059800932300FFF730FF03001B +:407740001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109B002BD0D10AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04607AB18001C +:40778000FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC05AB1800F6F76EFC039B4C3300211800F6F7EFFE0300012B01D0254B45E0029B36 +:4077C00000211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F72AFD03000B930B9B002B20D1039B4C331900029A05AB1800F7F7ECFD03000B9371 +:407800000B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB0EAA127800990198FFF7E0FC04E0C04602E0C04600E0C04605AB1800F6F734FC9F +:4078400008AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693089B4C93529C0AAA079909983023FF336B44019351AB1B7800932300FFF786FF2A +:4078800003004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B0293529B01930AAB00932300FFF7F0FE03004D934D9B002B18D13023FF336B441A781B +:4078C0004C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF803004D9304E0C04602E0C04600E0C0464D9B18004EB010BD84B001900A006B46B3 +:4079000003331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B4603331B78002B06D00F236B441A780F236B4401321A700F236B441B78062B03D90F2342 +:407940006B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B441B78180004B0704710B590B00990089107920693069B0C331A00099B3433190090 +:407980001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0002233236B441A7032246C4433236B441A78099B11001800FFF79EFF0300237098 +:4079C00032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E32236B441B781900100024F051F803000B9333236B441B78002B0BD0099B5B6F7B +:407A0000002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF085FA03000D930D9B002B02D1504B0F9363E03B236B4400221A7013E03B236B4467 +:407A40001A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D33A236B4400221A703A236B4442 +:407A80001B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FC03000F930F9B002B26D133236B441B78002B07D0099B0D9A5A6731236B441A78F6 +:407AC000099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441B78019331236B441B7800932300FFF7B1FE03000F9300E0C046099B5A6F0D9B8F +:407B00009A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF791FD3B236B441A783B236B4401321A700E +:407B40003B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089B1800FDF777FD0F9B180010B010BDC04680B2FFFF00B585B001900091009B1833CC +:407B80001800009B18331900019B04331A00F9F7CDFE03000393039B002B24D100980099009B18331A00F8F777FB03000393039B002B1AD1009B019A11001800FDF722FF5C +:407BC00003000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFC0300039304E0C04602E0C04600E0C046039B180005B000BDD86A000800B58BB0BC +:407C0000039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009B019A079904A8F9F747FE03000993099B002B5CD109E004AB01211800F7F734F8BE +:407C400003000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C08920A2B01DD2B4B51E004AB01211800F7F7CEF9031ED2DD029B029904AA1800DA +:407C8000F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099B002B2AD11C4B1B685A1C1B4B1A60029B18331800029B183304AA1900F8F7ECFA27 +:407CC00003000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B0FD10D4B1B685A1C0B4B1A600AE0C04608E0C04606E0C04604E0C04602E0C046EB +:407D000000E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFFD86A000800B5A1B003900291019200931CAB1800F6F7AAF919AB1800F6F7A6F916AB1800F6F7A2F929 +:407D400013AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F907AB1800F6F78EF904AB1800F6F78AF90099009B18331A001CAB1800F7F7DCFA14 +:407D800003001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F931F9B002B00D04FE2039B1A1D1CAB11001800F7F795F8031EE9DA1CAA1CA919AB59 +:407DC0001800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE03001F931F9B002B00D032E29E4B1B685A1C9C4B1A600099009B18331A0016AB1800CF +:407E0000F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA03001F931F9B002B00D015E216AB1B68002B06DA16AB00211800F7F7E9F8031E9E +:407E4000E7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB11001800FDF7CFFD03001F931F9B002B00D0F6E17C4B1B685A1C7A4B1A6013AA19A998 +:407E800010AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800F7F74AFA03001F931F9B002B00D0DBE110AB1B68002B06DA10AB00211800F7F75F +:407EC000A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0C4E10CE0039B1A1D0DA90DAB1800F7F7BDF903001F931F9B002B00D0B8E1039BA9 +:407F00001A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFA03001F931F9B002B00D0A3E10CE0039B1A1D0AA90AAB1800F7F7FEF903001F93BA +:407F40001F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA0AA907AB1800F8F797F903001F931F9B002B00D082E1039A07AB11001800FDF78E +:407F800041FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB1800F8F77AF903001F931F9B002B00D069E1039A04AB11001800FDF724FD03001F93BD +:407FC0001F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF903001F931F9B002B00D050E1019B039A11001800FDF707FD03001F931F9B002B00D033 +:4080000046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B00D037E1019B039A11001800FDF7EAFC03001F931F9B002B00D02DE1094B1B68C4 +:408040005A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE113E0C046D86A0008019B18331800019B18331900039B04331A00F7F75DF90300D9 +:408080001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031EE2D1019B18331800019B18331900019B18331A00F8F7F0F803001F931F9B002BB8 +:4080C00000D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914B1B685A1C8F4B1A60019B18331800019B18331A00239B1900F8F7CEF803001F9313 +:408100001F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D0C6E0804B1B685A1C7E4B1A60029B13AA19A91800F8F7B0F803001F931F9B002B49 +:4081400000D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B685A1C704B1A60029B18331800039B103310AA1900F8F790F803001F931F9B002B45 +:4081800000D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B1B685A1C5F4B1A60029B18331800029B18331A0013AB1900F7F7BEF803001F93C8 +:4081C0001F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F803001F931F9B002B00D06DE0029B18331A00039B043319001000F6F771FE031E2D +:40820000E3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D1029B1833039A11001800FDF7EBFB03001F931F9B002B4BD13A4B1B685A1C394B83 +:408240001A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0BA +:40828000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0EE +:4082C000C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F7E3FE16AB1800F5F7DFFE13AB1800F5F7DBFE10AB1800F5F7D7FE0DAB1800F5F7EE +:40830000D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B000BDC046D86A000810B596B005900491039202930AAB1800FDF71BF907AB180041 +:40834000F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB11001800FDF7F1F903001593159B002B00D0ACE0049B01211800F6F7DDF80300DA +:408380001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D099E0049B0C331800F5F77EFE0CE0059B1A1D0AA90AAB1800F6F758FF03001593AF +:4083C000159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD0199B189A0AA90598FFF708FC03001593159B002B00D072E0039B1800F6F78FF926 +:408400000300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B441A780AAB1900F5F7E1FF03001593159B002B56D1049B183318004F236B441A784D +:408440000AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB01930AAB00932300FFF759FC03001593159B002B3AD104984F236B441A780AAB190050 +:40848000F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900F5F7A4FF03001593159B002B21D1149B5A1E1492002BA6D1049A059B11001800EC +:4084C000FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FDF7ACF807AB180009 +:40850000F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B1100180000F088FA03000993099B002B3AD1049A079B1100180000F049FA0300C7 +:408540000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A069907980D9B01930C9B00932300FFF7DCFE03000993099B002B1AD1079B1800FCF7E6 +:40858000E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7E3F90300099304E0C04602E0C04600E0C046099B18000AB010BDC04680B0FFFFCE +:4085C00010B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF793FF0300180008B010BD000000B58BB001900091009B00211800F6F75D +:4086000007FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000F6F75EFC031E0ADA009B0C331A00019B043319001000F6F753FC031E01DB814B3E +:40864000FCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB1800F7F719FE03000993099B002B00D0C4E0019A06AB11001800FDF7C3F90300C8 +:408680000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD03000993099B002B00D0ABE0019A03AB11001800FDF7A6F903000993099B002BE4 +:4086C00000D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F7EAFE03000993099B002B00D08EE00CE0019B1A1D03A903AB1800F6F71DFE03004C +:408700000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D123E0019B10331A0003A903AB1800F6F703FE03000993099B002B00D06AE00BE049 +:40874000019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB11001800F6F7BDFB031EEADA009A03A903AB1800F7F791FD03000993099B002B4DD155 +:40878000019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A60019B1C331A0003A903AB1800F6F7C4FD03000993099B002B34D10BE0019B1A1DE6 +:4087C00003A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F77FFB031EEADA03AA06AB11001800F6F777FB031E19D0134B099316E0C04614E094 +:40880000C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F5F73BFC03AB1800F5F737FC099B18000BB094 +:4088400000BDC04680B3FFFFD86A000810B58AB00790069105920493059B01211800F6F7D7FB031E08D1049A069B11001800FCF76CFF0300099339E001235A42059B1100DD +:408880001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D1069B0C3300211800F6F7B2FB031E1DD0069B0C331800079B191D069B0C331A0040 +:4088C000F6F788FD0300099310E0049C059A069907980C9B029300230193002300932300FFF714FE0300099300E0C046099B18000AB010BD10B592B0059004910392029303 +:4089000006AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF728FE029C039A10990598169B00932300FFF78CFF03001193119B002B21D1159CE5 +:40894000149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F990598FDF7EBFF03001193119B002B0CD10F9A059B11001800FDF7B0F8030011933F +:4089800004E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF00B583B001900091009B1800F5F7E9FE0200019BDB6D0733DB089A4201D9034BCC +:4089C00000E00023180003B000BDC04680B3FFFF00B583B001900091009B183301211800F6F716FB031E01D0114B1EE0019B1800FCF7ADFD0300022B07D1009A019B1100A1 +:408A00001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B11001800FFF7E6FD030000E0024B180003B000BD80B3FFFF80B0FFFF00B583B001900091C8 +:408A4000019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B01211800F5F796FD031E09D1009B1800F5F756FE03005A1E019BDB6D9A4201D0184B99 +:408A80002BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0019B1800FCF753FD0300012B14D1009B01211800F6F7ACFA031E09DB019B4C3389 +:408AC0001A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD80B3FFFF80B0FFFF00B589B003900291019200935C4B0793039BDB6D0733DB08C5 +:408B00000593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE03000793079B002B00D08EE0029B1800F5F7F7FD031EEDD0029B1800F5F7F1FD0300013B65 +:408B40000493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F803000793079B002B0CD07AE0039BD96D029B01221800F5F72AFD03000793079B002B85 +:408B800063D1029B002200211800F5F71FFD03000793079B002B5AD1029B002201211800F5F714FD03000793079B002B51D1039BDB6DFE2B0AD1029B002202211800F5F79A +:408BC00005FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B019A05990298F8F767FE03000793079B002B32D1059BDA00039BDB6DD21A029B7C +:408C000011001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134B1FE0029B01211800F6F7F2F9031ED6DB039B4C331A00029B11001800F6F750F92F +:408C4000031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180009B000BD80B0FFFF00B3FFFF10B588B005900491039202930B9B0A9A0F +:408C800003990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B00932300FFF78CFC0300079300E0C046079B180008B010BD10B586B0059004919F +:408CC00003920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF0300180006B010BD10B588B004910392029317236B44021C1A70049A17236B441B780F +:408D00001900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049B88331A00039C029B00932300FFF7C4FF0300180008B010BD10B5AEB003900291E3 +:408D4000039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B883319001000F6F7BDF8031E15D1039B94331A00029B943319001000F6F7B2F8031E0AD138 +:408D8000039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7E8FB05AB1800FCF7FCFB029A05AB11001800FCF7FAFC029B7C331A00029B283343 +:408DC0001C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B88331A0024AB11001800F6F779F8031E15D1029B94331A0024AB0C331100180039 +:408E0000F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B2D9300E0C04624AB1800FCF713FC05AB1800FCF727FC2D9B18002EB010BDC04689 +:408E400080B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A60C04604B07047000082B00190019B01221A60019B01225A60019B024A9A60C04604 +:408E800002B070474804000800B585B00390029101920093039B0433019A02991800FFF7D1FF009B002B06D0039B1033069A00991800FFF7C7FF039B1C33089A0799180005 +:408EC000FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF039B34330C9A0B991800FFF7ABFF039B40331800FFF7B8FF039B04331800F5F7D8 +:408F00000EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023180005B000BD000000B585B00190019B1033434A10211800F5F778FC030003936F +:408F4000039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B0433FF211800F5F7FCFD03000393039B002B4FD1019B181D019B043313221900F6F734 +:408F80009AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C33284A10211800F5F741FC03000393039B002B32D1019B4C330122FC211800F5F7B0 +:408FC00005FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002B1FD1019B403301211800F5F7A5FA03000393039B002B16D1019B34331800F5F7D1 +:4090000053F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046EF +:40904000002D0410082D041000B587B0019002AB1800F5F717F8019B10335D4A10211800F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA0300059302 +:40908000059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E0019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E021AB +:4090C0001800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF903000593059B002B58D1019B04331800F5F715FB0200019B9A65019B28330521A7 +:409100001800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA03000593059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F76F +:4091400045FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B24D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019B2B +:40918000C022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D049 +:4091C000019B1800FCF75EFA059B180007B000BD2C2D0410342D041000B58DB00B900A002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042BDA +:4092000025D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B9820230893284B079320230693274B059320230493264B039320230293254B01930023D3 +:40924000009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B0793302306931E4B0593302304931D4B0393302302931C4B019300230093002330221C +:40928000FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A660B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BDCD930110F0 +:4092C000702B0410F02B0410D02B0410B02B0410902B0410039C0110102C0410D02C0410A02C0410702C0410402C0410CDA60110B9A7011080B1FFFF84B003900291019292 +:40930000039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42DBB2D318DBB25AB2019B1A70C04604B0704784B0039002910192019B1B785BB2C5 +:40934000DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029BD21A039B1A60C04604B0704700B587B00390019200930B236B440A1C1A70019B18 +:409380009A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A0199039B1800F5F762FF03000593059B002B04D1039B012252421A6000E0C046059BB3 +:4093C000180007B000BDC046FFFFFF3F00B595B0019042236B4400221A700023139380235B0012930CAB01221A600CAB09225A600CAB03AA9A600CAB5B689A0003AB0021B7 +:4094000018001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B9A68139B9B00D3181B680F93019B9B682033196842226A440FAB1800FFF75CFF23 +:40944000019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A440FAB1800FFF765FF019B9B683033196842226A440FAB1800FFF75BFF019B9B6837 +:409480003433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB1800FFF747FF019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B008B +:4094C000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71BFF09E043237C +:409500006B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FAB1800FFF7E9FE019B9B682833196842226A440FAB1800FFF7DFFE019B9B68303375 +:40954000196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF7E8FE019B9B683833196842226A440FAB1800FFF7DEFE019B9B683C331968422225 +:409580006A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A70F4 +:4095C00043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7A8FE09E043236B440021595642226A440FAB1800FFF780FE019B9B6828331968A8 +:4096000042226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE019B9B683433196842226A440FAB1800FFF77FFE019B9B683833196842226A449E +:409640000FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F93432303 +:409680006B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73FFE09E043236B440021595642222A +:4096C0006A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019B9B682C33196842226A440FAB1800FFF703FE019B9B683033196842226A440FABD2 +:409700001800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B683433196842226A440FAB1800FFF7E5FD019B9B683C33196842226A440FAB1800FFF730 +:40974000F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B682433196842226A440FAB1800FFF7E4FD019B9A68139B9B00D3180F9A1A60139B01331393019B71 +:409780009A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7D7 +:4097C000B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196842226A440FAB1800FFF786FD019B9B683033196842226A440FAB1800FFF77CFDC9 +:40980000019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440FAB1800FFF768FD019B9B683833196842226A440FAB1800FFF75EFD019B9B6833 +:409840002433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB1800FFF767FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00AB +:40988000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73BFD09E043239A +:4098C0006B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FAB1800FFF709FD019B9B683433196842226A440FAB1800FFF7FFFC019B9B68383332 +:40990000196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF7EBFC019B9B683C33196842226A440FAB1800FFF7E1FC019B9B682833196842226A +:409940006A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F93CE +:4099800043236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7BEFC09E043236B4400215956A8 +:4099C00042226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC019B9B683833196842226A440FAB1800FFF782FC019B9B683C33196842226A448A +:409A00000FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B683833196842226A440FAB1800FFF764FC019B9B683433196842226A440FAB1800E7 +:409A4000FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B682433196842226A440FAB1800FFF763FC019B9A68139B9B00D3180F9A1A60139B01331393B7 +:409A8000019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB18002E +:409AC000FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33196842226A440FAB1800FFF705FC019B9B683C33196842226A440FAB1800FFF7B7 +:409B0000FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B682033196842226A440FAB1800FFF7E7FB019B9B682833196842226A440FAB1800FFF7FAFB019BC5 +:409B40009B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB1800FFF7E6FB019B9B683433196842226A440FAB1800FFF7DCFB019B9A68139B7B +:409B80009B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00231A1C53B20F93019B9A68139B9B00D3180F9A1A6000230F9306E0019B9A68139B93 +:409BC0009B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB2002B0ADA42236B4400215956129B0CAA0198FFF7BBFB00E0C046119B180015B0CB +:409C000000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6010AB0D225A6010AB03AA9A6010AB5B689A0003AB002118001EF0C8F8019B182154 +:409C40001800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B681393019B9B683033196852226A4413AB1800FFF741FB019B9B6854331968522250 +:409C80006A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019B9B685C33196852226A4413AB1800FFF740FB019B9A68179B9B00D318139A1A606A +:409CC000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522274 +:409D00006A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA019B9B683433196852226A4413AB1800FFF7E2FA019B9B685833196852226A44CA +:409D400013AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B683033196852226A4413AB1800FFF7E1FA019B9B685033196852226A4413AB1800F9 +:409D8000FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B786D +:409DC0007F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E053236B440021595652226A4413AB1800FFF783FA019B9B683833196852226A4413AB12 +:409E00001800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433196852226A4413AB1800FFF782FA019B9B685433196852226A4413AB1800FFF715 +:409E400078FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B57 +:409E80000CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B440021595652226A4413AB1800FFF724FA019B9B683C33196852226A4413AB18009D +:409EC000FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196852226A4413AB1800FFF706FA019B9B685433196852226A4413AB1800FFF7FCF9C2 +:409F0000019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A4413AB1800FFF705FA019B9B685C33196852226A4413AB1800FFF7FBF9019B9A68D8 +:409F4000179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B445C +:409F80001B785BB25B42190052226A4413AB1800FFF7CFF909E053236B440021595652226A4413AB1800FFF7A7F9019B9B685433196852226A4413AB1800FFF79DF9019B62 +:409FC0009B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB1800FFF789F9019B9B683433196852226A4413AB1800FFF77FF9019B9B683033EA +:40A00000196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF76BF9019B9B685833196852226A4413AB1800FFF761F9019B9B683C331968522258 +:40A040006A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B9B685C33196852226A4413AB1800FFF760F9019B9A68179B9B00D318139A1A6006 +:40A08000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B4219005222B0 +:40A0C0006A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF9019B9B685833196852226A4413AB1800FFF702F9019B9B685833196852226A4487 +:40A1000013AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B683833196852226A4413AB1800FFF7E4F8019B9B683433196852226A4413AB180024 +:40A14000FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196852226A4413AB1800FFF7C6F8019B9B684033196852226A4413AB1800FFF7D9F80D +:40A18000019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD9A1 +:40A1C00053236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B440021595652226A4413AB1800FFF785F8019B9B685C33196852226A4413AB1800FFF76B +:40A200007BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B684833196852226A4413AB1800FFF767F8019B9B683C33196852226A4413AB1800FFF75DF8019B4F +:40A240009B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB1800FFF749F8019B9B684433196852226A4413AB1800FFF75CF8019B9A68179BB3 +:40A280009B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B7838 +:40A2C0005BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4413AB1800FFF708F8019B9B684C33196852226A4413AB1800FEF7FEFF019B9B6891 +:40A300004033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB1800FEF7EAFF019B9B685C33196852226A4413AB1800FEF7E0FF019B9B6848331968CE +:40A3400052226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B440022D1 +:40A380001A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7C7FF09E053236B440021595652226A4413AB1800FEF79FFF019B9B68503313 +:40A3C000196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF78BFF019B9B684033196852226A4413AB1800FEF781FF019B9B684C33196852223A +:40A400006A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7059 +:40A4400053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF768FF09E053236B440021595652226A4413AB1800FEF740FF019B9B685433196815 +:40A4800052226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF019B9B684433196852226A4413AB1800FEF722FF019B9B685033196852226A445D +:40A4C00013AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A70532330 +:40A500006B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF09E053236B440021595652226A4413AB1800FEF7E1FE019B9B6858331968522211 +:40A540006A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B9B684833196852226A4413AB1800FEF7C3FE019B9B685433196852226A4413AB66 +:40A580001800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B44DE +:40A5C0001B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E053236B440021595652226A4413AB1800FEF782FE019B9B685C33196852226A440D +:40A6000013AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B684C33196852226A4413AB1800FEF764FE019B9B685833196852226A4413AB18004C +:40A64000FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB21A1C53B2002B01DA00231A1C53B21393019B9A68179B9B00D318139A1A600023BA +:40A68000139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42F0D352236B441B785BB2002B0ADA52236B4400215956169B10AA0198FEF756FEBE +:40A6C00000E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DAB01221A60019B5B68DA1F0DAB5A600DAB5B68092B01D92F4B59E00DAB03AA9A600F +:40A7000003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF0C3FA0DAB1F211800F4F7BEFA03001193119B002B35D10DAB5B685A1C0DAB5A603A +:40A74000019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A68109B9B00D31800221A60109B01331093019B5A68109B9A42F0D80DA90DAB132250 +:40A780001800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC0300119304E0C04602E0C04600E0C046119B180013B000BD80B0FFFF10B5A8B00190019B9E +:40A7C0005B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B680E2B01D9494B8DE023AB11AA9A6011AB3C22002118001DF0E9FA019B9B683833BB +:40A80000190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31800221A60269B01332693019B5A68269B9A42F0D823AA0199019B1800F4F77CFD69 +:40A8400003002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218001DF022FA20ABE0211800F4F71DFA03002793279B002B3DD120AA0199019B180095 +:40A88000F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B0133269323AB5A68269B9A42F2D820AA23A923AB1800F4F73FFD03002793279BC6 +:40A8C000002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA0199019B1800F4F727FD0300279308E0C04606E0C04604E0C04602E0C04600E079 +:40A90000C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039BE4331800C8235B001A0000211DF04EFA039B00221A60039B0833180009F04DFC27 +:40A9400007490398012300934023002200F02AF8039A9D239B000021D150C04605B000BD15AE011000B583B00190019B0833180009F03FFC019A9D239B000021D150019BA8 +:40A98000E02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C04603B000BD86B0039002910192009300230593039BE0229B580493049B132B03DD86 +:40A9C0003E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A600399049AE82013009B009B189B00CB181B18019A1A600399049AF02013009B009B1835 +:40AA00009B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60039BE0229B585A1C039BE0215A50059B180006B0704700B599B0039001920093A9 +:40AA40000B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019800230CF0EDFA03001593159B002B34D104AB16934023179314AB0B226A441278F6 +:40AA80001A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB03001593159B002B1BD1039B01221A60039B083314A9022218000BF0DAFC0300159354 +:40AAC000159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C04604AB4021180004F061F8159B180019B000BD00B587B0039002910192019B029A70 +:40AB000003981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BE0229B58002B02D140235B426DE00023249356E00199249AF42013009B009B18B4 +:40AB40009B00CB181B181B68012B01D101232393002302930199249AE42013009B009B189B00CB181B181C680199249AE82013009B009B189B00CB181B18186802AB03A9D4 +:40AB80008022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF74AFF03002593259B002B01D0259B2CE00199249AEC2013009B009B189B00CB18B2 +:40ABC0001B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B01332493019BE0229A58249B9A42A2DC239B002B04D13D235B42259300E0C04603ABD5 +:40AC00008021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B1593019B402B02D93C235B42C0E0159A9D239B00D358002B0FD1159A9D239B0078 +:40AC40000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C189280225200934203DD3C235B42199399E0159B1800FFF74EFF03001993199B002B59 +:40AC800000D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B1819681598179AF02413009B009B189B00C3181B191B68994201D200231693179BA0 +:40ACC00001331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF075F8159B083305AA110018000BF04CFC03001993199B002B4DD1159B08331800A3 +:40AD000009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199B002B3AD1159B083305A9402218000BF09FFB03001993199B002B30D105AA05A87F +:40AD4000002340210CF07CF903001993199B002B27D1002317930DE01599179AEC2013009B009B189B00CB181B1800221A60179B01331793159BE0229A58179B9A42EBDCFC +:40AD8000019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C04600E0C04605AB4021180003F0FFFE199B18001AB010BD00B595B001903F235B4295 +:40ADC000139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB40211800F1F7A2F9031E02DA3F235B420EE003AB4022002118001CF0E8FF03A9019BC4 +:40AE000040221800FFF775FE03001393139B180015B000BD00B597B003900291019200934023159305AB4022002118001CF0CEFF05AB40211800F1F765F9031E02DA3C23FC +:40AE40005B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A1A600023180017B000BD00B583B00190C8235A00019B002118001CF0A7FFC046F7 +:40AE800003B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A912AB009313001022F8F768FA03001F931F9B002B01D01F9B23E113AB1B781A064E +:40AEC00013AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B791A0613AB5B791B041A4313AB9B791B021A4313ABDB7913431A9300231B931C9BA8 +:40AF00001D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A4313AB9B7A1B021A4313ABDB7A13431C9300231D9313AB1B7B1A0613AB5B7B1B042E +:40AF40001A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304931A9B0499059A0800034322931B9B13432393119B88331A00229B239C1360546040 +:40AF8000119A84235B00D218209B219C13605460119BC8331A000023002413605460119A002300249364D4640423259350E0229A012313401A005B01D21A13061A00199289 +:40AFC000209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343229313003B432393219BDA07209B5B080293029B13430293219B5B080393199B20 +:40B00000089300230993089B1B000B9300230A93029C039D23000A990B9A0800434020932B0053402193119A259B0933DB00D218229B239C13605460119A259B1933DB00A0 +:40B04000D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B48331A00259BDB00D3181893119BC8331A00259BDB00D3181793179B5C681B682093D8 +:40B080002194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B1933DB00CB185C681B68209959400C91219961400D910C9B0D9C13605460249BDB00A6 +:40B0C000189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9B0F9C13605460249B01332493249A259B9A42CEDB259B5B002593259B082BADDDA2 +:40B100000023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B441B7801221800F7F7B9FF03000593059B002B02D114235B4230E0059B5B69102B78 +:40B1400002D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493049B002B01D0049B18E00398009A01990123F8F72FF803000493049B002B01D032 +:40B18000049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B000BD000070B5B2B029902891279200233193289B0F331A78172126AB9C466144BC +:40B1C0000F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F94172326AA944663441B78299A0933DB00D3185C681B682C932D940F233193E3E02E +:40B20000319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B78162226A98C4662441B091370319B0F2B61D02C9B2D9CDAB2152126AB9C4661440F239E +:40B2400013400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119A0B002B432C93130033432D932F9B1A072E9B1B0913432E932F9B1B092F931523E2 +:40B2800026AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A080043402E932F9B53402F93172326AA944663441B78299A1933DB00D3185C68C6 +:40B2C0001B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A624013002D932C9B2D9CDAB2152126AB9C46E0 +:40B3000061440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B134300932D9B1B0901930E9B0099019A080003432C930F9B13432D932F9B1A072E9B4E +:40B340001B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B681B041593002314932E9B1499159A080043402E932F9B53402F93162326AA9446E1 +:40B3800063441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93162326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A6240130012 +:40B3C0002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B181B78279A1370279B5A1C2F9B1B0C1893002319936B4660215B181B781370279BB3 +:40B400009A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9300231D936B4670215B181B781370279B191D2F9B1A022E9B1B0E0293029B1343E4 +:40B4400002932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B134304932F9B1B0C05936B461B7C0B70279B991D2F9B1A062E9B1B0A0693069B13438E +:40B4800006932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A002D9B1B0E1E9300231F936B4678215B181B781370279B09331A002D9B1B0C20932D +:40B4C000002321936B4680215B181B781370279B0A332D9A120A2292002223926A468821521812781A70279B0B332D9A12002492002225926A469021521812781A70279B4D +:40B500000C332D9A12022C99090E08910899114308912D9A120E09926A462021521812781A70279B0D332D9A12042C99090C0A910A9911430A912D9A120C0B926A4628219C +:40B54000521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D926A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC04686 +:40B58000702D0410F0B597B00B900A910992089300230D93089B002B15D0089B029300230393039B5E0F00231F0033003B430AD11D9B049300230593059B5C0F00231D00ED +:40B5C00023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933FF331022002118001CF0F0FB0B9AC4235B000A99D1500B9AA4235B00D2180023D4 +:40B600000024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B6933FF33089A099918001CF03EFB0B9A7823FF330121D15485E00EAB1022002118008D +:40B640001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB001B0ADAB20EAB9A73089BDBB2DB00DAB20EABDA73099B149337E0089B102B00D924 +:40B68000102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159A139B9A42DC +:40B6C000E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0893149A139BD3181493089B002BC4D10023159317E00B99B4235B00159A8A1851 +:40B70000D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159B0F2BE4D90B9B6933FF3319000B9B6933FF331A000B9B1800CC +:40B74000FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F70DFE03001293129B002B01D0129B4AE01D9B0693002307930B9AA8235B00D31883 +:40B780000699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B99BC235B00159A8A18D3181A781499159BCB181B785340D8B20B99BC235B00159A11 +:40B7C0008A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B7933FF331A000B9B1800FFF7DBFC1D9A139BD31A1D93149A139BD31814931D9B2B +:40B80000002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A93069A079B9A4209D9069A079BD31A1A00089B9A4202D214235B42EAE0099AA42323 +:40B840005B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1811685268A24215D801D1994212D8099AA4235B00D3185C681B68089A04920022C6 +:40B8800005920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00D3185C681B68089A1500002216005B1974410999A42252008A1813605460079BF2 +:40B8C0001293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9188A1812780132D0B20999B4225200C9188A18011C11700999B4225200CB189B1800 +:40B900001B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319000BAA0AAB009313001022F7F727FD03000F930F9B002B01D00F9B6AE000231393D7 +:40B9400046E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70119A139BD3180BA937 +:40B98000139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D10999BC235B00139A8A18D3181A781199139BCB181B785340D8B20999BC235B000C +:40B9C000139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF331900099B7933FF331A00099B1800FFF7DAFB089A109BD31A0893129A109BD3181293A8 +:40BA0000119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C911B921D9AA4235B00D3185C681B68590FE2000A432592DB0024931D9AA8235B00CB +:40BA4000D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D814235B4216E11D9B5933FF3319001B9B1C981A001CF019F9249A259B1A4304D1229AC7 +:40BA8000239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B4628229B181B781EAA1370239B1B0C0C9300230D936B4630229B181B781EAA5370F5 +:40BAC000239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311936B4640229B181B781EAAD370239B1A02229B1D0E1543239B1E0EEBB21EAA13714D +:40BB0000239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B1A06229B1B0A0293029B13430293239B1B0A03936B461B7A1EAA9371229B239C01 +:40BB4000DBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C1493002315936B4650229B181A781EAB5A72259B1B0A1693002317936B4658224B +:40BB80009B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B1B02249A120E0492049A1A430492259B1B0E05936B461A7C1EAB1A73259B1B04AA +:40BBC000249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249A120A0892089A1A430892259B1B0A09936B4620229B181A781EAB9A73249B259CDF +:40BC0000DAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB181B785340D8B21D99BC235B00279A8A18D318021C1A70279B01332793279B0F2B10 +:40BC4000E4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E01C9A279BD3181C99279A8A1811781D9CBC22520027982018821812784A40D2B25D +:40BC80001A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B005900491039202930A9C029A049905980C9B01930B9B00932300FFF765FC03000793079B03 +:40BCC000002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B0DE00F9A1099059B1800FFF795FE03000793079B002B01D0079B00E0002318003F +:40BD000008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9B04931A9B0393179B0293169B0193089B00930B000021FFF7AFFF03001193119B15 +:40BD4000002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB181B785340DBB21A00129B13431293139B01331393139A199B9A42EAD3129B002BA1 +:40BD800008D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B00190019B1800F7F7BBF9C8235A00019B1100180002F0FAFEC04603B000BD00B5CB +:40BDC00083B00190019B6422002118001BF0FEFFC04603B000BD00B597B0039002910192039B1B68180000F00FFC03001593029B002B04D0019B002B01D0022200E00122B7 +:40BE000053236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190000F032FB039B14A90122180000F02CFB53236B441B78022B05D1039B019A0299CE +:40BE4000180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA0398039B0C33159A190000F00EFB039A039B0C331900100000F029FB14AB1B78013330 +:40BE8000DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390029101920093039B02990122180000F08DF903000593059B002B01D0059B21E08A +:40BEC000039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C331C00029B180000F08FFB03001A00012120001BF06BFF009A0199039B1800FFF721 +:40BF00006AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B1A6D019BD218C0235B009A4202D905235B4233E0C0235A0005AB002118001BF0A8 +:40BF400045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039B1B6D6593029B002B0ED0019B002B0BD005AA659BD318019A029918001BF094FEF8 +:40BF8000659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B010BD00B58BB00390029101920093039B0793079B1B68180000F026FB030006930F +:40BFC000019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A4202D905235B4260E0079BDB6D002B18D0079B5B6D012B05D0079BDA6C079B9B6D9C +:40C000009A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E000230C93009B002B31D00C9B002B2ED00C9A0099079B1800FFF7CEFE27E0069A099B73 +:40C04000934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A079B0C331900100000F030FA079B0C331900049A089B18001BF016FE089A049B6C +:40C08000D3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079BDB6C5A1C079BDA64002318000BB000BD00B589B0059004910392059B0793039ABC +:40C0C00004990798002300930023FFF76AFF03000693069B180009B000BD00B583B00190019B002B09D0019B180000F03DF8019B6421180002F05AFD00E0C04603B000BD37 +:40C1000082B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D0082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C0468C +:40C14000102E0410402E0410702E0410A02E041000B583B00190019B0C22002118001BF035FEC04603B000BD00B583B00190019B002B27D0019B1B68002B23D0019B5B6854 +:40C18000002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B1B68DB685B001900100002F0FFFC019B9B6818001BF03EFA019B0C21180002F067 +:40C1C000F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B01D1164B27E0029B1B6A98470200039B5A60039B5B68002B01D1114B1BE0019B0C +:40C20000002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B5A6A039B5B6818009047054B03E0039B029A1A600023180005B000BD00AFFFFF0E +:40C2400080AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B681A69019B5B68180090470300180003B000BDC04600AFFFFF10B584B003900291DE +:40C280000192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF00B583B001900091019B002B5A +:40C2C00003D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300180003B000BDC04600AFFFFF00B585B00390029101920093039B002B01D1064BAC +:40C3000006E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1514B9EE00B +:40C34000039B1B68DB681A00019B9A422DD2039B1B681A69039B5B681800904703001793179B002B00D07DE0039B1B685C69039B5B68019A02991800A04703001793179B42 +:40C38000002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B1B689B68019304AB0293039B9B681593039B9A68039B1B68DB68D3181493039BB5 +:40C3C0001B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF0F5FC002316931EE0159A169BD3181599169A8A1811780298169A821812784A40E5 +:40C40000D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A70169B01331693169A019B9A42DCD3039B1B681A69039B5B68180090470300179310 +:40C44000179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A0470300179306E0C04604E0C04602E0C04600E0C04604AB4021180002F098FB179B1800C0 +:40C4800018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A047030071 +:40C4C000180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B03D0019B9B68002B01D12C4B52E0019B9A68019B1B68DB68D3181393019B1B6815 +:40C500009A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69019B5B681800904703001293129B002B01D0129B2EE0019B1B685C69019B5868A9 +:40C54000019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B685C69019B5868019B1B689B681A0002AB1900A04703001293129B002B01D0129B71 +:40C5800008E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFF10B584B00190019B002B07D0019B1B68002B03D0019B9B68002B01D1114B1DE0F1 +:40C5C000019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B0CE0019B1B685C69019B5868019B1B68DB681A00039B1900A0470300180004B033 +:40C6000010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B0704782B00190019B002B01D1002301E0019B1B78180002B0704700B583B00190E3 +:40C64000019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A0299039B180007F088FB0300180005B000BD00B583B001900091009A019B11001800DC +:40C6800007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F068FD0300180005B000BD00B583B06C2101201AF03BFC03000193019B002B03D081 +:40C6C000019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019B18001AF0A7FFC04603B000BD00B583B001900091009A019B1100180005F020FEB6 +:40C70000C04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B000BD00B583B00190019B0021180005F017FE0300180003B000BD00B585B00390B5 +:40C7400002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B0121180007F064FD0300180003B000BD00B585B0039002910192019A0299039B64 +:40C78000180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F3FE0300180003B000BD00B585B0039002910192019A0299039801230AF040FCBC +:40C7C0000300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B180007F0FAFC019B180003B000BD00B583B00190019B180007F0FBFC019B180034 +:40C800001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04603B000BD00B583B001900091009A019B1100180007F0A6FD0300180003B000BD08 +:40C8400000B583B00190019B0021180007F0F0FC0300180003B000BD00B585B0039002910192019A0299039800230AF0E9FB0300180005B000BD000000B585B00190164B1E +:40C880000393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B143363 +:40C8C0000393039B0293029B1B68002BE3D10023180005B000BDC0465438041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C67 +:40C90000009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002330 +:40C9400008E0059B14330593059B1B68002BE7D12E235B42180006B07047C0465438041000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B84 +:40C980005A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC0462C +:40C9C000A438041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C64 +:40CA00001A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B033 +:40CA40007047C046A438041086B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B8C +:40CA800014330593059B1B68002BE7D12E235B42180006B07047C046E038041000B583B00190019B0C22002118001BF08FF9C04603B000BD10B58EB0059004910392029310 +:40CAC000059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D1644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A42AC +:40CB000001D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B01330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D9343 +:40CB40000B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454B83E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9B05 +:40CB800001330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36490D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A3F +:40CBC0000D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E0E2 +:40CC000007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED0079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9B39 +:40CC4000002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A1A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFF4439041000ECFFFFED +:40CC800000EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B681900100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C2118000E +:40CCC00001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A6000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B6896 +:40CD00009A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B002006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D030 +:40CD400007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C04694390410C4390410F4390410243A041000B583B001900091019B002B06D0009B002B03D06D +:40CD8000019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B001904D +:40CDC000019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E099 +:40CE00000023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F0B2 +:40CE40008AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B01931B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E041 +:40CE80000F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB00790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A60DF +:40CEC0000F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD4C +:40CF00000200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9B0093012303F0FCFE030018000BB000BD80BFFFFF00B58BB0079006910592049361 +:40CF4000079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE00F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BDC2 +:40CF800000BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BD00B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F0AC +:40CFC000A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFBC04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A00C0 +:40D00000009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A60C04602B07047C0465C3904106439041082B002006B4607331A706B4607331B7879 +:40D04000022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B4450 +:40D080000A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B0ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F80300319360 +:40D0C00006AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1C1A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D1D9 +:40D10000049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009AB1 +:40D14000019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE03000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B54 +:40D180001800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70009B054A5A60019B88331A00009B9A60C04602B07047C0467039041082B0020076 +:40D1C0006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023180002B0704782B002006B4607331A706B4607331B78043B5A425341DBB21800DA +:40D2000002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9B00932300F8F798F803000793079B044A934201D1034B00E0079B180008B010BD3D +:40D2400000B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B236B44197807980D9B03930C9B02930B9B01930A9B00932300F8F74EF8030018001D +:40D2800008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F71CF9019B180003B000BD00B583B00190019B1800F8F71BF9019B18001AF0BAF910 +:40D2C000C04603B000BD82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B07047000000B587B0039002910192029A039B1B68D31A002B2C +:40D3000001DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019B1A1D019B1B6802990398F0F77DF903000593059B002B04D0059B0F4A94466344F7 +:40D3400012E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4201D0064B00E00023180007B000BDC046A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF5B +:40D3800000B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E03D0124B1EE0124B1CE0009B1B78002B08D0009B1A780B236B441B789A4201D06F +:40D3C0000B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B00E00023180005B000BDC04600C6FFFF00C3FFFF10B586B003900291019201988C +:40D40000019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002B08D1019A019B883319001000FBF7D0FA03000593039B029A1A60059B180006B03C +:40D4400010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9B002B04D00D9B454A9446634482E00B9B1A680C9BD2180A9B9A4201D0404B79E0B2 +:40D480000CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E00B9B19680C9A099800230693002305930023049300230393002302930023019399 +:40D4C00000230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD2180B9B1A600CAA0A990B980223F0F79CF803000D930D9B002B04D00D9B1F4A9446CC +:40D50000634437E00B9B1B680C9A099806920593002304930023039300230293002301930023009300230022002101F0D3FE03000D930D9B002B01D0104B1BE00B9B1A6808 +:40D540000C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0064B07E00B9B1A680A9B9A4201D0044B00E0002318000FB000BDC04600C5FFFFA8 +:40D580009AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA02990398F0F7F1F803000793079B002B04D0079B114A944663441CE0019A04AB64 +:40D5C00011001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D0009B1B68002B03D1009B5B68002B01D0024B00E00023180009B000BD80C5FFFF5C +:40D6000080C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F703F803000B930B9B002B04D00B9B4E4A9446634495E0039B1A68099BD31802938D +:40D6400006AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA0299039B1800F0F769F803000B930B9B002B04D00B9B3D4A9446634472E0039B1A684F +:40D68000099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9B002B01D1334B5CE00A9A019B11001800FFF75CFB03000B930B9B002B01D00B9B64 +:40D6C0004FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF7B1FE03000B932AE017236B441B78032B04D017236B441B78022B1ED1019B1868D8 +:40D700005968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B18685968FFF7D8FD02000299039B1800FFF760FE03000B9301E00E4B0B930B9B6B +:40D74000002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FA0B9B18000DB000BD00C3FFFF00C5FFFF9AC4FFFF80C3FFFF00B595B00B900A91B7 +:40D7800009920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF743FF03001393139B002B04D0139B9D4A9446634432E10F9A109BD318129311AAC6 +:40D7C00012990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B002B01D0904B19E110AA12990FA80223EFF71AFF03001393139B002B00D0F5E02B +:40D800000F99109A0B9800230693002305930023049300230393002302930023019300230093002301F056FD03001393139B002B00D0DBE00F9A109BD3180F9310AA12992A +:40D840000FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B9806920593002304930023039300230293002301930023009300230022002101F02CFD0300139313 +:40D88000139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE03001393139B002B00D0A1E00F9B109A0B9800210691002105910492039300230293002322 +:40D8C00001930023009300230022002101F002FD03001393139B002B00D087E00F9A109BD3180F9310AA12990FA80223EFF79CFE03001393139B002B00D077E00F99109B31 +:40D900000B9800220692002205920022049200220392002202920022019200930B000022002101F0D7FC03001393139B002B5DD10F9A109BD3180F9310AA12990FA8022380 +:40D94000EFF772FE03001393139B002B4ED10F9B109A0B9800210691002105910021049100210391029201930023009300230022002101F0AFFC03001393139B002B35D177 +:40D980000F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1800EFF7A5FE03001393139B002B1DD10CAA12990FAB1800EFF79AFE030013934A +:40D9C000139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B9A4203D0114B139300E0C0460CAB1800F0F75AFB139B002B0FD0139B0C4A134064 +:40DA000005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B000BDC04600C3FFFF80C2FFFF9AC2FFFF80FF000010B590B0059004910392049BFD +:40DA40000693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D00F9B824A94466344FCE0069A0A9BD3180D930BAA0D9906AB1800EFF7FDFD030025 +:40DA80000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D9906A80423EFF7C0FD03000F930F9B002B04D00F9B6D4A94466344D3E0059B7C333C +:40DAC00006990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634A94466344BEE0069A0A9BD318069300230E93069A0D9B9A4234D00AAA0D9906A8F4 +:40DB0000A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB03000F930F9B002B0AD1059A07AB11001800FFF725FC03000F930F9B002B11D086 +:40DB4000059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A944663447FE0069A0D9B9A4246D00AAA0D9906A8A123EFF758FD03000F930F9B002B98 +:40DB80002FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D00F9B324A944663445CE0069A0A9BD2180C9B9A4201D02F4B54E0059A0C9906AB68 +:40DBC0001800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B40E00F9B623308D0059B1800F7F795FD0F9B1E4A9446634434E00E9B002B1ED1ED +:40DC00000598059B88331900059B7C331A00059B28331C0000230193002300932300FAF7CFFC03000F930F9B002B08D0059B1800F7F773FD0F9B0D4A9446634412E0059A8C +:40DC4000059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B00E00023180010B010BDC04600C3FFFF80C2FFFF9AC2FFFF80B1FFFF00B58FB021 +:40DC8000039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A83023EFF7C1FC03000D930D9B002B04D00D9B584A94466344A9E0059A099BD31859 +:40DCC0000C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634495E00A9B002B04D00D9B4B4A944663448DE006AB13226A440C9905A8FFF742FC44 +:40DD000003000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC03000D930D9B002B04D00D9B394A944663446CE0099B002B01D1384B67E0132314 +:40DD40006B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800FFF704F803000D930D9B002B01D00D9B4DE013236B441B78012B14D1039B186850 +:40DD80005968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF7A3FF0D9B33E013236B441B78022B04D013236B441B78032B25D1039B1868596856 +:40DDC000FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B18685968FFF779FA059B099A1900FFF722FE03000D930D9B002B07D0039B1800FEF7E4 +:40DE000073FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF80C3FFFF10B58EB0079006910592049308AB1800FEF732FE059B002B06D0059BC4 +:40DE4000013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B0193049B00932300FEF724FE03000D930D9B002B2AD10120FEF750FF03000C933A +:40DE80000C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA08AB196808AB5B681A00FFF765FC03000D930D9B002B03D0079B1800FEF714FF2A +:40DEC00008AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D1834BF5E00D9B7C4A934201D00D9BEFE0059B002B06D0059B013B069AD3181B784C +:40DF0000002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B00932300FEF7C8FD03000D930D9B002B2AD10220FEF7F4FE03000C930C9A079B1100180099 +:40DF4000FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B681A00FFF767FD03000D930D9B002B03D0079B1800FEF7B8FE08AB1800FEF784FEA2 +:40DF80000D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4A934201D00D9B93E0059B002B06D0059B013B069AD3181B78002B02D0464B0D9352 +:40DFC0000EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D930D9B002B16D108AB196808AB5A68079B1800FFF743FE03000D930D9B002B03D03A +:40E00000079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E0059A0699079B1800FFF728FE03000D930D9B002B01D100234AE0079B1800FEF7E5 +:40E0400053FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE031E0DD1079B18685968FFF72CF9059A069B1900FFF780FB031E01D1002327E078 +:40E08000079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B11001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031EEE +:40E0C00001D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFF543A0410743A041080ECFFFF80C4FFFF00EDFFFF00C4FFFF943A0410B43A0410D43A04105C +:40E10000F03A041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB0293A5 +:40E1400000230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D930120FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD030032 +:40E180000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F802000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800E7 +:40E1C000FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002B06D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CABD4 +:40E20000029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D930D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9BBF +:40E2400052E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD0120FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD030006 +:40E280000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F802000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF7BF +:40E2C00013FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF791F903000F930F9B180010B010BDC04680EFFFFF0C3B04102C3B041080C3FFFFEE +:40E300004C3B0410683B04109EC4FFFF82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704700B58DB005900491039200230A9307ABF6 +:40E340001800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B002B2CD107AA0499059B1800EFF7C2FB03000B930B9B002B21DB0B9B0A9AD3188F +:40E380000A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED107AA0499059B1800EFF7A4FB03000B930B9B002B03DB0B9B0A9AD3180A9307AB76 +:40E3C0001800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B930B9B002B01DA0B9B15E00B9B0A9AD3180A930499059B30221800EFF72FFB0300BB +:40E400000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB0059004910392002328930398039B8833190028AA8523019306AB009313000022BE +:40E44000F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B681A00049BD31A1A00289B9A4202D26C235B420EE0059B1A68289B5B42D218059B85 +:40E480001A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291019200230793019B1B7804AA05A91800FEF7A0FA03000693069B002B01D0069B42 +:40E4C00011E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079AD3180793079B180009B000BD00B587B003900291019200230593019B1800FEF754 +:40E500005DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000493049B002B01DA049B25E0049B059AD31805931FE0019B1800FEF73FFC0300C3 +:40E54000022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049B002B01DA049B07E0049B059AD318059301E0034B00E0059B180007B000BDC0465E +:40E5800080C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A049908AB1800FFF7A1FF03000993099B002B01DA099BA6E0099B0A9AD3180A9334 +:40E5C000059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C235B4290E0089B013B0893089B00221A700A9B01330A930A9A049908AB1800EFF735 +:40E6000041F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB03221800EFF71CFA03000993099B002B01DA099B69E0099B0A9AD3180A93059B1800FEF74D +:40E64000BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1800FEF7ABFB0300022B15D1059B18685968FFF754FE0200049908AB1800FFF7F8 +:40E680000BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A80B9B00932300EFF70BFB03000993099B002B01DA099B26E0099B0A9AD3180A93DC +:40E6C0000A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD3180A93049908AB30221800EFF7B7F903000993099B002B01DA099B04E0099B0A9A39 +:40E70000D3180A930A9B18000CB010BD00B591B0059004910392049A039BD318099300230E93059B1800FEF749FB0300012B00D034E1059B18685968FFF7E8FD03000D936B +:40E7400006AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E006AA049909AB1800EFF7C4F903000F930F9B002B00DAD4E00F9B0E9AD3180E93B6 +:40E7800006AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB1800EFF7A8F903000F930F9B002B00DAB8E00F9B0E9AD3180E9306A90D980023002296 +:40E7C00001F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F930F9B002B00DA9CE00F9B0E9AD3180E9306AA0D9800230193002300931300002201 +:40E80000002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF903000F930F9B002B00DA7BE00F9B0E9AD3180E9306AA0D9800230193002300930023C7 +:40E84000002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F930F9B002B5DDB0F9B0E9AD3180E930D980023019306AB009300230022002100F0B0 +:40E880003DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B3FDB0F9B0E9AD3180E930D9806AB01930023009300230022002100F01FFF0300D8 +:40E8C0000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9B0E9AD3180E9306A90D9800230193002300930023002200F001FF03000F930F9B03 +:40E90000002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD3180E9306AB1800EFF7BFFB0F9B002B01DA0F9B35E1049909AB00221800EFF718FA52 +:40E9400003000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF791FF03000F930F9B002B01DA0F9B17E10F9B0E9AD3180E93049909AB302218009B +:40E98000EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B1800FEF70CFA0300022B00D0F6E0059B18685968FFF7B4FC03000C9300230B930023D2 +:40E9C0000A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AD3180B93099B1A00049BD31A002B02DC6C235B42D4E0099B013B0993099B002244 +:40EA00001A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9BBEE00F9B0B9AD3180B93049909AB03221800EFF713F803000F930F9B002B01DA61 +:40EA40000F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B01DA0F9B9CE00F9B0B9AD3180B93049909ABA1221800EEF7F1FF03000F930F9BDC +:40EA8000002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800FFF7FAFC03000F930F9B002B01DA0F9B76E00F9B0A9AD3180A930A9A049909AB6E +:40EAC0001800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909ABA0221800EEF7BAFF03000F930F9B002B01DA0F9B54E00F9B0A9AD3180A930E9AA8 +:40EB00000A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DA0F9B3DE00F9B0E9AD3180E93099B04221A70049909AB01221800EFF719F9030023 +:40EB40000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE03000F930F9B002B01DA0F9B18E00F9B0E9AD3180E93049909AB30221800EEF7B7 +:40EB80006DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B180011B000BDC04680C6FFFF00B583B001900091044B1B68009A0198002198477E +:40EBC000C04603B000BDC0464C040008F0B583B001900091019B1C0000231D00009B1E0000231F0032003B00200029001DF042F903000C001800210003B0F0BD70B5CAB00F +:40EC0000339032913192309300234493339B1B684293339B5B684193339B9B684093339BDB683F93419B9A08419BD3183E93409B9A08409BD3183D933F9B9A083F9BD31852 +:40EC40003C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B45930023439351E2319A449BD3181B781900449B5A1C319B9B181B781B021943449B37 +:40EC80009A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B93449B1A1D319B9B181B781900449B5A1D319B9B181B781B021943449B9A1D319B79 +:40ECC0009B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B08331A00319B9B181B781900449B09331A00319B9B181B781B021943449B0A331A00ED +:40ED0000319B9B181B781B041943449B0B331A00319B9B181B781B060B43369300233793449B0C331A00319B9B181B781900449B0D331A00319B9B181B781B021943449BD2 +:40ED40000E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B43349300233593499B0093002301933A9B3B9C0099019A5B1854413A933B94489B029313 +:40ED8000002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18544138933994479B069300230793399B1B000893002309930699079A089B099C0A +:40EDC000C9186241369B379C5B18544136933794469B0A9300230B93379B1B000C9300230D930A990B9A0C9B0D9CC9186241349B359C5B185441349335943A9B4993389BE9 +:40EE00004893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B184593429A499B11001800FFF7D0FE05000E003C9A489B11001800FFF7C8FE03000C001E +:40EE4000ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800FFF7B4FE03000C005B1974413A933B94419A499B11001800FFF7A8FE05000E00A2 +:40EE8000429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE03000C00ED1866413D9A469B11001800FFF78CFE03000C00ED1866413E9A459B21 +:40EEC00011001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE05000E00419A489B11001800FFF76EFE03000C00ED186641429A479B1100180054 +:40EF0000FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866413D9A459B11001800FFF750FE03000C005B197441369337943F9A499B11001800FF +:40EF4000FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B11001800FFF732FE03000C00ED186641429A469B11001800FFF728FE03000C009D +:40EF8000ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B534345933B9B1B00109300231193389B399C1099119A5B18544138933994399BF7 +:40EFC0001B00129300231393369B379C1299139A5B18544136933794379B1B00149300231593349B359C1499159A5B185441349335943A9B4993389B4893369B4793349B24 +:40F000004693359B1B00169300231793169A459B9B184593499B189300231993459B9B081A9300231B931899199A1A9B1B9CC9186241459B1C9300231D9303231C9C1D9DCE +:40F04000200098431E900023280018401F901E9B1F9C5B1854413A933B94459A0323134045933A9B4993489B2093002321933B9B1B00229300232393209B219C2299239AC0 +:40F080005B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B259C2699279A5B1854413A933B943A9B4793469B2893002329933B9B1B002A9385 +:40F0C00000232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D933B9B1B002E9300232F932C9B2D9C2E992F9A5B1854413A933B943A9B4593449B64 +:40F1000010334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62339B479A9A62339B469ADA62339B459A1A63C0464AB070BD00B583B00190019B4E +:40F14000002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D0019B48211800FFF721FDC04603B000BD00B589B003900291019200230793019B20 +:40F180000693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0069B002B3ED0039B5B6C002B3AD0039B5B6C1022D31A0593019A059B9A4213D28E +:40F1C000039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B5A64002306931DE0039B5B6C3033039AD3180433059A0299180018F055FD039BFC +:40F2000000225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059BD31A0693069B0F2B13D9069B1B090493029A079BD218049903980123FFF7DEFC05 +:40F24000049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B34331800029A079BD318069A190018F01BFD0023180009B000BD88B0039002911D +:40F280000192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A780499079BCB181B785340D9B21B236B441B226A4412780A431A70079B01330793CE +:40F2C000079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009300230593029B002B13D0039B0833019A02991800EFF792FB03000593059B002B96 +:40F3000041D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A00991800EFF77BFB03000593059B002B2CD1099B002B0BD0039B38330A9A0999180094 +:40F34000EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF75DFB03000593059B002B12D10D9B002B10D0039B14330E9A0D991800EFF74EFB37 +:40F380000300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF10B584B0039002910192039B5C68039B83 +:40F3C00008331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039B083300211800EFF713FE031E07DD039B083300211800EFF7CCF8031E01D12B4BBE +:40F4000051E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C3300211800EFF7B7F8031E0FD0039B383300211800EFF7EEFD031E07DD039B38330021180091 +:40F44000EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0029B002B11D0039B443300211800EFF7CFFD031E07DD039B503300211800EFF77C +:40F48000C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC024B00E00023180004B010BD80BFFFFF30B591B0039000230F93039B0833002109 +:40F4C0001800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1E9341DBB20D93039B383300211800EFF78FFD03005A1E9341DBB20C93039B2033A0 +:40F5000000211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD03005A1E9341DBB20A930D9B002B0AD00C9B002B07D00B9B002B04D00A9B002B01D022 +:40F54000012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D00A9B002B01D0012300E0002308930D9B002B0AD00C9B002B07D00B9B002B04D1BB +:40F580000A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D10A9B002B01D0012300E000230693099B002B05D1089B002B02D193 +:40F5C000079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B002B22D10D9B002B1FD00C9B002B1CD0039B08331800039B2C331900039B38331F +:40F600001A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B08331800EFF7AFF80200039B5A60089B002B1BD0039B08331800039B14331900039B2033CB +:40F640001A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B254A9446634443E0079B002B16D0039B2C331800039B38331900039B14331A0098 +:40F68000039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002B1FD0039B2C331800039B38331900039B20331C00039B44331D00039B5033039A3A +:40F6C0005C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A9446634406E00599039B01221800FFF761FE0300180011B030BDC04680BFFFFF00B587B0E1 +:40F700000390029101920093039B083300211800EFF77EFC031E21D0039B2C3300211800EFF776FC031E19D0039B383300211800EFF76EFC031E11D0039B203300211800A3 +:40F74000EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E000230493049B002B0AD1019B002B05D1009B002B02D1089B002B01D02B4B52E0029B002B4F +:40F780000CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002B0CD0039B2C331A00019B11001800EEF742FD03000593059B002B2FD1009B002B3B +:40F7C0000CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B0CD0039B20331A00089B11001800EEF722FD03000593059B002B0FD1099B002B42 +:40F800000ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E00023180007B000BD80BFFFFF00B587B00390029101920093039B0833002118003D +:40F84000EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800EFF7D6FB031E11D0039B203300211800EFF7CEFB031E09D0039B143300211800C4 +:40F88000EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD0039B44331A00029B11001800EEF7C3FC03000593059B002B1FD1019B002B0CD0A2 +:40F8C000039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D0039B5C331A00009B11001800EEF7A3FC03000593059B002B04D0059B034A9446F7 +:40F90000634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC220021180018F053FA019A0299039B180000F003F8C04605B000BD84B00390029101927B +:40F94000039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180002B0704700B583B00190019B002200211800FFF71DFD031E01D0164B27E0019BA8 +:40F9800008331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031E12D0019B14331800EEF7B9FE0300012B0AD9019B14331A00019B083319001000C6 +:40F9C000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059B1800FFF7BFFF031E07D1059B012201211800FFF7DDFC031E01D01D4B35E0059B17 +:40FA000008331800059B2C331900059B38331C00059B20331D00059B1433002202920022019200932B00220002F0FCFA031E01D00F4B1AE0059B2C331800059B3833190089 +:40FA4000059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF9031E01D0024B00E00023180007B030BD00BEFFFF00B583B001900091019B18001F +:40FA8000FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009B083319001000EFF71BFA031E0AD1019B14331A00009B143319001000EFF710FA7C +:40FAC000031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B002200211800FFF763FC031E01D0294B4CE007AB1800EEF7C5FA059B5A68049971 +:40FB000007AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF7DFF9031E03DB04235B420B9321E0059B5B680A93059B14331A00059B08331C0036 +:40FB4000059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907AB1800EEF7BDFF03000B9302E0C04600E0C04607AB1800EEF797FA0B9B002B04D049 +:40FB80000B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B005900491039200230693059BA0229B58002B3FD0059B8C331800059B8C331900B7 +:40FBC000059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C331900059B08331A00F0F756FF03000793079B002B00D072E0059B98331800059BD9 +:40FC000098331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059B98331900059B08331A00F0F735FF030007935DE0069B5A1C06920A2B01DD2E4B69 +:40FC400057E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D1059B8C331800059B98331900059B08331A00F1F737FD03000793079B002B34D1A5 +:40FC8000059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B08331A00F1F743FE03000793079B002B1ED1059B8C331800059B8C331900059B1433FF +:40FCC0001A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180008B010BD80BBFFFF10B5A8B06A +:40FD00000590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059B01211800FFF744FB031E01D0DF4BFCE121AB1800EEF7A6F91EAB1800EEF7A2F961 +:40FD40001BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB1800EEF78FF915AB1800EEF78BF912AB1800EEF787F909AB1800EEF783F906AB5D +:40FD80001800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1059B08331A0021AB11001800EFF798F8031E03DB04235B42279382E121AA09AB4D +:40FDC00011001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A0499059B1800FFF7DAFE03002793279B002B00D039E1059B8C331A0021A921AB180099 +:40FE0000F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE03002793279B002B00D021E1059B2C3319001EAB01221800EFF73DFB03002793D8 +:40FE4000279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00D009E1039B049A18A81C21F1F724FD03002793279B002B00D0FFE018AA1EA912 +:40FE80000FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB1800EFF74AFA03002793279B002B00D0E9E00FAB2693039B049A18A81C21F1F7FCFC84 +:40FEC00003002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B00D0D3E0059B50331A000CA90CAB1800EFF722FA03002793279B002B00D0C7E0A5 +:40FF00000CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE03002793279B002B00D0B5E0059B38331C00059B8033259A21A912A800932300F0F7C8FE05 +:40FF400003002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B00D09BE0059B5C331A0021A915AB1800F0F792F903002793279B002B00D08FE0CB +:40FF8000059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B38331A0021A915AB1800F0F776F903002793279B002B00D077E015AA12A921AB1800F5 +:40FFC000EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB1800F0F759F903002793279B002B00D062E0059B08331A0021A921AB1800F0F737 +:020000041002E8 +:400000004BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A800932300F0F754FE03002793279B002B46D109AA06AB11001800EEF751FF031E68 +:4000400002D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E099 +:40008000C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE080BFFFFF80BCFFFFC04604E0C04602E0C04600E053 +:4000C000C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D00FAB1800EDF7E0FF0CAB1800EDF7DCFF21AB1800EDF7D8FF15AB1800EDF7D4FF04 +:4001000012AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279B034A9446634400E00023180028B010BD00BDFFFF00B59BB0039002910192009330 +:400140000023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B681800FCF751FA03001593039B199350E0159B1793029A159B9A4201D2029B179389 +:400180001C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF803001693169B002B3AD104A91C9B04221800FCF762F803001693169B002B31D105AA75 +:4001C0001C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C1992197805A8189A821812784A40D2B21A70189B01331893189A179B9A42EDD304ABC1 +:40020000DB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C04602E0C04600E0C04605AB40211800FEF7BDFC169B18001BB000BD000010B58EB0CF +:400240000590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE0049B002B01D1654BC5E0059BA8229B58DBB21800FBF744FF03000B930B9B002BF0 +:4002800001D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3189A1C129B9A4207D3099B5A00129BD3189A1C0A9B9A4201D9504B9CE00A9A149B69 +:4002C0000021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D930D9B002B04D00D9B454A9446634482E00C9A099BD3180C930C9B119A10990B98A1 +:40030000FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9AD21A129BD31A023B0C9AD3180C930C9B5A1C0C9201221A70129A13990C9B1800AF +:4003400017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002B28D1099B0133149AD0180A9A099BD31A591E149B5A1C099C06AB00932300FFF7A2 +:40038000D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E099906AB009313002200FFF7C3FE03000D9302E0C04600E0C04606AB1800FBF7CA +:4003C000D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB030009E0149C039A04990598149B00932300FFF784FC030018000EB010BD80BFFFFF9C +:4004000080BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B58002B01D0464B88E0049B002B05D00F9B002B02D0109B002B01D1414B7DE0059B81 +:400440005B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0089A0E9BD31A033B0B930A9B5A1C0A9200221A70029B002B2FD10A9B5A1C0A92A1 +:4004800002221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D1099B013B0993099B002B02D0079B002BEBD0099B002B02D0079B002B04D0079B27 +:4004C000204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9201221A7004E00A9B5A1C0A92FF221A700B9B5A1E0B92002BF5D10A9B5A1C0A92FA +:4005000000221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7D9FA030009E0109C039A04990598109B00932300FFF7E2FB030018000CB010BD79 +:4005400080BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B0FD021E0069C079A089909980E9B02930D9B01930C9B00932300FFF743FF0300A5 +:4005800013E0069C079A089909980E9B04930D9B03930C9B029300230193002300932300FFF74CFE030000E0014B18000AB010BD00BFFFFF10B5E04CA54405900491039215 +:4005C0000293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA74321360FFAB74331B680F2B06D9FFAB74331A688023DB009A4201D9D04BD9E1059BA82226 +:400600009B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1FFAB70331B681800FBF7EEFF0300FFAA6C321360FFAB6C331B6801335A00FFABE8 +:4006400074331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF739FA03000BE0FFABA0331C68039A049905981AAB00932300FFF740FB0300FFAA9E +:4006800088321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB00221800FBF792FD0300FFAA88321360FFAB88331B68002B04D007AB1800FBF700 +:4006C00053FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B68D31A5A1EFFAB6C33196807AB009313002200FFF71FFD0300FFAA88321360FFABE3 +:4007000088331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B68D31A591E1AAA0132FFAB6C331C6807AB00932300FFF7FEFC0300FFAA88321360BB +:40074000FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAA98321268FFA994310968FFA870300068FBF7BCFD0300FFAA88321360FFAB8833F8 +:400780001B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CFFA97C310A601978FFAB7B33FFAA7B3212780A431A70FFAB7C331A68FFAB6C336F +:4007C0001B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB84331B68D3181A78FFAB7C331B68591CFFA87C3001601B785340DBB25AB2FFAB7B3356 +:400800001B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB84331A68FFAB6C331B689A42D3D30023FFAA80321360FFAB7A3300221A700023FFAAF9 +:40084000843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A3212780A431A70FFAB7A331B785B42DAB2FFAB7A331B781343DBB2DB09DBB201225340F4 +:40088000DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360FFAB6C331B685B00FFAA74321268D31A9A1EFFAB84331B689A42C4D8FFAB7C33FC +:4008C0001A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7801225340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB7B331B78C7 +:40090000002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B689A1AFFABA8331B689A420FD9064BFFAA883213602DE0C04678FBFFFF80BFFFFF84 +:40094000A0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1AFFAB9C331B681A60FFAB9C331B681A68FFAB7C331968FFABA4331B68180017F047 +:4009800093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F90AAB40211800FEF701F9FFAB88331B6818009123DB009D4410BDC04610B5D44C40 +:4009C000A54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D1059BA4229B58002B01D0CA4B8BE1059B5B68FFAA1C321360FFAB1C331B680F2B79 +:400A000006D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40331968059B1800FFF755F803000BE0FFAB40331C68039A0499059806AB009323000C +:400A4000FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA24321360FFAB233300221A70FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233234 +:400A800012780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213603DE03B +:400AC000FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B785B42DBB21343DBB2DB09DBB201225340D9B2FFAB2233FFAA223212780A431A70D2 +:400B0000FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A00FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C33D3 +:400B40001B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A7049 +:400B800066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213602AE0FFAB24331A68FFAB2833F5 +:400BC0001B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB22331A70FFAB22331B785A425341DBB21A00FFAB2C331B689B18FFAA2C321360FFAB7F +:400C000028331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A60E4 +:400C40001978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB25AB2FFAB23331B785BB213435AB2FFAB23331A70FFAB23331B78002B04D0264B17 +:400C8000FFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB48331B689A4204D91D4BFFAA3032136020E0FFAB24331A6806ABD31A1A00FFAB1C33BC +:400CC0001B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B68180016F0E1FF0023FFAA3032136000E0C0468023DA0006AB11001800FDF756FF3E +:400D0000FFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFF10B58AB00990089107920693099BA4229B58002B02D0012B11D025E0069C079A4A +:400D4000089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069C079A089909980F9B05930E9B04930D9B03930C9B029300230193002300932300EC +:400D8000FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B00590049103920293279B1E9300232093029B012B06D1059BA4229B58012B01D09C4B33E1049B002B2F +:400DC00001D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F903001C931C9B002B01D1904B1BE11C9B1800FBF70AFC03002593059BA8229B58DBB20D +:400E00001800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B931B9B023B1A931B9A1A9BD3189A1C1D9B9A4201D97D4BF5E01B9A1B9BD3189A1CEE +:400E40001D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F0B5FF219A09A90398049B984703001F931F9B002B04D01F9B6D4A94466344D1E068 +:400E8000059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3181E931E9B5A1C1E9201221A70219A09A91E9B180016F0F8FE1E9A219BD3181E93C1 +:400EC00006AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E006AB1800FBF7AEF903001F931F9B002B6FD11E9906AB08221800FBF7BDF90300A2 +:400F00001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A09A906AB1800FBF7A7F903001F931F9B002B54D11E9A06AB11001800FBF7BAF979 +:400F400003001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9BD21A209BD31A591E1B9C1E9A06AB00932300FFF7DFF803001F931F9B002B32D1C6 +:400F8000059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2111410A0052B213405BB2DAB2279B1A701E9A1B9BD3181E931E9B5A1C1E92BC22EA +:400FC0001A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800FBF7BCF81F9B002B01D01F9B14E0029B002B07D172 +:40100000279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF76DFE0300180022B010BDC04680BFFFFF80BBFFFF00B58BB00291019200930F23B2 +:401040006B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D00F236B441B781800FBF74AF803000793079B002B01D16C4BD3E006AA05A90F237D +:401080006B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069A029BD31808337F2B0ED8029B0A331A00029B9A4208D3069A029BD3180A331A0010 +:4010C000029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0069A029BD318099AD31A0A3B099309E0099A029B9A4201D24B4B92E0099A029B8C +:40110000D31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089B5A1C089201221A70099A089BFF21180016F04CFE089A099BD3180893089B5A1C89 +:40114000089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0089B5A1C089230221A70089B5A1C0892069AD1B2029AD2B28A18D2B20832D2B24C +:401180001A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1C089206221A70089B5A1C0892069AD2B21A700599069A089B180016F075FD069B23 +:4011C000089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089204221A70089B5A1C0892029AD2B21A70029A0199089B180016F056FD089A029BBB +:40120000D31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E0002318000BB000BD80BFFFFF10B58AB0059004910392029300230893002307939A +:40124000029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB18780F9B00932300FFF7E5FE03000993099B002B01D0099B63E0029B002B07D10F9AFB +:401280000F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B002B02D110235B424AE0059B5B681900012015F03BFE03000793079B002B06D13F +:4012C000089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD03000993099B002B1ED1079A0899059B1800FEF7EFFB03000993099B002B15D131 +:40130000059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9B180016F0C1FC02E0C04600E0C046089B180016F07FF9079B180016F07BF9099B07 +:4013400018000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B0193DD +:401380000AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF7F2FC030000E0014B180008B010BD00BFFFFF59 +:4013C00010B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BFBE1059B5B68FFAA8C321360FFAB8C331B680F2B06D9FFAB8C331A688023DB0059 +:401400009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB03000BE0FFABB0331C68039A0499059807AB00932300FEF762FC0300FFAA903213605A +:40144000FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B68013B9C4AFFA994318C466244D35CBC2B01D0994BB1E1FFAB9C331B78002B1AD0F1 +:40148000FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B9BE1FFAB84331B681800FBF7ADF80300FFAAA0321360FFABA8331B781800FAF731 +:4014C0001FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B681800FBF792F80300FFAA80321360FFAB2C3308220021180016F069FC059B08331800DC +:40150000EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C331A6813005B079B1ADB001A00FFAB7C331B68D318083319410B1E01D0644B4CE124 +:40154000FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B68013BFFAA8C321360FFAB80331B689A1CFFAB8C331B689A4201D9554B2DE1FFABB1 +:401580008C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB20331800FAF7D5FDFFAB84331968FFAB203300221800FAF70AFE0300FFAA9032136088 +:4015C000FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB80331C68FFAB78331A68FFAB88331868FFAB203300932300FEF79DFD0300FFAA9032B3 +:401600001360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C321268D100FFAA7C3212688A1AFF2111410A0052B213405BB2DAB2264BFFA994311D +:401640008C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB88331B689A4205D9FFAB88331B681B78002BE9D0FFAB88331B685A1CFFA988317F +:401680000A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31AFFAA74321360FFABAC331B68013315D0FFABAC331B68FFAA743212689A420DD055 +:4016C000054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20331800FAF7AFFD0300FFAA90321360FFAB90331B68002B5FD1FFA92C31FFAB20338F +:4017000008221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A68FFABA4331968FFAB20331800FAF7A4FD0300FFAA90321360FFAB90331B68002B00 +:401740003ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA90321360FFAB90331B68002B2CD1FFAA3432FFAB203311001800FAF79DFD0300FFAA9032E7 +:401780001360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F05DFA031E11D00F4BFFAA903213600CE0C0460AE0C04608E0C04606E0C04604E09A +:4017C000C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB009D4410BD80BCFFFF10B58CB00990089107920693099BA8229B58002B04D0099B60 +:40180000A8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B059301235B4204932F236B441B780393109B02930F9B01930EAB1B7800932300FFF7C0FD31 +:40184000030018000CB010BD10B58AB0059004910392029300230993059B5B6807930023069300230893029B012B06D1059BA4229B58002B01D0384B6BE0079B190001209C +:4018800015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B03D110235B42099338E0079C0E9A0D990CAB1878089B00932300FFF7BBFB030069 +:4018C0000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C039A04990598069B00932300FEF706FA03000993099B002B0FD1079A0899069B11 +:401900001800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B09D0079A069B11001800FDF73FF9069B180015F07FFE089B002B09D0079A089B79 +:4019400011001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A34 +:40198000069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF714FFBF +:4019C000030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB019B98331800ECF75FFB019B68331800ECF75AFB019B20331800ECF755FB019B17 +:401A000038331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08331800ECF741FB019B80331800ECF73CFB019B74331800ECF737FB019B5C33180058 +:401A4000ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000010B59EB0059004910392029300231D9306AAB44B1000190036231A0016F014F9D5 +:401A800036231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D004235B424AE1059B00211800EDF7B0FA031E1DDD039B01211800EDF7A9FA031E75 +:401AC00016DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DD059A049B11001800EDF7FAF9031E02DB04235B4222E114AB1800ECF7C3FA17AB0B +:401B00001800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A917AB01221800EDF7C6FC03001D931D9B002B00D0E8E017AB1800ECF7A8FD02000D +:401B40006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB11001800EDF7A0F803001D931D9B002B00D0CBE072236B4400221A80059B9B687C +:401B80001B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C1A0014AB11001800ECF7C6FC059A14A9029B1800EFF796FD03001D931D9B002B85 +:401BC00000D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B00932300EFF775F803001D931D9B002B00D090E01CAB01221A805EE014AB0121180037 +:401C0000EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE0059A14A9029B1800EFF75CFD03001D931D9B002B00D071E0029B01211800EDF728 +:401C4000E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A20980021EEF733FC03001D935EE014A914AB01221800EDF71FFC03001D931D9B002B75 +:401C80004ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800EEF7FAFE03001D931D9B002B3CD11CAB1CAA128801321A801CAA6A236B441288DF +:401CC0001B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B4472226A44128801321A8072236B441A881B9B9A4200D24EE700E0C04604235B429B +:401D00001D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB024 +:401D400010BDC046843B041000B58DB0039002910192009300230B93009B002B06D0009B00211800EDF754F9031E02D004235B4271E0039B01211800EDF74AF9031E0DDD0B +:401D8000029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4259E008AB1800ECF76DF905AB1800ECF769F9039908AB01221800EDF77CFB030040 +:401DC0000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AA08A9009B1800EFF77DFC03000B930B9B002B22D105AA08A908AB1800EEF74CFAFE +:401E000003000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D108AA0199009B1800EFF780FD03000B9308E0C04606E0C04604E0C04602E0C046EB +:401E400000E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB0039002910192009300230B9308AB1800ECF708F905AB1800ECF704F9009B002B85 +:401E800033D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B002B00D08CE0019A009905AB1800EDF791FA03000B930B9B002B00D082E008AAC7 +:401EC00005A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F8031E02D04E4B0B937BE00E9B002B30D0029B002B02D1494B0B9372E0029908ABE6 +:401F000001221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA03000B930B9B002B53D108AA05A905AB1800EEF7B2FD03000B930B9B002B4AD105AB40 +:401F400000211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B002B02D12D4B0B933BE0029A0F9908AB1800EEF791F903000B930B9B002B2BD175 +:401F800008A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF77BFD03000B930B9B002B19D108AB00211800EDF72DF8031E13D0194B0B9310E0ED +:401FC000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460B9B002B0CD00B9B0D4A934208D00B9B0A4A934204D00B9B094A94466344FF +:402000000B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFF00BEFFFF00B58DB0039002910192009300230B9308AB1800ECF724F805AB180057 +:40204000ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF71BF903000B930B9B002B00D0C8E0039B01211800ECF7CCFF031E07DD039A08AB7E +:4020800011001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B002B20D0009B01211800ECF7B1FF031E16DD0E9B01211800ECF7AAFF031E0FDDC1 +:4020C000039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DB5C4B0B939DE0029B002B00D199E0019B002B00D195E0009B002B00D191E00E9BAE +:40210000002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E02DC4C4B0B937CE00E9A009908AB1800EEF7B2F803000B930B9B002B62D108A947 +:4021400008AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF903000B930B9B002B50D105AA08A908AB1800EEF791FC03000B930B9B002B47D17A +:4021800008AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF803000B930B9B002B34D108A908AB01221800EDF780F903000B930B9B002B2BD195 +:4021C000019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF75BFC03000B930B9B002B19D108AB00211800ECF70DFF031E13D0164B0B9310E012 +:40220000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800EBF73FFF05AB1800EBF73BFF0B9B002B08D00B9B064A934204D019 +:402240000B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291019200930023079304AB1800EBF70AFF009B002B15D0039904AB01221800EDF793 +:402280001AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B26D10A9B002B15D0029904AB01221800EDF701F903000793079B002B1AD104AA49 +:4022C00001990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B1800EFF723FB0300079306E0C04604E0C04602E0C04600E0C04604AB1800EBF7E0 +:40230000D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B000BD00B583B00190019B002B05D0019B6C211800FCF73AFC00E0C04603B000BD1B +:4023400000B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD000082B001900091019B00221A60019B00225A60009B002B18D1019B1B4A9A60019BE2 +:402380001A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A1A62019B174A5A6217E0019B164A9A60019B164ADA60019B154A1A61019B154A50 +:4023C0005A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A660023180002B0704767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BE9 +:40240000ABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964A44FFABE70B5CEB00190009100234D930EE0019B4D9A02329200D15819 +:402440001F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E04D9B9B00009AD3181B781A064D9B9B0001330099CB181B781B041A434D9B9B0079 +:4024800002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA944663444D9A9200D1504D9B01334D934D9B0F2BD4D900234D9300F09EFCC046BE +:4024C000D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C34133 +:402500004B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D218E34BD6 +:402540004EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D84B4EA98C4663441B680D21CB415A40D44B4EA98C4663441B681621CB415A4041 +:40258000D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA8844663449868C84B4EACA44663441C68C64B4EADAC4663445B68234303400B43D3184B93C14BA0 +:4025C0004EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA98C466344DA61B74B4EAA944663449A69B44B4EA98C466344DB680621CB411900BC +:40260000B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B40D218A84B4EA98C4663445969A54B4EA884466344D868A34B4EACA44663441C6920 +:40264000A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9B591C9A4B4EA8844663448900CB58D3184C93944B4EAA94466344DB690222D341EF +:402680001A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB415A40884B4EA98C466344D969854B4EA8844663441B681940824B4EA88446634469 +:4026C0005868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93784B4EAA944663449A684C9BD218754B4EA98C4663449A604C9A4B9BD218714B35 +:402700004EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB411900684B4EA8844663449B680B20C3415940644B4EA8844663449B681920C34188 +:402740004B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA4466344DC68584B4EADAC4663441B69634003404B40D2184D9B991C534B8900CB58D218DE +:402780004D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B690222D3411A00474B4EA98C4663449B690D21CB415A40434B4EA98C4663449B6916218B +:4027C000CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA8844663441868374B4EACA44663449C69354B4EADAC466344DB69234303400B43D318F3 +:402800004B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218284B4EA98C4663445A61264B4EAA944663441A69234B4EA98C4663445B68062109 +:40284000CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920C3414B40D218174B4EA98C466344D968144B4EA8844663445868124B4EACA446BB +:4028800063449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB58D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B697F +:4028C00006E0C046D4FEFFFFBC3B0410F4FEFFFF0222D3411A00FE4B4EA98C4663445B690D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C4663445969B5 +:40290000F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C69EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9B88 +:40294000D218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA94466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B6839 +:402980000B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663449968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B6806 +:4029C000634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA8844663448900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C466344F4 +:402A00001B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C4663441969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA446634437 +:402A40001C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA694C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944BA5 +:402A80004EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA884466344DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C46AA +:402AC00063445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663445B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA884460D +:402B000063448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C466344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C46B2 +:402B40006344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA4466344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663449D +:402B80009A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A604B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA884460B +:402BC00063449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA98C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4695 +:402C000063441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA8844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA9C5 +:402C40008C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA98C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EAC66 +:402C8000A44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA944663445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C46634431 +:402CC0005A60034B4EAA944663441A6806E0C046D4FEFFFFBC3B0410F4FEFFFF4B4B4EA98C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA8FB +:402D0000844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634458693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9B0F +:402D4000D91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4B4EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234B27 +:402D80004EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA8844663449B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC4663448F +:402DC0009B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4663441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D8B6 +:402E0000FFF762FB10234D9300F08CFFD4FEFFFFBC3B0410F4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C341FD +:402E40005940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B6963400340DB +:402E80004B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB581121CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B41 +:402EC0004EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B40 +:402F00004EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA9C8 +:402F40008C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA99E +:402F80008C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B6819409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B6874 +:402FC000234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C466344DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA9D9 +:403000008C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA884466344DB681920C3414B40D218794B4EA98C4663445969764B4EA88446634408 +:40304000D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9B591C6D4B8900CB58D2184D9B01334D99481E6A494EACA446614480004158112039 +:40308000C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F494EADAC466144A4006158890A48404D998C1F5A494EADAC466144A40061584018BC +:4030C0004D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F494EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD00D5 +:403100006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93364B4EAA94466344DE +:40314000DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B5D +:403180004EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B68234303400B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9A05 +:4031C0004B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C4663449B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA88446634447 +:403200009B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFFBC3B0410F4FEFFFF63441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC46634445 +:403240001B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA8844661444D98800041581120C1410800EE494EACA44661444D9CA40061581324E141A6 +:403280004840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D9919 +:4032C0000D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAEB4466144AD006958C908614040184D990E390C00CC494EADAC466144A400615800 +:403300004418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B4EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84BD6 +:403340004EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA884466344DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC4663449C +:40338000DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C4663445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B6B +:4033C0004EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B4EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA88446AB +:4034000063445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D2184D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA446614480004158B8 +:403440001120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C71494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A40061586C +:4034800040184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB446614436 +:4034C000AD006958C908614040184D990D390C0055494EADAC466144A4006158441852494EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA9446CC +:4035000063445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4663445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B69194096 +:40354000374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B69234303400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A60D9 +:403580004C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4663441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA88446E7 +:4035C00063441B681920C3414B40D218144B4EA98C4663449968124B4EA88446634418680F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191DCA +:40360000084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C046D4FEFFFFBC3B0410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A4000B +:4036400061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1EF3494EADAC466144A400615840184D990B390C00EE494EADAC466144A400615828 +:403680000724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D990B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EADC7 +:4036C000AC466144A40061584418D9494EA88446614498004450D6494EA8844661449B005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B69B0 +:403700000D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C4663441969C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C69A9 +:40374000BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BD218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAAA6 +:40378000944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB690B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634487 +:4037C00059689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B68634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EAC68 +:40380000A4466144800041581120C14108004D99CC1C87494EADAC466144A40061581324E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EAD45 +:40384000AC466144A400615840184D990A390C0077494EADAC466144A40061580724E1410C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D00A3 +:403880006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC466144A4006158441862494EA884466144980044505F494EA8844661449B005B58D318D0 +:4038C0004C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB415A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA801 +:40390000844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EADAC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B52 +:403940004EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA944663445A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C34128 +:4039800059402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B4EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B6863400340FA +:4039C0004B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA4466144800041581120C14108004D990C1D10494EADAC466144A40061581324E141484019 +:403A00004D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFFBC3B0410CB494EAD3B +:403A4000AC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD0069581225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D99CA +:403A80000A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3494EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4BA1 +:403AC0004EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B4EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4B35 +:403B00004EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C4631 +:403B400063445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B4EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D21857 +:403B80007B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B4EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B07330E +:403BC0004D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC466144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A48401F +:403C00005A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C40DF +:403C40004D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661449D +:403C80009B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663445B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C466344DF +:403CC00059682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663445C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A69C7 +:403D00004C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B08334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4B0F +:403D40004EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B072BE7D9002318004EB070BDF4FEFFFFD4FEFFFFBC3B041000B589B003900291D3 +:403D80000192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039B1A68019BD218039B1A60039B1A68039B1A60039B1A68019B9A4204D2039B5B68AB +:403DC0005A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A0299180013F060FF039B28331A00039B11001800FEF718FB03000593059B002B60 +:403E000001D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039B11001800FEF700FB03000593059B002B01D0059B16E0029B40330293019B403BFE +:403E40000193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F023FF0023180009B000BD00B587B001900091019B1B683F2213400593059B5A1CF4 +:403E80000592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059B3822D31A1A00002113F090FF21E0019B28331A00059BD018059B4022D31A1A0026 +:403EC000002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D0049B43E1019B283338220021180013F06DFF019B1B685A0F019B5B68DB001343A5 +:403F00000393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61229954039B1B0AD9B2019B62229954039BD9B2019B63229954029B1B0ED9B2019B24 +:403F400064229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B2019B67229954019B28331A00019B11001800FEF759FA03000493049B002B01D084 +:403F8000049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009B9A1C019B9B681B0ADBB21370009BDA1C019B9B68DBB21370009B1A1D019BDB6819 +:403FC0001B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB21370009BDA1D019BDB68DBB21370009B08331A00019B1B691B0EDBB21370009B95 +:4040000009331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B0B331A00019B1B69DBB21370009B0C331A00019B5B691B0EDBB21370009B0D3301 +:404040001A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F331A00019B5B69DBB21370009B10331A00019B9B691B0EDBB21370009B11331A00D3 +:40408000019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A00019B9B69DBB21370009B14331A00019BDB691B0EDBB21370009B15331A00019B01 +:4040C000DB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BDB69DBB21370009B18331A00019B1B6A1B0EDBB21370009B19331A00019B1B6AC7 +:404100001B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6ADBB21370019B9B6E002B1ED1009B1C331A00019B5B6A1B0EDBB21370009B1D3374 +:404140001A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F331A00019B5B6ADBB213700023180007B000BD00B5A1B0039002910192009304ABC9 +:404180001800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039904AB1800FFF7E8FD03001F931F9B002B0AD1019A04AB11001800FFF756FE030065 +:4041C0001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190019BD8220021180013F0F0FDC04603B000BD00B583B00190019B002B05D0019B24 +:40420000D8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B10001900D8231A0013F040FDC04603B000BD000010B582B001900091019A002300241360B6 +:404240005460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B2B4C9361D461019A2A4B2B4C13625462019A2A4B2A4C9362D462019A294B2A4C77 +:4042800013635463019A294B294C9363D463019A284B294C13645464019A284B284C9364D46427E0019A274B274C13615461019A264B274C9361D461019A264B264C136272 +:4042C0005462019A254B264C9362D462019A254B254C13635463019A244B254C9363D463019A244B244C13645464019A234B244C9364D464019BD021009A5A5000231800B2 +:4043000002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E135C +:4043400019CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE90 +:404380001D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A441360F9E0824B6B441B68DB001A00A723DB006B441B689B181B78069300230793069B82 +:4043C0001B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A9300230B930A9B1B040D9300230C930898099904000C9A0D9B15002C430E94194345 +:404400000F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109B1B021393002312930E980F990400129A139B15002C431494194315915B4B6B4478 +:404440001B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B00199300231893149815990400189A199B15002C431A9419431B914D4B6B441B68DB001A1D35 +:40448000A723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B061E931A981B9904001E9A1F9B15002C432094194321913D4B6B441B68DB005A1D08 +:4044C000A723DB006B441B689B181B782293002323932299239A0B001B0C100007041F430B001E04209A219B1100314324913B4325932E4B6B441B68DB009A1DA723DB00F5 +:404500006B441B689B181B782693002327932699279A0B001B0E1000000201900198184301900B001B020093249A259B1100009C019D2000014328912A00134329931B4B4E +:404540006B441B68DB00DA1DA723DB006B441B689B181B782A9300232B932898299904002A9A2B9B15002C432C9419432D91104B104A6A44D2180D4B6B441B68DB00D31871 +:404580002C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DCFFE6E5E0E4F7FFFF3C0500001408000028FDFFFF18080000EB4B6B441B68991E38 +:4045C000EA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F92E14B6B441B68991EE04BE14A6A44D218CB00D3185C681B68590FE2001143319195 +:40460000620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24B6B441B68991ED14BD14A6A44D218CB00D3185C681B68A206990902910299114338 +:404640000291A30903933299339A0800029B039C1D006840349023005A403592C24B6B441B68D91FC14BC24A6A44D218CB00D3185C681B68349D359EED186641BA4B6B4494 +:404680001B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0763081A433792B04B6B441B680F3B1900AE4BAF4A6A44D218CB00D3185C681B688A +:4046C00021061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A9023005A403B92A04B6B441B680F3B19009E4B9F4A6A44D218CB00D3185C681B687B +:404700006206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C9023005A403D923C993D9A491972418E4B6B441B68103B1C008C4B8D486844C0180E +:40474000E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C31819605A60814B6B441B6801337F4A6A4413607D4B6B441B684F2B00DC1DE77D4B6B44B9 +:404780001B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605460744B6B441B685C6A1B6AFF22D2006A44136054606F4B6B441B68DC6A9B6A8E +:4047C000FE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654B6B441B68DC6B9B6BFC22D2006A4413605460604B6B441B685C6C1B6CFB22D200E9 +:404800006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A441360564B6B441B689A04FD23DB006B441B689B0B1A433E92FD23DB006B441B683B +:404840009A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C1A434092FD23DB006B441B689A03434B6B441B689B0C1A4341923E993F9A08007A +:40488000409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B68DB051A434592354B6B441B685A0AFD23DB006B441B68DB051A4344924299439AAF +:4048C0000800449B459C1D006840469023005A404792FA23DB006B445C681B6846984799C0186141FC23DB006B441A68FB23DB006B441B685A404892214B6B441A68214BC6 +:404900006B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A682B0013404B93FB23DB006B441B684A9C4B9D22005A404C92124B6B441B682A004B +:404940005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68C918624112E0C0461408000028FDFFFF180800003C05000008080000EC07000000 +:40498000E4070000DC070000C03C0410EF4BF0486844C018EF4B6B441B68DB00C3185C681B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0FE0 +:4049C0001A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A08DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A435092CB +:404A00004E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B6B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A43549252995B +:404A4000539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B441B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B0100 +:404A80006B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A685A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9C24 +:404AC0001D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A4413605460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A44AF +:404B000013605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D2006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB00DB +:404B40006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A436192814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A03BF +:404B8000794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A406592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0AA2 +:404BC000FE23DB006B441B68DB051A4366926499659A0800669B679C1D006840689023005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC231F +:404C0000DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B686E +:404C40006C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354B06 +:404C80006B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B681A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B6888 +:404CC0001B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B441B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D00684045 +:404D0000749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B6B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D0076 +:404D40006840789023005A4018E0C04628FDFFFF18080000140800000C0800000808000004080000FC070000F4070000EC070000E4070000C03C0410D40700007992FA234A +:404D8000DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B93FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A43DD +:404DC0007D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F937A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B18FD +:404E00005441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B685B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C681E +:404E40001B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4B6B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B64 +:404E80006B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A438492FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859C07 +:404EC0001D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A4389929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B8E +:404F0000899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B68CA +:404F40005A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B0013408F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A4091928A +:404F8000909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C91862416F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A44FB +:404FC00013605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B441B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B6840 +:405000009B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939A0800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B44A0 +:405040001B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB003F +:405080006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A68FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B448B +:4050C0001A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09BA19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A442B +:405100001360546080231B016B4419685A68F923DB006B445C681B685B185441802212016A4413605460F923DB006B4419685A68F823DB006B445C681B6817E0080800003C +:40514000D40700000C0800000408000014080000FC070000F4070000EC070000C03C041028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B68B8 +:405180000133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A49280231B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B014E +:4051C0006B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A792A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0ACE +:40520000CE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A43AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C6810 +:405240001B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B6B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093EF +:40528000AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B6B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB0091 +:4052C000C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B685B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F4D +:405300001A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B441B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B68B6 +:405340009B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B44F6 +:405380001B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B681340D6 +:4053C000BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B441B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B008B +:405400001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC499C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C6875 +:405440001B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B99 +:405480006B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B689B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B68BF +:4054C0009A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA9023005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0A12 +:40550000174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A40CF92FE23DB006B445C681B68CE98CF99C0186141802317E014080000040800005F +:40554000FC070000F4070000C03C041028FDFFFF18080000E4070000DC070000D4070000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A682A +:40558000EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A682B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A0065 +:4055C0005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B68C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F9228E +:40560000D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64BDC +:405640006B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D892D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA09DD +:40568000B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A68B3 +:4056C000FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E3928E +:40570000FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E099E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B185441A8 +:40574000F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B185441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68F1 +:405780005B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B441B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B44C4 +:4057C0001B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D0026 +:405800006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF92504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9CAC +:405840001D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384B6B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392E5 +:40588000FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F59380231B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C88 +:4058C0001B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D486844C018194B6B441B68DB00C3185C681B685B185441F922D2006A44136054607B +:40590000194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC070000B6 +:40594000080800000C080000C03C04101408000028FDFFFF18080000EC070000E4070000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A08F4 +:40598000FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC9023005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B681E +:4059C000DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFAD0435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340E5 +:405A0000FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B441A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A43D2 +:405A4000FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C68AA +:405A80001B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA2432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F92325 +:405AC000DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B68013321 +:405B0000904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A60FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B68B7 +:405B40009A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B68D0 +:405B80001D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4B6B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB0583 +:405BC0001A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD4C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168F6 +:405C0000C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A684C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D6823000E +:405C40001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA5C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A6068 +:405C8000FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B68C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F9228A +:405CC000D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C331A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB0097 +:405D00006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC070000CD +:405D4000E407000014080000DC07000008080000D40700000C080000C03C041028FDFFFF18080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C35286057 +:405D800023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB88331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB73 +:405DC0007C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB90331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B4441 +:405E00001A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B681A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB00C7 +:405E40006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC35C3 +:405E8000286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B185441F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B1854 +:405EC0005441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B44F6 +:405F00001B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A04924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B6847 +:405F40009B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFABC0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286076 +:405F800023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFABD0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFAB97 +:405FC000C43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFABD8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A685A +:40600000FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFABE0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B84 +:406040006B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE4321468556822005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B683F +:406080001B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B39486844C018304B6B441B68DB00C3185C681B685B185441F922D2006A441360546030 +:4060C000314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B441B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B8D +:406100006B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B071A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A02554 +:40614000ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F4070000EC07000014080000E407000008080000DC070000D4070000C03C041012 +:4061800028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B6B441A60A54B6B441B68DA0980231B016B441B685B061A43A123DB006B441A600B +:4061C000A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D44286023005A40974B6B441A6080231B016B441A68FF23DB006B441B681340A322C1 +:40620000D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B441A68FF23DB006B441B681A43A423DB006B441A60814B6B441A68834B6B441B68C8 +:406240001A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A522D2006A4413607B4B6B441A680B001340794A6A441360A323DB006B4419685A682F +:406280000800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B441A60A223DB006B445C681B68A622D2006A44116852685B185441F822D2006A44AE +:4062C00013605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441584A50 +:406300006A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF780FA514B6B441B6819695A694C4B6B445C681B685B1854414B4A6A441268136151 +:406340005461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412689361D461404B6B441B68196A5A6AFF23DB006B445C681B685B1854413A4A6A4491 +:40638000126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324A6A4412689362D4622F4B6B441B68196B5A6BFD23DB006B445C681B685B18544185 +:4063C000294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B185441214A6A4412689363D4631E4B6B441B68196C5A6CFB23DB006B445C681B685B +:406400005B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C681B685B185441104A6A4412689364D464002318000D4B9D44F0BDC04604080000E3 +:406440000C05000014050000FC0700001C05000024050000F40700002C0500003405000008080000140800003C0500001C08000070B58AB0059004910392039B002B01D1F6 +:4064800000237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B68039A0092002201920099019A5B185441059A13605460059B5C681B68039A150096 +:4064C00000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A9360D460099B002B3AD0039A089B9A4236D3059B50331A00099BD318089A04991800EB +:4065000011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079B2EE0049A089BD3180493039A089BD31A03930023099312E0049A059B11001800D3 +:40654000FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B7F2BE9D8039B002B09D0059B50331A00099BD318039A0499180011F095FB0023E0 +:4065800018000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959395994B1C95938F9B50225B189A1880231370959B702B0CD88F9B50331A00959BAC +:4065C000D018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80239B1A1A00002111F0F1FB8F9B50331A008F9B11001800FDF7C5FE03009493949B4D +:40660000002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F3C9300233D938F9BDC689B685A0FE6001643DD003C993D9A0B002B4392931300E6 +:40664000334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F936B46F8229B181B788F99C0228B54939B1B0C4093002341936B460133FF331B7875 +:406680008F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54939B1B004493002345936B46882252009B181B788F99C3228B54939B1A02929B84 +:4066C0001B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929B1B0C0293029B13430293939B1B0C03936B461B7A8F99C5228B54939B1A06929BE7 +:406700001B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB28F99C7228B54919B1B0E4693002347936B468C2252009B181B788F99C8228B5403 +:40674000919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9300234B936B46942252009B181B788F99CA228B54919B1B004C9300234D936B4604 +:40678000982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B1B0E07936B461B7E8F99CC228B54919B1A04909B1B0C0893089B13430893919BA9 +:4067C0001B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B13430A93919B1B0A0B936B4628229B181B788F99CE228B54909B919CDBB28F99CF22B1 +:406800008B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F009FCC046A8FDFFFF8F9B5C691B69230E4E9300234F936B469C2252009B181B78FE +:406840008E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B7813708E9B9A1C8F9B5C691B69230A5293002353936B46A42149005B181B78137049 +:406880008E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B191D8F9B5C691B692202180E0C900C9810430C90230E0D936B4630229B181B7880 +:4068C0000B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B4638229B181B780B708E9B991D8F9B5C691B692206180A1090109810431090230A119347 +:406900006B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9BDC699B69230E5693002357936B46AC2149005B181B7813708E9B09331A008F9BCF +:40694000DC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BDC699B69230A5A9300235B936B46B42149005B181B7813708E9B0B331A008F9B30 +:40698000DC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9BDC699B692202180E1290129810431290230E13936B4648229B181B780B708E9BB2 +:4069C0000D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B181B780B708E9B0E3319008F9BDC699B692206180A1690169810431690230A17931B +:406A00006B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A008F9B5C6A1B6A230E5E9300235F936B46BC2149005B181B7813708E9B11331A0049 +:406A40008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A008F9B5C6A1B6A230A6293002363936B46C42149005B181B7813708E9B13331A00DB +:406A80008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B143319008F9B5C6A1B6A2202180E1890189810431890230E19936B4660229B181B780B7054 +:406AC0008E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668229B181B780B708E9B163319008F9B5C6A1B6A2206180A1C901C9810431C90230A45 +:406B00001D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B18331A008F9BDC6A9B6A230E6693002367936B46CC2149005B181B7813708E9B193360 +:406B40001A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331A008F9BDC6A9B6A230A6A9300236B936B46D42149005B181B7813708E9B1B338A +:406B80001A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C3319008F9BDC6A9B6A2202180E1E901E9810431E90230E1F936B4678229B181B785C +:406BC0000B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B4680229B181B780B708E9B1E3319008F9BDC6A9B6A2206180A2290229810432290A4 +:406C0000230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B20331A008F9B5C6B1B6B230E6E9300236F936B46DC2149005B181B7813708E9B2E +:406C400021331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9B22331A008F9B5C6B1B6B230A7293002373936B46E42149005B181B7813708E9B37 +:406C800023331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B243319008F9B5C6B1B6B2202180E2490249810432490230E25936B4690229B183C +:406CC0001B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C27936B4698229B181B780B708E9B263319008F9B5C6B1B6B2206180A28902898104372 +:406D00002890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708E9B28331A008F9BDC6B9B6B230E7693002377936B46EC2149005B181B7813704E +:406D40008E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B7813708E9B2A331A008F9BDC6B9B6B230A7A9300237B936B46F42149005B181B781370E6 +:406D80008E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B7813708E9B2C3319008F9BDC6B9B6B2202180E2A902A9810432A90230E2B936B46A82265 +:406DC0009B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230C2D936B46B0229B181B780B708E9B2E3319008F9BDC6B9B6B2206180A2E902E98C5 +:406E000010432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB213708F9AD023D358002B00D001E18E9B30331A008F9B5C6C1B6C230E7E93002332 +:406E40007F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002381936B46802189005B181B7813708E9B32331A008F9B5C6C1B6C230A82930023DD +:406E800083936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C23008493002385936B46842189005B181B7813708E9B343319008F9B5C6C1B6C2202180E30902B +:406EC000309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C2204180C3290329810433290230C33936B46C8229B181B780B708E9B3633190064 +:406F00008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B708E9B37331A008F9B5C6C1B6CDBB213708E9B38331A008F9BDC6C9B6C230E8693E7 +:406F4000002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893002389936B46882189005B181B7813708E9B3A331A008F9BDC6C9B6C230A8A93DA +:406F800000238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C9300238D936B468C2189005B181B7813708E9B3C331A008F9BDC6C9B6C2102180E8F +:406FC0003690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6C9B6C2104180C3890389808433890230C39936B46E0215B181B7813708E9B3E33CE +:407000001A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B7813708E9B3F331A008F9BDC6C9B6CDBB213700023180096239B009D4470BDC046A4 +:4070400000B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F803003B933B9B002B13D1029A039904AB1800FFF7FDF903003B933B9B002B0AD198 +:40708000019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F83B9B18003DB000BD00B583B00190019B10331800D9F752FB019B180003B000BDAB +:4070C00000B583B00190019B10331800D9F712FC019B180003B000BD10B582B00190054C054B9C4204D0503C2000FFF7E9FFF7E702B010BDA06B0008006B000830B583B0BE +:4071000001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4B180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B54 +:407140001900002006F074F9C04603B030BDC046FFFF0000E06A0008C0000008055F0010006B0008D970021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B09D +:407180000290039100920193009A019B0298039914F050FE03000C001A00009B5343180004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A605C +:4071C000019A002300249360D460019A0023002413615461019A0023002413625462019B282200219954019B0022DA62019B00221A63019B00225A63019B382200219954C6 +:40720000019B180002B010BDC83F041000B583B00190074A019B1A60019B180000F08BF8019B1800DDF7DEFD019B180003B000BDC83F041000B583B00190019B1800FFF734 +:40724000E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B68A2 +:407280001800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B681800904703000C00019A13615461019B5B681B6828331A68019B5B6818009047FA +:4072C00003000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C00019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BFF +:40730000DA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019B180000F091F8019B3822012199540023180004B010BD00B585B00190019B382232 +:407340009B5C01225340DBB2002B01D0002332E0019B34330121180005F078F903000393039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022F4 +:40738000DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B382200219954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B011 +:4073C0000390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039BAC +:407400005868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A84703000593059B002B01D0059B04E0039B180000F00AF80023180006B070BD403F041063 +:40744000783F04105FF0FFFF10B582B00190019BDC699B69019A13625462019B282200219954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124B44 +:407480001EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF03000393039B002B01D0039B09E0019B5B681B6810331A68019B5B68180090470300D6 +:4074C000180005B000BDC0465FF0FFFF403F0410783F0410F0B597B00790069104920593079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6B55 +:40750000002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A0093019413000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA24205 +:4075400002D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059AA24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079B19 +:4075800058681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B15931C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059A55 +:4075C000A24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B0014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A6E +:407600001B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B685B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A6869 +:40764000DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FB03005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFBD6 +:407680001C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B6920 +:4076C000049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B19695A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0067 +:4077000014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C69F3 +:407740001B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E00FD +:4077800000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D087 +:4077C000139B20E0089B099C1A00159B9B181593089B099C0499059A5B185441049305941C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFF403F041019 +:40780000883F04100023180017B0F0BDF0B5C64600B596B00990089106920793099B38229B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF221800BB +:4078400004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089B1593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD030088 +:407880001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D102E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D62D4 +:4078C0005E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D0099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FAE0 +:4079000003005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D81C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A9332 +:407940000B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BFC +:40798000DB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F970 +:4079C000099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC689B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B68183330 +:407A00001F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D0C1 +:407A4000119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B1801 +:407A800015930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B0014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFF403F0410783F04108E +:407AC00070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA03001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059BCD +:407B000038229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D8D2 +:407B400001D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BDC046403F0410A43F0410F6 +:407B80005FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB94 +:407BC000059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24251 +:407C000006D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BD403F0410A43F0410BA +:407C40005FF0FFFF10B582B00190012300241800210002B010BD10B582B00190012300241800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D00023CF +:407C800000240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D000230024B6 +:407CC0000DE0039B5B681B6830331968039B5868009B019C1A002300884703000C001800210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B6D +:407D000009E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF10B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC69AA +:407D40009B691800210002B010BD10B582B001900091009B5C681B68019A11685268A24202D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C6810 +:407D80001B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000082B00190034A019B1A60019B180002B07047C0464040041000B583B00190019B8C +:407DC0001800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100920193029B039C01214942CA175B18544118002100009A019B14F01CF803000C001D +:407E000019002200012300245B1854411A00009B5343180004B010BD10B584B00290039100920193009A019B0298039914F002F803000C001A00009B5343180004B010BD31 +:407E400070B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B682C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF030014 +:407E80000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029B012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F91CA +:407EC0000C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D00024E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029A33 +:407F0000039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE030018930023199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B48 +:407F40000F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D910AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE030004930023059314 +:407F80000E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9CD7 +:407FC000C91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834B01 +:408000001800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF7B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A8C +:40804000179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002422E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079B9D +:40808000FFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002BA1 +:4080C00019D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CEF +:40810000D2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D147230CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B00E5 +:4081400014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD04723CA +:408180000CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E047230CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB186441D3 +:4081C000209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F935D +:4082000018E0C04620620410186C0008F06B0008C000000809510010486C0008206C00081699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9B5C +:408240009A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E93419C +:40828000DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074B180005F0C5F8054C10AB1800DDF720FA2300180022B070BD786C0008506C000820 +:4082C000C00000080951001070B58AB0802212020023069207936A4A002308920993069B079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA030072 +:408300005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DDF737FC0300009300230193009A019B28003100FFF74FFD030008930023099399 +:4083400002AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089809991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB6894 +:408380001B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB681800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB2BD +:4083C0001A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264BC9 +:40840000180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B681800904703000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D9F73CFF02 +:4084400003000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC04631 +:40848000008007100F01FF8020620410D46B00080101FF805C6D00087C6C0008C0000008AD8A02100440041000B583B000230193144B1800DDF7C0FB0300180005F02CF934 +:4084C000114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B04D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180066 +:4085000003B000BDA06B0008D06B0008D46B000800B583B001900091009B002B0CD0009B18000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002B6B +:4085400001D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D0002300E00123180003B000BDC0467C40041082B00190034A019B1A60019B180002B00A +:408580007047C0464040041000B583B00190019B180000F00BF9019B180000F0F7F9019B180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F038 +:4085C000ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B0122DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD74 +:4086000000B587B00390029101920023059300230493039B20331800DDF70EFB0300180005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E01F +:40864000029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF0CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039B02 +:408680009B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B9C +:4086C0005B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B689B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B68EB +:408700005B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B681B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B68BF +:408740005B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B68DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B68C3 +:408780001B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009B00225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA9C +:4087C0000300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B9A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B51 +:4088000011001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF70BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB00390029179 +:408840000192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B94 +:408880002F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A6037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039B17 +:4088C0009A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B0133079392 +:40890000DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD3185A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B00190009152 +:40894000019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF76BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049B00 +:408980001B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091019B013B0099180013F072F803000133009A5343180003B000BD30B58FB005901D +:4089C00004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A80DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD0000F6 +:408A000000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009A37 +:408A40009A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C2200219954019B00221A67019B742200219952019B00229A67019B8C2200219950019B1C +:408A8000902200219950019B942200219950019B982200219954019B9C2200219950019B180003B000BDC0465C42041000B583B001900C4A019B1A60019B180001F0B8FCBC +:408AC000019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180003B000BD5C42041000B583B00190019B1800FFF7DBFF019B180004F05FFD019B43 +:408B0000180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D31804337F +:408B40001A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB00E +:408B8000079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD31802930023039387 +:408BC000049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA94466344D4 +:408C00000A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B93079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B00C1 +:408C400013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C0000231D000094019532003B00884703000993099B002B01D0034B00E0002318000DB04E +:408C8000F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D1800904702000B00069207938022120600230892099308AA06AB11001800FFF746F8030024 +:408CC0001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B6830331968059B986D119B009300230193009A019B884702000B000C920D93059B60 +:408D0000982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D1B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B88478F +:408D400002000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B9A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD3181193DB +:408D8000C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059B88215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A700123AA +:408DC0005B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B441978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68FB +:408E0000A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039308AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D96E +:408E4000934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9A109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE0300C8 +:408E80001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE0E4 +:408EC0001C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B139353 +:408F0000069B1293069B159AD31800221A7041E0059B90229B581393604A06AB11001800DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B57 +:408F400011001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD01C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B11003D +:408F80001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139ACF +:408FC0001299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A1399159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D08A +:40900000229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129BD31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129B20 +:40904000D31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A4202D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E05B +:40908000C046179B180018B010BDC046836668540201FF800501FF800101FF80504204100701FF8010B598B00F900D920C933B236B440A1C1A700F9BDB6C1693324B179383 +:4090C0000D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B00221A601A9B1A680F9B5B6D9A4248D21A9B1B681B01169AD3181593159BDC689B687F +:409100001A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B2FE00F9B1B6FD9B20C9B1A680D9C0F9811AB0A9313AB099312AB08930023079317 +:409140000123069300230593002304930023039314AB029300230193002300932300FFF725FE03001793179B074A934207D100E0C0461A9B1B685A1C1A9B1A60B1E7C04649 +:40918000179B180018B010BD0701FF8010B584B0039002910192039B8C229B5819001820FFF7FAFB0400029B18000FF031F90200019BD018039B8C229B581900FFF7ECFBFF +:4091C0000300E318180004B010BD0000F0B591B00990089107920693099B079A11001800FFF796F903001A0001235340DBB2002B01D0A84B4AE1169BA74A134001D0A54B6A +:4092000044E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF803005A425341DBB2002B0ED0099B5B6E0293002303930E9B0299039A9961DA615A +:409240000E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099B180000F0B7FC03000F930F9B002B00D0F8E0069A0799099B1800FFF787FF030075 +:409280000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B002B00D0E0E0099B1A6E0D9BD218099B9B6F9A4202D97B4B0F93DEE0099B1B6F1E +:4092C000D9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002B1CD1099B1B6FD9B20C9A0E9B099800931823FFF709FC03000F930F9B002B00D0D0 +:40930000B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A934200D0A4E0169B002B00DAA2E0099B5A6D099B1B6D9A4204D3099B00211800DC +:4093400000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6FD9B20E9BDC699B691C000D9A0998002300931300220001F017FD00230F930E9B2E +:409380009C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12196B411C0013000E9A136254620E9B00229A620B9A0E9B1A630A9A0E9BDA620E9BA8 +:4093C000374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803009AB20E9B9A810E9B0022DA810E9B069A1A610E9A01235B4214211800FFF7DDFAB2 +:4094000002000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099B1B6FD9B20E9B5C6A1B6A1A000E9B9B891C000998079B00932300FFF79FFB030057 +:409440000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362546212E0C04608E0C04606E0C04604E0C04602E0C04600E0C0460E9B00221A6074 +:40948000099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7F50040008836668540B01FF801201FF800701FF8070B588B005900491039202930023079318 +:4094C000059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E0059B2833180004F017F9049B0693069B1B68002B02D1244B07933CE0069B9A6A08 +:40950000029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA0200069B5A61059B1B6FD9B2069B5C6A1B6A1C00029A0598039B00931300220007 +:40954000FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B197441069A13625462069B9A6A029BD218069B9A6200E0C046059B2833180004F0F4F826 +:40958000079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6C0A93059B9C229A58049B9A4201D0714BDDE0049B0993099B1B68002B01D16D4B0A +:4095C000D5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180000F0F8FAA9E0059B1B6FD9B2099BDC699B691A00099B059800931823FFF7BEFAA3 +:4096000003000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000893089B002B02D0544B0B9385E0099BDC699B69059A526E029200220392029A5B +:40964000934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099BDA6A059B5B6D9A4213D2099BDB6A1B010A9AD018099BDB6A01331B010A9AD1182F +:40968000059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF83AE0099B34229B5C002B25D0099BDA6A059B5B6D9A4213D2099BDB6A01331B01F6 +:4096C0000A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FB059B5B6D5A1C059B5A65099BDA6A059B0121180001F0B0F8099BDB6A1B010A9A79 +:40970000D3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800059B8C229B581900FFF736F90200059B1A6602E0C04600E0C046099B00221A60F4 +:40974000059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44204D0059B0433180003F0FEFF0B9B18000CB070BD0101FF800501FF801C01FF8091 +:4097800030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B6824331C68029D049A06A905980C9B00932B00A04703000793079B002B01D0079BDF +:4097C0001AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B0AE0059B1B682C331B680699059A1000984703000793079B180009B030BDC04614 +:409800000101FF8010B584B003900291039B1B6814331C680299039880231B06009300230022A0470300180004B010BD10B598B00F900E910D920C930F9B0E9A1100180043 +:40984000FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF0F9B1B6FD9B215AC0E9A0F9812AB019311AB00932300FFF715FC03001793179B5E +:40988000002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB0893002307930023069301230593002304931B9B039316AB02930C9B01930D9B00932300FFF798 +:4098C00075FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FF179B180018B010BD0101FF8010B598B00F900E910D920F9B0E9A11001800FEF76A +:4099000007FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9B1B6FD9B216AC0E9A0F9813AB019312AB00932300FFF7B6FB03001793179B002B76 +:409940002ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB0893002307930023069300230593002304930023039311AB029301235B420193002300932300FFF7FB +:4099800015FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E0C04600E0C0460F9B0433180003F0DCFE179B180018B010BD0101FF8010B588B038 +:4099C000059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006AB01225A8006AB00225A60059B5A6E059B9B6ED218039B1A60059B1B6814331C6858 +:409A0000054B196806AA0598002300930823A0470300180008B010BD5004000830B591B005900392029313236B440A1C1A70039A13236B441978059808AB00931823FFF7A3 +:409A400063F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF040008AB9B891A0008AB1B69D018059B8C229B581900FEF790FF0300E3180793132317 +:409A80006B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B002B01D00F9B90E0059B8C229B5819001820FEF771FF02003A236B441A80132369 +:409AC0006B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803000F930F9B002B01D00F9B6EE03A236B441B88039AD31803933A236B441B88029A9F +:409B0000D3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF796F803001A683A236B441A803A236B441D88059B90229B58039C13226A44117804 +:409B4000059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B780122D31AD9B23A236B441C88059B90229B58029A059800932300FEF7FFFF03009D +:409B80000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF7B6 +:409BC000EBFE0200149B1A600023180011B030BD5042041070B58CB00390039BDB6C0A93039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED218039800230093130000227F +:409C000001F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE03000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B1100180054 +:409C4000DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B25C +:409C8000069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D0099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED318DE +:409CC0000693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB6813000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099BD4 +:409D0000002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B06930B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B96 +:409D400074229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF72DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B11009D +:409D8000180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD5042041070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E179395 +:409DC0000D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9310AB099311AB089301230793002306930023059301230493002303930FAB0293E9 +:409E000000230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B20D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002B27 +:409E400003D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB0D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B0179 +:409E8000D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1C0D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A7A +:409EC0000E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE786 +:409F0000C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B001900091019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB4A +:409F400003000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A60EA +:409F80000023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB0D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA0300CD +:409FC00019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D18003D +:40A0000090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B07D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6D0C +:40A040001800904703000C0019000D9B8C229950402003F097FA030019000D9B90229950802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C229950AD +:40A080000D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9B8C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F834 +:40A0C00002000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD9AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B7833A1 +:40A1000018006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A670D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB089300230793F8 +:40A140000123069301230593002304930023039312AB0293082301930FAB00932300FEF725FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002273 +:40A1800002F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D9801230093230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F0DF +:40A1C00013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1526B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB520077 +:40A20000D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D116AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B742207 +:40A240009A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B98002300930023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011ABF6 +:40A280005B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F11AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F07A +:40A2C00007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6F0D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E49E6 +:40A300001B98002300930023002202F06DFAC046FFFFFF07A44004100101FF80500400080201FF80D0400410F84004101B01FF801C4104104C410410744104101B9B364A99 +:40A34000934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D9800F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA3F +:40A380003B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B1D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D065 +:40A3C00018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D1800904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9BA5 +:40A400006C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80A04104101B01FF80E0410410084204101C01FF8000B585B00190019B0433180003F06CF98A +:40A44000019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B74 +:40A4800003D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B7A +:40A4C0000433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B5A6E039B9B6ED2180B236B4419780398012300931300002200F056FC03001800ED +:40A5000005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B0433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A78DB +:40A54000019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B4401321A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B742201219952B2 +:40A58000019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B0433180003F0E0F8029B180005B000BD0E01FF8000B589B0039002910192002346 +:40A5C0000793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE0039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002BDD +:40A6000003D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF03000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D00123A2 +:40A6400000E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B9A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059BC9 +:40A68000069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B000BDC0460E01FF800101FF802001FF802C42041010B598B00F900E910D920C9368 +:40A6C0000F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9B22 +:40A700001B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A9312AB099313AB0893002307930023069300230593012304930023039314AB029377 +:40A74000002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B0ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D118 +:40A78000012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B41DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B8B +:40A7C0001793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C0122E1 +:40A800005340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B04D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F064 +:40A84000BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B236B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B44 +:40A8800015D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B080 +:40A8C0007047000000B58BB005900491039200230993039B402B01D9354B66E0059B0433180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4AA3 +:40A90000934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009313000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A806B +:40A94000049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009308234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6DAE +:40A980001800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059B0433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF809F +:40A9C00010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6834331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB00937A +:40AA000008234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E017 +:40AA40000E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB1100AF +:40AA8000180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B58139300230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A934B +:40AAC000059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D00B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A423F +:40AB000004D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B1800FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B78B7 +:40AB4000002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC0460501FF80504204100701FF800201FF8000B587B00390029101920093039B043390 +:40AB8000180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B2351 +:40ABC00008AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C01225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C000B +:40AC00000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A605AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C68D0 +:40AC40000B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B1854410122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C68A9 +:40AC80000B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F93C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B06930023AE +:40ACC0000793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B005900392029313236B440A1C1A7014AC039A13236B441978059813AB0093230013 +:40AD0000FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179CAC +:40AD4000039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114B1DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A7070 +:40AD800000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A700023180018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD027 +:40ADC00008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF736FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B446F +:40AE0000197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B7801225340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A932A +:40AE40000A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE7002318000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A60DC +:40AE8000039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B1800DAF717FF039B180005B000BDC04664FD031010B588B005900491029203939C +:40AEC0000A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F04DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029B0D +:40AF0000039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6808331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B4C +:40AF4000002B02D00A9B00221A60079B180008B010BDC046304204104442041082B001900091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B06F +:40AF800001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023180003B000BDC046304204104442041010B588B00590049102920393002307937F +:40AFC000059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F04FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079355 +:40B0000003E001235B420793C046079B180008B010BD000010B584B001900091009B002B07D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180083 +:40B0400000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60019B1B6808331B68019A100098470023180004B010BDC046304204104442041028 +:40B0800010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F0CDF8029B07930E9B1B680B931B236B4400221A70039B1B6905930023002408936B +:40B0C0000994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD3181B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A7031 +:40B100001B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B18544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB035 +:40B1400010BDC046304204104442041010B58AB003900291009201930C9B002B07D1A423FF331A003249334B180001F067F8029B04930C9B1B6809930023002406930794FE +:40B18000019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B781A00039B1100180000F086F803001B06099A5340099317236B4408221A70172366 +:40B1C0006B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D0099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A70AA +:40B20000DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099B1A400C9B1A60002318000AB010BDC0463042041044420410B71DC10482B00190D7 +:40B2400001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4420221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B23EA +:40B280006B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B86 +:40B2C0001B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B012213400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0898 +:40B3000000930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B0019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB207 +:40B34000180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB2002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BD616D000811 +:40B38000606D000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A70064B1B78DBB2002B00D062B6C04610BDA0420410C4420410616D0008606D0008D3 +:40B3C00000B585B003900291019200930299009A019B18000CF068FC0023180005B000BD82B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0DA +:40B40000039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4A0B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029BD3 +:40B440009A40039B9A60C04605B000BDE5020000E0420410E602000010B582B001900091019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5E40 +:40B480001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD304304106443041000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B4466 +:40B4C00000229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B11001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F9DD +:40B50000C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A2327 +:40B540006B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E083 +:40B58000039A0549054800230093002301F02CF9180005B000BDC046884304103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1EE +:40B5C000009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D159 +:40B6000001235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F0DBF8059B180007B000BDC0469C430410D7 +:40B640003001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B42180050 +:40B6800002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF0300059341 +:40B6C000059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046BC4304103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B8888 +:40B700000D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B0121180000F03EFF00F0B8FEC04603B000BDC046626D0008FFFF0000DC4304108A +:40B740002301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A000949094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BDC0 +:40B78000626D0008044404102401048010B586B000F06AFEFFF7A8FF03000C00049305940F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002B9C +:40B7C0000ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE00099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFE93 +:40B80000C04606B010BDC046706D0008686D0008F0B58FB00590059B5B6838229B5C002B00D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB6953 +:40B84000984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944668 +:40B8800063441B7801229A400B9B9A420AD1272304AA94466344262204A98C46624412781A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA944604 +:40B8C00063441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D494D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474AE1 +:40B9000000230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B68B6 +:40B9400000221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B211278B1 +:40B980005A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D1400A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A98 +:40B9C0001A61059B5A68069B079C9361D461059B5A680023002413635463059B5B68392200219954059B5B683A2200219954059B5B68382201219954059B180000F01AF808 +:40BA0000059B180000F0EEF902E0C04600E0C0460FB0F0BD244404103C44041040420F0082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B68159349 +:40BA4000159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149B9A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362F8 +:40BA8000159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E06E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A72 +:40BAC00004DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119ADA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C844026009B +:40BB000008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BB4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24295 +:40BB400000D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B18544116931794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D46246 +:40BB80005BE0364A00231298139910F073F903000C000E930F94159B9B68069300230793069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B6808930C +:40BBC00000230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A94415B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD848 +:40BC0000039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A9B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6BE2 +:40BC4000169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F00F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A99410200FD +:40BC80000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E00599994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079BE7 +:40BCC0009A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C1A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D0061 +:40BD00001543049A9A401400244A00232000290080185941204A002310F08CF803000C000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E00002392 +:40BD40001F00049A059B3000390010F093F803000C0019002200114B0024C9186241080011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B68F3 +:40BD80001B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D226 +:40BDC00001230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E00023180004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6879 +:40BE000039229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6B1B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B5F +:40BE40009A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A0023000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F03B +:40BE8000DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059A04991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D2183A +:40BEC0000B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD244404104044041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B110018007F +:40BF0000FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB689847019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B6861 +:40BF40005B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6BA2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A601F +:40BF8000019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B00390C2 +:40BFC00002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089A9A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA24216 +:40C0000002D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049ADA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA6018 +:40C0400000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A4209D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE0CB +:40C08000039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD100F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B180011 +:40C0C000FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C0468444041010B5054B1B68002B04D0034B1B68034A10009847C04610BD540400088B +:40C100008444041082B001900023180002B0704782B001900023180002B0704700B585B00190019B1B6810331B68019801220021984703000393039B002B01DA039B12E06C +:40C14000019B1B6810331B68019802220021984703000293019B1B6810331B680399019800229847029B180005B000BD00B583B0734601900091002293431A000099019B39 +:40C18000180000F004F80300180003B000BD00B587B003900291019200230593029A039B110018000BF050FA03000593059B180007B000BD00B587B0039002910192002359 +:40C1C0000593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734601900091002293431A000099019B180000F003F8C04603B000BD00B585B00390B2 +:40C2000002910192029A039B110018000BF0D8F8C04605B000BD00B587B003900291019200230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B0B1 +:40C2400005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF8082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B05F +:40C28000039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A0B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029BC7 +:40C2C0009A40039B9A60C04605B000BDE5020000DC440410E602000010B582B001900091019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5EED +:40C300001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD2C4504106045041000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B4601211800DF +:40C34000FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B01330393039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F978 +:40C380006B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DDC8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C04672 +:40C3C00003B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE03002393239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F0AB +:40C4000005F8C04625B000BD7045041000B583B0019000F029F8019B18000BF0F9FF03001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019BF8 +:40C44000012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB2180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF745 +:40C4800063FF034B1B685A1C014B1A60C04610BDB86D0008784504109445041010B5094B1B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C04687 +:40C4C00010BDC046B86D000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B0039002916F +:40C500006B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A4209D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7043 +:40C5400017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B0039002910192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B44A0 +:40C5800001221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B4462 +:40C5C0006A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A6045 +:40C60000FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019B1B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF7B +:40C640000E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A0393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031E0E +:40C6800005D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001235340DBB2002B01D0FFF73AFE012000F0C7FEC046C06D00080FB410B584B07446CC +:40C6C000124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C48009300230022002100F019F80A490A480023002200F0B1F807AB0393039A069B1100DA +:40C700001800FFF761FEFFF7B5FFC046BC6D00080001FF80C8450410FC6D000800B593B00390029101920093039B002B01DB264B039304AB3422002118000BF047FB04AB7F +:40C74000039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B04AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FEF5 +:40C78000134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A90D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE40 +:40C7C0000023180013B000BD0101FF8060050008C46D0008C86D0008FC6D0008306E0008002318007047000010B586B0744605900491039202930F4B1800FFF765FE03003A +:40C800001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF77DFF089B029A0499034800F015F8FFF721FFC046BC6D0008FC6D000882B0019035 +:40C84000019B002B01D0019B00E0024B180002B07047C046E045041070B58AB00790069105920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B04E2 +:40C880001B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FDE6 +:40C8C0003DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FD2DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD42 +:40C900001DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD0DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B5B +:40C940001800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF755FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B110018002E +:40C98000FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B9969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B11004C +:40C9C0001800FFF7F1FC144B1800FFF7EDFCC0460AB070BDEC450410E4470410404604105846041068460410784604108C460410A0460410B4460410C4460410DC46041053 +:40CA0000F0460410044704100C47041010470410244704107C470410C847041000B583B0FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B48002300936C +:40CA40000023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BD346E0008FFFF0000344804102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD33 +:40CA80000A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80FFF7FCFCC04603B000BDC046346E0008644804102401018000B583B0FFF7D4FCBD +:40CAC0000D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF783FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BD366E0008FFFF000010 +:40CB00008C4804102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B881A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFC4B +:40CB4000C04603B000BDC046366E0008B84804102401018010B5074B1B68002B08D0054B1A6801235B421900100003F08DF800E0C04610BD2079000810B5064B1B68002BEA +:40CB800005D0044B1B68180003F0A8F800E0C04610BDC0462079000884B00390029101921D235B42180004B0704782B0019016235B42180002B0704782B001900123180063 +:40CBC00002B0704782B001900023180002B0704700B585B003900800110001930A236B44021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D1DB +:40CC000002AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F051FE00E0C046039B180005B000BDC046684A0410407800086889000800B587B0A0 +:40CC4000039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00064B1100180009F047FE059B01330593EDE7019B180007B000BDC0466889000821 +:40CC800000B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE0300DAB2059B1A700123180007B000BD6889000800B585B001900A006B46023387 +:40CCC0001A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FE031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B4635 +:40CD000002331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B07D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDFF +:40CD40006889000882B001900023180002B0704782B001900023180002B0704710B5174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FBC1 +:40CD800003005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046C46E000815 +:40CDC00001050000C06E0008C0000008E5D5021000B585B00190019B1800FFF7B9FF03000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039BA6 +:40CE000002E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E00C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF030052 +:40CE40000393044B019A92000399D150039B180005B000BD5804000800B583B00190019B180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF0300C2 +:40CE80000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4215E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF803007D +:40CEC000029A52421A6001235B4200E00023180005B000BD5804000882B001900023180002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A00E7 +:40CF000001235340DBB2002B01D0012300E00023002B07D0059A55495548002300930023FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B0893002367 +:40CF40000B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099AE5 +:40CF80000B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F803000793079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BEA +:40CFC000D3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA01235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B44CB +:40D0000012781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A1A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD31843 +:40D040000B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C04600E0C0460B9B18000DB000BDE04804102F010180806E00081C49041000B587B080 +:40D08000039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF030009221A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002B3C +:40D0C00008DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB00590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B75 +:40D1000001D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002B07DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031E07 +:40D1400065D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE0089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD15A +:40D180001F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059BD3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B788D +:40D1C0000A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B4445 +:40D200001A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099B18000BB000BDC046204904102F010180406E000800B587B0039002910192039B9F +:40D240001800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E0059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE030024 +:40D28000049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019A0299039B180000F006F803000593059B180007B000BD00B587B00390029101920B +:40D2C000039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B4216E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFEC4 +:40D300000300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B78 +:40D340001B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A52421A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B689B +:40D380000593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB2002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B6812 +:40D3C000D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B07047C04658050008DC8900083C6E0008386E000800B583B001900C4B1B689B6834 +:40D40000180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B002B01D0FEF77CFFFEE7C046B406000884B00390029101920123180004B0704735 +:40D4400000B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B0704700B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F0FE +:40D4800037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039B24 +:40D4C0001B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB2039B1A700123180005B000BD8C050000684904108849041000B585B00190019B1D +:40D500000393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B785BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC046E4 +:40D540009405000068490410B049041000B587B00390039B18000AF063F803000593059B002B07D1039A05490548002300930023FFF73AF9059B180007B000BDF0490410C5 +:40D580001F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05490548002300930023FFF71EF9059B180007B000BD104A04101F01018000B583B0DD +:40D5C0000190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04603B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BDC1 +:40D60000684A041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB2AA +:40D64000002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B180004F029FAC04605B000BDB04A04100601018000B583B00190019B180000F040 +:40D68000A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FB25 +:40D6C000009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB0B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B3322DF +:40D700001800FEF79BFDC04607B000BD384B0410544B0410684B041000B587B00390039B1A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B25 +:40D740001A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BD6C4B04101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F0D1 +:40D78000ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180007B000BD804B04101701028000B583B00190019B1B68180002F0B6FA019B180030 +:40D7C00000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023E1 +:40D80000DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A0093084B009A1A60084B019A1A6000F06EF800F08AF8E0890008000001082C6F0008E6 +:40D84000286F00083C6E0008386E000810B5154B154A1A60134B0B225A60124B1C22DA60104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A6056 +:40D880000C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC04610BDC046E86E0008944B0410CC6E0008C86E0008186F0008A44B0410FC6E0008BB +:40D8C000F86E000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B421900100002F0D1F9C04603B000BDC86E000800B583B00190044B1B68180002F0EEF9C3 +:40D90000C04603B000BDC046C86E000810B500F013F804F043F900F011F8C04610BD10B5FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F026 +:40D9400031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204B214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4BB6 +:40D9800018229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A1149124803 +:40D9C000002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC046EC780008B04B0410D0780008FC7800086879000824790008C04B04102079000818 +:40DA00001FD90210C84B04101D010180E44B041000B583B00190064B1B68002B04D0044B1B68019A10009847C04603B000BDC046306F000800B583B0019000F017F900008F +:40DA400000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A14491548B4 +:40DA8000002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A10491148002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046C84D04108E +:40DAC000FC4B041025010280204C041026010280484C041027010280804C041028010280BC4C04102A010280FC4C04100001028082B00190019B0633052B10D89A000A4BD6 +:40DB0000D3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B180002B07047C046E04D0410184D0410304D0410644D04107C4D04108C4D041087 +:40DB4000A44D0410C04D041000B585B00390039B1800FFF7CDFF0100039A0348002300930023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039AC9 +:40DB80000248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF0100039A0248002300930023FEF71CFE3301018000B585B003900291029B113395 +:40DBC0000BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BD3401018000B585B003900291029B1800FFF77EFF0100039A024800230093002329 +:40DC0000FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A0248002300930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FE83 +:40DC4000C04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF771FDFEF71BFCC04610BD000010B5024B1B689847FBE7C0465C0500087046C0089B +:40DC80002CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB91421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A600E +:40DCC000906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF30880D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E467047EE +:40DD000001B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E7740500081C4F041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019BB4 +:40DD40005A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F01FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031EED +:40DD800009D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC0464DDD021082B0EFF305830193019B5A1E87 +:40DDC0009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A52028E +:40DE0000920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002349E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B63 +:40DE400007D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B07D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904B9A +:40DE8000DA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B1900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B6919003D +:40DEC000100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BDA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B8022A0 +:40DF00009A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674BDA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B1968F1 +:40DF40005F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B9B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FAD2 +:40DF8000031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B1968474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404B1C +:40DFC0001B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FA031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C1968F8 +:40E000002F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284B9B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA69 +:40E04000031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C1968174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B74 +:40E080001B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC0466005000882 +:40E0C0001C4E04106805000800B585B0314B1B7A012B07D007235B421800FFF735FD01235B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FD74 +:40E1000001235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B421800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F04B +:40E14000CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B180002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019B21 +:40E1800083F31488034B02221A720023180005B000BDC046600500081C4E04100DDD02107C05000880B582B000F03AF8FFF702FE031E03D1FFF709FE031E08D006235B42FC +:40E1C0001800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BD15DE021080B582B0FFF7E4FD031E03D1FFF7EBFD031E08D006235B421800FFF7AC +:40E20000A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BDC9E00210C046704782B00190019B180002B0704784B001900091019A009BD3180393039B77 +:40E240000293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D1009B0722134002D1009B172B01D8002329E0019B1800FFF7D5FF03000393039BCC +:40E28000009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019B11001800FFF7C4FF0200029B1A60029B1B6800221A60029B1B6810225A60029B94 +:40E2C00000225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B03D0019B0322934301D0002384E0029B08330793079B0733072293430793039B2E +:40E3000008211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343069AD31A0693069A079B9A4208D2089B1B680893089B1B68002BE7D100235BE065 +:40E34000C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B68083B1A00039B11001800FFF761FF03000593059B5C68039B1800FFF753FF0300AF +:40E380005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079A019B1A43089B5A60089B08211800FFF73FFF030009931EE0089B5B680322934353 +:40E3C0001A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B5A60089B059A1A60059B08211800FFF71FFF03000993099B18000AB010BD00B5FA +:40E4000087B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FF03000393039B083B039300230493019B08211800FFF7FCFE0300059309E0059B8A +:40E440000493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7E1FE03005968059A5268032082438A1A5A60049B002B03D1059B00225A6003E0CB +:40E48000059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B0019057 +:40E4C000019B180002B0704782B00190019B180002B07047014B5B69180070476005000886B00390029101920093039B002B08D0029B002B05D0019B002B02D0009B002BB4 +:40E5000001D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039B009A5A61029B019A5343009AD218039B1A61009B059308E0059A019BD3180493D2 +:40E54000059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180006B0704786B00190EFF310830393039B0593019B002B01D1002314E072B6019B54 +:40E580005B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B00D162B6049B180006B0704784B001900091EFF310830293029B0393019B002B89 +:40E5C00009D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B5A69009B1A60019B009A5A61019B5B685A1E019B5A60039B002B00D162B600235D +:40E60000180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF03000393039B002B0FD0019B1800FFF74CFF0300180002F053F9030002930399029B3E +:40E640000022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FFF7B9FA0023F9E0039B0793029B03330322AE +:40E680009343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D804235B4219000020FFF79CFA0023DCE0079B069A53430593019B002B48D0019BA3 +:40E6C0001B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322134003D1019BDB68232B13D809235B4219000020FFF776FA0023B6E0019BDB6851 +:40E70000002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134003D1049A059B9A4218D20A235B4219000020FFF757FA002397E0049B002B0DD09F +:40E740000A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002B1CD1434B9C229B58002B08D0404B9C229B581800FFF7F6FE03000B9309E03C4B3D +:40E7800080229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D12F4B9B6F059900221800FFF787FD030055 +:40E7C0000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B9C229B580B9A11001800FFF7DFFE07E01F4B80229B580B9A11001800FFF7FFFD4A +:40E8000000230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A431A700B9B002B19D00B9B06221A700B9B27226A4412789A700B9B089A5A600B9B86 +:40E8400000229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B4219000020FFF7BEF90B9B18000CB010BD6005000807E6021010B584B00190009120 +:40E88000019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039B11001800FFF79EF9002320E0039B0C331800FFF757FE03000293029B002B15D167 +:40E8C000009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF7F9FD03001900200001F0C2FF029B180004B010BD00B587B001900091019B180064 +:40E90000FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800FFF760F904235B422AE0059B0C33009A11001800FFF73AFE03000493049B002BB5 +:40E940001DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B1800FFF7B1FD0300180001F0B8FF030002930399029B0122180002F0EBF9049B1E +:40E98000180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0039B1B78062B02D1009B002B08D004235A42039B11001800FFF714F9002307E0E3 +:40E9C000039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B1800FFF76BFD03000393039B002B03D0039B1B78062B09D004235A42039B1100A3 +:40EA00001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029B002B07D1039B1800FFF74EFD0300180001F026FE029B180005B000BD80B588B0DA +:40EA4000039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF7C1F8002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0061 +:40EA800000DF03000793079B180008B080BDC04651E6021080B586B001900091FFF7F8FC031E03D1FFF7FFFC031E08D0009A019B11001800FFF767FF030005930BE0019BA9 +:40EAC0000493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04679E8021080B586B001900091FFF7D0FC031E03D1FFF7D7FC031E08D0009A019BB3 +:40EB000011001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044B1F0000DF03000593059B180006B080BDF5E8021082B0EFF305830193019B5A1E31 +:40EB40009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B6918007047E3 +:40EB80006005000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B05930023049304E0059B0493059B5B680593059B002B05D0059BDA78009BDB78FE +:40EBC0009A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B009ADA62049B002B03D0049B009A5A600FE0019B009A1A630BE0009B00225A6094 +:40EC0000009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B002B00D162B6C04606B0704788B00190EFF310830393039B069372B6019B9B6A28 +:40EC40000593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD0019BDB6A079314E072B613236B44079A92781A70079B01229A70069B002B00D123 +:40EC800062B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0C046079B180008B0704782B001900091009B5B68002B05D0009B5B68009A9268A9 +:40ECC0009A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E0009B5A68019B1A63C04602B0704700B589B00190019B9B78002B5ED0019BDB684A +:40ED00000793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF745FC079B9B68002B00D195E0079B9B685B78932B00D08FE0079B0C331800FFF772 +:40ED400011FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03000593059B00220021180001F0F3FF059B180001F03FFF03000493049B08331B680F +:40ED80000393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A70049B0C331B68DAB2069BDA70069A079B11001800FFF7E6FE4EE0019B9B68079382 +:40EDC000019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE0300180001F07BFD03000593059B00220021180001F0AEFF059B180001F0FAFE43 +:40EE000003000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B0C331B68002B06D0049B0C331B681A00019BDB781370019B00221A70079B0C3383 +:40EE4000019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FEF7F4 +:40EE8000C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C0007980CF0AAFF0300DBB2E3181F2B07D804235B4219000020FEF7A7FE0023E8E0039BD8 +:40EEC000079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6905930B9B002B0FD00B9B0322134003D1019BDB68332B13D809235B4219000B +:40EF00000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE0023B6E00A9B002B0FD00A9B0322134003D1059A069B9A4218D20A235B4219000020CB +:40EF4000FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E00023089300230B9300230A930B9B002B1CD1494BA0229B58002B08D0474BA0229B5876 +:40EF80001800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1364B92 +:40EFC000DB6F069900221800FFF780F903000A930A9B002B1ED127236B441B780122134015D02D4BA0229B58002B08D02A4BA0229B580B9A11001800FFF7D8FA07E0264BF1 +:40F0000080229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FE27236B4427226A44127802210A431A700B9B002B25D00B9B08221A700B9B272213 +:40F040006A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B0022DA620B9B00221A630B9B0C3318000A9B079A0399FFF733FA074B074A1A6759 +:40F0800005E005235B4219000020FEF7BDFD0B9B18000CB010BDC04660050008EFEC021010B58CB00390029100936B4607331A70039B1800FFF754FD03000A930A9B002B7B +:40F0C00006D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD04235B428DE00A9B9B68002B35D00A9B9B685B78832B30D10A9B1800FFF737FD030025 +:40F10000180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD03000893089B08331B6807930A9B5A6A0299079B180008F0B8FD089B0C331B68002B89 +:40F1400007D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF701FA03000693069B002B1CD0069B0C3318000A9B5A6A029B190008F095FD069BC2 +:40F1800007221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC00230B932BE0009B002B25D0009B1900932001F0F5FD031E1AD00A9B1800FFF790 +:40F1C000D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833029A1A60089B0C336A46073212781A6002235B420B9302E003235B420B930B9BAC +:40F2000018000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF7E4FC09 +:40F2400004235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800FFF723FD099B0C3319000A9B5A6A029B180008F019FD019B002B03D0099BDA78C7 +:40F28000019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D00A9B9B685B78932B3ED10A9B0C331800FFF758F903000993099B002B34D00A9B27 +:40F2C0001800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B180001F087FC03000793079B08331B680693099B0C3318000A9B5A6A069B1900F9 +:40F3000008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9B11001800FFF72EFC00230B9329E0009B002B23D0009B1900832001F031FD031E57 +:40F3400018D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF309830593059B0793079B0833029A1A60079B0C33019A1A6002235B420B9302E003235B42FB +:40F380000B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7DFFB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D00F +:40F3C00004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F803000593059B002B26D0059B0C331800069B5A6A029B190008F057FC059B07221A70E5 +:40F40000059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A60059B1800FFF7A2FB0300180001F028F90023079302E003235B420793079B180093 +:40F4400009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B110018006D +:40F48000FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C331900069B5A6A029B180008F0FDFB019B002B03D0059BDA78019B1A70059B0C336D +:40F4C000069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793079B180009B000BD80B588B0039002910192FFF71FFB031E03D1FFF726FB031E90 +:40F5000008D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC04661EE021048 +:40F5400090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD0009C6B4607331A78029903982300FFF70CFF0300099319E0039B0893029B0793AA +:40F580001B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A00059B044C270000DF03000993099B18000BB090BDA1F0021090B58BB0039002917C +:40F5C00001920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF0300099313E0039B0893029B0793019B0693009B0593089B1800079B1900069B90 +:40F600001A00059B044C270000DF03000993099B18000BB090BDC04607F2021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341FD +:40F64000DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070476005000800B587B00190019B059331E0059B5B690493059B13 +:40F68000DB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF0300180001F01BF903000393039B00220021180001F04EFB059B039ADA60039BD2 +:40F6C000DA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BCAD1C04607B000BD00B587B00190019B002B27D0019B1B680293019B5B68049366 +:40F70000019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B4219000020FEF734FA00235EE0019BDB68002B0DD009235B4219000020FEF728FA60 +:40F74000002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0234B94229B581800FEF7FCFE0300059309E01F4B80229B5801221C211800FEF724 +:40F78000A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B04221A70059B0F226A4412789A70049BDAB2059BDA70059B029A5A60059B002225 +:40F7C0009A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B4219000020FEF7D4F9059B180007B000BD6005000800B587B001900091019B180007 +:40F80000FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B11001800FEF7B6F901235B4289E0049B002B03D0049B1B78042B09D004235A42049B110015 +:40F840001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049B5A61049B00221A61039BDB6A002B03D0039BDB6A049A1A61039B049ADA62049B91 +:40F8800001221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D1049B1B7EFF2B0AD110235A42049B11001800FEF76DF903235B4205933EE0049BA9 +:40F8C0001B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A000223134014D0049BDB6820229A56039B20215B569A420BDA049BDB68039A20215156202275 +:40F900009954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF799FE0200039B1900100000F0A1FF02235B42059302E003235B420593059B1800B1 +:40F9400007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B002B09D108235A42059B11001800FEF70FF901235B42A8E0059B002B03D0059B0D +:40F980001B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002B09D10F235A42059B11001800FEF7F0F803235B4289E0059BDA68049B9A4209D0E6 +:40F9C0000E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A76059B1B7E002B00D06EE0059B5B69002B04D0059B5B69059A12691A61059B1B6953 +:40FA0000002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A00022313402AD01B236B44049A2121525C1A70049BDB6A079317E0079B9B68002B10D0C3 +:40FA4000079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C1A70079B5B690793079B002BE4D1049B1B226A44202112785A54059B9B68002B1C +:40FA80001FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F059F9059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B012295 +:40FAC0001A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD03000393039B002B03D0039B1B78042B09D004235A42039B11001800FEF749F804239E +:40FB00005B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B69039A12691A61039B1B69002B05D0039B1B69039A52695A6103E0039B5A69029B26 +:40FB4000DA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059317E0059B9B68002B10D0059B9B6820229B5613226A44127852B29A4206DA059B02 +:40FB80009A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613226A44127852B29A4209D0029B13226A44202112785A54029B180000F0B0FE039B89 +:40FBC0009B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B0022180001F0B6F8039B9B68002BEAD1002001F059F8039B00221A70039B9B78C7 +:40FC00001A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF7C5FC07E0054B80229B58039A11001800FEF7E5FB0023180007B000BD600500084E +:40FC400080B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF797FF0023039308E0019B0293029B1800044B1F0000DF03000393039B180004B07F +:40FC800080BDC046E9F6021080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD006235A42019B11001800FDF771FF06235B4205930BE0019B0493009B0393049BE6 +:40FCC00018000399044B1F0000DF03000593059B180006B080BDC046F5F7021080B584B00190FFF79BFC031E03D1FFF7A2FC031E0AD006235A42019B11001800FDF748FFE9 +:40FD000006235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC04645F9021080B584B00190FFF775FC031E03D1FFF77CFC031E0AD00623CE +:40FD40005A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC046D1FA021082B0EFF305830193019B5A1E2F +:40FD80009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B691800704791 +:40FDC0006005000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B89013B9AB2019B9A810123059301E000230593049B002B00D162B6059B180006B02C +:40FE0000704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B9B8901339AB2019B9A810123059301E000230593049B002B00D162B6059B1800AD +:40FE400006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B1800FFF7A3FF0300180000F038FD03000393039B00220021180000F06BFFC0460F +:40FE800005B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B9A4207D904235B4219000020FDF782FE002373E0019B002B24D0019B1B6805935F +:40FEC000019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B4219000020FDF766FE002357E0019BDB68002B0BD009235B4219000020FDF75AFE40 +:40FF000000234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98229B581800FEF71EFB0300079309E01E4B80229B58012210211800FEF7C7F9030039 +:40FF400007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A70079B1B226A4412789A70079B059A5A60079B00229A60029B9AB2079B9A81039BAA +:40FF80009AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B000BDC046FFFF00006005000845FE021010B584B001900091019B1800FFF7F0FEC8 +:40FFC00003000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD04235B4226E0029B1800FFF7EBFE031E02D0002303931CE0009B002B16D0009BE4 +:020000041003E7 +:400000001900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE03001900200000F026FC02235B42039302E003235B420393039B180004B010BD00B587B001909D +:40004000019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B11001800FDF7A6FD04235B422AE0049B9B68002B12D0049B1800FFF797FE0300D6 +:40008000180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800FFF7AFFE031E02D00023059309E011235A42049B11001800FDF77CFD03235B42CA +:4000C0000593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039B002B03D0039B1B78052B09D004235A42039B11001800FDF75DFD04235B423BE090 +:40010000039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB0300029303235942029B0022180000F015FE039B9B68002BEAD1002000F0B8FD039B00221A70039BC4 +:400140009B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A11001800FEF724FA07E0064B80229B58039A11001800FEF744F90023180005B000BDC0469B +:400180006005000800B585B001900091019B1800FFF706FE03000293029B002B06D0029B1B78052B02D1009B002B09D004235A42029B11001800FDF7FDFC04235B420CE0EA +:4001C000029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD00B585B00190019B1800FFF7D9FD03000293029B002B03D0029B1B78052B09D0E3 +:4002000004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD0029B1800FFF7C2FD0300180000F028FA0023039309E011235A42029B110018004E +:40024000FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF789FD031E03D1FFF790FD031E08D006235B4219000020FDF79DFC002307930EE00B +:40028000039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC04685FE021080B586B001900091FFF75EFD031E03D1FFF765FD4B +:4002C000031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046B1FF021080B584B056 +:400300000190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC0463B00031091 +:4003400080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B11001800FDF728FC06235B42039308E0019B0293029B1800044B1F0000DF03000393039B2C +:40038000180004B080BDC046CD000310024B802252055A60C046704700ED00E082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704724 +:4003C00082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047014B1B7A180070476005000886B00190EFF310830293029B04930E230A +:400400006B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B56229B5A013399B2164B56229952144BDA6D134B58215B5A9B00D318019A1A60104B5E +:4004400058229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084B5822002199520123059301E000230593049B002B00D162B6059B180006B07047DA +:400480006005000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B61C4B56229B5A002B29D01A4B56229B5A013B99B2174B56229952164BDA6D154B59 +:4004C0005A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B5A2299520B4B5A229B5A6A46063212889A4206D1074B5A220021995201E00023D4 +:400500000393029B002B00D162B6039B180005B000BDC0466005000800B583B001F0C2FA2D4BDB685A1C2C4BDA602B4B1B6D002B02D0294B1B6D984700F004FB002000F08D +:40054000B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B1A6C1D4BDA6334E01B4BDB6B002B04D0194BDB6B5A1E184BDA63174BDB6B002B43 +:4005800027D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B9B6B20215B569A4213D1019B180000F0DCF9094B9B6B180000F0F2F9019B18003A +:4005C00000F062FB044B019A9A63034B1A6C024BDA63C04603B000BD6005000810B582B0FFF750FF03000193019B002B3CD0019B1B78072B36D89A001F4BD3181B689F461A +:400600001E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFE03001800A0471EE0144B9C6E019B1800FFF7C6FE03001800A04714E00F4BDC6E36 +:40064000019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800A04700E0C046BBE7C046002000F01CFBC04602B010BDC046204F041060050008AC +:4006800000B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE08E0064B01229A7204E0019B19000220FDF7C6F9C04603B000BDC046600500088E +:4006C00082B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B002006B4607331A702023180002B0704782B0EFF305830193019B5A1E9341DBB218000A +:4007000002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700007F +:40074000014B1B7A1800704760050008014B5B69180070476005000882B00190024B019A5A61C04602B070476005000886B001900091EFF310830393039B059372B6019B71 +:400780009A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B0704786B001900091EFF310830393039B059372B6019B9B6A0493019B9B6A009AD2434C +:4007C0001A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019B0222134029D1EFF310830593059B069372B6039B9B6A0793019B0122134005D09F +:40080000079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079306E0039B9B6A029AD2431A40039B9A62069B002B18D162B616E0039B9B6A079397 +:40084000019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029A134001D100230793079B180008B0704700B587B001900091009B002B2CD0009B0C +:4008800020229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DA009B059ADA60009B6C +:4008C000049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B584B00190019B9B680393039B002B12D0039B9A68019B9A60039B9B68002B07D07E +:40090000039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B585B00190019B039302E0039BDB680393039B002B03D0039B1B78012BF5D0039B80 +:400940001800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B11001800FFF786FFC04605B000BD82B00190019BDB68002B10D0019BDB68019A92689A602E +:40098000019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B07047000000B583B00190019B01225A70019A044B11001800FFF75CFFC04603B000BDC046A2 +:4009C0007C05000884B001900091009B013321D1002303932C4B1B6B029304E0029B0393029B1B690293029B002BF7D1019B009ADA61019B039A5A61019B00221A61039B73 +:400A0000002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E0029BDB69009AD31A0093029B0393029B1B690293029B002B04D0029BDA69009B76 +:400A40009A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A1A6102E0084B019ADA62029B002B08D0029BDA69009BD21A029BDA61029B019A49 +:400A80005A61C04604B070476005000882B00190019BDB69013323D1019B5B69002B04D1274B1A6B019B9A4246D1019B1B69002B04D0019B1B69019A52695A61019B5B693C +:400AC000002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0019B5B69002B04D1154BDA6A019B9A4222D1019B1B69002B0DD0019B1B69019A1C +:400B00001269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6103E0019B1A69024BDA62C04602B07047C0464F +:400B40006005000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019BDB69002B42D1019B5B78532B12D006DC332B11D0432B11D0132B11D019E0732BB0 +:400B800010D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046019B1800FFF7D8FE019B1800FFF75D +:400BC000EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00225A61034B019ADA6200E0C04603B000BD6005000810B584B00190019B9C6B019B55 +:400C000022229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019B01225A70019B20229B560393154B1800FFF77FFD03000593059B9B68049304E02C +:400C4000049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B059ADA60019B049A9A60059B019A9A60049B002B02D0049B019ADA60C04607B087 +:400C800000BDC0467C05000800B583B00190019B02225A70034B019A9A6100F0BBF8C04603B000BD6005000810B586B0019017246C44FFF745FD03002370FFF747FD0300F9 +:400CC0000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B002B31D0039B20229A56049B20215B569A4229DD039B1800FFF737FE049B1800B8 +:400D0000FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B20229A56049B20215B569A4208DD049B1800FFF771FF019B1800FFF7A5FF03E02A +:400D4000019B1800FFF72CFEC04606B010BDC0466005000800B587B0039002916B4607331A70039B1800FFF745FF03000593059B029A1A60039B1800FFF788FE6B460733BE +:400D80001B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD000000B585B0020000916B4607331A70FFF7C7FC0300022B01D0002324E0FFF7C6FCD3 +:400DC00003000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A46073212785A70009A039B11001800FFF7EAFD074B1800FFF773FD03000393039B180035 +:400E0000FFF742FF0123180005B000BD600500087C05000800B583B0FFF798FC03000193019B002B10D0019B9A6B019B1B6B9A4205D9019B1B6B1B68054A934204D0019B71 +:400E400019000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B14D1019B596A019B23229B5C1A00019B1800FFF7B0FC03000393039B002B05D0B6 +:400E80000399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B002B07D104235B4219000020FCF75EFE0023AFE1019B002B56D0019B1B680793ED +:400EC000019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9B002B0FD00D9B0322134003D1019BDB68432B13D809235B4219000020FCF736FEB7 +:400F0000002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002B0ED00B9B0722134002D10A9B002B07D10B235B4219000020FCF718FE002369E1E3 +:400F4000099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020FCF704FE002355E10023079300230C9300230D9300230B9300230A93182309936D +:400F80000A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD002337E10D9B002B1CD19C4B88229B58002B08D0994B88229B581800FDF7D2FAE4 +:400FC00003000D9309E0954B80229B58012244211800FDF77BF903000D9323236B4401221A7003E023236B4400221A700D9B002B5DD00B9B002B5AD10A9B002B25D1884B8A +:401000005B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B002B1BD023236B4423226A44127810210A431A7012E0794B5B6F0A99002218008E +:40104000FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B1DD123236B441B780122134015D06B4B88229B58002B08D0684B88229B580D9A99 +:4010800011001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D9323236B4423226A44127802210A431A700D9B002B00D1A0E00D9B01221A700D9B01227A +:4010C0005A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A600D9B0022DA600D9B00221A610D9B00225A610D9B00229A610D9B0022DA61099BCF +:4011000059B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002199540D9B00225A620D9B00229A620D9B0022DA620D9B0B9A1A630D9B0A9A5A632F +:401140000B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B1B680422134010D00A9B9B08113B059308E0069B04330693069B2B4A1A60059B9C +:40118000013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD31800221A60059B01330593059B0D2BF3D1069B34331E4A1A60069B3833039A1A60069BCA +:4011C0003C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB21900FFF76EFA03002360069B2033029A1A600A4B0F4A1A6605E005235B42190000202F +:40120000FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC046600500081C4E0410A52E5AE2CCCCCCCC11170310550E031000B583B0FFF788FA0300019344 +:40124000019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B190010006B +:40128000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B47 +:4012C00080229B58019A11001800FDF798F8C04603B000BD6005000800B583B0FFF736FA03000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6AE5 +:401300001800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF309830093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019B62 +:40134000DB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B04225A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA60C8 +:40138000044B019A5A6302E0C04600E0C04603B000BDC046600500087C05000800B587B001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009BDE +:4013C000002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D103235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F929 +:4014000003000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF903000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039ACA +:401440001340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B585B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB0123B6 +:401480005B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F90300B6 +:4014C0000193019B002B01D1002301E0019B9B6A180003B000BD00B587B0039002910192FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE095 +:40150000039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049B1800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B24A +:40154000049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0FD +:40158000039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B421EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009A1A +:4015C000039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029B180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D92 +:401600001D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D16B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B002124 +:401640001800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B46073300221A706B4607331B78180003B000BD600500081C4E041035DA02108D190310BF +:4016800080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B4219000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B1900C6 +:4016C000049B1A00044B1F0000DF03000793079B180008B080BDC046950E031080B582B0FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DF43 +:4017000003000193019B180002B080BD3512031080B5FCF78BFA054B1F0000DF01235B4219000020FCF722FAFEE7C046D912031080B586B001900091FEF7D9FF031E03D1D9 +:40174000FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC0469D130310A6 +:4017800080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF7E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B0BF +:4017C00080BDC0465F14031080B582B0FEF78FFF031E03D1FEF796FF031E02D00023019304E0044B1F0000DF03000193019B180002B080BDB714031080B588B00390029131 +:401800000192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906235B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF0300A7 +:401840000793079B180008B080BDC046D714031082B00190019B180002B0704784B001900091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB6832 +:401880000293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B8F +:4018C000002B03D0039B019ADA6002E0024B019A5A64C04604B070476005000882B00190019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047AA +:401900006005000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E0019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009B75 +:40194000002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B11001800FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD007 +:4019800000E0C04603B000BD6005000800B587B00190164B586E154B1B6E1A000821FDF7A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4BCA +:4019C000D86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6818009047EBE7C04607B000BD1C4E0410600500080519031000B585B00190009101 +:401A0000019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B0F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A603C +:401A4000094B039A5A60084B00229A60074B00221A700023180005B000BDC04604060008FFFFFF0000ED00E010E000E084750008094B1B78002B06D0074B00221A70074BB6 +:401A80008022D2045A60064B054A126801210A431A60C0467047C0468475000800ED00E010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B8D +:401AC0001800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B000BDC046404F0410E04F04107047EFF3108072B6704780F310887047FFF7F6FF60 +:401B00000E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808490860BFF34F8FCEF7F3FAFEE7F8610410CE +:401B40001062041050150008E08900080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B07047D3 +:401B8000B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F0CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B008 +:401BC000364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE0239B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB00802276 +:401C00005204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1501E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC023D8 +:401C40005B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A00C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF7CC +:401C80007FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC0460000264084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F22134019 +:401CC0000D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD3181B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A6F +:401D00000D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB010F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4BE2 +:401D40000F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00F1 +:401D8000D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78E4 +:401DC000002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774BD358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F072 +:401E000047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB004D +:401E4000D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B4489 +:401E80001A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A236B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0AE2 +:401EC0001F2213400493384AC023DB00D3581B0C1F22134003930F9B059A53430499180009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4AAA +:401F0000E0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AFF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD030098 +:401F40000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4B1A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B6837 +:401F8000174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A60C04611B000BDC046000026402851041000127A0000366E011006000884050000F1 +:401FC00008060008000021400C06000804060008140600083F420F0040420F001C060008E7030000180600082006000882B0054A8023D358032213400193019B180002B0D2 +:402000007047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049B032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B58 +:402040000E4A13430393039B03221343039309498022039B8B50C046064A8823D35810221340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA05BB +:4020800000B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019B13 +:4020C0001800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A008021042001F049FCC04610BDC046E876000810B5034B180001F041FBC04610BDC04653 +:40210000E075000810B5034B180001F037FBC04610BDC0463876000800B583B002F091FC030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B180037 +:4021400001F092F9019B180002F07FFCC04603B000BDC046887500083C51041070510410A451041010B5034B180001F007FBC04610BDC04688750008084B5B6C1B0AFF2266 +:4021800013403A2B08D1054B044A526C04490A40E82189010A435A64C046704700002740FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C046000027407A +:4021C000FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD3585B005B08054A8B5000230193019B180002B0704703004A00000026400C0500001A +:4022000000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002BEB +:4022400001D000230393039B180005B000BDC04602004A0000002740044B1B69042213405A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A49DD +:40228000094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B180004B0704701004A000000264084B001900A006B4603331A70114B0393019B042BFB +:4022C00019D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B4603331B780F2003401A43019BE0339B005A5000230393039B180004B07047C04625 +:4023000001004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4603331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B78C2 +:402340001B01302003401A43019BE0339B005A5000230393039B180004B0704701004A000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B787D +:402380001B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B002006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B004 +:4023C0007047C0460000214082B002006B4607331A70084B074A1269074911406A460732127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B018 +:4024000002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C490B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA5024 +:40244000C04603B000BDC04613090000D85104100000264000B583B002006B4606331A806B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD35830 +:402480000A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B090000D85104100000264004050000FEFCFFFF82B002006B4607331A700948084A094B38 +:4024C000D358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070470000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C04636 +:402500007047C046000026400405000000B583B002006B4607331A706B4607331B780F2B05D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B46073302 +:402540001B781902F0231B010B401A43A023DB00C250C04603B000BD080A0000D851041000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4ACA +:402580000D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B781903E023DB010B401A43A023DB00C250C04603B000BD2E0A0000D851041000002640F1 +:4025C000FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0460000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B110050 +:40260000180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A431A60C04603B000BD910A0000D851041000002740FFFCFFFF044B044A126880212C +:4026400009060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D0052037 +:40268000FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE01210020FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F0C3 +:4026C000F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA13C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B190054 +:40270000012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF7C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD71 +:402740006421002002F004FAC04604B010BDC04620A107002C5204101027000010B584B06B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC0464D +:402780003852041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A48002300930023002277 +:4027C000002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039A1F480023009313000622032100F0F8FB039A1C480023009313000622012100F04D +:40280000EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042100F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062144 +:4028400000F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC04600003240800032408005324006060000070600000003324010B5034B1800FFF751 +:40288000C3FBC04610BDC04600000810C046704782B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B040 +:4028C0007047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180002F0CEF8019B5B01034A94466344180003B000BD485204100000234000B583B0A7 +:402900000190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A94466344180003B000BDC046485204100010234000B585B0039002910192019B1B0C1B04E5 +:4029400006D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084B1100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC04615 +:402980004852041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F06FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0C66 +:4029C0001A43039B1A60039B1B68C04605B000BD6A020000485204106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C9A +:402A0000019B9A60C04603B000BDC0464852041010B5D1F7EBFE054B186880235B001A000021FFF7AFFFC04610BDC0467C77000800B583B06B4603221A806B4622229A7088 +:402A40006B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B1B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF65 +:402A80006B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D1054B5321180001F0EBFFC04603B000BD112A03107C7700089C52041078770008EE +:402AC00010B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000FFF77CFFC04610BD787700089C520410024B1B691B0EDBB21800704700002140A0 +:402B0000024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0AAFF019B5B01034A94466344180003B000BDF0520410F0 +:402B40000000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F0B3 +:402B80007FFF019A0299039B180000F0FDFA0300180005B000BDC046F052041010B5044B02221900002000F0B7FDC04610BDC0466D10000810B584B001901E4B0393019B43 +:402BC000180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B8D +:402C00001A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00110018000AF0D0FF03000393039B180004B010BD06005200807700080001001C65 +:402C400060F59000080600089808000010B584B001900091204B0393019B180000F092F8031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A1B +:402C80009A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A431400114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A183C +:402CC00080235B00110018000AF07EFF03000393039B180004B010BD060052008077000800010006808D5B000806000884B00190019B1E4A93420BD9019B1D4A934207D851 +:402D0000019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD8019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019B0E +:402D40000F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B420393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF153E +:402D8000FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D1012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D0C8 +:402DC0002B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD08022520093423BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE00A +:402E00001E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E0A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB0303937F +:402E400011E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E00F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F02C +:402E8000050000F0030000F0010052000200520003005200010050000200500005005200FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A00012329 +:402EC0005340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C046084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD02005000C3 +:402F000080770008000025400C0400008C04000000B589B0039002916B4607331A70029B072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A00F5 +:402F4000244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B010693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B46073394 +:402F80001B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40B8 +:402FC000059B1A43069B5A60C04609B000BDC04643020000445304100000CEBF0010030400B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F2207 +:40300000934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB1B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D2438C +:4030400013400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2191400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB62 +:403080001A780299039B1800FFF742FFC04607B000BDC0469453041000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A6098 +:4030C000C04603B000BDC046E453041000B583B001900091009B1B0C1B0405D0064A074B1100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA5020000E453041027 +:4031000082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA76 +:40314000002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B07B +:4031800000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019A039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B059358 +:4031C000059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A60002360 +:40320000039301E0034B0393039B180005B000BD3854041001008A0082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A4001219140B0 +:403240000A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180001F00AFC019B5B01034A94466344180003B000BD8C540410A7 +:403280000000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B5B01044A94466344180003B000BDC0468C5404100010234000B585B00390029102 +:4032C0000192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D0D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A6019 +:40330000C04605B000BDC0468C54041082B00190019BDB68180002B0704782B00190019B1B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B110079 +:40334000180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A0200008C5404106B0200002B +:4033800000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B1B041A0C019B9A60C04603B000BDC0468C54041082B001900091019B009ADA606B +:4033C000C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C180002B0704782B00190019B1B041B0C180002B07047000000B583B0019000914C +:40340000009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300180003B000BDC0467E0300008C54041082B00190019B1B68002B01DA002300E0E4 +:40344000014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04602B07047A077000810B590B00390039B002B04D13B4B4F21180001F001FB039BA2 +:403480005B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F0EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B5721A0 +:4034C000180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C303CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B688B +:40350000DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB1C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F038 +:4035400013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B010BDC046E054041000B587B00390029101920093039B072B04D9244BB3211800A2 +:4035800001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AFF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A6100 +:4035C000059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF76BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5E3A +:40360000059B9A81C04607B000BDC046E0540410A077000800B58BB00390029101920093019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FADA +:40364000029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B1A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089BF1 +:403680005B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B691800FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A60C3 +:4036C000089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A11001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099BB9 +:4037000018000BB000BDC046E0540410A077000807028A0004028A0000B587B0039002910192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B4381 +:40374000D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059301E0054B0593059B180007B000BDC046E0540410A07700080A028A0010B588B080 +:4037800001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B42363 +:4037C000FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019B1F +:403800005C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FD031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039BE3 +:403840001B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B680493049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B180051 +:40388000FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FD019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019BCC +:4038C0009B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC046E054041000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B016D +:40390000034A94466344180003B000BD345504100000234082B00190019BDB68180002B07047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F0CD +:403940009FF8019A0299039B1800FFF71DFC0300180005B000BDC0463455041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B587B00390029130 +:403980000192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B1800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029BCC +:4039C0001F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A601A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B688A +:403A0000124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D1002305930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B075 +:403A400000BDC04603018A00A4770008A877000801018A0000B589B001900A006B4603331A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A42C2 +:403A80004DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B7801225340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059B0F +:403AC0005A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A92008A1812680399C9430A401A600023069301E00F4B06930D4B1B680021180050 +:403B0000FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B0693069B180009B000BDC04603018800A47700080201880004018A0000B587B0BB +:403B40000190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A134007 +:403B800002D0074B059304E0064B059301E0064B0593059B180007B000BDC046A4770008010188000001880004018A0082B001900091019A90239B000099D150C04602B00C +:403BC000704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704710B584B00190009100230393FD +:403C0000019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0E9 +:403C4000802300E04023180002B0704710B586B0039002910192039B002B02D0029B002B01D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B64 +:403C800008D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7B032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B90 +:403CC000072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B9B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002BDD +:403D000009D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D0029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B78D4 +:403D4000012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B68D7 +:403D8000032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B68072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE77 +:403DC000029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B04D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B9B +:403E00009B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4B4B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B73 +:403E4000464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F01225340DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A023D +:403E800000E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802292041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B63211800C5 +:403EC00000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FD029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B7836 +:403F00001A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002B02D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029BD7 +:403F40005B7C002B0CD080239B000AE00160AA00000069403056041092F4FFFF8CF8FFFF00231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A43D4 +:403F8000029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E00B +:403FC00000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF221A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399EF +:40400000C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F02FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B00CF +:4040400000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B7893 +:40408000012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213401900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B2121B2 +:4040C0005B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A8123F4 +:404100009B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A50019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019B14 +:4041400000221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046305604106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019BAC +:404180001B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B00221A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B4121BD +:4041C000180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B1B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB05B3 +:404200009A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D21180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A688023B0 +:404240009B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B029A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A43AE +:40428000019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BD8456041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042B1D +:4042C00032D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF339A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B005A +:404300005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD0339B005A5000230393039B180004B0704701004A000000264070B590B005900491F1 +:4043400000230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF339B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A93420A +:4043800002D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049B5B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A70F6 +:4043C00007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B01D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A7F +:40440000019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7A3B +:40444000002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F061 +:4044800051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BDAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102BDE +:4044C00004D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E070230E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049BA4 +:404500005A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B1100180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A0063 +:40454000FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71784B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B96 +:40458000013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B78102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002BF1 +:4045C00001D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934201D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B783C +:404600001A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B401A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019BCA +:404640008133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF339B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B041 +:40468000019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B8133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F97B +:4046C000009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009B002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0067 +:4047000030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063300229B5E9B0830496A4606320020125E9208C032920052586946063109880800B4 +:4047400003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F23C3 +:404780001340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2065 +:4047C00018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B5E +:4048000035D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B00229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF779 +:404840005FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B00229B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC046E0560410BA +:4048800000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B46063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069BCF +:4048C0009A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039A08 +:404900000A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B0299BC +:40494000039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B5B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4BBB +:404980000299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0C046C04608B07047345704100000214000B585B0020000916B4606331A80184B9A +:4049C0009A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E10331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D1500C +:404A000009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC04600ED00E000000008E0560410000000100230800803D001300238FCD1C046C04658 +:404A40007047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606331B88044A127853431800FFF7E1FFC04603B000BD1C06000882B0019001BEFEE70E +:404A800000B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFF1015000828150008064B802212069A64044B9B6C002B01DB002300E0024B1800E3 +:404AC0007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134004D0019B8022D20213430193019B180002B070470000264000B583B00190019B56 +:404B00001A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019B1A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F0B1 +:404B400005F8C04603B000BD2C150008FEE7000084B0020000916B4607331A706B4607331B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334AFE +:404B8000E8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8235B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039BE9 +:404BC000032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA506B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E00023DE +:404C0000039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E0042304E0022302E0012300E000230393084B084A12680F218A431100039A0F2052 +:404C400002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD3581F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180065 +:404C800002B07047000026401CFF000000B585B002006B4607331A70002303936B4607331B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FEE4 +:404CC0001F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE03000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4684 +:404D000007331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821002000F06BF905E00221002000F066F9054B0393039B180005B000BD54570410FA +:404D4000B877000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B0AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE0300029301 +:404D8000FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA00F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A05AA +:404DC000E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B500920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F229D +:404E000093431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FE00F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC0600005457041096 +:404E4000000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD03000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A780121D1 +:404E80000A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B1B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B039337 +:404EC000049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B7C +:404F00001B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17236B441B78180007B000BDC046B8770008B0770008B477000800B587B001901723AF +:404F40006B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049A019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B4451 +:404F80001B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D0019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4BA2 +:404FC0001A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF734FD17236B441B78180007B000BDC046B8770008B0770008B477000800B589B06B +:4050000002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B4607331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B46073383 +:405040001B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B4606331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494BBC +:4050800011001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B6806932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A7856 +:4050C000069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B6906939C +:40510000069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A4201 +:4051400020D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA100098473A +:4051800003000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B180009B000BD5457041021080000B0770008BC770008FF004200B4770008044B044A13 +:4051C0009269802149040A439A61C0467047C04600F02540034B034A926903490A409A61C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B505A +:405200000649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02E8 +:40524000D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F0000015 +:40528000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE087 +:4052C000019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A43019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7F24 +:40530000002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D10399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A68E3 +:405340000398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31801221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A60CE +:40538000019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F023EE +:4053C0001B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A43019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6A01 +:4054000003221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BDB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B0089016B +:405440004118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059B180006B07047C0460100B60082B001900023180002B0704782B0019000231800C4 +:4054800002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B420393039B180005B000BD00B587B0039002910192009300230593019A029B1100E0 +:4054C0001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B074A934206D9009B064A934202D880239B0001E001235B42180002B07047C04675 +:40550000FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B05180002B0704782B0019080235B03180002B0704782B001900023180002B0704782B09B +:4055400002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B070470000EC +:4055800084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B55 +:4055C00011001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE502000073 +:40560000A8570410E602000000B587B0039002910192029B072B05D9134A144B11001800FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039B43 +:405640009B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039B9A62C04607B000BD8E030000A85704108F03000084B002006B4607331A706B4639 +:4056800006330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E230393B7 +:4056C0000EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B070478458041082B0EFF305830193019B5A1E9341DBB2180002B0D1 +:40570000704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D2218006B +:40574000F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E1800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019BBF +:405780001B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE0019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC046CB +:4057C000C04605B000BDC046F85704102C580410305804103C58041010B586B003900A000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A441288B6 +:405800009A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E1800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A001C +:4058400001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B4400229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF70E +:405880006CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E1800FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC04641 +:4058C000F85704102C5804104C5804106458041000B583B001900A006B4603331A70019B002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B5622E1 +:405900001800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC046F85704102C5804103C58041000B583B001900A006B4603331A70019B002B05D11C +:405940000E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F76DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046F8570410B3 +:405980002C5804103C58041082B00190019BDBB2180002B0704782B00190019B1B14DBB20F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B0A4 +:4059C000704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B036 +:405A00007047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D9CD +:405A40000F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDA9 +:405A8000E5020000A0580410E602000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D09B +:405AC000012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B070470D +:405B0000F058041010B586B0020002910E236B441A800E236B4400229B5E013353D00E236B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FF59 +:405B400003001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400229B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF7D9 +:405B80002FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059B01221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B0022180002 +:405BC000FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB28A +:405C00001A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E1800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B421F +:405C40000593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A4113000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB264 +:405C8000D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFD180007B000BDC046280600080C59041000B585B0020000916B4607331A70FF23EF +:405CC00003936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D91E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F712 +:405D00009DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91400A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B6891 +:405D40009A4202D9029B00225A60F6F7A7FB039B180005B000BDC04638060008585904108C590410AC59041000B587B002006B4607331A70FF2305936B4607331A7813006C +:405D80005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F74DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B78 +:405DC0005B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A4213D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF03005B +:405E00000593059BFF2BDED000E0C046F6F746FB059B180007B000BD38060008585904108C590410F459041000B585B0020000916B4606331A806B46063300229B5E039311 +:405E4000039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B4606330122A9 +:405E800052421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B000BDC046585904106C5A0410605A0410C077000800B585B0020000916B460633FE +:405EC0001A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F7ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200F1 +:405F0000D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFAC04605B000BDC046585904106C5A0410605A0410C0770008845A041010B58EB05C +:405F400008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D31801331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C379 +:405F800001230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A68274903005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001ABA6 +:405FC00000225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A78174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A93EC +:406000000FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B01330A930A9B002BECD0C0460EB010BDC046B05A041028060008B85A041038060008C5 +:40604000680600087006000882B00190019B1B12DBB2180002B0704786B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED84F +:406080002249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029BCF +:4060C0000F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059BF9 +:40610000180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B69 +:40614000032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA0208000844663449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B00D2 +:406180005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032B1B +:4061C00038D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB0208000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A5010 +:406200001049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BB0208000844663449B005A5000230593059B180006B0704701004A00B2 +:40624000FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B8A +:4062800035D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002BE0 +:4062C00015D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014058 +:4063000084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B7876 +:40634000022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB009E +:40638000D35800230393039B180004B07047C04601004A000000014000FF008084B0020000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D15A +:4063C000009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B01D5 +:40640000FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B180004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B0B0 +:406440000190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E0402340 +:40648000180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B583B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019B30 +:4064C00011001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B5B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B00190009123 +:406500004D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B67 +:406540009A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF779FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800F7 +:40658000F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF7FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039B26 +:4065C0005B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C00AA +:40660000009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD03000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A00CC5B04105C +:4066400000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019BC3 +:4066800008229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BD8C500410EB +:4066C000F04F0410F45B041000B593B0019002AB180040231A00002101F078FB02AB0C225A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A00CE +:4067000002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E9341D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FEE3 +:40674000C04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D15F +:40678000012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434B1B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E110066 +:4067C0001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B11001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C5A +:40680000059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E11001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059B3B +:406840000822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A81E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13239D +:406880006B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B1800F5F70AFF07B000BD0105000040780008688900088C500410F04F041000009FBF1D +:4068C0006C5C041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039B11001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B0019000910F +:40690000019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDC04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B6C +:406940001B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B681800FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B68C8 +:406980001800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B46063300227C +:4069C0009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09494D +:406A00006B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04602B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB0749FF +:406A40006B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B47 +:406A800041D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441C +:406AC0001B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B00A8 +:406B00005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B1C +:406B400003936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1E4 +:406B8000009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A500023EB +:406BC0000393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4656 +:406C000007331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F207D +:406C400003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008082B001900091019B009A9A61C04602B012 +:406C8000704784B00390029101920399029A98235B0092018A18D318019A1A600399029A98235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019BC3 +:406CC0009A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B00390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B079 +:406D0000019000910199009A84235B0092018A18D3181B68180002B07047000000B583B00190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF0023A9 +:406D4000180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF7AD +:406D8000D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D016 +:406DC000134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC0465C +:406E000044780008E05C0410000038409C0600082C5D0410505D04104D6D0310D85C041010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B0019000020C1 +:406E4000FFF738F8044B00221A60C04610BDC046000038409C0600084478000810B5074B1B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC04644780008C6 +:406E80000000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02930E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B4D +:406EC00005481A000021FFF70AFF0020FFF770FDC04605B000BDC046000038404478000810B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC046A1 +:406F00000000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C046D05C0410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC046FD +:406F4000B406000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833E7 +:406F8000416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B18687047C046B406000870B505000C1E40D0002802D0836B002B3ED00126636E33428A +:406FC00033D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF8002323637D +:40700000616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE7216976 +:407040002800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E80469C +:4070800093B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D046 +:4070C000E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF8002350 +:407100002363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC402200 +:407140000120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD62 +:407180008AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF6C +:4071C0000100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D53000B6 +:4072000070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F0A5F9F8E7B4060008885D0410C5710310DA +:4072400010B5024900F09AF910BDC046A96F0310002310B5040003604360836081814366C281036143618361082200215C3000F0ADFD2000064BE4612362064B5830636284 +:40728000054BA362054BE36200F0C2F910BDC0460182031029820310658203109182031070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B92379 +:4072C00003229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A363280000F094F970BDC046B88900084172031000 +:4073000010B5024800F088F910BDC046C489000810B5024800F082F910BDC046C4890008F8B50C000600F6F79BF8204FBB685D6803239D431E4B2C1B9C466444240B1D4B96 +:40734000013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF80020F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B92 +:407380001C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E74C0C0008EF0F0000FF0F0000487800085410000899 +:4073C000F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F5368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B0428C +:4074000065D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000F6F7BF +:4074400019F8F8BD680A042850D8A809020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E9368C2 +:40748000B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4B21 +:4074C00020001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D802005C305B32C000ACE7012392109340BE +:407500007A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A88 +:40754000904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B6015606CE7C0464C0C0008FF010000540C0008581000087878000854050000F8B547462E +:40758000CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD130005B +:4075C0000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0E5FA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BD70 +:407600005C1000085C1000085C100008641000087047C0467047C0467047C0467047C04610B5034B01001868F4F7A0FD10BDC046B406000810B5034B01001868F4F7CDFD84 +:4076400010BDC046B4060008F0B557464546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E0F5F7F6FEF823FF339D4200D88FE2680A8B +:4076800000D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E0624662 +:4076C000636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B4692 +:40770000914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD063 +:4077400003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E568C2 +:407780000836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083021E0102926D83800F5F75AFE1025182302208B4EF3181A005C68083A944200D156 +:4077C0002EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F749FE2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F23D5 +:4078000040208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4A32 +:40784000944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B6802 +:40788000013300D16CE14B46019A9B1A59185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D14C +:4078C00042E14B46C01A01235844184353461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E2180A +:40790000506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2B00DCC6E001222900134311436519616096 +:407940003800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B42BE +:407980009C46B218944463469A6803239846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656063 +:4079C00070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C0464C0C0008FF01000054100008787800080F100000487800080810000070780008EC +:407A00007478000873688EE608239B46073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A6005 +:407A4000F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B42C4 +:407A80009C46E1444B469B680138994500D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4656 +:407AC00053603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B9842C7 +:407B00001CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E232F +:407B40007F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E65B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B495A +:407B80008A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C046487800085405000082B000290AD0002A0BD0002B0BD0137831 +:407BC0000B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D0013026 +:407C00001042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A43EA +:407C40003242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C788218A34204D015E003780C78A34211D10130E1 +:407C800001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103EDA +:407CC000350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF50043383 +:407D0000A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5CC9 +:407D4000C254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E6064 +:407D8000A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D193240A7 +:407DC000C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2CF8 +:407E000014D927001A00103F3E09013636019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD10322E1 +:407E400097430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083F8A +:407E8000F5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504695 +:407EC00081438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132AB9 +:407F000000D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000F5F7A8FA1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B92 +:407F400025D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029A2D +:407F80003500D36892685C46D3609A60D5E74A460120464652684946024032434E464144034372604C444B6063680831184360600198F4F712F9CFE71100F4F7D7F80500EF +:407FC000CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D928 +:4080000096E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A009346A3449B4500DA4FE7D7E7032002998446DD +:40804000496881434046091910300290814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC5346524655469268DB680835D3609A60221F242AB5 +:4080800000D98EE0132A00D888E05346316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46424641449960039B01989A1A01231A4388 +:4080C0004A605246526813404246134352465360F5F7D0F943E733680360736843601B2A2DD803003200083308320DE72B00320011685C4619605168D146596092689A6057 +:408100001BE74346FA185B469A604346C91A0123194351607A6801981340424613437B60F5F7A8F935001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B36829 +:408140008360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320018331032BCE7336932000361030071695F +:40818000183318324161BFE65346326951469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D032001833103268 +:4081C0006EE75346326951469A613200706920331832C86164E7C0464C0C0008002370B5064C050008002360F5F7C6F8431C00D070BD2368002BFBD02B60F9E7DC89000859 +:4082000070B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E002228 +:40824000022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BDFFEFFFFF70B50C000E25495F03F010F8431C06D08023A2895B011343A381206562 +:4082800070BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB2002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD0EF +:4082C00001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A4324 +:4083000013433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D483C +:408340008A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392077E +:408380002AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A090A401A2102014302D1100E190E401ACF +:4083C00070BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD01010101BE +:40840000031C0A7801311A700133002AF9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D10433196892 +:408440000A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B434D +:408480009B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD1043058 +:4084C0000431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C04640 +:40850000FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A731C3470002C1DD0012406E00D5D013A355501330134002D14D0002AF6D1F0BD52 +:4085400005000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D02E00DBE79C180021002AE8D019700133A342FBD1E3E7C04680808080FFFEFEFE87 +:4085800030B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002C4C +:4085C000E3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D34446634675 +:408600001C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D84346501C0133834203D36246494618009D +:4086400011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE734 +:408680001D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002CAA +:4086C00009D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7BDFA002800D074E000231A009A46631E9846594601233800A14617004446B04696 +:408700005B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1AED +:408740009A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE042465244AD +:40878000505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E765 +:4087C0000020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A0021E6 +:408800004044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D10A +:408840000133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E740465044DD +:408880009FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A42534101303E +:4088C0001E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF7D9FC641B061E12D0012CF0D03F190121B84200D8391A0F001F +:408900001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF795F900285CD1002399464346013B009348 +:4089400042460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF90028D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED172 +:408980005246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C88428D +:4089C00003D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E74346E31A434500D243460133039300230A +:408A00004246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF7DDF8002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C4F +:408A40008019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039BC5 +:408A800038009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FB036818001993FFF7ABFC1890AB891B06F6 +:408AC00005D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001348D +:408B00002378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD3770122CD +:408B400052429246002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE7F4 +:408B80003A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD0122B6 +:408BC0000B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34683001B1814785B0058182100531C303935 +:408C00001A000929F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FDDA +:408C4000630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A9C +:408C800000D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA944648336344119353460E9A0793924500DA0792E1 +:408CC000002313934346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B68884678 +:408D0000102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DC1E +:408D4000B0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F077F907220F9B07339343013294469C4425 +:408D800062460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414604F02CFE002801D000F0FDFD0122484B52422800414603F001F8002801D000F009 +:408DC000F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E7002207 +:408E0000303B15001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A306B0 +:408E400000D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B69 +:408E800000D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A94 +:408EC000119166460E93F5E69C5D0410445F0410FFFFEF7F005F0410129310231C438B46A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C920022043317 +:408F00000D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F9309 +:408F4000E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FD4E +:408F8000E30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A93 +:408FC00001D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A46DB +:4090000013935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E93002311959A4613934BE68B4641461293002994 +:4090400000D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B073339 +:409080009343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A70483293 +:4090C0005A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE5E1 +:409100008B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920123020099E68B461293A30600D483E607220F9B75 +:4091400007339343013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002386 +:4091800016AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B681D +:4091C00002340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0105F04104A +:40920000245F0410545F0410103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA946B8 +:409240000C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE008366E +:40928000089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B96099 +:4092C0007B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F06F +:4093000037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B013433600123736004 +:409340007B68BC6001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119DA3 +:40938000149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C467360434664440133BC607B60072B00DC61E73A0006990998D1 +:4093C00002F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DD15 +:4094000066E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103DC4 +:409440000832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A46641926 +:40948000013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA72 +:4094C000002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A00D1 +:409500000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FB90 +:40954000BC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723CA08354311002A000340303323702800E3 +:409580000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB445F0410405F0410545F04101F98002800DC96E2139A149913009046E4 +:4095C0008B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DC2A +:4096000000F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F951 +:40964000002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFB0C +:40968000030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7F39 +:4096C000BC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B96080 +:409700007B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFB1B +:4097400013680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DCD8 +:409780007EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F867 +:4097C000002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930336A +:409800008B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401338A +:409840007260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A0FDD1399119A8C466244326042467260DF +:409880007A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103E0E +:4098C000102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A686444013236 +:40990000BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC6898462A +:4099400032AE13E5545F0410072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C3770800104361 +:409980000C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E25346013323 +:4099C00000D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453AAD +:409A000013005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE200230022E8 +:409A40004846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D18B +:409A8000F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9AE7 +:409AC0000A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC08360028B6 +:409B000007D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E132000832002800DACCE111980133106014987B60441865 +:409B40005060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A0006996C +:409B8000099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18601861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB0293C0 +:409BC0005346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D045 +:409C0000FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF811 +:409C40001198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B18E7 +:409C80006A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E303126 +:409CC000217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C0133B3 +:409D000021AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB170B +:409D40001A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9B55 +:409D8000BC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793F2 +:409DC000062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019395 +:409E000003234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B93 +:409E40009446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C046405F0410045F0410385F04101F9B1393002B00DCD5E05246002A00D092E0E20725 +:409E800000D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A14936F +:409EC0000E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD7B +:409F0000002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA8F +:409F4000521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF781 +:409F800010FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E50123234090 +:409FC000139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF7B9 +:40A00000F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF75 +:40A0400016ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716AB27 +:40A08000D877FEF779FF01235B429A46C4E7C046545F0410085F04100C5F041030B504009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B42029272 +:40A0C0000592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E7ED +:40A100008B232360F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC046B4060008002904D0FF2A04D801200A707047002077 +:40A14000FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE431C00D070BD2368002BFBD02B60F9E7DC890008002370B5064C05000800236090 +:40A18000F2F76AFE431C00D070BD2368002BFBD02B60F9E7DC890008F0B545468046DE4657464E464246E0B50C69126985B00B0002910020944200DD90E014229446634474 +:40A1C00099464A46013CA300D6181422424493469B4433681500591C5B461868019201F057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395F9 +:40A20000634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD240 +:40A24000039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B6A +:40A28000019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B83 +:40A2C0000A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D00DD +:40A3000016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD002844 +:40A340002FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD0030008333E +:40A38000269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B0345 +:40A3C000B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FFB04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F051 +:40A4000067FD02000B002000290001F01DFE04000D0003F013FB0022039000232000290001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849685C +:40A440003B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA84E29C460D930023049A99461100614497 +:40A480000491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239A11 +:40A4C000039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFEAA +:40A500005346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E4059 +:40A540001A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0B0FC04000D0076100837002EEED12200089872 +:40A5800009992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC002801D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B00B1 +:40A5C00094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B88 +:40A6000002F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F0D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002868 +:40A6400001D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002801D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149B32 +:40A68000994638E00000F07F415F04100F27000068600410746004100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33FA060041073 +:40A6C0007860041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B01F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F0AE +:40A70000E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F902000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F0F0 +:40A7400033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE16A +:40A780003100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D0F93491918E68A48D5E50023524600215364504600F080FD5346186401235B42B8 +:40A7C00007930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D30002200E4 +:40A800002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B003000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F083 +:40A8400047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE00022534B02F02CFB01239C460022002341 +:40A8800006000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF8804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013BAA +:40A8C000303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B0028 +:40A9000001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE20A +:40A94000079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C446346049300F060FD804632E0069A039B10 +:40A98000D21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF9020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03FDD +:40A9C000000024403204000012040000000010FE405F0410A0600410069B4C4608930023984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A089238 +:40AA0000049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0FE +:40AA4000A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020229D +:40AA80003000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C467D +:40AAC000844463460693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B4E +:40AB000000D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E2079C0A9A013C2300944663440893012335 +:40AB4000334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD494604004246380000F0ECFDC3688146CB +:40AB8000002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002B08 +:40ABC00000DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A22D7 +:40AC0000380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946F7 +:40AC4000013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E0290000230A22504600F051FB050049462800D2 +:40AC8000FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B78B9 +:40ACC0000A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F068 +:40AD000003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D00984642 +:40AD40000E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F83B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F0BE +:40AD8000C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA2460500A7 +:40ADC0008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E62A +:40AE0000079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B93C8 +:40AE4000FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FAE2 +:40AE8000089E099F32003B0004000D0000F0A0FF002800D0B2E0802000068446390061440B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21A20 +:40AEC0000D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346186401230A90079323930E93FFF707FB0C +:40AF000043460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C90 +:40AF40002E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A234038 +:40AF8000DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED1AF +:40AFC000FFF7E4FA039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E500239946D5 +:40B0000098460CE70000F07F000014403304000000001C400000C0FCA060041078600410129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F067 +:40B04000FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F000600CD +:40B0800002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D14446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B89 +:40B0C000651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5E2 +:40B10000069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013BB9 +:40B1400013933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE0022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B7059 +:40B180000C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BF9 +:40B1C000A84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002BAC +:40B2000001DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF749 +:40B2400073FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C046A0600410000024400000E03F00001C400000C0FC044B1B68586B002801D0F0302D +:40B2800070470248FBE7C046B4060008E00A000870B50500080011000022064C22601A00F1F7F8FF431C00D070BD2368002BFBD02B60F9E7DC89000870B50400C06C0D00A8 +:40B2C00000280AD0AB00C318186800280FD002681A6000230361C36070BD212204212000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF002847 +:40B30000F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000211430036801311E04360C56431B0C5343FB +:40B34000F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFFB2 +:40B3800029002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0FF6 +:40B3C00001D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B0803601000704719040022002901D11B0C1D +:40B400001032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF795 +:40B440003BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF7BC +:40B480001BFF14220300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B4440193D1 +:40B4C0009A454FD253461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120CD5 +:40B500001B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734365 +:40B5400007043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D187 +:40B58000013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C4B +:40B5C000002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD04246D26C736894469B0063441A6864103260D0 +:40B600001E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE70121404663 +:40B64000FFF73AFE054B05004361012303614346986400230360B5E76861041071020000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB3688346914674 +:40B6800049689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD132694846970031001F2214311040CF1981460028F9 +:40B6C00025D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A683260B5 +:40B700001E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B043932 +:40B740001C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F428A +:40B7800000D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB4746260000251437143643465968FFF780FD43468146C56018691C +:40B7C0004D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B18120419149E +:40B80000120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA24365 +:40B84000043289180439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E007C +:40B88000A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D1B1 +:40B8C000009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B46 +:40B900009C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFFC7 +:40B94000CEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D070BD2368002BFBD02B60F9E7DC890008F0B557464E46DE464546E0B5936883B0D1 +:40B9800001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218521090465A46501CC0194246404501D9B0 +:40B9C000804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F9B3892A4A134080221343B381434620005A463461B8463C00584473619B1A3060AE +:40BA0000B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E7019887 +:40BA4000F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3815246002340429360536003E0002352460020536003B03CBC90469946A246AB46E3 +:40BA8000F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D3121209026B +:40BAC00065D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4215 +:40BB000001D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38D +:40BB40008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A27 +:40BB80005241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030B0C +:40BBC0008B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430BD8 +:40BC00008B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D358 +:40BC40000B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00DC +:40BC8000C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B42F2 +:40BCC0002DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D336 +:40BD00008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B0094 +:40BD4000C01A5241411A00D20146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C0468446101C0A +:40BD800062468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F004 +:40BDC00025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD012010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B0498424F +:40BE000001D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40187047C04604030202010101010000000000000000002B11D1002A0FD1002900D15E +:40BE4000002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684601B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E00B7 +:40BE800080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D980235B029846C4444B46514343433604360C250C24046544A419591849192000FF +:40BEC0000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B422FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D5FE +:40BF000074E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E0824267 +:40BF4000D0D900220023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A434646E9 +:40BF80007B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B00F5 +:40BFC0005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A40170032 +:40C000001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B446974066462D +:40C040003B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D168 +:40C08000AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E1BB +:40C0C0001F2D00DD38E12020431B9A460B0050468340994613004846EB401843030050468240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650AE2 +:40C10000002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD8409140D6 +:40C1400097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C406007AB +:40C18000760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B00ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E204005B +:40C1C00067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E7331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E030 +:40C200000A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE143 +:40C240008022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE0BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C400597 +:40C28000400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA4292411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D00283884 +:40C2C000854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E4190E +:40C30000E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B00D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD840B7 +:40C340000300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EB04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51A19 +:40C380002600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BBA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E6002500260027AF +:40C3C00006E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A080098409C46834653461000D84003005846184363469A40531E9A4153460243D94003E7D5 +:40C4000026003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B9A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E661 +:40C44000002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E6BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E6200038433B +:40C48000002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E650460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A4199 +:40C4C0004B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4099 +:40C5000033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE796 +:40C540001800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4292411C1B5242A41AD846F1E51800104300D163E7F808670707438020E408000364 +:40C58000044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304ED6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E408BD +:40C5C00000030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E500216BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027434F +:40C600007C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E70C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED040239F +:40C6400056469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D00CD +:40C680008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F600134333439946C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D019599 +:40C6C0005ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A9446002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F46030062 +:40C70000334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B4A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB78 +:40C7400003000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B468B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E7A0 +:40C78000594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B0022C2 +:40C7C0001B1A8FE7002301229B468BE75146032288E700239846013304260024039367E70323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C460023002421 +:40C800000022984600211203130B0A0D12051A432305124C40462240134362465B00D2075B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034CD4 +:40C84000E0E70023014C00229846DBE7FF07000001FCFFFF746104100DFCFFFFFFFF0F80D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C88 +:40C88000039313041B0C3900280090460193FFF7FFF80200019B83465A43280039009146FFF77CF9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E1AE +:40C8C00002235B429C464544E3444B46EB1A390018000493FFF7DCF8019B05004343390004989946FFF75AF9330409041B0C0B43994509D943446A1E984500D91AE1994561 +:40C9000000D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A46090C4E460D001204120C4543059151437243704352190E0CB218954203D9802523 +:40C940006D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D117E139001800FFF78BF8019B05004343CF +:40C98000390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1884200D804E1023D4144049BCB1A180039000493FFF76CF8019B82464343390059 +:40C9C00004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D9E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F46C4 +:40CA00002A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC4660441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE318B4 +:40CA4000002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318994A934268DD0123029A984C1A400023944698460022C5E680224B4612031342D7 +:40CA80000AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC468A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E60300E3 +:40CAC0005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0843465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B2454B +:40CB0000AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A438A +:40CB40005B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1EB04529D91100864200D065E7039A934200D061E762E7012149420120C21A382AD0 +:40CB800021DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934454E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED011001B +:40CBC0003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340204308431A00430709D00F230340042B05D00100081D88429B415B42D2181302D3 +:40CC00003AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC46E244AA45AD416D424544ED182D1A96E68A1E03994D008D428941494241447618C9 +:40CC400003958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E91411943072300220B4009D00F2300220B400800042BBDD1010053075202120BF7 +:40CC8000C9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D42C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E507 +:40CCC000FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C4262 +:40CD000001D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E71C +:40CD4000FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD1304307008146C0 +:40CD800078427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D15846024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D001202A +:40CDC000013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D88E +:40CE00000020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D040 +:40CE4000002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC90469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE73100022315 +:40CE80000143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C445A8 +:40CEC000D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C0398464E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F5F +:40CF00002404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E400CE +:40CF40008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554ABF00D25997465B460343994600D087E000239B46023308270293CEE742460192DE +:40CF8000022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002112030B0D120B1B051343434A240513401C436400ED0764082C434846210007B064 +:40CFC0003CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F402343D5 +:40D000009B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234320D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A51460200CF +:40D04000D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002299469CE70024002201206EE7534603206BE700239B4601330427002602934CE773 +:40D08000032381460C27029347E780220023002512039946054C82E75C464B4602986FE75C464B46019502986AE7C046FF07000001FCFFFFB4610410FFFF0F800DFCFFFF5A +:40D0C0004A464946170C1A0C1B041B0C08041900000C41431500884619007D437943039589462900150045434D44029545462D0CAA46029D5544A94506D98A46802149028B +:40D100008946CA4451460391290C0491414609042D04090C88462900250C24044144240C0591210041438846210079438A466843414650448146080C48446F43824503D906 +:40D140008021490289464F44010C894639004944029141460F0404993F0C88460004C01980444146049159460F0C0904090C884659438A4639005143894641464A435146C2 +:40D18000090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A46414661437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D1935 +:40D1C000A94503D98021490288464444049F0399B84641448B468345804141428846514608042F04000C3F185846029910188946904292414F44BA46524299469346C244C3 +:40D20000D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B4213437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D0343BF +:40D2400052021343E20156D501205A0803401343E207134364085A48604400284DDD5A0709D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC0007D +:40D2800014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D1D407CE6802259461203114208D0144206D122431203120B45469946434C6EE684 +:40D2C0005B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382AF9 +:40D3000006DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B4151 +:40D340005B42E418230221D50125019B01241D4000230022994622E61F2521006D42281AC1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D00C +:40D380000F2200241A401800042AD6D1030065076402220BDB082B4301259946019B00241D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C0462A +:40D3C000FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E00610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846E8 +:40D40000DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E1002810D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241A20 +:40D4400001261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A441644277 +:40D480000C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DDE9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE18B +:40D4C00020223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D153 +:40D50000AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B0C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946F8 +:40D54000A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760DDBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382BD7 +:40D5800000DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B01369E4200D14BE101225B4B1C407B0817401F43E207174364088FE70800104327 +:40D5C00000D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE70800104300D1CAE0581E8446002800D0E7E05244524580416418404224181700012684 +:40D60000230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4301254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A82450E +:40D64000BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B984614E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E75C +:40D680003800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E70731 +:40D6C000520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202DEC +:40D7000071D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE12026B4 +:40D7400027005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B5242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE602 +:40D780001F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE632 +:40D7C0008C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E7CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B001343F4 +:40D8000000D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE66646EB +:40D840000024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511E8A410021174392E6002E14D126005046064362D0DB43002B5CD187189742924108 +:40D8800064185242A418664687E650462043441EA041002460E7574EB4454ED0802636045B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046F9 +:40D8C000B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A7F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D0084 +:40D90000154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C001700664662 +:40D94000CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E40800030442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E0062 +:40D980002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE6802400252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE57B +:40D9C0000C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441EA04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E5B +:40DA00000D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD05430120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134DA5 +:40DA40000A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE84031 +:40DA8000A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21A02 +:40DAC0001F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B12052243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081A8A +:40DB0000C4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144AFA +:40DB4000D21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B05224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E798 +:40DB8000002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF72BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C046A5 +:40DBC000F8BC08BC9E46704701B40248844601BC604700BF05110008636C69656E745F74657374735F70617274310000636C69656E745F74657374735F70617274315F6D8C +:40DC0000757465780000000025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D757465B3 +:40DC40007820666F722073656375726520706172746974696F6E20636C69656E745F74657374735F7061727431210A0025732025753A204661696C656420746F2063726533 +:40DC8000617465207374617274206D61696E20746872656164206F6620706172746974696F6E20636C69656E745F74657374735F7061727431210A00ECDB03100B00000008 +:40DCC000B41900081C000000636C69656E745F74657374735F70617274315F696E69740025732025753A20706172746974696F6E73206973204E554C4C210A00696E697499 +:40DD00005F706172746974696F6E730025732025753A20496E76616C6964206D736720747970650025732025753A20526563656976656420696E76616C6964207369676ED0 +:40DD4000616C2025640000007365727665725F6D61696E007C7800080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0A0A4661756C74547970653A2080 +:40DD8000000000004D656D4D616E6167654661756C7400004275734661756C740000000055736167654661756C740000486172644661756C740000000A0A436F6E746578E8 +:40DDC000743A00000A0A2D2D204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074696F6E000A52252D34643A202530386CC1 +:40DE0000580000000A53502020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A209E +:40DE40002530386C580A4D535020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A2054687265616400000A50726976203A20557365721D +:40DE8000000000000A50726976203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D535000D4 +:40DEC000B9080010C9080010EB08001025732025753A2053504D2072656164206C656E677468206D69736D6174636800DC0A0010F40A00100C0B0010700B0010FC0B001030 +:40DF0000960C0010B80D0010CE0D0010360E0010C40E0010640F001010160010281600104016001092160010E2160010A61700100A1800102A1C00102A1C0010FC1900103C +:40DF4000601A0010701A0010BC1A00101C1B00102A1C00102A1C00102A1C00102A1C001086190010CA19001042190010101900102A1C00102A1C00102A1C00102A1C00105A +:40DF80002A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C00102A1C001001 +:40DFC0002A1C00102A1C00102A1C00102A1C00102A1C00107C1B0010B41E0010E41E0010381F00109C1F0010AC1F0010742000107073615F6D61635F6F7065726174696F91 +:40E000006E0000007073615F686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E000000007073615F616561645F6F706519 +:40E04000726174696F6E00007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E00000000CB +:40E080007073615F656E74726F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F7065726174696F6E73007073615F6600000066 +:40E0C0007073615F665F6D757465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F2063726561746520D5 +:40E100006D7574657820666F722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C656420746F206372656174652073746172EE +:40E1400074206D61696E20746872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A0100031A0100C0E003100B0000009C5A00085D +:40E180001C0000007073615F665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475760B +:40E1C0007778797A303132333435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000002E2F636F6D706F6E656E74732F544152AA +:40E200004745545F5053412F73657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E545F5053415F5352565F494D50BD +:40E240004C2F706974735F696D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E203E3D205053415F4954535F0A +:40E2800046494C454E414D455F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D455F4D41585F4C454E00000000A6 +:40E2C0007073615F6974735F7365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F5B +:40E300006765745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696E666F2D +:40E340005F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735F72656D6F76655F696D706C28B1 +:40E3800029202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E6578706563746564206D657373616762 +:40E3C00065207479706520256421000025732025753A204B5653746F726520696E6974696174696F6E206661696C656420776974682073746174757320256421000000006B +:40E400006D6573736167655F68616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A20706172746974696F6E2069732095 +:40E440004E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20697473210AB8 +:40E480000000000025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E20697473210A9F +:40E4C0000000000020E403100B000000545F00081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D5007 +:40E500004F4E454E545F5350452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F6964202A29302900000068616E646C655F6D82 +:40E54000656D20213D202828766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5F73697A650000000068616E646C652021C8 +:40E580003D2028287073615F68616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E646578205B25645D2069732062696767657231 +:40E5C000207468616E2068616E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048616E646C65202564206973206E6F742060 +:40E60000666F756E6420696E20657870656374656420696E64657821200A000025732025753A205B4552524F525D205265717565737420666F722064657374726F792062C8 +:40E6400079206E6F6E2D6F776E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746F20676574206D656D6F727920666F72206C +:40E68000616E20696E76616C69642068616E646C6521200A0000000025732025753A205B4552524F525D205265717565737420666F722068616E646C65206D656D6F72790A +:40E6C000206973206E6F7420616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D67722D3E68616E646C65735F706F6F6CAD +:40E700005B706F6F6C5F69785D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67725F68616E646C655F64657374726F790061 +:40E740007073615F686E646C5F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206E6F7420616C6C6F77656420746F20626553 +:40E780002063616C6C65642066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74206465636C6172652065787465726E2066A3 +:40E7C000756E6374696F6E730A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065787465726E2066756E63746945 +:40E800006F6E73206C6973740A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636C69656E74C1 +:40E840002E6300006F734F4B203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F96 +:40E88000736572766963652D3E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A20534944203078257820697320696E76616C6964210A7E +:40E8C0000000000025732025753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F7220766563 +:40E900007273696F6E20256420616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E656374206D657373616765206909 +:40E940007320696E61636365737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D6170686F726520666F7220636F6E6E6563742057 +:40E980006D657373616765006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E672063616C6C206D657373616765206973206976 +:40E9C0006E61636365737369626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A000000DA +:40EA000025732025753A20436F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D6573736167650000007073615F636F6E6ED6 +:40EA40006563745F6173796E6300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E656374007073615F63616C6C42 +:40EA80005F6173796E6300007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F736500000025732025753A204661696C656420696FC2 +:40EAC0007665632056616C69646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D2825642951 +:40EB00000A00000025732025753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E672073746174653A202564207768696C6520256420697307 +:40EB4000206578706563746564210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636F6D6D6F6E0D +:40EB80002E6300002828766F6964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206163746976655F7468726561645F69640061 +:40EBC00076616C69646174655F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174655F61737365727400000000C2 +:40EC000053504D5F6368616E6E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202D204661696C656420746F206328 +:40EC40007265617465206368616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616374697665206D6573736167654A +:40EC800073206D656D6F727920706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D657373616765206461746120697320696E6163636573736904 +:40ECC000626C650A0000000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F7665635B25645D20697320696E61F7 +:40ED0000636365737369626C650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F7665635B25645D206905 +:40ED40007320696E61636365737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D657373616765000000002E2F636FC8 +:40ED80006D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F7365727665722E6300006F734F4B203D3D206F735F730E +:40EDC000746174757300000025732025753A20446571756575652066726F6D20656D7074792071756575650028666C61677320262028307838303030303030302929203D5E +:40EE00003D203000666C616773202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D20637572725F706172746974696F6E000000B5 +:40EE400025732025753A20696E74657272757074206D61736B2030782578206D7573742068617665206F6E6C7920626974732066726F6D2030782578210A00002861737394 +:40EE800065727465645F7369676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C2929207C7C2028282830783830303030303054 +:40EEC00030554C2920213D2074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F7369676E616C732929000025732025753A206D9A +:40EF0000736720697320696E61636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6C79203120626974204F4E2061CB +:40EF40006E64206D757374206265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E6F7420616374697665210A0025732025DC +:40EF8000753A205265636569766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920726F6F74206F66207472757336 +:40EFC00074207365727669636500000025732025753A207073615F676574202D20756E6578706563746564206D65737361676520747970653D3078253038580025732025CD +:40F00000753A20496E76616C696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365737369626C650A000025732025753A204931 +:40F040006E76616C6964206F75747665635F6964780A000025732025753A20496E76616C6964207772697465206F7065726174696F6E20285265717565737465642025645C +:40F080002C20417669616C61626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A2930290000006163746976655F6368616E6EA4 +:40F0C000656C2D3E6D73675F70747220213D202828766F6964202A293029000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77650D +:40F100006420666F72205053415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666FA4 +:40F1400072205053415F4950435F43414C4C000025732025753A207073615F7265706C792829202D20556E6578706563746564206D65737361676520747970653D30782524 +:40F180003038580025732025753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F6964203D202564290A00000000257320255C +:40F1C000753A207073615F63616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A006163746976655F6D73672D3E6368616EEC +:40F200006E656C20213D202828766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E7465727275707420666C616720776974686F7598 +:40F2400074206465636C6172696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E67650A000025732025753A207369676E61C9 +:40F280006C2030782578206D7573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F656F6928292063616C6C6564207769746818 +:40F2C0006F7574207369676E616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F736572766963655F71756575655F646549 +:40F3000071756575650000007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615F72656164000000007073615F77726974D3 +:40F34000650000007073615F7265706C79000000515F4D5554000000515F575F53454D00515F525F53454D002E2F636F6D706F6E656E74732F5441524745545F5053412F17 +:40F3800073706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E63000000286F734FDD +:40F3C0004B203D3D206F735F73746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F7374617475732900000025732025753A206D65737361D9 +:40F400006765206461746120697320696E61636365737369626C650A0000000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756543 +:40F4400075655F73656D20213D204E554C4C000071756575655F726561645F73656D20213D204E554C4C000050F303100B000000786300081C00000058F3031000000000DA +:40F48000946300081000000060F3031000000000A4630008100000006F6E5F706F707065645F6974656D00002E2F636F6D706F6E656E74732F5441524745545F5053412FDB +:40F4C00073706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F6970635F71756575652E63000000717565756520213D204E554C4C000000626173655F7175655D +:40F5000075655F6D656D20213D204E554C4C0000626173655F71756575655F6D656D2D3E6D61676963203D3D204950435F51554555455F424153455F4D414749430000009D +:40F540006D7574657820213D204E554C4C00000066756C6C5F71756575655F73656D20213D204E554C4C0000726561645F73656D20213D204E554C4C0000000071756575F2 +:40F58000652D3E6D61676963203D3D204950435F51554555455F50524F44554345525F4D41474943000000006F734F4B203D3D206F735F737461747573000000286F734F09 +:40F5C0004B203D3D206F735F73746174757329207C7C20286F734572726F7254696D656F7574203D3D206F735F737461747573290000000071756575652D3E6D616769636C +:40F60000203D3D204950435F51554555455F434F4E53554D45525F4D41474943000000000000000000000000095100103D5100105D510010ED5200101B4E00104153001093 +:40F64000B153001021540010374E00108D5400109F540010DD5400102355001073550010AD5500100000000000000000000000000000000071D3021071D302101B4E001090 +:40F6800071D3021071D30210274E0010374E001071D3021071D30210474E0010674E00108B4E001071D302100D0000000D0A00002B49504400000000302C434C4F534544ED +:40F6C00000000000312C434C4F53454400000000322C434C4F53454400000000332C434C4F53454400000000342C434C4F534544000000002B43574A41503A00574946499F +:40F7000020000000554E4C494E4B0000414C524541445920434F4E4E45435445440000004552524F52000000776474207265736574000000536F66742057445420726573F2 +:40F740006574000062757379200000002B43495052454356444154412C000000415400004F4B0A00415445300000000041542B474D52000053444B2076657273696F6E3A25 +:40F7800025642E25642E25640000000041542076657273696F6E3A25642E25642E25642E2564000041542B554152545F4355523D25752C382C312C302C30000041542B5505 +:40F7C0004152545F4355523D25752C382C312C302C33000041542B554152545F4355523D25752C382C312C302C32000041542B554152545F4355523D25752C382C312C30B6 +:40F800002C31000041542B43574D4F44455F4355523D25640000000041542B4349504D55583D310041542B5253540000726561647900000041542B4357444843505F43559B +:40F84000523D25642C25640041542B434950524543564D4F44453D310000000041542B43574A41505F4355523D222573222C22257322000041542B43575141500000000081 +:40F8800041542B4349465352000000002B43494653523A53544149502C222531355B5E225D2200002B43494653523A5354414D41432C222531375B5E225D220041542B43B4 +:40F8C00049505354415F4355523F00002B4349505354415F4355523A676174657761793A222531355B5E225D220000002B4349505354415F4355523A6E65746D61736B3ABB +:40F90000222531355B5E225D2200000041542B43574A41505F4355523F0000002B43574A41505F4355523A22252A5B5E225D222C222531375B5E225D2200000041542B43DD +:40F94000574C41503D22222C222573222C0000002B43574C41503A28252A642C22252A5B5E225D222C256868642C000041542B43574C4150000000005544500041542B431C +:40F98000495053544152543D25642C222573222C222573222C25642C2564000041542B43495053544152543D25642C222573222C222573222C256400455350383236363A33 +:40F9C0003A5F6F70656E5F7564703A20646576696365207265667573656420746F20636C6F736520736F636B6574000054435000455350383236363A3A5F6F70656E5F745D +:40FA000063703A20646576696365207265667573656420746F20636C6F736520736F636B6574000041542B434950444F4D41494E3D222573220000002B434950444F4D41A4 +:40FA4000494E3A2573252A5B0D5D252A5B0A5D0041542B43495053454E443D25642C256C750000003E00000053454E44204F4B002C25642C0000000025640A0025643A00E1 +:40FA800041542B43495052454356444154413D25642C256C7500000041542B434950434C4F53453D256400002B43574C41503A2825642C222533325B5E225D222C256868B0 +:40FAC000642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C25642C25642C25642C25642C2564290A00002B43574C6A +:40FB000041503A2825642C222533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C256472 +:40FB4000290A000025345B5E225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3A5F6F6F625F62757379282920756E7265636F676E697A656420627558 +:40FB800073792073746174650A000000455350383236363A3A5F6F6F625F6275737928292041542074696D656F75740A000000002E2F636F6D706F6E656E74732F776966CC +:40FBC000692F657370383236362D6472697665722F455350383236362F455350383236362E637070000000005F736F636B5F6163746976655F6964203E3D203020262620BE +:40FC00005F736F636B5F6163746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953438F +:40FC40004F4E4E4543540A00434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C6964204154209D +:40FC8000636D640A00000000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F7544 +:40FCC000740A00005F636F6E6E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F4469 +:40FD0000455F4445463D2568686400002E2F706C6174666F726D2F43616C6C6261636B2E680000005F6F7073000000002E2F706C6174666F726D2F53696E676C65746F6ED1 +:40FD40005074722E680000005F707472203D3D202854202A29265F64617461000000000000000000FD5C0010155D0010335D001000000000B71DC1046E3B8209D926430D93 +:40FD8000DC7604136B6BC517B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241A3 +:40FDC000ACAD155F1BB0D45BC2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA1913990609523 +:40FE00003CC0278B8BDDE68F52FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D922 +:40FE40004C1B36C7FB06F7C32220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C53952 +:40FE8000AB0682271C1B4323C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475A2 +:40FEC000DBDD936B6CC0526FB5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A1A2 +:40FF00004BB0A1BFFCAD60BB258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED21 +:40FF40003B6BB0F38C7671F7555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F64C1 +:40FF80003296087A858BC97E5CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28A1 +:40FFC000424D1936F550D8322C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFC21 +:020000041004E6 +:40000000D2202BE2653DEAE6BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB020 +:40004000A2FB3AAE15E6FBAACCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95070 +:4000800045E68E4EF2FB4F4A2BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81CA0 +:4000C000353D9F0282205E065B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A0 +:40010000A550ADD6124D6CD2CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB841F +:40014000D58BBC9A62967D9EBBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B10000000000000000010700103D070010AF +:400180004B5E00100000000000000000F50800101D090010895E00100000000000000000000000000000000071D302101E680010EA670010EE670010F2670010F6670010C4 +:4001C000FA670010FE67001002680010066800100A6800100E68001012680010166800101A680010706800104C680010746800105068001078680010546800105868001083 +:400200005C6800106068001064680010686800106C6800107C6800109A7C00109E7C0010A27C0010A67C0010AA7C0010BE7C0010BE7C0010AE7C0010B27C0010B67C00104A +:40024000BA7C00109EB70010B6B70010B2B70010AAB70010AEB70010A6B70010AEB70010A2B70010AEB70010AEB70010505341004B455900BABE0010D2BE0010CEBE001031 +:40028000C6BE0010CABE0010C2BE0010CABE0010BEBE0010CABE0010CABE0010637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD932646 +:4002C000363FF7CC34A5E5F171D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB26 +:40030000434D338545F9027F503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0AFF +:400340004906245CC2D3AC629195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F898112F +:4003800069D98E949B1E87E9CE5528DF8CA1890DBFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C55460303050B1 +:4003C00002010103CE6767A9562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADEC35 +:40040000B3D4D4675FA2A2FD45AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345CB4 +:4004400051A5A5F4D1E5E534F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E0707097D +:40048000241212361B80809BDFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F650 +:4004C000763B3B4DB7D6D6617DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE68 +:400500008DCBCB4667BEBED97239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CF05 +:40054000E9F9F91004020206FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDFD9 +:4005800077B6B6C1AFDADA754221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C4576F +:4005C00055A7A7F2FC7E7E827A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAD6 +:40060000C7EEEE296BB8B8D32814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DFB +:40064000BDD3D36E43ACACEFC46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB48C +:40068000AC5656FAF3F4F407CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E82378 +:4006C000A1DDDD7CE874749C3E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A340 +:400700006A35355FAE5757F969B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB671 +:400740003C1E1E2215878792C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C31A +:40078000299999B05A2D2D771E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C550603030A1 +:4007C00003020101A9CE67677D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD31 +:4008000067B3D4D4FD5FA2A2EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434B0 +:40084000F451A5A534D1E5E508F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E070779 +:40088000362412129B1B80803DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524C +:4008C0004D763B3B61B7D6D6CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A64 +:40090000468DCBCBD967BEBE4B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454501 +:4009400010E9F9F90604020281FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCD5 +:40098000C177B6B675AFDADA63422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C46B +:4009C000F255A7A782FC7E7E477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C4646D2 +:400A000029C7EEEED36BB8B83C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C2F7 +:400A40006EBDD3D3EF43ACACA6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6C88 +:400A8000FAAC565607F3F4F425CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E874 +:400AC0007CA1DDDD9CE87474213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261613C +:400B00005F6A3535F9AE5757D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B6D +:400B4000223C1E1E9215878720C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C382414116 +:400B8000B0299999775A2D2D111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060309D +:400BC0000103020167A9CE672B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41AD2D +:400C0000D467B3D4A2FD5FA2AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834AC +:400C4000A5F451A5E534D1E5F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0775 +:400C800012362412809B1B80E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A45248 +:400CC0003B4D763BD661B7D6B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46A60 +:400D0000CB468DCBBED967BE394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45FD +:400D4000F910E9F9020604027F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCD1 +:400D8000B6C177B6DA75AFDA2163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C467 +:400DC000A7F255A77E82FC7E3D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46CE +:400E0000EE29C7EEB8D36BB8143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2F3 +:400E4000D36EBDD3ACEF43AC62A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C84 +:400E800056FAAC56F407F3F4EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE870 +:400EC000DD7CA1DD749CE8741F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C26138 +:400F0000355F6A3557F9AE57B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B69 +:400F40001E223C1E87921587E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824112 +:400F800099B029992D775A2D0F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C554913030506099 +:400FC000010103026767A9CE2B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC4129 +:40100000D4D467B3A2A2FD5FAFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A8 +:40104000A5A5F451E5E534D1F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E71 +:401080001212362480809B1BE2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A444 +:4010C0003B3B4D76D6D661B7B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED45C +:40110000CBCB468DBEBED96739394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9 +:40114000F9F910E9020206047F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63CD +:40118000B6B6C177DADA75AF2121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C4579363 +:4011C000A7A7F2557E7E82FC3D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CCA +:40120000EEEE29C7B8B8D36B14143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FEF +:40124000D3D36EBDACACEF436262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D880 +:401280005656FAACF4F407F3EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CB6C +:4012C000DDDD7CA174749CE81F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C234 +:4013000035355F6A5757F9AEB9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D65 +:401340001E1E223C87879215E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3820E +:401380009999B0292D2D775A0F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B94326C +:4013C000A6C2233DEE4C950B42FAC34E082EA16628D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB00CD +:401400008CBCD30AF7E45805B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A7120 +:401440001D29C5896FB7620EAA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4D41 +:40148000AE2AF5B0C8EBBB3C83539961172B047EBA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55CA +:4014C000AD766DF688CC7691F5024C254FE5D7FCC52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE725 +:4015000015929C95BF6D7AEB955259DAD4BE832D587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18EB +:40154000E51A31829751336062537F45B16477E0BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB2807CA +:401580002FB5C20386C57B9AD33708A5302887F223BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DD3 +:4015C000A2F355A0058AE132A4F6EB750B83EC394060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB249E +:40160000D6BDE997894043CC67D99E77B0E842BD07898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB12 +:401640000F8538563DAED51E362D39270A0FD964685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0A7D +:40168000C0A02AE53C22E043121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B4329767C +:4016C000CB23C6DCB6EDFC68B8E4F163D731DCCA426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CD8 +:40170000A970B999119448FA47E96422A8FC8CC4A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE463 +:401740005078920D6A5FCC9B547E4662F68D13C290D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD26780955 +:401780006E5918F4EC9AB701834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37EC +:4017C000FC82CAA6E090D0B033A7D815F104984A41ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04A7 +:40180000018C355DFA877473FB0B412EB3671D5A92DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5934 +:4018400055F2733F1814CE7973C737BF53F7CDEA5FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A801713A +:40188000080CB3DED8B4E49C6456C1907BCB8461D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAB5 +:4018C000F6AD766D9188CC7625F5024CFC4FE5D7D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F21 +:401900009515929CEBBF6D7ADA9552592DD4BE83D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4AE7 +:4019400082E51A31609751334562537FE0B1647784BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28C6 +:40198000032FB5C29A86C57BA5D33708F2302887B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53CF +:4019C000A0A2F35532058AE175A4F6EB390B83ECAA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB9A +:401A000097D6BDE9CC8940437767D99EBDB0E8428807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF0E +:401A4000560F85381E3DAED527362D39640A0FD921685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BA79 +:401A8000E5C0A02A433C22E01D121B170B0E090DADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B432978 +:401AC000DCCB23C668B6EDFC63B8E4F1CAD731DC10426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB316D4 +:401B000099A970B9FA1194482247E964C4A8FC8C1AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D5F +:401B40000D5078929B6A5FCC62547E46C2F68D13E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD267851 +:401B8000F46E591801EC9AB7A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCE8 +:401BC000A6FC82CAB0E090D01533A7D84AF10498F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEAA3 +:401C00005D018C3573FA87742EFB0B415AB3671D5292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF30 +:401C40003F55F273791814CEBF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A80136 +:401C8000DE080CB39CD8B4E4906456C1617BCB8470D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA552030B1 +:401CC0006DF6AD76769188CC4C25F502D7FC4FE5CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F1D +:401D00009C9515927AEBBF6D59DA9552832DD4BE21D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DFE3 +:401D40003182E51A336097517F45625377E0B164AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2 +:401D8000C2032FB57B9A86C508A5D33787F23028A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342ECB +:401DC00055A0A2F3E132058AEB75A4F6EC390B83EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB24199896 +:401E0000E997D6BD43CC89409E7767D942BDB0E88B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E0A +:401E400038560F85D51E3DAE3927362DD9640A0FA621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE29375 +:401E80002AE5C0A0E0433C22171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B4374 +:401EC000C6DCCB23FC68B6EDF163B8E4DCCAD7318510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3D0 +:401F0000B999A97048FA1194642247E98CC4A8FC3F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A5B +:401F4000920D5078CC9B6A5F4662547E13C2F68DB8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD264D +:401F800018F46E59B701EC9A9AA8834F6E65E695E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744EE4 +:401FC000CAA6FC82D0B0E090D81533A7984AF104DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E9F +:40200000355D018C7473FA87412EFB0B1D5AB367D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD22C +:40204000733F55F2CE79181437BF73C7CDEA53F7AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A832 +:40208000B3DE080CE49CD8B4C190645684617BCBB670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520AD +:4020C000766DF6ADCC769188024C25F5E5D7FC4F2ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE70319 +:40210000929C95156D7AEBBF5259DA95BE832DD47421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A1863DF +:402140001A3182E551336097537F45626477E0B16BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2BE +:40218000B5C2032FC57B9A863708A5D32887F230BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34C7 +:4021C000F355A0A28AE13205F6EB75A483EC390B60EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB241992 +:40220000BDE997D64043CC89D99E7767E842BDB0898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD06 +:402240008538560FAED51E3D2D3927360FD9640A5CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE271 +:40228000A02AE5C022E0433C1B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B70 +:4022C00023C6DCCBEDFC68B6E4F163B831DCCAD76385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2BCC +:4023000070B999A99448FA11E9642247FC8CC4A8F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C57 +:4023400078920D505FCC9B6A7E4662548D13C2F6D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD49 +:402380005918F46E9AB701EC4F9AA883956E65E6FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC3774E0 +:4023C00082CAA6FC90D0B0E0A7D8153304984AF1ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D9B +:402400008C355D01877473FA0B412EFB671D5AB3DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599C28 +:40244000F2733F5514CE7918C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171392E +:402480000CB3DE08B4E49CD856C19064CB84617B32B670D56C5C7448B85742D001000000020000000400000008000000100000002000000040000000800000001B00000049 +:4024C000360000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F24 +:402500007F407F7F7F000102030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337FB8 +:402540007F7F7F7F02000000E13A01100D3B0110433B0110000000008F3B0110713B0110AD3B0110DB3B01104145532D3132382D454342004145532D3139322D4543420060 +:402580004145532D3235362D454342004145532D3132382D434243004145532D3139322D434243004145532D3235362D434243004145532D3132382D435452004145532DFF +:4025C0003139322D435452004145532D3235362D435452004145532D3132382D47434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382DB0 +:4026000043434D004145532D3139322D43434D004145532D3235362D43434D0043484143484132300000000043484143484132302D504F4C59313330350000000201000051 +:4026400080000000682504100000000000000000100000004425041003010000C00000007425041000000000000000001000000044250410040100000001000080250410EF +:402680000000000000000000100000004425041005020000800000008C2504101000000000000000100000004425041006020000C0000000982504101000000000000000FB +:4026C00010000000442504100702000000010000A4250410100000000000000010000000442504100B05000080000000B025041010000000000000001000000044250410B3 +:402700000C050000C0000000BC250410100000000000000010000000442504100D05000000010000C825041010000000000000001000000044250410020000000000000083 +:40274000000000000000000000000000F73B0110F73B0110593A0110833A01100E06000080000000D42504100C0000000100000010000000382704100F060000C00000005B +:40278000E02504100C0000000100000010000000382704101006000000010000EC2504100C00000001000000100000003827041002000000000000000000000000000000A2 +:4027C00000000000153C0110153C01109F3A0110C53A01102B08000080000000F82504100C0000000100000010000000B02704102C080000C0000000042604100C000000F1 +:402800000100000010000000B02704102D08000000010000102604100C0000000100000010000000B0270410090000000000000000000000000000006D3C0110353C0110CF +:40284000353C0110A13C0110CB3C011048070000000100001C2604100C0000000000000001000000282804100900000000000000000000000000000000000000E93C01107A +:40288000E93C0110213D01104B3D0110490A000000010000282604100C000000000000000100000068280410020000003C26041003000000582604100400000074260410B4 +:4028C000050000009026041006000000AC26041007000000C82604100B000000E42604100C000000002704100D0000001C2704100E0000005C2704100F00000078270410D9 +:4029000010000000942704102B000000D42704102C000000F02704102D0000000C280410480000004C280410490000008C2804100000000000000000736563703338347215 +:4029400031000000736563703235367231000000202045435020746573742023312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A9B +:40298000200000006661696C656420282575290A000000007061737365640A00202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F741E +:4029C00068657220706F696E74293A2000000000556E6578706563746564206572726F722C2072657475726E20636F6465203D20253038580A0000000A000000303030308F +:402A000030303030303030303030303030303030303030303030303030303030303030303030303030303030303030310000000046464646464646464646464646464646F5 +:402A4000464646464646464639394445463833363134364243394231423444323238333000000000354541364633383941333842384243383145373637373533423135415F +:402A8000413535363945313738324533304142453744323500000000343030303030303030303030303030303030303030303030303030303030303030303030303030300F +:402AC0003030303030303030000000003746464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646460000000045 +:402B000035353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353500000000FC290410302A0410642A04105C +:402B4000982A0410CC2A0410002B0410040018008001000038290410030017000001000044290410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000094 +:402B8000000000000000000001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D03772B +:402BC000F240A463E5E6BCF847422CE1F2D1176BF551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCEB +:402C0000FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +:402C4000EF2AECD3EDC8852A9DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF2025595 +:402C8000382A5482E041F759989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F8C9 +:402CC00029DC9292BF989E5D6F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +:402D00003031444234320000313444454639444541324637394344363538313236333141354346354433454400000000393841410000000038333335444331363342423130 +:402D40003234423635313239433936464445393333443844373233413730414144433837334436443534413742423044000000000000000000000000201C00000000000002 +:402D8000403800000000000060240000000000008070000000000000A06C000000000000C048000000000000E05400000000000000E100000000000020FD000000000000E1 +:402DC00040D900000000000060C50000000000008091000000000000A08D000000000000C0A9000000000000E0B5000000000000534841323234000053484132353600006C +:402E00005348413338340000534841353132000005000000F02D04101C000000400000003BC6011053C6011071C601108DC60110ABC60110D1C60110EDC6011007C701105C +:402E400006000000F82D0410200000004000000023C7011053C6011071C601103BC70110ABC60110D1C60110EDC6011007C7011007000000002E041030000000800000006D +:402E800059C7011071C701108FC70110ABC70110C9C70110EFC701100BC8011025C8011008000000082E0410400000008000000041C8011071C701108FC7011059C8011056 +:402EC000C9C70110EFC701100BC8011025C801105504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61D1 +:402F0000742D636F756E7472794E616D65000000436F756E74727900430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C000000DA +:402F40005504080069642D61742D73746174650053746174650000005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A61FB +:402F800074696F6E000000004F00000055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F55000019 +:402FC0002A864886F70D010901000000656D61696C4164647265737300000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D62EF +:403000006572000053657269616C206E756D62657200000073657269616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F737463 +:40304000616C20616464726573730000706F7374616C416464726573730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F64650082 +:40308000706F7374616C436F646500005504040069642D61742D7375724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D650039 +:4030C000476976656E206E616D650000474E000055042B0069642D61742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0085 +:4031000069642D61742D67656E65726174696F6E5175616C696669657200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175E5 +:40314000616C69666965720055040C0069642D61742D7469746C65005469746C650000007469746C6500000055042E0069642D61742D646E5175616C6966696572000000D5 +:4031800044697374696E67756973686564204E616D65207175616C696669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D004A +:4031C00050736575646F6E796D00000070736575646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E2063AE +:403200006F6D706F6E656E74000000004443000055042D0069642D61742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000E1 +:40324000756E697175654964656E74696669657200000000551D130069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E747F +:4032800073000000551D0F0069642D63652D6B6579557361676500004B6579205573616765000000551D250069642D63652D6578744B657955736167650000004578746524 +:4032C0006E646564204B65792055736167650000551D110069642D63652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000001F +:403300006086480186F842010100000069642D6E657473636170652D6365727474797065000000004E6574736361706520436572746966696361746520547970650000003A +:403340002B060105050703010000000069642D6B702D7365727665724175746800000000544C5320576562205365727665722041757468656E7469636174696F6E00000033 +:403380002B060105050703020000000069642D6B702D636C69656E744175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E00000022 +:4033C0002B060105050703030000000069642D6B702D636F64655369676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6BFF +:40340000702D656D61696C50726F74656374696F6E000000452D6D61696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D6553749E +:40344000616D70696E67000054696D65205374616D70696E670000002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F4353502053696711 +:403480006E696E67000000002A864886F70D01010E00000073686132323457697468525341456E6372797074696F6E005253412077697468205348412D32323400000000CA +:4034C0002A864886F70D01010B00000073686132353657697468525341456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D0101AB +:403500000C00000073686133383457697468525341456E6372797074696F6E005253412077697468205348412D333834000000002A864886F70D01010D000000736861356B +:40354000313257697468525341456E6372797074696F6E005253412077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D5344 +:40358000484132323400000045434453412077697468205348413232340000002A8648CE3D0403020000000065636473612D776974682D5348413235360000004543445360 +:4035C000412077697468205348413235360000002A8648CE3D0403030000000065636473612D776974682D53484133383400000045434453412077697468205348413338D4 +:40360000340000002A8648CE3D0403040000000065636473612D776974682D53484135313200000045434453412077697468205348413531320000002A864886F70D01016A +:403640000A0000005253415353412D50535300002A864886F70D010101000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D656350756285 +:403680006C69634B6579000047656E65726963204543206B657900002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D03010736 +:4036C000000000007365637032353672310000002B810400220000007365637033383472310000002B0E03020700000064657343424300004445532D434243002A86488688 +:40370000F70D0307000000006465732D656465332D636263000000004445532D454445332D4342430000000060864801650304020400000069642D736861323234000000EE +:403740005348412D3232340060864801650304020100000069642D7368613235360000005348412D3235360060864801650304020200000069642D7368613338340000001D +:403780005348412D3338340060864801650304020300000069642D7368613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000B9 +:4037C000484D41432D5348412D323234000000002A864886F70D020900000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020AC9 +:4038000000000000686D61635348413338340000484D41432D5348412D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D534841C8 +:403840002D3531320000000025642E25640000002E25640050360410090000005C3604106C3604100100000070360410070000007836041088360410020000009836041053 +:4038800005000000A0360410A8360410030000000000000000000000000000000000000000000000B836041008000000C4360410C436041003000000D036041005000000DC +:4038C000D8360410D83604100400000000000000000000000000000000000000000000002837041009000000343704104037041005000000483704100900000054370410BA +:4039000060370410060000006837041009000000743704108037041007000000883704100900000094370410A03704100800000000000000000000000000000000000000DB +:403940000000000050726F632D547970653A20342C454E4352595054454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F44D8 +:403980004800000045434453410000005253412D616C7400010000006C39041009CE0110DFCD011025CE01109DCE0110E9CE011035CF011085CF0110A1CF0110CBCF0110BE +:4039C000E9CF0110020000007839041065D0011031D0011073D00110D1D00110000000000000000037D1011053D1011079D1011095D10110030000007C39041065D00110A7 +:403A0000BDD101100000000000000000000000000000000037D1011053D1011079D1011095D10110040000008439041065D00110E7D1011005D2011049D2011000000000CF +:403A40000000000037D1011085D20110ABD2011095D101102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E205225 +:403A800053412050524956415445204B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20451D +:403AC000432050524956415445204B45592D2D2D2D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E20505249564199 +:403B00005445204B45592D2D2D2D2D002D2D2D2D2D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4993 +:403B400043204B45592D2D2D2D2D00002D2D2D2D2D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2DE2 +:403B80002D2D0000020305070B0D1113171D1F25292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4257 +:403BC00091443771CFFBC0B5A5DBB5E95BC25639F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE41B +:403C00008647BEEFC69DC10FCCA10C246F2CE92DAA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72700 +:403C400038211B2EFC6D2C4D130D385354730A65BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419E8 +:403C8000086C371E4C774827B5BCB034B30C1C394AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000063 +:403CC00022AE28D7982F8A42CD65EF23914437712F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CABB9 +:403D0000420203A398AA07D8BE6F7045015B83128CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC17D +:403D4000D24AF19EC1699BE4E3254F388647BEEFB5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F97673 +:403D8000ABDF66EE52513E981032B42D6DC631A83F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A6729291439 +:403DC000FC2FD246850AB72726C9265C38211B2EED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72925A +:403E00006403F14CA1E8BFA2013042BC4B661AA89197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A107E +:403E4000C8D0D2B816C1A41953AB4151086C371E99EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E6842 +:403E8000FCB2EF5DEE828F74602F17436F63A57872ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C608 +:403EC0009C6126EACE3E27CA07C2C021C7B886D11EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711BBB +:403F0000847D0423F577DB289324C7407BABCA32BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446CA7 +:403F40002E2F66656174757265732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766963652E63707000005F77726974655F636D +:403F800061636865000000005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F657261736528616464722C2073697A65290000C3 +:403FC00000000000000000000D72021035720210537202103773021069740210D57402100D780210C17A0210857B0210457C0210577C0210697C0210A37C0210E97C02104D +:40400000217D02106B7600002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F6461746100000000000000000002 +:40404000000000000000000071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D3021071D30210202A2F3F2A +:404080003A3B227C3C3E5C006B7673746F726500202A2F3F3A3B227C3C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C617301 +:4040C0006820617474726962757465730000000054444253544F52453A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52454B +:404100003A20556E61626C65207265736574206172656120617420696E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265639D +:404140006F726420617420696E69740054444253544F52453A20556E61626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556ECD +:4041800061626C6520746F206275696C642052414D207461626C6520617420696E69740054444253544F52453A20556E61626C6520746F20636865636B2077686574686569 +:4041C0007220657261736520756E69742069732065726173656420617420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D204743206183 +:404200007420696E6974000054444253544F52453A20556E61626C6520746F2073796E6320424420617420696E697400000000002E2F647269766572732F4D626564435237 +:40424000432E680063726320213D204E554C4C00400000000000000000000000AD8A0210E98A02108D9F021031A4021005A50210819702102D980210ED980210059802101E +:40428000CD910210B194021091950210B5A50210B5A60210F1A70210C5A8021071AB02102E2F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692EB1 +:4042C00063000000216172655F696E74657272757074735F656E61626C656428290000002E2F746172676574732F5441524745545F437970726573732F5441524745545FDE +:4043000050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F54415247455410 +:404340005F437970726573732F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E430000636F756C64206E6F742070694E +:404380006E6F75740000000070696E6D6170206D69732D6D617463680000000070696E6D6170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D76 +:4043C0006170206E6F7420666F756E6420666F722066756E6374696F6E00000044656570536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D41582914 +:404400000000000044656570536C6565704C6F636B20756E646572666C6F7720283C2030290000002E2F68616C2F6D6265645F7469636B65725F6170692E630030000000F5 +:404440006D617463685F7469636B20213D2071756575652D3E7469636B5F6C6173745F7265616400616D03105D6E0310E16E0310ED6E0310856E0310056F0310216E031080 +:40448000196F031064440410786D00080000000000000000000000000000000071D3021071D3021071D3021071D3021005C1021011C10210C3600010E16000101DC1021030 +:4044C0003D5D00105F5D00107B5D0010975D0010BB5D0010C75D0010DB5D00102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F4397 +:40450000362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970B8 +:40454000726573732F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E4300002E2E2E0A000000002E2F706C6174666FE1 +:40458000726D2F6D6265645F637269746963616C2E630000637269746963616C5F73656374696F6E5F7265656E7472616E63795F636F756E746572203C2055494E54333261 +:4045C0005F4D415800000000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D65643E0000000A0A2B2B204D6265644F53204572726F7220496E0C +:40460000666F202B2B0A4572726F72205374617475733A203078255820436F64653A202564204D6F64756C653A2025640A4572726F72204D6573736167653A2000000000BE +:404640004B65726E656C204572726F723A203078256C582C200000005468726561643A203078256C582C20004D757465783A203078256C582C20000053656D6170686F7260 +:40468000653A203078256C582C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C6167733A203078256C582C200054696D65723A203078256C5802 +:4046C0002C2000004D65737361676551756575653A203078256C582C20000000417373657274696F6E206661696C65643A2000000A4C6F636174696F6E3A203078256C58A8 +:40470000000000000A46696C653A20002B2564000A4572726F722056616C75653A203078256C58000A43757272656E74205468726561643A202573202049643A203078255A +:404740006C5820456E7472793A203078256C5820537461636B53697A653A203078256C5820537461636B4D656D3A203078256C582053503A203078256C5820000A466F729D +:40478000206D6F726520696E666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875622E696F2F6D6265646F732D6572726F722F3F6572726F7293 +:4047C0003D307825303858000A2D2D204D6265644F53204572726F7220496E666F202D2D0A000000B2C80210C2C80210D2C80210E2C80210F2C8021012C9021002C90210D1 +:4048000022C902103CC902103CC902103CC902103CC902103CC902103CC902103CC902103CC902103CC902103CC902103CC9021032C9021052616D2065786563757465201E +:404840006E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900000052616D2065786563757465206E65766572206C6F636B20756E64657297 +:40488000666C6F7720283C2030290000526F6D207772697465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900526F6D20777269746F +:4048C00065206E65766572206C6F636B20756E646572666C6F7720283C203029000000004572726F72202D2077726974696E6720746F20612066696C6520696E20616E2092 +:40490000495352206F7220637269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D2072656164696E672066726F6D20612066696C6520696E206106 +:404940006E20495352206F7220637269746963616C2073656374696F6E0D0A00457863657074696F6E0000002E2F706C6174666F726D2F6D6265645F72657461726765742E +:404980002E6370700000000030203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F49B0 +:4049C0004E5F50524F4752455353203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574AA +:404A0000206F66206D656D6F72790D0A000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00002E2F706C6174666F726D2F53696E676C18 +:404A400065746F6E5074722E680000005F707472203D3D202854202A29265F64617461000000000000000000E5D5021005D6021081CC02103DCC021099CB0210C5CB0210EC +:404A800005C10210B9CB0210C3600010E1600010ABCB02103D5D00105F5D00107B5D0010975D0010BB5D0010B5CC0210DB5D00104465707265636174656420626568617600 +:404AC000696F723A206D696C6C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E746572727570742E0A0000776169745F75732034 +:404B0000626C6F636B73206465657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E672064656C6179730A0061706C6963617469F3 +:404B40006F6E5F756E6E616D65645F6D75746578000000002E2F72746F732F4D757465782E637070000000005F6964004D75746578206C6F636B206661696C65640000001A +:404B80004D7574657820756E6C6F636B206661696C6564006D616C6C6F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D757465780067 +:404BC0006D61696E00000000507265206D61696E20746872656164206E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349F9 +:404C0000532D52544F53206572726F723A20537461636B206F766572666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572F7 +:404C4000666C6F7700000000434D5349532D52544F53206572726F723A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F77000000003E +:404C8000434D5349532D52544F53206572726F723A2053544420432F432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D534970 +:404CC000532D52544F53206572726F723A2053544420432F432B2B206C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D534911 +:404D0000532D52544F53206572726F723A20556E6B6E6F776E000000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636FE2 +:404D40006D706C657465642077697468696E207468652074696D656F757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616C +:404D80006D65746572206572726F720053797374656D206973206F7574206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E74657874000082 +:404DC000556E6B6E6F776E00AADA02105ADA02106ADA02107ADA02108ADA02109ADA02101ADB021016DB021012DB02100EDB02100ADB021006DB02105254582056352E3436 +:404E00002E3000007274785F69646C65000000007274785F74696D657200000003000000E803000005000000346F000810000000000000000000000000000000000000002D +:404E400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000BC4E0410E04E0410044F04105B +:404E8000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044E041088 +:404EC00000000000746F0008440000000070000800020000010000000100000000000000104E041000000000B86F000844000000007200080003000028000000010000007C +:404F000000000000000000000000000000750008340000003475000850000000000000006406031000060310640603101406031064060310280603103C0603105006031003 +:404F40002E2F72746F732F546869735468726561642E6370700000002128666C6167732026206F73466C6167734572726F72290028666C616773203D3D206F73466C616773 +:404F8000734572726F7254696D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028666C616773203D3D206F73466C616773A2 +:404FC0004572726F725265736F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B000002000000000061401200000000010000DE +:4050000000006840120700000005000000006640120500000006000000006440120300000406000000006740120600000007000000006540120400000008000000006540F6 +:4050400012040000000900000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D000000006740120600003C +:40508000FFFF0000FFFFFFFF00000000030000000000614012001500010100000000684012071500010500000000664012051500010600000000644012031500050600009B +:4050C0000000674012061500010700000000654012041500010800000000654012041500010900000000634012021500010A00000000624012011500010B000000006640CE +:4051000012051500010C00000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000E41C0310EA1C0310F01C0310F61C0310FE1C031003000000E6 +:4051400001000000010000000000000005036000040000000100000000000000010000000604600008000000587700086521031008000000010000000200000002000000D0 +:405180000808000309000000010000000000000003000000090900030800000038770008F12003100A0000000100000004000000040000000A0A000C0B0000000100000098 +:4051C00000000000050000000B0B000C10000000F8760008052103102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64657C +:40520000766963652F647269766572732F7065726970686572616C2F737973636C6B2F63795F737973636C6B2E68000000127A0000E1F50500000000000000000000010075 +:4052400000001000000000502E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657236 +:405280006970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F4398 +:4052C000362F5441524745545F4655545552455F53455155414E415F4D305F5053412F73706D5F696E69745F6170692E630000002E2F746172676574732F544152474554B3 +:405300005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68EB +:40534000000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657269706865EF +:4053800072616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652D +:4053C0002F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6300002E2F746172676574732F5441524745545F437970726573732F544152F1 +:405400004745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F74617267657464 +:40544000732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6955 +:4054800070635F6472762E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726976657273BB +:4054C0002F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F15 +:4055000050534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F706970652E630000002E2F746172676574732F54410E +:40554000524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F64F5 +:4055800072762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572D5 +:4055C0006970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F4320 +:40560000362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E680000002E2F746172676574732F54415247455405 +:405640005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742EA8 +:40568000630000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686549 +:4056C00072616C2F737973616E616C6F672F63795F737973616E616C6F672E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545FB5 +:4057000050534F43362F6465766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E742E630000F0480310064903101C49031033 +:4057400032490310484903105E490310744903108A4903102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64657669636593 +:405780002F647269766572732F7065726970686572616C2F737973706D2F63795F737973706D2E63000000002E2F746172676574732F5441524745545F4379707265737329 +:4057C0002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F74617267657450 +:40580000732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6170692E63000000006F626A006F626A2D3E706F72740000006F626A2DE1 +:405840003E70696E20213D204E43000043595F50494E286F626A2D3E70696E29203C2038000000004750494F2070696E207265736572766174696F6E20636F6E666C69633A +:40588000742E00009E560310C2560310C8560310CE560310D4560310BC560310DA5603102E2F746172676574732F5441524745545F437970726573732F5441524745545F1D +:4058C00050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E680000B65A0310DA5A0310E05A0310E65A03107E +:40590000EC5A0310D45A0310F25A0310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720744F +:405940006F20667265652077726F6E6720706F72742F70696E2E00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F7073B9 +:405980006F63365F7574696C732E63006469765F74797065203C2043595F4E554D5F444956494445525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3EA9 +:4059C0006D61785F696E646578000000547279696E6720746F2072656C656173652077726F6E6720636C6F636B20646976696465722E0000705F616C6C6F632D3E6375722C +:405A000072656E745F696E646578203C20705F616C6C6F632D3E6D61785F696E64657800547279696E6720746F2072656C656173652077726F6E67205343422E00000000C4 +:405A4000547279696E6720746F2072656C656173652077726F6E6720544350574D2E00006368616E6E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E7F +:405A8000454C53004E564943206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00000000FC063F0BFD00000000000000006A +:405AC00000000000FEFF000001000000FEFF00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726949 +:405B0000766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545FD3 +:405B400050534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441F0 +:405B8000524745545F437970726573732F5441524745545F50534F43362F73657269616C5F6170692E63000073657269616C5F6964203C204E554D5F53455249414C5F50EC +:405BC0004F525453000000006F626A0053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F5258DA +:405C00002070696E207265736572766174696F6E20636F6E666C6963742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E39 +:405C40000000000053657269616C204354532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617417 +:405C800063682E205265717565737465642070696E7320527820616E642054782063616E2774206265207573656420666F72207468652073616D652053657269616C2063E0 +:405CC0006F6D6D756E69636174696F6E2E00000040420F002000000000005A0003000000FFFFFFFF0000000000000000000000000000000000000000000000000000000059 +:405D00000200000000000000000000000000000000000000000000000000000000000000000000000300000001000000504D2063616C6C6261636B207265676973747261F2 +:405D400074696F6E206661696C656421000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E66CA +:405D80006C6963742E000000B806000843000000504F5349580000002E000000F09003106491031064910310D49003106491031064910310649103106491031064910310FD +:405DC00064910310DC900310BE8B031064910310788B0310C88B031064910310148C0310FE8D0310FE8D0310FE8D0310FE8D0310FE8D0310FE8D0310FE8D0310FE8D031091 +:405E0000FE8D0310649103106491031064910310649103106491031064910310649103106491031064910310649103101C8C0310648D031064910310648D031064910310A1 +:405E40006491031064910310649103102E8E03106491031064910310368E03106491031064910310649103106491031064910310D88E031064910310649103100A8F0310F7 +:405E8000649103106491031064910310649103106491031064910310649103106491031064910310649103100490031038900310648D0310648D0310648D03104A90031017 +:405EC00038900310649103106491031052900310649103106C8F031032910310A8900310A28F031064910310AA8F0310649103100091031064910310649103106290031032 +:405F0000494E4600696E66004E414E006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C2900001D +:405F40003000000020202020202020202020202020202020303030303030303030303030303030300020202020202020202028282828282020202020202020202020202069 +:405F80002020202020881010101010101010101010101010100404040404040404040410101010101010414141414141010101010101010101010101010101010101010197 +:405FC000101010101010424242424242020202020202020202020202020202020202020210101010200000000000000000000000000000000000000000000000000000002D +:406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060 +:4060400000000000000000000000000000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E000080E03779C3414382 +:40608000176E05B5B5B89346F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F407D +:4060C000000000000088C34000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E87648374285 +:40610000000000A2941A6D42000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E1437D +:40614000408CB5781DAF154450EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D00000060C8031042C80310FCC70310DB +:406180001AC70310FCC7031034C80310FCC703101AC7031042C8031042C8031034C803101AC7031012C7031012C7031012C7031078CA0310C0D0031080CF031080CF03107F +:4061C0007CCF031098D0031098D003108AD003107CCF031098D003108AD0031098D003107CCF0310A0D00310A0D00310A0D00310A4D2031000000000000000100000000895 +:40620000C000000020620410C0000008501400005015000890740000089FFB7F0100000000000000D8DB031000000000701900084400000070150008000400001800000005 +:406240000000000000000000051A000010000000000000000500000000000000010000000000000000000000061A00002000000000000000050000000000000001000000A3 +:406280000000000000000000071A00004000000000000000050000000000000000000000000000000000000001000000000000007000000000000000000000000300000004 +:4062C000000000000000000000000000000000002300000000000000F07F000000000000000000000B00000064E103100400000000000000000000000A000000000000009B +:40630000F000000000000000000000000400000000000000000000000000000000000000B8E0031000000000585A000844000000581A0008004000001800000000000000EE +:4063400000000000000F000010000000000000000100000001000000010000000000000000000000010F0000200000000000000001000000010000000100000000000000C8 +:4063800000000000020F000040000000000000000100000001000000010000000000000000000000030F0000800000000000000001000000010000000100000000000000F4 +:4063C00000000000040F000000010000000000000100000001000000010000000000000000000000050F00000002000000000000010000000100000001000000000000006D +:4064000000000000060F000000040000000000000100000001000000010000000000000000000000070F00000008000000000000010000000100000001000000000000001F +:4064400000000000080F000000100000000000000100000001000000010000000000000000000000090F0000002000000000000001000000010000000100000000000000B7 +:40648000000000000A0F0000004000000000000001000000010000000100000000000000000000001CE4031000000000105F000844000000105B0008000400001800000023 +:4064C0000000000000000000001A010010000000000000000100000000000000010000000000000000000000011A0100200000000000000001000000000000000100000031 +:406500000000000000000000021A010040000000000000000100000000000000010000000000000000000000031A010080000000000000000100000000000000010000005C +:40654000000000000000000000EC031000000000006100082400000010600008F000000014EC0310000000005463000824000000C461000890010000000000000000000073 +:40658000000000000A000000705F0008000000000A000000246100080000000000000000B4630008CC63000801000000CD7D03109C4004100FBF0210FFFFFFFFFFFFFFFFE7 +:4065C000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F +:40660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A +:40664000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A +:406680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E089000851DC02102A +:4066C000F84D0410C08CFB020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8 +:406700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059 +:4067400000000000000000000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A0080F0FA0250C300003200000029 +:406780000000A86102FF0000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF00000300000000000000FFFF000000000000BA +:4067C00000000000FFFF0000010000000000000001000000000000000000000000000000000000000000000000000000000000000000000000003840000000001D6D031084 +:406800000100000007000000900600080000000000000000B806000800000000A40900080C0A0008740A000800000000000000000000000000000000000000000000000093 +:406840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018 +:4068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8 +:4068C00001000000000000000E33CDAB34126DE6ECDE05000B000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B +:406900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057 +:406940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017 +:4069800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7 +:4069C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 +:406A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 +:406A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016 +:406A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6 +:406AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 +:406B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055 +:406B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015 +:406B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5 +:406BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095 +:406C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054 +:406C4000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000008E +:406C8000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000004E +:406CC000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000000E +:406D0000430000000000000000000000000000000000000000000000000000000000000031A10310B17B031000000000645F0410985D0410205F0410205F0410205F041053 +:406D4000205F0410205F0410205F0410205F0410205F0410205F0410FFFFFFFFFFFFFFFFFFFFFFFFFFFF000001004153434949000000000000000000000000000000000045 +:406D8000000000000000000000004153434949000000000000000000000000000000000000000000000000000000000000000000000000004C0C00084C0C0008540C000842 +:406DC000540C00085C0C00085C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C000813 +:406E0000940C00089C0C00089C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D2 +:406E4000D40C0008DC0C0008DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D00088D +:406E8000140D00081C0D00081C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D000842 +:406EC000540D00085C0D00085C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D000802 +:406F0000940D00089C0D00089C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008C1 +:406F4000D40D0008DC0D0008DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E00087C +:406F8000140E00081C0E00081C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E000831 +:406FC000540E00085C0E00085C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008F1 +:40700000940E00089C0E00089C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008B0 +:40704000D40E0008DC0E0008DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F00086B +:40708000140F00081C0F00081C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F000820 +:4070C000540F00085C0F00085C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008E0 +:40710000940F00089C0F00089C0F0008A40F0008A40F0008AC0F0008AC0F0008B40F0008B40F0008BC0F0008BC0F0008C40F0008C40F0008CC0F0008CC0F0008D40F00089F +:40714000D40F0008DC0F0008DC0F0008E40F0008E40F0008EC0F0008EC0F0008F40F0008F40F0008FC0F0008FC0F000804100008041000080C1000080C100008141000085A +:40718000141000081C1000081C10000824100008241000082C1000082C10000834100008341000083C1000083C1000084410000844100008FFFFFFFF00000200E90000104C +:4071C00069710210C10000100000000000B585B00190019B0393039B5B78FF2B37D100F007FA03000293042000F022FA0300180000F02EFA03001A00164B1A60164B00221B +:407200001A60154B1B685B015B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A12680A431A60C046094B1B681A68074BE0 +:407240001B681340F8D1029B180000F0C1F9C04605B000BD9077000894770008987700089C77000800B589B001900091444B0793002000F0DDF9030005930023069300F0DE +:40728000CFF9020013236B44033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F0C2F90300180000F0C6F903001A0001235340DBB2002B8D +:4072C00023D0002000F07CF902002E4B9A421CD02D4A00230021012000F09AF9031E14D102E0069B01330693002000F069F90200244B9A4203D0069B244A9342F1D9069B3D +:40730000224A934201D800230793079B002B33D100F06EF903000393002000F089F91C4B1A00012100F06CF9031E13D1019B002B06D1009B180000F02FF8164B07930BE0D8 +:40734000C046059B1B69002BFBDB00F089F90300079301E00A4B079313236B441B78002B06D0C0460121002000F03AF9031EF9D1039B180000F02CF9079B180009B000BD39 +:40738000050052000101880024060008EF490200807700080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E221A60104B104A1A60104AA323DB000621DC +:4073C000D1500E49039B1B021B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04604012640080126401E1F00000000264070 +:407400001C05000010B582B002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0394B394AD2681204110C384A1269120AE9 +:407440001004FF2212041040344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A9023D3582B4A134090221201134390228B5057 +:40748000264B1B69254A9023D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BFC046194B1B68002BFBDA174BDB680122F0 +:4074C00013401DD0154B154A126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB681B0E1902FF231B020B40134390228350E0 +:40750000054B054AD26802218A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B4607331A701A4B194A126904210A431A616B46A2 +:4075400007331B78012B01D030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A60104B3E221A60104B44221A60C0460E4B13 +:407580001B68002BFBDA074A86235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F000018052640040126401C052640AAAAAAAAA7 +:4075C00001B40248844601BC604700BF3D3B031001B40248844601BC604700BF4B4A031001B40248844601BC604700BF553A031001B40248844601BC604700BF434A031066 +:4076000001B40248844601BC604700BF652B031001B40248844601BC604700BF1536031001B40248844601BC604700BFED1F031001B40248844601BC604700BF112B03102B +:4076400001B40248844601BC604700BF532B031001B40248844601BC604700BF452B031001B40248844601BC604700BFA52E0310000000000000000000000000000000004C +:4076800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA +:4076C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A +:0200000490303A +:0200000029B025 +:0200000490501A +:0C0000000005E2072100210100004AB0C9 +:00000001FF diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c index e39146af35c..3009a4f03be 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c @@ -29,11 +29,11 @@ #include "cmsis.h" #include "psa_server_test_part1_partition.h" #include "psa_server_test_part2_partition.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" extern const uint32_t server_test_part1_external_sids[2]; -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; spm_partition_t g_partitions[4] = { { @@ -59,25 +59,25 @@ spm_partition_t g_partitions[4] = { .irq_mapper = NULL, }, { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -92,8 +92,8 @@ const uint32_t mem_region_count = 0; // forward declaration of partition initializers void server_test_part1_init(spm_partition_t *partition); void server_test_part2_init(spm_partition_t *partition); +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) { @@ -103,8 +103,8 @@ uint32_t init_partitions(spm_partition_t **partitions) server_test_part1_init(&(g_partitions[0])); server_test_part2_init(&(g_partitions[1])); - its_init(&(g_partitions[2])); - psa_f_init(&(g_partitions[3])); + crypto_srv_init(&(g_partitions[2])); + its_init(&(g_partitions[3])); *partitions = g_partitions; return 4; diff --git a/TESTS/psa/spm_server/TARGET_FUTURE_SEQUANA_PSA/spm_server.hex b/TESTS/psa/spm_server/TARGET_FUTURE_SEQUANA_PSA/spm_server.hex new file mode 100644 index 00000000000..2bf433ffa47 --- /dev/null +++ b/TESTS/psa/spm_server/TARGET_FUTURE_SEQUANA_PSA/spm_server.hex @@ -0,0 +1,4682 @@ +:020000041000EA +:4000000000000108FD2D03100D000000FD150010000000000000000000000000000000000000000000000000000000007DEF0210000000000000000001F002100DF00210BB +:40004000552E031065340310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E03100A +:40008000552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310552E0310E0 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BDF815000800000000DC7A0410084B10B5002B03D00749084800E000BF07480368002B00D105 +:4001000010BD064B002BFBD09847F9E700000000FC150008DC7A04101011000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A38F0CB +:40014000C5FF0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482EF0F7FA38F0AFFB200029002EF029FD2EF0E5FAC0460000080000000108DD +:4001800000000000E5EA0210F8150008C08E000855E702100000000082B00023019302E0019B01330193064B019A9200D358002BF6D1044B019A1A60C04602B07047C04602 +:4001C0002C0200081416000800B589B0019000230593002307930023049300230693FFF7DBFF80231B06180005F0AAF803000593059B1022134005D1059B3F493F4831224F +:400200002DF0DAFB3E4B1900102005F0B5F83C4B1B68022B04D0032B5FD0012B5DD063E0374BDB68002B05D13349364B382218002DF0C2FB324B58680F226A4401230021E4 +:4002400005F0AEF90300012B05D02B492E4B3C2218002DF0B1FB0F236B441B78012B02D0022B21D032E0294B1B68069A9A4205D2274B069A9200D358002B05D11E49254B1F +:40028000422218002DF098FB1D4B5B680021180005F056FA1E4B069A9200D35804AA100098470300079317E0069B01330693144B586804AA0423002105F0BEF9104B5B6825 +:4002C000079A1100180005F03BFA05E00A49124B4E2218002DF070FB0DE0094B5B680021180005F02DFA06E0054B1B6802490B4857222DF061FB74E70CF00310D8EE031080 +:40030000181600082CEF031060EF0310141600082C0200089CEF0310C0EF0310E8EF031000B589B0019000230693002305930023049380231B06180005F002F8030006932E +:40034000069B3022134005D16049614B232218002DF032FB069B1022134000D17AE05D4B1900102005F008F85A4B1B68022B04D0032B67D0012B65D05DE0564BDA68554B7F +:400380001B69D218534B5B69D318002B05D14F49514B2A2218002DF00FFB4E4BDB680593059B180038F0BCFA03000493049B002B05D14649494B302218002DF0FDFA454B4D +:4003C0005868059B049A002105F0EAF8002307931EE0049A079BD2180F236B4412781A70049A079BD3180599079A8A1A013A04998A1812781A70059A079BD31A013B049A89 +:40040000D3180F226A4412781A70079B01330793059B5A08079B9A42DBD82E4B5868059B049A002105F008F9049B180038F082FA0023049307E0274B1B682449284842227B +:400440002DF0BAFAC046234B5B680021180005F077F96EE71F4B1900202004F08DFF1D4B1B68022B04D0032B20D0012B1ED024E0184B5B68180005F0FFFA03000293029BB5 +:40048000013305D11149174B4F2218002DF094FA104B5B680021180005F052F914202EF0E5FD029B180005F08BFA0DE0094B5B680021180005F044F906E0064B1B680349D3 +:4004C00007485E222DF078FA33E7C04618F1031018F003104416000874F00310A8F00310CCF00310F0F0031000B585B00190019B002B05D11F49204B662218002DF05CFA03 +:400500001E4B180030F01CFD0200019B1A62019B1B6A002B05D11749194B6B2218002DF04BFA0023039309E0164A039B5B01D3180833019A1A60039B01330393039B012B91 +:40054000F2D9019B0F4A1A610F4A104B0021180032F016FA0200019B5A60019B5B68002B05D104490A4B752218002DF025FAC04605B000BD18F2031050F1031008F20310E6 +:400580006CF10310E8000008C4000008C9010010B4F1031000B585B00190019B002B05D11F49204B602218002DF006FA1E4B180030F0C6FC0200019B1A62019B1B6A002B12 +:4005C00005D11749194B652218002DF0F5F90023039309E0164A039B5B01D3180833019A1A60039B01330393039B012BF2D9019B0F4A1A610F4A104B0021180032F0C0F94B +:400600000200019B5A60019B5B68002B05D104490A4B6F2218002DF0CFF9C04605B000BD1CF303105CF203100CF3031078F203104C0100082801000821030010C0F20310C9 +:4006400000B583B00190019B002B05D10E490F4B652218002DF0B0F90D4B1800FFF744FF0C4B1800FFF796FF0B4B180002F0A0FE0A4B180003F02CFC019B054A1A60042399 +:40068000180003B000BDC04650F3031034F303108C010008B4010008DC0100080402000800B58FB000230D9301AB18002C231A00002138F00BFD80231B06180004F040FE94 +:4006C00003000C930C9B2022134002D101235B420D9301AB1900202004F04EFE01AB1B68012B07D00D9B002B01D00D9B01E001235B420D9301AB5B680D9A1100180005F0AF +:400700001FF80D9B18000FB000BD00B58FB000230D9301AB18002C231A00002138F0D6FC80231B06180004F00BFE03000C930C9B2022134002D101235B420D9301AB1900B7 +:40074000202004F019FE01AB1B68032B07D00D9B002B01D00D9B01E001235B420D9301AB5B680021180004F0EBFF0D9B18000FB000BD00B585B0019000230393072004F05B +:40078000DFFD03000293029B2022134001D1002201E001235A42019B1A60FFF781FF03000393039B002B01D0039B10E0FFF7ADFF03000393039B002B01D0039B07E0029BBA +:4007C0002022134001D1002301E001235B42180005B000BD00B593B00190002311930023109303AB18002C231A00002138F06EFC00230F9380231B06180004F0A1FD030015 +:400800000E930E9B2022134002D101235B42119303AB1900202004F0AFFD03AB1B68012B07D0119B002B01D0119B01E001235B42119303AB5B68180005F01EF903000F93F2 +:400840000F9B013301D1002201E001235A42019B1A6003AB5B680021180004F071FFFFF754FF03001093119B002B01D0119B00E0109B1193119B180013B000BD00B593B033 +:400880000190002311930023109303AB18002C231A00002138F01AFC00230F9300230E93FFF7FEFE03001193119B002B01D0119B40E080231B06180004F042FD03000E9343 +:4008C0000E9B2022134002D101235B42119303AB1900202004F050FD03AB1B68022B07D0119B002B01D0119B01E001235B42119303AB5B68180005F0BFF803000F930F9BE7 +:40090000013301D1002201E001235A42019B1A6003AB5B680021180004F012FFFFF7F5FE03001093119B002B01D0119B00E0109B1193119B180013B000BD000010B594B0CA +:400940000190002313930023109303AB18002C231A00002138F0BAFB00230F93002312930B2037F0DDFF03000E930E9B002B05D14749484BA22218002DF01EF80E9B0B2219 +:400980000021180038F0A2FBFFF78AFE03001393139B002B05D00E9B180037F0CBFF139B72E080231B06180004F0CAFC03000F930F9B2022134002D101235B42139303AB50 +:4009C0001900202004F0D8FC03AB1B68022B07D0139B002B01D0139B01E001235B4213930023119316E003AB58680E9A129BD41803AA119B02339B00D31804331B6811991D +:400A0000220004F0CDFD0200129B9B181293119B01331193119B032BE5D903ABDA6803AB1B69D21803AB5B69D21803AB9B69D3180B2B0AD1129B0B2B07D117490E9B0B22AC +:400A4000180038F097FE031E04D0019B012252421A6002E0019B00221A6003AB5B68139A1100180004F06CFE0E9B180037F062FFFFF74BFE03001093139B002B01D0139B9A +:400A800000E0109B1393139B180014B010BDC0460CF5031060F3031084F3031000B591B0019000230F9303AB18002C231A00002138F00CFB80231B06180004F041FC0300C9 +:400AC0000E930E9B2022134002D101235B420F9303AB1900202004F04FFC03AB1B68012B07D00F9B002B01D00F9B01E001235B420F9303AB5B68064A1100180004F020FED7 +:400B0000019B0F9A1A600F9B180011B000BDC0460100008000B593B001900023109303AB18002C231A00002138F0D0FA0023119300230F9334230293FFF7B2FD03001193DA +:400B4000119B002B01D0119B48E080231B06180004F0F6FB03001093109B2022134002D101235B42119303AB1900202004F004FC03AB1B68022B07D0119B002B01D0119B96 +:400B800001E001235B42119303AB586802AA0423012104F005FD03000E930E9B002B02D1029B342B04D0019B012252421A6002E0019B00221A6003AB5B68119A110018004F +:400BC00004F0BEFDFFF7A1FD03000F93119B002B01D0119B00E00F9B1193119B180013B000BD000000B593B00190002311930023109302AB18002C231A00002138F066FA5A +:400C000000230F9300230E930B2037F089FE03000D930D9B002B07D10A23FF331A003F493F4B18002CF0C8FE0D9B0B220021180038F04CFAFFF734FD03001193119B002B5E +:400C400005D00D9B180037F075FE119B62E080231B06180004F074FB03000F930F9B2022134002D101235B42119302AB1900202004F082FB02AB1B68022B07D0119B002B7A +:400C800001D0119B01E001235B42119302AB58680D9A0B23012104F083FC03000E9302AB1A690E9B9A4216D102ABDA6802AB1B69D21802AB5B69D3180B2B0CD10D9B063300 +:400CC0001B78002B07D117490D9B0622180038F051FD031E04D0019B012252421A6002E0019B00221A6002AB5B68119A1100180004F026FDFFF709FD030010930D9B180007 +:400D000037F018FE119B002B01D0119B00E0109B1193119B180013B000BDC04634F5031060F3031090F3031000B595B00190002313930023129303AB18002C231A00002105 +:400D400038F0C4F9002311930023109300230F930B2037F0E5FD03000E930E9B002B06D19C235A0039493A4B18002CF025FEFFF797FC03001393139B002B05D00E9B1800A1 +:400D800037F0D8FD139B5DE080231B06180004F0D7FA03001193119B2022134002D101235B42139303AB1900202004F0E5FA03AB1B68022B07D0139B002B01D0139B01E041 +:400DC00001235B42139303AB5B6800220021180004F022FC03000F9303AB58680E9A0B23002104F0DDFB030010930F9B002B0AD1109B0B2B07D117490E9B0B22180038F053 +:400E0000B9FC031E04D0019B012252421A6002E0019B00221A6003AB5B68139A1100180004F08EFCFFF771FC030012930E9B180037F080FD139B002B01D0139B00E0129B07 +:400E40001393139B180015B000BDC04660F5031060F3031098F3031000B595B00190002313930023129302AB18002C231A00002138F02CF9002311930023109300230F9308 +:400E800000230E930B2037F04BFD03000D930D9B002B07D16823FF331A004049404B18002CF08AFDFFF7FCFB03001393139B002B05D00D9B180037F03DFD139B6AE08023E0 +:400EC0001B06180004F03CFA03001193119B2022134002D101235B42139302AB1900202004F04AFA02AB1B68022B07D0139B002B01D0139B01E001235B42139302AB5868EE +:400F00000D9A0323002104F04BFB0300109302AB5B6805220021180004F07EFB03000E9302AB58680D9BDA1C0823002104F038FB03000F93109B032B0DD10E9B052B0AD174 +:400F40000F9B082B07D117490D9B0B22180038F011FC031E04D0019B012252421A6002E0019B00221A6002AB5B68139A1100180004F0E6FBFFF7C9FB030012930D9B180021 +:400F800037F0D8FC139B002B01D0139B00E0129B1393139B180015B000BDC04680F5031060F30310A4F3031000B595B00190002313930023129302AB18002C231A0000215A +:400FC00038F084F8002311930023109300230F9300230E93082037F0A3FC03000D930D9B002B06D1CC235A003F49404B18002CF0E3FCFFF755FB03001393139B002B05D0F0 +:401000000D9B180037F096FC139B6AE080231B06180004F095F903001193119B2022134002D101235B42139302AB1900202004F0A3F902AB1B68022B07D0139B002B01D04B +:40104000139B01E001235B42139302AB58680D9A0523002104F0A4FA0300109302AB5B6804220021180004F0D7FA03000E9302AB58680D9B5A1D0223002104F091FA030059 +:401080000F93109B052B0DD10E9B032B0AD10F9B002B07D116490D9B0522180038F06AFB031E04D0019B012252421A6002E0019B00221A6002AB5B68139A1100180004F08D +:4010C0003FFBFFF722FB030012930D9B180037F031FC139B002B01D0139B00E0129B1393139B180015B000BDA0F5031060F30310B0F3031000B595B0019000230F9303AB52 +:4011000018002C231A00002137F0E0FF00230E930023139300231293002311930023109380231B06180004F00BF903000F930F9B2022134007D1CC23FF331A006E496F4BE9 +:4011400018002CF039FC03AB1900202004F014F903AB1B68022B33D0032B00D176E0012B00D09FE003AB9B68002B06D0E9235A006149634B18002CF01FFC082037F0D0FBF4 +:4011800003000E930E9B002B07D1D823FF331A0059495C4B18002CF00FFC0E9B00221A600E9B01225A6003AB5B680E9A1100180004F08AFC0E9B1393129B0133129378E05C +:4011C00003ABDA6803AB1B69D21803AB5B69D318002B07D0E223FF331A0047494A4B18002CF0EAFB03AB9B68002B07D1E623FF331A004149454B18002CF0DEFB03AB9A6815 +:40120000139B9A4207D0EA23FF331A003A49404B18002CF0D1FB03AB9B680E930E9B1B685A1C0E9B1A600E9B5A680E9B1B685A430E9B5A6003AB58680E9B1A1D04230021A2 +:4012400004F0FAF9119B0133119332E003AB9B68002B06D1FA235A0027492E4B18002CF0ABFB03AB9A68139B9A4206D0FC235A002149274B18002CF09FFB0B236B440A22C8 +:401280001A7003AB5B680B226A441100180004F01BFC03AB9B68180037F04CFB109B0133109306E003AB1B681B4A13491B482CF083FB00230E9303AB5B680021180004F034 +:4012C0003FFA109B002B00D12AE7C046129B012B05D1119B052B02D1109B012B04D0019B012252421A6002E0019B00221A60019B1B68180015B000BDCCF50310B8F30310BC +:40130000FCF3031060F3031024F4031060F403108CF40310B8F4031003020000E8F4031000B59DB003900023199309AB18002C231A00002137F0CAFE00231B930023189325 +:4013400000231A9300231793002316933C2037F0E7FA03001593159B002B06D189239A0059495A4B18002CF027FB159B3C220021180037F0ABFEFFF793F903001B931B9B60 +:40138000002B05D0159B180037F0D4FA1B9B98E080231B06180003F0D3FF03001993199B2022134002D101235B421B9309AB1900202003F0E1FF09ABDA6809AB1B69D2186F +:4013C00009AB5B69D318002B07D11B9B002B01D01B9B01E001235B421B9309ABDB68169309AB5868169B159A002104F0D9F803001793179B152B07D01B9B002B01D01B9B97 +:4014000001E001235B421B93159A169BD318169A1599180037F0C8FD179B5B00179307AB159A1A6007AB179A5A6005AB159A1A6005AB179A5A60264B0521180003F008F969 +:4014400003001493149B002B02DC01235B421A931A9B002B0AD105AA07A91498012300931300012203F0DAF903001A93039B1A9A1A601A9B002B03D1149B180003F098FAA7 +:401480001A9B002B06D109AB5868179B159A002104F0D2F809AB5B681A9A1100180004F04FF9159B180037F045FAFFF72EF9030018931B9B002B01D01B9B00E0189B1B938F +:4014C0001B9B18001DB000BDF4F5031060F30310031A000000B595B003900023119304AB18002C231A00002137F0F0FD002313930023109300231293FFF7D2F8030013939C +:40150000139B002B01D0139B73E080231B06180003F016FF03001193119B2022134002D101235B42139304AB1900202003F024FF04ABDA6804AB1B69D21804AB5B69D31870 +:40154000002B03D104ABDB69002B07D0139B002B01D0139B01E001235B421393264B0521180003F075F803000F930F9B002B02DC01235B421293129B002B09D10F9800238E +:40158000009300230022002103F048F903001293129B002B0ED180231B061900082003F0DCFE03001193119B0822134002D101235B421293129B002B05D104F033FA0F9B4B +:4015C000180003F0F5F9039B129A1A6004AB5B68129A1100180004F0B3F8FFF796F803001093139B002B01D0139B00E0109B1393139B180015B000BD041A00002C4B05E0D3 +:401600002C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B196802680A60043142680A60043182680A600431C2680A600431F0C147460F6055 +:4016400004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A600431C2690A60043103462033154E324200D0043375460D4E354200D1EE +:4016800048330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A606046074900F010F8FEE7000010000000200000003000000040000000CB +:4016C0000400000020F603100002000000B587B003900291002305931C4B18002BF0E4FF039B302B0AD0402B0FD0202B14D1184B18002BF0D9FF174B059314E0164B18004F +:401700002BF0D2FF154B05930DE0154B18002BF0CBFF144B059306E0134B18002BF0C4FF124B0593C046124B18002BF0BDFF00F027F8104B18002BF0B7FF0F4BDA6B0F49B9 +:4017400005980023009300232CF0CEF924F6031050F603103E01FF8060F603103F01FF806CF603104001FF8078F603103D01FF8084F6031090F603105C7D0008B0F6031071 +:4017800070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF085FF059B01330593059B0C2BEFDD264B5C6B254B9D6B244BDE6B234B1A6C224B596C214B32 +:4017C0009B6C224802930191009233002A0021002BF06AFF1E4B1A681E4B110018002BF063FF184BDB6C0822134012D01A4B18002BF05AFF134B1B6D0122134004D0174B37 +:4018000018002BF051FF0CE0154B18002BF04CFF07E0144B18002BF047FF114B18002BF043FF084BDB6C0422134004D00E4B18002BF03AFF03E00D4B18002BF035FFC04677 +:4018400006B070BD5C7D0008C0F60310D0F6031000ED00E020F7031030F7031040F7031050F7031064F7031074F7031080F7031082B001900091009B180002B07047000047 +:4018800000B583B00190019B180005F0FDFC019B180000F095F8084A019B1A60019B28330021180000F04CF8019B382201219954019B180003B000BD5C1A041000B583B075 +:4018C00001900C4A019B1A60019B180005F00BFC019B2833180000F04BF8019B180000F075F8019B180005F009FD019B180003B000BDC0465C1A041000B583B00190019B70 +:401900001800FFF7DBFF019B18002CF0D7FF019B180003B000BD000000B583B00190019B1800FFF7ADFF019B180000F07BF8034A019B1A60019B180003B000BD701A0410EA +:4019400000B583B001900091009B002B06D1019B10220021180037F0B9FB05E06A46019B1100180000F06AF8019B180003B000BD00B583B00190019BDB68002B05D0019B1A +:40198000DB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BDB685B680099019A10009847009BDA68019BDA60019B180003B000BDAF +:4019C00082B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341DBB2180002B0704700B583B001900091019A009B9A420FD0019B18007C +:401A0000FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0BC +:401A400001900091019B10220021180037F03EFB019B19000420FFF70BFF031E02D0009A12681A60019B024ADA60C04603B000BD8CF7031000B583B00190019B1B689847DE +:401A800003B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B000BD82B00190C04602B0704700B583B00190074A019B1A60019B180035 +:401AC000FFF7B6FF019B1800FFF7F8FE019B180003B000BD701A041000B583B00190019B1800FFF7E5FF019B18002CF0E7FE019B180003B000BD000000B58DB06B4618003E +:401B00002C231A00002137F0E1FA00230B936B461900102003F030FC6B461B68022B04D0032B12D0012B10D00CE00BF033F903000B930B9B002B0AD10A4B1B685A1C094BEC +:401B40001A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F0F1FDC0460DB000BD301F000800B58DB06B4618002C231A00002137F0A9FA00230B936A46FC +:401B800080235B011100180003F0F6FB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E0C4B1A600B4B1B68002B07D10BF0ACF804E002230B9302E0C04600E0D0 +:401BC000C0466B465B680B9A1100180003F0B8FDC0460DB000BDC046301F000800B597B005AB18002C231A00002137F06FFA0023159305AB1900202003F0BEFB05AB1B6887 +:401C0000022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F008FB03001493149B002B02D10923159332E105AB5B68149A1100180003F047FF2AE103AB18003C +:401C400008231A00002137F041FA05ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002103F09CFC0300139305ABDA68139B9A4205D08C498C4B722218002BF0A8 +:401C80009BFE03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B681A0007F0ADFD03001593DBE005AB986803AB598803AB5B681A0007F0D8 +:401CC000B5FD03001593CFE005AB1B691900012036F0ACFA03001293129B002B02D109231593C1E005AB586805AB1B69129A012103F056FC0300139305AB1A69139B9A42B9 +:401D000005D06949694B8E2218002BF055FE05AB986805AB1A69129B190007F09BFD03001593129B180036F005FE9DE00023029305AB586805AB1B6902AA012103F030FC9B +:401D40000300139305AB1A69139B9A4205D05649564B9E2218002BF02FFE00230193029B1900012036F062FA03001193119B002B02D10923159377E005AB9868029A01AB44 +:401D8000119907F08DFE03001593159B002B0DD105AB5868019B119A002103F04DFC05AB586801AA0423012103F046FC119B180036F0C0FDC04657E00023009305AB5868DC +:401DC00005AB1B696A46012103F0EAFB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D03049314BB82218002BF0E4FD009B1900012036F019FA03001093109BC9 +:401E0000002B02D1092315932EE005AB586805AB5B69109A022103F0C3FB0300139305AB5A69139B9A4205D01F49204BC12218002BF0C2FD05AB9B68009A1099180007F038 +:401E400074FE03001593109B180036F073FDC0460AE005AB9B68180007F036F90300159302E002231593C046C04612E005AB9B68180007F029F905AB9B68002B08D005AB69 +:401E80009B68180036F056FD02E00223159300E0C04605AB5B68159A1100180003F050FCC04617B000BDC046BCF8031098F70310B8F7031000B597B005AB18002C231A0087 +:401EC000002137F003F90023159305AB1900402003F052FA05AB1B68022B19D0032B00D12BE1012B00D037E1E021012036F09EF903001493149B002B02D1092315932FE1E9 +:401F000005AB5B68149A1100180003F0DDFD27E10023139303AB180008231A00002137F0D5F805ABDB68082B02D00B23159317E105AB586805ABDB6803AA002103F030FB84 +:401F40000300139305ABDA68139B9A4207D00223FF331A008749884B18002BF02DFD03AB1B780F3B042B00D9E2E09A00834BD3181B689F4605AB9A6803AB5B681900100098 +:401F800006F002FD03001593D5E005AB1B691900012036F04BF903001293129B002B02D109231593C7E005AB586805AB1B69129A012103F0F5FA0300139305AB1A69139B48 +:401FC0009A4207D01623FF331A006A496A4B18002BF0F2FC05AB986805AB1A69129B190006F04AFD03001593129B180036F0A2FCA1E00023029305AB586805AB1B6902AA7D +:40200000012103F0CDFA0300139305AB1A69139B9A4206D092235A005649574B18002BF0CBFC00230193029B1900012036F0FEF803001193119B002B02D1092315937AE015 +:4020400005AB9868029A01AB119906F059FD03001593159B002B0DD105AB5868019B119A002103F0E9FA05AB586801AA0423012103F0E2FA119B180036F05CFCC0465AE0AB +:402080000023009305AB586805AB1B696A46012103F086FA0300139305AB1A69139B9A4204D105AB5A69009B9A4206D09F235A003049314B18002BF07FFC009B19000120F2 +:4020C00036F0B4F803001093109B002B02D10923159330E005AB586805AB5B69109A022103F05EFA0300139305AB5A69139B9A4207D04823FF331A001E491F4B18002BF0A7 +:402100005BFC05AB9B68009A1099180006F02AFE03001593109B180036F00CFCC0460AE005AB9B68180006F001FC0300159302E002231593C046C04612E005AB9B681800AF +:4021400006F0F4FB05AB9B68002B08D005AB9B68180036F0EFFB02E00923159300E0C04605AB5B68159A1100180003F0E9FAC04617B000BDD0F8031098F70310D0F703104B +:4021800070B5A2B00DAB18002C231A00002136F09DFF002321930DAB1900802003F0ECF80DAB1B68022B06D0032B00D197E1012B00D196E190E10DABDB68102B02D00B239D +:4021C00021938FE10023209309AB180010231A00002136F07BFF0DAB58680DABDB6809AA002103F0DDF9030020930DABDA68209B9A4207D08023FF331A00BF49BF4B1800C4 +:402200002BF0DAFB09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB691900012036F000F803001F931F9B002B02D1092321934CE10DAB1B69CA +:402240001900012035F0F2FF03001E931E9B002B06D1092321931F9B180036F06BFB3AE10DAB58680DAB1B691E9A012103F098F9030020930DAB1A69209B9A4206D0CC23E7 +:402280005A009D499D4B18002BF096FB09AB588809AB59680DAB1D690DABDB691E9C08AA029201931F9B00932B00220007F0F6FE03002193219B002B06D10DAB5868089B46 +:4022C0001F9A002103F0B8F90DAB586808AA0423012103F0B1F91F9B180036F02BFBC046F9E00DAB1B691900012035F09FFF03001D931D9B002B02D109232193EBE00DAB4E +:4023000058680DAB1B691D9A012103F049F9030020930DAB1A69209B9A4207D0B823FF331A007549754B18002BF046FB0DAB5B691900012035F07AFF03001C931C9B002B33 +:4023400002D109232193C6E00DAB58680DAB5B691C9A022103F024F9030020930DAB5A69209B9A4206D0E1235A006349634B18002BF022FB09AB588809AB59680DAB5C69FB +:402380000DAB1B691C9A01931D9B0093230007F00FFF030021931D9B180036F0CBFA1C9B180036F0C7FA96E0002307930DAB1B691900012035F03AFF03001B931B9B002B63 +:4023C00002D10923219386E00DAB58680DAB1B691B9A012103F0E4F8030020930DAB1A69209B9A4207D0E023FF331A004249434B18002BF0E1FA1B9B1A9309AB9B681B9AC6 +:40240000D31819930DABDB691900012035F00EFF03001893189B002B06D1092321931B9B180036F087FA56E009AB1B78252B1AD109AB588809AB5C6809AB9E6809ABDA6871 +:402440000DABDB691A9D07A904910393189B02930192199B009333002A00210007F030FF0300219319E009AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A90491A4 +:402480000393189B02930192199B009333002A00210007F0B9FF03002193219B002B06D10DAB5868079B189A002103F0C5F80DAB586807AA0423012103F0BEF8189B18003F +:4024C00036F038FA1B9B180036F034FAC04602E00223219303E002E00223219302E0C04600E0C0460DAB5B68219A1100180003F027F9C04622B070BDE4F8031098F703102D +:40250000F0B5A5B013AB18002C231A00002136F0DDFD0023239313AA80239B001100180002F02AFF13AB1B68022B06D0032B00D1DBE0012B00D1DAE0D4E013ABDB68242B70 +:4025400002D00B232393D3E00023229309AB180024231A00002136F0B9FD13AB586813ABDB6809AA002103F01BF80300229313ABDA68229B9A4206D08C239A006149624BD0 +:4025800018002BF019FA09AB1B78213B012B00D9A3E00023129313AB1B691900012035F045FE03002193219B002B02D10923239396E013AB586813AB1B69219A012102F0A6 +:4025C000EFFF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF0EEF9219B209309ABDB68219AD3181F9313ABDB691900012035F01BFE03001E931E9B002B06D101 +:40260000219B180036F096F90923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049377 +:4026400003911F9B02930192209B00933B0032002900200008F018FC0300239322E009AB5C8809AB5D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8AE +:40268000069005931E9B049303911F9B02930192209B00933B0032002900200008F0CAFC03002393239B002B0DD113AB5868129B1E9A002102F0C0FF13AB586812AA0423CE +:4026C000012102F0B9FF219B180036F033F91E9B180036F02FF9C04602E002232393C046C04605E00223239302E0C04600E0C04613AB5B68239A1100180003F021F8C046F3 +:4027000025B0F0BD00F9031098F703104302000010B5A6B00023259310AB18002C231A00002136F0D3FC10AA80235B001100180002F022FE10AB1B68022B19D0032B00D196 +:402740004FE1012B00D05BE14C21012035F06EFD03002493249B002B02D10923259353E110AB5B68249A1100180003F0ADF94BE10EAB180008231A00002136F0A7FC10AB5F +:40278000DB68082B02D00B2325933DE110AB586810ABDB680EAA002102F002FF0300239310ABDA68239B9A4205D09C4A9C499D4B18002BF001F90EAB1B781A3B062B00D9D8 +:4027C00009E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F0EBFF03002593FCE010AB98680EAB59880EAB5B681A0007F0F3FF03002593F0E000230D939A +:4028000010ABDB69229309AB180010231A00002136F05CFC10AB98680DAB229A09A907F0F1FF03002593259B002B00D0D6E010AB58680D9B09AA002102F0FEFE10AB5868D8 +:402840000DAA0423012102F0F7FEC046C6E010AB1B69219305AB180010231A00002136F035FC10AB5868219B05AA012102F098FE03002393239A219B9A4205D06B4A68496C +:40288000684B18002BF098F810AB9B68219A05A9180008F007F803002593C0469FE010AB1B69209310ABDB691F9300230493209B1900012035F0BAFC03001E931E9B002B67 +:4028C00002D1092325938AE010AB5868209B1E9A012102F065FE03002393239A209B9A4205D0534A4E494F4B18002BF065F81F9B1900012035F09AFC03001D931D9B002BCD +:4029000006D11E9B180036F015F80923259366E010AB98681D9C209A1E9904AB01931F9B0093230007F0FDFF03002593259B002B0DD110AB5868049B1D9A002102F07CFE25 +:4029400010AB586804AA0423012102F075FE1E9B180035F0EFFF1D9B180035F0EBFFC0463DE010ABDB691C93002303931C9B1900012035F05BFC03001B931B9B002B02D161 +:40298000092325932BE010AB986803AB1C9A1B9908F00EF803002593259B002B0DD110AB5868039B1B9A002102F046FE10AB586803AA0423012102F03FFE1B9B180035F01B +:4029C000B9FFC0460BE010AB9B68180008F06EF80300259303E00223259300E0C046C04612E010AB9B68180008F060F810AB9B68002B08D010AB9B68180035F09BFF02E043 +:402A00000223259300E0C04610AB5B68259A1100180002F095FEC04626B010BD9E02000014F9031098F70310E4F70310C2020000D702000010B5AAB010AB18002C231A00F7 +:402A4000002136F043FB0023299310AA8023DB001100180002F090FC10AB1B68022B06D0032B00D1CCE1012B00D1D9E1C5E110ABDB680C2B02D00B232993D2E10023279348 +:402A80000DAB18000C231A00002136F01FFB10AB586810ABDB680DAA002102F081FD0300279310ABDA68279B9A4205D0D54AD649D64B18002AF080FF0DAB1B7A282B00D925 +:402AC00091E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180008F06EF803002993299B002B00D07FE110AB5868269B0CAA002102F09FFDC04676E110AB73 +:402B00001B69259310AB5868259B0BAA012102F047FD03002793279A259B9A4206D0D3239A00B949B94B18002AF046FF0DAB1B880B9A1100180008F05FF803002993C046D7 +:402B400059E110AB1B69249310AB5868249B09AA012102F025FD03002793279A249B9A4206D0D6239A00A849A84B18002AF024FF0DAB1B8809AA1100180007F0CDFF03004A +:402B80002993C04637E110ABDB6923930DAB1B8807AA1100180007F0EDFF03002993299B002B00D024E110AB5868239B07AA002102F042FDC0461BE110AB1B692293229BFC +:402BC0001900012035F032FB03002193219B002B02D1092329930EE110AB5868229B219A012102F0DDFC03002793279A229B9A4205D0884A8449854B18002AF0DDFE0DAB01 +:402C000018880DAB5968229B219A05F049FB03002993219B180035F08DFEECE00DAB1B88180005F089FB03002993E4E00DAB1B8805AA06A9180005F0EDFB03002993299B1B +:402C4000002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F0EEFC10AB1B6A032B00D8C6E010AB586805AA0423012102F0E2FCC046BDE010ABDB692093209B09 +:402C80001900012035F0D2FA03001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F017FD03002993299B002B06D110AB5868049B1F9A002102F0BDFC10ABA5 +:402CC000586804AA0423012102F0B6FC1F9B180035F030FEC0468EE010ABDB691E931E9B1900012035F0A2FA03001D931D9B002B02D1092329937EE00DAB188803AB1E9A0F +:402D00001D9905F00FFD03002993299B002B06D110AB5868039B1D9A002102F08DFC10AB586803AA0423012102F086FC1D9B180035F000FEC0465EE010AB1B691C9310AB26 +:402D40005B691B930023289310AB58681C9B02AA012102F025FC03002793279A1C9B9A4206D0EF239A002849284B18002AF024FE0DAB5B68284A934222D11B9B002B1FD0A0 +:402D80001B9B1900012035F051FA03002893289B002B02D1092329932DE010AB58681B9B289A022102F0FCFB03002793279A1B9B9A4205D0194A1449144B18002AF0FCFD11 +:402DC0000DAB18880DAB5968029A289C1B9B0093230009F0BDFE03002993289B180035F0A9FDC04607E00223299304E0C04602E0C04600E0C046C04613E00223299310E0CD +:402E0000C0460EE0350300002CF9031098F7031000F803107103000000000170CB030000C04610AB5B68299A1100180002F088FCC0462AB010BDC04600B591B001AB18007B +:402E40002C231A00002136F041F900230F9301AA8023DB011100180002F08EFA01AB1B68022B04D0032B3DD0012B3DD037E001ABDB680E930E9A8023DB009A4202D9082383 +:402E80000F9332E00E9B1900012035F0CFF903000D930D9B002B02D109230F9325E001AB58680E9B0D9A002102F07AFB03000C930C9A0E9B9A4205D0114A1249124B180061 +:402EC0002AF07AFD0E9A0D9B1100180009F0FCFD03000F930D9B180035F02CFD05E002230F9302E0C04600E0C04601AB5B680F9A1100180002F024FCC04611B000BDC046CC +:402F0000010400004CF9031098F7031000B58FB06B4618002C231A00002136F0D7F800230D936A4680231B011100180002F024FA6B461B68022B04D0032B2CD0012B2CD064 +:402F400026E06B46DB690C930C9B1900012035F06DF903000B930B9B002B02D109230D931CE00C9A0B9B1100180009F06FFD03000D930D9B002B06D16B4658680C9B0B9A5A +:402F8000002102F059FB0B9B180035F0D3FC05E002230D9302E0C04600E0C0466B465B680D9A1100180002F0CBFBC0460FB000BD70B59EB000231D930BAB18002C231A0085 +:402FC000002136F083F80BAA80239B011100180002F0D2F90BAB1B68022B1BD0032B00D15FE1012B00D06BE1FC235B001900012035F01CF903001C931C9B002B02D10923DC +:403000001D9361E10BAB5B681C9A1100180002F05BFD59E108AB18000C231A00002136F055F80BABDB680C2B02D00B231D934BE10BAB58680BABDB6808AA002102F0B0FA30 +:4030400003001B930BABDA681B9B9A4205D0A34AA349A44B18002AF0AFFC08AB1B78293B052B00D917E19A009F4BD3181B689F46002307930BAB9B6807AA1100180008F0D1 +:403080003BF903001D931D9B002B00D006E10BAB586807AA0423002102F0CEFAC046FDE000231A930BABDB691993199B1900012035F0BCF803001A931A9B002B02D10923B7 +:4030C0001D93ECE00BAB9B68199A1A99180008F05BFD03001D931D9B002B06D10BAB5868199B1A9A002102F0A7FA1A9B180035F021FCD4E00BAB58680BAB1B6906AA012189 +:4031000002F04EFA03001B931B9B042B05D0774A7349744B18002AF04FFC0BAB58680BAB5B6905AA022102F03BFA03001B931B9B042B05D06E4A6A496A4B18002AF03CFC53 +:4031400008AB58880699059A0BAB9B6808F0A8FD03001D93C046A2E00BAB9B68180008F051F803001D939AE00BAB1B691900012035F05CF803001893189B002B02D1092336 +:403180001D938CE00BAB58680BAB1B69189A012102F006FA03001B930BAB1A691B9B9A4205D0544A4E494F4B18002AF005FC0BAB5B691900012035F039F803001793179BC1 +:4031C000002B06D109231D93189B180035F0B2FB65E00BAB58680BAB5B69179A022102F0DFF903001B930BAB5A691B9B9A4205D0414A3B493B4B18002AF0DEFB0BAB98689A +:4032000008AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A00210009F0B7FA03001D9336E00BAB1B691900012034F0F8FF0300169335 +:40324000169B002B02D109231D9328E00BAB58680BAB1B69169A012102F0A2F903001B930BAB1A691B9B9A4205D0244A1C491D4B18002AF0A1FB0BAB986808AB59880BAB52 +:403280001C6908AB5B68169A0093230009F0A4FB03001D9303E002231D9300E0C046C04612E00BAB9B68180007F0ACFF0BAB9B68002B08D00BAB9B68180035F03BFB02E08F +:4032C00002231D9300E0C0460BAB5B681D9A1100180002F035FAC0461EB070BD5704000064F9031098F70310A4F8031081040000870400009D040000AA040000C204000057 +:4033000000B585B00190002303930023029380231B06180002F014F803000393039B1022134001D0FEF7E8FB039B2022134001D0FEF754FC039B4022134001D0FEF7BAFD49 +:40334000039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0FFF7CCF8039A8023DB00134001D0FFF75FFB039A80231B01134001D08B +:40338000FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A8023DB011340B1D0FFF745FDAEE700B585B00190019B002B05D11F49204B17 +:4033C000D42218002AF0F8FA1E4B18002DF0B8FD0200019B1A62019B1B6A002B05D11749194BD92218002AF0E7FA0023039309E0164A039B5B01D3180833019A1A60039B7D +:4034000001330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF0B2FA0200019B5A60019B5B68002B05D104490A4BE32218002AF0C1FAC04605B000BD50FA0310DB +:4034400098F9031040FA0310B4F90310880200086402000801330010F0F9031000B583B00190019B180000F051FA019B180003B000BD000010B5144B1B78BFF35B8FDBB2EF +:403480001A00012313405A425341DBB2002B17D00D4B18002BF078F903005A1E9341DBB2002B0DD0094B1800FFF7D8FF064B18002BF0A2F9064A0749044B18002BF038F921 +:4034C000024B180010BDC046E85F0008985F0008C00000088998021000B583B0FFF7CAFF03000193044A019B1100180026F0A4FB0300180003B000BD9CFA031000B589B023 +:403500000390029101920093039B002B05D14349434B3D2218002AF011F8029B0D2B05D83E49404B3E2218002AF008F81F236B4400221A70019B0693009B05931F236B44A0 +:403540001B780E2B05DD3549374B4622180029F0F5FF1F236B441B781F226A44591C11701A00039B9B18069A3F210A402F498A5C1A70069B9B090693069B002B00D0DDE7CC +:403580001F236B441B780E2B05DD2449264B4C22180029F0D3FF1F236B441B781F226A44591C11701A00039B9B1823221A701F236B441B780E2B05DD18491B4B5122180089 +:4035C00029F0BCFF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70059B9B090593059B002B00D0DDE71F236B441B780E2B05DD07490A4B8F +:403600005622180029F09AFF1F236B441B78039AD31800221A70C04609B000BDBCFA03101CFB031034FB031060FB03105CFA031030B58FB00590049103920293FFF74CFF4F +:4036400003000B930B9B002B03D1234B18002AF0B3F9129B002B04D0129B012B01D0022337E006AB18000E231A00002135F02EFD059B049A06A80E21FFF740FF00230D938E +:40368000129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A04703000A9300230C930A9B002B0ED00A9B094A934205D0094A934205D1D3 +:4036C00001230C9304E003230C9301E005230C930C9B18000FB030BD8CFB03100B01FF801201FF8030B591B00590049103920293FFF7F2FE03000E930E9B002B03D1364B67 +:4037000018002AF059F909AB18000E231A00002135F0DCFC059B049A09A80E21FFF7EEFE0E9B1B681C331B6807AA09A90E98984703000D9300230F930D9B002B08D00D9B2F +:40374000264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E0029A039BD218029B9A4201D208232EE0039A029BD21807AB1B689A4239 +:4037800001D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00A04703000D930D9B002B06D1069A029B9A420BD208230F9308E00D9B7B +:4037C000064A934202D107230F9301E005230F930F9B180011B030BDC4FB03100701FF8000B58FB0039002910192FFF775FE03000C930C9B002B03D1204B18002AF0DCF8C2 +:4038000007AB18000E231A00002135F05FFC039B029A07A80E21FFF771FE0C9B1B681C331B6805AA07A90C98984703000B9300230D930B9B002B08D00B9B114A934202D1C1 +:4038400007230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6801221A43019B5A6005AB1A68019B1A600D9B18000FB000BDFCFB031029 +:403880000701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B18002AF08BF803AB18000E231A00002135F00EFC019B009A03A80E21FFF720FE089B1B6853 +:4038C00020331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094A934205D10123099304E00723099301E005230993099B18000BB000BDCE +:4039000038FC03100701FF801201FF8082B00190019B180002B0704700B58FB00590049103920293039B002B04D1049B002B01D0062333E006AB05AA1A6006AB04225A601F +:4039400006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F077FE03000C930C9B002B01DC052315E006A90C98002300930023032200F04EFF14 +:4039800003000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B18000FB000BDC046011A010000B58FB00590049103920293029B002B04D1039B002B01D0F3 +:4039C000062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB039A5A608D235B020121180000F02EFE03000C930C9B002B01DC052301 +:403A000016E006AA08A90C98012300931300022200F004FF03000D930D9A80231B069A4201D105230D930C9B180000F0C1FF0D9B18000FB000BD000000B58DB00390029163 +:403A4000029B002B01D1062339E008AB180008231A00002135F03AFB06AB03AA1A6006AB04225A6004AB08AA1A6004AB08225A60144B0121180000F0EBFD03000A930A9B52 +:403A8000002B01DC05231AE004AA06A90A98012300931300012200F0C1FE03000B93029B08AA03CA03C30B9A80231B069A4201D105230B930A9B180000F07AFF0B9B1800FD +:403AC0000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0B6FD03000693069B002B01DC052315E004A90698002300930023012200F076 +:403B00008DFE03000793079A80231B069A4201D105230793069B180000F04AFF079B180009B000BD031A010010B58AB003900023069300230993039B1B69089300230593C3 +:403B4000039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F01EFD0300042B02D080231B0647E0039B586805AA0423022101F011FD03005C +:403B8000042B02D080231B063AE0089B180034F0C7FE03000993099B002B01D105232FE0039B5868039B1B69099A012101F0F8FC0200039B1B699A4205D0099B180034F02C +:403BC000B9FE05231CE0039B5B68180001F054FF03001C000699059B0998089A009303002000FFF725FD03000793089A099B0021180035F06BFA099B180034F09BFE079BFD +:403C000018000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D080231B064FE0039B586805AA0423002101F0B4FC0300042B02D0802349 +:403C40001B0642E0039B586804AA0423012101F0A7FC0300042B02D080231B0635E0039BDB69180034F05CFE03000793079B002B01D1052329E0039B5B68180001F0FCFEF2 +:403C800003001C000599049A039BD869079B009303002000FFF726FD03000693069B002B07D1039B5868039BDB69079A002101F0C3FC039BDA69079B0021180035F006FA86 +:403CC000079B180034F036FE069B180008B010BD00B587B0019003AB180008231A00002135F0F4F900230293019BDB68042B03D1019BDB69082B02D080231B0626E0019BD4 +:403D0000586802AA0423002101F04AFC0300042B02D080231B0619E0019B5B68180001F0ABFE03001800029B03AA1900FFF758FD03000593059B002B07D1019B5868019BC7 +:403D4000DB6903AA002101F077FC059B180007B000BD00B585B0019000230393019BDB68042B02D080231B0619E0019B586803AA0423002101F014FC0300042B02D08023D7 +:403D80001B060CE0019B5B68180001F075FE03001A00039B19001000FFF774FD0300180005B000BD00B585B00190009100230393019B1B68022B04D0032B10D0012B0ED046 +:403DC00006E0019A009B100098470300039307E0019B1B6807490848982229F0EDFDC046019B5B68039A1100180001F0A9FCC04605B000BDCCFC031074FC031000B591B02F +:403E0000019000230F9303AB18002C231A00002135F05CF980231B06180001F091FA03000F9325F0C1FC03000E930E9B002B05D00E9B21492148AC2229F0BEFD0F9B20223C +:403E400013400AD003AB1900202001F095FA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB1900102001F086FA154A03AB11001800FFF796FF0F9B402213400AD04C +:403E800003AB1900402001F077FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802001F068FA084A03AB11001800FFF778FFAEE7C046DCFC031098FC031027 +:403EC000293B0010073C0010D13C0010533D001000B585B00190019B002B05D11F49204B7822180029F068FD1E4B18002DF028F80200019B1A62019B1B6A002B05D11749C9 +:403F0000194B7D22180029F057FD0023039309E0164A039B5B01D3180833019A1A60039B01330393039B032BF2D9019B0F4A1A610F4A104B002118002EF022FD0200019B8B +:403F40005A60019B5B68002B05D104490A4B8722180029F031FDC04605B000BDA0FD0310F8FC031090FD031014FD03100C040008E8030008FD3D001050FD031000B58BB0E5 +:403F8000039002910192039B002B05D139493A4B2C22180029F0D2FA029B002B05D13549364B2D22180029F0C9FA00F00DFE03000793079B002B02D0079B1B6801E0012316 +:403FC0005B4206932E4B0493039B04A90022180029F042FC039B0121180029F083FC030005930023099300230893002308932CE000230493089B1A04059B13430993039BA2 +:404000009A68089B1B01D3181800099A04AB190029F022FC031E15D0039B9A68089B1B01D318029ADA60039B9A68089B1B01D318069A5A60039B9A68089B1B01D318019A6B +:404040009A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D22180029F069FA099B18000BB000BDC046ACFD0310E8FD031004FE0310FD +:40408000FFFF000020FE031000B589B003900291039B002B05D13649364B6622180029F04DFA029B002B05D13149334B6722180029F044FA029B1B0C0793039B5A68079B30 +:4040C0009A4209D8079A039B5B682C492C48009313006D2229F070FC039B9A68079B1B01D3181A68029B9A4205D0029B23492548712229F061FC00F067FD03000693069B35 +:40410000002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01149144B7B22180029F03CFC64 +:40414000039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B01D31800229A60C04609B000BDACFD0310E8FD031044FE0310F0FF031049 +:4041800060FE0310ACFE0310E8FE031000B589B003900291039B002B05D13649364B8622180029F0CBF9029B002B05D13349344B8922180029F000FC029B1B0C0793039B1B +:4041C0005A68079B9A4209D8079A039B5B682B492C48009313008F2229F0EEFB039B9A68079B1B01D3181A68029B9A4205D0029B22492548932229F0DFFB00F0E5FC030051 +:404200000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D3189A68059B9A4205D01049144B9D22180059 +:4042400029F0BAFB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F06EF9039B9A68079B1B01D318DB68180009B000BDC046ACFD0310E8FD03100C000410EA +:4042800024FF031060FE0310ACFE031064FF0310B4FF031084B001900091002303930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039B0133039372 +:4042C000019B5A69039B9A42EAD80023180004B07047000000B585B001900023039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF03000293029B01 +:40430000002B01D0029B08E0039B01330393044B5A68039B9A42E3D80023180005B000BDBC04000800B587B003900291029B002B0DD1039B1B7D01225340DBB2002B06D0A7 +:40434000039B1B681A491B48382229F035FB029B002B2BD0029B9B69002B06D1029B1B68134915483D2229F027FB002305930CE0029B9A69059B9B00D3181A68039B1B68CA +:404380009A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B680449074800931300462229F007FBC04607B000BD18030410280004106000041098000410A8 +:4043C00000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BDC404000800B583B00190019A044B11001800FFF7CDFE0300180003B000BDC046C404000849 +:4044000000B585B001900091019B9B681A6A01235B42190010002CF0B7FD03000393039B002B05D02349244B5722180029F086F8019BDB69002B03D1019B009A9A6103E066 +:40444000019BDB69009A1A61019B009ADA61019B9B685A68019B5B68190010002EF0E8FA03000293029B002B05DA1249134B6622180029F063F8019B5B68029A134005D1BD +:404480000C490F4B6722180029F058F8019B9B681B6A18002CF0A2FD03000393039B002B05D00449044B6B22180029F047F8C04605B000BDD80004101001041024010410BA +:4044C0004001041030B58BB005900491049B002B05D15649564B7022180029F02FF8059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F05EFA099B1B696C +:40450000002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C41480293019100922B0065 +:404540007A22210029F038FA00F03EFB03000893089A099B11001800FFF7E4FE089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B8122180029F021 +:404580001BFA304B1B6A002118002BF003FC03000793079B002B1BD1049B2B4A5A60089B002B0FD0049B9B6818002DF027F803000693069B002B35D01C49244B8A221800C7 +:4045C00028F0BCFF049B9B68180001F0C3FB29E0099B9B681A68079B11001800FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049ADA60079BD5 +:4046000001221A75079B00229A60079B00221A61079B00229A75079A099B11001800FFF7EFFE00E0C0460BB030BDC046D80004105C01041004030410700104109001041071 +:40464000EC010410BC040008010000801001041000B58FB00190009109AB180010231A00002134F033FD05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6002AB29 +:40468000009A1A6002AB00225A6005AB1A00002101202CF05FFF020002AB9A6002AB9B68002B05D119491A4BB722180029F084F902AA019B11001800FFF704FF02AB9A6816 +:4046C00001235B42190010002CF070FF03000D930D9B002B05D00F490F4BBD22180028F02DFF02AB9B6818002CF0AAFF03000D930D9B002B05D00749074BC022180028F081 +:404700001DFF02AB5B6818000FB000BD380304101C020410D80004101001041000B585B001900091009B002B05D13649364BC922180028F003FF019B1800FFF751FE030006 +:404740000393039B002B05D12E49304BCB22180028F0F4FE039B1A68009B1821180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F01EF9039B9B7D6E +:40478000012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F0DBFA2EE0009B5B6918002CF029FF03000293029B002B24D01349184BD822180028F0BEFEEE +:4047C000039B153304220321180000F0A3F9039B009ADA60039B02221A75009B1868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE00E0C046DD +:4048000005B000BDD80004105C01041054020410440304106C0204101001041000B595B003900291019200930FAB180010231A00002134F04BFC0BAB00221A600BAB002222 +:404840005A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF06EFE020005AB5A6105AB46 +:404880005B69002B06D183235A001B491B4B180029F092F805AA039B11001800FFF73EFF05AB5A6901235B42190010002CF07EFE03001393139B002B06D086235A0010495B +:4048C000104B180028F03AFE05AB5B6918002CF0B7FE03001393139B002B07D01023FF331A000749074B180028F028FE05AB1B69180015B000BDC046540304101C02041057 +:40490000D80004101001041000B585B001900091009B002B06D18C235A002049204B180028F00CFE019B1800FFF75AFD03000393039B002B07D11C23FF331A001749194B1C +:40494000180028F0FBFD039B1A68009B0821180000F074F903001A0001235340DBB2002B06D08F235A001049104B180029F024F8039B15330321180000F004F9039B009A00 +:40498000DA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BDD80004105C01041054020410600304109C02041000B58FB00190019B002B55D009AB180077 +:4049C00010231A00002134F081FB05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6003AB019A1A6005AB1A00002101202CF0B0FD020003AB5A6003AB5B68002BBA +:404A000006D1A1235A001A491A4B180028F0D4FF03AA019B11001800FFF776FF03AB5A6801235B42190010002CF0C0FD03000D930D9B002B06D0A4235A000F490F4B18006F +:404A400028F07CFD03AB5B6818002CF0F9FD03000D930D9B002B08D04C23FF331A000649064B180028F06AFDC0460FB000BDC04670030410CC020410D800041010010410C8 +:404A800000B585B0019000230393019B1800FFF721FC03000293029B002B0AD000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD000000B589B092 +:404AC0000790069105920493079B002B02D1069B002B0AD1059B002B02D1049B002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B0093130027225F +:404B000028F05AFFC04609B000BDC0468C0404107C03041000B587B00390080011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A236B441A785C +:404B40000B216944039B180028F056FE03001A0001235340DBB2002B0DD00B236B441B781A0017236B441B780449054800931300302228F021FFC04607B000BD9C040410D3 +:404B8000D003041000B585B003900A000B236B441A70039B1B780B226A4412789A420CD0039B1B781A000B236B441B780449054800931300382228F0FFFEC04605B000BDF0 +:404BC000B4040410D003041000B583B02DF006FF03000093009B002B05D11549154B5E22180028F0ABFC0023019317E0124B1968019A13009B009B18DB00CB185A68009B0E +:404C00009A4208D10C4B1968019A13009B009B18DB00CB1808E0019B01330193064B5A68019B9A42E2D80023180003B000BDC046180404106C040410BC0400088CB00390A0 +:404C400002910192039B002B01D1002376E0029B002B01D1012371E0039A029BD3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B05099380231B0338 +:404C80000893304B0793304B0693304B0593F023DB020493019B002B27D1039A079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A4201D8012331 +:404CC0003CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD2180599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A4209D9039A4E +:404D0000029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002318000CB06C +:404D40007047C04600000108007703000000081010B52EF01BFF174B1A0018210A202AF0EDFF0200144B1A62134B1B6A002B05D1124A134B1100180028F01EFE114B1A00AB +:404D800028210A202AF0DAFF02000B4B5A620A4B5B6A002B05D1094A0B4B1100180028F00BFE054B1800FBF74BFC0200024B5A60C04610BD8C040008BC0400085C05041019 +:404DC000FC040410A40400082805041010B5034B1B68180001F01AF9F9E7C046E804000884B001900023039317E0104B1968039A13009B009B18DB00CB181A68019B9A421B +:404E000008D10A4B1968039A13009B009B18DB00CB1808E0039B01330393044B5A68039B9A42E2D80023180004B07047BC04000800B583B001900091009A0199034B180060 +:404E4000FFF79CF80300180003B000BDD004000800B583B00190019A044B11001800FFF795F90300180003B000BDC046D004000800B583B00190019A034B11001800FFF743 +:404E800003F9C04603B000BDD004000800B583B00190019A034B11001800FFF7F5F8C04603B000BDC404000884B0019000910023039311E0019B1A69039B5B01D3185A682A +:404EC000009B9A4205D1019B1A69039B5B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000010B596B00190009103AB180028231A00002134F035 +:404F0000E5F803AB019A1A60019B1B7D022B00D0F6E0019BD868019B1B681A001821FFF78DFE03001A0001235340DBB2002B05D08D498E4B5B22180028F03EFD019BDB6824 +:404F40001393139B1B681293139B5B681193139B9B681093139BDB680F930F9B109A11991298FFF7ABFD119BD9B203AB24229954119B002B5DD0119BD900019B1A68129B07 +:404F80001800FFF75BFE03001A0001235340DBB2002B05D07449764B6B22180028F00CFD0023159341E0159BDB00129AD3185B68002B36D0159BDB00129AD01803AA159B67 +:404FC000DB000421D3185B18020003CA03C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB00D3180433186803AA159BDB00D31808331968019BD8 +:405000001B681A00FFF71AFE03001A0001235340DBB2002B06D0159B534956487C2228F0CBFCC046159B01331593159A119B9A42B9D30F9B002B63D00F9BD900019B1A68FE +:40504000109B1800FFF7FAFD03001A0001235340DBB2002B05D04449474B8322180028F0ABFC0023149347E0149BDB00109AD3185B68002B3CD0119A149BD318149AD200B5 +:405080001099881803AADB000421D3185B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60119A149BD31803AADB00D31804331868119A149BAD +:4050C000D31803AADB00D31808331968019B1B681A00FFF7B3FD03001A0001235340DBB2002B06D0149B20492448942228F064FCC046149B01331493149A0F9B9A42B3D359 +:405100001F4B5A6A01235B42190010002AF042FE03000E930E9B002B05D11349194B9D22180028F049FC0E9B03AA13CA13C313CA13C313CA13C312681A600E9B0021180076 +:40514000FFF776FE03000D93019B1B7D1A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC046A00B04106C05041094050410B4050410D8050410F805041031 +:40518000BC0400081C06041000B587B00190019B9B681A6A01235B42190010002BF0F4FE03000593059B002B05D02849284BAD22180028F0C3F9019B9B690493049B002B7F +:4051C00005D12449244BB322180028F0F5FB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B5B6818002DF046FC03000393039B002B05DA1349EE +:40520000164BBF22180028F099F9019B5B68039A134005D10D49124BC022180028F08EF9019B9B681B6A18002BF0D8FE03000593059B002B05D00549054BC522180028F0DC +:405240007DF9049B180007B000BDC0464806041080060410B40B041094060410B4060410D006041000B58BB00491039217236B44021C1A70FFF7A8FC03000993099B002B9F +:4052800005D12A492A4BCE22180028F057F9099BDB68082213430893099B9A68089B1343079317236B441B78002B02D0079B04930EE0089B049A1A40049B9A4208D0049A59 +:4052C0001C491D48089B00931300DB2228F074FB039A80231B069A4201D0039B01E001235B4204981A0002212DF006FC03000693069B079A1A40069B9A420DD0039A8023FF +:405300001B069A4202D0069B023305D007490B4BE722180028F012F9069B023301D0069B00E0002318000BB000BDC04648060410EC060410D40B04100C0704104807041043 +:4053400000B583B00190019B1A0000210120FFF789FF0300180003B000BD00B583B001900091009A019B19000020FFF77BFF0300180003B000BD000010B58AB0039002911A +:40538000FFF722FC03000993099B002B05D15149514BF922180028F0D1F8099A029B2C211800FFF74BFC03001A0001235340DBB2002B05D049494A4BFC22180028F0FCFA9D +:4053C000029B2C220021180033F080FE039B002B06D0039B013B039A134001D1012200E0002223236B441A701A7801210A401A7023236B441B7801225340DBB2002B04D1B6 +:40540000099B9B68039A13400AD1099B9B68039C84225200314933480093230028F0CCFA2DF052FB03000793039B079A134007D10E23FF331A0029492B4B180028F0BCFA77 +:40544000039A099B11001800FFF72EFD03000693069B002B07D1039C89235A001F492348230028F0A9FA069B1800FFF78DFE03000593059B1B7D022B0AD0032B10D0012BBD +:4054800015D1059B153302211800FFF77BFB18E0059B1533052204211800FFF73BFB10E0059B153303211800FFF76CFB09E0059B1B7D1C0097235A0008490D48230028F064 +:4054C0007BFA029A059B11001800FFF70FFDC0460AB010BD48060410EC060410E00B0410C4070410E00704102C080410480804109808041000B587B003900291019200936A +:40550000039B1800FFF7A4FC03000593059B1B68153305211800FFF735FB029B032B06D99E235A001C491D4B180028F045FA059B24229B5C1A00029B9A4201D8002327E041 +:40554000029BDB00059AD31804330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D0049B1968009A019B180033F019FD049B1A68009BD218049B86 +:405580001A60049B5A68009BD21A049B5A60009B180007B000BDC046E80B0410C808041000B587B00390029101920093FFF70CFB03000593059B002B07D15823FF331A00DE +:4055C0001149124B180027F0B9FF059A0099019B1800FFF733FB03001A0001235340DBB2002B06D0AD235A0009490A4B180028F0E3F9009B019A02990398FFF77BFF0300DF +:40560000180007B000BDC04648060410EC060410F80B0410E408041000B585B0039002910192019B029903980022FFF763FF0300180005B000BD000010B58AB005900491B4 +:4056400003920293029B002B6BD0FFF7BDFA03000993099B002B06D1B6235A003249334B180027F06BFF099A0299039B1800FFF7E5FA03001A0001235340DBB2002B07D01A +:405680007023FF331A002A492A4B180028F094F9059B1800FFF7DCFB03000893089B1B68153305211800FFF76DFA089B24229B5C1A00049B9B180493049B032B06D9BC23CC +:4056C0005A001B491C4B180028F076F9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C7E22FF32104913480093230028F060F9079B1B68029A039949 +:40570000180033F051FC079B1A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BD48060410EC060410040C0410E4080410040904102009041074 +:4057400010B58EB001900091019B1800FFF780FB03000B930B9B1B680D930D9B002B07D18C23FF331A008B498B4B180027F0E6FE0D9BDB68002B06D1C6235A008549874B42 +:40578000180027F0DBFE019B1800FFF771FB0B9B28220021180033F099FC814B5B6A0B9A110018002AF01EFB03000A930A9B002B06D0CB235A0077497A4B180027F0BEFE5A +:4057C00000230C930D9B1A6827236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B002B0CD0009B6E4A934208D0009CA023FF331A006B496C4803 +:40580000230028F0D9F80D9BDB680893089B9B680C93009B644A934229D10D9B153302211800FFF7AFF9089B5B681800FFF72EFB0D9B18220021180033F048FC584B1B6A69 +:405840000D9A110018002AF0CDFA03000793079B002B06D0D9235A004E49524B180027F06DFE089B009A5A6000230D936BE00D9B1533032202211800FFF74CF963E0009AA6 +:4058800080231B069A420BD0009B4A4A934207DA009CE0235A0045494748230028F08CF80D9B1533032205211800FFF733F9009A80231B069A4202D10D9B01229A750D9BAF +:4058C000DB680693069B009A1A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800FFF714F9059B1B681800FFF7CBFA0D9B18220021180033F0EE +:40590000E5FB274B1B6A0D9A110018002AF06AFA0300049300230D93049B002B12D0E223FF331A001B491F4B180027F007FE0D9B1B7D1C00EA23FF331A001C491F48230042 +:4059400028F03AF8C0460D9B002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F0F5F90FE00C9B18002BF044FE03000393039B002B06D0FB2349 +:405980005A000449074B180027F0D8FDC0460EB010BDC046480604106009041080090410BC0400088006041001000080100C0410A809041080000080E40904101C0A0410C4 +:4059C00000B585B00190019B1800FFF709FA03000393039B002B05D1019B0C4A0C490D4827F0EAFF039B5B68082118002DF020F803000293029B002B05DA074A0749084BA1 +:405A0000180027F09BFDC04605B000BD030200001C0C0410500A04100A02000048060410B406041000B583B008202DF029F803000193019B002B05DA094A0A490A4B18009E +:405A400027F07CFD019B0822134005D1074A0849084B180027F0B0FFC04603B000BDC0461302000048060410B406041017020000280C0410880A041000B585B00190019BF5 +:405A80001800FFF7E5F903000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B1B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E020000B0 +:405AC00048060410BC0A041000B585B001900091019B1800FFF7BCF903000393039B1B68009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD0300019363 +:405B0000019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B6918002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFCBE +:405B4000C04603B000BDC046E40400084C0C0410A00C0410E804000810B52EF031F9C04610BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D0DE +:405B800002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF791FC3DE001AB9B681A0001AB5B6819001000FEF7B3FD33E001AB9B681A0001AB23 +:405BC0005B6819001000FEF79FFE29E001AB5B680593059B002208211800FFF72FF803001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF78E +:405C00003FFF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCC04607B000BDC0467C0D0410D80C04104C0C0410000D041000B599B0394B179362 +:405C40000FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C231A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C2253 +:405C8000180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B18002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A008B +:405CC000002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194B1A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFCA0 +:405D0000124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B000BDC04600770408779A333D0C4A28634C0D04104C0C0410080D04105C0D041092 +:405D40001C0D04106C0D0410340D0410E4040008E804000800B587B0019003AB18000C231A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C0463B +:405D800007B000BDE404000800B585B00390029101920093039B002B05D12349234B2422180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A934296 +:405DC00005D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFB009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A604E +:405E0000029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61C04605B000BDC0468C0D0410CC0D0410DC0D04100C4A2863F40D0410240E041012 +:405E4000340E0410FFD948A200B585B0039002910192039B002B05D11C491D4B3722180027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D097 +:405E80001249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA602D +:405EC000039B019A1A61C04605B000BD8C0D0410CC0D0410DC0D04100C4A2863F40D04104C0E041042658BA610B586B003906846016042608360039B002B05D13D493E4BD3 +:405F00004722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B1A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B221800A6 +:405F400027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B6850 +:405F80001B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039BCE +:405FC0009B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D00449084B5D22180027F0A8FAC04606B010BDC0468C0D0410CC0D0410FFD948A24E +:40600000600E04108C0E0410A00E041010B586B00190019B002B05D12D492E4B6322180027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA238C +:406040005B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C3F1 +:40608000019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B5B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019B29 +:4060C0009B681B689A42CED1C04606B010BDC0468C0D0410CC0D041042658BA6D80E0410A00E041082B00190034A019B1A60019B180002B07047C046500F041000B583B03E +:406100000190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B001900023180002B0704784B00390009201930023180004B0704784B003900092019300236E +:40614000180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800210002B010BD10B584B0039000920193039B1B682C331B68039A10009847030082 +:406180000C001800210004B010BD82B0019001235B42180002B0704730B585B0039000920193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF5D +:4061C0001C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C00089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B6E +:40620000099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B685B +:4062400028331B68039A1000984703000C00009801991A00230036F06DFF1C001300190022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00E5 +:40628000230036F057FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D887 +:4062C000012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B019C03981A002300884703000C00009801991A00230036F01DFF1C00130019003E +:4063000022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F680099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B84797 +:4063400003000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B00E2 +:406380009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019B1A60019B180002B07047C046500F0410F0B585B0039002910192039B1800FFF705 +:4063C000EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B18009A +:4064000005B0F0BD0C0F041000B583B001900A4A019B1A60019B180000F0E8F8019B0433180000F0E5FA019B1800FFF75BFE019B180003B000BDC0460C0F041000B583B066 +:406440000190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64600B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B24330F +:406480000121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA03000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA6913 +:4064C000099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B0433180000F0E5FC030043440093002301930123019A954206D8019A954202D1009A9442AE +:4065000000D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D69099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D8002319 +:40654000DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A0022430DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BE8 +:40658000DC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433180000F084FC0300069300230793099B5C691B690699079AC91AA2410B00140085 +:4065C0000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B2E +:4066000004D0019B00225A62002316E0019B24330121180027F09AF903000393039B002B01D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD61 +:4066400010B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B31 +:4066800019695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B0993B7 +:4066C000059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FD031E01D0012300E00023002B11D0059B19695A69029B039C5B1854410693079430 +:40670000059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9B2A +:406740000D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B043306990C9A180000F0F8FA0300099342 +:40678000099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B585B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B04331800E3 +:4067C00000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B00190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C6929 +:406800001B691900100000F044FB03000393039B1D0000231E002B0034001800210004B070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D000250026F8 +:4068400011E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B1D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C01220E +:406880005340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB030023700F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD6F +:4068C00000B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002B05D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC0460E +:406900003A020000F01504100816041010B5074B1B68002B08D0054B1A6801235B42190010002AF031FB00E0C04610BD007E000810B5064B1B68002B05D0044B1B68180075 +:406940002AF04CFB00E0C04610BDC046007E000800B583B00190019B180000F0C9FA27F0DDF9019B180003B000BD00B583B0019027F0FCF9019B180000F0C0FA019B1800EF +:4069800003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B583B0019027F030FA019B180000F0B2FA019B180003B000BD00B583B00190009117 +:4069C000019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190019B180000F09CFA019B180003B000BD00B583B00190019B180000F097FA019BF7 +:406A0000180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F0FBFF03AB1800FFF793FF02AB1800FFF7A9FF019B18002FF099FE03005A1E934105 +:406A4000DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180000F00CFA03000493049B180027F00AFF03001A00019B5A60054B180000F05CFA56 +:406A80000300180027F0F0FF059B180007B000BDC068000800B587B00190002305931D4B180000F049FA0300180027F0B5FF04AB1800FFF74DFF03AB1800FFF763FF019BC5 +:406AC00018002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF04AB1800FFF741FF019B5B68002B04D0019B5B68180027F0EBFE064B180000F091 +:406B00001BFA0300180027F0AFFF059B180007B000BDC046C068000800B589B0039002910192009301235B420793164B180000F003FA0300180027F06FFF06AB1800FFF7A4 +:406B400007FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF71EFF06AB1800FFF700FF064B180000F0E3F90300180027F077FF079B180009B07C +:406B800000BDC046C068000810B592B00390029101920093039B180000F070F903000893039B18002FF03EFE03000D93039B18002FF031FE03000C93029B1093089A019B0A +:406BC00011001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019BD2180C990D9BCB189A4201D9012300E00023002B02D001235B42B1E000230E933A +:406C0000594B180000F098F90300180027F004FF009B002B00D19AE0039B019A110018002FF0DAFD03000B93109B032293431900109A2B236B448A1A511E8A411A70019B6E +:406C40000B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F903001B6807932B236B441B78002B03D1079A089B9A4224D208AA07AB1100180000F0C3 +:406C800066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039B5A68079BD018089A079BD31A1A00FF2132F00CFA039B5B680F93089B11930EE03D +:406CC000079B089A1100180036F062F803001A00089B53430793109B0F93079B119306AB1800FFF735FE05AB1800FFF74BFE0398119B0F9A01992FF058FD03005A1E9341DE +:406D0000DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D0002401E0C046012406AB1800FFF71EFE012C0DD1C046009A079BD31A0093079B019A2B +:406D4000D3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B180012B010BDC046C068000800B58FB0039002910192039B18002FF053FD030021 +:406D80000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099A0A9B9A4202D901235B4261E0099A0A9B9A4217D2039B099A110018002FF00CFD48 +:406DC00003000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D001235B4245E000230D93234B180000F0A4F80300180027F010FE019B002B2FD006ABCF +:406E00001800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305AB1800FFF7BCFD06AB1800FFF79EFD0D9B002B03D001235B420D9310E0039B029A54 +:406E4000110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B180000F069F80300180027F0FDFD0D9B18000FB000BDC046C068000800B583B0FA +:406E80000190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A110018002FF099FC0300180003B000BD00B583B00190019B18002FF0ADFC0300180070 +:406EC00003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B00190019B18002FF0A5FC0300180003B000BD82B00190019B180002B0704782B001908B +:406F0000019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700B583B00190019B9F +:406F4000180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019B8D +:406F80001B68002B0FD1019B083319002420FAF76FFC041E04D0200027F0ECFC220000E02200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F0B3 +:406FC000BDFA019B1B68180002B010BD101604102C16041082B00190019B074A1A61C046019B1B69002B01D0012200E00222019B1A75C04602B070475416041082B0019045 +:40700000034A019B1A60019B180002B07047C0464816041000B583B00190019B1800FFF7EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B0F9 +:40704000039002910192039B1B6810331B68019A0299039898470300180005B000BD00B583B00190019B1B6818331B68019A100098470300180003B000BD00B583B001903F +:40708000019B1B6828331B68019A100098470300180003B000BD82B001900A006B4603331A706B4603331B78002B01D0002301E019235B42180002B0704782B001900123C5 +:4070C000180002B0704782B001900A006B4602331A801123180002B0704782B001900091C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF7A9 +:407100006BFC031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B28331C0002AB00211800FAF709FC02AB19002000FAF75AFC02AB1800FAF718FC5B +:4071400026F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1854411A00230000F0DDF8019B28331800FAF732FC031E04D0019B28331800FFF730 +:407180009FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF7FAFB019B1800FFF7A0FF02AB1800FFF793FB02AB1800FAF7DDFBC04607B000BD10B582B0D5 +:4071C0000190019B180000F052F8019B00221A60019A002300249360D460019A002300241361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180065 +:4072000002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B04C +:40724000019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A002300241361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019B1F +:40728000180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002300249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B69BD +:4072C000054A1100180025F08DFF019B180002B010BDC046841A0410DD72001000B585B00190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B0B3 +:407300000190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BD841A041010B586B0059002920393059B9869059B08331900059A029B039C00923D +:407340001A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B08331900100025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B0DC +:407380007047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BD7C5D041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B091 +:4073C00000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BD00B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B0B4 +:407400000190019B180000F00FF8034A019B1A60019B180003B000BD7C5D041082B00190019B180002B0704782B00190019B180002B0704782B06B46186059606B465B6854 +:40744000180002B0704782B06B46186059606B465B68180002B0704784B001900091019B039304E0039B5A1C039200221A70009B5A1E0092002BF5D1C04604B0704786B084 +:4074800003900291019213236B4400221A700023059313E0039A059BD3181A780299059BCB181B785340D9B213236B4413226A4412780A431A70059B01330593059A019B7B +:4074C0009A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206944663445A425341DBB2180002B0704700B583B00190019B7F3306DA019B5A42ED +:40750000FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A934200D1B4E2B54A934200DD7CE0B44A934200D172E2B24A934238DCB24A934200D1F2 +:4075400047E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A934200D13DE2ACE2AA4A934200D134E2A94A934200D12EE2A3E2A84A934200D127 +:4075800051E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D13FE2A24A934200D139E28AE2A04A934200D182E29E4A934218DC9E4A934200D157 +:4075C00075E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D167E2984A934200D165E26AE2964A934200D164E2944A934208DC944A934200D109 +:4076000053E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A934200D13AE24DE28E4A934200D113E28C4A934238DC8B4A934200D11EE2894A9342C1 +:4076400018DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E22FE2844A934200D10BE2834A934200D105E226E2814A934200D1E8E17F4A93428F +:4076800008DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A934200D1D6E10DE27A4A934200D1DBE1784A934218DC774A934200D1D0E1754A9342EC +:4076C00008DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A934200D1BEE1EDE1704A934200D1BDE16E4A934208DC6D4A934200D1B4E16C4A9342FF +:4077000000D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E11A00263200D146E11A00263200DDCFE01A00373200D1B2E11A00373231DC1A0008 +:40774000403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D11FE1663300D11CE1ABE11A00623200D117E1603300D114E1A3E11A003A3200D1CC +:4077800039E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E18FE11A00313200D163E11A00313216DC1A00343200D11AE11A00343207DC1A000C +:4077C000363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A002B3200D115E11A002B3265DC1A002F3200D10EE12D3300D10BE162E100BCFFFF78 +:4078000000AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFF809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF82 +:4078400080B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFF80C2FFFF00BFFFFF80BDFFFF80BCFFFF00BDFFFF00BEFFFF80BEFFFF00C1FFFF06 +:4078800080BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFF80C4FFFF00C5FFFF00C7FFFF00C6FFFF80C6FFFF80C7FFFF1A00283200D1F0E01B +:4078C0001A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A00193200D15BE01A0019320FDC1A00223209DC1A0023324EDA1A0025324DD0243376 +:4079000000D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D0173347D0CEE01A00143200D16EE0133300D16DE0C6E01A000C3200D180E01A000C32A9 +:4079400013DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3200D16EE00D332AD0ABE09A1D00D160E09A1D07DC1A000A3200D15EE0083300D103 +:4079800059E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D2390E008238EE009238CE004238AE0022388E00D2386E0022384E00D2382E00823D2 +:4079C00080E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102370E00E236EE00D236CE00D236AE00F2368E0022366E00F2364E0022362E00D2398 +:407A000060E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E0092350E00C234EE00D234CE00C234AE0082348E0082346E0042344E0082342E0082369 +:407A400040E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E0032330E008232EE002232CE010232AE00D2328E00D2326E0082324E0112322E00D2331 +:407A800020E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2310E008230EE00D230CE008230AE0042308E0022306E0102304E0092302E00D23EE +:407AC00000E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED89A00114BD3181B689F46132318E0152316E0172314E0182312E0192310E01A2336 +:407B00000EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E00023180002B07047C046901A041082B002006B4606331A806B4606331B88123B0C2B39 +:407B40001ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E0A9 +:407B80000023180002B07047C81A041000B585B0039002910192039B294A93420FD0284A934203D8274A934214D020E0A222D20593421ED0A422D20593421AD017E0029B29 +:407BC000002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD0029A80235B009A4207D0082324E0022322E0C04602E0C04600E0C046029B0722C5 +:407C0000134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB0200019B1A60019B1B68002B04D1019B00225A60092300E00023180005B000BDC046C6 +:407C4000010000500100004000B589B0039004AB180007F097FB04A9039800230193002300930023002218F0C9FE03001800FFF73FFC03000793079B002B09D104AB180081 +:407C800007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD00B587B001900091019B180016F006FA0300012B01D0082323E0019B18685968AF +:407CC000FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D902230EE0059B1800FFF7AEFF03000393039B002B01D0039B03E0009B059A1A6020 +:407D00000023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF90300022B01D008231DE0029B18685968FFF789FB03000593059B1B7812246C4424 +:407D40001800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B059A1A600023180006B010BD10B58AB004910392029316236B44021C1A800E23D2 +:407D80000993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A60AC21012030F042FA03000893089B002B01D1092362E0089A1F236B441B78190010 +:407DC000100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499180007F09BFF03001800FFF781FB03000993099B002B30D1089A089B7C33190095 +:407E0000100011F099FF03001800FFF771FB03000993099B002B22D10898089B88331900089B7C331A00089B28331C00154B0193154B0093230011F043FD03001800FFF7C2 +:407E400057FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04600E0C046089B002B07D0089B18000EF0D4FD089B180030F05DFD099B18000AB001 +:407E800010BDC046706B0008B95B011000B58BB005900491039200230993059B1B681800FFF716FB031E21D0039B5D4A934201D90223B1E0059B1868039BD900059B103301 +:407EC0001A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69039A0499180031F05FF894E0059B1B681B0C1B044B4A934219D1059B1B684A4AC1 +:407F000013404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF03000993099B002B00D175E0099B74E0059B1B683F4A13403F4A934206D0059B1B6829 +:407F4000394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB059A420AD1039A049906A800230093002317F0D8F80300089307E0039A049906AB9C +:407F8000180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B68234A1340234A93420AD1059B10331A0006AB11001800FFF773FE030009931EE0D4 +:407FC000059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6898B200E00020059B10331A0006AB1900FFF78AFE0300099301E002230993099B18 +:40800000002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC046FFFFFF1F000003700000FFEF00000360FFFFFFEF0000016010B588B00200029178 +:408040000E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188805AB0093230005F051F803000793079B002B08D10699059A029B1800FFF706FFDC +:408080000300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B0020000916B4606331A80204B1B68002B01D1072337E06B4606331B88002B04D0C7 +:4080C0006B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F02292009A18114BD218009B1A60009B1B68DB68012B16D1009B1B681B68002B11D1C4 +:4081000000230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0039B00E00023180005B000BDF068000800B585B0020000916B4606331A80002345 +:408140000293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B01D0039B09E0029B1B68002B01D0052303E0029A009B1A60039B180005B000BD80 +:4081800000B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E236B441B8811001800FFF778FF03000593059B002B01D0059B29E0049B1B68002B9B +:4081C00001D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B012293430193049B5B68019A1A40019B9A4201D003230DE0009B002B06D0049B9A68009B9A4220 +:4082000001D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B32D0019B1B681800FFF752F9031E05D0019B1B69180030F07DFB25E0019B1B68D9 +:40824000134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E0019B1B680C4A13400C4A93420AD1019B1B6918000EF0D1FB019B1B69180030F0EB +:4082800059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF0000036010B588B004910392029316236B44021C1A8006AA16236B441B8811001800FFF779 +:4082C00037FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF7D5FD03000793079B002B04D0069B00221A60079B1DE0069BDB68012B18D1069B35 +:408300001968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B06D0069B1800FFF775FF069B00221A60079B180008B010BD00B587B002006B464E +:4083400006331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493049B002B01D0049B1CE0039BDB68012B07D16B4606331B88180004F0E5FF030089 +:408380000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B00E0059B180007B000BD000000B583B00190019B1B681800FFF78AF8031E03D0FC +:4083C000019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC0300DB000BE0019B1B68084A1340084A934203D1019B1B699B6D00E00023180039 +:4084000003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B44021C1A80029B002B02D0029B00221A60019B002B02D0019B00221A6004AA0E2301 +:408440006B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002B01D1062311E0029B002B03D0049B1A68029B1A60019B002B06D0049B1800FFF741 +:4084800095FF0200019B1A600023180007B000BD00B58BB00390029101920093009B00221A600C9B002B0AD0039B1A68C023DB051A40C023DB059A4201D00823F8E0039BF4 +:4084C0001B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0039B1969039B5A69029B180030F05CFD039B5B69029AD018039B5B69019AD31A0E +:408500001A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A934232D10C9B002B2FD1039B1800FFF73EFF03000733DB080893089A019B9A4201D962 +:408540000423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF03000793079B002B01D0079BA2E0029A089BD018019A089BD31A1A00002130F0A7FD009BBC +:40858000089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A934200D083E0039B1B68444A1340444A93420BD105AB180015F007FD05AB434ACC +:4085C0001A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB5A600C9B002B08D1039B1A68E023DB051A40C023DB059A4208D1019A029905AB25 +:40860000180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B0EDA019B002B05D0019A029B0021180030F04CFD099B1800FEF75AFF030037E075 +:40864000099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B019AD31A029AD318099A0021180030F02DFD17E0099A019B9A4213D2099B019ABF +:40868000D31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A00002130F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF71 +:4086C000000001600000FFEF000003607C520410AC52041010B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230122FFF742FD03000793F0 +:40870000079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE0300180008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A91623F6 +:408740006B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A0499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44EA +:40878000021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049B1B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A67 +:4087C000934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B185A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B68DA +:408800001B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D1039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B77 +:40884000002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A441088009386 +:408880002B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800FEF7DAFD079B180030F044F8099B18000BB030BD00000170000001600000027018 +:4088C00000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E050 +:40890000094B00E00023180002B0704709000001080000010A0000010B000001F846041028470410584704108847041000B583B00190019B1B68114A934205D8104A9342F6 +:4089400006D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083318001CF0C6FD02E0072304E0C046019B00221A600023180003B000BD0900000149 +:40898000080000010B00000100B585B001900091019B00221A60009B334A93421BD0324A934203D8314A934207D03EE0304A93421FD0304A93422AD037E0019B0833180088 +:4089C0001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE019B0833002118001AF03AFE0300039327E0019B083318001CF06FFD019B083301 +:408A0000012118001CF094FD0300039319E0019B083318001CF061FD019B0833002118001CF086FD030003930BE0009AFE23DB051A4080235B049A4201D1022311E008236B +:408A40000FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD0300180005B000BD09000001080000010A0000010B00000100B587B0039002910B +:408A80000192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A934214D809E0039B0833019A029918001CF0E3FA030005930CE0039B0833019A029953 +:408AC00018001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF059B1800FEF704FD0300180007B000BD08000001090000010B00000100AFFFFF14 +:408B000000B589B00390029101920093039B1B68FF221340802252041343824A934200D1AEE0039B1B68FF2213408022520413437D4A934200D1A1E0039B1B68FF221340B2 +:408B4000802252041343794A934200D194E0039B1B68FF221340802252041343744A934200D187E0039B1B68FF221340802252041343704A934200D17AE0039B1B68FF223D +:408B800013408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A934261D0039B1B68FF221340802252041343634A934255D0039B1B68FF221340B3 +:408BC0008022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD0039B1B68FF221340802252041343574A934231D0039B1B68FF221340802252043F +:408C00001343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68FF2213408022520413434B4A93420DD0039B1B68FF221340802252041343474A9F +:408C4000934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E072 +:408C800010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059B9A4202D20423079328E0039B1B68224A93421AD3214A934203D9224A934214D88D +:408CC00009E0039B0833029A110018001CF04DFA030006930CE0039B0833029A110018001EF0D2FD0300069302E01D4B0693C046069B1800FEF7FCFB03000793079B002B03 +:408D000008D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B180009B000BD01000001020000010300000104000001050000010800000109000001FE +:408D40000A0000010B0000010C0000010D0000011000000111000001120000011300000100AFFFFF00B597B003900291019204AB05A903984022FFF7C3FE03001593159BA9 +:408D8000002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB031E01D0102300E00023180017B000BD00B587B00390029101920093039AFE23F9 +:408DC000DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB049A4207D0039AFE23DB051A40C023DB049A4248D1039B554A93421ED0534A93424A +:408E000009D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934210D34F4A934221D04E4A934223D027E017236B4407221A7024E017236B440522FD +:408E40001A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A7010E017236B4402221A700BE017236B4408221A7006E017236B4406221A7001E041 +:408E800000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D117236B4406221A7001E0002348E0029B2F4A934212D02E4A934203D82D4A934248 +:408EC00007D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B04D116236B4403221A7003E016236B4404221A70019B802B0ED1C02301930BE01E +:408F000016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0009B16226A4412781A70019917236B441A7816236B441B7818000BF02FFA03001A +:408F4000180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C00401000006020000060200C0020300C0020200004001000040030000400400004024 +:408F800082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040230EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E00023F8 +:408FC000180002B07047C046FFFFFFFEFC1A041000B585B00190009102230393019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A714F +:40900000019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7902218A431A71019B083318000BF0ECF90023039317E0019B1B68134A1A40A02354 +:409040009B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4201D008230393039B002B06D0B4235A00019B0021180030F029F8039B180005B04F +:4090800000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B1800FFF743FC0300180003B000BD00B583B00190B0235A00019B0021180030F02F +:4090C00005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204A934205D1019B083318000BF099F90CE0019B1B681B4A1A40A0239B049A4222D17C +:40910000019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A4376 +:409140001A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC0460200C0020000C07F00B587B00390029101920093009B5B69DAB2039B5A71039B8F +:409180000833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800019B1B69029A19000CF054F803000593059B180007B000BD00B5A9B0039002917E +:4091C00001920093009BFF221340802252041343A94A934200D1A0E0009BFF221340802252041343A54A934200D194E0009BFF221340802252041343A14A934200D188E017 +:40920000009BFF2213408022520413439D4A934200D17CE0009BFF221340802252041343994A934200D170E0009BFF221340802252041343954A934200D164E0009BFF22D0 +:409240001340802252041343914A934259D0009BFF2213408022520413438E4A93424ED0009BFF2213408022520413438A4A934243D0009BFF221340802252041343874A05 +:40928000934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041343804A934222D0009BFF2213408022520413437C4A934217D0009BFF221340F9 +:4092C000802252041343794A93420CD0009BFF221340802252041343754A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE03023AE +:409300000CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009B1800FFF72DFE03002493249B802B01D902239EE0249B802B01D9022399E0249A8D +:40934000259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB03002693269B002B00D077E0039B019A02991800FFF781FB03002693269B002B6ED13A +:40938000039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019A029904AB18002FF0FFFD002327930EE004AA279BD3181B7836225340D9B204AA15 +:4093C000279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249AD31A1A0036212FF071FE0023279310E004AA279BD3181B786A225340D8B2039AEF +:40940000E021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A00019BD018019B249AD31A1A005C212FF04DFE039B009A11001800FFF7A5FA03002D +:409440002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04600E0C046019A04AB11001800FDF7F4FF269B180029B000BD010000010200000104 +:4094800003000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B58EB00390019200930A2325 +:4094C0006B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F236B443F210A401A70019BB44A13400A930A9A039B11001800FFF76AFD03000D9331 +:409500000D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A90A236B4418882300FEF72AFE03000D930D9B002B00D02FE1059B1800FEF736FFF0 +:40954000030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089B002B02D102230D9317E1089B5B69DAB2039B5A71059A089B09990398FFF7F4FD93 +:4095800003000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D0DBE0019BFF2213408022520413430693069B002B02D102230D93EEE0069BFF22BF +:4095C00013408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A934200D194E0069BFF221340802252041343774A934200D188E0069BFF2213408022B0 +:4096000052041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E0069BFF2213408022520413436B4A934200D164E0069BFF22134080225204134348 +:40964000674A934259D0069BFF221340802252041343644A93424ED0069BFF221340802252041343604A934243D0069BFF2213408022520413435D4A934238D0069BFF2299 +:409680001340802252041343594A93422DD0069BFF221340802252041343564A934222D0069BFF221340802252041343524A934217D0069BFF2213408022520413434F4A13 +:4096C00093420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2387 +:4097000008E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0039B5B79802B02D902230D9335E0059B1A68A223DB059A4202D008230D932CE0BF +:40974000039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F236B441B78002B18D02F236B441B78032B02D802230D9310E0039B5B792F226A44FB +:4097800012789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0039B1800FFF790FC04E0039B1A7901210A431A710D9B18000EB010BDFFC0FFFFE9 +:4097C0000200C0020000C07F010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D000001100000011100000112000001D7 +:409800001300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF748FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A2354 +:409840006B44198803980023FFF734FE0300180005B000BD00B587B003900291019207230593039B1B7901221340DBB2002B3CD0039B1B7902221340DBB2002B06D0039B7D +:409880001B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD1039B0833019A029918000BF01FFD03000493049B1800FDF71BFE0300059317E048 +:4098C000039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300059305E00723059302E0C04600E0C046059B002B03D0039B1800FFF7E5FB059BBE +:40990000180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B68169300230493169B1800FFF72AFB03001593039804AB05A94022FFF7E2F803001793F1 +:40994000179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D10398039BE033159A1900FFF785F803001793179B002B1ED1039B049A05A9180063 +:40998000FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B002B0CD1019A05A9029B18002FF0FCFA06E0C04604E0C04602E0C04600E0C046B6 +:4099C000049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039B1B7901221340DBB2002B01D1072350E0039B1B7902221340DBB2002B08D0039B5D +:409A00001B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0039B1B681C4A93421ED1039B083305AA110018000BF008FD03000993099B002BBE +:409A400007D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800FDF746FD030014E0039B1B680B4A1A40A0239B049A420BD1039B08331800039B11 +:409A80005B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F00B587B00390029101920093009B019A1A60019B002B05D0019A029B2121180015 +:409AC0002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800FFF778FF03000593059B002B15D1039B1800FFF7E9FA03000593059B002B05D1ED +:409B0000039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF7D3FA059B180007B000BD00B597B0039002910192039B1B7910221340DBB2002B69 +:409B400002D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B40221800FFF737FF03001593019A05A9029B1800FDF784FC031E01D010231593159B19 +:409B8000002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB40211800FDF75AFC159B180017B000BD00B587B0039002910192039BFF2293432D4A93424F +:409BC00011D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A1340284A93420CD1039BFF22134006D0039BFF22134080225204134302E0002300E094 +:409C000000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A70039BFF229343144A934213D1039B124A93420FD0049B002B01D1022316E0049B94 +:409C4000180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D1049B002B01D1022300E00023180007B000BDC046000003100000021000FFFEFFE7 +:409C8000000004100000061010B58CB0079006910592049327226A440499069B1800FFF785FF03000A930A9B002B01D00A9B5AE0079B180016F0CFFF02000F9B9A4201D946 +:409CC000042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B441B78234C234907980E9A0392059A0292049A019200930123220018F0A9FC030064 +:409D00000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F08BFF134A134907980E9B0393059B0293049B019300230093012318F0ABF903002E +:409D40000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B1800FDF7C6FB030018000CB010BD00000210706B0008B95B01100000031010B58CB0F8 +:409D8000079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D00A9B56E0079B180016F055FF02000F9B9A4201D904234CE0069BFF229343264A0D +:409DC000934219D1079B00220021180016F034FF27236B441B78214C214907980E9A0392059A0292049A019200930023220018F037FF03000B9321E0069BFF229343194A18 +:409E0000934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393059B0293049B019300230093002318F05BFE03000B9301E008230AE00B9B0A4A05 +:409E4000934201D1102304E00B9B1800FDF750FB030018000CB010BD00000210706B0008B95B01100000031000BFFFFF10B594B00790069105920493079B9B6D0733DB086D +:409E800012930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B13937FE0069A80235B0213404BD0069BFF229343484A934211D0069BFF229343464A6C +:409EC00093420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF22134006D0069BFF22134080225204134302E0002300E000231193119B1800FEF784 +:409F0000E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0CA93F236B441B780293049B0193059B009323000CF0B2F903001393139B002BC7 +:409F400016D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B009323000CF00BF903001393139B002B15D1129A16990CAB180005F032FF0300139384 +:409F8000139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0C0460CAB180005F0FFF909AB180005F0FBF9139B002B03D1129B5A00189B1A604B +:409FC000139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFF0000041000000610706B0008B95B011010B58EB00590049103920293059B9B6D6C +:40A000000733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D0102337E00C9A029909AB180005F076FE03000D930D9B002B1CD1029A0C9BD118D9 +:40A040000C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A049906AB019309AB009323000CF023FA03000D9302E0C04600E0C04609AB180005F075 +:40A0800093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB00691059204931E236B44021C1A800E9B0D9A1A60069C8023DA0008A91E236B4455 +:40A0C00018882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB059A4202D0082309933AE0089B1B682B4A934210D1089B1869049C059A06990E9B00 +:40A1000002930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A934219D1069B204A1340204A934210D1089B1869049C059A06990E9B02930D9B2B +:40A1400001930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C046099B002B0CD10E9B1B680C9AD0180E9B1B680D9AD31A1A0021212EF0A7FF08E066 +:40A180000D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC046000001700000FFEF0000036000FFFEFF0000061010B588B004910392029316236B44021CB6 +:40A1C0001A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D0079B30E0069B1B68184A1340184A93420DD1069B1869029C039A04990B9B019336 +:40A200000A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4A13400F4A93420BD1069B18690A9C029A03990B9B00932300FFF7DAFE030002E0D1 +:40A24000082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFF0000061010B586B001900091019BFF229343124A934206D1019BFF2213408022F7 +:40A280005204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F040FB030023700F236B441A78009B0121180016F0C1FCC04606B010BD00000312E1 +:40A2C00010B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A934204D0119B002B01D008237DE0089C80235A000AA926236B4418882300FDF791 +:40A300003FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A420AD00A9B1A68E023DB051A40E023DB059A4201D0082358E00A9B1B682D4A134081 +:40A340002D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E0089B264A93420ED1254A26490B98129B0293079B0193069B0093002317F064FA37 +:40A3800003000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A18490B98129B0493079B0393069B0293119B0193109B0093002317F0BFF80300FD +:40A3C0000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800FDF786F8030000E0022318000EB010BD00000312FFFFFFEF000001600000021299 +:40A40000706B0008B95B011010B58EB008910792069326236B44021C1A80149B00221A60089BFF2293433C4A934204D0119B002B01D008236CE0089C80239A000AA9262386 +:40A440006B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB051A40E023DB059A4201D0082350E00A9B1B682A4A93424AD10A9B1B690B930B9B6E +:40A48000180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B98139B0393129B0293079B0193149B0093012317F0B5FD03000D9322E0089BFF227F +:40A4C0009343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B0493079B0393149B0293119B0193109B0093012317F0DEF903000D9301E00823A8 +:40A5000006E00D9B1800FCF7F3FF030000E0022318000EB010BDC046000003120000017000000212706B0008B95B011000B583B001900091009AFE23DB051A408023DB04BC +:40A540009A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902210A431A71019B00225A71019B90 +:40A5800000229A71019B0833180009F03DFF0023180003B000BD000010B58AB003900800019219000A236B44021C1A8009236B440A1C1A70784B09930023089309236B4442 +:40A5C0001B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FF03000693069B002B01D0069BD1E0019C079A04A90A236B4418882300FDF7C0FD42 +:40A6000003000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059A01980023FEF7C4FB03000893089B002B01D10223ADE0039B0833089A11001800CD +:40A6400009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030097E0039B08331800049B1969059A09236B441B785BB209F02DFF03000993099BB3 +:40A68000002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D03F4A934209D011E0039B0833042118000AF01CFB030009930BE0039B083300210A +:40A6C00018000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F9099B1800FCF704FF030052E0039B1A7901210A431A71019AFF23DB051A4090230B +:40A70000DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A934208D0049B1B68214A944663445A425341DBB206E0102304E0082302E010239C +:40A7400000E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B68114A93420FD0049B1B68104A934208D0049B1B680E4A944663445A425341DBB28B +:40A7800004E0102302E0082300E01023039A5371002318000AB010BD809FFFFF0001600401016004010000400200004003000040FCFFFFBF00B585B0039001920A236B44EC +:40A7C0000A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A236B44198803980023FFF7CEFE0300180000 +:40A8000005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D1072305932AE0039B5B791A00019B9A4202D904232E +:40A84000059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B1800FCF745FE030005930DE0039B5B791A00009B1A60009B1A680299039B18003D +:40A8800000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC046706B000800B587B0039002910192039B1B7904221340DBB2002B06D1039B1B7997 +:40A8C00002221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305930EE0039B0833019A0299180009F06AFE03000493049B1800FCF7FAFD03000593B8 +:40A90000059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B000BD10B58AB00590049103920293059B1A68FF23DB051A409023DB049A4210D0B3 +:40A94000059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B795343089301E0039B08930C9A089B9A4202D20423099312E0059B08331800029C039A0499BF +:40A980000D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D0059B180000F082F8099B18000AB010BD00B58BB003900291019200930123099333 +:40A9C000384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B7902221340DBB2002B09D0039B1B7904221340DBB2002B02D10723099344E0039B1B7C5BB26F +:40AA0000012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833009A04A918000AF08FF803000893089B002B06D0089B1800FCF75AFD0300099377 +:40AA400020E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF0A3FA02E0042309930CE004AB10211800FCF7F2FC039B180000F018F80300099341 +:40AA8000099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B18000BB000BD809FFFFF0001600400B583B00190019B1B68002B01D1002328E0019B4E +:40AAC0001A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B00225A71019BEC +:40AB000000229A71019B1A7902218A431A710023180003B000BD000000B585B0020000916B4606331A80009B002B01D108231BE002AA6B4606331B8811001800FDF7F8FA8C +:40AB400003000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A043303CA03C30023180005B000BDC046FEE0FFFF00B585B0020000916B4606337E +:40AB80001A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393039B002B01D0039B05E0029B009A043303CB03C20023180005B000BD00B585B026 +:40ABC000020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B002B01D0039B04E0029BDA68009B1A600023180005B000BD00B585B002000091BA +:40AC00006B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AA6B4606331B8811001800FDF781FA03000393039B002B01D0039B09E0009B064A22 +:40AC4000934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B00190019ACC235B00D3580B4A934203D00A4A934206D00BE0019B0833180008F02E +:40AC800044FA05E0019B0833180012F007FAC046C04603B000BDC046011000060210000610B588B00390019200930A236B440A1C1A800399009C019A0A236B44188823000A +:40ACC000FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB03000693039B1B68196817236B44069A0098FEF75FF80200039B5A60039B5B68002B01D192 +:40AD00000223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B005549D150039ACE235B001021D154039B1B681B68514A93420DD0039B1B681B684F4AA7 +:40AD4000934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039B0833180017236B441978039B1B681A69069B08F088F903001800FCF7B9FB030060 +:40AD80000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039B1B681B68344A93420DD0039B1B681B68324A934205D0039B1B681B68304A934282 +:40ADC00001D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B681A69069B11F010FB03001800FCF780FB0300079302E0022332E0C046009AFE23B7 +:40AE0000DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C934202D90823079315E0009AFE23DB051A40C023DB049A4206D1009B1B0ADBB209 +:40AE40003F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B180008B010BDC046FFC0FFFF010000060200000601100006010000400200004082 +:40AE8000030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B00221A600A9C80235A004F4B76A98C46634419880CA82300FFF7F2FE03007593EC +:40AEC000759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A4202D90423759369E07E9A7D9BD31874933E4B76AAD218CC235B00D3583C4A934222 +:40AF000023D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305947E9B04937C9B03937B9B02937A9B0193089B00930B00012112F02EF803001800F5 +:40AF4000FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AAD2189E23FF33D35C1D00089C099A7D990CAB083318000595749B04937E9B0393C0 +:40AF80007C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E002231EE0759B002B08D07F9B002B05D07F9A7E9B002118002EF088F80CAB1800F9 +:40AFC000FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A60759B180077B030BD56FEFFFF58FEFFFF021000060110000686B0039002910192CB +:40B000000093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042305E0029A059BD218069B1A600023180006B0704770B5F6B00891079206936D4B83 +:40B0400076AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46634419880CA82300FFF71AFE03007593759B002B01D0759BB9E05F4B76AAD218DB +:40B08000CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF7A6FF03007593759B002B00D084E04F4B76AAD2189E2377 +:40B0C000FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAA083210007E9A05927C9A0492039602937B9B01937A9B00932B000A00210011F0AB +:40B1000081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A934240D1354B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF787 +:40B140005BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B254A76A989189E22FF328A5C1600069D07990CAA08321000059604937E9B0393B3 +:40B180007C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300759301E0022322E0759B002B0CD07F9B002B09D07F9A7E9B002118002DF086FF0E +:40B1C00002E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF33D35C1A007D9B9A1A809B1A60759B180076B070BD4EFEFFFF58FEFFFF0210000638 +:40B200000110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1019B9B68002B54D0019B9A68019BDB6819001000FCF710F9019B9B6818002DF095 +:40B2400079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B10331800FDF713FF0300039332E0019B1B68FF2293431E4A934206D0019B1B68FF22AF +:40B2800093431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8019B9B6818002DF045FB019B1B69002B0FD0019B1A69019B5B6919001000FCF79E +:40B2C000CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FE039B180005B000BD0100003100010030000200300003003082B001900091019B27 +:40B300005A68009B1A600023180002B07047000000B587B00390029101920093029BFF221340802252041343B64A934200D1A0E0029BFF221340802252041343B24A9342A5 +:40B3400000D194E0029BFF221340802252041343AE4A934200D188E0029BFF221340802252041343AA4A934200D17CE0029BFF221340802252041343A64A934200D170E089 +:40B38000029BFF221340802252041343A24A934200D164E0029BFF2213408022520413439E4A934259D0029BFF2213408022520413439B4A93424ED0029BFF221340802229 +:40B3C00052041343974A934243D0029BFF221340802252041343944A934238D0029BFF221340802252041343904A93422DD0029BFF2213408022520413438D4A934222D0B6 +:40B40000029BFF221340802252041343894A934217D0029BFF221340802252041343864A93420CD0029BFF221340802252041343824A934201D140231CE000231AE030239D +:40B4400018E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102316226A441370B8E0039AF423D8 +:40B480005B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D917236B44009A1A70039BA933FF330399F42252008A5C991817236B441A78019B180036 +:40B4C0002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4235B00D25C17236B441B78D318D9B2039AF4235B00D154009B002B00D17CE0039AA1 +:40B50000EA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D154039AF4235B000021D154039B08331800039B6933FF33190016236B441A7811 +:40B54000029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D0039B08331800039BA933FF33190016236B441B781A00FDF77FFA03000493049BF1 +:40B58000002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493049B002B01D0049B28E0039B08331800039BEA33FF3301221900FDF75DFA0300AC +:40B5C0000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F903000493049B002B01D0049B06E0009B002B00D042E700E0C0460023180007B094 +:40B6000000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D00000110000001110000011200000113000001A4 +:40B6400000B5E1B001900091009BFF2213408022520413435C935C9BFF221340802252041343A44A934200D1A0E05C9BFF221340802252041343A04A934200D194E05C9B95 +:40B68000FF2213408022520413439C4A934200D188E05C9BFF221340802252041343984A934200D17CE05C9BFF221340802252041343944A934200D170E05C9BFF2213403F +:40B6C000802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D05C9BFF221340802252041343884A93424ED05C9BFF221340802252041343854AA5 +:40B70000934243D05C9BFF221340802252041343814A934238D05C9BFF2213408022520413437E4A93422DD05C9BFF2213408022520413437A4A934222D05C9BFF221340BE +:40B74000802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BFF221340802252041343704A934201D140231CE000231AE0302318E0202316E0BD +:40B780001C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010237022FF326A441370019B51229B5CFF2B01D185 +:40B7C000072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB1800FDF765FC019B51229B5C012B10D1019B9A687023FF336B441B78D3185E93019B84 +:40B80000DA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D93019B1968019B5A685C9B02A8FDF7C4FC03005F935F9B002B41D15D9A5E9902ABDD +:40B840001800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB1800FEF756F803005F935F9B002B2BD1019B1968019B5A685C9B02A8FDF79DFC03001A +:40B880005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002B15D1019B103319007023FF336B441A7802AB1800FEF72CF803005F9308E0C046A5 +:40B8C00006E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002B04D15A9B002B01D05A9B5F935F9B180061B000BD0100000102000001030000016B +:40B90000040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093029BFF2275 +:40B9400013408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BFF221340802252041343794A934200D194E0069BFF221340802252041343754ADB +:40B98000934200D188E0069BFF221340802252041343714A934200D17CE0069BFF2213408022520413436D4A934200D170E0069BFF221340802252041343694A934200D18D +:40B9C00064E0069BFF221340802252041343654A934259D0069BFF221340802252041343614A93424ED0069BFF2213408022520413435E4A934243D0069BFF221340802248 +:40BA0000520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF221340802252041343534A934222D0069BFF221340802252041343504A934217D083 +:40BA4000069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E0E8 +:40BA800040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102317226A44137049E0039B50229A5C1F236B441721694409788A1A1A701F23AF +:40BAC0006B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049B31E01F236B441A78009B9A4203D91F236B44009A1A70039B1033039A5021525C55 +:40BB000099181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B441B78009AD31A0093039B50229A5C1F236B441B78D318D9B2039B50229954009BE6 +:40BB4000002BB2D10023180009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001EA +:40BB8000120000011300000100B589B0039002910192039B5A68019B9A4205D2039B00225A601223079361E0019B002B09D1039B5B68002B05D1039B1B68002B01D1122328 +:40BBC00062E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68D21A019BD31A0593039B9A68059BD118019A029B18002DF0D7F90023079335E0EA +:40BC0000039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039B08331800019B029A0699FFF771FB030007931BE0039B1B68FF229343164A93423D +:40BC400006D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF767FE0300079301E007230DE0079B002B09D0039B1800FFF7C5FA019A029B212104 +:40BC800018002DF023FA079B180009B000BDC0460100003100010030000200300003003010B588B00291019200930E236B44021C1A8000230693019B0733DB080593029B3C +:40BCC0001800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B190001202CF0A4FA03000693069B002B01D109231CE0059A0699009B1800FFF745FF0300CD +:40BD00000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E0C046069B18002CF005FE079B180008B010BD000000B587B00390029101920093BF +:40BD4000039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B002B01D0059BEFE0039B0833019A02991800FCF781FE03000593059B002B01D09E +:40BD8000059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B01D0059BD0E0009BFF221340802252041343674A934200D1A0E0009BFF221340D3 +:40BDC000802252041343634A934200D194E0009BFF2213408022520413435F4A934200D188E0009BFF2213408022520413435B4A934200D17CE0009BFF221340802252040F +:40BE00001343574A934200D170E0009BFF221340802252041343534A934200D164E0009BFF2213408022520413434F4A934259D0009BFF2213408022520413434B4A934276 +:40BE40004ED0009BFF221340802252041343484A934243D0009BFF221340802252041343444A934238D0009BFF221340802252041343414A93422DD0009BFF22134080229A +:40BE8000520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF221340802252041343364A93420CD0009BFF221340802252041343334A934201D1DC +:40BEC00040231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E01023039998 +:40BF0000F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B190001202CF083F90200039B1A60039B1B68002B01D1092307E0039B1B680B9A0A99BA +:40BF400018002DF031F80023180007B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000144 +:40BF800011000001120000011300000100B589B00390029101920093009BFF221340802252041343904A934200D1A0E0009BFF2213408022520413438C4A934200D194E064 +:40BFC000009BFF221340802252041343884A934200D188E0009BFF221340802252041343844A934200D17CE0009BFF221340802252041343804A934200D170E0009BFF22FE +:40C0000013408022520413437C4A934200D164E0009BFF221340802252041343784A934259D0009BFF221340802252041343754A93424ED0009BFF22134080225204134326 +:40C04000714A934243D0009BFF2213408022520413436E4A934238D0009BFF2213408022520413436A4A93422DD0009BFF221340802252041343674A934222D0009BFF22B7 +:40C080001340802252041343634A934217D0009BFF221340802252041343604A93420CD0009BFF2213408022520413435C4A934201D140231CE000231AE0302318E020230A +:40C0C00016E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010231F226A4413701F236B441A780B9BD218B7 +:40C100000D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D109235EE0039B019A5A60039B1B68019A029918002CF039FF0B9A0D9BD2180B9B9A424A +:40C140000BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E000230593059B002B01D0082339E0069B190001202CF05BF80200039B9A60039B9B68E5 +:40C18000002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D3180D9A0C9918002CF0FFFE0B9B002B0CD0039B9A681F236B4419780D9BCB18D31855 +:40C1C0000B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A540023180009B000BDC046010000010200000103000001040000010500000108000001AD +:40C20000090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B5CAB00790069105920493059B802B01D9082351E0059B1B0ADAB20B +:40C24000284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A002118002CF033FF059B02331E4A4AA98C46624411781B4A4AA884466244D154059BB8 +:40C280000333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A069918002CF080FE059B02335A00049C08A907984F9B03934E9B02934D9B0193CF +:40C2C0004C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B18004AB010BDF8FEFFFF10B58EB00790069105920493079B049A1A60049BD44A934288 +:40C3000026D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FF0200079B9A60079B9B68002B01D1092328E2079B9B68059A069918002CF034FEF0 +:40C34000079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049BFF2213408022520413430B930B9BFF221340802252041343B74A934200D1A0E0D9 +:40C380000B9BFF221340802252041343B34A934200D194E00B9BFF221340802252041343AF4A934200D188E00B9BFF221340802252041343AB4A934200D17CE00B9BFF2269 +:40C3C0001340802252041343A74A934200D170E00B9BFF221340802252041343A34A934200D164E00B9BFF2213408022520413439F4A934259D00B9BFF2213408022520415 +:40C4000013439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340802252041343954A934238D00B9BFF221340802252041343914A93422DD00B9BBC +:40C44000FF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A934217D00B9BFF221340802252041343874A93420CD00B9BFF22134080225204134311 +:40C48000834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E010230D +:40C4C00000E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B083318000B9C059A0699139B0393129B0293119B0193109B00932300FFF71CFC03000D93B1 +:40C5000029E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF2213408022520413430993099BFF221340802252041343484A934200D1CAE0099B3B +:40C54000FF221340802252041343444A934200D1BEE0099BFF221340802252041343404A934200D1B2E0099BFF2213408022520413433C4A934200D1A6E0099BFF221340CF +:40C58000802252041343384A934200D19AE0099BFF221340802252041343344A934200D18EE0099BFF221340802252041343304A934200D182E0099BFF221340802252049B +:40C5C00013432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099BFF221340802252041343244A93425FD0099BFF221340802252041343204A93422E +:40C6000054D0099BFF2213408022520413431D4A934249D0099BFF221340802252041343194A93423ED0099BFF221340802252041343164A934233D0099BFF221340802217 +:40C6400052041343124A934228D1402343E0C0460100003100010030010000010200000103000001040000010500000108000001090000010A0000010B0000010C000001AA +:40C680000D00000110000001110000011200000113000001000200300003003000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE0C8 +:40C6C0001C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0099B2B4A934201D002234BE0089A13001B029B1A0C93049BFF229343254A934212 +:40C7000013D1079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF734FC03000D9315E0079B08331800099C059A0699139B0393129B0293119B4E +:40C740000193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E0149A0C9B9A4203D8079B149A5A6008E0149B013303D1079B0C9A5A6001E00823C6 +:40C7800000E0002318000EB010BDC046090000010A0000010002003010B58CB009900792069322236B440A1C1A80099B1B68002B01D007233FE0079AFE23DB051A40C023BB +:40C7C0009B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC03000B930B9B002B01D00B9B24E00A9B1A68A423DB059A4201D008231CE00A9B19692C +:40C800000A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF763FD03000B930B9B002B03D0099B1800FEF7E8FC0B9B18000CB010BD10B5D8B031 +:40C8400005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059954AB180012F0D0FD03005793579B002B3FD154AB180011F021FC0300023B012BDB +:40C8800002D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B789A4202D01D4B579328E0569907AB0122180009F04FFA03005793579B002B1AD161 +:40C8C000039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B0193104B0093230009F084FA0300579304E0C04602E0C04600E0C04654AB180025 +:40C9000011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFF706B0008B95B011010B59EB0099008910792069300230B93209B234A1340234AAE +:40C9400093421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907980BAB0193422300932300FFF767FF03001D93C0461D9B002B02D01BE0022320E0CF +:40C980000B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293002301930023009313002200FFF79CFC03001D930B9A0CAB11001800FAF74CFDCE +:40C9C0001D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392029312236B440A1C1A800A9AFC23DB051A4088239B059A4201D0082323E00A9CF2 +:40CA000080235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E00699029C039A05980A9B00932300FFF77BFF03000793079B002B03D0059B1800F8 +:40CA4000FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE0009A0199074B180009F0A6F803000393039B1800FAF73CFD0300180005B000BD75 +:40CA8000F0680008706B000882B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07E +:40CAC0007047C046281B041000B587B0019000911E4B1B68002B01D0032334E0009B1F2B07D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B421100180008 +:40CB0000F6F79AFF03000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2358420023F6F7F8FE03000493049B1800FFF7AAFF0300059304E0049B002B01D171 +:40CB400003230593059B180007B000BDF068000810B58AB00291019200930E236B44021C1A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF7C6 +:40CB8000D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B10331A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049B93 +:40CBC0005B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFE099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A42D7 +:40CC000064D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C4422236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793DB +:40CC4000009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B9B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D1C6 +:40CC8000092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FC10 +:40CCC000030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D10499019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEFCD +:40CD000000000360706B0008B95B011000B585B00E236B4401221A801EE001AA0E236B441B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B1821ED +:40CD40001800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202BDBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFB4D +:40CD8000C04605B000BDC046706B0008F8680008F068000810B584B002AB1B4A1A601B4B1B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF79 +:40CDC000144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039B002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FB2B +:40CE00000300180004B010BD50534100F0680008F8680008706B000811BF011000B587B00390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B57 +:40CE400000225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B5A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A74C7 +:40CE8000009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB2059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CD9 +:40CEC000DAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039975 +:40CF000018002CF051F8C04607B000BD501B041000B583B001900749019B082218002CF01DF8031E01D00C2300E00023180003B000BDC046501B041000B589B0039002915E +:40CF400001920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079B26 +:40CF8000DB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A43079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D81E +:40CFC000009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019B1A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7B07 +:40D000001B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079B9B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A4385 +:40D04000079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B1B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021C15 +:40D080001A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F803000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE37 +:40D0C000099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B18000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019B24 +:40D1000018002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002309930023079307AA16236B441B881100180000F03DF903000993099B002B01D08F +:40D14000099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089916236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039BB5 +:40D180000193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B18000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE00623C2 +:40D1C0000AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046581B041082B002006B4606331A806B4606331B88180002B0704700B58BB0029182 +:40D2000001920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B11001800F6F709FC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE06D +:40D24000029B019A09980021F6F7AEFB03000893089B1800FFF7A6FF03000793079B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059300 +:40D2800002AA059B11001800F6F7D6FB03000493049B072B01D1002300E00123180007B000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF030077 +:40D2C00008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A019908980023F6F71AFB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AA3C +:40D30000089B11001800F6F797FB03000793079B1800FFF747FF03000993099B002B07D105AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F7C4FB92 +:40D34000099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0300059302AA059B11001800F6F764FB03000493049B072B01D1002315E0059BDA +:40D380001800F6F7A1FB031E01D00C230DE002AA059B11001800F6F74FFB03000493049B072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B4662 +:40D3C00006331B881800FFF70DFF0300079303AA079B11001800F6F72FFB03000693069B1800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A6000231800A8 +:40D4000009B000BD00B585B0019000910199009AAE2358420B000021F6F7C6FA03000393039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F76CFA73 +:40D4400003000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F04C +:40D4800015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D080225200934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E052 +:40D4C00020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318059A920002998A1812781000059A9200013202998A181278120201001143059A9E +:40D500009200023202988218127812041143059A9200033202988218127812060A431A60059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2BFB +:40D5400000D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C321268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12023B +:40D580005140049A0C321268120EA548825C12045140049A0C321268FF200240A048825C12064A401A60049B1433049A04321168049A103212684A401A60049B1833049A40 +:40D5C00008321168049A143212684A401A60049B1C33049A0C321168049A183212684A401A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B183358 +:40D60000049A1168854A0598800082585140049A14321268120AFF2002408148825C5140049A14321268120CFF2002407C48825C12025140049A14321268120E7848825C29 +:40D6400012045140049A14321268FF2002407448825C12064A401A60049B1C33049A04321168049A183212684A401A60049B2033049A08321168049A1C3212684A401A6040 +:40D68000049B2433049A0C321168049A203212684A401A60049B2833049A10321168049A243212684A401A60049B2C33049A14321168049A283212684A401A60059B013347 +:40D6C0000593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A0598800082585140049A1C321268120AFF2002404A48825C5140049A1C321268A7 +:40D70000120CFF2002404648825C12025140049A1C321268120E4248825C12045140049A1C321268FF2002403D48825C12064A401A60049B2433049A04321168049A20324B +:40D7400012684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A0C321168049A283212684A401A60049B3033049A10321168049A2C321268FF20B5 +:40D7800002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C321268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A4013 +:40D7C0001A60049B3433049A14321168049A303212684A401A60049B3833049A18321168049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B48 +:40D8000001330593049B20330493059B062B00D861E7C0460023180007B000BD803D0410801B041000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9A78 +:40D840005A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA944663441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D31876 +:40D880004C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C91126877 +:40D8C0001A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9A1268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825CC3 +:40D9000010002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825851404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B50 +:40D9400004334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D1E +:40D980004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C04605AB1800FFF760FD4B9B180051B000BDD4FEFFFF801B0410802D041080310410FE +:40D9C000803504108039041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9BB9 +:40DA00001A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A5340BC +:40DA40000A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00DA +:40DA8000029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C9265 +:40DAC0001A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9BD3 +:40DB00001A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534042 +:40DB400006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B8900BC +:40DB8000CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190EA1 +:40DBC000C24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40D5 +:40DC0000049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB +:40DC4000CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF21194074 +:40DC8000914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0C7C +:40DCC000FF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B69 +:40DD00001B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB5838 +:40DD40005A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504BAA +:40DD80008900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF21E6 +:40DDC00019403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B68B8 +:40DE0000079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C92A4 +:40DE40001B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1DC1 +:40DE80000C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E01C +:40DEC000801C0410802004108024041080280410801B04100C9B1A1D0C921B68049AFF210A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B40CB +:40DF00003449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B217 +:40DF40001A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099AA0 +:40DF8000120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A7006 +:40DFC000019B0F33089A120ED2B21A70002318000FB000BD801B041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B04B4 +:40E000001A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0660 +:40E0400013430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C9289 +:40E080001B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039BBA +:40E0C0001B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A4020 +:40E100000A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900A6 +:40E14000CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF21194097 +:40E18000D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0C5F +:40E1C000FF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A40BA +:40E20000059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B8900AF +:40E24000CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF21194063 +:40E28000944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0A68 +:40E2C000FF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A68D3 +:40E300000B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1D01 +:40E340000C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB5853400693C4 +:40E380000C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB5816 +:40E3C000534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374B9B +:40E400008900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E2E +:40E440002749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B35 +:40E480001B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40AE +:40E4C000049B1B0E0649CB5C1B065340099309E0802D0410803104108035041080390410802C04100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B408D +:40E500003849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9AC4 +:40E54000120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A7056 +:40E58000019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AB6 +:40E5C000D2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BD802C041000B585B00390029101920093029B012B07D1009A0199039B94 +:40E600001800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B58BB00390029101920093019B0F22134002D022235B4269E0029B002B62D131E05A +:40E640000C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B0D9AD318099A0D998A181178099A0098821812784A40D2B21A70099B0133099332 +:40E68000099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019B103B0193019B002BCAD12EE00023099310E0099B0D9AD318099A0C998A18117829 +:40E6C000099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990398FFF781FF0D99009B102218002AF05BFC0C9B10330C930D9B10330D93019B62 +:40E70000103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019B1B680693069B0F2B39D921235B423FE0069B002B1BD10A9B009A03980121FFF756 +:40E7400053FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B013B0793079B002BEEDC00E0C0460B9B5A1C0B921B7805930C9B5A1C0C92059A8F +:40E7800051B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029B5A1E0292002BC3D1019B069A1A600023180009B000BD84B0039002910192029A06 +:40E7C000039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B68591C039A11601B781A00019B1A608CE0039B1B681B781A007F231340022B1ED0D9 +:40E8000002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC60235B427EE0039B1B6801331B781A00019B1A60039B1B689A1C039B1A6065E0029AA8 +:40E84000039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B6802331B781A43019B1A60039B1B68DA1C039B1A604AE0029A039B1B68D31A032B02DCA8 +:40E8800060235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6803331B781A43019B1A60039B1B681A1D039B1A6029E0029A039B1B68D31A042BF3 +:40E8C00002DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B1B6803331B781B021A43039B1B6804331B781A43019B1A60039B1B685A1D039BA9 +:40E900001A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E00023180004B0704700B585B00390029101920093029A039B1B68D31A002B02DC67 +:40E9400060235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1C039B1A60019A0299039B1800FFF723FF0300180005B000BD00B587B0039002910C +:40E98000019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B08D0049B042B05D8039B1B681B785BB2002B02DA64235B4217E0019B00221A60B4 +:40E9C0000DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B5A1E0492002BECD10023180007B000BD00B587B003900291019204AA029903984C +:40EA00000223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F07DF903000593039B1A68049BD218039B1A60059B180007B000BD00B587B0039086 +:40EA400002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019B1B68591E019A1160012B07D9039B1B68591C039A11601B78002B02D068235B4245 +:40EA800000E00023180007B000BD00B587B0039002910192009304AA029903983023FFF743FF03000593059B002B01D0059B65E0029A039B1B68D31A002B02DC60235B4231 +:40EAC0005CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D029903980623FFF721FF03000593059B002B01D0059B43E0039B1A68019B9A60039B1A689F +:40EB0000019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F900232CE0039B1B681B781A00009B1A60039B1B685A1C039B1A60009B1A1D0299039B97 +:40EB40001800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A68009B5B68D218039B1A60039B1A68029B9A4202D066235B4200E00023180007B0EF +:40EB800000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC6C235B42D3E0039B1B685A1E039B1A60039B1B68019AD2B21A700123C7E0019BE9 +:40EBC000FF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6881221A700223C1 +:40EC0000A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B6880 +:40EC4000019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B3D4A934234D8039B1B681A00029BD31A032B02DC6C235B4269E0039B1B685A1E6F +:40EC8000039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1EA9 +:40ECC000039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B4234E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039BA3 +:40ED00001A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039B1B68019A120ED2B21A70039B1B685A1EA6 +:40ED4000039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039002916B4607331A70039B1B681A00029BD31A002B02DC6C235B420BE0039B1B68AF +:40ED80005A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039002910192009300230593039B1A68029B9A4208D3039B1B681A00029BD31A1A00B8 +:40EDC000009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B1B68059A019918002AF0DEF8059B180007B000BD00B587B00390029101920023C4 +:40EE00000493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029BD31A1A00049B9A4202D26C235B4259E0039B1A68049B5B42D218039B1A60039BC0 +:40EE40001968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B4232E0039BCF +:40EE80001B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF771FE03000593059B002B01DA059B19E0059B049AD31804930299039B02221800A5 +:40EEC000FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E0C046059B180007B000BD00B585B001900091002303930099019B00221800FFF7D5 +:40EF000041FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800FFF71CFF03000293029B002B01DA029B04E0029B039AD3180393039B180005B0A3 +:40EF400000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF702FED7 +:40EF800003000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF7DDFE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BDC4 +:40EFC00000B587B0039002910192009300230593089B002B11D1029A039B11001800FFF784FF03000493049B002B01DA049B3CE0049B059AD318059303E0059A089BD318C7 +:40F000000593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF7AAFD03000493049B002B01DA049B15E0049B99 +:40F04000059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD00B587B003900291019200230593039BA5 +:40F080001B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039B1A60039B1B68019AD2B21A70019B002B1BDD039B1B681B785BB2002B15DA039BA7 +:40F0C0001B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B6800221A70059B01330593059A0299039B1800FFF747FD03000493049B002B01DA53 +:40F10000049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BD000000B58BB0039002912A +:40F14000019200930023079300230893089B09936FE00023069305E0099B01330993069B01330693099A0C9B9A4205D2009A099BD3181B78202BEFD0099A0C9B9A425DD0C7 +:40F180000C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B780A2B40D0009A099BD3181B780A2B3CD0069B002B02D02C235B42D0E0009A099B92 +:40F1C000D3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3181B785BB2002B08DB009A099BD3181B781A005C4B9B5C7F2B02D12C235B42AEE067 +:40F20000009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089B0133089302E0C04600E0C046099B01330993099A0C9B9A428BD300E0C046089B4E +:40F24000002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07221A4013005B009B185B000733DB08CB180893089A079BD31A0893039B002B03D00D +:40F28000029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893039B059351E0009B1B780D2B46D0009B1B780A2B42D0009B1B78202B3ED0009BC2 +:40F2C0001B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B781900204B5B5C19003F230B4013430693089B01330893089B042B20D10023089368 +:40F30000079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C0592069A120AD2B21A70079B022B07D9059B5A1C0592069AD2B21A7000E0C046099BF9 +:40F34000013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A60002318000BB000BDA83D041000B583B001900091009B9A00019B1100180010F097FDC04665 +:40F3800003B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6000E0C04602B0704700B583B00190019B002B1AD0019B9B68002B0CD0019B9A6854 +:40F3C000019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00225A60019B00229A6000E0C04603B000BD00B585B001900091009B1E4A934202D9CB +:40F4000010235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039B002B02D110235B4220E0019B9B68002B15D0019B9968019B5B689A00039B18001F +:40F4400029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B009A5A60019B039A9A600023180005B000BDC0461027000000B585B001900091D1 +:40F48000019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D10D +:40F4C00000E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FE03000293029B002B02D110235B421FE0019B9B68002B14D0019B9968039B9A008A +:40F50000029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F009FA019B039A5A60019B029A9A600023180005B000BD00B585B001900091002399 +:40F540000393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF002344E0009B5B68013B02930AE0009B9A68029B9B00D3181B68002B06D1029B013BD5 +:40F580000293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029B9A420BD2029A019B11001800FFF720FF03000393039B002B0ED016E0019B9A68AF +:40F5C000029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968029B9B001A0029F0DFFC039B180005B000BD00B587B0039002916B4607331A7070 +:40F60000002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF7E1FE03000493049B002B54D1039B1B686A4607322B +:40F64000127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0039B9A68059B9B00D318039A9168059A92008A1812686946073109780120411A3E +:40F680005143029A9068059A92008218126868460730007842438A181A60059B01330593029B5A68059B9A42DAD814E0039B9A68059B9B00D318039A9168059A92008A18C3 +:40F6C00012686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D800E0C046049B180007B000BD00B589B0039002916B4607331A70039A029B9A42F0 +:40F7000001D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF760FE03000793079B002B77D1039B5A68029BDF +:40F7400011001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60029B1B686A46D8 +:40F780000732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE0039B9A68069B9B00D3181B680493039B9A68069B9B00D318039A9168069A92002E +:40F7C0008A1812686946073109780120411A5143029A9068069A92008218126868460730007842438A181A60029B9A68069B9B00D318029A9168069A92008A181268694645 +:40F80000073109780120411A51436A4607321278049842438A181A60069B01330693039B5A68069B9A42BBD802E0C04600E0C046079B180009B000BD00B585B00190009167 +:40F84000019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00002129F033FC019B9B68009AD11752184A401A60009B002B02DA01235A4200E0B6 +:40F880000122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009B9A4201D800230EE0019B9A68009B5B099B00D3181A68009B1F210B40DA4013009A +:40F8C0001A0001231340180002B0704700B589B0039002916B4607331A7000230793029B5B090693029B1F22134005936B4607331B78002B07D06B4607331B78012B02D051 +:40F9000004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0069B5A1C039B11001800FFF761FD03000793079B002B25D1039B9A68069B9B00A5 +:40F94000D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68069B9B00D318039A9168069A92008A1811686A4607321078059A904002000A4387 +:40F980001A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049313E0019B9A68059B9B00D3181A68049BDA4013000122134001D0039B11E0049B4C +:40F9C00001330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD80023180006B0704784B0019080231B0602930023039309E0019B029A134009D162 +:40FA0000029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B585B00190019B5B68002B01D1002325E0019B5B68013B03930AE0019B9A68039BB9 +:40FA40009B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B9B00D3181B681800FFF7BEFF020020239B1A0293039B5A01029BD318180005B0AD +:40FA800000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039002916B4607331A70039BFF221A606B4607331B782F2B0BD96B4607331B78392B52 +:40FAC00006D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B78462B06D86B4607331B78373B1A00039B1A606B4607331B78602B0BD96B46073379 +:40FB00001B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D306235B4200E00023180004B0704710B58EB0039002910192029B012B02DD029B102B8B +:40FB400002DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B6BD10A9B6C4A934202D904235B42CFE00A9B9B005B090A9A92001F210A40511EA0 +:40FB80008A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E0039B00211800FFF747FE03000D930D9B002B00D09CE00A9B0C9300230B9338E061 +:40FBC0000C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9B013B019AD3181A78029908AB1800FFF755FF03000D930D9B002B00D07AE0039B02 +:40FC000099680B9BDA089300CB180399896892008A18116808980B9A92001C242240904002000A431A600C9B013B0C930B9B01330B930C9B002BC3D165E0039B00211800FD +:40FC4000FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3181B782D2B04D1039B012252421A6035E0019A0C9BD3181A78029908AB1800FFF77B +:40FC80000DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002B2ED1039B1B68012B0CD1089B1A0005A9039B180000F05CFD03000D930D9B002B1B +:40FCC0000CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B01330C930C9A0A9B9A42B4D30CE0C0460AE0C04608E0C04606E0C04604E0C04602E09E +:40FD0000C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B0039002910192019B9B08019A03210A40511E8A41D2B29B180493039B5A68049B3F +:40FD40009A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB03000793079B002B33D1039B00211800FFF762FD03000793079B002B2BD1019BF7 +:40FD800006930023059320E0039B9A68059B03218B43D318039A9168059A032082438A181168069A013A0298821812781400059AD20018200240944022000A431A60069BA4 +:40FDC000013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD00B589B0039002910192039B1800FFF748FE03000593019A059B9A4202D20823F3 +:40FE00005B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079BD218039B9968069B03208343CB181968069BDB0018200340D9400B00DBB2137032 +:40FE4000079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BD00B589B00190009100230593009B5B090493009B1F2213400393019B1800FFF72A +:40FE8000CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40511E8A41D2B29A18019B11001800FFF79FFA03000793079B002B6ED100230793E2 +:40FEC000049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A91680698049A821A2E488446624492008A1812681A60069B013B0693069A049B62 +:40FF00009A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B0693069B002BEFD1039B002B37D0049B06932DE0019B9A68069B9B00D3181A68039BF9 +:40FF40002021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A181168039A91400A001A60019B9A68069B9B00D318019A9168069A92008A181168059ABC +:40FF80000A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180009B000BDFFFFFF3F00B589B00190009100230693009B5B090593009B1F22134074 +:40FFC0000493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B00211800FFF729FC030075E0059B002B2AD00023079310E0019B9A68079B9B00D318E2 +:020000041001E9 +:40000000019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21A079B9A42E7D809E0019B9A68079B9B00D31800221A60079B01330793019B5A687C +:40004000079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C4663449B00D3181A68049B2021CB1A9A4013000393019B9A68079B18498C4663449B0021 +:40008000D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A68079B0E498C4663449B00D318019A9168079A0A488446624492008A181168069A9A +:4000C0000A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F84B001900091019B5B6803930DE0019B9A68039B39498C4663449B00D3181B68C8 +:40010000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B2E498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0F5 +:40014000C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A039B9A4232D901235B4233E0019B9A68039B1A498C4663449B00D3181A68009B20 +:400180009968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4202D237 +:4001C00001235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F84B001900091019B5B6803930DE0019B9A68039B45498C4663449B00D3181B6816 +:40020000002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B3A498C4663449B00D3181B68002B06D1029B013B0293029B002BEED100E0E8 +:40024000C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0029A039B9A4203D9009B1B685B424AE0019B1B68002B05DD009B1B68002B01DA7B +:40028000012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039B1A498C4663449B00D3181A68009B9968039B1648844663449B00CB181B689A4268 +:4002C00002D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4203D2019B1B685B4206E0039B013B0393039B92 +:40030000002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B1853400293009B002B02DA01235A4200E0012203AB1A6003AB01225A6003AB02AA9A6034 +:4003400003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A019B9A4205D1029B0593039B0293059B0193039A029B9A420BD0029A039B1100CF +:400380001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0019B9A68099B47498C4663449B00D3181B68002B06D1099B013B0993099B002BEB +:4003C000EED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B680893039B9B6807930023069300230A932AE0089B1B680493079B1A68069BD218DC +:40040000079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A60079B1A68049B9A429B415B42DBB21A00069B9B1806930A9B01330A93089B04339B +:400440000893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C039B11001800FEF7C3FF03000B930B9B002B21D1039B9A680A9B9B00D318079371 +:40048000079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B01330A93079B04330793069B002BD1D104E0C04602E0C04600E0C0460B9B18000DB0A7 +:4004C00000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60019B1A68029B1B689A4276 +:400500009B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B01330793029B04330293019B04330193079A039B9A42D1D312E0019B1A68069B9A42AB +:400540009B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069B002BE9D1C04608B07047000000B58BB0039002910192019A029B11001800FFF781 +:40058000AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05AB11001800FEF7C7FF03000993099B002B35D105AB0193039A029B9A420AD0029A80 +:4005C000039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019B5B6808930DE0019B9A68089B11498C4663449B00D3181B68002B06D1089B013B46 +:400600000893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C04600E0C04605AB1800FEF7BEFE099B18000BB000BDFFFFFF3F00B587B003900291A0 +:400640000192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF73FFD031E0EDB019A0299039B1800FFF77DFF03000593059B002B22D1039B049AA1 +:400680001A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF752FE03000593059B002B07D1039B049A1A60B6 +:4006C00004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DD019A029B11001800FFF7F1FC031E53 +:400700000EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF720FF03000593059B002B15D1049B5A42039B1A6013E01B +:40074000019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B589B0039002910192019BDA179B18D6 +:4007800053400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF745FF0300180009B000BD00B589B003900291019228 +:4007C000019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF770FF0300180009B000BD70B5064CAD +:40080000A54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131D96931368009300230193949B029300230393029A039B009801992CF09BFC030007 +:400840000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959BDB +:400880001A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368069300230793949B089300230993089A099B0698079954 +:4008C0002CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19BED +:400900009B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313680C9300230D93949B0E9300230F930E9A80 +:400940000F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B00109300231193109BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A09397 +:40098000959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368129300231393949B14936D +:4009C00000231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00169300231793169BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00DF +:400A0000A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313681893002341 +:400A40001993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BA193A39B1B001C9300231D931C9BA093A19AA59BD318A193A19AA59B9A429B412D +:400A80005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D9693C6 +:400AC00013681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00A293A394A29BA193A39B1B00229300232393229BA093A19AA59BD318A193A19A5D +:400B0000A59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360D6 +:400B4000969A131D96931368249300232593949B269300232793269A279B249825992CF009FB03000C00A293A394A29BA193A39B1B00289300232993289BA093A19AA59BAE +:400B8000D318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131DD3 +:400BC0009593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9B2A982B992CF0C6FA03000C00A293A394A29BA193A39B1B002E9300232F932E9B07 +:400C0000A093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09B3B +:400C4000A593959A131D9593A19B1360969A131D96931368309300233193949B329300233393329A339B309831992CF083FA03000C00A293A394A29BA193A39B1B003493AA +:400C800000233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B22 +:400CC0009B18A093A09BA593959A131D9593A19B1360969A131D96931368369300233793949B389300233993389A399B369837992CF040FA03000C00A293A394A29BA1933C +:400D0000A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B4251 +:400D4000DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313683C9300233D93949B3E9300233F933E9A3F9B3C983D992CF0FDF903000C00A29395 +:400D8000A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B65 +:400DC00093429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368429300234393949B449300234593449A459B429843992CF0BAF91E +:400E000003000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A1937C +:400E4000959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368489300234993949B4A9300234B934A9A4B9B489830 +:400E800049992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A689F +:400EC000A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313684E9300234F93949B5093002351931F +:400F0000509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B00529300235393529BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B1872 +:400F4000A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368549300235593949B97 +:400F8000569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39B1B00589300235993589BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21E +:400FC0001A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313685A9343 +:4010000000235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A394A29BA193A39B1D0000231E002B00A093A19AA59BD318A193A19AA59B9A429B4125 +:401040005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360979B103B9793E2 +:40108000979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B609300236193609A619B5E985F992CF063F803000C009E939F949E9B9D939F9B1B00629370 +:4010C00000236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9BAA +:401100009B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593949B669300236793669A679B649865992CF020F803000C009E939F949E9B9D93C5 +:401140009F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42AB +:40118000DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313686A9300236B93949B6C9300236D936C9A6D9B6A986B992BF0DDFF03000C009E9310 +:4011C0009F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9BCB +:4012000093429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368709300237193949B729300237393729A739B709871992BF09AFF94 +:4012400003000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93E2 +:40128000959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368769300237793949B789300237993789A799B7698BE +:4012C00077992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A68EA +:401300009D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313687C9300237D93949B7E9300237F933E +:401340007E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B00809300238193809B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B182F +:401380009C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368829300238393949B17 +:4013C000849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B1B00869300238793869B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB27B +:401400001A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313688893F4 +:4014400000238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949E9B9D939F9B1B008C9300238D938C9B9C939D9AA59BD3189D939D9AA59B9A429F +:401480009B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360979B083B18 +:4014C0009793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B909300239193909A919B8E988F992BF043FE03000C009A939B949A9B99939B9B1B00929347 +:4015000000239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B9B189893959B1B68999AD3189993959B1B68999A9A429B415B42DBB21A00989BEE +:401540009B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49B0133A493959B1A68A59BD218959B1A60959B1A68A59B9A429B415B42DBB2A5932F +:40158000959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB003900291019208AB1800FDF7EDFE05AB1800FDF7E9FE039A029B9A420DD1029A08AB11009A +:4015C0001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A05AB11001800FDF7A6FF03000D930D9B002B00D06EE005AB0193029B5B680C9365 +:401600000DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B002BEED100E0C046019B5B680B930DE0019B9A680B9B30498C4663449B00D318D0 +:401640001B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11001800FDF7C5FE03000D930D9B002B33D1039B00211800FEF7DFF803000D930D9BD3 +:40168000002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9B1548844663449B00D3181B680C982200FFF7A4F80B9B013B0B930B9B002BE2D156 +:4016C000029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB1800FDF761FE08AB1800FDF75DFE0D9B18000EB010BDC046FFFFFF3F00B589B0A3 +:4017000003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299039B1800FFF738FF0300180009B000BDF0B58BB00590049103920293039B002BD0 +:4017400003D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059B1E0000231F003300079300230693049B1C0000231D00069B23430693079B2B4331 +:401780000793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B002B04D001235B42002408930994029B002B06D0069A089B03994B43D21A029BB2 +:4017C0001A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF797FD031E02D10C235B42D1E210AB1800FDF7C8FD0DAB1800FDF7C4FD0AAB180045 +:40180000FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC031E1EDA039B002B0AD0039B00211800FEF702F803001793179B002B00D05DE245 +:40184000029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E2002396E2019A10AB11001800FDF764FE03001793179B002B00D044E2009A0DAB110021 +:401880001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60019B5B689A1C0AAB11001800FDF7A0FD03001793179B002B00D027E20AAB0021CF +:4018C0001800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD03001793179B002B00D015E204AB03211800FDF77FFD03001793179B002B00D00CE20DABB6 +:401900001800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB11001800FEF79CFA03001793179B002B00D0F3E1159A0DAB11001800FEF790FA0A +:4019400003001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B1393149A139BD31A5A010DAB11001800FEF777FA03001793179B002B00D0D0E115E0A9 +:401980000AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE03001793179B002B00D0BBE10DAA10AB11001800FEF714FC031EE1DA149A139BDD +:4019C000D31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE110AB9A68169B9B00D3181A680DAB9968139B9B00CB181B689A420DD30AAB9A682C +:401A00001699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139BCB1ACD498C4663449B00D41810AB9A68169B9B00D318186810AB9A68169BC64914 +:401A40008C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE030023600AAB9A681699139BCB1ABB498C4663449B00D3181A6801321A600AAB9A681699DE +:401A8000139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE03001793179B002B00D040E107AB9B68139A002A09D00DAA9168139AA748844662441A +:401AC00092008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A600AAB9A681699139BCB1A9B498C4663449B00D3181A6807A907AB1800FFF7FEFD82 +:401B000003001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D008E104AB9B68169A012A09D910AA9168169A8A488446624492008A18126800E009 +:401B400000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A18126800E000221A6004AB9B68083310AA9168169A92008A1812681A6004AA07AB90 +:401B800011001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B00D3181A680DA907AB1800FFF7A7FD03001793179B002B00D0BEE0169A139BD31AF7 +:401BC000674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA10A910AB1800FEF775FD03001793179B002B00D0A4E010AB00211800FEF788FB72 +:401C0000031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139BD31A4F4A944663445A0107AB11001800FEF716F903001793179B002B00D083E035 +:401C400007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139BCB1A3D498C4663449B00D3181A68013A1A60169B013B1693169A139B9A4200D92F +:401C8000AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B1A68009B1B685A43039B1A60029B002B59D0159A10AB11001800FEF775F903009C +:401CC0001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC03001793179B002B3ED1029B00211800FEF710FB031E38D1029B01221A6034E0C04632E058 +:401D0000C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E033 +:401D4000C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FFFFFFF07C04610AB1800FDF71DFB0DAB1800FDF719FB0AAB1800FDF715FB07AB02 +:401D80001800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B0039002910192019B00211800FEF7B2FA031E02DA0A235B4238E0019B029A03990020FFF7FF +:401DC00005FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B002B1DD1039B00211800FEF791FA031EEDDB0AE0019A0399039B1800FEF76AFCC6 +:401E000003000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E0C04600E0C046059B180007B000BD86B001900091009B9B681B680393039B05931A +:401E4000039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A059B53430593049B5B080493049B072BF1D8059B5A42019B1A60C04606B0704728 +:401E800000B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B02D104235B426EE00C9B98680C9B5B689B001A00002127F009F90C9B9B68089339 +:401EC000019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099B9B00D3181B680593089B1A68029B9B681B6805994B43D318009A53430493029B19 +:401F00009968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D0892059A1A60079B01339B00089AD31800221A60099B01330993099A079B9A42CCD31D +:401F4000039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031E08DB019B9968039B9A68079B1800FEF7ABFA07E0039B99680C9B9A68079B1800CF +:401F8000FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0006AB1A6006AB1B681A0006AB5A6006AB09AA9A60039C049A06A90598029B009311 +:401FC0002300FFF75DFF030018000AB010BD000010B5B24CA54405900491039202930123AF4A6A441360029B00211800FEF790F9031E05DD029B9B681B680122134003D1C8 +:4020000004235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029AA04B6B4411001800FFF701FFC623DB006B441800FDF7A6F99B4B6B441800FDF73F +:40204000A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC0300CC22D2006A441360CC23DB006B441B688E4A934219D8CC23DB006B441B6881 +:40208000EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0012304E0042302E0052300E00623804A6A4413607E4B6B441B68062B03D9062344 +:4020C0007B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B11001800FDF785F90300724A6A441360714B6B441B68002B01D000F0E1FBC923DB00F8 +:402100006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002B01D000F0CEFBC923DB006B441B685A005D4B6B4411001800FDF75AF903005D4AC3 +:402140006A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A6A441360544B6B441B68002B19D0049A06AB11001800FDF7DEF903004D4A6A4481 +:4021800013604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB0493CF23DB006B441B68002B06D0CF23DB006B441B689B68002B4AD1C623DB00F0 +:4021C0006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B5B689A01C623DB006B4411001800FDF737FE03002F4A6A4413602E4B6B441B6817 +:40220000002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A441360244B6B441B68002B00D053E3CF23DB006B441B68002B16D0C621C900694453 +:40224000CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B440C22180026F0A0FE029A049B11001800FDF7B6FF031E23DB029A049909AB0C33AD +:402280001800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF4C0600003C060000240600009F020000640600006C06000044060000A8F9FFFF9D +:4022C000049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0FBE2E24B6B441C68029AC621C900694409AB0C331800DE4B6B4400932300FFF78F +:40230000BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11001800FDF708F90300CF4A6A441360CE4B6B441B68002B00D0D3E2CC4B6B441A68E1 +:40234000CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E2C44B6B441B68012B00D800E1C14B6B441B68013BC04A6A4412689A401300C9228E +:40238000D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013319001000FDF724F80300AF4A6A441360AD4B6B441B68002B00D096E209A9C923BD +:4023C000DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A6A441360A04B6B441B68002B00D07EE20023CC22D2006A44136030E009A9C92344 +:40240000DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B189B00C918914B6B441C68029A904B6B4400932300FFF724FD03008B4A6A441360B2 +:40244000894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B6B441B685A1ECC23DB006B441B689A42C4D8C923DB006B441B680133CC22D2003B +:402480006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013319001000FCF7A4FF03006F4A6A4413606D4B6B441B68002B00D01CE209A9CC23B6 +:4024C000DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B009B189B00CB181900FDF725F803005E4A6A4413605C4B6B441B68002B00D0FCE1C8 +:4025000009A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C331900534B6B4400932300FFF7A9FC03004D4A6A4413604C4B6B441B68002B00D0BA +:40254000DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B689A40CC23DB006B441B689A428BD8039B5B68424A6A4413600023CB22D2006A4452 +:40258000136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23DB006B441B68002B11D1344B6B441B68002B00D1F5E0314B6B441B68013B2F4AE8 +:4025C0006A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A441360039B9A68254B6B441B689B00D3181A68CB23DB006B441B68DA4013000122134098 +:40260000C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D1BBE0C823DB006B441B68002B2AD1CA23DB006B441B68012B24D10C4B6B441C686F +:40264000029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B68002B00D19BE055E16C0600003C06000024060000640600004C0600005C06000025 +:40268000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B441A68C94B6B441B68D31AC822D2006A4412689A401300CD22D2006A44126813437C +:4026C000CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2006A4413601EE0BA4B6B441C68029A05990598B84B6B4400932300FFF7C1FB03005F +:40270000B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A68A74B6B441B689A42D7D309A9CD23DB006B441A6812 +:4027400013005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FB03009D4A6A4413609B4B6B441B68002B00D0C8E0CA23DB006B441B68013BCA22AC +:40278000D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046FDE6C0460023CC22D2006A4413604DE0874B6B441C68029A05990598854B6B44B6 +:4027C00000932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB006B441B685B00CD22D2006A4413607B4B6B441A68754B6B441B689A401300CD2277 +:40280000D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B4400932300FFF72DFB03006B4A6A4413606A4B6B441B68002B00D069E0CC23DB006B4477 +:402840001B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4B6B441A685B4B6B4402990598FFF78EFB0300594A6A441360574B6B441B68002BEB +:4028800047D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D0059B012252421A60059A0299059B1800FDF7C2FE0300484A6A4413602AE0C04673 +:4028C00028E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C046E8 +:4029000008E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A4412689A401300CC22D2006A44136015E009A9CC23DB006B441A6813005B009B18ED +:402940009B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B441A681A4B6B441B689A40CC23DB006B441B689A42DCD809AB0C331800FCF714FDEA +:40298000144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF23DB006B441B689B68002B05D1C623DB006B441800FCF7F8FC074B6B441B6818001D +:4029C000CE23DB009D4410BD54060000640600003C060000240600006C0600004C0600004406000000B591B00390029101920AAB1800FCF7C7FC07AB1800FCF7C3FC04ABC2 +:402A00001800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A04AB11001800FCF786FD03000F930F9B002B00D09FE007AB1800FCF7A8FF0300EB +:402A40000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001800FDF7A1FA03000F930F9B002B00D083E00E9A04AB11001800FDF795FA0300AA +:402A80000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF776FF020007AB11001800FDF77DFA03000F930F9B002B64D104AB1800FCF767FF54 +:402AC000020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF77FFB031E15DB04AA07A907AB1800FDF73DFD03000F930F9B002B46D107AB01213B +:402B00001800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD03000F930F9B002B32D104AB01211800FDF73BFA03000F930F9B002B2AD107AB0021A9 +:402B40001800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD104AA039B11001800FCF7E5FC03000F9312E0C04610E0C0460EE0C0460CE0C046B7 +:402B80000AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FC07AB1800FCF700FC04AB1800FCF7FCFB0F9B180011B000BD80B51B4FBD440390F6 +:402BC000029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B98470300FFAA18321360FFAB18331B68002B0AD1029A05A9039B1800FDF78FF80300C2 +:402C0000FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B6818008323DB009D4480BDE8FBFFFF00B5A1B0039002910192019B01211800FDF768FBB6 +:402C4000031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF791FB10AB1800FCF78DFB1CAB1800FCF789FB0DAB1800FCF785FB0AAB1800FCF7E6 +:402C800081FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE03001F931F9B002B00D086E11CAB01211800FDF72EFB031E03D00E235B421F93AEE197 +:402CC000019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800FCF729FC03001F931F9B002B00D067E1019A0DAB11001800FCF71DFC03001F93FE +:402D00001F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E113AB01211800FCF787FD03001F931F9B002B00D04AE110AB00211800FCF77CFD25 +:402D400003001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D038E104AB01211800FCF766FD03001F931F9B002B00D02FE144E016AB0121180020 +:402D8000FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B681B680122134017D00DAA13A913AB1800FDF742FC03001F931F9B002B00D00FE1A1 +:402DC00019AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7E3F803001F931F9B002B00D0FCE010AB01211800FDF7D8F803001F931F9B002B60 +:402E000000D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F931F9B002B00D0E3E007AB9B681B680122134005D104AB9B681B680122134017D0A6 +:402E40000DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800FDF738FC03001F931F9B002B00D0C3E007AB01211800FDF797F803001F931F9BDB +:402E8000002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B681B6801221340B4D00AAA16AB11001800FDF796F9031E23DB0AAA16A916AB180060 +:402EC000FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F931F9B002B00D08FE004AA10A910AB1800FDF7F0FB03001F931F9B002B24D08EE0DB +:402F000016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800FDF7D8FB03001F931F9B002B00D06FE010AA04A904AB1800FDF7CCFB03001F9366 +:402F40001F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907AB1800FDF769FB03001F931F9B002B53D107AB00211800FDF7CBF9031EEDDB0AE0D9 +:402F8000019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF71FF9031EECDA07AA039B11001800FCF7C2FA03001F9332E0C04630E0C0462EE03B +:402FC000C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0A1 +:40300000C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB1800FCF7C1F916AB1800FCF7BDF913AB1800FCF7B9F910AB1800FCF7B5F91CAB55 +:403040001800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB1800FCF7A1F91F9B180021B000BD00B583B00190019B44220021180026F026F8D9 +:40308000C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B780122180001F07AF903000593059B002B02D10D235B4225E0059B5B69102B02D044 +:4030C0000D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049B002B01D0049B0DE00398009A0199012301F0F0F903000493049B002B01D0049B3D +:4031000000E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0C5FEC04603B000BD00B59DB00590049103920293249B022B06D0249B102B03D82A +:40314000249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E2209AFF231B029A4202D90D235B42ABE21E9BDAB25F236B440F218A1A1A700FAB52 +:4031800000221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A700FAB1A78249B023B5B08DBB2DB00DBB21343DAB20FAB1A700FAB1B785AB25F2319 +:4031C0006B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F0E3FE6F236B4400221A70039B1A9312E06F236B441B780F22D31A1A9AD1B20FAA29 +:40320000D1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B4412781B789A42E4D31A9B002B02D00D235B424AE20BAB10220021180025F047FF6F2338 +:403240006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BA2 +:40328000E2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169B12E2209B002B00D1A6E0209B1A931F9B19930FAB10220021180025F007FF209BD5 +:4032C0001B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A1999180025F060FE1A9A159BD31A1A93199A159BD31819936F236B4400221A70AE +:4033000017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA2F +:403340000BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B00D9102315930FAB10220021180025F0ADFE159A19990FAB180025F015FE6F2321 +:403380006B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2B61 +:4033C000E2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B72E11A9A159BD31A1A93199A159BD31819931A9B002BB1D15F236B441B78013B81 +:40340000DAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B441B781A00002125F051FE07AB0122DA73039B1A93219B1993229B1893EBE01A9BF1 +:40344000102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FAB180025F0A1FD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C16 +:403480006F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0E0F8030016931C +:4034C000169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F803001693169B002B01D0169BEEE06F236B4400221A7019E06F236B441B78189AD3186F227B +:403500006A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A786F236B4401321A706F236B441A78149B9A42DFD3049B012B3DD10FAB10220021B9 +:40354000180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F23FF +:403580006B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F06AF803001693169B002B01D0169B88E0189A149BD3181893199AF8 +:4035C000149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F22D31A07AAD25C0132D1B207AAD15407AAD35C002B00D00EE06F236B441A786F231A +:403600006B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F236B4400221A700EE06F236B441B780F22D31A07AA0021D1546F236B441A786F2333 +:403640006B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB00931300102201F00AF803001693169B002B01D0169B28E06F236B4400221A7017E035 +:403680006F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D9249A0BA9239BC5 +:4036C000180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98139B0693129B0593119B0493109B03930F9B02930E9B0193089B00930B00002136 +:40370000FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01935D +:403740000C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A910992089309990A9A0B981B9B06930DAB0593199B0493189B0393179B0293169B0193089B00934F +:403780000B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400221A7017E04F236B441B781A9AD3181A784F236B441B780DA9CB5C5340DBB21A00D2 +:4037C000129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3129B002B08D00A9A199B110018000CF05DFB0F235B4200E00023180015B000BDA6 +:4038000010B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B02930D9B01930C9B00932300FFF78AFF030017 +:4038400018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A185C +:403880001168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681021CA411A60009B9B00039AD318009A920003998A181168049A92000398E2 +:4038C000821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681421CA411A60B8 +:40390000029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A181168029A92000398821812684A401A6060 +:40394000049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD318009A920003998A181168049A92000398821812688A181A60019B9B00039AD31884 +:40398000019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681921CA411A60C04604B0704700B585B0039003980C2329 +:4039C0000093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300930A2306220221FFF72DFF03980F2300930B2307220321FFF725FF03980F23D8 +:403A000000930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D230093082307220221FFF70DFF03980E230093092304220321FFF705FFC04605B02C +:403A400000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB1800FFF7A9FF139B01331393139B092BF5D902AB1A68019B1B68D21802AB1A6002AB9E +:403A80005A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002ABDA68019B0C331B68D21802ABDA6002AB1A69019B10331B68D21802AB1A6102AB94 +:403AC0005A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABDA69019B1C331B68D21802ABDA6102AB1A6A019B20331B68D21802AB1A6202AB0C +:403B00005A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202ABDA6A019B2C331B68D21802ABDA6202AB1A6B019B30331B68D21802AB1A6302AB83 +:403B40005A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABDA6B019B3C331B68D21802ABDA63002313932FE0139B9B001293009A129BD3188A +:403B800002AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B21A70129B0233009AD31802AA139989008A58120CD2B21A70129B0333009AD31823 +:403BC00002AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB402118000CF064F9C04615B000BD00B583B00190019B002B0ED0019B402118000CF056F93A +:403C0000019B4033402118000CF050F9019B802240219950C04603B000BD00B583B00190019B002B04D0019B842118000CF03EF9C04603B000BD000082B001900091019BB3 +:403C4000002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A9A60019B594ADA60009B1B781A00009B01331B781B021A43009B02331B781B04FC +:403C80001A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B021A43009B06331B781B041A43009B07331B781B061A43019B5A61009B08331B78C6 +:403CC0001A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43019B9A61009B0C331B781A00009B0D331B781B021A43009B0E331B781B041A4304 +:403D0000009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43009B12331B781B041A43009B13331B781B061A43019B1A62009B14331B781A00BF +:403D4000009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019B5A62009B18331B781A00009B19331B781B021A43009B1A331B781B041A43009BF9 +:403D80001B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009B1E331B781B041A43009B1F331B781B061A43019BDA620023180002B07047C04602 +:403DC000657870616E642033322D62797465206B00B585B0039002910192039B002B02D0029B002B02D151235B424BE0039B019A1A63029B1B781A00029B01331B781B02BC +:403E00001A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B061A43D5 +:403E4000039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B061A43039BDA63039B4033402118000CF019F8039B8022402154 +:403E800099500023180005B000BD10B586B0039002910192009300230593039B002B02D151235B423BE1029B002B27D0019B002B02D0009B002B21D151235B422FE1009AD6 +:403EC000059BD3180199059A8A181178039A80201258039840248218121912784A40D2B21A70039B80229B585A1C039B80215A50059B01330593029B013B0293029B002B12 +:403F000000D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039B1B6B5A1C039B1A6300230493B7E0059A049BD318009AD3180599049A8A18019975 +:403F40008A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AD3180599049A8A18013201998A181178049A0132039840248218121912784A4031 +:403F8000D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049A0232039840248218121912784A40D2B21A70059A049BD3180333009AD3180599FF +:403FC000049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70059A049BD3180433009AD3180599049A8A18043201998A181178049A04320398A1 +:4040000040248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18053201998A181178049A0532039840248218121912784A40D2B21A70059A049B7C +:40404000D3180633009AD3180599049A8A18063201998A181178049A0632039840248218121912784A40D2B21A70059A049BD3180733009AD3180599049A8A180732019967 +:404080008A181178049A0732039840248218121912784A40D2B21A70049B08330493049B3F2B00D843E7059B40330593029B403B0293029B3F2B00D92AE7029B002B2DD08E +:4040C000039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A049BD318009AD3180599049A8A1801998A18117803984024049A8218121912789B +:404100004A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A500023180006B010BD10B588B00190019BD0335C681B681A000F2313400793079B002B01D120 +:40414000002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB19000CF086F90300180008B010BD10B582B00190019B002B1ED0019B1800FFF735FD1D +:40418000019B843318000CF057F9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019BE42200219954C04602B010BD10B582B01E +:4041C0000190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019B76 +:40420000E42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D157235B4208E0019B009A11001800FFF703FD03000393039B180005B000BD70B56D +:4042400086B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002B02D0009B002B02D157235B426AE0039BE0229B58012B07D0039BE0229B58022B2A +:4042800002D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF741FF03000593059B002B01D0059B49E0039BD8335C681B68029A150000221600CC +:4042C0005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF7D4FD03000593059B002B01D0059B29E0039B8433029A009918000CF0B9F80300B1 +:404300000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059B002B01D0059B0DE00398009B019A0299FFF7ABFD03000593059B002B01D0059BAC +:4043400000E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0019B1B685B69180002B0704782B00190019B002B03D0019B1B68002B01D10023C1 +:4043800009E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B0009111006B460733021C1A706B4606330A1C1A70144B03931CE0039B5B689B691B7822 +:4043C0006A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A46063212789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B0E2 +:404400007047C0468C41041000B583B00190019B44220021180024F059FEC04603B000BD00B583B00190019B002B20D0019B1B6C002B0AD0019B1B6C242118000BF036FD43 +:40444000019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B18009047019B442118000BF020FD00E0C04603B000BD00B583B001900091009B002BCB +:4044800002D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB6998470200019BDA63019BDB6B002B01D1084B08E0019B009A1A60019B0021180000F0A8 +:4044C00015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A006B4603331A70039B002B07D0039B1B68002B03D0039BDB6B002B01D1304B5CE0AD +:404500006B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B681B690222134008D1039B1B685B681A00019B9A4201D0224B3FE0039B019A5A6011 +:40454000039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D0039B1B685B78042B04D0039B1B685B78052B0DD1039B1B689B695C69039BD86B52 +:40458000039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B689B699C69039BD86B039B5B681A00029B1900A047030000E0014B180004B010BD71 +:4045C000009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0029B002B04D1019B002B01D0214B3EE0029B002B05D1019B002B02D1039B002272 +:404600009A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B1B68DB680593059A019B9A4201D9114B1DE0039B1B681B78482B0AD1039BDB6B20 +:40464000029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299180024F0A1FC039B059A9A630023180007B000BD009FFFFF809FFFFF70B58CB0DA +:40468000079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D1C84B8BE1109B00221A60079B1800FFF74CFE03000A93079B1B685B78012B1DD1FF +:4046C000059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B08215956049B069AA04703000993099B002B01D0099B61E100235FE1079B1B6884 +:404700005B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B1B681B78492B0BD1109B059A1A60079BD86B049B069A0599FFF781FD03003DE1D4 +:404740000A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A99180028F09CFB0B1E01D0964B27E1079B1B685B78022B00D0DDE000230B93079B1B7A9A +:404780005BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7A5BB2002B0AD1079BDB68002B06D1079B5B6A0A9AD21A059B9A420BD8079B1B7AE2 +:4047C0005BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433059A0699180024F0DFFB079B5A6A059BD218079B5A620023E0E0079B5B6A002BC4 +:4048000040D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F0C3FB079B1B689B699C68079BD86B079B08215956079B28331E00079B14330A9D00 +:40484000049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9BD218109B1A60049A0A9BD3180493079B00225A62069A0B9BD3180693059A0B9B88 +:40488000D31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B000B930B9B002B0AD1079B1B7A5BB2002B05D1079BDB68002B01D00A9B0B93079B2F +:4048C00014331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B5A62059A0B9BD31A0593059B002B1FD0079B1B689B699C68079BD86B079B0821B1 +:404900005956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0099B4BE0109B1A68059BD218109B1A60002343E0079B1B685B78052B22D1079BA9 +:404940001B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A0292069A0192009333002A00A04703000993099B002B01D0099B20E0109B059A1A60EC +:4049800000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A0599A04703000993099B002B01D0099B05E0109B059A1A60002300E0054B18000CB0BF +:4049C00070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019BD31A049317236B4400221A7010E017236B441A78019BD318039AD318049AD2B2B9 +:404A00001A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B07047000088B00390029101921B236B4400221A70039B002B02D0019B002B01D1E9 +:404A4000344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B1A601A236B441B78029A9A429B415B42DBB25AB21B236B441B785BB213435AB2FE +:404A80001B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B78029AD31A0593002307931EE0039A079BD3181A78BA +:404AC0001A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B236B441B785BB213435AB21B236B441A70079B01330793079A029B9A42DCD31B232C +:404B00006B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039002910192039B002B02D0019B002B01D1044B03E0019B029A1A600023180004B032 +:404B40007047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D0039B002B01D15E4BB7E0039B00221A60059B1B685B78032B18D0059B1B685B78E7 +:404B8000042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B04D0059B1B685B78072B01D1002394E0059B1B681B78482B04D0059B1B681B789D +:404BC000492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE000237BE0059B1B685B78022B00D074E000230793059B1B7A5BB2012B1CD1059BDB68DF +:404C0000002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B1800FFF7A3FB03001900059B5B6A1A002800A04714E0059B1800FFF786FB0200E4 +:404C4000059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE0059B1B689B699C68059BDD6B059B08269E57059B1800FFF768FB059B283319000E +:404C8000059B1433049A019200930B00020031002800A04703000793079B002B01D0079B1BE0059B1B7A5BB2002B0CD1059B1C69059B1800FFF749FB0100039A049B18006E +:404CC000A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD009FFFFF809DFFFF809FFFFF82B001900A006B4603331A70019B002B04D0019B48 +:404D00001B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4ADA60019B094A1A6108E0019B0022DA60019B074A1A6101E0064B00E0002318003B +:404D400002B07047009FFFFFD5490110254A01101D4B0110809FFFFF00B583B0C8235B001900012023F062FA03000193019B002B03D0019B180007F0F8F9019B180003B0DD +:404D800000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B583B04421012023F041FA03000193019B002B03D0019B1800FEF759F9019B1800EE +:404DC00003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD00B585B00390019200930B236B440A1C1A700B236B4400215956009B019A0398F7 +:404E0000F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B4400215956029C039A0598099B0193089B00932300F9F7F2FB0300180006B0ED +:404E400010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B00932300F9F755FC0300180008B010BD00B585B0039002910192019A0299039B66 +:404E80001800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B1800F8F7F4FA0300180005B000BD00B583B08C235B001900012023F0B8F90300019313 +:404EC000019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190019B1800F8F7C0FA019B180023F022FDC04603B000BD00B585B0039002910192BE +:404F0000019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B029A03980221FEF7AEF80300180005B000BD000000B585B0039002910192019A80 +:404F400080235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E00023180005B000BD009FFFFF00B587B00390029101920093009B019A0299039877 +:404F8000FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF00B583B08421012023F040F903000193019B002B01D1002304E0019B1800FEF712 +:404FC00014FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFCC04603B000BD000000B585B0039002910192019A80235B009A4201D0074B0AE032 +:40500000029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFF00B583B0E821012023F000F903000193019B002B01D1002304E0019B1800FFF7B6 +:4050400095F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFCC04603B000BD000088B003900291019217236B4487221A7016236B441B221A7053 +:405080001E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B06D11F236B4416226A4412781A7001E0224B3FE0019B013B06931BE0069B039A27 +:4050C000D318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B029AD3181A781E236B44D2091A70069B013B0693069B002BE0DA029B1B785BB2E6 +:40510000DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4415206844127800780240D2B24A40D2B21A700023180008B07047C046009FFFFF8C +:4051400010B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9A08A9059807AB00932300FFF787FA03000D930D9B002B13D10C9A08A9049B180058 +:40518000FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E0C04600E0C04608AB102118000AF07EFE0D9B18000EB010BD86B0039002910192C5 +:4051C00000930023059310E0039A059BD3180299059A8A1811780198059A821812784A40D2B21A70059B01330593059A009B9A42EAD3C04606B0704786B00390029101924F +:405200000093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A700EE0059A009B9A4205D1039A059BD31880221A7004E0039A059BD31800221A7035 +:40524000059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039B002B06D0039B1B68002B02D0029B002B01D11C4B32E0019A029903980123FFF726 +:4052800029F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B441B78022B03DB042B03DD242B01D00D4B14E0C0462421012022F0B8FF03000593F3 +:4052C000059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B000BDC046009FFFFF809EFFFF10B58EB005900491039200230D93059B002B0AD0B8 +:40530000059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93059B1B685B690A93059B1B6C09930B9B1B6A002B3AD00B9B1B6A0A9AD21A039BBD +:405340009A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B103319000A9B099A0998FFF725FF099C0A9A0999059807AB00932300FFF77EF946 +:4053800003000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A039AD31803930B9B00221A62039A0A9BD318013B0A99180027F0EAFC0300089399 +:4053C00001230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB00932300FFF74CF903000D930D9B002B24D1039A0A9BD31A0393049A0A9BD31804930C9BB8 +:4054000001330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499180023F0C1FD0B9B1A6A039BD2180B9B1A6202E0C04600E0C0460D9B18000EB0D8 +:4054400010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039B1B6C002B02D0029B002B01D1374B69E0039B1B6C1593039B1B685B691493159B36 +:4054800013930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF74FFE159B10331293159B1A6A149B9A420DD2159B1B6A129A149905A8FFF79CFEDC +:4054C000149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A91398FFF769FE139C149A1399039804AB00932300FFF7C2F803001193119B002B36 +:4055000006D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB102118000AF0C3FC159B00221A62159B1033102118000AF0BAFC139B102118000AF0A2 +:40554000B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B0021180023F0B4FDC04603B000BD000000B58FB0039002910192009305AB20220021180070 +:4055800023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B000199D150039B119A9A61039B114ADA61039B2033180080235A0005AB1900F7F766FF60 +:4055C00003000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9B002B01D00D9B00E0002318000FB000BD1027000010B586B0059004910392029305 +:40560000029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B583B00190019B002B0CD0019B20331800F7F71AFFA0235A00019B110018000AF071 +:4056400035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC0235B009A4202D938235B4212E1D0235A0063AB0021180023F029FD05AB1800F7F74E +:40568000E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120CD2B21A70D19B5A1CD192019A120AD2B21A70D19B5A1CD192019AD2B21A70D19BD3 +:4056C0000333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD31880221A70019B1933CC930023CF930BE0CF9BD9B26A4BD2AAD218CF9BD3180A1C5F +:405700001A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093D09B002B00D08AE00023CE9355E063ABD1934BAB10220021180023F0C7FCCC9BFE +:40574000CD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B785340D9B2504BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B0F2BE6DDD19B1033CD +:40578000D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093D09B002B4DD1CD9B002BCBD1CE9B57AAD3184BA91022180023F0F6FB3A4BD2AA73 +:4057C00094466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD80235A0057A905AB1800F7F74FFE0300D093D09B002B26D157AB2033CB93039BBE +:40580000D1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB99D19B1022180023F0BFFBD19B1033D193CE9B1033CE93CE9B2F2BE5DD06E0C046BF +:4058400004E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF025FB57AB302118000AF020FB4FAB202118000AF01BFB4BAB102118000AF016FBE7 +:40588000D09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFF4FDFFFFE4FDFFFF44FEFFFF00B593B00190009102AB119300230E9302AB302255 +:4058C0000021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2019AD154019AD35C002B06D1109B013B1093109B002BEDDC00E0C046019B2033DA +:405900001800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B103311930F9B10330F930F9B2F2BD0DD0023109311E002AA109BD3181A78109B0099CB18FC +:405940001B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033180080235A0002AB1900F7F78FFD03000E930E9B002B01D00E9B07E0019802ABD3 +:4059800020331022190023F00FFB0023180013B000BD10B5E6B003900291019200236593039B9A69C0235B009A4207D8039B9B69C0225200D21A019B9A4202D238235B42A2 +:4059C0004DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058039B9A6904AB1900A047031E02D034235B4234E0039B9B69659AD3186593029B99 +:405A0000002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD3186593659A04A904AB1800FFF70FFE03006493649B002B01D0649B10E004AA039BDC +:405A400011001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180066B010BD00B59BB0039002910192009300231793039B1693029B1993019A8023BE +:405A8000DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB30220021180023F012FB169B1A69169BDB699A4203DC169B5B69002B0ED01C9A00990F +:405AC000169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D01C9A009909AB1800FFF7B0FD03001793179B002B01D0179B5BE009AA169B1100D8 +:405B00001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AD25C0132D1B2169AD154169AD35C002B06D1189B013B1893189B002BEDDC00E0EC +:405B4000C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E0019B102B00D910231593159A05A9199B180023F019FA199A159BD3181993019AC6 +:405B8000159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002B01D0179B05E0169B1B695A1C169B1A61002318001BB000BD00B589B005900491AA +:405BC0000392059B0793039A04990798002300930023FFF747FF03000693069B180009B000BD000010B592B0079006910592049308AB180000F03DFE059C049A08A9079835 +:405C0000169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB180000F07AFF031E02D00A4B119309E008AA069B11001800F9F77EFC0300119300E0B2 +:405C4000C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7B3FF03008B +:405C8000180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019B8833180000F0E5FD019BAC33180000F0E0FD019BD0331800F9F764FB019BDC2223 +:405CC00000219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF331800F9F74FFBC04603B000BD00B583B00190019B002B29D0019B180000F042FE2E +:405D0000019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BD0331800F9F740FB019BE033180000F011FE019B0533FF33180000F00BFE019B52 +:405D40002933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B4607331A70039B029A1100180000F09EFE03000593059B002B01D0059B35E06B460733C0 +:405D80001B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607331B78002B01D0124B1EE0039B88331A00029B88331900100000F047FE0300059349 +:405DC000059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B01D0059B00E00023180007B000BDC04680B0FFFF10B588B0059004910392029399 +:405E0000059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00059B7C331C000B9B01930A9B00932300FFF712FF03000793079B002B01D0079BC6 +:405E400021E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B9B6D07210B40591E8B41DBB2D218049B1A60059BD0331800049B1A68039B1900AF +:405E8000F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0733DB080693069A009B934200D913000593059A0199029B1800F9F72FFF0300FE +:405EC0000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B11001800FAF760F803000793079B002B16D1039B4C331A00029B11001800FAF784 +:405F00006FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E0C046079B180009B000BD000010B5A2B007900691059204931BAB20931CAB1F939E +:405F40000FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E09DB079B4C331A00049B11001800FAF737F9031E01DB7F4BF6E012AB180000F01B +:405F800078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A60209B1A1D20921B680A2B02DD724B2193C9E01F9B00221A601F9B1A1D1F921B6833 +:405FC0000A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D09AE0079B28331C001E9A12A9079800230293279B0193269B0093230003F006FC25 +:4060000003002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193219B002B00D07BE01D9B00211800FAF76FF9031EC0D0259B249A0CA90798FFF78B +:4060400027FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B002B61D1049A1D99059B1800FBF794FA03002193219B002B58D1059A0CA90CAB89 +:406080001800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193219B002B46D109AA1E991E9B1800FBF773FA03002193219B002B3DD1079B4C3389 +:4060C0001A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF75BFA03002193219B002B29D1079B4C331A000599059B1800FBF74EFE0300219365 +:40610000219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E049 +:40614000C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB1800F9F721F9219B180022B010BDC04680B0FFFF80B3FFFF00B3FFFF10B58AB050 +:406180000990089107920693069C079A08990998002304930F9B03930E9B02930D9B01930C9B00932300FFF7C1FE030018000AB010BD000010B5CCB0099008910792069329 +:4061C0002FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002B01D12C4B53E00BAB1800F9F7CBF82FAB180006F064FF499A0EA9069B1800F9F7E2 +:40620000EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B29D10EAA499BD118499A0BAB1800F9F7D7FD03004B934B9B002B1ED1499B5B0020 +:406240000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B01934E9B00932300FFF760FE03004B9304E0C04602E0C04600E0C0462FAB180098 +:4062800007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFFB1D3011010B588B00790069105920493049C059A06990798002303930CAB1B7802930B9B01930A9B29 +:4062C00000932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9311AB1D9308AB180000F0C3FA1AAB1800F9F748F817AB1800F9F744F814AB18002E +:40630000F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F7F7FF031E1ADB079B4C331A00229B11001800F9F755FF031E10DA239B0121180025 +:40634000F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F938CE0059B069A1AA90798FFF791FD03001F931F9B002B00D071E0079B4C331A0017 +:40638000239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF803001F931F9B002B5DD1079B4C331A001E991E9B1800FBF7EFFC03001F931F9B24 +:4063C000002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A001D991D9B1800FBF7D7FC03001F931F9B002B3ED1079B28331C001E9A08A9079831 +:4064000000230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180000F07AFB031E02D0214B1F9326E0079B4C331A0008A908AB1800FBF7ADFC0300F1 +:406440001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB180009 +:4064800000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB1800F8F782FF1F9B180020B010BD80B0FFFF00B2FFFF10B588B00790069105920493AA +:4064C000049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B010BD00B5ABB0039002910192009305AB8B33049300232993029A05A904AB1800F2 +:40650000F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904AB1800F8F767FC03002893289B002B01DA289B2FE0289B299AD3182993299A05A906 +:4065400004AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A904AB30221800F8F7F9FB03002893289B002B01DA289B0DE0289B299AD3182993C9 +:406580000499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B00790059204931B236B440A1C1A700CAB1800F8F7E8FE09AB1800F8F7E4FE0798079B16 +:4065C0007C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7E9FD03000F930F9B002B08D1139B129A09A90CA8FFF775FF03000F9300E0C0469F +:406600000CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB009900792069323236B440A1C1A70069C079A23236B4419780998002304930F9B03930E9B7E +:4066400002930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B00590049103920293029C039A0499059800230193089B0093230000F005F80300180006B01E +:4066800010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800F8F770FE08AB1800F8F76CFE0EAA10990FA83023F8F738F903001193119B002B36 +:4066C00005D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E00BAA10990FAB1800F8F782F903001193119B002B0AD108AA10990FAB1800F8F794 +:4067000077F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00059A0699159B029308AB01930BAB00932300FFF7CDFD03001193119B002B06D107 +:406740000F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FE119B180012B010BD80B0FFFF1AB0FFFF00B4FFFF00B585B001900091019B009A3C +:406780001100180000F091F903000393039B002B1BD1019B7C331A00009B7C3319001000F8F7C9FE03000393039B002B0DD1019B88331A00009B88331900100000F045F9FC +:4067C00003000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B00190019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B08B +:4068000000BD0000014B18007047C0463044041000B585B002006B4607331A70FFF7F2FF030003930BE0039B1B786A46073212789A4201D1039B07E0039B0C330393039B3E +:406840001B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019BDB6B002B01D1022300E00123180002B0704700B583B00190019B002B0ED0019BBF +:406880001800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B000BD00B583B00190019B002B37D0019B00221A70019B04331800F8F763FD019BE1 +:4068C00010331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C331800F8F74FFD019B00229A65019B0022DA65019B00221A66019B00225A66019B5C +:4069000000229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04603B000BD00B583B00190019B002B0ED0019B1800FFF7B5FF019B7C331800F8F796 +:4069400021FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0019B1800F8F720FD019B0C331800F8F71BFD019B18331800F8F716FD00E0C046ED +:4069800003B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F703FD019B10331800F8F7FEFC019B1C331800F8F7F9FC019B28331800FFF7CAFF6C +:4069C000019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A1300DB009B189B00CB181800FFF7B3FF039B01330393019B9A6F039B9A42ECD8019BA2 +:406A00005B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B00190019B002B0ED0019B1800FFF7ABFF019B7C331800F8F7B8FC019B88331800FFF708 +:406A400089FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD03000393039B002B19D1019B0C331A00009B0C3319001000F8F75EFD03000393039BB0 +:406A8000002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0C046039B180005B000BD00B583B001900091009B1A78019B1100180003F00CFDFA +:406AC0000300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B13D1019B0C3301211800F8F7A5FE03000393039B002B0AD1019B183300211800D3 +:406B0000F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019B183300211800F9F7F3FB03005A425341DBB2180003B000BD00B587B0039002916E +:406B40000192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800F9F7D6FB031E0CD1099B002B01D1344B60E0089B00221A70009B01221A60002345 +:406B800058E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A60009B1A68099B9A4201D9254B42E0089B04221A700298089B0133049A1900F9F7F4 +:406BC0000FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F7FFF80300059324E0019B012B21D1049B5A1C009B1A60009B1A68099B9A4201D939 +:406C00000F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089B0133049A1900F9F7DBF80300059300E0C046059B180007B000BDC04680B0FFFF76 +:406C400000B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002B0AD1009B012B05D1029B1800FFF72CFF03003FE0214B3DE0039B04331800F8F7C6 +:406C800000FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B28E00298019B0133049A1900F9F736F803000593059B002B18D1029B0C331800F1 +:406CC000049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B183301211800F8F7A9FD0300059302E0C04600E0C046059B180007B000BDC04680B0FFFFB5 +:406D000080B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF73BF8030055E0019B1B68002B06DA019B00211800F9F7ECFA031E09D1019B1800AF +:406D4000F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703000393039B002B2ED10BE0009B1A1D0199019B1800F9F760FC03000393039B002B71 +:406D800023D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D0199019B1800F9F7E2FB03000393039B002B0DD1009B1A1D019B11001800F9F710FAA8 +:406DC000031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB001900091009B183300211800F9F790FA031E01D10023AEE006AB1800F8F7C2FADD +:406E000003AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099B002B00D07DE006AA06A903AB1800FAF7B3FB03000993099B002B00D073E0019AC5 +:406E400003AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B009903AA1800FAF797FB03000993099B002B5CD1009B019A11001800FFF742FF09 +:406E800003000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AA1900FAF779FB03000993099B002B42D1009B0C33019A11001800FFF723FF0300A0 +:406EC0000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA1900FAF75AFB03000993099B002B27D1009B0C33019A11001800FFF704FF0300099357 +:406F0000099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC0300099310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C046B3 +:406F400000E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BDB86F000800B591B0039002910192019B012B08D8029B1A68039B11001800FFF72FFF0300AB +:406F80000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE00E9A13005B009B189B001A000D9B9B181800F8F7E7F90E9B01330E930E9A019B19 +:406FC0009A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B6818331A000D9B11001800F8F7A4FA03000F930F9B002B00D082E101230E9339E0E9 +:407000000E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD1180E9B9B00029AD3181B6818331A00FAF7B3FA03000F930F9B002B00D062E10E9AB9 +:4070400013005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B00D051E1B24B1B685A1CB14B1A600E9B01330E930E9A019B9A42C1D3019A130007 +:407080005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002B00D033E1019B013B0E930E9B002B0BD10AAA07AB11001800F8F73DFA03000F9314 +:4070C0000F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF75BFA03000F930F9B002B00D010E1039A07AB11001800FFF705FE03000F930F9B85 +:40710000002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA90AAB1800FAF738FA03000F930F9B002B00D0F1E0039A0AAB11001800FFF7E2FD91 +:4071400003000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF71BFA03000F930F9B002B00D0D8E0039A04AB11001800FFF7C5FD03000F930F9B5A +:40718000002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00029AD3181B68190004AB1A00FAF7F4F903000F930F9B002B00D0B5E00E9B9B00B4 +:4071C000029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B1B685A1C524B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B68A2 +:407200000C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B680C33039A11001800FFF76CFD03000F930F9B002B00D081E03D4B1B685A1C3C4B78 +:407240001A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA1900FAF79AF903000F930F9B002B00D067E00E9B9B00029AD3181B680C33039A110048 +:407280001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AD3181B681A00039B9B6819001000F8F7E3F803000F930F9B002B45D10E9B9B00BA +:4072C000029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D10E9B9B00029AD3181B6818331800F8F75BF80E9B002B2BD00E9B013B0E93D4E627 +:40730000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E080B2FFFFB86F0008C0460CE0C0460AE0C04608E008 +:40734000C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F723F804AB1800F8F71FF800230E930DE00E9A13005B009B189B001A000D9B9B185D +:407380001800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180011B000BD00B58BB0039002916B4607331A7005AB1800F7F7E5FF039B191D029BF2 +:4073C0000C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F797FF03005A1E9341DAB223236B441A70029B0C3318006B46073323226A441B7849 +:4074000012781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099B18000BB000BD000000B593B0039002910192DD4B1B685A1CDB4B1A600EAB1800CB +:40744000F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69002B00D0A9E0019B18331900019B18331A000BAB1800FAF78FF803001193119BCF +:40748000002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34B1B685A1CC14B1A6001990BAA08AB1800F9F7C2F803001193119B002B00D043E3A3 +:4074C0000CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1D08AB11001800F8F77BFE031EE9DA01990BAA05AB1800F9F7EDF803001193119B75 +:40750000002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D018E305AB1B68002B06DA05AB00211800F8F7EEFE031EE7D105AA08A90BAB180047 +:40754000FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB03001193119B002B00D0F9E2904B1B685A1C8F4B1A600BA90EAB03221800FAF7BFF80300DD +:407580001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119B002B00D0DEE2039B1A1D0EAB11001800F8F716FE031EE9DAC8E00199019A0BAB55 +:4075C0001800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB03001193119B002B00D0C0E2704B1B685A1C6E4B1A600BA90EAB03221800FAF77EF8B9 +:4076000003001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF03001193119B002B00D0A7E2039B1A1D0EAB11001800F8F7D5FD031EE9DA039B1033002153 +:407640001800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFF03001193119B002B00D087E2039A0BAB11001800FFF746FB03001193119B002B0D +:4076800000D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119B002B00D06EE2039A08AB11001800FFF729FB03001193119B002B00D064E23B4B14 +:4076C0001B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002B00D053E2039A0BAB11001800FFF70AFB03001193119B002B00D049E22B4B1B685E +:407700005A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE0039B1A1D0EA90EAB1800F8F71FFF03001193119B002B00D02EE2039B1A1D0EAB7A +:4077400011001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF03001193119B002B00D017E2039A08AB11001800FFF7C6FA03001193119B002B11 +:4077800000D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002B00D0FFE111E0C046B46F0008B86F0008039B1A1D08A908AB1800F8F7D7FE03001E +:4077C0001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0BAB1800F9F7D8FE03001193119B002B00D0DBE1039A0BAB11001800FFF782FA12 +:4078000003001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FB03001193119B002B00D0C3E10CE0039B1A1D0BA90BAB1800F8F798FE0300119335 +:40784000119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905AB1800F9F799FE03001193119B002B00D0A4E1039A05AB11001800FFF743FA030050 +:407880001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA03001193119B002B00D08CE10CE0039B1A1D05A905AB1800F8F759FE03001193119B4A +:4078C000002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800F9F75AFE03001193119B002B00D06DE1039A08AB11001800FFF704FA03001193F7 +:40790000119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE03001193119B002B00D054E10CE0039B1A1D08A908AB1800F8F77FFE03001193119BAA +:40794000002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A908AB1800F8F7B6FE03001193119B002B00D033E10CE0039B1A1D08A908AB1800A3 +:40798000F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F7B7FC031EE7D108AA0BA90BAB1800F8F791FE03001193119B002B00D012E10CE0A3 +:4079C000039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B06DA0BAB00211800F8F792FC031EE7D10EAA0BA90BAB1800F9F7CEFD03001193B4 +:407A0000119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0534B1B685A1C524B1A6005AA0BA90BAB1800F8F74FFE03001193119B002B00D06D +:407A4000D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BAB1B68002B06DA0BAB00211800F8F750FC031EE7D1019B0C331900019B18331A00F6 +:407A800005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F903001193119B002B00D0A9E0304B1B685A1C2F4B1A6005AB01211800F8F7D0F930 +:407AC00003001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD03001193119B002B00D08FE0039B1A1D05AB11001800F8F775FB031EE9DA029B08AA110044 +:407B00001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFD03001193119B002B00D071E0029B183305AA11001800F7F7FEFC0300119368E09A +:407B4000C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E0C04656E0C04654E0C04652E0C04650E0B86F0008C0464CE0C0464AE0C04648E03A +:407B8000C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0F5 +:407BC000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0B5 +:407C0000C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F7C3FB08AB1800F7F7BFFB05AB1800F7F7BBFB119B180013B000BDC04600B59BB076 +:407C40000390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E07D1009A029B11001800FEF7EEFE030039E3009B1B6A002B0FD0009B1833002109 +:407C80001800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B09D0009B183301211800F8F731FB031E01D0C44B17E316AB1800F7F763FB13AB0E +:407CC0001800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07AB1800F7F74FFB04AB1800F7F74BFB019B18331900019B18331A0016AB1800F9F72D +:407D00004BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199B002B00D079E2A84B1B685A1CA64B1A60019B18331A0016A913AB1800F9F72CFC0B +:407D400003001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002B00D05EE2984B1B685A1C974B1A60009A16A916AB1800F9F70FFC03001993199BA7 +:407D8000002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4B1B685A1C884B1A60009B0C331A0013A913AB1800F9F7F0FB03001993199B002BD4 +:407DC00000D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B685A1C794B1A60019A16A916AB1800F8F771FC03001993199B002B00D01BE20CE04F +:407E0000039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B06DA16AB00211800F8F772FA031EE7D1019B0C331A0013A913AB1800F8F74AFC4D +:407E400003001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993199B002B00D0ECE113AB1B68002B06DA13AB00211800F8F74BFA031EE7D116AB64 +:407E800000211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B1800FFF7C1FA03001993FFE1029B1800FEF70AFE03001993F8E1019B18331900D7 +:407EC00016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF711FF03001993199B002B00D0ADE1364B1B685A1C344B1A6016AA16A910AB180088 +:407F0000F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993199B002B00D094E1274B1B685A1C264B1A6016AA10A90DAB1800F9F72DFB03003A +:407F40001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D07BE1194B1B685A1C174B1A60019A10A910AB1800F9F710FB03001993199B002B55 +:407F800000D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B685A1C094B1A6010A916AB02221800F9F7A5FB03001993199B002B00D053E112E0EF +:407FC000B06F000880B0FFFFB86F0008039B1A1D16A916AB1800F8F7C9FA03001993199B002B00D041E1039B1A1D16AB11001800F8F7F6F8031EE9DA13AA13A90AAB180098 +:40800000F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE03001993199B002B00D024E1B04B1B685A1CAF4B1A6016AA0AA90AAB1800F8F74BFB0300FA +:408040001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B002B00D009E10AAB1B68002B06DA0AAB00211800F8F74CF9031EE7D10DAA0AA9A6 +:408080000AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB1800F8F7CAFA03001993199B002B00D0E8E00AAB1B68002B06DA0AAB00211800F8F777 +:4080C00027F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0039B1A1D10A910AB1800F8F7A5FA03001993199B002B00D0C7E010AB1B68002B02 +:4081000006DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993199B002B00D0B2E0039A10AB11001800FEF7E8FD03001993199B002B00D0A8E006 +:408140006A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B002B00D097E0039A0DAB11001800FEF7C9FD03001993199B002B00D08DE05B4B20 +:408180001B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE00CE0039B1A1D07A907AB1800F8F744FA03001993199B002B00D072E007AB1B68DC +:4081C000002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF903001993199B002B00D05DE0029B0C3307AA11001800F7F79FF903001993199B002BB6 +:4082000053D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04690 +:4082400034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C0464E +:4082800014E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04616AB1800F7F77AF813AB1800F7F776F810AB180030 +:4082C000F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800F7F762F8199B18001BB000BDB86F000800B58FB0039002910192009300230C933B +:40830000039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9908A8FAF749FC03000D930D9B002B00D0B5E00AE008AB01211800F7F735FE030079 +:408340000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C0C920A2B01DD5F4BB9E008AB01211800F7F7CEFF031ED0DD029B18331800029B43 +:40838000183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800FEF7B0FC03000D930D9B002B00D07CE04D4B1B685A1C4C4B1A6008AA08A905AB64 +:4083C0001800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC03000D930D9B002B64D13F4B1B685A1C3E4B1A60029B029905AA1800F9F7CDF803001F +:408400000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B1B685A1C304B1A6008AA05A905AB1800F9F7B2F803000D930D9B002B3FD1039AF2 +:4084400005AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B0C331800029B0C3305AA1900F9F794F803000D930D9B002B25D1029B0C33039A0F +:4084800011001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C0463D +:4084C00004E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B18000FB000BD00B3FFFFB86F000800B589B00390029100936B4607331A70029B5A1C3E +:40850000039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD218009B11001800F7F7B4F90200069B9A401000039A079BD3180399079A8A18127812 +:4085400051B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079B01330793079A029B9A42D1D317236B4400221A700123079372E0039A079BD3188D +:408580001A7816236B441721694409780A401A70039A079BD3180399079A8A18117817226A4412784A40D2B21A7017236B4416226A4412781A70039A079BD3181B781A00B2 +:4085C000012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A03998A1812781521694409784A43D2B252B213405AB217236B441B785BB213435AB2A6 +:4086000017236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812781520684400784243D2B252B24A4052B2D2B21A70079B013B039AD318079A013A52 +:4086400003998A18127851B215226A441278D20152B20A4352B2D2B21A70079B01330793079A029B9A4288D9C04609B000BD10B5A8B00390029101921A006B4603331A70C2 +:40868000002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF7D4F903002793279B002B00D0EAE00023259344E02A99259824F06AFB03001A00C1 +:4086C000012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B182393259B2A99180024F0D8FB0B1E17D19B236B441B785B08DBB21A001300DB008C +:408700009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E0239A2399039B1800FEF77EFE03002793279B002B00D0A9E0259B013325936B4605 +:4087400003331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0259A531C25939B236B4419780B00DB005B189B001900029B591804AB9200D15008 +:408780009B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259A04A9039B1800FEF7DBFB03002793279B002B6DD19B236B4401221A7037E09B2398 +:4087C0006B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918259A1300DB009B189B001A00029B9C189B236B441A781300DB009B189B001A0071 +:40880000029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D19B226A449B236B441B78DB1813709B226A4493236B4412781B789A42BFD300234D +:4088400025930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259B01332593259B5A1C93236B441B789A42E8D3259A04A9039B1800FEF771FB03005F +:40888000279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B587B00390029101921A006B4603331A7008AB1B785B08DAB212236B443F210A40FA +:4088C0001A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B9B18190013226A4412236B4412781B78D31A5A425341DBB21A00F6F77AFE030059 +:408900000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B9B180C33190013226A4412236B4412781B78D31A5A425341DBB21A00F6F759FE74 +:4089400003000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033312781B789A42B1D308AB1B78DB09DAB20299039B1800FEF715FD0300059302E0B9 +:40898000C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A7007AB1800FDF765FF159B1093149A109BD3181B780B226A441478039A04990598CE +:4089C00000932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF03001193119B002B40D1169B002B37D0179B169A04990598FFF77BFC03001193119BBE +:408A0000002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002B27D1149A109BD3181B780B226A441478039A07A9059800932300FFF730FF030008 +:408A40001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109B002BD0D10AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04607AB180009 +:408A8000FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC05AB1800F6F76EFC039B4C3300211800F6F7EFFE0300012B01D0254B45E0029B23 +:408AC00000211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F72AFD03000B930B9B002B20D1039B4C331900029A05AB1800F7F7ECFD03000B935E +:408B00000B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB0EAA127800990198FFF7E0FC04E0C04602E0C04600E0C04605AB1800F6F734FC8C +:408B400008AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693089B4C93529C0AAA079909983023FF336B44019351AB1B7800932300FFF786FF17 +:408B800003004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B0293529B01930AAB00932300FFF7F0FE03004D934D9B002B18D13023FF336B441A7808 +:408BC0004C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF803004D9304E0C04602E0C04600E0C0464D9B18004EB010BD84B001900A006B46A0 +:408C000003331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B4603331B78002B06D00F236B441A780F236B4401321A700F236B441B78062B03D90F232F +:408C40006B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B441B78180004B0704710B590B00990089107920693069B0C331A00099B343319007D +:408C80001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0002233236B441A7032246C4433236B441A78099B11001800FFF79EFF0300237085 +:408CC00032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E32236B441B781900100024F051F803000B9333236B441B78002B0BD0099B5B6F68 +:408D0000002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF085FA03000D930D9B002B02D1504B0F9363E03B236B4400221A7013E03B236B4454 +:408D40001A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D33A236B4400221A703A236B442F +:408D80001B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FC03000F930F9B002B26D133236B441B78002B07D0099B0D9A5A6731236B441A78E3 +:408DC000099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441B78019331236B441B7800932300FFF7B1FE03000F9300E0C046099B5A6F0D9B7C +:408E00009A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF791FD3B236B441A783B236B4401321A70FB +:408E40003B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089B1800FDF777FD0F9B180010B010BDC04680B2FFFF00B585B001900091009B1833B9 +:408E80001800009B18331900019B04331A00F9F7CDFE03000393039B002B24D100980099009B18331A00F8F777FB03000393039B002B1AD1009B019A11001800FDF722FF49 +:408EC00003000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFC0300039304E0C04602E0C04600E0C046039B180005B000BDB86F000800B58BB0C4 +:408F0000039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009B019A079904A8F9F747FE03000993099B002B5CD109E004AB01211800F7F734F8AB +:408F400003000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C08920A2B01DD2B4B51E004AB01211800F7F7CEF9031ED2DD029B029904AA1800C7 +:408F8000F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099B002B2AD11C4B1B685A1C1B4B1A60029B18331800029B183304AA1900F8F7ECFA14 +:408FC00003000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B0FD10D4B1B685A1C0B4B1A600AE0C04608E0C04606E0C04604E0C04602E0C046D8 +:4090000000E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFFB86F000800B5A1B003900291019200931CAB1800F6F7AAF919AB1800F6F7A6F916AB1800F6F7A2F931 +:4090400013AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F907AB1800F6F78EF904AB1800F6F78AF90099009B18331A001CAB1800F7F7DCFA01 +:4090800003001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F931F9B002B00D04FE2039B1A1D1CAB11001800F7F795F8031EE9DA1CAA1CA919AB46 +:4090C0001800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE03001F931F9B002B00D032E29E4B1B685A1C9C4B1A600099009B18331A0016AB1800BC +:40910000F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA03001F931F9B002B00D015E216AB1B68002B06DA16AB00211800F7F7E9F8031E8B +:40914000E7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB11001800FDF7CFFD03001F931F9B002B00D0F6E17C4B1B685A1C7A4B1A6013AA19A985 +:4091800010AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800F7F74AFA03001F931F9B002B00D0DBE110AB1B68002B06DA10AB00211800F7F74C +:4091C000A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0C4E10CE0039B1A1D0DA90DAB1800F7F7BDF903001F931F9B002B00D0B8E1039B96 +:409200001A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFA03001F931F9B002B00D0A3E10CE0039B1A1D0AA90AAB1800F7F7FEF903001F93A7 +:409240001F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA0AA907AB1800F8F797F903001F931F9B002B00D082E1039A07AB11001800FDF77B +:4092800041FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB1800F8F77AF903001F931F9B002B00D069E1039A04AB11001800FDF724FD03001F93AA +:4092C0001F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF903001F931F9B002B00D050E1019B039A11001800FDF707FD03001F931F9B002B00D020 +:4093000046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B00D037E1019B039A11001800FDF7EAFC03001F931F9B002B00D02DE1094B1B68B1 +:409340005A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE113E0C046B86F0008019B18331800019B18331900039B04331A00F7F75DF90300E1 +:409380001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031EE2D1019B18331800019B18331900019B18331A00F8F7F0F803001F931F9B002BA5 +:4093C00000D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914B1B685A1C8F4B1A60019B18331800019B18331A00239B1900F8F7CEF803001F9300 +:409400001F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D0C6E0804B1B685A1C7E4B1A60029B13AA19A91800F8F7B0F803001F931F9B002B36 +:4094400000D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B685A1C704B1A60029B18331800039B103310AA1900F8F790F803001F931F9B002B32 +:4094800000D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B1B685A1C5F4B1A60029B18331800029B18331A0013AB1900F7F7BEF803001F93B5 +:4094C0001F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F803001F931F9B002B00D06DE0029B18331A00039B043319001000F6F771FE031E1A +:40950000E3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D1029B1833039A11001800FDF7EBFB03001F931F9B002B4BD13A4B1B685A1C394B70 +:409540001A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0A7 +:40958000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0DB +:4095C000C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F7E3FE16AB1800F5F7DFFE13AB1800F5F7DBFE10AB1800F5F7D7FE0DAB1800F5F7DB +:40960000D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B000BDC046B86F000810B596B005900491039202930AAB1800FDF71BF907AB180049 +:40964000F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB11001800FDF7F1F903001593159B002B00D0ACE0049B01211800F6F7DDF80300C7 +:409680001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D099E0049B0C331800F5F77EFE0CE0059B1A1D0AA90AAB1800F6F758FF030015939C +:4096C000159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD0199B189A0AA90598FFF708FC03001593159B002B00D072E0039B1800F6F78FF913 +:409700000300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B441A780AAB1900F5F7E1FF03001593159B002B56D1049B183318004F236B441A783A +:409740000AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB01930AAB00932300FFF759FC03001593159B002B3AD104984F236B441A780AAB19003D +:40978000F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900F5F7A4FF03001593159B002B21D1149B5A1E1492002BA6D1049A059B11001800D9 +:4097C000FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FDF7ACF807AB1800F6 +:40980000F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B1100180000F088FA03000993099B002B3AD1049A079B1100180000F049FA0300B4 +:409840000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A069907980D9B01930C9B00932300FFF7DCFE03000993099B002B1AD1079B1800FCF7D3 +:40988000E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7E3F90300099304E0C04602E0C04600E0C046099B18000AB010BDC04680B0FFFFBB +:4098C00010B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF793FF0300180008B010BD000000B58BB001900091009B00211800F6F74A +:4099000007FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000F6F75EFC031E0ADA009B0C331A00019B043319001000F6F753FC031E01DB814B2B +:40994000FCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB1800F7F719FE03000993099B002B00D0C4E0019A06AB11001800FDF7C3F90300B5 +:409980000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD03000993099B002B00D0ABE0019A03AB11001800FDF7A6F903000993099B002BD1 +:4099C00000D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F7EAFE03000993099B002B00D08EE00CE0019B1A1D03A903AB1800F6F71DFE030039 +:409A00000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D123E0019B10331A0003A903AB1800F6F703FE03000993099B002B00D06AE00BE036 +:409A4000019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB11001800F6F7BDFB031EEADA009A03A903AB1800F7F791FD03000993099B002B4DD142 +:409A8000019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A60019B1C331A0003A903AB1800F6F7C4FD03000993099B002B34D10BE0019B1A1DD3 +:409AC00003A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F77FFB031EEADA03AA06AB11001800F6F777FB031E19D0134B099316E0C04614E081 +:409B0000C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F5F73BFC03AB1800F5F737FC099B18000BB081 +:409B400000BDC04680B3FFFFB86F000810B58AB00790069105920493059B01211800F6F7D7FB031E08D1049A069B11001800FCF76CFF0300099339E001235A42059B1100E5 +:409B80001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D1069B0C3300211800F6F7B2FB031E1DD0069B0C331800079B191D069B0C331A002D +:409BC000F6F788FD0300099310E0049C059A069907980C9B029300230193002300932300FFF714FE0300099300E0C046099B18000AB010BD10B592B00590049103920293F0 +:409C000006AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF728FE029C039A10990598169B00932300FFF78CFF03001193119B002B21D1159CD2 +:409C4000149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F990598FDF7EBFF03001193119B002B0CD10F9A059B11001800FDF7B0F8030011932C +:409C800004E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF00B583B001900091009B1800F5F7E9FE0200019BDB6D0733DB089A4201D9034BB9 +:409CC00000E00023180003B000BDC04680B3FFFF00B583B001900091009B183301211800F6F716FB031E01D0114B1EE0019B1800FCF7ADFD0300022B07D1009A019B11008E +:409D00001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B11001800FFF7E6FD030000E0024B180003B000BD80B3FFFF80B0FFFF00B583B001900091B5 +:409D4000019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B01211800F5F796FD031E09D1009B1800F5F756FE03005A1E019BDB6D9A4201D0184B86 +:409D80002BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0019B1800FCF753FD0300012B14D1009B01211800F6F7ACFA031E09DB019B4C3376 +:409DC0001A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD80B3FFFF80B0FFFF00B589B003900291019200935C4B0793039BDB6D0733DB08B2 +:409E00000593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE03000793079B002B00D08EE0029B1800F5F7F7FD031EEDD0029B1800F5F7F1FD0300013B52 +:409E40000493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F803000793079B002B0CD07AE0039BD96D029B01221800F5F72AFD03000793079B002B72 +:409E800063D1029B002200211800F5F71FFD03000793079B002B5AD1029B002201211800F5F714FD03000793079B002B51D1039BDB6DFE2B0AD1029B002202211800F5F787 +:409EC00005FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B019A05990298F8F767FE03000793079B002B32D1059BDA00039BDB6DD21A029B69 +:409F000011001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134B1FE0029B01211800F6F7F2F9031ED6DB039B4C331A00029B11001800F6F750F91C +:409F4000031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180009B000BD80B0FFFF00B3FFFF10B588B005900491039202930B9B0A9AFC +:409F800003990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B00932300FFF78CFC0300079300E0C046079B180008B010BD10B586B0059004918C +:409FC00003920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF0300180006B010BD10B588B004910392029317236B44021C1A70049A17236B441B78FC +:40A000001900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049B88331A00039C029B00932300FFF7C4FF0300180008B010BD10B5AEB003900291D0 +:40A04000039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B883319001000F6F7BDF8031E15D1039B94331A00029B943319001000F6F7B2F8031E0AD125 +:40A08000039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7E8FB05AB1800FCF7FCFB029A05AB11001800FCF7FAFC029B7C331A00029B283330 +:40A0C0001C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B88331A0024AB11001800F6F779F8031E15D1029B94331A0024AB0C331100180026 +:40A10000F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B2D9300E0C04624AB1800FCF713FC05AB1800FCF727FC2D9B18002EB010BDC04676 +:40A1400080B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A60C04604B07047000082B00190019B01221A60019B01225A60019B024A9A60C046F1 +:40A1800002B07047EC04000800B585B00390029101920093039B0433019A02991800FFF7D1FF009B002B06D0039B1033069A00991800FFF7C7FF039B1C33089A079918004E +:40A1C000FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF039B34330C9A0B991800FFF7ABFF039B40331800FFF7B8FF039B04331800F5F7C5 +:40A200000EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023180005B000BD000000B585B00190019B1033434A10211800F5F778FC030003935C +:40A24000039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B0433FF211800F5F7FCFD03000393039B002B4FD1019B181D019B043313221900F6F721 +:40A280009AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C33284A10211800F5F741FC03000393039B002B32D1019B4C330122FC211800F5F79D +:40A2C00005FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002B1FD1019B403301211800F5F7A5FA03000393039B002B16D1019B34331800F5F7BE +:40A3000053F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046DC +:40A34000E4450410EC45041000B587B0019002AB1800F5F717F8019B10335D4A10211800F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA03000593F7 +:40A38000059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E0019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E02198 +:40A3C0001800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF903000593059B002B58D1019B04331800F5F715FB0200019B9A65019B2833052194 +:40A400001800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA03000593059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F75C +:40A4400045FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B24D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019B18 +:40A48000C022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D036 +:40A4C000019B1800FCF75EFA059B180007B000BD104604101846041000B58DB00B900A002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042BCD +:40A5000025D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B9820230893284B079320230693274B059320230493264B039320230293254B01930023C0 +:40A54000009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B0793302306931E4B0593302304931D4B0393302302931C4B0193002300930023302209 +:40A58000FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A660B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BDCDA60110CA +:40A5C00054440410D4440410B4440410944404107444041003AF0110F4440410B4450410844504105445041024450410CDB90110B9BA011080B1FFFF84B003900291019265 +:40A60000039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42DBB2D318DBB25AB2019B1A70C04604B0704784B0039002910192019B1B785BB2B2 +:40A64000DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029BD21A039B1A60C04604B0704700B587B00390019200930B236B440A1C1A70019B05 +:40A680009A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A0199039B1800F5F762FF03000593059B002B04D1039B012252421A6000E0C046059BA0 +:40A6C000180007B000BDC046FFFFFF3F00B595B0019042236B4400221A700023139380235B0012930CAB01221A600CAB09225A600CAB03AA9A600CAB5B689A0003AB0021A4 +:40A7000018001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B9A68139B9B00D3181B680F93019B9B682033196842226A440FAB1800FFF75CFF10 +:40A74000019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A440FAB1800FFF765FF019B9B683033196842226A440FAB1800FFF75BFF019B9B6824 +:40A780003433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB1800FFF747FF019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B0078 +:40A7C000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF71BFF09E0432369 +:40A800006B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FAB1800FFF7E9FE019B9B682833196842226A440FAB1800FFF7DFFE019B9B68303362 +:40A84000196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF7E8FE019B9B683833196842226A440FAB1800FFF7DEFE019B9B683C331968422212 +:40A880006A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A70E1 +:40A8C00043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7A8FE09E043236B440021595642226A440FAB1800FFF780FE019B9B682833196895 +:40A9000042226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE019B9B683433196842226A440FAB1800FFF77FFE019B9B683833196842226A448B +:40A940000FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F934323F0 +:40A980006B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73FFE09E043236B4400215956422217 +:40A9C0006A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019B9B682C33196842226A440FAB1800FFF703FE019B9B683033196842226A440FABBF +:40AA00001800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B683433196842226A440FAB1800FFF7E5FD019B9B683C33196842226A440FAB1800FFF71D +:40AA4000F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B682433196842226A440FAB1800FFF7E4FD019B9A68139B9B00D3180F9A1A60139B01331393019B5E +:40AA80009A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7C4 +:40AAC000B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196842226A440FAB1800FFF786FD019B9B683033196842226A440FAB1800FFF77CFDB6 +:40AB0000019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440FAB1800FFF768FD019B9B683833196842226A440FAB1800FFF75EFD019B9B6820 +:40AB40002433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB1800FFF767FD019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B0098 +:40AB8000D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF73BFD09E0432387 +:40ABC0006B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FAB1800FFF709FD019B9B683433196842226A440FAB1800FFF7FFFC019B9B6838331F +:40AC0000196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF7EBFC019B9B683C33196842226A440FAB1800FFF7E1FC019B9B6828331968422257 +:40AC40006A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F93BB +:40AC800043236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7BEFC09E043236B440021595695 +:40ACC00042226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC019B9B683833196842226A440FAB1800FFF782FC019B9B683C33196842226A4477 +:40AD00000FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B683833196842226A440FAB1800FFF764FC019B9B683433196842226A440FAB1800D4 +:40AD4000FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B682433196842226A440FAB1800FFF763FC019B9A68139B9B00D3180F9A1A60139B01331393A4 +:40AD8000019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB18001B +:40ADC000FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33196842226A440FAB1800FFF705FC019B9B683C33196842226A440FAB1800FFF7A4 +:40AE0000FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B682033196842226A440FAB1800FFF7E7FB019B9B682833196842226A440FAB1800FFF7FAFB019BB2 +:40AE40009B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB1800FFF7E6FB019B9B683433196842226A440FAB1800FFF7DCFB019B9A68139B68 +:40AE80009B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00231A1C53B20F93019B9A68139B9B00D3180F9A1A6000230F9306E0019B9A68139B80 +:40AEC0009B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB2002B0ADA42236B4400215956129B0CAA0198FFF7BBFB00E0C046119B180015B0B8 +:40AF000000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6010AB0D225A6010AB03AA9A6010AB5B689A0003AB002118001EF0C8F8019B182141 +:40AF40001800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B681393019B9B683033196852226A4413AB1800FFF741FB019B9B685433196852223D +:40AF80006A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019B9B685C33196852226A4413AB1800FFF740FB019B9A68179B9B00D318139A1A6057 +:40AFC000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B421900522261 +:40B000006A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA019B9B683433196852226A4413AB1800FFF7E2FA019B9B685833196852226A44B7 +:40B0400013AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B683033196852226A4413AB1800FFF7E1FA019B9B685033196852226A4413AB1800E6 +:40B08000FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B785A +:40B0C0007F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E053236B440021595652226A4413AB1800FFF783FA019B9B683833196852226A4413ABFF +:40B100001800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433196852226A4413AB1800FFF782FA019B9B685433196852226A4413AB1800FFF702 +:40B1400078FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B44 +:40B180000CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B440021595652226A4413AB1800FFF724FA019B9B683C33196852226A4413AB18008A +:40B1C000FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196852226A4413AB1800FFF706FA019B9B685433196852226A4413AB1800FFF7FCF9AF +:40B20000019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A4413AB1800FFF705FA019B9B685C33196852226A4413AB1800FFF7FBF9019B9A68C5 +:40B24000179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B4449 +:40B280001B785BB25B42190052226A4413AB1800FFF7CFF909E053236B440021595652226A4413AB1800FFF7A7F9019B9B685433196852226A4413AB1800FFF79DF9019B4F +:40B2C0009B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB1800FFF789F9019B9B683433196852226A4413AB1800FFF77FF9019B9B683033D7 +:40B30000196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF76BF9019B9B685833196852226A4413AB1800FFF761F9019B9B683C331968522245 +:40B340006A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B9B685C33196852226A4413AB1800FFF760F9019B9A68179B9B00D318139A1A60F3 +:40B38000179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052229D +:40B3C0006A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF9019B9B685833196852226A4413AB1800FFF702F9019B9B685833196852226A4474 +:40B4000013AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B683833196852226A4413AB1800FFF7E4F8019B9B683433196852226A4413AB180011 +:40B44000FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196852226A4413AB1800FFF7C6F8019B9B684033196852226A4413AB1800FFF7D9F8FA +:40B48000019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD98E +:40B4C00053236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B440021595652226A4413AB1800FFF785F8019B9B685C33196852226A4413AB1800FFF758 +:40B500007BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B684833196852226A4413AB1800FFF767F8019B9B683C33196852226A4413AB1800FFF75DF8019B3C +:40B540009B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB1800FFF749F8019B9B684433196852226A4413AB1800FFF75CF8019B9A68179BA0 +:40B580009B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B7825 +:40B5C0005BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4413AB1800FFF708F8019B9B684C33196852226A4413AB1800FEF7FEFF019B9B687E +:40B600004033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB1800FEF7EAFF019B9B685C33196852226A4413AB1800FEF7E0FF019B9B6848331968BB +:40B6400052226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B440022BE +:40B680001A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7C7FF09E053236B440021595652226A4413AB1800FEF79FFF019B9B68503300 +:40B6C000196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF78BFF019B9B684033196852226A4413AB1800FEF781FF019B9B684C331968522227 +:40B700006A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7046 +:40B7400053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF768FF09E053236B440021595652226A4413AB1800FEF740FF019B9B685433196802 +:40B7800052226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF019B9B684433196852226A4413AB1800FEF722FF019B9B685033196852226A444A +:40B7C00013AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053231D +:40B800006B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF09E053236B440021595652226A4413AB1800FEF7E1FE019B9B68583319685222FE +:40B840006A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B9B684833196852226A4413AB1800FEF7C3FE019B9B685433196852226A4413AB53 +:40B880001800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B44CB +:40B8C0001B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E053236B440021595652226A4413AB1800FEF782FE019B9B685C33196852226A44FA +:40B9000013AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B684C33196852226A4413AB1800FEF764FE019B9B685833196852226A4413AB180039 +:40B94000FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB21A1C53B2002B01DA00231A1C53B21393019B9A68179B9B00D318139A1A600023A7 +:40B98000139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42F0D352236B441B785BB2002B0ADA52236B4400215956169B10AA0198FEF756FEAB +:40B9C00000E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DAB01221A60019B5B68DA1F0DAB5A600DAB5B68092B01D92F4B59E00DAB03AA9A60FC +:40BA000003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF0C3FA0DAB1F211800F4F7BEFA03001193119B002B35D10DAB5B685A1C0DAB5A6027 +:40BA4000019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A68109B9B00D31800221A60109B01331093019B5A68109B9A42F0D80DA90DAB13223D +:40BA80001800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC0300119304E0C04602E0C04600E0C046119B180013B000BD80B0FFFF10B5A8B00190019B8B +:40BAC0005B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B680E2B01D9494B8DE023AB11AA9A6011AB3C22002118001DF0E9FA019B9B683833A8 +:40BB0000190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31800221A60269B01332693019B5A68269B9A42F0D823AA0199019B1800F4F77CFD56 +:40BB400003002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218001DF022FA20ABE0211800F4F71DFA03002793279B002B3DD120AA0199019B180082 +:40BB8000F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B0133269323AB5A68269B9A42F2D820AA23A923AB1800F4F73FFD03002793279BB3 +:40BBC000002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA0199019B1800F4F727FD0300279308E0C04606E0C04604E0C04602E0C04600E066 +:40BC0000C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039BE4331800C8235B001A0000211DF04EFA039B00221A60039B0833180009F04DFC14 +:40BC400007490398012300934023002200F02AF8039A9D239B000021D150C04605B000BD15C1011000B583B00190019B0833180009F03FFC019A9D239B000021D150019B82 +:40BC8000E02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C04603B000BD86B0039002910192009300230593039BE0229B580493049B132B03DD73 +:40BCC0003E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A600399049AE82013009B009B189B00CB181B18019A1A600399049AF02013009B009B1822 +:40BD00009B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60039BE0229B585A1C039BE0215A50059B180006B0704700B599B003900192009396 +:40BD40000B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019800230CF0EDFA03001593159B002B34D104AB16934023179314AB0B226A441278E3 +:40BD80001A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB03001593159B002B1BD1039B01221A60039B083314A9022218000BF0DAFC0300159341 +:40BDC000159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C04604AB4021180004F061F8159B180019B000BD00B587B0039002910192019B029A5D +:40BE000003981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BE0229B58002B02D140235B426DE00023249356E00199249AF42013009B009B18A1 +:40BE40009B00CB181B181B68012B01D101232393002302930199249AE42013009B009B189B00CB181B181C680199249AE82013009B009B189B00CB181B18186802AB03A9C1 +:40BE80008022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF74AFF03002593259B002B01D0259B2CE00199249AEC2013009B009B189B00CB189F +:40BEC0001B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B01332493019BE0229A58249B9A42A2DC239B002B04D13D235B42259300E0C04603ABC2 +:40BF00008021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B1593019B402B02D93C235B42C0E0159A9D239B00D358002B0FD1159A9D239B0065 +:40BF40000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C189280225200934203DD3C235B42199399E0159B1800FFF74EFF03001993199B002B46 +:40BF800000D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B1819681598179AF02413009B009B189B00C3181B191B68994201D200231693179B8D +:40BFC00001331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF075F8159B083305AA110018000BF04CFC03001993199B002B4DD1159B0833180090 +:40C0000009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199B002B3AD1159B083305A9402218000BF09FFB03001993199B002B30D105AA05A86C +:40C04000002340210CF07CF903001993199B002B27D1002317930DE01599179AEC2013009B009B189B00CB181B1800221A60179B01331793159BE0229A58179B9A42EBDCE9 +:40C08000019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C04600E0C04605AB4021180003F0FFFE199B18001AB010BD00B595B001903F235B4282 +:40C0C000139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB40211800F1F7A2F9031E02DA3F235B420EE003AB4022002118001CF0E8FF03A9019BB1 +:40C1000040221800FFF775FE03001393139B180015B000BD00B597B003900291019200934023159305AB4022002118001CF0CEFF05AB40211800F1F765F9031E02DA3C23E9 +:40C140005B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A1A600023180017B000BD00B583B00190C8235A00019B002118001CF0A7FFC046E4 +:40C1800003B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A912AB009313001022F8F768FA03001F931F9B002B01D01F9B23E113AB1B781A063B +:40C1C00013AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B791A0613AB5B791B041A4313AB9B791B021A4313ABDB7913431A9300231B931C9B95 +:40C200001D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A4313AB9B7A1B021A4313ABDB7A13431C9300231D9313AB1B7B1A0613AB5B7B1B041B +:40C240001A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304931A9B0499059A0800034322931B9B13432393119B88331A00229B239C136054602D +:40C28000119A84235B00D218209B219C13605460119BC8331A000023002413605460119A002300249364D4640423259350E0229A012313401A005B01D21A13061A00199276 +:40C2C000209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343229313003B432393219BDA07209B5B080293029B13430293219B5B080393199B0D +:40C30000089300230993089B1B000B9300230A93029C039D23000A990B9A0800434020932B0053402193119A259B0933DB00D218229B239C13605460119A259B1933DB008D +:40C34000D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B48331A00259BDB00D3181893119BC8331A00259BDB00D3181793179B5C681B682093C5 +:40C380002194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B1933DB00CB185C681B68209959400C91219961400D910C9B0D9C13605460249BDB0093 +:40C3C000189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9B0F9C13605460249B01332493249A259B9A42CEDB259B5B002593259B082BADDD8F +:40C400000023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B441B7801221800F7F7B9FF03000593059B002B02D114235B4230E0059B5B69102B65 +:40C4400002D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493049B002B01D0049B18E00398009A01990123F8F72FF803000493049B002B01D01F +:40C48000049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B000BD000070B5B2B029902891279200233193289B0F331A78172126AB9C466144A9 +:40C4C0000F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F94172326AA944663441B78299A0933DB00D3185C681B682C932D940F233193E3E01B +:40C50000319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B78162226A98C4662441B091370319B0F2B61D02C9B2D9CDAB2152126AB9C4661440F238B +:40C5400013400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119A0B002B432C93130033432D932F9B1A072E9B1B0913432E932F9B1B092F931523CF +:40C5800026AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A080043402E932F9B53402F93172326AA944663441B78299A1933DB00D3185C68B3 +:40C5C0001B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A624013002D932C9B2D9CDAB2152126AB9C46CD +:40C6000061440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B134300932D9B1B0901930E9B0099019A080003432C930F9B13432D932F9B1A072E9B3B +:40C640001B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B681B041593002314932E9B1499159A080043402E932F9B53402F93162326AA9446CE +:40C6800063441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93162326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A62401300FF +:40C6C0002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B181B78279A1370279B5A1C2F9B1B0C1893002319936B4660215B181B781370279BA0 +:40C700009A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9300231D936B4670215B181B781370279B191D2F9B1A022E9B1B0E0293029B1343D1 +:40C7400002932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B134304932F9B1B0C05936B461B7C0B70279B991D2F9B1A062E9B1B0A0693069B13437B +:40C7800006932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A002D9B1B0E1E9300231F936B4678215B181B781370279B09331A002D9B1B0C20931A +:40C7C000002321936B4680215B181B781370279B0A332D9A120A2292002223926A468821521812781A70279B0B332D9A12002492002225926A469021521812781A70279B3A +:40C800000C332D9A12022C99090E08910899114308912D9A120E09926A462021521812781A70279B0D332D9A12042C99090C0A910A9911430A912D9A120C0B926A46282189 +:40C84000521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D926A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC04673 +:40C8800058460410F0B597B00B900A910992089300230D93089B002B15D0089B029300230393039B5E0F00231F0033003B430AD11D9B049300230593059B5C0F00231D00D9 +:40C8C00023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933FF331022002118001CF0F0FB0B9AC4235B000A99D1500B9AA4235B00D2180023C1 +:40C900000024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B6933FF33089A099918001CF03EFB0B9A7823FF330121D15485E00EAB1022002118007A +:40C940001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB001B0ADAB20EAB9A73089BDBB2DB00DAB20EABDA73099B149337E0089B102B00D911 +:40C98000102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159A139B9A42C9 +:40C9C000E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0893149A139BD3181493089B002BC4D10023159317E00B99B4235B00159A8A183E +:40CA0000D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159B0F2BE4D90B9B6933FF3319000B9B6933FF331A000B9B1800B9 +:40CA4000FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F70DFE03001293129B002B01D0129B4AE01D9B0693002307930B9AA8235B00D31870 +:40CA80000699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B99BC235B00159A8A18D3181A781499159BCB181B785340D8B20B99BC235B00159AFE +:40CAC0008A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B7933FF331A000B9B1800FFF7DBFC1D9A139BD31A1D93149A139BD31814931D9B18 +:40CB0000002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A93069A079B9A4209D9069A079BD31A1A00089B9A4202D214235B42EAE0099AA42310 +:40CB40005B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1811685268A24215D801D1994212D8099AA4235B00D3185C681B68089A04920022B3 +:40CB800005920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00D3185C681B68089A1500002216005B1974410999A42252008A1813605460079BDF +:40CBC0001293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9188A1812780132D0B20999B4225200C9188A18011C11700999B4225200CB189B18ED +:40CC00001B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319000BAA0AAB009313001022F7F727FD03000F930F9B002B01D00F9B6AE000231393C4 +:40CC400046E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70119A139BD3180BA924 +:40CC8000139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D10999BC235B00139A8A18D3181A781199139BCB181B785340D8B20999BC235B00F9 +:40CCC000139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF331900099B7933FF331A00099B1800FFF7DAFB089A109BD31A0893129A109BD318129395 +:40CD0000119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C911B921D9AA4235B00D3185C681B68590FE2000A432592DB0024931D9AA8235B00B8 +:40CD4000D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D814235B4216E11D9B5933FF3319001B9B1C981A001CF019F9249A259B1A4304D1229AB4 +:40CD8000239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B4628229B181B781EAA1370239B1B0C0C9300230D936B4630229B181B781EAA5370E2 +:40CDC000239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311936B4640229B181B781EAAD370239B1A02229B1D0E1543239B1E0EEBB21EAA13713A +:40CE0000239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B1A06229B1B0A0293029B13430293239B1B0A03936B461B7A1EAA9371229B239CEE +:40CE4000DBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C1493002315936B4650229B181A781EAB5A72259B1B0A1693002317936B46582238 +:40CE80009B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B1B02249A120E0492049A1A430492259B1B0E05936B461A7C1EAB1A73259B1B0497 +:40CEC000249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249A120A0892089A1A430892259B1B0A09936B4620229B181A781EAB9A73249B259CCC +:40CF0000DAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB181B785340D8B21D99BC235B00279A8A18D318021C1A70279B01332793279B0F2BFD +:40CF4000E4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E01C9A279BD3181C99279A8A1811781D9CBC22520027982018821812784A40D2B24A +:40CF80001A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B005900491039202930A9C029A049905980C9B01930B9B00932300FFF765FC03000793079BF0 +:40CFC000002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B0DE00F9A1099059B1800FFF795FE03000793079B002B01D0079B00E0002318002C +:40D0000008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9B04931A9B0393179B0293169B0193089B00930B000021FFF7AFFF03001193119B02 +:40D04000002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB181B785340DBB21A00129B13431293139B01331393139A199B9A42EAD3129B002B8E +:40D0800008D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B00190019B1800F7F7BBF9C8235A00019B1100180002F0FAFEC04603B000BD00B5B8 +:40D0C00083B00190019B6422002118001BF0FEFFC04603B000BD00B597B0039002910192039B1B68180000F00FFC03001593029B002B04D0019B002B01D0022200E00122A4 +:40D1000053236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190000F032FB039B14A90122180000F02CFB53236B441B78022B05D1039B019A0299BB +:40D14000180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA0398039B0C33159A190000F00EFB039A039B0C331900100000F029FB14AB1B7801331D +:40D18000DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390029101920093039B02990122180000F08DF903000593059B002B01D0059B21E077 +:40D1C000039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C331C00029B180000F08FFB03001A00012120001BF06BFF009A0199039B1800FFF70E +:40D200006AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B1A6D019BD218C0235B009A4202D905235B4233E0C0235A0005AB002118001BF095 +:40D2400045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039B1B6D6593029B002B0ED0019B002B0BD005AA659BD318019A029918001BF094FEE5 +:40D28000659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B010BD00B58BB00390029101920093039B0793079B1B68180000F026FB03000693FC +:40D2C000019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A4202D905235B4260E0079BDB6D002B18D0079B5B6D012B05D0079BDA6C079B9B6D89 +:40D300009A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E000230C93009B002B31D00C9B002B2ED00C9A0099079B1800FFF7CEFE27E0069A099B60 +:40D34000934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A079B0C331900100000F030FA079B0C331900049A089B18001BF016FE089A049B59 +:40D38000D3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079BDB6C5A1C079BDA64002318000BB000BD00B589B0059004910392059B0793039AA9 +:40D3C00004990798002300930023FFF76AFF03000693069B180009B000BD00B583B00190019B002B09D0019B180000F03DF8019B6421180002F05AFD00E0C04603B000BD24 +:40D4000082B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D0082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C04679 +:40D44000F846041028470410584704108847041000B583B00190019B0C22002118001BF035FEC04603B000BD00B583B00190019B002B27D0019B1B68002B23D0019B5B683E +:40D48000002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B1B68DB685B001900100002F0FFFC019B9B6818001BF03EFA019B0C21180002F054 +:40D4C000F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B01D1164B27E0029B1B6A98470200039B5A60039B5B68002B01D1114B1BE0019BF9 +:40D50000002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B5A6A039B5B6818009047054B03E0039B029A1A600023180005B000BD00AFFFFFFB +:40D5400080AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B681A69019B5B68180090470300180003B000BDC04600AFFFFF10B584B003900291CB +:40D580000192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF00B583B001900091019B002B47 +:40D5C00003D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300180003B000BDC04600AFFFFF00B585B00390029101920093039B002B01D1064B99 +:40D6000006E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1514B9EE0F8 +:40D64000039B1B68DB681A00019B9A422DD2039B1B681A69039B5B681800904703001793179B002B00D07DE0039B1B685C69039B5B68019A02991800A04703001793179B2F +:40D68000002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B1B689B68019304AB0293039B9B681593039B9A68039B1B68DB68D3181493039BA2 +:40D6C0001B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF0F5FC002316931EE0159A169BD3181599169A8A1811780298169A821812784A40D2 +:40D70000D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A70169B01331693169A019B9A42DCD3039B1B681A69039B5B681800904703001793FD +:40D74000179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A0470300179306E0C04604E0C04602E0C04600E0C04604AB4021180002F098FB179B1800AD +:40D7800018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A04703005E +:40D7C000180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B03D0019B9B68002B01D12C4B52E0019B9A68019B1B68DB68D3181393019B1B6802 +:40D800009A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69019B5B681800904703001293129B002B01D0129B2EE0019B1B685C69019B586896 +:40D84000019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B685C69019B5868019B1B689B681A0002AB1900A04703001293129B002B01D0129B5E +:40D8800008E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFF10B584B00190019B002B07D0019B1B68002B03D0019B9B68002B01D1114B1DE0DE +:40D8C000019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B0CE0019B1B685C69019B5868019B1B68DB681A00039B1900A0470300180004B020 +:40D9000010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B0704782B00190019B002B01D1002301E0019B1B78180002B0704700B583B00190D0 +:40D94000019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A0299039B180007F088FB0300180005B000BD00B583B001900091009A019B11001800C9 +:40D9800007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F068FD0300180005B000BD00B583B06C2101201AF03BFC03000193019B002B03D06E +:40D9C000019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019B18001AF0A7FFC04603B000BD00B583B001900091009A019B1100180005F020FEA3 +:40DA0000C04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B000BD00B583B00190019B0021180005F017FE0300180003B000BD00B585B00390A2 +:40DA400002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B0121180007F064FD0300180003B000BD00B585B0039002910192019A0299039B51 +:40DA8000180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F3FE0300180003B000BD00B585B0039002910192019A0299039801230AF040FCA9 +:40DAC0000300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B180007F0FAFC019B180003B000BD00B583B00190019B180007F0FBFC019B180021 +:40DB00001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04603B000BD00B583B001900091009A019B1100180007F0A6FD0300180003B000BDF5 +:40DB400000B583B00190019B0021180007F0F0FC0300180003B000BD00B585B0039002910192019A0299039800230AF0E9FB0300180005B000BD000000B585B00190164B0B +:40DB80000393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B143350 +:40DBC0000393039B0293029B1B68002BE3D10023180005B000BDC0463C51041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C53 +:40DC0000009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A6000231D +:40DC400008E0059B14330593059B1B68002BE7D12E235B42180006B07047C0463C51041000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B70 +:40DC80005A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC04619 +:40DCC0008C51041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C50 +:40DD00001A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B020 +:40DD40007047C0468C51041086B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B78 +:40DD800014330593059B1B68002BE7D12E235B42180006B07047C046C851041000B583B00190019B0C22002118001BF08FF9C04603B000BD10B58EB00590049103920293FC +:40DDC000059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D1644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A4299 +:40DE000001D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B01330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D9330 +:40DE40000B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454B83E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9BF2 +:40DE800001330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36490D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A2C +:40DEC0000D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E0CF +:40DF000007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED0079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9B26 +:40DF4000002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A1A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFF2C52041000ECFFFFD9 +:40DF800000EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B681900100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C211800FB +:40DFC00001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A6000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B6883 +:40E000009A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B002006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D01D +:40E0400007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C0467C520410AC520410DC5204100C53041000B583B001900091019B002B06D0009B002B03D056 +:40E08000019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B001903A +:40E0C000019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E086 +:40E100000023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F09F +:40E140008AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B01931B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E02E +:40E180000F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB00790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A60CC +:40E1C0000F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD39 +:40E200000200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9B0093012303F0FCFE030018000BB000BD80BFFFFF00B58BB007900691059204934E +:40E24000079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE00F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BDAF +:40E2800000BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BD00B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F099 +:40E2C000A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFBC04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A00AD +:40E30000009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A60C04602B07047C046445204104C52041082B002006B4607331A706B4607331B7864 +:40E34000022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B443D +:40E380000A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B0ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F8030031934D +:40E3C00006AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1C1A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D1C6 +:40E40000049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009A9E +:40E44000019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE03000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B41 +:40E480001800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70009B054A5A60019B88331A00009B9A60C04602B07047C0465852041082B0020062 +:40E4C0006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023180002B0704782B002006B4607331A706B4607331B78043B5A425341DBB21800C7 +:40E5000002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9B00932300F8F798F803000793079B044A934201D1034B00E0079B180008B010BD2A +:40E5400000B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B236B44197807980D9B03930C9B02930B9B01930A9B00932300F8F74EF8030018000A +:40E5800008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F71CF9019B180003B000BD00B583B00190019B1800F8F71BF9019B18001AF0BAF9FD +:40E5C000C04603B000BD82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B07047000000B587B0039002910192029A039B1B68D31A002B19 +:40E6000001DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019B1A1D019B1B6802990398F0F77DF903000593059B002B04D0059B0F4A94466344E4 +:40E6400012E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4201D0064B00E00023180007B000BDC046A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF48 +:40E6800000B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E03D0124B1EE0124B1CE0009B1B78002B08D0009B1A780B236B441B789A4201D05C +:40E6C0000B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B00E00023180005B000BDC04600C6FFFF00C3FFFF10B586B0039002910192019879 +:40E70000019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002B08D1019A019B883319001000FBF7D0FA03000593039B029A1A60059B180006B029 +:40E7400010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9B002B04D00D9B454A9446634482E00B9B1A680C9BD2180A9B9A4201D0404B79E09F +:40E780000CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E00B9B19680C9A099800230693002305930023049300230393002302930023019386 +:40E7C00000230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD2180B9B1A600CAA0A990B980223F0F79CF803000D930D9B002B04D00D9B1F4A9446B9 +:40E80000634437E00B9B1B680C9A099806920593002304930023039300230293002301930023009300230022002101F0D3FE03000D930D9B002B01D0104B1BE00B9B1A68F5 +:40E840000C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0064B07E00B9B1A680A9B9A4201D0044B00E0002318000FB000BDC04600C5FFFF95 +:40E880009AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA02990398F0F7F1F803000793079B002B04D0079B114A944663441CE0019A04AB51 +:40E8C00011001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D0009B1B68002B03D1009B5B68002B01D0024B00E00023180009B000BD80C5FFFF49 +:40E9000080C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F703F803000B930B9B002B04D00B9B4E4A9446634495E0039B1A68099BD31802937A +:40E9400006AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA0299039B1800F0F769F803000B930B9B002B04D00B9B3D4A9446634472E0039B1A683C +:40E98000099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9B002B01D1334B5CE00A9A019B11001800FFF75CFB03000B930B9B002B01D00B9B51 +:40E9C0004FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF7B1FE03000B932AE017236B441B78032B04D017236B441B78022B1ED1019B1868C5 +:40EA00005968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B18685968FFF7D8FD02000299039B1800FFF760FE03000B9301E00E4B0B930B9B58 +:40EA4000002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FA0B9B18000DB000BD00C3FFFF00C5FFFF9AC4FFFF80C3FFFF00B595B00B900A91A4 +:40EA800009920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF743FF03001393139B002B04D0139B9D4A9446634432E10F9A109BD318129311AAB3 +:40EAC00012990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B002B01D0904B19E110AA12990FA80223EFF71AFF03001393139B002B00D0F5E018 +:40EB00000F99109A0B9800230693002305930023049300230393002302930023019300230093002301F056FD03001393139B002B00D0DBE00F9A109BD3180F9310AA129917 +:40EB40000FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B9806920593002304930023039300230293002301930023009300230022002101F02CFD0300139300 +:40EB8000139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE03001393139B002B00D0A1E00F9B109A0B980021069100210591049203930023029300230F +:40EBC00001930023009300230022002101F002FD03001393139B002B00D087E00F9A109BD3180F9310AA12990FA80223EFF79CFE03001393139B002B00D077E00F99109B1E +:40EC00000B9800220692002205920022049200220392002202920022019200930B000022002101F0D7FC03001393139B002B5DD10F9A109BD3180F9310AA12990FA802236D +:40EC4000EFF772FE03001393139B002B4ED10F9B109A0B9800210691002105910021049100210391029201930023009300230022002101F0AFFC03001393139B002B35D164 +:40EC80000F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1800EFF7A5FE03001393139B002B1DD10CAA12990FAB1800EFF79AFE0300139337 +:40ECC000139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B9A4203D0114B139300E0C0460CAB1800F0F75AFB139B002B0FD0139B0C4A134051 +:40ED000005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B000BDC04600C3FFFF80C2FFFF9AC2FFFF80FF000010B590B0059004910392049BEA +:40ED40000693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D00F9B824A94466344FCE0069A0A9BD3180D930BAA0D9906AB1800EFF7FDFD030012 +:40ED80000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D9906A80423EFF7C0FD03000F930F9B002B04D00F9B6D4A94466344D3E0059B7C3329 +:40EDC00006990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634A94466344BEE0069A0A9BD318069300230E93069A0D9B9A4234D00AAA0D9906A8E1 +:40EE0000A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB03000F930F9B002B0AD1059A07AB11001800FFF725FC03000F930F9B002B11D073 +:40EE4000059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A944663447FE0069A0D9B9A4246D00AAA0D9906A8A123EFF758FD03000F930F9B002B85 +:40EE80002FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D00F9B324A944663445CE0069A0A9BD2180C9B9A4201D02F4B54E0059A0C9906AB55 +:40EEC0001800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B40E00F9B623308D0059B1800F7F795FD0F9B1E4A9446634434E00E9B002B1ED1DA +:40EF00000598059B88331900059B7C331A00059B28331C0000230193002300932300FAF7CFFC03000F930F9B002B08D0059B1800F7F773FD0F9B0D4A9446634412E0059A79 +:40EF4000059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B00E00023180010B010BDC04600C3FFFF80C2FFFF9AC2FFFF80B1FFFF00B58FB00E +:40EF8000039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A83023EFF7C1FC03000D930D9B002B04D00D9B584A94466344A9E0059A099BD31846 +:40EFC0000C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634495E00A9B002B04D00D9B4B4A944663448DE006AB13226A440C9905A8FFF742FC31 +:40F0000003000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC03000D930D9B002B04D00D9B394A944663446CE0099B002B01D1384B67E0132301 +:40F040006B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800FFF704F803000D930D9B002B01D00D9B4DE013236B441B78012B14D1039B18683D +:40F080005968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF7A3FF0D9B33E013236B441B78022B04D013236B441B78032B25D1039B1868596843 +:40F0C000FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B18685968FFF779FA059B099A1900FFF722FE03000D930D9B002B07D0039B1800FEF7D1 +:40F1000073FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF80C3FFFF10B58EB0079006910592049308AB1800FEF732FE059B002B06D0059BB1 +:40F14000013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B0193049B00932300FEF724FE03000D930D9B002B2AD10120FEF750FF03000C9327 +:40F180000C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA08AB196808AB5B681A00FFF765FC03000D930D9B002B03D0079B1800FEF714FF17 +:40F1C00008AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D1834BF5E00D9B7C4A934201D00D9BEFE0059B002B06D0059B013B069AD3181B7839 +:40F20000002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B00932300FEF7C8FD03000D930D9B002B2AD10220FEF7F4FE03000C930C9A079B1100180086 +:40F24000FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B681A00FFF767FD03000D930D9B002B03D0079B1800FEF7B8FE08AB1800FEF784FE8F +:40F280000D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4A934201D00D9B93E0059B002B06D0059B013B069AD3181B78002B02D0464B0D933F +:40F2C0000EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D930D9B002B16D108AB196808AB5A68079B1800FFF743FE03000D930D9B002B03D027 +:40F30000079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E0059A0699079B1800FFF728FE03000D930D9B002B01D100234AE0079B1800FEF7D2 +:40F3400053FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE031E0DD1079B18685968FFF72CF9059A069B1900FFF780FB031E01D1002327E065 +:40F38000079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B11001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031EDB +:40F3C00001D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFF3C5304105C53041080ECFFFF80C4FFFF00EDFFFF00C4FFFF7C5304109C530410BC53041044 +:40F40000D853041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB029391 +:40F4400000230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D930120FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD03001F +:40F480000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F802000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800D4 +:40F4C000FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002B06D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CABC1 +:40F50000029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D930D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9BAC +:40F5400052E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD0120FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD0300F3 +:40F580000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F802000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF7AC +:40F5C00013FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF791F903000F930F9B180010B010BDC04680EFFFFFF45304101454041080C3FFFFDA +:40F6000034540410505404109EC4FFFF82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704700B58DB005900491039200230A9307ABE1 +:40F640001800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B002B2CD107AA0499059B1800EFF7C2FB03000B930B9B002B21DB0B9B0A9AD3187C +:40F680000A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED107AA0499059B1800EFF7A4FB03000B930B9B002B03DB0B9B0A9AD3180A9307AB63 +:40F6C0001800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B930B9B002B01DA0B9B15E00B9B0A9AD3180A930499059B30221800EFF72FFB0300A8 +:40F700000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB0059004910392002328930398039B8833190028AA8523019306AB009313000022AB +:40F74000F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B681A00049BD31A1A00289B9A4202D26C235B420EE0059B1A68289B5B42D218059B72 +:40F780001A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291019200230793019B1B7804AA05A91800FEF7A0FA03000693069B002B01D0069B2F +:40F7C00011E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079AD3180793079B180009B000BD00B587B003900291019200230593019B1800FEF741 +:40F800005DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000493049B002B01DA049B25E0049B059AD31805931FE0019B1800FEF73FFC0300B0 +:40F84000022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049B002B01DA049B07E0049B059AD318059301E0034B00E0059B180007B000BDC0464B +:40F8800080C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A049908AB1800FFF7A1FF03000993099B002B01DA099BA6E0099B0A9AD3180A9321 +:40F8C000059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C235B4290E0089B013B0893089B00221A700A9B01330A930A9A049908AB1800EFF722 +:40F9000041F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB03221800EFF71CFA03000993099B002B01DA099B69E0099B0A9AD3180A93059B1800FEF73A +:40F94000BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1800FEF7ABFB0300022B15D1059B18685968FFF754FE0200049908AB1800FFF7E5 +:40F980000BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A80B9B00932300EFF70BFB03000993099B002B01DA099B26E0099B0A9AD3180A93C9 +:40F9C0000A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD3180A93049908AB30221800EFF7B7F903000993099B002B01DA099B04E0099B0A9A26 +:40FA0000D3180A930A9B18000CB010BD00B591B0059004910392049A039BD318099300230E93059B1800FEF749FB0300012B00D034E1059B18685968FFF7E8FD03000D9358 +:40FA400006AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E006AA049909AB1800EFF7C4F903000F930F9B002B00DAD4E00F9B0E9AD3180E93A3 +:40FA800006AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB1800EFF7A8F903000F930F9B002B00DAB8E00F9B0E9AD3180E9306A90D980023002283 +:40FAC00001F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F930F9B002B00DA9CE00F9B0E9AD3180E9306AA0D98002301930023009313000022EE +:40FB0000002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF903000F930F9B002B00DA7BE00F9B0E9AD3180E9306AA0D9800230193002300930023B4 +:40FB4000002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F930F9B002B5DDB0F9B0E9AD3180E930D980023019306AB009300230022002100F09D +:40FB80003DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B3FDB0F9B0E9AD3180E930D9806AB01930023009300230022002100F01FFF0300C5 +:40FBC0000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9B0E9AD3180E9306A90D9800230193002300930023002200F001FF03000F930F9BF0 +:40FC0000002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD3180E9306AB1800EFF7BFFB0F9B002B01DA0F9B35E1049909AB00221800EFF718FA3F +:40FC400003000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF791FF03000F930F9B002B01DA0F9B17E10F9B0E9AD3180E93049909AB3022180088 +:40FC8000EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B1800FEF70CFA0300022B00D0F6E0059B18685968FFF7B4FC03000C9300230B930023BF +:40FCC0000A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AD3180B93099B1A00049BD31A002B02DC6C235B42D4E0099B013B0993099B002231 +:40FD00001A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9BBEE00F9B0B9AD3180B93049909AB03221800EFF713F803000F930F9B002B01DA4E +:40FD40000F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B01DA0F9B9CE00F9B0B9AD3180B93049909ABA1221800EEF7F1FF03000F930F9BC9 +:40FD8000002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800FFF7FAFC03000F930F9B002B01DA0F9B76E00F9B0A9AD3180A930A9A049909AB5B +:40FDC0001800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909ABA0221800EEF7BAFF03000F930F9B002B01DA0F9B54E00F9B0A9AD3180A930E9A95 +:40FE00000A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DA0F9B3DE00F9B0E9AD3180E93099B04221A70049909AB01221800EFF719F9030010 +:40FE40000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE03000F930F9B002B01DA0F9B18E00F9B0E9AD3180E93049909AB30221800EEF7A4 +:40FE80006DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B180011B000BDC04680C6FFFF00B583B001900091044B1B68009A0198002198476B +:40FEC000C04603B000BDC046F0040008F0B583B001900091019B1C0000231D00009B1E0000231F0032003B00200029001DF042F903000C001800210003B0F0BD70B5CAB058 +:40FF0000339032913192309300234493339B1B684293339B5B684193339B9B684093339BDB683F93419B9A08419BD3183E93409B9A08409BD3183D933F9B9A083F9BD3183F +:40FF40003C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B45930023439351E2319A449BD3181B781900449B5A1C319B9B181B781B021943449B24 +:40FF80009A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B93449B1A1D319B9B181B781900449B5A1D319B9B181B781B021943449B9A1D319B66 +:40FFC0009B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B08331A00319B9B181B781900449B09331A00319B9B181B781B021943449B0A331A00DA +:020000041002E8 +:40000000319B9B181B781B041943449B0B331A00319B9B181B781B060B43369300233793449B0C331A00319B9B181B781900449B0D331A00319B9B181B781B021943449BBF +:400040000E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B43349300233593499B0093002301933A9B3B9C0099019A5B1854413A933B94489B029300 +:40008000002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18544138933994479B069300230793399B1B000893002309930699079A089B099CF7 +:4000C000C9186241369B379C5B18544136933794469B0A9300230B93379B1B000C9300230D930A990B9A0C9B0D9CC9186241349B359C5B185441349335943A9B4993389BD6 +:400100004893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B184593429A499B11001800FFF7D0FE05000E003C9A489B11001800FFF7C8FE03000C000B +:40014000ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800FFF7B4FE03000C005B1974413A933B94419A499B11001800FFF7A8FE05000E008F +:40018000429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE03000C00ED1866413D9A469B11001800FFF78CFE03000C00ED1866413E9A459B0E +:4001C00011001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE05000E00419A489B11001800FFF76EFE03000C00ED186641429A479B1100180041 +:40020000FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866413D9A459B11001800FFF750FE03000C005B197441369337943F9A499B11001800EC +:40024000FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B11001800FFF732FE03000C00ED186641429A469B11001800FFF728FE03000C008A +:40028000ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B534345933B9B1B00109300231193389B399C1099119A5B18544138933994399BE4 +:4002C0001B00129300231393369B379C1299139A5B18544136933794379B1B00149300231593349B359C1499159A5B185441349335943A9B4993389B4893369B4793349B11 +:400300004693359B1B00169300231793169A459B9B184593499B189300231993459B9B081A9300231B931899199A1A9B1B9CC9186241459B1C9300231D9303231C9C1D9DBB +:40034000200098431E900023280018401F901E9B1F9C5B1854413A933B94459A0323134045933A9B4993489B2093002321933B9B1B00229300232393209B219C2299239AAD +:400380005B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B259C2699279A5B1854413A933B943A9B4793469B2893002329933B9B1B002A9372 +:4003C00000232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D933B9B1B002E9300232F932C9B2D9C2E992F9A5B1854413A933B943A9B4593449B51 +:4004000010334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62339B479A9A62339B469ADA62339B459A1A63C0464AB070BD00B583B00190019B3B +:40044000002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D0019B48211800FFF721FDC04603B000BD00B589B003900291019200230793019B0D +:400480000693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0069B002B3ED0039B5B6C002B3AD0039B5B6C1022D31A0593019A059B9A4213D27B +:4004C000039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B5A64002306931DE0039B5B6C3033039AD3180433059A0299180018F055FD039BE9 +:4005000000225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059BD31A0693069B0F2B13D9069B1B090493029A079BD218049903980123FFF7DEFCF2 +:40054000049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B34331800029A079BD318069A190018F01BFD0023180009B000BD88B0039002910A +:400580000192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A780499079BCB181B785340D9B21B236B441B226A4412780A431A70079B01330793BB +:4005C000079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009300230593029B002B13D0039B0833019A02991800EFF792FB03000593059B002B83 +:4006000041D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A00991800EFF77BFB03000593059B002B2CD1099B002B0BD0039B38330A9A0999180081 +:40064000EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF75DFB03000593059B002B12D10D9B002B10D0039B14330E9A0D991800EFF74EFB24 +:400680000300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF10B584B0039002910192039B5C68039B70 +:4006C00008331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039B083300211800EFF713FE031E07DD039B083300211800EFF7CCF8031E01D12B4BAB +:4007000051E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C3300211800EFF7B7F8031E0FD0039B383300211800EFF7EEFD031E07DD039B3833002118007E +:40074000EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0029B002B11D0039B443300211800EFF7CFFD031E07DD039B503300211800EFF769 +:40078000C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC024B00E00023180004B010BD80BFFFFF30B591B0039000230F93039B08330021F6 +:4007C0001800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1E9341DBB20D93039B383300211800EFF78FFD03005A1E9341DBB20C93039B20338D +:4008000000211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD03005A1E9341DBB20A930D9B002B0AD00C9B002B07D00B9B002B04D00A9B002B01D00F +:40084000012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D00A9B002B01D0012300E0002308930D9B002B0AD00C9B002B07D00B9B002B04D1A8 +:400880000A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D10A9B002B01D0012300E000230693099B002B05D1089B002B02D180 +:4008C000079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B002B22D10D9B002B1FD00C9B002B1CD0039B08331800039B2C331900039B38330C +:400900001A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B08331800EFF7AFF80200039B5A60089B002B1BD0039B08331800039B14331900039B2033B8 +:400940001A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B254A9446634443E0079B002B16D0039B2C331800039B38331900039B14331A0085 +:40098000039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002B1FD0039B2C331800039B38331900039B20331C00039B44331D00039B5033039A27 +:4009C0005C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A9446634406E00599039B01221800FFF761FE0300180011B030BDC04680BFFFFF00B587B0CE +:400A00000390029101920093039B083300211800EFF77EFC031E21D0039B2C3300211800EFF776FC031E19D0039B383300211800EFF76EFC031E11D0039B20330021180090 +:400A4000EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E000230493049B002B0AD1019B002B05D1009B002B02D1089B002B01D02B4B52E0029B002B3C +:400A80000CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002B0CD0039B2C331A00019B11001800EEF742FD03000593059B002B2FD1009B002B28 +:400AC0000CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B0CD0039B20331A00089B11001800EEF722FD03000593059B002B0FD1099B002B2F +:400B00000ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E00023180007B000BD80BFFFFF00B587B00390029101920093039B0833002118002A +:400B4000EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800EFF7D6FB031E11D0039B203300211800EFF7CEFB031E09D0039B143300211800B1 +:400B8000EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD0039B44331A00029B11001800EEF7C3FC03000593059B002B1FD1019B002B0CD08F +:400BC000039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D0039B5C331A00009B11001800EEF7A3FC03000593059B002B04D0059B034A9446E4 +:400C0000634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC220021180018F053FA019A0299039B180000F003F8C04605B000BD84B003900291019268 +:400C4000039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180002B0704700B583B00190019B002200211800FFF71DFD031E01D0164B27E0019B95 +:400C800008331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031E12D0019B14331800EEF7B9FE0300012B0AD9019B14331A00019B083319001000B3 +:400CC000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059B1800FFF7BFFF031E07D1059B012201211800FFF7DDFC031E01D01D4B35E0059B04 +:400D000008331800059B2C331900059B38331C00059B20331D00059B1433002202920022019200932B00220002F0FCFA031E01D00F4B1AE0059B2C331800059B3833190076 +:400D4000059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF9031E01D0024B00E00023180007B030BD00BEFFFF00B583B001900091019B18000C +:400D8000FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009B083319001000EFF71BFA031E0AD1019B14331A00009B143319001000EFF710FA69 +:400DC000031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B002200211800FFF763FC031E01D0294B4CE007AB1800EEF7C5FA059B5A6804995E +:400E000007AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF7DFF9031E03DB04235B420B9321E0059B5B680A93059B14331A00059B08331C0023 +:400E4000059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907AB1800EEF7BDFF03000B9302E0C04600E0C04607AB1800EEF797FA0B9B002B04D036 +:400E80000B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B005900491039200230693059BA0229B58002B3FD0059B8C331800059B8C331900A4 +:400EC000059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C331900059B08331A00F0F756FF03000793079B002B00D072E0059B98331800059BC6 +:400F000098331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059B98331900059B08331A00F0F735FF030007935DE0069B5A1C06920A2B01DD2E4B56 +:400F400057E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D1059B8C331800059B98331900059B08331A00F1F737FD03000793079B002B34D192 +:400F8000059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B08331A00F1F743FE03000793079B002B1ED1059B8C331800059B8C331900059B1433EC +:400FC0001A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180008B010BD80BBFFFF10B5A8B057 +:401000000590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059B01211800FFF744FB031E01D0DF4BFCE121AB1800EEF7A6F91EAB1800EEF7A2F94E +:401040001BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB1800EEF78FF915AB1800EEF78BF912AB1800EEF787F909AB1800EEF783F906AB4A +:401080001800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1059B08331A0021AB11001800EFF798F8031E03DB04235B42279382E121AA09AB3A +:4010C00011001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A0499059B1800FFF7DAFE03002793279B002B00D039E1059B8C331A0021A921AB180086 +:40110000F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE03002793279B002B00D021E1059B2C3319001EAB01221800EFF73DFB03002793C5 +:40114000279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00D009E1039B049A18A81C21F1F724FD03002793279B002B00D0FFE018AA1EA9FF +:401180000FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB1800EFF74AFA03002793279B002B00D0E9E00FAB2693039B049A18A81C21F1F7FCFC71 +:4011C00003002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B00D0D3E0059B50331A000CA90CAB1800EFF722FA03002793279B002B00D0C7E092 +:401200000CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE03002793279B002B00D0B5E0059B38331C00059B8033259A21A912A800932300F0F7C8FEF2 +:4012400003002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B00D09BE0059B5C331A0021A915AB1800F0F792F903002793279B002B00D08FE0B8 +:40128000059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B38331A0021A915AB1800F0F776F903002793279B002B00D077E015AA12A921AB1800E2 +:4012C000EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB1800F0F759F903002793279B002B00D062E0059B08331A0021A921AB1800F0F724 +:401300004BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A800932300F0F754FE03002793279B002B46D109AA06AB11001800EEF751FF031E55 +:4013400002D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E086 +:40138000C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE080BFFFFF80BCFFFFC04604E0C04602E0C04600E040 +:4013C000C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D00FAB1800EDF7E0FF0CAB1800EDF7DCFF21AB1800EDF7D8FF15AB1800EDF7D4FFF1 +:4014000012AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279B034A9446634400E00023180028B010BD00BDFFFF00B59BB003900291019200931D +:401440000023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B681800FCF751FA03001593039B199350E0159B1793029A159B9A4201D2029B179376 +:401480001C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF803001693169B002B3AD104A91C9B04221800FCF762F803001693169B002B31D105AA62 +:4014C0001C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C1992197805A8189A821812784A40D2B21A70189B01331893189A179B9A42EDD304ABAE +:40150000DB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C04602E0C04600E0C04605AB40211800FEF7BDFC169B18001BB000BD000010B58EB0BC +:401540000590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE0049B002B01D1654BC5E0059BA8229B58DBB21800FBF744FF03000B930B9B002BDD +:4015800001D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3189A1C129B9A4207D3099B5A00129BD3189A1C0A9B9A4201D9504B9CE00A9A149B56 +:4015C0000021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D930D9B002B04D00D9B454A9446634482E00C9A099BD3180C930C9B119A10990B988E +:40160000FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9AD21A129BD31A023B0C9AD3180C930C9B5A1C0C9201221A70129A13990C9B18009C +:4016400017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002B28D1099B0133149AD0180A9A099BD31A591E149B5A1C099C06AB00932300FFF78F +:40168000D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E099906AB009313002200FFF7C3FE03000D9302E0C04600E0C04606AB1800FBF7B7 +:4016C000D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB030009E0149C039A04990598149B00932300FFF784FC030018000EB010BD80BFFFFF89 +:4017000080BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B58002B01D0464B88E0049B002B05D00F9B002B02D0109B002B01D1414B7DE0059B6E +:401740005B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0089A0E9BD31A033B0B930A9B5A1C0A9200221A70029B002B2FD10A9B5A1C0A928E +:4017800002221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D1099B013B0993099B002B02D0079B002BEBD0099B002B02D0079B002B04D0079B14 +:4017C000204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9201221A7004E00A9B5A1C0A92FF221A700B9B5A1E0B92002BF5D10A9B5A1C0A92E7 +:4018000000221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7D9FA030009E0109C039A04990598109B00932300FFF7E2FB030018000CB010BD66 +:4018400080BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B0FD021E0069C079A089909980E9B02930D9B01930C9B00932300FFF743FF030092 +:4018800013E0069C079A089909980E9B04930D9B03930C9B029300230193002300932300FFF74CFE030000E0014B18000AB010BD00BFFFFF10B5E04CA54405900491039202 +:4018C0000293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA74321360FFAB74331B680F2B06D9FFAB74331A688023DB009A4201D9D04BD9E1059BA82213 +:401900009B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1FFAB70331B681800FBF7EEFF0300FFAA6C321360FFAB6C331B6801335A00FFABD5 +:4019400074331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF739FA03000BE0FFABA0331C68039A049905981AAB00932300FFF740FB0300FFAA8B +:4019800088321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB00221800FBF792FD0300FFAA88321360FFAB88331B68002B04D007AB1800FBF7ED +:4019C00053FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B68D31A5A1EFFAB6C33196807AB009313002200FFF71FFD0300FFAA88321360FFABD0 +:401A000088331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B68D31A591E1AAA0132FFAB6C331C6807AB00932300FFF7FEFC0300FFAA88321360A8 +:401A4000FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAA98321268FFA994310968FFA870300068FBF7BCFD0300FFAA88321360FFAB8833E5 +:401A80001B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CFFA97C310A601978FFAB7B33FFAA7B3212780A431A70FFAB7C331A68FFAB6C335C +:401AC0001B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB84331B68D3181A78FFAB7C331B68591CFFA87C3001601B785340DBB25AB2FFAB7B3343 +:401B00001B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB84331A68FFAB6C331B689A42D3D30023FFAA80321360FFAB7A3300221A700023FFAAE6 +:401B4000843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A3212780A431A70FFAB7A331B785B42DAB2FFAB7A331B781343DBB2DB09DBB201225340E1 +:401B8000DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360FFAB6C331B685B00FFAA74321268D31A9A1EFFAB84331B689A42C4D8FFAB7C33E9 +:401BC0001A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7801225340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB7B331B78B4 +:401C0000002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B689A1AFFABA8331B689A420FD9064BFFAA883213602DE0C04678FBFFFF80BFFFFF71 +:401C4000A0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1AFFAB9C331B681A60FFAB9C331B681A68FFAB7C331968FFABA4331B68180017F034 +:401C800093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F90AAB40211800FEF701F9FFAB88331B6818009123DB009D4410BDC04610B5D44C2D +:401CC000A54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D1059BA4229B58002B01D0CA4B8BE1059B5B68FFAA1C321360FFAB1C331B680F2B66 +:401D000006D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40331968059B1800FFF755F803000BE0FFAB40331C68039A0499059806AB00932300F9 +:401D4000FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA24321360FFAB233300221A70FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233221 +:401D800012780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213603DE028 +:401DC000FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B785B42DBB21343DBB2DB09DBB201225340D9B2FFAB2233FFAA223212780A431A70BF +:401E0000FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A00FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C33C0 +:401E40001B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A7036 +:401E800066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAA283213602AE0FFAB24331A68FFAB2833E2 +:401EC0001B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB22331A70FFAB22331B785A425341DBB21A00FFAB2C331B689B18FFAA2C321360FFAB6C +:401F000028331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A60D1 +:401F40001978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB25AB2FFAB23331B785BB213435AB2FFAB23331A70FFAB23331B78002B04D0264B04 +:401F8000FFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB48331B689A4204D91D4BFFAA3032136020E0FFAB24331A6806ABD31A1A00FFAB1C33A9 +:401FC0001B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B68180016F0E1FF0023FFAA3032136000E0C0468023DA0006AB11001800FDF756FF2B +:40200000FFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFF10B58AB00990089107920693099BA4229B58002B02D0012B11D025E0069C079A37 +:40204000089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069C079A089909980F9B05930E9B04930D9B03930C9B029300230193002300932300D9 +:40208000FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B00590049103920293279B1E9300232093029B012B06D1059BA4229B58012B01D09C4B33E1049B002B1C +:4020C00001D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F903001C931C9B002B01D1904B1BE11C9B1800FBF70AFC03002593059BA8229B58DBB2FA +:402100001800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B931B9B023B1A931B9A1A9BD3189A1C1D9B9A4201D97D4BF5E01B9A1B9BD3189A1CDB +:402140001D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F0B5FF219A09A90398049B984703001F931F9B002B04D01F9B6D4A94466344D1E055 +:40218000059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3181E931E9B5A1C1E9201221A70219A09A91E9B180016F0F8FE1E9A219BD3181E93AE +:4021C00006AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E006AB1800FBF7AEF903001F931F9B002B6FD11E9906AB08221800FBF7BDF903008F +:402200001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A09A906AB1800FBF7A7F903001F931F9B002B54D11E9A06AB11001800FBF7BAF966 +:4022400003001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9BD21A209BD31A591E1B9C1E9A06AB00932300FFF7DFF803001F931F9B002B32D1B3 +:40228000059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2111410A0052B213405BB2DAB2279B1A701E9A1B9BD3181E931E9B5A1C1E92BC22D7 +:4022C0001A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800FBF7BCF81F9B002B01D01F9B14E0029B002B07D15F +:40230000279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF76DFE0300180022B010BDC04680BFFFFF80BBFFFF00B58BB00291019200930F239F +:402340006B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D00F236B441B781800FBF74AF803000793079B002B01D16C4BD3E006AA05A90F236A +:402380006B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069A029BD31808337F2B0ED8029B0A331A00029B9A4208D3069A029BD3180A331A00FD +:4023C000029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0069A029BD318099AD31A0A3B099309E0099A029B9A4201D24B4B92E0099A029B79 +:40240000D31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089B5A1C089201221A70099A089BFF21180016F04CFE089A099BD3180893089B5A1C76 +:40244000089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0089B5A1C089230221A70089B5A1C0892069AD1B2029AD2B28A18D2B20832D2B239 +:402480001A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1C089206221A70089B5A1C0892069AD2B21A700599069A089B180016F075FD069B10 +:4024C000089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089204221A70089B5A1C0892029AD2B21A70029A0199089B180016F056FD089A029BA8 +:40250000D31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E0002318000BB000BD80BFFFFF10B58AB00590049103920293002308930023079387 +:40254000029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB18780F9B00932300FFF7E5FE03000993099B002B01D0099B63E0029B002B07D10F9AE8 +:402580000F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B002B02D110235B424AE0059B5B681900012015F03BFE03000793079B002B06D12C +:4025C000089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD03000993099B002B1ED1079A0899059B1800FEF7EFFB03000993099B002B15D11E +:40260000059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9B180016F0C1FC02E0C04600E0C046089B180016F07FF9079B180016F07BF9099BF4 +:4026400018000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B0193CA +:402680000AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF7F2FC030000E0014B180008B010BD00BFFFFF46 +:4026C00010B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BFBE1059B5B68FFAA8C321360FFAB8C331B680F2B06D9FFAB8C331A688023DB0046 +:402700009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB03000BE0FFABB0331C68039A0499059807AB00932300FEF762FC0300FFAA9032136047 +:40274000FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B68013B9C4AFFA994318C466244D35CBC2B01D0994BB1E1FFAB9C331B78002B1AD0DE +:40278000FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B9BE1FFAB84331B681800FBF7ADF80300FFAAA0321360FFABA8331B781800FAF71E +:4027C0001FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B681800FBF792F80300FFAA80321360FFAB2C3308220021180016F069FC059B08331800C9 +:40280000EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C331A6813005B079B1ADB001A00FFAB7C331B68D318083319410B1E01D0644B4CE111 +:40284000FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B68013BFFAA8C321360FFAB80331B689A1CFFAB8C331B689A4201D9554B2DE1FFAB9E +:402880008C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB20331800FAF7D5FDFFAB84331968FFAB203300221800FAF70AFE0300FFAA9032136075 +:4028C000FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB80331C68FFAB78331A68FFAB88331868FFAB203300932300FEF79DFD0300FFAA9032A0 +:402900001360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C321268D100FFAA7C3212688A1AFF2111410A0052B213405BB2DAB2264BFFA994310A +:402940008C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB88331B689A4205D9FFAB88331B681B78002BE9D0FFAB88331B685A1CFFA988316C +:402980000A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31AFFAA74321360FFABAC331B68013315D0FFABAC331B68FFAA743212689A420DD042 +:4029C000054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20331800FAF7AFFD0300FFAA90321360FFAB90331B68002B5FD1FFA92C31FFAB20337C +:402A000008221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A68FFABA4331968FFAB20331800FAF7A4FD0300FFAA90321360FFAB90331B68002BED +:402A40003ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA90321360FFAB90331B68002B2CD1FFAA3432FFAB203311001800FAF79DFD0300FFAA9032D4 +:402A80001360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F05DFA031E11D00F4BFFAA903213600CE0C0460AE0C04608E0C04606E0C04604E087 +:402AC000C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB009D4410BD80BCFFFF10B58CB00990089107920693099BA8229B58002B04D0099B4D +:402B0000A8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B059301235B4204932F236B441B780393109B02930F9B01930EAB1B7800932300FFF7C0FD1E +:402B4000030018000CB010BD10B58AB0059004910392029300230993059B5B6807930023069300230893029B012B06D1059BA4229B58002B01D0384B6BE0079B1900012089 +:402B800015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B03D110235B42099338E0079C0E9A0D990CAB1878089B00932300FFF7BBFB030056 +:402BC0000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C039A04990598069B00932300FEF706FA03000993099B002B0FD1079A0899069BFE +:402C00001800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B09D0079A069B11001800FDF73FF9069B180015F07FFE089B002B09D0079A089B66 +:402C400011001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059A21 +:402C8000069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF714FFAC +:402CC000030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB019B98331800ECF75FFB019B68331800ECF75AFB019B20331800ECF755FB019B04 +:402D000038331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08331800ECF741FB019B80331800ECF73CFB019B74331800ECF737FB019B5C33180045 +:402D4000ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000010B59EB0059004910392029300231D9306AAB44B1000190036231A0016F014F9C2 +:402D800036231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D004235B424AE1059B00211800EDF7B0FA031E1DDD039B01211800EDF7A9FA031E62 +:402DC00016DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DD059A049B11001800EDF7FAF9031E02DB04235B4222E114AB1800ECF7C3FA17ABF8 +:402E00001800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A917AB01221800EDF7C6FC03001D931D9B002B00D0E8E017AB1800ECF7A8FD0200FA +:402E40006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB11001800EDF7A0F803001D931D9B002B00D0CBE072236B4400221A80059B9B6869 +:402E80001B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C1A0014AB11001800ECF7C6FC059A14A9029B1800EFF796FD03001D931D9B002B72 +:402EC00000D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B00932300EFF775F803001D931D9B002B00D090E01CAB01221A805EE014AB0121180024 +:402F0000EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE0059A14A9029B1800EFF75CFD03001D931D9B002B00D071E0029B01211800EDF715 +:402F4000E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A20980021EEF733FC03001D935EE014A914AB01221800EDF71FFC03001D931D9B002B62 +:402F80004ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800EEF7FAFE03001D931D9B002B3CD11CAB1CAA128801321A801CAA6A236B441288CC +:402FC0001B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B4472226A44128801321A8072236B441A881B9B9A4200D24EE700E0C04604235B4288 +:403000001D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB011 +:4030400010BDC0466C54041000B58DB0039002910192009300230B93009B002B06D0009B00211800EDF754F9031E02D004235B4271E0039B01211800EDF74AF9031E0DDDF7 +:40308000029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4259E008AB1800ECF76DF905AB1800ECF769F9039908AB01221800EDF77CFB03002D +:4030C0000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AA08A9009B1800EFF77DFC03000B930B9B002B22D105AA08A908AB1800EEF74CFAEB +:4031000003000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D108AA0199009B1800EFF780FD03000B9308E0C04606E0C04604E0C04602E0C046D8 +:4031400000E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB0039002910192009300230B9308AB1800ECF708F905AB1800ECF704F9009B002B72 +:4031800033D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B002B00D08CE0019A009905AB1800EDF791FA03000B930B9B002B00D082E008AAB4 +:4031C00005A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F8031E02D04E4B0B937BE00E9B002B30D0029B002B02D1494B0B9372E0029908ABD3 +:4032000001221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA03000B930B9B002B53D108AA05A905AB1800EEF7B2FD03000B930B9B002B4AD105AB2D +:4032400000211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B002B02D12D4B0B933BE0029A0F9908AB1800EEF791F903000B930B9B002B2BD162 +:4032800008A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF77BFD03000B930B9B002B19D108AB00211800EDF72DF8031E13D0194B0B9310E0DA +:4032C000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460B9B002B0CD00B9B0D4A934208D00B9B0A4A934204D00B9B094A94466344EC +:403300000B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFF00BEFFFF00B58DB0039002910192009300230B9308AB1800ECF724F805AB180044 +:40334000ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF71BF903000B930B9B002B00D0C8E0039B01211800ECF7CCFF031E07DD039A08AB6B +:4033800011001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B002B20D0009B01211800ECF7B1FF031E16DD0E9B01211800ECF7AAFF031E0FDDAE +:4033C000039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DB5C4B0B939DE0029B002B00D199E0019B002B00D195E0009B002B00D191E00E9B9B +:40340000002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E02DC4C4B0B937CE00E9A009908AB1800EEF7B2F803000B930B9B002B62D108A934 +:4034400008AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF903000B930B9B002B50D105AA08A908AB1800EEF791FC03000B930B9B002B47D167 +:4034800008AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF803000B930B9B002B34D108A908AB01221800EDF780F903000B930B9B002B2BD182 +:4034C000019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF75BFC03000B930B9B002B19D108AB00211800ECF70DFF031E13D0164B0B9310E0FF +:40350000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800EBF73FFF05AB1800EBF73BFF0B9B002B08D00B9B064A934204D006 +:403540000B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291019200930023079304AB1800EBF70AFF009B002B15D0039904AB01221800EDF780 +:403580001AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B26D10A9B002B15D0029904AB01221800EDF701F903000793079B002B1AD104AA36 +:4035C00001990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B1800EFF723FB0300079306E0C04604E0C04602E0C04600E0C04604AB1800EBF7CD +:40360000D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B000BD00B583B00190019B002B05D0019B6C211800FCF73AFC00E0C04603B000BD08 +:4036400000B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD000082B001900091019B00221A60019B00225A60009B002B18D1019B1B4A9A60019BCF +:403680001A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A1A62019B174A5A6217E0019B164A9A60019B164ADA60019B154A1A61019B154A3D +:4036C0005A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A660023180002B0704767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BD6 +:40370000ABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964A44FFABE70B5CEB00190009100234D930EE0019B4D9A02329200D15806 +:403740001F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E04D9B9B00009AD3181B781A064D9B9B0001330099CB181B781B041A434D9B9B0066 +:4037800002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA944663444D9A9200D1504D9B01334D934D9B0F2BD4D900234D9300F09EFCC046AB +:4037C000D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C34120 +:403800004B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D218E34BC3 +:403840004EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D84B4EA98C4663441B680D21CB415A40D44B4EA98C4663441B681621CB415A402E +:40388000D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA8844663449868C84B4EACA44663441C68C64B4EADAC4663445B68234303400B43D3184B93C14B8D +:4038C0004EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA98C466344DA61B74B4EAA944663449A69B44B4EA98C466344DB680621CB411900A9 +:40390000B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B40D218A84B4EA98C4663445969A54B4EA884466344D868A34B4EACA44663441C690D +:40394000A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9B591C9A4B4EA8844663448900CB58D3184C93944B4EAA94466344DB690222D341DC +:403980001A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB415A40884B4EA98C466344D969854B4EA8844663441B681940824B4EA88446634456 +:4039C0005868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93784B4EAA944663449A684C9BD218754B4EA98C4663449A604C9A4B9BD218714B22 +:403A00004EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB411900684B4EA8844663449B680B20C3415940644B4EA8844663449B681920C34175 +:403A40004B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA4466344DC68584B4EADAC4663441B69634003404B40D2184D9B991C534B8900CB58D218CB +:403A80004D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B690222D3411A00474B4EA98C4663449B690D21CB415A40434B4EA98C4663449B69162178 +:403AC000CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA8844663441868374B4EACA44663449C69354B4EADAC466344DB69234303400B43D318E0 +:403B00004B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218284B4EA98C4663445A61264B4EAA944663441A69234B4EA98C4663445B680621F6 +:403B4000CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920C3414B40D218174B4EA98C466344D968144B4EA8844663445868124B4EACA446A8 +:403B800063449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB58D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B696C +:403BC00006E0C046D4FEFFFFA4540410F4FEFFFF0222D3411A00FE4B4EA98C4663445B690D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C4663445969A1 +:403C0000F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C69EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9B75 +:403C4000D218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA94466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B6826 +:403C80000B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663449968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B68F3 +:403CC000634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA8844663448900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C466344E1 +:403D00001B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C4663441969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA446634424 +:403D40001C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA694C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944B92 +:403D80004EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA884466344DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C4697 +:403DC00063445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663445B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA88446FA +:403E000063448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C466344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C469F +:403E40006344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA4466344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663448A +:403E80009A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A604B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA88446F8 +:403EC00063449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA98C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4682 +:403F000063441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA8844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA9B2 +:403F40008C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA98C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EAC53 +:403F8000A44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA944663445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C4663441E +:403FC0005A60034B4EAA944663441A6806E0C046D4FEFFFFA4540410F4FEFFFF4B4B4EA98C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA8E7 +:40400000844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634458693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9BFC +:40404000D91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4B4EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234B14 +:404080004EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA8844663449B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC4663447C +:4040C0009B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4663441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D8A3 +:40410000FFF762FB10234D9300F08CFFD4FEFFFFA4540410F4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C341E9 +:404140005940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B6963400340C8 +:404180004B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB581121CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B2E +:4041C0004EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B2D +:404200004EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA9B5 +:404240008C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA98B +:404280008C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B6819409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B6861 +:4042C000234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C466344DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA9C6 +:404300008C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA884466344DB681920C3414B40D218794B4EA98C4663445969764B4EA884466344F5 +:40434000D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9B591C6D4B8900CB58D2184D9B01334D99481E6A494EACA446614480004158112026 +:40438000C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F494EADAC466144A4006158890A48404D998C1F5A494EADAC466144A40061584018A9 +:4043C0004D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F494EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD00C2 +:404400006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93364B4EAA94466344CB +:40444000DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B4A +:404480004EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B68234303400B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9AF2 +:4044C0004B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C4663449B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA88446634434 +:404500009B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFFA4540410F4FEFFFF63441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC46634431 +:404540001B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA8844661444D98800041581120C1410800EE494EACA44661444D9CA40061581324E14193 +:404580004840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D9906 +:4045C0000D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAEB4466144AD006958C908614040184D990E390C00CC494EADAC466144A4006158ED +:404600004418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B4EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84BC3 +:404640004EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA884466344DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC46634489 +:40468000DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C4663445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B58 +:4046C0004EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B4EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA8844698 +:4047000063445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D2184D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA446614480004158A5 +:404740001120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C71494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A400615859 +:4047800040184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB446614423 +:4047C000AD006958C908614040184D990D390C0055494EADAC466144A4006158441852494EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA9446B9 +:4048000063445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4663445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B69194083 +:40484000374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B69234303400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A60C6 +:404880004C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4663441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA88446D4 +:4048C00063441B681920C3414B40D218144B4EA98C4663449968124B4EA88446634418680F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191DB7 +:40490000084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C046D4FEFFFFA4540410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A400F7 +:4049400061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1EF3494EADAC466144A400615840184D990B390C00EE494EADAC466144A400615815 +:404980000724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D990B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EADB4 +:4049C000AC466144A40061584418D9494EA88446614498004450D6494EA8844661449B005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B699D +:404A00000D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C4663441969C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C6996 +:404A4000BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BD218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAA93 +:404A8000944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB690B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634474 +:404AC00059689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B68634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EAC55 +:404B0000A4466144800041581120C14108004D99CC1C87494EADAC466144A40061581324E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EAD32 +:404B4000AC466144A400615840184D990A390C0077494EADAC466144A40061580724E1410C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D0090 +:404B80006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC466144A4006158441862494EA884466144980044505F494EA8844661449B005B58D318BD +:404BC0004C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB415A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA8EE +:404C0000844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EADAC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B3F +:404C40004EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA944663445A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C34115 +:404C800059402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B4EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B6863400340E7 +:404CC0004B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA4466144800041581120C14108004D990C1D10494EADAC466144A40061581324E141484006 +:404D00004D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFFA4540410CB494EAD27 +:404D4000AC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD0069581225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D99B7 +:404D80000A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3494EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4B8E +:404DC0004EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B4EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4B22 +:404E00004EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C461E +:404E400063445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B4EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D21844 +:404E80007B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B4EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B0733FB +:404EC0004D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC466144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A48400C +:404F00005A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C40CC +:404F40004D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661448A +:404F80009B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663445B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C466344CC +:404FC00059682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663445C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A69B4 +:405000004C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B08334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4BFC +:405040004EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B072BE7D9002318004EB070BDF4FEFFFFD4FEFFFFA454041000B589B003900291BF +:405080000192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039B1A68019BD218039B1A60039B1A68039B1A60039B1A68019B9A4204D2039B5B6898 +:4050C0005A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A0299180013F060FF039B28331A00039B11001800FEF718FB03000593059B002B4D +:4051000001D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039B11001800FEF700FB03000593059B002B01D0059B16E0029B40330293019B403BEB +:405140000193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F023FF0023180009B000BD00B587B001900091019B1B683F2213400593059B5A1CE1 +:405180000592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059B3822D31A1A00002113F090FF21E0019B28331A00059BD018059B4022D31A1A0013 +:4051C000002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D0049B43E1019B283338220021180013F06DFF019B1B685A0F019B5B68DB00134392 +:405200000393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61229954039B1B0AD9B2019B62229954039BD9B2019B63229954029B1B0ED9B2019B11 +:4052400064229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B2019B67229954019B28331A00019B11001800FEF759FA03000493049B002B01D071 +:40528000049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009B9A1C019B9B681B0ADBB21370009BDA1C019B9B68DBB21370009B1A1D019BDB6806 +:4052C0001B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB21370009BDA1D019BDB68DBB21370009B08331A00019B1B691B0EDBB21370009B82 +:4053000009331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B0B331A00019B1B69DBB21370009B0C331A00019B5B691B0EDBB21370009B0D33EE +:405340001A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F331A00019B5B69DBB21370009B10331A00019B9B691B0EDBB21370009B11331A00C0 +:40538000019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A00019B9B69DBB21370009B14331A00019BDB691B0EDBB21370009B15331A00019BEE +:4053C000DB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BDB69DBB21370009B18331A00019B1B6A1B0EDBB21370009B19331A00019B1B6AB4 +:405400001B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6ADBB21370019B9B6E002B1ED1009B1C331A00019B5B6A1B0EDBB21370009B1D3361 +:405440001A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F331A00019B5B6ADBB213700023180007B000BD00B5A1B0039002910192009304ABB6 +:405480001800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039904AB1800FFF7E8FD03001F931F9B002B0AD1019A04AB11001800FFF756FE030052 +:4054C0001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190019BD8220021180013F0F0FDC04603B000BD00B583B00190019B002B05D0019B11 +:40550000D8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B10001900D8231A0013F040FDC04603B000BD000010B582B001900091019A002300241360A3 +:405540005460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B2B4C9361D461019A2A4B2B4C13625462019A2A4B2A4C9362D462019A294B2A4C64 +:4055800013635463019A294B294C9363D463019A284B294C13645464019A284B284C9364D46427E0019A274B274C13615461019A264B274C9361D461019A264B264C13625F +:4055C0005462019A254B264C9362D462019A254B254C13635463019A244B254C9363D463019A244B244C13645464019A234B244C9364D464019BD021009A5A50002318009F +:4056000002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E1349 +:4056400019CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE7D +:405680001D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A441360F9E0824B6B441B68DB001A00A723DB006B441B689B181B78069300230793069B6F +:4056C0001B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A9300230B930A9B1B040D9300230C930898099904000C9A0D9B15002C430E94194332 +:405700000F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109B1B021393002312930E980F990400129A139B15002C431494194315915B4B6B4465 +:405740001B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B00199300231893149815990400189A199B15002C431A9419431B914D4B6B441B68DB001A1D22 +:40578000A723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B061E931A981B9904001E9A1F9B15002C432094194321913D4B6B441B68DB005A1DF5 +:4057C000A723DB006B441B689B181B782293002323932299239A0B001B0C100007041F430B001E04209A219B1100314324913B4325932E4B6B441B68DB009A1DA723DB00E2 +:405800006B441B689B181B782693002327932699279A0B001B0E1000000201900198184301900B001B020093249A259B1100009C019D2000014328912A00134329931B4B3B +:405840006B441B68DB00DA1DA723DB006B441B689B181B782A9300232B932898299904002A9A2B9B15002C432C9419432D91104B104A6A44D2180D4B6B441B68DB00D3185E +:405880002C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DCFFE6E5E0E4F7FFFF3C0500001408000028FDFFFF18080000EB4B6B441B68991E25 +:4058C000EA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F92E14B6B441B68991EE04BE14A6A44D218CB00D3185C681B68590FE2001143319182 +:40590000620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24B6B441B68991ED14BD14A6A44D218CB00D3185C681B68A206990902910299114325 +:405940000291A30903933299339A0800029B039C1D006840349023005A403592C24B6B441B68D91FC14BC24A6A44D218CB00D3185C681B68349D359EED186641BA4B6B4481 +:405980001B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0763081A433792B04B6B441B680F3B1900AE4BAF4A6A44D218CB00D3185C681B6877 +:4059C00021061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A9023005A403B92A04B6B441B680F3B19009E4B9F4A6A44D218CB00D3185C681B6868 +:405A00006206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C9023005A403D923C993D9A491972418E4B6B441B68103B1C008C4B8D486844C018FB +:405A4000E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C31819605A60814B6B441B6801337F4A6A4413607D4B6B441B684F2B00DC1DE77D4B6B44A6 +:405A80001B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605460744B6B441B685C6A1B6AFF22D2006A44136054606F4B6B441B68DC6A9B6A7B +:405AC000FE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654B6B441B68DC6B9B6BFC22D2006A4413605460604B6B441B685C6C1B6CFB22D200D6 +:405B00006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A441360564B6B441B689A04FD23DB006B441B689B0B1A433E92FD23DB006B441B6828 +:405B40009A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C1A434092FD23DB006B441B689A03434B6B441B689B0C1A4341923E993F9A080067 +:405B8000409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B68DB051A434592354B6B441B685A0AFD23DB006B441B68DB051A4344924299439A9C +:405BC0000800449B459C1D006840469023005A404792FA23DB006B445C681B6846984799C0186141FC23DB006B441A68FB23DB006B441B685A404892214B6B441A68214BB3 +:405C00006B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A682B0013404B93FB23DB006B441B684A9C4B9D22005A404C92124B6B441B682A0038 +:405C40005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68C918624112E0C0461408000028FDFFFF180800003C05000008080000EC070000ED +:405C8000E4070000DC070000A8550410EF4BF0486844C018EF4B6B441B68DB00C3185C681B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0FCC +:405CC0001A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A08DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A435092B8 +:405D00004E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B6B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A435492529948 +:405D4000539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B441B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B01ED +:405D80006B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A685A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9C11 +:405DC0001D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A4413605460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A449C +:405E000013605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D2006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB00C8 +:405E40006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A436192814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A03AC +:405E8000794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A406592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0A8F +:405EC000FE23DB006B441B68DB051A4366926499659A0800669B679C1D006840689023005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC230C +:405F0000DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B685B +:405F40006C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354BF3 +:405F80006B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B681A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B6875 +:405FC0001B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B441B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D00684032 +:40600000749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B6B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D0063 +:406040006840789023005A4018E0C04628FDFFFF18080000140800000C0800000808000004080000FC070000F4070000EC070000E4070000A8550410D40700007992FA2336 +:40608000DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B93FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A43CA +:4060C0007D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F937A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B18EA +:406100005441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B685B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C680B +:406140001B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4B6B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B51 +:406180006B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A438492FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859CF4 +:4061C0001D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A4389929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B7B +:40620000899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B68B7 +:406240005A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B0013408F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A40919277 +:40628000909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C91862416F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A44E8 +:4062C00013605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B441B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B682D +:406300009B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939A0800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B448D +:406340001B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB002C +:406380006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A68FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B4478 +:4063C0001A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09BA19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A4418 +:406400001360546080231B016B4419685A68F923DB006B445C681B685B185441802212016A4413605460F923DB006B4419685A68F823DB006B445C681B6817E00808000029 +:40644000D40700000C0800000408000014080000FC070000F4070000EC070000A855041028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B68A4 +:406480000133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A49280231B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B013B +:4064C0006B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A792A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0ABB +:40650000CE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A43AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C68FD +:406540001B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B6B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093DC +:40658000AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B6B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB007E +:4065C000C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B685B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F3A +:406600001A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B441B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B68A3 +:406640009B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B44E3 +:406680001B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B681340C3 +:4066C000BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B441B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B0078 +:406700001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC499C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C6862 +:406740001B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B86 +:406780006B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B689B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B68AC +:4067C0009A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA9023005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0AFF +:40680000174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A40CF92FE23DB006B445C681B68CE98CF99C0186141802317E014080000040800004C +:40684000FC070000F4070000A855041028FDFFFF18080000E4070000DC070000D4070000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A6816 +:40688000EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A682B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A0052 +:4068C0005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B68C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F9227B +:40690000D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64BC9 +:406940006B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D892D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA09CA +:40698000B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A68A0 +:4069C000FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E3927B +:406A0000FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E099E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B18544195 +:406A4000F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B185441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68DE +:406A80005B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B441B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B44B1 +:406AC0001B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D0013 +:406B00006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF92504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9C99 +:406B40001D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384B6B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392D2 +:406B8000FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F59380231B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C75 +:406BC0001B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D486844C018194B6B441B68DB00C3185C681B685B185441F922D2006A441360546068 +:406C0000194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC070000A3 +:406C4000080800000C080000A85504101408000028FDFFFF18080000EC070000E4070000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A08E0 +:406C8000FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC9023005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B680B +:406CC000DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFAD0435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340D2 +:406D0000FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B441A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A43BF +:406D4000FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C6897 +:406D80001B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA2432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F92312 +:406DC000DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B6801330E +:406E0000904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A60FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B68A4 +:406E40009A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B68BD +:406E80001D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4B6B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB0570 +:406EC0001A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD4C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168E3 +:406F0000C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A684C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D682300FB +:406F40001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA5C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A6055 +:406F8000FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B68C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F92277 +:406FC000D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C331A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB0084 +:407000006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC070000BA +:40704000E407000014080000DC07000008080000D40700000C080000A855041028FDFFFF18080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C35286043 +:4070800023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB88331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB60 +:4070C0007C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB90331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B442E +:407100001A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B681A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB00B4 +:407140006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC35B0 +:40718000286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B185441F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B1841 +:4071C0005441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B44E3 +:407200001B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A04924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B6834 +:407240009B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFABC0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286063 +:4072800023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFABD0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFAB84 +:4072C000C43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFABD8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A6847 +:40730000FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFABE0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B71 +:407340006B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE4321468556822005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B682C +:407380001B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B39486844C018304B6B441B68DB00C3185C681B685B185441F922D2006A44136054601D +:4073C000314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B441B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B7A +:407400006B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B071A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A02541 +:40744000ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F4070000EC07000014080000E407000008080000DC070000D4070000A8550410FE +:4074800028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B6B441A60A54B6B441B68DA0980231B016B441B685B061A43A123DB006B441A60F8 +:4074C000A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D44286023005A40974B6B441A6080231B016B441A68FF23DB006B441B681340A322AE +:40750000D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B441A68FF23DB006B441B681A43A423DB006B441A60814B6B441A68834B6B441B68B5 +:407540001A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A522D2006A4413607B4B6B441A680B001340794A6A441360A323DB006B4419685A681C +:407580000800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B441A60A223DB006B445C681B68A622D2006A44116852685B185441F822D2006A449B +:4075C00013605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441584A3D +:407600006A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF780FA514B6B441B6819695A694C4B6B445C681B685B1854414B4A6A44126813613E +:407640005461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412689361D461404B6B441B68196A5A6AFF23DB006B445C681B685B1854413A4A6A447E +:40768000126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324A6A4412689362D4622F4B6B441B68196B5A6BFD23DB006B445C681B685B18544172 +:4076C000294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B185441214A6A4412689363D4631E4B6B441B68196C5A6CFB23DB006B445C681B6848 +:407700005B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C681B685B185441104A6A4412689364D464002318000D4B9D44F0BDC04604080000D0 +:407740000C05000014050000FC0700001C05000024050000F40700002C0500003405000008080000140800003C0500001C08000070B58AB0059004910392039B002B01D1E3 +:4077800000237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B68039A0092002201920099019A5B185441059A13605460059B5C681B68039A150083 +:4077C00000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A9360D460099B002B3AD0039A089B9A4236D3059B50331A00099BD318089A04991800D8 +:4078000011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079B2EE0049A089BD3180493039A089BD31A03930023099312E0049A059B11001800C0 +:40784000FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B7F2BE9D8039B002B09D0059B50331A00099BD318039A0499180011F095FB0023CD +:4078800018000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959395994B1C95938F9B50225B189A1880231370959B702B0CD88F9B50331A00959B99 +:4078C000D018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80239B1A1A00002111F0F1FB8F9B50331A008F9B11001800FDF7C5FE03009493949B3A +:40790000002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F3C9300233D938F9BDC689B685A0FE6001643DD003C993D9A0B002B4392931300D3 +:40794000334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F936B46F8229B181B788F99C0228B54939B1B0C4093002341936B460133FF331B7862 +:407980008F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54939B1B004493002345936B46882252009B181B788F99C3228B54939B1A02929B71 +:4079C0001B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929B1B0C0293029B13430293939B1B0C03936B461B7A8F99C5228B54939B1A06929BD4 +:407A00001B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB28F99C7228B54919B1B0E4693002347936B468C2252009B181B788F99C8228B54F0 +:407A4000919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9300234B936B46942252009B181B788F99CA228B54919B1B004C9300234D936B46F1 +:407A8000982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B1B0E07936B461B7E8F99CC228B54919B1A04909B1B0C0893089B13430893919B96 +:407AC0001B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B13430A93919B1B0A0B936B4628229B181B788F99CE228B54909B919CDBB28F99CF229E +:407B00008B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F009FCC046A8FDFFFF8F9B5C691B69230E4E9300234F936B469C2252009B181B78EB +:407B40008E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B7813708E9B9A1C8F9B5C691B69230A5293002353936B46A42149005B181B78137036 +:407B80008E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B191D8F9B5C691B692202180E0C900C9810430C90230E0D936B4630229B181B786D +:407BC0000B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B4638229B181B780B708E9B991D8F9B5C691B692206180A1090109810431090230A119334 +:407C00006B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9BDC699B69230E5693002357936B46AC2149005B181B7813708E9B09331A008F9BBC +:407C4000DC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BDC699B69230A5A9300235B936B46B42149005B181B7813708E9B0B331A008F9B1D +:407C8000DC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9BDC699B692202180E1290129810431290230E13936B4648229B181B780B708E9B9F +:407CC0000D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B181B780B708E9B0E3319008F9BDC699B692206180A1690169810431690230A179308 +:407D00006B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A008F9B5C6A1B6A230E5E9300235F936B46BC2149005B181B7813708E9B11331A0036 +:407D40008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A008F9B5C6A1B6A230A6293002363936B46C42149005B181B7813708E9B13331A00C8 +:407D80008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B143319008F9B5C6A1B6A2202180E1890189810431890230E19936B4660229B181B780B7041 +:407DC0008E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668229B181B780B708E9B163319008F9B5C6A1B6A2206180A1C901C9810431C90230A32 +:407E00001D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B18331A008F9BDC6A9B6A230E6693002367936B46CC2149005B181B7813708E9B19334D +:407E40001A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331A008F9BDC6A9B6A230A6A9300236B936B46D42149005B181B7813708E9B1B3377 +:407E80001A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C3319008F9BDC6A9B6A2202180E1E901E9810431E90230E1F936B4678229B181B7849 +:407EC0000B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B4680229B181B780B708E9B1E3319008F9BDC6A9B6A2206180A229022981043229091 +:407F0000230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B20331A008F9B5C6B1B6B230E6E9300236F936B46DC2149005B181B7813708E9B1B +:407F400021331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9B22331A008F9B5C6B1B6B230A7293002373936B46E42149005B181B7813708E9B24 +:407F800023331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B243319008F9B5C6B1B6B2202180E2490249810432490230E25936B4690229B1829 +:407FC0001B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C27936B4698229B181B780B708E9B263319008F9B5C6B1B6B2206180A2890289810435F +:408000002890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708E9B28331A008F9BDC6B9B6B230E7693002377936B46EC2149005B181B7813703B +:408040008E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B7813708E9B2A331A008F9BDC6B9B6B230A7A9300237B936B46F42149005B181B781370D3 +:408080008E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B7813708E9B2C3319008F9BDC6B9B6B2202180E2A902A9810432A90230E2B936B46A82252 +:4080C0009B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230C2D936B46B0229B181B780B708E9B2E3319008F9BDC6B9B6B2206180A2E902E98B2 +:4081000010432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB213708F9AD023D358002B00D001E18E9B30331A008F9B5C6C1B6C230E7E9300231F +:408140007F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002381936B46802189005B181B7813708E9B32331A008F9B5C6C1B6C230A82930023CA +:4081800083936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C23008493002385936B46842189005B181B7813708E9B343319008F9B5C6C1B6C2202180E309018 +:4081C000309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C2204180C3290329810433290230C33936B46C8229B181B780B708E9B3633190051 +:408200008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B708E9B37331A008F9B5C6C1B6CDBB213708E9B38331A008F9BDC6C9B6C230E8693D4 +:40824000002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893002389936B46882189005B181B7813708E9B3A331A008F9BDC6C9B6C230A8A93C7 +:4082800000238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C9300238D936B468C2189005B181B7813708E9B3C331A008F9BDC6C9B6C2102180E7C +:4082C0003690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6C9B6C2104180C3890389808433890230C39936B46E0215B181B7813708E9B3E33BB +:408300001A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B7813708E9B3F331A008F9BDC6C9B6CDBB213700023180096239B009D4470BDC04691 +:4083400000B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F803003B933B9B002B13D1029A039904AB1800FFF7FDF903003B933B9B002B0AD185 +:40838000019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F83B9B18003DB000BD00B583B00190019B10331800D9F7B0FA019B180003B000BD3B +:4083C00000B583B00190019B10331800D9F770FB019B180003B000BD10B582B00190054C054B9C4204D0503C2000FFF7E9FFF7E702B010BD80700008E06F000830B583B085 +:4084000001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4B180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B41 +:408440001900002006F074F9C04603B030BDC046FFFF0000C06F0008C000000805720010E06F0008D983021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B09B +:408480000290039100920193009A019B0298039914F050FE03000C001A00009B5343180004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A6049 +:4084C000019A002300249360D460019A0023002413615461019A0023002413625462019B282200219954019B0022DA62019B00221A63019B00225A63019B382200219954B3 +:40850000019B180002B010BDB058041000B583B00190074A019B1A60019B180000F08BF8019B1800DDF7DEFD019B180003B000BDB058041000B583B00190019B1800FFF71F +:40854000E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B688F +:408580001800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B681800904703000C00019A13615461019B5B681B6828331A68019B5B6818009047E7 +:4085C00003000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C00019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BEC +:40860000DA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019B180000F091F8019B3822012199540023180004B010BD00B585B00190019B38221F +:408640009B5C01225340DBB2002B01D0002332E0019B34330121180005F078F903000393039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022E1 +:40868000DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B382200219954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B0FE +:4086C0000390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039B99 +:408700005868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A84703000593059B002B01D0059B04E0039B180000F00AF80023180006B070BD285804104F +:40874000605804105FF0FFFF10B582B00190019BDC699B69019A13625462019B282200219954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124B30 +:408780001EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF03000393039B002B01D0039B09E0019B5B681B6810331A68019B5B68180090470300C3 +:4087C000180005B000BDC0465FF0FFFF2858041060580410F0B597B00790069104920593079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6B40 +:40880000002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A0093019413000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA242F2 +:4088400002D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059AA24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079B06 +:4088800058681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B15931C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059A42 +:4088C000A24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B0014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A5B +:408900001B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B685B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A6856 +:40894000DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FB03005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFBC3 +:408980001C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B690D +:4089C000049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B19695A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0054 +:408A000014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C69E0 +:408A40001B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E00EA +:408A800000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D074 +:408AC000139B20E0089B099C1A00159B9B181593089B099C0499059A5B185441049305941C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFF2858041005 +:408B0000705804100023180017B0F0BDF0B5C64600B596B00990089106920793099B38229B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF221800A7 +:408B400004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089B1593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD030075 +:408B80001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D102E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D62C1 +:408BC0005E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D0099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FACD +:408C000003005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D81C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A931F +:408C40000B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BE9 +:408C8000DB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F95D +:408CC000099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC689B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B6818331D +:408D00001F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D0AE +:408D4000119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B18EE +:408D800015930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B0014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFF285804106058041079 +:408DC00070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA03001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059BBA +:408E000038229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D8BF +:408E400001D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BDC046285804108C580410E1 +:408E80005FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB81 +:408EC000059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A2423E +:408F000006D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299039A0A9B0B9C0093019413000A00A8470300180006B070BD285804108C580410A5 +:408F40005FF0FFFF10B582B00190012300241800210002B010BD10B582B00190012300241800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D00023BC +:408F800000240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D000230024A3 +:408FC0000DE0039B5B681B6830331968039B5868009B019C1A002300884703000C001800210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B5A +:4090000009E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF10B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC6997 +:409040009B691800210002B010BD10B582B001900091009B5C681B68019A11685268A24202D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C68FD +:409080001B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000082B00190034A019B1A60019B180002B07047C0462859041000B583B00190019B78 +:4090C0001800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100920193029B039C01214942CA175B18544118002100009A019B14F01CF803000C000A +:4091000019002200012300245B1854411A00009B5343180004B010BD10B584B00290039100920193009A019B0298039914F002F803000C001A00009B5343180004B010BD1E +:4091400070B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B682C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF030001 +:409180000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029B012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F91B7 +:4091C0000C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D00024E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029A20 +:40920000039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE030018930023199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B35 +:409240000F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D910AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE030004930023059301 +:409280000E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9CC4 +:4092C000C91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834BEE +:409300001800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF7B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A79 +:40934000179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002422E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079B8A +:40938000FFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B8E +:4093C00019D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CDC +:40940000D2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D147230CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B00D2 +:4094400014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD04723B7 +:409480000CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E047230CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB186441C0 +:4094C000209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F934A +:4095000018E0C046087B0410F8700008D0700008C00000080964001028710008007100081699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9BA2 +:409540009A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E934189 +:40958000DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074B180005F0C5F8054C10AB1800DDF720FA2300180022B070BD587100083071000843 +:4095C000C00000080964001070B58AB0802212020023069207936A4A002308920993069B079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA03004C +:409600005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DDF737FC0300009300230193009A019B28003100FFF74FFD030008930023099386 +:4096400002AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089809991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB6881 +:409680001B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB681800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB2AA +:4096C0001A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264BB6 +:40970000180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B681800904703000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D9F79AFE92 +:4097400003000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC0461E +:40978000008007100F01FF80087B0410B47000080101FF803C7200085C710008C0000008AD9D0210EC58041000B583B000230193144B1800DDF7C0FB0300180005F02CF95E +:4097C000114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B04D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180053 +:4098000003B000BD80700008B0700008B470000800B583B001900091009B002B0CD0009B18000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002BA9 +:4098400001D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D0002300E00123180003B000BDC0466459041082B00190034A019B1A60019B180002B0F6 +:409880007047C0462859041000B583B00190019B180000F00BF9019B180000F0F7F9019B180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F024 +:4098C000ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B0122DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD61 +:4099000000B587B00390029101920023059300230493039B20331800DDF70EFB0300180005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E00C +:40994000029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF0CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039BEF +:409980009B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B89 +:4099C0005B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B689B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B68D8 +:409A00005B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B681B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B68AC +:409A40005B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B68DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B68B0 +:409A80001B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009B00225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA89 +:409AC0000300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B9A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B3E +:409B000011001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF70BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB00390029166 +:409B40000192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B81 +:409B80002F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A6037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039B04 +:409BC0009A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B013307937F +:409C0000DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD3185A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B0019000913F +:409C4000019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF76BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049BED +:409C80001B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091019B013B0099180013F072F803000133009A5343180003B000BD30B58FB005900A +:409CC00004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A80DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD0000E3 +:409D000000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009A24 +:409D40009A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C2200219954019B00221A67019B742200219952019B00229A67019B8C2200219950019B09 +:409D8000902200219950019B942200219950019B982200219954019B9C2200219950019B180003B000BDC046445B041000B583B001900C4A019B1A60019B180001F0B8FCA8 +:409DC000019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180003B000BD445B041000B583B00190019B1800FFF7DBFF019B180004F05FFD019B2F +:409E0000180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D31804336C +:409E40001A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB0FB +:409E8000079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD31802930023039374 +:409EC000049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA94466344C1 +:409F00000A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B93079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B00AE +:409F400013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C0000231D000094019532003B00884703000993099B002B01D0034B00E0002318000DB03B +:409F8000F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D1800904702000B00069207938022120600230892099308AA06AB11001800FFF746F8030011 +:409FC0001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B6830331968059B986D119B009300230193009A019B884702000B000C920D93059B4D +:40A00000982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D1B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B88477C +:40A0400002000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B9A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD3181193C8 +:40A08000C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059B88215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A70012397 +:40A0C0005B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B441978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68E8 +:40A10000A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039308AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D95B +:40A14000934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9A109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE0300B5 +:40A180001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE0D1 +:40A1C0001C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B139340 +:40A20000069B1293069B159AD31800221A7041E0059B90229B581393604A06AB11001800DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B44 +:40A2400011001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD01C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B11002A +:40A280001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139ABC +:40A2C0001299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A1399159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D077 +:40A30000229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129BD31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129B0D +:40A34000D31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A4202D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E048 +:40A38000C046179B180018B010BDC046836668540201FF800501FF800101FF80385B04100701FF8010B598B00F900D920C933B236B440A1C1A700F9BDB6C1693324B17936F +:40A3C0000D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B00221A601A9B1A680F9B5B6D9A4248D21A9B1B681B01169AD3181593159BDC689B686C +:40A400001A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B2FE00F9B1B6FD9B20C9B1A680D9C0F9811AB0A9313AB099312AB08930023079304 +:40A440000123069300230593002304930023039314AB029300230193002300932300FFF725FE03001793179B074A934207D100E0C0461A9B1B685A1C1A9B1A60B1E7C04636 +:40A48000179B180018B010BD0701FF8010B584B0039002910192039B8C229B5819001820FFF7FAFB0400029B18000FF031F90200019BD018039B8C229B581900FFF7ECFBEC +:40A4C0000300E318180004B010BD0000F0B591B00990089107920693099B079A11001800FFF796F903001A0001235340DBB2002B01D0A84B4AE1169BA74A134001D0A54B57 +:40A5000044E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF803005A425341DBB2002B0ED0099B5B6E0293002303930E9B0299039A9961DA6147 +:40A540000E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099B180000F0B7FC03000F930F9B002B00D0F8E0069A0799099B1800FFF787FF030062 +:40A580000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B002B00D0E0E0099B1A6E0D9BD218099B9B6F9A4202D97B4B0F93DEE0099B1B6F0B +:40A5C000D9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002B1CD1099B1B6FD9B20C9A0E9B099800931823FFF709FC03000F930F9B002B00D0BD +:40A60000B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A934200D0A4E0169B002B00DAA2E0099B5A6D099B1B6D9A4204D3099B00211800C9 +:40A6400000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6FD9B20E9BDC699B691C000D9A0998002300931300220001F017FD00230F930E9B1B +:40A680009C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12196B411C0013000E9A136254620E9B00229A620B9A0E9B1A630A9A0E9BDA620E9B95 +:40A6C000374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803009AB20E9B9A810E9B0022DA810E9B069A1A610E9A01235B4214211800FFF7DDFA9F +:40A7000002000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099B1B6FD9B20E9B5C6A1B6A1A000E9B9B891C000998079B00932300FFF79FFB030044 +:40A740000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362546212E0C04608E0C04606E0C04604E0C04602E0C04600E0C0460E9B00221A6061 +:40A78000099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7FF4040008836668540B01FF801201FF800701FF8070B588B005900491039202930023079361 +:40A7C000059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E0059B2833180004F017F9049B0693069B1B68002B02D1244B07933CE0069B9A6AF5 +:40A80000029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA0200069B5A61059B1B6FD9B2069B5C6A1B6A1C00029A0598039B009313002200F4 +:40A84000FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B197441069A13625462069B9A6A029BD218069B9A6200E0C046059B2833180004F0F4F813 +:40A88000079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6C0A93059B9C229A58049B9A4201D0714BDDE0049B0993099B1B68002B01D16D4BF7 +:40A8C000D5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180000F0F8FAA9E0059B1B6FD9B2099BDC699B691A00099B059800931823FFF7BEFA90 +:40A9000003000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000893089B002B02D0544B0B9385E0099BDC699B69059A526E029200220392029A48 +:40A94000934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099BDA6A059B5B6D9A4213D2099BDB6A1B010A9AD018099BDB6A01331B010A9AD1181C +:40A98000059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF83AE0099B34229B5C002B25D0099BDA6A059B5B6D9A4213D2099BDB6A01331B01E3 +:40A9C0000A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FB059B5B6D5A1C059B5A65099BDA6A059B0121180001F0B0F8099BDB6A1B010A9A66 +:40AA0000D3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800059B8C229B581900FFF736F90200059B1A6602E0C04600E0C046099B00221A60E1 +:40AA4000059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44204D0059B0433180003F0FEFF0B9B18000CB070BD0101FF800501FF801C01FF807E +:40AA800030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B6824331C68029D049A06A905980C9B00932B00A04703000793079B002B01D0079BCC +:40AAC0001AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B0AE0059B1B682C331B680699059A1000984703000793079B180009B030BDC04601 +:40AB00000101FF8010B584B003900291039B1B6814331C680299039880231B06009300230022A0470300180004B010BD10B598B00F900E910D920C930F9B0E9A1100180030 +:40AB4000FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF0F9B1B6FD9B215AC0E9A0F9812AB019311AB00932300FFF715FC03001793179B4B +:40AB8000002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB0893002307930023069301230593002304931B9B039316AB02930C9B01930D9B00932300FFF785 +:40ABC00075FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FF179B180018B010BD0101FF8010B598B00F900E910D920F9B0E9A11001800FEF757 +:40AC000007FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9B1B6FD9B216AC0E9A0F9813AB019312AB00932300FFF7B6FB03001793179B002B63 +:40AC40002ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB0893002307930023069300230593002304930023039311AB029301235B420193002300932300FFF7E8 +:40AC800015FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E0C04600E0C0460F9B0433180003F0DCFE179B180018B010BD0101FF8010B588B025 +:40ACC000059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006AB01225A8006AB00225A60059B5A6E059B9B6ED218039B1A60059B1B6814331C6845 +:40AD0000054B196806AA0598002300930823A0470300180008B010BDF404000830B591B005900392029313236B440A1C1A70039A13236B441978059808AB00931823FFF7EC +:40AD400063F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF040008AB9B891A0008AB1B69D018059B8C229B581900FEF790FF0300E3180793132304 +:40AD80006B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B002B01D00F9B90E0059B8C229B5819001820FEF771FF02003A236B441A80132356 +:40ADC0006B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803000F930F9B002B01D00F9B6EE03A236B441B88039AD31803933A236B441B88029A8C +:40AE0000D3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF796F803001A683A236B441A803A236B441D88059B90229B58039C13226A441178F1 +:40AE4000059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B780122D31AD9B23A236B441C88059B90229B58029A059800932300FEF7FFFF03008A +:40AE80000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF7A3 +:40AEC000EBFE0200149B1A600023180011B030BD385B041070B58CB00390039BDB6C0A93039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED218039800230093130000226B +:40AF000001F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE03000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B1100180041 +:40AF4000DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B249 +:40AF8000069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D0099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED318CB +:40AFC0000693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB6813000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099BC1 +:40B00000002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B06930B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B83 +:40B0400074229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF72DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B11008A +:40B08000180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD385B041070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E179381 +:40B0C0000D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9310AB099311AB089301230793002306930023059301230493002303930FAB0293D6 +:40B1000000230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B20D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002B14 +:40B1400003D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB0D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B0166 +:40B18000D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1C0D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A67 +:40B1C0000E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE773 +:40B20000C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B001900091019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB37 +:40B2400003000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A60D7 +:40B280000023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB0D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA0300BA +:40B2C00019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D18002A +:40B3000090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B07D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6DF9 +:40B340001800904703000C0019000D9B8C229950402003F097FA030019000D9B90229950802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C2299509A +:40B380000D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9B8C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F821 +:40B3C00002000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD9AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B78338E +:40B4000018006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A670D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB089300230793E5 +:40B440000123069301230593002304930023039312AB0293082301930FAB00932300FEF725FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002260 +:40B4800002F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D9801230093230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F0CC +:40B4C00013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1526B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB520064 +:40B50000D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D116AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B7422F4 +:40B540009A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B98002300930023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011ABE3 +:40B580005B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F11AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F067 +:40B5C00007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6F0D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E49D3 +:40B600001B98002300930023002202F06DFAC046FFFFFF078C5904100101FF80F40400080201FF80B8590410E05904101B01FF80045A0410345A04105C5A04101B9B364ADC +:40B64000934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D9800F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA2C +:40B680003B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B1D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D052 +:40B6C00018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D1800904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9B92 +:40B700006C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80885A04101B01FF80C85A0410F05A04101C01FF8000B585B00190019B0433180003F06CF975 +:40B74000019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B61 +:40B7800003D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B67 +:40B7C0000433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B5A6E039B9B6ED2180B236B4419780398012300931300002200F056FC03001800DA +:40B8000005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B0433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A78C8 +:40B84000019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B4401321A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B7422012199529F +:40B88000019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B0433180003F0E0F8029B180005B000BD0E01FF8000B589B0039002910192002333 +:40B8C0000793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE0039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002BCA +:40B9000003D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF03000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D001238F +:40B9400000E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B9A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059BB6 +:40B98000069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B000BDC0460E01FF800101FF802001FF80145B041010B598B00F900E910D920C9354 +:40B9C0000F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9B0F +:40BA00001B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A9312AB099313AB0893002307930023069300230593012304930023039314AB029364 +:40BA4000002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B0ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D105 +:40BA8000012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B41DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B78 +:40BAC0001793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C0122CE +:40BB00005340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B04D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F051 +:40BB4000BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B236B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B31 +:40BB800015D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B06D +:40BBC0007047000000B58BB005900491039200230993039B402B01D9354B66E0059B0433180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4A90 +:40BC0000934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009313000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A8058 +:40BC4000049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009308234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6D9B +:40BC80001800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059B0433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF808C +:40BCC00010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6834331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB009367 +:40BD000008234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E004 +:40BD40000E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB11009C +:40BD8000180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B58139300230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A9338 +:40BDC000059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D00B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A422C +:40BE000004D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B1800FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B78A4 +:40BE4000002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC0460501FF80385B04100701FF800201FF8000B587B00390029101920093039B04337C +:40BE8000180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B233E +:40BEC00008AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C01225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C00F8 +:40BF00000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A605AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C68BD +:40BF40000B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B1854410122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C6896 +:40BF80000B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F93C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B069300239B +:40BFC0000793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B005900392029313236B440A1C1A7014AC039A13236B441978059813AB0093230000 +:40C00000FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179C99 +:40C04000039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114B1DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A705D +:40C0800000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A700023180018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD014 +:40C0C00008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF736FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B445C +:40C10000197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B7801225340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A9317 +:40C140000A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE7002318000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A60C9 +:40C18000039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B1800DAF717FF039B180005B000BDC0464816041010B588B005900491029203938B +:40C1C0000A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F04DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029BFA +:40C20000039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6808331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B39 +:40C24000002B02D00A9B00221A60079B180008B010BDC046185B04102C5B041082B001900091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B05A +:40C2800001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023180003B000BDC046185B04102C5B041010B588B00590049102920393002307936A +:40C2C000059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F04FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079342 +:40C3000003E001235B420793C046079B180008B010BD000010B584B001900091009B002B07D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180070 +:40C3400000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60019B1B6808331B68019A100098470023180004B010BDC046185B04102C5B041013 +:40C3800010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F0CDF8029B07930E9B1B680B931B236B4400221A70039B1B69059300230024089358 +:40C3C0000994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD3181B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A701E +:40C400001B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B18544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB022 +:40C4400010BDC046185B04102C5B041010B58AB003900291009201930C9B002B07D1A423FF331A003249334B180001F067F8029B04930C9B1B6809930023002406930794E9 +:40C48000019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B781A00039B1100180000F086F803001B06099A5340099317236B4408221A70172353 +:40C4C0006B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D0099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A7097 +:40C50000DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099B1A400C9B1A60002318000AB010BDC046185B04102C5B0410B71DC10482B00190C2 +:40C5400001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4420221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B23D7 +:40C580006B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B73 +:40C5C0001B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B012213400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0885 +:40C6000000930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B0019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB2F4 +:40C64000180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB2002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BD4172000819 +:40C680004072000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A70064B1B78DBB2002B00D062B6C04610BD885B0410AC5B041041720008407200080F +:40C6C00000B585B003900291019200930299009A019B18000CF068FC0023180005B000BD82B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0C7 +:40C70000039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4A0B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029BC0 +:40C740009A40039B9A60C04605B000BDE5020000C85B0410E602000010B582B001900091019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5E2C +:40C780001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD185C04104C5C041000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B4451 +:40C7C00000229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B11001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F9CA +:40C80000C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A2314 +:40C840006B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E070 +:40C88000039A0549054800230093002301F02CF9180005B000BDC046705C04103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1DA +:40C8C000009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D146 +:40C9000001235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F0DBF8059B180007B000BDC046845C0410C3 +:40C940003001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B4218003D +:40C9800002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF030005932E +:40C9C000059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046A45C04103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B8874 +:40CA00000D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B0121180000F03EFF00F0B8FEC04603B000BDC04642720008FFFF0000C45C041091 +:40CA40002301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A000949094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BDAD +:40CA800042720008EC5C04102401048010B586B000F06AFEFFF7A8FF03000C00049305940F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002BA4 +:40CAC0000ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE00099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFE80 +:40CB0000C04606B010BDC0465072000848720008F0B58FB00590059B5B6838229B5C002B00D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB6976 +:40CB4000984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944655 +:40CB800063441B7801229A400B9B9A420AD1272304AA94466344262204A98C46624412781A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA9446F1 +:40CBC00063441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D494D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474ACE +:40CC000000230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B68A3 +:40CC400000221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B2112789E +:40CC80005A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D1400A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A85 +:40CCC0001A61059B5A68069B079C9361D461059B5A680023002413635463059B5B68392200219954059B5B683A2200219954059B5B68382201219954059B180000F01AF8F5 +:40CD0000059B180000F0EEF902E0C04600E0C0460FB0F0BD0C5D0410245D041040420F0082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B68159334 +:40CD4000159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149B9A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362E5 +:40CD8000159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E06E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A5F +:40CDC00004DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119ADA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C8440260088 +:40CE000008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BB4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24282 +:40CE400000D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B18544116931794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D46233 +:40CE80005BE0364A00231298139910F073F903000C000E930F94159B9B68069300230793069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B680893F9 +:40CEC00000230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A94415B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD835 +:40CF0000039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A9B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6BCF +:40CF4000169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F00F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A99410200EA +:40CF80000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E00599994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079BD4 +:40CFC0009A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C1A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D004E +:40D000001543049A9A401400244A00232000290080185941204A002310F08CF803000C000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E0000237F +:40D040001F00049A059B3000390010F093F803000C0019002200114B0024C9186241080011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B68E0 +:40D080001B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D213 +:40D0C00001230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E00023180004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6866 +:40D1000039229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6B1B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B4C +:40D140009A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A0023000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F028 +:40D18000DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059A04991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D21827 +:40D1C0000B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD0C5D0410285D041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B110018006A +:40D20000FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB689847019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B684E +:40D240005B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6BA2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A600C +:40D28000019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B00390AF +:40D2C00002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089A9A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA24203 +:40D3000002D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049ADA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA6005 +:40D3400000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A4209D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE0B8 +:40D38000039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD100F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B1800FE +:40D3C000FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C0466C5D041010B5054B1B68002B04D0034B1B68034A10009847C04610BDF8040008D3 +:40D400006C5D041082B001900023180002B0704782B001900023180002B0704700B585B00190019B1B6810331B68019801220021984703000393039B002B01DA039B12E058 +:40D44000019B1B6810331B68019802220021984703000293019B1B6810331B680399019800229847029B180005B000BD00B583B0734601900091002293431A000099019B26 +:40D48000180000F004F80300180003B000BD00B587B003900291019200230593029A039B110018000BF050FA03000593059B180007B000BD00B587B0039002910192002346 +:40D4C0000593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734601900091002293431A000099019B180000F003F8C04603B000BD00B585B003909F +:40D5000002910192029A039B110018000BF0D8F8C04605B000BD00B587B003900291019200230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B09E +:40D5400005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF8082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B04C +:40D58000039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A0B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029BB4 +:40D5C0009A40039B9A60C04605B000BDE5020000C45D0410E602000010B582B001900091019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5ED9 +:40D600001800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD145E0410485E041000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B4601211800CA +:40D64000FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B01330393039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F965 +:40D680006B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DDC8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C0465F +:40D6C00003B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE03002393239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F098 +:40D7000005F8C04625B000BD585E041000B583B0019000F029F8019B18000BF0F9FF03001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019BE4 +:40D74000012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB2180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF732 +:40D7800063FF034B1B685A1C014B1A60C04610BD98720008605E04107C5E041010B5094B1B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C0468D +:40D7C00010BDC0469872000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B00390029177 +:40D800006B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A4209D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7030 +:40D8400017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B0039002910192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B448D +:40D8800001221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B444F +:40D8C0006A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A6032 +:40D90000FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019B1B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF68 +:40D940000E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A0393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031EFB +:40D9800005D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001235340DBB2002B01D0FFF73AFE012000F0C7FEC046A07200080FB410B584B07446D4 +:40D9C000124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C48009300230022002100F019F80A490A480023002200F0B1F807AB0393039A069B1100C7 +:40DA00001800FFF761FEFFF7B5FFC0469C7200080001FF80B05E0410DC72000800B593B00390029101920093039B002B01DB264B039304AB3422002118000BF047FB04ABA1 +:40DA4000039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B04AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FEE2 +:40DA8000134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A90D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE2D +:40DAC0000023180013B000BD0101FF8004060008A4720008A8720008DC72000810730008002318007047000010B586B0744605900491039202930F4B1800FFF765FE0300EE +:40DB00001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF77DFF089B029A0499034800F015F8FFF721FFC0469C720008DC72000882B0019058 +:40DB4000019B002B01D0019B00E0024B180002B07047C046C85E041070B58AB00790069105920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B04CE +:40DB80001B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FDD3 +:40DBC0003DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FD2DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD2F +:40DC00001DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD0DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B48 +:40DC40001800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF755FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B110018001B +:40DC8000FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B9969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B110039 +:40DCC0001800FFF7F1FC144B1800FFF7EDFCC0460AB070BDD45E0410CC600410285F0410405F0410505F0410605F0410745F0410885F04109C5F0410AC5F0410C45F041035 +:40DD0000D85F0410EC5F0410F45F0410F85F04100C60041064600410B060041000B583B0FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B480023009355 +:40DD40000023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BD14730008FFFF00001C6104102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD3A +:40DD80000A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80FFF7FCFCC04603B000BDC046147300084C6104102401018000B583B0FFF7D4FCC4 +:40DDC0000D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF783FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BD16730008FFFF000018 +:40DE0000746104102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B881A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFC37 +:40DE4000C04603B000BDC04616730008A06104102401018010B5074B1B68002B08D0054B1A6801235B421900100003F08DF800E0C04610BD007E000810B5064B1B68002B0C +:40DE800005D0044B1B68180003F0A8F800E0C04610BDC046007E000884B00390029101921D235B42180004B0704782B0019016235B42180002B0704782B00190012318006B +:40DEC00002B0704782B001900023180002B0704700B585B003900800110001930A236B44021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D1C8 +:40DF000002AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F051FE00E0C046039B180005B000BDC04650630410207D0008488E000800B587B0C2 +:40DF4000039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00064B1100180009F047FE059B01330593EDE7019B180007B000BDC046488E000829 +:40DF800000B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE0300DAB2059B1A700123180007B000BD488E000800B585B001900A006B4602338F +:40DFC0001A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FE031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B4622 +:40E0000002331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B07D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDEC +:40E04000488E000882B001900023180002B0704782B001900023180002B0704710B5174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FBC9 +:40E0800003005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046A47300081D +:40E0C00001050000A0730008C0000008E5E8021000B585B00190019B1800FFF7B9FF03000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039B9B +:40E1000002E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E00C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF03003F +:40E140000393044B019A92000399D150039B180005B000BDFC04000800B583B00190019B180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF03000B +:40E180000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4215E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF803006A +:40E1C000029A52421A6001235B4200E00023180005B000BDFC04000882B001900023180002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A0030 +:40E2000001235340DBB2002B01D0012300E00023002B07D0059A55495548002300930023FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B0893002354 +:40E240000B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099AD2 +:40E280000B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F803000793079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BD7 +:40E2C000D3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA01235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B44B8 +:40E3000012781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A1A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD31830 +:40E340000B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C04600E0C0460B9B18000DB000BDC86104102F010180607300080462041000B587B086 +:40E38000039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF030009221A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002B29 +:40E3C00008DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB00590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B62 +:40E4000001D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002B07DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031EF4 +:40E4400065D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE0089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD147 +:40E480001F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059BD3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B787A +:40E4C0000A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B4432 +:40E500001A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099B18000BB000BDC046086204102F0101802073000800B587B0039002910192039BA6 +:40E540001800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E0059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE030011 +:40E58000049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019A0299039B180000F006F803000593059B180007B000BD00B587B0039002910192F8 +:40E5C000039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B4216E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFEB1 +:40E600000300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B65 +:40E640001B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A52421A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B6888 +:40E680000593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB2002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B68FF +:40E6C000D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B07047C046FC050008BC8E00081C7300081873000800B583B001900C4B1B689B68CE +:40E70000180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B002B01D0FEF77CFFFEE7C0465807000884B00390029101920123180004B070477D +:40E7400000B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B0704700B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F0EB +:40E7800037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039B11 +:40E7C0001B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB2039B1A700123180005B000BD8C050000506204107062041000B585B00190019B08 +:40E800000393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B785BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC046D1 +:40E8400094050000506204109862041000B587B00390039B18000AF063F803000593059B002B07D1039A05490548002300930023FFF73AF9059B180007B000BDD8620410AF +:40E880001F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05490548002300930023FFF71EF9059B180007B000BDF86204101F01018000B583B0CA +:40E8C0000190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04603B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BDAE +:40E900005063041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB296 +:40E94000002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B180004F029FAC04605B000BD986304100601018000B583B00190019B180000F02C +:40E98000A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FB12 +:40E9C000009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB0B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B3322CC +:40EA00001800FEF79BFDC04607B000BD206404103C6404105064041000B587B00390039B1A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B0F +:40EA40001A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BD546404101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F0BD +:40EA8000ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180007B000BD686404101701028000B583B00190019B1B68180002F0B6FA019B18001C +:40EAC00000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023CE +:40EB0000DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A0093084B009A1A60084B019A1A6000F06EF800F08AF8C08E0008000001080C74000809 +:40EB4000087400081C7300081873000810B5154B154A1A60134B0B225A60124B1C22DA60104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A6094 +:40EB80000C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC04610BDC046C87300087C640410AC730008A8730008F87300088C640410DC7300082E +:40EBC000D873000810B5D6F701F90300180010BD00B583B00190054B1A6801235B421900100002F0D1F9C04603B000BDA873000800B583B00190044B1B68180002F0EEF988 +:40EC0000C04603B000BDC046A873000810B500F013F804F043F900F011F8C04610BD10B5FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F02E +:40EC400031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204B214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4BA3 +:40EC800018229A61194B1C4A1A60D6F7D5FF04F073FFD6F75DF8124B180002F051F90200164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A1149124892 +:40ECC000002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC046CC7D000898640410B07D0008DC7D0008487E0008047E0008A8640410007E0008A5 +:40ED00001FEC0210B06404101D010180CC64041000B583B00190064B1B68002B04D0044B1B68019A10009847C04603B000BDC0461074000800B583B0019000F017F9000082 +:40ED400000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A14491548A1 +:40ED8000002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A10491148002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046B06604107A +:40EDC000E464041025010280086504102601028030650410270102806865041028010280A46504102A010280E46504100001028082B00190019B0633052B10D89A000A4BBD +:40EE0000D3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B180002B07047C046C866041000660410186604104C66041064660410746604106E +:40EE40008C660410A866041000B585B00390039B1800FFF7CDFF0100039A0348002300930023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039AB4 +:40EE80000248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF0100039A0248002300930023FEF71CFE3301018000B585B003900291029B113382 +:40EEC0000BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BD3401018000B585B003900291029B1800FFF77EFF0100039A024800230093002316 +:40EF0000FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A0248002300930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FE70 +:40EF4000C04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF771FDFEF71BFCC04610BD000010B5024B1B689847FBE7C046000600087046C008E3 +:40EF80002CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB91421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60FB +:40EFC000906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF30880D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E467047DB +:40F0000001B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E7180600080468041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019BFB +:40F040005A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F01FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031EDA +:40F0800009D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC0464DF0021082B0EFF305830193019B5A1E61 +:40F0C0009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A52027B +:40F10000920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002349E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B50 +:40F1400007D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B07D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904B87 +:40F18000DA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B1900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B6919002A +:40F1C000100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BDA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B80228D +:40F200009A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674BDA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B1968DE +:40F240005F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B9B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FABF +:40F28000031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B1968474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404B09 +:40F2C0001B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FA031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C1968E5 +:40F300002F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284B9B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA56 +:40F34000031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C1968174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B61 +:40F380001B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC04604060008CA +:40F3C000046704100C06000800B585B0314B1B7A012B07D007235B421800FFF735FD01235B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FDBB +:40F4000001235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B421800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F038 +:40F44000CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B180002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019B0E +:40F4800083F31488034B02221A720023180005B000BDC04604060008046704100DF002102006000880B582B000F03AF8FFF702FE031E03D1FFF709FE031E08D006235B428B +:40F4C0001800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BD15F1021080B582B0FFF7E4FD031E03D1FFF7EBFD031E08D006235B421800FFF786 +:40F50000A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BDC9F30210C046704782B00190019B180002B0704784B001900091019A009BD3180393039B51 +:40F540000293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D1009B0722134002D1009B172B01D8002329E0019B1800FFF7D5FF03000393039BB9 +:40F58000009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019B11001800FFF7C4FF0200029B1A60029B1B6800221A60029B1B6810225A60029B81 +:40F5C00000225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B03D0019B0322934301D0002384E0029B08330793079B0733072293430793039B1B +:40F6000008211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343069AD31A0693069A079B9A4208D2089B1B680893089B1B68002BE7D100235BE052 +:40F64000C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B68083B1A00039B11001800FFF761FF03000593059B5C68039B1800FFF753FF03009C +:40F680005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079A019B1A43089B5A60089B08211800FFF73FFF030009931EE0089B5B680322934340 +:40F6C0001A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B5A60089B059A1A60059B08211800FFF71FFF03000993099B18000AB010BD00B5E7 +:40F7000087B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FF03000393039B083B039300230493019B08211800FFF7FCFE0300059309E0059B77 +:40F740000493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7E1FE03005968059A5268032082438A1A5A60049B002B03D1059B00225A6003E0B8 +:40F78000059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B0019044 +:40F7C000019B180002B0704782B00190019B180002B07047014B5B69180070470406000886B00390029101920093039B002B08D0029B002B05D0019B002B02D0009B002BFC +:40F8000001D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039B009A5A61029B019A5343009AD218039B1A61009B059308E0059A019BD3180493BF +:40F84000059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180006B0704786B00190EFF310830393039B0593019B002B01D1002314E072B6019B41 +:40F880005B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B00D162B6049B180006B0704784B001900091EFF310830293029B0393019B002B76 +:40F8C00009D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B5A69009B1A60019B009A5A61019B5B685A1E019B5A60039B002B00D162B600234A +:40F90000180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF03000393039B002B0FD0019B1800FFF74CFF0300180002F053F9030002930399029B2B +:40F940000022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FFF7B9FA0023F9E0039B0793029B033303229B +:40F980009343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D804235B4219000020FFF79CFA0023DCE0079B069A53430593019B002B48D0019B90 +:40F9C0001B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322134003D1019BDB68232B13D809235B4219000020FFF776FA0023B6E0019BDB683E +:40FA0000002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134003D1049A059B9A4218D20A235B4219000020FFF757FA002397E0049B002B0DD08C +:40FA40000A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002B1CD1434B9C229B58002B08D0404B9C229B581800FFF7F6FE03000B9309E03C4B2A +:40FA800080229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D12F4B9B6F059900221800FFF787FD030042 +:40FAC0000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B9C229B580B9A11001800FFF7DFFE07E01F4B80229B580B9A11001800FFF7FFFD37 +:40FB000000230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A431A700B9B002B19D00B9B06221A700B9B27226A4412789A700B9B089A5A600B9B73 +:40FB400000229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B4219000020FFF7BEF90B9B18000CB010BD0406000807F9021010B584B00190009155 +:40FB8000019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039B11001800FFF79EF9002320E0039B0C331800FFF757FE03000293029B002B15D154 +:40FBC000009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF7F9FD03001900200001F0C2FF029B180004B010BD00B587B001900091019B180051 +:40FC0000FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800FFF760F904235B422AE0059B0C33009A11001800FFF73AFE03000493049B002BA2 +:40FC40001DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B1800FFF7B1FD0300180001F0B8FF030002930399029B0122180002F0EBF9049B0B +:40FC8000180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0039B1B78062B02D1009B002B08D004235A42039B11001800FFF714F9002307E0D0 +:40FCC000039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B1800FFF76BFD03000393039B002B03D0039B1B78062B09D004235A42039B110090 +:40FD00001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029B002B07D1039B1800FFF74EFD0300180001F026FE029B180005B000BD80B588B0C7 +:40FD4000039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF7C1F8002307930EE0039B0693029B0593019B049306980599049B1A00044B1F004E +:40FD800000DF03000793079B180008B080BDC04651F9021080B586B001900091FFF7F8FC031E03D1FFF7FFFC031E08D0009A019B11001800FFF767FF030005930BE0019B83 +:40FDC0000493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04679FB021080B586B001900091FFF7D0FC031E03D1FFF7D7FC031E08D0009A019B8D +:40FE000011001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044B1F0000DF03000593059B180006B080BDF5FB021082B0EFF305830193019B5A1E0B +:40FE40009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B6918007047D0 +:40FE80000406000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B05930023049304E0059B0493059B5B680593059B002B05D0059BDA78009BDB7846 +:40FEC0009A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B009ADA62049B002B03D0049B009A5A600FE0019B009A1A630BE0009B00225A6081 +:40FF0000009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B002B00D162B6C04606B0704788B00190EFF310830393039B069372B6019B9B6A15 +:40FF40000593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD0019BDB6A079314E072B613236B44079A92781A70079B01229A70069B002B00D110 +:40FF800062B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0C046079B180008B0704782B001900091009B5B68002B05D0009B5B68009A926896 +:40FFC0009A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E0009B5A68019B1A63C04602B0704700B589B00190019B9B78002B5ED0019BDB6837 +:020000041003E7 +:400000000793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF745FC079B9B68002B00D195E0079B9B685B78932B00D08FE0079B0C331800FFF75F +:4000400011FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03000593059B00220021180001F0F3FF059B180001F03FFF03000493049B08331B68FC +:400080000393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A70049B0C331B68DAB2069BDA70069A079B11001800FFF7E6FE4EE0019B9B6807936F +:4000C000019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE0300180001F07BFD03000593059B00220021180001F0AEFF059B180001F0FAFE30 +:4001000003000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B0C331B68002B06D0049B0C331B681A00019BDB781370019B00221A70079B0C3370 +:40014000019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FEF7E1 +:40018000C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C0007980CF0AAFF0300DBB2E3181F2B07D804235B4219000020FEF7A7FE0023E8E0039BC5 +:4001C000079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6905930B9B002B0FD00B9B0322134003D1019BDB68332B13D809235B421900F8 +:400200000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE0023B6E00A9B002B0FD00A9B0322134003D1059A069B9A4218D20A235B4219000020B8 +:40024000FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E00023089300230B9300230A930B9B002B1CD1494BA0229B58002B08D0474BA0229B5863 +:400280001800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1364B7F +:4002C000DB6F069900221800FFF780F903000A930A9B002B1ED127236B441B780122134015D02D4BA0229B58002B08D02A4BA0229B580B9A11001800FFF7D8FA07E0264BDE +:4003000080229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FE27236B4427226A44127802210A431A700B9B002B25D00B9B08221A700B9B272200 +:400340006A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B0022DA620B9B00221A630B9B0C3318000A9B079A0399FFF733FA074B074A1A6746 +:4003800005E005235B4219000020FEF7BDFD0B9B18000CB010BDC04604060008EFFF021010B58CB00390029100936B4607331A70039B1800FFF754FD03000A930A9B002BB0 +:4003C00006D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD04235B428DE00A9B9B68002B35D00A9B9B685B78832B30D10A9B1800FFF737FD030012 +:40040000180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD03000893089B08331B6807930A9B5A6A0299079B180008F0B8FD089B0C331B68002B76 +:4004400007D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF701FA03000693069B002B1CD0069B0C3318000A9B5A6A029B190008F095FD069BAF +:4004800007221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC00230B932BE0009B002B25D0009B1900932001F0F5FD031E1AD00A9B1800FFF77D +:4004C000D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833029A1A60089B0C336A46073212781A6002235B420B9302E003235B420B930B9B99 +:4005000018000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF7E4FCF6 +:4005400004235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800FFF723FD099B0C3319000A9B5A6A029B180008F019FD019B002B03D0099BDA78B4 +:40058000019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D00A9B9B685B78932B3ED10A9B0C331800FFF758F903000993099B002B34D00A9B14 +:4005C0001800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B180001F087FC03000793079B08331B680693099B0C3318000A9B5A6A069B1900E6 +:4006000008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9B11001800FFF72EFC00230B9329E0009B002B23D0009B1900832001F031FD031E44 +:4006400018D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF309830593059B0793079B0833029A1A60079B0C33019A1A6002235B420B9302E003235B42E8 +:400680000B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7DFFB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D0FC +:4006C00004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F803000593059B002B26D0059B0C331800069B5A6A029B190008F057FC059B07221A70D2 +:40070000059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A60059B1800FFF7A2FB0300180001F028F90023079302E003235B420793079B180080 +:4007400009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B09D0069B1B78082B05D1029B002B02D0009B002B09D004235A42069B110018005A +:40078000FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C331900069B5A6A029B180008F0FDFB019B002B03D0059BDA78019B1A70059B0C335A +:4007C000069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793079B180009B000BD80B588B0039002910192FFF71FFB031E03D1FFF726FB031E7D +:4008000008D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC0466101031021 +:4008400090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD0009C6B4607331A78029903982300FFF70CFF0300099319E0039B0893029B079397 +:400880001B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A00059B044C270000DF03000993099B18000BB090BDA103031090B58BB00390029155 +:4008C00001920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF0300099313E0039B0893029B0793019B0693009B0593089B1800079B1900069B7D +:400900001A00059B044C270000DF03000993099B18000BB090BDC0460705031082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341D6 +:40094000DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070470406000800B587B00190019B059331E0059B5B690493059B5B +:40098000DB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF0300180001F01BF903000393039B00220021180001F04EFB059B039ADA60039BBF +:4009C000DA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BCAD1C04607B000BD00B587B00190019B002B27D0019B1B680293019B5B68049353 +:400A0000019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B4219000020FEF734FA00235EE0019BDB68002B0DD009235B4219000020FEF728FA4D +:400A4000002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0234B94229B581800FEF7FCFE0300059309E01F4B80229B5801221C211800FEF711 +:400A8000A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B04221A70059B0F226A4412789A70049BDAB2059BDA70059B029A5A60059B002212 +:400AC0009A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B4219000020FEF7D4F9059B180007B000BD0406000800B587B001900091019B18004F +:400B0000FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B11001800FEF7B6F901235B4289E0049B002B03D0049B1B78042B09D004235A42049B110002 +:400B40001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049B5A61049B00221A61039BDB6A002B03D0039BDB6A049A1A61039B049ADA62049B7E +:400B800001221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D1049B1B7EFF2B0AD110235A42049B11001800FEF76DF903235B4205933EE0049B96 +:400BC0001B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A000223134014D0049BDB6820229A56039B20215B569A420BDA049BDB68039A20215156202262 +:400C00009954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF799FE0200039B1900100000F0A1FF02235B42059302E003235B420593059B18009E +:400C400007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B002B09D108235A42059B11001800FEF70FF901235B42A8E0059B002B03D0059BFA +:400C80001B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002B09D10F235A42059B11001800FEF7F0F803235B4289E0059BDA68049B9A4209D0D3 +:400CC0000E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A76059B1B7E002B00D06EE0059B5B69002B04D0059B5B69059A12691A61059B1B6940 +:400D0000002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A00022313402AD01B236B44049A2121525C1A70049BDB6A079317E0079B9B68002B10D0B0 +:400D4000079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C1A70079B5B690793079B002BE4D1049B1B226A44202112785A54059B9B68002B09 +:400D80001FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F059F9059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B012282 +:400DC0001A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD03000393039B002B03D0039B1B78042B09D004235A42039B11001800FEF749F804238B +:400E00005B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B69039A12691A61039B1B69002B05D0039B1B69039A52695A6103E0039B5A69029B13 +:400E4000DA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059317E0059B9B68002B10D0059B9B6820229B5613226A44127852B29A4206DA059BEF +:400E80009A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613226A44127852B29A4209D0029B13226A44202112785A54029B180000F0B0FE039B76 +:400EC0009B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B0022180001F0B6F8039B9B68002BEAD1002001F059F8039B00221A70039B9B78B4 +:400F00001A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF7C5FC07E0054B80229B58039A11001800FEF7E5FB0023180007B000BD0406000896 +:400F400080B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF797FF0023039308E0019B0293029B1800044B1F0000DF03000393039B180004B06C +:400F800080BDC046E909031080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD006235A42019B11001800FDF771FF06235B4205930BE0019B0493009B0393049BBF +:400FC00018000399044B1F0000DF03000593059B180006B080BDC046F50A031080B584B00190FFF79BFC031E03D1FFF7A2FC031E0AD006235A42019B11001800FDF748FFC2 +:4010000006235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC046450C031080B584B00190FFF775FC031E03D1FFF77CFC031E0AD00623A7 +:401040005A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC046D10D031082B0EFF305830193019B5A1E08 +:401080009341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070477E +:4010C0000406000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B89013B9AB2019B9A810123059301E000230593049B002B00D162B6059B180006B074 +:40110000704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B9B8901339AB2019B9A810123059301E000230593049B002B00D162B6059B18009A +:4011400006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B1800FFF7A3FF0300180000F038FD03000393039B00220021180000F06BFFC046FC +:4011800005B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B9A4207D904235B4219000020FDF782FE002373E0019B002B24D0019B1B6805934C +:4011C000019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B4219000020FDF766FE002357E0019BDB68002B0BD009235B4219000020FDF75AFE2D +:4012000000234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98229B581800FEF71EFB0300079309E01E4B80229B58012210211800FEF7C7F9030026 +:4012400007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A70079B1B226A4412789A70079B059A5A60079B00229A60029B9AB2079B9A81039B97 +:401280009AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B000BDC046FFFF0000040600084511031010B584B001900091019B1800FFF7F0FEFC +:4012C00003000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD04235B4226E0029B1800FFF7EBFE031E02D0002303931CE0009B002B16D0009BD1 +:401300001900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE03001900200000F026FC02235B42039302E003235B420393039B180004B010BD00B587B001908A +:40134000019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B11001800FDF7A6FD04235B422AE0049B9B68002B12D0049B1800FFF797FE0300C3 +:40138000180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800FFF7AFFE031E02D00023059309E011235A42049B11001800FDF77CFD03235B42B7 +:4013C0000593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039B002B03D0039B1B78052B09D004235A42039B11001800FDF75DFD04235B423BE07D +:40140000039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB0300029303235942029B0022180000F015FE039B9B68002BEAD1002000F0B8FD039B00221A70039BB1 +:401440009B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A11001800FEF724FA07E0064B80229B58039A11001800FEF744F90023180005B000BDC04688 +:401480000406000800B585B001900091019B1800FFF706FE03000293029B002B06D0029B1B78052B02D1009B002B09D004235A42029B11001800FDF7FDFC04235B420CE032 +:4014C000029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD00B585B00190019B1800FFF7D9FD03000293029B002B03D0029B1B78052B09D0D0 +:4015000004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD0029B1800FFF7C2FD0300180000F028FA0023039309E011235A42029B110018003B +:40154000FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF789FD031E03D1FFF790FD031E08D006235B4219000020FDF79DFC002307930EE0F8 +:40158000039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC0468511031080B586B001900091FFF75EFD031E03D1FFF765FD24 +:4015C000031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC046B112031080B584B02F +:401600000190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC0463B1303106B +:4016400080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B11001800FDF728FC06235B42039308E0019B0293029B1800044B1F0000DF03000393039B19 +:40168000180004B080BDC046CD130310024B802252055A60C046704700ED00E082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047FE +:4016C00082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047014B1B7A180070470406000886B00190EFF310830293029B04930E2352 +:401700006B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B56229B5A013399B2164B56229952144BDA6D134B58215B5A9B00D318019A1A60104B4B +:4017400058229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084B5822002199520123059301E000230593049B002B00D162B6059B180006B07047C7 +:401780000406000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B61C4B56229B5A002B29D01A4B56229B5A013B99B2174B56229952164BDA6D154BA1 +:4017C0005A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B5A2299520B4B5A229B5A6A46063212889A4206D1074B5A220021995201E00023C1 +:401800000393029B002B00D162B6039B180005B000BDC0460406000800B583B001F0C2FA2D4BDB685A1C2C4BDA602B4B1B6D002B02D0294B1B6D984700F004FB002000F0D5 +:40184000B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B1A6C1D4BDA6334E01B4BDB6B002B04D0194BDB6B5A1E184BDA63174BDB6B002B30 +:4018800027D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B9B6B20215B569A4213D1019B180000F0DCF9094B9B6B180000F0F2F9019B180027 +:4018C00000F062FB044B019A9A63034B1A6C024BDA63C04603B000BD0406000810B582B0FFF750FF03000193019B002B3CD0019B1B78072B36D89A001F4BD3181B689F4662 +:401900001E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFE03001800A0471EE0144B9C6E019B1800FFF7C6FE03001800A04714E00F4BDC6E23 +:40194000019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800A04700E0C046BBE7C046002000F01CFBC04602B010BDC0460868041004060008F3 +:4019800000B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE08E0064B01229A7204E0019B19000220FDF7C6F9C04603B000BDC04604060008D6 +:4019C00082B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B002006B4607331A702023180002B0704782B0EFF305830193019B5A1E9341DBB21800F7 +:401A000002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704700006C +:401A4000014B1B7A1800704704060008014B5B69180070470406000882B00190024B019A5A61C04602B070470406000886B001900091EFF310830393039B059372B6019B6F +:401A80009A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B0704786B001900091EFF310830393039B059372B6019B9B6A0493019B9B6A009AD24339 +:401AC0001A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019B0222134029D1EFF310830593059B069372B6039B9B6A0793019B0122134005D08C +:401B0000079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079306E0039B9B6A029AD2431A40039B9A62069B002B18D162B616E0039B9B6A079384 +:401B4000019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029A134001D100230793079B180008B0704700B587B001900091009B002B2CD0009BF9 +:401B800020229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DA009B059ADA60009B59 +:401BC000049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B584B00190019B9B680393039B002B12D0039B9A68019B9A60039B9B68002B07D06B +:401C0000039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B585B00190019B039302E0039BDB680393039B002B03D0039B1B78012BF5D0039B6D +:401C40001800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B11001800FFF786FFC04605B000BD82B00190019BDB68002B10D0019BDB68019A92689A601B +:401C8000019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B07047000000B583B00190019B01225A70019A044B11001800FFF75CFFC04603B000BDC0468F +:401CC0002006000884B001900091009B013321D1002303932C4B1B6B029304E0029B0393029B1B690293029B002BF7D1019B009ADA61019B039A5A61019B00221A61039BBB +:401D0000002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E0029BDB69009AD31A0093029B0393029B1B690293029B002B04D0029BDA69009B63 +:401D40009A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A1A6102E0084B019ADA62029B002B08D0029BDA69009BD21A029BDA61029B019A36 +:401D80005A61C04604B070470406000882B00190019BDB69013323D1019B5B69002B04D1274B1A6B019B9A4246D1019B1B69002B04D0019B1B69019A52695A61019B5B6984 +:401DC000002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0019B5B69002B04D1154BDA6A019B9A4222D1019B1B69002B0DD0019B1B69019A09 +:401E00001269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6103E0019B1A69024BDA62C04602B07047C0463C +:401E40000406000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019BDB69002B42D1019B5B78532B12D006DC332B11D0432B11D0132B11D019E0732BF8 +:401E800010D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046019B1800FFF7D8FE019B1800FFF74A +:401EC000EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00225A61034B019ADA6200E0C04603B000BD0406000810B584B00190019B9C6B019B9D +:401F000022229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019B01225A70019B20229B560393154B1800FFF77FFD03000593059B9B68049304E019 +:401F4000049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B059ADA60019B049A9A60059B019A9A60049B002B02D0049B019ADA60C04607B074 +:401F800000BDC0462006000800B583B00190019B02225A70034B019A9A6100F0BBF8C04603B000BD0406000810B586B0019017246C44FFF745FD03002370FFF747FD03009C +:401FC0000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B002B31D0039B20229A56049B20215B569A4229DD039B1800FFF737FE049B1800A5 +:40200000FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B20229A56049B20215B569A4208DD049B1800FFF771FF019B1800FFF7A5FF03E017 +:40204000019B1800FFF72CFEC04606B010BDC0460406000800B587B0039002916B4607331A70039B1800FFF745FF03000593059B029A1A60039B1800FFF788FE6B46073306 +:402080001B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD000000B585B0020000916B4607331A70FFF7C7FC0300022B01D0002324E0FFF7C6FCC0 +:4020C00003000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A46073212785A70009A039B11001800FFF7EAFD074B1800FFF773FD03000393039B180022 +:40210000FFF742FF0123180005B000BD040600082006000800B583B0FFF798FC03000193019B002B10D0019B9A6B019B1B6B9A4205D9019B1B6B1B68054A934204D0019B14 +:4021400019000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B14D1019B596A019B23229B5C1A00019B1800FFF7B0FC03000393039B002B05D0A3 +:402180000399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B002B07D104235B4219000020FCF75EFE0023AFE1019B002B56D0019B1B680793DA +:4021C000019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9B002B0FD00D9B0322134003D1019BDB68432B13D809235B4219000020FCF736FEA4 +:40220000002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002B0ED00B9B0722134002D10A9B002B07D10B235B4219000020FCF718FE002369E1D0 +:40224000099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020FCF704FE002355E10023079300230C9300230D9300230B9300230A93182309935A +:402280000A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD002337E10D9B002B1CD19C4B88229B58002B08D0994B88229B581800FDF7D2FAD1 +:4022C00003000D9309E0954B80229B58012244211800FDF77BF903000D9323236B4401221A7003E023236B4400221A700D9B002B5DD00B9B002B5AD10A9B002B25D1884B77 +:402300005B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B002B1BD023236B4423226A44127810210A431A7012E0794B5B6F0A99002218007B +:40234000FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B1DD123236B441B780122134015D06B4B88229B58002B08D0684B88229B580D9A86 +:4023800011001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D9323236B4423226A44127802210A431A700D9B002B00D1A0E00D9B01221A700D9B012267 +:4023C0005A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A600D9B0022DA600D9B00221A610D9B00225A610D9B00229A610D9B0022DA61099BBC +:4024000059B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002199540D9B00225A620D9B00229A620D9B0022DA620D9B0B9A1A630D9B0A9A5A631C +:402440000B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B1B680422134010D00A9B9B08113B059308E0069B04330693069B2B4A1A60059B89 +:40248000013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD31800221A60059B01330593059B0D2BF3D1069B34331E4A1A60069B3833039A1A60069BB7 +:4024C0003C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB21900FFF76EFA03002360069B2033029A1A600A4B0F4A1A6605E005235B42190000201C +:40250000FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC0460406000804670410A52E5AE2CCCCCCCC112A03105521031000B583B0FFF788FA0300019365 +:40254000019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B1900100058 +:40258000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B34 +:4025C00080229B58019A11001800FDF798F8C04603B000BD0406000800B583B0FFF736FA03000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6A2D +:402600001800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF309830093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019B4F +:40264000DB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B04225A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA60B5 +:40268000044B019A5A6302E0C04600E0C04603B000BDC046040600082006000800B587B001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009B81 +:4026C000002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D103235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F916 +:4027000003000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF903000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039AB7 +:402740001340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B585B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB0123A3 +:402780005B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F90300A3 +:4027C0000193019B002B01D1002301E0019B9B6A180003B000BD00B587B0039002910192FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE082 +:40280000039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049B1800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B237 +:40284000049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0EA +:40288000039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B421EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009A07 +:4028C000039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029B180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D7F +:402900001D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D16B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B002111 +:402940001800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B46073300221A706B4607331B78180003B000BD040600080467041035ED02108D2C0310E0 +:4029800080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B4219000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B1900B3 +:4029C000049B1A00044B1F0000DF03000793079B180008B080BDC0469521031080B582B0FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DF1D +:402A000003000193019B180002B080BD3525031080B5FCF78BFA054B1F0000DF01235B4219000020FCF722FAFEE7C046D925031080B586B001900091FEF7D9FF031E03D1A0 +:402A4000FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC0469D26031080 +:402A800080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF7E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B0AC +:402AC00080BDC0465F27031080B582B0FEF78FFF031E03D1FEF796FF031E02D00023019304E0044B1F0000DF03000193019B180002B080BDB727031080B588B003900291F8 +:402B00000192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906235B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF030094 +:402B40000793079B180008B080BDC046D727031082B00190019B180002B0704784B001900091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB680C +:402B80000293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B7C +:402BC000002B03D0039B019ADA6002E0024B019A5A64C04604B070470406000882B00190019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047F2 +:402C00000406000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E0019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009BBD +:402C4000002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B11001800FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD0F4 +:402C800000E0C04603B000BD0406000800B587B00190164B586E154B1B6E1A000821FDF7A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4B12 +:402CC000D86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6818009047EBE7C04607B000BD0467041004060008052C031000B585B00190009135 +:402D0000019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B0F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A6029 +:402D4000094B039A5A60084B00229A60074B00221A700023180005B000BDC046A8060008FFFFFF0000ED00E010E000E0647A0008094B1B78002B06D0074B00221A70074B1A +:402D80008022D2045A60064B054A126801210A431A60C0467047C046647A000800ED00E010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B95 +:402DC0001800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B000BDC04628680410C86804107047EFF3108072B6704780F310887047FFF7F6FF4B +:402E00000E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808490860BFF34F8FCDF773F9FEE7E07A04103C +:402E4000F87A0410F8150008C08E00080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B0704733 +:402E8000B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F0CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B0F5 +:402EC000364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE0239B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB00802263 +:402F00005204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1501E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC023C5 +:402F40005B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A00C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF7B9 +:402F80007FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC0460000264084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F22134006 +:402FC0000D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD3181B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A5C +:403000000D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB010F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4BCF +:403040000F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00DE +:40308000D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78D1 +:4030C000002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774BD358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F05F +:4031000047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB003A +:40314000D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B4476 +:403180001A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A236B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0ACF +:4031C0001F2213400493384AC023DB00D3581B0C1F22134003930F9B059A53430499180009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4A97 +:40320000E0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AFF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD030085 +:403240000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4B1A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B6824 +:40328000174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A60C04611B000BDC04600002640106A041000127A0000366E01B40600088405000039 +:4032C000AC06000800002140B0060008A8060008B80600083F420F0040420F00C0060008E7030000BC060008C406000882B0054A8023D358032213400193019B180002B043 +:403300007047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049B032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B45 +:403340000E4A13430393039B03221343039309498022039B8B50C046064A8823D35810221340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA05A8 +:4033800000B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019B00 +:4033C0001800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A008021042001F049FCC04610BDC046C87B000810B5034B180001F041FBC04610BDC0465B +:40340000C07A000810B5034B180001F037FBC04610BDC046187B000800B583B002F091FC030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B18005A +:4034400001F092F9019B180002F07FFCC04603B000BDC046687A0008246A0410586A04108C6A041010B5034B180001F007FBC04610BDC046687A0008084B5B6C1B0AFF2286 +:4034800013403A2B08D1054B044A526C04490A40E82189010A435A64C046704700002740FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C0460000274067 +:4034C000FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD3585B005B08054A8B5000230193019B180002B0704703004A00000026400C05000007 +:4035000000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002BD8 +:4035400001D000230393039B180005B000BDC04602004A0000002740044B1B69042213405A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A49CA +:40358000094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B180004B0704701004A000000264084B001900A006B4603331A70114B0393019B042BE8 +:4035C00019D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B4603331B780F2003401A43019BE0339B005A5000230393039B180004B07047C04612 +:4036000001004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4603331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B78AF +:403640001B01302003401A43019BE0339B005A5000230393039B180004B0704701004A000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B786A +:403680001B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B002006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B0F1 +:4036C0007047C0460000214082B002006B4607331A70084B074A1269074911406A460732127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B005 +:4037000002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C490B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA5011 +:40374000C04603B000BDC04613090000C06A04100000264000B583B002006B4606331A806B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD3581C +:403780000A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B090000C06A04100000264004050000FEFCFFFF82B002006B4607331A700948084A094B24 +:4037C000D358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070470000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C04623 +:403800007047C046000026400405000000B583B002006B4607331A706B4607331B780F2B05D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B460733EF +:403840001B781902F0231B010B401A43A023DB00C250C04603B000BD080A0000C06A041000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4AB6 +:403880000D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B781903E023DB010B401A43A023DB00C250C04603B000BD2E0A0000C06A041000002640DD +:4038C000FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0460000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B11003D +:40390000180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A431A60C04603B000BD910A0000C06A041000002740FFFCFFFF044B044A1268802118 +:4039400009060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D0052024 +:40398000FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE01210020FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F0B0 +:4039C000F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA13C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B190041 +:403A0000012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF7C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD5E +:403A40006421002002F004FAC04604B010BDC04620A10700146B04101027000010B584B06B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC04639 +:403A8000206B041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A48002300930023002263 +:403AC000002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039A1F480023009313000622032100F0F8FB039A1C480023009313000622012100F03A +:403B0000EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042100F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062131 +:403B400000F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC04600003240800032408005324006060000070600000003324010B5034B1800FFF73E +:403B8000C3FBC04610BDC04600000810C046704782B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B02D +:403BC0007047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180002F0CEF8019B5B01034A94466344180003B000BD306B04100000234000B583B093 +:403C00000190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A94466344180003B000BDC046306B04100010234000B585B0039002910192019B1B0C1B04D1 +:403C400006D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084B1100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC04602 +:403C8000306B041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F06FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0C52 +:403CC0001A43039B1A60039B1B68C04605B000BD6A020000306B04106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C86 +:403D0000019B9A60C04603B000BDC046306B041010B5D1F7EBFE054B186880235B001A000021FFF7AFFFC04610BDC0465C7C000800B583B06B4603221A806B4622229A708F +:403D40006B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B1B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF52 +:403D80006B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D1054B5321180001F0EBFFC04603B000BD113D03105C7C0008846B0410587C0008FD +:403DC00010B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000FFF77CFFC04610BD587C0008846B0410024B1B691B0EDBB21800704700002140A7 +:403E0000024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0AAFF019B5B01034A94466344180003B000BDD86B0410DC +:403E40000000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F0A0 +:403E80007FFF019A0299039B180000F0FDFA0300180005B000BDC046D86B041010B5044B02221900002000F0B7FDC04610BDC0461511000810B584B001901E4B0393019B86 +:403EC000180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B7A +:403F00001A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00110018000AF0D0FF03000393039B180004B010BD06005200607C00080001001C6D +:403F400060F59000AC0600089808000010B584B001900091204B0393019B180000F092F8031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A64 +:403F80009A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A431400114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A1829 +:403FC00080235B00110018000AF07EFF03000393039B180004B010BD06005200607C000800010006808D5B00AC06000884B00190019B1E4A93420BD9019B1D4A934207D8B5 +:40400000019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD8019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019BFB +:404040000F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B420393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF152B +:40408000FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D1012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D0B5 +:4040C0002B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD08022520093423BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE0F7 +:404100001E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E0A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB0303936C +:4041400011E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E00F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F019 +:40418000050000F0030000F0010052000200520003005200010050000200500005005200FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A00012316 +:4041C0005340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C046084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD02005000B0 +:40420000607C0008000025400C0400008C04000000B589B0039002916B4607331A70029B072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A00FD +:40424000244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B010693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B46073381 +:404280001B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40A5 +:4042C000059B1A43069B5A60C04609B000BDC046430200002C6C04100000CEBF0010030400B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F22F3 +:40430000934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB1B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D24379 +:4043400013400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2191400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB4F +:404380001A780299039B1800FFF742FFC04607B000BDC0467C6C041000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A6084 +:4043C000C04603B000BDC046CC6C041000B583B001900091009B1B0C1B0405D0064A074B1100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA5020000CC6C041012 +:4044000082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA63 +:40444000002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B068 +:4044800000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019A039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B059345 +:4044C000059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A6000234D +:40450000039301E0034B0393039B180005B000BD206D041001008A0082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191409C +:404540000A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180001F00AFC019B5B01034A94466344180003B000BD746D041093 +:404580000000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B5B01044A94466344180003B000BDC046746D04100010234000B585B003900291EE +:4045C0000192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D0D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A6006 +:40460000C04605B000BDC046746D041082B00190019BDB68180002B0704782B00190019B1B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B110065 +:40464000180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A020000746D04106B02000017 +:4046800000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B1B041A0C019B9A60C04603B000BDC046746D041082B001900091019B009ADA6057 +:4046C000C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C180002B0704782B00190019B1B041B0C180002B07047000000B583B00190009139 +:40470000009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300180003B000BDC0467E030000746D041082B00190019B1B68002B01DA002300E0D0 +:40474000014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04602B07047807C000810B590B00390039B002B04D13B4B4F21180001F001FB039BAA +:404780005B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F0EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B57218D +:4047C000180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C303CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B6878 +:40480000DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB1C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F025 +:4048400013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B010BDC046C86D041000B587B00390029101920093039B072B04D9244BB32118008E +:4048800001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AFF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A61ED +:4048C000059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF76BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5E27 +:40490000059B9A81C04607B000BDC046C86D0410807C000800B58BB00390029101920093019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FAE1 +:40494000029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B1A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089BDE +:404980005B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B691800FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A60B0 +:4049C000089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A11001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099BA6 +:404A000018000BB000BDC046C86D0410807C000807028A0004028A0000B587B0039002910192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B4388 +:404A4000D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059301E0054B0593059B180007B000BDC046C86D0410807C00080A028A0010B588B087 +:404A800001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B42350 +:404AC000FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019B0C +:404B00005C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FD031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039BD0 +:404B40001B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B680493049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B18003E +:404B8000FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FD019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019BB9 +:404BC0009B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC046C86D041000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B0159 +:404C0000034A94466344180003B000BD1C6E04100000234082B00190019BDB68180002B07047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F0B9 +:404C40009FF8019A0299039B1800FFF71DFC0300180005B000BDC0461C6E041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B587B0039002911C +:404C80000192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B1800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029BB9 +:404CC0001F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A601A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B6877 +:404D0000124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D1002305930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B062 +:404D400000BDC04603018A00847C0008887C000801018A0000B589B001900A006B4603331A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A42E5 +:404D80004DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B7801225340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059BFC +:404DC0005A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A92008A1812680399C9430A401A600023069301E00F4B06930D4B1B68002118003D +:404E0000FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B0693069B180009B000BDC04603018800847C00080201880004018A0000B587B0C3 +:404E40000190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A1340F4 +:404E800002D0074B059304E0064B059301E0064B0593059B180007B000BDC046847C0008010188000001880004018A0082B001900091019A90239B000099D150C04602B014 +:404EC000704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704710B584B00190009100230393EA +:404F0000019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0D6 +:404F4000802300E04023180002B0704710B586B0039002910192039B002B02D0029B002B01D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B51 +:404F800008D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7B032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B7D +:404FC000072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B9B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002BCA +:4050000009D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D0029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B78C1 +:40504000012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B68C4 +:40508000032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B68072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE64 +:4050C000029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B04D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B88 +:405100009B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4B4B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B60 +:40514000464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F01225340DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A022A +:4051800000E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802292041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B63211800B2 +:4051C00000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FD029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B7823 +:405200001A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002B02D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029BC4 +:405240005B7C002B0CD080239B000AE00160AA0000006940186F041092F4FFFF8CF8FFFF00231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A43C0 +:40528000029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E0F8 +:4052C00000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF221A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399DC +:40530000C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F02FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B00BC +:4053400000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B7880 +:40538000012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213401900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B21219F +:4053C0005B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A8123E1 +:405400009B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A50019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019B01 +:4054400000221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046186F04106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019B98 +:405480001B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B00221A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B4121AA +:4054C000180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B1B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB05A0 +:405500009A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D21180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A6880239D +:405540009B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B029A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A439B +:40558000019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BD6C6F041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042B09 +:4055C00032D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF339A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B0047 +:405600005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD0339B005A5000230393039B180004B0704701004A000000264070B590B005900491DE +:4056400000230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF339B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A9342F7 +:4056800002D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049B5B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A70E3 +:4056C00007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B01D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A6C +:40570000019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7A28 +:40574000002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F04E +:4057800051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BDAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102BCB +:4057C00004D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E070230E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049B91 +:405800005A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B1100180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A0050 +:40584000FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71784B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B83 +:40588000013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B78102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002BDE +:4058C00001D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934201D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B7829 +:405900001A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B401A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019BB7 +:405940008133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF339B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B02E +:40598000019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B8133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F968 +:4059C000009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009B002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0054 +:405A000030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063300229B5E9B0830496A4606320020125E9208C032920052586946063109880800A1 +:405A400003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F23B0 +:405A80001340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2052 +:405AC00018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B4B +:405B000035D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B00229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF766 +:405B40005FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B00229B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC046C86F0410A6 +:405B800000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B46063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069BBC +:405BC0009A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039AF5 +:405C00000A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B0299A9 +:405C4000039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B5B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4BA8 +:405C80000299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0C046C04608B070471C7004100000214000B585B0020000916B4606331A80184B86 +:405CC0009A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E10331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D150F9 +:405D000009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC04600ED00E000000008C86F0410000000100230800803D001300238FCD1C046C04644 +:405D40007047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606331B88044A127853431800FFF7E1FFC04603B000BDC006000882B0019001BEFEE757 +:405D800000B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFFB8150008D0150008064B802212069A64044B9B6C002B01DB002300E0024B180080 +:405DC0007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134004D0019B8022D20213430193019B180002B070470000264000B583B00190019B43 +:405E00001A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019B1A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F09E +:405E400005F8C04603B000BDD4150008FEE7000084B0020000916B4607331A706B4607331B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334A43 +:405E8000E8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8235B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039BD6 +:405EC000032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA506B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E00023CB +:405F0000039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E0042304E0022302E0012300E000230393084B084A12680F218A431100039A0F203F +:405F400002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD3581F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180052 +:405F800002B07047000026401CFF000000B585B002006B4607331A70002303936B4607331B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FED1 +:405FC0001F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE03000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4671 +:4060000007331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821002000F06BF905E00221002000F066F9054B0393039B180005B000BD3C700410E6 +:40604000987C000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B0AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE0300029309 +:40608000FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA00F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A0597 +:4060C000E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B500920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F228A +:4061000093431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FE00F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC0600003C70041082 +:40614000000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD03000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A780121BE +:406180000A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B1B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B039324 +:4061C000049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B69 +:406200001B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17236B441B78180007B000BDC046987C0008907C0008947C000800B587B001901723ED +:406240006B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049A019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B443E +:406280001B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D0019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4B8F +:4062C0001A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF734FD17236B441B78180007B000BDC046987C0008907C0008947C000800B589B0A9 +:4063000002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B4607331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B46073370 +:406340001B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B4606331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494BA9 +:4063800011001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B6806932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A7843 +:4063C000069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B69069389 +:40640000069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A42EE +:4064400020D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA1000984727 +:4064800003000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B180009B000BD3C70041021080000907C00089C7C0008FF004200947C0008044B044A50 +:4064C0009269802149040A439A61C0467047C04600F02540034B034A926903490A409A61C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B5047 +:406500000649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02D5 +:40654000D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F0000002 +:40658000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE074 +:4065C000019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A43019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7F11 +:40660000002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D10399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A68D0 +:406640000398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31801221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A60BB +:40668000019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F023DB +:4066C0001B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A43019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6AEE +:4067000003221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BDB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B00890158 +:406740004118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059B180006B07047C0460100B60082B001900023180002B0704782B0019000231800B1 +:4067800002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B420393039B180005B000BD00B587B0039002910192009300230593019A029B1100CD +:4067C0001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B074A934206D9009B064A934202D880239B0001E001235B42180002B07047C04662 +:40680000FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B05180002B0704782B0019080235B03180002B0704782B001900023180002B0704782B088 +:4068400002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B070470000D9 +:4068800084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B42 +:4068C00011001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE502000060 +:4069000090700410E602000000B587B0039002910192029B072B05D9134A144B11001800FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039B2F +:406940009B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039B9A62C04607B000BD8E030000907004108F03000084B002006B4607331A706B4625 +:4069800006330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E230393A4 +:4069C0000EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B070476C71041082B0EFF305830193019B5A1E9341DBB2180002B0BD +:406A0000704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D22180058 +:406A4000F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E1800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019BAC +:406A80001B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE0019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC046B8 +:406AC000C04605B000BDC046E070041014710410187104102471041010B586B003900A000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A4412889F +:406B00009A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E1800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A0009 +:406B400001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B4400229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF7FB +:406B80006CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E1800FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC0462E +:406BC000E070041014710410347104104C71041000B583B001900A006B4603331A70019B002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B5622CA +:406C00001800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC046E0700410147104102471041000B583B001900A006B4603331A70019B002B05D106 +:406C40000E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F76DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046E07004109F +:406C8000147104102471041082B00190019BDBB2180002B0704782B00190019B1B14DBB20F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B08F +:406CC000704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B023 +:406D00007047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B0039002910192029B072B05D9BA +:406D40000F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BD96 +:406D8000E502000088710410E602000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D087 +:406DC000012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B07047FA +:406E0000D871041010B586B0020002910E236B441A800E236B4400229B5E013353D00E236B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FF45 +:406E400003001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400229B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF7C6 +:406E80002FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059B01221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B00221800EF +:406EC000FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB277 +:406F00001A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E1800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B420C +:406F40000593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A4113000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB251 +:406F8000D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFD180007B000BDC046CC060008F471041000B585B0020000916B4607331A70FF2338 +:406FC00003936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D91E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F7FF +:407000009DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91400A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B687E +:407040009A4202D9029B00225A60F6F7A7FB039B180005B000BDC046DC06000840720410747204109472041000B587B002006B4607331A70FF2305936B4607331A781300B2 +:407080005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F74DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B65 +:4070C0005B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A4213D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF030048 +:407100000593059BFF2BDED000E0C046F6F746FB059B180007B000BDDC0600084072041074720410DC72041000B585B0020000916B4606331A806B46063300229B5E039357 +:40714000039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B460633012296 +:4071800052421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B000BDC046407204105473041048730410A07C000800B585B0020000916B46063303 +:4071C0001A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F7ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200DE +:40720000D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFAC04605B000BDC046407204105473041048730410A07C00086C73041010B58EB060 +:4072400008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D31801331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C366 +:4072800001230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A68274903005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001AB93 +:4072C00000225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A78174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A93D9 +:407300000FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B01330A930A9B002BECD0C0460EB010BDC04698730410CC060008A0730410DC06000868 +:407340000C0700081407000882B00190019B1B12DBB2180002B0704786B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED8F2 +:407380002249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029BBC +:4073C0000F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059BE6 +:40740000180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B56 +:40744000032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA0208000844663449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B00BF +:407480005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032B08 +:4074C00038D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB0208000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A50FD +:407500001049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BB0208000844663449B005A5000230593059B180006B0704701004A009F +:40754000FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B77 +:4075800035D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002BCD +:4075C00015D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014045 +:4076000084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B7863 +:40764000022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB008B +:40768000D35800230393039B180004B07047C04601004A000000014000FF008084B0020000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D147 +:4076C000009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B01C2 +:40770000FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B180004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B09D +:407740000190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E040232D +:40778000180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B583B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019B1D +:4077C00011001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B5B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B00190009110 +:407800004D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B54 +:407840009A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF779FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800E4 +:40788000F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF7FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039B13 +:4078C0005B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C0097 +:40790000009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD03000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A00B474041048 +:4079400000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019BB0 +:4079800008229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BD74690410D7 +:4079C000D8680410DC74041000B593B0019002AB180040231A00002101F078FB02AB0C225A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A00B9 +:407A000002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E9341D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FED0 +:407A4000C04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D14C +:407A8000012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434B1B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E110053 +:407AC0001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B11001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C47 +:407B0000059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E11001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059B28 +:407B40000822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A81E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13238A +:407B80006B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B1800F5F70AFF07B000BD01050000207D0008488E000874690410D868041000009FBF3E +:407BC0005475041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039B11001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B001900091FB +:407C0000019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDC04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B59 +:407C40001B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B681800FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B68B5 +:407C80001800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B460633002269 +:407CC0009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09493A +:407D00006B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04602B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB0749EC +:407D40006B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B34 +:407D800041D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B4409 +:407DC0001B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B0095 +:407E00005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B09 +:407E400003936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1D1 +:407E8000009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A500023D8 +:407EC0000393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4643 +:407F000007331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F206A +:407F400003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008082B001900091019B009A9A61C04602B0FF +:407F8000704784B00390029101920399029A98235B0092018A18D318019A1A600399029A98235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019BB0 +:407FC0009A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B00390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B066 +:40800000019000910199009A84235B0092018A18D3181B68180002B07047000000B583B00190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF002396 +:40804000180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF79A +:40808000D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D003 +:4080C000134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC04649 +:40810000247D0008C8750410000038404007000814760410387604104D800310C075041010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B00190000200D +:40814000FFF738F8044B00221A60C04610BDC0460000384040070008247D000810B5074B1B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC046247D000844 +:408180000000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02930E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B3A +:4081C00005481A000021FFF70AFF0020FFF770FDC04605B000BDC04600003840247D000810B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC046A9 +:408200000000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C046B8750410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC046E9 +:408240005807000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A07D98160C160242A0DD10300016118332F +:40828000416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B18687047C0465807000870B505000C1E40D0002802D0836B002B3ED00126636E3342D2 +:4082C00033D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF8002323636A +:40830000616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE7216963 +:408340002800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E804689 +:4083800093B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D033 +:4083C000E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF800233D +:408400002363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC4022ED +:408440000120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD4F +:408480008AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF59 +:4084C0000100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D53000A3 +:4085000070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F0A5F9F8E75807000870760410C58403100E +:4085400010B5024900F09AF910BDC046A9820310002310B5040003604360836081814366C281036143618361082200215C3000F0ADFD2000064BE4612362064B583063625E +:40858000054BA362054BE36200F0C2F910BDC0460195031029950310659503109195031070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B9231A +:4085C00003229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A363280000F094F970BDC046988E000841850310F5 +:4086000010B5024800F088F910BDC046A48E000810B5024800F082F910BDC046A48E0008F8B50C000600F6F79BF8204FBB685D6803239D431E4B2C1B9C466444240B1D4BB9 +:40864000013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF80020F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B7F +:408680001C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E7F40C0008EF0F0000FF0F0000287D0008FC10000851 +:4086C000F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F5368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B04279 +:4087000065D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000F6F7AC +:4087400019F8F8BD680A042850D8A809020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E9368AF +:40878000B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4B0E +:4087C00020001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D802005C305B32C000ACE7012392109340AB +:408800007A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A75 +:40884000904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B6015606CE7C046F40C0008FF010000FC0C000800110008587D000854050000F8B547463D +:40888000CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD1300048 +:4088C0000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0E5FA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BD5D +:408900000411000804110008041100080C1100087047C0467047C0467047C0467047C04610B5034B01001868F4F7A0FD10BDC0465807000810B5034B01001868F4F7CDFD28 +:4089400010BDC04658070008F0B557464546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E0F5F7F6FEF823FF339D4200D88FE2680AD3 +:4089800000D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E062464F +:4089C000636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B467F +:408A0000914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD050 +:408A400003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E568AF +:408A80000836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083021E0102926D83800F5F75AFE1025182302208B4EF3181A005C68083A944200D143 +:408AC0002EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F749FE2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F23C2 +:408B000040208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4A1F +:408B4000944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B68EF +:408B8000013300D16CE14B46019A9B1A59185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D139 +:408BC00042E14B46C01A01235844184353461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E218F7 +:408C0000506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2B00DCC6E001222900134311436519616083 +:408C40003800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B42AB +:408C80009C46B218944463469A6803239846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656050 +:408CC00070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C046F40C0008FF010000FC100008587D00080F100000287D000808100000507D0008DA +:408D0000547D000873688EE608239B46073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A600D +:408D4000F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B42B1 +:408D80009C46E1444B469B680138994500D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4643 +:408DC00053603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B9842B4 +:408E00001CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E231C +:408E40007F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E65B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B4947 +:408E80008A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C046287D00085405000082B000290AD0002A0BD0002B0BD0137839 +:408EC0000B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D0013013 +:408F00001042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A43D7 +:408F40003242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C788218A34204D015E003780C78A34211D10130CE +:408F800001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103EC7 +:408FC000350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF50043370 +:40900000A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5CB6 +:40904000C254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E6051 +:40908000A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D19324094 +:4090C000C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2CE5 +:4091000014D927001A00103F3E09013636019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD10322CE +:4091400097430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083F77 +:40918000F5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504682 +:4091C00081438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132AA6 +:4092000000D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000F5F7A8FA1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B7F +:4092400025D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029A1A +:409280003500D36892685C46D3609A60D5E74A460120464652684946024032434E464144034372604C444B6063680831184360600198F4F712F9CFE71100F4F7D7F80500DC +:4092C000CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D915 +:4093000096E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A009346A3449B4500DA4FE7D7E7032002998446CA +:40934000496881434046091910300290814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC5346524655469268DB680835D3609A60221F242AA2 +:4093800000D98EE0132A00D888E05346316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46424641449960039B01989A1A01231A4375 +:4093C0004A605246526813404246134352465360F5F7D0F943E733680360736843601B2A2DD803003200083308320DE72B00320011685C4619605168D146596092689A6044 +:409400001BE74346FA185B469A604346C91A0123194351607A6801981340424613437B60F5F7A8F935001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B36816 +:409440008360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320018331032BCE7336932000361030071694C +:40948000183318324161BFE65346326951469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D032001833103255 +:4094C0006EE75346326951469A613200706920331832C86164E7C046F40C0008002370B5064C050008002360F5F7C6F8431C00D070BD2368002BFBD02B60F9E7BC8E0008B9 +:4095000070B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E002215 +:40954000022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BDFFEFFFFF70B50C000E25495F03F010F8431C06D08023A2895B011343A38120654F +:4095800070BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB2002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD0DC +:4095C00001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A4311 +:4096000013433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D4829 +:409640008A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392076B +:409680002AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A090A401A2102014302D1100E190E401ABC +:4096C00070BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD01010101AB +:40970000031C0A7801311A700133002AF9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D1043319687F +:409740000A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B433A +:409780009B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD1043045 +:4097C0000431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C0462D +:40980000FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A731C3470002C1DD0012406E00D5D013A355501330134002D14D0002AF6D1F0BD3F +:4098400005000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D02E00DBE79C180021002AE8D019700133A342FBD1E3E7C04680808080FFFEFEFE74 +:4098800030B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002C39 +:4098C000E3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D34446634662 +:409900001C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D84346501C0133834203D36246494618008A +:4099400011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE721 +:409980001D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002C97 +:4099C00009D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7BDFA002800D074E000231A009A46631E9846594601233800A14617004446B04683 +:409A00005B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1ADA +:409A40009A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE0424652449A +:409A8000505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E752 +:409AC0000020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A0021D3 +:409B00004044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D1F7 +:409B40000133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E740465044CA +:409B80009FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A42534101302B +:409BC0001E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF7D9FC641B061E12D0012CF0D03F190121B84200D8391A0F000C +:409C00001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF795F900285CD1002399464346013B009335 +:409C400042460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF90028D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED15F +:409C80005246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C88427A +:409CC00003D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E74346E31A434500D24346013303930023F7 +:409D00004246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF7DDF8002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C3C +:409D40008019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039BB2 +:409D800038009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FB036818001993FFF7ABFC1890AB891B06E3 +:409DC00005D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001347A +:409E00002378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD3770122BA +:409E400052429246002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE7E1 +:409E80003A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD0122A3 +:409EC0000B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34683001B1814785B0058182100531C303922 +:409F00001A000929F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FDC7 +:409F4000630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A89 +:409F800000D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA944648336344119353460E9A0793924500DA0792CE +:409FC000002313934346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B68884665 +:40A00000102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DC0B +:40A04000B0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F077F907220F9B07339343013294469C4412 +:40A0800062460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414604F02CFE002801D000F0FDFD0122484B52422800414603F001F8002801D000F0F6 +:40A0C000F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E70022F4 +:40A10000303B15001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A3069D +:40A1400000D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B56 +:40A1800000D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A81 +:40A1C000119166460E93F5E6847604102C780410FFFFEF7FE8770410129310231C438B46A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C920022043302 +:40A200000D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93F6 +:40A24000E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FD3B +:40A28000E30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A80 +:40A2C00001D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A46C8 +:40A3000013935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E93002311959A4613934BE68B4641461293002981 +:40A3400000D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B073326 +:40A380009343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A70483280 +:40A3C0005A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE5CE +:40A400008B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920123020099E68B461293A30600D483E607220F9B62 +:40A4400007339343013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002373 +:40A4800016AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B680A +:40A4C00002340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0F877041037 +:40A500000C7804103C780410103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA946A3 +:40A540000C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE008365B +:40A58000089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B96086 +:40A5C0007B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F05C +:40A6000037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B0134336001237360F1 +:40A640007B68BC6001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119D90 +:40A68000149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C467360434664440133BC607B60072B00DC61E73A0006990998BE +:40A6C00002F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DD02 +:40A7000066E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103DB1 +:40A740000832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A46641913 +:40A78000013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA5F +:40A7C000002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A00BE +:40A800000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FB7D +:40A84000BC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723CA08354311002A000340303323702800D0 +:40A880000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB2C780410287804103C7804101F98002800DC96E2139A149913009046CE +:40A8C0008B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DC17 +:40A9000000F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F93E +:40A94000002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFBF9 +:40A98000030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7F26 +:40A9C000BC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B9606D +:40AA00007B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFB08 +:40AA400013680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DCC5 +:40AA80007EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F854 +:40AAC000002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A9303357 +:40AB00008B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB046A14616000C004A46326042464444013377 +:40AB40007260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A0FDD1399119A8C466244326042467260CC +:40AB80007A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103EFB +:40ABC000102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A686444013223 +:40AC0000BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC68984617 +:40AC400032AE13E53C780410072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C377080010434D +:40AC80000C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E25346013310 +:40ACC00000D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A9A +:40AD000013005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE200230022D5 +:40AD40004846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D178 +:40AD8000F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9AD4 +:40ADC0000A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC08360028A3 +:40AE000007D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E132000832002800DACCE111980133106014987B60441852 +:40AE40005060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A00069959 +:40AE8000099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18601861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB0293AD +:40AEC0005346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D032 +:40AF0000FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF8FE +:40AF40001198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B18D4 +:40AF80006A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E303113 +:40AFC000217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C0133A0 +:40B0000021AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB17F8 +:40B040001A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9B42 +:40B08000BC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793DF +:40B0C000062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019382 +:40B1000003234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B80 +:40B140009446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C04628780410EC770410207804101F9B1393002B00DCD5E05246002A00D092E0E20710 +:40B1800000D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A14935C +:40B1C0000E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD68 +:40B20000002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA7C +:40B24000521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF76E +:40B2800010FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E5012323407D +:40B2C000139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF7A6 +:40B30000F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF62 +:40B3400016ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716AB14 +:40B38000D877FEF779FF01235B429A46C4E7C0463C780410F0770410F477041030B504009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202925E +:40B3C0000592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E7DA +:40B400008B232360F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC04658070008002904D0FF2A04D801200A7070470020BF +:40B44000FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE431C00D070BD2368002BFBD02B60F9E7BC8E0008002370B5064C05000800236098 +:40B48000F2F76AFE431C00D070BD2368002BFBD02B60F9E7BC8E0008F0B545468046DE4657464E464246E0B50C69126985B00B0002910020944200DD90E01422944663447C +:40B4C00099464A46013CA300D6181422424493469B4433681500591C5B461868019201F057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395E6 +:40B50000634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD22D +:40B54000039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B57 +:40B58000019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B70 +:40B5C0000A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D00CA +:40B6000016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD002831 +:40B640002FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD0030008332B +:40B68000269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B0332 +:40B6C000B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FFB04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F03E +:40B7000067FD02000B002000290001F01DFE04000D0003F013FB0022039000232000290001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C91832000868496849 +:40B740003B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA84E29C460D930023049A99461100614484 +:40B780000491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239AFE +:40B7C000039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE97 +:40B800005346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E4046 +:40B840001A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0B0FC04000D0076100837002EEED1220008985F +:40B8800009992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC002801D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B009E +:40B8C00094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B75 +:40B9000002F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F0D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002855 +:40B9400001D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002801D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149B1F +:40B98000994638E00000F07F297804100F270000507904105C7904100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33F887904105C +:40B9C0006079041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B01F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F09A +:40BA0000E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F902000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F0DD +:40BA400033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE157 +:40BA80003100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D0F93491918E68A48D5E50023524600215364504600F080FD5346186401235B42A5 +:40BAC00007930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D30002200D1 +:40BB00002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B003000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F070 +:40BB400047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE00022534B02F02CFB01239C46002200232E +:40BB800006000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF8804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013B97 +:40BBC000303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B0015 +:40BC000001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2F7 +:40BC4000079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C446346049300F060FD804632E0069A039BFD +:40BC8000D21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF9020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03FCA +:40BCC000000024403204000012040000000010FE2878041088790410069B4C4608930023984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A089223 +:40BD0000049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0EB +:40BD4000A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020228A +:40BD80003000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C466A +:40BDC000844463460693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B3B +:40BE000000D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E2079C0A9A013C2300944663440893012322 +:40BE4000334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD494604004246380000F0ECFDC3688146B8 +:40BE8000002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002BF5 +:40BEC00000DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A22C4 +:40BF0000380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946E4 +:40BF4000013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E0290000230A22504600F051FB050049462800BF +:40BF8000FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B78A6 +:40BFC0000A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F055 +:40C0000003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D0098462F +:40C040000E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F83B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F0AB +:40C08000C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA246050094 +:40C0C0008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E617 +:40C10000079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B93B5 +:40C14000FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FACF +:40C18000089E099F32003B0004000D0000F0A0FF002800D0B2E0802000068446390061440B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21A0D +:40C1C0000D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346186401230A90079323930E93FFF707FBF9 +:40C2000043460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C7D +:40C240002E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A234025 +:40C28000DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED19C +:40C2C000FFF7E4FA039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E500239946C2 +:40C3000098460CE70000F07F000014403304000000001C400000C0FC8879041060790410129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F052 +:40C34000FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F000600BA +:40C3800002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D14446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B76 +:40C3C000651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5CF +:40C40000069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013BA6 +:40C4400013933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE0022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B7046 +:40C480000C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BE6 +:40C4C000A84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B99 +:40C5000001DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF736 +:40C5400073FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C04688790410000024400000E03F00001C400000C0FC044B1B68586B002801D0F03019 +:40C5800070470248FBE7C04658070008880B000870B50500080011000022064C22601A00F1F7F8FF431C00D070BD2368002BFBD02B60F9E7BC8E000870B50400C06C0D0062 +:40C5C00000280AD0AB00C318186800280FD002681A6000230361C36070BD212204212000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF002834 +:40C60000F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000211430036801311E04360C56431B0C5343E8 +:40C64000F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF9F +:40C6800029002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0FE3 +:40C6C00001D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B0803601000704719040022002901D11B0C0A +:40C700001032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF782 +:40C740003BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF7A9 +:40C780001BFF14220300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B4440193BE +:40C7C0009A454FD253461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120CC2 +:40C800001B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734352 +:40C8400007043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D174 +:40C88000013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C38 +:40C8C000002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD04246D26C736894469B0063441A6864103260BD +:40C900001E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE70121404650 +:40C94000FFF73AFE054B05004361012303614346986400230360B5E7507A041071020000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB3688346914660 +:40C9800049689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD132694846970031001F2214311040CF1981460028E6 +:40C9C00025D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A683260A2 +:40CA00001E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B04391F +:40CA40001C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F4277 +:40CA800000D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB4746260000251437143643465968FFF780FD43468146C560186909 +:40CAC0004D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B18120419148B +:40CB0000120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA24352 +:40CB4000043289180439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E0069 +:40CB8000A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D19E +:40CBC000009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B33 +:40CC00009C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFFB4 +:40CC4000CEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D070BD2368002BFBD02B60F9E7BC8E0008F0B557464E46DE464546E0B5936883B0D9 +:40CC800001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218521090465A46501CC0194246404501D99D +:40CCC000804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F9B3892A4A134080221343B381434620005A463461B8463C00584473619B1A30609B +:40CD0000B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E7019874 +:40CD4000F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3815246002340429360536003E0002352460020536003B03CBC90469946A246AB46D0 +:40CD8000F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090258 +:40CDC00065D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4202 +:40CE000001D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D37A +:40CE40008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A14 +:40CE80005241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030BF9 +:40CEC0008B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430BC5 +:40CF00008B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D345 +:40CF40000B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C9 +:40CF8000C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B42DF +:40CFC0002DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D323 +:40D000008B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B0081 +:40D04000C01A5241411A00D20146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C0468446101CF7 +:40D0800062468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F0F1 +:40D0C00025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD012010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B0498423C +:40D1000001D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40187047C04604030202010101010000000000000000002B11D1002A0FD1002900D14B +:40D14000002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684601B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E00A4 +:40D1800080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D980235B029846C4444B46514343433604360C250C24046544A419591849192000EC +:40D1C0000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B422FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D5EB +:40D2000074E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E0824254 +:40D24000D0D900220023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A434646D6 +:40D280007B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B00E2 +:40D2C0005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A4017001F +:40D300001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B446974066461A +:40D340003B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D155 +:40D38000AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E1A8 +:40D3C0001F2D00DD38E12020431B9A460B0050468340994613004846EB401843030050468240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650ACF +:40D40000002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD8409140C3 +:40D4400097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C40600798 +:40D48000760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B00ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E2040048 +:40D4C00067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E7331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E01D +:40D500000A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE130 +:40D540008022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE0BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C400584 +:40D58000400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA4292411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D00283871 +:40D5C000854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E419FB +:40D60000E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B00D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD840A4 +:40D640000300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EB04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51A06 +:40D680002600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BBA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E60025002600279C +:40D6C00006E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A080098409C46834653461000D84003005846184363469A40531E9A4153460243D94003E7C2 +:40D7000026003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B9A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E64E +:40D74000002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E6BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E62000384328 +:40D78000002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E650460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A4186 +:40D7C0004B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4086 +:40D8000033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE783 +:40D840001800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4292411C1B5242A41AD846F1E51800104300D163E7F808670707438020E408000351 +:40D88000044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304ED6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E408AA +:40D8C00000030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E500216BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027433C +:40D900007C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E70C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED040238C +:40D9400056469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D00BA +:40D980008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F600134333439946C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D019586 +:40D9C0005ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A9446002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F4603004F +:40DA0000334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B4A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB65 +:40DA400003000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B468B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E78D +:40DA8000594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B0022AF +:40DAC0001B1A8FE7002301229B468BE75146032288E700239846013304260024039367E70323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C46002300240E +:40DB00000022984600211203130B0A0D12051A432305124C40462240134362465B00D2075B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034CC1 +:40DB4000E0E70023014C00229846DBE7FF07000001FCFFFF5C7A04100DFCFFFFFFFF0F80D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C74 +:40DB8000039313041B0C3900280090460193FFF7FFF80200019B83465A43280039009146FFF77CF9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E19B +:40DBC00002235B429C464544E3444B46EB1A390018000493FFF7DCF8019B05004343390004989946FFF75AF9330409041B0C0B43994509D943446A1E984500D91AE199454E +:40DC000000D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A46090C4E460D001204120C4543059151437243704352190E0CB218954203D9802510 +:40DC40006D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D117E139001800FFF78BF8019B05004343BC +:40DC8000390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1884200D804E1023D4144049BCB1A180039000493FFF76CF8019B82464343390046 +:40DCC00004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D9E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F46B1 +:40DD00002A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC4660441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE318A1 +:40DD4000002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318994A934268DD0123029A984C1A400023944698460022C5E680224B4612031342C4 +:40DD80000AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC468A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E60300D0 +:40DDC0005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0843465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B24538 +:40DE0000AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A4377 +:40DE40005B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1EB04529D91100864200D065E7039A934200D061E762E7012149420120C21A382ABD +:40DE800021DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934454E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED0110008 +:40DEC0003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340204308431A00430709D00F230340042B05D00100081D88429B415B42D2181302C0 +:40DF00003AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC46E244AA45AD416D424544ED182D1A96E68A1E03994D008D428941494241447618B6 +:40DF400003958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E91411943072300220B4009D00F2300220B400800042BBDD1010053075202120BE4 +:40DF8000C9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D42C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E5F4 +:40DFC000FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C424F +:40E0000001D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E709 +:40E04000FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD1304307008146AD +:40E0800078427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D15846024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D0012017 +:40E0C000013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D87B +:40E100000020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D02D +:40E14000002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC90469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE73100022302 +:40E180000143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C44595 +:40E1C000D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C0398464E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F4C +:40E200002404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E400BB +:40E240008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554ABF00D25997465B460343994600D087E000239B46023308270293CEE742460192CB +:40E28000022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002112030B0D120B1B051343434A240513401C436400ED0764082C434846210007B051 +:40E2C0003CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F402343C2 +:40E300009B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234320D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A51460200BC +:40E34000D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002299469CE70024002201206EE7534603206BE700239B4601330427002602934CE760 +:40E38000032381460C27029347E780220023002512039946054C82E75C464B4602986FE75C464B46019502986AE7C046FF07000001FCFFFF9C7A0410FFFF0F800DFCFFFF46 +:40E3C0004A464946170C1A0C1B041B0C08041900000C41431500884619007D437943039589462900150045434D44029545462D0CAA46029D5544A94506D98A468021490278 +:40E400008946CA4451460391290C0491414609042D04090C88462900250C24044144240C0591210041438846210079438A466843414650448146080C48446F43824503D9F3 +:40E440008021490289464F44010C894639004944029141460F0404993F0C88460004C01980444146049159460F0C0904090C884659438A4639005143894641464A435146AF +:40E48000090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A46414661437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D1922 +:40E4C000A94503D98021490288464444049F0399B84641448B468345804141428846514608042F04000C3F185846029910188946904292414F44BA46524299469346C244B0 +:40E50000D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B4213437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D0343AC +:40E5400052021343E20156D501205A0803401343E207134364085A48604400284DDD5A0709D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC0006A +:40E5800014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D1D407CE6802259461203114208D0144206D122431203120B45469946434C6EE671 +:40E5C0005B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382AE6 +:40E6000006DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B413E +:40E640005B42E418230221D50125019B01241D4000230022994622E61F2521006D42281AC1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D0F9 +:40E680000F2200241A401800042AD6D1030065076402220BDB082B4301259946019B00241D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C04617 +:40E6C000FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E00610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846D5 +:40E70000DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E1002810D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241A0D +:40E7400001261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A441644264 +:40E780000C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DDE9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE178 +:40E7C00020223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D140 +:40E80000AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B0C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946E5 +:40E84000A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760DDBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382BC4 +:40E8800000DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B01369E4200D14BE101225B4B1C407B0817401F43E207174364088FE70800104314 +:40E8C00000D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE70800104300D1CAE0581E8446002800D0E7E05244524580416418404224181700012671 +:40E90000230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4301254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A8245FB +:40E94000BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B984614E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E749 +:40E980003800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E7071E +:40E9C000520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202DD9 +:40EA000071D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE12026A1 +:40EA400027005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B5242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE6EF +:40EA80001F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE61F +:40EAC0008C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E7CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B001343E1 +:40EB000000D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE66646D8 +:40EB40000024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511E8A410021174392E6002E14D126005046064362D0DB43002B5CD1871897429241F5 +:40EB800064185242A418664687E650462043441EA041002460E7574EB4454ED0802636045B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046E6 +:40EBC000B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A7F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D0071 +:40EC0000154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C00170066464F +:40EC4000CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E40800030442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E004F +:40EC80002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE6802400252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE568 +:40ECC0000C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441EA04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E48 +:40ED00000D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD05430120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134D92 +:40ED40000A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE8401E +:40ED8000A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21AEF +:40EDC0001F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B12052243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081A77 +:40EE0000C4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144AE7 +:40EE4000D21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B05224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E785 +:40EE8000002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF72BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C04692 +:40EEC000F8BC08BC9E46704701B40248844601BC604700BFAD11000825732025753A2072657475726E65642066726F6D207073615F776169745F616E7920776974686F7585 +:40EF00007420434F4E54524F4C5F524F545F53525620626974206F6E207369676E616C733D28307825303878290A000025732025753A20676F742061207A65726F206D6573 +:40EF400073736167652073697A6520746F20434F4E54524F4C20524F545F5352560A000025732025753A20636F756C64206E6F7420726561642074686520656E74697265EE +:40EF80002074657374207061796C6F6164207374727563747572650A0000000025732025753A20496E76616C69642074657374204944207761732073656E74210A000000DC +:40EFC00025732025753A20476F7420696C6C6567616C2056616C756520696E207465737420616374696F6E0025732025753A20556E6578706563746564206D65737361674E +:40F0000065207479706520256421000070617274315F6D61696E000025732025753A2072657475726E65642066726F6D207073615F776169745F616E7920776974686F750B +:40F040007420524F545F5352565F524556455253455F4D534B206F7220524F545F5352565F44425F5453545F4D534B20626974206F6E0A0025732025753A20676F74206112 +:40F08000207A65726F206D6573736167652073697A6520746F205245564552534520524F545F5352560A000025732025753A206D656D6F727920616C6C6F636174696F6E4D +:40F0C000206661696C7572650A00000025732025753A20556E6578706563746564206D657373616765207479706520256421000025732025753A2043616C6C65722070619C +:40F1000072746974696F6E206973206E6F6E207365637572650A000070617274325F6D61696E00007365727665725F746573745F70617274310000007365727665725F745A +:40F140006573745F70617274315F6D757465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F2063726514 +:40F18000617465206D7574657820666F722073656375726520706172746974696F6E207365727665725F746573745F7061727431210A000025732025753A204661696C65E5 +:40F1C0006420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E207365727665725F746573745F7061727431210A000032 +:40F20000031A0000041A000038F103100B000000B41A00081C0000007365727665725F746573745F70617274315F696E697400007365727665725F746573745F706172747E +:40F24000320000007365727665725F746573745F70617274325F6D757465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A2046D2 +:40F2800061696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E207365727665725F746573745F7061727432210A000014 +:40F2C00025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E207365727665725F7465FD +:40F3000073745F7061727432210A000044F203100B000000141F00081C0000007365727665725F746573745F70617274325F696E6974000025732025753A207061727469EB +:40F3400074696F6E73206973204E554C4C210A00696E69745F706172746974696F6E730025732025753A206D656D6F727920616C6C6F636174696F6E206661696C757265EB +:40F380000A00000061626364666768696A6B6E00666768696A6B00006162636465666768696A6B00616263696A6B6C6D6E6F7000616263646500000025732025753A20726C +:40F3C000657475726E65642066726F6D207073615F776169745F616E7920776974686F757420524F545F5352565F464143544F5249414C20626974206F6E0A002573202549 +:40F40000753A20676F74207268616E646C65206F6E20636F6E6E656374206D6573736167650A000025732025753A20524F545F5352565F464143544F5249414C20524F549B +:40F440005F5352562073686F756C64206E6F742067657420616E7920706172616D730A0025732025753A20676F74204E554C4C207268616E646C65206F6E2063616C6C2074 +:40F480006D6573736167650A0000000025732025753A207268616E646C652076616C7565206368616E676564206265747765656E2063616C6C730A0025732025753A206756 +:40F4C0006F74204E554C4C207268616E646C65206F6E20646973636F6E6E656374206D6573736167650A000025732025753A20556E6578706563746564206D657373616719 +:40F500006520747970652025642100007073615F746573745F7365727665725F736964655F6D73675F73697A655F617373657274696F6E007073615F746573745F7365725A +:40F540007665725F736964655F6D73675F726561645F7472756E636174696F6E000000007073615F746573745F7365727665725F736964655F736B69705F7A65726F000061 +:40F580007073615F746573745F7365727665725F736964655F736B69705F736F6D6500007073615F746573745F7365727665725F736964655F736B69705F6D6F72655F746D +:40F5C00068616E5F6C656674000000007073615F746573745F7365727665725F736964655F7268616E646C655F666163746F7269616C00007073615F746573745F73657210 +:40F600007665725F736964655F63726F73735F706172746974696F6E5F63616C6C0000005C7D00080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0AC7 +:40F640000A4661756C74547970653A20000000004D656D4D616E6167654661756C7400004275734661756C740000000055736167654661756C740000486172644661756C06 +:40F68000740000000A0A436F6E746578743A00000A0A2D2D204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074696F6E0088 +:40F6C0000A52252D34643A202530386C580000000A53502020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A2025F0 +:40F7000030386C580A50535020203A202530386C580A4D535020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A20546872656164000045 +:40F740000A50726976203A2055736572000000000A50726976203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A205053500081 +:40F780000A537461636B3A204D535000751A0010851A0010A71A001025732025753A2053504D2072656164206C656E677468206D69736D6174636800981C0010B01C0010D0 +:40F7C000C81C00102C1D0010B81D0010521E0010741F00108A1F0010F21F00108020001020210010CC270010E4270010FC2700104E2800109E28001062290010C629001092 +:40F80000E62D0010E62D0010B82B00101C2C00102C2C0010782C0010D82C0010E62D0010E62D0010E62D0010E62D0010422B0010862B0010FE2A0010CC2A0010E62D0010DC +:40F84000E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D001058 +:40F88000E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010E62D0010382D001070300010A0300010F43000105831001068310010303200107073615FA0 +:40F8C0006D61635F6F7065726174696F6E0000007073615F686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E000000001F +:40F900007073615F616561645F6F7065726174696F6E00007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F83 +:40F940007065726174696F6E000000007073615F656E74726F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F70657261746984 +:40F980006F6E73007073615F660000007073615F665F6D757465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C65BE +:40F9C0006420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C656420746F69 +:40FA000020637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A0100031A0100D2 +:40FA40008CF903100B0000007C5F00081C0000007073615F665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696AF2 +:40FA80006B6C6D6E6F707172737475767778797A303132333435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000002E2F636F15 +:40FAC0006D706F6E656E74732F5441524745545F5053412F73657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E543D +:40FB00005F5053415F5352565F494D504C2F706974735F696D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E9C +:40FB4000203E3D205053415F4954535F46494C454E414D455F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D4503 +:40FB80005F4D41585F4C454E000000007073615F6974735F7365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63655B +:40FBC0000A0000007073615F6974735F6765745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615FF3 +:40FC00006974735F6765745F696E666F5F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735FA5 +:40FC400072656D6F76655F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E65787067 +:40FC80006563746564206D657373616765207479706520256421000025732025753A204B5653746F726520696E6974696174696F6E206661696C6564207769746820737474 +:40FCC0006174757320256421000000006D6573736167655F68616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A2070BC +:40FD00006172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F7220736563757265207061728B +:40FD4000746974696F6E20697473210A0000000025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172C6 +:40FD8000746974696F6E20697473210A00000000ECFC03100B000000346400081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441524745545FF4 +:40FDC0005053412F73706D2F434F4D504F4E454E545F5350452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F6964202A29304A +:40FE00002900000068616E646C655F6D656D20213D202828766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5F73697A653B +:40FE40000000000068616E646C6520213D2028287073615F68616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E646578205B25F8 +:40FE8000645D20697320626967676572207468616E2068616E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048616E646CD5 +:40FEC00065202564206973206E6F7420666F756E6420696E20657870656374656420696E64657821200A000025732025753A205B4552524F525D20526571756573742066E2 +:40FF00006F722064657374726F79206279206E6F6E2D6F776E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746F2067657446 +:40FF4000206D656D6F727920666F7220616E20696E76616C69642068616E646C6521200A0000000025732025753A205B4552524F525D205265717565737420666F722068AE +:40FF8000616E646C65206D656D6F7279206973206E6F7420616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D67722D3E0F +:40FFC00068616E646C65735F706F6F6C5B706F6F6C5F69785D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67725F68616E2F +:020000041004E6 +:40000000646C655F64657374726F79007073615F686E646C5F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206E6F7420614D +:400040006C6C6F77656420746F2062652063616C6C65642066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74206465636CCD +:400080006172652065787465726E2066756E6374696F6E730A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065D2 +:4000C000787465726E2066756E6374696F6E73206C6973740A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350B1 +:40010000452F73706D5F636C69656E742E6300006F734F4B203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D3D20300042 +:40014000666C616773202620726F745F736572766963652D3E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A205349442030782578208C +:40018000697320696E76616C6964210A0000000025732025753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C7920776974682073696465 +:4001C000202564206D696E6F722076657273696F6E20256420616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E65AD +:400200006374206D65737361676520697320696E61636365737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D6170686F7265208A +:40024000666F7220636F6E6E656374206D657373616765006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E672063616C6C2096 +:400280006D65737361676520697320696E61636365737369626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320696E6163EB +:4002C0006365737369626C650A00000025732025753A20436F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D657373616760 +:40030000650000007073615F636F6E6E6563745F6173796E6300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E2E +:40034000656374007073615F63616C6C5F6173796E6300007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F7365000000257320257A +:40038000753A204661696C656420696F7665632056616C69646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D2830582570293A +:4003C000206F75746C656E3D282564290A00000025732025753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E672073746174653A2025643F +:40040000207768696C65202564206973206578706563746564210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F535002 +:40044000452F73706D5F636F6D6D6F6E2E6300002828766F6964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D20616374697644 +:40048000655F7468726561645F69640076616C69646174655F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174D7 +:4004C000655F6173736572740000000053504D5F6368616E6E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202DE5 +:40050000204661696C656420746F20637265617465206368616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616343 +:4005400074697665206D65737361676573206D656D6F727920706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D6573736167652064617461201C +:40058000697320696E61636365737369626C650A0000000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F766568 +:4005C000635B25645D20697320696E61636365737369626C650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F85 +:4006000075745F7665635B25645D20697320696E61636365737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D65736E +:4006400073616765000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F7365727665722E63000050 +:400680006F734F4B203D3D206F735F73746174757300000025732025753A20446571756575652066726F6D20656D7074792071756575650028666C616773202620283078D2 +:4006C00038303030303030302929203D3D203000666C616773202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D20637572725F80 +:40070000706172746974696F6E00000025732025753A20696E74657272757074206D61736B2030782578206D7573742068617665206F6E6C7920626974732066726F6D20C0 +:4007400030782578210A00002861737365727465645F7369676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C2929207C7C2014 +:4007800028282830783830303030303030554C2920213D2074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F7369676E616C73B4 +:4007C0002929000025732025753A206D736720697320696E61636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6CEF +:4008000079203120626974204F4E20616E64206D757374206265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E6F742061BF +:400840006374697665210A0025732025753A205265636569766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920E1 +:40088000726F6F74206F66207472757374207365727669636500000025732025753A207073615F676574202D20756E6578706563746564206D6573736167652074797065F4 +:4008C0003D3078253038580025732025753A20496E76616C696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365737369626C16 +:40090000650A000025732025753A20496E76616C6964206F75747665635F6964780A000025732025753A20496E76616C6964207772697465206F7065726174696F6E20287A +:400940005265717565737465642025642C20417669616C61626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A29302900000053 +:400980006163746976655F6368616E6E656C2D3E6D73675F70747220213D202828766F6964202A293029000025732025753A207374617475732028305825303878292069D9 +:4009C00073206E6F7420616C6C6F77656420666F72205053415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206973206E6FB5 +:400A00007420616C6C6F77656420666F72205053415F4950435F43414C4C000025732025753A207073615F7265706C792829202D20556E6578706563746564206D657373F3 +:400A400061676520747970653D3078253038580025732025753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F6964203D2003 +:400A80002564290A0000000025732025753A207073615F63616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A006163746900 +:400AC00076655F6D73672D3E6368616E6E656C20213D202828766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E74657272757074B4 +:400B000020666C616720776974686F7574206465636C6172696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E67650A000034 +:400B400025732025753A207369676E616C2030782578206D7573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F656F692829E2 +:400B80002063616C6C656420776974686F7574207369676E616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F73657276EC +:400BC0006963655F71756575655F646571756575650000007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615F7265616487 +:400C0000000000007073615F77726974650000007073615F7265706C790000007073615F6E6F7469667900007073615F636C656172000000515F4D5554000000515F575F25 +:400C400053454D00515F525F53454D002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F434F91 +:400C80004D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E63000000286F734F4B203D3D206F735F73746174757329207C7C20286F734572726F7252C0 +:400CC00065736F75726365203D3D206F735F7374617475732900000025732025753A206D657373616765206461746120697320696E61636365737369626C650A00000000E0 +:400D000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756575655F73656D20213D204E554C4C000071756575655F726561645F7372 +:400D4000656D20213D204E554C4C0000340C04100B000000586800081C0000003C0C0410000000007468000810000000440C04100000000084680008100000006F6E5F7021 +:400D80006F707065645F6974656D00002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F69700E +:400DC000635F71756575652E63000000717565756520213D204E554C4C000000626173655F71756575655F6D656D20213D204E554C4C0000626173655F71756575655F6DFC +:400E0000656D2D3E6D61676963203D3D204950435F51554555455F424153455F4D414749430000006D7574657820213D204E554C4C00000066756C6C5F71756575655F73AB +:400E4000656D20213D204E554C4C0000726561645F73656D20213D204E554C4C0000000071756575652D3E6D61676963203D3D204950435F51554555455F50524F44554377 +:400E800045525F4D41474943000000006F734F4B203D3D206F735F737461747573000000286F734F4B203D3D206F735F73746174757329207C7C20286F734572726F7254B4 +:400EC000696D656F7574203D3D206F735F737461747573290000000071756575652D3E6D61676963203D3D204950435F51554555455F434F4E53554D45525F4D4147494301 +:400F0000000000000000000000000000096400103D6400105D640010ED6500101B61001041660010B166001021670010376100108D6700109F670010DD670010236800109D +:400F400073680010AD6800100000000000000000000000000000000071E6021071E602101B61001071E6021071E60210276100103761001071E6021071E602104761001067 +:400F8000676100108B61001071E602100D0000000D0A00002B49504400000000302C434C4F53454400000000312C434C4F53454400000000322C434C4F5345440000000083 +:400FC000332C434C4F53454400000000342C434C4F534544000000002B43574A41503A005749464920000000554E4C494E4B0000414C524541445920434F4E4E4543544553 +:40100000440000004552524F52000000776474207265736574000000536F667420574454207265736574000062757379200000002B43495052454356444154412C00000002 +:40104000415400004F4B0A00415445300000000041542B474D52000053444B2076657273696F6E3A25642E25642E25640000000041542076657273696F6E3A25642E256419 +:401080002E25642E2564000041542B554152545F4355523D25752C382C312C302C30000041542B554152545F4355523D25752C382C312C302C33000041542B554152545F3A +:4010C0004355523D25752C382C312C302C32000041542B554152545F4355523D25752C382C312C302C31000041542B43574D4F44455F4355523D25640000000041542B438D +:4011000049504D55583D310041542B5253540000726561647900000041542B4357444843505F4355523D25642C25640041542B434950524543564D4F44453D310000000044 +:4011400041542B43574A41505F4355523D222573222C22257322000041542B43575141500000000041542B4349465352000000002B43494653523A53544149502C2225315C +:40118000355B5E225D2200002B43494653523A5354414D41432C222531375B5E225D220041542B4349505354415F4355523F00002B4349505354415F4355523A67617465B7 +:4011C0007761793A222531355B5E225D220000002B4349505354415F4355523A6E65746D61736B3A222531355B5E225D2200000041542B43574A41505F4355523F000000FA +:401200002B43574A41505F4355523A22252A5B5E225D222C222531375B5E225D2200000041542B43574C41503D22222C222573222C0000002B43574C41503A28252A642CBC +:4012400022252A5B5E225D222C256868642C000041542B43574C4150000000005544500041542B43495053544152543D25642C222573222C222573222C25642C2564000068 +:4012800041542B43495053544152543D25642C222573222C222573222C256400455350383236363A3A5F6F70656E5F7564703A206465766963652072656675736564207422 +:4012C0006F20636C6F736520736F636B6574000054435000455350383236363A3A5F6F70656E5F7463703A20646576696365207265667573656420746F20636C6F7365209F +:40130000736F636B6574000041542B434950444F4D41494E3D222573220000002B434950444F4D41494E3A2573252A5B0D5D252A5B0A5D0041542B43495053454E443D25D9 +:40134000642C256C750000003E00000053454E44204F4B002C25642C0000000025640A0025643A0041542B43495052454356444154413D25642C256C7500000041542B439D +:401380004950434C4F53453D256400002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A83 +:4013C00025686878222C256868752C25642C25642C25642C25642C25642C2564290A00002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A1E +:40140000256868783A256868783A256868783A256868783A25686878222C256868752C25642C2564290A000025345B5E225D0A00732E2E2E00000000702E2E2E00000000BC +:40144000455350383236363A3A5F6F6F625F62757379282920756E7265636F676E697A656420627573792073746174650A000000455350383236363A3A5F6F6F625F6275C6 +:40148000737928292041542074696D656F75740A000000002E2F636F6D706F6E656E74732F776966692F657370383236362D6472697665722F455350383236362F4553507E +:4014C000383236362E637070000000005F736F636B5F6163746976655F6964203E3D2030202626205F736F636B5F6163746976655F6964203C203500256C643A0000000022 +:40150000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953434F4E4E4543540A00434F4E4E45435445440A0000455350383236363A06 +:401540003A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C696420415420636D640A00000000455350383236363A3A5F6F6F625F636F6E6E656306 +:4015800074696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F75740A00005F636F6E6E5F737461745F636200000041542B43574D4F440B +:4015C000455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F44455F4445463D2568686400002E2F706C6174666F726D2F43616C6C627C +:4016000061636B2E680000005F6F7073000000002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F646174610047 +:401640000000000000000000FD6F0010157000103370001000000000B71DC1046E3B8209D926430DDC7604136B6BC517B24D861A0550471EB8ED08260FF0C922D6D68A2FF4 +:4016800061CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BC2969756758B5652C836196A7F2BD86EA60D9B634A +:4016C00011105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F52FBA582E5E66486585B2BBEEF46EABA3660A9B7C1 +:40170000817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C32220B4CE953D75CA28803AF29F9DFBF646BBB8FB7F +:40174000F1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B4323C53D002E7220C12ACF9D8E1278804F16A1A60C1B67 +:4017800016BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB5E6116202FBD066BF469F5E085B5E5AD17D1D5741 +:4017C0006660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BB258B23B69296E2B22F2BAD8A98366C8E41102F838C +:40180000F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F7555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF36 +:4018400086D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E5CAD8A73EBB04B77560D044FE110C54B3836864645 +:401880008F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D8322C769B3F9B6B5A3B26D6150391CBD40748ED970A18 +:4018C000FFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE6BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE7F +:401900006F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAACCC0B8A77BDD79A3C660369B717DF79FA85BB492AD +:401940001F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4A2BDD0C479CC0CD43217D827B9660437F4F460072F1 +:40198000F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E065B061D0BEC1BDC0F51A69337E6BB52333F9D113E8F +:4019C0008880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD2CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EACA +:401A000018EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9EBBB03E930CADFF97B110B0AF060D71ABDF2B32A6E4 +:401A40006836F3A26D66B4BCDA7B75B8035D36B5B440F7B10000000000000000BD180010F91800104B7100100000000000000000B11A0010D91A00108971001000000000CD +:401A800000000000000000000000000071E602101E7B0010EA7A0010EE7A0010F27A0010F67A0010FA7A0010FE7A0010027B0010067B00100A7B00100E7B0010127B001037 +:401AC000167B00101A7B0010707B00104C7B0010747B0010507B0010787B0010547B0010587B00105C7B0010607B0010647B0010687B00106C7B00107C7B00109A8F001044 +:401B00009E8F0010A28F0010A68F0010AA8F0010BE8F0010BE8F0010AE8F0010B28F0010B68F0010BA8F00109ECA0010B6CA0010B2CA0010AACA0010AECA0010A6CA001073 +:401B4000AECA0010A2CA0010AECA0010AECA0010505341004B455900BAD10010D2D10010CED10010C6D10010CAD10010C2D10010CAD10010BED10010CAD10010CAD10010F2 +:401B8000637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F171D8311504C723C31896059A071280E2EB27B27515 +:401BC00009832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027F503C9FA851A3408F929D38F5BCB6DA2110FFF3D2FB +:401C0000CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC629195E479E7C8376D8DD54EA96C56F4EA657AAE084A +:401C4000BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949B1E87E9CE5528DF8CA1890DBFE6426841992D0FB054BB1638 +:401C8000C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A1B +:401CC0008FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FD45AFAFEA239C9CBF53A4A4F7E47272969BC0C05BDE +:401D000075B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E534F9F1F108E2717193ABD8D873623131532A15153FFA +:401D40000804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212361B80809BDFE2E23DCDEBEB264E2727697FB2B2CDEA75759F6F +:401D80001209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D6617DB3B3CE5229297BDDE3E33E5E2F2F7113848497AF +:401DC000A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED97239394B944A4ADE984C4CD4B05858E885CFCF4AC9 +:401E0000BBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F91004020206FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E38A +:401E4000A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA754221216320101030E5FFFF1AFDF3F30EBFD2D26DA4 +:401E800081CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E827A3D3D47C86464ACBA5D5DE73219192BE673739516 +:401EC000C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D32814143CA7DEDE79BC5E5EE2160B0B1DADDBDB7630 +:401F0000DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEFC46262A6399191A8319595A4D3E4E437F279798B74 +:401F4000D5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F407CFEAEA25CA6565AFF47A7A8E47AEAEE910080818C6 +:401F80006FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C3E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E7 +:401FC000E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FAE5757F969B9B9D01786869199C1C1583A1D1D27279E9EB907 +:40200000D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E2215878792C9E9E92087CECE49AA5555FF50282878A5DFDF7AAB +:40204000038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B05A2D2D771E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AFF +:40208000A5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE67677D562B2B19E7FEFE62B5D7D7E64DABAB9AEC767617 +:4020C000458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A2EA45AFAFBF239C9CF753A4A496E472725B9BC0C0DA +:40210000C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E508F9F1F193E2717173ABD8D8536231313F2A1515F6 +:402140000C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E0707362412129B1B80803DDFE2E226CDEBEB694E2727CD7FB2B29FEA75756B +:402180001B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D6CE7DB3B37B5229293EDDE3E3715E2F2F97138484AB +:4021C000F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBE4B723939DE944A4AD4984C4CE8B058584A85CFCFC5 +:402200006BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F90604020281FE7F7FF0A0505044783C3CBA259F9FE34BA8A886 +:40224000F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA63422121302010101AE5FFFF0EFDF3F36DBFD2D2A0 +:402280004C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A782FC7E7E477A3D3DACC86464E7BA5D5D2B32191995E6737312 +:4022C000A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B83C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB2C +:402300003BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACACA6C46262A8399191A431959537D3E4E48BF2797970 +:4023400032D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F425CFEAEAAFCA65658EF47A7AE947AEAE18100808C2 +:40238000D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE87474213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8AE3 +:4023C00090E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757D069B9B9911786865899C1C1273A1D1DB9279E9E03 +:4024000038D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E9215878720C9E9E94987CECEFFAA5555785028287AA5DFDFA7 +:402440008F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999775A2D2D111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C1616FB +:4024800063A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060300103020167A9CE672B7D562BFE19E7FED762B5D7ABE64DAB769AEC7613 +:4024C000CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA2AFEA45AF9CBF239CA4F753A47296E472C05B9BC0D6 +:40250000B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E5F108F9F17193E271D873ABD831536231153F2A15F2 +:40254000040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0712362412809B1B80E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA7567 +:40258000091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D6B3CE7DB3297B5229E33EDDE32F715E2F84971384A7 +:4025C00053F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BE394B72394ADE944A4CD4984C58E8B058CF4A85CFC1 +:40260000D06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F9020604027F81FE7F50F0A0503C44783C9FBA259FA8E34BA882 +:4026400051F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA2163422110302010FF1AE5FFF30EFDF3D26DBFD29C +:40268000CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A77E82FC7E3D477A3D64ACC8645DE7BA5D192B32197395E6730E +:4026C00060A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB8143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDB28 +:40270000E03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43AC62A6C46291A8399195A43195E437D3E4798BF2796C +:40274000E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F4EA25CFEA65AFCA657A8EF47AAEE947AE08181008BE +:40278000BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE8741F213E1F4BDD964BBDDC61BD8B860D8B8A850F8ADF +:4027C0007090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A3557F9AE57B9D069B986911786C15899C11D273A1D9EB9279EFF +:40280000E138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E87921587E920C9E9CE4987CE55FFAA5528785028DF7AA5DFA3 +:402840008C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B029992D775A2D0F111E0FB0CB7BB054FCA854BBD66DBB163A2C16F7 +:402880006363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE2B2B7D56FEFE19E7D7D762B5ABABE64D76769AEC0F +:4028C000CACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5FAFAFEA459C9CBF23A4A4F753727296E4C0C05B9BD2 +:40290000B7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D1F1F108F9717193E2D8D873AB3131536215153F2AEE +:4029400004040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362480809B1BE2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA63 +:4029800009091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B7B3B3CE7D29297B52E3E33EDD2F2F715E84849713A3 +:4029C0005353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED96739394B724A4ADE944C4CD4985858E8B0CFCF4A85BD +:402A0000D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E9020206047F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B7E +:402A40005151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF2121634210103020FFFF1AE5F3F30EFDD2D26DBF98 +:402A8000CDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F2557E7E82FC3D3D477A6464ACC85D5DE7BA19192B32737395E60A +:402AC0006060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B14143C28DEDE79A75E5EE2BC0B0B1D16DBDB76AD24 +:402B0000E0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF436262A6C49191A8399595A431E4E437D379798BF268 +:402B4000E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F3EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BA +:402B8000BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE81F1F213E4B4BDD96BDBDDC618B8B860D8A8A850FDB +:402BC000707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEB9B9D06986869117C1C158991D1D273A9E9EB927FB +:402C0000E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C87879215E9E920C9CECE49875555FFAA28287850DFDF7AA59F +:402C40008C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B0292D2D775A0F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2CF3 +:402C800052096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950B42FAC34E082EA16628D924B2765BA2496D8BD12566 +:402CC00072F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B52 +:402D00003A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620EAA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF47F +:402D40001FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C83539961172B047EBA77D626E169146355210C7D17 +:402D800051F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691F5024C254FE5D7FCC52ACBD726354480B562A38F10 +:402DC000DEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB955259DAD4BE832D587421D349E069298EC9C844B2 +:402E000075C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A31829751336062537F45B16477E0BB6BAE84FE81A01CF9082B9410 +:402E4000704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AD33708A5302887F223BFA5B202036ABAED16825C42 +:402E80008ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE132A4F6EB750B83EC394060EFAA5E719F06BD6E10517C +:402EC0003E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CC67D99E77B0E842BD07898B88E7195B3879C8EEDB80 +:402F0000A17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51E362D39270A0FD964685CA6219B5B54D124362E3A8F +:402F40000C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E043121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C88D +:402F800057F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC68B8E4F163D731DCCA426385101397224084C61120C5 +:402FC000854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FA47E96422A8FC8CC4A0F03F1A567D2CD8223390EF25 +:4030000087494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9B547E4662F68D13C290D8B8E82E39F75E82C3AFF5C4 +:403040009F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB701834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E64C +:40308000BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B033A7D815F104984A41ECDAF77FCD500E1791F62FE8 +:4030C000764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473FB0B412EB3671D5A92DBD252E91056336DD6471342 +:403100009AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7973C737BF53F7CDEA5FFDAA5BDF3D6F147844DB869E +:40314000CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49C6456C1907BCB8461D532B670486C5C74D0B8574222 +:403180005051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7625F5024CFC4FE5D7D7C52ACB802635448FB562A30C +:4031C00049DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7ADA9552592DD4BE83D35874212949E069448EC9C8AE +:403200006A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A31609751334562537FE0B1647784BB6BAE1CFE81A094F9082B0C +:4032400058704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BA5D33708F2302887B223BFA5BA02036A5CED16823E +:403280002B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE175A4F6EB390B83ECAA4060EF065E719F51BD6E1078 +:4032C000F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC8940437767D99EBDB0E8428807898B38E7195BDB79C8EE7C +:4033000047A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED527362D39640A0FD921685CA6D19B5B543A24362E8B +:40334000B10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E01D121B170B0E090DADF28BC7B92DB6A8C8141EA989 +:403380008557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC63B8E4F1CAD731DC10426385401397222084C611C1 +:4033C0007D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA1194482247E964C4A8FC8C1AA0F03FD8567D2CEF22339021 +:40340000C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCC62547E46C2F68D13E890D8B85E2E39F7F582C3AFC0 +:40344000BE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB7A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E848 +:40348000D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D01533A7D84AF10498F741ECDA0E7FCD502F1791F6E4 +:4034C0008D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA87742EFB0B415AB3671D5292DBD233E91056136DD6473E +:403500008C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CEBF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB9A +:4035400081CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4906456C1617BCB8470D532B674486C5C42D0B8571E +:40358000A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC4C25F502D7FC4FE5CBD7C52A44802635A38FB56208 +:4035C0005A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D59DA9552832DD4BE21D35874692949E0C8448EC9AA +:40360000896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A336097517F45625377E0B164AE84BB6BA01CFE812B94F90808 +:4036400068587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C508A5D33787F23028A5B223BF6ABA0203825CED163A +:403680001C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058AEB75A4F6EC390B83EFAA40609F065E711051BD6E74 +:4036C0008AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC89409E7767D942BDB0E88B8807895B38E719EEDB79C878 +:403700000A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAE3927362DD9640A0FA621685C54D19B5B2E3A243687 +:4037400067B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C22171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E85 +:40378000198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6EDF163B8E4DCCAD7318510426322401397112084C6BD +:4037C000247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194642247E98CC4A8FC3F1AA0F02CD8567D90EF22331D +:403800004EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5F4662547E13C2F68DB8E890D8F75E2E39AFF582C3BC +:4038400080BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A9AA8834F6E65E695E67EAAFFCF0821BCE8E6EF1544 +:403880009BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D81533A7984AF104DAF741EC500E7FCDF62F1791E0 +:4038C000D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87412EFB0B1D5AB367D25292DB5633E91047136DD63A +:40390000618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181437BF73C7CDEA53F7AA5B5FFD6F14DF3DDB86784496 +:40394000F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4C190645684617BCBB670D5325C74486C5742D0B81A +:40398000F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC769188024C25F5E5D7FC4F2ACBD7C53544802662A38FB504 +:4039C000B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF5259DA95BE832DD47421D358E0692949C9C8448EA6 +:403A0000C2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097537F45626477E0B16BAE84BB81A01CFE082B94F904 +:403A40004868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A863708A5D32887F230BFA5B223036ABA0216825CED36 +:403A8000CF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE13205F6EB75A483EC390B60EFAA40719F065E6E1051BD70 +:403AC000218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC89D99E7767E842BDB0898B8807195B38E7C8EEDB7974 +:403B00007C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3D2D3927360FD9640A5CA621685B54D19B362E3A2483 +:403B40000A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C1B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C81481 +:403B8000F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B6E4F163B831DCCAD76385104297224013C6112084B9 +:403BC0004A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11E9642247FC8CC4A8F03F1AA07D2CD8563390EF2219 +:403C0000494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6A7E4662548D13C2F6D8B8E89039F75E2EC3AFF582B8 +:403C40005D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC4F9AA883956E65E6FFE67EAABCCF082115E8E6EF40 +:403C8000E79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0A7D8153304984AF1ECDAF741CD500E7F91F62F17DC +:403CC0004DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FA0B412EFB671D5AB3DBD25292105633E9D647136D36 +:403D0000D7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE7918C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB867892 +:403D4000AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD856C19064CB84617B32B670D56C5C7448B85742D016 +:403D800001000000020000000400000008000000100000002000000040000000800000001B000000360000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FCB +:403DC0007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F000102030405060708090A0B0C0D0E0F10111213141516F0 +:403E00001718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F02000000E14D01100D4E0110434E0110000000008F4E01109F +:403E4000714E0110AD4E0110DB4E01104145532D3132382D454342004145532D3139322D454342004145532D3235362D454342004145532D3132382D434243004145532DC5 +:403E80003139322D434243004145532D3235362D434243004145532D3132382D435452004145532D3139322D435452004145532D3235362D435452004145532D3132382DE3 +:403EC00047434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382D43434D004145532D3139322D43434D004145532D3235362D43434D00B8 +:403F000043484143484132300000000043484143484132302D504F4C593133303500000002010000800000004C3E0410000000000000000010000000283E041003010000A4 +:403F4000C0000000583E0410000000000000000010000000283E04100401000000010000643E0410000000000000000010000000283E04100502000080000000703E0410BE +:403F8000100000000000000010000000283E041006020000C00000007C3E0410100000000000000010000000283E04100702000000010000883E0410100000000000000043 +:403FC00010000000283E04100B05000080000000943E0410100000000000000010000000283E04100C050000C0000000A03E0410100000000000000010000000283E0410CA +:404000000D05000000010000AC3E0410100000000000000010000000283E04100200000000000000000000000000000000000000F74E0110F74E0110594D0110834D01108F +:404040000E06000080000000B83E04100C00000001000000100000001C4004100F060000C0000000C43E04100C00000001000000100000001C400410100600000001000086 +:40408000D03E04100C00000001000000100000001C4004100200000000000000000000000000000000000000154F0110154F01109F4D0110C54D01102B0800008000000092 +:4040C000DC3E04100C0000000100000010000000944004102C080000C0000000E83E04100C0000000100000010000000944004102D08000000010000F43E04100C000000D2 +:40410000010000001000000094400410090000000000000000000000000000006D4F0110354F0110354F0110A14F0110CB4F01104807000000010000003F04100C000000AB +:4041400000000000010000000C4104100900000000000000000000000000000000000000E94F0110E94F0110215001104B500110490A0000000100000C3F04100C00000055 +:4041800000000000010000004C41041002000000203F0410030000003C3F041004000000583F041005000000743F041006000000903F041007000000AC3F04100B000000E1 +:4041C000C83F04100C000000E43F04100D000000004004100E000000404004100F0000005C40041010000000784004102B000000B84004102C000000D44004102D0000000B +:40420000F04004104800000030410410490000007041041000000000000000007365637033383472310000007365637032353672310000002020454350207465737420234C +:40424000312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A200000006661696C656420282575290A000000007061737365640A00B5 +:40428000202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F7468657220706F696E74293A2000000000556E6578706563746564206583 +:4042C00072726F722C2072657475726E20636F6465203D20253038580A0000000A0000003030303030303030303030303030303030303030303030303030303030303030DC +:404300003030303030303030303030303030303100000000464646464646464646464646464646464646464646464646393944454638333631343642433942314234443252 +:4043400032383330000000003545413646333839413338423842433831453736373735334231354141353536394531373832453330414245374432350000000034303030C9 +:40438000303030303030303030303030303030303030303030303030303030303030303030303030303030303030303000000000374646464646464646464646464646466C +:4043C0004646464646464646464646464646464646464646464646464646464646464646000000003535353535353535353535353535353535353535353535353535353531 +:40440000353535353535353535353535353535353535353500000000E042041014430410484304107C430410B0430410E443041004001800800100001C42041003001700DA +:404440000001000028420410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCE0 +:40448000B0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF847422CE1F2D1176BF551BF376840B6CBCE5E316B3B +:4044C0005733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000A2 +:40450000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A9DD12E8A8D3956C65A8713508F081403124181FE98 +:404540006E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F759989BA78B623B1D6E74AD20F31EC7B18E37058BBE71 +:4045800022CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5D6F2C26964ADE17367329C5CC6A19ECEC7AA7B048DB +:4045C000B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303144423432000031344445463944454132463739434436353831327A +:4046000036333141354346354433454400000000393841410000000038333335444331363342423132344236353132394339364644453933334438443732334137304141BB +:404640004443383733443644353441374242304400000000000000000000000000000000201C00000000000040380000000000006024000000000000807000000000000052 +:40468000A06C000000000000C048000000000000E05400000000000000E100000000000020FD00000000000040D900000000000060C5000000000000809100000000000065 +:4046C000A08D000000000000C0A9000000000000E0B5000000000000534841323234000053484132353600005348413338340000534841353132000005000000D84604107C +:404700001C000000400000003BD9011053D9011071D901108DD90110ABD90110D1D90110EDD9011007DA011006000000E0460410200000004000000023DA011053D90110E5 +:4047400071D901103BDA0110ABD90110D1D90110EDD9011007DA011007000000E8460410300000008000000059DA011071DA01108FDA0110ABDA0110C9DA0110EFDA011068 +:404780000BDB011025DB011008000000F0460410400000008000000041DB011071DA01108FDA011059DB0110C9DA0110EFDA01100BDB011025DB01105504030069642D614A +:4047C000742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61742D636F756E7472794E616D65000000436F756E747279008F +:40480000430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C0000005504080069642D61742D73746174650053746174650000006C +:404840005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A6174696F6E000000004F00000055040B0069642D61742D6F7217 +:4048800067616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F5500002A864886F70D010901000000656D61696C41646472657373EF +:4048C00000000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D626572000053657269616C206E756D626572000000736572699E +:40490000616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F7374616C20616464726573730000706F7374616C41646472657324 +:40494000730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F646500706F7374616C436F646500005504040069642D61742D7375D3 +:40498000724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D6500476976656E206E616D650000474E000055042B0069642D6141 +:4049C000742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0069642D61742D67656E65726174696F6E5175616C6966696542 +:404A00007200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175616C69666965720055040C0069642D61742D7469746C6500C5 +:404A40005469746C650000007469746C6500000055042E0069642D61742D646E5175616C696669657200000044697374696E67756973686564204E616D65207175616C69EA +:404A80006669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D0050736575646F6E796D00000070736575646F6E796D000000BA +:404AC0000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E20636F6D706F6E656E74000000004443000055042D0069642D6165 +:404B0000742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000756E697175654964656E74696669657200000000551D130081 +:404B400069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E7473000000551D0F0069642D63652D6B65795573616765000064 +:404B80004B6579205573616765000000551D250069642D63652D6578744B65795573616765000000457874656E646564204B65792055736167650000551D110069642D6353 +:404BC000652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000006086480186F842010100000069642D6E657473636170652D74 +:404C00006365727474797065000000004E6574736361706520436572746966696361746520547970650000002B060105050703010000000069642D6B702D736572766572AC +:404C40004175746800000000544C5320576562205365727665722041757468656E7469636174696F6E0000002B060105050703020000000069642D6B702D636C69656E7431 +:404C80004175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E0000002B060105050703030000000069642D6B702D636F6465536930 +:404CC000676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6B702D656D61696C50726F74656374696F6E000000452D6D617C +:404D0000696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D655374616D70696E67000054696D65205374616D70696E6700000023 +:404D40002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F435350205369676E696E67000000002A864886F70D01010E00000073686132BA +:404D8000323457697468525341456E6372797074696F6E005253412077697468205348412D323234000000002A864886F70D01010B000000736861323536576974685253B4 +:404DC00041456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D01010C00000073686133383457697468525341456E6372797074ED +:404E0000696F6E005253412077697468205348412D333834000000002A864886F70D01010D00000073686135313257697468525341456E6372797074696F6E00525341208A +:404E400077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D5348413232340000004543445341207769746820534841323284 +:404E8000340000002A8648CE3D0403020000000065636473612D776974682D53484132353600000045434453412077697468205348413235360000002A8648CE3D04030341 +:404EC0000000000065636473612D776974682D53484133383400000045434453412077697468205348413338340000002A8648CE3D0403040000000065636473612D77692F +:404F000074682D53484135313200000045434453412077697468205348413531320000002A864886F70D01010A0000005253415353412D50535300002A864886F70D010122 +:404F400001000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D65635075626C69634B6579000047656E65726963204543206B65790000BB +:404F80002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D030107000000007365637032353672310000002B810400220000008F +:404FC0007365637033383472310000002B0E03020700000064657343424300004445532D434243002A864886F70D0307000000006465732D656465332D63626300000000FF +:405000004445532D454445332D4342430000000060864801650304020400000069642D7368613232340000005348412D3232340060864801650304020100000069642D7356 +:4050400068613235360000005348412D3235360060864801650304020200000069642D7368613338340000005348412D3338340060864801650304020300000069642D73FB +:4050800068613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000484D41432D5348412D323234000000002A864886F70D0209E1 +:4050C00000000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020A00000000686D61635348413338340000484D41432D534841EE +:405100002D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D5348412D3531320000000025642E25640000002E256400384F04108E +:4051400009000000444F0410544F041001000000584F041007000000604F0410704F041002000000804F041005000000884F0410904F0410030000000000000000000000A4 +:40518000000000000000000000000000A04F041008000000AC4F0410AC4F041003000000B84F041005000000C04F0410C04F04100400000000000000000000000000000059 +:4051C000000000000000000010500410090000001C500410285004100500000030500410090000003C500410485004100600000050500410090000005C50041068500410E9 +:405200000700000070500410090000007C5004108850041008000000000000000000000000000000000000000000000050726F632D547970653A20342C454E435259505474 +:40524000454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F444800000045434453410000005253412D616C74000100000004 +:405280005452041009E10110DFE0011025E101109DE10110E9E1011035E2011085E20110A1E20110CBE20110E9E20110020000006052041065E3011031E3011073E301106D +:4052C000D1E30110000000000000000037E4011053E4011079E4011095E40110030000006452041065E30110BDE401100000000000000000000000000000000037E4011079 +:4053000053E4011079E4011095E40110040000006C52041065E30110E7E4011005E5011049E50110000000000000000037E4011085E50110ABE5011095E401102D2D2D2D62 +:405340002D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E205253412050524956415445204B45592D2D2D2D2D002D2D2D2DD9 +:405380002D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E2045432050524956415445204B45592D2D2D2D2D00002D2D2D2D55 +:4053C0002D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2050524956415445204B45592D2D2D2D2D002D2D2D2D2D454E44205253415B +:40540000205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2D2D2D00002D2D2D2D2D454E4420505542CF +:405440004C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D0000020305070B0D1113171D1F25292B2F353B3D4347DC +:40548000494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B5A5DBB5E95BC25639F111F159A4823F924E +:4054C000D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FCCA10C246F2CE92DAA84744ADCA9B05C53 +:40550000DA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4D130D385354730A65BB0A6A762EC9C2811B +:40554000852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C774827B5BCB034B30C1C394AAAD84E4FCA9C5B85 +:40558000F36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42CD65EF23914437712F3B4DECCFFBC0B5D3 +:4055C000BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8BE6F7045015B83128CB2E44EBE853124BF +:40560000E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4E3254F388647BEEFB5D58C8BC69DC10F19 +:40564000659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E981032B42D6DC631A83F21FB98C82703B070 +:40568000E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB72726C9265C38211B2EED2AC45AFC6D2C4D61 +:4056C000DFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA2013042BC4B661AA89197F8D0708B4BC2F3 +:4057000030BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41953AB4151086C371E99EB8EDF4C7748275B +:40574000A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F74602F17436F63A57872ABF0A11478C88490 +:40578000EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA07C2C021C7B886D11EEBE0CDD67DDAEA63 +:4057C00078D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB289324C7407BABCA32BCBEC9150ABE9E3C88 +:405800004C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C2E2F66656174757265732F73746F726167652F626C6F636BE5 +:405840006465766963652F4275666665726564426C6F636B4465766963652E63707000005F77726974655F6361636865000000005F77726974655F63616368652026262074 +:405880005F726561645F62756600000069735F76616C69645F657261736528616464722C2073697A6529000000000000000000000D8502103585021053850210378602107B +:4058C00069870210D58702100D8B0210C18D0210858E0210458F0210578F0210698F0210A38F0210E98F0210219002106B7600002E2F706C6174666F726D2F53696E676CC1 +:4059000065746F6E5074722E680000005F707472203D3D202854202A29265F64617461000000000000000000000000000000000071E6021071E6021071E6021071E60210C4 +:4059400071E6021071E6021071E6021071E6021071E6021071E6021071E6021071E6021071E60210202A2F3F3A3B227C3C3E5C006B7673746F726500202A2F3F3A3B227CFC +:405980003C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C61736820617474726962757465730000000054444253544F524574 +:4059C0003A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52453A20556E61626C65207265736574206172656120617420693D +:405A00006E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265636F726420617420696E69740054444253544F52453A20556E1D +:405A400061626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556E61626C6520746F206275696C642052414D207461626C652037 +:405A8000617420696E69740054444253544F52453A20556E61626C6520746F20636865636B207768657468657220657261736520756E6974206973206572617365642061CC +:405AC0007420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D20474320617420696E6974000054444253544F52453A20556E61626C659D +:405B000020746F2073796E6320424420617420696E697400000000002E2F647269766572732F4D6265644352432E680063726320213D204E554C4C00400000000000000054 +:405B400000000000AD9D0210E99D02108DB2021031B7021005B8021081AA02102DAB0210EDAB021005AB0210CDA40210B1A7021091A80210B5B80210B5B90210F1BA021090 +:405B8000C5BB021071BE02102E2F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692E63000000216172655F696E74657272757074735F656E616284 +:405BC0006C656428290000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657287 +:405C00006970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F677097 +:405C4000696F5F6F626A6563742E68006F626A2D3E70696E20213D204E430000636F756C64206E6F742070696E6F75740000000070696E6D6170206D69732D6D6174636855 +:405C80000000000070696E6D6170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D6170206E6F7420666F756E6420666F722066756E6374696F4E +:405CC0006E00000044656570536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D4158290000000044656570536C6565704C6F636B20756E6465726654 +:405D00006C6F7720283C2030290000002E2F68616C2F6D6265645F7469636B65725F6170692E6300300000006D617463685F7469636B20213D2071756575652D3E746963FB +:405D40006B5F6C6173745F7265616400618003105D810310E1810310ED810310858103100582031021810310198203104C5D0410587200080000000000000000000000002A +:405D80000000000071E6021071E6021071E6021071E6021005D4021011D40210C3730010E17300101DD402103D7000105F7000107B70001097700010BB700010C770001080 +:405DC000DB7000102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572697068650A +:405E000072616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6F95 +:405E4000626A6563742E68006F626A2D3E70696E20213D204E4300002E2E2E0A000000002E2F706C6174666F726D2F6D6265645F637269746963616C2E630000637269745E +:405E80006963616C5F73656374696F6E5F7265656E7472616E63795F636F756E746572203C2055494E5433325F4D415800000000466174616C2052756E2D74696D652065F8 +:405EC00072726F72000000003C756E6E616D65643E0000000A0A2B2B204D6265644F53204572726F7220496E666F202B2B0A4572726F72205374617475733A203078255854 +:405F000020436F64653A202564204D6F64756C653A2025640A4572726F72204D6573736167653A20000000004B65726E656C204572726F723A203078256C582C2000000065 +:405F40005468726561643A203078256C582C20004D757465783A203078256C582C20000053656D6170686F72653A203078256C582C2000004D656D6F7279506F6F6C3A2000 +:405F80003078256C582C20004576656E74466C6167733A203078256C582C200054696D65723A203078256C582C2000004D65737361676551756575653A203078256C582CC5 +:405FC00020000000417373657274696F6E206661696C65643A2000000A4C6F636174696F6E3A203078256C58000000000A46696C653A20002B2564000A4572726F7220569A +:40600000616C75653A203078256C58000A43757272656E74205468726561643A202573202049643A203078256C5820456E7472793A203078256C5820537461636B53697A36 +:40604000653A203078256C5820537461636B4D656D3A203078256C582053503A203078256C5820000A466F72206D6F726520696E666F2C2076697369743A2068747470730A +:406080003A2F2F61726D6D6265642E6769746875622E696F2F6D6265646F732D6572726F722F3F6572726F723D307825303858000A2D2D204D6265644F53204572726F728F +:4060C00020496E666F202D2D0A000000B2DB0210C2DB0210D2DB0210E2DB0210F2DB021012DC021002DC021022DC02103CDC02103CDC02103CDC02103CDC02103CDC0210E3 +:406100003CDC02103CDC02103CDC02103CDC02103CDC02103CDC021032DC021052616D2065786563757465206E65766572206C6F636B206F766572666C6F7720283E205578 +:40614000534852545F4D41582900000052616D2065786563757465206E65766572206C6F636B20756E646572666C6F7720283C2030290000526F6D207772697465206E65D5 +:40618000766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900526F6D207772697465206E65766572206C6F636B20756E646572666C6F772028CB +:4061C0003C203029000000004572726F72202D2077726974696E6720746F20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696F6E0DA9 +:406200000A0000000D0000004572726F72202D2072656164696E672066726F6D20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696FDA +:406240006E0D0A00457863657074696F6E0000002E2F706C6174666F726D2F6D6265645F72657461726765742E6370700000000030203D3D20282A67756172645F6F626A4A +:406280006563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F494E5F50524F4752455353203D3D20282A67756172645F6F6280 +:4062C0006A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574206F66206D656D6F72790D0A000000004F70657261746F72F1 +:40630000206E65775B5D206F7574206F66206D656D6F72790D0A00002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A59 +:4063400029265F64617461000000000000000000E5E8021005E9021081DF02103DDF021099DE0210C5DE021005D40210B9DE0210C3730010E1730010ABDE02103D70001082 +:406380005F7000107B70001097700010BB700010B5DF0210DB70001044657072656361746564206265686176696F723A206D696C6C692D7365632064656C61792073686FDD +:4063C000756C64206E6F74206265207573656420696E20696E746572727570742E0A0000776169745F757320626C6F636B73206465657020736C6565702C20776169745F02 +:406400006D73207265636F6D6D656E64656420666F72206C6F6E672064656C6179730A0061706C69636174696F6E5F756E6E616D65645F6D75746578000000002E2F7274B6 +:406440006F732F4D757465782E637070000000005F6964004D75746578206C6F636B206661696C65640000004D7574657820756E6C6F636B206661696C6564006D616C6C10 +:406480006F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D75746578006D61696E00000000507265206D61696E2074687265616420EF +:4064C0006E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349532D52544F53206572726F723A20537461636B206F766572EB +:40650000666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572666C6F7700000000434D5349532D52544F53206572726F7226 +:406540003A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F7700000000434D5349532D52544F53206572726F723A2053544420432F06 +:40658000432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D5349532D52544F53206572726F723A2053544420432F432B2B20CA +:4065C0006C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D5349532D52544F53206572726F723A20556E6B6E6F776E0000003E +:40660000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636F6D706C657465642077697468696E207468652074696D656FE8 +:40664000757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616D65746572206572726F720053797374656D206973206F75A4 +:4066800074206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E746578740000556E6B6E6F776E00AAED02105AED02106AED02107AED021081 +:4066C0008AED02109AED02101AEE021016EE021012EE02100EEE02100AEE021006EE02105254582056352E342E3000007274785F69646C65000000007274785F74696D65E8 +:406700007200000003000000E80300000500000014740008100000000000000000000000000000000000000000000000000000000000000000000000000000000000000054 +:4067400000000000000000000000000000000000000000000000000000100000A4670410C8670410EC6704100400000000000000000000000000000000000000000000003C +:40678000000000000000000000000000000000000000000000000000000000000000000000000000EC660410000000005474000844000000E0740008000200000100000000 +:4067C0000100000000000000F8660410000000009874000844000000E0760008000300002800000001000000000000000000000000000000E079000834000000147A000819 +:4068000050000000000000006419031000190310641903101419031064190310281903103C190310501903102E2F72746F732F546869735468726561642E637070000000FF +:406840002128666C6167732026206F73466C6167734572726F72290028666C616773203D3D206F73466C6167734572726F7254696D656F7574202626206D696C6C69736530 +:406880006320213D206F7357616974466F726576657229207C7C2028666C616773203D3D206F73466C6167734572726F725265736F75726365202626206D696C6C6973659B +:4068C00063203D3D20302900737461747573203D3D206F734F4B00000200000000006140120000000001000000006840120700000005000000006640120500000006000009 +:406900000000644012030000040600000000674012060000000700000000654012040000000800000000654012040000000900000000634012020000000A000000006240E4 +:4069400012010000000B00000000664012050000000C00000000674012060000000D00000000674012060000FFFF0000FFFFFFFF00000000030000000000614012001500E0 +:406980000101000000006840120715000105000000006640120515000106000000006440120315000506000000006740120615000107000000006540120415000108000092 +:4069C0000000654012041500010900000000634012021500010A00000000624012011500010B00000000664012051500010C00000000674012061500010D000000006740A8 +:406A000012061500FFFF0000FFFFFFFF00000000E42F0310EA2F0310F02F0310F62F0310FE2F031003000000010000000100000000000000050360000400000001000000C1 +:406A400000000000010000000604600008000000387C00086534031008000000010000000200000002000000080800030900000001000000000000000300000009090003F9 +:406A800008000000187C0008F13303100A0000000100000004000000040000000A0A000C0B0000000100000000000000050000000B0B000C10000000D87B000805340310DE +:406AC0002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2FEA +:406B0000737973636C6B2F63795F737973636C6B2E68000000127A0000E1F50500000000000000000000010000001000000000502E2F746172676574732F5441524745540E +:406B40005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E6893 +:406B8000000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F5441524745545F4655545552455F53455155414E415F84 +:406BC0004D305F5053412F73706D5F696E69745F6170692E630000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465CC +:406C0000766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970FA +:406C4000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F7461B0 +:406C800072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696FAB +:406CC0002F63795F6770696F2E6300002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726976657273C8 +:406D00002F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545FBC +:406D400050534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E63000000002E2F746172676574732F544118 +:406D8000524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F649D +:406DC00072762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065727D +:406E00006970686572616C2F6970632F63795F6970635F706970652E630000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F439F +:406E4000362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F54415247455415 +:406E80005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F1F +:406EC0006E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686550 +:406F000072616C2F7363622F63795F7363625F756172742E680000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64650B +:406F4000766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E630000002E2F746172676574732F5441524745545F43797054 +:406F8000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973616E616C6F672F63795F737973616E616CC7 +:406FC0006F672E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657292 +:407000006970686572616C2F737973696E742F63795F737973696E742E630000F05B0310065C03101C5C0310325C0310485C03105E5C0310745C03108A5C03102E2F74615C +:4070400072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F73797370C7 +:407080006D2F63795F737973706D2E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269CA +:4070C000766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545FFE +:4071000050534F43362F6770696F5F6170692E63000000006F626A006F626A2D3E706F72740000006F626A2D3E70696E20213D204E43000043595F50494E286F626A2D3E6A +:4071400070696E29203C2038000000004750494F2070696E207265736572766174696F6E20636F6E666C6963742E00009E690310C2690310C8690310CE690310D4690310AD +:40718000BC690310DA6903102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572A9 +:4071C0006970686572616C2F6770696F2F63795F6770696F2E680000B66D0310DA6D0310E06D0310E66D0310EC6D0310D46D0310F26D0310547279696E6720746F2072651E +:407200007365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720746F20667265652077726F6E6720706F72742F70696E2E00009F +:407240002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F70736F63365F7574696C732E63006469765F74797065203C20435B +:40728000595F4E554D5F444956494445525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3E6D61785F696E646578000000547279696E6720746F207265A8 +:4072C0006C656173652077726F6E6720636C6F636B20646976696465722E0000705F616C6C6F632D3E63757272656E745F696E646578203C20705F616C6C6F632D3E6D6188 +:40730000785F696E64657800547279696E6720746F2072656C656173652077726F6E67205343422E00000000547279696E6720746F2072656C656173652077726F6E67207C +:40734000544350574D2E00006368616E6E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E454C53004E564943206368616E6E656C2063726F73732D636D +:407380006865636B206661696C6564206F6E2072656C656173652E00000000FC063F0BFD000000000000000000000000FEFF000001000000FEFF00002E2F74617267657459 +:4073C000732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795FAC +:407400006770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726F +:407440006970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F4381 +:40748000362F73657269616C5F6170692E63000073657269616C5F6964203C204E554D5F53455249414C5F504F525453000000006F626A0053657269616C3A2063616E6EFA +:4074C0006F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F52582070696E207265736572766174696F6E20636F6E666C696367 +:40750000742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C204354532070696E20726573657245 +:40754000766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617463682E205265717565737465642070696E7320527820616E92 +:40758000642054782063616E2774206265207573656420666F72207468652073616D652053657269616C20636F6D6D756E69636174696F6E2E00000040420F002000000053 +:4075C00000005A0003000000FFFFFFFF0000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000030 +:407600000000000000000000000000000300000001000000504D2063616C6C6261636B20726567697374726174696F6E206661696C656421000000004D6963726F73656346 +:407640006F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E0000006007000843000000504F53495800000027 +:407680002E000000F0A3031064A4031064A40310D4A3031064A4031064A4031064A4031064A4031064A4031064A40310DCA30310BE9E031064A40310789E0310C89E0310D6 +:4076C00064A40310149F0310FEA00310FEA00310FEA00310FEA00310FEA00310FEA00310FEA00310FEA00310FEA0031064A4031064A4031064A4031064A4031064A40310E9 +:4077000064A4031064A4031064A4031064A4031064A403101C9F031064A0031064A4031064A0031064A4031064A4031064A4031064A403102EA1031064A4031064A4031027 +:4077400036A1031064A4031064A4031064A4031064A4031064A40310D8A1031064A4031064A403100AA2031064A4031064A4031064A4031064A4031064A4031064A4031075 +:4077800064A4031064A4031064A4031064A4031004A3031038A3031064A0031064A0031064A003104AA3031038A3031064A4031064A4031052A3031064A403106CA2031008 +:4077C00032A40310A8A30310A2A2031064A40310AAA2031064A4031000A4031064A4031064A4031062A30310494E4600696E66004E414E006E616E00303132333435363781 +:407800003839414243444546000000003031323334353637383961626364656600000000286E756C6C290000300000002020202020202020202020202020202030303030E4 +:40784000303030303030303030303030002020202020202020202828282828202020202020202020202020202020202020881010101010101010101010101010100404041C +:40788000040404040404041010101010101041414141414101010101010101010101010101010101010101011010101010104242424242420202020202020202020202029E +:4078C0000202020202020202101010102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018 +:407900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047 +:4079400000000000000000000000000000000000496E66696E697479000000004E614E000080E03779C34143176E05B5B5B89346F5F93FE9034F384D321D30F94877825AE4 +:407980003CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C34000000000006AF8400000000080842E4149 +:4079C00000000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D42000040E59C30A2420000901EC4BCD642F2 +:407A000000003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF154450EFE2D6E41A4B4492D54D06CFF080449F +:407A4000F64AE1C7022DB544B49DD9794378EA4405000000190000007D00000060DB031042DB0310FCDA03101ADA0310FCDA031034DB0310FCDA03101ADA031042DB031036 +:407A800042DB031034DB03101ADA031012DA031012DA031012DA031078DD0310C0E3031080E2031080E203107CE2031098E3031098E303108AE303107CE2031098E303105C +:407AC0008AE3031098E303107CE20310A0E30310A0E30310A0E30310A4E50310000000000000001000000008C0000000087B0410C0000008F8140000F8150008C878000011 +:407B00002086FB7F010000000000000024F1031000000000701A0008440000007016000800040000180000000000000000000000011A00001000000000000000050000004C +:407B400000000000010000000000000000000000021A000020000000000000000C0000000100000001000000000000000000000030F2031000000000D01E0008440000004B +:407B8000D01A000800040000180000000000000000000000031A000010000000000000000500000001000000000000000000000000000000041A0000200000000000000046 +:407BC000050000000100000000000000000000000000000002000000000000003000000000000000000000000200000000F203100200000000000000000000000300000041 +:407C00000000000030000000000000000000000002000000000000000000000000000000000000002300000000000000F07F000000000000000000000B00000030FA031038 +:407C40000400000000000000000000000A00000000000000F00000000000000000000000040000000000000000000000000000000000000073070010D50700107D080010F7 +:407C80003D0900109D0A0010150B0010E50B0010290D0010590E0010A90F0010F510001021130010D51400100000000084F9031000000000385F000844000000381F0008DE +:407CC00000400000180000000000000000000000000F000010000000000000000100000001000000010000000000000000000000010F0000200000000000000001000000D9 +:407D000001000000010000000000000000000000020F000040000000000000000100000001000000010000000000000000000000030F00008000000000000000010000005A +:407D400001000000010000000000000000000000040F000000010000000000000100000001000000010000000000000000000000050F0000000200000000000001000000D3 +:407D800001000000010000000000000000000000060F000000040000000000000100000001000000010000000000000000000000070F000000080000000000000100000086 +:407DC00001000000010000000000000000000000080F000000100000000000000100000001000000010000000000000000000000090F00000020000000000000010000001E +:407E0000010000000100000000000000000000000A0F000000400000000000000100000001000000010000000000000000000000E8FC031000000000F0630008440000004E +:407E4000F05F000800040000180000000000000000000000001A010010000000000000000100000000000000010000000000000000000000011A0100200000000000000026 +:407E80000100000000000000010000000000000000000000021A010040000000000000000100000000000000010000000000000000000000031A01008000000000000000C3 +:407EC0000100000000000000010000000000000000000000CC04041000000000E065000824000000F0640008F0000000E0040410000000003468000824000000A46600080D +:407F0000900100000000000000000000000000000A00000050640008000000000A00000004660008000000000000000094680008AC68000801000000CD90031084590410EC +:407F40000FD20210FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A +:407F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1 +:407FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081 +:408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040 +:4080400000000000C08E000851EF0210E0660410C08CFB020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B5 +:4080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0 +:4080C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A0041 +:4081000080F0FA0250C30000320000000000A86102FF0000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF0000030000006D +:4081400000000000FFFF00000000000000000000FFFF0000010000000000000001000000000000000000000000000000000000000000000000000000000000000000000001 +:4081800000003840000000001D80031001000000070000003407000800000000000000006007000800000000000000004C0A0008B40A00081C0B000800000000000000008A +:4081C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F +:40820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E +:408240000000000000000000000000000000000001000000000000000E33CDAB34126DE6ECDE05000B000000000000000000000000000000000000000000000000000000D1 +:4082800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE +:4082C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E +:40830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D +:4083400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD +:4083800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD +:4083C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D +:40840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C +:4084400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC +:4084800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC +:4084C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C +:40850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B +:4085400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB +:4085800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB +:4085C00000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000F5 +:4086000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000B4 +:408640000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000074 +:4086800000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000031B40310B18E0310000000004C78041055 +:4086C00080760410087804100878041008780410087804100878041008780410087804100878041008780410FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000100415343494900E0 +:4087000000000000000000000000000000000000000000000000000000004153434949000000000000000000000000000000000000000000000000000000000000000000D0 +:4087400000000000F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D00081C0D0008240D0008240D00082C0D0008EE +:408780002C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D00085C0D0008640D0008640D00086C0D0008A9 +:4087C0006C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D00089C0D0008A40D0008A40D0008AC0D000869 +:40880000AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D0008DC0D0008E40D0008E40D0008EC0D000828 +:40884000EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E00081C0E0008240E0008240E00082C0E0008DD +:408880002C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E00085C0E0008640E0008640E00086C0E000898 +:4088C0006C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E00089C0E0008A40E0008A40E0008AC0E000858 +:40890000AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E0008DC0E0008E40E0008E40E0008EC0E000817 +:40894000EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F00081C0F0008240F0008240F00082C0F0008CC +:408980002C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F00085C0F0008640F0008640F00086C0F000887 +:4089C0006C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008940F00089C0F00089C0F0008A40F0008A40F0008AC0F000847 +:408A0000AC0F0008B40F0008B40F0008BC0F0008BC0F0008C40F0008C40F0008CC0F0008CC0F0008D40F0008D40F0008DC0F0008DC0F0008E40F0008E40F0008EC0F000806 +:408A4000EC0F0008F40F0008F40F0008FC0F0008FC0F000804100008041000080C1000080C10000814100008141000081C1000081C10000824100008241000082C100008BB +:408A80002C10000834100008341000083C1000083C10000844100008441000084C1000084C10000854100008541000085C1000085C10000864100008641000086C10000876 +:408AC0006C10000874100008741000087C1000087C10000884100008841000088C1000088C10000894100008941000089C1000089C100008A4100008A4100008AC10000836 +:408B0000AC100008B4100008B4100008BC100008BC100008C4100008C4100008CC100008CC100008D4100008D4100008DC100008DC100008E4100008E4100008EC100008F5 +:408B4000EC100008FFFFFFFF00000200E900001069840210C10000100000000000B585B00190019B0393039B5B78FF2B37D100F0EFF903000293042000F03AFA0300180007 +:408B800000F016FA03001A00164B1A60164B00221A60154B1B685B015B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4ABE +:408BC00012680A431A60C046094B1B681A68074B1B681340F8D1029B180000F0C9F9C04605B000BD707C0008747C0008787C00087C7C000800B589B001900091444B0793E4 +:408C0000002000F0F5F9030005930023069300F0D7F9020013236B44033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F0DAF903001800C9 +:408C400000F08EF903001A0001235340DBB2002B23D0002000F0C4F902002E4B9A421CD02D4A00230021012000F08AF9031E14D102E0069B01330693002000F0B1F902008D +:408C8000244B9A4203D0069B244A9342F1D9069B224A934201D800230793079B002B33D100F056F903000393002000F0A1F91C4B1A00012100F08CF9031E13D1019B002B39 +:408CC00006D1009B180000F02FF8164B07930BE0C046059B1B69002BFBDB00F061F90300079301E00A4B079313236B441B78002B06D0C0460121002000F04AF9031EF9D12C +:408D0000039B180000F034F9079B180009B000BD0500520001018800C8060008EF490200607C00080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E2281 +:408D40001A60104B104A1A60104AA323DB000621D1500E49039B1B021B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04688 +:408D800004012640080126401E1F0000000026401C05000010B582B002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD060 +:408DC000394B394AD2681204110C384A1269120A1004FF2212041040344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A9023CC +:408E0000D3582B4A134090221201134390228B50264B1B69254A9023D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BF70 +:408E4000C046194B1B68002BFBDA174BDB68012213401DD0154B154A126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB683A +:408E80001B0E1902FF231B020B40134390228350054B054AD26802218A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B460733CB +:408EC0001A701A4B194A126904210A431A616B4607331B78012B01D030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A60DE +:408F0000104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A86235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F00005B +:408F400018052640040126401C052640AAAAAAAA01B40248844601BC604700BF435D031001B40248844601BC604700BF533E031001B40248844601BC604700BF4B5D0310FE +:408F800001B40248844601BC604700BF1549031001B40248844601BC604700BF554D031001B40248844601BC604700BFA541031001B40248844601BC604700BF453E03104C +:408FC00001B40248844601BC604700BFED32031001B40248844601BC604700BF653E031001B40248844601BC604700BF3D4E031001B40248844601BC604700BF113E0310D9 +:0200000490303A +:020000002A6B69 +:0200000490501A +:0C0000000005E2072100210100004B6B0D +:00000001FF diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c index 261d2b4c378..52afd65f81e 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c @@ -28,10 +28,10 @@ #include "handles_manager.h" #include "cmsis.h" #include "psa_smoke_test_part1_partition.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; spm_partition_t g_partitions[3] = { { @@ -46,25 +46,25 @@ spm_partition_t g_partitions[3] = { .irq_mapper = NULL, }, { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -78,8 +78,8 @@ const uint32_t mem_region_count = 0; // forward declaration of partition initializers void smoke_test_part1_init(spm_partition_t *partition); +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) { @@ -88,8 +88,8 @@ uint32_t init_partitions(spm_partition_t **partitions) } smoke_test_part1_init(&(g_partitions[0])); - its_init(&(g_partitions[1])); - psa_f_init(&(g_partitions[2])); + crypto_srv_init(&(g_partitions[1])); + its_init(&(g_partitions[2])); *partitions = g_partitions; return 3; diff --git a/TESTS/psa/spm_smoke/TARGET_FUTURE_SEQUANA_PSA/spm_smoke.hex b/TESTS/psa/spm_smoke/TARGET_FUTURE_SEQUANA_PSA/spm_smoke.hex new file mode 100644 index 00000000000..10e0ef96e2d --- /dev/null +++ b/TESTS/psa/spm_smoke/TARGET_FUTURE_SEQUANA_PSA/spm_smoke.hex @@ -0,0 +1,4590 @@ +:020000041000EA +:40000000000001088D1B03100D000000D1040010000000000000000000000000000000000000000000000000000000000DDD0210000000000000000091DD02109DDD021002 +:40004000E51B0310F5210310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B03103A +:40008000E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B0310E51B031010 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD1015000800000000EC630410084B10B5002B03D00749084800E000BF07480368002B00D1F4 +:4001000010BD064B002BFBD09847F9E70000000014150008EC6304102810000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F0A4 +:400140008DFE0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF0BFF937F077FA200029002DF0F1FB2DF0ADF9C0460000080000000108FF +:400180000000000075D802101015000820870008E5D402100000000010B596B00390002313930023129304AB18002C231A00002137F054FE80231B06180004F003F8030072 +:4001C0001393139B1022134005D1139B7549764832222CF0B9FAFA235B0018002DF00EFE04AB1900102003F0FBFF04AB5B68002B0FD004AB5B68180004F006FB03001293C2 +:40020000129B013305D0129B664968483B222CF09BFA04AB1B68022B06D0032B00D18CE0012B00D189E0AEE004ABDA6804AB1B69D21804AB5B69D21804AB9B69D318162B10 +:4002400003D104ABDB69142B05D05649584B452218002CF079FA1E2037F02AFA03001193119B002B05D14F49524B4B2218002CF06BFA119B1E220021180037F0EFFD119B57 +:400280001593002314932EE004AB586804AA149B02339B00D31804331B68159A149904F0B3F80300109304AA149B02339B00D31804331A68109B9A420ED004AA149B023314 +:4002C0009B00D31804331A6836493B48109B0093130053222CF038FA159A109BD3181593149B01331493149B022BCDD9119A334B1100180038F088F803000F930F9B002B3C +:4003000005D028492E4B5B2218002CF01DFA04AB5C682C4B180038F0C3F803000133294A0021200004F0ACF8119B180037F0CAF900231193002315932DE004ABDB69002B63 +:400340001BD104AB1B6A002B17D104AB5B6A002B13D104AB9B6A002B0FD104ABDB68002B0BD104AB1B69002B07D104AB5B69002B03D104AB9B69002B0CD00A49124B6D226E +:4003800018002CF0E1F904AB1B6806490F4873222CF0DAF9C04604AB5B680021180004F0F3F807E710DE03108CDC0310B8DC0310F4DC031034DD031058DD031068DC03108C +:4003C0007CDD031080DC0310A0DD0310ECDD031000B583B00190019B002B05D10C490D4B572218002CF0B0F90B4B180000F01AF80A4B180001F046FF094B180002F0D2FC5E +:40040000019B054A1A600323180003B000BDC04638DE03101CDE0310C4000008EC0000081401000800B585B00190019B002B05D11F49204B542218002CF086F91E4B1800FB +:400440002FF046FC0200019B1A62019B1B6A002B05D11749194B592218002CF075F90023039309E0164A039B5B01D3180833019A1A60039B01330393039B002BF2D0019B38 +:400480000F4A1A610F4A104B0021180031F040F90200019B5A60019B5B68002B05D104490A4B632218002CF04FF9C04605B000BD34DF031074DE031024DF031090DE03102C +:4004C000600100083C01000899010010D8DE03102C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B196802680A60043142680A605E +:40050000043182680A600431C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A600431C2690A600431E3 +:4005400003462033154E324200D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A606046074900F010F8C9 +:40058000FEE7000010000000200000003000000040000000040000004CDF03100002000000B587B003900291002305931C4B18002BF042FF039B302B0AD0402B0FD0202B62 +:4005C00014D1184B18002BF037FF174B059314E0164B18002BF030FF154B05930DE0154B18002BF029FF144B059306E0134B18002BF022FF124B0593C046124B18002BF0DF +:400600001BFF00F027F8104B18002BF015FF0F4BDA6B0F4905980023009300232CF02CF950DF03107CDF03103E01FF808CDF03103F01FF8098DF03104001FF80A4DF0310B6 +:400640003D01FF80B0DF0310BCDF0310BC750008DCDF031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF0E3FE059B01330593059B0C2BEFDD264B9B +:400680005C6B254B9D6B244BDE6B234B1A6C224B596C214B9B6C224802930191009233002A0021002BF0C8FE1E4B1A681E4B110018002BF0C1FE184BDB6C0822134012D0C8 +:4006C0001A4B18002BF0B8FE134B1B6D0122134004D0174B18002BF0AFFE0CE0154B18002BF0AAFE07E0144B18002BF0A5FE114B18002BF0A1FE084BDB6C0422134004D0E2 +:400700000E4B18002BF098FE03E00D4B18002BF093FEC04606B070BDBC750008ECDF0310FCDF031000ED00E04CE003105CE003106CE003107CE0031090E00310A0E003106B +:40074000ACE0031082B001900091009B180002B07047000000B583B00190019B180005F05BFC019B180000F095F8084A019B1A60019B28330021180000F04CF8019B3822FE +:4007800001219954019B180003B000BD7003041000B583B001900C4A019B1A60019B180005F069FB019B2833180000F04BF8019B180000F075F8019B180005F067FC019B92 +:4007C000180003B000BDC0467003041000B583B00190019B1800FFF7DBFF019B18002CF035FF019B180003B000BD000000B583B00190019B1800FFF7ADFF019B180000F04C +:400800007BF8034A019B1A60019B180003B000BD8403041000B583B001900091009B002B06D1019B10220021180037F017FB05E06A46019B1100180000F06AF8019B1800DC +:4008400003B000BD00B583B00190019BDB68002B05D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BDB685B680099019A62 +:4008800010009847009BDA68019BDA60019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341DBB2180002B07047B6 +:4008C00000B583B001900091019A009B9A420FD0019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD82B00190019B180090 +:4009000002B0704782B00190019B180002B0704700B583B001900091019B10220021180037F09CFA019B19000420FFF70BFF031E02D0009A12681A60019B024ADA60C0461E +:4009400003B000BDB8E0031000B583B00190019B1B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B000BD82B00190C046F1 +:4009800002B0704700B583B00190074A019B1A60019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BD8403041000B583B00190019B1800FFF7E5FF019B18002CF059 +:4009C00045FE019B180003B000BD000000B58DB06B4618002C231A00002137F03FFA00230B936B461900102003F0FAFB6B461B68022B04D0032B12D0012B10D00CE00BF010 +:400A000091F803000B930B9B002B0AD10A4B1B685A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F0ABFDC0460DB000BD9017000800B58DB051 +:400A40006B4618002C231A00002137F007FA00230B936A4680235B011100180003F0C0FB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E0C4B1A600B4B1B687C +:400A8000002B07D10BF00AF804E002230B9302E0C04600E0C0466B465B680B9A1100180003F072FDC0460DB000BDC0469017000800B597B005AB18002C231A00002137F073 +:400AC000CDF90023159305AB1900202003F088FB05AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F066FA03001493149B002B02D10923159332E142 +:400B000005AB5B68149A1100180003F0A5FE2AE103AB180008231A00002137F09FF905ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002103F066FC03001393E5 +:400B400005ABDA68139B9A4205D08C498C4B722218002BF0F9FD03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B681A0007F00BFD0300CE +:400B80001593DBE005AB986803AB598803AB5B681A0007F013FD03001593CFE005AB1B691900012036F00AFA03001293129B002B02D109231593C1E005AB586805AB1B69A3 +:400BC000129A012103F020FC0300139305AB1A69139B9A4205D06949694B8E2218002BF0B3FD05AB986805AB1A69129B190007F0F9FC03001593129B180036F063FD9DE0DC +:400C00000023029305AB586805AB1B6902AA012103F0FAFB0300139305AB1A69139B9A4205D05649564B9E2218002BF08DFD00230193029B1900012036F0C0F90300119396 +:400C4000119B002B02D10923159377E005AB9868029A01AB119907F0EBFD03001593159B002B0DD105AB5868019B119A002103F007FC05AB586801AA0423012103F000FC99 +:400C8000119B180036F01EFDC04657E00023009305AB586805AB1B696A46012103F0B4FB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D03049314BB822180043 +:400CC0002BF042FD009B1900012036F077F903001093109B002B02D1092315932EE005AB586805AB5B69109A022103F08DFB0300139305AB5A69139B9A4205D01F49204B84 +:400D0000C12218002BF020FD05AB9B68009A1099180007F0D2FD03001593109B180036F0D1FCC0460AE005AB9B68180007F094F80300159302E002231593C046C04612E0B5 +:400D400005AB9B68180007F087F805AB9B68002B08D005AB9B68180036F0B4FC02E00223159300E0C04605AB5B68159A1100180003F00AFCC04617B000BDC046E8E1031096 +:400D8000C4E00310E4E0031000B597B005AB18002C231A00002137F061F80023159305AB1900402003F01CFA05AB1B68022B19D0032B00D12BE1012B00D037E1E021012050 +:400DC00036F0FCF803001493149B002B02D1092315932FE105AB5B68149A1100180003F03BFD27E10023139303AB180008231A00002137F033F805ABDB68082B02D00B23B4 +:400E0000159317E105AB586805ABDB6803AA002103F0FAFA0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF08BFC03AB1B780F3B042B00D9E2E09A0041 +:400E4000834BD3181B689F4605AB9A6803AB5B681900100006F060FC03001593D5E005AB1B691900012036F0A9F803001293129B002B02D109231593C7E005AB586805AB30 +:400E80001B69129A012103F0BFFA0300139305AB1A69139B9A4207D01623FF331A006A496A4B18002BF050FC05AB986805AB1A69129B190006F0A8FC03001593129B1800D8 +:400EC00036F000FCA1E00023029305AB586805AB1B6902AA012103F097FA0300139305AB1A69139B9A4206D092235A005649574B18002BF029FC00230193029B190001202F +:400F000036F05CF803001193119B002B02D1092315937AE005AB9868029A01AB119906F0B7FC03001593159B002B0DD105AB5868019B119A002103F0A3FA05AB586801AA86 +:400F40000423012103F09CFA119B180036F0BAFBC0465AE00023009305AB586805AB1B696A46012103F050FA0300139305AB1A69139B9A4204D105AB5A69009B9A4206D05C +:400F80009F235A003049314B18002BF0DDFB009B1900012036F012F803001093109B002B02D10923159330E005AB586805AB5B69109A022103F028FA0300139305AB5A69FB +:400FC000139B9A4207D04823FF331A001E491F4B18002BF0B9FB05AB9B68009A1099180006F088FD03001593109B180036F06AFBC0460AE005AB9B68180006F05FFB030091 +:40100000159302E002231593C046C04612E005AB9B68180006F052FB05AB9B68002B08D005AB9B68180036F04DFB02E00923159300E0C04605AB5B68159A1100180003F084 +:40104000A3FAC04617B000BDFCE10310C4E00310FCE0031070B5A2B00DAB18002C231A00002136F0FBFE002321930DAB1900802003F0B6F80DAB1B68022B06D0032B00D19D +:4010800097E1012B00D196E190E10DABDB68102B02D00B2321938FE10023209309AB180010231A00002136F0D9FE0DAB58680DABDB6809AA002103F0A7F9030020930DAB24 +:4010C000DA68209B9A4207D08023FF331A00BF49BF4B18002BF038FB09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB691900012035F05EFF47 +:4011000003001F931F9B002B02D1092321934CE10DAB1B691900012035F050FF03001E931E9B002B06D1092321931F9B180036F0C9FA3AE10DAB58680DAB1B691E9A012198 +:4011400003F062F9030020930DAB1A69209B9A4206D0CC235A009D499D4B18002BF0F4FA09AB588809AB59680DAB1D690DABDB691E9C08AA029201931F9B00932B0022001A +:4011800007F054FE03002193219B002B06D10DAB5868089B1F9A002103F072F90DAB586808AA0423012103F06BF91F9B180036F089FAC046F9E00DAB1B691900012035F05F +:4011C000FDFE03001D931D9B002B02D109232193EBE00DAB58680DAB1B691D9A012103F013F9030020930DAB1A69209B9A4207D0B823FF331A007549754B18002BF0A4FA7F +:401200000DAB5B691900012035F0D8FE03001C931C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F0EEF8030020930DAB5A69209B9A4206D0E1235A006349C2 +:40124000634B18002BF080FA09AB588809AB59680DAB5C690DAB1B691C9A01931D9B0093230007F06DFE030021931D9B180036F029FA1C9B180036F025FA96E00023079320 +:401280000DAB1B691900012035F098FE03001B931B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F0AEF8030020930DAB1A69209B9A4207D0E023FF331A0080 +:4012C0004249434B18002BF03FFA1B9B1A9309AB9B681B9AD31819930DABDB691900012035F06CFE03001893189B002B06D1092321931B9B180036F0E5F956E009AB1B78AC +:40130000252B1AD109AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F08EFE0300219319E009AB588809AB0D +:401340005C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F017FF03002193219B002B06D10DAB5868079B189A002103F069 +:401380007FF80DAB586807AA0423012103F078F8189B180036F096F91B9B180036F092F9C04602E00223219303E002E00223219302E0C04600E0C0460DAB5B68219A11006E +:4013C000180003F0E1F8C04622B070BD10E20310C4E00310F0B5A5B013AB18002C231A00002136F03BFD0023239313AA80239B001100180002F0F4FE13AB1B68022B06D06B +:40140000032B00D1DBE0012B00D1DAE0D4E013ABDB68242B02D00B232393D3E00023229309AB180024231A00002136F017FD13AB586813ABDB6809AA002102F0E5FF030042 +:40144000229313ABDA68229B9A4206D08C239A006149624B18002BF077F909AB1B78213B012B00D9A3E00023129313AB1B691900012035F0A3FD03002193219B002B02D160 +:401480000923239396E013AB586813AB1B69219A012102F0B9FF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF04CF9219B209309ABDB68219AD3181F9313AB6E +:4014C000DB691900012035F079FD03001E931E9B002B06D1219B180036F0F4F80923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0009ABDA6809AB196919 +:4015000013ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F076FB0300239322E009AB5C8809AB5D6809AB1B891F0050 +:4015400009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F028FC03002393239B002B0DD113AB36 +:401580005868129B1E9A002102F07AFF13AB586812AA0423012102F073FF219B180036F091F81E9B180036F08DF8C04602E002232393C046C04605E00223239302E0C0461D +:4015C00000E0C04613AB5B68239A1100180002F0DBFFC04625B0F0BD2CE20310C4E003104302000010B5A6B00023259310AB18002C231A00002136F031FC10AA80235B00CF +:401600001100180002F0ECFD10AB1B68022B19D0032B00D14FE1012B00D05BE14C21012035F0CCFC03002493249B002B02D10923259353E110AB5B68249A1100180003F089 +:401640000BF94BE10EAB180008231A00002136F005FC10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F0CCFE0300239310ABDA68239B9A4205D09C4ABC +:401680009C499D4B18002BF05FF80EAB1B781A3B062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F049FF03002593FCE010AB98680EAB598858 +:4016C0000EAB5B681A0007F051FF03002593F0E000230D9310ABDB69229309AB180010231A00002136F0BAFB10AB98680DAB229A09A907F04FFF03002593259B002B00D05A +:40170000D6E010AB58680D9B09AA002102F0B8FE10AB58680DAA0423012102F0B1FEC046C6E010AB1B69219305AB180010231A00002136F093FB10AB5868219B05AA0121A7 +:4017400002F062FE03002393239A219B9A4205D06B4A6849684B18002AF0F6FF10AB9B68219A05A9180007F065FF03002593C0469FE010AB1B69209310ABDB691F93002354 +:401780000493209B1900012035F018FC03001E931E9B002B02D1092325938AE010AB5868209B1E9A012102F02FFE03002393239A209B9A4205D0534A4E494F4B18002AF09A +:4017C000C3FF1F9B1900012035F0F8FB03001D931D9B002B06D11E9B180035F073FF0923259366E010AB98681D9C209A1E9904AB01931F9B0093230007F05BFF0300259378 +:40180000259B002B0DD110AB5868049B1D9A002102F036FE10AB586804AA0423012102F02FFE1E9B180035F04DFF1D9B180035F049FFC0463DE010ABDB691C93002303932D +:401840001C9B1900012035F0B9FB03001B931B9B002B02D1092325932BE010AB986803AB1C9A1B9907F06CFF03002593259B002B0DD110AB5868039B1B9A002102F000FEB2 +:4018800010AB586803AA0423012102F0F9FD1B9B180035F017FFC0460BE010AB9B68180007F0CCFF0300259303E00223259300E0C046C04612E010AB9B68180007F0BEFF5A +:4018C00010AB9B68002B08D010AB9B68180035F0F9FE02E00223259300E0C04610AB5B68259A1100180002F04FFEC04626B010BD9E02000040E20310C4E0031010E10310B2 +:40190000C2020000D702000010B5AAB010AB18002C231A00002136F0A1FA0023299310AA8023DB001100180002F05AFC10AB1B68022B06D0032B00D1CCE1012B00D1D9E1A1 +:40194000C5E110ABDB680C2B02D00B232993D2E1002327930DAB18000C231A00002136F07DFA10AB586810ABDB680DAA002102F04BFD0300279310ABDA68279B9A4205D0B1 +:40198000D54AD649D64B18002AF0DEFE0DAB1B7A282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180007F0CCFF03002993299B002B00D07FE133 +:4019C00010AB5868269B0CAA002102F059FDC04676E110AB1B69259310AB5868259B0BAA012102F011FD03002793279A259B9A4206D0D3239A00B949B94B18002AF0A4FECC +:401A00000DAB1B880B9A1100180007F0BDFF03002993C04659E110AB1B69249310AB5868249B09AA012102F0EFFC03002793279A249B9A4206D0D6239A00A849A84B18006B +:401A40002AF082FE0DAB1B8809AA1100180007F02BFF03002993C04637E110ABDB6923930DAB1B8807AA1100180007F04BFF03002993299B002B00D024E110AB5868239BB0 +:401A800007AA002102F0FCFCC0461BE110AB1B692293229B1900012035F090FA03002193219B002B02D1092329930EE110AB5868229B219A012102F0A7FC03002793279A5E +:401AC000229B9A4205D0884A8449854B18002AF03BFE0DAB18880DAB5968229B219A05F0A7FA03002993219B180035F0EBFDECE00DAB1B88180005F0E7FA03002993E4E087 +:401B00000DAB1B8805AA06A9180005F04BFB03002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F0A8FC10AB1B6A032B00D8C6E010AB586805AA3A +:401B40000423012102F09CFCC046BDE010ABDB692093209B1900012035F030FA03001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F075FC03002993299BB4 +:401B8000002B06D110AB5868049B1F9A002102F077FC10AB586804AA0423012102F070FC1F9B180035F08EFDC0468EE010ABDB691E931E9B1900012035F000FA03001D938F +:401BC0001D9B002B02D1092329937EE00DAB188803AB1E9A1D9905F06DFC03002993299B002B06D110AB5868039B1D9A002102F047FC10AB586803AA0423012102F040FCCD +:401C00001D9B180035F05EFDC0465EE010AB1B691C9310AB5B691B930023289310AB58681C9B02AA012102F0EFFB03002793279A1C9B9A4206D0EF239A002849284B1800AC +:401C40002AF082FD0DAB5B68284A934222D11B9B002B1FD01B9B1900012035F0AFF903002893289B002B02D1092329932DE010AB58681B9B289A022102F0C6FB030027938F +:401C8000279A1B9B9A4205D0194A1449144B18002AF05AFD0DAB18880DAB5968029A289C1B9B0093230009F01BFE03002993289B180035F007FDC04607E00223299304E030 +:401CC000C04602E0C04600E0C046C04613E00223299310E0C0460EE03503000058E20310C4E003102CE103107103000000000170CB030000C04610AB5B68299A11001800D3 +:401D000002F042FCC0462AB010BDC04600B591B001AB18002C231A00002136F09FF800230F9301AA8023DB011100180002F058FA01AB1B68022B04D0032B3DD0012B3DD0BF +:401D400037E001ABDB680E930E9A8023DB009A4202D908230F9332E00E9B1900012035F02DF903000D930D9B002B02D109230F9325E001AB58680E9B0D9A002102F044FBA8 +:401D800003000C930C9A0E9B9A4205D0114A1249124B18002AF0D8FC0E9A0D9B1100180009F05AFD03000F930D9B180035F08AFC05E002230F9302E0C04600E0C04601AB69 +:401DC0005B680F9A1100180002F0DEFBC04611B000BDC0460104000078E20310C4E0031000B58FB06B4618002C231A00002136F035F800230D936A4680231B0111001800DB +:401E000002F0EEF96B461B68022B04D0032B2CD0012B2CD026E06B46DB690C930C9B1900012035F0CBF803000B930B9B002B02D109230D931CE00C9A0B9B1100180009F064 +:401E4000CDFC03000D930D9B002B06D16B4658680C9B0B9A002102F013FB0B9B180035F031FC05E002230D9302E0C04600E0C0466B465B680D9A1100180002F085FBC0462A +:401E80000FB000BD70B59EB000231D930BAB18002C231A00002135F0E1FF0BAA80239B011100180002F09CF90BAB1B68022B1BD0032B00D15FE1012B00D06BE1FC235B000D +:401EC0001900012035F07AF803001C931C9B002B02D109231D9361E10BAB5B681C9A1100180002F0B9FC59E108AB18000C231A00002135F0B3FF0BABDB680C2B02D00B2317 +:401F00001D934BE10BAB58680BABDB6808AA002102F07AFA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF00DFC08AB1B78293B052B00D917E19A009F4BD318F0 +:401F40001B689F46002307930BAB9B6807AA1100180008F099F803001D931D9B002B00D006E10BAB586807AA0423002102F088FAC046FDE000231A930BABDB691993199BE3 +:401F80001900012035F01AF803001A931A9B002B02D109231D93ECE00BAB9B68199A1A99180008F0B9FC03001D931D9B002B06D10BAB5868199B1A9A002102F061FA1A9B53 +:401FC000180035F07FFBD4E00BAB58680BAB1B6906AA012102F018FA03001B931B9B042B05D0774A7349744B18002AF0ADFB0BAB58680BAB5B6905AA022102F005FA0300B9 +:402000001B931B9B042B05D06E4A6A496A4B18002AF09AFB08AB58880699059A0BAB9B6808F006FD03001D93C046A2E00BAB9B68180007F0AFFF03001D939AE00BAB1B69B4 +:402040001900012034F0BAFF03001893189B002B02D109231D938CE00BAB58680BAB1B69189A012102F0D0F903001B930BAB1A691B9B9A4205D0544A4E494F4B18002AF011 +:4020800063FB0BAB5B691900012034F097FF03001793179B002B06D109231D93189B180035F010FB65E00BAB58680BAB5B69179A022102F0A9F903001B930BAB5A691B9B9F +:4020C0009A4205D0414A3B493B4B18002AF03CFB0BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A00210009F015FA0300C5 +:402100001D9336E00BAB1B691900012034F056FF03001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F06CF903001B930BAB1A691B9B9A4205D0244A15 +:402140001C491D4B18002AF0FFFA0BAB986808AB59880BAB1C6908AB5B68169A0093230009F002FB03001D9303E002231D9300E0C046C04612E00BAB9B68180007F00AFFF6 +:402180000BAB9B68002B08D00BAB9B68180035F099FA02E002231D9300E0C0460BAB5B681D9A1100180002F0EFF9C0461EB070BD5704000090E20310C4E00310D0E10310AE +:4021C00081040000870400009D040000AA040000C204000000B585B00190002303930023029380231B06180001F0ECFF03000393039B1022134001D0FEF7E8FB039B2022D1 +:40220000134001D0FEF754FC039B4022134001D0FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0FFF7CCF8039A802372 +:40224000DB00134001D0FFF75FFB039A80231B01134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A8023DB011340B1D0FFF75B +:4022800045FDAEE700B585B00190019B002B05D11F49204BD42218002AF056FA1E4B18002DF016FD0200019B1A62019B1B6A002B05D11749194BD92218002AF045FA0023A4 +:4022C000039309E0164A039B5B01D3180833019A1A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF010FA0200019B5A60019B5B68002B05D1044939 +:402300000A4BE32218002AF01FFAC04605B000BD7CE30310C4E203106CE30310E0E20310A401000880010008D52100101CE3031000B583B00190019B180000F051FA019BCC +:40234000180003B000BD000010B5144B1B78BFF35B8FDBB21A00012313405A425341DBB2002B17D00D4B18002BF0D6F803005A1E9341DBB2002B0DD0094B1800FFF7D8FF1F +:40238000064B18002BF000F9064A0749044B18002BF096F8024B180010BDC04648580008F8570008C00000081986021000B583B0FFF7CAFF03000193044A019B11001800EF +:4023C00026F002FB0300180003B000BDC8E3031000B589B00390029101920093039B002B05D14349434B3D22180029F06FFF029B0D2B05D83E49404B3E22180029F066FFD6 +:402400001F236B4400221A70019B0693009B05931F236B441B780E2B05DD3549374B4622180029F053FF1F236B441B781F226A44591C11701A00039B9B18069A3F210A40EF +:402440002F498A5C1A70069B9B090693069B002B00D0DDE71F236B441B780E2B05DD2449264B4C22180029F031FF1F236B441B781F226A44591C11701A00039B9B182322D1 +:402480001A701F236B441B780E2B05DD18491B4B5122180029F01AFF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70059B9B090593059B0A +:4024C000002B00D0DDE71F236B441B780E2B05DD07490A4B5622180029F0F8FE1F236B441B78039AD31800221A70C04609B000BDE8E3031048E4031060E403108CE403100F +:4025000088E3031030B58FB00590049103920293FFF74CFF03000B930B9B002B03D1234B18002AF011F9129B002B04D0129B012B01D0022337E006AB18000E231A000021AD +:4025400035F08CFC059B049A06A80E21FFF740FF00230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A04703000A9300230C93B2 +:402580000A9B002B0ED00A9B094A934205D0094A934205D101230C9304E003230C9301E005230C930C9B18000FB030BDB8E403100B01FF801201FF8030B591B00590049132 +:4025C00003920293FFF7F2FE03000E930E9B002B03D1364B18002AF0B7F809AB18000E231A00002135F03AFC059B049A09A80E21FFF7EEFE0E9B1B681C331B6807AA09A929 +:402600000E98984703000D9300230F930D9B002B08D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E0029A039BD218029B67 +:402640009A4201D208232EE0039A029BD21807AB1B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00A04703000D930D9B04 +:40268000002B06D1069A029B9A420BD208230F9308E00D9B064A934202D107230F9301E005230F930F9B180011B030BDF0E403100701FF8000B58FB0039002910192FFF7D5 +:4026C00075FE03000C930C9B002B03D1204B18002AF03AF807AB18000E231A00002135F0BDFB039B029A07A80E21FFF771FE0C9B1B681C331B6805AA07A90C9898470300DF +:402700000B9300230D930B9B002B08D00B9B114A934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6801221A43019B5A6055 +:4027400005AB1A68019B1A600D9B18000FB000BD28E503100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B180029F0E9FF03AB18000E231A00002115 +:4027800035F06CFB019B009A03A80E21FFF720FE089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094A934205D101230993CC +:4027C00004E00723099301E005230993099B18000BB000BD64E503100701FF801201FF8082B00190019B180002B0704700B58FB00590049103920293039B002B04D1049B7C +:40280000002B01D0062333E006AB05AA1A6006AB04225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F077FE03000C930C9B002B01DC6D +:40284000052315E006A90C98002300930023032200F04EFF03000D930D9A80231B069A4201D105230D930C9B180001F00BF80D9B18000FB000BDC046011A010000B58FB024 +:402880000590049103920293029B002B04D1039B002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB039A5A608D235B0296 +:4028C0000121180000F02EFE03000C930C9B002B01DC052316E006AA08A90C98012300931300022200F004FF03000D930D9A80231B069A4201D105230D930C9B180000F0FA +:40290000C1FF0D9B18000FB000BD000000B58DB003900291029B002B01D1062339E008AB180008231A00002135F098FA06AB03AA1A6006AB04225A6004AB08AA1A6004ABCC +:4029400008225A60144B0121180000F0EBFD03000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0C1FE03000B93029B08AA03CA03C30B9A80231B060C +:402980009A4201D105230B930A9B180000F07AFF0B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0B6FD03000693069B002BA0 +:4029C00001DC052315E004A90698002300930023012200F08DFE03000793079A80231B069A4201D105230793069B180000F04AFF079B180009B000BD031A010010B58AB06A +:402A000003900023069300230993039B1B69089300230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F0E8FC0300042B02D08023FF +:402A40001B0647E0039B586805AA0423022101F0DBFC0300042B02D080231B063AE0089B180034F025FE03000993099B002B01D105232FE0039B5868039B1B69099A01214F +:402A800001F0C2FC0200039B1B699A4205D0099B180034F017FE05231CE0039B5B68180001F0B2FE03001C000699059B0998089A009303002000FFF725FD03000793089AB1 +:402AC000099B0021180035F0C9F9099B180034F0F9FD079B18000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D080231B064FE0039B5E +:402B0000586805AA0423002101F07EFC0300042B02D080231B0642E0039B586804AA0423012101F071FC0300042B02D080231B0635E0039BDB69180034F0BAFD0300079387 +:402B4000079B002B01D1052329E0039B5B68180001F05AFE03001C000599049A039BD869079B009303002000FFF726FD03000693069B002B07D1039B5868039BDB69079AF7 +:402B8000002101F07DFC039BDA69079B0021180035F064F9079B180034F094FD069B180008B010BD00B587B0019003AB180008231A00002135F052F900230293019BDB68EF +:402BC000042B03D1019BDB69082B02D080231B0626E0019B586802AA0423002101F014FC0300042B02D080231B0619E0019B5B68180001F009FE03001800029B03AA190024 +:402C0000FFF758FD03000593059B002B07D1019B5868019BDB6903AA002101F031FC059B180007B000BD00B585B0019000230393019BDB68042B02D080231B0619E0019B4A +:402C4000586803AA0423002101F0DEFB0300042B02D080231B060CE0019B5B68180001F0D3FD03001A00039B19001000FFF774FD0300180005B000BD00B585B00190009105 +:402C800000230393019B1B68022B04D0032B10D0012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F04BFDC046019B5B68039A1100180001F0A2 +:402CC00063FCC04605B000BDF8E50310A0E5031000B591B0019000230F9303AB18002C231A00002135F0BAF880231B06180001F069FA03000F9325F01FFC03000E930E9BB0 +:402D0000002B05D00E9B21492148AC2229F01CFD0F9B202213400AD003AB1900202001F05FFA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB1900102001F050FA9B +:402D4000154A03AB11001800FFF796FF0F9B402213400AD003AB1900402001F041FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802001F032FA084A03ABAD +:402D800011001800FFF778FFAEE7C04608E60310C4E50310FD290010DB2A0010A52B0010272C001000B585B00190019B002B05D11F49204B7822180029F0C6FC1E4B18009E +:402DC0002CF086FF0200019B1A62019B1B6A002B05D11749194B7D22180029F0B5FC0023039309E0164A039B5B01D3180833019A1A60039B01330393039B032BF2D9019BDF +:402E00000F4A1A610F4A104B002118002EF080FC0200019B5A60019B5B68002B05D104490A4B8722180029F08FFCC04605B000BDCCE6031024E60310BCE6031040E6031030 +:402E40002803000804030008D12C00107CE6031000B58BB0039002910192039B002B05D139493A4B2C22180029F030FA029B002B05D13549364B2D22180029F027FA00F068 +:402E80000DFE03000793079B002B02D0079B1B6801E001235B4206932E4B0493039B04A90022180029F0A0FB039B0121180029F0E1FB03000593002309930023089300231A +:402EC00008932CE000230493089B1A04059B13430993039B9A68089B1B01D3181800099A04AB190029F080FB031E15D0039B9A68089B1B01D318029ADA60039B9A68089B54 +:402F00001B01D318069A5A60039B9A68089B1B01D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D22180029F0C7F9099B0A +:402F400018000BB000BDC046D8E6031014E7031030E70310FFFF00004CE7031000B589B003900291039B002B05D13649364B6622180029F0ABF9029B002B05D13149334BC8 +:402F80006722180029F0A2F9029B1B0C0793039B5A68079B9A4209D8079A039B5B682C492C48009313006D2229F0CEFB039B9A68079B1B01D3181A68029B9A4205D0029BE7 +:402FC00023492548712229F0BFFB00F067FD03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B1B01D318F8 +:403000009A68059B9A4205D01149144B7B22180029F09AFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B01D31800229A60C046AC +:4030400009B000BDD8E6031014E7031070E703101CE903108CE70310D8E7031014E8031000B589B003900291039B002B05D13649364B8622180029F029F9029B002B05D1C6 +:403080003349344B8922180029F05EFB029B1B0C0793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F04CFB039B9A68079B1B01D3181A68029B9A42DE +:4030C00005D0029B22492548932229F03DFB00F0E5FC03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039B9A68079B70 +:403100001B01D3189A68059B9A4205D01049144B9D22180029F018FB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F0CCF8039B9A68079B1B01D318DB68FF +:40314000180009B000BDC046D8E6031014E7031038E9031050E803108CE70310D8E7031090E80310E0E8031084B001900091002303930FE0019B1A69039B5B01D318029308 +:40318000029B1A68009B9A4201D1029B08E0039B01330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023039316E00F4B1968039A13009B009B1876 +:4031C000DB00CB18019A11001800FFF7CDFF03000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D80023180005B000BDD803000800B587B00390029185 +:40320000029B002B0DD1039B1B7D01225340DBB2002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D1029B1B68134915483D2229F085FA00232E +:4032400005930CE0029B9A69059B9B00D3181A68039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B680449074800931300462229F065FAC046AE +:4032800007B000BD44EC031054E903108CE90310C4E9031000B583B001900091009A0199034B1800FFF7D4FD0300180003B000BDE003000800B583B00190019A044B11006A +:4032C0001800FFF7CDFE0300180003B000BDC046E003000800B585B001900091019B9B681A6A01235B42190010002CF015FD03000393039B002B05D02349244B572218008F +:4033000028F0E4FF019BDB69002B03D1019B009A9A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B68190010002EF046FA03000293029B002B05DA124958 +:40334000134B6622180028F0C1FF019B5B68029A134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD03000393039B002B05D00449044B6B22180028F051 +:40338000A5FFC04605B000BD04EA03103CEA031050EA03106CEA031030B58BB005900491049B002B05D15649564B7022180028F08DFF059B1800FFF7F7FE03000993099BA3 +:4033C000002B05D1059B50495048742229F0BCF9099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68099BDB689A4211D0049B1D68099B1A685E +:40340000099BD968099B1B693F4C41480293019100922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE089A049B0C21180000F06AFB03001A001C +:4034400001235340DBB2002B05D02F49314B8122180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4A5A60089B002B0FD0049B9B6818002CF077 +:4034800085FF03000693069B002B35D01C49244B8A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B11001800FFF7F0FE0200049B5A60079B02225A75BA +:4034C000079B089A1A60079B099A5A60079B049ADA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11001800FFF7EFFE00E0C0460BB030BDC0468C +:4035000004EA031088EA031030EC03109CEA0310BCEA031018EB0310D8030008010000803CEA031000B58FB00190009109AB180010231A00002134F091FC05AB00221A6084 +:4035400005AB00225A6005AB09AA9A6005AB1022DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6002AB9B68002B05D119491A4BB722180007 +:4035800029F0E2F802AA019B11001800FFF704FF02AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22180028F08BFE02AB9B6818002CF008FFAD +:4035C00003000D930D9B002B05D00749074BC022180028F07BFE02AB5B6818000FB000BD64EC031048EB031004EA03103CEA031000B585B001900091009B002B05D1364945 +:40360000364BC922180028F061FE019B1800FFF751FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821180000F06DFA03001A0001235340DBB23B +:40364000002B05D02749284BCE22180029F07CF8039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F039FA2EE0009B5B6918002CF087FE03004C +:403680000293029B002B24D01349184BD822180028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B1868009B5968009B9A68009BDB6800F03D +:4036C00067F9039B5B68039A11001800FFF702FE00E0C04605B000BD04EA031088EA031080EB031070EC031098EB03103CEA031000B595B003900291019200930FAB18009B +:4037000010231A00002134F0A9FB0BAB00221A600BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB009A9A6005AB169ADA6005AB00221A61EE +:403740000BAB1A00002101202CF0CCFD020005AB5A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B11001800FFF73EFF05AB5A6901235B421900100080 +:403780002CF0DCFD03001393139B002B06D086235A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D01023FF331A000749074B180028F086FD58 +:4037C00005AB1B69180015B000BDC04680EC031048EB031004EA03103CEA031000B585B001900091009B002B06D18C235A002049204B180028F06AFD019B1800FFF75AFDD8 +:4038000003000393039B002B07D11C23FF331A001749194B180028F059FD039B1A68009B0821180000F074F903001A0001235340DBB2002B06D08F235A001049104B1800E6 +:4038400028F082FF039B15330321180000F004F9039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BD04EA031088EA031080EB03108CEC031086 +:40388000C8EB031000B58FB00190019B002B55D009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6003AB019A1A6005AB1A00BC +:4038C000002101202CF00EFD020003AB5A6003AB5B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FF03AB5A6801235B42190010002CF01EFDCD +:4039000003000D930D9B002B06D0A4235A000F490F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF331A000649064B180028F0C8FCC0460FB007 +:4039400000BDC0469CEC0310F8EB031004EA03103CEA031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD000F094F8031E03D1029B1B7D002B02D0E1 +:40398000029BDB680393039B180005B000BD000000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049B002B04D1069A049BD318042B0CD9079ABC +:4039C00007490848049B0293059B0193069B00931300272228F0B8FEC04609B000BDC046B8ED0310A8EC031000B587B00390080011000B236B44021C1A700A236B440A1C61 +:403A00001A7017236B440B226A4412781A700A236B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B236B441B781A0017236B441B780449054855 +:403A400000931300302228F07FFEC04607B000BDC8ED0310FCEC031000B585B003900A000B236B441A70039B1B780B226A4412789A420CD0039B1B781A000B236B441B7885 +:403A80000449054800931300382228F05DFEC04605B000BDE0ED0310FCEC031000B583B02DF064FE03000093009B002B05D11549154B5E22180028F009FC0023019317E0EC +:403AC000124B1968019A13009B009B18DB00CB185A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B01330193064B5A68019B9A42E2D80023180003B00B +:403B000000BDC04644ED031098ED0310D80300088CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029BD3185A1E039B9A4201D2002368E08023F3 +:403B40001B050B9380235B020A9380235B05099380231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A079B9A420FD3079A069BD218039B9A42CA +:403B800009D9039A029BD2180799069BCB189A4201D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD2180599049BCB189A4229D8012328E0039A2D +:403BC0000B9B9A420FD30B9A0A9BD218039B9A4209D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A089BD218039B9A4209D9039A029BD21805 +:403C00000999089BCB189A4201D8012300E0002318000CB07047C04600000108007703000000081010B52EF079FE174B1A0018210A202AF04BFF0200144B1A62134B1B6AF7 +:403C4000002B05D1124A134B1100180028F07CFD114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B1100180028F069FD054B1800FCF7A9FB020015 +:403C8000024B5A60C04610BDA8030008D803000888EE031028EE0310C003000854EE031010B5034B1B68180001F078F8F9E7C0460404000800B583B001900091009A01997F +:403CC000034B1800FFF7C4F80300180003B000BDEC03000800B583B00190019A044B11001800FFF7BDF90300180003B000BDC046EC03000800B583B00190019A034B1100F7 +:403D00001800FFF72BF9C04603B000BDEC03000800B583B00190019A034B11001800FFF71DF9C04603B000BDE003000884B0019000910023039311E0019B1A69039B5B01D3 +:403D4000D3185A68009B9A4205D1019B1A69039B5B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000010B596B00190009103AB180028231A005E +:403D8000002134F06BF803AB019A1A60019B1B7D022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2002B05D08D498E4B5B22180028F0C4FC1D +:403DC000019BDB681393139B1B681293139B5B681193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB24229954119B002B5DD0119BD900019BC1 +:403E00001A68129B1800FFF783FE03001A0001235340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129AD3185B68002B36D0159BDB00129AD01879 +:403E400003AA159BDB000421D3185B18020003CA03C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB00D3180433186803AA159BDB00D318083329 +:403E80001968019B1B681A00FFF742FE03001A0001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A119B9A42B9D30F9B002B63D00F9BD900E3 +:403EC000019B1A68109B1800FFF722FE03001A0001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB00109AD3185B68002B3CD0119A149BD318FA +:403F0000149AD2001099881803AADB000421D3185B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60119A149BD31803AADB00D3180433186818 +:403F4000119A149BD31803AADB00D31808331968019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B20492448942228F0EAFBC046149B01331493149A0F9B45 +:403F80009A42B3D31F4B5A6A01235B42190010002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CA13C313CA13C313CA13C312681A600E9BD5 +:403FC00000211800FFF776FE03000D93019B1B7D1A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC046CCF4031098EE0310C0EE0310E0EE031004EF031036 +:4040000024EF0310D803000848EF031000B587B00190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849284BAD22180028F049F9019B9B69049379 +:40404000049B002B05D12449244BB322180028F07BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B5B6818002DF0CCFB03000393039B002BE5 +:4040800005DA1349164BBF22180028F01FF9019B5B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE03000593059B002B05D00549054BC522D1 +:4040C000180028F003F9049B180007B000BDC04674EF0310ACEF0310E0F40310C0EF0310E0EF0310FCEF031000B58BB00491039217236B44021C1A70FFF7D0FC03000993AA +:40410000099B002B05D12A492A4BCE22180028F0DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D0079B04930EE0089B049A1A40049B9A420C +:4041400008D0049A1C491D48089B00931300DB2228F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFB03000693069B079A1A40069B9A420DD050 +:40418000039A80231B069A4202D0069B023305D007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC04674EF031018F0031000F5031038F0031021 +:4041C00074F0031000B583B00190019B1A0000210120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC03000993099B002B05D15149514BF922180028F09A +:4042000065F8099A029B2C211800FFF781FC03001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180033F014FE039B002B06D0039B013B039A3A +:40424000134001D1012200E0002223236B441A701A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A13400AD1099B9B68039C84225200314933487D +:404280000093230028F060FA2DF0E6FA03000793039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B11001800FFF73CFD03000693069B002B07D1039C7B +:4042C00089235A001F492348230028F03DFA069B1800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211800FFF7B1FB18E0059B15330522042140 +:404300001800FFF771FB10E0059B153303211800FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B11001800FFF71DFDC0460AB010BD74EF0310A9 +:4043400018F003100CF50310F0F003100CF1031058F1031074F10310C4F1031000B587B00390029101920093039B1800FFF7B2FC03000593059B1B68153305211800FFF7A3 +:404380006BFB029B032B06D99E235A001C491D4B180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31804330493049B5A68009B9A4202D2049B75 +:4043C0005B680093009B002B15D0019B002B06D0049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009BD21A049B5A60009B180007B000BDC046B8 +:4044000014F50310F4F1031000B587B00390029101920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F04DFF059A0099019B1800FFF769FB03007D +:404440001A0001235340DBB2002B06D0AD235A0009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC04674EF031018F0031024F5031010F2031029 +:4044800010B58AB00590049103920293029B002B6BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A0299039B1800FFF72BFB03001A000123B3 +:4044C0005340DBB2002B07D07023FF331A002A492A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7B3FA089B24229B5C1A00049B9B180493FF +:40450000049B032B06D9BC235A001B491C4B180028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C7E22FF32104913480093230028F004F9A4 +:40454000079B1B68029A0399180033F0F5FB079B1A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BD74EF031018F0031030F5031010F2031052 +:4045800030F203104CF2031010B58EB001900091019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B498B4B180027F08AFE0D9BDB68002B06D1AF +:4045C000C6235A008549874B180027F07FFE019B1800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FA03000A930A9B002B06D0CB235A007749F0 +:404600007A4B180027F062FE00230C930D9B1A6827236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B002B0CD0009B6E4A934208D0009CA02334 +:40464000FF331A006B496C48230028F07DF80D9BDB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089B5B681800FFF74CFB0D9B1822002118000E +:4046800033F0ECFB584B1B6A0D9A110018002AF071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6000230D936BE00D9B153303220221180016 +:4046C000FFF792F963E0009A80231B069A420BD0009B4A4A934207DA009CE0235A0045494748230028F030F80D9B1533032205211800FFF779F9009A80231B069A4202D1BB +:404700000D9B01229A750D9BDB680693069B009A1A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800FFF75AF9059B1B681800FFF7E9FA0D9B6F +:4047400018220021180033F089FB274B1B6A0D9A110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B180027F0ABFD0D9B1B7D1C00EA23FF339C +:404780001A001C491F48230027F0DEFFC0460D9B002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F099F90FE00C9B18002BF0E8FD03000393DE +:4047C000039B002B06D0FB235A000449074B180027F07CFDC0460EB010BDC04674EF03108CF20310ACF20310D8030008ACEF0310010000803CF50310D4F2031080000080DD +:4048000010F3031048F3031000B585B00190019B1800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B1B681B68002B02D101235B4203E0039B7F +:404840001B681B681B68180005B000BD1E02000074EF0310E8F3031000B585B001900091019B1800FFF736FA03000393039B1B68009A9A60C04605B000BD000000B583B00D +:40488000154B1B685B6918002BF080FD03000193019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B6918002BF06CFD03000193019B002B08D0019B9F +:4048C000033305D00549064B4722180027F0FEFCC04603B000BDC0460004000860F50310B4F503100404000810B52EF031F9C04610BD10B52EF02CF9C04610BD00B587B019 +:4049000001AB186059609A6001AB1B68022B11D002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF733FD3DE001AB9B681A0001AB5B6819003B +:404940001000FEF755FE33E001AB9B681A0001AB5B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F803001A0001235340DBB2002B05D00E490F4B52 +:404980006C22180027F0E0FE01AB9B681800FEF7E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCC04607B000BDC04690F60310ECF50310BD +:4049C00060F5031014F6031000B599B0394B17930FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C231A00002133F032FA6B46304A1A600FABC4 +:404A00005B6816930FAB9B6815936946169B3C22180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B18002BF04DF903001493149B002B05D113 +:404A40002049214B9F22180027F040FC1F4B1A00002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194B1A00002101202BF035FC03001293129B75 +:404A8000002B05D10F49144BA522180027F01EFC124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B000BDC04600770408779A333D0C4A2863DC +:404AC00060F6031060F503101CF6031070F6031030F6031080F6031048F60310000400080404000800B587B0019003AB18000C231A00002133F0B2F9019A03AB5A60054B4A +:404B0000186803AB19685A689B6800F0B5F8C04607B000BD0004000800B585B00390029101920093039B002B05D12349234B2422180027F0CBFB029B002B05D11E49204B84 +:404B40002522180027F0C2FB029B1B681D4A934205D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFB009B002B05D11049154B2822180027F092 +:404B8000A5FB039B134A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61C04605B000BDC046A0F60310E0F60310A5 +:404BC000F0F603100C4A286308F7031038F7031048F70310FFD948A200B585B0039002910192039B002B05D11C491D4B3722180027F06CFB029B002B05D11849194B3822B8 +:404C0000180027F063FB029B1B68174A934205D01249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B104A1A60029B1A1D039B5A60029B083387 +:404C40001A00039B9A60029B0C331A00039BDA60039B019A1A61C04605B000BDA0F60310E0F60310F0F603100C4A286308F7031060F7031042658BA610B586B0039068468C +:404C8000016042608360039B002B05D13D493E4B4722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B1A6901235B42190010002BF02DF803006C +:404CC0000593059B002B1BD02E49324B4B22180027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B023305D02349284B5022180027F0E6FA54 +:404D0000039B9B681B68013303221A40039B5B681B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3039B9B68039A92681268013203210A40D7 +:404D40001A60039B5B681B68013303221A40039B9B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D00449084B5D22180027F0A8FAC04606B060 +:404D800010BDC046A0F60310E0F60310FFD948A274F70310A0F70310B4F7031010B586B00190019B002B05D12D492E4B6322180027F08CFA019B1B682B4A934205D02849E5 +:404DC0002A4B6422180027F081FA019B1A69FA235B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822180027F06BFA019BD968019B5B681A68A1 +:404E000013005B009B189B00CA1802AB13CA13C3019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B5B681B689A4201D1FFF75BFD02AB18684A +:404E400059689A68FFF75AFD019B5B681A68019B9B681B689A42CED1C04606B010BDC046A0F60310E0F6031042658BA6ECF70310B4F7031082B00190034A019B1A60019B35 +:404E8000180002B07047C04664F8031000B583B00190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B001900023180002B0704784B00390009201930023B6 +:404EC000180004B0704784B00390009201930023180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800210002B010BD10B584B003900092019314 +:404F0000039B1B682C331B68039A1000984703000C001800210004B010BD82B0019001235B42180002B0704730B585B0039000920193039B1B6824331B68039A10009847BA +:404F400003000C00009801991A00230036F0BAFF1C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C00089809991A00230036F0A4FF1C001300FE +:404F8000190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B074 +:404FC00030BD30B585B0039000920193039B1B6828331B68039A1000984703000C00009801991A00230036F06DFF1C001300190022000B0013432DD1039B1B6828331B688E +:40500000039A1000984703000C00089809991A00230036F057FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A10004A +:40504000984702000B009D4204D801D1944201D8012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B019C03981A002300884703000C00009809 +:4050800001991A00230036F01DFF1C001300190022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F680099019A0A9B0B9C5B1854410121494292 +:4050C000CA175B18544103991A0023000800B84703000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099019A0A9B0B9CC91862410C001500039BB6 +:405100001B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019B1A60019B180002B07047C04664F80310D0 +:40514000F0B585B0039002910192039B1800FFF7EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61019B1C0000231D00039B9C61DD61039B6F +:40518000202200219954039B00225A62039B180005B0F0BD20F8031000B583B001900A4A019B1A60019B180000F0E8F8019B0433180000F0E5FA019B1800FFF75BFE019B20 +:4051C000180003B000BDC04620F8031000B583B00190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64600B58CB00990099B20229B5C0122534008 +:40520000DBB2002B02D0099B00225A62099B24330121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA03000A930A9B002B07D0099B2433012110 +:40524000180027F04BFA0A9B90E0099B9969DA69099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B0433180000F0E5FC030043440093002301930123D3 +:40528000019A954206D8019A954202D1009A944200D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D69099B0433180000F0C2FC03001E0000236B +:4052C0001F000123AF4203D801D1A64200D80023DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A0022430DD1099B0433180000F0A1FC0300029325 +:4053000000230393099B0299039A19615A61099BDC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433180000F084FC0300069300230793099B17 +:405340005C691B690699079AC91AA2410B0014000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB004BC9046F0BDC0465FF0FFFF00B585B026 +:405380000190019B20229B5C01225340DBB2002B04D0019B00225A62002316E0019B24330121180027F09AF903000393039B002B01D0002309E0019B202200219954019B14 +:4053C0000433180000F02EFA0300180005B000BD10B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF794FD95 +:40540000031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFFD5 +:4054400010B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FD031E01D0012300E00023002B11D0059B2E +:4054800019695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF10B58AB0059002920393174B0993059BBE +:4054C00020229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B2C +:40550000043306990C9A180000F0F8FA03000993099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B585B00190019B20229B5C01225340DBB27B +:40554000002B02D0002400250AE0019B0433180000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B00190019B20229B5C01225340DBB2002BDF +:4055800002D0002500260EE0019B1A1D019B5C691B691900100000F044FB03000393039B1D0000231E002B0034001800210004B070BD70B586B0039000920193039B2022CE +:4055C0009B5C01225340DBB2002B02D00025002611E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B1D0000231E002B0034001800210006B0CE +:4056000070BD10B584B00190019B20229B5C01225340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB030023700F236B441B78180004B010BD10B582B080 +:405640000190019BDC699B691800210002B010BD00B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002B05D1074A0749084B180026F027FE019B38 +:40568000DB681B68019A1000984703B000BDC0463A02000004FF03101CFF031010B5074B1B68002B08D0054B1A6801235B42190010002AF031FB00E0C04610BD6076000874 +:4056C00010B5064B1B68002B05D0044B1B6818002AF04CFB00E0C04610BDC0466076000800B583B00190019B180000F0C9FA27F0DDF9019B180003B000BD00B583B00190C5 +:4057000027F0FCF9019B180000F0C0FA019B180003B000BD00B583B00190019B180000F0BBFA27F011FA019B180003B000BD00B583B0019027F030FA019B180000F0B2FAB9 +:40574000019B180003B000BD00B583B001900091019B0099180036F069FA0B1E01D0002300E00123180003B000BD00B583B00190019B180000F09CFA019B180003B000BDA5 +:4057800000B583B00190019B180000F097FA019B180003B000BD000000B587B00190002305931F4B180000F08FFA0300180027F0FBFF03AB1800FFF793FF02AB1800FFF7AF +:4057C000A9FF019B18002FF099FE03005A1E9341DBB2002B02D001235B42059302AB1800FFF7A5FF03AB1800FFF787FF019B180000F00CFA03000493049B180027F00AFFA9 +:4058000003001A00019B5A60054B180000F05CFA0300180027F0F0FF059B180007B000BD2061000800B587B00190002305931D4B180000F049FA0300180027F0B5FF04ABF1 +:405840001800FFF74DFF03AB1800FFF763FF019B18002FF059FE03005A1E9341DBB2002B02D001235B42059303AB1800FFF75FFF04AB1800FFF741FF019B5B68002B04D0DF +:40588000019B5B68180027F0EBFE064B180000F01BFA0300180027F0AFFF059B180007B000BDC0462061000800B589B0039002910192009301235B420793164B180000F06A +:4058C00003FA0300180027F06FFF06AB1800FFF707FF05AB1800FFF71DFF0398009B029A019925F0B5FD0300079305AB1800FFF71EFF06AB1800FFF700FF064B180000F0AA +:40590000E3F90300180027F077FF079B180009B000BDC0462061000810B592B00390029101920093039B180000F070F903000893039B18002FF03EFE03000D93039B1800BA +:405940002FF031FE03000C93029B1093089A019B11001800FFF7F8FE03001A0001235340DBB2002B0AD1029B002B07D0009A019BD2180C990D9BCB189A4201D9012300E094 +:405980000023002B02D001235B42B1E000230E93594B180000F098F90300180027F004FF009B002B00D19AE0039B019A110018002FF0DAFD03000B93109B03229343190076 +:4059C000109A2B236B448A1A511E8A411A70019B0B99180036F02AF90B001A000B9B9B1A09936A4609AB1100180000F078F903001B6807932B236B441B78002B03D1079A9D +:405A0000089B9A4224D208AA07AB1100180000F066F903001B680793039B5B68079A1099180032F089F9079A089B9A420AD2039B5A68079BD018089A079BD31A1A00FF213D +:405A400032F00CFA039B5B680F93089B11930EE0079B089A1100180036F062F803001A00089B53430793109B0F93079B119306AB1800FFF735FE05AB1800FFF74BFE0398C2 +:405A8000119B0F9A01992FF058FD03005A1E9341DBB2002B04D001235B420E93002400E0012405AB1800FFF742FE012C01D0002401E0C046012406AB1800FFF71EFE012CE9 +:405AC0000DD1C046009A079BD31A0093079B019AD3180193079B109AD318109360E7064B180000F0F1F80300180027F085FE0E9B180012B010BDC0462061000800B58FB05F +:405B0000039002910192039B18002FF053FD03000C93039B18002FF046FD03000B930B9A0C9BD3180A93029A019BD3180993099A0A9B9A4202D901235B4261E0099A0A9B50 +:405B40009A4217D2039B099A110018002FF00CFD03000893089A099B11001800FFF7F4FD03001A0001235340DBB2002B02D001235B4245E000230D93234B180000F0A4F8C1 +:405B80000300180027F010FE019B002B2FD006AB1800FFF7A5FD05AB1800FFF7BBFD039B029A110018002FF0B5FC03000D9305AB1800FFF7BCFD06AB1800FFF79EFD0D9BB9 +:405BC000002B03D001235B420D9310E0039B029A110018002FF0C8FC03000793019A079BD31A0193029A079BD3180293CCE7064B180000F069F80300180027F0FDFD0D9BB6 +:405C000018000FB000BDC0462061000800B583B00190019B18002FF0BFFC0300180003B000BD00B583B001900091019B009A110018002FF099FC0300180003B000BD00B552 +:405C400083B00190019B18002FF0ADFC0300180003B000BD00B583B00190019B18002FF0A9FC0300180003B000BD00B583B00190019B18002FF0A5FC0300180003B000BD65 +:405C800082B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190C1 +:405CC000019B180002B0704700B583B00190019B180000F013F80300180003B000BD82B001900091009B1A68019B1B689A4201D2009B00E0019B180002B0704710B582B006 +:405D00000190019B1B68002B17D1FFF7C7FC019B1B68002B0FD1019B083319002420FAF711FD041E04D0200027F0ECFC220000E02200019B1A60FFF7C3FC019B1A68019BCC +:405D400008339A4205D00549054B6822180026F0BDFA019B1B68180002B010BD24FF031040FF031082B00190019B074A1A61C046019B1B69002B01D0012200E00222019BDC +:405D80001A75C04602B0704768FF031082B00190034A019B1A60019B180002B07047C0465CFF031000B583B00190019B1800FFF7EDFF019B180027F049FC019B180003B02E +:405DC00000BD82B00190C04602B0704700B585B0039002910192039B1B6810331B68019A0299039898470300180005B000BD00B583B00190019B1B6818331B68019A1000DC +:405E000098470300180003B000BD00B583B00190019B1B6828331B68019A100098470300180003B000BD82B001900A006B4603331A706B4603331B78002B01D0002301E0B5 +:405E400019235B42180002B0704782B001900123180002B0704782B001900A006B4602331A801123180002B0704782B001900091C04602B0704710B586B0019026F03CFBC2 +:405E8000019B180000F02BF9019B28331800FAF70DFD031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019B28331C0002AB00211800FAF7ABFC02AB2B +:405EC00019002000FAF7FCFC02AB1800FAF7BAFC26F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B1854411A00230000F0DDF8019B283318004E +:405F0000FAF7D4FC031E04D0019B28331800FFF79FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF79CFC019B1800FFF7A0FF02AB1800FFF793FB02AB5B +:405F40001800FAF77FFCC04607B000BD10B582B00190019B180000F052F8019B00221A60019A002300249360D460019A002300241361546126F0F8F80200019B9A61019B26 +:405F800001221A77019B180000F020F8019B180002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F011FC019B00221A6026F0B8FA019B1800E1 +:405FC00000F023F8019B180003B000BD10B582B0019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A002300241361546126F09AFAC04602B010BD82B099 +:406000000190019B180002B0704782B00190019B180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002300249360D460019B00221A61019B0022D5 +:406040005A6126F091F80200019B9A61019B9B69054A1100180025F08DFF019B180002B010BDC046980304106D60001000B585B00190019B0393039B1B6808331B68039A86 +:4060800010009847C04605B000BD000000B583B00190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BD9803041010B586B0059002920393059BE6 +:4060C0009869059B08331900059A029B039C00921A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B08331900100025F0F3FFC04603B000BD82B00190019BB7 +:40610000180002B0704782B00190019B180002B07047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BD8C46041000B583B00190019B1800FFF715 +:40614000E9FF019B180027F081FA019B180003B000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BD00B583B00190019B1B6810331B68019831 +:40618000002200219847C04603B000BD00B583B00190019B180000F00FF8034A019B1A60019B180003B000BD8C46041082B00190019B180002B0704782B00190019B18005F +:4061C00002B0704782B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B0704784B001900091019B039304E0039B5A1C039200221A70009BC8 +:406200005A1E0092002BF5D1C04604B0704786B003900291019213236B4400221A700023059313E0039A059BD3181A780299059BCB181B785340D9B213236B4413226A4473 +:4062400012780A431A70059B01330593059A019B9A42E7D313236B441B78180006B0704782B00190019AC023DB051340C0221206944663445A425341DBB2180002B0704756 +:4062800000B583B00190019B7F3306DA019B5A42FF23DB0113405B4200E0019B1A006A3200D148E21A006A3200DD01E1B74A934200D1B4E2B54A934200DD7CE0B44A934252 +:4062C00000D172E2B24A934238DCB24A934200D147E2B04A934218DCAF4A934200D146E2AD4A934208DCAD4A934200D143E2AC4A934200D13DE2ACE2AA4A934200D134E2D4 +:40630000A94A934200D12EE2A3E2A84A934200D151E2A64A934208DCA54A934200D11EE2A44A934200D118E293E2A34A934200D13FE2A24A934200D139E28AE2A04A934297 +:4063400000D182E29E4A934218DC9E4A934200D175E29C4A934208DC9B4A934200D122E29A4A934200D168E273E2994A934200D167E2984A934200D165E26AE2964A934259 +:4063800000D164E2944A934208DC944A934200D153E2934A934200D155E25AE2914A934200D140E2904A934200D13AE28F4A934200D13AE24DE28E4A934200D113E28C4A2E +:4063C000934238DC8B4A934200D11EE2894A934218DC894A934200D11DE2874A934208DC864A934200D118E2854A934200D112E22FE2844A934200D10BE2834A934200D1DD +:4064000005E226E2814A934200D1E8E17F4A934208DC7F4A934200D1F5E17E4A934200D1DBE116E27C4A934200D1D8E17B4A934200D1D6E10DE27A4A934200D1DBE1784A2C +:40644000934218DC774A934200D1D0E1754A934208DC754A934200D1C5E1744A934200D1C3E1F6E1724A934200D1C0E1714A934200D1BEE1EDE1704A934200D1BDE16E4A52 +:40648000934208DC6D4A934200D1B4E16C4A934200D1B0E1DDE11A007A3200D16DE11A006C3200D149E1674A934200D1A7E1D0E11A00263200D146E11A00263200DDCFE0F6 +:4064C0001A00373200D1B2E11A00373231DC1A00403200D15DE11A00403216DC1A00643200D126E11A00643207DC1A00683200D11FE1663300D11CE1ABE11A00623200D1FA +:4065000017E1603300D114E1A3E11A003A3200D139E11A003A3204DC3D33012B00D998E137E11A00393200D181E1383300D128E18FE11A00313200D163E11A00313216DC3B +:406540001A00343200D11AE11A00343207DC1A00363200D115E1353300D168E179E11A00333200D113E1323300D10EE171E11A002B3200D115E11A002B3265DC1A002F321B +:4065800000D10EE12D3300D10BE162E100BCFFFF00AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFF809FFFFF00AEFFFF80AEFFFF75 +:4065C00080B2FFFF00B1FFFF80AFFFFF80B0FFFF80B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF00BBFFFF80BBFFFF80BAFFFF80C2FFFF00BFFFFF80BDFFFF80BCFFFFD1 +:4066000000BDFFFF00BEFFFF80BEFFFF00C1FFFF80BFFFFF80C0FFFF80C1FFFF00C2FFFF80C5FFFF00C4FFFF00C3FFFF80C3FFFF80C4FFFF00C5FFFF00C7FFFF00C6FFFFD9 +:4066400080C6FFFF80C7FFFF1A00283200D1F0E01A00283200DD78E0293300D1EBE0F8E01A00123200D196E01A0012322ADC1A00193200D15BE01A0019320FDC1A002232CB +:4066800009DC1A0023324EDA1A0025324DD0243300D158E0DDE0203345D0DAE01A0016324DD01A00163205DC1A00183247D0173347D0CEE01A00143200D16EE0133300D1AF +:4066C0006DE0C6E01A000C3200D180E01A000C3213DC1A000F323CD01A000F3206DC1A00113238D0103300D175E0B2E01A000E3200D16EE00D332AD0ABE09A1D00D160E0CD +:406700009A1D07DC1A000A3200D15EE0083300D159E09EE09A1C50D0002B02D004334ED097E0002396E0022394E00D2392E00D2390E008238EE009238CE004238AE002239D +:4067400088E00D2386E0022384E00D2382E0082380E010237EE00D237CE002237AE0082378E0092376E0112374E0072372E0102370E00E236EE00D236CE00D236AE00F23A6 +:4067800068E0022366E00F2364E0022362E00D2360E00F235EE010235CE008235AE00D2358E00D2356E0022354E0082352E0092350E00C234EE00D234CE00C234AE0082378 +:4067C00048E0082346E0042344E0082342E0082340E008233EE009233CE009233AE0082338E00C2336E0082334E0022332E0032330E008232EE002232CE010232AE00D235B +:4068000028E00D2326E0082324E0112322E00D2320E008231EE00E231CE010231AE0042318E0092316E0022314E00D2312E00D2310E008230EE00D230CE008230AE00423F5 +:4068400008E0022306E0102304E0092302E00D2300E00123180003B000BDC04682B002006B4607331A706B4607331B780D2B1ED89A00114BD3181B689F46132318E015233A +:4068800016E0172314E0182312E0192310E01A230EE01B230CE01C230AE01D2308E0122306E0142304E0162302E01E2300E00023180002B07047C046A403041082B00200AA +:4068C0006B4606331A806B4606331B88123B0C2B1ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E006230EE007230CE008230AE0092308E0ED +:406900000A2306E00B2304E00C2302E00D2300E00023180002B07047DC03041000B585B0039002910192039B294A93420FD0284A934203D8274A934214D020E0A222D2052B +:4069400093421ED0A422D20593421AD017E0029B002B18D1019B00225A60019B00221A60002331E0029B802B0FD0029BC02B0CD0029A80235B009A4207D0082324E0022340 +:4069800022E0C04602E0C04600E0C046029B0722134001D0082317E0029B0733DA08019B5A60019B5B681900012030F007FB0200019B1A60019B1B68002B04D1019B002236 +:4069C0005A60092300E00023180005B000BDC046010000500100004000B589B0039004AB180007F097FB04A9039800230193002300930023002218F0C9FE03001800FFF7E1 +:406A00003FFC03000793079B002B09D104AB180007F0CDFE02000723134001D00223079304AB180007F088FB079B180009B000BD00B587B001900091019B180016F006FA06 +:406A40000300012B01D0082323E0019B18685968FFF7B8FB03000593059B180018F0C3FF0300DB000493049A80235B019A4201D902230EE0059B1800FFF7AEFF0300039376 +:406A8000039B002B01D0039B03E0009B059A1A600023180007B000BD10B586B0029101920E236B44021C1A80029B180016F0CEF90300022B01D008231DE0029B1868596816 +:406AC000FFF789FB03000593059B1B7812246C441800FFF7C3FE0300238012226A440E236B4412881B889A4201D0082303E0019B059A1A600023180006B010BD10B58AB0C7 +:406B000004910392029316236B44021C1A800E230993002308931F246C4416236B441B881800FFF7CBFE03002370029B00221A60AC21012030F042FA03000893089B002B91 +:406B400001D1092362E0089A1F236B441B781900100012F089FB03001800FFF791FB03000993099B002B3ED1089B7C33039A0499180007F09BFF03001800FFF781FB030021 +:406B80000993099B002B30D1089A089B7C331900100011F099FF03001800FFF771FB03000993099B002B22D10898089B88331900089B7C331A00089B28331C00154B019344 +:406BC000154B0093230011F043FD03001800FFF757FB03000993099B002B0AD1029B089A1A60002312E0C04604E0C04602E0C04600E0C046089B002B07D0089B18000EF0A8 +:406C0000D4FD089B180030F05DFD099B18000AB010BDC046D06300084949011000B58BB005900491039200230993059B1B681800FFF716FB031E21D0039B5D4A934201D971 +:406C40000223B1E0059B1868039BD900059B10331A00FFF763FE03000993099B002B01D0099BA1E0039B002B00D19CE0059B1B69039A0499180031F05FF894E0059B1B6874 +:406C80001B0C1B044B4A934219D1059B1B684A4A13404A4A934203D1059B1B6898B200E00020059B1033039A0499FFF727FF03000993099B002B00D175E0099B74E0059B21 +:406CC0001B683F4A13403F4A934206D0059B1B68394A1340394A934262D106AB180016F03CF8059B1A68E023DB051A40E023DB059A420AD1039A049906A8002300930023C0 +:406D000017F0D8F80300089307E0039A049906AB180017F041FA03000893089B002B05D0089B1800FFF7ACFA03003DE0059B1B68234A1340234A93420AD1059B10331A00FD +:406D400006AB11001800FFF773FE030009931EE0059B1B68184A1340184A934215D1059B1B68154A1340154A934203D1059B1B6898B200E00020059B10331A0006AB19002F +:406D8000FFF78AFE0300099301E002230993099B002B07D006AB180015F0EEFF099B03E0022301E0C046002318000BB000BDC046FFFFFF1F000003700000FFEF0000036087 +:406DC000FFFFFFEF0000016010B588B0020002910E236B441A800023079300230693002305930299029B1A1D06AC0E236B44188805AB0093230005F051F803000793079B82 +:406E0000002B08D10699059A029B1800FFF706FF0300079300E0C046069B059A1100180005F028F8079B180008B010BD00B585B0020000916B4606331A80204B1B68002B06 +:406E400001D1072337E06B4606331B88002B04D06B4606331B88202B01D908232BE06B4606331B885A1E13005B009B18DB00F02292009A18114BD218009B1A60009B1B68BB +:406E8000DB68012B16D1009B1B681B68002B11D100230393009B1A686B4606331B8811001800FFF791FF03000393039B062B01D0039B00E00023180005B000BD506100089F +:406EC00000B585B0020000916B4606331A8000230293009B00221A6002AA6B4606331B8811001800FFF7A2FF03000393039B002B01D0039B09E0029B1B68002B01D00523AB +:406F000003E0029A009B1A60039B180005B000BD00B587B00291019200930E236B44021C1A8000230493029B00221A6004AA0E236B441B8811001800FFF778FF0300059303 +:406F4000059B002B01D0059B29E0049B1B68002B01D1062323E0049B1A68E023DB051A40C023DB059A4203D1019B012293430193049B5B68019A1A40019B9A4201D00323C1 +:406F80000DE0009B002B06D0049B9A68009B9A4201D0032303E0049A029B1A600023180007B000BD00B583B00190019B1B68002B32D0019B1B681800FFF752F9031E05D0BF +:406FC000019B1B69180030F07DFB25E0019B1B68134A1340134A93420AD1019B1B6918001AF03EFD019B1B69180030F06BFB13E0019B1B680C4A13400C4A93420AD1019B48 +:407000001B6918000EF0D1FB019B1B69180030F059FB01E00E2300E00023180003B000BDFFFFFFEF000001600000FFEF0000036010B588B004910392029316236B44021C41 +:407040001A8006AA16236B441B8811001800FFF737FF03000793079B002B01D0079B30E0069B049A1A60069B029A03991800FFF7D5FD03000793079B002B04D0069B002286 +:407080001A60079B1DE0069BDB68012B18D1069B1968069B1A1D039C16236B441888029B0093230004F0ACFE03000793079B002B06D0069B1800FFF775FF069B00221A600C +:4070C000079B180008B010BD00B587B002006B4606331A80002304930023059303AA6B4606331B8811001800FFF7A0FE03000493049B002B01D0049B1CE0039BDB68012B96 +:4071000007D16B4606331B88180004F0E5FF03000593039B1800FFF745FF03000493039B18211800FFF760F8049B002B01D0049B00E0059B180007B000BD000000B583B06A +:407140000190019B1B681800FFF78AF8031E03D0019B5B69DB001AE0019B1B680D4A13400D4A934207D1019B1B69180018F03BFC0300DB000BE0019B1B68084A1340084A83 +:40718000934203D1019B1B699B6D00E00023180003B000BDFFFFFFEF000001600000FFEF0000036000B587B0029101920E236B44021C1A80029B002B02D0029B00221A6058 +:4071C000019B002B02D0019B00221A6004AA0E236B441B8811001800FFF728FE03000593059B002B01D0059B17E0049B1B68002B01D1062311E0029B002B03D0049B1A6885 +:40720000029B1A60019B002B06D0049B1800FFF795FF0200019B1A600023180007B000BD00B58BB00390029101920093009B00221A600C9B002B0AD0039B1A68C023DB0590 +:407240001A40C023DB059A4201D00823F8E0039B1B681800FFF704F8031E23D0039B5A69019B9A4201D90423EAE0019B002B13D0039B1969039B5A69029B180030F05CFD05 +:40728000039B5B69029AD018039B5B69019AD31A1A00002130F0E2FD039B5A69009B1A600023CDE0039B1B681B0C1B04664A934232D10C9B002B2FD1039B1800FFF73EFFD4 +:4072C00003000733DB080893089A019B9A4201D90423B5E0039B1B697C33089A0299180007F046FC03001800FEF7CAFF03000793079B002B01D0079BA2E0029A089BD01865 +:40730000019A089BD31A1A00002130F0A7FD009B089A1A60002393E0039B1B684B4A13404B4A934207D0039B1B684A4A13404A4A934200D083E0039B1B68444A1340444A58 +:4073400093420BD105AB180015F007FD05AB434A1A60039B1A6905AB5A600AE005AB180015F0FBFC05AB3E4A1A60039B1A6905AB5A600C9B002B08D1039B1A68E023DB05B0 +:407380001A40C023DB059A4208D1019A029905AB180017F03FF90300099307E0019A029905AB180017F0FAF903000993099B002B0EDA019B002B05D0019A029B00211800DD +:4073C00030F04CFD099B1800FEF75AFF030037E0099B5A00019B9A4214D8099B019AD31A029AD118099A029B180030F0A5FC099B019AD31A029AD318099A0021180030F025 +:407400002DFD17E0099A019B9A4213D2099B019AD31A029AD118099A029B180030F0CEFC099B029AD018099B019AD31A1A00002130F014FD099A009B1A60002300E0022398 +:4074400018000BB000BDC04600000370FFFFFFEF000001600000FFEF000003608C3B0410BC3B041010B588B004910392029316236B44021C1A80029B00221A6006A9162302 +:407480006B44188800230122FFF742FD03000793079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE0300180008B010BD10B588B00491039202931623AA +:4074C0006B44021C1A80029B00221A6006A916236B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A0499012300932300FFF792FE03001800AC +:4075000008B010BD30B58BB00491039216236B44021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049B1B68444A934208D1039B5B080133DA0814 +:407540001300DB009B183B3339E0049B1B683E4A934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B185A3324E0049B1B68354A934206D1039B34 +:40758000DA0813005B009B184A3318E0049B1B681B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D1039B0733DB0812335B0000E000230893A0 +:4075C000089B190001202FF0F9FC03000793079B002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B002B03D0049B00221A6015E0049B196817 +:40760000049B1C1D069B079D16226A44108800932B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800FEF7DAFD079B180030F044F8099B180068 +:407640000BB030BD00000170000001600000027000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A934207D00EE00B4A934207D00A4A93425B +:4076800006D007E0094B06E0094B04E0094B02E0094B00E00023180002B0704709000001080000010A0000010B0000010830041038300410683004109830041000B583B02B +:4076C0000190019B1B68114A934205D8104A934206D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083318001CF0C6FD02E0072304E0C046019B41 +:4077000000221A600023180003B000BD09000001080000010B00000100B585B001900091019B00221A60009B334A93421BD0324A934203D8314A934207D03EE0304A934207 +:407740001FD0304A93422AD037E0019B083318001AF023FE019B0833012118001AF048FE0300039335E0019B083318001AF015FE019B0833002118001AF03AFE030003939A +:4077800027E0019B083318001CF06FFD019B0833012118001CF094FD0300039319E0019B083318001CF061FD019B0833002118001CF086FD030003930BE0009AFE23DB0504 +:4077C0001A4080235B049A4201D1022311E008230FE0039B002B03D1019B009A1A6003E0019B1800FFF76AFF039B1800FEF748FD0300180005B000BD09000001080000017C +:407800000A0000010B00000100B587B0039002910192019B002B01D100232EE0039B1B68174A93421AD3174A934203D9164A934214D809E0039B0833019A029918001CF02F +:40784000E3FA030005930CE0039B0833019A029918001EF055FE0300059302E00B4B0593C046059B002B03D0039B1800FFF726FF059B1800FEF704FD0300180007B000BDFF +:4078800008000001090000010B00000100AFFFFF00B589B00390029101920093039B1B68FF221340802252041343824A934200D1AEE0039B1B68FF221340802252041343FC +:4078C0007D4A934200D1A1E0039B1B68FF221340802252041343794A934200D194E0039B1B68FF221340802252041343744A934200D187E0039B1B68FF221340802252049F +:407900001343704A934200D17AE0039B1B68FF2213408022520413436B4A934200D16DE0039B1B68FF221340802252041343674A934261D0039B1B68FF2213408022520485 +:407940001343634A934255D0039B1B68FF2213408022520413435F4A934249D0039B1B68FF2213408022520413435B4A93423DD0039B1B68FF221340802252041343574AA2 +:40798000934231D0039B1B68FF221340802252041343534A934225D0039B1B68FF2213408022520413434F4A934219D0039B1B68FF2213408022520413434B4A93420DD043 +:4079C000039B1B68FF221340802252041343474A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0F1 +:407A0000142306E0142304E0102302E0102300E010230593009B019A1A60019B002B05D0019A029B2121180030F018FA019A059B9A4202D20423079328E0039B1B68224ACA +:407A400093421AD3214A934203D9224A934214D809E0039B0833029A110018001CF04DFA030006930CE0039B0833029A110018001EF0D2FD0300069302E01D4B0693C04699 +:407A8000069B1800FEF7FCFB03000793079B002B08D1009B059A1A60039B1800FFF70EFE030004E0039B1800FFF708FE079B180009B000BD010000010200000103000001A0 +:407AC000040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100AFFFFF00B597B003900291019204ABDB +:407B000005A903984022FFF7C3FE03001593159B002B01D0159B10E0049A019B9A4201D010230AE0049A05A9029B1800FEF76FFB031E01D0102300E00023180017B000BDC4 +:407B400000B587B00390029101920093039AFE23DB051A40C023DB049A4203D1039B5E4A13400393039AFE23DB051A408023DB049A4207D0039AFE23DB051A40C023DB044D +:407B80009A4248D1039B554A93421ED0534A934209D8534A93422CD0524A934210D0524A934221D034E0514A934218D04F4A934210D34F4A934221D04E4A934223D027E0D9 +:407BC00017236B4407221A7024E017236B4405221A701FE017236B4403221A701AE017236B4404221A7015E017236B4402221A7010E017236B4402221A700BE017236B443A +:407C000008221A7006E017236B4406221A7001E000235DE013E0039B374A934204D117236B4401221A700AE0039B344A934204D117236B4406221A7001E0002348E0029B68 +:407C40002F4A934212D02E4A934203D82D4A934207D027E02C4A93421AD02C4A93421CD020E016236B4402221A701EE0019B402B04D116236B4403221A7003E016236B4444 +:407C800004221A70019B802B0ED1C02301930BE016236B4405221A7007E016236B4407221A7002E0002313E0C046009B002B04D0009B16226A4412781A70019917236B44C1 +:407CC0001A7816236B441B7818000BF02FFA0300180007B000BDC046FFC0FFFF0100C0040101600401008004000160040300C00401000006020000060200C0020300C00275 +:407D00000200004001000040030000400400004082B00190019B104A944663440A2B16D89A000E4BD3181B689F46102310E040230EE040230CE040230AE0402308E04023D8 +:407D400006E0402304E0802302E0802300E00023180002B07047C046FFFFFFFE1004041000B585B00190009102230393019B009A1A60019B1A7901218A431A71019B1A79B2 +:407D800004218A431A71019B1A7902218A431A71019B1A7908218A431A71019B1A7910218A431A71009B1B4A93420CD1019B1A7902218A431A71019B083318000BF0ECF909 +:407DC0000023039317E0019B1B68134A1A40A0239B049A4205D1019B00229A600023039309E0009AFE23DB051A4080239B049A4201D008230393039B002B06D0B4235A001A +:407E0000019B0021180030F029F8039B180005B000BDC0460200C0020000C07F00B583B00190019BE03380211800FEF7DDF9019B1800FFF743FC0300180003B000BD00B526 +:407E400083B00190B0235A00019B0021180030F005F8C04603B000BD00B583B00190019B1B68002B01D100233EE0019B1B68204A934205D1019B083318000BF099F90CE037 +:407E8000019B1B681B4A1A40A0239B049A4222D1019B08331800FFF7C1FF019B00221A60019B1A7901218A431A71019B1A7904218A431A71019B1A7902218A431A71019B3B +:407EC0001A7908218A431A71019B1A7910218A431A71002308E0C046B4235A00019B002118002FF0BBFF0723180003B000BDC0460200C0020000C07F00B587B003900291F9 +:407F000001920093009B5B69DAB2039B5A71039B0833009A110018000BF074F903000593059B002B01D0059B0BE0039B08331800019B1B69029A19000CF054F80300059358 +:407F4000059B180007B000BD00B5A9B00390029101920093009BFF221340802252041343A94A934200D1A0E0009BFF221340802252041343A54A934200D194E0009BFF22E3 +:407F80001340802252041343A14A934200D188E0009BFF2213408022520413439D4A934200D17CE0009BFF221340802252041343994A934200D170E0009BFF2213408022FA +:407FC00052041343954A934200D164E0009BFF221340802252041343914A934259D0009BFF2213408022520413438E4A93424ED0009BFF2213408022520413438A4A9342A8 +:4080000043D0009BFF221340802252041343874A934238D0009BFF221340802252041343834A93422DD0009BFF221340802252041343804A934222D0009BFF221340802287 +:40804000520413437C4A934217D0009BFF221340802252041343794A93420CD0009BFF221340802252041343754A934201D140231CE000231AE0302318E0202316E01C23FF +:4080800014E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010232593009B1800FFF72DFE03002493249B802B01D967 +:4080C00002239EE0249B802B01D9022399E0249A259B9A4201D2022393E0019A249B9A4222D9039B009A11001800FFF715FB03002693269B002B00D077E0039B019A0299FB +:408100001800FFF781FB03002693269B002B6ED1039801AB04A98022FFF7BAFB03002693269B002B09D065E0019B002B05D0019A029904AB18002FF0FFFD002327930EE048 +:4081400004AA279BD3181B7836225340D9B204AA279BD3180A1C1A70279B01332793019B279A9A42ECD3019B04AAD018019B249AD31A1A0036212FF071FE0023279310E0A3 +:4081800004AA279BD3181B786A225340D8B2039AE021279BD3185B18021C1A70279B01332793019B279A9A42EAD3039BE0331A00019BD018019B249AD31A1A005C212FF0D0 +:4081C0004DFE039B009A11001800FFF7A5FA03002693269B002B0CD1039B249A04A91800FFF712FB0300269304E0C04602E0C04600E0C046019A04AB11001800FDF7F4FFC7 +:40820000269B180029B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D00000110000001110000011200000140 +:408240001300000110B58EB00390019200930A236B440A1C1A80009B002B02D08023DB0001E080231B010C93019B1B0ADAB22F236B443F210A401A70019BB44A13400A9331 +:408280000A9A039B11001800FFF76AFD03000D930D9B002B01D00D9B55E1009B002B04D0039B1A7910210A431A71019C0C9A05A90A236B4418882300FEF72AFE03000D93AD +:4082C0000D9B002B00D02FE1059B1800FEF736FF030009930A9B9E4A934222D1059B1968099A0A980023FFF72BFC03000893089B002B02D102230D9317E1089B5B69DAB260 +:40830000039B5A71059A089B09990398FFF7F4FD03000793079B1800FDF7B2FF03000D93E5E00A9B8B4A1A40A0239B049A4200D0DBE0019BFF221340802252041343069376 +:40834000069B002B02D102230D93EEE0069BFF2213408022520413437F4A934200D1A0E0069BFF2213408022520413437B4A934200D194E0069BFF221340802252041343D4 +:40838000774A934200D188E0069BFF221340802252041343734A934200D17CE0069BFF2213408022520413436F4A934200D170E0069BFF2213408022520413436B4A9342CD +:4083C00000D164E0069BFF221340802252041343674A934259D0069BFF221340802252041343644A93424ED0069BFF221340802252041343604A934243D0069BFF22134048 +:408400008022520413435D4A934238D0069BFF221340802252041343594A93422DD0069BFF221340802252041343564A934222D0069BFF221340802252041343524A9342F4 +:4084400017D0069BFF2213408022520413434F4A93420CD0069BFF2213408022520413434B4A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2322 +:4084800010E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E01023039A5371039B5B79002B03D0039B5B79802B02D902230D9335E0059B12 +:4084C0001A68A223DB059A4202D008230D932CE0039B08331800059B1969059B5A69069BFFF732FD03000D9301E002230D932F236B441B78002B18D02F236B441B78032BE2 +:4085000002D802230D9310E0039B5B792F226A4412789A4202D908230D9306E0039B2F226A4412785A7100E0C0460D9B002B04D0039B1800FFF790FC04E0039B1A7901215B +:408540000A431A710D9B18000EB010BDFFC0FFFF0200C0020000C07F010000010200000103000001040000010500000108000001090000010A0000010B0000010C000001CD +:408580000D0000011000000111000001120000011300000100B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF748FE0300180005B000BD00B585B02D +:4085C000039001920A236B440A1C1A80019A0A236B44198803980023FFF734FE0300180005B000BD00B587B003900291019207230593039B1B7901221340DBB2002B3CD05B +:40860000039B1B7902221340DBB2002B06D0039B1B7904221340DBB2002B30D0039B1A7908210A431A71039B1B681B4A93420FD1039B0833019A029918000BF01FFD0300F2 +:408640000493049B1800FDF71BFE0300059317E0039B1B68114A1A40A0239B049A4209D1039B0833019A02991800FFF7CDF80300059305E00723059302E0C04600E0C0462D +:40868000059B002B03D0039B1800FFF7E5FB059B180007B000BDC0460200C0020000C07F00B599B0039002910192039B1B68169300230493169B1800FFF72AFB0300159391 +:4086C000039804AB05A94022FFF7E2F803001793179B002B01D0179B41E0039B169A11001800FFF719F803001793179B002B28D10398039BE033159A1900FFF785F8030097 +:408700001793179B002B1ED1039B049A05A91800FFF77AF803001793179B002B15D1039804AB05A94022FFF7B3F803001793179B002B0CD1019A05A9029B18002FF0FCFA74 +:4087400006E0C04604E0C04602E0C04600E0C046049A05AB11001800FDF746FD179B180019B000BD00B58BB0039002910192039B1B7901221340DBB2002B01D1072350E022 +:40878000039B1B7902221340DBB2002B08D0039B1B7904221340DBB2002B01D1072340E0039B5B791A00019B9A4201D9042338E0039B1B681C4A93421ED1039B083305AA11 +:4087C000110018000BF008FD03000993099B002B07D1039B5B791A0005A9029B18002FF0ABFA05AB10211800FDF7FEFC099B1800FDF746FD030014E0039B1B680B4A1A40B6 +:40880000A0239B049A420BD1039B08331800039B5B791A00029B1900FFF742FF030000E0072318000BB000BD0200C0020000C07F00B587B00390029101920093009B019AA6 +:408840001A60019B002B05D0019A029B212118002FF004FB039B1B7910221340DBB2002B02D10723059307E0019A0299039B1800FFF778FF03000593059B002B15D1039B04 +:408880001800FFF7E9FA03000593059B002B05D1039B5B791A00009B1A600AE0019A029B212118002FF0DAFA03E0039B1800FFF7D3FA059B180007B000BD00B597B0039064 +:4088C00002910192039B1B7910221340DBB2002B02D0072315931AE0039B5B791A00019B9A4202D01023159311E005A9039B40221800FFF737FF03001593019A05A9029B20 +:408900001800FDF784FC031E01D010231593159B002B06D1039B1800FFF79EFA0300159303E0039B1800FFF797FA05AB40211800FDF75AFC159B180017B000BD00B587B072 +:40894000039002910192039BFF2293432D4A934211D0039BFF2293432B4A93420BD0039B2A4A13402A4A934205D0039B274A1340284A93420CD1039BFF22134006D0039B33 +:40898000FF22134080225204134302E0002300E000230593059B1800FEF760FE03000493049B180013F085FE03001A00019B1A70039BFF229343144A934213D1039B124A8A +:4089C00093420FD0049B002B01D1022316E0049B180013F061FE03001A00029B9A4201D008230BE0039BFF229343064A934204D1049B002B01D1022300E00023180007B054 +:408A000000BDC046000003100000021000FFFEFF000004100000061010B58CB0079006910592049327226A440499069B1800FFF785FF03000A930A9B002B01D00A9B5AE0E4 +:408A4000079B180016F0CFFF02000F9B9A4201D9042350E0069BFF229343284A934219D1079B00220021180016F0AEFF27236B441B78234C234907980E9A0392059A0292C0 +:408A8000049A019200930123220018F0A9FC03000B9321E0069BFF2293431B4A934219D127236B441B781A00079B0121180016F08BFF134A134907980E9B0393059B0293C3 +:408AC000049B019300230093012318F0ABF903000B9301E008230EE00B9B002B06D1079B180016F080FF0200109B1A600B9B1800FDF7C6FB030018000CB010BD00000210EB +:408B0000D0630008494901100000031010B58CB0079006910592049327226A440499069B1800FFF70BFF03000A930A9B002B01D00A9B56E0079B180016F055FF02000F9BBE +:408B40009A4201D904234CE0069BFF229343264A934219D1079B00220021180016F034FF27236B441B78214C214907980E9A0392059A0292049A019200930023220018F06C +:408B800037FF03000B9321E0069BFF229343194A934219D127236B441B781A00079B0121180016F011FF114A114907980E9B0393059B0293049B019300230093002318F0AF +:408BC0005BFE03000B9301E008230AE00B9B0A4A934201D1102304E00B9B1800FDF750FB030018000CB010BD00000210D0630008494901100000031000BFFFFF10B594B063 +:408C00000790069105920493079B9B6D0733DB0812930CAB180005F07DFA09AB180005F079FA129B5A00179B9A4202D94C4B13937FE0069A80235B0213404BD0069BFF2221 +:408C40009343484A934211D0069BFF229343464A93420BD0069B454A1340454A934205D0069B424A1340434A93420CD1069BFF22134006D0069BFF22134080225204134335 +:408C800002E0002300E000231193119B1800FEF7E5FC030010933F246C44109B180013F008FD030023700798079B7C331C0009AA0CA93F236B441B780293049B0193059BD4 +:408CC000009323000CF0B2F903001393139B002B16D02EE00798079B7C331C0009AA0CA9254B0393254B0293049B0193059B009323000CF00BF903001393139B002B15D131 +:408D0000129A16990CAB180005F032FF03001393139B002B0CD1169A129BD118129A09AB180005F025FF0300139302E0C04600E0C0460CAB180005F0FFF909AB180005F0B9 +:408D4000FBF9139B002B03D1129B5A00189B1A60139B1800FDF794FA0300180014B010BD00B1FFFF000003100000021000FFFEFF0000041000000610D06300084949011052 +:408D800010B58EB00590049103920293059B9B6D0733DB080C9309AB180005F0BBF906AB180005F0B7F90C9B5A00109B9A4201D0102337E00C9A029909AB180005F076FEFC +:408DC00003000D930D9B002B1CD1029A0C9BD1180C9A06AB180005F069FE03000D930D9B002B11D10598059B88331C00039A049906AB019309AB009323000CF023FA0300A8 +:408E00000D9302E0C04600E0C04609AB180005F093F906AB180005F08FF90D9B1800FDF72FFA030018000EB010BD000010B58AB00691059204931E236B44021C1A800E9B99 +:408E40000D9A1A60069C8023DA0008A91E236B4418882300FEF75CF803000993099B002B45D1089B1A68E023DB051A40E023DB059A4202D0082309933AE0089B1B682B4A12 +:408E8000934210D1089B1869049C059A06990E9B02930D9B01930C9B00932300FFF7BCFD0300099324E0089B1B68214A1340214A934219D1069B204A1340204A934210D145 +:408EC000089B1869049C059A06990E9B02930D9B01930C9B00932300FFF790FE0300099306E00823099303E00223099300E0C046099B002B0CD10E9B1B680C9AD0180E9B30 +:408F00001B680D9AD31A1A0021212EF0A7FF08E00D9B002B05D00D9A0C9B212118002EF09DFF099B18000AB010BDC046000001700000FFEF0000036000FFFEFF00000610EB +:408F400010B588B004910392029316236B44021C1A80049C80231A0106A916236B4418882300FDF7D5FF03000793079B002B01D0079B30E0069B1B68184A1340184A934218 +:408F80000DD1069B1869029C039A04990B9B01930A9B00932300FFF7B9FD03001BE0069B1B68104A1340104A934213D1049B0F4A13400F4A93420BD1069B18690A9C029AFD +:408FC00003990B9B00932300FFF7DAFE030002E0082300E00223180008B010BDFFFFFFEF000001600000FFEF0000036000FFFEFF0000061010B586B001900091019BFF226F +:409000009343124A934206D1019BFF22134080225204134300E000230593059B1800FEF71DFB030004930F246C44049B180013F040FB030023700F236B441A78009B01215C +:40904000180016F0C1FCC04606B010BD0000031210B58EB008910792069326236B44021C1A80149B00221A60089BFF229343444A934204D0119B002B01D008237DE0089C09 +:4090800080235A000AA926236B4418882300FDF73FFF03000C930C9B002B01D00C9B6CE00A9B1A68E023DB051A40C023DB059A420AD00A9B1A68E023DB051A40E023DB05B7 +:4090C0009A4201D0082358E00A9B1B682D4A13402D4A934250D10A9B1B690B930B9B180016F081FC0200139B9A4201D9082344E0089B264A93420ED1254A26490B98129B4F +:409100000293079B0193069B0093002317F064FA03000D9320E0089BFF229343184A934218D10B9A089B11001800FFF763FF184A18490B98129B0493079B0393069B02936A +:40914000119B0193109B0093002317F0BFF803000D9301E0082310E00D9B002B06D10B9B180016F040FC0200149B1A600D9B1800FDF786F8030000E0022318000EB010BD3F +:4091800000000312FFFFFFEF0000016000000212D06300084949011010B58EB008910792069326236B44021C1A80149B00221A60089BFF2293433C4A934204D0119B002BF2 +:4091C00001D008236CE0089C80239A000AA926236B4418882300FDF79BFE03000C930C9B002B01D00C9B5BE00A9B1A68E023DB051A40E023DB059A4201D0082350E00A9B30 +:409200001B682A4A93424AD10A9B1B690B930B9B180016F0E8FB0200069B9A4201D008233EE0089B224A934210D1224A22490B98139B0393129B0293079B0193149B009303 +:40924000012317F0B5FD03000D9322E0089BFF229343154A93421AD10B9A089B11001800FFF7C8FE134A14490B98139B0593129B0493079B0393149B0293119B0193109B38 +:409280000093012317F0DEF903000D9301E0082306E00D9B1800FCF7F3FF030000E0022318000EB010BDC046000003120000017000000212D06300084949011000B583B0CE +:4092C00001900091009AFE23DB051A408023DB049A4207D0019B4C22002118002EF0BEFD08231DE0019B009A1A60019B1A7901218A431A71019B1A7904218A431A71019B3D +:409300001A7902210A431A71019B00225A71019B00229A71019B0833180009F03DFF0023180003B000BD000010B58AB003900800019219000A236B44021C1A8009236B44C9 +:409340000A1C1A70784B09930023089309236B441B785BB2012B02D180235B0001E080239B000793019A039B11001800FFF7A6FF03000693069B002B01D0069BD1E0019CCA +:40938000079A04A90A236B4418882300FDF7C0FD03000693069B002B01D0069BC1E0049B1800FDF7CBFE03000593049B1968059A01980023FEF7C4FB03000893089B002BEA +:4093C00001D10223ADE0039B0833089A1100180009F018FF03000993099B002B09D0039B180000F02BFA099B1800FCF749FF030097E0039B08331800049B1969059A0923D5 +:409400006B441B785BB209F02DFF03000993099B002B09D0039B180000F010FA099B1800FCF72EFF03007CE0019B404A934203D03F4A934209D011E0039B0833042118007A +:409440000AF01CFB030009930BE0039B0833002118000AF013FB0300099302E000230993C046099B002B09D0039B180000F0E6F9099B1800FCF704FF030052E0039B1A79AC +:4094800001210A431A71019AFF23DB051A409023DB049A421DD0049B1B68264A934216D0049B1B68244A93420FD0049B1B68234A934208D0049B1B68214A944663445A42E9 +:4094C0005341DBB206E0102304E0082302E0102300E00123039A9371019A8023DB0313401ED0049B1B68134A934216D0049B1B68114A93420FD0049B1B68104A934208D078 +:40950000049B1B680E4A944663445A425341DBB204E0102302E0082300E01023039A5371002318000AB010BD809FFFFF00016004010160040100004002000040030000406B +:40954000FCFFFFBF00B585B0039001920A236B440A1C1A80019A0A236B44198803980123FFF7E2FE0300180005B000BD00B585B0039001920A236B440A1C1A80019A0A23D8 +:409580006B44198803980023FFF7CEFE0300180005B000BD00B587B00390029101920093039B1B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D107230593E6 +:4095C0002AE0039B5B791A00019B9A4202D90423059321E0039B5B791A000299144B18000BF0B2F903000493049B002B06D0049B1800FCF745FE030005930DE0039B5B795D +:409600001A00009B1A60009B1A680299039B180000F010F803000593059B002B03D0039B180000F00BF9059B180007B000BDC046D063000800B587B0039002910192039B02 +:409640001B7904221340DBB2002B06D1039B1B7902221340DBB2002B02D10723059317E0039B5B791A00019B9A4202D0082305930EE0039B0833019A0299180009F06AFE52 +:4096800003000493049B1800FCF7FAFD03000593059B002B05D1039B1A7904210A431A7103E0039B180000F0C9F8059B180007B000BD10B58AB00590049103920293059B9C +:4096C0001A68FF23DB051A409023DB049A4210D0059BDA6A039BD218059B9B791900100032F01EFA03001A00059B9B795343089301E0039B08930C9A089B9A4202D204237F +:40970000099312E0059B08331800029C039A04990D9B0093230009F079FE03000793079B1800FCF7ADFD03000993099B002B03D0059B180000F082F8099B18000AB010BD68 +:4097400000B58BB0039002910192009301230993384B0893039B1B7901221340DBB2002B02D10723099355E0039B1B7902221340DBB2002B09D0039B1B7904221340DBB22F +:40978000002B02D10723099344E0039B1B7C5BB2012B0BD1039B1B68274A934206D1039BDB6A002B02D00823099333E0039B0833009A04A918000AF08FF803000893089B85 +:4097C000002B06D0089B1800FCF75AFD0300099320E0009B1B68002B0FD0009B1A68019B9A4207D8009B1A6804A9029B18002EF0A3FA02E0042309930CE004AB1021180065 +:40980000FCF7F2FC039B180000F018F803000993099B0CE0009B00221A6004AB10211800FCF7E2FC039B180000F008F8099B18000BB000BD809FFFFF0001600400B583B01E +:409840000190019B1B68002B01D1002328E0019B1A68FE23DB051A408023DB049A4201D007231DE0019B0833180009F0A1FC019B00221A60019B1A7901218A431A71019B3F +:409880001A7904218A431A71019B00225A71019B00229A71019B1A7902218A431A710023180003B000BD000000B585B0020000916B4606331A80009B002B01D108231BE032 +:4098C00002AA6B4606331B8811001800FDF7F8FA03000393039B002B01D0039B0CE0009B1B68074A134001D0082305E0029B009A043303CA03C30023180005B000BDC0460C +:40990000FEE0FFFF00B585B0020000916B4606331A80009B002B01D1082314E002AA6B4606331B8811001800FDF780FA03000393039B002B01D0039B05E0029B009A04339F +:4099400003CB03C20023180005B000BD00B585B0020000916B4606331A8002AA6B4606331B8811001800FDF761FA03000393039B002B01D0039B04E0029BDA68009B1A604C +:409980000023180005B000BD00B585B0020000916B4606331A80009B002B08D0009B012B05D0009B104A934201D0082318E002AA6B4606331B8811001800FDF781FA03002D +:4099C0000393039B002B01D0039B09E0009B064A934201D1022303E0029B009ADA600023180005B000BDC046FFFFFF7F00B583B00190019ACC235B00D3580B4A934203D0F0 +:409A00000A4A934206D00BE0019B0833180008F044FA05E0019B0833180012F007FAC046C04603B000BDC046011000060210000610B588B00390019200930A236B440A1CD7 +:409A40001A800399009C019A0A236B4418882300FDF75EFA03000793079B002B01D0079BC6E0039B1B681800FDF768FB03000693039B1B68196817236B44069A0098FEF727 +:409A80005FF80200039B5A60039B5B68002B01D10223ADE0009B584A1340584A934203D0574A934239D06EE0039ACC235B005549D150039ACE235B001021D154039B1B6838 +:409AC0001B68514A93420DD0039B1B681B684F4A934205D0039B1B681B684D4A934201D0082385E0039B0833180008F088F9039B0833180017236B441978039B1B681A69C5 +:409B0000069B08F088F903001800FCF7B9FB03000793079B002B38D065E0039ACC235B003C49D150039ACE235B001021D154039B1B681B68344A93420DD0039B1B681B684E +:409B4000324A934205D0039B1B681B68304A934201D008234CE0039B0833180011F0CDF9039B0833180017236B441978039B1B681A69069B11F010FB03001800FCF780FBA7 +:409B80000300079302E0022332E0C046009AFE23DB051A40C023DB049A4204D1009B1B0A3F22134000E000230399CE2252008A5C934202D90823079315E0009AFE23DB0541 +:409BC0001A40C023DB049A4206D1009B1B0ADBB23F221340D9B200E00021039A9E23FF33D154002304E0039B1800FFF7FFFE079B180008B010BDC046FFC0FFFF010000069B +:409C000002000006011000060100004002000040030000400210000630B5F7B00A9109920893554B76AA94466344021C1A80809B00221A600A9C80235A004F4B76A98C46EC +:409C4000634419880CA82300FFF7F2FE03007593759B002B01D0759B8BE0484B76AAD2189E23FF33D35C1A007D9BD2187F9B9A4202D90423759369E07E9A7D9BD318749307 +:409C80003E4B76AAD218CC235B00D3583C4A934223D13A4B76AAD2189E23FF33D35C1C0009997D9A0CAB08331800749B069305947E9B04937C9B03937B9B02937A9B0193CB +:409CC000089B00930B00012112F02EF803001800FCF7D6FA030075932CE0284B76AAD218CC235B00D358274A934221D1234B76AAD2189E23FF33D35C1D00089C099A7D99A6 +:409D00000CAB083318000595749B04937E9B03937C9B02937B9B01937A9B0093230008F0BDFB03001800FCF7ABFA0300759301E002231EE0759B002B08D07F9B002B05D06A +:409D40007F9A7E9B002118002EF088F80CAB1800FFF74CFE759B002B0AD1084B76AAD2189E23FF33D35C1A007D9BD218809B1A60759B180077B030BD56FEFFFF58FEFFFFA3 +:409D8000021000060110000686B00390029101920093039A019B9A4201D908230FE0019A039BD31A0593059A009B9A4201D9042305E0029A059BD218069B1A6000231800B3 +:409DC00006B0704770B5F6B00891079206936D4B76AA94466344021C1A8000230B93809B00221A60089C80239A00664B76A98C46634419880CA82300FFF71AFE030075931C +:409E0000759B002B01D0759BB9E05F4B76AAD218CC235B00D3585D4A934241D15A4B76AAD2189E23FF33D35C1C007F987D9A7C990BAB009303002000FFF7A6FF0300759374 +:409E4000759B002B00D084E04F4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B4A4A76A989189E22FF328A5C1600069D07990CAA083210007E9A05927C9A04920396029312 +:409E80007B9B01937A9B00932B000A00210011F081FF03001800FCF7F3F9030075934BE0394B76AAD218CC235B00D358384A934240D1354B76AAD2189E23FF33D35C1C0016 +:409EC0007F987D9A7C990BAB009303002000FFF75BFF03007593759B002B3CD12A4B76AAD2189E23FF33D35C1A007D9B9C1A0B9B254A76A989189E22FF328A5C1600069D22 +:409F000007990CAA08321000059604937E9B03937C9B02937B9B01937A9B00932B000A00210008F035FB03001800FCF7A9F90300759301E0022322E0759B002B0CD07F9B30 +:409F4000002B09D07F9A7E9B002118002DF086FF02E0C04600E0C0460CAB1800FFF746FD759B002B0AD1084B76AAD2189E23FF33D35C1A007D9B9A1A809B1A60759B1800C2 +:409F800076B070BD4EFEFFFF58FEFFFF021000060110000600B585B0019000230393019B1B68002B5DD0019B1B68334A934211D1019B9B68002B54D0019B9A68019BDB6818 +:409FC00019001000FCF710F9019B9B6818002DF079FB46E0019B1B68FF229343274A93420CD1019B9B6818002DF06CFB019B10331800FDF713FF0300039332E0019B1B6893 +:40A00000FF2293431E4A934206D0019B1B68FF2293431C4A934222D1019B9B68002B0CD0019B9A68019BDB6819001000FCF7DCF8019B9B6818002DF045FB019B1B69002B60 +:40A040000FD0019B1A69019B5B6919001000FCF7CBF8019B1B6918002DF034FB01E007230393FC235A00019B002118002DF0F6FE039B180005B000BD010000310001003094 +:40A08000000200300003003082B001900091019B5A68009B1A600023180002B07047000000B587B00390029101920093029BFF221340802252041343B64A934200D1A0E013 +:40A0C000029BFF221340802252041343B24A934200D194E0029BFF221340802252041343AE4A934200D188E0029BFF221340802252041343AA4A934200D17CE0029BFF2273 +:40A100001340802252041343A64A934200D170E0029BFF221340802252041343A24A934200D164E0029BFF2213408022520413439E4A934259D0029BFF2213408022520415 +:40A1400013439B4A93424ED0029BFF221340802252041343974A934243D0029BFF221340802252041343944A934238D0029BFF221340802252041343904A93422DD0029BC7 +:40A18000FF2213408022520413438D4A934222D0029BFF221340802252041343894A934217D0029BFF221340802252041343864A93420CD0029BFF22134080225204134312 +:40A1C000824A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E01023F1 +:40A2000000E0102316226A441370B8E0039AF4235B00D25C17236B441621694409788A1A1A7017236B441A78009B9A4203D917236B44009A1A70039BA933FF330399F42218 +:40A2400052008A5C991817236B441A78019B18002DF072FD17236B441B78019AD318019317236B441B78009AD31A0093039AF4235B00D25C17236B441B78D318D9B2039A42 +:40A28000F4235B00D154009B002B00D17CE0039AEA23FF33D35CFF2B01D1072376E0039AEA23FF33D35C0133D9B2039AEA23FF33D154039AF4235B000021D154039B083394 +:40A2C0001800039B6933FF33190016236B441A78029BFDF739FE03000493049B002B01D0049B53E0039AEA23FF33D35C012B13D0039B08331800039BA933FF33190016236F +:40A300006B441B781A00FDF77FFA03000493049B002B01D0049B39E0039B08331800039B1968039B5B681A00FDF76EFA03000493049B002B01D0049B28E0039B08331800B3 +:40A34000039BEA33FF3301221900FDF75DFA03000493049B002B01D0049B17E0039B08331800039BA933FF3340221900FEF798F903000493049B002B01D0049B06E0009BAB +:40A38000002B00D042E700E0C0460023180007B000BDC046010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D00000185 +:40A3C0001000000111000001120000011300000100B5E1B001900091009BFF2213408022520413435C935C9BFF221340802252041343A44A934200D1A0E05C9BFF22134027 +:40A40000802252041343A04A934200D194E05C9BFF2213408022520413439C4A934200D188E05C9BFF221340802252041343984A934200D17CE05C9BFF221340802252041D +:40A440001343944A934200D170E05C9BFF221340802252041343904A934200D164E05C9BFF2213408022520413438C4A934259D05C9BFF221340802252041343884A934248 +:40A480004ED05C9BFF221340802252041343854A934243D05C9BFF221340802252041343814A934238D05C9BFF2213408022520413437E4A93422DD05C9BFF22134080224D +:40A4C000520413437A4A934222D05C9BFF221340802252041343774A934217D05C9BFF221340802252041343734A93420CD05C9BFF221340802252041343704A934201D1AE +:40A5000040231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102370227B +:40A54000FF326A441370019B51229B5CFF2B01D1072394E0019B51229B5C0133D9B2019B51229954019B50220021995402AB1800FDF765FC019B51229B5C012B10D1019B33 +:40A580009A687023FF336B441B78D3185E93019BDA687023FF336B441B78D31A5D9307E0019B9B685E937023FF336B441B785D93019B1968019B5A685C9B02A8FDF7C4FCB6 +:40A5C00003005F935F9B002B41D15D9A5E9902AB1800FDF719F903005F935F9B002B38D1019B99687023FF336B441A7802AB1800FEF756F803005F935F9B002B2BD1019BF6 +:40A600001968019B5A685C9B02A8FDF79DFC03005F935F9B002B20D1019B9968019BDA6802AB1800FDF7F0F803005F935F9B002B15D1019B103319007023FF336B441A78E8 +:40A6400002AB1800FEF72CF803005F9308E0C04606E0C04604E0C04602E0C04600E0C04602AB1800FDF7DAFB03005A935F9B002B04D15A9B002B01D05A9B5F935F9B180013 +:40A6800061B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000129 +:40A6C00000B589B00390029101920093029BFF2213408022520413430693069BFF2213408022520413437D4A934200D1A0E0069BFF221340802252041343794A934200D10C +:40A7000094E0069BFF221340802252041343754A934200D188E0069BFF221340802252041343714A934200D17CE0069BFF2213408022520413436D4A934200D170E0069BA4 +:40A74000FF221340802252041343694A934200D164E0069BFF221340802252041343654A934259D0069BFF221340802252041343614A93424ED0069BFF221340802252045C +:40A7800013435E4A934243D0069BFF2213408022520413435A4A934238D0069BFF221340802252041343574A93422DD0069BFF221340802252041343534A934222D0069B91 +:40A7C000FF221340802252041343504A934217D0069BFF2213408022520413434C4A93420CD0069BFF221340802252041343494A934201D140231CE000231AE0302318E033 +:40A80000202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E0102317226A44137049E0039B50229A5C38 +:40A840001F236B441721694409788A1A1A701F236B441B78002B0CD1029A039B11001800FFF7B6FD03000493049B002B2FD0049B31E01F236B441A78009B9A4203D91F2390 +:40A880006B44009A1A70039B1033039A5021525C99181F236B441A78019B18002DF04CFA1F236B441B78019AD31801931F236B441B78009AD31A0093039B50229A5C1F2359 +:40A8C0006B441B78D318D9B2039B50229954009B002BB2D10023180009B000BD010000010200000103000001040000010500000108000001090000010A0000010B0000016B +:40A900000C0000010D0000011000000111000001120000011300000100B589B0039002910192039B5A68019B9A4205D2039B00225A601223079361E0019B002B09D1039B93 +:40A940005B68002B05D1039B1B68002B01D1122362E0039B5A68019BD21A039B5A60039B1B682F4A934213D1039BDA68039B5B68D21A019BD31A0593039B9A68059BD11874 +:40A98000019A029B18002DF0D7F90023079335E0039B1B68FF229343224A934212D1039B1B68FF2213408022520413430693039B08331800019B029A0699FFF771FB0300A3 +:40A9C00007931BE0039B1B68FF229343164A934206D0039B1B68FF229343144A93420BD1039B08331800039B1968019B029AFFF767FE0300079301E007230DE0079B002B73 +:40AA000009D0039B1800FFF7C5FA019A029B212118002DF023FA079B180009B000BDC0460100003100010030000200300003003010B588B00291019200930E236B44021C54 +:40AA40001A8000230693019B0733DB080593029B1800FBF705FC031E01D108232EE0019B0722134001D0082328E0059B190001202CF0A4FA03000693069B002B01D1092345 +:40AA80001CE0059A0699009B1800FFF745FF03000793079B002B0BD1059C069A02990E236B4418882300FCF7C3FA0300079300E0C046069B18002CF005FE079B180008B02D +:40AAC00010BD000000B587B00390029101920093039B08331800009BFF221340802252041343099A0899FDF72FFA03000593059B002B01D0059BEFE0039B0833019A0299ED +:40AB00001800FCF781FE03000593059B002B01D0059BE1E0039B08331800039B6933FF3340221900FDF7BCFD03000593059B002B01D0059BD0E0009BFF22134080225204E0 +:40AB40001343674A934200D1A0E0009BFF221340802252041343634A934200D194E0009BFF2213408022520413435F4A934200D188E0009BFF2213408022520413435B4A6E +:40AB8000934200D17CE0009BFF221340802252041343574A934200D170E0009BFF221340802252041343534A934200D164E0009BFF2213408022520413434F4A934259D0C7 +:40ABC000009BFF2213408022520413434B4A93424ED0009BFF221340802252041343484A934243D0009BFF221340802252041343444A934238D0009BFF22134080225204CA +:40AC00001343414A93422DD0009BFF2213408022520413433D4A934222D0009BFF2213408022520413433A4A934217D0009BFF221340802252041343364A93420CD0009BF0 +:40AC4000FF221340802252041343334A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E056 +:40AC8000142304E0102302E0102300E010230399F42252008B54039AEA23FF330021D154039B0B9A5A600B9B002B14D00B9B190001202CF083F90200039B1A60039B1B68B4 +:40ACC000002B01D1092307E0039B1B680B9A0A9918002DF031F80023180007B000BDC046010000010200000103000001040000010500000108000001090000010A00000196 +:40AD00000B0000010C0000010D0000011000000111000001120000011300000100B589B00390029101920093009BFF221340802252041343904A934200D1A0E0009BFF224F +:40AD400013408022520413438C4A934200D194E0009BFF221340802252041343884A934200D188E0009BFF221340802252041343844A934200D17CE0009BFF221340802227 +:40AD800052041343804A934200D170E0009BFF2213408022520413437C4A934200D164E0009BFF221340802252041343784A934259D0009BFF221340802252041343754AE1 +:40ADC00093424ED0009BFF221340802252041343714A934243D0009BFF2213408022520413436E4A934238D0009BFF2213408022520413436A4A93422DD0009BFF2213407C +:40AE0000802252041343674A934222D0009BFF221340802252041343634A934217D0009BFF221340802252041343604A93420CD0009BFF2213408022520413435C4A9342F6 +:40AE400001D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E01023F2 +:40AE80001F226A4413701F236B441A780B9BD2180D9BD3180693019B190001202CF08EF80200039B1A60039B1B68002B01D109235EE0039B019A5A60039B1B68019A02997D +:40AEC00018002CF039FF0B9A0D9BD2180B9B9A420BD30B9A0D9BD2181F236B441B78D2181F236B441B789A4201D2012300E000230593059B002B01D0082339E0069B19001E +:40AF000001202CF05BF80200039B9A60039B9B68002B01D109232BE0039B069ADA600D9B002B0AD0039B9A681F236B441B78D3180D9A0C9918002CF0FFFE0B9B002B0CD0B4 +:40AF4000039B9A681F236B4419780D9BCB18D3180B9A0A9918002CF0EFFE039B512200219954039B1F226A44502112785A540023180009B000BDC0460100000102000001BF +:40AF800003000001040000010500000108000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000110B5CAB0079006910592049358 +:40AFC000059B802B01D9082351E0059B1B0ADAB2284B4AA98C4663441A70059BDAB2254B4AA98C4663445A7008AB0233059A002118002CF033FF059B02331E4A4AA98C4634 +:40B00000624411781B4A4AA884466244D154059B0333184A4AA98C4662445178154A4AA884466244D154059B043308AAD318059A069918002CF080FE059B02335A00049C70 +:40B0400008A907984F9B03934E9B02934D9B01934C9B00932300FFF761FE0300499382235A0008AB11001800FBF7BEF8499B18004AB010BDF8FEFFFF10B58EB007900691CA +:40B0800005920493079B049A1A60049BD44A934226D1119B002B01D008233BE2139B002B01D0082336E2059B190001202BF086FF0200079B9A60079B9B68002B01D109235C +:40B0C00028E2079B9B68059A069918002CF034FE079B059ADA60059B0C9300230D9302E2049BFF229343BF4A934200D0D1E0049BFF2213408022520413430B930B9BFF22E1 +:40B100001340802252041343B74A934200D1A0E00B9BFF221340802252041343B34A934200D194E00B9BFF221340802252041343AF4A934200D188E00B9BFF22134080229D +:40B1400052041343AB4A934200D17CE00B9BFF221340802252041343A74A934200D170E00B9BFF221340802252041343A34A934200D164E00B9BFF22134080225204134336 +:40B180009F4A934259D00B9BFF2213408022520413439C4A93424ED00B9BFF221340802252041343984A934243D00B9BFF221340802252041343954A934238D00B9BFF224A +:40B1C0001340802252041343914A93422DD00B9BFF2213408022520413438E4A934222D00B9BFF2213408022520413438A4A934217D00B9BFF221340802252041343874AC9 +:40B2000093420CD00B9BFF221340802252041343834A934201D140231CE000231AE0302318E0202316E01C2314E0202312E01C2310E040230EE030230CE020230AE01C23EE +:40B2400008E0142306E0142304E0102302E0102300E010230A930A9B002B01D1022359E10A9A13001B029B1A0C93079B083318000B9C059A0699139B0393129B0293119B81 +:40B280000193109B00932300FFF71CFC03000D9329E1049BFF229343624A934206D0049BFF229343604A934200D01AE1049BFF2213408022520413430993099BFF221340FC +:40B2C000802252041343484A934200D1CAE0099BFF221340802252041343444A934200D1BEE0099BFF221340802252041343404A934200D1B2E0099BFF22134080225204AE +:40B3000013433C4A934200D1A6E0099BFF221340802252041343384A934200D19AE0099BFF221340802252041343344A934200D18EE0099BFF221340802252041343304A25 +:40B34000934200D182E0099BFF2213408022520413432C4A934200D176E0099BFF221340802252041343284A934200D16AE0099BFF221340802252041343244A93425FD04D +:40B38000099BFF221340802252041343204A934254D0099BFF2213408022520413431D4A934249D0099BFF221340802252041343194A93423ED0099BFF221340802252044D +:40B3C0001343164A934233D0099BFF221340802252041343124A934228D1402343E0C046010000310001003001000001020000010300000104000001050000010800000123 +:40B40000090000010A0000010B0000010C0000010D00000110000001110000011200000113000001000200300003003000231AE0302318E0202316E01C2314E0202312E018 +:40B440001C2310E040230EE030230CE020230AE01C2308E0142306E0142304E0102302E0102300E010230893099B2C4A934205D0099B2B4A934201D002234BE0089A130003 +:40B480001B029B1A0C93049BFF229343254A934213D1079B08331800099C059A0699139B0393129B0293119B0193109B00932300FFF734FC03000D9315E0079B08331800AB +:40B4C000099C059A0699139B0393129B0293119B0193109B00932300FFF76CFD03000D9301E0022316E00D9B002B01D00D9B11E0149A0C9B9A4203D8079B149A5A6008E009 +:40B50000149B013303D1079B0C9A5A6001E0082300E0002318000EB010BDC046090000010A0000010002003010B58CB009900792069322236B440A1C1A80099B1B68002B81 +:40B5400001D007233FE0079AFE23DB051A40C0239B059A4201D0082335E0079C80235A010AA922236B4418882300FBF7D1FC03000B930B9B002B01D00B9B24E00A9B1A6867 +:40B58000A423DB059A4201D008231CE00A9B19690A9B5A69079C0998119B0493109B03930F9B02930E9B0193069B00932300FFF763FD03000B930B9B002B03D0099B18008F +:40B5C000FEF7E8FC0B9B18000CB010BD10B5D8B005900491039202930023569307AB180009F019FA54AB180011F0B7FB049A059954AB180012F0D0FD03005793579B002BB2 +:40B600003FD154AB180011F021FC0300023B012B02D9264B579339E0C04654AB18685968FAF7D9FD03005693569B1A78039B1B789A4202D01D4B579328E0569907AB012291 +:40B64000180009F04FFA03005793579B002B1AD1039907AB0022180009F044FA03005793579B002B11D15A9C029A5B9907A8104B0193104B0093230009F084FA0300579337 +:40B6800004E0C04602E0C04600E0C04654AB180011F072FB07AB180009F0F0F9579B1800FAF7EEFD0300180058B010BD80B3FFFFD06300084949011010B59EB00990089177 +:40B6C0000792069300230B93209B234A1340234A93421BD1089B1B681B0C1B04204A934201D0082335E0089B1A690CAC069907980BAB0193422300932300FFF767FF030012 +:40B700001D93C0461D9B002B02D01BE0022320E00B9C209B134A1340C02292051A430CA9099801235B4204930023039300230293002301930023009313002200FFF79CFC47 +:40B7400003001D930B9A0CAB11001800FAF74CFD1D9B18001EB010BD0000F0FE0000202200000370FFFF0F0110B588B005900392029312236B440A1C1A800A9AFC23DB0538 +:40B780001A4088239B059A4201D0082323E00A9C80235A0106A912236B4418882300FBF7B7FB03000793079B002B01D0079B12E00699029C039A05980A9B00932300FFF7D4 +:40B7C0007BFF03000793079B002B03D0059B1800FEF7E0FB079B180008B010BD00B585B0019000910A4B1B68002B01D107230CE0009A0199074B180009F0A6F80300039306 +:40B80000039B1800FAF73CFD0300180005B000BD50610008D063000882B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E00823D3 +:40B8400004E0022302E0052300E00123180002B07047C0463C04041000B587B0019000911E4B1B68002B01D0032334E0009B1F2B07D9009B3F2B04D9009A8023DB009A420B +:40B8800001D9082327E002AAAE235B4211001800F7F73CF803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2358420023F6F79AFF03000493049B180030 +:40B8C000FFF7AAFF0300059304E0049B002B01D103230593059B180007B000BD5061000810B58AB00291019200930E236B44021C1A80009B002B04D10C9B002B01D0082332 +:40B90000C0E004AA0E236B441B8811001800FBF7D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B10331A000199029B1800FAF7F0FF03000993BA +:40B94000099B002B01D0099B9CE0049B1A69049B5B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFE099B87E0029B454A1340454A934200D0CC +:40B980006CE0029AE023DB051A40E023DB059A4264D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C4422236B441B881800FAF780FF03002370A5 +:40B9C00021236B441B78180009F0EAFD03000793009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B9B881A00019B9A4201D0082342E0AC2189 +:40BA000001202BF0DBFA03000693069B002B01D1092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903000593059B002B0DD0069B180009F0B5FE24 +:40BA4000069B18002BF03EFE059B1800FAF718FC030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D10499019A0E236B441B881800FBF743FD0300A9 +:40BA800000E0099B18000AB010BDC0460000FFEF00000360D06300084949011000B585B00E236B4401221A801EE001AA0E236B441B8811001800FBF7B9F903000293029B79 +:40BAC000002B09D1019B1800FBF76CFA019B18211800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202BDBD9094B180008F05AFC084B18000EF019 +:40BB000079FFD823DA00064B11001800FAF76CFBC04605B000BDC046D0630008586100085061000810B584B002AB1B4A1A601B4B1B68002B01D000232BE0D823DA00174BE4 +:40BB400011001800FAF750FB154B18000EF028FF144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039B002B03D1094B01221A6000E0C046039B50 +:40BB8000002B01D0FFF78AFF039B1800FAF778FB0300180004B010BD505341005061000858610008D0630008A1AC011000B587B00390029101920093089B0593059B3749CA +:40BBC000082218002CF0B8F8059B00221A72059B00225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B5A73019B1B0CDAB2059B9A73019B1B0EAF +:40BC0000DAB2059BDA73009B1B68DAB2059B1A74009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB2059BDA74009B5B68DAB2059B1A75009B82 +:40BC40005B681B0ADAB2059B5A75009B5B681B0CDAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2059B5A76029B1B0CDAB2059B9A76029B6B +:40BC80001B0EDAB2059BDA76059B1C33029A039918002CF051F8C04607B000BD6404041000B583B001900749019B082218002CF01DF8031E01D00C2300E00023180003B07E +:40BCC00000BDC0466404041000B589B00390029101920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B002B01D0069B80E0079B1B7A1A00079B8A +:40BD00005B7A1B021A43079B9B7A1B041A43079BDB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A43079B9B7E1B041A43079BDB7E1B061A436B +:40BD4000009B1A60009B1A68029B1C3B9A4205D8009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019B1A60019B1B68002B01D109233DE0079B14 +:40BD80001B7B1A00079B5B7B1B021A43079B9B7B1B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079B9B7C1B041A43079BDB7C1B061A430B9B80 +:40BDC0001A60079B1B7D1A00079B5B7D1B021A43079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B1B681A002BF0A0FF0023180009B000BDAA +:40BE000010B58AB004910392029316236B44021C1A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F803000893089B002B01D1092317E0039CDD +:40BE4000049A0C990298089B00932300FFF7AEFE099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B18000AB010BD00B583B001900091019B002B85 +:40BE800005D0009A019B1100180012F0D7FE019B18002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002309930023079307AA16236B441B881100F8 +:40BEC000180000F03DF903000993099B002B01D0099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089916236B441B88180000F047F8030009939A +:40BF0000099B002B0DD107990C9C029A0898039B0193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B18000AB010BD82B00190019B092B13D8019B00 +:40BF40009A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C0466C04041082B002006B4606331A806B467C +:40BF800006331B88180002B0704700B58BB0029101920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B11001800F6F7ABFC03000893089B1800FFF701 +:40BFC000B9FF03000793079B002B01D0079B0EE0029B019A09980021F6F750FC03000893089B1800FFF7A6FF03000793079B18000BB000BD00B587B002006B4606331A8056 +:40C000006B4606331B881800FFF7B4FF0300059302AA059B11001800F6F778FC03000493049B072B01D1002300E00123180007B000BD00B58BB0029101920E236B44021C3D +:40C040001A800E236B441B881800FFF793FF030008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A019908980023F6F7BCFB03000793079B1800FFF75AFF8A +:40C0800003000993099B002B01D00C2321E005AA089B11001800F6F739FC03000793079B1800FFF747FF03000993099B002B07D105AB1A68019B9A4203D00C23099300E073 +:40C0C000C046099B002B03D0089B1800F6F766FC099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0300059302AA059B11001800F6F706FC0D +:40C1000003000493049B072B01D1002315E0059B1800F6F743FC031E01D00C230DE002AA059B11001800F6F7F1FB03000493049B072B01D00C2300E00023180007B000BD70 +:40C1400000B589B0020000916B4606331A806B4606331B881800FFF70DFF0300079303AA079B11001800F6F7D1FB03000693069B1800FFF7DFFE03000593059B002B01D0E6 +:40C18000059B04E003AB1A68009B1A600023180009B000BD00B585B0019000910199009AAE2358420B000021F6F768FB03000393039B5B42180005B000BD00B585B0019005 +:40C1C0000091019A0099AE2358420023F6F70EFB03000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF035FEC04603B000BD00B583B00190019B68 +:40C20000002B07D08C235A00019B1100180012F015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D080225200934209D0802B0BD1039B0A221A600AE068 +:40C24000039B0C221A6006E0039B0E221A6002E020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318059A920002998A1812781000059A9200DC +:40C28000013202998A181278120201001143059A9200023202988218127812041143059A9200033202988218127812060A431A60059B01330593019B5A09059B9A42D3D8F9 +:40C2C000039B1B680C2B5ED00E2B00D1C8E00A2B00D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C321268120AFF200240AD48825C5140049A7B +:40C300000C321268120CFF200240A948825C12025140049A0C321268120EA548825C12045140049A0C321268FF200240A048825C12064A401A60049B1433049A043211689E +:40C34000049A103212684A401A60049B1833049A08321168049A143212684A401A60049B1C33049A0C321168049A183212684A401A60059B01330593049B10330493059B94 +:40C38000092BAAD90EE10023059365E0049B1833049A1168854A0598800082585140049A14321268120AFF2002408148825C5140049A14321268120CFF2002407C48825CED +:40C3C00012025140049A14321268120E7848825C12045140049A14321268FF2002407448825C12064A401A60049B1C33049A04321168049A183212684A401A60049B2033CD +:40C40000049A08321168049A1C3212684A401A60049B2433049A0C321168049A203212684A401A60049B2833049A10321168049A243212684A401A60049B2C33049A1432E1 +:40C440001168049A283212684A401A60059B01330593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A0598800082585140049A1C321268120A3E +:40C48000FF2002404A48825C5140049A1C321268120CFF2002404648825C12025140049A1C321268120E4248825C12045140049A1C321268FF2002403D48825C12064A40C3 +:40C4C0001A60049B2433049A04321168049A203212684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A0C321168049A283212684A401A60049BEC +:40C500003033049A10321168049A2C321268FF2002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C321268120CFF2002401D48825C12045140CB +:40C54000049A2C321268120E1948825C12064A401A60049B3433049A14321168049A303212684A401A60049B3833049A18321168049A343212684A401A60049B3C33049A50 +:40C580001C321168049A383212684A401A60059B01330593049B20330493059B062B00D861E7C0460023180007B000BD942604109404041000B5D1B003900291019205AB7A +:40C5C0001800FFF70CFE039B08334D93039B4D9A5A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA944663441A68039B1A60514B50AA944663440B +:40C600005A684F4B50A98C4663441B681B01D3184C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C91126894 +:40C640001A604D9B1A1D4D924C9A111D4C9112681A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9A1268FF210A4033498A5C1100324A890083 +:40C6800089584C9A1268120AFF2002402D48825C10002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825851404C9A1268120E2248825C1000254A15 +:40C6C000800082584A401A604E9B01334E934C9B04334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D4D924C9A111D4C9112681A604D9B1A1D51 +:40C700004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C04605AB1800FFF760FD4B9B180051B000BDB2 +:40C74000D4FEFFFF9404041094160410941A0410941E04109422041000B58FB0039002910192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B04D4 +:40C780001A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B06F9 +:40C7C00013430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C9222 +:40C800001B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B52 +:40C840001B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A40B6 +:40C88000089B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B890043 +:40C8C000CB585A400B9B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF211940D84B8900CB585A400B9B1B0CFF21194030 +:40C90000D54B8900CB585A400A9B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AFF211940C74B8900CB585A400A9B1B0CF3 +:40C94000FF211940C44B8900CB585A40099B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A40069B1B0AFF211940B64B8900CB585A4052 +:40C98000059B1B0CFF211940B34B8900CB585A40049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B8900CB585A40059B1B0AFF211940A54B89004C +:40C9C000CB585A40049B1B0CFF211940A24B8900CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940974B8900CB585A40049B1B0AFF211940FC +:40CA0000944B8900CB585A40079B1B0CFF211940914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40079B1B0AFC +:40CA4000FF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A686D +:40CA80000B9BFF211940724B8900CB585A400A9B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089B190E6A4B8900CB58534007930C9B1A1D9A +:40CAC0000C921A680A9BFF211940614B8900CB585A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB585A400B9B190E594B8900CB58534006935D +:40CB00000C9B1A1D0C921A68099BFF211940504B8900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B8900CB585A400A9B190E484B8900CB58AE +:40CB4000534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A40099B190E374B33 +:40CB80008900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40049B1B0EC7 +:40CBC0002749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40079BCE +:40CC00001B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A4048 +:40CC4000069B1B0E0649CB5C1B065340099309E09405041094090410940D041094110410940404100C9B1A1D0C921B68049AFF210A403C498A5C5A40079B1B0AFF210B4085 +:40CC80003849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A5F +:40CCC000120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70EF +:40CD0000019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120A4E +:40CD4000D2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BD9404041000B58FB0039002910192039B5B680C93029B1B781A00029B55 +:40CD800001331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B01 +:40CDC00006331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029BA9 +:40CE00000B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B061343089359 +:40CE40000C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40089B1B0AFF211940FA4B8900CB585A4011 +:40CE8000099B1B0CFF211940F74B8900CB585A400A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A400B9B1B0AFF211940E94B890027 +:40CEC000CB585A40089B1B0CFF211940E64B8900CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A400A9B1B0AFF2119401F +:40CF0000D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A40099B1B0ADF +:40CF4000FF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A4033 +:40CF8000049B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B890034 +:40CFC000CB585A40079B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940E7 +:40D00000974B8900CB585A40069B1B0AFF211940944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B8900CB58534009930C9B1A1D0C921A68049BE8 +:40D04000FF211940864B8900CB585A40059B1B0AFF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190E7E4B8900CB58534008930D9B013B0D938C +:40D080000D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A400A9BAB +:40D0C000190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB58A5 +:40D100005A40099B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B16 +:40D140008900CB585A40089B190E484B8900CB58534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2119403C4B8900CB585A400A9B1B0CFF2150 +:40D180001940394B8900CB585A400B9B190E374B8900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0AFF210B402E49CB5C1B025A40059B1B0CD7 +:40D1C000FF210B402A49CB5C1B045A40069B1B0E2749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079B1B0AFF210B401E49CB5C1B025A40049BB5 +:40D200001B0CFF210B401A49CB5C1B045A40059B1B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40069B1B0AFF210B400D49CB5C1B025A4031 +:40D24000079B1B0CFF210B400949CB5C1B045A40049B1B0E0649CB5C1B065340099309E094160410941A0410941E041094220410941504100C9B1A1D0C921B68049AFF2147 +:40D280000A403C498A5C5A40059B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B51 +:40D2C00001330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120C26 +:40D30000D2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B1B +:40D340000C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BD9415041000B585B00390029139 +:40D3800001920093029B012B07D1009A0199039B1800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B58BB00390029101920093019B0F2213405D +:40D3C00002D022235B4269E0029B002B62D131E00C9905AB102218002AF0AEFC0D9B0C9A02990398FFF7C8FF0023099310E0099B0D9AD318099A0D998A181178099A0098EC +:40D40000821812784A40D2B21A70099B01330993099B0F2BEBDD05A9009B102218002AF08BFC0C9B10330C930D9B10330D93019B103B0193019B002BCAD12EE00023099324 +:40D4400010E0099B0D9AD318099A0C998A181178099A0098821812784A40D2B21A70099B01330993099B0F2BEBDD0D9B0D9A02990398FFF781FF0D99009B102218002AF062 +:40D480005BFC0C9B10330C930D9B10330D93019B103B0193019B002BD0D1002318000BB000BD00B589B00390029101920093019B1B680693069B0F2B39D921235B423FE08C +:40D4C000069B002B1BD10A9B009A03980121FFF753FF102307930DE0079B013B009AD3181A780132D2B21A701B78002B06D1079B013B0793079B002BEEDC00E0C0460B9B10 +:40D500005A1C0B921B7805930C9B5A1C0C92059A51B20A98069A8218127852B24A4052B2D2B21A70069B01330F2213400693029B5A1E0292002BC3D1019B069A1A60002317 +:40D54000180009B000BD84B0039002910192029A039B1B68D31A002B02DC60235B42A8E0039B1B681B785BB2002B09DB039B1B68591C039A11601B781A00019B1A608CE032 +:40D58000039B1B681B781A007F231340022B1ED002DC012B05D07DE0032B33D0042B52D078E0029A039B1B68D31A012B02DC60235B427EE0039B1B6801331B781A00019BA7 +:40D5C0001A60039B1B689A1C039B1A6065E0029A039B1B68D31A022B02DC60235B4268E0039B1B6801331B781A02039B1B6802331B781A43019B1A60039B1B68DA1C039B4B +:40D600001A604AE0029A039B1B68D31A032B02DC60235B424DE0039B1B6801331B781A04039B1B6802331B781B021A43039B1B6803331B781A43019B1A60039B1B681A1D25 +:40D64000039B1A6029E0029A039B1B68D31A042B02DC60235B422CE0039B1B6801331B781A06039B1B6802331B781B041A43039B1B6803331B781B021A43039B1B6804337D +:40D680001B781A43019B1A60039B1B685A1D039B1A6002E064235B420BE0019B1A680299039B1B68CB1A9A4202D960235B4200E00023180004B0704700B585B00390029197 +:40D6C00001920093029A039B1B68D31A002B02DC60235B4215E0039B1B681B781A00009B9A4202D062235B420BE0039B1B685A1C039B1A60019A0299039B1800FFF723FF65 +:40D700000300180005B000BD00B587B003900291019204AA029903980223FFF7CDFF03000593059B002B01D0059B26E0049B002B08D0049B042B05D8039B1B681B785BB201 +:40D74000002B02DA64235B4217E0019B00221A600DE0019B1B681A02039B1B681B781A43019B1A60039B1B685A1C039B1A60049B5A1E0492002BECD10023180007B000BD0D +:40D7800000B587B003900291019204AA029903980223FFF791FF03000593059B002B01D0059B0FE0039B1968049A019B180001F07DF903000593039B1A68049BD218039BB5 +:40D7C0001A60059B180007B000BD00B587B0039002910192019A029903980323FFF76CFF03000593059B002B01D0059B12E0019B1B68591E019A1160012B07D9039B1B68EE +:40D80000591C039A11601B78002B02D068235B4200E00023180007B000BD00B587B0039002910192009304AA029903983023FFF743FF03000593059B002B01D0059B65E05B +:40D84000029A039B1B68D31A002B02DC60235B425CE0039B1B681B781A00019B1A60039B1A68049BD3180293019B1A1D029903980623FFF721FF03000593059B002B01D0F7 +:40D88000059B43E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4206D1009B0C21180011F0C7F900232CE0039B1B681B781A00009B1A60039BAD +:40D8C0001B685A1C039B1A60009B1A1D0299039B1800FFF738FE03000593059B002B01D0059B13E0039B1A68009B9A60039B1A68009B5B68D218039B1A60039B1A68029B0C +:40D900009A4202D066235B4200E00023180007B000BD000084B0039002910192019B7F2B15D8039B1B681A00029BD31A002B02DC6C235B42D3E0039B1B685A1E039B1A6006 +:40D94000039B1B68019AD2B21A700123C7E0019BFF2B1ED8039B1B681A00029BD31A012B02DC6C235B42BAE0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B6825 +:40D980005A1E039B1A60039B1B6881221A700223A5E0019B534A934229D8039B1B681A00029BD31A022B02DC6C235B4297E0039B1B685A1E039B1A60039B1B68019AD2B26C +:40D9C0001A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B6882221A70032377E0019B3D4A934234D8039B1B681A00029BD31AC0 +:40DA0000032B02DC6C235B4269E0039B1B685A1E039B1A60039B1B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B04 +:40DA40001B68019A120CD2B21A70039B1B685A1E039B1A60039B1B6883221A7004233EE0039B1B681A00029BD31A042B02DC6C235B4234E0039B1B685A1E039B1A60039BB5 +:40DA80001B68019AD2B21A70039B1B685A1E039B1A60039B1B68019A120AD2B21A70039B1B685A1E039B1A60039B1B68019A120CD2B21A70039B1B685A1E039B1A60039BBB +:40DAC0001B68019A120ED2B21A70039B1B685A1E039B1A60039B1B6884221A700523180004B07047FFFF0000FFFFFF0084B0039002916B4607331A70039B1B681A00029B8B +:40DB0000D31A002B02DC6C235B420BE0039B1B685A1E039B1A60039B1B686A46073212781A700123180004B0704700B587B0039002910192009300230593039B1A68029BB2 +:40DB40009A4208D3039B1B681A00029BD31A1A00009B9A4202D26C235B4210E0009B0593039B1A68059B5B42D218039B1A60039B1B68059A019918002AF0DEF8059B1800FC +:40DB800007B000BD00B587B003900291019200230493019B180000F03CFE03000493039B1A68029B9A4208D3039B1B681A00029BD31A1A00049B9A4202D26C235B4259E013 +:40DBC000039B1A68049B5B42D218039B1A60039B1968049A019B180000F0CAFF03000593059B002B44D1019B1B68012B1BD1039B1B681B785BB2002B15DA039B1B681A00D5 +:40DC0000029BD31A002B02DC6C235B4232E0039B1B685A1E039B1A60039B1B6800221A70049B01330493049A0299039B1800FFF771FE03000593059B002B01DA059B19E0FD +:40DC4000059B049AD31804930299039B02221800FFF74CFF03000593059B002B01DA059B08E0059B049AD3180493049B059300E0C046059B180007B000BD00B585B00190E1 +:40DC80000091002303930099019B00221800FFF741FE03000293029B002B01DA029B15E0029B039AD31803930099019B05221800FFF71CFF03000293029B002B01DA029B91 +:40DCC00004E0029B039AD3180393039B180005B000BD00B587B0039002910192009300230593009B019A02990398FFF71EFF03000493049B002B01DA049B26E0049B059AC9 +:40DD0000D3180593059A0299039B1800FFF702FE03000493049B002B01DA049B15E0049B059AD31805930299039B06221800FFF7DDFE03000493049B002B01DA049B04E0DA +:40DD4000049B059AD3180593059B180007B000BD00B587B0039002910192009300230593089B002B11D1029A039B11001800FFF784FF03000493049B002B01DA049B3CE03D +:40DD8000049B059AD318059303E0059A089BD3180593009B019A02990398FFF79AFF03000493049B002B01DA049B26E0049B059AD3180593059A0299039B1800FFF7AAFDCD +:40DDC00003000493049B002B01DA049B15E0049B059AD31805930299039B30221800FFF785FE03000493049B002B01DA049B04E0049B059AD3180593059B180007B000BDC4 +:40DE000000B587B003900291019200230593039B1B681A00029BD31A002B02DC6C235B424EE0059B01330593039B1B685A1E039B1A60039B1B68019AD2B21A70019B002BAC +:40DE40001BDD039B1B681B785BB2002B15DA039B1B681A00029BD31A002B02DC6C235B422EE0039B1B685A1E039B1A60039B1B6800221A70059B01330593059A0299039B05 +:40DE80001800FFF747FD03000493049B002B01DA049B15E0049B059AD31805930299039B02221800FFF722FE03000493049B002B01DA049B04E0049B059AD3180593059BCE +:40DEC000180007B000BD000000B58BB003900291019200930023079300230893089B09936FE00023069305E0099B01330993069B01330693099A0C9B9A4205D2009A099B93 +:40DF0000D3181B78202BEFD0099A0C9B9A425DD00C9A099BD31A012B0CD9009A099BD3181B780D2B06D1099B0133009AD3181B780A2B40D0009A099BD3181B780A2B3CD0C1 +:40DF4000069B002B02D02C235B42D0E0009A099BD3181B783D2B08D1079B01330793079B022B02D92C235B42C1E0009A099BD3181B785BB2002B08DB009A099BD3181B7830 +:40DF80001A005C4B9B5C7F2B02D12C235B42AEE0009A099BD3181B781A00564B9B5C3F2B05D8079B002B02D02C235B429FE0089B0133089302E0C04600E0C046099B0133DB +:40DFC0000993099A0C9B9A428BD300E0C046089B002B04D1019B00221A60002387E0089BDA0813005B009B185B001900089B07221A4013005B009B185B000733DB08CB18FA +:40E000000893089A079BD31A0893039B002B03D0029A089B9A4205D2019B089A1A602A235B4264E0032307930023069300230893039B059351E0009B1B780D2B46D0009B4D +:40E040001B780A2B42D0009B1B78202B3ED0009B1B781A00274B9B5C403B5A425341DBB21A00079B9B1A0793069B9A01009B1B781900204B5B5C19003F230B4013430693F1 +:40E08000089B01330893089B042B20D100230893079B002B06D0059B5A1C0592069A120CD2B21A70079B012B06D9059B5A1C0592069A120AD2B21A70079B022B07D9059BDE +:40E0C0005A1C0592069AD2B21A7000E0C046099B013B0993009B01330093099B002BAAD1059A039BD31A1A00019B1A60002318000BB000BDBC26041000B583B0019000914A +:40E10000009B9A00019B1100180010F097FDC04603B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6000E0C04602B0704700B583B00190019BAB +:40E14000002B1AD0019B9B68002B0CD0019B9A68019B5B6819001000FFF7CEFF019B9B68180029F0AFFA019B01221A60019B00225A60019B00229A6000E0C04603B000BDC3 +:40E1800000B585B001900091009B1E4A934202D910235B4232E0019B5A68009B9A422CD2009B0421180028F009FF03000393039B002B02D110235B4220E0019B9B68002B24 +:40E1C00015D0019B9968019B5B689A00039B180029F0B2FD019B9A68019B5B6819001000FFF78AFF019B9B68180029F06BFA019B009A5A60019B039A9A600023180005B039 +:40E2000000BDC0461027000000B585B001900091019B5A68009B9A4207D8009A019B11001800FFF7ADFF03004AE0019B5B68013B03930AE0019B9A68039B9B00D3181B6896 +:40E24000002B06D1039B013B0393039B002BF1D100E0C046039B01330393039A009B9A4201D2009B0393039B0421180028F0A6FE03000293029B002B02D110235B421FE0A2 +:40E28000019B9B68002B14D0019B9968039B9A00029B180029F050FD019B9A68019B5B6819001000FFF728FF019B9B68180029F009FA019B039A5A60019B029A9A60002362 +:40E2C000180005B000BD00B585B00190009100230393019A009B9A4201D100234EE0009B9B68002B05D1019B1800FFF725FF002344E0009B5B68013B02930AE0009B9A6830 +:40E30000029B9B00D3181B68002B06D1029B013B0293029B002BF1D100E0C046029B01330293009B1A68019B1A60019B5A68029B9A420BD2029A019B11001800FFF720FF94 +:40E3400003000393039B002B0ED016E0019B9A68029B9B00D018019B5A68029BD31A9B001A00002129F07AFD019B9868009B9968029B9B001A0029F0DFFC039B180005B072 +:40E3800000BD00B587B0039002916B4607331A70002304936B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF7E1FE03000A +:40E3C0000493049B002B54D1039B1B686A460732127801218A1A5A43029B1B686946073109784B43D218039B1A60002305931FE0039B9A68059B9B00D318039A9168059AD3 +:40E4000092008A1812686946073109780120411A5143029A9068059A92008218126868460730007842438A181A60059B01330593029B5A68059B9A42DAD814E0039B9A6852 +:40E44000059B9B00D318039A9168059A92008A1812686946073109780120411A4A431A60059B01330593039B5A68059B9A42E5D800E0C046049B180007B000BD00B589B0A4 +:40E48000039002916B4607331A70039A029B9A4201D1002395E06B4607331B785B42DAB26B4607331B781343DAB26B460733D2091A70029B5A68039B11001800FFF760FE70 +:40E4C00003000793079B002B77D1039B5A68029B11001800FFF754FE03000793079B002B6DD1039B1B680593039B1B686A460732127801218A1A5A43029B1B68694607319D +:40E5000009784B43D218039B1A60029B1B686A460732127801218A1A5A436B4607331B7805994B43D218029B1A60002306933EE0039B9A68069B9B00D3181B680493039BD0 +:40E540009A68069B9B00D318039A9168069A92008A1812686946073109780120411A5143029A9068069A92008218126868460730007842438A181A60029B9A68069B9B0063 +:40E58000D318029A9168069A92008A1812686946073109780120411A51436A4607321278049842438A181A60069B01330693039B5A68069B9A42BBD802E0C04600E0C046B9 +:40E5C000079B180009B000BD00B585B001900091019B01211800FFF7D3FD03000393039B002B19D1019B9868019B5B689B001A00002129F033FC019B9B68009AD117521853 +:40E600004A401A60009B002B02DA01235A4200E00122019B1A6000E0C046039B180005B000BD82B001900091019B5B685A01009B9A4201D800230EE0019B9A68009B5B0941 +:40E640009B00D3181A68009B1F210B40DA4013001A0001231340180002B0704700B589B0039002916B4607331A7000230793029B5B090693029B1F22134005936B46073399 +:40E680001B78002B07D06B4607331B78012B02D004235B4240E0039B5B685A01029B9A4212D86B4607331B78002B01D1002333E0069B5A1C039B11001800FFF761FD030060 +:40E6C0000793079B002B25D1039B9A68069B9B00D318039A9168069A92008A1812680120059988400100C9430A401A60039B9A68069B9B00D318039A9168069A92008A1889 +:40E7000011686A4607321078059A904002000A431A6000E0C046079B180009B000BD86B0019000230393002305931CE00023049313E0019B9A68059B9B00D3181A68049BD8 +:40E74000DA4013000122134001D0039B11E0049B01330493039B01330393049B1F2BE8D9059B01330593019B5A68059B9A42DDD80023180006B0704784B0019080231B06EE +:40E7800002930023039309E0019B029A134009D1029B5B080293039B01330393039B1F2BF2D900E0C046039B180004B0704700B585B00190019B5B68002B01D1002325E007 +:40E7C000019B5B68013B03930AE0019B9A68039B9B00D3181B68002B06D1039B013B0393039B002BF1D100E0C046019B9A68039B9B00D3181B681800FFF7BEFF0200202381 +:40E800009B1A0293039B5A01029BD318180005B000BD00B583B00190019B1800FFF7C7FF03000733DB08180003B000BD84B0039002916B4607331A70039BFF221A606B4639 +:40E8400007331B782F2B0BD96B4607331B78392B06D86B4607331B78303B1A00039B1A606B4607331B78402B0BD96B4607331B78462B06D86B4607331B78373B1A00039B70 +:40E880001A606B4607331B78602B0BD96B4607331B78662B06D86B4607331B78573B1A00039B1A60039B1A68029B9A4202D306235B4200E00023180004B0704710B58EB005 +:40E8C000039002910192029B012B02DD029B102B02DD04235B42E3E005AB1800FFF71AFC019B180029F0DCFD03000A93029B102B6BD10A9B6C4A934202D904235B42CFE0CD +:40E900000A9B9B005B090A9A92001F210A40511E8A41D2B29B180993099A039B11001800FFF72EFC03000D930D9B002B00D0A5E0039B00211800FFF747FE03000D930D9BB4 +:40E94000002B00D09CE00A9B0C9300230B9338E00C9B012B0BD10C9B013B019AD3181B782D2B04D1039B012252421A6093E00C9B013B019AD3181A78029908AB1800FFF792 +:40E9800055FF03000D930D9B002B00D07AE0039B99680B9BDA089300CB180399896892008A18116808980B9A92001C242240904002000A431A600C9B013B0C930B9B01331E +:40E9C0000B930C9B002BC3D165E0039B00211800FFF7FAFD03000D930D9B002B54D100230C9346E00C9B002B0AD1019A0C9BD3181B782D2B04D1039B012252421A6035E009 +:40EA0000019A0C9BD3181A78029908AB1800FFF70DFF03000D930D9B002B37D1029A039905AB180001F032FD03000D930D9B002B2ED1039B1B68012B0CD1089B1A0005A907 +:40EA4000039B180000F05CFD03000D930D9B002B0CD020E0089B1A0005A9039B180000F072FD03000D930D9B002B13D10C9B01330C930C9A0A9B9A42B4D30CE0C0460AE067 +:40EA8000C04608E0C04606E0C04604E0C04602E0C04600E0C04605AB1800FFF74DFB0D9B18000EB010BDC046FFFFFF3F10B588B0039002910192019B9B08019A03210A402D +:40EAC000511E8A41D2B29B180493039B5A68049B9A4212D0039B1800FFF72EFB039B1800FFF718FB049A039B11001800FFF748FB03000793079B002B33D1039B00211800DA +:40EB0000FFF762FD03000793079B002B2BD1019B06930023059320E0039B9A68059B03218B43D318039A9168059A032082438A181168069A013A0298821812781400059A89 +:40EB4000D20018200240944022000A431A60069B013B0693059B01330593069B002BDBD102E0C04600E0C046079B180008B010BD00B589B0039002910192039B1800FFF7D2 +:40EB800048FE03000593019A059B9A4202D208235B422AE0019A029B0021180029F05EF9019B013B0793002306931AE0029A079BD218039B9968069B03208343CB181968F9 +:40EBC000069BDB0018200340D9400B00DBB21370079B013B0793069B01330693059B013B0593059B002BE1D10023180009B000BD00B589B00190009100230593009B5B0998 +:40EC00000493009B1F2213400393019B1800FFF7CEFD0200009BD3180693019B5B685A01069B9A4212D2069B5B09069A1F210A40511E8A41D2B29A18019B11001800FFF76D +:40EC40009FFA03000793079B002B6ED100230793049B002B2FD0019B5B68069316E0019B9A68069B33498C4663449B00D318019A91680698049A821A2E4884466244920040 +:40EC80008A1812681A60069B013B0693069A049B9A42E4D80CE0019B9A68069B25498C4663449B00D31800221A60069B013B0693069B002BEFD1039B002B37D0049B069333 +:40ECC0002DE0019B9A68069B9B00D3181A68039B2021CB1ADA4013000293019B9A68069B9B00D318019A9168069A92008A181168039A91400A001A60019B9A68069B9B00C8 +:40ED0000D318019A9168069A92008A181168059A0A431A60029B0593069B01330693019B5A68069B9A42CCD800E0C046079B180009B000BDFFFFFF3F00B589B0019000911D +:40ED400000230693009B5B090593009B1F2213400493019B5A68059B9A4207D3019B5A68059B9A4209D1049B002B06D0019B00211800FFF729FC030075E0059B002B2AD065 +:40ED80000023079310E0019B9A68079B9B00D318019A91680798059A821892008A1812681A60079B01330793019B5A68059BD21A079B9A42E7D809E0019B9A68079B9B00F1 +:40EDC000D31800221A60079B01330793019B5A68079B9A42F0D8049B002B43D0019B5B6807933CE0019B9A68079B20498C4663449B00D3181A68049B2021CB1A9A401300AA +:40EE00000393019B9A68079B18498C4663449B00D318019A9168079A14488446624492008A181168049AD1400A001A60019B9A68079B0E498C4663449B00D318019A916891 +:40EE4000079A0A488446624492008A181168069A0A431A60039B0693079B013B0793079B002BBFD10023180009B000BDFFFFFF3F84B001900091019B5B6803930DE0019B4E +:40EE80009A68039B39498C4663449B00D3181B68002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B2E498C4663449B00D3181B68002B90 +:40EEC00006D1029B013B0293029B002BEED100E0C046039B002B04D1029B002B01D1002340E0039A029B9A4201D901233AE0029A039B9A4232D901235B4233E0019B9A6824 +:40EF0000039B1A498C4663449B00D3181A68009B9968039B1548844663449B00CB181B689A4201D901231DE0019B9A68039B0F498C4663449B00D3181A68009B9968039B20 +:40EF40000A48844663449B00CB181B689A4202D201235B4206E0039B013B0393039B002BCCD10023180004B07047C046FFFFFF3F84B001900091019B5B6803930DE0019BE4 +:40EF80009A68039B45498C4663449B00D3181B68002B06D1039B013B0393039B002BEED100E0C046009B5B6802930DE0009B9A68029B3A498C4663449B00D3181B68002B77 +:40EFC00006D1029B013B0293029B002BEED100E0C046039B002B04D1029B002B01D1002359E0039A029B9A4202D9019B1B6852E0029A039B9A4203D9009B1B685B424AE0B2 +:40F00000019B1B68002B05DD009B1B68002B01DA012340E0009B1B68002B38DD019B1B68002B34DA01235B4235E0019B9A68039B1A498C4663449B00D3181A68009B9968F4 +:40F04000039B1648844663449B00CB181B689A4202D9019B1B681EE0019B9A68039B0F498C4663449B00D3181A68009B9968039B0A48844663449B00CB181B689A4203D28A +:40F08000019B1B685B4206E0039B013B0393039B002BCAD10023180004B07047FFFFFF3F00B587B001900091009BDA179B1853400293009B002B02DA01235A4200E001221E +:40F0C00003AB1A6003AB01225A6003AB02AA9A6003AA019B11001800FFF74AFF0300180007B000BD00B58DB0039002910192039A019B9A4205D1029B0593039B0293059B2B +:40F100000193039A029B9A420BD0029A039B11001800FFF7D8F803000B930B9B002B00D08EE0039B01221A60019B5B6809930DE0019B9A68099B47498C4663449B00D3187D +:40F140001B68002B06D1099B013B0993099B002BEED100E0C046099A039B11001800FFF70FF803000B930B9B002B6BD1019B9B680893039B9B6807930023069300230A9314 +:40F180002AE0089B1B680493079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB20693079B1A68049BD218079B1A60079B1A68049B9A429B415B42DBB21A00F5 +:40F1C000069B9B1806930A9B01330A93089B04330893079B043307930A9A099B9A42D0D32AE0039B5A680A9B9A4211D80A9B5A1C039B11001800FEF7C3FF03000B930B9B49 +:40F20000002B21D1039B9A680A9B9B00D3180793079B1A68069BD218079B1A60079B1A68069B9A429B415B42DBB206930A9B01330A93079B04330793069B002BD1D104E006 +:40F24000C04602E0C04600E0C0460B9B18000DB000BDC046FFFFFF3F88B0039002910192002306930023079329E0019B1A68069B9A429B415B42DBB20593019B1A68069BD5 +:40F28000D21A019B1A60019B1A68029B1B689A429B415B42DBB21A00059BD3180693019B1A68029B1B68D21A019B1A60079B01330793029B04330293019B04330193079ACD +:40F2C000039B9A42D1D312E0019B1A68069B9A429B415B42DBB20593019B1A68069BD21A019B1A60059B0693019B04330193069B002BE9D1C04608B07047000000B58BB079 +:40F30000039002910192019A029B11001800FFF7AFFD031E02DA0A235B4250E005AB1800FEF7F8FE039A019B9A420CD1019A05AB11001800FEF7C7FF03000993099B002BD8 +:40F3400035D105AB0193039A029B9A420AD0029A039B11001800FEF7B6FF03000993099B002B26D1039B01221A6000230993019B5B6808930DE0019B9A68089B11498C4693 +:40F3800063449B00D3181B68002B06D1089B013B0893089B002BEED100E0C046019B9968039B9A68089B1800FFF756FF02E0C04600E0C04605AB1800FEF7BEFE099B180068 +:40F3C0000BB000BDFFFFFF3F00B587B0039002910192029B1B680493029B1A68019B1B685343002B26DA019A029B11001800FFF73FFD031E0EDB019A0299039B1800FFF77F +:40F400007DFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF76EFF03000593059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF752FE2B +:40F4400003000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD00B587B0039002910192029B1B680493029B1A68019B1B685343002B59 +:40F4800026DD019A029B11001800FFF7F1FC031E0EDB019A0299039B1800FFF72FFF03000593059B002B22D1039B049A1A6023E0029A0199039B1800FFF720FF030005933D +:40F4C000059B002B15D1049B5A42039B1A6013E0019A0299039B1800FFF704FE03000593059B002B07D1039B049A1A6004E0C04602E0C04600E0C046059B180007B000BD59 +:40F5000000B589B0039002910192019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B1800FFF745FF030008 +:40F54000180009B000BD00B589B0039002910192019BDA179B1853400493019B002B02DA01235A4200E0012205AB1A6005AB01225A6005AB04AA9A6005AA0299039B180077 +:40F58000FFF770FF0300180009B000BD70B5064CA54497909691959294930023A5930023A49300F035FCC04668FDFFFF969A131D96931368009300230193949B02930023E5 +:40F5C0000393029A039B009801992CF09BFC03000C00A293A394A29BA193A39B1B00049300230593049BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09BA1 +:40F600009B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D9693136806930023079308 +:40F64000949B089300230993089A099B069807992CF058FC03000C00A293A394A29BA193A39B1B000A9300230B930A9BA093A19AA59BD318A193A19AA59B9A429B415B4228 +:40F68000DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368FC +:40F6C0000C9300230D93949B0E9300230F930E9A0F9B0C980D992CF015FC03000C00A293A394A29BA193A39B1B00109300231193109BA093A19AA59BD318A193A19AA59BA8 +:40F700009A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969AFA +:40F74000131D96931368129300231393949B149300231593149A159B129813992CF0D2FB03000C00A293A394A29BA193A39B1B00169300231793169BA093A19AA59BD31804 +:40F78000A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593AA +:40F7C000A19B1360969A131D96931368189300231993949B1A9300231B931A9A1B9B189819992CF08FFB03000C00A293A394A29BA193A39B1B001C9300231D931C9BA0930C +:40F80000A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA5934A +:40F84000959A131D9593A19B1360969A131D969313681E9300231F93949B209300232193209A219B1E981F992CF04CFB03000C00A293A394A29BA193A39B1B0022930023AB +:40F880002393229BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18CA +:40F8C000A093A09BA593959A131D9593A19B1360969A131D96931368249300232593949B269300232793269A279B249825992CF009FB03000C00A293A394A29BA193A39B8B +:40F900001B00289300232993289BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB24C +:40F940001A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313682A9300232B93949B2C9300232D932C9A2D9B2A982B992CF0C6FA03000C00A293A394C5 +:40F98000A29BA193A39B1B002E9300232F932E9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B934211 +:40F9C0009B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368309300233193949B329300233393329A339B309831992CF083FA0300CA +:40FA00000C00A293A394A29BA193A39B1B00349300233593349BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B99 +:40FA40001A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368369300233793949B389300233993389A399B3698379922 +:40FA80002CF040FA03000C00A293A394A29BA193A39B1B003A9300233B933A9BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19BC5 +:40FAC0009B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313683C9300233D93949B3E9300233F933E9ADF +:40FB00003F9B3C983D992CF0FDF903000C00A293A394A29BA193A39B1B00409300234193409BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093E0 +:40FB4000959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D96931368429300234393949B44932B +:40FB800000234593449A459B429843992CF0BAF903000C00A293A394A29BA193A39B1B00469300234793469BA093A19AA59BD318A193A19AA59B9A429B415B42DBB21A00C7 +:40FBC000A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969313684893002360 +:40FC00004993949B4A9300234B934A9A4B9B489849992CF077F903000C00A293A394A29BA193A39B1B004C9300234D934C9BA093A19AA59BD318A193A19AA59B9A429B41B5 +:40FC40005B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B1360969A131D969314 +:40FC800013684E9300234F93949B509300235193509A519B4E984F992CF034F903000C00A293A394A29BA193A39B1B00529300235393529BA093A19AA59BD318A193A19AB5 +:40FCC000A59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D9593A19B136025 +:40FD0000969A131D96931368549300235593949B569300235793569A579B549855992CF0F1F803000C00A293A394A29BA193A39B1B00589300235993589BA093A19AA59B07 +:40FD4000D318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA593959A131D21 +:40FD80009593A19B1360969A131D969313685A9300235B93949B5C9300235D935C9A5D9B5A985B992CF0AEF803000C00A293A394A29BA193A39B1D0000231E002B00A093BD +:40FDC000A19AA59BD318A193A19AA59B9A429B415B42DBB21A00A09B9B18A093959B1A68A19B9B18A193959B1A68A19B93429B415B42DBB21A00A09B9B18A093A09BA59385 +:40FE0000959A131D9593A19B1360979B103B9793979B0F2B01D9FFF7C9FB1AE2969A131D969313685E9300235F93949B609300236193609A619B5E985F992CF063F8030048 +:40FE40000C009E939F949E9B9D939F9B1B00629300236393629B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959BFF +:40FE80001A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368649300236593949B669300236793669A679B6498659982 +:40FEC0002CF020F803000C009E939F949E9B9D939F9B1B00689300236993689B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B49 +:40FF00009B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313686A9300236B93949B6C9300236D936C9ACC +:40FF40006D9B6A986B992BF0DDFF03000C009E939F949E9B9D939F9B1B006E9300236F936E9B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93CF +:40FF8000959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D96931368709300237193949B729379 +:40FFC00000237393729A739B709871992BF09AFF03000C009E939F949E9B9D939F9B1B00749300237593749B9C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A0052 +:020000041001E9 +:400000009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D969313687693002311 +:400040007793949B789300237993789A799B769877992BF057FF03000C009E939F949E9B9D939F9B1B007A9300237B937A9B9C939D9AA59BD3189D939D9AA59B9A429B41E4 +:400080005B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B1360969A131D9693F4 +:4000C00013687C9300237D93949B7E9300237F937E9A7F9B7C987D992BF014FF03000C009E939F949E9B9D939F9B1B00809300238193809B9C939D9AA59BD3189D939D9AB6 +:40010000A59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D95939D9B136004 +:40014000969A131D96931368829300238393949B849300238593849A859B829883992BF0D1FE03000C009E939F949E9B9D939F9B1B00869300238793869B9C939D9AA59B00 +:40018000D3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9BA593959A131D05 +:4001C00095939D9B1360969A131D96931368889300238993949B8A9300238B938A9A8B9B889889992BF08EFE03000C009E939F949E9B9D939F9B1B008C9300238D938C9B54 +:400200009C939D9AA59BD3189D939D9AA59B9A429B415B42DBB21A009C9B9B189C93959B1A689D9B9B189D93959B1A689D9B93429B415B42DBB21A009C9B9B189C939C9B75 +:40024000A593959A131D95939D9B1360979B083B9793979B072B00D9E0E545E0969B1A1D96921B688E9300238F93949B909300239193909A919B8E988F992BF043FE030039 +:400280000C009A939B949A9B99939B9B1B00929300239393929B9893999AA59BD3189993999AA59B9A429B415B42DBB21A00989B9B189893959B1B68999AD3189993959B27 +:4002C0001B68999A9A429B415B42DBB21A00989B9B189893989BA593959B1A1D9592999A1A60979B013B9793979B002BB6D1A49B0133A493959B1A68A59BD218959B1A60E9 +:40030000959B1A68A59B9A429B415B42DBB2A593959B04339593A59B002BEBD1C046A6239B009D4470BDC04610B58EB003900291019208AB1800FDF7EDFE05AB1800FDF75B +:40034000E9FE039A029B9A420DD1029A08AB11001800FDF7B8FF03000D930D9B002B00D07EE008AB0293039A019B9A420DD1019A05AB11001800FDF7A6FF03000D930D9B48 +:40038000002B00D06EE005AB0193029B5B680C930DE0029B9A680C9B3B498C4663449B00D3181B68002B06D10C9B013B0C930C9B002BEED100E0C046019B5B680B930DE093 +:4003C000019B9A680B9B30498C4663449B00D3181B68002B06D10B9B013B0B930B9B002BEED100E0C0460C9A0B9BD218039B11001800FDF7C5FE03000D930D9B002B33D198 +:40040000039B00211800FEF7DFF803000D930D9B002B2BD119E0029B9968039B9A680B9B1948844663449B00D418019B9A680B9B1548844663449B00D3181B680C98220090 +:40044000FFF7A4F80B9B013B0B930B9B002BE2D1029B1A68019B1B685A43039B1A6006E0C04604E0C04602E0C04600E0C04605AB1800FDF761FE08AB1800FDF75DFE0D9B72 +:4004800018000EB010BDC046FFFFFF3F00B589B003900291019205AB01221A6005AB01225A6005AB04AA9A60019B049305AA0299039B1800FFF738FF0300180009B000BD8D +:4004C000F0B58BB00590049103920293039B002B03D0059A039B9A4209D3029B002B03D0029B012252421A6001235B4232E0059B1E0000231F003300079300230693049BD3 +:400500001C0000231D00069B23430693079B2B430793039B009300230193009A019B069807992BF0CFFC03000C0008930994099B002B04D001235B42002408930994029B2F +:40054000002B06D0069A089B03994B43D21A029B1A60089B18000BB0F0BD000010B598B00390029101920093009B00211800FEF797FD031E02D10C235B42D1E210AB1800EB +:40058000FDF7C8FD0DAB1800FDF7C4FD0AAB1800FDF7C0FD07AB1800FDF7BCFD04AB1800FDF7B8FD009A019B11001800FEF760FC031E1EDA039B002B0AD0039B0021180055 +:4005C000FEF702F803001793179B002B00D05DE2029B002B0BD0019A029B11001800FDF772FE03001793179B002B00D050E2002396E2019A10AB11001800FDF764FE03000C +:400600001793179B002B00D044E2009A0DAB11001800FDF758FE03001793179B002B00D03AE20DAB01221A600DAB1A6810AB1A60019B5B689A1C0AAB11001800FDF7A0FDBA +:4006400003001793179B002B00D027E20AAB00211800FDF7B9FF03001793179B002B00D01EE207AB02211800FDF78AFD03001793179B002B00D015E204AB03211800FDF78B +:400680007FFD03001793179B002B00D00CE20DAB1800FEF78CF802001F2313401593159B1E2B1BD8159B1F22D31A1593159A10AB11001800FEF79CFA03001793179B002BD4 +:4006C00000D0F3E1159A0DAB11001800FEF790FA03001793179B002B02D00CE20023159310AB5B68013B14930DAB5B68013B1393149A139BD31A5A010DAB11001800FEF7FA +:4007000077FA03001793179B002B00D0D0E115E00AAB9A681499139BCB1A9B00D3181A6801321A600DAA10A910AB1800FEF79AFE03001793179B002B00D0BBE10DAA10AB64 +:4007400011001800FEF714FC031EE1DA149A139BD31A5A010DAB11001800FEF7EDFA03001793179B002B00D0A6E1149B16934BE110AB9A68169B9B00D3181A680DAB99687A +:40078000139B9B00CB181B689A420DD30AAB9A681699139BCB1AD4498C4663449B00D318012252421A6023E00AAB9A681699139BCB1ACD498C4663449B00D41810AB9A68B9 +:4007C000169B9B00D318186810AB9A68169BC6498C4663449B00D31819680DAB9A68139B9B00D3181A680023FFF76AFE030023600AAB9A681699139BCB1ABB498C46634458 +:400800009B00D3181A6801321A600AAB9A681699139BCB1AB4498C4663449B00D3181A68013A1A6007AB00211800FDF7CDFE03001793179B002B00D040E107AB9B68139A50 +:40084000002A09D00DAA9168139AA7488446624492008A18126800E000221A6007AB9B6804330DAA9168139A92008A1812681A600AAB9A681699139BCB1A9B498C466344C8 +:400880009B00D3181A6807A907AB1800FFF7FEFD03001793179B002B00D011E104AB00211800FDF791FE03001793179B002B00D008E104AB9B68169A012A09D910AA9168A9 +:4008C000169A8A488446624492008A18126800E000221A6004AB9B680433169A002A09D010AA9168169A80488446624492008A18126800E000221A6004AB9B68083310AAD4 +:400900009168169A92008A1812681A6004AA07AB11001800FEF72CFB031E00DD75E70AAB9A681699139BCB1A6F498C4663449B00D3181A680DA907AB1800FFF7A7FD030098 +:400940001793179B002B00D0BEE0169A139BD31A674A944663445A0107AB11001800FEF747F903001793179B002B00D0AEE007AA10A910AB1800FEF775FD03001793179BAF +:40098000002B00D0A4E010AB00211800FEF788FB031E36DA0DAA07AB11001800FDF793FC03001793179B002B00D093E0169A139BD31A4F4A944663445A0107AB110018009E +:4009C000FEF716F903001793179B002B00D083E007AA10A910AB1800FEF7F6FC03001793179B002B00D079E00AAB9A681699139BCB1A3D498C4663449B00D3181A68013A24 +:400A00001A60169B013B1693169A139B9A4200D9AEE6039B002B11D00AAA039B11001800FDF751FC03001793179B002B58D1019B1A68009B1B685A43039B1A60029B002B2D +:400A400059D0159A10AB11001800FEF775F903001793179B002B45D1019B1A6810AB1A6010AA029B11001800FDF72DFC03001793179B002B3ED1029B00211800FEF710FB58 +:400A8000031E38D1029B01221A6034E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE022 +:400AC000C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0FFFFFF3FFEFFFF3FFFFFFF07C04610AB1800FDF71DFB0DAB4C +:400B00001800FDF719FB0AAB1800FDF715FB07AB1800FDF711FB04AB1800FDF70DFB179B180018B010BDC04600B587B0039002910192019B00211800FEF7B2FA031E02DABA +:400B40000A235B4238E0019B029A03990020FFF705FD03000593059B002B27D10AE0019A0399039B1800FEF72FFC03000593059B002B1DD1039B00211800FEF791FA031E86 +:400B8000EDDB0AE0019A0399039B1800FEF76AFC03000593059B002B0CD1019A039B11001800FEF7E5F9031EECDA04E0C04602E0C04600E0C046059B180007B000BD86B0C2 +:400BC00001900091009B9B681B680393039B0593039B02335B0008221340059AD3180593202304930AE0039B059A53430222D21A059B53430593049B5B080493049B072B3A +:400C0000F1D8059B5A42019B1A60C04606B0704700B58BB003900291019200930C9B5A68019B5B6801339A4203D30C9B9B68002B02D104235B426EE00C9B98680C9B5B6871 +:400C40009B001A00002127F009F90C9B9B680893019B5B680793029B5B68079A934200D913000693002309932EE0039B9A68099B9B00D3181B680593089B1A68029B9B6875 +:400C80001B6805994B43D318009A53430493029B9968059B089A0698FEF778FC019B9968049B089A0798FEF771FC089B1A1D0892059A1A60079B01339B00089AD318002260 +:400CC0001A60099B01330993099A079B9A42CCD3039B9868079B01339A00089B190027F02BF8019A039B11001800FEF7C1F8031E08DB019B9968039B9A68079B1800FEF742 +:400D0000ABFA07E0039B99680C9B9A68079B1800FEF7A2FA002318000BB000BD10B58AB0059004910392029301230993099B1A0006AB1A6006AB1B681A0006AB5A6006AB7B +:400D400009AA9A60039C049A06A90598029B00932300FFF75DFF030018000AB010BD000010B5B24CA54405900491039202930123AF4A6A441360029B00211800FEF790F964 +:400D8000031E05DD029B9B681B680122134003D104235B4200F0DBFC039B00211800FEF77FF9031E03DA04235B4200F0D0FC029AA04B6B4411001800FFF701FFC623DB005D +:400DC0006B441800FDF7A6F99B4B6B441800FDF7A1F906AB1800FDF79DF9C023DA0009AB0021180027F03AF8039B1800FDF7DFFC0300CC22D2006A441360CC23DB006B4436 +:400E00001B688E4A934219D8CC23DB006B441B68EF2B11D8CC23DB006B441B684F2B09D8CC23DB006B441B68172B01D9032306E0012304E0042302E0052300E00623804A0B +:400E40006A4413607E4B6B441B68062B03D906237B4A6A441360029B5B680133C922D2006A441360C923DB006B441A68059B11001800FDF785F90300724A6A441360714BF9 +:400E80006B441B68002B01D000F0E1FBC923DB006B441A6809AB0C3311001800FDF770F90300684A6A441360664B6B441B68002B01D000F0CEFBC923DB006B441B685A0006 +:400EC0005D4B6B4411001800FDF75AF903005D4A6A4413605B4B6B441B68002B01D000F0BAFB049B1B6801335A425341DBB2564A6A441360544B6B441B68002B19D0049A90 +:400F000006AB11001800FDF7DEF903004D4A6A4413604C4B6B441B68002B00D09DE34B4BCE22D2006A449446634401221A6006AB0493CF23DB006B441B68002B06D0CF23AF +:400F4000DB006B441B689B68002B4AD1C623DB006B4401211800FDF737FB0300394A6A441360384B6B441B68002B00D077E3029B5B689A01C623DB006B4411001800FDF70C +:400F800037FE03002F4A6A4413602E4B6B441B68002B00D065E3029AC621C9006944C623DB006B441800FFF7BFFD0300254A6A441360244B6B441B68002B00D053E3CF23E4 +:400FC000DB006B441B68002B16D0C621C9006944CF23DB006B441B680C22180026F0ACFE0AE0CF23DB006B441968C623DB006B440C22180026F0A0FE029A049B11001800B9 +:40100000FDF7B6FF031E23DB029A049909AB0C331800FFF789FD03000A4A6A441360094B6B441B68002B24D03CE3C04690F9FFFF4C0600003C060000240600009F02000000 +:40104000640600006C06000044060000A8F9FFFF049A09AB0C3311001800FDF734F90300E54A6A441360E44B6B441B68002B00D0FBE2E24B6B441C68029AC621C9006944EB +:4010800009AB0C331800DE4B6B4400932300FFF7BFFD0300D84A6A441360D74B6B441B68002B00D0E3E2C622D2006A44059B11001800FDF708F90300CF4A6A441360CE4B0F +:4010C0006B441B68002B00D0D3E2CC4B6B441A68CB4B6B4402990598FFF720FE0300C64A6A441360C44B6B441B68002B00D0C2E2C44B6B441B68012B00D800E1C14B6B44C0 +:401100001B68013BC04A6A4412689A401300C922D2006A44136009A9C923DB006B441A6813005B009B189B00CA18029B5B68013319001000FDF724F80300AF4A6A441360C1 +:40114000AD4B6B441B68002B00D096E209A9C923DB006B441A6813005B009B189B00CA1809AB0C3319001000FDF7ADF80300A24A6A441360A04B6B441B68002B00D07EE24D +:401180000023CC22D2006A44136030E009A9C923DB006B441A6813005B009B189B00C81809A9C923DB006B441A6813005B009B189B00C918914B6B441C68029A904B6B4459 +:4011C00000932300FFF724FD03008B4A6A441360894B6B441B68002B00D052E2CC23DB006B441B680133CC22D2006A441360854B6B441B685A1ECC23DB006B441B689A4291 +:40120000C4D8C923DB006B441B680133CC22D2006A44136066E009A9CC23DB006B441A6813005B009B189B00CA18029B5B68013319001000FCF7A4FF03006F4A6A44136043 +:401240006D4B6B441B68002B00D01CE209A9CC23DB006B441A6813005B009B189B00C818CC23DB006B441B685A1E09A913005B009B189B00CB181900FDF725F803005E4AA8 +:401280006A4413605C4B6B441B68002B00D0FCE109A9CC23DB006B441A6813005B009B189B00C818554B6B441C68029A09AB0C331900534B6B4400932300FFF7A9FC0300F7 +:4012C0004D4A6A4413604C4B6B441B68002B00D0DDE1CC23DB006B441B680133CC22D2006A441360484B6B441A68464B6B441B689A40CC23DB006B441B689A428BD8039B69 +:401300005B68424A6A4413600023CB22D2006A44136000233E4A6A4413600023CD22D2006A4413600023CA22D2006A441360CB23DB006B441B68002B11D1344B6B441B68AE +:40134000002B00D1F5E0314B6B441B68013B2F4A6A4413602023CB22D2006A441360CB23DB006B441B68013BCB22D2006A441360039B9A68254B6B441B689B00D3181A6894 +:40138000CB23DB006B441B68DA40130001221340C822D2006A441360C823DB006B441B68002B06D1CA23DB006B441B68002B00D1BBE0C823DB006B441B68002B2AD1CA231C +:4013C000DB006B441B68012B24D10C4B6B441C68029A059905980A4B6B4400932300FFF717FC0300044A6A441360034B6B441B68002B00D19BE055E16C0600003C06000048 +:4014000024060000640600004C0600005C060000540600000223CA22D2006A441360CE4B6B441B680133CC4A6A441360CB4B6B441A68C94B6B441B68D31AC822D2006A446C +:4014400012689A401300CD22D2006A4412681343CD22D2006A441360BF4B6B441A68BF4B6B441B689A4200D061E70023CC22D2006A4413601EE0BA4B6B441C68029A059905 +:401480000598B84B6B4400932300FFF7C1FB0300B54A6A441360B44B6B441B68002B00D0F7E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A68A74B6B44A2 +:4014C0001B689A42D7D309A9CD23DB006B441A6813005B009B189B00C918A14B6B441C68029A05989F4B6B4400932300FFF790FB03009D4A6A4413609B4B6B441B68002B22 +:4015000000D0C8E0CA23DB006B441B68013BCA22D2006A44136000238F4A6A4413600023CD22D2006A44136001E7C046FFE6C046FDE6C0460023CC22D2006A4413604DE009 +:40154000874B6B441C68029A05990598854B6B4400932300FFF75CFB0300834A6A441360814B6B441B68002B00D096E0CD23DB006B441B685B00CD22D2006A4413607B4BAD +:401580006B441A68754B6B441B689A401300CD22D2006A441268134017D0714B6B441C68029A09AB0C33190005986E4B6B4400932300FFF72DFB03006B4A6A4413606A4BFA +:4015C0006B441B68002B00D069E0CC23DB006B441B680133CC22D2006A441360CC23DB006B441A685C4B6B441B689A42A8D35C4B6B441A685B4B6B4402990598FFF78EFB55 +:401600000300594A6A441360574B6B441B68002B47D1574B6B441B68002B43D0039B5B68002B3FD0039B9B681B680122134039D0059B012252421A60059A0299059B1800B9 +:40164000FDF7C2FE0300484A6A4413602AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C046CC +:4016800010E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0462D4B6B441B68013B2F4A6A4412689A401300CC22D2006A44136015E082 +:4016C00009A9CC23DB006B441A6813005B009B189B00CB181800FCF72FFDCC23DB006B441B680133CC22D2006A4413601F4B6B441A681A4B6B441B689A40CC23DB006B44D1 +:401700001B689A42DCD809AB0C331800FCF714FD144B6B441800FCF70FFD06AB1800FCF70BFDCF23DB006B441B68002B06D0CF23DB006B441B689B68002B05D1C623DB00D7 +:401740006B441800FCF7F8FC074B6B441B681800CE23DB009D4410BD54060000640600003C060000240600006C0600004C0600004406000000B591B00390029101920AAB03 +:401780001800FCF7C7FC07AB1800FCF7C3FC04AB1800FCF7BFFC029A07AB11001800FCF792FD03000F930F9B002B00D0A9E0019A04AB11001800FCF786FD03000F930F9B66 +:4017C000002B00D09FE007AB1800FCF7A8FF03000E9304AB1800FCF7A2FF03000D930D9A0E9B9A4201D20D9B0E930E9A07AB11001800FDF7A1FA03000F930F9B002B00D0C5 +:4018000083E00E9A04AB11001800FDF795FA03000F930F9B002B00D079E004AB01221A6004AB1A6807AB1A6050E007AB1800FCF776FF020007AB11001800FDF77DFA030049 +:401840000F930F9B002B64D104AB1800FCF767FF020004AB11001800FDF76EFA03000F930F9B002B57D104AA07AB11001800FDF77FFB031E15DB04AA07A907AB1800FDF7A0 +:401880003DFD03000F930F9B002B46D107AB01211800FDF751FA03000F930F9B002B15D042E007AA04A904AB1800FDF727FD03000F930F9B002B32D104AB01211800FDF71A +:4018C0003BFA03000F930F9B002B2AD107AB00211800FDF7E5FB031EA7D10E9A04AB11001800FDF785F903000F930F9B002B1AD104AA039B11001800FCF7E5FC03000F93A1 +:4019000012E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800FCF704FC07AB1800FCF700FC04AB1800FCF7FCFB27 +:401940000F9B180011B000BD80B51B4FBD440390029101920093029A8023DB009A4202D904235B4223E0029A05A90098019B98470300FFAA18321360FFAB18331B68002B3A +:401980000AD1029A05A9039B1800FDF78FF80300FFAA1832136000E0C0468023DA0005AB110018000DF04AF9FFAB18331B6818008323DB009D4480BDE8FBFFFF00B5A1B0D6 +:4019C000039002910192019B01211800FDF768FB031E02DC04235B420EE219AB1800FCF799FB16AB1800FCF795FB13AB1800FCF791FB10AB1800FCF78DFB1CAB1800FCF71A +:401A000089FB0DAB1800FCF785FB0AAB1800FCF781FB07AB1800FCF77DFB04AB1800FCF779FB019A02991CAB1800FFF7A3FE03001F931F9B002B00D086E11CAB01211800C2 +:401A4000FDF72EFB031E03D00E235B421F93AEE1019A029919AB1800FFF766F803001F931F9B002B00D071E119AA16AB11001800FCF729FC03001F931F9B002B00D067E1AD +:401A8000019A0DAB11001800FCF71DFC03001F931F9B002B00D05DE1019A0AAB11001800FCF711FC03001F931F9B002B00D053E113AB01211800FCF787FD03001F931F9B01 +:401AC000002B00D04AE110AB00211800FCF77CFD03001F931F9B002B00D041E107AB00211800FCF771FD03001F931F9B002B00D038E104AB01211800FCF766FD03001F9311 +:401B00001F9B002B00D02FE144E016AB01211800FDF712F903001F931F9B002B00D025E113AB9B681B680122134005D110AB9B681B680122134017D00DAA13A913AB1800DB +:401B4000FDF742FC03001F931F9B002B00D00FE119AA10A910AB1800FDF784FC03001F931F9B002B00D005E113AB01211800FDF7E3F803001F931F9B002B00D0FCE010ABFE +:401B800001211800FDF7D8F803001F931F9B002B00D0F3E016AB9B681B6801221340B4D044E00AAB01211800FDF7C6F803001F931F9B002B00D0E3E007AB9B681B6801225C +:401BC000134005D104AB9B681B680122134017D00DAA07A907AB1800FDF7F6FB03001F931F9B002B00D0CDE019AA04A904AB1800FDF738FC03001F931F9B002B00D0C3E091 +:401C000007AB01211800FDF797F803001F931F9B002B00D0BAE004AB01211800FDF78CF803001F931F9B002B00D0B1E00AAB9B681B6801221340B4D00AAA16AB1100180002 +:401C4000FDF796F9031E23DB0AAA16A916AB1800FDF708FC03001F931F9B002B00D099E007AA13A913AB1800FDF7FCFB03001F931F9B002B00D08FE004AA10A910AB18005A +:401C8000FDF7F0FB03001F931F9B002B24D08EE016AA0AA90AAB1800FDF7E4FB03001F931F9B002B00D079E013AA07A907AB1800FDF7D8FB03001F931F9B002B00D06FE0BC +:401CC00010AA04A904AB1800FDF7CCFB03001F931F9B002B00D065E016AB00211800FDF7DFF9031E00D055E70AE0019A07A907AB1800FDF769FB03001F931F9B002B53D144 +:401D000007AB00211800FDF7CBF9031EEDDB0AE0019A07A907AB1800FDF7A4FB03001F931F9B002B42D1019A07AB11001800FDF71FF9031EECDA07AA039B11001800FCF704 +:401D4000C2FA03001F9332E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E062 +:401D8000C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04619AB1800FCF7C1F916AB1800FCF7BDF913AB04 +:401DC0001800FCF7B9F910AB1800FCF7B5F91CAB1800FCF7B1F90DAB1800FCF7ADF90AAB1800FCF7A9F907AB1800FCF7A5F904AB1800FCF7A1F91F9B180021B000BD00B5A7 +:401E000083B00190019B44220021180026F026F8C04603B000BD00B587B00390019200930B236B440A1C1A7000990B236B441B780122180001F07AF903000593059B002BB9 +:401E400002D10D235B4225E0059B5B69102B02D00D235B421EE0039B180001F0A9F9039B059A1100180001F0CDF903000493049B002B01D0049B0DE00398009A0199012367 +:401E800001F0F0F903000493049B002B01D0049B00E00023180007B000BD00B583B00190019B180001F084F9019B442118000CF0C5FEC04603B000BD00B59DB005900491D0 +:401EC00003920293249B022B06D0249B102B03D8249B0122134002D00D235B42BCE21E9B062B02D91E9B0D2B02D90D235B42B3E2209AFF231B029A4202D90D235B42ABE2B2 +:401F00001E9BDAB25F236B440F218A1A1A700FAB00221A700FAB1B785AB2209B002B01D0402300E0002313435BB2DAB20FAB1A700FAB1A78249B023B5B08DBB2DB00DBB21E +:401F40001343DAB20FAB1A700FAB1B785AB25F236B441B78013BDBB25BB213435BB2DAB20FAB1A700FAB01331E9A0299180025F0E3FE6F236B4400221A70039B1A9312E09C +:401F80006F236B441B780F22D31A1A9AD1B20FAAD1546F236B441A786F236B4401321A701A9B1B0A1A936F226A445F236B4412781B789A42E4D31A9B002B02D00D235B4223 +:401FC0004AE20BAB10220021180025F047FF6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A7807 +:402000006F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F0F4F903001693169B002B01D0169B12E2209B002B00D1A6E0209B1A931F9B02 +:4020400019930FAB10220021180025F007FF209B1B0ADAB20FAB1A70209BDAB20FAB5A701A9B0E2B00D90E2315930FAB0233159A1999180025F060FE1A9A159BD31A1A9380 +:40208000199A159BD31819936F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B44013280 +:4020C0001A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F097F903001693169B002B4CD0169BB5E11A9B102B00D9102315930FAB10220021180025F0A7 +:40210000ADFE159A19990FAB180025F015FE6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A7867 +:402140006F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F054F903001693169B002B01D0169B72E11A9A159BD31A1A93199A159BD31815 +:4021800019931A9B002BB1D15F236B441B78013BDAB207AB1A7007AB01331E9A0299180025F0CAFD1E9B013307AAD0185F236B441B781A00002125F051FE07AB0122DA7311 +:4021C000039B1A93219B1993229B1893EBE01A9B102B00D910231493049B002B3DD10FAB10220021180025F039FE149A19990FAB180025F0A1FD6F236B4400221A7017E044 +:402200006F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA983 +:4022400013AB00931300102201F0E0F803001693169B002B01D0169BFEE005980FAA07A913AB00931300102201F0D0F803001693169B002B01D0169BEEE06F236B44002287 +:402280001A7019E06F236B441B78189AD3186F226A44127819998A1811786F226A4412780FA8825C4A40D2B21A706F236B441A786F236B4401321A706F236B441A78149B3B +:4022C0009A42DFD3049B012B3DD10FAB10220021180025F0C3FD149A18990FAB180025F02BFD6F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A44B6 +:4023000012780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A706F236B441B780F2BE2D905980BAA0BA913AB00931300102201F06AF803001693169B002B86 +:4023400001D0169B88E0189A149BD3181893199A149BD31819931A9A149BD31A1A936F236B4400221A7016E06F236B441B780F22D31A07AAD25C0132D1B207AAD15407AA95 +:40238000D35C002B00D00EE06F236B441A786F236B4401321A706F226A445F236B4412781B789A42E0D31A9B002B00D00FE76F236B4400221A700EE06F236B441B780F2292 +:4023C000D31A07AA0021D1546F236B441A786F236B4401321A706F226A445F236B4412781B789A42E8D305980FAA07A913AB00931300102201F00AF803001693169B002BED +:4024000001D0169B28E06F236B4400221A7017E06F236B441B786F226A4412780BA9895C6F226A4412780FA8825C4A40D1B20BAAD1546F236B441A786F236B4401321A70E2 +:402440006F236B441B780F2BE2D9249A0BA9239B180025F071FC002318001DB000BD00B58DB00B900A910992089309990A9A0B98139B0693129B0593119B0493109B0393AD +:402480000F9B02930E9B0193089B00930B000021FFF712FD030018000DB000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B05930E +:4024C000109B04930F9B03930E9B02930D9B01930C9B00932300FFF7C2FF030018000AB010BD00B595B00B900A910992089309990A9A0B981B9B06930DAB0593199B0493F1 +:40250000189B0393179B0293169B0193089B00930B000121FFF7D0FC03001193119B002B01D0119B31E0002312934F236B4400221A7017E04F236B441B781A9AD3181A7824 +:402540004F236B441B780DA9CB5C5340DBB21A00129B134312934F236B441A784F236B4401321A704F236B441A781B9B9A42E1D3129B002B08D00A9A199B110018000CF031 +:402580005DFB0F235B4200E00023180015B000BD10B58AB00990089107920693119B002B02D10D235B4213E0069C079A08990998119B0593109B04930F9B03930E9B029301 +:4025C0000D9B01930C9B00932300FFF78AFF030018000AB010BD84B00390029101920093029B9B00039AD318029A920003998A181168019A92000398821812688A181A6004 +:40260000049B9B00039AD318049A920003998A181168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681021CA411A60009B9B00039AD318F2 +:40264000009A920003998A181168049A92000398821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD3183B +:40268000019A920003998A1812681421CA411A60029B9B00039AD318029A920003998A181168019A92000398821812688A181A60049B9B00039AD318049A920003998A18AE +:4026C0001168029A92000398821812684A401A60049B9B00039AD318049A920003998A1812681821CA411A60009B9B00039AD318009A920003998A181168049A92000398AC +:40270000821812688A181A60019B9B00039AD318019A920003998A181168009A92000398821812684A401A60019B9B00039AD318019A920003998A1812681921CA411A6084 +:40274000C04604B0704700B585B0039003980C230093082304220021FFF73DFF03980D230093092305220121FFF735FF03980E2300930A2306220221FFF72DFF03980F23A7 +:4027800000930B2307220321FFF725FF03980F2300930A2305220021FFF71DFF03980C2300930B2306220121FFF715FF03980D230093082307220221FFF70DFF03980E2388 +:4027C0000093092304220321FFF705FFC04605B000BD00B595B001900091019902AB4022180025F0A9FA0023139306E002AB1800FFF7A9FF139B01331393139B092BF5D97F +:4028000002AB1A68019B1B68D21802AB1A6002AB5A68019B04331B68D21802AB5A6002AB9A68019B08331B68D21802AB9A6002ABDA68019B0C331B68D21802ABDA6002ABBE +:402840001A69019B10331B68D21802AB1A6102AB5A69019B14331B68D21802AB5A6102AB9A69019B18331B68D21802AB9A6102ABDA69019B1C331B68D21802ABDA6102ABB0 +:402880001A6A019B20331B68D21802AB1A6202AB5A6A019B24331B68D21802AB5A6202AB9A6A019B28331B68D21802AB9A6202ABDA6A019B2C331B68D21802ABDA6202AB28 +:4028C0001A6B019B30331B68D21802AB1A6302AB5A6B019B34331B68D21802AB5A6302AB9A6B019B38331B68D21802AB9A6302ABDA6B019B3C331B68D21802ABDA6300232A +:4029000013932FE0139B9B001293009A129BD31802AA139989008A58D2B21A70129B0133009AD31802AA139989008A58120AD2B21A70129B0233009AD31802AA1399890056 +:402940008A58120CD2B21A70129B0333009AD31802AA139989008A58120ED2B21A70139B01331393139B0F2BCCD902AB402118000CF064F9C04615B000BD00B583B001905B +:40298000019B002B0ED0019B402118000CF056F9019B4033402118000CF050F9019B802240219950C04603B000BD00B583B00190019B002B04D0019B842118000CF03EF9A7 +:4029C000C04603B000BD000082B001900091019B002B02D0009B002B02D151235B42B3E0019B5B4A1A60019B5A4A5A60019B5A4A9A60019B594ADA60009B1B781A00009BEC +:402A000001331B781B021A43009B02331B781B041A43009B03331B781B061A43019B1A61009B04331B781A00009B05331B781B021A43009B06331B781B041A43009B073366 +:402A40001B781B061A43019B5A61009B08331B781A00009B09331B781B021A43009B0A331B781B041A43009B0B331B781B061A43019B9A61009B0C331B781A00009B0D33BD +:402A80001B781B021A43009B0E331B781B041A43009B0F331B781B061A43019BDA61009B10331B781A00009B11331B781B021A43009B12331B781B041A43009B13331B787F +:402AC0001B061A43019B1A62009B14331B781A00009B15331B781B021A43009B16331B781B041A43009B17331B781B061A43019B5A62009B18331B781A00009B19331B7873 +:402B00001B021A43009B1A331B781B041A43009B1B331B781B061A43019B9A62009B1C331B781A00009B1D331B781B021A43009B1E331B781B041A43009B1F331B781B0667 +:402B40001A43019BDA620023180002B07047C046657870616E642033322D62797465206B00B585B0039002910192039B002B02D0029B002B02D151235B424BE0039B019AB7 +:402B80001A63029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B061A43039B5A63029B04331B781A00029B05331B781B021A43029B063317 +:402BC0001B781B041A43029B07331B781B061A43039B9A63029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029B0B331B781B061A43039BDA63039B8A +:402C00004033402118000CF019F8039B8022402199500023180005B000BD10B586B0039002910192009300230593039B002B02D151235B423BE1029B002B27D0019B002B13 +:402C400002D0009B002B21D151235B422FE1009A059BD3180199059A8A181178039A80201258039840248218121912784A40D2B21A70039B80229B585A1C039B80215A5001 +:402C8000059B01330593029B013B0293029B002B00D1D6E0039B80229B583F2BD7D9D0E0039A039B403319001000FFF792FD039B1B6B5A1C039B1A6300230493B7E0059AED +:402CC000049BD318009AD3180599049A8A1801998A18117803984024049A8218121912784A40D2B21A70059A049BD3180133009AD3180599049A8A18013201998A181178E6 +:402D0000049A0132039840248218121912784A40D2B21A70059A049BD3180233009AD3180599049A8A18023201998A181178049A0232039840248218121912784A40D2B2F4 +:402D40001A70059A049BD3180333009AD3180599049A8A18033201998A181178049A0332039840248218121912784A40D2B21A70059A049BD3180433009AD3180599049A33 +:402D80008A18043201998A181178049A0432039840248218121912784A40D2B21A70059A049BD3180533009AD3180599049A8A18053201998A181178049A05320398402428 +:402DC0008218121912784A40D2B21A70059A049BD3180633009AD3180599049A8A18063201998A181178049A0632039840248218121912784A40D2B21A70059A049BD31845 +:402E00000733009AD3180599049A8A18073201998A181178049A0732039840248218121912784A40D2B21A70049B08330493049B3F2B00D843E7059B40330593029B403BFB +:402E40000293029B3F2B00D92AE7029B002B2DD0039A039B403319001000FFF7BAFC039B1B6B5A1C039B1A630023049316E0059A049BD318009AD3180599049A8A180199F9 +:402E80008A18117803984024049A8218121912784A40D2B21A70049B01330493049A029B9A42E4D3039B8021029A5A500023180006B010BD10B588B00190019BD0335C68F7 +:402EC0001B681A000F2313400793079B002B01D1002310E003AB0F220021180024F0BEFF019B84331800079B1022D21A03AB19000CF086F90300180008B010BD10B582B077 +:402F00000190019B002B1ED0019B1800FFF735FD019B843318000CF057F9019BD0331A000023002413605460019BD8331A000023002413605460019BE02200219950019B1E +:402F4000E42200219954C04602B010BD10B582B00190019B002B1ED0019B1800FFF725FD019B843318000CF03DF9019BD0331A000023002413605460019BD8331A00002307 +:402F8000002413605460019BE02200219950019BE42200219954C04602B010BD00B585B001900091019B002B02D0009B002B02D157235B4208E0019B009A11001800FFF757 +:402FC00003FD03000393039B180005B000BD70B586B00390029101920093039B002B02D157235B4276E0029B002B08D0019B002B02D0009B002B02D157235B426AE0039B8F +:40300000E0229B58012B07D0039BE0229B58022B02D054235B425DE0039BE0229B58012B0ED1039BE02202219950039B1800FFF741FF03000593059B002B01D0059B49E07F +:40304000039BD8335C681B68029A1500002216005B197441039AD83213605460039BE4229B5C002B1AD10398009B019A0299FFF7D4FD03000593059B002B01D0059B29E0BC +:40308000039B8433029A009918000CF0B9F803000593059B002B1CD0059B1BE0039B8433029A019918000CF0ABF803000593059B002B01D0059B0DE00398009B019A029962 +:4030C000FFF7ABFD03000593059B002B01D0059B00E00023180006B070BD82B00190019B002B03D0019B1B68002B01D1002302E0019B1B685B69180002B0704782B00190B8 +:40310000019B002B03D0019B1B68002B01D1002309E0019B9B6B002B02D0019B9B6B02E0019B1B68DB68180002B0704784B0009111006B460733021C1A706B4606330A1C4E +:403140001A70144B03931CE0039B5B689B691B786A46073212789A4210D1039B5B685A68009B9A420AD1039B5B685B786A46063212789A4202D1039B5B6807E0039B0833C1 +:403180000393039B5B68002BDED10023180004B07047C046A02A041000B583B00190019B44220021180024F059FEC04603B000BD00B583B00190019B002B20D0019B1B6CCC +:4031C000002B0AD0019B1B6C242118000BF036FD019B1B6C180024F075FA019BDB6B002B07D0019B1B689B691A6A019BDB6B18009047019B442118000BF020FD00E0C046EB +:4032000003B000BD00B583B001900091009B002B02D0019B002B01D1104B1BE0019B44220021180024F01AFE009B9B69DB6998470200019BDA63019BDB6B002B01D1084B57 +:4032400008E0019B009A1A60019B0021180000F015FC0023180003B000BDC046009FFFFF809EFFFF10B584B00390029101921A006B4603331A70039B002B07D0039B1B6878 +:40328000002B03D0039BDB6B002B01D1304B5CE06B4603331B785BB2002B07D06B4603331B785BB2012B01D0294B4EE0039B1B681B690222134008D1039B1B685B681A00D6 +:4032C000019B9A4201D0224B3FE0039B019A5A60039B6A46033212781A726B4603331B785BB2012B0ED0039B1B685B78032B09D0039B1B685B78042B04D0039B1B685B78F6 +:40330000052B0DD1039B1B689B695C69039BD86B039B5B681A00029B1900A047030014E06B4603331B785BB2002B0DD1039B1B689B699C69039BD86B039B5B681A00029BF2 +:403340001900A047030000E0014B180004B010BD009FFFFF00B587B0039002910192039B002B03D0039B1B68002B01D1254B46E0029B002B04D1019B002B01D0214B3EE034 +:40338000029B002B05D1019B002B02D1039B00229A63019B102B01D91B4B30E0039B1B681B690122134002D0019B059309E0039B1B68DB680593059A019B9A4201D9114B9E +:4033C0001DE0039B1B681B78482B0AD1039BDB6B029900221800FFF7C3FB031E01D0094B0DE0059B002B09D0039B2833059A0299180024F0A1FC039B059A9A630023180019 +:4034000007B000BD009FFFFF809FFFFF70B58CB0079006910592049300230A93079B002B06D0079B1B68002B02D0109B002B01D1C84B8BE1109B00221A60079B1800FFF7FE +:403440004CFE03000A93079B1B685B78012B1DD1059A0A9B9A4201D0BF4B77E1109B059A1A60079B1B689B695C68079BD86B079B08215956049B069AA04703000993099B84 +:40348000002B01D0099B61E100235FE1079B1B685B78062B0BD1109B059A1A60079BD86B049B069A059908F0F9F903004EE1079B1B681B78492B0BD1109B059A1A60079BB2 +:4034C000D86B049B069A0599FFF781FD03003DE10A9B002B01D1A14B38E1069A049B9A420CD1079B5B6A002B06D1059B0A99180028F09CFB0B1E01D0964B27E1079B1B68FD +:403500005B78022B00D0DDE000230B93079B1B7A5BB2002B0AD1079BDB68002B06D0079B5B6A0A9AD21A059B9A421BD2079B1B7A5BB2002B0AD1079BDB68002B06D1079BDA +:403540005B6A0A9AD21A059B9A420BD8079B1B7A5BB2012B19D1079B5B6A0A9AD21A059B9A4212D9079B5B6A1033079AD3180433059A0699180024F0DFFB079B5A6A059B28 +:40358000D218079B5A620023E0E0079B5B6A002B40D0079B5B6A0A9AD31A0B93079B5B6A1033079AD31804330B9A0699180024F0C3FB079B1B689B699C68079BD86B079B59 +:4035C00008215956079B28331E00079B14330A9D049A0192009333002A00A04703000993099B002B01D0099BB0E0109B1A680A9BD218109B1A60049A0A9BD3180493079B85 +:4036000000225A62069A0B9BD3180693059A0B9BD31A0593059B002B2FD00A9B002B01D14E4B93E0059B0A99180028F0FFFA0B000B930B9B002B0AD1079B1B7A5BB2002B70 +:4036400005D1079BDB68002B01D00A9B0B93079B14331800059A0B9BD31A069AD3180B9A190024F069FB079B5A6A0B9BD218079B5A62059A0B9BD31A0593059B002B1FD084 +:40368000079B1B689B699C68079BD86B079B08215956079B28331D00059A049B0193069B00932B00A04703000993099B002B01D0099B4BE0109B1A68059BD218109B1A6062 +:4036C000002343E0079B1B685B78052B22D1079B1B689B69DC68079BD86B079B24331D00079B28331E00079B14330599049A0292069A0192009333002A00A0470300099384 +:40370000099B002B01D0099B20E0109B059A1A6000231BE0079B1B685B78072B15D1079B1B689B691C69079BD86B049B069A0599A04703000993099B002B01D0099B05E034 +:40374000109B059A1A60002300E0054B18000CB070BDC046009FFFFF809DFFFF809CFFFF809FFFFF86B0039002910192029A019BD31A049317236B4400221A7010E01723D2 +:403780006B441A78019BD318039AD318049AD2B21A7017236B441A7817236B4401321A7017236B441A78049B9A42E8D3C04606B07047000088B00390029101921B236B44EA +:4037C00000221A70039B002B02D0019B002B01D1344B64E0029B013B039AD2181A236B4412781A701A236B441B78029AD21A019B1A601A236B441B78029A9A429B415B4239 +:40380000DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B785A425341DBB25AB21B236B441B785BB213435AB21B236B441A701A236B441B78029AD31AD3 +:403840000593002307931EE0039A079BD3181A781A236B441B785340DAB207980599002388425B41DBB2DBB25343DBB25AB21B236B441B785BB213435AB21B236B441A7026 +:40388000079B01330793079A029B9A42DCD31B236B441B78002B01D0034B00E00023180008B07047009FFFFF009EFFFF84B0039002910192039B002B02D0019B002B01D121 +:4038C000044B03E0019B029A1A600023180004B07047C046009FFFFF70B588B0059004910392059B002B06D0059B1B68002B02D0039B002B01D15E4BB7E0039B00221A60A9 +:40390000059B1B685B78032B18D0059B1B685B78042B13D0059B1B685B78052B0ED0059B1B685B78062B09D0059B1B685B78092B04D0059B1B685B78072B01D1002394E0E0 +:40394000059B1B681B78482B04D0059B1B681B78492B01D1002388E0059B1B685B78012B07D1059B5B6A002B01D0424B7DE000237BE0059B1B685B78022B00D074E0002396 +:403980000793059B1B7A5BB2012B1CD1059BDB68002B07D1059B5B6A002B01D0354B64E0002362E0059BDC68059B14331D00059B1800FFF7A3FB03001900059B5B6A1A00D3 +:4039C0002800A04714E0059B1800FFF786FB0200059B5B6A9A420BD0059BDB68002B05D1059B5B6A002B01D100233EE0214B3CE0059B1B689B699C68059BDD6B059B082687 +:403A00009E57059B1800FFF768FB059B28331900059B1433049A019200930B00020031002800A04703000793079B002B01D0079B1BE0059B1B7A5BB2002B0CD1059B1C692D +:403A4000059B1800FFF749FB0100039A049B1800A047030009E0059B1800FFF73EFB0200039B1A60002300E0034B180008B070BD009FFFFF809DFFFF809FFFFF82B0019045 +:403A80000A006B4603331A70019B002B04D0019B1B685B78022B01D00E4B18E06B4603331B78002B02D0042B07D00DE0019B0A4ADA60019B094A1A6108E0019B0022DA60D1 +:403AC000019B074A1A6101E0064B00E00023180002B07047009FFFFF65370110B5370110AD380110809FFFFF00B583B0C8235B001900012023F062FA03000193019B002B19 +:403B000003D0019B180007F0F8F9019B180003B000BD00B583B00190019B180008F086F9019B180023F0CEFDC04603B000BD00B583B04421012023F041FA03000193019B57 +:403B4000002B03D0019B1800FEF759F9019B180003B000BD00B583B00190019B1800FEF79CF9019B180023F0ADFDC04603B000BD00B585B00390019200930B236B440A1CE4 +:403B80001A700B236B4400215956009B019A0398F9F7F2FB0300180005B000BD10B586B005900392029313236B440A1C1A7013236B4400215956029C039A0598099B01937F +:403BC000089B00932300F9F7F2FB0300180006B010BD10B588B00790069105920493049C059A069907980C9B02930B9B01930A9B00932300F9F755FC0300180008B010BD69 +:403C000000B585B0039002910192019A0299039B1800F8F7CFFC0300180005B000BD00B585B0039002910192019A0299039B1800F8F7F4FA0300180005B000BD00B583B0CD +:403C40008C235B001900012023F0B8F903000193019B002B01D1002304E0019B1800F8F7BEFA019B180003B000BD00B583B00190019B1800F8F7C0FA019B180023F022FDCA +:403C8000C04603B000BD00B585B0039002910192019B029A0398022107F07EFA0300180005B000BD00B585B0039002910192019B029A03980221FEF7AEF80300180005B0F5 +:403CC00000BD000000B585B0039002910192019A80235B009A4201D0074B0AE0029A039B11001800FEF770FE031E01D0024B00E00023180005B000BD009FFFFF00B587B0C7 +:403D00000390029101920093009B019A02990398FEF783FF03000593059B513301D1034B00E0059B180007B000BDC046009FFFFF00B583B08421012023F040F90300019335 +:403D4000019B002B01D1002304E0019B1800FEF714FE019B180003B000BD00B583B00190019B1800FEF721FE019B180023F0AAFCC04603B000BD000000B585B00390029190 +:403D80000192019A80235B009A4201D0074B0AE0029A039B11001800FFF700F9031E01D0024B00E00023180005B000BD009FFFFF00B583B0E821012023F000F9030001937E +:403DC000019B002B01D1002304E0019B1800FFF795F8019B180003B000BD00B583B00190019B1800FFF7B2F8019B180023F06AFCC04603B000BD000088B003900291019267 +:403E000017236B4487221A7016236B441B221A701E236B4400221A70019B102B06D11F236B4417226A4412781A700BE0019B082B06D11F236B4416226A4412781A7001E024 +:403E4000224B3FE0019B013B06931BE0069B039AD318069A02998A181278520051B21E226A44127852B20A4352B2D2B21A70069B029AD3181A781E236B44D2091A70069BDA +:403E8000013B0693069B002BE0DA029B1B785BB2DB115AB215236B441A70019B013B039AD318019A013A03998A1811781F226A4415206844127800780240D2B24A40D2B25E +:403EC0001A700023180008B07047C046009FFFFF10B58EB005900491039208AB102118000AF0ACFE059B1B685B690C9308AC0C9A08A9059807AB00932300FFF787FA030079 +:403F00000D930D9B002B13D10C9A08A9049B1800FFF772FF03000D930D9B002B0AD10C9A0499039B1800FFF767FF03000D9302E0C04600E0C04608AB102118000AF07EFE2C +:403F40000D9B18000EB010BD86B003900291019200930023059310E0039A059BD3180299059A8A1811780198059A821812784A40D2B21A70059B01330593059A009B9A42C6 +:403F8000EAD3C04606B0704786B00390029101920093002305931EE0059A009B9A4208D2039A059BD3180199059A8A1812781A700EE0059A009B9A4205D1039A059BD3188D +:403FC00080221A7004E0039A059BD31800221A70059B01330593059A029B9A42DCD3C04606B0704700B589B0039002910192039B002B06D0039B1B68002B02D0029B002B0B +:4040000001D11C4B32E0019A029903980123FFF729F903000793079B002B01D0079B25E0039B1A681B236B4412781A701B236B441B78022B03DB042B03DD242B01D00D4B13 +:4040400014E0C0462421012022F0B8FF03000593059B002B01D1084B08E0039B059A1A64059B102118000AF0E9FD0023180009B000BDC046009FFFFF809EFFFF10B58EB0AD +:4040800005900491039200230D93059B002B0AD0059B1B68002B06D0049B002B03D0059B1B6C002B01D14B4B90E0059B1B6C0B93059B1B685B690A93059B1B6C09930B9B3C +:4040C0001B6A002B3AD00B9B1B6A0A9AD21A039B9A4233D20B9B1B6A10330B9AD0180B9B1B6A0A9AD21A049B190023F025FE0B9B103319000A9B099A0998FFF725FF099C7E +:404100000A9A0999059807AB00932300FFF77EF903000D930D9B002B54D10B9B1B6A0A9AD31A049AD31804930B9B1A6A0A9BD31A039AD31803930B9B00221A62039A0A9BF0 +:40414000D318013B0A99180027F0EAFC0300089301230C931EE00A9B099A04990998FFF7F3FE099C0A9A0999059807AB00932300FFF74CF903000D930D9B002B24D1039A61 +:404180000A9BD31A0393049A0A9BD31804930C9B01330C930C9A089B9A42DCD3039B002B13D00B9B1B6A10330B9AD318039A0499180023F0C1FD0B9B1A6A039BD2180B9B9F +:4041C0001A6202E0C04600E0C0460D9B18000EB010BDC046009FFFFF10B596B003900291039B002B0AD0039B1B68002B06D0039B1B6C002B02D0029B002B01D1374B69E00A +:40420000039B1B6C1593039B1B685B691493159B13930DAB102118000AF010FD09AB102118000AF00BFD09AA0DA9039B1800FFF74FFE159B10331293159B1A6A149B9A420F +:404240000DD2159B1B6A129A149905A8FFF79CFE149B09AA05A905A8FFF776FE05E0149B0DAA129905A8FFF76FFE149B139A05A91398FFF769FE139C149A1399039804AB02 +:4042800000932300FFF7C2F803001193119B002B06D1149A1399029B180023F04DFD00E0C0460DAB102118000AF0C8FC09AB102118000AF0C3FC159B00221A62159B10333B +:4042C000102118000AF0BAFC139B102118000AF0B5FC119B180016B010BDC046009FFFFF00B583B00190A0235A00019B0021180023F0B4FDC04603B000BD000000B58FB090 +:40430000039002910192009305AB20220021180023F0A4FD039B20331800F7F760FF039A9C235B000299D150039A9E235B000199D150039B119A9A61039B114ADA61039BFF +:404340002033180080235A0005AB1900F7F766FF03000D930D9B002B01D00D9B0DE0109A0099039B180000F0DCF903000D930D9B002B01D00D9B00E0002318000FB000BD99 +:404380001027000010B586B00590049103920293029C039A0499059830230193089B00932300FFF7ABFF0300180006B010BD00B583B00190019B002B0CD0019B2033180061 +:4043C000F7F71AFFA0235A00019B110018000AF035FC00E0C04603B000BD000080B5934FBD440390029101920023D093019AC0235B009A4202D938235B4212E1D0235A0034 +:4044000063AB0021180023F029FD05AB1800F7F7E6FE63AB1033D193D19B5A1CD192019A120ED2B21A70D19B5A1CD192019A120CD2B21A70D19B5A1CD192019A120AD2B213 +:404440001A70D19B5A1CD192019AD2B21A70D19B0333D193D19B5A1CD19230221A70019A0299D19B180023F067FCD19A019BD31880221A70019B1933CC930023CF930BE098 +:40448000CF9BD9B26A4BD2AAD218CF9BD3180A1C1A70CF9B0133CF93CF9B1F2BF0DD80235A004FA905AB1800F7F7B8FE0300D093D09B002B00D08AE00023CE9355E063AB08 +:4044C000D1934BAB10220021180023F0C7FCCC9BCD9330E00023CF9315E0564BD2AAD218CF9BD3181A78CF9BD199CB181B785340D9B2504BD2AAD218CF9BD3180A1C1A7074 +:40450000CF9B0133CF93CF9B0F2BE6DDD19B1033D193CD9B102B00D91023CD9AD31ACD934BAB4BAA05A80121F8F726FF0300D093D09B002B4DD1CD9B002BCBD1CE9B57AA1D +:40454000D3184BA91022180023F0F6FB3A4BD2AA94466344DB780133DAB2374BD2A98C466344DA70CE9B1033CE93CE9B2F2BA6DD80235A0057A905AB1800F7F74FFE030063 +:40458000D093D09B002B26D157AB2033CB93039BD1930023CE9316E0CB9BCB9A05A80121F8F7EAFE0300D093D09B002B15D1CB99D19B1022180023F0BFFBD19B1033D1938F +:4045C000CE9B1033CE93CE9B2F2BE5DD06E0C04604E0C04602E0C04600E0C04605AB1800F7F70AFED0235A0063AB110018000AF025FB57AB302118000AF020FB4FAB20216E +:4046000018000AF01BFB4BAB102118000AF016FBD09B002B04D0039B302118000AF00EFBD09B1800D2239B009D4480BDB8FCFFFFF4FDFFFFE4FDFFFF44FEFFFF00B593B0AB +:404640000190009102AB119300230E9302AB30220021180023F002FC00230F932BE0102310930EE0109B013B019AD25C0132D1B2019AD154019AD35C002B06D1109B013B4D +:404680001093109B002BEDDC00E0C046019B20331800019A119B0121F8F76EFE03000E930E9B002B01D00E9B38E0119B103311930F9B10330F930F9B2F2BD0DD0023109364 +:4046C00011E002AA109BD3181A78109B0099CB181B785340D9B202AA109BD3180A1C1A70109B01331093109B2F2BEADD019B2033180080235A0002AB1900F7F78FFD030096 +:404700000E930E9B002B01D00E9B07E0019802AB20331022190023F00FFB0023180013B000BD10B5E6B003900291019200236593039B9A69C0235B009A4207D8039B9B697C +:40474000C0225200D21A019B9A4202D238235B424DE0C0235A0004AB0021180023F07EFB039A9C235B00D458039A9E235B00D058039B9A6904AB1900A047031E02D0342399 +:404780005B4234E0039B9B69659AD3186593029B002B0ED0019B002B0BD004AA659BD318019A0299180023F0C7FA659A019BD3186593659A04A904AB1800FFF70FFE0300CA +:4047C0006493649B002B01D0649B10E004AA039B11001800FFF732FF03006493649B002B01D0649B03E0039B01221A610023180066B010BD00B59BB00390029101920093BF +:4048000000231793039B1693029B1993019A8023DB009A4202D936235B4292E01C9A80235B009A4202D938235B428AE009AB30220021180023F012FB169B1A69169BDB698E +:404840009A4203DC169B5B69002B0ED01C9A0099169B1800FFF765FF03001793179B002B01D0179B6DE000231C931C9B002B52D01C9A009909AB1800FFF7B0FD03001793F2 +:40488000179B002B01D0179B5BE009AA169B11001800FFF7D3FE03001793179B002B3AD0179B4EE0102318930EE0189B013B169AD25C0132D1B2169AD154169AD35C002B67 +:4048C00006D1189B013B1893189B002BEDDC00E0C046169B20331800169A05AB0121F8F74BFD03001793179B002B01D0179B28E0019B102B00D910231593159A05A9199B34 +:40490000180023F019FA199A159BD3181993019A159BD31A0193019B002BC3D109AA169B11001800FFF78AFE03001793179B002B01D0179B05E0169B1B695A1C169B1A6144 +:40494000002318001BB000BD00B589B0059004910392059B0793039A04990798002300930023FFF747FF03000693069B180009B000BD000010B592B0079006910592049371 +:4049800008AB180000F03DFE059C049A08A90798169B0293159B0193149B0093230003F0FDFD03001193119B002B11D108AB180000F07AFF031E02D00A4B119309E008AA7B +:4049C000069B11001800F9F77EFC0300119300E0C04608AB180000F085FE119B180012B010BDC04680B0FFFF10B588B00790069105920493049C059A0699079800230293A3 +:404A00000B9B01930A9B00932300FFF7B3FF0300180008B010BD00B583B00190019B180000F007FE019B7C331800F9F773FB019B8833180000F0E5FD019BAC33180000F0F2 +:404A4000E0FD019BD0331800F9F764FB019BDC2200219950019BE033180000F0D2FD019B0533FF33180000F0CCFD019B2933FF331800F9F74FFBC04603B000BD00B583B078 +:404A80000190019B002B29D0019B180000F042FE019B7C331800F9F74FFB019B8833180000F020FE019BAC33180000F01BFE019BD0331800F9F740FB019BE033180000F072 +:404AC00011FE019B0533FF33180000F00BFE019B2933FF331800F9F72FFB00E0C04603B000BD000000B587B0039002916B4607331A70039B029A1100180000F09EFE030065 +:404B00000593059B002B01D0059B35E06B4607331B78012B0AD1039BAC331A00029B88331900100000F059FE030025E06B4607331B78002B01D0124B1EE0039B88331A0058 +:404B4000029B88331900100000F047FE03000593059B002B0DD1039B7C331A00029B7C3319001000F9F7AFFB03000593059B002B01D0059B00E00023180007B000BDC04659 +:404B800080B0FFFF10B588B00590049103920293059B002B03D0059B9B6D002B01D11F4B39E00598059BD0331900059BAC331A00059B7C331C000B9B01930A9B00932300BE +:404BC000FFF712FF03000793079B002B01D0079B21E0059BD0331800F9F71BFE0200029B9A4201D90D4B16E0059B9B6DDA08059B9B6D07210B40591E8B41DBB2D218049B6B +:404C00001A60059BD0331800049B1A68039B1900F9F7AEFF0300180008B010BD80B0FFFF00B589B00390029101920093039BDB6D0733DB080693069A009B934200D913002A +:404C40000593059A0199029B1800F9F72FFF03000793079B002B29D1059BDA00039BDB6D9A420ED9059BDA00039BDB6DD21A029B11001800FAF760F803000793079B002B44 +:404C800016D1039B4C331A00029B11001800FAF76FF9031E0DDB039B4C331A000299029B1800FAF7DFFB0300079302E0C04600E0C046079B180009B000BD000010B5A2B0AA +:404CC00007900691059204931BAB20931CAB1F930FAB1E93069B1D93079B5B6D002B01D1874B09E1049B01211800FAF7D9F9031E09DB079B4C331A00049B11001800FAF7F2 +:404D000037F9031E01DB7F4BF6E012AB180000F078FC0FAB1800F9F7FDF90CAB1800F9F7F9F909AB1800F9F7F5F9209B00221A60209B1A1D20921B680A2B02DD724B219357 +:404D4000C9E01F9B00221A601F9B1A1D1F921B680A2B02DD6C4B2193BDE0279B269A1E99079803F009FF03002193219B002B00D09AE0079B28331C001E9A12A907980023EA +:404D80000293279B0193269B0093230003F006FC03002193219B002B00D087E0079B4C331A0012A91D9B1800FBF7BEFE03002193219B002B00D07BE01D9B00211800FAF7A8 +:404DC0006FF9031EC0D0259B249A0CA90798FFF727FF03002193219B002B00D06AE0279B269A09A9079803F0C7FE03002193219B002B61D1049A1D99059B1800FBF794FA0D +:404E000003002193219B002B58D1059A0CA90CAB1800FAF7D9FA03002193219B002B4FD109AA0CA90CAB1800FBF77EFA03002193219B002B46D109AA1E991E9B1800FBF783 +:404E400073FA03002193219B002B3DD1079B4C331A001E99059B1800FCF7B0FD03002193219B002B32D10CAA0599059B1800FBF75BFA03002193219B002B29D1079B4C3322 +:404E80001A000599059B1800FBF74EFE03002193219B002B1ED1059B00211800FAF700F9031E00D144E716E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE023 +:404EC000C04608E0C04606E0C04604E0C04602E0C04600E0C04612AB180000F003FC0FAB1800F9F729F90CAB1800F9F725F909AB1800F9F721F9219B180022B010BDC04646 +:404F000080B0FFFF80B3FFFF00B3FFFF10B58AB00990089107920693069C079A08990998002304930F9B03930E9B02930D9B01930C9B00932300FFF7C1FE030018000AB01E +:404F400010BD000010B5CCB009900891079206932FAB4A93099BDB6D0733DB08499350AB1B78180007F014F903004893489B002B01D12C4B53E00BAB1800F9F7CBF82FABB6 +:404F8000180006F064FF499A0EA9069B1800F9F7EFFD03004B934B9B002B32D14F9B4E9A0BA90998FFF73CFE03004B934B9B002B29D10EAA499BD118499A0BAB1800F9F7F3 +:404FC000D7FD03004B934B9B002B1ED1499B5B000EAA48994A9806F0A8FF069C079A08990998519B04934A9B03930F4B02934F9B01934E9B00932300FFF760FE03004B93E1 +:4050000004E0C04602E0C04600E0C0462FAB180007F0ABF80BAB1800F9F78EF84B9B18004CB010BD80B0FFFF41C1011010B588B00790069105920493049C059A069907980A +:40504000002303930CAB1B7802930B9B01930A9B00932300FFF776FF0300180008B010BD10B5A0B0079006910592049314AB1E9311AB1D9308AB180000F0C3FA1AAB180056 +:40508000F9F748F817AB1800F9F744F814AB1800F9F740F811AB1800F9F73CF8079B5B6D002B01D1654BC6E0229B01211800F9F7F7FF031E1ADB079B4C331A00229B11000A +:4050C0001800F9F755FF031E10DA239B01211800F9F7E6FF031E09DB079B4C331A00239B11001800F9F744FF031E02DB544B1F938CE0059B069A1AA90798FFF791FD03003E +:405100001F931F9B002B00D071E0079B4C331A00239917AB1800FCF751FC03001F931F9B002B66D117AA1AA91E9B1800FBF7FCF803001F931F9B002B5DD1079B4C331A0097 +:405140001E991E9B1800FBF7EFFC03001F931F9B002B52D117AA22991D9B1800FBF7E4F803001F931F9B002B49D1079B4C331A001D991D9B1800FBF7D7FC03001F931F9B4A +:40518000002B3ED1079B28331C001E9A08A9079800230293049B01931D9B0093230003F0F1FB03001F931F9B002B2CD108AB180000F07AFB031E02D0214B1F9326E0079BDC +:4051C0004C331A0008A908AB1800FBF7ADFC03001F931F9B002B18D1229A08AB11001800F9F7C6FE031E11D0154B1F930EE0C0460CE0C0460AE0C04608E0C04606E0C0466C +:4052000004E0C04602E0C04600E0C04608AB180000F068FA1AAB1800F8F78EFF17AB1800F8F78AFF14AB1800F8F786FF11AB1800F8F782FF1F9B180020B010BD80B0FFFFC2 +:4052400000B2FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF7FBFE0300180008B010BD00B5ABB0039002910192009305ABC0 +:405280008B33049300232993029A05A904AB1800F8F778FC03002893289B002B01DA289B40E0289B299AD3182993039A05A904AB1800F8F767FC03002893289B002B01DAC4 +:4052C000289B2FE0289B299AD3182993299A05A904AB1800F8F71EFB03002893289B002B01DA289B1EE0289B299AD318299305A904AB30221800F8F7F9FB03002893289BCF +:40530000002B01DA289B0DE0289B299AD31829930499299A019B180022F00EFD009B299A1A60002318002BB000BD10B590B00790059204931B236B440A1C1A700CAB180078 +:40534000F8F7E8FE09AB1800F8F7E4FE0798079B7C331C0009AA0CA9169B03931B236B441B780293049B0193059B00932300FFF7E9FD03000F930F9B002B08D1139B129AD9 +:4053800009A90CA8FFF775FF03000F9300E0C0460CAB1800F8F7D0FE09AB1800F8F7CCFE0F9B180010B010BD10B58AB009900792069323236B440A1C1A70069C079A23233A +:4053C0006B4419780998002304930F9B03930E9B02930D9B01930C9B00932300FFF7A5FF030018000AB010BD10B586B00590049103920293029C039A049905980023019344 +:40540000089B0093230000F005F80300180006B010BD000010B592B00790069105920493049B0F93049A149BD31810930BAB1800F8F770FE08AB1800F8F76CFE0EAA109959 +:405440000FA83023F8F738F903001193119B002B05D0119B284A94466344119340E00F9A0E9BD218109B9A4202D0244B119337E00BAA10990FAB1800F8F782F9030011934C +:40548000119B002B0AD108AA10990FAB1800F8F777F903001193119B002B05D0119B164A9446634411931BE00798079B88331C00059A0699159B029308AB01930BAB009304 +:4054C0002300FFF7CDFD03001193119B002B06D10F9A109B9A4203D0094B119300E0C0460BAB1800F8F728FE08AB1800F8F724FE119B180012B010BD80B0FFFF1AB0FFFF8B +:4055000000B4FFFF00B585B001900091019B009A1100180000F091F903000393039B002B1BD1019B7C331A00009B7C3319001000F8F7C9FE03000393039B002B0DD1019B1C +:4055400088331A00009B88331900100000F045F903000393039B002B03D0019B180000F00EF8039B180005B000BD00B583B00190019B180000F09EF8C04603B000BD00B5C4 +:4055800083B00190019B180000F00FF9C04603B000BD0000014B18007047C046442D041000B585B002006B4607331A70FFF7F2FF030003930BE0039B1B786A4607321278EF +:4055C0009A4201D1039B07E0039B0C330393039B1B78002BEFD10023180005B000BD82B00190019B1B6B002B01D1002306E0019BDB6B002B01D1022300E00123180002B07F +:40560000704700B583B00190019B002B0ED0019B1800F8F77FFD019B0C331800F8F77AFD019B18331800F8F775FD00E0C04603B000BD00B583B00190019B002B37D0019B84 +:4056400000221A70019B04331800F8F763FD019B10331800F8F75EFD019B1C331800F8F759FD019B28331800FFF7CBFF019B4C331800F8F74FFD019B00229A65019B002203 +:40568000DA65019B00221A66019B00225A66019B00229A66019B0022DA66019B00221A67019B00225A67019B00229A6700E0C04603B000BD00B583B00190019B002B0ED042 +:4056C000019B1800FFF7B5FF019B7C331800F8F721FD019B88331800FFF793FF00E0C04603B000BD00B583B00190019B002B0ED0019B1800F8F720FD019B0C331800F8F7CF +:405700001BFD019B18331800F8F716FD00E0C04603B000BD00B585B00190019B002B41D0019B1B6E012B18D0019B04331800F8F703FD019B10331800F8F7FEFC019B1C33C9 +:405740001800F8F7F9FC019B28331800FFF7CAFF019B4C331800F8F7EFFC019B5B6F002B1AD0002303930DE0019B596F039A1300DB009B189B00CB181800FFF7B3FF039BB3 +:4057800001330393019B9A6F039B9A42ECD8019B5B6F180021F096FF019B7C21180009F04DFA00E0C04605B000BD00B583B00190019B002B0ED0019B1800FFF7ABFF019B21 +:4057C0007C331800F8F7B8FC019B88331800FFF789FF00E0C04603B000BD00B585B001900091019B009A11001800F8F76CFD03000393039B002B19D1019B0C331A00009B5D +:405800000C3319001000F8F75EFD03000393039B002B0DD1019B18331A00009B183319001000F8F750FD0300039302E0C04600E0C046039B180005B000BD00B583B0019022 +:405840000091009B1A78019B1100180003F00CFD0300180003B000BD00B585B00190019B01211800F8F7B0FE03000393039B002B13D1019B0C3301211800F8F7A5FE030040 +:405880000393039B002B0AD1019B183300211800F8F79AFE0300039302E0C04600E0C046039B180005B000BD00B583B00190019B183300211800F9F7F3FB03005A425341CE +:4058C000DBB2180003B000BD00B587B0039002910192009300230593019B002B04D0019B012B01D0394B6DE0029B183300211800F9F7D6FB031E0CD1099B002B01D1344B9B +:4059000060E0089B00221A70009B01221A60002358E0039B04331800F8F77BFF03000493019B002B28D1049B5B005A1C009B1A60009B1A68099B9A4201D9254B42E0089B64 +:4059400004221A700298089B0133049A1900F9F70FF903000593059B002B31D1029B0C331800049B0133089AD318049A1900F9F7FFF80300059324E0019B012B21D1049B05 +:405980005A1C009B1A60009B1A68099B9A4201D90F4B17E0029B0C3300211800F8F741FE0300DBB20233DAB2089B1A700298089B0133049A1900F9F7DBF80300059300E06D +:4059C000C046059B180007B000BDC04680B0FFFF00B1FFFF00B587B00390029101920093009B002B01D1294B4CE0019B1B78002B0AD1009B012B05D1029B1800FFF72CFF7A +:405A000003003FE0214B3DE0039B04331800F8F700FF03000493019B1B78042B01D01C4B30E0049B5B005A1C009B9A4201D0174B28E00298019B0133049A1900F9F736F83F +:405A400003000593059B002B18D1029B0C331800049B0133019AD318049A1900F9F726F803000593059B002B0AD1029B183301211800F8F7A9FD0300059302E0C04600E06A +:405A8000C046059B180007B000BDC04680B0FFFF80B1FFFF00B585B001900091009B5B6E002B08D1009B1A1D0199019B1800FBF73BF8030055E0019B1B68002B06DA019B9A +:405AC00000211800F9F7ECFA031E09D1019B1800F8F76DFE0200009B9B6D5B009A4201D9214B3EE0009B5B6E019A1000984703000393039B002B2ED10BE0009B1A1D0199A8 +:405B0000019B1800F9F760FC03000393039B002B23D1019B1B68002B13DA019B00211800F9F7BEFA031EE8D10BE0009B1A1D0199019B1800F9F7E2FB03000393039B002B47 +:405B40000DD1009B1A1D019B11001800F9F710FA031EEADA04E0C04602E0C04600E0C046039B180005B000BD80B0FFFF00B58BB001900091009B183300211800F9F790FA18 +:405B8000031E01D10023AEE006AB1800F8F7C2FA03AB1800F8F7BEFA009B18331900019B1A1D06AB1800FBF709FF03000993099B002B00D07DE006AA06A903AB1800FAF71A +:405BC000B3FB03000993099B002B00D073E0019A03AB11001800FFF75DFF03000993099B002B6AD1414B1B685A1C404B1A60009B009903AA1800FAF797FB03000993099BB0 +:405C0000002B5CD1009B019A11001800FFF742FF03000993099B002B53D1344B1B685A1C324B1A60009B0C331800009B0C3303AA1900FAF779FB03000993099B002B42D1FD +:405C4000009B0C33019A11001800FFF723FF03000993099B002B38D1244B1B685A1C234B1A60009B0C331800009B0C3306AA1900FAF75AFB03000993099B002B27D1009BCB +:405C80000C33019A11001800FFF704FF03000993099B002B1DD1154B1B685A1C134B1A60009B183301211800F8F78EFC0300099310E0C0460EE0C0460CE0C0460AE0C04657 +:405CC00008E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F8F72EFA03AB1800F8F72AFA099B18000BB000BD1868000800B591B0039002910192019B012B08D846 +:405D0000029B1A68039B11001800FFF72FFF03000DE2019B0C21180021F050F903000D930D9B002B01D1E54B01E200230E930DE00E9A13005B009B189B001A000D9B9B1847 +:405D40001800F8F7E7F90E9B01330E930E9A019B9A42EDD30AAB1800F8F7DCF907AB1800F8F7D8F904AB1800F8F7D4F9029B1B6818331A000D9B11001800F8F7A4FA03005A +:405D80000F930F9B002B00D082E101230E9339E00E9A13005B009B189B001A000D9B98180E9A13005B009B189B000C3B0D9AD1180E9B9B00029AD3181B6818331A00FAF7A6 +:405DC000B3FA03000F930F9B002B00D062E10E9A13005B009B189B001A000D9B9B18039A11001800FFF756FE03000F930F9B002B00D051E1B24B1B685A1CB14B1A600E9BEF +:405E000001330E930E9A019B9A42C1D3019A13005B009B189B000C3B0D9AD118039B1A1D0AAB1800FBF7CAFD03000F930F9B002B00D033E1019B013B0E930E9B002B0BD1C9 +:405E40000AAA07AB11001800F8F73DFA03000F930F9B002B47D044E10E9A13005B009B189B000C3B0D9AD2180AA907AB1800FAF75BFA03000F930F9B002B00D010E1039AE0 +:405E800007AB11001800FFF705FE03000F930F9B002B00D006E18A4B1B685A1C884B1A600E9B9B00029AD3181B6818331A000AA90AAB1800FAF738FA03000F930F9B002BF2 +:405EC00000D0F1E0039A0AAB11001800FFF7E2FD03000F930F9B002B00D0E7E0784B1B685A1C774B1A6007AA07A904AB1800FAF71BFA03000F930F9B002B00D0D8E0039ADB +:405F000004AB11001800FFF7C5FD03000F930F9B002B00D0CEE06A4B1B685A1C684B1A600E9B9B00029AD3181B6818000E9B9B00029AD3181B68190004AB1A00FAF7F4F98A +:405F400003000F930F9B002B00D0B5E00E9B9B00029AD3181B681A00039B19001000FFF799FD03000F930F9B002B00D0AAE0544B1B685A1C524B1A600E9B9B00029AD31839 +:405F80001B680C3318000E9B9B00029AD3181B680C3304AA1900FAF7C7F903000F930F9B002B00D090E00E9B9B00029AD3181B680C33039A11001800FFF76CFD03000F93F1 +:405FC0000F9B002B00D081E03D4B1B685A1C3C4B1A600E9B9B00029AD3181B680C3318000E9B9B00029AD3181B680C3307AA1900FAF79AF903000F930F9B002B00D067E008 +:406000000E9B9B00029AD3181B680C33039A11001800FFF73FFD03000F930F9B002B59D1274B1B685A1C264B1A600E9B9B00029AD3181B681A00039B9B6819001000F8F7C0 +:40604000E3F803000F930F9B002B45D10E9B9B00029AD3181B680C331A00039B9B6819001000F8F7D1F803000F930F9B002B35D10E9B9B00029AD3181B6818331800F8F76C +:406080005BF80E9B002B2BD00E9B013B0E93D4E6C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E080B2FFFF38 +:4060C00018680008C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460AAB1800F8F727F807AB1800F8F723F804AB1800F8F71FF800230E930DE071 +:406100000E9A13005B009B189B001A000D9B9B181800F8F711F80E9B01330E930E9A019B9A42EDD30D9B180021F0CCFA0F9B180011B000BD00B58BB0039002916B46073340 +:406140001A7005AB1800F7F7E5FF039B191D029B0C331A0005AB1800F9F784F903000993099B002B1ED1029B0C3300211800F8F797FF03005A1E9341DAB223236B441A70AB +:40618000029B0C3318006B46073323226A441B7812781340DAB205AB1900F8F7F2F80300099300E0C04605AB1800F7F7C5FF099B18000BB000BD000000B593B0039002911E +:4061C0000192DD4B1B685A1CDB4B1A600EAB1800F7F7A0FF0BAB1800F7F79CFF08AB1800F7F798FF05AB1800F7F794FF039B9B69002B00D0A9E0019B18331900019B1833F0 +:406200001A000BAB1800FAF78FF803001193119B002B00D05CE3039A0BAB11001800FFF739FC03001193119B002B00D052E3C34B1B685A1CC14B1A6001990BAA08AB1800A0 +:40624000F9F7C2F803001193119B002B00D043E30CE0039B1A1D08A908AB1800F9F74EF803001193119B002B00D037E3039B1A1D08AB11001800F8F77BFE031EE9DA01998E +:406280000BAA05AB1800F9F7EDF803001193119B002B00D024E30CE0039B1A1D05A905AB1800F9F791F803001193119B002B00D018E305AB1B68002B06DA05AB0021180017 +:4062C000F8F7EEFE031EE7D105AA08A90BAB1800FAF72AF803001193119B002B00D003E3039A0BAB11001800FFF7D4FB03001193119B002B00D0F9E2904B1B685A1C8F4B5D +:406300001A600BA90EAB03221800FAF7BFF803001193119B002B00D0EAE20CE0039B1A1D0EA90EAB1800F8F7E9FF03001193119B002B00D0DEE2039B1A1D0EAB1100180092 +:40634000F8F716FE031EE9DAC8E00199019A0BAB1800F9F7E9FF03001193119B002B00D0CAE2039A0BAB11001800FFF793FB03001193119B002B00D0C0E2704B1B685A1C15 +:406380006E4B1A600BA90EAB03221800FAF77EF803001193119B002B00D0B3E20CE0039B1A1D0EA90EAB1800F8F7A8FF03001193119B002B00D0A7E2039B1A1D0EAB110061 +:4063C0001800F8F7D5FD031EE9DA039B103300211800F8F765FE031E00D17FE0019B18331900019B18331A000BAB1800F9F79CFF03001193119B002B00D087E2039A0BABBF +:4064000011001800FFF746FB03001193119B002B00D07DE2494B1B685A1C484B1A600BAA0BA908AB1800F9F77FFF03001193119B002B00D06EE2039A08AB11001800FFF706 +:4064400029FB03001193119B002B00D064E23B4B1B685A1C394B1A60039B10331A0008A90BAB1800F9F760FF03001193119B002B00D053E2039A0BAB11001800FFF70AFB24 +:4064800003001193119B002B00D049E22B4B1B685A1C2A4B1A600BAA0EA90EAB1800F8F793FF03001193119B002B00D03AE20CE0039B1A1D0EA90EAB1800F8F71FFF030084 +:4064C0001193119B002B00D02EE2039B1A1D0EAB11001800F8F74CFD031EE9DA019B0C331900019B0C331A0008AB1800F9F71CFF03001193119B002B00D017E2039A08AB18 +:4065000011001800FFF7C6FA03001193119B002B00D00DE2094B1B685A1C084B1A6008AB01211800F8F764FB03001193119B002B00D0FFE111E0C0461468000818680008B9 +:40654000039B1A1D08A908AB1800F8F7D7FE03001193119B002B00D0EEE1039B1A1D08AB11001800F8F704FD031EE9DA019908AA0BAB1800F9F7D8FE03001193119B002B06 +:4065800000D0DBE1039A0BAB11001800FFF782FA03001193119B002B00D0D1E1D84B1B685A1CD74B1A600BAB01211800F8F720FB03001193119B002B00D0C3E10CE0039B33 +:4065C0001A1D0BA90BAB1800F8F798FE03001193119B002B00D0B7E1039B1A1D0BAB11001800F8F7C5FC031EE9DA08AA08A905AB1800F9F799FE03001193119B002B00D02F +:40660000A4E1039A05AB11001800FFF743FA03001193119B002B00D09AE1B94B1B685A1CB74B1A6005AB01211800F8F7E1FA03001193119B002B00D08CE10CE0039B1A1DBA +:4066400005A905AB1800F8F759FE03001193119B002B00D080E1039B1A1D05AB11001800F8F786FC031EE9DA0EAA0EA908AB1800F9F75AFE03001193119B002B00D06DE18E +:40668000039A08AB11001800FFF704FA03001193119B002B00D063E1994B1B685A1C984B1A600BAA08A908AB1800F8F7DBFE03001193119B002B00D054E10CE0039B1A1D64 +:4066C00008A908AB1800F8F77FFE03001193119B002B00D048E108AB1B68002B06DA08AB00211800F8F7DCFC031EE7D10BAA08A908AB1800F8F7B6FE03001193119B002B1C +:4067000000D033E10CE0039B1A1D08A908AB1800F8F75AFE03001193119B002B00D027E108AB1B68002B06DA08AB00211800F8F7B7FC031EE7D108AA0BA90BAB1800F8F7D0 +:4067400091FE03001193119B002B00D012E10CE0039B1A1D0BA90BAB1800F8F735FE03001193119B002B00D006E10BAB1B68002B06DA0BAB00211800F8F792FC031EE7D126 +:406780000EAA0BA90BAB1800F9F7CEFD03001193119B002B00D0F1E0039A0BAB11001800FFF778F903001193119B002B00D0E7E0534B1B685A1C524B1A6005AA0BA90BAB06 +:4067C0001800F8F74FFE03001193119B002B00D0D8E00CE0039B1A1D0BA90BAB1800F8F7F3FD03001193119B002B00D0CCE00BAB1B68002B06DA0BAB00211800F8F750FCB5 +:40680000031EE7D1019B0C331900019B18331A0005AB1800F9F788FD03001193119B002B00D0B3E0039A05AB11001800FFF732F903001193119B002B00D0A9E0304B1B6800 +:406840005A1C2F4B1A6005AB01211800F8F7D0F903001193119B002B00D09BE00CE0039B1A1D05A905AB1800F8F748FD03001193119B002B00D08FE0039B1A1D05AB110085 +:406880001800F8F775FB031EE9DA029B08AA11001800F7F718FD03001193119B002B00D07CE0029B0C330BAA11001800F7F70BFD03001193119B002B00D071E0029B183321 +:4068C00005AA11001800F7F7FEFC0300119368E0C04666E0C04664E0C04662E0C04660E0C0465EE0C0465CE0C0465AE0C04658E0C04656E0C04654E0C04652E0C04650E0DD +:4069000018680008C0464CE0C0464AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0B3 +:40694000C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C7 +:40698000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460EAB1800F7F7C7FB0BAB1800F7F7C3FB08AB1800F7F7BFFB05AB1800F7F745 +:4069C000BBFB119B180013B000BDC04600B59BB00390029101920093DD4B1B685A1CDC4B1A60019B183300211800F8F759FB031E07D1009A029B11001800FEF7EEFE0300E9 +:406A000039E3009B1B6A002B0FD0009B183300211800F8F745FB031E07D1019A029B11001800FEF7DAFE030025E3009B1B6A002B09D0009B183301211800F8F731FB031E10 +:406A400001D0C44B17E316AB1800F7F763FB13AB1800F7F75FFB10AB1800F7F75BFB0DAB1800F7F757FB0AAB1800F7F753FB07AB1800F7F74FFB04AB1800F7F74BFB019B30 +:406A800018331900019B18331A0016AB1800F9F74BFC03001993199B002B00D083E2039A16AB11001800FEF7F5FF03001993199B002B00D079E2A84B1B685A1CA64B1A601E +:406AC000019B18331A0016A913AB1800F9F72CFC03001993199B002B00D068E2039A13AB11001800FEF7D6FF03001993199B002B00D05EE2984B1B685A1C974B1A60009A82 +:406B000016A916AB1800F9F70FFC03001993199B002B00D04FE2039A16AB11001800FEF7B9FF03001993199B002B00D045E28A4B1B685A1C884B1A60009B0C331A0013A9AF +:406B400013AB1800F9F7F0FB03001993199B002B00D034E2039A13AB11001800FEF79AFF03001993199B002B00D02AE27A4B1B685A1C794B1A60019A16A916AB1800F8F756 +:406B800071FC03001993199B002B00D01BE20CE0039B1A1D16A916AB1800F8F715FC03001993199B002B00D00FE216AB1B68002B06DA16AB00211800F8F772FA031EE7D1E8 +:406BC000019B0C331A0013A913AB1800F8F74AFC03001993199B002B00D0F8E10CE0039B1A1D13A913AB1800F8F7EEFB03001993199B002B00D0ECE113AB1B68002B06DA00 +:406C000013AB00211800F8F74BFA031EE7D116AB00211800F8F744FA031E16D113AB00211800F8F73DFA031E08D1019A0299039B1800FFF7C1FA03001993FFE1029B180029 +:406C4000FEF70AFE03001993F8E1019B1833190016AA04AB1800F9F767FB03001993199B002B00D0B7E1039A04AB11001800FEF711FF03001993199B002B00D0ADE1364BD9 +:406C80001B685A1C344B1A6016AA16A910AB1800F9F74AFB03001993199B002B00D09EE1039A10AB11001800FEF7F4FE03001993199B002B00D094E1274B1B685A1C264B67 +:406CC0001A6016AA10A90DAB1800F9F72DFB03001993199B002B00D085E1039A0DAB11001800FEF7D7FE03001993199B002B00D07BE1194B1B685A1C174B1A60019A10A966 +:406D000010AB1800F9F710FB03001993199B002B00D06CE1039A10AB11001800FEF7BAFE03001993199B002B00D062E10A4B1B685A1C094B1A6010A916AB02221800F9F749 +:406D4000A5FB03001993199B002B00D053E112E01068000880B0FFFF18680008039B1A1D16A916AB1800F8F7C9FA03001993199B002B00D041E1039B1A1D16AB110018005B +:406D8000F8F7F6F8031EE9DA13AA13A90AAB1800F9F7CAFA03001993199B002B00D02EE1039A0AAB11001800FEF774FE03001993199B002B00D024E1B04B1B685A1CAF4B78 +:406DC0001A6016AA0AA90AAB1800F8F74BFB03001993199B002B00D015E10CE0039B1A1D0AA90AAB1800F8F7EFFA03001993199B002B00D009E10AAB1B68002B06DA0AABF7 +:406E000000211800F8F74CF9031EE7D10DAA0AA90AAB1800F8F726FB03001993199B002B00D0F4E00CE0039B1A1D0AA90AAB1800F8F7CAFA03001993199B002B00D0E8E079 +:406E40000AAB1B68002B06DA0AAB00211800F8F727F9031EE7D10AAA10A910AB1800F8F701FB03001993199B002B00D0D3E00CE0039B1A1D10A910AB1800F8F7A5FA0300DF +:406E80001993199B002B00D0C7E010AB1B68002B06DA10AB00211800F8F702F9031EE7D113AA10A910AB1800F9F73EFA03001993199B002B00D0B2E0039A10AB11001800EE +:406EC000FEF7E8FD03001993199B002B00D0A8E06A4B1B685A1C694B1A60019B0C331A000DA90DAB1800F9F71FFA03001993199B002B00D097E0039A0DAB11001800FEF72A +:406F0000C9FD03001993199B002B00D08DE05B4B1B685A1C594B1A600DAA10A907AB1800F8F7A0FA03001993199B002B00D07EE00CE0039B1A1D07A907AB1800F8F744FA1C +:406F400003001993199B002B00D072E007AB1B68002B06DA07AB00211800F8F7A1F8031EE7D1029B0AAA11001800F7F7ACF903001993199B002B00D05DE0029B0C3307AAA0 +:406F800011001800F7F79FF903001993199B002B53D1029B183304AA11001800F7F793F9030019934AE0C04648E0C04646E0C04644E0C04642E0C04640E0C0463EE0C04662 +:406FC0003CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C04661 +:407000001CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04616AB18002B +:40704000F7F77AF813AB1800F7F776F810AB1800F7F772F80DAB1800F7F76EF80AAB1800F7F76AF807AB1800F7F766F804AB1800F7F762F8199B18001BB000BD1868000811 +:4070800000B58FB0039002910192009300230C93039B9B6D0733DB080B9308AB1800F7F739F805AB1800F7F735F8009B019A0B9908A8FAF749FC03000D930D9B002B00D09A +:4070C000B5E00AE008AB01211800F7F735FE03000D930D9B002B00D0ABE0039B1A1D08AB11001800F7F744FF031EEBDA0C9B5A1C0C920A2B01DD5F4BB9E008AB012118006C +:40710000F7F7CEFF031ED0DD029B18331800029B183308AA1900F9F707F903000D930D9B002B00D087E0029B1833039A11001800FEF7B0FC03000D930D9B002B00D07CE085 +:407140004D4B1B685A1C4C4B1A6008AA08A905AB1800F9F7E9F803000D930D9B002B00D06DE0039A05AB11001800FEF793FC03000D930D9B002B64D13F4B1B685A1C3E4B2D +:407180001A60029B029905AA1800F9F7CDF803000D930D9B002B56D1029B039A11001800FEF778FC03000D930D9B002B4DD1324B1B685A1C304B1A6008AA05A905AB180011 +:4071C000F9F7B2F803000D930D9B002B3FD1039A05AB11001800FEF75DFC03000D930D9B002B36D1244B1B685A1C234B1A60029B0C331800029B0C3305AA1900F9F794F8CA +:4072000003000D930D9B002B25D1029B0C33039A11001800FEF73EFC03000D930D9B002B1BD1154B1B685A1C134B1A6016E0C04614E0C04612E0C04610E0C0460EE0C046A6 +:407240000CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800F6F76AFF05AB1800F6F766FF0D9B18000FB000BD00B3FFFF1868000800B589B0FC +:407280000390029100936B4607331A70029B5A1C039B0021180020F0E1FD0023079329E0002306931DE0029B069A5A43079BD218009B11001800F7F7B4F90200069B9A4007 +:4072C0001000039A079BD3180399079A8A18127851B242B20A4352B2D2B21A70069B013306936B4607331A78069B9A42DBD8079B01330793079A029B9A42D1D317236B4463 +:4073000000221A700123079372E0039A079BD3181A7816236B441721694409780A401A70039A079BD3180399079A8A18117817226A4412784A40D2B21A7017236B441622F7 +:407340006A4412781A70039A079BD3181B781A00012313405A425341DAB215236B441A70039A079BD3181B785BB2079A013A03998A1812781521694409784A43D2B252B2E9 +:4073800013405AB217236B441B785BB213435AB217236B441A70039A079BD3180399079A8A18127851B2079A013A0398821812781520684400784243D2B252B24A4052B2EB +:4073C000D2B21A70079B013B039AD318079A013A03998A18127851B215226A441278D20152B20A4352B2D2B21A70079B01330793079A029B9A4288D9C04609B000BD10B5A1 +:40740000A8B00390029101921A006B4603331A70002325936B4603331B78013B01229A4093236B441A70019A029B11001800FEF7D4F903002793279B002B00D0EAE00023A9 +:40744000259344E02A99259824F06AFB03001A00012393401A009B236B441A709B236B441A781300DB009B189B001A00029B9B182393259B2A99180024F0D8FB0B1E17D124 +:407480009B236B441B785B08DBB21A001300DB009B189B001A00029B9A18239B11001800FEF79BF903002793279B002B00D0B3E0239A2399039B1800FEF77EFE0300279343 +:4074C000279B002B00D0A9E0259B013325936B4603331B78013B1A002A9B5A43259B9A42B0D8002325939B236B4401221A7016E0259A531C25939B236B4419780B00DB008F +:407500005B189B001900029B591804AB9200D1509B226A449B236B441B78DB1813709B226A4493236B4412781B789A42E0D3259A04A9039B1800FEF7DBFB03002793279BEB +:40754000002B6DD19B236B4401221A7037E09B236B441B78259326E09B236B441A78259BD2181300DB009B189B001A00029B9918259A1300DB009B189B001A00029B9C1800 +:407580009B236B441A781300DB009B189B001A00029B9B1803982200FFF718FA03002793279B002B3ED1259B5A1E2592002BD3D19B226A449B236B441B78DB1813709B224C +:4075C0006A4493236B4412781B789A42BFD3002325930FE0259B5A1C1300DB009B189B001A00029B991804AB259A9200D150259B01332593259B5A1C93236B441B789A4272 +:40760000E8D3259A04A9039B1800FEF771FB0300279308E0C04606E0C04604E0C04602E0C04600E0C046279B180028B010BD00B587B00390029101921A006B4603331A700E +:4076400008AB1B785B08DAB212236B443F210A401A7013236B4400221A7045E0029813236B441A781300DB009B189B001A00019B9B18190013226A4412236B4412781B7854 +:40768000D31A5A425341DBB21A00F6F77AFE03000593059B002B3BD1029B0C33180013236B441A781300DB009B189B001A00019B9B180C33190013226A4412236B44127876 +:4076C0001B78D31A5A425341DBB21A00F6F759FE03000593059B002B1CD113236B441A7813236B4401321A7013226A446B46033312781B789A42B1D308AB1B78DB09DAB286 +:407700000299039B1800FEF715FD0300059302E0C04600E0C046059B180007B000BD10B592B00590049103921A000B236B441A7007AB1800FDF765FF159B1093149A109B47 +:40774000D3181B780B226A441478039A0499059800932300FFF76BFF03001193119B002B49D1049B183301211800F6F72DFF03001193119B002B40D1169B002B37D0179B3E +:40778000169A04990598FFF77BFC03001193119B002B34D12BE0109B013B1093049A0499059B1800FEF708FD03001193119B002B27D1149A109BD3181B780B226A441478B9 +:4077C000039A07A9059800932300FFF730FF03001193119B002B16D107AB049A04990598FFF7F4F803001193119B002B0DD1109B002BD0D10AE0C04608E0C04606E0C04656 +:4078000004E0C04602E0C04600E0C04607AB1800FDF768FF119B180012B010BD00B58DB0039002910192009308AB1800F6F772FC05AB1800F6F76EFC039B4C33002118003F +:40784000F6F7EFFE0300012B01D0254B45E0029B00211800F6F7E5FE03005A425341DBB21A000F9B1A70029A08AB11001800F6F72AFD03000B930B9B002B20D1039B4C33D9 +:407880001900029A05AB1800F7F7ECFD03000B930B9B002B15D10F9B1A7805A908AB1800F6F76FFD03000B930B9B002B0BD108AB0EAA127800990198FFF7E0FC04E0C046DD +:4078C00002E0C04600E0C04605AB1800F6F734FC08AB1800F6F730FC0B9B18000DB000BD80B0FFFF10B5CEB00990089107920693089B4C93529C0AAA079909983023FF33FA +:407900006B44019351AB1B7800932300FFF786FF03004D934D9B002B2DD150AB1C78069A4C990998559B0493549B0393539B0293529B01930AAB00932300FFF7F0FE030039 +:407940004D934D9B002B18D13023FF336B441A784C99099B1800FEF7EDFB03004D934D9B002B0CD14C9A099B11001800FEF7FEF803004D9304E0C04602E0C04600E0C046DB +:407980004D9B18004EB010BD84B001900A006B4603331A70019BDA6D8023FF339A4201D9052200E004220F236B441A706B4603331B78002B06D00F236B441A780F236B44E7 +:4079C00001321A700F236B441B78062B03D90F236B4406221A700F236B441A78019BDB6D9A4203D30F236B4402221A700F236B441B78180004B0704710B590B009900891F0 +:407A000007920693069B0C331A00099B343319001000F7F7ADFA031E0AD1069A099B283319001000F7F7A4FA031E01D1012200E0002233236B441A7032246C4433236B444F +:407A40001A78099B11001800FFF79EFF0300237032236B441B78013B01229A4031236B441A70099BDA6D32236B441B78D3185A1E32236B441B781900100024F051F803001C +:407A80000B9333236B441B78002B0BD0099B5B6F002B07D0099B5B6F0D933A236B4401221A7033E031236B441B78242118001FF085FA03000D930D9B002B02D1504B0F9339 +:407AC00063E03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF78EFD3B236B441A783B236B4401321A703B226A4431236B4412781B781C +:407B00009A42E3D33A236B4400221A703A236B441B78002B1ED132236B441C78069A0D990998149B01930B9B00932300FFF767FC03000F930F9B002B26D133236B441B78C2 +:407B4000002B07D0099B0D9A5A6731236B441A78099B9A670D9C079A08990998149B0593139B0493129B03930B9B029332236B441B78019331236B441B7800932300FFF7BA +:407B8000B1FE03000F9300E0C046099B5A6F0D9B9A4201D100230D930D9B002B24D03B236B4400221A7013E03B236B441A781300DB009B189B001A000D9B9B181800FDF736 +:407BC00091FD3B236B441A783B236B4401321A703B226A4431236B4412781B789A42E3D30D9B18001FF06EFD0F9B002B03D0089B1800FDF777FD0F9B180010B010BDC04677 +:407C000080B2FFFF00B585B001900091009B18331800009B18331900019B04331A00F9F7CDFE03000393039B002B24D100980099009B18331A00F8F777FB03000393039B43 +:407C4000002B1AD1009B019A11001800FDF722FF03000393039B002B11D10B4B1B685A1C094B1A60009B183301211800F6F7ACFC0300039304E0C04602E0C04600E0C04613 +:407C8000039B180005B000BD1868000800B58BB0039002910192009300230893039B9B6D0733DB08079304AB1800F6F733FA009B019A079904A8F9F747FE03000993099BE2 +:407CC000002B5CD109E004AB01211800F7F734F803000993099B002B53D1039B1A1D04AB11001800F7F744F9031EECDA089B5A1C08920A2B01DD2B4B51E004AB0121180099 +:407D0000F7F7CEF9031ED2DD029B029904AA1800F8F70AFB03000993099B002B33D1029B039A11001800FDF7B5FE03000993099B002B2AD11C4B1B685A1C1B4B1A60029B0A +:407D400018331800029B183304AA1900F8F7ECFA03000993099B002B19D1029B1833039A11001800FDF796FE03000993099B002B0FD10D4B1B685A1C0B4B1A600AE0C0462F +:407D800008E0C04606E0C04604E0C04602E0C04600E0C04604AB1800F6F7CEF9099B18000BB000BD00B3FFFF1868000800B5A1B003900291019200931CAB1800F6F7AAF988 +:407DC00019AB1800F6F7A6F916AB1800F6F7A2F913AB1800F6F79EF910AB1800F6F79AF90DAB1800F6F796F90AAB1800F6F792F907AB1800F6F78EF904AB1800F6F78AF907 +:407E00000099009B18331A001CAB1800F7F7DCFA03001F931F9B002B00D05BE20CE0039B1A1D1CA91CAB1800F7F768FA03001F931F9B002B00D04FE2039B1A1D1CAB110062 +:407E40001800F7F795F8031EE9DA1CAA1CA919AB1800F8F769FA03001F931F9B002B00D03CE2039A19AB11001800FDF713FE03001F931F9B002B00D032E29E4B1B685A1C5B +:407E80009C4B1A600099009B18331A0016AB1800F7F7E8FA03001F931F9B002B00D021E20CE0039B1A1D16A916AB1800F7F78CFA03001F931F9B002B00D015E216AB1B6840 +:407EC000002B06DA16AB00211800F7F7E9F8031EE7D116AA16A913AB1800F8F725FA03001F931F9B002B00D000E2039A13AB11001800FDF7CFFD03001F931F9B002B00D078 +:407F0000F6E17C4B1B685A1C7A4B1A6013AA19A910AB1800F7F7A6FA03001F931F9B002B00D0E7E10CE0039B1A1D10A910AB1800F7F74AFA03001F931F9B002B00D0DBE1B4 +:407F400010AB1B68002B06DA10AB00211800F7F7A7F8031EE7D12299229B18331A000DAB1800F7F731FA03001F931F9B002B00D0C4E10CE0039B1A1D0DA90DAB1800F7F754 +:407F8000BDF903001F931F9B002B00D0B8E1039B1A1D0DAB11001800F6F7EAFF031EE9DA2299229B18331A000AAB1800F7F75AFA03001F931F9B002B00D0A3E10CE0039B34 +:407FC0001A1D0AA90AAB1800F7F7FEF903001F931F9B002B00D097E10AAB1B68002B06DA0AAB00211800F7F75BF8031EE7D11CAA0AA907AB1800F8F797F903001F931F9B87 +:40800000002B00D082E1039A07AB11001800FDF741FD03001F931F9B002B00D078E1354B1B685A1C334B1A6016AA0DA904AB1800F8F77AF903001F931F9B002B00D069E1B1 +:40804000039A04AB11001800FDF724FD03001F931F9B002B00D05FE1264B1B685A1C254B1A60019B04AA07A91800F7F7ADF903001F931F9B002B00D050E1019B039A1100ED +:408080001800FDF707FD03001F931F9B002B00D046E1184B1B685A1C164B1A60019B0199019A1800F8F740F903001F931F9B002B00D037E1019B039A11001800FDF7EAFC19 +:4080C00003001F931F9B002B00D02DE1094B1B685A1C084B1A60019B183304AA07A91800F7F7C0F903001F931F9B002B00D01DE113E0C04618680008019B18331800019B66 +:4081000018331900039B04331A00F7F75DF903001F931F9B002B00D00AE1019B9B69002B07DA019B183300211800F6F7B9FF031EE2D1019B18331800019B18331900019B73 +:4081400018331A00F8F7F0F803001F931F9B002B00D0EFE0019B1833039A11001800FDF799FC03001F931F9B002B00D0E4E0914B1B685A1C8F4B1A60019B18331800019B62 +:4081800018331A00239B1900F8F7CEF803001F931F9B002B00D0D1E0019B1833039A11001800FDF777FC03001F931F9B002B00D0C6E0804B1B685A1C7E4B1A60029B13AA2E +:4081C00019A91800F8F7B0F803001F931F9B002B00D0B7E0029B039A11001800FDF75AFC03001F931F9B002B00D0ADE0714B1B685A1C704B1A60029B18331800039B10339E +:4082000010AA1900F8F790F803001F931F9B002B00D09BE0029B1833039A11001800FDF739FC03001F931F9B002B00D090E0614B1B685A1C5F4B1A60029B18331800029BF8 +:4082400018331A0013AB1900F7F7BEF803001F931F9B002B00D07DE010E0029B18331800029B18331900039B04331A00F7F746F803001F931F9B002B00D06DE0029B1833AC +:408280001A00039B043319001000F6F771FE031EE3DA029B18331800029B18331A0010AB1900F8F741F803001F931F9B002B55D1029B1833039A11001800FDF7EBFB030023 +:4082C0001F931F9B002B4BD13A4B1B685A1C394B1A6046E0C04644E0C04642E0C04640E0C0463EE0C0463CE0C0463AE0C04638E0C04636E0C04634E0C04632E0C04630E0C9 +:40830000C0462EE0C0462CE0C0462AE0C04628E0C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0ED +:40834000C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0461CAB1800F5F7E7FE19AB1800F5F7E3FE16AB1800F5F7DFFE13AB1800F5F7D2 +:40838000DBFE10AB1800F5F7D7FE0DAB1800F5F7D3FE0AAB1800F5F7CFFE07AB1800F5F7CBFE04AB1800F5F7C7FE1F9B180021B000BDC0461868000810B596B00590049123 +:4083C000039202930AAB1800FDF71BF907AB1800F5F7A0FE029A07AB11001800F5F773FF03001593159B002B00D0B6E0029A0AAB11001800FDF7F1F903001593159B002B8B +:4084000000D0ACE0049B01211800F6F7DDF803001593159B002B00D0A3E0049B183300211800F6F7D1F803001593159B002B00D099E0049B0C331800F5F77EFE0CE0059BDA +:408440001A1D0AA90AAB1800F6F758FF03001593159B002B00D088E0059B1A1D0AAB11001800F6F785FD031EE9DA189B002B0BD0199B189A0AA90598FFF708FC0300159327 +:40848000159B002B00D072E0039B1800F6F78FF90300149353E0149A039B11001800F6F7C0F802004F236B441A7004984F236B441A780AAB1900F5F7E1FF03001593159BAC +:4084C000002B56D1049B183318004F236B441A780AAB18331900F5F7D1FF03001593159B002B48D1049C0AAA0499059807AB01930AAB00932300FFF759FC03001593159B1C +:40850000002B3AD104984F236B441A780AAB1900F5F7B4FF03001593159B002B2FD1049B183318004F236B441A780AAB18331900F5F7A4FF03001593159B002B21D1149B3F +:408540005A1E1492002BA6D1049A059B11001800FFF758FB0300159314E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04676 +:4085800000E0C0460AAB1800FDF7ACF807AB1800F5F7D2FD159B180016B010BD10B58AB00790069105920493284B0993059A079B1100180000F088FA03000993099B002BDC +:4085C0003AD1049A079B1100180000F049FA03000993099B002B31D11C4B0993079B1800FCF7FDFF0300022B0FD1049C059A069907980D9B01930C9B00932300FFF7DCFEC2 +:4086000003000993099B002B1AD1079B1800FCF7E6FF0300012B14D1049C059A069907980E9B02930D9B01930C9B00932300FFF7E3F90300099304E0C04602E0C04600E0C4 +:40864000C046099B18000AB010BDC04680B0FFFF10B588B00790069105920493049C059A06990798002302930B9B01930A9B00932300FFF793FF0300180008B010BD000032 +:4086800000B58BB001900091009B00211800F6F707FD031E1BDB009B0C3300211800F6F7FFFC031E13DB009A019B043319001000F6F75EFC031E0ADA009B0C331A00019B50 +:4086C000043319001000F6F753FC031E01DB814BFCE006AB1800F5F71DFD03AB1800F5F719FD009B0C331900009B0C331A0006AB1800F7F719FE03000993099B002B00D0AF +:40870000C4E0019A06AB11001800FDF7C3F903000993099B002B00D0BAE06F4B1B685A1C6D4B1A600099009A03AB1800F7F7FCFD03000993099B002B00D0ABE0019A03ABC1 +:4087400011001800FDF7A6F903000993099B002B00D0A1E0604B1B685A1C5F4B1A60019B9B69002B25D103A903AB03221800F6F7EAFE03000993099B002B00D08EE00CE0F1 +:40878000019B1A1D03A903AB1800F6F71DFE03000993099B002B00D082E003AB1B68002B2BDA03AB00211800F6F77AFC031EE7D123E0019B10331A0003A903AB1800F6F7ED +:4087C00003FE03000993099B002B00D06AE00BE0019B1A1D03A903AB1800F6F78FFD03000993099B002B5FD1019B1A1D03AB11001800F6F7BDFB031EEADA009A03A903AB81 +:408800001800F7F791FD03000993099B002B4DD1019A03AB11001800FDF73CF903000993099B002B44D12C4B1B685A1C2A4B1A60019B1C331A0003A903AB1800F6F7C4FD76 +:4088400003000993099B002B34D10BE0019B1A1D03A903AB1800F6F751FD03000993099B002B29D1019B1A1D03AB11001800F6F77FFB031EEADA03AA06AB11001800F6F748 +:4088800077FB031E19D0134B099316E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800F5F741 +:4088C0003BFC03AB1800F5F737FC099B18000BB000BDC04680B3FFFF1868000810B58AB00790069105920493059B01211800F6F7D7FB031E08D1049A069B11001800FCF720 +:408900006CFF0300099339E001235A42059B11001800F6F7C5FB031E1FD1049A069B11001800FCF75AFF03000993099B002B24D1069B0C3300211800F6F7B2FB031E1DD0F5 +:40894000069B0C331800079B191D069B0C331A00F6F788FD0300099310E0049C059A069907980C9B029300230193002300932300FFF714FE0300099300E0C046099B18009A +:408980000AB010BD10B592B0059004910392029306AB1093049B0F93059B1800FCF71FFE0300012B01D0214B3DE006AB1800FCF728FE029C039A10990598169B0093230025 +:4089C000FFF78CFF03001193119B002B21D1159C149A0F990598169B00932300FFF77EFF03001193119B002B15D10F9B109A0F990598FDF7EBFF03001193119B002B0CD1D2 +:408A00000F9A059B11001800FDF7B0F80300119304E0C04602E0C04600E0C04606AB1800FCF760FE119B180012B010BD80B1FFFF00B583B001900091009B1800F5F7E9FE9D +:408A40000200019BDB6D0733DB089A4201D9034B00E00023180003B000BDC04680B3FFFF00B583B001900091009B183301211800F6F716FB031E01D0114B1EE0019B180005 +:408A8000FCF7ADFD0300022B07D1009A019B11001800FFF7CDFF03000FE0019B1800FCF79EFD0300012B07D1009A019B11001800FFF7E6FD030000E0024B180003B000BDC5 +:408AC00080B3FFFF80B0FFFF00B583B001900091019B1800FCF783FD0300022B28D1009B00211800F5F79DFD031E10D1009B01211800F5F796FD031E09D1009B1800F5F773 +:408B000056FE03005A1E019BDB6D9A4201D0184B2BE0019BDB6DFE2B08D1009B02211800F5F77FFD031E01D0114B1EE000231CE0019B1800FCF753FD0300012B14D1009B32 +:408B400001211800F6F7ACFA031E09DB019B4C331A00009B11001800F6F70AFA031E01DB034B02E0002300E0024B180003B000BD80B3FFFF80B0FFFF00B589B003900291C1 +:408B8000019200935C4B0793039BDB6D0733DB080593039B1800FCF722FD0300022B5DD1009B019A05990298F8F7CEFE03000793079B002B00D08EE0029B1800F5F7F7FD27 +:408BC000031EEDD0029B1800F5F7F1FD0300013B0493039BDA6D049B9A420ED2039BDB6D049AD21A029B11001800F6F7A5F803000793079B002B0CD07AE0039BD96D029B11 +:408C000001221800F5F72AFD03000793079B002B63D1029B002200211800F5F71FFD03000793079B002B5AD1029B002201211800F5F714FD03000793079B002B51D1039B93 +:408C4000DB6DFE2B0AD1029B002202211800F5F705FD03000793079B002B44D1039B1800FCF7BDFC0300012B42D100230693009B019A05990298F8F767FE03000793079BE0 +:408C8000002B32D1059BDA00039BDB6DD21A029B11001800F6F750F803000793079B002B25D1069B01330693069B1E2B01DD134B1FE0029B01211800F6F7F2F9031ED6DBCB +:408CC000039B4C331A00029B11001800F6F750F9031ECCDA0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046079B180009B000BD80B0FFFF00B3FFFFF7 +:408D000010B588B005900491039202930B9B0A9A03990598FFF730FF03000793079B002B0DD1049C039A029905980B9B01930A9B00932300FFF78CFC0300079300E0C046E7 +:408D4000079B180008B010BD10B586B00590049103920293059B28331900039C049A0598089B0193029B00932300FFF7C9FF0300180006B010BD10B588B0049103920293D5 +:408D800017236B44021C1A70049A17236B441B781900100000F068FA03000793079B002B01D0079B0DE00498049B7C331900049B88331A00039C029B00932300FFF7C4FFA1 +:408DC0000300180008B010BD10B5AEB003900291039B1B78002B26D0039B1A78029B1B789A4220D1039B88331A00029B883319001000F6F7BDF8031E15D1039B94331A00EF +:408E0000029B943319001000F6F7B2F8031E0AD1039BA0331A00029BA03319001000F6F7A7F8031E01D02A4B4EE024AB1800FCF7E8FB05AB1800FCF7FCFB029A05AB110001 +:408E40001800FCF7FAFC029B7C331A00029B28331C0024A905A800230193002300932300FFF7F6FB03002D932D9B002B22D1029B88331A0024AB11001800F6F779F8031EF4 +:408E800015D1029B94331A0024AB0C3311001800F6F76EF8031E0AD1029BA0331A0024AB183311001800F6F763F8031E03D0084B2D9300E0C04624AB1800FCF713FC05AB2D +:408EC0001800FCF727FC2D9B18002EB010BDC04680B0FFFF84B0039002910192039B01221A60019B9A08039B5A60039B029A9A60C04604B07047000082B00190019B0122A0 +:408F00001A60019B01225A60019B024A9A60C04602B070470804000800B585B00390029101920093039B0433019A02991800FFF7D1FF009B002B06D0039B1033069A009904 +:408F40001800FFF7C7FF039B1C33089A07991800FFF7C0FF039B4C330E9A0D991800FFF7B9FF039B28330A9A09991800FFF7B2FF039B34330C9A0B991800FFF7ABFF039B4D +:408F800040331800FFF7B8FF039B04331800F5F70EFC0200039B9A65039B4C331800F5F706FC0200039BDA65039B01221A660023180005B000BD000000B585B00190019BF0 +:408FC0001033434A10211800F5F778FC03000393039B002B61D1019B043301211800F5F7F3FA03000393039B002B58D1019B0433FF211800F5F7FCFD03000393039B002BA1 +:409000004FD1019B181D019B043313221900F6F79AFA03000393039B002B44D1019B04331800F5F7C4FB0200019B9A65019B4C33284A10211800F5F741FC03000393039BBD +:40904000002B32D1019B4C330122FC211800F5F705FB03000393039B002B28D1019B283309211800F5F7B0FA03000393039B002B1FD1019B403301211800F5F7A5FA030010 +:409080000393039B002B16D1019B34331800F5F753F8019BFE22DA650EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046039B002B03D0019B7D +:4090C0001800FCF727FB039B180005B000BDC046F82E0410002F041000B587B0019002AB1800F5F717F8019B10335D4A10211800F5F7E4FB03000593059B002B00D08BE020 +:40910000019B043301211800F5F75EFA03000593059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E0019B181D019B043301221900F6F703FAB5 +:4091400003000593059B002B6CD1019B0433E0211800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF903000593059B002B58D1019B0433180065 +:40918000F5F715FB0200019B9A65019B283305211800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA03000593059B002B3ED1019B34331800F4F7BCFFF1 +:4091C000019B4C331800DF235B0001221900F5F745FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B24D1019B4C331800019B4C3302AA1900F4 +:40920000F6F730F903000593059B002B18D1019BC022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E091 +:40924000C04602AB1800F4F777FF059B002B03D0019B1800FCF75EFA059B180007B000BD242F04102C2F041000B58DB00B900A002B236B441A700B9B1800FCF74BFA0B9B69 +:409280002B226A4412781A702B236B441B78042B25D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B9820230893284B079320230693274B0593202322 +:4092C0000493264B039320230293254B01930023009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B0793302306931E4B0593302304931D4B03930D +:40930000302302931C4B01930023009300233022FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A660B9B1800FFF7D0FE030004E00B9B180092 +:40934000FCF7E8F90F4B18000DB000BD5D940110682D0410E82D0410C82D0410A82D0410882D0410939C0110082E0410C82E0410982E0410682E0410382E04105DA70110F7 +:4093800049A8011080B1FFFF84B0039002910192039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B42DBB2D318DBB25AB2019B1A70C04604B007 +:4093C000704784B0039002910192019B1B785BB2DAB2039B1968029B99429B415B42DBB2D31ADBB25AB2019B1A70039B1A68029BD21A039B1A60C04604B0704700B587B09A +:409400000390019200930B236B440A1C1A70019B9A68019B5B6810498C4663449B00D3180B226A44127852B252421A60039A0199039B1800F5F762FF03000593059B002B7A +:4094400004D1039B012252421A6000E0C046059B180007B000BDC046FFFFFF3F00B595B0019042236B4400221A700023139380235B0012930CAB01221A600CAB09225A604D +:409480000CAB03AA9A600CAB5B689A0003AB002118001EF0E3FC019B10211800F4F770FE03001193119B002B01D000F0EDFB019B9A68139B9B00D3181B680F93019B9B686B +:4094C0002033196842226A440FAB1800FFF75CFF019B9B682433196842226A440FAB1800FFF752FF019B9B682C33196842226A440FAB1800FFF765FF019B9B683033196881 +:4095000042226A440FAB1800FFF75BFF019B9B683433196842226A440FAB1800FFF751FF019B9B683833196842226A440FAB1800FFF747FF019B9A68139B9B00D3180F9A20 +:409540001A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190055 +:4095800042226A440FAB1800FFF71BFF09E043236B440021595642226A440FAB1800FFF7F3FE019B9B682433196842226A440FAB1800FFF7E9FE019B9B6828331968422207 +:4095C0006A440FAB1800FFF7DFFE019B9B683033196842226A440FAB1800FFF7F2FE019B9B683433196842226A440FAB1800FFF7E8FE019B9B683833196842226A440FAB2D +:409600001800FFF7DEFE019B9B683C33196842226A440FAB1800FFF7D4FE019B9A68139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B447C +:4096400042226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800FFF7A8FE09E043236B440021595642226A4402 +:409680000FAB1800FFF780FE019B9B682833196842226A440FAB1800FFF776FE019B9B682C33196842226A440FAB1800FFF76CFE019B9B683433196842226A440FAB18006D +:4096C000FFF77FFE019B9B683833196842226A440FAB1800FFF775FE019B9B683C33196842226A440FAB1800FFF76BFE019B9A68139B9B00D3180F9A1A60139B01331393D0 +:40970000019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB1800B1 +:40974000FFF73FFE09E043236B440021595642226A440FAB1800FFF717FE019B9B682C33196842226A440FAB1800FFF70DFE019B9B682C33196842226A440FAB1800FFF73C +:4097800003FE019B9B683033196842226A440FAB1800FFF7F9FD019B9B683033196842226A440FAB1800FFF7EFFD019B9B683433196842226A440FAB1800FFF7E5FD019B2D +:4097C0009B683C33196842226A440FAB1800FFF7F8FD019B9B682033196842226A440FAB1800FFF7EEFD019B9B682433196842226A440FAB1800FFF7E4FD019B9A68139BF1 +:409800009B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B7826 +:409840005BB25B42190042226A440FAB1800FFF7B8FD09E043236B440021595642226A440FAB1800FFF790FD019B9B683033196842226A440FAB1800FFF786FD019B9B68E2 +:409880003033196842226A440FAB1800FFF77CFD019B9B683433196842226A440FAB1800FFF772FD019B9B683433196842226A440FAB1800FFF768FD019B9B683833196850 +:4098C00042226A440FAB1800FFF75EFD019B9B682433196842226A440FAB1800FFF771FD019B9B682833196842226A440FAB1800FFF767FD019B9A68139B9B00D3180F9A40 +:409900001A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190091 +:4099400042226A440FAB1800FFF73BFD09E043236B440021595642226A440FAB1800FFF713FD019B9B683433196842226A440FAB1800FFF709FD019B9B68343319684222CB +:409980006A440FAB1800FFF7FFFC019B9B683833196842226A440FAB1800FFF7F5FC019B9B683833196842226A440FAB1800FFF7EBFC019B9B683C33196842226A440FAB39 +:4099C0001800FFF7E1FC019B9B682833196842226A440FAB1800FFF7F4FC019B9B682C33196842226A440FAB1800FFF7EAFC019B9A68139B9B00D3180F9A1A60139B013321 +:409A00001393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B441B785BB25B42190042226A440FAB20 +:409A40001800FFF7BEFC09E043236B440021595642226A440FAB1800FFF796FC019B9B683833196842226A440FAB1800FFF78CFC019B9B683833196842226A440FAB180088 +:409A8000FFF782FC019B9B683C33196842226A440FAB1800FFF778FC019B9B683C33196842226A440FAB1800FFF76EFC019B9B683833196842226A440FAB1800FFF764FCBD +:409AC000019B9B683433196842226A440FAB1800FFF75AFC019B9B682033196842226A440FAB1800FFF76DFC019B9B682433196842226A440FAB1800FFF763FC019B9A68AB +:409B0000139B9B00D3180F9A1A60139B01331393019B9A68139B9B00D3181B680F9343236B4442226A4412781A7042236B4400221A7043236B441B787F2B0CD943236B4408 +:409B40001B785BB25B42190042226A440FAB1800FFF737FC09E043236B440021595642226A440FAB1800FFF70FFC019B9B683C33196842226A440FAB1800FFF705FC019BC9 +:409B80009B683C33196842226A440FAB1800FFF7FBFB019B9B683C33196842226A440FAB1800FFF7F1FB019B9B682033196842226A440FAB1800FFF7E7FB019B9B68283364 +:409BC000196842226A440FAB1800FFF7FAFB019B9B682C33196842226A440FAB1800FFF7F0FB019B9B683033196842226A440FAB1800FFF7E6FB019B9B68343319684222A8 +:409C00006A440FAB1800FFF7DCFB019B9A68139B9B00D3180F9A1A60139B0133139342236B441B785BB21A1C53B2002B01DA00231A1C53B20F93019B9A68139B9B00D31893 +:409C40000F9A1A6000230F9306E0019B9A68139B9B00D3180F9A1A60139B01331393019B5B68139A9A42F0D342236B441B785BB2002B0ADA42236B4400215956129B0CAAE4 +:409C80000198FFF7BBFB00E0C046119B180015B000BD00B599B0019052236B4400221A7000231793C0235B00169310AB01221A6010AB0D225A6010AB03AA9A6010AB5B6844 +:409CC0009A0003AB002118001EF0C8F8019B18211800F4F755FA03001593159B002B01D000F037FD019B9A68179B9B00D3181B681393019B9B683033196852226A4413AB11 +:409D00001800FFF741FB019B9B685433196852226A4413AB1800FFF737FB019B9B685033196852226A4413AB1800FFF72DFB019B9B685C33196852226A4413AB1800FFF7BC +:409D400040FB019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2B8F +:409D80000CD953236B441B785BB25B42190052226A4413AB1800FFF714FB09E053236B440021595652226A4413AB1800FFF7ECFA019B9B683433196852226A4413AB180015 +:409DC000FFF7E2FA019B9B685833196852226A4413AB1800FFF7D8FA019B9B685C33196852226A4413AB1800FFF7CEFA019B9B683033196852226A4413AB1800FFF7E1FA75 +:409E0000019B9B685033196852226A4413AB1800FFF7D7FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A44127863 +:409E40001A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ABFA09E053236B440021595652226A4413AB1800FFF767 +:409E800083FA019B9B683833196852226A4413AB1800FFF779FA019B9B685C33196852226A4413AB1800FFF76FFA019B9B683433196852226A4413AB1800FFF782FA019BA6 +:409EC0009B685433196852226A4413AB1800FFF778FA019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7010 +:409F000052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF74CFA09E053236B440021595652226A4413AB1800FFF724FA71 +:409F4000019B9B683C33196852226A4413AB1800FFF71AFA019B9B683033196852226A4413AB1800FFF710FA019B9B685033196852226A4413AB1800FFF706FA019B9B68A5 +:409F80005433196852226A4413AB1800FFF7FCF9019B9B683833196852226A4413AB1800FFF70FFA019B9B685833196852226A4413AB1800FFF705FA019B9B685C331968ED +:409FC00052226A4413AB1800FFF7FBF9019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B44002252 +:40A000001A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7CFF909E053236B440021595652226A4413AB1800FFF7A7F9019B9B6854338C +:40A04000196852226A4413AB1800FFF79DF9019B9B685433196852226A4413AB1800FFF793F9019B9B684033196852226A4413AB1800FFF789F9019B9B68343319685222BC +:40A080006A4413AB1800FFF77FF9019B9B683033196852226A4413AB1800FFF775F9019B9B685033196852226A4413AB1800FFF76BF9019B9B685833196852226A4413AB4F +:40A0C0001800FFF761F9019B9B683C33196852226A4413AB1800FFF774F9019B9B685C33196852226A4413AB1800FFF76AF9019B9B685C33196852226A4413AB1800FFF771 +:40A1000060F9019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7053236B441B787F2BAD +:40A140000CD953236B441B785BB25B42190052226A4413AB1800FFF734F909E053236B440021595652226A4413AB1800FFF70CF9019B9B685833196852226A4413AB1800F0 +:40A18000FFF702F9019B9B685833196852226A4413AB1800FFF7F8F8019B9B684433196852226A4413AB1800FFF7EEF8019B9B683833196852226A4413AB1800FFF7E4F865 +:40A1C000019B9B683433196852226A4413AB1800FFF7DAF8019B9B685433196852226A4413AB1800FFF7D0F8019B9B685C33196852226A4413AB1800FFF7C6F8019B9B68C1 +:40A200004033196852226A4413AB1800FFF7D9F8019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052230F +:40A240006B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF7ADF809E053236B440021595652226A4413AB1800FFF785F8019B49 +:40A280009B685C33196852226A4413AB1800FFF77BF8019B9B685C33196852226A4413AB1800FFF771F8019B9B684833196852226A4413AB1800FFF767F8019B9B683C332E +:40A2C000196852226A4413AB1800FFF75DF8019B9B683833196852226A4413AB1800FFF753F8019B9B685833196852226A4413AB1800FFF749F8019B9B68443319685222F1 +:40A300006A4413AB1800FFF75CF8019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A4412781A7052236B4400221A7098 +:40A3400053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FFF730F809E053236B440021595652226A4413AB1800FFF708F8019B9B684C3319689A +:40A3800052226A4413AB1800FEF7FEFF019B9B684033196852226A4413AB1800FEF7F4FF019B9B683C33196852226A4413AB1800FEF7EAFF019B9B685C33196852226A440A +:40A3C00013AB1800FEF7E0FF019B9B684833196852226A4413AB1800FEF7F3FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B681393532337 +:40A400006B4452226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7C7FF09E053236B44002159565222A0 +:40A440006A4413AB1800FEF79FFF019B9B685033196852226A4413AB1800FEF795FF019B9B684433196852226A4413AB1800FEF78BFF019B9B684033196852226A4413AB20 +:40A480001800FEF781FF019B9B684C33196852226A4413AB1800FEF794FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B443F +:40A4C00052226A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF768FF09E053236B440021595652226A4440 +:40A5000013AB1800FEF740FF019B9B685433196852226A4413AB1800FEF736FF019B9B684833196852226A4413AB1800FEF72CFF019B9B684433196852226A4413AB180006 +:40A54000FEF722FF019B9B685033196852226A4413AB1800FEF735FF019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B445222DC +:40A580006A4412781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF709FF09E053236B440021595652226A4413AB94 +:40A5C0001800FEF7E1FE019B9B685833196852226A4413AB1800FEF7D7FE019B9B684C33196852226A4413AB1800FEF7CDFE019B9B684833196852226A4413AB1800FEF723 +:40A60000C3FE019B9B685433196852226A4413AB1800FEF7D6FE019B9A68179B9B00D318139A1A60179B01331793019B9A68179B9B00D3181B68139353236B4452226A441E +:40A6400012781A7052236B4400221A7053236B441B787F2B0CD953236B441B785BB25B42190052226A4413AB1800FEF7AAFE09E053236B440021595652226A4413AB1800C9 +:40A68000FEF782FE019B9B685C33196852226A4413AB1800FEF778FE019B9B685033196852226A4413AB1800FEF76EFE019B9B684C33196852226A4413AB1800FEF764FE29 +:40A6C000019B9B685833196852226A4413AB1800FEF777FE019B9A68179B9B00D318139A1A60179B0133179352236B441B785BB21A1C53B2002B01DA00231A1C53B21393B7 +:40A70000019B9A68179B9B00D318139A1A600023139306E0019B9A68179B9B00D318139A1A60179B01331793019B5B68179A9A42F0D352236B441B785BB2002B0ADA5223E9 +:40A740006B4400215956169B10AA0198FEF756FE00E0C046159B180019B000BD00B593B00190019B5B68072B01D8002367E00DAB01221A60019B5B68DA1F0DAB5A600DABA5 +:40A780005B68092B01D92F4B59E00DAB03AA9A6003AB2822002118001DF060FB019B9B681C3319000DAB5B689A0003AB18001DF0C3FA0DAB1F211800F4F7BEFA0300119317 +:40A7C000119B002B35D10DAB5B685A1C0DAB5A60019B0022FF211800F3F740FF03001193119B002B27D10823109309E0019B9A68109B9B00D31800221A60109B01331093E0 +:40A80000019B5A68109B9A42F0D80DA90DAB13221800F5F73BFE03001193119B002B0CD10DAA0199019B1800F4F75CFC0300119304E0C04602E0C04600E0C046119B1800C5 +:40A8400013B000BD80B0FFFF10B5A8B00190019B5B680E2B01D800239CE023AB01221A60019B5B680E3B1A0023AB5A6023AB5B680E2B01D9494B8DE023AB11AA9A6011ABD3 +:40A880003C22002118001DF0E9FA019B9B683833190023AB5B689A0011AB18001DF04CFA0E23269309E0019B9A68269B9B00D31800221A60269B01332693019B5A68269B7B +:40A8C0009A42F0D823AA0199019B1800F4F77CFD03002793279B002B52D120AB23AA13CA13C320AB03AA9A6011A903AB382218001DF022FA20ABE0211800F4F71DFA0300BF +:40A900002793279B002B3DD120AA0199019B1800F4F75AFD03002793279B002B34D10723269307E011AB269A92000021D150269B0133269323AB5A68269B9A42F2D820AAD0 +:40A9400023A923AB1800F4F73FFD03002793279B002B1BD123AB0F225A6023ABE0211800F4F746F903002793279B002B10D123AA0199019B1800F4F727FD0300279308E044 +:40A98000C04606E0C04604E0C04602E0C04600E0C046279B180028B010BDC04680B0FFFF00B585B00390039BE02200219950039BE4331800C8235B001A0000211DF04EFA70 +:40A9C000039B00221A60039B0833180009F04DFC07490398012300934023002200F02AF8039A9D239B000021D150C04605B000BDA5AE011000B583B00190019B0833180033 +:40AA000009F03FFC019A9D239B000021D150019BE02200219950019BE4331A00C8235B001900100004F00AF9019B00221A60C04603B000BD86B0039002910192009300237C +:40AA40000593039BE0229B580493049B132B03DD3E235B42059332E00399049AE42013009B009B189B00CB181B18029A1A600399049AE82013009B009B189B00CB181B18F5 +:40AA8000019A1A600399049AF02013009B009B189B00CB181B18009A1A600399049AF42013009B009B189B00CB181B18069A1A60039BE0229B585A1C039BE0215A50059BA5 +:40AAC000180006B0704700B599B00390019200930B236B440A1C1A70009B1793019B169300231593179B402B0ED904AA0099019800230CF0EDFA03001593159B002B34D1C3 +:40AB000004AB16934023179314AB0B226A4412781A70179BDAB214AB5A70039B1B68002B0AD1039B08330021180009F0C9FB03001593159B002B1BD1039B01221A60039BFA +:40AB4000083314A9022218000BF0DAFC03001593159B002B0BD1039B0833179A169918000BF0CEFC0300159302E0C04600E0C04604AB4021180004F061F8159B180019B0D9 +:40AB800000BD00B587B0039002910192019B029A03981421FFF797FF03000593059B180007B000BD10B5A6B0019000232393019BE0229B58002B02D140235B426DE0002354 +:40ABC000249356E00199249AF42013009B009B189B00CB181B181B68012B01D101232393002302930199249AE42013009B009B189B00CB181B181C680199249AE820130072 +:40AC00009B009B189B00CB181B18186802AB03A98022A04703002593259B002B36D1029B002B23D0249BD9B2029B03AA0198FFF74AFF03002593259B002B01D0259B2CE09C +:40AC40000199249AEC2013009B009B189B00CB181B181A68029BD1180198249AEC2413009B009B189B00C3181B191960249B01332493019BE0229A58249B9A42A2DC239B5A +:40AC8000002B04D13D235B42259300E0C04603AB8021180003F0D2FF259B180026B010BD10B59AB003900291019200231893039B1593019B402B02D93C235B42C0E0159A4A +:40ACC0009D239B00D358002B0FD1159A9D239B000121D150159B180000F0B5F803001993199B002B01D0199BAAE0189B5A1C189280225200934203DD3C235B42199399E0D7 +:40AD0000159B1800FFF74EFF03001993199B002B00D086E001231693002317931AE01599179AEC2013009B009B189B00CB181B1819681598179AF02413009B009B189B0044 +:40AD4000C3181B191B68994201D200231693179B01331793159BE0229A58179B9A42DEDC169B002BC1D005AB4022002118001DF075F8159B083305AA110018000BF04CFC13 +:40AD800003001993199B002B4DD1159B0833180009F077FA159B0833180009F066FA159B08330021180009F08BFA03001993199B002B3AD1159B083305A9402218000BF0D5 +:40ADC0009FFB03001993199B002B30D105AA05A8002340210CF07CF903001993199B002B27D1002317930DE01599179AEC2013009B009B189B00CB181B1800221A60179BCE +:40AE000001331793159BE0229A58179B9A42EBDC019A05A9029B18001CF08EFF0023199308E0C04606E0C04604E0C04602E0C04600E0C04605AB4021180003F0FFFE199B76 +:40AE400018001AB010BD00B595B001903F235B42139303A9019B40221800FFF721FF03001393139B002B01D0139B18E003AB40211800F1F7A2F9031E02DA3F235B420EE08E +:40AE800003AB4022002118001CF0E8FF03A9019B40221800FFF775FE03001393139B180015B000BD00B597B003900291019200934023159305AB4022002118001CF0CEFFC3 +:40AEC00005AB40211800F1F765F9031E02DA3C235B420FE0019A159B9A4201D2019B1593159A05A9029B18001CF026FF009B159A1A600023180017B000BD00B583B001907E +:40AF0000C8235A00019B002118001CF0A7FFC04603B000BDF0B5A7B011900023129313AB1022002118001CF099FF119813AA13A912AB009313001022F8F768FA03001F93E0 +:40AF40001F9B002B01D01F9B23E113AB1B781A0613AB5B781B041A4313AB9B781B021A4313ABDB7813431C9300231D9313AB1B791A0613AB5B791B041A4313AB9B791B023C +:40AF80001A4313ABDB7913431A9300231B931C9B1D0000231C001A9B234320931B9B2B43219313AB1B7A1A0613AB5B7A1B041A4313AB9B7A1B021A4313ABDB7A13431C93AE +:40AFC00000231D9313AB1B7B1A0613AB5B7B1B041A4313AB9B7B1B021A4313ABDB7B13431A9300231B931C9B1B000593002304931A9B0499059A0800034322931B9B1343A0 +:40B000002393119B88331A00229B239C13605460119A84235B00D218209B219C13605460119BC8331A000023002413605460119A002300249364D4640423259350E0229AE5 +:40B04000012313401A005B01D21A13061A001992209BDB07079300230693239BDA07229B5E081643239B5F080699079A0B003343229313003B432393219BDA07209B5B086E +:40B080000293029B13430293219B5B080393199B089300230993089B1B000B9300230A93029C039D23000A990B9A0800434020932B0053402193119A259B0933DB00D218CF +:40B0C000229B239C13605460119A259B1933DB00D218209B219C13605460259B5B102593259B002BABDC022325934EE0119B48331A00259BDB00D3181893119BC8331A00FF +:40B10000259BDB00D3181793179B5C681B6820932194189B5C681B6822932394012324932CE0249BDB00179AD2181199249B1933DB00CB185C681B68209959400C91219999 +:40B1400061400D910C9B0D9C13605460249BDB00189AD2181199249B0933DB00CB185C681B68229959400E91239961400F910E9B0F9C13605460249B01332493249A259BA6 +:40B180009A42CEDB259B5B002593259B082BADDD0023180027B0F0BD00B587B00390019200930B236B440A1C1A7000990B236B441B7801221800F7F7B9FF03000593059BA4 +:40B1C000002B02D114235B4230E0059B5B69102B02D014235B4229E0039B1800F7F7E8FF039B059A11001800F8F70CF803000493049B002B01D0049B18E00398009A0199A0 +:40B200000123F8F72FF803000493049B002B01D0049B0BE0039B1800FFF77CFE03000493049B002B01D0049B00E00023180007B000BD000070B5B2B02990289127920023B7 +:40B240003193289B0F331A78172126AB9C4661440F2313400B70172326AA944663441B78299A1933DB00D3185C681B682E932F94172326AA944663441B78299A0933DB002D +:40B28000D3185C681B682C932D940F233193E3E0319A289B9B181A78172126AB9C4661440F2313400B70319A289B9B181B78162226A98C4662441B091370319B0F2B61D08F +:40B2C0002C9B2D9CDAB2152126AB9C4661440F2313400B702E9B1B071193002310932D9B1A072C9B1D0915432D9B1E091099119A0B002B432C93130033432D932F9B1A0772 +:40B300002E9B1B0913432E932F9B1B092F93152326AA944663441B78BD4ADB00D3185C681B681B041393002312932E9B1299139A080043402E932F9B53402F93172326AA06 +:40B34000944663441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93172326AA944663441B78299A0933DB00D3185C681B682C9A5A402C922D9A62408A +:40B3800013002D932C9B2D9CDAB2152126AB9C4661440F2313400B702E9B1B070F9300230E932D9B1A072C9B1B090093009B134300932D9B1B0901930E9B0099019A08006F +:40B3C00003432C930F9B13432D932F9B1A072E9B1B0913432E932F9B1B092F93152326AA944663441B788A4ADB00D3185C681B681B041593002314932E9B1499159A08002E +:40B4000043402E932F9B53402F93162326AA944663441B78299A1933DB00D3185C681B682E9A5A402E922F9A624013002F93162326AA944663441B78299A0933DB00D3182C +:40B440005C681B682C9A5A402C922D9A624013002D93319B013B3193319B002B00DB17E72F9B1B0E1693002317936B4658229B181B78279A1370279B5A1C2F9B1B0C18939D +:40B48000002319936B4660215B181B781370279B9A1C2F9B1B0A1A9300231B936B4668215B181B781370279BDA1C2F9B1B001C9300231D936B4670215B181B781370279BAE +:40B4C000191D2F9B1A022E9B1B0E0293029B134302932F9B1B0E03936B461B7A0B70279B591D2F9B1A042E9B1B0C0493049B134304932F9B1B0C05936B461B7C0B70279B96 +:40B50000991D2F9B1A062E9B1B0A0693069B134306932F9B1B0A07936B461B7E0B70279BDA1D2E9B2F9CDBB21370279B08331A002D9B1B0E1E9300231F936B4678215B185E +:40B540001B781370279B09331A002D9B1B0C2093002321936B4680215B181B781370279B0A332D9A120A2292002223926A468821521812781A70279B0B332D9A1200249276 +:40B58000002225926A469021521812781A70279B0C332D9A12022C99090E08910899114308912D9A120E09926A462021521812781A70279B0D332D9A12042C99090C0A91AF +:40B5C0000A9911430A912D9A120C0B926A462821521812781A70279B0E332D9A12062C99090A0C910C9911430C912D9A120A0D926A463021521812781A70279B0F331A00B4 +:40B600002C9B2D9CDBB21370C04632B070BDC046682F0410F0B597B00B900A910992089300230D93089B002B15D0089B029300230393039B5E0F00231F0033003B430AD10C +:40B640001D9B049300230593059B5C0F00231D0023002B4302D014235B421CE10B9B6933FF331022002118001CF0F8FB0B9B7933FF331022002118001CF0F0FB0B9AC423F1 +:40B680005B000A99D1500B9AA4235B00D21800230024136054600B9AA8235B00D2180023002413605460089B0C2B0DD10B9B6933FF33089A099918001CF03EFB0B9A78231C +:40B6C000FF330121D15485E00EAB1022002118001CF0C4FB089BDB001B0EDAB20EAB1A73089BDB001B0CDAB20EAB5A73089BDB001B0ADAB20EAB9A73089BDBB2DB00DAB2C1 +:40B700000EABDA73099B149337E0089B102B00D9102313930023159317E00B99B4235B00159A8A18D3181A781499159BCB181B785340D8B20B99B4235B00159A8A18D318A9 +:40B74000021C1A70159B01331593159A139B9A42E3D30B9B6933FF3319000B9B6933FF331A000B9B1800FFF765FD089A139BD31A0893149A139BD3181493089B002BC4D14C +:40B780000023159317E00B99B4235B00159A8A18D3181A780EA9159BCB181B785340D8B20B99B4235B00159A8A18D318021C1A70159B01331593159B0F2BE4D90B9B6933FA +:40B7C000FF3319000B9B6933FF331A000B9B1800FFF730FD0B980B9B6933FF3319000B9B5933FF331A000DAB009313001022F7F70DFE03001293129B002B01D0129B4AE030 +:40B800001D9B0693002307930B9AA8235B00D3180699079A19605A601C9B149337E01D9B102B00D9102313930023159317E00B99BC235B00159A8A18D3181A781499159BEC +:40B84000CB181B785340D8B20B99BC235B00159A8A18D318021C1A70159B01331593159A139B9A42E3D30B9B7933FF3319000B9B7933FF331A000B9B1800FFF7DBFC1D9A7B +:40B88000139BD31A1D93149A139BD31814931D9B002BC4D10023180017B0F0BD70B594B00990089107920693069B119300230A93069A079B9A4209D9069A079BD31A1A000D +:40B8C000089B9A4202D214235B42EAE0099AA4235B00D3185C681B68089A0292002203920299039A5B1854410999A42252008A1811685268A24215D801D1994212D8099A99 +:40B90000A4235B00D3185C681B68089A0492002205920499059A5B1854410F2C02D804D1203302D914235B42BBE0099AA4235B00D3185C681B68089A1500002216005B199D +:40B9400074410999A42252008A1813605460079B1293A1E0089B102B00D910231093102313931BE0139B013B0999B4225200C9188A1812780132D0B20999B4225200C91845 +:40B980008A18011C11700999B4225200CB189B181B78002B06D1139B013B1393139B0C2BE0D800E0C0460998099B6933FF3319000BAA0AAB009313001022F7F727FD0300BC +:40B9C0000F930F9B002B01D00F9B6AE00023139346E0099AC4235B00D358002B14D10999BC235B00139A8A18D3181A781299139BCB181B785340D8B20999BC235B00139ADF +:40BA00008A18D318021C1A70119A139BD3180BA9139A8A1811781298139A821812784A40D2B21A70099AC4235B00D358012B14D10999BC235B00139A8A18D3181A7811997B +:40BA4000139BCB181B785340D8B20999BC235B00139A8A18D318021C1A70139B01331393139A109B9A42B4D3099B7933FF331900099B7933FF331A00099B1800FFF7DAFBC6 +:40BA8000089A109BD31A0893129A109BD3181293119A109BD3181193089B002B00D059E70023180014B070BD70B5A8B01D901C911B921D9AA4235B00D3185C681B68590FE4 +:40BAC000E2000A432592DB0024931D9AA8235B00D3185C681B68590FE2000A432392DB0022931B9B102B02D81B9B032B02D814235B4216E11D9B5933FF3319001B9B1C9896 +:40BB00001A001CF019F9249A259B1A4304D1229A239B1A4300D103E11EAB1022002118001CF09CF9239B1B0E0A9300230B936B4628229B181B781EAA1370239B1B0C0C9367 +:40BB400000230D936B4630229B181B781EAA5370239B1B0A0E9300230F936B4638229B181B781EAA9370239B1B001093002311936B4640229B181B781EAAD370239B1A0248 +:40BB8000229B1D0E1543239B1E0EEBB21EAA1371239B1A04229B1B0C0093009B13430093239B1B0C01936B461B781EAA5371239B1A06229B1B0A0293029B13430293239BB7 +:40BBC0001B0A03936B461B7A1EAA9371229B239CDBB21EAAD371259B1B0E1293002313936B4648229B181B781EAA1372259B1B0C1493002315936B4650229B181A781EABD4 +:40BC00005A72259B1B0A1693002317936B4658229B181A781EAB9A72259B1B001893002319936B4660229B181A781EABDA72259B1B02249A120E0492049A1A430492259B14 +:40BC40001B0E05936B461A7C1EAB1A73259B1B04249A120C0692069A1A430692259B1B0C07936B461A7E1EAB5A73259B1B06249A120A0892089A1A430892259B1B0A0993AF +:40BC80006B4620229B181A781EAB9A73249B259CDAB21EABDA730023279317E01D99BC235B00279A8A18D3181A781EA9279BCB181B785340D8B21D99BC235B00279A8A1841 +:40BCC000D318021C1A70279B01332793279B0F2BE4D91D9B7933FF3319001D9B7933FF331A001D9B1800FFF7A5FA0023279313E01C9A279BD3181C99279A8A1811781D9CF7 +:40BD0000BC22520027982018821812784A40D2B21A70279B01332793279A1B9B9A42E7D30023180028B070BD10B588B005900491039202930A9C029A049905980C9B01931B +:40BD40000B9B00932300FFF765FC03000793079B002B01D0079B1AE00E9B0D9A03990598FFF79CFD03000793079B002B01D0079B0DE00F9A1099059B1800FFF795FE0300C1 +:40BD80000793079B002B01D0079B00E00023180008B010BD00B595B00B900A910992089309990A9A0B980DAB0693199B05931B9B04931A9B0393179B0293169B0193089B56 +:40BDC00000930B000021FFF7AFFF03001193119B002B01D0119B26E0002312930023139310E0189A139BD3181A780DA9139BCB181B785340DBB21A00129B13431293139B17 +:40BE000001331393139A199B9A42EAD3129B002B08D00A9A1B9B1100180002F00FFF12235B4200E00023180015B000BD00B583B00190019B1800F7F7BBF9C8235A00019BDC +:40BE40001100180002F0FAFEC04603B000BD00B583B00190019B6422002118001BF0FEFFC04603B000BD00B597B0039002910192039B1B68180000F00FFC03001593029BB6 +:40BE8000002B04D0019B002B01D0022200E0012253236B441A7014AB00221A703BE0039B180000F0C5FB0398039B0C33159A190000F032FB039B14A90122180000F02CFB1F +:40BEC00053236B441B78022B05D1039B019A0299180000F021FB039B04AA1100180000F03DFB039B159A04A9180000F05FFA0398039B0C33159A190000F00EFB039A039B23 +:40BF00000C331900100000F029FB14AB1B780133DAB214AB1A7014AB1B7853226A4412789A42BCD8C04617B000BD30B587B00390029101920093039B02990122180000F065 +:40BF40008DF903000593059B002B01D0059B21E0039C039B0C331D00029B180000F09CFB03001A002900200000F020FA039B0C331C00029B180000F08FFB03001A000121B7 +:40BF800020001BF06BFF009A0199039B1800FFF76AFF0023180007B030BD10B5E6B0039002910192019A80235B009A4207D8039B1A6D019BD218C0235B009A4202D9052394 +:40BFC0005B4233E0C0235A0005AB002118001BF045FF039BDC6D039B186E039B1A6D05AB1900A047031E02D009235B421EE0039B1B6D6593029B002B0ED0019B002B0BD01C +:40C0000005AA659BD318019A029918001BF094FE659A019BD3186593659A05A9039B1800FFF721FF039B0122DA640023180066B010BD00B58BB00390029101920093039B8D +:40C040000793079B1B68180000F026FB03000693019B0993029B0893019A8023DB009A4202D903235B4268E00C9A80235B009A4202D905235B4260E0079BDB6D002B18D094 +:40C08000079B5B6D012B05D0079BDA6C079B9B6D9A420EDD0C9A0099079B1800FFF77DFF03000593059B002B01D0059B45E000230C93009B002B31D00C9B002B2ED00C9A56 +:40C0C0000099079B1800FFF7CEFE27E0069A099B934200D913000493079B180000F0A8FA0798079B0C33069A190000F015FA079A079B0C331900100000F030FA079B0C335E +:40C100001900049A089B18001BF016FE089A049BD3180893099A049BD31A0993099B002BD4D10C9A0099079B1800FFF79CFE079BDB6C5A1C079BDA64002318000BB000BDED +:40C1400000B589B0059004910392059B0793039A04990798002300930023FFF76AFF03000693069B180009B000BD00B583B00190019B002B09D0019B180000F03DF8019B6E +:40C180006421180002F05AFD00E0C04603B000BD82B002006B4607331A706B4607331B78062B0AD002DC052B05D00CE0072B06D0082B06D007E0064B06E0064B04E0064B8D +:40C1C00002E0064B00E00023180002B07047C0460830041038300410683004109830041000B583B00190019B0C22002118001BF035FEC04603B000BD00B583B00190019BED +:40C20000002B27D0019B1B68002B23D0019B5B68002B06D0019B1B685A6A019B5B6818009047019B9B68002B0ED0019B9A68019B1B68DB685B001900100002F0FFFC019B59 +:40C240009B6818001BF03EFA019B0C21180002F0F5FC00E0C04603B000BD000000B585B0039002910192029B002B02D0039B002B01D1164B27E0029B1B6A98470200039B65 +:40C280005A60039B5B68002B01D1114B1BE0019B002B14D0029BDB68190002201AF08EFE0200039B9A60039B9B68002B07D1029B5A6A039B5B6818009047054B03E0039BF3 +:40C2C000029A1A600023180005B000BD00AFFFFF80AEFFFF00B583B00190019B002B03D0019B1B68002B01D1064B07E0019B1B681A69019B5B68180090470300180003B07D +:40C3000000BDC04600AFFFFF10B584B0039002910192039B002B03D0039B1B68002B01D1074B09E0039B1B685C69039B5B68019A02991800A0470300180004B010BDC046C8 +:40C3400000AFFFFF00B583B001900091019B002B03D0019B1B68002B01D1074B08E0019B1B689A69019B5B680099180090470300180003B000BDC04600AFFFFF00B585B0E5 +:40C380000390029101920093039B002B01D1064B06E0039BDB69009A0199029898470300180005B000BDC04600AFFFFF10B598B0039002910192039B002B07D0039B1B6809 +:40C3C000002B03D0039B9B68002B01D1514B9EE0039B1B68DB681A00019B9A422DD2039B1B681A69039B5B681800904703001793179B002B00D07DE0039B1B685C69039B63 +:40C400005B68019A02991800A04703001793179B002B71D1039B1B689A69039B5B6804A91800904703001793179B002B66D1039B1B689B68019304AB0293039B9B68159311 +:40C44000039B9A68039B1B68DB68D3181493039B1B68DB681A00159B362118001BF0FEFC039B1B68DB681A00149B5C2118001BF0F5FC002316931EE0159A169BD318159903 +:40C48000169A8A1811780298169A821812784A40D2B21A70149A169BD3181499169A8A1811780298169A821812784A40D2B21A70169B01331693169A019B9A42DCD3039BC0 +:40C4C0001B681A69039B5B681800904703001793179B002B14D1039B1B685C69039B5868039B1B68DB681A00159B1900A0470300179306E0C04604E0C04602E0C04600E0BA +:40C50000C04604AB4021180002F098FB179B180018B010BD00AFFFFF10B584B0039002910192039B002B07D0039B1B68002B03D0039B9B68002B01D1074B09E0039B1B68D1 +:40C540005C69039B5B68019A02991800A0470300180004B010BDC04600AFFFFF10B594B001900091019B002B07D0019B1B68002B03D0019B9B68002B01D12C4B52E0019B4A +:40C580009A68019B1B68DB68D3181393019B1B689A69019B5B6802A91800904703001293129B002B01D0129B3CE0019B1B681A69019B5B681800904703001293129B002BE1 +:40C5C00001D0129B2EE0019B1B685C69019B5868019B1B68DB681A00139B1900A04703001293129B002B01D0129B1BE0019B1B685C69019B5868019B1B689B681A0002AB23 +:40C600001900A04703001293129B002B01D0129B08E0019B1B689A69019B5B680099180090470300180014B010BDC04600AFFFFF10B584B00190019B002B07D0019B1B6865 +:40C64000002B03D0019B9B68002B01D1114B1DE0019B9B680393019B1B681A69019B5B681800904703000293029B002B01D0029B0CE0019B1B685C69019B5868019B1B6889 +:40C68000DB681A00039B1900A0470300180004B010BDC04600AFFFFF82B00190019B002B01D1002302E0019B9B68DBB2180002B0704782B00190019B002B01D1002301E0C2 +:40C6C000019B1B78180002B0704700B583B00190019B0121180005F08BFE0300180003B000BD00B585B0039002910192019A0299039B180007F088FB0300180005B000BD9C +:40C7000000B583B001900091009A019B1100180007F0F3FB0300180003B000BD00B585B0039002910192019A02990398012307F068FD0300180005B000BD00B583B06C212A +:40C7400001201AF03BFC03000193019B002B03D0019B180005F021FE019B180003B000BD00B583B00190019B180005F022FE019B18001AF0A7FFC04603B000BD00B583B036 +:40C7800001900091009A019B1100180005F020FEC04603B000BD00B583B001900091009A019B1100180005F087FE0300180003B000BD00B583B00190019B0021180005F0BE +:40C7C00017FE0300180003B000BD00B585B0039002910192019A02990398002307F011FD0300180005B000BD00B583B00190019B0121180007F064FD0300180003B000BD3E +:40C8000000B585B0039002910192019A0299039B180009F075FE0300180005B000BD00B583B001900091009A019B1100180009F0F3FE0300180003B000BD00B585B0039015 +:40C8400002910192019A0299039801230AF040FC0300180005B000BD00B583B0D82101201AF0ACFB03000193019B002B03D0019B180007F0FAFC019B180003B000BD00B57C +:40C8800083B00190019B180007F0FBFC019B18001AF018FFC04603B000BD00B583B001900091009A019B1100180007F0F9FCC04603B000BD00B583B001900091009A019BBC +:40C8C0001100180007F0A6FD0300180003B000BD00B583B00190019B0021180007F0F0FC0300180003B000BD00B585B0039002910192019A0299039800230AF0E9FB0300B6 +:40C90000180005B000BD000000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A00B3 +:40C940001BF0D4F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC0464C3A041000B585B001900091019B1800FFF7C6FF0300039357 +:40C98000039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B42 +:40C9C0001A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C0464C3A041000B585B00190164B0393039B0293039B40 +:40CA0000002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1039B09E0039B14330393039B0293029B56 +:40CA40001B68002BE3D10023180005B000BDC0469C3A041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A7000231800A1 +:40CA800005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593A8 +:40CAC000059B1B68002BE7D12E235B42180006B07047C0469C3A041086B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029BED +:40CB00001A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C046D83A041000B583B00190019B0C22002118001BF08FF9C046BF +:40CB400003B000BD10B58EB00590049103920293059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D1644BC2E0039A029B110018001BF0CEFED2 +:40CB800003000B930B9B002B03D00B9A0D9B9A4201D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B01330D930D9B1B780D2B02D10D9B0133C3 +:40CBC0000D930D9B1B780A2B11D10D9B01330D930B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454B83E00C9B01330C930C9B1B780D2B02D17A +:40CC00000C9B01330C930C9B1B780A2B02D10C9B01330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36490D9B162218001BF059F8031E01D1334BE9 +:40CC40005BE00D9A0B9B9A4201D3314B55E00B9A0D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B274A9446634440E0079B190001201AF027 +:40CC80009DF903000893089B002B01D1214B34E007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED0079A089B1100180001F0C0FF089B180087 +:40CCC0001AF000FD099B124A9446634415E00A9B002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A1A60079A059B5A60002318000EB010BD9C +:40CD000080EBFFFF80EFFFFF3C3B041000ECFFFF00EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B681900100001F083FF019B1B6818001AF0C2FC9D +:40CD4000019B9B6818001AF0BDFC019B0C21180001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A6000E0C04602B0704700B583B00190019B0A +:40CD8000002B10D0019B1B68002B0CD0019B1B689A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B002006B4607331A706B4607331B78022B0AD034 +:40CDC00002DC012B05D00CE0032B06D0042B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C0468C3B0410BC3B0410EC3B04101C3C041000B583B089 +:40CE000001900091019B002B06D0009B002B03D0019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D1054B03E0019B009A1A600023180003B077 +:40CE400000BDC04680C1FFFF80C0FFFF82B00190019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B002006B4607331A706B4607331B78012B6E +:40CE800004D06B4607331B78062B01D1012300E00023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180005B000BD00B58DB00790059204931B2328 +:40CEC0006B440A1C1A70079B0B930B9B180002F08AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B01931B236B441B78009300230022002104F0AF +:40CF000077FD03000993099B002B01D0099B06E00F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB00790059204931B236B440A1C1A70079BDA +:40CF40000993099B180002F04EFD02000D9B1A600F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA030018000BB000BD00B58BB00790069154 +:40CF800005920493079B0993099B180002F02BFD0200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9B0093012303F0FCFE030018000BB000BD28 +:40CFC00080BFFFFF00B58BB00790069105920493079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE00F9A0E990998049B0293069B0193059BD7 +:40D000000093002303F0E8FA030018000BB000BD00BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BD00B583B0AC21012019F0C0FF0300019392 +:40D04000019B002B05D0019B00220021180002F0A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFBC04603B000BD000082B001900091009B03 +:40D0800001221A70009B0C4A5A60019B08331A00009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A60C04602B07047C046543B04105C3B0410E3 +:40D0C00082B002006B4607331A706B4607331B78022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E00023180002B0704782B00190019B9B6D180002B02B +:40D10000704710B5B2B005900392029313236B440A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B0ED1029C039A13236B44197806A8359BC9 +:40D140000193349B0093230000F0A4F80300319306AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1C1A7008AB1800F8F7F8F9079A08AB110050 +:40D180001800F8F7BFF903003393339B002B12D1049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F093F80300339308AB1800F8F7E0F9339B3A +:40D1C000180034B010BD00B583B001900091009A019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE03000193019B002B03D0019B1800F8F75AFAA0 +:40D20000019B180003B000BD00B583B00190019B1800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70009B054A5A60019B88331A00009B9A6022 +:40D24000C04602B07047C046683B041082B002006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E00023180002B0704782B002006B4607331A708B +:40D280006B4607331B78043B5A425341DBB2180002B0704710B588B005900392029313236B440A1C1A700A9C029A039905980B9B00932300F8F798F803000793079B044A3F +:40D2C000934201D1034B00E0079B180008B010BD00B4FFFF00C7FFFF10B588B00790059204931B236B440A1C1A70049C059A1B236B44197807980D9B03930C9B02930B9BC8 +:40D3000001930A9B00932300F8F74EF80300180008B010BD00B583B0AC21012019F04EFE03000193019B002B03D0019B1800F8F71CF9019B180003B000BD00B583B0019078 +:40D34000019B1800F8F71BF9019B18001AF0BAF9C04603B000BD82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B07047000000B587B011 +:40D38000039002910192029A039B1B68D31A002B01DC1B4B30E0039B1B681B781A00019B1A60019B1B68062B01D0164B24E0019B1A1D019B1B6802990398F0F77DF903009A +:40D3C0000593059B002B04D0059B0F4A9446634412E0039B1A68019B9A60039B1A68019B5B68D218039B1A60039B1A68029B9A4201D0064B00E00023180007B000BDC04603 +:40D40000A0C2FFFF9EC2FFFF00C3FFFF9AC2FFFF00B585B001900091019B1B68062B0AD10B226A44019B11001800FFF713FB031E03D0124B1EE0124B1CE0009B1B78002B37 +:40D4400008D0009B1A780B236B441B789A4201D00B4B0FE00B236B441A78009B11001800FBF702FF03000393039B002B01D0039B00E00023180005B000BDC04600C6FFFFF7 +:40D4800000C3FFFF10B586B00390029101920198019B88331900039B1C68029A039B1B68D31A2200F8F796FA03000593059B002B08D1019A019B883319001000FBF7D0FA6B +:40D4C00003000593039B029A1A60059B180006B010BD000000B58FB00B900A9109920CAA0A990B983023F0F7E7F803000D930D9B002B04D00D9B454A9446634482E00B9BBE +:40D500001A680C9BD2180A9B9A4201D0404B79E00CAA0A990B980223F0F7CEF803000D930D9B002B04D00D9B384A9446634469E00B9B19680C9A09980023069300230593B1 +:40D540000023049300230393002302930023019300230093002301F005FF03000D930D9B002B01D0294B4DE00B9B1A680C9BD2180B9B1A600CAA0A990B980223F0F79CF89E +:40D5800003000D930D9B002B04D00D9B1F4A9446634437E00B9B1B680C9A099806920593002304930023039300230293002301930023009300230022002101F0D3FE030015 +:40D5C0000D930D9B002B01D0104B1BE00B9B1A680C9BD2180B9B1A60099B180001F0B0FF031E05D1099B180002F004FA031E01D0064B07E00B9B1A680A9B9A4201D0044BC6 +:40D6000000E0002318000FB000BDC04600C5FFFF9AC4FFFF00B589B00390029101920093009B0C22002118001AF018FC009B04AA02990398F0F7F1F803000793079B002B1B +:40D6400004D0079B114A944663441CE0019A04AB11001800FFF78AF9031E01D00C4B12E0019B1B78012B0DD1009B1B68052B03D0009B1B68002B03D1009B5B68002B01D064 +:40D68000024B00E00023180009B000BD80C5FFFF80C3FFFF00B58DB003900291019217236B4400221A7009AA029903983023F0F703F803000B930B9B002B04D00B9B4E4A26 +:40D6C0009446634495E0039B1A68099BD318029306AB17226A4402990398FFF79BFF03000B930B9B002B01D00B9B82E009AA0299039B1800F0F769F803000B930B9B002B89 +:40D7000004D00B9B3D4A9446634472E0039B1A68099BD218029B9A4201D0394B69E017236B441B781800FFF741FB03000A930A9B002B01D1334B5CE00A9A019B1100180025 +:40D74000FFF75CFB03000B930B9B002B01D00B9B4FE017236B441B78012B0DD1019B18685968FFF7F8FD02000299039B1800FFF7B1FE03000B932AE017236B441B78032BA9 +:40D7800004D017236B441B78022B1ED1019B18685968FFF7E9FD03001A0006AB11001800FFF736FE03000B930B9B002B0FD1019B18685968FFF7D8FD02000299039B1800D6 +:40D7C000FFF760FE03000B9301E00E4B0B930B9B002B06D1039B1A68029B9A4201D0084B0B930B9B002B03D0019B1800FFF7C4FA0B9B18000DB000BD00C3FFFF00C5FFFF91 +:40D800009AC4FFFF80C3FFFF00B595B00B900A9109920CAB1800F0F77DFC0A9B0F930F9A099BD318129310AA12990FA83023EFF743FF03001393139B002B04D0139B9D4AAB +:40D840009446634432E10F9A109BD318129311AA12990FAB1800EFF757FF03001393139B002B04D0139B934A944663441EE1119B002B01D0904B19E110AA12990FA802239D +:40D88000EFF71AFF03001393139B002B00D0F5E00F99109A0B9800230693002305930023049300230393002302930023019300230093002301F056FD03001393139B002B55 +:40D8C00000D0DBE00F9A109BD3180F9310AA12990FA80223EFF7F0FE03001393139B002B00D0CBE00F9B109A0B98069205930023049300230393002302930023019300237E +:40D90000009300230022002101F02CFD03001393139B002B00D0B1E00F9A109BD3180F9310AA12990FA80223EFF7C6FE03001393139B002B00D0A1E00F9B109A0B9800213A +:40D940000691002105910492039300230293002301930023009300230022002101F002FD03001393139B002B00D087E00F9A109BD3180F9310AA12990FA80223EFF79CFE57 +:40D9800003001393139B002B00D077E00F99109B0B9800220692002205920022049200220392002202920022019200930B000022002101F0D7FC03001393139B002B5DD126 +:40D9C0000F9A109BD3180F9310AA12990FA80223EFF772FE03001393139B002B4ED10F9B109A0B98002106910021059100210491002103910292019300230093002300221A +:40DA0000002101F0AFFC03001393139B002B35D10F9A109BD3180F930B9B180001F090FD03001393139B002B27D10CAA12990FAB1800EFF7A5FE03001393139B002B1DD1DE +:40DA40000CAA12990FAB1800EFF79AFE03001393139B002B12D10CAA12990FAB1800EFF78FFE03001393139B002B07D10F9A129B9A4203D0114B139300E0C0460CAB1800D4 +:40DA8000F0F75AFB139B002B0FD0139B0C4A134005D1139B074A94466344139301E0054B13930B9B180003F0DBFF139B180015B000BDC04600C3FFFF80C2FFFF9AC2FFFF14 +:40DAC00080FF000010B590B0059004910392049B0693069A039BD3180D930AAA0D9906A83023EFF7E9FD03000F930F9B002B04D00F9B824A94466344FCE0069A0A9BD3186A +:40DB00000D930BAA0D9906AB1800EFF7FDFD03000F930F9B002B04D00F9B784A94466344E8E00B9B012B01D0754BE3E00AAA0D9906A80423EFF7C0FD03000F930F9B002BCC +:40DB400004D00F9B6D4A94466344D3E0059B7C3306990A9A1800F0F7A9FF03000F930F9B002B08D0059B1800F7F71FFE0F9B634A94466344BEE0069A0A9BD318069300238C +:40DB80000E93069A0D9B9A4234D00AAA0D9906A8A023EFF791FD03000F930F9B002B1DD1069A0A9BD11807AA06AB1800FFF7E6FB03000F930F9B002B0AD1059A07AB1100BF +:40DBC0001800FFF725FC03000F930F9B002B11D0059B1800F7F7E9FD0F9B8BE00F9B623308D0059B1800F7F7E0FD0F9B434A944663447FE0069A0D9B9A4246D00AAA0D99B5 +:40DC000006A8A123EFF758FD03000F930F9B002B2FD1069A0A9BD3180C930AAA0C9906AB1800EFF7D2FD03000F930F9B002B04D00F9B324A944663445CE0069A0A9BD218B7 +:40DC40000C9B9A4201D02F4B54E0059A0C9906AB1800FFF717FC03000F930F9B002B02D101230E9311E00F9B274A93420DD0234B40E00F9B623308D0059B1800F7F795FDDF +:40DC80000F9B1E4A9446634434E00E9B002B1ED10598059B88331900059B7C331A00059B28331C0000230193002300932300FAF7CFFC03000F930F9B002B08D0059B180013 +:40DCC000F7F773FD0F9B0D4A9446634412E0059A059B7C3319001000FAF7F6FE03000F930F9B002B05D0059B1800F7F75EFD0F9B00E00023180010B010BDC04600C3FFFFED +:40DD000080C2FFFF9AC2FFFF80B1FFFF00B58FB0039002910192029B0593059A019BD3180C9313236B4400221A7009AA0C9905A83023EFF7C1FC03000D930D9B002B04D09D +:40DD40000D9B584A94466344A9E0059A099BD3180C930AAA0C9905AB1800EFF7D5FC03000D930D9B002B04D00D9B4E4A9446634495E00A9B002B04D00D9B4B4A94466344C8 +:40DD80008DE006AB13226A440C9905A8FFF742FC03000D930D9B002B04D00D9B414A944663447CE009AA0C9905A80423EFF784FC03000D930D9B002B04D00D9B394A9446A1 +:40DDC00063446CE0099B002B01D1384B67E013236B441B781800FEF7E9FF03000B930B9B002B01D1324B5AE00B9A039B11001800FFF704F803000D930D9B002B01D00D9B10 +:40DE00004DE013236B441B78012B14D1039B18685968FFF7A0FA059B099A1900FFF7F4FC03000D930D9B002B38D0039B1800FEF7A3FF0D9B33E013236B441B78022B04D07C +:40DE400013236B441B78032B25D1039B18685968FFF78AFA03001A0006AB11001800FFF7D7FA03000D930D9B002B0ED1039B18685968FFF779FA059B099A1900FFF722FEE0 +:40DE800003000D930D9B002B07D0039B1800FEF773FF0D9B03E0064B01E0C046002318000FB000BD00C3FFFF80C2FFFFA0C2FFFF80C3FFFF10B58EB007900691059204937D +:40DEC00008AB1800FEF732FE059B002B06D0059B013B069AD3181B78002B02D0A24B0D930EE0069CA14AA24908A80BAB0293109B0193049B00932300FEF724FE03000D935E +:40DF00000D9B002B2AD10120FEF750FF03000C930C9A079B11001800FEF770FF03000D930D9B002B10D1079B18685968FFF713FA08AB196808AB5B681A00FFF765FC0300DC +:40DF40000D930D9B002B03D0079B1800FEF714FF08AB1800FEF7E0FE0D9B01E10D9B854A934201D1844BFBE00D9B844A934201D1834BF5E00D9B7C4A934201D00D9BEFE05E +:40DF8000059B002B06D0059B013B069AD3181B78002B02D0744B0D930EE0069C794A7A4908A80BAB0293109B0193049B00932300FEF7C8FD03000D930D9B002B2AD1022078 +:40DFC000FEF7F4FE03000C930C9A079B11001800FEF714FF03000D930D9B002B10D1079B18685968FFF7C0F908AB196808AB5B681A00FFF767FD03000D930D9B002B03D0CF +:40E00000079B1800FEF7B8FE08AB1800FEF784FE0D9BA5E00D9B574A934201D1564B9FE00D9B564A934201D1554B99E00D9B4E4A934201D00D9B93E0059B002B06D0059BB2 +:40E04000013B069AD3181B78002B02D0464B0D930EE0069C4D4A4E4908A80BAB029300230193002300932300FEF76CFD03000D930D9B002B16D108AB196808AB5A68079BC9 +:40E080001800FFF743FE03000D930D9B002B03D0079B1800FEF770FE08AB1800FEF73CFE0D9B5DE00D9B304A934201D00D9B57E0059A0699079B1800FFF728FE03000D936E +:40E0C0000D9B002B01D100234AE0079B1800FEF753FE079B1800FEF740FE0120FEF766FE03000C930C9A079B11001800FEF786FE031E0DD1079B18685968FFF72CF9059A9F +:40E10000069B1900FFF780FB031E01D1002327E0079B1800FEF730FE079B1800FEF71DFE0220FEF743FE03000C930C9A079B11001800FEF763FE031E0DD1079B186859684D +:40E14000FFF712F9059A069B1900FFF7BBFC031E01D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFF4C3C04106C3C041080ECFFFF80C4FFFF00EDFFFF87 +:40E1800000C4FFFF8C3C0410AC3C0410CC3C0410E83C041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D0059B013B069AD3181B78002B02D0704B15 +:40E1C0000F930EE0069C6F4A6F4909A80CAB029300230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D930120FEF7DCFD03000E930E9B002B01D1634B0B +:40E20000BAE00E9A079B11001800FEF7F7FD03000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F802000DAB21001800FFF74DF903000F930F9B79 +:40E24000002B03D0079B1800FEF796FD09AB1800FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002B06D0059B013B069AD3181B78002B02D081 +:40E280003F4B0F930EE0069C414A424909A80CAB029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D930D9A09AB5B68D118079A0DAB1800FFF719 +:40E2C000E9F903000F9309AB1800FEF725FD0F9B52E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD0120FEF75CFD03000E930E9B002B01D1234B6B +:40E300003AE00E9A079B11001800FEF777FD03000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F802000DAB21001800FFF7CCF803000F933B +:40E340000F9B002B01D10F9B16E0079B1800FEF713FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF791F903000F930F9B180010B010BDC046FB +:40E3800080EFFFFF043D0410243D041080C3FFFF443D0410603D04109EC4FFFF82B06B46186059606B465B68180002B0704782B06B46186059606B465B68180002B070472D +:40E3C00000B58DB005900491039200230A9307AB1800EFF79FFE039807AB01930023009300230022002101F0D1F903000B930B9B002B2CD107AA0499059B1800EFF7C2FB8F +:40E4000003000B930B9B002B21DB0B9B0A9AD3180A9307A9039800230193002300930023002201F0B3F903000B930B9B002B0ED107AA0499059B1800EFF7A4FB03000B9385 +:40E440000B9B002B03DB0B9B0A9AD3180A9307AB1800EFF771FE0B9B002B01DA0B9B22E00A9A0499059B1800EFF754FA03000B930B9B002B01DA0B9B15E00B9B0A9AD3185E +:40E480000A930499059B30221800EFF72FFB03000B930B9B002B01DA0B9B04E00B9B0A9AD3180A930A9B18000DB000BD00B5ABB0059004910392002328930398039B883387 +:40E4C000190028AA8523019306AB009313000022F7F7FAF903002993299B002B01D0299B1FE0059B1A68049B9A4208D3059B1B681A00049BD31A1A00289B9A4202D26C23FC +:40E500005B420EE0059B1A68289B5B42D218059B1A60059B1B68289A06A9180019F00CFC289B18002BB000BD00B589B003900291019200230793019B1B7804AA05A9180093 +:40E54000FEF7A0FA03000693069B002B01D0069B11E0059A049B02990398EFF7BAFB03000693069B002B01DA069B04E0069B079AD3180793079B180009B000BD00B587B087 +:40E5800003900291019200230593019B1800FEF75DFC0300012B16D1019B18685968FFF7FDFE02000299039B1800FFF709FF03000493049B002B01DA049B25E0049B059A8F +:40E5C000D31805931FE0019B1800FEF73FFC0300022B16D1019B18685968FFF7E8FE02000299039B1800FFF761FF03000493049B002B01DA049B07E0049B059AD3180593B6 +:40E6000001E0034B00E0059B180007B000BDC04680C6FFFF10B58CB005900491039200230A9300230B93049A039BD3180893059A049908AB1800FFF7A1FF03000993099B72 +:40E64000002B01DA099BA6E0099B0A9AD3180A93059B1800FEF7FAFB0300072B01D10A9B99E0089B1A00049BD31A002B02DC6C235B4290E0089B013B0893089B00221A701C +:40E680000A9B01330A930A9A049908AB1800EFF741F903000993099B002B01DA099B7AE0099B0A9AD3180A93049908AB03221800EFF71CFA03000993099B002B01DA099B2B +:40E6C00069E0099B0A9AD3180A93059B1800FEF7BDFB0300180007AA06AB1900FEF75EF903000993099B002B01D0099B53E0059B1800FEF7ABFB0300022B15D1059B18681B +:40E700005968FFF754FE0200049908AB1800FFF70BFF03000993099B002B01DA099B3AE0099B0B9AD3180B93069A079C049908A80B9B00932300EFF70BFB03000993099B72 +:40E74000002B01DA099B26E0099B0A9AD3180A930A9A049908AB1800EFF7DCF803000993099B002B01DA099B15E0099B0A9AD3180A93049908AB30221800EFF7B7F903004E +:40E780000993099B002B01DA099B04E0099B0A9AD3180A930A9B18000CB010BD00B591B0059004910392049A039BD318099300230E93059B1800FEF749FB0300012B00D049 +:40E7C00034E1059B18685968FFF7E8FD03000D9306AB1800EFF79EFC06AB0D980022002101F06CF803000F930F9B002B00D0E0E006AA049909AB1800EFF7C4F903000F9303 +:40E800000F9B002B00DAD4E00F9B0E9AD3180E9306AA0D980023002101F050F803000F930F9B002B00D0C4E006AA049909AB1800EFF7A8F903000F930F9B002B00DAB8E04B +:40E840000F9B0E9AD3180E9306A90D980023002201F034F803000F930F9B002B00D0A8E006AA049909AB1800EFF78CF903000F930F9B002B00DA9CE00F9B0E9AD3180E9300 +:40E8800006AA0D98002301930023009313000022002100F07BFF03000F930F9B002B00D087E006AA049909AB1800EFF76BF903000F930F9B002B00DA7BE00F9B0E9AD318D6 +:40E8C0000E9306AA0D9800230193002300930023002100F05BFF03000F930F9B002B68D106AA049909AB1800EFF74CF903000F930F9B002B5DDB0F9B0E9AD3180E930D98FB +:40E900000023019306AB009300230022002100F03DFF03000F930F9B002B4AD106AA049909AB1800EFF72EF903000F930F9B002B3FDB0F9B0E9AD3180E930D9806AB019333 +:40E940000023009300230022002100F01FFF03000F930F9B002B2CD106AA049909AB1800EFF710F903000F930F9B002B21DB0F9B0E9AD3180E9306A90D980023019300236C +:40E9800000930023002200F001FF03000F930F9B002B0ED106AA049909AB1800EFF7F2F803000F930F9B002B03DB0F9B0E9AD3180E9306AB1800EFF7BFFB0F9B002B01DAFE +:40E9C0000F9B35E1049909AB00221800EFF718FA03000F930F9B002B01DA0F9B28E10F9B0E9AD3180E930E9A049909AB1800EEF791FF03000F930F9B002B01DA0F9B17E171 +:40EA00000F9B0E9AD3180E93049909AB30221800EFF76CF803000F930F9B002B01DA0F9B06E10F9B0E9AD3180E9300E1059B1800FEF70CFA0300022B00D0F6E0059B1868A5 +:40EA40005968FFF7B4FC03000C9300230B9300230A930C9A049909AB1800FFF727FD03000F930F9B002B01DA0F9BE1E00F9B0B9AD3180B93099B1A00049BD31A002B02DCF8 +:40EA80006C235B42D4E0099B013B0993099B00221A700B9B01330B930B9A049909AB1800EEF738FF03000F930F9B002B01DA0F9BBEE00F9B0B9AD3180B93049909AB03221D +:40EAC0001800EFF713F803000F930F9B002B01DA0F9BADE00F9B0B9AD3180B930B9A049909AB1800EEF716FF03000F930F9B002B01DA0F9B9CE00F9B0B9AD3180B930499B1 +:40EB000009ABA1221800EEF7F1FF03000F930F9B002B01DA0F9B8BE00F9B0B9AD3180B930E9A0B9BD3180E930C9A049909AB1800FFF7FAFC03000F930F9B002B01DA0F9B5B +:40EB400076E00F9B0A9AD3180A930A9A049909AB1800EEF7DFFE03000F930F9B002B01DA0F9B65E00F9B0A9AD3180A93049909ABA0221800EEF7BAFF03000F930F9B002B3D +:40EB800001DA0F9B54E00F9B0A9AD3180A930E9A0A9BD3180E930C9B7C331A00049909AB1800EEF7EFFF03000F930F9B002B01DA0F9B3DE00F9B0E9AD3180E93099B04227D +:40EBC0001A70049909AB01221800EFF719F903000F930F9B002B01DA0F9B29E00F9B0E9AD3180E930E9A049909AB1800EEF792FE03000F930F9B002B01DA0F9B18E00F9BFA +:40EC00000E9AD3180E93049909AB30221800EEF76DFF03000F930F9B002B01DA0F9B07E00F9B0E9AD3180E9301E0034B00E00E9B180011B000BDC04680C6FFFF00B583B050 +:40EC400001900091044B1B68009A019800219847C04603B000BDC0460C040008F0B583B001900091019B1C0000231D00009B1E0000231F0032003B00200029001DF042F9EE +:40EC800003000C001800210003B0F0BD70B5CAB0339032913192309300234493339B1B684293339B5B684193339B9B684093339BDB683F93419B9A08419BD3183E93409B04 +:40ECC0009A08409BD3183D933F9B9A083F9BD3183C93339B1B6A4993339B5B6A4893339B9B6A4793339BDB6A4693339B1B6B45930023439351E2319A449BD3181B781900FD +:40ED0000449B5A1C319B9B181B781B021943449B9A1C319B9B181B781B041943449BDA1C319B9B181B781B060B433A9300233B93449B1A1D319B9B181B781900449B5A1D26 +:40ED4000319B9B181B781B021943449B9A1D319B9B181B781B041943449BDA1D319B9B181B781B060B43389300233993449B08331A00319B9B181B781900449B09331A0040 +:40ED8000319B9B181B781B021943449B0A331A00319B9B181B781B041943449B0B331A00319B9B181B781B060B43369300233793449B0C331A00319B9B181B781900449B55 +:40EDC0000D331A00319B9B181B781B021943449B0E331A00319B9B181B781B041943449B0F331A00319B9B181B781B060B43349300233593499B0093002301933A9B3B9C1F +:40EE00000099019A5B1854413A933B94489B0293002303933B9B1B000493002305930299039A049B059CC9186241389B399C5B18544138933994479B069300230793399B36 +:40EE40001B000893002309930699079A089B099CC9186241369B379C5B18544136933794469B0A9300230B93379B1B000C9300230D930A990B9A0C9B0D9CC9186241349B58 +:40EE8000359C5B185441349335943A9B4993389B4893369B4793349B4693359B1B000E9300230F930E9A309BD218459B9B184593429A499B11001800FFF7D0FE05000E005E +:40EEC0003C9A489B11001800FFF7C8FE03000C00ED1866413D9A479B11001800FFF7BEFE03000C00ED1866413E9A469B11001800FFF7B4FE03000C005B1974413A933B940C +:40EF0000419A499B11001800FFF7A8FE05000E00429A489B11001800FFF7A0FE03000C00ED1866413C9A479B11001800FFF796FE03000C00ED1866413D9A469B11001800FC +:40EF4000FFF78CFE03000C00ED1866413E9A459B11001800FFF782FE03000C005B19744138933994409A499B11001800FFF776FE05000E00419A489B11001800FFF76EFE82 +:40EF800003000C00ED186641429A479B11001800FFF764FE03000C00ED1866413C9A469B11001800FFF75AFE03000C00ED1866413D9A459B11001800FFF750FE03000C0080 +:40EFC0005B197441369337943F9A499B11001800FFF744FE05000E00409A489B11001800FFF73CFE03000C00ED186641419A479B11001800FFF732FE03000C00ED1866418B +:40F00000429A469B11001800FFF728FE03000C00ED1866413C9A459B11001800FFF71EFE03000C005B19744134933594459A429B534345933B9B1B00109300231193389B02 +:40F04000399C1099119A5B18544138933994399B1B00129300231393369B379C1299139A5B18544136933794379B1B00149300231593349B359C1499159A5B1854413493A8 +:40F0800035943A9B4993389B4893369B4793349B4693359B1B00169300231793169A459B9B184593499B189300231993459B9B081A9300231B931899199A1A9B1B9CC91849 +:40F0C0006241459B1C9300231D9303231C9C1D9D200098431E900023280018401F901E9B1F9C5B1854413A933B94459A0323134045933A9B4993489B2093002321933B9B3C +:40F100001B00229300232393209B219C2299239A5B1854413A933B943A9B4893479B2493002325933B9B1B00269300232793249B259C2699279A5B1854413A933B943A9B6E +:40F140004793469B2893002329933B9B1B002A9300232B93289B299C2A992B9A5B1854413A933B943A9B4693459B2C9300232D933B9B1B002E9300232F932C9B2D9C2E99D9 +:40F180002F9A5B1854413A933B943A9B4593449B10334493439B01334393439A329B9A4200D2A8E5339B499A1A62339B489A5A62339B479A9A62339B469ADA62339B459A94 +:40F1C0001A63C0464AB070BD00B583B00190019B002B04D0019B48211800FFF72FFDC04603B000BD00B583B00190019B002B04D0019B48211800FFF721FDC04603B000BDE1 +:40F2000000B589B003900291019200230793019B0693039B002B02D157235B4272E0019B002B05D0029B002B02D157235B4269E0069B002B3ED0039B5B6C002B3AD0039B87 +:40F240005B6C1022D31A0593019A059B9A4213D2039B5B6C3033039AD3180433019A0299180018F069FD039B5A6C019BD218039B5A64002306931DE0039B5B6C3033039A6D +:40F28000D3180433059A0299180018F055FD039B00225A64039B34331A00039801230121FFF7F4FC079A059BD3180793069A059BD31A0693069B0F2B13D9069B1B0904936D +:40F2C000029A079BD218049903980123FFF7DEFC049B1B01079AD3180793069B0F2213400693069B002B0CD0039B069A5A64039B34331800029A079BD318069A190018F070 +:40F300001BFD0023180009B000BD88B0039002910192039B0593029B04931B236B4400221A700023079313E0059A079BD3181A780499079BCB181B785340D9B21B236B44E2 +:40F340001B226A4412780A431A70079B01330793079A019B9A42E7D31B236B441B78180008B0704700B587B0039002910192009300230593029B002B13D0039B0833019AE5 +:40F3800002991800EFF792FB03000593059B002B41D1039B08331800EFF73BFA0200039B5A60009B002B0BD0039B2C33089A00991800EFF77BFB03000593059B002B2CD199 +:40F3C000099B002B0BD0039B38330A9A09991800EFF76CFB03000593059B002B1FD10B9B002B0BD0039B20330C9A0B991800EFF75DFB03000593059B002B12D10D9B002B00 +:40F4000010D0039B14330E9A0D991800EFF74EFB0300059306E0C04604E0C04602E0C04600E0C046059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF5A +:40F4400010B584B0039002910192039B5C68039B08331800EFF7DDF903009C4205D1039B5A688023DB009A4201D9344B63E0039B083300211800EFF713FE031E07DD039B12 +:40F48000083300211800EFF7CCF8031E01D12B4B51E0029B002B21D0039B2C3300211800EFF7FEFD031E17DD039B2C3300211800EFF7B7F8031E0FD0039B383300211800A2 +:40F4C000EFF7EEFD031E07DD039B383300211800EFF7A7F8031E01D1184B2CE0039B143300211800EFF7DCFD031E01DC134B22E0029B002B11D0039B443300211800EFF7F5 +:40F50000CFFD031E07DD039B503300211800EFF7C7FD031E01DC094B0DE0029B002B09D0039B5C3300211800EFF7BAFD031E01DC024B00E00023180004B010BD80BFFFFFEF +:40F5400030B591B0039000230F93039B083300211800EFF7A5FD03005A1E9341DBB20E93039B2C3300211800EFF79AFD03005A1E9341DBB20D93039B383300211800EFF79F +:40F580008FFD03005A1E9341DBB20C93039B203300211800EFF784FD03005A1E9341DBB20B93039B143300211800EFF779FD03005A1E9341DBB20A930D9B002B0AD00C9BF2 +:40F5C000002B07D00B9B002B04D00A9B002B01D0012300E0002309930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D00A9B002B01D0012300E0002308930D9B47 +:40F60000002B0AD00C9B002B07D00B9B002B04D10A9B002B01D0012300E0002307930E9B002B0DD00D9B002B0AD10C9B002B07D10B9B002B04D10A9B002B01D0012300E0C0 +:40F6400000230693099B002B05D1089B002B02D1079B002B01D0012300E000230593059B002B04D1069B002B01D1474B88E00E9B002B22D10D9B002B1FD00C9B002B1CD0AC +:40F68000039B08331800039B2C331900039B38331A00F0F749FE03000F930F9B002B04D00F9B394A944663446AE0039B08331800EFF7AFF80200039B5A60089B002B1BD01B +:40F6C000039B08331800039B14331900039B20331A00039B2C331C00039B38330093230002F006FA03000F930F9B002B1ED00F9B254A9446634443E0079B002B16D0039BD0 +:40F700002C331800039B38331900039B14331A00039B203302F060FB03000F930F9B002B04D00F9B184A9446634429E0059B002B1FD0039B2C331800039B38331900039B80 +:40F7400020331C00039B44331D00039B5033039A5C32019200932B00220002F0C5FD03000F930F9B002B04D00F9B074A9446634406E00599039B01221800FFF761FE0300F6 +:40F78000180011B030BDC04680BFFFFF00B587B00390029101920093039B083300211800EFF77EFC031E21D0039B2C3300211800EFF776FC031E19D0039B383300211800AA +:40F7C000EFF76EFC031E11D0039B203300211800EFF766FC031E09D0039B143300211800EFF75EFC031E01D0012300E000230493049B002B0AD1019B002B05D1009B002B35 +:40F8000002D1089B002B01D02B4B52E0029B002B0CD0039B08331A00029B11001800EEF752FD03000593059B002B3FD1019B002B0CD0039B2C331A00019B11001800EEF743 +:40F8400042FD03000593059B002B2FD1009B002B0CD0039B38331A00009B11001800EEF732FD03000593059B002B1FD1089B002B0CD0039B20331A00089B11001800EEF78A +:40F8800022FD03000593059B002B0FD1099B002B0ED0039B14331A00099B11001800EEF712FD03000593059B002B01D0059B00E00023180007B000BD80BFFFFF00B587B0E7 +:40F8C0000390029101920093039B083300211800EFF7E6FB031E21D0039B2C3300211800EFF7DEFB031E19D0039B383300211800EFF7D6FB031E11D0039B203300211800AD +:40F90000EFF7CEFB031E09D0039B143300211800EFF7C6FB031E01D0012300E000230493049B002B01D11D4B35E0029B002B0CD0039B44331A00029B11001800EEF7C3FC53 +:40F9400003000593059B002B1FD1019B002B0CD0039B50331A00019B11001800EEF7B3FC03000593059B002B0FD1009B002B11D0039B5C331A00009B11001800EEF7A3FC7E +:40F9800003000593059B002B04D0059B034A9446634400E00023180007B000BD80BFFFFF00B585B0039002910192039BAC220021180018F053FA019A0299039B180000F05A +:40F9C00003F8C04605B000BD84B0039002910192039BA421029A5A50039BA821019A5A50C04604B0704782B00190019B5B68180002B0704700B583B00190019B00220021E6 +:40FA00001800FFF71DFD031E01D0164B27E0019B08331800EEF7CBFE03007F2B01D8114B1DE0019B143300211800EEF7FAFD031E12D0019B14331800EEF7B9FE0300012B07 +:40FA40000AD9019B14331A00019B083319001000EFF78EFA031E01DB024B00E00023180003B000BD00BEFFFF30B587B00590059B1800FFF7BFFF031E07D1059B01220121AC +:40FA80001800FFF7DDFC031E01D01D4B35E0059B08331800059B2C331900059B38331C00059B20331D00059B1433002202920022019200932B00220002F0FCFA031E01D0A2 +:40FAC0000F4B1AE0059B2C331800059B38331900059B20331C00059B44331D00059B5033059A5C32019200932B00220002F0FEF9031E01D0024B00E00023180007B030BD8A +:40FB000000BEFFFF00B583B001900091019B1800FFF770FF031E05D1009B1800FFF7A4FF031E01D00E4B18E0019B08331A00009B083319001000EFF71BFA031E0AD1019BDD +:40FB400014331A00009B143319001000EFF710FA031E01D0024B00E00023180003B000BD00BEFFFF10B58CB0059004910392059B002200211800FFF763FC031E01D0294B2D +:40FB80004CE007AB1800EEF7C5FA059B5A68049907AB1800EEF78AFF03000B930B9B002B2CD1059B08331A0007AB11001800EFF7DFF9031E03DB04235B420B9321E0059B75 +:40FBC0005B680A93059B14331A00059B08331C00059B683307A907A800932300F1F7C0F803000B930B9B002B0AD10A9A039907AB1800EEF7BDFF03000B9302E0C04600E05C +:40FC0000C04607AB1800EEF797FA0B9B002B04D00B9B054A9446634400E0002318000CB010BDC04680BFFFFF80BDFFFF10B588B005900491039200230693059BA0229B5874 +:40FC4000002B3FD0059B8C331800059B8C331900059B8C331A00F0F767FB03000793079B002B00D081E0059B8C331800059B8C331900059B08331A00F0F756FF0300079341 +:40FC8000079B002B00D072E0059B98331800059B98331900059B98331A00F0F745FB03000793079B002B64D1059B98331800059B98331900059B08331A00F0F735FF0300E9 +:40FCC00007935DE0069B5A1C06920A2B01DD2E4B57E0059B98331800059B5B68591E039B049AF1F731FE03000793079B002B42D1059B8C331800059B98331900059B0833B8 +:40FD00001A00F1F737FD03000793079B002B34D1059B8C3301211800EFF7C2F9031ED1D1059B8C331800059B98331900059B08331A00F1F743FE03000793079B002B1ED1AF +:40FD4000059B8C331800059B8C331900059B14331A00059B08331C00059B683300932300F0F7FEFF030007930AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046A8 +:40FD8000079B180008B010BD80BBFFFF10B5A8B00590049103920293059B44332693059B50332593049B5A1E9341DBB21A00059B01211800FFF744FB031E01D0DF4BFCE115 +:40FDC00021AB1800EEF7A6F91EAB1800EEF7A2F91BAB1800EEF79EF918AB1800EEF79AF9049B002B07D00FAB1800EEF793F90CAB1800EEF78FF915AB1800EEF78BF912AB6F +:40FE00001800EEF787F909AB1800EEF783F906AB1800EEF77FF9059B5A68029921AB1800EEF744FE03002793279B002B00D05FE1059B08331A0021AB11001800EFF798F8D0 +:40FE4000031E03DB04235B42279382E121AA09AB11001800EEF737FA03002793279B002B00D047E1049B002B00D193E0039A0499059B1800FFF7DAFE03002793279B002BCA +:40FE800000D039E1059B8C331A0021A921AB1800F0F74AFA03002793279B002B00D02DE1059B08331A0021A921AB1800F0F73CFE03002793279B002B00D021E1059B2C333F +:40FEC00019001EAB01221800EFF73DFB03002793279B002B00D015E1059B383319001BAB01221800EFF72FFB03002793279B002B00D009E1039B049A18A81C21F1F724FD7C +:40FF000003002793279B002B00D0FFE018AA1EA90FAB1800F0F708FA03002793279B002B00D0F5E0059B44331A000FA90FAB1800EFF74AFA03002793279B002B00D0E9E0AD +:40FF40000FAB2693039B049A18A81C21F1F7FCFC03002793279B002B00D0DDE018AA1BA90CAB1800F0F7E0F903002793279B002B00D0D3E0059B50331A000CA90CAB1800BB +:40FF8000EFF722FA03002793279B002B00D0C7E00CAB2593059B2C331C00059B7433269A21A915A800932300F0F7DAFE03002793279B002B00D0B5E0059B38331C00059BBB +:40FFC0008033259A21A912A800932300F0F7C8FE03002793279B002B00D0A5E012AA15A921AB1800EFF73EFA03002793279B002B00D09BE0059B5C331A0021A915AB18004D +:020000041002E8 +:40000000F0F792F903002793279B002B00D08FE0059B2C331A0015A921AB1800F0F784FD03002793279B002B00D083E0059B38331A0021A915AB1800F0F776F9030027938B +:40004000279B002B00D077E015AA12A921AB1800EFF7BAF903002793279B002B00D071E0049B002B1AD0059B98331A0021A921AB1800F0F759F903002793279B002B00D010 +:4000800062E0059B08331A0021A921AB1800F0F74BFD03002793279B002B57D1059B14331A00059B08331C00059B683321A906A800932300F0F754FE03002793279B002B16 +:4000C00046D109AA06AB11001800EEF751FF031E02D01B4B27933CE0059B5B682493249A2A9921AB1800EEF743FD0300279330E0C0462EE0C0462CE0C0462AE0C04628E043 +:40010000C04626E0C04624E0C04622E0C04620E0C0461EE0C0461CE0C0461AE0C04618E0C04616E0C04614E0C04612E0C04610E0C0460EE0C0460CE0C0460AE080BFFFFFA0 +:4001400080BCFFFFC04604E0C04602E0C04600E0C0461EAB1800EDF7EFFF1BAB1800EDF7EBFF18AB1800EDF7E7FF049B002B07D00FAB1800EDF7E0FF0CAB1800EDF7DCFFBF +:4001800021AB1800EDF7D8FF15AB1800EDF7D4FF12AB1800EDF7D0FF06AB1800EDF7CCFF09AB1800EDF7C8FF279B002B04D0279B034A9446634400E00023180028B010BD89 +:4001C00000BDFFFF00B59BB003900291019200930023169305AB40220021180017F03EFE04AB04220021180017F038FE1C9B1B681800FCF751FA03001593039B199350E09E +:40020000159B1793029A159B9A4201D2029B17931C9B1800FCF75EF803001693169B002B43D1009A01991C9B1800FCF76DF803001693169B002B3AD104A91C9B04221800DE +:40024000FCF762F803001693169B002B31D105AA1C9B11001800FCF775F803001693169B002B28D1002318930DE0199B5A1C1992197805A8189A821812784A40D2B21A70FB +:40028000189B01331893189A179B9A42EDD304ABDB780133DAB204ABDA70029A179BD31A0293029B002BABD106E0C04604E0C04602E0C04600E0C04605AB40211800FEF71B +:4002C000BDFC169B18001BB000BD000010B58EB00590049103920293149B0C93029B012B06D1059BA4229B58012B01D0674BCAE0049B002B01D1654BC5E0059BA8229B58AF +:40030000DBB21800FBF744FF03000B930B9B002B01D15E4BB7E0059B5B680A930B9B1800FCF7BAF903000993099B5A00129BD3189A1C129B9A4207D3099B5A00129BD31817 +:400340009A1C0A9B9A4201D9504B9CE00A9A149B0021180017F082FD0C9B5A1C0C9200221A70099A0C990398049B984703000D930D9B002B04D00D9B454A9446634482E017 +:400380000C9A099BD3180C930C9B119A10990B98FBF7F4FF03000D930D9B002B01D00D9B71E00C9A099BD3180C93099B5B000A9AD21A129BD31A023B0C9AD3180C930C9B95 +:4003C0005A1C0C9201221A70129A13990C9B180017F0B2FC06AB1800FBF702FF0B9906AB00221800FBF73AFF03000D930D9B002B28D1099B0133149AD0180A9A099BD31AE8 +:40040000591E149B5A1C099C06AB00932300FFF7D9FE03000D930D9B002B15D1149B581C099B0133149AD4180A9A099BD31A5A1E099906AB009313002200FFF7C3FE0300D4 +:400440000D9302E0C04600E0C04606AB1800FBF7D3FE0D9B002B01D00D9B14E0029B002B07D1149A1499059B1800FFF77BFB030009E0149C039A04990598149B009323004B +:40048000FFF784FC030018000EB010BD80BFFFFF80BBFFFF10B58CB00590049103920293109B0A93029B012B06D1059BA4229B58002B01D0464B88E0049B002B05D00F9BD6 +:4004C000002B02D0109B002B01D1414B7DE0059B5B6808930E9B0B331A000E9B9A4205D30E9B0B331A00089B9A4201D9384B6CE0089A0E9BD31A033B0B930A9B5A1C0A921E +:4005000000221A70029B002B2FD10A9B5A1C0A9202221A7023E0642309930A990398049B01229847030007930A9B1B78002B08D1099B013B0993099B002B02D0079B002B1A +:40054000EBD0099B002B02D0079B002B04D0079B204A9446634438E00A9B01330A930B9B5A1E0B92002BD6D10FE00A9B5A1C0A9201221A7004E00A9B5A1C0A92FF221A703D +:400580000B9B5A1E0B92002BF5D10A9B5A1C0A9200221A700E9A0F990A9B180017F0CCFB029B002B07D1109A1099059B1800FFF7D9FA030009E0109C039A04990598109BC3 +:4005C00000932300FFF7E2FB030018000CB010BD80BFFFFF80BBFFFF10B58AB00990089107920693099BA4229B58002B02D0012B0FD021E0069C079A089909980E9B0293CC +:400600000D9B01930C9B00932300FFF743FF030013E0069C079A089909980E9B04930D9B03930C9B029300230193002300932300FFF74CFE030000E0014B18000AB010BD16 +:4006400000BFFFFF10B5E04CA5440590049103920293029B012B06D1059BA4229B58012B01D0DA4BECE1059B5B68FFAA74321360FFAB74331B680F2B06D9FFAB74331A68C2 +:400680008023DB009A4201D9D04BD9E1059BA8229B58DBB21800FBF77BFD0300FFAA70321360FFAB70331B68002B01D1C74BC7E1FFAB70331B681800FBF7EEFF0300FFAA0A +:4006C0006C321360FFAB6C331B6801335A00FFAB74331B689A4201D9BC4BB1E1029B002B09D11AAAFFABA0331968059B1800FFF739FA03000BE0FFABA0331C68039A0499FE +:4007000005981AAB00932300FFF740FB0300FFAA88321360FFAB88331B68002B00D07DE107AB1800FBF75CFDFFAB7033196807AB00221800FBF792FD0300FFAA883213602D +:40074000FFAB88331B68002B04D007AB1800FBF753FD66E11AA80130FFAB6C331B6801331AAAD418FFAB74331A68FFAB6C331B68D31A5A1EFFAB6C33196807AB0093130076 +:400780002200FFF71FFD0300FFAA88321360FFAB88331B68002B20D1FFAB6C331B6801331AAAD018FFAB74331A68FFAB6C331B68D31A591E1AAA0132FFAB6C331C6807AB03 +:4007C00000932300FFF7FEFC0300FFAA88321360FFAB88331B68002B04D007AB1800FBF70BFD1EE107AB1800FBF706FD0AABFFAA98321268FFA994310968FFA870300068E2 +:40080000FBF7BCFD0300FFAA88321360FFAB88331B68002B00D003E11AABFFAA7C321360FFAB7B3300221A70FFAB7C331B685A1CFFA97C310A601978FFAB7B33FFAA7B328A +:4008400012780A431A70FFAB7C331A68FFAB6C331B68D318FFAA7C3213600023FFAA8432136023E05A4BFFAA8C32D218FFAB84331B68D3181A78FFAB7C331B68591CFFA874 +:400880007C3001601B785340DBB25AB2FFAB7B331B785BB213435AB2FFAB7B331A70FFAB84331B680133FFAA84321360FFAB84331A68FFAB6C331B689A42D3D30023FFAA49 +:4008C00080321360FFAB7A3300221A700023FFAA843213602CE0FFAB7C331A68FFAB84331B68D3181978FFAB7A33FFAA7A3212780A431A70FFAB7A331B785B42DAB2FFABCA +:400900007A331B781343DBB2DB09DBB201225340DBB21A00FFAB80331B689B18FFAA80321360FFAB84331B680133FFAA84321360FFAB6C331B685B00FFAA74321268D31A9E +:400940009A1EFFAB84331B689A42C4D8FFAB7C331A68FFAB80331B68D318FFAA7C321360FFAB7C331B685A1CFFA97C310A601B7801225340DBB25AB2FFAB7B331B785BB208 +:4009800013435AB2FFAB7B331A70FFAB7B331B78002B04D00F4BFFAA8832136041E0FFAB7C331A681AABD31A1A00FFAB74331B689A1AFFABA8331B689A420FD9064BFFAAC3 +:4009C000883213602DE0C04678FBFFFF80BFFFFFA0FBFFFF00BFFFFF00BCFFFFFFAB7C331A681AABD31A1A00FFAB74331B689A1AFFAB9C331B681A60FFAB9C331B681A68D6 +:400A0000FFAB7C331968FFABA4331B68180017F093F90023FFAA8832136002E0C04600E0C0468023DA001AAB11001800FEF706F90AAB40211800FEF701F9FFAB88331B6802 +:400A400018009123DB009D4410BDC04610B5D44CA54405900491039202930023FFAA2C321360FFAB223300221A70029B012B06D1059BA4229B58002B01D0CA4B8BE1059B9B +:400A80005B68FFAA1C321360FFAB1C331B680F2B06D9FFAB1C331A688023DB009A4201D9C04B78E1029B002B09D106AAFFAB40331968059B1800FFF755F803000BE0FFABDE +:400AC00040331C68039A0499059806AB00932300FFF75CF90300FFAA30321360FFAB30331B68002B00D04BE106ABFFAA24321360FFAB233300221A70FFAB24331B685A1C75 +:400B0000FFA924310A601978FFAB2333FFAA233212780A431A70029B012B7AD1FFAB24331B685A1CFFA924310A601B7802225340DBB25AB2FFAB23331B785BB213435AB204 +:400B4000FFAB23331A700023FFAA283213603DE0FFAB24331A68FFAB28331B68D3181A78FFAB24331968FFAB28331B68CB181B785B42DBB21343DBB2DB09DBB201225340F9 +:400B8000D9B2FFAB2233FFAA223212780A431A70FFAB22331B785B42DAB2FFAB22331B781343DBB2DB09DBB201225340DBB21A00FFAB2C331B689B18FFAA2C321360FFABEC +:400BC00028331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42B8D8FFAB24331A68FFAB2C331B68D318FFAA24321360FFAB24331B685A1CFFA924310A6038 +:400C00001978FFAB2333FFAA233212780A431A7066E0FFAB24331B685A1CFFA924310A601B7801225340DBB25AB2FFAB23331B785BB213435AB2FFAB23331A700023FFAAE3 +:400C4000283213602AE0FFAB24331A68FFAB28331B68D3181B78FF3B5A1E9341DBB25AB2FFAB22331B785BB213435AB2FFAB22331A70FFAB22331B785A425341DBB21A0002 +:400C8000FFAB2C331B689B18FFAA2C321360FFAB28331B680133FFAA28321360FFAB1C331B68DA1EFFAB28331B689A42CBD8FFAB24331A68FFAB2C331B68D318FFAA2432D5 +:400CC0001360FFAB24331B685A1CFFA924310A601978FFAB2333FFAA233212780A431A70FFAB2C331A680721002391425B41DBB25AB2FFAB23331B785BB213435AB2FFABA6 +:400D000023331A70FFAB23331B78002B04D0264BFFAA3032136034E0FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB48331B689A4204D91D4BFFAA3032136020E08C +:400D4000FFAB24331A6806ABD31A1A00FFAB1C331B689A1AFFAB3C331B681A60FFAB3C331B681A68FFAB24331968FFAB44331B68180016F0E1FF0023FFAA3032136000E02F +:400D8000C0468023DA0006AB11001800FDF756FFFFAB30331B6818008623DB009D4410BDD0FBFFFF80BFFFFF00BFFFFF00BCFFFF10B58AB00990089107920693099BA42269 +:400DC0009B58002B02D0012B11D025E0069C079A089909980F9B03930E9B02930D9B01930C9B00932300FFF731FE030015E0069C079A089909980F9B05930E9B04930D9B89 +:400E000003930C9B029300230193002300932300FFF718FC030000E0014B18000AB010BD00BFFFFF10B5A2B00590049103920293279B1E9300232093029B012B06D1059BC7 +:400E4000A4229B58012B01D09C4B33E1049B002B01D19A4B2EE1059B5B681D9324AB1B78002B11D024AB1B781800FBF791F903001C931C9B002B01D1904B1BE11C9B1800AE +:400E8000FBF70AFC03002593059BA8229B58DBB21800FBF77DF903001C931C9B002B01D1864B07E11C9B1800FBF7F6FB03001B931B9B023B1A931B9A1A9BD3189A1C1D9B30 +:400EC0009A4201D97D4BF5E01B9A1B9BD3189A1C1D9B9A4202D81B9B219304E01D9A1B9BD31A023B21931D9A279B0021180016F0B5FF219A09A90398049B984703001F93E5 +:400F00001F9B002B04D01F9B6D4A94466344D1E0059B08331800EDF74AFC0300013B19931D9A1B9BD21A219BD31A023B1E9AD3181E931E9B5A1C1E9201221A70219A09A9C1 +:400F40001E9B180016F0F8FE1E9A219BD3181E9306AB1800FBF744F91C9906AB00221800FBF77CF903001F931F9B002B00D076E006AB1800FBF7AEF903001F931F9B002BD9 +:400F80006FD11E9906AB08221800FBF7BDF903001F931F9B002B66D1259A269906AB1800FBF7B2F903001F931F9B002B5DD1219A09A906AB1800FBF7A7F903001F931F9BEB +:400FC000002B54D11E9A06AB11001800FBF7BAF903001F931F9B002B4BD1199B0722134001D101232093279A209BD0181D9A1B9BD21A209BD31A591E1B9C1E9A06AB00934C +:401000002300FFF7DFF803001F931F9B002B32D1059B08331800EDF7CAFB0300013B1993279B1B785BB21D9AD100199A8A1AFF2111410A0052B213405BB2DAB2279B1A70A3 +:401040001E9A1B9BD3181E931E9B5A1C1E92BC221A7009AB40211800FDF7F0FD0CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04606AB1800FBF7BCF82E +:401080001F9B002B01D01F9B14E0029B002B07D1279A2799059B1800FEF764FD030009E0279C039A04990598279B00932300FEF76DFE0300180022B010BDC04680BFFFFF42 +:4010C00080BBFFFF00B58BB00291019200930F236B44021C1A7000230693009B09930C9B0893002305930F236B441B78002B47D00F236B441B781800FBF74AF80300079382 +:40110000079B002B01D16C4BD3E006AA05A90F236B441B781800FBF7DFFC031E01D0664BC7E0079B1800FBF7B7FA03000293069A029BD31808337F2B0ED8029B0A331A00C9 +:40114000029B9A4208D3069A029BD3180A331A00029B0A339A4201D2574BAAE0069A029BD3180A331A00099B9A4201D9524BA0E0069A029BD318099AD31A0A3B099309E06F +:40118000099A029B9A4201D24B4B92E0099A029BD31A0993099B0A2B01D8474B89E0099B033B0993089B5A1C089200221A70089B5A1C089201221A70099A089BFF21180007 +:4011C00016F04CFE089A099BD3180893089B5A1C089200221A700F236B441B78002B07D1029A0199089B180016F0A6FD002360E0089B5A1C089230221A70089B5A1C0892BE +:40120000069AD1B2029AD2B28A18D2B20832D2B21A70089B5A1C089230221A70089B5A1C0892069AD2B20432D2B21A70089B5A1C089206221A70089B5A1C0892069AD2B217 +:401240001A700599069A089B180016F075FD069B089AD3180893089B5A1C089205221A70089B5A1C089200221A70089B5A1C089204221A70089B5A1C0892029AD2B21A7027 +:40128000029A0199089B180016F056FD089A029BD31808930C9A009BD218089B9A4207D0009A0C9B11001800FDF7C8FC024B00E0002318000BB000BD80BFFFFF10B58AB060 +:4012C00005900491039202930023089300230793029B012B06D1059BA4229B58002B01D03D4B75E0059B5C680E9A0D990CAB18780F9B00932300FFF7E5FE03000993099BD8 +:40130000002B01D0099B63E0029B002B07D10F9A0F99059B1800FEF725FC030058E0059B5B681900012015F049FE03000893089B002B02D110235B424AE0059B5B68190032 +:40134000012015F03BFE03000793079B002B06D1089B180016F0B6F910235B4238E00F9C039A04990598089B00932300FEF70EFD03000993099B002B1ED1079A0899059B5B +:401380001800FEF7EFFB03000993099B002B15D1059B5A680F99079B1800FDF7B6FF031E02D00E4B09930AE0059B5A6808990F9B180016F0C1FC02E0C04600E0C046089BAA +:4013C000180016F07FF9079B180016F07BF9099B18000AB010BDC04680BFFFFF00BDFFFF10B588B00790069105920493079BA4229B58002B02D0012B12D023E0049C059AE1 +:40140000069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF750FF030012E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF7F2FC6F +:40144000030000E0014B180008B010BD00BFFFFF10B5C24CA5440590049103920293029B012B06D1059BA4229B58012B01D0BC4BFBE1059B5B68FFAA8C321360FFAB8C3354 +:401480001B680F2B06D9FFAB8C331A688023DB009A4201D9B24BE8E1029B002B09D107AAFFABB0331968059B1800FEF75BFB03000BE0FFABB0331C68039A0499059807ABBF +:4014C00000932300FEF762FC0300FFAA90321360FFAB90331B68002B03D0FFAB90331B68C3E107ABFFAA88321360FFAB8C331B68013B9C4AFFA994318C466244D35CBC2BEF +:4015000001D0994BB1E1FFAB9C331B78002B1AD0FFAB9C331B781800FAF73AFE0300FFAA84321360FFAB84331B68002B01D18C4B9BE1FFAB84331B681800FBF7ADF8030057 +:40154000FFAAA0321360FFABA8331B781800FAF71FFE0300FFAA84321360FFAB84331B68002B01D17E4B80E1FFAB84331B681800FBF792F80300FFAA80321360FFAB2C330D +:4015800008220021180016F069FC059B08331800EDF70DF90300013BFFAA7C321360714BFFAA9432944663441B781900FFAB8C331A6813005B079B1ADB001A00FFAB7C33BC +:4015C0001B68D318083319410B1E01D0644B4CE1FFAB7C331B68072213400DD1FFAB88331B680133FFAA88321360FFAB8C331B68013BFFAA8C321360FFAB80331B689A1C52 +:40160000FFAB8C331B689A4201D9554B2DE1FFAB8C331A68FFAB80331B68D31A013BFFAA88321268D318FFAA78321360FFAB20331800FAF7D5FDFFAB84331968FFAB203321 +:4016400000221800FAF70AFE0300FFAA90321360FFAB90331B68002B00D0F1E0FFAB8C331A68FFAB80331B68D31A591EFFAB80331C68FFAB78331A68FFAB88331868FFAB24 +:40168000203300932300FEF79DFD0300FFAA90321360FFAB90331B68002B00D0D2E0314BFFAA9432944663441B785BB2FFAA8C321268D100FFAA7C3212688A1AFF2111416F +:4016C0000A0052B213405BB2DAB2264BFFA994318C4663441A7006E0FFAB88331B680133FFAA88321360FFAB78331B685A1EFFAB88331B689A4205D9FFAB88331B681B78CA +:40170000002BE9D0FFAB88331B685A1CFFA988310A601B78012B04D0134BFFAA903213609BE0FFAB78331A68FFAB88331B68D31AFFAA74321360FFABAC331B68013315D0BF +:40174000FFABAC331B68FFAA743212689A420DD0054BFFAA903213607FE0C04670FBFFFF80BFFFFF8CFBFFFF00BFFFFFFFAB20331800FAF7AFFD0300FFAA90321360FFAB23 +:4017800090331B68002B5FD1FFA92C31FFAB203308221800FAF7B8FD0300FFAA90321360FFAB90331B68002B50D1FFABA0331A68FFABA4331968FFAB20331800FAF7A4FDD9 +:4017C0000300FFAA90321360FFAB90331B68002B3ED1FFAB74331A68FFAB88331968FFAB20331800FAF790FD0300FFAA90321360FFAB90331B68002B2CD1FFAA3432FFABE0 +:40180000203311001800FAF79DFD0300FFAA90321360FFAB90331B68002B1DD1FFAB80331A68FFA93431FFAB78331B68180016F05DFA031E11D00F4BFFAA903213600CE058 +:40184000C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C046FFAB20331800FAF7CAFCFFAB90331B6818009223DB009D4410BD80BCFFFF10B58CB00990089161 +:4018800007920693099BA8229B58002B04D0099BA8229B58DBB201E00EAB1B782F226A441370069C079A08990998119B059301235B4204932F236B441B780393109B02936E +:4018C0000F9B01930EAB1B7800932300FFF7C0FD030018000CB010BD10B58AB0059004910392029300230993059B5B6807930023069300230893029B012B06D1059BA422C2 +:401900009B58002B01D0384B6BE0079B1900012015F054FB03000693069B002B09D0079B1900012015F04AFB03000893089B002B03D110235B42099338E0079C0E9A0D999E +:401940000CAB1878089B00932300FFF7BBFB03000993099B002B26D1029B002B07D1069A0F99059B1800FEF7FDF8030009E00F9C039A04990598069B00932300FEF706FA72 +:4019800003000993099B002B0FD1079A0899069B1800FDF7BAFC03000993099B002B05D0124B099302E0C04600E0C046069B002B09D0079A069B11001800FDF73FF9069B4D +:4019C000180015F07FFE089B002B09D0079A089B11001800FDF732F9089B180015F072FE099B18000AB010BD80BFFFFF80BCFFFF10B588B00790069105920493079BA4226F +:401A00009B58002B02D0012B12D023E0049C059A069907980D9B03930C9B02930B9B01930AAB1B7800932300FFF756FF030012E0049C059A069907980D9B03930C9B02933F +:401A40000B9B01930AAB1B7800932300FFF714FF030000E0014B180008B010BD00BFFFFF00B583B00190019B8C331800ECF764FB019B98331800ECF75FFB019B6833180063 +:401A8000ECF75AFB019B20331800ECF755FB019B38331800ECF750FB019B2C331800ECF74BFB019B14331800ECF746FB019B08331800ECF741FB019B80331800ECF73CFB7D +:401AC000019B74331800ECF737FB019B5C331800ECF732FB019B50331800ECF72DFB019B44331800ECF728FBC04603B000BD000010B59EB0059004910392029300231D9300 +:401B000006AAB44B1000190036231A0016F014F936231B93029B002B0AD0209B002B07D0029B9B68002B03D1209B9B68002B02D004235B424AE1059B00211800EDF7B0FA31 +:401B4000031E1DDD039B01211800EDF7A9FA031E16DD059A039B11001800EDF709FA031E0EDA049B01211800EDF79AFA031E07DD059A049B11001800EDF7FAF9031E02DBEF +:401B800004235B4222E114AB1800ECF7C3FA17AB1800ECF7BFFA049A039917AB1800EEF7C3FB03001D931D9B002B00D0F2E017A917AB01221800EDF7C6FC03001D931D9BB4 +:401BC000002B00D0E8E017AB1800ECF7A8FD02006A236B441A806A236B441B88002B03D104235B421D93E8E06A236B441A8817AB11001800EDF7A0F803001D931D9B002BF3 +:401C000000D0CBE072236B4400221A80059B9B681B6807221340012B00D0AEE072236B4401221A80A9E072236B441B8806AAD35C1A0014AB11001800ECF7C6FC059A14A9AA +:401C4000029B1800EFF796FD03001D931D9B002B00D0A5E0029B01211800EDF721FA031E00D082E0059C17AA14A914A8209B00932300EFF775F803001D931D9B002B00D01D +:401C800090E01CAB01221A805EE014AB01211800EDF706FA031E5FD014A914AB01221800EDF72EFC03001D931D9B002B00D07BE0059A14A9029B1800EFF75CFD03001D933C +:401CC0001D9B002B00D071E0029B01211800EDF7E7F90300012B11D1059A029B11001800EDF746F90300013308D1029B059A20980021EEF733FC03001D935EE014A914AB06 +:401D000001221800EDF71FFC03001D931D9B002B4ED114AA14A914AB1800EEF705FB03001D931D9B002B45D1059A14A914AB1800EEF7FAFE03001D931D9B002B3CD11CAB57 +:401D40001CAA128801321A801CAA6A236B4412881B889A4299D900E0C04614AB01211800EDF79EF9031E10D100E0C04672236B4472226A44128801321A8072236B441A8894 +:401D80001B9B9A4200D24EE700E0C04604235B421D9312E0C04610E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04614AB1800ECF720 +:401DC000BBF917AB1800ECF7B7F91D9B18001EB010BDC0467C3D041000B58DB0039002910192009300230B93009B002B06D0009B00211800EDF754F9031E02D004235B422D +:401E000071E0039B01211800EDF74AF9031E0DDD029B01211800EDF743F9031E06DD019B00211800EDF73CF9031E02D104235B4259E008AB1800ECF76DF905AB1800ECF7AE +:401E400069F9039908AB01221800EDF77CFB03000B930B9B002B34D1029905AB01221800EDF771FB03000B930B9B002B2BD105AA08A9009B1800EFF77DFC03000B930B9BA7 +:401E8000002B22D105AA08A908AB1800EEF74CFA03000B930B9B002B19D1009B08AA08A80021EEF75BFB03000B930B9B002B10D108AA0199009B1800EFF780FD03000B93A3 +:401EC00008E0C04606E0C04604E0C04602E0C04600E0C04608AB1800ECF72EF905AB1800ECF72AF90B9B18000DB000BD00B58DB0039002910192009300230B9308AB1800AB +:401F0000ECF708F905AB1800ECF704F9009B002B33D0039B002B02D1644B0B93A9E0039908AB01221800EDF70EFB03000B930B9B002B00D08CE0019A009905AB1800EDF7D5 +:401F400091FA03000B930B9B002B00D082E008AA05A905AB1800EEF7E7FD03000B930B9B002B00D078E005AB00211800EDF798F8031E02D04E4B0B937BE00E9B002B30D0F1 +:401F8000029B002B02D1494B0B9372E0029908AB01221800EDF7D7FA03000B930B9B002B5CD1019A0E9905AB1800EDF75BFA03000B930B9B002B53D108AA05A905AB180024 +:401FC000EEF7B2FD03000B930B9B002B4AD105AB00211800EDF764F8031E02D0344B0B9347E00F9B002B44D0039B002B02D0029B002B02D12D4B0B933BE0029A0F9908AB19 +:402000001800EEF791F903000B930B9B002B2BD108A908AB01221800EDF795FA03000B930B9B002B22D1039A08A908AB1800EEF77BFD03000B930B9B002B19D108AB00218E +:402040001800EDF72DF8031E13D0194B0B9310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C0460B9B002B0CD00B9B0D4A934208D084 +:402080000B9B0A4A934204D00B9B094A944663440B9308AB1800ECF74FF805AB1800ECF74BF80B9B18000DB000BDC04680BFFFFF00BEFFFF00B58DB003900291019200930D +:4020C00000230B9308AB1800ECF724F805AB1800ECF720F8029B002B23D0019B002B20D0039B002B1DD0019A029908AB1800EEF71BF903000B930B9B002B00D0C8E0039BE8 +:4021000001211800ECF7CCFF031E07DD039A08AB11001800ECF72CFF031E02D0714B0B93C7E0039B002B26D0009B002B23D00E9B002B20D0009B01211800ECF7B1FF031E72 +:4021400016DD0E9B01211800ECF7AAFF031E0FDD039A009B11001800ECF70AFF031E07DA039A0E9B11001800ECF702FF031E02DB5C4B0B939DE0029B002B00D199E0019BE0 +:40218000002B00D195E0009B002B00D191E00E9B002B00D18DE0029B01211800ECF780FF031E06DD019B01211800ECF779FF031E02DC4C4B0B937CE00E9A009908AB18008A +:4021C000EEF7B2F803000B930B9B002B62D108A908AB01221800EDF7B6F903000B930B9B002B59D1029905AB01221800EDF7ABF903000B930B9B002B50D105AA08A908AB29 +:402200001800EEF791FC03000B930B9B002B47D108AB00211800ECF743FF031E02D0314B0B9346E00E9A009908AB1800EEF77CF803000B930B9B002B34D108A908AB0122E3 +:402240001800EDF780F903000B930B9B002B2BD1019905AB01221800EDF775F903000B930B9B002B22D105AA08A908AB1800EEF75BFC03000B930B9B002B19D108AB0021A8 +:402280001800ECF70DFF031E13D0164B0B9310E0C0460EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C04608AB1800EBF73FFF05AB1800EBF721 +:4022C0003BFF0B9B002B08D00B9B064A934204D00B9B044A944663440B930B9B18000DB000BDC04600BEFFFF00B589B003900291019200930023079304AB1800EBF70AFFA6 +:40230000009B002B15D0039904AB01221800EDF71AF903000793079B002B2FD104AA0199009B1800EEF700FC03000793079B002B26D10A9B002B15D0029904AB0122180094 +:40234000EDF701F903000793079B002B1AD104AA01990A9B1800EEF7E7FB03000793079B002B11D10B9B002B0FD0039A02990B9B1800EFF723FB0300079306E0C04604E0FB +:40238000C04602E0C04600E0C04604AB1800EBF7D3FE079B180009B000BD00B583B00190019B6C220021180015F058FDC04603B000BD00B583B00190019B002B05D0019B42 +:4023C0006C211800FCF73AFC00E0C04603B000BD00B583B001900091019A009B100019006C231A0015F0A8FCC04603B000BD000082B001900091019B00221A60019B00223E +:402400005A60009B002B18D1019B1B4A9A60019B1A4ADA60019B1A4A1A61019B194A5A61019B194A9A61019B184ADA61019B184A1A62019B174A5A6217E0019B164A9A6076 +:40244000019B164ADA60019B154A1A61019B154A5A61019B144A9A61019B144ADA61019B134A1A62019B134A5A62019B009A9A660023180002B0704767E6096A85AE67BBB7 +:4024800072F36E3C3AF54FA57F520E518C68059BABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964A44FFABE70B5CEB00190009106 +:4024C00000234D930EE0019B4D9A02329200D1581F4B4EAA944663444D9A9200D1504D9B01334D934D9B072BEDD900234D9327E04D9B9B00009AD3181B781A064D9B9B00D8 +:4025000001330099CB181B781B041A434D9B9B0002330099CB181B781B0213434D9A9200033200998A18127813431900094B4EAA944663444D9A9200D1504D9B01334D935D +:402540004D9B0F2BD4D900234D9300F09EFCC046D4FEFFFFF4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C34150 +:402580005940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B6963400340A4 +:4025C0004B40D218E44B4D998900CB58D218E34B4EA98C4663444D998900CB58D3184C93DC4B4EAA944663441B680222D3411A00D84B4EA98C4663441B680D21CB415A4062 +:40260000D44B4EA98C4663441B681621CB415A40D04B4EA98C4663441968CE4B4EA8844663445B681940CB4B4EA8844663449868C84B4EACA44663441C68C64B4EADAC4666 +:4026400063445B68234303400B43D3184B93C14B4EAA94466344DA684C9BD218BD4B4EA98C466344DA604C9A4B9BD218B94B4EA98C466344DA61B74B4EAA944663449A6903 +:40268000B44B4EA98C466344DB680621CB411900B04B4EA884466344DB680B20C3415940AC4B4EA884466344DB681920C3414B40D218A84B4EA98C4663445969A54B4EA851 +:4026C00084466344D868A34B4EACA44663441C69A04B4EADAC4663445B69634003404B40D2184D9B591C9C4B8900CB58D2184D9B591C9A4B4EA8844663448900CB58D31873 +:402700004C93944B4EAA94466344DB690222D3411A00904B4EA98C466344DB690D21CB415A408C4B4EA98C466344DB691621CB415A40884B4EA98C466344D969854B4EA8B6 +:40274000844663441B681940824B4EA8844663445868804B4EACA4466344DC697D4B4EADAC4663441B68234303400B43D3184B93784B4EAA944663449A684C9BD218754B0F +:402780004EA98C4663449A604C9A4B9BD218714B4EA98C4663449A616E4B4EAA944663445A696C4B4EA98C4663449B680621CB411900684B4EA8844663449B680B20C3411B +:4027C0005940644B4EA8844663449B681920C3414B40D2185F4B4EA98C46634419695D4B4EA88446634498685A4B4EACA4466344DC68584B4EADAC4663441B6963400340B5 +:402800004B40D2184D9B991C534B8900CB58D2184D9B991C514B4EA8844663448900CB58D3184C934B4B4EAA944663449B690222D3411A00474B4EA98C4663449B690D21A3 +:40284000CB415A40434B4EA98C4663449B691621CB415A403F4B4EA98C46634499693D4B4EA884466344DB6919403A4B4EA8844663441868374B4EACA44663449C69354B4D +:402880004EADAC466344DB69234303400B43D3184B93304B4EAA944663445A684C9BD2182C4B4EA98C4663445A604C9A4B9BD218284B4EA98C4663445A61264B4EAA9446C1 +:4028C00063441A69234B4EA98C4663445B680621CB4119001F4B4EA8844663445B680B20C34159401B4B4EA8844663445B681920C3414B40D218174B4EA98C466344D96810 +:40290000144B4EA8844663445868124B4EACA44663449C680F4B4EADAC466344DB68634003404B40D2184D9BD91C0B4B8900CB58D2184D9BD91C094B4EA8844663448900AF +:40294000CB58D3184C93034B4EAA944663445B6906E0C046D4FEFFFFB43D0410F4FEFFFF0222D3411A00FE4B4EA98C4663445B690D21CB415A40FA4B4EA98C4663445B6912 +:402980001621CB415A40F64B4EA98C4663445969F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C69EB4B4EADAC4663449B69234303400B4394 +:4029C000D3184B93E64B4EAA944663441A684C9BD218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA94466344DA68DA4B4EA98C4663441B6834 +:402A00000621CB411900D64B4EA8844663441B680B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663449968CB4B4EA8844663441868C84B4EAC2B +:402A4000A44663445C68C64B4EADAC4663449B68634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA8844663448900CB58D3184C93B94B4EAA94466344BC +:402A80001B690222D3411A00B54B4EA98C4663441B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C4663441969AB4B4EA8844663445B691940A84B54 +:402AC0004EA8844663449869A54B4EACA44663441C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA694C9BD2189A4B4EA98C466344DA614C9A7C +:402B00004B9BD218964B4EA98C466344DA60944B4EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA884466344DB690B20C3415940894B4EA8844663447E +:402B4000DB691920C3414B40D218854B4EA98C4663445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663445B68634003404B40D2184D9B591D794B73 +:402B80008900CB58D2184D9B591D774B4EA8844663448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C466344DB680D21CB415A40694B4EA98C46FC +:402BC0006344DB681621CB415A40654B4EA98C466344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA4466344DC685A4B4EADAC4663441B69234350 +:402C000003400B43D3184B93554B4EAA944663449A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A604B4B4EAA944663445A68494B4EA98C465E +:402C400063449B690621CB411900454B4EA8844663449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA98C46634419683A4B4EA88446634498698C +:402C8000374B4EACA4466344DC69354B4EADAC4663441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA8844663448900CB58D3184C93284B4EAAC2 +:402CC000944663449B680222D3411A00244B4EA98C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA98C46634499681A4B4EA884466344DB68A6 +:402D00001940174B4EA8844663441869144B4EACA44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA944663445A694C9BD218094B4EA98C466344E5 +:402D40005A614C9A4B9BD218054B4EA98C4663445A60034B4EAA944663441A6806E0C046D4FEFFFFB43D0410F4FEFFFF4B4B4EA98C4663445B690621CB411900474B4EA8D0 +:402D8000844663445B690B20C3415940434B4EA8844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634458693A4B4EACA44663449C69374B4EAD2E +:402DC000AC466344DB69634003404B40D2184D9BD91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4B4EAA944663445B680222D3411A00274BFC +:402E00004EA98C4663445B680D21CB415A40234B4EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA8844663449B681940194B4EA884466344D868174BDB +:402E40004EACA44663445C68144B4EADAC4663449B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4663441A614C9A4B9BD218084B4EA98C4612 +:402E800063441A604D9B08334D934D9B0F2B01D8FFF762FB10234D9300F08CFFD4FEFFFFB43D0410F4FEFFFFFE4B4EAA94466344DA69FC4B4EA98C4663441B690621CB41DA +:402EC0001900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B4EA8844663441869EA4B4EACA44663445B +:402F00005C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB581121CB4119004D9B981EDC4B4EACA446634475 +:402F40008000C3581320C34159404D9B981ED74B4EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D9B0F3B1800CD4B4EACA4466344800052 +:402F8000C3580720C34118004D9B0F3B1C00C74B4EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400E358DB084340C9184D9B103B1800BB4B89 +:402FC0004EACA44663448000C358C818B74B4EA98C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA944663441B680222D3411A00A94B4EA9D6 +:403000008C4663441B680D21CB415A40A54B4EA98C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B6819409C4B4EA8844663449868994B4EAC8A +:40304000A44663441C68974B4EADAC4663445B68234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C466344DA604C9A4B9BD2188A4B4EA98C4663445B +:40308000DA61884B4EAA944663449A69854B4EA98C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA884466344DB681920C3414B40D218794B91 +:4030C0004EA98C4663445969764B4EA884466344D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9B591C6D4B8900CB58D2184D9B01334D994B +:40310000481E6A494EACA4466144800041581120C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F494EADAC466144A4006158890A48404D99E4 +:403140008C1F5A494EADAC466144A400615840184D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F494EAEB4466144AD0069581225E9414C40D3 +:403180004D990E390D0049494EAEB4466144AD006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA884466144980044503C494EA8844661445C +:4031C0009B005B58D3184C93364B4EAA94466344DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344DB691621CB415A402A4B4EA98C46634433 +:40320000D969284B4EA8844663441B681940254B4EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B68234303400B43D3184B931B4B4EAA944663449A689F +:403240004C9BD218174B4EA98C4663449A604C9A4B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C4663449B680621CB4119000A4B4EA884466344C6 +:403280009B680B20C3415940064B4EA8844663449B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFFB43D0410F4FEFFFF63441969FE4B4EA8844663449868FC4BEF +:4032C0004EACA4466344DC68F94B4EADAC4663441B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA8844661444D98800041581120C1410800EE49A7 +:403300004EACA44661444D9CA40061581324E1414840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A400615840184D990D390C00DE494EADA3 +:40334000AC466144A40061580724E1410C004D990D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAEB4466144AD006958C908614040184D99A3 +:403380000E390C00CC494EADAC466144A40061584418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B4EAA944663449B690222D3411A00BC4B4A +:4033C0004EA98C4663449B690D21CB415A40B84B4EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA884466344DB691940AE4B4EA8844663441868AC4BE9 +:403400004EACA44663449C69A94B4EADAC466344DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C4663445A604C9A4B9BD2189D4B4EA98C46F8 +:4034400063445A619A4B4EAA944663441A69984B4EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B4EA8844663445B681920C3414B40D2181F +:403480008B4B4EA98C466344D968894B4EA8844663445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D2184D9BD91C7F4B8900CB58D2184D9B0333CE +:4034C0004D99481C7C494EACA4466144800041581120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C71494EADAC466144A4006158890A4840F0 +:403500004D990C1F6C494EADAC466144A400615840184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0061494EAEB4466144AD0069581225E94103 +:403540004C404D990C390D005B494EAEB4466144AD006958C908614040184D990D390C0055494EADAC466144A4006158441852494EA884466144980044504F494EA884466B +:4035800061449B005B58D3184C93494B4EAA944663445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4663445B691621CB415A403D4B4EA98C46A5 +:4035C000634459693A4B4EA8844663449B691940374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B69234303400B43D3184B932D4B4EAA9446634459 +:403600001A684C9BD2182A4B4EA98C4663441A604C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4663441B680621CB4119001D4B4EA88446CA +:4036400063441B680B20C3415940194B4EA8844663441B681920C3414B40D218144B4EA98C4663449968124B4EA88446634418680F4B4EACA44663445C680D4B4EADAC4656 +:4036800063449B68634003404B40D2184D9B191D084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C046D4FEFFFFB43D0410F4FEFFFF1120C14181 +:4036C00008004D998C1CFE494EADAC466144A40061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1EF3494EADAC466144A400615840184D990B +:403700000B390C00EE494EADAC466144A40061580724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D990B390D00E2494EAEB4466144AD006958F1 +:40374000C908614040184D990C390C00DC494EADAC466144A40061584418D9494EA88446614498004450D6494EA8844661449B005B58D3184C93D34B4EAA944663441B696E +:403780000222D3411A00CF4B4EA98C4663441B690D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C4663441969C44B4EA8844663445B691940C14B4EA855 +:4037C000844663449869BF4B4EACA44663441C69BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BD218B44B4EA98C466344DA614C9A4B9B19 +:40380000D218B04B4EA98C466344DA60AD4B4EAA944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB690B20C3415940A34B4EA884466344DB6992 +:403840001920C3414B40D2189E4B4EA98C46634459689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B68634003404B40D2184D9B591D924B8900A2 +:40388000CB58D2184D9B05334D99C81C8C494EACA4466144800041581120C14108004D99CC1C87494EADAC466144A40061581324E14148404D99CC1C81494EADAC466144C7 +:4038C000A4006158890A48404D998C1E7C494EADAC466144A400615840184D990A390C0077494EADAC466144A40061580724E1410C004D990A390D0071494EAEB4466144EC +:40390000AD0069581225E9414C404D990A390D006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC466144A4006158441862494EA884466144980098 +:4039400044505F494EA8844661449B005B58D3184C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB415A40544B4EA98C466344DB681621CB411A +:403980005A40504B4EA98C466344D9684D4B4EA8844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EADAC4663441B69234303400B43D3184B93BE +:4039C000404B4EAA944663449A694C9BD2183D4B4EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA944663445A68344B4EA98C4663449B690621CB4176 +:403A00001900304B4EA8844663449B690B20C34159402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B4EA8844663449869224B4EACA4466344F8 +:403A4000DC69204B4EADAC4663441B68634003404B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA4466144800041581120C14108004D990C1D1049BB +:403A80004EADAC466144A40061581324E14148404D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144A400615840184D9909390C0006E0C046C5 +:403AC000F4FEFFFFD4FEFFFFB43D0410CB494EADAC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD0069581225E9414C404D9909390D00BF494EAE33 +:403B0000B4466144AD006958C908614040184D990A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3494EA8844661449B005B58D3184C93B04B28 +:403B40004EAA944663449B680222D3411A00AC4B4EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B4EA98C4663449968A14B4EA88446634443 +:403B8000DB6819409E4B4EA88446634418699C4B4EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA944663445A694C9BD218914B4EA98C4616 +:403BC00063445A614C9A4B9BD2188D4B4EA98C4663445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B4EA8844663445B690B20C3415940804BFB +:403C00004EA8844663445B691920C3414B40D2187B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B4EADAC466344DB69634003404B40D21800 +:403C40004D9BD91D6F4B8900CB58D2184D9B07334D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC466144A40061581324E14148404D994C1DFF +:403C80005E494EADAC466144A4006158890A48405A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40061580724E1410C004D9908390D004F49A4 +:403CC0004EAEB4466144AD0069581225E9414C404D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043494EADAC466144A400615844183F494EA8AC +:403D000084466144980044503C494EA8844661449B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663445B680D21CB415A40314B4EA98C46634461 +:403D40005B681621CB415A402D4B4EA98C46634459682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663445C68234B4EADAC4663449B68234303403A +:403D80000B43D3184B931E4B4EAA944663441A694C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B08334D934D9B3F2B01D8FFF775F80023B1 +:403DC0004D9314E0019B4D9A02329200D2580C4B4EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B072BE7D9002318004EB070BDF4FEFFFFA4 +:403E0000D4FEFFFFB43D041000B589B0039002910192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039B1A68019BD218039B1A60039B1A68039B8A +:403E40001A60039B1A68019B9A4204D2039B5B685A1C039B5A60079B002B3AD0019A069B9A4236D3039B28331A00079BD318069A0299180013F060FF039B28331A00039B2D +:403E800011001800FEF718FB03000593059B002B01D0059B2EE0029A069BD3180293019A069BD31A01930023079312E0029A039B11001800FEF700FB03000593059B002B0A +:403EC00001D0059B16E0029B40330293019B403B0193019B3F2BE9D8019B002B09D0039B28331A00079BD318019A0299180013F023FF0023180009B000BD00B587B0019063 +:403F00000091019B1B683F2213400593059B5A1C0592019A2821D3185B1880221A70059B382B0CD8019B28331A00059BD018059B3822D31A1A00002113F090FF21E0019B99 +:403F400028331A00059BD018059B4022D31A1A00002113F083FF019B28331A00019B11001800FEF7A9FA03000493049B002B01D0049B43E1019B283338220021180013F0A2 +:403F80006DFF019B1B685A0F019B5B68DB0013430393019B1B68DB000293039B1B0ED9B2019B60229954039B1B0CD9B2019B61229954039B1B0AD9B2019B62229954039BA6 +:403FC000D9B2019B63229954029B1B0ED9B2019B64229954029B1B0CD9B2019B65229954029B1B0AD9B2019B66229954029BD9B2019B67229954019B28331A00019B110013 +:404000001800FEF759FA03000493049B002B01D0049BF3E0019B9B681B0EDAB2009B1A70009B5A1C019B9B681B0CDBB21370009B9A1C019B9B681B0ADBB21370009BDA1C63 +:40404000019B9B68DBB21370009B1A1D019BDB681B0EDBB21370009B5A1D019BDB681B0CDBB21370009B9A1D019BDB681B0ADBB21370009BDA1D019BDB68DBB21370009BFD +:4040800008331A00019B1B691B0EDBB21370009B09331A00019B1B691B0CDBB21370009B0A331A00019B1B691B0ADBB21370009B0B331A00019B1B69DBB21370009B0C33C6 +:4040C0001A00019B5B691B0EDBB21370009B0D331A00019B5B691B0CDBB21370009B0E331A00019B5B691B0ADBB21370009B0F331A00019B5B69DBB21370009B10331A0097 +:40410000019B9B691B0EDBB21370009B11331A00019B9B691B0CDBB21370009B12331A00019B9B691B0ADBB21370009B13331A00019B9B69DBB21370009B14331A00019BC4 +:40414000DB691B0EDBB21370009B15331A00019BDB691B0CDBB21370009B16331A00019BDB691B0ADBB21370009B17331A00019BDB69DBB21370009B18331A00019B1B6A8B +:404180001B0EDBB21370009B19331A00019B1B6A1B0CDBB21370009B1A331A00019B1B6A1B0ADBB21370009B1B331A00019B1B6ADBB21370019B9B6E002B1ED1009B1C3338 +:4041C0001A00019B5B6A1B0EDBB21370009B1D331A00019B5B6A1B0CDBB21370009B1E331A00019B5B6A1B0ADBB21370009B1F331A00019B5B6ADBB213700023180007B068 +:4042000000BD00B5A1B0039002910192009304AB1800FEF7C2F8009A04AB11001800FEF7E7F803001F931F9B002B13D1029A039904AB1800FFF7E8FD03001F931F9B002BC1 +:404240000AD1019A04AB11001800FFF756FE03001F9302E0C04600E0C04604AB1800FEF7A8F81F9B180021B000BD00B583B00190019BD8220021180013F0F0FDC04603B076 +:4042800000BD00B583B00190019B002B05D0019BD8211800FAF7D2FC00E0C04603B000BD00B583B001900091019A009B10001900D8231A0013F040FDC04603B000BD000036 +:4042C00010B582B001900091019A0023002413605460019A002300249360D460009B002B28D1019A2B4B2C4C13615461019A2B4B2B4C9361D461019A2A4B2B4C13625462BF +:40430000019A2A4B2A4C9362D462019A294B2A4C13635463019A294B294C9363D463019A284B294C13645464019A284B284C9364D46427E0019A274B274C13615461019ABB +:40434000264B274C9361D461019A264B264C13625462019A254B264C9362D462019A254B254C13635463019A244B254C9363D463019A244B244C13645464019A234B244C6C +:404380009364D464019BD021009A5A500023180002B010BD08C9BCF367E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2BEA +:4043C0008C68059B6BBD41FBABD9831F79217E1319CDE05BD89E05C15D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF67263367111558683A +:40440000874AB48EA78FF9640D2E0CDBA44FFABE1D48B547F0B5874CA544874B6B441860A723DB006B4419600023844A6A441360F9E0824B6B441B68DB001A00A723DB00FD +:404440006B441B689B181B78069300230793069B1B06099300230893784B6B441B68DB005A1CA723DB006B441B689B181B780A9300230B930A9B1B040D9300230C930898CB +:40448000099904000C9A0D9B15002C430E9419430F916A4B6B441B68DB009A1CA723DB006B441B689B181B78109300231193109B1B021393002312930E980F990400129AB3 +:4044C000139B15002C431494194315915B4B6B441B68DB00DA1CA723DB006B441B689B181B78169300231793169B1B00199300231893149815990400189A199B15002C4316 +:404500001A9419431B914D4B6B441B68DB001A1DA723DB006B441B689B181B781C9300231D931C9A1D9B1100090A1F9113001B061E931A981B9904001E9A1F9B15002C43C3 +:404540002094194321913D4B6B441B68DB005A1DA723DB006B441B689B181B782293002323932299239A0B001B0C100007041F430B001E04209A219B1100314324913B4340 +:4045800025932E4B6B441B68DB009A1DA723DB006B441B689B181B782693002327932699279A0B001B0E1000000201900198184301900B001B020093249A259B1100009C91 +:4045C000019D2000014328912A00134329931B4B6B441B68DB00DA1DA723DB006B441B689B181B782A9300232B932898299904002A9A2B9B15002C432C9419432D91104BD6 +:40460000104A6A44D2180D4B6B441B68DB00D3182C992D9A19605A60084B6B441B680133064A6A441360054B6B441B680F2B00DCFFE6E5E0E4F7FFFF3C05000014080000D7 +:4046400028FDFFFF18080000EB4B6B441B68991EEA4BEB4A6A44D218CB00D3185C681B686103DA0C11432E915A03E30C1A432F92E14B6B441B68991EE04BE14A6A44D2180F +:40468000CB00D3185C681B68590FE20011433191620FDB001A4330922E992F9A0800309B319C1D006840329023005A403392D24B6B441B68991ED14BD14A6A44D218CB0059 +:4046C000D3185C681B68A20699090291029911430291A30903933299339A0800029B039C1D006840349023005A403592C24B6B441B68D91FC14BC24A6A44D218CB00D31861 +:404700005C681B68349D359EED186641BA4B6B441B680F3B1900B94BB94A6A44D218CB00D3185C681B68E1075A0811433691DA0763081A433792B04B6B441B680F3B190045 +:40474000AE4BAF4A6A44D218CB00D3185C681B6821061A0A114338911A06230A1A4339923699379A0800389B399C1F0078403A9023005A403B92A04B6B441B680F3B1900DA +:404780009E4B9F4A6A44D218CB00D3185C681B686206D9090491049911430491E30905933A993B9A0800049B059C1F0078403C9023005A403D923C993D9A491972418E4BF0 +:4047C0006B441B68103B1C008C4B8D486844C018E300C3185C681B68C9186241874B88486844C018844B6B441B68DB00C31819605A60814B6B441B6801337F4A6A4413603B +:404800007D4B6B441B684F2B00DC1DE77D4B6B441B685C691B697C4A6A4413605460794B6B441B68DC699B69802212016A4413605460744B6B441B685C6A1B6AFF22D2004E +:404840006A44136054606F4B6B441B68DC6A9B6AFE22D2006A44136054606A4B6B441B685C6B1B6BFD22D2006A4413605460654B6B441B68DC6B9B6BFC22D2006A4413602B +:404880005460604B6B441B685C6C1B6CFB22D2006A44136054605B4B6B441B68DC6C9B6CFA22D2006A44136054600023524A6A441360564B6B441B689A04FD23DB006B446F +:4048C0001B689B0B1A433E92FD23DB006B441B689A044E4B6B441B689B0B1A433F924B4B6B441B689A03FD23DB006B441B689B0C1A434092FD23DB006B441B689A03434B38 +:404900006B441B689B0C1A4341923E993F9A0800409B419C1D006840429023005A404392FD23DB006B441B685A0A384B6B441B68DB051A434592354B6B441B685A0AFD2345 +:40494000DB006B441B68DB051A4344924299439A0800449B459C1D006840469023005A404792FA23DB006B445C681B6846984799C0186141FC23DB006B441A68FB23DB001C +:404980006B441B685A404892214B6B441A68214B6B441B685A404992FD23DB006B441A68489C499D230013404A93184B6B441A682B0013404B93FB23DB006B441B684A9C57 +:4049C0004B9D22005A404C92124B6B441B682A005A404D924C9B4D9C1B184C41190022000D48054B6B441B68DB00C3185C681B68C918624112E0C0461408000028FDFFFFA9 +:404A0000180800003C05000008080000EC070000E4070000DC070000B83E0410EF4BF0486844C018EF4B6B441B68DB00C3185C681B685B185441F922D2006A441360546011 +:404A4000E94B6B441B681A01E84B6B441B681B0F1A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A08DD4B6B441B689B071A435192DA4B6B4496 +:404A80001B689A08D94B6B441B689B071A4350924E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B6B441B685B061A435592CB4B6B441B6838 +:404AC000DA09CA4B6B441B685B061A4354925299539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B441B6813405893BC4B6B441A68BC4B6B447D +:404B00001B6813405993B94B6B441A6880231B016B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A685A985B99030013405C93AE4B6B441A6817 +:404B40000B0013405D935899599A08005C9B5D9C1D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A4413605460FE23DB006B4419685A68F923DB00A2 +:404B80006B445C681B685B185441FE22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D2006A44136054608B4B6B441B680133894A81 +:404BC0006A4413608C4B6B441B689A04FE23DB006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A436192814B6B441B689A03FE23DB006B441B683E +:404C00009B0C1A436292FE23DB006B441B689A03794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A406592FE23DB006B441B685A0A6E4B6B4463 +:404C40001B68DB051A4367926B4B6B441B685A0AFE23DB006B441B68DB051A4366926499659A0800669B679C1D006840689023005A406992FB23DB006B445C681B68689860 +:404C80006999C0186141FD23DB006B441A68FC23DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441A686A9C6B9D230013406C934E4B6B4453 +:404CC0001A682B0013406D93FC23DB006B441B686C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900220044483B4B6B441B68DB00C3185C6862 +:404D00001B68C9186241354B35486844C018354B6B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B681A01FA23DB006B441B681B0F1A437092F0 +:404D4000FA23DB006B441B681A012F4B6B441B681B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B441B689A08FA23DB006B441B689B071A43D4 +:404D800072927099719A0800729B739C1D006840749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B6B441B68DA09FA23DB006B441B685B06BF +:404DC0001A4376927499759A0800769B779C1D006840789023005A4018E0C04628FDFFFF18080000140800000C0800000808000004080000FC070000F4070000EC070000FE +:404E0000E4070000B83E0410D40700007992FA23DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B93FA23DB006B441A68E44B6B441B681A438D +:404E40007C92E34B6B441A68E24B6B441B681A437D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F937A997B9A08007E9B7F9C1D0028438090B5 +:404E800023001A438192789B799C8099819A5B185441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B685B185441FF22D2006A4413605460F92372 +:404EC000DB006B4419685A68F823DB006B445C681B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4B6B441B689A04FF23DB006B441B689B0BEB +:404F00001A438292FF23DB006B441B689A04B44B6B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A438492FF23DB006B441B689A03A94B6B441B68E4 +:404F40009B0C1A4385928299839A0800849B859C1D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A4389929B4B6B441B685A0AFF23DB006B44B7 +:404F80001B68DB051A4388928699879A0800889B899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141FE23DB006B441A68FD23DB006B441B68C4 +:404FC0005A408C92874B6B441A68874B6B441B685A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B0013408F93FD23DB006B441B688E9C8F9D2200E3 +:405000005A409092784B6B441B682A005A409192909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C91862416F4B70486844C018684B6B441B68DB00A7 +:40504000C3185C681B685B185441F922D2006A4413605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B441B681A01604B6B441B681B0F1A4393929F +:40508000FB23DB006B441B689A085B4B6B441B689B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939A0800949B959C1D006840969023005A40F6 +:4050C0009792FB23DB006B441B68DA094A4B6B441B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699979A0800989B999C1D0068409A9023002D +:405100005A409B92FB23DB006B441A68FA23DB006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A68FA23DB006B441B681A439E922E4B6B44EA +:405140001A68234B6B441B681A439F921F4B6B441A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09BA19C1D002843A29023001A43A3929A9B32 +:405180009B9CA299A39A5B185441F822D2006A441360546080231B016B4419685A68F923DB006B445C681B685B185441802212016A4413605460F923DB006B4419685A685E +:4051C000F823DB006B445C681B6817E008080000D40700000C0800000408000014080000FC070000F4070000EC070000B83E041028FDFFFF18080000DC0700005B1854417C +:40520000FC22D2006A4413605460EF4B6B441B680133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A49280231B016B441B689A04E44B6B441B689B0BEA +:405240001A43A592E14B6B441B689A0380231B016B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A792A499A59A0800A69BA79C1D006840A8904C +:4052800023005A40A99280231B016B441B685A0ACE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A43AA92A899A99A0800AA9BAB9C1D006840E9 +:4052C000AC9023005A40AD92FD23DB006B445C681B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B6B441A68B74B6B441B685A40AF92802365 +:405300001B016B441A68AE9CAF9D23001340B093AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B6B441B682A005A40B392B29BB39C1B181F +:405340004C4119002200A4489F4B6B441B68DB00C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B685B185441F922D2006A4413605460994BC4 +:405380006B441B681A01FC23DB006B441B681B0F1A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B441B689A088B4B6B441B689B071A43B79266 +:4053C000884B6B441B689A08FC23DB006B441B689B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB006B441B68DA097B4B6B441B685B061A4371 +:40540000BB92784B6B441B68DA09FC23DB006B441B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23DB006B441A68FB23DB006B441B681340F3 +:40544000BE93684B6B441A68674B6B441B681340BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B441B681A43C192FA23DB006B441A68C09882 +:40548000C19903001340C293584B6B441A680B001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC499C59A5B185441F822D2006A441360546003 +:4054C0004B4B6B4419685A68F923DB006B445C681B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FD22D2006A441360546027 +:40550000314B6B441B6801332F4A6A441360394B6B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B689B0B1A43C7922F4B6B441B689A032C4B74 +:405540006B441B689B0C1A43C892294B6B441B689A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA9023005A40CB921E4B6B441B685A0A1D4B6B4475 +:405580001B68DB051A43CD921A4B6B441B685A0A174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A40CF92FE23DB006B445C681B68CE98CF9901 +:4055C000C0186141802317E01408000004080000FC070000F4070000B83E041028FDFFFF18080000E4070000DC070000D4070000080800000C0800001B016B441A68FF23E8 +:40560000DB006B441B685A40D092EF4B6B441A68EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A682B001340D393FF23DB006B441B68D29C89 +:40564000D39D22005A40D492E04B6B441B682A005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B68C9186241DA4BDB486844C018D74B6B4497 +:405680001B68DB00C3185C681B685B185441F922D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB006B441B681A01CB4B6B441B681B0F5F +:4056C0001A43D792FD23DB006B441B689A08C64B6B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D892D699D79A0800D89BD99C1D006840DA90F1 +:4057000023005A40DB92FD23DB006B441B68DA09B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43DC92DA99DB9A0800DC9BDD9C1D006840C0 +:40574000DE9023005A40DF92FD23DB006B441A68FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB006B441A68FC23DB006B441B681A43E29242 +:40578000994B6B441A68994B6B441B681A43E392FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E099E19A0800E49BE59C1D002843E6902300FD +:4057C0001A43E792DE9BDF9CE699E79A5B185441F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B185441FA22D2006A4413605460F923DB007D +:405800006B4419685A68F823DB006B445C681B685B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B441B689A04FA23DB006B441B689B0B1A430A +:40584000E892FA23DB006B441B689A04694B6B441B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23DB006B441B689A035E4B6B441B689B0C0F +:405880001A43EB92E899E99A0800EA9BEB9C1D006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF92504B6B441B685A0AFA23DB006B441B6802 +:4058C000DB051A43EE92EC99ED9A0800EE9BEF9C1D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384B6B441A6880231B016B441B685A40F292FC +:40590000344B6B441A68304B6B441B685A40F392FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F59380231B016B441B68F49CF59D22005A40F6929A +:40594000214B6B441B682A005A40F792F69BF79C1B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D486844C018194B6B441B68DB00C3185C6838 +:405980001B685B185441F922D2006A4413605460194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01114B6B441B681B0F1A43F992FE23DB00C5 +:4059C0006B441B689A0819E004080000FC070000080800000C080000B83E04101408000028FDFFFF18080000EC070000E4070000DC070000D4070000F4070000F24B6B44BB +:405A00001B689B071A43FB92EF4B6B441B689A08FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC9023005A40FD92FE23DB006B441B68DA09E24B5D +:405A40006B441B685B061A43FF92DF4B6B441B68DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFAD0435286023005A40FFAB08331A60FE2313 +:405A8000DB006B441A68FD23DB006B441B681340FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B441A68FD23DB006B441B681A43FFAB143317 +:405AC0001A60C14B6B441A68C04B6B441B681A43FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360B74B6B441A680B001340FFAA20321360CA +:405B0000FFAB0C3319685A680800FFAB1C335C681B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA2432116852685B185441F822D2006A44E1 +:405B400013605460FB23DB006B4419685A68F923DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FF225C +:405B8000D2006A4413605460924B6B441B680133904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A60FB23DB006B441B689A04874B6B441B68D7 +:405BC0009B0B1A43FFAB30331A60834B6B441B689A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6B441B689B0C1A43FFAB38331A60FFABC8 +:405C00002C3319685A680800FFAB34335C681B681D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4B6B441B68DB051A43FFAB48331A60664BA1 +:405C40006B441B685A0AFB23DB006B441B68DB051A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD4C35286023005A40FFAB50331A6080233E +:405C80001B016B445C681B68FFAA4C3210685168C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A684C4B6B441B685A40FFAB58331A60FB23CD +:405CC000DB006B441A68FFAB54331C685D6823001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA5C321468556822005A40FFAB64331A6077 +:405D0000384B6B441B682A005A40FFAB68331A60FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B68C91862412D4B2E486844C018254B6B4474 +:405D40001B68DB00C3185C681B685B185441F922D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C331A60FF23DB006B441B681A011D4B6B4441 +:405D80001B681B0F1A43FFAB70331A60FF23DB006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23DB006B441B689B071A43FFAB74331A60B4 +:405DC000FFAB6C3318E0C046F4070000EC070000E407000014080000DC07000008080000D40700000C080000B83E041028FDFFFF18080000FC07000019685A680800FFAB40 +:405E000074335C681B681D006840FFAD7C35286023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB88331A60ED4B6B441B68DA09FF23DB00CF +:405E40006B441B685B061A43FFAB84331A60FFAB7C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB90331A60FF23DB006B441A68FE23DB0083 +:405E80006B441B681340FFAA94321360D74B6B441A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B681A43FFAB9C331A60CC4B6B441A68CC4B90 +:405EC0006B441B681A43FFABA0331A60FD23DB006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340FFAAA8321360FFAB943319685A6808009F +:405F0000FFABA4335C681B681D002843FFADAC35286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B185441F822D2006A4413605460FC23DB006B4499 +:405F400019685A68F923DB006B445C681B685B185441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441802212016A44136054609E4BD4 +:405F80006B441B6801339C4A6A4413609B4B6B441B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A04924B6B441B689B0B1A43FFABB8331A6099 +:405FC0008E4B6B441B689A03FC23DB006B441B689B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFABC0331A60FFABB43319685A680800FFAB4A +:40600000BC335C681B681D006840FFADC435286023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFABD0331A60714B6B441B685A0AFC23DB002A +:406040006B441B68DB051A43FFABCC331A60FFABC43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFABD8331A60624B6B445C681B68FFAAD43272 +:4060800010685168C0186141FB23DB006B441A68FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFABE0331A60FC23DB006B441A68FFABDC33B6 +:4060C0001C685D6823001340FFAAE43213604B4B6B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE4321468556822005A40FFABEC331A60434B6B441B682A0029 +:406100005A40FFABF0331A60FFABEC335C681B681B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B39486844C018304B6B441B68DB00C3185C680B +:406140001B685B185441F922D2006A4413605460314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B441B681A01284B6B441B681B0F1A43FFAB64 +:40618000F8331A6080231B016B441B689A08224B6B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B071A43FFABFC331A60FFABF43319685A68E1 +:4061C0000800FFABFC335C681B681D006840A025ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F4070000EC07000014080000E4070000BE +:4062000008080000DC070000D4070000B83E041028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84B6B441A60A54B6B441B68DA0980231B016A +:406240006B441B685B061A43A123DB006B441A60A023DB006B4419685A680800A123DB006B445C681B681D006840A225ED006D44286023005A40974B6B441A6080231B0100 +:406280006B441A68FF23DB006B441B681340A322D2006A4413608D4B6B441A688E4B6B441B6813408D4A6A44136080231B016B441A68FF23DB006B441B681A43A423DB00F6 +:4062C0006B441A60814B6B441A68834B6B441B681A43834B6B441A60FE23DB006B441A68A423DB006B441868596803001340A522D2006A4413607B4B6B441A680B00134000 +:40630000794A6A441360A323DB006B4419685A680800A523DB006B445C681B681D002843A625ED006D44286023001A436F4B6B441A60A223DB006B445C681B68A622D20039 +:406340006A44116852685B185441F822D2006A4413605460FD23DB006B4419685A68F923DB006B445C681B685B185441FD22D2006A4413605460F923DB006B4419685A68E2 +:40638000F823DB006B445C681B685B185441584A6A4413605460574B6B441B680133554A6A441360534B6B441B684F2B01DCFEF780FA514B6B441B6819695A694C4B6B44BB +:4063C0005C681B685B1854414B4A6A44126813615461494B6B441B689969DA6980231B016B445C681B685B185441434A6A4412689361D461404B6B441B68196A5A6AFF239C +:40640000DB006B445C681B685B1854413A4A6A44126813625462384B6B441B68996ADA6AFE23DB006B445C681B685B185441324A6A4412689362D4622F4B6B441B68196BB7 +:406440005A6BFD23DB006B445C681B685B185441294A6A44126813635463274B6B441B68996BDA6BFC23DB006B445C681B685B185441214A6A4412689363D4631E4B6B44D9 +:406480001B68196C5A6CFB23DB006B445C681B685B185441184A6A44126813645464164B6B441B68996CDA6CFA23DB006B445C681B685B185441104A6A4412689364D464D9 +:4064C000002318000D4B9D44F0BDC046040800000C05000014050000FC0700001C05000024050000F40700002C0500003405000008080000140800003C0500001C080000FC +:4065000070B58AB0059004910392039B002B01D100237DE0059B5C681B681A007F2313400993099B8022D31A0893059B5C681B68039A0092002201920099019A5B185441BB +:40654000059A13605460059B5C681B68039A150000221600A64202D80BD19D4209D9059BDC689B68012100225B185441059A9360D460099B002B3AD0039A089B9A4236D32E +:40658000059B50331A00099BD318089A0499180011F0D2FB059B50331A00059B11001800FDF738FF03000793079B002B01D0079B2EE0049A089BD3180493039A089BD31ADE +:4065C00003930023099312E0049A059B11001800FDF720FF03000793079B002B01D0079B16E0049B80330493039B803B0393039B7F2BE9D8039B002B09D0059B50331A0047 +:40660000099BD318039A0499180011F095FB002318000AB070BD000070B5A64CA5448F908E918F9B5C681B681A007F231340959395994B1C95938F9B50225B189A188023BF +:406640001370959B702B0CD88F9B50331A00959BD018959A70239B1A1A00002111F0FEFB22E08F9B50331A00959BD018959A80239B1A1A00002111F0F1FB8F9B50331A0006 +:406680008F9B11001800FDF7C5FE03009493949B002B02D0949B00F015FD8F9B503370220021180011F0DAFB8F9B5C681B68630F3C9300233D938F9BDC689B685A0FE60096 +:4066C0001643DD003C993D9A0B002B4392931300334393938F9B5C681B68590FE2000A439192DB009093939B1B0E3E9300233F936B46F8229B181B788F99C0228B54939BFD +:406700001B0C4093002341936B460133FF331B788F99C1228B54939B1B0A4293002343936B46842252009B181B788F99C2228B54939B1B004493002345936B468822520011 +:406740009B181B788F99C3228B54939B1A02929B1B0E0093009B13430093939B1B0E01936B461B788F99C4228B54939B1A04929B1B0C0293029B13430293939B1B0C03936C +:406780006B461B7A8F99C5228B54939B1A06929B1B0A0493049B13430493939B1B0A05936B461B7C8F99C6228B54929B939CDBB28F99C7228B54919B1B0E469300234793BC +:4067C0006B468C2252009B181B788F99C8228B54919B1B0C4893002349936B46902252009B181B788F99C9228B54919B1B0A4A9300234B936B46942252009B181B788F9941 +:40680000CA228B54919B1B004C9300234D936B46982252009B181B788F99CB228B54919B1A02909B1B0E0693069B13430693919B1B0E07936B461B7E8F99CC228B54919B4E +:406840001A04909B1B0C0893089B13430893919B1B0C09936B4620229B181B788F99CD228B54919B1A06909B1B0A0A930A9B13430A93919B1B0A0B936B4628229B181B785A +:406880008F99CE228B54909B919CDBB28F99CF228B548F9B50331A008F9B11001800FDF7B9FD03009493949B002B05D0949B00F009FCC046A8FDFFFF8F9B5C691B69230E76 +:4068C0004E9300234F936B469C2252009B181B788E9A13708E9B5A1C8F9B5C691B69230C5093002351936B46A02149005B181B7813708E9B9A1C8F9B5C691B69230A52932D +:40690000002353936B46A42149005B181B7813708E9BDA1C8F9B5C691B6923005493002355936B46A82149005B181B7813708E9B191D8F9B5C691B692202180E0C900C98B7 +:4069400010430C90230E0D936B4630229B181B780B708E9B591D8F9B5C691B692204180C0E900E9810430E90230C0F936B4638229B181B780B708E9B991D8F9B5C691B6913 +:406980002206180A1090109810431090230A11936B4640229B181B780B708E9BDA1D8F9B5C691B69DBB213708E9B08331A008F9BDC699B69230E5693002357936B46AC2174 +:4069C00049005B181B7813708E9B09331A008F9BDC699B69230C5893002359936B46B02149005B181B7813708E9B0A331A008F9BDC699B69230A5A9300235B936B46B421B2 +:406A000049005B181B7813708E9B0B331A008F9BDC699B6923005C9300235D936B46B82149005B181B7813708E9B0C3319008F9BDC699B692202180E129012981043129090 +:406A4000230E13936B4648229B181B780B708E9B0D3319008F9BDC699B692204180C1490149810431490230C15936B4650229B181B780B708E9B0E3319008F9BDC699B692C +:406A80002206180A1690169810431690230A17936B4658229B181B780B708E9B0F331A008F9BDC699B69DBB213708E9B10331A008F9B5C6A1B6A230E5E9300235F936B4691 +:406AC000BC2149005B181B7813708E9B11331A008F9B5C6A1B6A230C6093002361936B46C02149005B181B7813708E9B12331A008F9B5C6A1B6A230A6293002363936B4665 +:406B0000C42149005B181B7813708E9B13331A008F9B5C6A1B6A23006493002365936B46C82149005B181B7813708E9B143319008F9B5C6A1B6A2202180E1890189810430C +:406B40001890230E19936B4660229B181B780B708E9B153319008F9B5C6A1B6A2204180C1A901A9810431A90230C1B936B4668229B181B780B708E9B163319008F9B5C6AA6 +:406B80001B6A2206180A1C901C9810431C90230A1D936B4670229B181B780B708E9B17331A008F9B5C6A1B6ADBB213708E9B18331A008F9BDC6A9B6A230E6693002367936A +:406BC0006B46CC2149005B181B7813708E9B19331A008F9BDC6A9B6A230C6893002369936B46D02149005B181B7813708E9B1A331A008F9BDC6A9B6A230A6A9300236B9314 +:406C00006B46D42149005B181B7813708E9B1B331A008F9BDC6A9B6A23006C9300236D936B46D82149005B181B7813708E9B1C3319008F9BDC6A9B6A2202180E1E901E9861 +:406C400010431E90230E1F936B4678229B181B780B708E9B1D3319008F9BDC6A9B6A2204180C2090209810432090230C21936B4680229B181B780B708E9B1E3319008F9BB4 +:406C8000DC6A9B6A2206180A2290229810432290230A23936B4688229B181B780B708E9B1F331A008F9BDC6A9B6ADBB213708E9B20331A008F9B5C6B1B6B230E6E93002353 +:406CC0006F936B46DC2149005B181B7813708E9B21331A008F9B5C6B1B6B230C7093002371936B46E02149005B181B7813708E9B22331A008F9B5C6B1B6B230A72930023C3 +:406D000073936B46E42149005B181B7813708E9B23331A008F9B5C6B1B6B23007493002375936B46E82149005B181B7813708E9B243319008F9B5C6B1B6B2202180E2490C6 +:406D4000249810432490230E25936B4690229B181B780B708E9B253319008F9B5C6B1B6B2204180C2690269810432690230C27936B4698229B181B780B708E9B26331900BB +:406D80008F9B5C6B1B6B2206180A2890289810432890230A29936B46A0229B181B780B708E9B27331A008F9B5C6B1B6BDBB213708E9B28331A008F9BDC6B9B6B230E7693FF +:406DC000002377936B46EC2149005B181B7813708E9B29331A008F9BDC6B9B6B230C7893002379936B46F02149005B181B7813708E9B2A331A008F9BDC6B9B6B230A7A9372 +:406E000000237B936B46F42149005B181B7813708E9B2B331A008F9BDC6B9B6B23007C9300237D936B46F82149005B181B7813708E9B2C3319008F9BDC6B9B6B2202180E0E +:406E40002A902A9810432A90230E2B936B46A8229B181B780B708E9B2D3319008F9BDC6B9B6B2204180C2C902C9810432C90230C2D936B46B0229B181B780B708E9B2E33AF +:406E800019008F9BDC6B9B6B2206180A2E902E9810432E90230A2F936B46B8229B181B780B708E9B2F331A008F9BDC6B9B6BDBB213708F9AD023D358002B00D001E18E9BAF +:406EC00030331A008F9B5C6C1B6C230E7E9300237F936B46FC2149005B181B7813708E9B31331A008F9B5C6C1B6C230C8093002381936B46802189005B181B7813708E9B5F +:406F000032331A008F9B5C6C1B6C230A8293002383936B46822189005B181B7813708E9B33331A008F9B5C6C1B6C23008493002385936B46842189005B181B7813708E9B50 +:406F4000343319008F9B5C6C1B6C2202180E3090309810433090230E31936B46C0229B181B780B708E9B353319008F9B5C6C1B6C2204180C3290329810433290230C3393E7 +:406F80006B46C8229B181B780B708E9B363319008F9B5C6C1B6C2206180A3490349810433490230A35936B46D0229B181B780B708E9B37331A008F9B5C6C1B6CDBB21370D1 +:406FC0008E9B38331A008F9BDC6C9B6C230E8693002387936B46862189005B181B7813708E9B39331A008F9BDC6C9B6C230C8893002389936B46882189005B181B7813705C +:407000008E9B3A331A008F9BDC6C9B6C230A8A9300238B936B468A2189005B181B7813708E9B3B331A008F9BDC6C9B6C23008C9300238D936B468C2189005B181B7813700F +:407040008E9B3C331A008F9BDC6C9B6C2102180E3690369808433690230E37936B46D8215B181B7813708E9B3D331A008F9BDC6C9B6C2104180C3890389808433890230C7A +:4070800039936B46E0215B181B7813708E9B3E331A008F9BDC6C9B6C2106180A3A903A9808433A90230A3B936B46E8215B181B7813708E9B3F331A008F9BDC6C9B6CDBB2A9 +:4070C00013700023180096239B009D4470BDC04600B5BDB0039002910192009304AB1800FDF7C3F8009A04AB11001800FDF7E8F803003B933B9B002B13D1029A039904ABA3 +:407100001800FFF7FDF903003B933B9B002B0AD1019A04AB11001800FFF77EFA03003B9302E0C04600E0C04604AB1800FDF7A9F83B9B18003DB000BD00B583B00190019B15 +:4071400010331800D9F752FB019B180003B000BD00B583B00190019B10331800D9F712FC019B180003B000BD10B582B00190054C054B9C4204D0503C2000FFF7E9FFF7E7BE +:4071800002B010BDE06800084068000830B583B001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4B180006F085F90E4B01241D00002C05DB57 +:4071C0002800FFF7B9FF5035013CF7E7064A094B1900002006F074F9C04603B030BDC046FFFF000020680008C0000008955F0010406800086971021010B5034B19000120EA +:40720000FFF7C4FF10BDC046FFFF000010B584B00290039100920193009A019B0298039914F050FE03000C001A00009B5343180004B010BD10B582B001900091019B180001 +:40724000DDF772FF144A019B1A60019B009A5A60019A002300249360D460019A0023002413615461019A0023002413625462019B282200219954019B0022DA62019B002298 +:407280001A63019B00225A63019B382200219954019B180002B010BDC041041000B583B00190074A019B1A60019B180000F08BF8019B1800DDF7DEFD019B180003B000BDFC +:4072C000C041041000B583B00190019B1800FFF7E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180005F0C0F903000393039B012B01D0002326 +:407300005EE0019B5B681B6808331A68019B5B681800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B681800904703000C00019A13615461019BAE +:407340005B681B6828331A68019B5B681800904703000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C00019A9361D461019BDB6A002B09D1019B59 +:40738000DC689B68180006F045F903001A00019BDA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019B180000F091F8019B382201219954002370 +:4073C000180004B010BD00B585B00190019B38229B5C01225340DBB2002B01D0002332E0019B34330121180005F078F903000393039B002B01D0002325E0019BDB6A002B0E +:4074000004D0019BDB6A180006F02AF9019B0022DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B382200219954019B5B681B680C331A68019B5B68C3 +:40744000180090470300180005B000BD70B586B00390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340DBB2002B01D0174B25E0039B28229B5CC0 +:40748000002B1FD0039B5B681B6818331D68039B5868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A84703000593059B002B01D0059B04E0039B18001A +:4074C00000F00AF80023180006B070BD38410410704104105FF0FFFF10B582B00190019BDC699B69019A13625462019B282200219954C04602B010BD00B585B00190019B1A +:4075000038229B5C01225340DBB2002B01D0124B1EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF03000393039B002B01D0039B09E0019B5B6801 +:407540001B6810331A68019B5B68180090470300180005B000BDC0465FF0FFFF3841041070410410F0B597B00790069104920593079B38229B5C01225340DBB2002B01D0C9 +:40758000C14B88E1079BDB6A002B03D0079B1B6B002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A0093019413000A00DDF7B8FC031E20D01C991D9A98 +:4075C000049B059CC9186241079B5C6A1B6AA24202D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059AA24204D1049A9A4201D9012300E0002368 +:40760000002B13D0079B5B681B6814331D68079B58681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B15931C9B1D9C1A00224300D12BE14B2302AA2A +:407640009446634401221A70079B5C6A1B6A059AA24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B0014000A930B940AAB19001CA800F0ADFB53 +:4076800003005C681B680893099456E0079B5C6A1B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B685B185441059AA24205D3059AA24238D1D9 +:4076C000049A9A4235D2079B9C68DD68079B9A68DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FB03005C681B6808930994079BDD6A079BDD +:40770000DC689B68049805991A00230014F0DAFB1C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7003E01C9B1D9C089309944B2302AA94468D +:4077400063441B78002B00D184E0079B5C691B69049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B19695A69089B099CA24202D83ED199423CD971 +:40778000079B19695A69109B119CC91AA2410B0014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681B6814331D68079B5868079B1B6B9C4624 +:4077C0000499059A109B119CC91AA241079B5C691B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00159B180010F0A0FA27E008980999079B56 +:407800005C691B691A002300FFF700FD03001E0000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499059A159B9C46029B039C0093019413005F +:407840000A006146A84703001393139B002B01D0139B20E0089B099C1A00159B9B181593089B099C0499059A5B185441049305941C991D9A089B099CC91AA2410B001400A5 +:407880001C931D94D4E6C0465FF0FFFF38410410804104100023180017B0F0BDF0B5C64600B596B00990089106920793099B38229B5C01225340DBB2002B01D0A14B3CE1FD +:4078C000099BDB6A002B05D19F49A04BBF22180004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089B1593099B5C6A1B6A129A9A4203D1139A47 +:40790000A24200D10FE0099B1800FFF79FFD03001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D102E1099BDC689B68069807991A00230038 +:40794000FFF764FC03001D0000231E00099B1D625E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D0099B9968DA680E9B0F9CC91AA2410B007C +:4079800014000C930D940CAB1CA9180000F025FA03005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D81C981D99099BDC689B681A002300FFF706 +:4079C00025FC0300029300230393029B039C0A930B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9099B28229B5C01225340DBB2002B1CD0F1 +:407A0000099B5B681B6814331F68099B5868099BDB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193119B002B01D0119B7FE0099BDA6A0E9BB3 +:407A4000D0180A9B0B9C1A00159B190010F074F9099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC689B681A00230014F025FA1C0013001900EE +:407A800022000B0013433AD1099B5B681B6818331F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9F903005C681B68149900930194049AF2 +:407AC000059B4046B84703001193119B002B01D0119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0119B22E0099B1800FFF7EEFC03E0099B2F +:407B00002822012199540A9B0B9C1A00159B9B1815930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B0014001C931D94F6E60023180016B004BC19 +:407B40009046F0BD5FF0FFFF384104107041041070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA03001A0001235340DBB2002B07D0082391 +:407B8000FF331A002049214B180004F09FFB059B38229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A5A6A62 +:407BC000029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A0A9B0B9C0093019413000A00A84703008A +:407C0000180006B070BDC046384104109C4104105FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF714FA03001A0001235340DBB2002B8A +:407C400006D08A235A002049204B180004F03EFB059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8039AA24202D1029A9A4211D8059B196A37 +:407C80005A6A029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299039A0A9B0B9C0093019413000A00A84765 +:407CC0000300180006B070BD384104109C4104105FF0FFFF10B582B00190012300241800210002B010BD10B582B00190012300241800210002B010BD10B582B00190019B87 +:407D000038229B5C01225340DBB2002B02D0002300240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B010BD10B584B0039000920193039B3822FF +:407D40009B5C01225340DBB2002B02D0002300240DE0039B5B681B6830331968039B5868009B019C1A002300884703000C001800210004B010BD000000B583B00190019B50 +:407D800038229B5C01225340DBB2002B01D0074B09E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF10B582B00190019B38229B5C01225340DC +:407DC000DBB2002B02D00023002402E0019BDC699B691800210002B010BD10B582B001900091009B5C681B68019A11685268A24202D803D1994201D9009B00E0019B1800F4 +:407E000002B010BD10B582B001900091019B5C681B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000082B00190034A019B1A60019B180002B079 +:407E40007047C0463842041000B583B00190019B1800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B00290039100920193029B039C01214942CA175B185441D2 +:407E800018002100009A019B14F01CF803000C0019002200012300245B1854411A00009B5343180004B010BD10B584B00290039100920193009A019B0298039914F002F80E +:407EC00003000C001A00009B5343180004B010BD70B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B682C331B68019A1000984703000C00049396 +:407F00000594049A059B0698079913F0DBFF03000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029B012213401D00039B002213401E00002306 +:407F4000180008B070BD000070B5A2B00E900F910C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D00024E2E1C84B009300230193C64A10AB110025 +:407F80001800DDF74EFE0300029300230393029A039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE030018930023199310AB1800DDF74DFE03001D0000234F +:407FC0001E00189B199C5B197441169317940E9B0F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D910AB1800DDF716FC00249DE10E9A10AB45 +:4080000011001800DDF70DFE03000493002305930E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A4205D010AB1800DDF7F4FB00247BE158 +:408040000C9B0D9A134336D11699179A0E9B0F9CC91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0884B180005F04DFA030033 +:408080005A1E9341DBB2002B0FD00E99209A834B1800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF7B9FB7A4C40E10C9B0D9A134369D00E99FA +:4080C0000F9A0C9B0D9C5B18544114931594159A179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002422E1149B5A1E10AB11001800DDF791FD12 +:40810000030006930023079314981599069A079BFFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800DDF778FB0024FFE05B4B1B78BFF35B8F31 +:40814000DBB21A00012313405A425341DBB2002B19D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7E7FF4D4B180005F007FA494A49494B4B8B +:40818000180005F09DF910AB1800DDF74BFB474CD2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D147230CAA9446634401221A70012300240C9364 +:4081C0000D941699179A0C9B0D9CC91AA2410B0014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A099BFFF759FE03001E9300231F930E9A19 +:408200001E9B9A4203D10F9A1F9B9A420FD047230CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E047230CAA944663441B78002B39D01699179A52 +:408240001E9B1F9CC91AA2410B001400DB186441209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800DDF7D7FC03000A9300230B930E980F99C2 +:408280000A9A0B9BFFF710FE03001E9300231F9318E0C046186404105869000830690008C00000089951001088690008606900081699179A1E9B1F9CC91AA2410B001400AA +:4082C0002093219410AB1800DDF7ACFA1B9A1F9B9A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FDBB21A00012313405A425341DBB2002B99 +:4083000019D0114B180005F007F903005A1E9341DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074B180005F0C5F8054C10AB1800DDF720FAE8 +:408340002300180022B070BDB869000890690008C00000089951001070B58AB0802212020023069207936A4A002308920993069B079A134339D1089B099A134335D102AB6F +:408380001800DDF7F2F902AB1800DDF705FA03005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DDF737FC0300009300230193009A019B9F +:4083C00028003100FFF74FFD030008930023099302AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089809991A002300FFF7A7FD0200474BDA60A8 +:40840000464BDB68002B01D1424C7CE0434BDB681B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB681800FFF74DFD03005A1E9341DBB2002B81 +:4084400001D0374C5FE0374B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2002B10D0294BDA682B4B1100180000F0C4 +:4084800007FB284B180005F07FF8284A2849264B180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B681800904703000593059B002B01D0059C24E0174B5A683B +:4084C000164B1A60154B0F2252429A61D9F73CFF03000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049B180000F0CDF803000593059B002B01D078 +:40850000059C00E00024230018000AB070BDC046008007100F01FF8018640410146900080101FF809C6A0008BC690008C00000083D8B0210FC41041000B583B000230193E5 +:40854000144B1800DDF7C0FB0300180005F02CF9114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002B04D1094B01221A7000E0C046054B18000E +:40858000DDF7A2FB0300180005F036F9019B180003B000BDE0680008106900081469000800B583B001900091009B002B0CD0009B18000FF075FF031E06D0009B18000FF016 +:4085C0006FFF0300802B01D9012300E00023002B01D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D0002300E00123180003B000BDC04674420410D4 +:4086000082B00190034A019B1A60019B180002B07047C0463842041000B583B00190019B180000F00BF9019B180000F0F7F9019B180003B000BD00B585B001900023039356 +:40864000019B20331800DDF73FFB0300180005F0ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B0122DA6100E0C046019B20331800DDF724FBB6 +:408680000300180005F0B8F8039B180005B000BD00B587B00390029101920023059300230493039B20331800DDF70EFB0300180005F07AF8039BDB69002B02D11D4B059370 +:4086C0002AE0039B9B69022B02DD1B4B059323E0029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF0CFFE039B9A69039BD2000499D150039B1A +:408700009B69039ADB00D3180433019A1A60039B9B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B000BDC0460E01FF801F01FF8000B583B075 +:4087400001900091009B1B6818000EF0BBFF009B5B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B689B6818009047009B5B685B69002B0AD09F +:40878000009B5B685B691B6828331A68009B5B685B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B681B6918009047009B5B685B68002B0AD022 +:4087C000009B5B685B681B680C331A68009B5B685B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B68DB6818009047009B5B681B68002B0AD003 +:40880000009B5B681B681B680C331A68009B5B681B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009B00225A6000E0C04603B000BD00B585B0F3 +:40884000019000230393019B20331800DDF73CFA0300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B9A4216DD019A029BDB00D31804331B6898 +:408880001B68002B0CD0029BDB00019AD218019B11001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF70BFA0300180004F09FFF039B180005B03D +:4088C00000BDC0460E01FF8000B58BB0039002910192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0009B00221A60069B1B782F2B07D1069BC4 +:4089000001330693009B1B685A1C009B1A60069B2F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A6037E001235B420893039B5A68019B1A60B1 +:408940002FE0059A069BD31A089300230793039B9A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341DBB2002B08D1039A079BDB00D3180433D1 +:408980001A68019B1A6004E0C046079B01330793DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD3185A1C009B1A60099B18000BB000BDC04603 +:4089C0000E01FF800701FF8000B587B001900091019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF76BFF03000593019B20331800DDF764F99F +:408A00000300180004F0F8FE059B002B02D1049B1B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091019B013B0099180013F072F803000133CB +:408A4000009A5343180003B000BD30B58FB0059004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A80DAB009322002B0002F064FA0D9C07AB53 +:408A80001800DDF783F9230018000FB030BD000000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE019B2833180004F025FE019B0022DA6458 +:408AC000019B00221A65019B00225A65019B009A9A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C2200219954019B00221A67019B7422002199525B +:408B0000019B00229A67019B8C2200219950019B902200219950019B942200219950019B982200219954019B9C2200219950019B180003B000BDC0465444041000B583B0E8 +:408B400001900C4A019B1A60019B180001F0B8FC019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180003B000BD5444041000B583B00190019BFA +:408B80001800FFF7DBFF019B180004F05FFD019B180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6814331E68079BD86D132302AA6B +:408BC000944663441B78079A0F33DB00D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002399 +:408C000018000AB070BDC0461B01FF8070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86D132302AA944663441B78079A0F33DB0084 +:408C4000D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B00E0002318000AB070BDC0461C01FF8049 +:408C8000F0B58DB007900592132302AA944663440A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B93079BDB6D1B6830331968079BD86D0B9B32 +:408CC000029300230393029A039B884702000B0013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C0000231D000094019532003B0088470300099330 +:408D0000099B002B01D0034B00E0002318000DB0F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D1800904702000B000692079380221206002308923C +:408D4000099308AA06AB11001800FFF746F803001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B6830331968059B986D119B00930023019370 +:408D8000009A019B884702000B000C920D93059B982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D1B4422ED9059B9B6D1B6830331968059B27 +:408DC000986D119B029300230393029A039B884702000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B9A4201D10023181CC3B20B435A1E934104 +:408E0000D9B2059B982299540A9B119AD3181193C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059B88215A50C04613B0F0BD000010B598B0F0 +:408E400005900392029313236B440A1C1A7001235B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B441978059808AB00931823FFF78DFE030066 +:408E80001793179B002B01D0179B43E108AB1B68A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039308AB9B89069308AB1B69109308AB9A6885 +:408EC000239B1A60069B002B02D0069B7F2B01D9934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9A109B9A4201D98B4B0CE1109A1D9BD31A51 +:408F00000E930EAA1BAB11001800DCF7E8FE03001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E047236B441B78002B0AD008AA149B14214E +:408F40001800FFF782FD03001493002316930CE01C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B012252421A60079B002B00D1AFE0069BAF +:408F8000002B1BD01EAB1B78002B09D0159B1393069B1293069B159AD31800221A7041E0059B90229B581393604A06AB11001800DCF795FE03001B68129333E0169A1D9B1C +:408FC0009A4211D21D9A169BD31A0F930FAA574B11001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD01C9B1A681D9BD218169B9A4205D91C9B6F +:409000001B6812931A9B13930CE007AA474B11001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598139B00932300FFF7AFFD03001793179B47 +:40904000002B65D147236B441B78002B07D0139A1299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A1399159B18000EF03AFE03005A1E9341DBB2CB +:40908000002B01D02A4B179321AB1B78002B09D0229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129BD31A0693069B002B08D1039A1D9BD318DA +:4090C000039303E0169A129BD3181693079A129BD31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A4202D00B4B17930CE0059B8C229A58039BE9 +:4091000011001800FFF790FC0200249B1A6000E0C046179B180018B010BDC046836668540201FF800501FF800101FF80484404100701FF8010B598B00F900D920C933B2362 +:409140006B440A1C1A700F9BDB6C1693324B17930D9B18000FF0A4F901000D9A01235B421800FFF772FC02001B9B1A601A9B00221A601A9B1A680F9B5B6D9A4248D21A9BB7 +:409180001B681B01169AD3181593159BDC689B681A000C9B1A601B9B1A68159B1B689A422ED31B9B1A68159B1B689A4201D91A4B2FE00F9B1B6FD9B20C9B1A680D9C0F9886 +:4091C00011AB0A9313AB099312AB0893002307930123069300230593002304930023039314AB029300230193002300932300FFF725FE03001793179B074A934207D100E082 +:40920000C0461A9B1B685A1C1A9B1A60B1E7C046179B180018B010BD0701FF8010B584B0039002910192039B8C229B5819001820FFF7FAFB0400029B18000FF031F90200B6 +:40924000019BD018039B8C229B581900FFF7ECFB0300E318180004B010BD0000F0B591B00990089107920693099B079A11001800FFF796F903001A0001235340DBB2002BD5 +:4092800001D0A84B4AE1169BA74A134001D0A54B44E1099B9C229A58089B1A60089B1B680E93A24B1A68079B110018000FF0ACF803005A425341DBB2002B0ED0099B5B6E99 +:4092C0000293002303930E9B0299039A9961DA610E9B34220021995497E0099B0433180004F062FA0E9B1B68914A934209D1099B180000F0B7FC03000F930F9B002B00D0E4 +:40930000F8E0069A0799099B1800FFF787FF03000D93099B1A6E0D9BD218099B9B6F9A4209D9099B180000F09DFC03000F930F9B002B00D0E0E0099B1A6E0D9BD218099B5F +:409340009B6F9A4202D97B4B0F93DEE0099B1B6FD9B20CAB9C46079A09980BAB01930AAB00936346FFF7E6FE03000F930F9B002B1CD1099B1B6FD9B20C9A0E9B09980093BA +:409380001823FFF709FC03000F930F9B002B00D0B4E00E9B9B680122134002D0664B0F93B3E00E9B34220021995417E00F9B634A934200D0A4E0169B002B00DAA2E0099B5F +:4093C0005A6D099B1B6D9A4204D3099B0021180000F0EAFD0E9B342201219954099B1B6E1C0000231D000E9B9C61DD61099B1B6FD9B20E9BDC699B691C000D9A0998002366 +:4094000000931300220001F017FD00230F930E9B9C69DD69099B8C229B5819001820FFF703FB0300049300230593049A059B12196B411C0013000E9A136254620E9B0022E5 +:409440009A620B9A0E9B1A630A9A0E9BDA620E9B374A1A600E9B18229A800E9B0122DA800E9B169A9A60079B18000FF019F803009AB20E9B9A810E9B0022DA810E9B069A36 +:409480001A610E9A01235B4214211800FFF7DDFA02000E9B5A610E9B58690E9B9B891900079B1A00FFF7D1FA02000E9B5A61099B1B6FD9B20E9B5C6A1B6A1A000E9B9B8981 +:4094C0001C000998079B00932300FFF79FFB03000F930F9B002B17D10E9B5C6A1B6A0E9A92891600002217009B197C410E9A1362546212E0C04608E0C04606E0C04604E065 +:40950000C04602E0C04600E0C0460E9B00221A60099B0433180004F06FF90F9B180011B0F0BDC0460101FF80FEFFFF7F10040008836668540B01FF801201FF800701FF802C +:4095400070B588B0059004910392029300230793059B9C229A58049B9A4201D02E4B58E0039B002B04D1029B002B01D02A4B50E0059B2833180004F017F9049B0693069B64 +:409580001B68002B02D1244B07933CE0069B9A6A029BD218069B1B699A4202D91F4B079331E0069B5B69039A02991800FFF74DFA0200069B5A61059B1B6FD9B2069B5C6A7C +:4095C0001B6A1C00029A0598039B009313002200FFF71CFB03000793079B002B12D1069B5C6A1B6A029A1500002216005B197441069A13625462069B9A6A029BD218069B3B +:409600009A6200E0C046059B2833180004F0F4F8079B180008B070BD0101FF800501FF8070B58CB00590049100230B93059BDB6C0A93059B9C229A58049B9A4201D0714B88 +:40964000DDE0049B0993099B1B68002B01D16D4BD5E0059B2833180004F0A6F8099B9A6A099B1B699A4206D0674B0B93059B180000F0F8FAA9E0059B1B6FD9B2099BDC6929 +:409680009B691A00099B059800931823FFF7BEFA03000B930B9B002B00D093E0059BDB6D1B6810331A68059BDB6D1800904703000893089B002B02D0544B0B9385E0099B8F +:4096C000DC699B69059A526E029200220392029A934203D1039A944200D175E0099B9B68002B26DA059B5B6D5A1E059B5A65099BDA6A059B5B6D9A4213D2099BDB6A1B0172 +:409700000A9AD018099BDB6A01331B010A9AD118059B5A6D099BDB6AD31A1B011A000EF04DFB099BDA6A059B0021180001F0DCF83AE0099B34229B5C002B25D0099BDA6A85 +:40974000059B5B6D9A4213D2099BDB6A01331B010A9AD018099BDB6A1B010A9AD118059B5A6D099BDB6AD31A1B011A000EF026FB059B5B6D5A1C059B5A65099BDA6A059B12 +:409780000121180001F0B0F8099BDB6A1B010A9AD3180793099B1A6B079B1A60099BDC699B69079A9360D460099B5C6A1B6A1800059B8C229B581900FFF736F90200059B86 +:4097C0001A6602E0C04600E0C046099B00221A60059B2833180004F00FF8099BDC699B69059A526E150000221600AB4201D1B44204D0059B0433180003F0FEFF0B9B18000E +:409800000CB070BD0101FF800501FF801C01FF8030B589B00590049103920293039B002B04D1029B002B01D0194B2DE0059B1B6824331C68029D049A06A905980C9B0093C2 +:409840002B00A04703000793079B002B01D0079B1AE0059B1B6828331C680699029B039A0598A04703000793079B002B01D0079B0AE0059B1B682C331B680699059A100086 +:40988000984703000793079B180009B030BDC0460101FF8010B584B003900291039B1B6814331C680299039880231B06009300230022A0470300180004B010BD10B598B0D8 +:4098C0000F900E910D920C930F9B0E9A11001800FEF766FE03001A0001235340DBB2002B01D0254B45E00F9B0433180003F05CFF0F9B1B6FD9B215AC0E9A0F9812AB0193BF +:4099000011AB00932300FFF715FC03001793179B002B27D10F9B1B6FD9B2159A0E9C0F9814AB0A9313AB099312AB0893002307930023069301230593002304931B9B039324 +:4099400016AB02930C9B01930D9B00932300FFF775FA030017931A9B002B04D0169A1A9B1A6000E0C0460F9B0433180003F044FF179B180018B010BD0101FF8010B598B051 +:409980000F900E910D920F9B0E9A11001800FEF707FE03001A0001235340DBB2002B01D0294B4EE00F9B0433180003F0FDFE0F9B1B6FD9B216AC0E9A0F9813AB019312AB90 +:4099C00000932300FFF7B6FB03001793179B002B2ED10F9B1B6FD9B2169A0E9C0F9815AB0A9314AB099313AB0893002307930023069300230593002304930023039311AB4D +:409A0000029301235B420193002300932300FFF715FA03001793179B002B0BD10D9B002B09D0149A0D9B5A60119A0D9B1A6002E0C04600E0C0460F9B0433180003F0DCFEDB +:409A4000179B180018B010BD0101FF8010B588B0059008001100039313236B44021C1A7004AB0A1C1A8006AB04AA12881A8006AB01225A8006AB00225A60059B5A6E059BF3 +:409A80009B6ED218039B1A60059B1B6814331C68054B196806AA0598002300930823A0470300180008B010BD1004000830B591B005900392029313236B440A1C1A70039AF4 +:409AC00013236B441978059808AB00931823FFF763F803000F930F9B002B01D00F9BBCE0059B8C229B5819001820FEF79DFF040008AB9B891A0008AB1B69D018059B8C226B +:409B00009B581900FEF790FF0300E318079313236B441B780122D31AD9B2079C029A059800230093230001F087F903000F930F9B002B01D00F9B90E0059B8C229B58190005 +:409B40001820FEF771FF02003A236B441A8013236B441B780122D31AD9B23A236B441C88029A059808AB00932300FFF74FF803000F930F9B002B01D00F9B6EE03A236B44AF +:409B80001B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793079B002B4DD02E4A07AB11001800DCF796F803001A683A236B441A803A236B446D +:409BC0001D88059B90229B58039C13226A441178059800932B002200FEF7DEFF03000F930F9B002B01D00F9B37E013236B441B780122D31AD9B23A236B441C88059B902200 +:409C00009B58029A059800932300FEF7FFFF03000F930F9B002B01D00F9B1EE03A236B441B88039AD31803933A236B441B88029AD3180293079A3A236B441B88D31A0793ED +:409C4000AEE7059B8C229A58029B11001800FEF7EBFE0200149B1A600023180011B030BD4844041070B58CB00390039BDB6C0A93039B1B6FDBB20122D31AD9B2039B5A6E8B +:409C8000039B9B6ED2180398002300931300002201F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE03000993099B002B46D100230693039B5B6EA6 +:409CC0000493049B002B3ED004AA584B11001800DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313003200FEF751FF03000993099B002B01D057 +:409D0000099B90E0039B1B6FDBB20122D31AD9B2069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D0099B78E0069A089BD3180693049A089B19 +:409D4000D31A0493BDE7039B5A6E039B9B6ED3180693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB6813000793039B1B6FD9B2069E079A039871 +:409D800005AB00933300FFF791FE03000993099B002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B06930B9B01330B93D0E7059B0693059A039B4C +:409DC0001A66039B1B6F0122D21A039B1A67039B74229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF72DFE03000993099B002B01D0099B12E0A9 +:409E0000039B1B6FDBB20122D31ADAB2039B1100180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD4844041070B598B00D900D9BDB6C1493002313938A +:409E4000002316930D9B00225A650D9B5B6E17930D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9310AB099311AB0893012307930023069376 +:409E80000023059301230493002303930FAB029300230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B20D9B94229A5812AE0D9811AB01930EAB9C +:409EC00000933300FFF736F903001693169B002B03D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB0D9B5A6D0D9B1B6D9A4205D314AA0D9B8E +:409F00001100180000F050F8149A0E9B01331B01D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1C0D9B5A6519E0109B002B16DA0D9B5B6DD9 +:409F40005A1E0D9B5A65149A0E9B1B01D018149A0E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01D318119A1A60149A0E9B1B01D318159A35 +:409F80001400002215009C60DD6061E7C0465FE7C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B001900091019BDB6C0393019B1B6D0133164A934271 +:409FC00001D81B0101E001235B42180003F022FB03000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B029ADA64039B002B03D0039B180003F065 +:40A000002FFB009B002B03D0019BDA6C009B1A600023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB0D9B10221A650D9B1B6DD94A934201D83B +:40A040001B0101E001235B42180003F0E3FA030019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C000D9B9B6D19002000FDF7DCF80D9BDC654B +:40A080000D9BDB6D1B6808331A680D9BDB6D180090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B07D0BC49BC48002300930023002202F0EA +:40A0C000DBFB0D9B9B6D1B6828331A680D9B9B6D1800904703000C0019000D9B8C229950402003F097FA030019000D9B90229950802003F08FFA030019000D9B94229950B2 +:40A10000382003F06BFA030019000D9B9C2299500D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9B8C229B5819004820FEF776FC02000D9BFC +:40A140005A669A4B19680D9B08221800FFF766F802000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD9AE06B236B441B7816AA0021D1546B23A2 +:40A180006B441A7811AB52000021D1520D9B783318006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A670D9B5A6E7D4B1C686B236B4419780D9860 +:40A1C00015AB0A9314AB099313AB0893002307930123069301230593002304930023039312AB0293082301930FAB00932300FEF725FE03001B931B9B002B0BD01B9B6C4A33 +:40A20000934207D06B491B98002300930023002202F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D9801230093230000F001FE03005A1E9341DBB2002B5F +:40A2400007D05D495D48002300930023002202F013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1526B236B441B7816AA0221D1546B236B447F +:40A280001A780D9B1A676B236B441A7811AB5200D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D116AB5B78012B1FD10D9B00221A670D9B8D +:40A2C0007422012199520D9B1B6FD9B20D9B74229A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B98002300930023002202F0C0FA16AB1B78022B35D1D0 +:40A3000016AB5B78022B31D111AB1B881A0011AB5B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F11AB5200D15A0D9B742299520D9B1B6FEB +:40A34000DBB20122D31ADAB20D9B1100180000F007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6F0D9B1A660D9B1800FFF75AFD03001B9371 +:40A380001B9B002B22D01B9B094A93421ED00E491B98002300930023002202F06DFAC046FFFFFF079C4204100101FF80100400080201FF80C8420410F04204101B01FF8086 +:40A3C00014430410444304106C4304101B9B364A934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D9800F0BCFC03005A1E9341DBB2002B07D0C1 +:40A400002A492B48002300930023002202F034FA3B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B1D4A934203D0189B1B4A934227D10D9B65 +:40A440001800FFF70FFC03001B931B9B002B07D018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D1800904703001793179B002B08D00E490F482C +:40A48000002300930023002202F0F6F9C0460D9B6C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80984304101B01FF80D8430410004404101C01FF8050 +:40A4C00000B585B00190019B0433180003F06CF9019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D002B08D0019BDB6D1B6804331A68019BAF +:40A50000DB6D18009047019BDB6C0393039B002B03D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8019B94229B58002B05D0019B94229B58E4 +:40A54000180003F08DF8019B6C2200219954019B0433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B5A6E039B9B6ED2180B236B441978039851 +:40A58000012300931300002200F056FC0300180005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B0433180003F0F8F80F236B4400221A7015 +:40A5C0000F236B441B78012B14DC0F236B441A78019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B4401321A70E5E7019B00221A67019B00225A65EE +:40A60000019B5A6E019B1A66019B742201219952019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B0433180003F0E0F8029B180005B000BD5E +:40A640000E01FF8000B589B003900291019200230793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE0039B0433180003F097F800230693069BA5 +:40A680000F2B0BDC039B069A28329200D358002B03D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF03000593029B059A1A60019B002B09D0204AF6 +:40A6C000019B110018000DF09FFE031E01D0012300E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B9A60059B9B68019A110018000DF0C8FE8E +:40A7000002E0059B00229A60059B00225A60059B069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B000BDC0460E01FF800101FF802001FF8038 +:40A740002444041010B598B00F900E910D920C930F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B0433180003F01AF80E9B15933F4B1793179B002B7E +:40A780006ED0159B5A680F9B5B6D9A4268D20F9B1B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A9312AB099313AB0893002307930023069398 +:40A7C00000230593012304930023039314AB0293002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B0ED00F9B94229A58159B9B681900100098 +:40A800000EF08CF801000F9B94229B58994201D1012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B41DBB2002B02D0114B179311E00F9B94229D +:40A840009A580D9B110018000DF022FE01E00A4B1793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B010BDC0460E01FF800701FF800501FF809A +:40A8800000B585B001900091019B6C229B5C01225340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B04D0039B9B68180002F0D2FE039B1A6806 +:40A8C000019B283292000021D150039B180002F0BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B236B440A1C1A7000230593059B0F2B25DC07 +:40A90000039B059A28329200D3580493049B002B15D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6008E0049B5B685A1E049B5A6002E0C04615 +:40A9400000E0C046059B01330593D6E7C04606B07047000000B58BB005900491039200230993039B402B01D9354B66E0059B0433180002F019FF059800234022002100F012 +:40A9800067F803000993099B002B03D0099B2D4A934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009313000022FEF72AF903000993099B002B1D +:40A9C00032D106AB08221A80039B9AB206AB5A80049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009308234022FEF70AF903000993099B002B3E +:40AA000014D1059BDB6D1B6810331A68059BDB6D1800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059B0433180002F0E0FE099B18000BB000BD4B +:40AA40000501FF800201FF801C01FF800701FF8010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6834331A68059BDB6D18009047020033239E +:40AA80006B441A70059B1B6FD9B2059806AB009308234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B072B11D8139A0E9BD3181B7833226A44AE +:40AAC00012789A4204D04B236B4400221A7003E00E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B002B02D0029B119A1A60039A119B9A426C +:40AB00000CD23B4B70E04023089303AA08AB1100180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B58139300230F93119B002B47D0119B099309AAFE +:40AB40002C4B11001800DBF7CAF803001B680A93059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D00B9B39E000230D930D9A0A9B9A4211D2A3 +:40AB8000139A0D9BD3181B7833226A4412789A4204D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B1800FDF74BFF030010930F9A0A9BD3180F9327 +:40ABC000119A0A9BD31A1193B4E74B236B441B78002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC0460501FF80484404100701FF800201FF80F7 +:40AC000000B587B00390029101920093039B0433180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD059B180007B000BD70B590B00B9009929D +:40AC400008930B2308AA944663440A1C1A700B2308AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C01225340DBB2002B1BD00B9BDB6D1B687D +:40AC80002C331A680B9BDB6D1800904703000C000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A605AE000230F930E9B1D0000231E000F9B25 +:40ACC0000093002301930B9BDB6D1B6830331C680B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B1854410122B44204D801D1AB4201D800231A1C74 +:40AD0000D3B2002B15D00B9BDB6D1B6830331C680B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F93C1E70E9A0F9BD21A089B1A600B9BDB6DF8 +:40AD40001B68303319680B9BD86D0F9B069300230793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B005900392029313236B440A1C1A7014ACFE +:40AD8000039A13236B441978059813AB00932300FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF055F8139B002B36D01823159315AA13AB6F +:40ADC00011001800DAF78BFF03001B681793179C039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114B1DE0179A07A90DAB18000CF077FF0300AA +:40AE00005A1E9341DBB2002B04D0029B00221A7000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A700023180018B010BD1B01FF8010B58CB00590039294 +:40AE4000029313236B440A1C1A70029B002B4DD008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF736FF03001B680B93089B002B03D00EAB0B +:40AE80001B78002B29D01F246C44039A13236B44197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B7801225340DBB2002B10D0089B039AD21A1323E2 +:40AEC0006B441978059B1800FDF7DAFE03000A930A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE7002318000CB010BD1C01FF8000B585B00390029185 +:40AF000001921A006B4603331A700D4A039B1A60039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B1800DAF717FF039B180005B000BDC04653 +:40AF40005CFF031010B588B005900491029203930A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F04DF803000793079B002B08D0059B1B685E +:40AF800008331B68059A10009847079B26E0029B039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6808331B68059A10009847079B0EE00A9A98 +:40AFC000059B1100180000F06DF803000793079B002B02D00A9B00221A60079B180008B010BDC046284404103C44041082B001900091009B1A68019B1B689A4201D2009B83 +:40B0000000E0019B180002B07047000000B583B001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023180003B000BDC046284404103C44041033 +:40B0400010B588B0059004910292039300230793059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F04FF80300079310E0029B039C0499059866 +:40B080000A9A00921A00230000F0A8F80300079303E001235B420793C046079B180008B010BD000010B584B001900091009B002B07D10A23FF331A001349144B180001F077 +:40B0C00005F9009B1B680393039A019B1100180000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60019B1B6808331B68019A10009847002353 +:40B10000180004B010BDC046284404103C44041010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F0CDF8029B07930E9B1B680B931B236B447F +:40B1400000221A70039B1B6905930023002408930994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD3181B781A00039B1100180000F0E5F803004F +:40B18000D9B20B9B1B0EDAB21B236B444A401A701B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B18544108930994CCE7039B180000F086F8EA +:40B1C00002000B9B1A400E9B1A60002318000CB010BDC046284404103C44041010B58AB003900291009201930C9B002B07D1A423FF331A003249334B180001F067F8029B46 +:40B2000004930C9B1B6809930023002406930794019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B781A00039B1100180000F086F803001B06B6 +:40B24000099A5340099317236B4408221A7017236B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D0099B5B00144A5340099302E0099B5B003B +:40B28000099317236B4417226A441278013A1A70DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099B1A400C9B1A60002318000AB010BDC04618 +:40B2C000284404103C440410B71DC10482B0019001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4420221A700B236B4400221A700B236B44E7 +:40B300001B781F2B1ADC009B012213400BD00B236B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E028 +:40B34000009B180004B0704784B001900091019B1B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B012213400BD00B236B441B780722D31A012296 +:40B380009A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B0019080231B06180002B0704782B0EFF3EE +:40B3C00010830193019B012213405A425341DBB2180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB2002B08D1064B6A46073212781A70034B83 +:40B4000001221A7000E0C04602B010BDA16A0008A06A000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A70064B1B78DBB2002B00D062B6C04610BDAB +:40B4400098440410BC440410A16A0008A06A000800B585B003900291019200930299009A019B18000CF068FC0023180005B000BD82B002006B4606331A806B4606331B8832 +:40B480001A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4A0B4B1100180009F02BFB019B002B05D1E7 +:40B4C0000122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000D8440410E602000010B582B001900091019B04229B5E013305D10B490B4B2F22F4 +:40B50000180000F0E3FE019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD284504105C45041000B585B003900800110001930A236B444C +:40B54000021C1A8009236B440A1C1A700A236B4400229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B11001800FFF7B9FF039B012118000AF01EFA4C +:40B5800009236B441A78039B110018000AF0E8F9C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022180000F003F8C04603B000BD00B585B022 +:40B5C000039001920A236B440A1C1A80019A0A236B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291039A029B9A4201D1039B11E0039B0133FC +:40B6000001D1029B0CE0029B013301D1039B07E0039A0549054800230093002301F02CF9180005B000BDC046804504103001018082B0020000916B4606331A800EE0009B73 +:40B6400000229B5E6A4606320021525E9A4202D1009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001238C +:40B680005B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F018 +:40B6C000DBF8059B180007B000BDC046944504103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B9B6809E0009B0C3300935D +:40B70000009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4498 +:40B7400000215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046B44504103001018010B50023002418002B +:40B78000210010BD00B583B000F0B6FE0D4B1B880D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B0121180000F03EFF00F0B8FEC04603B060 +:40B7C00000BDC046A26A0008FFFF0000D44504102301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A000949094800230093002301F03EF8044B012185 +:40B80000180000F04BFF00F091FEC04603B000BDA26A0008FC4504102401048010B586B000F06AFEFFF7A8FF03000C00049305940F236B4400221A700BF0FBF8FFF79CFF74 +:40B8400003000C00009301940F236B441B78002B0ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE00099019A049B059CC91AA241074B5C6879 +:40B880001B685B185441054A1360546000F04EFEC04606B010BDC046B06A0008A86A0008F0B58FB00590059B5B6838229B5C002B00D0F2E0059B5B683A229B5C002B00D0D5 +:40B8C000EDE0059B1B681B689847059B1B68DB69984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC272304AA9446634400221A70262304AA4B +:40B90000944663441F221A701FE0262304AA944663441B7801229A400B9B9A420AD1272304AA94466344262204A98C46624412781A7011E0262304AA94466344262204A9FF +:40B940008C4662441278013A1A70262304AA944663441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D494D4B3B22180000F0A9FC0A9B043B0722D0 +:40B980009A4013000993099B009300230193474A00230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117801859410B9B029300230393029A039B4A +:40B9C00010F080FA02000B0006920793059B5B6800221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968002200238A62CB62059B5B680B9A9A60CC +:40BA0000059B5B68272204A98C4662443B2112785A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D1400A0000200A9988400500154301210A9ADA +:40BA400091400C002200013ADA60059B5B68099A1A61059B5A68069B079C9361D461059B5A680023002413635463059B5B68392200219954059B5B683A2200219954059BF3 +:40BA80005B68382201219954059B180000F01AF8059B180000F0EEF902E0C04600E0C0460FB0F0BD1C4604103446041040420F0082B001900091019B5B68009A1A60C04675 +:40BAC00002B0704770B598B00D900D9B5B681593159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149B9A4200D1F6E0159B1A6A149B9A1A159BC9 +:40BB0000DB681340129300231393159A149B1362159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E06E4A00231298139910F0E4F903000C0004 +:40BB400010931194159B3B229B5C1A00203A002A04DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119ADA4013001793159B996ADA6A159B3B20B9 +:40BB80001B5C18002038002803DB169C8440260008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BB4415B185441159A9362D462159BDC6A00 +:40BBC0009B6A159A9268009200220192019AA24200D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B18544116931794159BDC6A9B6A159A92680492002249 +:40BC000005920499059A5B1A9441159A9362D4625BE0364A00231298139910F073F903000C000E930F94159B9B68069300230793069A079B0E980F9910F044F903000C0035 +:40BC400016931794159B9D6ADE6A159B9B68089300230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A94415B197441159A9362D462159BDC6A9B6A8F +:40BC8000159A9268029200220392039AA2421CD8039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A9B6A159A92680A9200220B920A990B9A16 +:40BCC0005B1A9441159A9362D462159B196B5A6B169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F00F0B589B0039000920193039B5B680693F4 +:40BD0000069B1A6B5B6B00980199801A994102000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E00599994202D1049991426CD8069B9B683A4A43 +:40BD400093420CD1049B0793039B5B681A69079B9A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C1A00203A002A03DB049991400D0008E0D9 +:40BD80002022D21A0499D1400A00059999400D001543049A9A401400244A00232000290080185941204A002310F08CF803000C000793039B5B681A69079B9A422AD2039B73 +:40BDC0005B681B69079325E0069B9B681E0000231F00049A059B3000390010F093F803000C0019002200114B0024C9186241080011000D4A002310F065F803000C00079340 +:40BE0000039B5B681A69079B9A4203D2039B5B681B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0084B0039002910192019A039B9A420BD9DF +:40BE4000029A019B9A4203D2029A039B9A4201D201230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E00023180004B0704710B58CB00190019B5B680B93C5 +:40BE80000B9B3A229B5C002B00D06CE0019B5B6839229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6B1B6B08930994019B5B685B685C681B68BE +:40BEC00006930794079A099B9A420CD8079A099B9A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A0023000800FFF7FDFE030005930B9B1A6A059BBE +:40BF00009A4206D184235A001849194B180000F0DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059A04991800FFF77CFF031E15D0019B1B6809 +:40BF40005B69984710E00B9B1A6A0B9B1B69D2180B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD1C4604103846041000B583B001900091019B1800BA +:40BF8000FFF78EFC00F0B8FA009A019B11001800FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB689847019B5B683A229B5C002B02D000F0B6FAA9 +:40BFC00041E0019B5B68392201219954019B5B685B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6BA2421CD801D1994219D8019B5B685B684E +:40C000000393019B5B68019A52685268D2685A60019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046019B5B68392200219954019B1800FFF7CD +:40C0400019FF00F073FA04B010BD10B586B0039002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089A9A6000230593039B5B685B68049310E0D6 +:40C08000049B5C681B68019AA2420ED3019AA24202D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049ADA60059B002B08D1039B5B68029A5A60AB +:40C0C000039B1800FFF7D6FE02E0059B029ADA6000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A4209D1019B5B68009AD2685A60019B1800B7 +:40C10000FFF7B8FE14E0019B5B685B6803930CE0039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD100F0FCF9C04605B000BD10B582B0019010 +:40C14000019B1800FFF7ACFB00F0D6F9019B1800FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C0467C46041010B5054B1B68002B04D0034B3E +:40C180001B68034A10009847C04610BD140400087C46041082B001900023180002B0704782B001900023180002B0704700B585B00190019B1B6810331B68019801220021EC +:40C1C000984703000393039B002B01DA039B12E0019B1B6810331B68019802220021984703000293019B1B6810331B680399019800229847029B180005B000BD00B583B02F +:40C20000734601900091002293431A000099019B180000F004F80300180003B000BD00B587B003900291019200230593029A039B110018000BF050FA03000593059B1800F2 +:40C2400007B000BD00B587B003900291019200230593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734601900091002293431A000099019B1800D3 +:40C2800000F003F8C04603B000BD00B585B0039002910192029A039B110018000BF0D8F8C04605B000BD00B587B003900291019200230593019A0299039B18000AF08AFE06 +:40C2C00003000593059B180007B000BD00B587B005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF8082B002006B4606331A806B4606331B882E +:40C300001A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A0B4B1100180008F0EBFB019B002B05D1DA +:40C340000122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000D4460410E602000010B582B001900091019B04229B5E013305D10B490B4B2F2267 +:40C380001800FFF7A3FF019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD244704105847041000B585B000F0A0F81E4A6B46110018004D +:40C3C000FFF7E9F80023039312E06B4601211800FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B01330393039B032BE9DD0023029316E06B460121E3 +:40C400001800FFF7B1FFC8235B00180001F052F96B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DDC8E7C046020600000FB400B583B005AB83 +:40C440000193019A049B1100180000F005F8C04603B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE03002393239B832B06D9084902AB7F33052218000F +:40C480000BF05AFC239B002B03DD02AB180000F005F8C04625B000BD6847041000B583B0019000F029F8019B18000BF0F9FF03001A00019B1900022000F028FE00F036F8FC +:40C4C000C04603B000BD82B0EFF310830193019B012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB2180002B07047000010B5094B1B68013345 +:40C5000005D10849084B51221800FFF7DFFEFEF763FF034B1B685A1C014B1A60C04610BDF86A0008704704108C47041010B5094B1B68002B0BD0074B1B685A1E054B1A6017 +:40C54000044B1B68002B03D1FEF764FF00E0C04610BDC046F86A000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A70FFF7DBFF0F236B441B785A1E9341CB +:40C58000DBB2180005B000BD00B587B0039002916B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A4209D1039B6A46073212781A7017236B44C6 +:40C5C00001221A7008E0029B16226A4412781A7017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B0039002910192FFF781FF039B1B680493029B1A68E3 +:40C60000049B9A4207D1039B019A1A6017236B4401221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180007B000BD00B585B001900A006B46023344 +:40C640001A80FFF759FF019B1B8899B20E236B446A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180005B000BD00B585B001900091FFF73CFF5F +:40C68000019B1A68009BD3180393019B039A1A60FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019B1B8899B20E236B446A46023212888A1A79 +:40C6C0001A80019B0E226A4412881A80FFF72EFF0E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A0393019B039A1A60FFF718FF039B180007 +:40C7000005B000BD10B50F4B1800FFF725FF031E05D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001235340DBB2002B01D0FFF73AFE012000F0DD +:40C74000C7FEC046006B00080FB410B584B07446124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C48009300230022002100F019F80A490A480023F7 +:40C78000002200F0B1F807AB0393039A069B11001800FFF761FEFFF7B5FFC046FC6A00080001FF80C04704103C6B000800B593B00390029101920093039B002B01DB264BF8 +:40C7C000039304AB3422002118000BF047FB04AB039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B04AB1A61119B5A6B04AB5A61119B1B6B79 +:40C800001A0004AB9A6104AA04ABDA61FFF774FE134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A90D4B342218000BF07FFA0C4B1B68002B4A +:40C8400004D00A4B1B68084A10009847FFF76EFE0023180013B000BD0101FF8020050008046B0008086B00083C6B0008706B0008002318007047000010B586B07446059040 +:40C880000491039202930F4B1800FFF765FE03001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF77DFF089B029A0499034800F015F8FFF7B3 +:40C8C00021FFC046FC6A00083C6B000882B00190019B002B01D0019B00E0024B180002B07047C046D847041070B58AB00790069105920493079B1B685B1703221340032B1F +:40C9000003D1079B1B685B4203E0079B1B681B041B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B323BFF3B132B49D89A004B4BD3181B6855 +:40C940009F46079B9A68494B11001800FFF774FD3DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FD2DE0079B9A68404B11001800FFF75CFDB5 +:40C9800025E0079B9A683D4B11001800FFF754FD1DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD0DE0079B9A68344B11001800FFF73CFD65 +:40C9C00005E0324B1800FFF737FD00E0C046069B1800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF755FD059B1800FFF751FD049A264B1100E3 +:40CA00001800FFF719FD079B9A68244B11001800FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B9969079BDB691A480293019100922B003D +:40CA400022003100FFF7F8FC079B1A68154B11001800FFF7F1FC144B1800FFF7EDFCC0460AB070BDE4470410DC490410384804105048041060480410704804108448041086 +:40CA800098480410AC480410BC480410D4480410E8480410FC48041004490410084904101C49041074490410C049041000B583B0FFF722FD0D4B1B880D4A93420BD1FFF773 +:40CAC00035FD0A4B1B881A000A490B48002300930023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BD746B0008FFFF00002C4A04102301018000B583B0CB +:40CB0000FFF7FAFC0D4B1B88002B0BD1FFF70EFD0A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80FFF7FCFCC04603B000BDC046746B000824 +:40CB40005C4A04102401018000B583B0FFF7D4FC0D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF783FE054B1B8801339AB2034B1A80FFF772 +:40CB8000D5FCC04603B000BD766B0008FFFF0000844A04102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B881A000A490A48002300930023FFF75CFEA6 +:40CBC000054B1B88013B9AB2034B1A80FFF7AEFCC04603B000BDC046766B0008B04A04102401018010B5074B1B68002B08D0054B1A6801235B421900100003F08DF800E068 +:40CC0000C04610BD6076000810B5064B1B68002B05D0044B1B68180003F0A8F800E0C04610BDC0466076000884B00390029101921D235B42180004B0704782B0019016234D +:40CC40005B42180002B0704782B001900123180002B0704782B001900023180002B0704700B585B003900800110001930A236B44021C1A8002AB0A1C1A80039B1800D9F716 +:40CC800085FA0F4A039B1A600E4B1B68002B11D102AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F051FE00E0C046039B180005B000BDC046B2 +:40CCC000604C041080750008A886000800B587B0039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A00064B1100180009F047FE059B01330593BD +:40CD0000EDE7019B180007B000BDC046A886000800B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE0300DAB2059B1A700123180007B000BD32 +:40CD4000A886000800B585B001900A006B4602331A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FE031E01D0012300E00023002B07D00E23F4 +:40CD80006B440E226A44128801210A431A806B4602331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B07D00E236B440E226A44128810210A43BD +:40CDC0001A800E236B4400229B5E180005B000BDA886000882B001900023180002B0704782B001900023180002B0704710B5174B1B78BFF35B8FDBB21A00012313405A4200 +:40CE00005341DBB2002B1DD0104B180000F084FB03005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF064B180000F0A8FB074A0849054B180015 +:40CE400000F03EFB034B180010BDC046046C000801050000006C0008C000000875D6021000B585B00190019B1800FFF7B9FF03000393039B002B01D0039B0DE0019B1800EA +:40CE8000FFF7A8FF03000393039B002B01D0039B02E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E00C4B019A9200D3580393039B01330DD188 +:40CEC000019B022B0ADC019B1800FFF7C9FF03000393044B019A92000399D150039B180005B000BD1804000800B583B00190019B180000F005F80300180003B000BD00004E +:40CF000000B585B00190019B1800FFF7C9FF03000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4215E0039B1B6814331B68039A10009847B2 +:40CF400003000293029B002B08DA0AF06FF80300029A52421A6001235B4200E00023180005B000BD1804000882B001900023180002B0704700B58DB0059004910392029342 +:40CF8000FFF7AEFA031E08D1FFF79DFA03001A0001235340DBB2002B01D0012300E00023002B07D0059A55495548002300930023FFF762FC039B002B07DA0AF037F80300E9 +:40CFC00016221A6001235B4295E0039B089300230B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993099A089B9A4251DA099B049AD3181B78DD +:40D000000A2B40D12B236B441B780D2B3BD0099A0B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F803000793079B002B02DA01235B425CE00B9A079B9D +:40D04000D3180B930B9A099B9A4250DB2D4A059BD3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA01235B423FE0079B002B3ADD214A059B27 +:40D08000D3180D221A70099B049AD2182B236B4412781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A1A00059B180000F029F803000693069BE4 +:40D0C000002B02DA01235B4215E00B9A069BD3180B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C04600E0C0460B9B18000DB000BDD84A041024 +:40D100002F010180C06B0008144B041000B587B0039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF030009221A6001235B4216E0059B1B680C331B688E +:40D14000019A02990598984703000493049B002B08DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB00590049103920293FFF7B2F9031E08D1FA +:40D18000FFF7A1F903001A0001235340DBB2002B01D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002B07DA09F03BFF030016221A6001235B421A +:40D1C00076E000230993059B1800FFF7CDFE031E65D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE0089B002B01D1099B5AE01F236B441B78DF +:40D200000D2B05D12E4A059BD3181B780A2B0AD11F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059BD3180A1C1A70049B0A221A702CE01F232D +:40D240006B441B780D2B05D11D4A059BD3181B780A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978134A059BD3180A1C1A70AAE71F236B4405 +:40D2800019780F4A059BD3180A1C1A701F236B441A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099B18000BB000BDC046184B04102F01018008 +:40D2C000806B000800B587B0039002910192039B1800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E0059B1B6808331B68019A0299059898473D +:40D3000003000493049B002B08DA09F08FFE0300049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019A0299039B180000F006F803000593059BEC +:40D34000180007B000BD00B587B0039002910192039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B4216E0059B1B6810331B68019A029905987C +:40D38000984703000493049B002B08DA09F04EFE0300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800FFF776FD03000393039B002B07D109F0BD +:40D3C00035FE030009221A6001235B4215E0039B1B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A52421A6001235B4200E00023180005B000BDCC +:40D4000010B5012000F064F886B00190194B1B680593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB2002B05D0104B0C221A6001235B4215E048 +:40D440000E4B1B68002B0DD00D4B1A680B4B1B68D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B07047C046180500081C8700087C6B0008E5 +:40D48000786B000800B583B001900C4B1B689B68180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B002B01D0FEF77CFFFEE7C0467406000848 +:40D4C00084B00390029101920123180004B0704700B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B0704700B583B00190019B180000F031FAC04677 +:40D5000003B000BD00B583B00190019B180000F037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1002320E0FFF756FB039B1B781A0003236D +:40D540001340012B03D1FFF75FFB002313E0039B1B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB2039B1A700123180005B000BD8C05000006 +:40D58000604B0410804B041000B585B00190019B0393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B785BB2032293435BB2012213435BB2DAB266 +:40D5C000039B1A70FFF720FBC04605B000BDC04694050000604B0410A84B041000B587B00390039B18000AF063F803000593059B002B07D1039A054905480023009300233C +:40D60000FFF73AF9059B180007B000BDE84B04101F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05490548002300930023FFF71EF9059B18002B +:40D6400007B000BD084C04101F01018000B583B00190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04603B000BD00B583B00190054A019B1A60C5 +:40D68000019B1800D8F746FD019B180003B000BD604C041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B000BD000000B585B00390FEF711FF031E74 +:40D6C00008D1FEF700FF03001A0001235340DBB2002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B180004F029FAC04605B000BDA84C04103D +:40D700000601018000B583B00190019B180000F0A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B001900091019B04331C22002118000AF035 +:40D740008DFB02AB180010231A0000210AF086FB009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB0B225A6002AB180002F0AAFA0200019BB5 +:40D780001A60019B1B68002B05D10549054B33221800FEF79BFDC04607B000BD304D04104C4D0410604D041000B587B00390039B1A6801235B421900100002F0ADFA030099 +:40D7C0000593059B002B04D1039B1B6A5A1C039B1A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BD644D04101501028000B587B00390039B2A +:40D800001B6A5A1E039B1A62039B1B68180002F0ADFA03000593059B002B07D0059A05490548002300930023FFF726F80023180007B000BD784D04101701028000B583B091 +:40D840000190019B1B68180002F0B6FA019B180000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704700B583B0124B0193114B124A23 +:40D88000D31A0093009B8022D200934201D98023DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A0093084B009A1A60084B019A1A6000F06EF814 +:40D8C00000F08AF820870008000001086C6C0008686C00087C6B0008786B000810B5154B154A1A60134B0B225A60124B1C22DA60104B124A9A600F4B180002F0E9F9020057 +:40D900000F4B1A600F4B104A1A600E4B0B225A600C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC04610BDC046286C00088C4D04100C6C0008C4 +:40D94000086C0008586C00089C4D04103C6C0008386C000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B421900100002F0D1F9C04603B000BD086C00080D +:40D9800000B583B00190044B1B68180002F0EEF9C04603B000BDC046086C000810B500F013F804F043F900F011F8C04610BD10B5FFF794FF00F006F8FEF75AFFFFF7CAFF2E +:40D9C000C04610BDC0467047C046704710B500F031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204B214A9A60214B224A1A61204B8022520127 +:40DA00005A611E4B4422DA601C4B1E4A9A601B4B18229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200164B1A60114A164B0021180003F068FED3 +:40DA400003000393039B002B07D10C4A11491248002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC0462C760008A84D0410107600083C760008ED +:40DA8000A876000864760008B84D041060760008AFD90210C04D04101D010180DC4D041000B583B00190064B1B68002B04D0044B1B68019A10009847C04603B000BDC046AC +:40DAC000706C000800B583B0019000F017F9000000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948002300930023FEF7BFFE039A16491748B1 +:40DB0000002300930023FEF7B7FE039A14491548002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A10491148002300930023FEF79FFE039A0E490F48C5 +:40DB4000002300930023FEF797FEC046C04F0410F44D041025010280184E041026010280404E041027010280784E041028010280B44E04102A010280F44E0410000102808C +:40DB800082B00190019B0633052B10D89A000A4BD3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B180002B07047C046D84F0410104F041094 +:40DBC000284F04105C4F0410744F0410844F04109C4F0410B84F041000B585B00390039B1800FFF7CDFF0100039A0348002300930023FEF741FEC0463101018000B585B075 +:40DC000003900291029B1800FFF7BAFF0100039A0248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF0100039A0248002300930023FEF71CFE92 +:40DC40003301018000B585B003900291029B11330BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BD3401018000B585B003900291029B180036 +:40DC8000FFF77EFF0100039A0248002300930023FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A0248002300930023FEF7E0FD3801018000B583B03A +:40DCC00003F054FD03000193019B1800FFF7E8FEC04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF771FDFEF71BFCC04610BD000010B5024BE1 +:40DD00001B689847FBE7C0461C0500087046C0082CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB91421ED0002909D0EFF309802038886317 +:40DD4000F0C044464D4656465F46F0C0083B1A60906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF30880D1E770470D4A13689942FAD801B5890050 +:40DD800053589C460FC8E0470CBC10609E46704701B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E7340500081451041082B0EFF305830193019B5A1E9341DBB274 +:40DDC000180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F01FF80023180003B000BD000080B584B057 +:40DE00000190FFF7D5FF031E03D1FFF7DCFF031E09D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC04644 +:40DE4000DDDD021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00B4B0A4A126AFF2109040A431A6231 +:40DE8000074B1B6A0193064B054AD169019A5202920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002349E1A64B1B7A002B07D001235B42180032 +:40DEC000FFF78AFE01235B423DE1A14B5B6D472B07D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B07D101235B421800FFF76EFE01235B42E9 +:40DF000021E1944B9C220021180009F0A7FF904BDA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B1900100000F0D1F9031E04D0844BDA6AFB +:40DF4000824B80215A50824B5A69814B9B691900100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BDA69774B1B6A1900100000F0AEF9031E60 +:40DF800004D0734BDA69714B9A6704E06F4B80229A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674BDA6704E0654B80229A58644BDA67644BD6 +:40DFC0005B6B002B13D0624B586B614B5B6B19685F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B9B6B002B13D0564B986B554B9B6B196841 +:40E00000534B9B6B9A68524B9B6BDB6800F0B0FA031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B1968474BDB6B9A68464BDB6BDB6800F098FAA9 +:40E04000031E04D0424BDA6B404B8C215A50404B1B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FA031E04D0364B1A6C344B90215A50344B1D +:40E080005B6C002B13D0324B586C314B5B6C19682F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284B9B6C002B13D0264B986C254B9B6C196877 +:40E0C000234B9B6C9A68224B9B6CDB6800F050FA031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C1968174BDB6C9A68164BDB6CDB6800F038FA41 +:40E10000031E04D0124BDA6C104B9C215A50104B1B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA031E04D0064B1A6D044BA0215A50034B76 +:40E1400001221A720023180010BDC04620050008145004102805000800B585B0314B1B7A012B07D007235B421800FFF735FD01235B4253E003F080FA03001A0001235340CE +:40E18000DBB2002B07D001235B421800FFF724FD01235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B421800FFF711FD01235B422FE003F0C0FC24 +:40E1C0000200184B1A6103F09BFC194B180002F0CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B180002F092FD0C4B1B680122134005D0022347 +:40E200000293029B83F3148804E003230193019B83F31488034B02221A720023180005B000BDC04620050008145004109DDD02103C05000880B582B000F03AF8FFF702FEA4 +:40E24000031E03D1FFF709FE031E08D006235B421800FFF7C1FC06235B42019304E0044B1F0000DF03000193019B180002B080BDA5DE021080B582B0FFF7E4FD031E03D195 +:40E28000FFF7EBFD031E08D006235B421800FFF7A3FC06235B42019304E0044B1F0000DF03000193019B180002B080BD59E10210C046704782B00190019B180002B0704766 +:40E2C00084B001900091019A009BD3180393039B0293029B180004B0704700B585B001900091019B002B0AD0019B0722134006D1009B0722134002D1009B172B01D800235F +:40E3000029E0019B1800FFF7D5FF03000393039B009A1A60039B10225A60019B08211800FFF7CEFF03000293009B083B1A00019B11001800FFF7C4FF0200029B1A60029B1D +:40E340001B6800221A60029B1B6810225A60029B00225A600123180005B000BD10B58AB0039002910192039B002B06D0029B002B03D0019B0322934301D0002384E0029BCD +:40E3800008330793079B0733072293430793039B08211800FFF794FF03000893089B1B681A00089BD31A0693089B5B6803229343069AD31A0693069A079B9A4208D2089B82 +:40E3C0001B680893089B1B68002BE7D100235BE0C046039B1800FFF76DFF03005968079A8A185A60039B1800FFF764FF03001B68083B1A00039B11001800FFF761FF0300A7 +:40E400000593059B5C68039B1800FFF753FF03005B689C4207D2039B1800FFF74BFF03005A68059B5A60089B5B68002B0CD1079A019B1A43089B5A60089B08211800FFF711 +:40E440003FFF030009931EE0089B5B68032293431A00089B11001800FFF732FF03000593089B1A68059B1A60079A019B1A43059B5A60089B059A1A60059B08211800FFF7F2 +:40E480001FFF03000993099B18000AB010BD00B587B001900091019B002B02D0009B002B01D1002339E0009B00211800FFF708FF03000393039B083B039300230493019BAA +:40E4C00008211800FFF7FCFE0300059309E0059B0493059B1B680593059B002B01D100231BE0059A039B9A42F1D1019B1800FFF7E1FE03005968059A5268032082438A1AAD +:40E500005A60049B002B03D1059B00225A6003E0059B1A68049B1A600123180007B000BD82B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B3C +:40E540005A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070472005000886B00390029101920093039B002B08D052 +:40E58000029B002B05D0019B002B02D0009B002B01D100232BE0039B029A1A60039B00225A60039B019A9A60039B009ADA60039B009A5A61029B019A5343009AD218039BA9 +:40E5C0001A61009B059308E0059A019BD3180493059B049A1A60049B0593029B013B0293029B002BF0D1059B00221A600123180006B0704786B00190EFF310830393039B8D +:40E600000593019B002B01D1002314E072B6019B5B690493049B002B08D0049B1A68019B5A61019B5B685A1C019B5A60059B002B00D162B6049B180006B0704784B0019091 +:40E640000091EFF310830293029B0393019B002B09D0019BDA68009B9A4204D8019B1A69009B9A4202D804235B4211E072B6019B5A69009B1A60019B009A5A61019B5B68EA +:40E680005A1E019B5A60039B002B00D162B60023180004B0704700B585B00190019B9B68002B19D0019B0C331800FFF7A3FF03000393039B002B0FD0019B1800FFF74CFF45 +:40E6C0000300180002F053F9030002930399029B0022180002F086FBC04605B000BD000010B58CB0039002910192039B002B02D0029B002B07D104235B4219000020FFF7E3 +:40E70000B9FA0023F9E0039B0793029B033303229343069307980DF0B7FB0300DBB21C0006980DF0B1FB0300DBB2E3181F2B07D804235B4219000020FFF79CFA0023DCE02E +:40E74000079B069A53430593019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6904930B9B002B0FD00B9B0322134003D1019BDB68232B13D809235B421C +:40E7800019000020FFF776FA0023B6E0019BDB68002B07D009235B4219000020FFF76AFA0023AAE00A9B002B0FD00A9B0322134003D1049A059B9A4218D20A235B42190090 +:40E7C0000020FFF757FA002397E0049B002B0DD00A235B4219000020FFF74CFA00238CE00023089300230B9300230A930B9B002B1CD1434B9C229B58002B08D0404B9C221B +:40E800009B581800FFF7F6FE03000B9309E03C4B80229B58012224211800FFF79FFD03000B9327236B4401221A7003E027236B4400221A700B9B002B3BD00A9B002B38D1A7 +:40E840002F4B9B6F059900221800FFF787FD03000A930A9B002B1ED127236B441B780122134015D0264B9C229B58002B08D0244B9C229B580B9A11001800FFF7DFFE07E0AF +:40E880001F4B80229B580B9A11001800FFF7FFFD00230B9305E0059A0A9B0021180009F0DDFA27236B4427226A44127802210A431A700B9B002B19D00B9B06221A700B9B7A +:40E8C00027226A4412789A700B9B089A5A600B9B00229A600B9B0C3318000A9B069A0799FFF746FE064B074ADA6605E005235B4219000020FFF7BEF90B9B18000CB010BDF4 +:40E900002005000897E6021010B584B001900091019B1800FFF71AFE03000393039B002B03D0039B1B78062B08D004235A42039B11001800FFF79EF9002320E0039B0C33B8 +:40E940001800FFF757FE03000293029B002B15D1009B002B12D0009B1900732002F068FA031E0BD0039B1800FFF7F6FD0400FFF7F9FD03001900200001F0C2FF029B18007D +:40E9800004B010BD00B587B001900091019B1800FFF7DCFD03000593059B002B03D0059B1B78062B09D004235A42059B11001800FFF760F904235B422AE0059B0C33009AAD +:40E9C00011001800FFF73AFE03000493049B002B1DD1059B9B68002B19D0059B0C331800FFF708FE03000393039B002B0FD0059B1800FFF7B1FD0300180001F0B8FF030061 +:40EA000002930399029B0122180002F0EBF9049B180007B000BD00B585B001900091019B1800FFF793FD03000393039B002B06D0039B1B78062B02D1009B002B08D0042354 +:40EA40005A42039B11001800FFF714F9002307E0039B0C331800FFF7CDFD03000293029B180005B000BD00B585B001900091019B1800FFF76BFD03000393039B002B03D05F +:40EA8000039B1B78062B09D004235A42039B11001800FFF7EFF804235B4214E0039B0C33009A11001800FFF7C9FD03000293029B002B07D1039B1800FFF74EFD0300180056 +:40EAC00001F026FE029B180005B000BD80B588B0039002910192FFF723FD031E03D1FFF72AFD031E08D006235B4219000020FFF7C1F8002307930EE0039B0693029B0593CE +:40EB0000019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC046E1E6021080B586B001900091FFF7F8FC031E03D1FFF7FFFC031E08D0009A019BA9 +:40EB400011001800FFF767FF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04609E9021080B586B001900091FFF7D0FCE7 +:40EB8000031E03D1FFF7D7FC031E08D0009A019B11001800FFF767FF030005930CE0019B0493009B0393049B1800039B1900044B1F0000DF03000593059B180006B080BDF7 +:40EBC00085E9021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B001909B +:40EC0000019B180002B07047014B5B69180070472005000886B001900091EFF310830293029B0393019B1B6B002B2ED0019B1B6B05930023049304E0059B0493059B5B68D9 +:40EC40000593059B002B05D0059BDA78009BDB789A42F1D3009B059A5A60009B049A9A60059B002B03D0059B009A9A6002E0019B009ADA62049B002B03D0049B009A5A60FF +:40EC80000FE0019B009A1A630BE0009B00225A60009B00229A60019B009ADA62019B009A1A6372B6019B9B6A5A1C019B9A62039B002B00D162B6C04606B0704788B00190AF +:40ECC000EFF310830393039B069372B6019B9B6A0593059B002B04D0019B9B6A5A1E019B9A62069B002B00D162B6059B002B1CD0019BDB6A079314E072B613236B44079A98 +:40ED000092781A70079B01229A70069B002B00D162B613236B441B78002B09D0079B9B680793079B002BE7D103E00023079300E0C046079B180008B0704782B00190009178 +:40ED4000009B5B68002B05D0009B5B68009A92689A6003E0009B9A68019BDA62009B9B68002B05D0009B9B68009A52685A6003E0009B5A68019B1A63C04602B0704700B52A +:40ED800089B00190019B9B78002B5ED0019BDB680793019A079B11001800FFF7CEFF019B00221A70079B0C33019A11001800FFF745FC079B9B68002B00D195E0079B9B6800 +:40EDC0005B78932B00D08FE0079B0C331800FFF711FC03000693069B002B00D184E0079B1800FFF70BFF0300180001F0C0FD03000593059B00220021180001F0F3FF059B0E +:40EE0000180001F03FFF03000493049B08331B680393069B0C331800079B5A6A039B190008F08AFF069B07221A70069B00229A70049B0C331B68DAB2069BDA70069A079B2D +:40EE400011001800FFF7E6FE4EE0019B9B680793019B5B680393079B9B68002B3ED0079B9B685B78832B39D1079B1800FFF7C6FE0300180001F07BFD03000593059B0022D0 +:40EE80000021180001F0AEFF059B180001F0FAFE03000493049B08331B680293019B0C331900079B5A6A029B180008F045FF049B0C331B68002B06D0049B0C331B681A0026 +:40EEC000019BDB781370019B00221A70079B0C33019A11001800FFF7B1FB05E0019A079B11001800FFF796FEC04609B000BD000010B58CB0039002910192039B002B02D06B +:40EF0000029B002B07D104235B4219000020FEF7C3FE002304E1029B0333032293430C33079303980CF0B0FF0300DBB21C0007980CF0AAFF0300DBB2E3181F2B07D80423BE +:40EF40005B4219000020FEF7A7FE0023E8E0039B079A53430693019B002B48D0019B1B680893019B9B680B93019B1B690A93019B5B6905930B9B002B0FD00B9B032213406F +:40EF800003D1019BDB68332B13D809235B4219000020FEF781FE0023C2E0019BDB68002B07D009235B4219000020FEF775FE0023B6E00A9B002B0FD00A9B0322134003D176 +:40EFC000059A069B9A4218D20A235B4219000020FEF762FE0023A3E0059B002B0DD00A235B4219000020FEF757FE002398E00023089300230B9300230A930B9B002B1CD180 +:40F00000494BA0229B58002B08D0474BA0229B581800FFF7EFFA03000B9309E0424B80229B58012234211800FFF798F903000B9327236B4401221A7003E027236B4400223E +:40F040001A700B9B002B3BD00A9B002B38D1364BDB6F069900221800FFF780F903000A930A9B002B1ED127236B441B780122134015D02D4BA0229B58002B08D02A4BA02291 +:40F080009B580B9A11001800FFF7D8FA07E0264B80229B580B9A11001800FFF7F8F900230B9305E0069A0A9B0021180008F0D6FE27236B4427226A44127802210A431A70C1 +:40F0C0000B9B002B25D00B9B08221A700B9B27226A4412789A700B9B089A5A600B9B00229A600B9B029A5A620B9B00229A620B9B0022DA620B9B00221A630B9B0C331800F3 +:40F100000A9B079A0399FFF733FA074B074A1A6705E005235B4219000020FEF7BDFD0B9B18000CB010BDC046200500087FED021010B58CB00390029100936B4607331A70ED +:40F14000039B1800FFF754FD03000A930A9B002B06D00A9B1B78082B02D1029B002B09D104235A420A9B11001800FEF795FD04235B428DE00A9B9B68002B35D00A9B9B68A3 +:40F180005B78832B30D10A9B1800FFF737FD0300180001F0ECFB03000993099B01220021180001F01FFE099B180001F06BFD03000893089B08331B6807930A9B5A6A029994 +:40F1C000079B180008F0B8FD089B0C331B68002B07D0089B0C331B681A006B4607331B78137000230B9352E00A9B0C331800FFF701FA03000693069B002B1CD0069B0C33AD +:40F2000018000A9B5A6A029B190008F095FD069B07221A70069B00229A70069B6A4607321278DA70069A0A9B11001800FFF7F2FC00230B932BE0009B002B25D0009B190001 +:40F24000932001F0F5FD031E1AD00A9B1800FFF7D5FC0400FFF7D8FC03001900200001F04FFBEFF309830593059B0893089B0833029A1A60089B0C336A46073212781A6020 +:40F2800002235B420B9302E003235B420B930B9B18000CB010BD10B58CB00390029101920093039B1800FFF7A3FC03000A930A9B002B06D00A9B1B78082B02D1029B002B80 +:40F2C00009D104235A420A9B11001800FEF7E4FC04235B429EE00A9B1800FFF7EFFC03000993099B002B6AD0099A0A9B11001800FFF723FD099B0C3319000A9B5A6A029BBD +:40F30000180008F019FD019B002B03D0099BDA78019B1A70099B00221A700A9B0C33099A11001800FFF78AF90A9B9B68002B43D00A9B9B685B78932B3ED10A9B0C3318004E +:40F34000FFF758F903000993099B002B34D00A9B1800FFF753FC0300180001F008FB03000893089B01220021180001F03BFD089B180001F087FC03000793079B08331B68D1 +:40F380000693099B0C3318000A9B5A6A069B190008F0D2FC099B07221A70099B00229A70079B0C331B68DAB2099BDA70099A0A9B11001800FFF72EFC00230B9329E0009BD5 +:40F3C000002B23D0009B1900832001F031FD031E18D00A9B1800FFF711FC0400FFF714FC03001900200001F08BFAEFF309830593059B0793079B0833029A1A60079B0C33E0 +:40F40000019A1A6002235B420B9302E003235B420B930B9B18000CB010BD00B589B00390029100936B4607331A70039B1800FFF7DFFB03000693069B002B09D0069B1B78B6 +:40F44000082B05D1029B002B02D0009B002B09D004235A42069B11001800FEF71DFC04235B4234E0069B0C331800FFF7C3F803000593059B002B26D0059B0C331800069B3A +:40F480005A6A029B190008F057FC059B07221A70059B00229A70059B6A4607321278DA70059B0433029A1A60059B0833069A1A60059B1800FFF7A2FB0300180001F028F9B1 +:40F4C0000023079302E003235B420793079B180009B000BD00B589B00390029101920093039B1800FFF784FB03000693069B002B09D0069B1B78082B05D1029B002B02D063 +:40F50000009B002B09D004235A42069B11001800FEF7C2FB04235B422BE0069B1800FFF7CDFB03000593059B002B1ED0059B0C331900069B5A6A029B180008F0FDFB019BB5 +:40F54000002B03D0059BDA78019B1A70059B0C33069A1A60059B1800FFF750FB0300180001F0D6F80023079302E003235B420793079B180009B000BD80B588B003900291EA +:40F580000192FFF71FFB031E03D1FFF726FB031E08D006235B4219000020FEF77DFB002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF0300A8 +:40F5C0000793079B180008B080BDC046F1EE021090B58BB00390029100936B4607331A70FFF7F0FA031E03D1FFF7F7FA031E0BD0009C6B4607331A78029903982300FFF7FD +:40F600000CFF0300099319E0039B0893029B07931B236B446A46073212781A70009B0593089B1800079B19001B236B441B781A00059B044C270000DF03000993099B180039 +:40F640000BB090BD31F1021090B58BB00390029101920093FFF7B6FA031E03D1FFF7BDFA031E08D0009B019A02990398FFF732FF0300099313E0039B0893029B0793019B10 +:40F680000693009B0593089B1800079B1900069B1A00059B044C270000DF03000993099B18000BB090BDC04697F2021082B0EFF305830193019B5A1E9341DBB2180002B0E4 +:40F6C000704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B07047014B5B69180070472005000800B587B06A +:40F700000190019B059331E0059B5B690493059BDB781A000823134026D0059B00221A76059B9B68002B1FD0059B1800FFF7DAFF0300180001F01BF903000393039B002268 +:40F740000021180001F04EFB059B039ADA60039BDA6A059B5A61059B00221A61039B059ADA62059B01221A76049B0593059B002BCAD1C04607B000BD00B587B00190019B29 +:40F78000002B27D0019B1B680293019B5B680493019B9B680593059B002B0FD0059B0322134003D1019BDB681B2B19D809235B4219000020FEF734FA00235EE0019BDB6835 +:40F7C000002B0DD009235B4219000020FEF728FA002352E0002302930023049300230593059B002B1CD1264B94229B58002B08D0234B94229B581800FEF7FCFE03000593D8 +:40F8000009E01F4B80229B5801221C211800FEF7A5FD030005930F236B4401221A7003E00F236B4400221A70059B002B1ED0059B04221A70059B0F226A4412789A70049B7D +:40F84000DAB2059BDA70059B029A5A60059B00229A60059B0022DA60059B00221A61059B00225A61059B00221A7605E005235B4219000020FEF7D4F9059B180007B000BD87 +:40F880002005000800B587B001900091019B1800FFF722FF03000493FFF72AFF03000393039B002B09D108235A42049B11001800FEF7B6F901235B4289E0049B002B03D053 +:40F8C000049B1B78042B09D004235A42049B11001800FEF7A5F904235B4278E0049B1B7E002B1AD1049B039ADA60039BDA6A049B5A61049B00221A61039BDB6A002B03D077 +:40F90000039BDB6A049A1A61039B049ADA62049B01221A760023059358E0049BDB781A00012313401CD0049BDA68039B9A4217D1049B1B7EFF2B0AD110235A42049B1100A0 +:40F940001800FEF76DF903235B4205933EE0049B1B7E0133DAB2049B1A760023059335E0009B002B2FD0049BDB781A000223134014D0049BDB6820229A56039B20215B56D3 +:40F980009A420BDA049BDB68039A2021515620229954049BDB68180001F009F8009B1900532001F045FA031E09D0049B1800FFF799FE0200039B1900100000F0A1FF0223F1 +:40F9C0005B42059302E003235B420593059B180007B000BD00B589B00190019B1800FFF77BFE03000593FFF783FE03000493049B002B09D108235A42059B11001800FEF7F2 +:40FA00000FF901235B42A8E0059B002B03D0059B1B78042B09D004235A42059B11001800FEF7FEF804235B4297E0059B1B7E002B09D10F235A42059B11001800FEF7F0F838 +:40FA400003235B4289E0059BDA68049B9A4209D00E235A42059B11001800FEF7E1F803235B427AE0059B1B7E013BDAB2059B1A76059B1B7E002B00D06EE0059B5B69002B61 +:40FA800004D0059B5B69059A12691A61059B1B69002B05D0059B1B69059A52695A6103E0059B5A69049BDA62059BDB781A00022313402AD01B236B44049A2121525C1A7077 +:40FAC000049BDB6A079317E0079B9B68002B10D0079B9B6820229B561B226A44127852B29A4206DA079B9A681B236B442021525C1A70079B5B690793079B002BE4D1049BA9 +:40FB00001B226A44202112785A54059B9B68002B1FD0059B1800FFF7E5FD0300180000F026FF03000393039B00220021180001F059F9059B039ADA60039BDA6A059B5A615B +:40FB4000059B00221A61039B059ADA62059B01221A76002001F0F0F80023180009B000BD00B587B00190019B1800FFF7B5FD03000393039B002B03D0039B1B78042B09D08B +:40FB800004235A42039B11001800FEF749F804235B4298E0039B1B7E002B00D173E0039BDB680293039B5B69002B04D0039B5B69039A12691A61039B1B69002B05D0039B37 +:40FBC0001B69039A52695A6103E0039B5A69029BDA62039BDB781A000223134037D013236B44029A2121525C1A70029BDB6A059317E0059B9B68002B10D0059B9B682022C8 +:40FC00009B5613226A44127852B29A4206DA059B9A6813236B442021525C1A70059B5B690593059B002BE4D1029B20229B5613226A44127852B29A4209D0029B13226A44B4 +:40FC4000202112785A54029B180000F0B0FE039B9B68002B14D0039B1800FFF743FD0300180000F084FE0300029303235942029B0022180001F0B6F8039B9B68002BEAD139 +:40FC8000002001F059F8039B00221A70039B9B781A000123134015D00C4B94229B58002B08D00A4B94229B58039A11001800FEF7C5FC07E0054B80229B58039A1100180062 +:40FCC000FEF7E5FB0023180007B000BD2005000880B584B00190FFF7E9FC031E03D1FFF7F0FC031E08D006235B4219000020FDF797FF0023039308E0019B0293029B18009E +:40FD0000044B1F0000DF03000393039B180004B080BDC04679F7021080B586B001900091FFF7C4FC031E03D1FFF7CBFC031E0AD006235A42019B11001800FDF771FF0623A7 +:40FD40005B4205930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B180006B080BDC04685F8021080B584B00190FFF79BFC031E03D1FFF7A2FC031E53 +:40FD80000AD006235A42019B11001800FDF748FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC046D5F9021080B584B00190FFF717 +:40FDC00075FC031E03D1FFF77CFC031E0AD006235A42019B11001800FDF722FF06235B42039308E0019B0293029B1800044B1F0000DF03000393039B180004B080BDC046D8 +:40FE000061FB021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B001905A +:40FE4000019B180002B07047014B5B69180070472005000886B00190EFF310830393039B049372B6019B9B89002B08D0019B9B89013B9AB2019B9A810123059301E00023A8 +:40FE80000593049B002B00D162B6059B180006B0704786B00190EFF310830393039B049372B6019B9A89019BDB899A4208D2019B9B8901339AB2019B9A810123059301E09A +:40FEC00000230593049B002B00D162B6059B180006B0704700B585B00190019B9B68002B15D0019B1800FFF7B5FF031E0FD0019B1800FFF7A3FF0300180000F038FD030058 +:40FF00000393039B00220021180000F06BFFC04605B000BD00B589B0039002910192039B002B07D0039B434A934203D8029A039B9A4207D904235B4219000020FDF782FED7 +:40FF4000002373E0019B002B24D0019B1B680593019B9B680793079B002B0FD0079B0322134003D1019BDB680F2B17D809235B4219000020FDF766FE002357E0019BDB682B +:40FF8000002B0BD009235B4219000020FDF75AFE00234BE00023059300230793079B002B1CD1254B98229B58002B08D0224B98229B581800FEF71EFB0300079309E01E4B1E +:40FFC00080229B58012210211800FEF7C7F9030007931B236B4401221A7003E01B236B4400221A70079B002B19D0079B05221A70079B1B226A4412789A70079B059A5A6073 +:020000041003E7 +:40000000079B00229A60029B9AB2079B9A81039B9AB2079BDA81084B084A9A6605E005235B4219000020FDF70DFE079B180009B000BDC046FFFF000020050008D5FE0210A8 +:4000400010B584B001900091019B1800FFF7F0FE03000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7EAFD04235B4226E0029B1800FFF7EBFE031E7E +:4000800002D0002303931CE0009B002B16D0009B1900632000F0CCFE031E0BD0029B1800FFF7CCFE0400FFF7CFFE03001900200000F026FC02235B42039302E003235B4299 +:4000C0000393039B180004B010BD00B587B00190019B1800FFF7ACFE03000493049B002B03D0049B1B78052B09D004235A42049B11001800FDF7A6FD04235B422AE0049B61 +:400100009B68002B12D0049B1800FFF797FE0300180000F02CFC03000393039B01220021180000F05FFE0023059312E0049B1800FFF7AFFE031E02D00023059309E0112388 +:400140005A42049B11001800FDF77CFD03235B420593059B180007B000BD000000B585B00190019B1800FFF763FE03000393039B002B03D0039B1B78052B09D004235A426F +:40018000039B11001800FDF75DFD04235B423BE0039B9B68002B17D0039B1800FFF74EFE0300180000F0E3FB0300029303235942029B0022180000F015FE039B9B68002BB8 +:4001C000EAD1002000F0B8FD039B00221A70039B9B781A000123134015D00D4B98229B58002B08D00A4B98229B58039A11001800FEF724FA07E0064B80229B58039A1100B0 +:400200001800FEF744F90023180005B000BDC0462005000800B585B001900091019B1800FFF706FE03000293029B002B06D0029B1B78052B02D1009B002B09D004235A420F +:40024000029B11001800FDF7FDFC04235B420CE0029B1800FFF7FEFD031E02D00023039302E003235B420393039B180005B000BD00B585B00190019B1800FFF7D9FD030068 +:400280000293029B002B03D0029B1B78052B09D004235A42029B11001800FDF7D3FC04235B421BE0029B1800FFF7F3FD031E0AD0029B1800FFF7C2FD0300180000F028FA9D +:4002C0000023039309E011235A42029B11001800FDF7B8FC03235B420393039B180005B000BD000080B588B0039002910192FFF789FD031E03D1FFF790FD031E08D0062361 +:400300005B4219000020FDF79DFC002307930EE0039B0693029B0593019B049306980599049B1A00044B1F0000DF03000793079B180008B080BDC04615FF021080B586B0EB +:4003400001900091FFF75EFD031E03D1FFF765FD031E08D0009A019B11001800FFF75AFF030005930BE0019B0493009B0393049B18000399044B1F0000DF03000593059B51 +:40038000180006B080BDC0464100031080B584B00190FFF737FD031E03D1FFF73EFD031E06D0019B1800FFF763FF0300039308E0019B0293029B1800044B1F0000DF0300D4 +:4003C0000393039B180004B080BDC046CB00031080B584B00190FFF715FD031E03D1FFF71CFD031E0AD006235A42019B11001800FDF728FC06235B42039308E0019B0293C4 +:40040000029B1800044B1F0000DF03000393039B180004B080BDC0465D010310024B802252055A60C046704700ED00E082B00190019B180002B0704782B00190019B180022 +:4004400002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B0704782B00190019B180002B07047014B1B7A1800704720050008B6 +:4004800086B00190EFF310830293029B04930E236B441F4A5421525A1A8072B61C4B56229B5A0E226A4412889A4227D9184B56229B5A013399B2164B56229952144BDA6D2A +:4004C000134B58215B5A9B00D318019A1A60104B58229B5A013399B20D4B582299520C4B58229B5A0E226A4412889A4203D1084B5822002199520123059301E000230593B0 +:40050000049B002B00D162B6059B180006B070472005000800B585B0EFF310830093009B02936B4606331F4A5421525A1A8072B61C4B56229B5A002B29D01A4B56229B5A94 +:40054000013B99B2174B56229952164BDA6D154B5A215B5A9B00D3181B681800FFF766FF030003930F4B5A229B5A013399B20D4B5A2299520B4B5A229B5A6A460632128890 +:400580009A4206D1074B5A220021995201E000230393029B002B00D162B6039B180005B000BDC0462005000800B583B001F0C2FA2D4BDB685A1C2C4BDA602B4B1B6D002B68 +:4005C00002D0294B1B6D984700F004FB002000F0B3FB254B1B6C002B43D0234B9A6B224B9B699A4208D0204B9A691F4B9A631E4B1A6C1D4BDA6334E01B4BDB6B002B04D0AC +:40060000194BDB6B5A1E184BDA63174BDB6B002B27D1FFF72FFF0300022B22D1124B5B6A0193019B002B1CD0019B20229A560E4B9B6B20215B569A4213D1019B180000F0FA +:40064000DCF9094B9B6B180000F0F2F9019B180000F062FB044B019A9A63034B1A6C024BDA63C04603B000BD2005000810B582B0FFF750FF03000193019B002B3CD0019B2D +:400680001B78072B36D89A001F4BD3181B689F461E4B1C6E019B1800FFF7CEFE03001800A04728E0194B5C6E019B1800FFF7CAFE03001800A0471EE0144B9C6E019B1800E0 +:4006C000FFF7C6FE03001800A04714E00F4BDC6E019B1800FFF7C2FE03001800A0470AE00A4B1C6F019B1800FFF7BEFE03001800A04700E0C046BBE7C046002000F01CFB53 +:40070000C04602B010BDC046185104102005000800B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE08E0064B01229A7204E0019B1900022074 +:40074000FDF7C6F9C04603B000BDC0462005000882B002006B4607331A706B4606330A1C1A7080235B04180002B0704782B002006B4607331A702023180002B0704782B0B8 +:40078000EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704782B00190019B180002B0704782B00190019B180002B00B +:4007C000704782B00190019B180002B070470000014B1B7A1800704720050008014B5B69180070472005000882B00190024B019A5A61C04602B070472005000886B00190B0 +:400800000091EFF310830393039B059372B6019B9A6A009B1A43019B9A62019B9B6A0493059B002B00D162B6049B180006B0704786B001900091EFF310830393039B0593E5 +:4008400072B6019B9B6A0493019B9B6A009AD2431A40019B9A62059B002B00D162B6049B180006B0704788B0039002910192019B0222134029D1EFF310830593059B0693BA +:4008800072B6039B9B6A0793019B0122134005D0079B029A1A40029B9A4207D1019B0122134006D1079B029A134002D10023079306E0039B9B6A029AD2431A40039B9A62CB +:4008C000069B002B18D162B616E0039B9B6A0793019B0122134005D0079B029A1A40029B9A4207D1019B0122134005D1079B029A134001D100230793079B180008B07047F7 +:4009000000B587B001900091009B002B2CD0009B20229B560393019B1800FFF752FF03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B56ED +:400940001A00039B9A42F0DA009B059ADA60009B049A9A60059B009A9A60049B002B04D0049B009ADA6000E0C04607B000BD10B584B00190019B9B680393039B002B12D069 +:40098000039B9A68019B9A60039B9B68002B07D0039B9C68019B1800FFF713FF0300E360039B0022DA60039B180004B010BD00B585B00190019B039302E0039BDB68039383 +:4009C000039B002B03D0039B1B78012BF5D0039B1800FFF7F0FE03000293029B002B09D0019B180000F009F8019A029B11001800FFF786FFC04605B000BD82B00190019B0E +:400A0000DB68002B10D0019BDB68019A92689A60019B9B68002B04D0019B9B68019AD268DA60019B0022DA60C04602B07047000000B583B00190019B01225A70019A044B5B +:400A400011001800FFF75CFFC04603B000BDC0463C05000884B001900091009B013321D1002303932C4B1B6B029304E0029B0393029B1B690293029B002BF7D1019B009A42 +:400A8000DA61019B039A5A61019B00221A61039B002B03D0039B019A1A613AE01E4B019A1A6336E0002303931B4BDB6A029309E0029BDB69009AD31A0093029B0393029B20 +:400AC0001B690293029B002B04D0029BDA69009B9A42EDD9019B009ADA61019B039A5A61019B029A1A61039B002B03D0039B019A1A6102E0084B019ADA62029B002B08D010 +:400B0000029BDA69009BD21A029BDA61029B019A5A61C04604B070472005000882B00190019BDB69013323D1019B5B69002B04D1274B1A6B019B9A4246D1019B1B69002BE9 +:400B400004D0019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6130E0019B1A69194B1A632BE0019B5B69002B04D1154BDA6A019B9A420C +:400B800022D1019B1B69002B0DD0019B1B69019A1269D169019AD2698A18DA61019B1B69019A52695A61019B5B69002B08D0019B5B69019A12691A61019B00225A6103E016 +:400BC000019B1A69024BDA62C04602B07047C0462005000800B583B0294BDB6A0193019B002B4AD0019BDB695A1E019BDA61019BDB69002B42D1019B5B78532B12D006DC97 +:400C0000332B11D0432B11D0132B11D019E0732B10D002DC632B0FD013E0832B0ED0932B0ED00EE0C0460CE0C0460AE0C04608E0C04606E0C04604E0C04602E0C04600E0C8 +:400C4000C046019B1800FFF7D8FE019B1800FFF7EFFE019B1B690193019B002B03D0019BDB69002BC7D0019B002B02D0019B00225A61034B019ADA6200E0C04603B000BDDA +:400C80002005000810B584B00190019B9C6B019B22229B5C1800FFF769FD0300E3180393039B180004B010BD00B587B00190019B01225A70019B20229B560393154B1800E1 +:400CC000FFF77FFD03000593059B9B68049304E0049B0593049B9B680493049B002B06D0049B20229B561A00039B9A42F0DC019B059ADA60019B049A9A60059B019A9A60A9 +:400D0000049B002B02D0049B019ADA60C04607B000BDC0463C05000800B583B00190019B02225A70034B019A9A6100F0BBF8C04603B000BD2005000810B586B001901724E6 +:400D40006C44FFF745FD03002370FFF747FD03000493019B002B22D1214B5B6A039317236B441B78022B37D1049B002B34D0039B002B31D0039B20229A56049B20215B56F6 +:400D80009A4229DD039B1800FFF737FE049B1800FFF78AFF039B1800FFF7BEFF1CE017236B441B78022B13D1049B002B10D0019B20229A56049B20215B569A4208DD049BDF +:400DC0001800FFF771FF019B1800FFF7A5FF03E0019B1800FFF72CFEC04606B010BDC0462005000800B587B0039002916B4607331A70039B1800FFF745FF03000593059B02 +:400E0000029A1A60039B1800FFF788FE6B4607331B78002B04D0039B1800FFF78DFF03E0039B1800FFF704FEC04607B000BD000000B585B0020000916B4607331A70FFF7C2 +:400E4000C7FC0300022B01D0002324E0FFF7C6FC03000393039B002B01D100231BE00F4B5B6A002B01D1002315E0039B6A46073212785A70009A039B11001800FFF7EAFD30 +:400E8000074B1800FFF773FD03000393039B1800FFF742FF0123180005B000BD200500083C05000800B583B0FFF798FC03000193019B002B10D0019B9A6B019B1B6B9A4269 +:400EC00005D9019B1B6B1B68054A934204D0019B19000120FCF7FCFDC04603B000BDC046A52E5AE200B585B00190019B5B78332B14D1019B596A019B23229B5C1A00019B10 +:400F00001800FFF7B0FC03000393039B002B05D00399019B00221800FFF764FFC04605B000BD000010B58EB0039002910192039B002B07D104235B4219000020FCF75EFED4 +:400F40000023AFE1019B002B56D0019B1B680793019B5B680C93019B9B680D93019B1B690B93019B5B690A93019B9B6909930D9B002B0FD00D9B0322134003D1019BDB685F +:400F8000432B13D809235B4219000020FCF736FE002387E1019BDB68002B07D009235B4219000020FCF72AFE00237BE10B9B002B0ED00B9B0722134002D10A9B002B07D15B +:400FC0000B235B4219000020FCF718FE002369E1099B002B02D11823099319E0099B002B02DD099B382B13DD0C235B4219000020FCF704FE002355E10023079300230C938E +:4010000000230D9300230B9300230A93182309930A9B002B0ED00A9B0722134002D10A9B472B07D80B235B4219000020FCF7E6FD002337E10D9B002B1CD19C4B88229B58A4 +:40104000002B08D0994B88229B581800FDF7D2FA03000D9309E0954B80229B58012244211800FDF77BF903000D9323236B4401221A7003E023236B4400221A700D9B002B6F +:401080005DD00B9B002B5AD10A9B002B25D1884B5B6D0A93854B84229B58002B13D0834B84229B581800FDF7A5FA03000B930B9B002B1BD023236B4423226A441278102180 +:4010C0000A431A7012E0794B5B6F0A9900221800FDF744F903000B9308E0744B5B6F0A9900221800FDF73AF903000B930B9B002B1DD123236B441B780122134015D06B4B7C +:4011000088229B58002B08D0684B88229B580D9A11001800FDF792FA07E0644B80229B580D9A11001800FDF7B2F900230D9323236B4423226A44127802210A431A700D9BFE +:40114000002B00D1A0E00D9B01221A700D9B01225A700D9B23226A4412789A700C9BDAB20D9BDA700D9B079A5A600D9B00229A600D9B0022DA600D9B00221A610D9B0022DB +:401180005A610D9B00229A610D9B0022DA61099B59B20D9B20229954099B59B20D9B212299540D9B2222FD2199540D9B2322002199540D9B00225A620D9B00229A620D9BB7 +:4011C0000022DA620D9B0B9A1A630D9B0A9A5A630B9A0A9BD318403B1A000D9B9A63039A0D9BDA630B9B0693069B324A1A60304B1B680422134010D00A9B9B08113B059374 +:4012000008E0069B04330693069B2B4A1A60059B013B0593059B002BF3D10D9B9B6B06930023059308E0059B9B00069AD31800221A60059B01330593059B0D2BF3D1069BCD +:4012400034331E4A1A60069B3833039A1A60069B3C331C00164B1B68012213405A1E9341D8B2039B012213405A1E9341DBB21900FFF76EFA03002360069B2033029A1A60B2 +:401280000A4B0F4A1A6605E005235B4219000020FCF7B4FC0D9B002B03D00D9B1800FFF74BFD0D9B18000EB010BDC0462005000814500410A52E5AE2CCCCCCCCA1170310D6 +:4012C000E50E031000B583B0FFF788FA03000193019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A000223134017D0019B9B781A00102313400D +:4013000009D0184B84229A58019B1B6B19001000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134015D00C4B88229B58002B08D0094B8822FA +:401340009B58019A11001800FDF778F907E0054B80229B58019A11001800FDF798F8C04603B000BD2005000800B583B0FFF736FA03000193019B002B4ED0FFF729FA0300F4 +:40138000022B4BD1274B5B6A002B47D0019BDB6A1800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF309830093009A019B9A631B4B1800FFF7D7FAAD +:4013C00003001800FFF7A8FC0020FFF70DFA019BDB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B04225A70019B0022DA600A4B5A6B019B9A60DD +:40140000084B5B6B002B03D0064B5B6B019ADA60044B019A5A6302E0C04600E0C04603B000BDC046200500083C05000800B587B001900091019B1800FFF7B7F90300049346 +:40144000049B002B06D0049B1B78012B02D1009B002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D103235A42049B11001800FCF7BFFB0323F1 +:401480005B4231E0009A049B11001800FFF7B6F903000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF903000393039B002B15D0049B23229B5C1D +:4014C0001A000223134006D1049B5B6ADB43039A1340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B585B00190FFF772F903000393039B002B11 +:4015000008D108235B4219000020FCF777FB01235B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A039B11001800FFF77BF903000293029B7D +:40154000180005B000BD00B583B0FFF747F903000193019B002B01D1002301E0019B9B6A180003B000BD00B587B0039002910192FFF734F903000493049B002B08D1082336 +:401580005B4219000020FCF739FB01235B422FE0039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049B1800FFF758F903000593059B002B16D1C4 +:4015C000019B002B10D0049B039A5A62029BD9B2049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B180007B000BD00B585B001900091019BC6 +:401600001800FFF7D2F803000393039B002B06D0039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B421EE0039B5B78042B09D103235A42039BC6 +:4016400011001800FCF7DAFA03235B4210E0009A039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029B180005B000BD000000B583B06B4607336F +:4016800001221A701E4B9B6A002B15D11D4B9A6D1D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D16B46073300221A70124B5B6E002B19D096 +:4016C0000F4B9B6C002B15D10E4BDA6D0F4B00211800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B46073300221A706B4607331B78180003B000BD77 +:401700002005000814500410C5DA02101D1A031080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B4219000020FCF763FA0023079310E0039B06937F +:40174000029B0593019B0493069B1800059B1900049B1A00044B1F0000DF03000793079B180008B080BDC046250F031080B582B0FFF705F8031E03D1FFF70CF8031E04D0B2 +:40178000FFF7A0FD0300019304E0044B1F0000DF03000193019B180002B080BDC512031080B5FCF78BFA054B1F0000DF01235B4219000020FCF722FAFEE7C046691303102C +:4017C00080B586B001900091FEF7D9FF031E03D1FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B0393049B18000399044B1F0000DF0300E3 +:401800000593059B180006B080BDC0462D14031080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF7E5F906235B42039307E0019B02930298F1 +:40184000044B1F0000DF03000393039B180004B080BDC046EF14031080B582B0FEF78FFF031E03D1FEF796FF031E02D00023019304E0044B1F0000DF03000193019B180030 +:4018800002B080BD4715031080B588B0039002910192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906235B4207930DE0039B0693029B0593019BF7 +:4018C000049306980599049A044B1F0000DF03000793079B180008B080BDC0466715031082B00190019B180002B0704784B001900091002303931C4B5B6C029309E0029B11 +:401900001B69009AD31A0093029B0393029BDB680293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B029ADA60029B002B09D0029B1A69019BB5 +:401940001B69D21A029B1A61029B019A9A60039B002B03D0039B019ADA6002E0024B019A5A64C04604B070472005000882B00190019BDB68002B04D0019BDB68019A926863 +:401980009A60019BDA68024B5A64C04602B070472005000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E0019B1800FFF7DAFF174BD86C019B183367 +:4019C000190000230022FDF703FE03000093009B002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B11001800FFF77CFF02E0019B01225A70064B5B6C1D +:401A00000193019B002B05D0019B1B69002BCFD000E0C04603B000BD2005000800B587B00190164B586E154B1B6E1A000821FDF7A3FD03001800FFF753FF0200104BDA64A7 +:401A40000F4BDB6C002B16D00D4B0E4A1A650C4BD86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6818009047EBE7C04607B000BD14500410F8 +:401A8000200500089519031000B585B001900091019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B0F4A934202D901235B4213E00D4B0D4A2E +:401AC000126AFF2109060A431A620B4B06221A60094B039A5A60084B00229A60074B00221A700023180005B000BDC046C4050008FFFFFF0000ED00E010E000E0C472000806 +:401B0000094B1B78002B06D0074B00221A70074B8022D2045A60064B054A126801210A431A60C0467047C046C472000800ED00E010E000E0014B1B68C046704710E000E03E +:401B400001235B421800704700B585B00190019B1800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B000BDC04638510410D85104107047EFF360 +:401B8000108072B6704780F310887047FFF7F6FF0E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808492E +:401BC0000860BFF34F8FCEF7ABFAFEE7F06304100864041010150008208700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043002F0AC +:401C0000C3FFFEE782B000230193C04602B07047B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F0CDF900F00BF800F097FA00F0B5FA00F00B +:401C4000F5FFFFF7DFFFC04610BD000000B583B0364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE0239B00D3580193019B3022934301932B4986 +:401C8000E0239B00019ACA502849B023DB0080225204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1501E491E4AC0235B00D3589B009B08802275 +:401CC000D2051A43C0235B00CA501849174AC0235B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A00C0235B00CA5000F08DFD00F021F800F0C0 +:401D0000DFFE00F031FA00F04FFA00F08FFFFFF77FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC0460000264084050000010002008C050000E00023403C +:401D400000B591B0BC4AE0239B00D3580F2213400D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD3181B689F46B24B0F932CE0B24B0F9329E05E +:401D8000B04B0F9326E0B04B1B680F9322E0AA4A0D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB010F930BE080231B020F9307E080231B0299 +:401DC0000F9303E0FA23DB010F93C04602E09D4B0F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70914AB123DB00D3581B0F03221A402A2399 +:401E00006B44033A51424A411A708B4AB123DB00D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0002229236B441A701A7801210A401A7068 +:401E400029236B441B78002B04D02B236B441B78002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774BD358DB04DB0C08936F4AB023DB00D35882 +:401E80001B0E012213400133079308990F9809F047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B012B6AD1604AC823DB00D35801221A4033 +:401EC0001B236B44511E8A411A705B4AC023DB00D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322134008D0504AC023DB00D3581B0F032256 +:401F00001340012B01D1012200E0002219236B441A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A236B441B78002B25D03F4AC023DB00D35820 +:401F40007F22134005933C4AC023DB00D3581B0A1F2213400493384AC023DB00D3581B0C1F22134003930F9B059A53430499180009F0D6FD03000399180009F0D1FD030079 +:401F80000E9304E00F9B0E9301E00F9B0E932A4AE0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AFF22134001330293264B1B691B0EFF22A5 +:401FC00013400133019301990E9809F0A9FD03000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4B1A601B4B1B681B4A944663441A4918009C +:4020000009F08EFD0300DAB2184B1A70144B1B68174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A60C04611B000BDC04600002640205304106C +:4020400000127A0000366E01D005000884050000C805000800002140CC050008C4050008D40500083F420F0040420F00DC050008E7030000D8050008E005000882B0054AC1 +:402080008023D358032213400193019B180002B07047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049B032B01D100F02CF81249B0239B00019ABA +:4020C000CA50104A8023D3580F4A13400393039B0E4A13430393039B03221343039309498022039B8B50C046064A8823D35810221340F9D0059B1800FFF745FDC04607B037 +:4021000000BDC04600002140FCFF00000000FA0500B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093009B01221343009308498022009B8B508A +:40214000C046064A8823D35810221340F9D0019B1800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A008021042001F049FCC04610BDC04628740008AF +:4021800010B5034B180001F041FBC04610BDC0462073000810B5034B180001F037FBC04610BDC0467873000800B583B002F091FC030001930B4B180001F090F90A4B1800E6 +:4021C00001F09AF9094B180001F096F9084B180001F092F9019B180002F07FFCC04603B000BDC046C872000834530410685304109C53041010B5034B180001F007FBC04618 +:4022000010BDC046C8720008084B5B6C1B0AFF2213403A2B08D1054B044A526C04490A40E82189010A435A64C046704700002740FFC5FFDF054B054A526C05490A40E82143 +:4022400089010A435A64C0467047C04600002740FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD3585B005B08054A8B5000230193019B180007 +:4022800002B0704703004A00000026400C05000000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B013B019300F018F803001A000123534014 +:4022C000DBB2002B02D0019B002BEDD1019B002B01D000230393039B180005B000BDC04602004A0000002740044B1B69042213405A1E9341DBB218007047C046000027403C +:4023000084B001900B4B0393019B042B0ED80A49094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B180004B0704701004A000000264084B00190FD +:402340000A006B4603331A70114B0393019B042B19D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B4603331B780F2003401A43019BE0339B00F6 +:402380005A5000230393039B180004B07047C04601004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4603331B78032B15D80D490D4A019BE03302 +:4023C0009B009B58302293431A006B4603331B781B01302003401A43019BE0339B005A5000230393039B180004B0704701004A000000264082B002006B4607331A7009490D +:40240000084A9023D358084A1A406B4607331B781B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B002006B4607331A70074B064A12691202110A34 +:402440006A460732127812060A431A61C04602B07047C0460000214082B002006B4607331A70084B074A1269074911406A460732127812021204120C0A431A61C04602B08F +:402480007047C04600002140FF00FFFF00B583B002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C490B4AA023DB00D358032293431A006B46E9 +:4024C00007331B78032003401A43A023DB00CA50C04603B000BDC04613090000D05304100000264000B583B002006B4606331A806B4606331B880C4A934205D90B4A0C4BAF +:402500001100180002F004FB0A490A4A0A4BD3580A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B090000D05304100000264004050000FEFCFFFF1C +:4025400082B002006B4607331A700948084A094BD358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070470000264004050000FFFF00FF0549054ACE +:40258000054BD358802212061343034A8B50C0467047C046000026400405000000B583B002006B4607331A706B4607331B780F2B05D90D4A0D4B1100180002F0A9FA0C4880 +:4025C0000B4AA023DB00D3580A4A1A406B4607331B781902F0231B010B401A43A023DB00C250C04603B000BD080A0000D053041000002640FFF0FFFF00B583B002006B4642 +:4026000007331A706B4607331B78072B05D90D4A0D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B781903E023DB010B401A43A023DB00C250C04612 +:4026400003B000BD2E0A0000D053041000002640FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0460000264000B583B002006B4607331A70CE +:402680006B4607331B78012B05D90B4A0B4B1100180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A431A60C04603B000BD910A0000D053041086 +:4026C00000002740FFFCFFFF044B044A1268802109060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46073212781A70FEE710B584B0384B1800B1 +:40270000FFF7C6FD03000393039B002B02D00520FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE01210020FFF704FE00210020FFF72EFE0020FFF76B +:40274000DFFD0021022001F0F9FD0021032001F0F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA13C36B461900012001F026FE030003936F +:40278000039B002B02D00320FFF7AAFF164B1900012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF7C7FEFFF7E3FE0020FFF7F0FE0220FFF70E +:4027C0001BFFFFF747FF0020FFF754FFFFF742FD6421002002F004FAC04604B010BDC04620A10700245404101027000010B584B06B46074A13CA13C312681A606B461800CD +:4028000001F01EFDFFF760FFC04604B010BDC0463054041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0D5FAFFF7FFFCFFF7E7FC002003F02EFAB4 +:40284000012003F02BFA2A480023009300230022002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039A1F480023009313000622032100F0F8FB2A +:40288000039A1C480023009313000622012100F0EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042100F0DEFB114B180003F0F0F9104B180038 +:4028C00003F0ECF90F481D23009300230A22062100F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC04600003240800032408005324006060000FC +:40290000070600000003324010B5034B1800FFF7C3FBC04610BDC04600000810C046704782B002006B4606331A806B46063300229B5E002B0ADB074B6A46063212881100D6 +:402940001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180002F0CEF8019B5B01034A944663441800D5 +:4029800003B000BD405404100000234000B583B00190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A94466344180003B000BDC04640540410001023408D +:4029C00000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084B1100180002F08CF8019B1A04029B1B04AA +:402A00001B0C1A43039B9A60C04605B000BDC0464054041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F06FF8029B1B0C1B0405D00B4A094B110055 +:402A4000180002F065F8019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A020000405404106B02000000B583B001900091009B1B0C1B0406D0A3239A00A2 +:402A8000064B1100180002F043F8009B1B041A0C019B9A60C04603B000BDC0464054041010B5D1F7EBFE054B186880235B001A000021FFF7AFFFC04610BDC046BC740008A1 +:402AC00000B583B06B4603221A806B4622229A706B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B1B68002B04D1144B4C21180002F008F8EF +:402B0000104B186880235B001A000021FFF758FF6B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D1054B5321180001F0EBFFC04603B000BD4E +:402B4000A12A0310BC74000894540410B874000810B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000FFF77CFFC04610BDB87400089454041059 +:402B8000024B1B691B0EDBB21800704700002140024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0AAFF019B5B0165 +:402BC000034A94466344180003B000BDE85404100000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B0704700B585B0039002910192019B8F +:402C0000002B06D1D7239A00074B1100180001F07FFF019A0299039B180000F0FDFA0300180005B000BDC046E854041010B5044B02221900002000F0B7FDC04610BDC04670 +:402C40002D10000810B584B001901E4B0393019B180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60154B0022DA60FFF783FF03005C1CFFF76D +:402C800087FF030001336343114A5A431400114B1A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00110018000AF0D0FF03000393039B18000F +:402CC00004B010BD06005200C07400080001001C60F59000C80500089808000010B584B001900091204B0393019B180000F092F8031E35D0009B002B32D0FFF721F81B4B9B +:402D00001B4A1A60194B832252005A60174B019A9A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A431400114B1A68FA239900100008F0F1FE03002F +:402D40001900200008F0ECFE0300E12292009A1880235B00110018000AF07EFF03000393039B180004B010BD06005200C074000800010006808D5B00C805000884B00190E3 +:402D8000019B1E4A93420BD9019B1D4A934207D8019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD8019BEC221206944663445B0A8022520249 +:402DC0001343039315E0019B104A93420ED9019B0F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B420393039B180004B07047C046FFFFFF0F60 +:402E0000FFFF0F10FFFFFF13FF7F0014FFFFFF15FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D1012300E000231A1C01231340DBB21800A3 +:402E400003B000BD84B00190019B2D4A934240D02B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD08022520093423BD03DE0234A93421AD0224A934207D825 +:402E8000A0221206934210D01F4A93421DD02FE01E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E0A423DB0303931EE0174B03931BE0174BE7 +:402EC000039318E0164B039315E0A023DB03039311E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E00F4B0393C046039B180004B07047C046E1 +:402F000006005200010000F0090000A0040000F0050000F0030000F0010052000200520003005200010050000200500005005200FF00520000B583B0144B01930020FFF78B +:402F40002FFE03001800FFF74CFE03001A0001235340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C046084A094BD358002BFAD1064A074BD358E0 +:402F8000002BF5D1019B180003B000BD02005000C0740008000025400C0400008C04000000B589B0039002916B4607331A70029B072B05D92A4A2B4B1100180001F0A8FD8A +:402FC0006B4607331B781F22934306D091239A00244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B010693029B032B16D8069B1B68029AD20061 +:403000001F2191400A00D243134005936B4607331B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B68029AD2001F2191400A00D243134005939C +:403040006B4607331B781F221A40029BDB009A40059B1A43069B5A60C04609B000BDC046430200003C5504100000CEBF0010030400B587B00390029101920093029B072B76 +:4030800004D9284BCF21180001F042FD019B0F22934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB1B781F22934304D01A4BD221180001F0AA +:4030C00027FD039B1B680121029A91400A00D24313400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2191400A00D24313400593019B0F221A404B +:40310000029B9B009A40059B1A43039B9A6208AB1A780299039B1800FFF742FFC04607B000BDC0468C55041000B583B001900091009B1B0C1B0406D0A3239A00064B110021 +:40314000180001F0E5FC009B1B041A0C019B9A60C04603B000BDC046DC55041000B583B001900091009B1B0C1B0405D0064A074B1100180001F0CCFC009B1B041A0C019B6E +:403180005A60C04603B000BDA5020000DC55041082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B0704782B00190019B1B69DB0FDBB2180002B079 +:4031C0007047000082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF031E08D0009A019B11001800FFF7AEFF45 +:403200000023039301E0034B0393039B180005B000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019A039B11001800FFF7ABFF029A039B1100ED +:403240001800FFF771FF0023059301E0024B0593059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180001F04EFC019B1800FFF79AFF031E09D050 +:40328000019B1800FFF78DFF0200009B1A600023039301E0034B0393039B180005B000BD3056041001008A0082B002006B4606331A806B46063300229B5E002B0ADB074BD7 +:4032C0006A460632128811001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180001F00AFC019B5B0160 +:40330000034A94466344180003B000BD845604100000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019B5B01044A94466344180003B000BDC046B4 +:40334000845604100010234000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D0D623FF331A00084B1100180001F0C8FBB9 +:40338000019B1A04029B1B041B0C1A43039B9A60C04605B000BDC0468456041082B00190019BDB68180002B0704782B00190019B1B68180002B0704700B585B00390029179 +:4033C0000192019B1B0C1B0405D00E4A0E4B1100180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029B1B041B0C1A43039B1A60039B1B68C046DE +:4034000005B000BD6A020000845604106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009B1B041A0C019B9A60C04603B000BDC04669 +:403440008456041082B001900091019B009ADA60C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C180002B0704782B00190019B1B041B0CA4 +:40348000180002B07047000000B583B001900091009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300180003B000BDC0467E03000084560410CA +:4034C00082B00190019B1B68002B01DA002300E0014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C04602B07047E074000810B590B00390039B93 +:40350000002B04D13B4B4F21180001F001FB039B5B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F0EFFA039BDB68072B04D92E4B5621180075 +:4035400001F0E6FA039B1B6A072B04D9294B5721180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C303CA03C304AA039B143313CB13C203CBED +:4035800003C209AB9B681AB20EAB1A8009AB1B68DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB1C690EAB0093230000F01EF804ABD86814 +:4035C00004AB1A690023009313000022002100F013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B010BDC046D856041000B587B00390029128 +:4036000001920093039B072B04D9244BB321180001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AFF221A40059B5A60009B1A0C059B9A60E8 +:40364000059B1B681800FFF74BFE0200059B1A61059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF76BFE059B019ADA61059B029A1A62059B9E +:4036800000229A61089B002B04D0089B00229A5E059B9A81C04607B000BDC046D8560410E074000800B58BB00390029101920093019B002B04D1384BFB21180001F028FA13 +:4036C000039B072B04D9344BFC21180001F020FA029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B1A68029B2C214B43D3180793079B5B68AA +:4037000001229A4013000693069B1B040693089B5B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B691800FFF7C6FE031E22D1019B1B681B041A0CE5 +:40374000019B1A60019B1A68069B1A43019B1A60089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A11001800FFF74CFE0023099307E0084BCF +:40378000099304E0064B099301E0064B0993099B18000BB000BDC046D8560410E074000807028A0004028A0000B587B0039002910192039B072B06D9AF235A00104B1100E7 +:4037C000180001F0A5F90F4B1A68039B2C214B43D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059301E0054B0593059B180007B000BDC046FE +:40380000D8560410E07400080A028A0010B588B001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F9019B1B69002B06D1D9235A004B4B110052 +:40384000180001F065F9019B5B69002B07D1B423FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180001F04EF9019B5B691800FFF78FFD0300FC +:403880000693069B1800FFF7EFFD031E3ED0019B5C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FD031E2BD0019B1B6903AA11001800FFF7D1 +:4038C000E3FD031E1BD1039B1B681B0C0793039B1B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B680493049B002B03D0039A049B10009847019BC7 +:403900001B69079A11001800FFF76AFC069B1800FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FD019B5B6A002B06D0019B5B6A9847019BE6 +:4039400000225A6206E0019B9B6A002B02D0019B9B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC046D856041000B583B00190019B0F2B07D99C23FF332B +:403980001A00064B1100180001F0C2F8019B5B01034A94466344180003B000BD2C5704100000234082B00190019BDB68180002B07047000000B585B0039002910192019B1E +:4039C000002B06D1D7239A00074B1100180001F09FF8019A0299039B1800FFF71DFC0300180005B000BDC0462C57041082B00190019B1B68002B01DA002300E0014B1800BA +:403A000002B0704701008A0000B587B0039002910192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B1800FFF79DFF0200274B1A6000230593AD +:403A400043E0019B002B3ED0029B002B3BD0029B1F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A601A4B5868029BDB081A00002104F0EEF938 +:403A8000154B1B6800211800FFF7AAFB124B1B68124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D1002305930AE00A4B059307E0094B059304E07B +:403AC000044B059301E0034B0593059B180007B000BDC04603018A00E4740008E874000801018A0000B589B001900A006B4603331A7000230793314B0693314B1B68180025 +:403B0000FFF750FF03000593059B1A68019B9A424DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B7801225340DBB2002B03D000F0CBFF0300079313 +:403B40001F4B1B681800FFF751FF031E22D1059B5A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A92008A1812680399C9430A401A60002351 +:403B8000069301E00F4B06930D4B1B6800211800FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B0693069B180009B000BDC04603018800E3 +:403BC000E47400080201880004018A0000B587B00190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393039B5B01019AD31A01229A401300029318 +:403C0000049B5A68039B9B00D3181B68029A134002D0074B059304E0064B059301E0064B0593059B180007B000BDC046E4740008010188000001880004018A0082B0019043 +:403C40000091019A90239B000099D150C04602B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E040231800CD +:403C800002B0704710B584B00190009100230393019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800FFF7C4FF01230393039B180004B010BDF0 +:403CC00082B00190019B1A6880231B01134001D0802300E04023180002B0704710B586B0039002910192039B002B02D0029B002B01D1BA4B78E2039BB94A934201D1B74B07 +:403D000072E2029B1B78002B0CD0029B1B78012B08D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7B032B18D0029B5B7B042B14D0029B5B7B2B +:403D4000052B10D0029B5B7B062B0CD0029B5B7B072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B9B7B022B08D0029B9B7B032B04D0994B88 +:403D80004221180000F0C4FE029B21229B5C002B09D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D0029B28229B5C012B04D08A4B4421180017 +:403DC00000F0A6FE029B1B78002B03D0029B1B78012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340DBB226E0029B9B7F002B1DD0029B5B684C +:403E0000012B19D0029B5B68022B15D0029B5B68032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B68072B01D0012300E000231A1C012313401A +:403E4000DBB2002B04D0674B4621180000F060FE029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B04D95C4B4821180000F04AFE029B9B6906 +:403E8000FF2B04D9574B4921180000F041FE029B9B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4B4B21180000F02CFE029B5B6B4A4A1340DC +:403EC00004D0484B4D21180000F022FE029BDB6B464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F01225340DBB2002B02D00023059303E0029B5B68E4 +:403F0000013B0593029B1B7F002B02D080235A0200E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802292041A43039B1A60029B1C6B039B1800B4 +:403F4000FFF7BEFE03009C4204D3264B6321180000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FD029B5C6A039B1800FFF7A2FE03009C42F5 +:403F800004D3184B6521180000F0C2FD029B1B781A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002B02D08023DB0000E000231A43029B1B7C98 +:403FC000002B02D080235B0000E000231A43029B5B7C002B0CD080239B000AE00160AA00000069402858041092F4FFFF8CF8FFFF00231A43029BDB6A013B1904F0231B0389 +:404000000B401A43029B5B7B013B07210B401A43029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022029BDB7B002B03D1029B1B78022B01D1A5 +:40404000012300E00023002B02D080239B0000E000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF221A40029B9B691904FF231B040B401A43FA +:404080001100039AC4239B00D150029BDA6A0399C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F02FFD029BDB7F002B05D0029B1B78012B75 +:4040C00001D1012300E00023002B02D080235B0000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64029B1B7B002B02D080235A0000E0002203 +:40410000029B9B68013B0F210B401A43029B1B78012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213401900039AC1239B00D150029B20229B5C6C +:40414000002B02D080239A0400E00022029B21215B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E000231A43029B5B6AFF210B401A43039B44 +:404180001A65029B9B6BFF2213401900039A81239B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A50019B002B17D0019B00225A60019B00226A +:4041C0001A60019B00229A60019B0022DA60019B00221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046285804106D0B0000C80F0000730700005A +:40420000880F0000EFCDAB0082B001900091019B1B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B00221A62009B0022DA62C04602B0704700004A +:4042400000B585B00190019B002B04D1384B4121180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B1B78012B04D02E4B4C21180000F048FCA7 +:40428000019BDB68002B16D0019BDA68A023DB059A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D21180000F02DFC019B9B68002B10D0019BB9 +:4042C0009A6880235B039A420AD0019B9A6880239B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B029A4204D00E4B4F21180000F009FC019BA6 +:404300001B7804221343DBB21A00019B5B681A43019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BD7C58041001005E00000E1F4184B0019083 +:404340000A006B4602331A801D4B0393019B042B32D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF339A4221D86B4602331B88FF2B10D91149D4 +:404380006B4602331B881F221A40019BC0339B005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD0339B005A5000230393039B180004B0704763 +:4043C00001004A000000264070B590B00590049100230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF339B009B58002B02DA744B0F931EE0049BEE +:404400001B68734A934204D9049B1B68714A934202D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049B5B686B4A934201D9624B0F930F9B002B37 +:4044400000D0BAE007AB00221A7007AB00225A7007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B01D0132300E016230E9372E0049B1B6883 +:404480001D0000231E000E9B009300230193009A019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F009FD03000C000A93049B1B7A002B01D0A2 +:4044C000484B00E0484B0A9A934247D8049B1B7A002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99180007F015FB03000C99180007F010FBAA +:4045000003000993099A049B5B68D31A180002F051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BDAB207AB1A700D9BDAB207AB5A700C9B66 +:40454000DAB207AB9A700C9B01330C930C9B102B04D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E070230E9A934205D3049B5A680B9B9A4200D0BF +:404580007CE70D9B01330D930D9B122B05D8049B5A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B1100180000F01DF803000F930F9B180010B0D4 +:4045C00070BDC04601004A000000264003004A00FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71784B00190009100230393019B002B02D0DC +:40460000019B012B02D93D4B039334E03C4A019B013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B78102B1ED8009B5B78002B1AD0009B5B7805 +:40464000122B16D8009B1B781A00009BDB78002B01D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934201D2224B0393039B002B3BD1019B013BA1 +:404680000193009B1B79022B1FD01D48009B1B781A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B401A43009BDB78D90680231B050B401A43A6 +:4046C000019B8133FF339B001A500D480C4A019B8133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF339B001A50039B180004B0704701004A005C +:404700000000264003004A00FFFFFFCF00B585B0019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B8133FF339B009B58802212061A43019B73 +:404740008133FF339B005A5005E0012000F0C8F9009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009B002B01D1054B00E000230393039B180073 +:4047800005B000BD01004A000000264002004A0030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063300229B5E9B0830496A4606320020125E0C +:4047C0009208C03292005258694606310988080003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150003222A40D200904002000A43C0339B00BE +:404800001A5135E01D4C6B4606331B881A000F231340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B686A4606321288100003220240D200D8 +:40484000FF2090400200D2431A40009B9B01FF2018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60C04603B030BDC04600E100E000ED00E0B3 +:4048800000B585B00190009100230393019B002B35D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B00229A5E019B9B781900100000F02EF8A1 +:4048C000019B00229A5E019B5B6819001000FFF75FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B00229B5E009A1100180000F0A2F801E0064B14 +:404900000393039B180005B000BDC046D858041000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B46063300229B5E9B0807936B46063300229E +:404940009A5E079B9B00D31ADB000693FF22069B9A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B072B5DD8079B9A002F4BD3181B689F4662 +:404980002E4B1B6A049A134002932C4B0299039A0A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A049A13400293214B0299039A0A439A6255 +:4049C00037E01E4BDB6A049A134002931B4B0299039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B5B6B049A13400293104B0299039A0A43DC +:404A00005A6316E00D4B9B6B049A134002930B4B0299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0C046C04608B070472C5904100000214096 +:404A400000B585B0020000916B4606331A80184B9A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5E10331A000F4B9200D35803936B46063340 +:404A800000229B5E10331A000A4B92000099D15009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC04600ED00E000000008D85804100000001096 +:404AC0000230800803D001300238FCD1C046C0467047EFF3108072B6704780F31088704700B583B002006B4606331A806B4606331B88044A127853431800FFF7E1FFC046BE +:404B000003B000BDDC05000882B0019001BEFEE700B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFFD0140008E8140008064B802212069A64E9 +:404B4000044B9B6C002B01DB002300E0024B18007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134004D0019B8022D20213430193019B1800F4 +:404B800002B070470000264000B583B00190019B1A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019B1A69094B1A61019B5A69074B5A61019BF3 +:404BC0009A69054B9A61019BDA69034BDA6100F005F8C04603B000BDEC140008FEE7000084B0020000916B4607331A706B4607331B78002B01D0192300E064230293009B26 +:404C0000029A9A429B415B42DBB203933349334AE8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8235B00D3582A4A1A40E8235B00CA502749A7 +:404C4000264A80235B00D358032293431A00039B032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA506B4607331B78002B0CD0009B102B06D9FF +:404C8000009B212B01D8012302E0022300E00023039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E0042304E0022302E0012300E000230393DD +:404CC000084B084A12680F218A431100039A0F2002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD3581F2213400193B0235A05E823DB00D35C0D +:404D0000DBB21A00019BD31A5A1E9341DBB2180002B07047000026401CFF000000B585B002006B4607331A70002303936B4607331B78002B0CD06B4607331B78012B07D048 +:404D40002E23FF331A00214B11001800FFF7E0FE1F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE03000293174B1B68002B03D00421002000F0D0 +:404D800085F9144B134A126904218A431A616B4607331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821002000F06BF905E00221002000F066F974 +:404DC000054B0393039B180005B000BD4C590410F874000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B0AD06B4607331B78012B05D0324A334B0D +:404E000011001800FFF784FEFFF763FE03000293FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA00F024FA2649264A264BD3581F229343D0 +:404E40000B221343234A8B5000F050FAB0235A05E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B500920FFF735FE00F04DFAB0235B05164A7E +:404E80009B5CDBB203931249114A124BD3581F2293431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FE00F000FA00F0D6F9029B1800FFF70DFEAC +:404EC000C04605B000BDC046EC0600004C590410000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD03000293019B002B05D0304B1B681F2B01D874 +:404F0000012200E0002217236B441A701A7801210A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B1B680493002303930DE0049A019B9A42F0 +:404F400004D117236B4400221A7007E0049B0393049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B019A1A6002E0039B019A5A61019B039A2D +:404F80001A61019B00225A610E4B019A1A600B4B1B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17236B441B78180007B000BDC046F874000853 +:404FC000F0740008F474000800B587B0019017236B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049A019B9A4204D117236B4401221A7005E0AC +:40500000049B5B690493049B002BF0D117236B441B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D0019B1B69019A52695A61124B1A68019B30 +:405040009A4204D10F4B1B685A690E4B1A600E4B1A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF734FD17236B441B78180007B000BDC046F4 +:40508000F8740008F0740008F474000800B589B002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B4607331B78012B15D06B4607331B78022B17 +:4050C00010D06B4607331B78032B0BD06B4607331B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B4606331B78022B0FD06B4606331B78042B71 +:405100000AD06B4606331B78082B05D04A4A494B11001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B6806932DE0069B1B796A46073212789A4263 +:4051400023D1069B9B68002B06D06B4606331A78069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA1000984734 +:40518000030007932E4B069A1A60069B5B690693069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1234B1B680693069B002B2ED0069B1B697A +:4051C00006932AE0069B1B796A46073212789A4220D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A469F +:40520000063212781A70069B1B6803AA1000984703000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B180009B000BD4C59041021080000F07400089B +:40524000FC740008FF004200F4740008044B044A9269802149040A439A61C0467047C04600F02540034B034A926903490A409A61C046704700F02540FFFFFFFE0B490B4A42 +:405280000B4BD3580F22934302221343084A8B500649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214004F000000B490B4A0B4BD3580F229343B0 +:4052C00003221343084A8B500649064AF0231B02D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A064BD358064A1340C022D2011343034A11 +:405300008B50C0467047C0460000214004F00000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF86B00390D0 +:40534000029101926C4B0593039B002B00D1CEE0019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A43019BDB681904C0239B020B401A43019B49 +:405380001B691906E023DB040B401A43019B1B7F002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D10399029A84235B0092018A18D318002275 +:4053C0001A6017E0019BDB68012B0AD1019B1A680398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31801221A60019B1B69002B13D1019B5A6953 +:405400000398029986235B0089014118CB181A60019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0089014118CB181A60019B9B6C013325D06F +:40544000019B9B6A0F221A40019B1B6B1902F0231B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A43019B9B6C1B01FF210B401A4303980299B3 +:4054800090235B0089014118CB181A60019B5B6A03221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BDB6B9B01FF210B401A43019B5B6C9B00E1 +:4054C0000C210B401A430398029992235B0089014118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059B180006B07047C0460100B60082B0019041 +:405500000023180002B0704782B001900023180002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B420393039B180005B000BD00B587B003907A +:4055400002910192009300230593019A029B11001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B074A934206D9009B064A934202D88023FB +:405580009B0001E001235B42180002B07047C046FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B05180002B0704782B0019080235B03180002B0A7 +:4055C000704782B001900023180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E1B121BB279 +:405600009BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B07047006480000000324000B585B091 +:40564000039002910192029B072B05D90F4A104B11001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D10122029B9A40039B5A6004E00122029BA9 +:405680009A40039B9A60C04605B000BDE5020000A0590410E602000000B587B0039002910192029B072B05D9134A144B11001800FFF72EFA019B0F22934305D0104A0F4BA3 +:4056C00011001800FFF724FA029B9B000593039B9B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039B9A62C04607B000BD8E030000A059041002 +:405700008F03000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E0082345 +:40574000039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046039B180004B070477C5A041082B0EFF3B4 +:4057800005830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B002B05D12849294B1C221800F6F786FDE3 +:4057C000019B1B68002B05D12349254B1D221800F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E1800FFF7ECFE03000393019B9A79019B0F +:40580000DB7919001000FFF77DFF03000293019B1B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE0019B1B68039901221800FFF7FFFE07E00D +:40584000019B1B68039900221800FFF7F7FEC046C04605B000BDC046F0590410245A0410285A0410345A041010B586B003900A000A236B441A80039B002B05D13449354BF3 +:4058800034221800F6F722FD039B0A226A4412889A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E1800FFF78CFE0300072B05D92449264BDD +:4058C0003D221800F6F702FDFFF758FF03001A0001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B4400229B5E180000F0D1F9031E03D0174BB1 +:405900001800F6F721FF039B04229B5E1800FFF76CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E1800FFF74DFE0100059A0023009313000822E3 +:405940002000FDF795FB00E0C04606B010BDC046F0590410245A0410445A04105C5A041000B583B001900A006B4603331A70019B002B05D10E490F4B55221800F6F7A6FC49 +:40598000019B04229B5E013305D109490A4B56221800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC046F0590410245A0410345A041000B583B073 +:4059C00001900A006B4603331A70019B002B05D10E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F76DFC019B6A46033212789A71019B18002F +:405A0000FFF7D2FEC04603B000BDC046F0590410245A0410345A041082B00190019BDBB2180002B0704782B00190019B1B14DBB20F221340DBB2180002B0704782B00190B6 +:405A4000019B1B15DBB201221340DBB2180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4606331A806B46063300229B5E2F +:405A80001B121BB29BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B180004B070470064800000003240FD +:405AC00000B585B0039002910192029B072B05D90F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019B002B05D10122029B9A40039B5A6004E083 +:405B00000122029B9A40039B9A60C04605B000BDE5020000985A0410E602000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144B44 +:405B4000D3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039380 +:405B800002E000230393C046039B180004B07047E85A041010B586B0020002910E236B441A800E236B4400229B5E013353D00E236B4400229B5E1800FFF759FF03001800F5 +:405BC000FFF768FF03000593029B1800FFF736FF03001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400229B5E1800FFF72DFF0400029B1800FFF795 +:405C00000BFF0300049A0598009301232100FDF72FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059B01221800FFF744FF0DE00E236B44002253 +:405C40009B5E1800FFF705FF0100059B00221800FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B46063309 +:405C80001A806B46063300229B5E1B121BB29BB21A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E1800FFF7E1FF030004936B4606330022E3 +:405CC0009B5E1800FFF7CAFF0300039301235B420593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A4113000122134013D10F4A049BD3181B78DA +:405D00005AB20121039B99400B005BB213435BB2D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFD180007B000BDC046E8050008045B0410A9 +:405D400000B585B0020000916B4607331A70FF2303936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D91E491F4BC8221800F6F7A8FA029B1A6882 +:405D8000009B9A4205D219491A4BC9221800F6F79DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91400A001A43029B9A60009B0393009B01330F +:405DC0000093029B009A5A60029B5A68029B1B689A4202D9029B00225A60F6F7A7FB039B180005B000BDC046F8050008505B0410845B0410A45B041000B587B002006B464A +:405E000007331A70FF2305936B4607331A7813005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F74DFAF6F761FB049B5A68049B1B689A4285 +:405E400005D31A491B4BFC221800F6F73FFA049B5B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A4213D0049B5B685A1C049B5A60049B5A6836 +:405E80006B4607331B7811001800FFF759FF03000593059BFF2BDED000E0C046F6F746FB059B180007B000BDF8050008505B0410845B0410EC5B041000B585B0020000910B +:405EC0006B4606331A806B46063300229B5E0393039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A001049124B1800F6F7E9F9F6F7FDFA104B71 +:405F0000039A9200D358002B05D06B460633012252421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B000BDC046505B0410645C0410585C0410CE +:405F40000075000800B585B0020000916B4606331A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F7ADF9009B002B06D1C4235A000E49104B53 +:405F80001800F6F7A3F9F6F7B7FA0E4B039A9200D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFAC04605B000BDC046505B0410645C041023 +:405FC000585C0410007500087C5C041010B58EB008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D31801331A78334B5A540D9B01330D930D9B45 +:40600000032BECD902AB304A13CA13C313CA13C301230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A68274903005B001B189B00CB1808331A600C9B0133DB +:406040000C930C9B022BE6D901AB00221A7001AB00225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A78174B5A540B9B01330B930B9B002BECD0F0 +:406080006B4600221A706B4600225A7001230A930FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B01330A930A9B002BECD0C0460EB010BDC0464A +:4060C000A85C0410E8050008B05C0410F8050008280600083006000882B00190019B1B12DBB2180002B0704786B0029101920F236B44021C1A70284B05930F236B441B78FC +:40610000002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844663449B005A50002338 +:40614000059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4803401A43029B902040 +:406180008000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0086B00291019200930F236B44021C1A70C8 +:4061C000424B05930F236B441B78022B3CD1029B032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA0208000844663449B009B58384A1A40019B1B0237486B +:4062000003401A43029BA0208000844663449B005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BA0208000844663449B0035 +:406240005A50002305933DE00F236B441B78032B38D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB0208000844663449B009B58FF221A40019B1B026B +:406280001A43029BB0208000844663449B005A501049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003401A43029BB0208000844663449B005A505D +:4062C00000230593059B180006B0704701004A00FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B46CE +:4063000007331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032BAA +:4063400007D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039BC8 +:40638000180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B7805 +:4063C000012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343FA +:40640000094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008084B0020000916B4607331A701E4B03936B4607330A +:406440001B78032B32D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B15D125 +:40648000009B002B12D10C496B4607331B789B01FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B180004B0704701004A000000014082B001901F +:4064C000019AD0239B00D358180002B0704782B00190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B04 +:406500001A6880231B01134001D0802300E04023180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B583B00190019B1800FFF7C0FF0300180014 +:4065400003B000BD00B583B001900091009A019B11001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B5B08D3180199180005F0D2FA03001800EB +:4065800003B000BD80F0FA0210B586B0019000914D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C049A02211800FFF795FE03000593059B68 +:4065C000002B29D1019B02225A74049BDAB2019B9A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF779FE03000593059B002B0DD1019B012217 +:406600005A74049BDAB2019B9A7405E02F4B1800F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF7FDFE009A13005B009B189B000521180010 +:40664000FFF78EFF03000393019B9B7C1800039B5B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220FFF78EFE23E0019B5B7C012B1FD1019B89 +:406680009B7C19000120FFF7D1FE019B9B7C1C00009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD03000593019B9B7C19000120FFF769FE059B1E +:4066C000180006B010BDC04601004A00C45D041000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E174A11001800F5F70DF803000293019BAD +:406700000A229B5E1800FFF7C9FA031E07D1019B08229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11001800FFF72FFA019B08229B5E029A110076 +:406740001800FFF727FAC04605B000BD84520410E8510410EC5D041000B593B0019002AB180040231A00002101F078FB02AB0C225A6002AB08229A6002AB02225A7302ABDD +:4067800014225A6202AB0B22DA62019BDB7C1A0002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E9341D9B202AB20229954019B1B6802A90022AD +:4067C0001800FDF78BFA019B1B681800FFF7A3FEC04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80019B05936B46023300229B5E4E4A93426D +:4068000006D06B4600229A5EA023DB009A4201D1012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434B1B68002B06D04249019B5022180001F01E +:406840007BFA77E03F4A6B46023300215B5E11001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B11001800F4F7B9FE03000393039B013355D029 +:40688000039A059B1A60039B304A944663441A0C059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E11001800F4F72EFF03001800FFF70CFCFF +:4068C00003001A00059B1A74059BFF229A74059B0822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A81E1235A02059B11001800FFF745FE059B5C +:406900001800FFF729FF059B1800FFF7E1FE13236B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B1800F5F70AFF07B000BD010500008075000800 +:40694000A886000884520410E851041000009FBF645E041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039B11001800FFF708FE039B1B681800FFF714 +:40698000CAFDC04605B000BD00B585B001900091019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDC04605B000BD00B585B00190019B0393D6 +:4069C000C046019B180000F00BF8031EF9D0039B1B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B681800FFF76DFD03005A1E9341DBB2180005B0AD +:406A000000BD10B584B00190019B0393039B1B681800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B010BD10B50020FEF771F9C04610BD000025 +:406A400082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E082B002006B4606330E +:406A80001A806B46063300229B5E002B0FDB09496B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04602B0704700E100E082B002006B46063379 +:406AC0001A806B46063300229B5E002B0BDB07496B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E086B0029101920F236B44021C1A70284BBD +:406B000005930F236B441B78002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43029B80208000844631 +:406B400063449B005A500023059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A1A40019B1B020D4814 +:406B800003401A43029B90208000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF0010B584B000926B460D +:406BC0000733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1B4 +:406C0000009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F24224088 +:406C40000A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B46B6 +:406C800007331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E4953 +:406CC0006B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008040 +:406D000082B001900091019B009A9A61C04602B0704784B00390029101920399029A98235B0092018A18D318019A1A600399029A98235B0092018A18D3181B68C04604B044 +:406D4000704782B0019000910122009B9A40019B9A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B00390029101920399029A86235B009201FE +:406D80008A18D318019A1A60C04604B0704782B0019000910199009A84235B0092018A18D3181B68180002B07047000000B583B00190019B1B78082B09D1074B00211800D2 +:406DC000FFF7BFFF044B01211800FFF799FF0023180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD000010B500F0BDF800F0C1F8254B1B68002BCA +:406E000043D1234B01221A60002200211320FFF7D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA194B00211800FFF784FF184B1800FEF7AE +:406E40004DF803001A0001235340DBB2002B03D0134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300013303D10B4B1800F5F766FC0A4A0B4B05 +:406E800011001800FDF7FCFC00E0C04610BDC04684750008D85E0410000038405C060008245F0410485F0410DD6D0310D05E041010B500F05DF80A4B00211800FFF74CFF0D +:406EC000084B1800FEF780F880235B0019000020FFF738F8044B00221A60C04610BDC046000038405C0600088475000810B5074B1B68002B01D1FFF77BFF054B0021180026 +:406F0000FFF745FF0300180010BDC046847500080000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02930E4B1B68002B01D1FFF75AFF029B012B2F +:406F400002D9029B033302D9039B02330193019B05481A000021FFF70AFF0020FFF770FDC04605B000BDC046000038408475000810B50020FFF780FDC04610BD10B5044B45 +:406F8000022200211800FFF7C4FEC04610BDC0460000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C046C85E0410C317C0185840704710B5044B60 +:406FC0000A001B6801001800F5F76DF910BDC0467406000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A9A +:4070000007D98160C160242A0DD1030001611833416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B18687047C0467406000870B505000C1E40D019 +:40704000002802D0836B002B3ED00126636E334233D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D0230032 +:407080004033994202D02800F5F7EFF800232363616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002B99 +:4070C000CAD10026300070BD00F032F9BDE721692800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642DC +:40710000B7E7C046F0B5C64600B50C23CA5E804693B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0AB +:40714000226D5B0706D56368D21A236B002B01D0E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D000 +:4071800023004033994202D04046F5F76EF800232363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B006D +:4071C0003200E1694046676AB8470028F3DC40220120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB046B +:40720000B9D50029B7D12065B5E7E26B002A00DD8AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D6043 +:40724000A8E74021A3890B43A381A3E7FFF7FFFF0100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF8D +:40728000636E0600DB0702D4A3899B0504D5300070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F077 +:4072C000A5F9F8E774060008805F04105572031010B5024900F09AF910BDC04639700310002310B5040003604360836081814366C281036143618361082200215C3000F02A +:40730000ADFD2000064BE4612362064B58306362054BA362054BE36200F0C2F910BDC04691820310B9820310F58203102183031070B50400144D280000F0B6F9A36B002B23 +:407340001DD1124A0421E263B8229200A350B92303229B00E2500833E218043BE25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A36328004F +:4073800000F094F970BDC046F8860008D172031010B5024800F088F910BDC0460487000810B5024800F082F910BDC04604870008F8B50C000600F6F79BF8204FBB685D68E5 +:4073C00003239D431E4B2C1B9C466444240B1D4B013C24039C4207DD0021300000F046FFBB685B19984204D03000F6F78BF80020F8BD6142300000F039FF431C0DD00122F6 +:40740000BB682D1B15435D600F4B30001A68141B1C60F6F777F80120EAE70021300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E70C0C0008DD +:40744000EF0F0000FF0F00008875000814100008F8B504000D1E3CD0F6F74AF82900083948680123050003269D434A199C46614F5368B343BE68B24256D0664653600642DF +:407480000AD13E0008680836091A2D188868B04265D0CE68C660B0600120D6187668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60D2 +:4074C000EF19BB68CF608B60B960D9602000F6F719F8F8BD680A042850D8A809020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C3681B +:40750000CB6088609960C160E0E7ED183B4E9368B34242D0D2682843DA609360364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C2609060012213 +:407540001A434A602E4AB96012689342BED32D4B20001968FFF72CFFB8E71800CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D854 +:4075800002005C305B32C000ACE70123921093407A6813437B600300B2E72843D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA2252009042AD +:4075C00005D8E80B020078307732C0008AE70E4A904205D8A80C02007D307C32C00081E7FE207E2280007DE763462B434B6015606CE7C0460C0C0008FF010000140C00087D +:4076000018100008B875000854050000F8B54746CE4680B5B8278046BF00474489460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84789 +:4076400006436834013DF1D23F68002FEAD130000CBC90469946F8BD70B50D4E0D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0E5FA084E084D0024AD1BAD10FD +:4076800005D0A300F35801349847A542F9D170BD1C1000081C1000081C100008241000087047C0467047C0467047C0467047C04610B5034B01001868F4F7A0FD10BDC0465A +:4076C0007406000810B5034B01001868F4F7CDFD10BDC04674060008F0B557464546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E047 +:40770000F5F7F6FEF823FF339D4200D88FE2680A00D1BBE0042800D962E138239846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDA9 +:40774000AAE0002A00DB88E003239C4608E06246636893435A1B0F2A00DD9DE0002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD2A +:4077800062E172613261002900DB87E0B94A4B46914500D930E1DB08FF3A9910FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD8EB +:4077C0000B4205D103229043490004300B42FBD003239846C3009946B144CC4682466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2A24 +:40780000F2DD01208046611905436560A068E5680836C560A8604046F160B16010434860CE608E603800E250F5F76CFE2000083021E0102926D83800F5F75AFE1025182310 +:4078400002208B4EF3181A005C68083A944200D12EE1032362689A431300E268A168CA6091600122E318596838000A435A60F5F749FE2000083003B03CBC90469946A246ED +:40788000AB46F0BD0C2300203B60F4E780213F2340208900984646E7404664E74B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B28 +:4078C00093461B681268EB18013200D168E16C4A944663441B0B1B0300930099380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C4653466244BD +:407900001A60019B1100834200D155E15B461B68013300D16CE14B46019A9B1A59185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105E5 +:40794000090D5B1A19009B4600F090FC431C00D142E14B46C01A01235844184353461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E043460722606835 +:407980000C3B9343063A024005201A436260E218506090600F2B00D922E13C4B1A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2BF0 +:4079C00000DCC6E00122290013431143651961603800B5606B60F5F795FD200008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142AD5 +:407A000000D9D0E011005C325B31D20008235B429C46B218944463469A6803239846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E26013 +:407A4000A1609460CC60B6E6012360191D43656070613061C26082601A004B460A4342603800E150F5F74EFD2000083003E7C0460C0C0008FF01000014100008B87500081E +:407A80000F1000008875000808100000B0750008B475000873688EE608239B46073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E31861 +:407AC000596838000A435A60E368A268D3609A60F5F718FD20000830CDE65B23984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B681B +:407B00009C465346624411001A60FFE608235B429C46E1444B469B680138994500D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D01C +:407B400048E6490004300B42FBD043E601234A4653603800F5F7D6FC00208CE694466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023BAA +:407B80008B40726813437360624657E72B4B98421CD87C239846A80C80447D30C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E601206C +:407BC000009BB268434403435360E6E6FE217E237F2089009846A6E5002301209B46BDE6210038000831F4F740FB53461968D4E65B464A461A6094E6AA2149008A4206D8FC +:407C00004B46DA0B110078327731D200FEE60B498A4206D84B469A0C11007D327C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C04688750008540500005B +:407C400082B000290AD0002A0BD0002B0BD013780B601078431E984102B0704701A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D082 +:407C8000032204E0013C14D30378AB4212D001301042F7D1032C0ED8002C0AD00378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C1140194359 +:407CC0000B04084E19430368074A4B409A189A433242E3D1043C0430032CF4D8DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C7882186F +:407D0000A34204D015E003780C78A34211D1013001318242F7D1002010BD03680C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD91F +:407D40000B0003439B0734D116000C000300103E350901352D01451927681F6067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD929 +:407D80001E1F0023B4080134A400CF58EF500433A342FAD10324A643331D2240C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B5884284 +:407DC0000AD98B18984207D2531E002A03D0CA5CC254013BFBD2F0BD05000F2A08D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D3F +:407E00002F0901373F01C71926681E6066685E60A6689E60E6681034DE6010339F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC50043314 +:407E4000B342FAD10326B7433C1D09192D193240C7D1C0E70500C4E72200C0E7F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032CFF +:407E80002AD9FF220A40150215432A0415430F2C14D927001A00103F3E09013636019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FF5 +:407EC000BE080136B6009E1920C2B242FCD1032297430437DB191440002C05D0C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001908A +:407F00000E001500002900D19EE037000198083FF5F7EEFA7A68032314009C432B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884299 +:407F400000D1C2E001218A46406801000390504681438C4602998B46DC446146496801424DD0104200D1A2E029000198F4F746F9051E39D0012302007968083A99437F1877 +:407F8000BA4200D12EE1221F242A00D914E1132A00D9E8E003003200116819605168596092689A60019C31002000F4F75EF92000F5F7A8FA1BE007218B439846B6D50C23B6 +:407FC000019A0025136012E035004346E31A0F2B25D84B46012249465B68134023434B604C4463681A4362600198F5F78BFA280005B03CBC90469946A246AB46F0BD032148 +:4080000003988C46884321188B46994221DB029A3500D36892685C46D3609A60D5E74A460120464652684946024032434E464144034372604C444B606368083118436060CE +:408040000198F4F712F9CFE71100F4F7D7F80500CDE75146114200D086E761463A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A60534652465546A1 +:408080009268DB680835D3609A60221F242A00D996E0132A72D95346316899607168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A0093466B +:4080C000A3449B4500DA4FE7D7E7032002998446496881434046091910300290814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC53465246E9 +:4081000055469268DB680835D3609A60221F242A00D98EE0132A00D888E05346316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46A8 +:40814000424641449960039B01989A1A01231A434A605246526813404246134352465360F5F7D0F943E733680360736843601B2A2DD803003200083308320DE72B00320075 +:4081800011685C4619605168D146596092689A601BE74346FA185B469A604346C91A0123194351607A6801981340424613437B60F5F7A8F935001AE73100FFF7FFFDF1E695 +:4081C00031002800FFF7FAFD5C46D146FDE6B3688360F368C360242A15D00300320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320021 +:4082000018331032BCE733693200036103007169183318324161BFE65346326951469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B16815 +:408240001961F1685961242A03D03200183310326EE75346326951469A613200706920331832C86164E7C0460C0C0008002370B5064C050008002360F5F7C6F8431C00D031 +:4082800070BD2368002BFBD02B60F9E71C87000870B50C000E25495F03F09EFB002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C2213 +:4082C0008B5E05000C00DA0507D50E23C95E0022022303F025F80C22A35E054A28001340A38132000E23E15E3B0001F077FFF8BDFFEFFFFF70B50C000E25495F03F010F811 +:40830000431C06D08023A2895B011343A381206570BDA389014A1340A381F9E7FFEFFFFF10B50E23C95E01F06DFF10BD70B5CCB2002C3BD083070ED00378002B5BD09C42C0 +:4083400033D0032204E00378002B54D09C422CD001301042F7D1FF2529400D0229430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD129000430EF +:4083800002681F4B5140D31893431D4A8A188A4313433342F2D00378002B04D12BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D0C7 +:4083C00001301042F9D101680D4A03008A180D488A43024206D104331968094A8A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C04643 +:40840000FFFEFEFE80808080024670B50A4392072AD11E4DEE0104C808C9541B9443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A48 +:40844000090A401A2102014302D1100E190E401A70BD9A42DFD010BA19BA884201D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131A8 +:40848000002A01D09A42EFD0D01A70BD01010101031C0A7801311A700133002AF9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D1196876 +:4084C0000E4A0F4C8A188A43224206D1043319680A4A8A188A432242F8D01A001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE45 +:408500008080808030B50024002A39D003000B439B0720D1032A1ED903680D68AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A62 +:40854000002A1FD0124C1C199C432C421AD104300431032AEFD803780D78013A9D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B3A +:40858000200030BD0024FBE71C00641BF8E7C046FFFEFEFE808080800B000343F0B59B0701D1032A14D80600002A10D00C78013A731C3470002C1DD0012406E00D5D013AE1 +:4085C000355501330134002D14D0002AF6D1F0BD05000D4F06E0043A2E1D04312C60032AE2D935000C68094BE318A3433B42F2D02E00DBE79C180021002AE8D019700133DF +:40860000A342FBD1E3E7C04680808080FFFEFEFE30B50478002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A0D +:4086400000D00300180030BD013004780B00002CE3D1F2E70023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1A6A +:40868000A0461D0001242B198B42F3D3444663461C6001239946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D8FE +:4086C0004346501C0133834203D362464946180011600CBC90469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D001345E +:40870000B5E74C4504D00134C9E71D000124AEE71D000124C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04ABE7 +:40874000143210C39342FCD1631E2900A446002C09D008240A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7BDFA002800D074E000231A009A46631EF1 +:408780009846594601233800A14617004446B0465B1A0193009156464E44321A00214044FFF764FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B7E +:4087C0000AD0002F04D0039A934201D24B469B1A9A4400273000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246D3 +:40880000E6E7009B591E9F4200D37DE042465244505C6B5C984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C460137C6 +:408840008F4263D84B46039F3000BA44DF1BA2E70020314B9D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A146574651 +:408880004446B0469B1A00934B46FE18321A00214044FFF7EBF90028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CA8 +:4088C000EA5C914204D015E0E95CC25C914211D10133A342F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E769 +:408900005B46B2E700999AE7190098E7404650449FE7C046ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C0001264E +:4089400002E02278002A0BD09B1A5A42534101301E4003780134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF7D9FC641B061E12D0A2 +:40898000012CF0D03F190121B84200D8391A0F001F2C0AD923002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF76A +:4089C00095F900285CD1002399464346013B009342460123B24638004E464F469B1A0193E3191A1A002150449946FFF73FF90028D9D14B46002BD6D04346B04500D2330043 +:408A00009C420FD95246D218E95CD25D91422ED15246D01903E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B46634660 +:408A4000A4465C46B3461E0004E0E85CF15C884203D11A00531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E7FD +:408A80004346E31A434500D243460133039300234246994601339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF7DDF8002800D076E7002F00D173E74B468F +:408AC000981944450FD95B46995D43464846EA5C8019914204D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D17C +:408B0000013BF9D22FE75644F6183800CBE7039B38009C466644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FBF1 +:408B4000036818001993FFF7ABFC1890AB891B0605D52B690793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46CE +:408B8000002B1CD0252B02D119E0252B03D001342378002BF9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A9323789B +:408BC000002B2ED0631C9B46002316AAD377012252429246002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA589746FA +:408C00000B9B0F925B420B9304231C430B78EDE73A000699099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A981F +:408C400043B03CBC90469946A246AB46F0BD01220B7890462B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34671 +:408C800083001B1814785B0058182100531C30391A000929F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9A75 +:408CC000A30601D500F088FEE30601D500F080FD630601D400F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F104398460200012351462B +:408D0000013100D1FFE08021200088430890002A00D0FCE05246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA94464833A0 +:408D40006344119353460E9A0793924500DA0792002313934346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079AFE +:408D80009C1A002C00DC47E27449BA687B688846102C1FDD31001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002841 +:408DC00000D036E7103CBA687B6832A9102CE9DCB0460E00414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F0CB +:408E000077F907220F9B07339343013294469C4462460F921A6816925B6801221593159B169D5B005B08984652424D4B2800414604F02CFE002801D000F0FDFD0122484B60 +:408E400052422800414603F001F8002801D000F0F2FD002200231698159902F0EDFF002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B59 +:408E800007930E93002308949A46139362E70022303B15001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E6082350 +:408EC0001C430B7892E6129310231C438B46A30600D57BE1E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146A0 +:408F0000013100D0FFE6002A00D135E30894012B00D1E5E3022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C09230067 +:408F4000340032001C43F0D10C920D9332AB5B1A119166460E93F5E6945F04103C610410FFFFEF7FF8600410129310231C438B46A30600D511E1E30601D500F031FC6306C4 +:408F800001D400F02DFC0F9B1A880C92002204330D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F0DB +:408FC00003FC0F9B1A880C92002204330D920F93E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B46414606 +:40900000002901D001F083F8A30601D500F0E9FDE30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B4620 +:409040001D1D1B6816A91A0011930023CB77002A01D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F054FF119BC31A1A000E93DB43DB171A4066 +:4090800016ABDB7F0792984600230F9508949A4613935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E930023C2 +:4090C00011959A4613934BE68B4641461293002900D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF52 +:40910000634B1793A30600D453E707220F9B07339343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B68B9 +:409140000C9300230D9302331C431EAB1A7048325A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E589 +:409180000B78002800D031E50122203090462DE58B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D9201230200B7 +:4091C00099E68B461293A30600D483E607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F002 +:409200007FFF129B002B00D10BE528AD2B70002316AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E10836C1 +:409240004B46002B0CD01EAB3360022373607B6802340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD10222100D6 +:409280009246099C32002E004D4609E0086104101C6104104C610410103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D028 +:4092C000B7E4103EB9687B6832AA102EE8DCA9460C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B68D1 +:4093000064440133BC607B60072B00DD9DE00836089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102EAF +:4093400017DDBC4810311060484601335060B9607B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C634 +:40938000BC607B60072B08DD3A000699099802F037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B0B +:4093C000012B00DCAEE0119B01343360012373607B68BC6001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE2083600220023AA +:409400001698159902F012FD002800D0A4E1119D149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C4673604346644401338F +:40944000BC607B60072B00DC61E73A000699099802F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F0DCFC002800D1E2E06F4B01343360E1 +:40948000012373607B68BC6001337B60072B00DD66E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DDF4 +:4094C000102221009046099C32004E4603E0103D0832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B68E4 +:4095000032AA102DE7DCB1460C0016004A466419013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B6015 +:40954000072B00DC73E73A000699099802F058FA002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B2A +:4095800029D10894002300240C930D94C5E43A000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A0073 +:4095C0000699099802F01CFA002801D0FFF731FBBC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723E6 +:40960000CA08354311002A0003403033237028000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB3C610410386104104C61041005 +:409640001F98002800DC96E2139A1499130090468B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340D3 +:40968000139AD31A9846002B00DC28E1102B01DC00F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B96090 +:4096C0007B60072BF1DD3A000699280002F098F9002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F0E3FB013E90 +:40970000303232700023200029000A2202F0DAFB030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099815 +:4097400002F05EF9002801D0FFF773FA16ABDB7FBC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832BA +:40978000102E17DD50461031013315605060B9607B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B462C +:4097C00075603360641929E60F9B1A68FFF7FBFB13680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60B0 +:40980000072B00DD02E20836149B5D1E002D00DC7EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B96019 +:409840007B60072BF2DD3A000699200002F0D8F8002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B3E +:40988000092B00D930E7089C27220C9B28A930338B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB0468D +:4098C000A14616000C004A4632604246444401337260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A97 +:409900000FDD1399119A8C4662443260424672607A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD10222100BF +:409940009046099C32002E004D4603E00832103E102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E73C +:40998000199A3260189A944672607A6864440132BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F062 +:4099C0001FF8002801D0FFF734F97B68BC68984632AE13E54C610410072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D990023424269 +:409A00008B4111001A002D2316A8C377080010430C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00CD +:409A4000290004F023F8002800D0E6E25346013300D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662BDA +:409A800000D1FCE1462B00D1DBE00E9A0998453A13005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2DB +:409AC000119B9846A844E30700D48BE2002300224846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D12B +:409B0000F6E0129B652B00DC26E2129B662B00D1F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE0F7 +:409B400016ABDB7F984600239A46FFF703F90F9A0A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373609A +:409B80007B68BC6001337B60072B7ADC0836002807D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E1320008320028A0 +:409BC00000DACCE111980133106014987B6044185060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78C6 +:409C0000FEF7F4FFBB4B1193FFF737F93A000699099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18601861002800D14FE24023069A5361FEF70E +:409C40008EFF23AB1B93049320AB03931FAB02935346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B98448B +:409C800024E73A000699099801F0BAFE002801D0FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0BBF80028E0D101235B1B1F9336 +:409CC000984403E7119A32AB9B1A0E93FFF73AF81198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129BD1 +:409D0000023B12932C22139B48215D1E16AB9B186A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A0465646FF +:409D400000E0260028000A2102F05AF8741E3031217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B32 +:409D80004546991A012307315B4201E0E85C013321AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1A2 +:409DC000189A0E9B944663441A000E93DB43DB171A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A00069973 +:409E0000099801F0FDFD002801D0FEF712FF1F9BBC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FECF +:409E4000149B1F9ABC689B1A32AE6AE553460793062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523ABA3 +:409E80001B93049320AB03931FAB02935346019303234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946E2 +:409EC000159B634407932D231093D7E5189A149B9446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C04638610410FC600410306104101F9B139360 +:409F0000002B00DCD5E05246002A00D092E0E20700D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0E6 +:409F4000C4E5E30700D58EE6239B119A9B1A14930E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B960D6 +:409F80007B60072BF3DD3A000699099801F038FD002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139BA1 +:409FC000944663441A000E938AE72E21302316AA521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E542 +:40A000003A000699099801F0FBFC002801D0FEF710FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A0044 +:40A040000E93DB43DB171A40079275E501232340139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A9B +:40A08000981A431C1A000E932AE7274B1193FEF7F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C52 +:40A0C0000300BBE7012325E716ABD877FEF76CFF16ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD06 +:40A1000016ABD877FFF77DF8054881466DE716ABD877FEF779FF01235B429A46C4E7C0464C610410006104100461041030B504009BB01800002A2EDB82236D469B00AB8120 +:40A1400000910491002A11D00123013A5B4202920592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF76F +:40A18000D1FC431C04DB1BB030BD8B232360E9E78B232360F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC04674060008E7 +:40A1C000002904D0FF2A04D801200A7070470020FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE431C00D070BD2368002BFBD02B60F9E733 +:40A200001C870008002370B5064C050008002360F2F76AFE431C00D070BD2368002BFBD02B60F9E71C870008F0B545468046DE4657464E464246E0B50C69126985B00B006D +:40A2400002910020944200DD90E014229446634499464A46013CA300D6181422424493469B4433681500591C5B461868019201F057FC031E009042D0290000274D460020BD +:40A28000B146A2463E0004009C462F0008000395634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B182C +:40A2C00009041C14090C1B04194302C0B945DFD2039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299F4 +:40A30000404601F055FA00282FDB4F460020009B019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD239 +:40A340000199A3008C4663441A68002A0DD1043B0A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B5574650 +:40A380004E464546DE46E0B5016C99B082461D0016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A422C +:40A3C00018D0002200233000390001F02FFD00282FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346CB +:40A40000180308D1269BC648002BECD003000833269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504672 +:40A4400001F06CFA434683461A0D00D1D6E13B03B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FFB04AB14B02F074FDB04AB14B01F02CFEF7 +:40A48000040040460D0003F055FBAE4AAE4B02F067FD02000B002000290001F01DFE04000D0003F013FB0022039000232000290001F0C2FC002800D0B1E20123039C0C934A +:40A4C000162C10D8A149E300C9183200086849683B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA2A +:40A5000084E29C460D930023049A9946110061440491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC06 +:40A5400001230B93229B052B01D000F08BFC239A039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B00180014301100EF +:40A5800001328542F8D253465964504600F0DCFE5346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B18361125 +:40A5C0001C685D68F30601D400F0CAFC604B0E401A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0B0FCB1 +:40A6000004000D0076100837002EEED12200089809992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC002801D000F0C2FD404603F07CFA32003B00A2 +:40A6400002F08EFC0022434B01F046FD424A0B0094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD200EC +:40A680009B181A685B68354902F036F8089A099B02F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F0D7FE05000E000A9A3034511CE7B214910F +:40A6C00017703300089809992A0001F0C9FB002801D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002801D000F0E7FD129B012B01D100F078FC44 +:40A700000A9A129B9446634498464B461293149B994638E00000F07F396104100F270000606204106C6204100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B06 +:40A74000288AC63FFB799F501344D33F986204107062041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B01F062FB002801D000F074FDA1464445E4 +:40A7800001D100F033FC089809990022B04B02F0E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F902000B002000290002F052FE4B46303730 +:40A7C000FFB25C1C1F70089A099B05000E0001F033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946A4 +:40A80000179B4B441C00934BE318202B00DC7EE13100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D0F93491918E68A48D5E50023524600210B +:40A840005364504600F080FD5346186401235B4207930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594B3 +:40A88000239B002B00DAA7E2049C059D300022002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B003000390002F0D5FD43460A9A30331370079BB1 +:40A8C00006000F00541C012B4ED00022604B02F047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE057 +:40A900000022534B02F02CFB01239C460022002306000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF8804603F0FFF822002B0002F011FB020050 +:40A940000B003000390002F08BFD53464246013B303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0B2FB06000F0002000B00049805994D +:40A9800001F05AFA00280CD10498059932003B0001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F704A +:40A9C0000BE70B9A002A4FD0229A012A00DC2CE2079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C4482 +:40AA00006346049300F060FD804632E0069A039BD21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF9020050425041039B1B1A03933DE5012332 +:40AA40009B1A06930023049357E5C0460000F03F000024403204000012040000000010FE3861041098620410069B4C4608930023984608990B1E0EDD049A002A0BDD9342DB +:40AA800000DD87E1069AD21A0692089AD21A0892049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD0500FD +:40AAC0005946504600F068FCAB464B461A1B00D0A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B008A +:40AB00004B44586800F098FC20231B1A10E020223000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE0202362 +:40AB40001B1A042B00DCCCE31C23181A069B9C46844463460693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD62 +:40AB800049461A00504600F0B3FD81460C9B002B00D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E224 +:40ABC000079C0A9A013C23009446634408930123334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD82 +:40AC0000494604004246380000F0ECFDC3688146002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B88 +:40AC40001C4303D1079B002B00D1A1E15B46002B00DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454521 +:40AC800000D1E1E000F092FB4146050000230A22380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E7494617 +:40ACC000584600F075FD002800DB63E7039B5946013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E02900A5 +:40AD000000230A22504600F051FB050049462800FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC494695 +:40AD4000834600F035FD002800DC44E1651E2B780A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D047454E +:40AD800003D03900504600F007FB4146504600F003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E654 +:40ADC00001230B93239B002B00DCD1E01D0098460E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F83B00320001F03EF800239946984600285D +:40AE000055D0239B0A9CDB4303934946504600F0C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E540 +:40AE4000002E00D070E6AAE700F0B0FAA24605008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302332D +:40AE80000A9023940B93ECE4229B022B00DC85E6079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B93 +:40AEC0000A9A01330393312313704EE700230B93FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226B4B01F0F1F86B4A0B009446634408902B +:40AF0000099109930022644B3000390002F0A8FA089E099F32003B0004000D0000F0A0FF002800D0B2E0802000068446390061440B0032002000290000F07EFF002857D098 +:40AF40000023994698465CE70A98FFF74CFAE21A0D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346B1 +:40AF8000186401230A90079323930E93FFF707FB43460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1F4 +:40AFC000392E00D122E10B9E31360C9B47466C1C2E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B2B +:40B0000000D1D4E0109811995C420F23264A2340DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E044E3 +:40B0400001F08EFF06000F0064100835002CEED1FFF7E4FA039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF75DFE012217 +:40B080002100504600F034FB0C9099E50023994698460CE70000F07F000014403304000000001C400000C0FC9862041070620410129B8F49013BDB00C91808684968089A87 +:40B0C000099B01F04DFF149015913900300002F0FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46303562444C1C0D709046012B1BD00898A5 +:40B100000999250000227B4B01F02AFF0F00060002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D14446089009911498159900226E4B00F0AC +:40B14000CBFF089A099B00F077FE002867D0139B651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246B5 +:40B18000069BB346BA46049E99462F009046D1E5069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D17E +:40B1C0008EE60E9C002C00DC12E7039B0022013B13933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE0022424B00F070FF414A0B009446634449 +:40B200000890099112940993FFF730FA39232B700C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F017FE002801D1DBE61C00631E1A78302AD3 +:40B24000FAD0FFF7C8FA4346B3460C93049E069BA84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E60023A1 +:40B2800041460A22504600F091F80E9B8046002B01DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846B4 +:40B2C000FFF7ACF9139B149C03930A9B1D00FFF773FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C04698620410000024400000E03F00001C40D6 +:40B300000000C0FC044B1B68586B002801D0F03070470248FBE7C04674060008A00A000870B50500080011000022064C22601A00F1F7F8FF431C00D070BD2368002BFBD077 +:40B340002B60F9E71C87000870B50400C06C0D0000280AD0AB00C318186800280FD002681A6000230361C36070BD212204212000F0F799FFE0640028ECD10020F4E7012639 +:40B38000AE40721D920001212000F0F78CFF0028F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000212B +:40B3C0001430036801311E04360C56431B0C5343F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC68 +:40B4000090469946F8BD6B684846591CFFF79CFF29002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A4D +:40B4400001D11B0410301A0E01D108301B021A0F01D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B087E +:40B4800003601000704719040022002901D11B0C1032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B08C3 +:40B4C00003600122DDE7C04610B50C000121FFF73BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0013 +:40B5000033199846BB687968984500DD0131FFF71BFF14220300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A461437C3 +:40B540002300BC46AA44B60053440097B44401939A454FD253461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A4668 +:40B580007343120C9B18020C9B1802041F0C120C1B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B04C4 +:40B5C00008041B0C0343236008CD60681B0C734307043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68BC +:40B60000002A09D1424603E0043B1968002902D1013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F001400A2 +:40B6400013403AD1A4103E00002C25D043469D6C002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD0424609 +:40B68000D26C736894469B0063441A68641032601E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B00F2 +:40B6C0009A580023FFF772FE0700BBE701214046FFF73AFE054B05004361012303614346986400230360B5E76063041071020000F8B54E464546DE465746E0B50E00336912 +:40B7000054119846A04443465D1CB3688346914649689D4203DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD13269484609 +:40B74000970031001F2214311040CF198146002825D02022121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D6189 +:40B78000736860469A005B46DB6C9B181A6832601E603CBC90469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D192001435A8 +:40B7C0001431AB18891801E09D4209D2043B04391C680A689442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014211D +:40B800008C4692001437A444BB18624402E09F4200D370E0043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB474626000025143714367B +:40B8400043465968FFF780FD43468146C56018694D4683009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A17 +:40B88000190C5B461B0CCB1A11145B1812041914120C1B048A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24695 +:40B8C00008C5A445EFD862460324D21B053AA243043289180439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD0123036164 +:40B90000002381464361EFE7664699E727000E00A046143714360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D0802252031343019370 +:40B94000002D19D068460095FFF790FD002830D1009B7B61019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B14 +:40B9800020307B61012301253B61002CEAD1104B9C46104B6044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340C0 +:40B9C000009901930A437A61C5E7C046CDFBFFFFCEFBFFFFFFFFFF3F70B50500080011000022064C22601A00F1F7C0FB431C00D070BD2368002BFBD02B60F9E71C8700088E +:40BA0000F0B557464E46DE464546E0B5936883B001900E009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218EB +:40BA4000521090465A46501CC0194246404501D9804602008020C000034238D011000198F0F7CCFB041E54D05A463169FCF764F9B3892A4A134080221343B381434620004D +:40BA80005A463461B8463C00584473619B1A3060B36042464946FCF791F9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68AC +:40BAC000A0469946A742AED23C00B846E1E70198F0F7B8FB041ED1D1019C31692000F0F7C4FB0C2323604022B38901201343B3815246002340429360536003E000235246A6 +:40BB00000020536003B03CBC90469946A246AB46F0BD0C23019A1360E5E7C0467FFBFFFF002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3B6 +:40BB4000FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A524180 +:40BB8000030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C30950 +:40BBC0008B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D3A9 +:40BC00008B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B42D3 +:40BC400074D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A11 +:40BC80005241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430AD6 +:40BCC0008B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B42D7 +:40BD000001D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942C5 +:40BD4000031000D34042534000229C4603098B422DD3030A8B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C309E4 +:40BD80008B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D3E7 +:40BDC0008B00C01A5241D9D243088B4201D34B00C01A5241411A00D20146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD08 +:40BE00000029F8D016E770477047C0468446101C62468C46191C634600E0C0461FB501F03DF8002801D40021C8421FBD10B500F097FF4042013010BD10B501F02FF800289E +:40BE400001DB002010BD012010BDC04610B501F025F8002801DD002010BD012010BDC04610B500F0B7FF002801DC002010BD012010BDC04610B500F0ADFF002801DA002076 +:40BE800010BD012010BDC0461C2101231B04984201D3000C10391B0A984201D3000A08391B09984201D30009043902A2105C40187047C046040302020101010100000000D4 +:40BEC00000000000002B11D1002A0FD1002900D1002802D00021C943081C07B4024802A14018029003BDC04621FFFFFF03B4684601B5029800F030F8019B9E4602B00CBCA9 +:40BF00007047C046F0B5CE46474615042D0C2E0080B50704140C3F0C9946030C7E435D43674363437F19340CE4199C46A54203D980235B029846C4444B46514343433604EF +:40BF4000360C250C24046544A4195918491920000CBC90469946F0BDF0B557464E464546DE46E0B5040083B00D00924699468B422FD82CD04946504601F056FE2900060025 +:40BF8000200001F051FE331A9846203B9B4600D574E053465A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4681 +:40BFC00093400193012342469340009319E08242D0D900220023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009298 +:40C0000001934346002BE8D0FB0772081A4346467B080EE0AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D1F8 +:40C040005B460098019900196941002B22DB2B005A46D3402A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620233A +:40C080009B1A5246DA40414613004A468A4017001F4382E7424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E7424623 +:40C0C000202326009B1ADE402F00B446974066463B003343C9E7C046F8B54546DE4657464E460C03E0B54E00C90F88460D00610A440F0C43C70019035800DB0F9B464B0A57 +:40C10000510F0B43760D400D1900D200D84500D1AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002B00D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B28 +:40C140009E424DD080231B041943382D00DD07E11F2D00DD38E12020431B9A460B0050468340994613004846EB401843030050468240501E8241E9401A43BA1A611A974216 +:40C18000A441170064420C1B230262D56402650A002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E020223C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B82 +:40C1C00000DDF1E0202238002900D21AD840914097402C000143781E8741DC4000260F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F0023022CD5964B013664 +:40C200009E4200D19AE04546944BFF081C406007760564020743240B760D00212403230B0C0D8F4A24051C431440330523435B00ED075B082B43380019003CBC90469946C2 +:40C24000A246AB46F8BD6446044300D111E2040067467B07C6D145466007FF080743E4087D4B9E4230D024037605240B760DD4E7331A9A46002B78DD002831D0764886426F +:40C28000AED08020000401435346382B00DCE9E00A43511E8A410021D219BA42BF4109197C4217000C192302D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E9 +:40C2C000E007074364088BE723003B4300D1CBE18022120314432403240B9EE72E007FE70800104300D1B4E0581E002800D0DEE0BA18BA429B4164185B42E41817000126AB +:40C300002302A6D50226D5E7002D6ED1701C4005400D012800DCF9E0B81A844687428041E51A40422D1A280200D489E0D71BBA4292411C1B5242A51AD84629E74546002494 +:40C3400000276AE7454CF61A2C4049E73D002838854000272EE73800FFF796FD20301DE70A43511E8A41002107E7002B00D0F3E0701C43055B0D012B00DCADE0364B9842C5 +:40C3800000D1D1E0BA18BA42BF4164187F42E419E707520817436408060021E72E48854200D193E01D00D0E629001F3EF140202B00D18DE04022D31A9D402F437D1EAF411A +:40C3C00000240F43002644E72B000800203BD8400300202D00D17DE04020451BA9400A43511E8A4100211A43C7E6002E50D01A4EB04257D080266B429946360434434B46B4 +:40C40000382B00DDD6E01F2B00DD35E12026F51A2600AE40B2463E00DE40AC46350056462E436546AF407D1EAF41DC403743D71BBA4292410C1B5242A41A0600D846A3E636 +:40C44000644667462C4300D0A2E600250026002706E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC2020C31A080098409C46834653461000D84003005846184374 +:40C4800063469A40531E9A4153460243D94003E726003E4306D0EB439946002BC7D0944EB042ACD10C0017000600D84698E6904B9A450BD08246E7E6002800D09EE01800B2 +:40C4C000104300D1E9E01C001700D846884E87E6002572E7002182E723003B43002E00D0ABE0002B00D1E7E00B00134300D177E6BA18BA42BF4164187F42E419230200D436 +:40C50000F2E07C4B17001C40060069E620003843002ED1D100285BD11C00144300D1A8E01C001700D8465BE606000024002797E650460B002038C34099465346202B00D11F +:40C5400095E0402350461B1A99400A43511E8A414B4600211A439FE6002E30D126003E4367D0DB439A46002B1CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F6 +:40C58000F31A26009E409C46B34653463E00DE4033005E461E4363469F407B1E9F415346DC403743BF189742924164185242A418060078E627437C1EA741002437E74C4EB7 +:40C5C000B04236D080265B4236049A463443CFE71800104300D103E6B81A84466745AD41E01A6D42401B050200D42CE6D71BBA4292411C1B5242A41AD846F1E518001043C4 +:40C6000000D163E7F808670707438020E4080003044208D0DD08054205D1D208590711430F002C00D8467B0FE4001C43FF00304ED6E50C0017000600D2E5002B38D00B006E +:40C64000134300D142E7F808670707438020E40800030442E7D0CB080342E4D1D208490711430F001C00DEE700270024D5E500216BE700250027F3E54E462500203EF54003 +:40C680004B462E00202B2DD04025ED1AAC4027437C1EA74100243743C9E6802400252403134E0027DCE527437C1EA741002479E70C0017000E4E93E50C00170090E556460E +:40C6C0002300203EF34099465346202B0ED0402356469B1B9C4027437C1EA7414B4600241F435FE70024D2E71700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE4610 +:40C700004E46E0B54C000E0387B0834692461D008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04F600134333439946C30098466A4B00269C46002364440393CD +:40C740002B031B0B9B466B00ED0F50465B0D01955ED0624A934253D05A46D1008022400F120402430A4393465246D1005C4A9446002263443800684084460290E41A16438F +:40C780000F2E00D9B4E0574BB6009B599F460300334399466CD100239846023308260393CEE7CB464146039A0197022A65D1019B4A4C9C460023002298466BE00300334330 +:40C7C00099464ED0002E00D1BCE13000FFF75CFB03000B3B1C2B00DDACE11D22D31A5A460100DA4008398E401300334399465B468B40984600233C4C0026241A03939FE756 +:40C8000051465A46114329D1002293460232B1E7594601431ED05B46002B00D19EE15846FFF732FB03000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D940C9 +:40C840000B0059460B4351469B469140264B00221B1A8FE7002301229B468BE75146032288E700239846013304260024039367E70323B14603930C2662E7032A00D15CE2A4 +:40C88000019B012A00D0E4E113409C46002300240022984600211203130B0A0D12051A432305124C40462240134362465B00D2075B081343190007B03CBC90469946A24603 +:40C8C000AB46F0BD002380229C4612039846034CE0E70023014C00229846DBE7FF07000001FCFFFF6C6304100DFCFFFFFFFF0F80D94500D939E100D134E1002346464D4607 +:40C900009A46013C5B460A0E1B021A430B02170C039313041B0C3900280090460193FFF7FFF80200019B83465A43280039009146FFF77CF9350C09040D43A9450DD95B4631 +:40C940004544013BA84500D93AE1A94500D837E102235B429C464544E3444B46EB1A390018000493FFF7DCF8019B05004343390004989946FFF75AF9330409041B0C0B43BA +:40C98000994509D943446A1E984500D91AE1994500D817E1023D43444A469B1A5A4612042A4303999346100C0A0C914609045A46090C4E460D001204120C45430591514354 +:40C9C0007243704352190E0CB218954203D980256D02AC466044150C09041204090C28185218834200D2CEE000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D129 +:40CA000017E139001800FFF78BF8019B05004343390050460493FFF709F904980B04310C1943884209D941446B1E884500D907E1884200D804E1023D4144049BCB1A18003C +:40CA400039000493FFF76CF8019B82464343390004980193FFF7EAF801980B043104090C194388420DD953464144013B884500D9E8E0884200D8E5E002235B429C4641440B +:40CA8000E244019B2D04CE1A51462943059D4F462A000B04080C1B0C5A4345437B4378435B19170CFB189D4203D980256D02AC4660441D0C12041B04120C28189B18864209 +:40CAC00000D293E000D18EE001231943A04BE318002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A4080239346DB00E318994A934268DD0123029A984C1A4000238F +:40CB0000944698460022C5E680224B46120313420AD05B46134206D11A431203120BAC4688468E4CB6E64B461A431203120BBC468A4CAFE603005A46283B9A400023914600 +:40CB4000984657E65846FFF79FF9203040E603005246283B9A400021934677E6FFF794F920305FE6884500D2C7E64B46DE075D0843465B081E434346DB079A46C2E6002525 +:40CB8000924500D333E7039E5946B446E244B245AD416D424544EB180139984507D2984200D97FE000D1BCE01D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E779 +:40CBC0009B46CAE61500E7E65A46C90852070A435B0590465C0D5A460123029952021940120B8C4656E6002B00D16FE746444A1EB04529D91100864200D065E7039A934233 +:40CC000000D061E762E7012149420120C21A382A21DD029B03409C4638E60F220A40042A00D15BE70A00111D914292415242934454E7474BE318002BE5DD01225242F2E75F +:40CC40001D00FAE69A461CE7B04239D86ED011003AE702933AE71F2A3CDC20239B1A0C005846994098404B1E99415B46D440D340204308431A00430709D00F230340042B5D +:40CC800005D00100081D88429B415B42D21813023AD50123029A01241A400023944698460022F7E5022149428C46039DE344AC46E244AA45AD416D424544ED182D1A96E6D4 +:40CCC0008A1E03994D008D42894149424144761803958FE71F204042C31A5846D8400300202A28D040205D46821A954029434A1E91411943072300220B4009D00F2300228B +:40CD00000B400800042BBDD1010053075202120BC9081943012388460299002419408C46B8E55245BED88B46002560E6039D9D42C6D3110062E70025D8E780225B4612035A +:40CD40001A43019B1203120B9C468846034CA1E5FF030000FFFFFFFEFE070000FF070000F0B54F464646D6465C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0D51 +:40CD8000C90F91463F0B640D01209D4208D09C4201D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD1BF +:40CDC00063461E433000461EB041E4E70020E2E7FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E034C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0BA +:40CE0000254FBD422DD0002C0FD130430700814678427841C0B2002D17D15F463A4314D14B460020002B0AD006E0002D02D15846024301D0994218D04842012108433CBC32 +:40CE400090469946A246AB46F0BD0028F2D00120013B1843F3E737000743D1D002204042EDE75F461743CED0F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D0002070 +:40CE80005E45DCD20123481E1843D8E7C445D3D80020C445F6D3D2E7FF070000F0B54E464546DE4657465C00E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B46B6 +:40CEC00090463F0B640D9D4220D0244B9C4222D0002D12D1304343424341DBB2002C1FD0002B0CD04B460120013B034318003CBC90469946A246AB46F0BD002C16D0CB45B7 +:40CF000017D05B46594201230B43EFE7310002230143EBD1D9E7390002231143E6D1D7E73A43DDD100230028E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D0002314 +:40CF4000BE42D3D25946012301390B43CEE7C445D7D80023C445F5D3C8E7C046FF070000F0B557464546DE464E46E0B50C0398464E00230B87B0070092469B46760DCD0FCC +:40CF8000002E6BD06D4B9E4235D080245B46420F2404DB0014431C43C3009946684BA3469C46002300276644029343461C035A00DB0F5046240B520D984600D176E05F4BB4 +:40CFC0009A426DD08023410F1B040B435C49E4008C461C43C300002062444146B6186940721C0191944607430F2F00D9B0E0554ABF00D25997465B460343994600D087E029 +:40D0000000239B46023308270293CEE742460192022867D0032800D10EE2012800D062E1002300240022994601990140CDB2002112030B0D120B1B051343434A240513400E +:40D040001C436400ED0764082C434846210007B03CBC90469946A246AB46F0BD034399464FD05B46002B00D189E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A006E +:40D0800001005C46DA4008398C4013008F4023439B46B94600232D4E0027361A029384E7534623432AD10024022096E75346234320D0002C00D157E12000FEF7E5FE03008D +:40D0C0000B3B1C2B00DD49E11D21CB1A51460200D9405346083A944093400C431B4A121A00207AE70125019B144C1D400023002299469CE70024002201206EE75346032046 +:40D100006BE700239B4601330427002602934CE7032381460C27029347E780220023002512039946054C82E75C464B4602986FE75C464B46019502986AE7C046FF070000EE +:40D1400001FCFFFFAC630410FFFF0F800DFCFFFF4A464946170C1A0C1B041B0C08041900000C41431500884619007D437943039589462900150045434D44029545462D0C09 +:40D18000AA46029D5544A94506D98A46802149028946CA4451460391290C0491414609042D04090C88462900250C24044144240C0591210041438846210079438A466843AC +:40D1C000414650448146080C48446F43824503D98021490289464F44010C894639004944029141460F0404993F0C88460004C01980444146049159460F0C0904090C88461E +:40D2000059438A4639005143894641464A435146090C8B467B43D2185A44934203D980235B029B46D94451460904090C8A46414661437C43130C12044B445244A1468A46DC +:40D240003C0041466C434D4351464D440F0C7D19A94503D98021490288464444049F0399B84641448B468345804141428846514608042F04000C3F185846029910188946F1 +:40D28000904292414F44BA46524299469346C244D144CB448F42BF41C245894199459B41934592417F4249422D0C52420F435B4213437F19FF185B463C19DB0D059A6402C9 +:40D2C0001C43430213435D1EAB415A46C00D034352021343E20156D501205A0803401343E207134364085A48604400284DDD5A0709D00F221A40042A05D01A1D9A429B414C +:40D300005B42E4181300E20104D58020514AC00014406044504A904200DDE3E60125DB0862071A436402019B9146220B4405640D1D407CE6802259461203114208D014425B +:40D3400006D122431203120B45469946434C6EE65B461A431203120B404C68E603005446283B9C400023B9E6FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF741 +:40D3800083FD203074E6B446ADE701252A1A382A06DD019B00241D4000230022994646E61F2A21DC20252000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D0B4 +:40D3C0000F230340042B05D00300181D98429B415B42E418230221D50125019B01241D4000230022994622E61F2521006D42281AC1400800202A1DD05F35AA1A944023437A +:40D400005C1EA341072503431D400022002D09D00F2200241A401800042AD6D1030065076402220BDB082B4301259946019B00241D40FCE50024E2E7802201251203224376 +:40D4400001991203120B0D409946044CEFE5C046FF030000FFFFFFFEFE070000FF070000F0B54646D6464F460C03C0B5CD0F4E00610A440F0C43C1005800400D84468A46E5 +:40D480000F001903500F490A0143C648760DA846DB0FD200844500D1D8E001204340AB4200D1A6E06046351A002D00DC05E1002810D10B00134300D1D7E06B1E002B00D07C +:40D4C0004BE153469F1ABA458041641A4042241A01261EE0B34B9E4248D080231B041943382D00DD19E11F2D00DD4CE120230F005B1B10009A409F40E840531E9A41E940B7 +:40D50000074317435346DF1B611ABA45A44164420C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FC0300083B1F2B00DDE9E020223C00D21A9D40D4409F402543A0 +:40D540009E4200DDDBE09E1B731C1F2B00DD0AE120223800D21A290097402C009140D8407A1E9741DC40002601430F437B0709D00F233B40042B05D03B1DBB42BF417F42F4 +:40D58000E4191F00230225D5864B01369E4200D1AFE0854B01251C4043466207FF08640276051743240B760D1D4000212403230B0C0D7E4A24051C431440330523435B0027 +:40D5C000ED075B082B43380019001CBC90469946A246F0BD012543466207FF081743E4081D40704B9E4236D024037605240B760DDBE76346F31A002B00DC94E0604600287B +:40D6000035D068488642B1D080273F043943382B00DCFDE00A43170000217A1E9741574457458041091944420C1923023AD55D4B01369E4200D14BE101225B4B1C407B0818 +:40D6400017401F43E207174364088FE70800104300D024E721E723003B4300D1B9E18022120314432403240B9FE72E007EE70800104300D1CAE0581E8446002800D0E7E030 +:40D6800052445245804164184042241817000126230207D50226CFE764462C4300D1B3E12C0067467B0700D062E76307FF081F4301254346E4081D4093E7002D78D1751CE7 +:40D6C0006D056D0D012D00DCF2E05046801A8245BF41651A7F42ED1B8446280200D48CE05046171ABA4292410C1B5542651B984614E70125434600241D40002755E72A4C39 +:40D70000F61A2C4032E73D0028388540002717E73800FEF7B9FB203006E70A43170000217A1E9741EEE6002B00D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D14F +:40D74000C5E0524452458041641840422418E707520817436408664608E71248854200D185E01D00BCE629001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100249E +:40D780000F4300268EE72B000F00203BDF40202D71D040235D1BA9400A43511E8A4100211743AFE6FF070000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D42F6 +:40D7C0003443382D00DDA8E01F2D00DD1FE1202627005046761BB740E84007435046B040461EB041EC403843171ABA4292410C1B5242A41A664698468BE6644667462C4306 +:40D8000000D08BE6002500260027EAE61E00ADE61F2B60DC2027F81A0F00844687401000D840074360468240501E8241D9401743F5E626005046064305D0ED43002DD3D002 +:40D84000904EB445BDD10C001700664698468DE68C4883420BD06346D9E6002D00D096E00800104300D1E2E00C0017009846854E7CE6002580E700218EE72300504603438F +:40D88000002E00D0A8E0002B00D1DEE00B00134300D16BE65244524580416418404224181700230200D4FDE6774B66461C405DE6250050460543002ECFD1002D4FD10C0053 +:40D8C000144300D1A0E00C00170098464EE666460024002785E61F000800203FF8400700202B00D18EE04020C31A99400A43511E8A410021174392E6002E14D1260050463B +:40D90000064362D0DB43002B5CD187189742924164185242A418664687E650462043441EA041002460E7574EB4454ED0802636045B423443382B00DD7FE01F2B00DD8BE03E +:40D94000202627005046F61AB740D84007435046B040461EB0410743DC40BF18D6E70D00154300D102E65046801A8245BF41651A7F42ED1B8446280200D48DE65046171A07 +:40D98000BA4292410C1B5242A41A9846EEE50D00154300D16BE750466707C00807438020E4080003044207D0CD08054204D12C009846D70849070F437B0FE4001C43FF00DC +:40D9C000304ED3E52F4EB445B4D10C0017006646CCE500270024E8E5002B39D00B00134300D144E7C008670707438020E40800030442E1D0CB080342DED1D70849070F437F +:40DA00001C00D9E7002171E700250027E9E52E002700203EF740202D2FD04026751BAC4050462043441EA04100243843DCE6802400252403134E0027D3E550462043070092 +:40DA4000781E87410024BF1860E70C0017008DE50C0017000B4E89E51E002700203EF740202B0CD04026F31A9C4050462043441EA04107430024BF1848E70024D0E7002488 +:40DA8000F3E7C046FF070000FFFF7FFF70B50E4E0D031C0349005B002D0B490D240B5B0DB14204D0084900208B4208D070BD05430120002DFAD1044900208B42F6D11443C8 +:40DAC0002000441EA041F1E7FF07000030B5134D0A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC80240E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D1E1 +:40DB00001400200030BD094BCC18FAE7084CE840A44663449A400243EFE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C4032 +:40DB4000C50F2000FEF7A0F9174B184A1B1AD21A1F2A18DD164AD21A9440002224035B05240B5B0D0021100024030A0D240B12052243104C1B05224013435B00ED075B08A0 +:40DB80002B43190070BD210091400A000B21081AC4405B052403240B5B0DE3E70025002300240022DEE7C0461E0400003304000013040000FFFF0F8010B5041E28D0FEF751 +:40DBC00063F9154B154A1B1AD21A1F2A15DD144AD21A9440002224035B05240B5B0D0021100024030A0D240B120522430D4C1B05224013435B00590810BD210091400A0080 +:40DC00000B21081AC4405B052403240B5B0DE6E7002300240022E2E71E0400003304000013040000FFFF0F8010B5002903D1FEF72BF9203002E0081CFEF726F910BDC04660 +:40DC4000F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E46704701B40248844601BC604700BFC510000848656C6C6F20616E642077656C636F6D652053504D000000EC +:40DC8000526573706F6E73653100000025732025753A20526563656976656420756E6B6E6F776E207369676E616C2028307825303878290A0000000025732025753A20521D +:40DCC00065636569766564206D6573736167652066726F6D20756E657870656374656420736F757263652028307825303878290A0000000025732025753A205265636569B4 +:40DD0000766564206D65737361676520646F6573206E6F7420636F6D706C792077697468206D65737361676520636F6E76656E74696F6E0025732025753A204661696C65DE +:40DD40006420746F20616C6C6F63617465204D656D6F72790000000025732025753A20457870656374656420746F20726561642025642C20676F74202564000025732025DC +:40DD8000753A207073615F726561642829202D204261642072656164696E67212100000025732025753A2053686F756C64206E6F74207265636569766520696F766563731C +:40DDC00020696E205053415F4950435F434F4E4E454354206F72205053415F4950435F444953434F4E4E45435400000025732025753A20556E6578706563746564206D6548 +:40DE00007373616765207479706520256421000070617274315F6D61696E000025732025753A20706172746974696F6E73206973204E554C4C210A00696E69745F70617266 +:40DE4000746974696F6E7300736D6F6B655F746573745F706172743100000000736D6F6B655F746573745F70617274315F6D75746578000025732025753A20706172746930 +:40DE800074696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F7220736563757265207061727469746920 +:40DEC0006F6E20736D6F6B655F746573745F7061727431210A00000025732025753A204661696C656420746F20637265617465207374617274206D61696E207468726561A6 +:40DF000064206F6620706172746974696F6E20736D6F6B655F746573745F7061727431210A0000005CDE03100B000000741700081C000000736D6F6B655F746573745F70AA +:40DF4000617274315F696E6974000000BC7500080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0A0A4661756C74547970653A20000000004D656D4D5B +:40DF8000616E6167654661756C7400004275734661756C740000000055736167654661756C740000486172644661756C740000000A0A436F6E746578743A00000A0A2D2D36 +:40DFC000204D6265644F53204661756C742048616E646C6572202D2D0A0A00004661756C7420657863657074696F6E000A52252D34643A202530386C580000000A535020B6 +:40E0000020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A202530386C580A4D53C6 +:40E040005020203A202530386C5800000A43505549443A202530386C580000000A4D6F6465203A2054687265616400000A50726976203A2055736572000000000A507269E1 +:40E0800076203A2050726976696C6567656400000A4D6F6465203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D535000490900105909001033 +:40E0C0007B09001025732025753A2053504D2072656164206C656E677468206D69736D61746368006C0B0010840B00109C0B0010000C00108C0C0010260D0010480E0010D2 +:40E100005E0E0010C60E0010540F0010F40F0010A0160010B8160010D01600102217001072170010361800109A180010BA1C0010BA1C00108C1A0010F01A0010001B001096 +:40E140004C1B0010AC1B0010BA1C0010BA1C0010BA1C0010BA1C0010161A00105A1A0010D2190010A0190010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010CD +:40E18000BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010BA1C0010FF +:40E1C000BA1C0010BA1C0010BA1C00100C1C0010441F0010741F0010C81F00102C2000103C200010042100107073615F6D61635F6F7065726174696F6E0000007073615F84 +:40E20000686173685F6F7065726174696F6E00007073615F6173796D6D65747269635F6F7065726174696F6E000000007073615F616561645F6F7065726174696F6E00009B +:40E240007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E000000007073615F656E7472FA +:40E280006F70795F6F7065726174696F6E0000007073615F63727970746F5F67656E657261746F725F6F7065726174696F6E73007073615F660000007073615F665F6D7576 +:40E2C0007465780025732025753A20706172746974696F6E206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666FF5 +:40E30000722073656375726520706172746974696F6E207073615F66210A000025732025753A204661696C656420746F20637265617465207374617274206D61696E207447 +:40E340006872656164206F6620706172746974696F6E207073615F66210A0000001A0100011A0100021A0100031A0100B8E203100B000000DC5700081C0000007073615F32 +:40E38000665F696E697400004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A3031323320 +:40E3C0003435363738392B2D4D4245445F434F4E465F53544F524147455F44454641554C545F4B56000000002E2F636F6D706F6E656E74732F5441524745545F5053412FFE +:40E4000073657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E545F5053415F5352565F494D504C2F706974735F690A +:40E440006D706C2E637070007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E203E3D205053415F4954535F46494C454E414D45CA +:40E480005F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D455F4D41585F4C454E000000007073615F6974735F93 +:40E4C0007365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696D706C5A +:40E500002829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745F696E666F5F696D706C282920FA +:40E540002D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735F72656D6F76655F696D706C2829202D204661696C1F +:40E5800065642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E6578706563746564206D65737361676520747970652025E6 +:40E5C0006421000025732025753A204B5653746F726520696E6974696174696F6E206661696C656420776974682073746174757320256421000000006D6573736167655FB1 +:40E6000068616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A20706172746974696F6E206973204E554C4C210A000071 +:40E6400025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20697473210A00000000257320253F +:40E68000753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E20697473210A0000000018E6031069 +:40E6C0000B000000945C00081C0000006974735F696E6974000000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F535059 +:40E70000452F68616E646C65735F6D616E616765722E630068616E646C655F6D677220213D202828766F6964202A29302900000068616E646C655F6D656D20213D20282846 +:40E74000766F6964202A293029000000706F6F6C5F697820213D2068616E646C655F6D67722D3E706F6F6C5F73697A650000000068616E646C6520213D2028287073615F36 +:40E7800068616E646C655F742930290025732025753A205B4552524F525D2048616E646C65277320696E646578205B25645D20697320626967676572207468616E206861CB +:40E7C0006E646C657320706F6F6C2073697A65205B25645D21200A0025732025753A205B4552524F525D2048616E646C65202564206973206E6F7420666F756E6420696EFF +:40E8000020657870656374656420696E64657821200A000025732025753A205B4552524F525D205265717565737420666F722064657374726F79206279206E6F6E2D6F77E2 +:40E840006E6572206F7220667269656E64210A0025732025753A205B4552524F525D20547279696E6720746F20676574206D656D6F727920666F7220616E20696E76616C58 +:40E8800069642068616E646C6521200A0000000025732025753A205B4552524F525D205265717565737420666F722068616E646C65206D656D6F7279206973206E6F742084 +:40E8C000616C6C6F77656420666F72207468697320706172746974696F6E21200A00000068616E646C655F6D67722D3E68616E646C65735F706F6F6C5B706F6F6C5F6978E3 +:40E900005D2E68616E646C655F6D656D20213D202828766F6964202A293029007073615F686E646C5F6D67725F68616E646C655F64657374726F79007073615F686E646C6B +:40E940005F6D67725F68616E646C655F6765745F6D656D0025732025753A205349442030782578206973206E6F7420616C6C6F77656420746F2062652063616C6C656420F5 +:40E9800066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74206465636C6172652065787465726E2066756E6374696F6E73D3 +:40E9C0000A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065787465726E2066756E6374696F6E73206C6973748A +:40EA00000A0000002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636C69656E742E6300006F734F4BDE +:40EA4000203D3D206F735F73746174757300000028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D83 +:40EA80003E6D61736B0000006D736720213D202828766F6964202A293029000025732025753A20534944203078257820697320696E76616C6964210A0000000025732025BD +:40EAC000753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F722076657273696F6E2025646A +:40EB000020616E64206D696E6F7220706F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E656374206D65737361676520697320696E61636365E5 +:40EB4000737369626C650A0025732025753A20636F756C64206E6F742063726561746520612073656D6170686F726520666F7220636F6E6E656374206D6573736167650066 +:40EB80006368616E6E656C20213D202828766F6964202A293029000025732025753A2050656E64696E672063616C6C206D65737361676520697320696E6163636573736910 +:40EBC000626C650A0000000025732025753A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A00000025732025753A204332 +:40EC00006F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D6573736167650000007073615F636F6E6E6563745F6173796E6D +:40EC40006300000073706D5F76616C69646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E656374007073615F63616C6C5F6173796E63000019 +:40EC80007073615F63616C6C000000007073615F636C6F73655F6173796E63007073615F636C6F736500000025732025753A204661696C656420696F7665632056616C6953 +:40ECC000646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D282564290A0000002573202552 +:40ED0000753A206368616E6E656C20696E20696E636F72726563742070726F63657373696E672073746174653A202564207768696C652025642069732065787065637465DE +:40ED400064210A002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636F6D6D6F6E2E6300002828766F53 +:40ED80006964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206163746976655F7468726561645F69640076616C6964617465DB +:40EDC0005F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174655F6173736572740000000053504D5F6368616E21 +:40EE00006E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202D204661696C656420746F2063726561746520636813 +:40EE4000616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616374697665206D65737361676573206D656D6F727918 +:40EE800020706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D657373616765206461746120697320696E61636365737369626C650A00000000F1 +:40EEC00025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F7665635B25645D20697320696E61636365737369626CEA +:40EF0000650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F7665635B25645D20697320696E6163636555 +:40EF4000737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D657373616765000000002E2F636F6D706F6E656E747348 +:40EF80002F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F7365727665722E6300006F734F4B203D3D206F735F7374617475730000004F +:40EFC00025732025753A20446571756575652066726F6D20656D7074792071756575650028666C61677320262028307838303030303030302929203D3D203000666C616766 +:40F0000073202620726F745F736572766963652D3E6D61736B0000002828766F6964202A29302920213D20637572725F706172746974696F6E00000025732025753A2069C5 +:40F040006E74657272757074206D61736B2030782578206D7573742068617665206F6E6C7920626974732066726F6D2030782578210A00002861737365727465645F736958 +:40F08000676E616C73203D3D202861737365727465645F7369676E616C73202620666C6167735F616C6C2929207C7C2028282830783830303030303030554C2920213D2009 +:40F0C00074696D656F75742920262620283078464646464646464555203D3D2061737365727465645F7369676E616C732929000025732025753A206D736720697320696E63 +:40F1000061636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6C79203120626974204F4E20616E64206D75737420BB +:40F140006265206120737562736574206F662030782578210A00000025732025753A20666C6167206973206E6F7420616374697665210A0025732025753A205265636569FE +:40F18000766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920726F6F74206F6620747275737420736572766963CB +:40F1C0006500000025732025753A207073615F676574202D20756E6578706563746564206D65737361676520747970653D3078253038580025732025753A20496E76616C22 +:40F20000696420696E7665635F6964780A00000025732025753A2062756666657220697320696E61636365737369626C650A000025732025753A20496E76616C6964206FEB +:40F2400075747665635F6964780A000025732025753A20496E76616C6964207772697465206F7065726174696F6E20285265717565737465642025642C20417669616C61CD +:40F28000626C65202564290A000000006163746976655F6368616E6E656C20213D202828766F6964202A2930290000006163746976655F6368616E6E656C2D3E6D73675F5A +:40F2C00070747220213D202828766F6964202A293029000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F722050535F +:40F30000415F4950435F434F4E4E45435400000025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F4950C2 +:40F34000435F43414C4C000025732025753A207073615F7265706C792829202D20556E6578706563746564206D65737361676520747970653D3078253038580025732025F3 +:40F38000753A20436F756C64206E6F742066696E6420706172746974696F6E2028706172746974696F6E5F6964203D202564290A0000000025732025753A207073615F6322 +:40F3C000616C6C28292063616C6C656420776974686F7574207369676E616C656420646F6F7262656C6C0A006163746976655F6D73672D3E6368616E6E656C20213D2028BA +:40F4000028766F6964202A293029000025732025753A2054727920746F20636C65617220616E20696E7465727275707420666C616720776974686F7574206465636C61729C +:40F44000696E67204952510025732025753A205369676E616C202564206E6F7420696E206972712072616E67650A000025732025753A207369676E616C2030782578206D68 +:40F480007573742068617665206F6E6C79203120626974204F4E210A0000000025732025753A207073615F656F6928292063616C6C656420776974686F7574207369676E4B +:40F4C000616C6564204952510A000000636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F736572766963655F71756575655F646571756575650000004B +:40F500007073615F77616974000000007073615F67657400726561645F6F725F736B6970000000007073615F72656164000000007073615F77726974650000007073615FEE +:40F540007265706C79000000515F4D5554000000515F575F53454D00515F525F53454D002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D506F +:40F580004F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E63000000286F734F4B203D3D206F735F43 +:40F5C00073746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F7374617475732900000025732025753A206D65737361676520646174612077 +:40F60000697320696E61636365737369626C650A0000000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756575655F73656D202128 +:40F640003D204E554C4C000071756575655F726561645F73656D20213D204E554C4C000048F503100B000000B86000081C00000050F5031000000000D4600008100000001A +:40F6800058F5031000000000E4600008100000006F6E5F706F707065645F6974656D00002E2F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D5003 +:40F6C0004F4E454E545F53504D5F4D41494C424F582F6970635F71756575652E63000000717565756520213D204E554C4C000000626173655F71756575655F6D656D202150 +:40F700003D204E554C4C0000626173655F71756575655F6D656D2D3E6D61676963203D3D204950435F51554555455F424153455F4D414749430000006D7574657820213DA3 +:40F74000204E554C4C00000066756C6C5F71756575655F73656D20213D204E554C4C0000726561645F73656D20213D204E554C4C0000000071756575652D3E6D61676963D0 +:40F78000203D3D204950435F51554555455F50524F44554345525F4D41474943000000006F734F4B203D3D206F735F737461747573000000286F734F4B203D3D206F735F92 +:40F7C00073746174757329207C7C20286F734572726F7254696D656F7574203D3D206F735F737461747573290000000071756575652D3E6D61676963203D3D204950435FBB +:40F8000051554555455F434F4E53554D45525F4D4147494300000000000000000000000099510010CD510010ED5100107D530010AB4E0010D153001041540010B15400106B +:40F84000C74E00101D5500102F5500106D550010B3550010035600103D5600100000000000000000000000000000000001D4021001D40210AB4E001001D4021001D40210B2 +:40F88000B74E0010C74E001001D4021001D40210D74E0010F74E00101B4F001001D402100D0000000D0A00002B49504400000000302C434C4F53454400000000312C434C27 +:40F8C0004F53454400000000322C434C4F53454400000000332C434C4F53454400000000342C434C4F534544000000002B43574A41503A005749464920000000554E4C4931 +:40F900004E4B0000414C524541445920434F4E4E45435445440000004552524F52000000776474207265736574000000536F667420574454207265736574000062757379AC +:40F94000200000002B43495052454356444154412C000000415400004F4B0A00415445300000000041542B474D52000053444B2076657273696F6E3A25642E25642E2564C8 +:40F980000000000041542076657273696F6E3A25642E25642E25642E2564000041542B554152545F4355523D25752C382C312C302C30000041542B554152545F4355523D8D +:40F9C00025752C382C312C302C33000041542B554152545F4355523D25752C382C312C302C32000041542B554152545F4355523D25752C382C312C302C31000041542B43C1 +:40FA0000574D4F44455F4355523D25640000000041542B4349504D55583D310041542B5253540000726561647900000041542B4357444843505F4355523D25642C2564002C +:40FA400041542B434950524543564D4F44453D310000000041542B43574A41505F4355523D222573222C22257322000041542B43575141500000000041542B434946535215 +:40FA8000000000002B43494653523A53544149502C222531355B5E225D2200002B43494653523A5354414D41432C222531375B5E225D220041542B4349505354415F435571 +:40FAC000523F00002B4349505354415F4355523A676174657761793A222531355B5E225D220000002B4349505354415F4355523A6E65746D61736B3A222531355B5E225D4C +:40FB00002200000041542B43574A41505F4355523F0000002B43574A41505F4355523A22252A5B5E225D222C222531375B5E225D2200000041542B43574C41503D22222CDF +:40FB4000222573222C0000002B43574C41503A28252A642C22252A5B5E225D222C256868642C000041542B43574C4150000000005544500041542B43495053544152543D97 +:40FB800025642C222573222C222573222C25642C2564000041542B43495053544152543D25642C222573222C222573222C256400455350383236363A3A5F6F70656E5F7576 +:40FBC00064703A20646576696365207265667573656420746F20636C6F736520736F636B6574000054435000455350383236363A3A5F6F70656E5F7463703A2064657669A5 +:40FC00006365207265667573656420746F20636C6F736520736F636B6574000041542B434950444F4D41494E3D222573220000002B434950444F4D41494E3A2573252A5B64 +:40FC40000D5D252A5B0A5D0041542B43495053454E443D25642C256C750000003E00000053454E44204F4B002C25642C0000000025640A0025643A0041542B4349505245BF +:40FC80004356444154413D25642C256C7500000041542B434950434C4F53453D256400002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A88 +:40FCC000256868783A256868783A256868783A256868783A25686878222C256868752C25642C25642C25642C25642C25642C2564290A00002B43574C41503A2825642C22F7 +:40FD00002533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256868752C25642C2564290A000025345B5EF5 +:40FD4000225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3A5F6F6F625F62757379282920756E7265636F676E697A656420627573792073746174656E +:40FD80000A000000455350383236363A3A5F6F6F625F6275737928292041542074696D656F75740A000000002E2F636F6D706F6E656E74732F776966692F65737038323677 +:40FDC000362D6472697665722F455350383236362F455350383236362E637070000000005F736F636B5F6163746976655F6964203E3D2030202626205F736F636B5F61630A +:40FE0000746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953434F4E4E4543540A00EE +:40FE4000434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C696420415420636D640A000000002E +:40FE8000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F75740A00005F636F6E63 +:40FEC0006E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F44455F4445463D256847 +:40FF0000686400002E2F706C6174666F726D2F43616C6C6261636B2E680000005F6F7073000000002E2F706C6174666F726D2F53696E676C65746F6E5074722E6800000040 +:40FF40005F707472203D3D202854202A29265F646174610000000000000000008D5D0010A55D0010C35D001000000000B71DC1046E3B8209D926430DDC7604136B6BC51791 +:40FF8000B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BF5 +:40FFC000C2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F5D +:020000041004E6 +:4000000052FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C38C +:400040002220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B432378 +:40008000C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FF4 +:4000C000B5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BB24 +:40010000258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F78B +:40014000555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97ED1 +:400180005CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D83213 +:4001C0002C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE6DB +:40020000BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAA6A +:40024000CCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4A06 +:400280002BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E0612 +:4002C0005B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD2A2 +:40030000CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9E69 +:40034000BBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B1000000000000000091070010CD070010DB5E0010000000000D +:400380000000000085090010AD090010195F00100000000000000000000000000000000001D40210AE6800107A6800107E68001082680010866800108A6800108E6800105C +:4003C00092680010966800109A6800109E680010A2680010A6680010AA68001000690010DC68001004690010E068001008690010E4680010E8680010EC680010F0680010B8 +:40040000F4680010F8680010FC6800100C6900102A7D00102E7D0010327D0010367D00103A7D00104E7D00104E7D00103E7D0010427D0010467D00104A7D00102EB800103C +:4004400046B8001042B800103AB800103EB8001036B800103EB8001032B800103EB800103EB80010505341004B4559004ABF001062BF00105EBF001056BF00105ABF0010C0 +:4004800052BF00105ABF00104EBF00105ABF00105ABF0010637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F1B4 +:4004C00071D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027F04 +:40050000503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC6292 +:400540009195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949B1E87E912 +:40058000CE5528DF8CA1890DBFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9F0 +:4005C000562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FD1D +:4006000045AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E534B6 +:40064000F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212361B80809BA5 +:40068000DFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D66185 +:4006C0007DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED93E +:400700007239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F910040202062F +:40074000FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA7554 +:400780004221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E82DA +:4007C0007A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D369 +:400800002814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEF18 +:40084000C46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F407B1 +:40088000CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C67 +:4008C0003E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FAE5757F9F9 +:4009000069B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E2215878792A8 +:40094000C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B05A2D2D7731 +:400980001E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE676789 +:4009C0007D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A219 +:400A0000EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E5B2 +:400A400008F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E0707362412129B1B8080A1 +:400A80003DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D681 +:400AC000CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBE3A +:400B00004B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F9060402022B +:400B400081FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA50 +:400B800063422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A782FC7E7ED6 +:400BC000477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B865 +:400C00003C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACAC14 +:400C4000A6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F4AD +:400C800025CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE8747463 +:400CC000213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757F5 +:400D0000D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E92158787A4 +:400D400020C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999775A2D2D2D +:400D8000111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060300103020167A9CE6785 +:400DC0002B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA215 +:400E0000AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E5AE +:400E4000F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0712362412809B1B809D +:400E8000E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D67D +:400EC000B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BE36 +:400F0000394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F90206040227 +:400F40007F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA4C +:400F80002163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A77E82FC7ED2 +:400FC0003D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB861 +:40100000143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43AC10 +:4010400062A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F4A9 +:40108000EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE8745F +:4010C0001F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A3557F9AE57F1 +:40110000B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E87921587A0 +:40114000E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B029992D775A2D29 +:401180000F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE81 +:4011C0002B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5F11 +:40120000AFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D1AA +:40124000F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362480809B1B99 +:40128000E2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B779 +:4012C000B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED96732 +:4013000039394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E90202060423 +:401340007F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF48 +:401380002121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F2557E7E82FCCE +:4013C0003D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B5D +:4014000014143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF430C +:401440006262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F3A5 +:40148000EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE85B +:4014C0001F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEED +:40150000B9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C878792159C +:40154000E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B0292D2D775A25 +:401580000F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950BFE +:4015C00042FAC34E082EA16628D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E4580510 +:40160000B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620E51 +:40164000AA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C42 +:4016800083539961172B047EBA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC76910E +:4016C000F5024C254FE5D7FCC52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB9B +:40170000955259DAD4BE832D587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A31829751336025 +:4017400062537F45B16477E0BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AEC +:40178000D33708A5302887F223BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE132AE +:4017C000A4F6EB750B83EC394060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CCDD +:4018000067D99E77B0E842BD07898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51EFB +:40184000362D39270A0FD964685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E0438B +:40188000121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC68D3 +:4018C000B8E4F163D731DCCA426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FA1B +:4019000047E96422A8FC8CC4A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9B1C +:40194000547E4662F68D13C290D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB701D9 +:40198000834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B01D +:4019C00033A7D815F104984A41ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473FC +:401A0000FB0B412EB3671D5A92DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE794D +:401A400073C737BF53F7CDEA5FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49CF3 +:401A80006456C1907BCB8461D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7683 +:401AC00025F5024CFC4FE5D7D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7A97 +:401B0000DA9552592DD4BE83D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A316097513321 +:401B40004562537FE0B1647784BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BE8 +:401B8000A5D33708F2302887B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE1AA +:401BC00075A4F6EB390B83ECAA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC894043D9 +:401C00007767D99EBDB0E8428807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED5F7 +:401C400027362D39640A0FD921685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E087 +:401C80001D121B170B0E090DADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFCCF +:401CC00063B8E4F1CAD731DC10426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA11944817 +:401D00002247E964C4A8FC8C1AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCC18 +:401D400062547E46C2F68D13E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB7D5 +:401D8000A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D019 +:401DC0001533A7D84AF10498F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA8774F8 +:401E00002EFB0B415AB3671D5292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CE49 +:401E4000BF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4EF +:401E8000906456C1617BCB8470D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC7F +:401EC0004C25F502D7FC4FE5CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D93 +:401F000059DA9552832DD4BE21D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A336097511D +:401F40007F45625377E0B164AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C5E4 +:401F800008A5D33787F23028A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058AA6 +:401FC000EB75A4F6EC390B83EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC8940D5 +:402000009E7767D942BDB0E88B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAEF3 +:402040003927362DD9640A0FA621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C2283 +:40208000171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6EDCB +:4020C000F163B8E4DCCAD7318510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA119413 +:40210000642247E98CC4A8FC3F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5F14 +:402140004662547E13C2F68DB8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9AD1 +:402180009AA8834F6E65E695E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E09015 +:4021C000D81533A7984AF104DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87F4 +:40220000412EFB0B1D5AB367D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181445 +:4022400037BF73C7CDEA53F7AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4EB +:40228000C190645684617BCBB670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC7691887B +:4022C000024C25F5E5D7FC4F2ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF8F +:402300005259DA95BE832DD47421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E55133609719 +:40234000537F45626477E0B16BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A86E0 +:402380003708A5D32887F230BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE13205A2 +:4023C000F6EB75A483EC390B60EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC89D1 +:40240000D99E7767E842BDB0898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3DEF +:402440002D3927360FD9640A5CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C7F +:402480001B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B6C7 +:4024C000E4F163B831DCCAD76385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA110F +:40250000E9642247FC8CC4A8F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6A10 +:402540007E4662548D13C2F6D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701ECCD +:402580004F9AA883956E65E6FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E011 +:4025C000A7D8153304984AF1ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FAF0 +:402600000B412EFB671D5AB3DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE791841 +:40264000C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD8E7 +:4026800056C19064CB84617B32B670D56C5C7448B85742D001000000020000000400000008000000100000002000000040000000800000001B000000360000007F7F7F7FC6 +:4026C0007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F00010215 +:40270000030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F02000000F7 +:40274000713B01109D3B0110D33B0110000000001F3C0110013C01103D3C01106B3C01104145532D3132382D454342004145532D3139322D454342004145532D3235362D97 +:40278000454342004145532D3132382D434243004145532D3139322D434243004145532D3235362D434243004145532D3132382D435452004145532D3139322D435452001B +:4027C0004145532D3235362D435452004145532D3132382D47434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382D43434D004145532D87 +:402800003139322D43434D004145532D3235362D43434D0043484143484132300000000043484143484132302D504F4C59313330350000000201000080000000602704100D +:402840000000000000000000100000003C27041003010000C00000006C2704100000000000000000100000003C270410040100000001000078270410000000000000000026 +:40288000100000003C2704100502000080000000842704101000000000000000100000003C27041006020000C0000000902704101000000000000000100000003C2704108A +:4028C00007020000000100009C2704101000000000000000100000003C2704100B05000080000000A82704101000000000000000100000003C2704100C050000C000000085 +:40290000B42704101000000000000000100000003C2704100D05000000010000C02704101000000000000000100000003C270410020000000000000000000000000000006A +:4029400000000000873C0110873C0110E93A0110133B01100E06000080000000CC2704100C0000000100000010000000302904100F060000C0000000D82704100C00000003 +:402980000100000010000000302904101006000000010000E42704100C0000000100000010000000302904100200000000000000000000000000000000000000A53C0110E5 +:4029C000A53C01102F3B0110553B01102B08000080000000F02704100C0000000100000010000000A82904102C080000C0000000FC2704100C0000000100000010000000A1 +:402A0000A82904102D08000000010000082804100C0000000100000010000000A829041009000000000000000000000000000000FD3C0110C53C0110C53C0110313D01103F +:402A40005B3D01104807000000010000142804100C0000000000000001000000202A04100900000000000000000000000000000000000000793D0110793D0110B13D01100C +:402A8000DB3D0110490A000000010000202804100C0000000000000001000000602A041002000000342804100300000050280410040000006C28041005000000882804101C +:402AC00006000000A428041007000000C02804100B000000DC2804100C000000F82804100D000000142904100E000000542904100F00000070290410100000008C290410F8 +:402B00002B000000CC2904102C000000E82904102D000000042A041048000000442A041049000000842A041000000000000000007365637033383472310000007365637034 +:402B40003235367231000000202045435020746573742023312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A200000006661696CB9 +:402B8000656420282575290A000000007061737365640A00202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F7468657220706F696EC3 +:402BC00074293A2000000000556E6578706563746564206572726F722C2072657475726E20636F6465203D20253038580A0000000A00000030303030303030303030303022 +:402C00003030303030303030303030303030303030303030303030303030303030303030303030310000000046464646464646464646464646464646464646464646464643 +:402C400039394445463833363134364243394231423444323238333000000000354541364633383941333842384243383145373637373533423135414135353639453137C6 +:402C80003832453330414245374432350000000034303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303054 +:402CC000000000003746464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646460000000035353535353535351B +:402D00003535353535353535353535353535353535353535353535353535353535353535353535353535353500000000F42B0410282C04105C2C0410902C0410C42C041040 +:402D4000F82C04100400180080010000302B041003001700000100003C2B0410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000085 +:402D800001000000FFFFFFFF4B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF871 +:402DC00047422CE1F2D1176BF551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFFA9 +:402E000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A83 +:402E40009DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F75926 +:402E8000989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5DF5 +:402EC0006F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3031444234320000D0 +:402F000031344445463944454132463739434436353831323633314135434635443345440000000039384141000000003833333544433136334242313234423635313239CC +:402F4000433936464445393333443844373233413730414144433837334436443534413742423044000000000000000000000000201C000000000000403800000000000037 +:402F800060240000000000008070000000000000A06C000000000000C048000000000000E05400000000000000E100000000000020FD00000000000040D90000000000003E +:402FC00060C50000000000008091000000000000A08D000000000000C0A9000000000000E0B500000000000053484132323400005348413235360000534841333834000008 +:40300000534841353132000005000000E82F04101C00000040000000CBC60110E3C6011001C701101DC701103BC7011061C701107DC7011097C7011006000000F02F04101D +:403040002000000040000000B3C70110E3C6011001C70110CBC701103BC7011061C701107DC7011097C7011007000000F82F04103000000080000000E9C7011001C8011092 +:403080001FC801103BC8011059C801107FC801109BC80110B5C8011008000000003004104000000080000000D1C8011001C801101FC80110E9C8011059C801107FC80110A4 +:4030C0009BC80110B5C801105504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61742D636F756E7472DB +:40310000794E616D65000000436F756E74727900430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C0000005504080069642D6158 +:40314000742D73746174650053746174650000005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A6174696F6E00000000FB +:403180004F00000055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F5500002A864886F70D010945 +:4031C00001000000656D61696C4164647265737300000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D6265720000536572690F +:40320000616C206E756D62657200000073657269616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F7374616C206164647265DE +:4032400073730000706F7374616C416464726573730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F646500706F7374616C436F28 +:40328000646500005504040069642D61742D7375724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D6500476976656E206E6194 +:4032C0006D650000474E000055042B0069642D61742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0069642D61742D6765A3 +:403300006E65726174696F6E5175616C696669657200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175616C696669657200CF +:4033400055040C0069642D61742D7469746C65005469746C650000007469746C6500000055042E0069642D61742D646E5175616C696669657200000044697374696E677568 +:403380006973686564204E616D65207175616C696669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D0050736575646F6E7938 +:4033C0006D00000070736575646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E20636F6D706F6E656E7493 +:40340000000000004443000055042D0069642D61742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000756E6971756549640B +:40344000656E74696669657200000000551D130069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E7473000000551D0F00CD +:4034800069642D63652D6B6579557361676500004B6579205573616765000000551D250069642D63652D6578744B65795573616765000000457874656E646564204B657932 +:4034C0002055736167650000551D110069642D63652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000006086480186F8420111 +:403500000100000069642D6E657473636170652D6365727474797065000000004E6574736361706520436572746966696361746520547970650000002B06010505070301E1 +:403540000000000069642D6B702D7365727665724175746800000000544C5320576562205365727665722041757468656E7469636174696F6E0000002B0601050507030230 +:403580000000000069642D6B702D636C69656E744175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E0000002B060105050703031F +:4035C0000000000069642D6B702D636F64655369676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6B702D656D61696C5051 +:40360000726F74656374696F6E000000452D6D61696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D655374616D70696E67000015 +:4036400054696D65205374616D70696E670000002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F435350205369676E696E6700000000DF +:403680002A864886F70D01010E00000073686132323457697468525341456E6372797074696F6E005253412077697468205348412D323234000000002A864886F70D0101F0 +:4036C0000B00000073686132353657697468525341456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D01010C00000073686133B2 +:40370000383457697468525341456E6372797074696F6E005253412077697468205348412D333834000000002A864886F70D01010D00000073686135313257697468525340 +:4037400041456E6372797074696F6E005253412077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D534841323234000000C5 +:4037800045434453412077697468205348413232340000002A8648CE3D0403020000000065636473612D776974682D534841323536000000454344534120776974682053EF +:4037C00048413235360000002A8648CE3D0403030000000065636473612D776974682D53484133383400000045434453412077697468205348413338340000002A8648CE68 +:403800003D0403040000000065636473612D776974682D53484135313200000045434453412077697468205348413531320000002A864886F70D01010A000000525341531F +:4038400053412D50535300002A864886F70D010101000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D65635075626C69634B6579000065 +:4038800047656E65726963204543206B657900002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D0301070000000073656370EA +:4038C00032353672310000002B810400220000007365637033383472310000002B0E03020700000064657343424300004445532D434243002A864886F70D03070000000023 +:403900006465732D656465332D636263000000004445532D454445332D4342430000000060864801650304020400000069642D7368613232340000005348412D3232340059 +:4039400060864801650304020100000069642D7368613235360000005348412D3235360060864801650304020200000069642D7368613338340000005348412D3338340014 +:4039800060864801650304020300000069642D7368613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000484D41432D5348413D +:4039C0002D323234000000002A864886F70D020900000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020A00000000686D616350 +:403A00005348413338340000484D41432D5348412D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D5348412D353132000000009A +:403A400025642E25640000002E2564004838041009000000543804106438041001000000683804100700000070380410803804100200000090380410050000009838041057 +:403A8000A0380410030000000000000000000000000000000000000000000000B038041008000000BC380410BC38041003000000C838041005000000D0380410D0380410AF +:403AC00004000000000000000000000000000000000000000000000020390410090000002C390410383904100500000040390410090000004C39041058390410060000006F +:403B000060390410090000006C390410783904100700000080390410090000008C3904109839041008000000000000000000000000000000000000000000000050726F631A +:403B40002D547970653A20342C454E4352595054454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F44480000004543445303 +:403B8000410000005253412D616C740001000000643B041099CE01106FCE0110B5CE01102DCF011079CF0110C5CF011015D0011031D001105BD0011079D0011002000000B7 +:403BC000703B0410F5D00110C1D0011003D1011061D101100000000000000000C7D10110E3D1011009D2011025D2011003000000743B0410F5D001104DD201100000000038 +:403C0000000000000000000000000000C7D10110E3D1011009D2011025D20110040000007C3B0410F5D0011077D2011095D20110D9D201100000000000000000C7D1011046 +:403C400015D301103BD3011025D201102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2052534120505249564153 +:403C80005445204B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E2045432050524956415418 +:403CC00045204B45592D2D2D2D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2050524956415445204B45592D2DD4 +:403D00002D2D2D002D2D2D2D2D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2DBA +:403D40002D2D00002D2D2D2D2D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D00000203050748 +:403D80000B0D1113171D1F25292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B504 +:403DC000A5DBB5E95BC25639F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10F28 +:403E0000CCA10C246F2CE92DAA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4D27 +:403E4000130D385354730A65BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C7748276F +:403E8000B5BCB034B30C1C394AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42FA +:403EC000CD65EF23914437712F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D80E +:403F0000BE6F7045015B83128CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE432 +:403F4000E3254F388647BEEFB5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E986E +:403F80001032B42D6DC631A83F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB727DE +:403FC00026C9265C38211B2EED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA27A +:40400000013042BC4B661AA89197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41954 +:4040400053AB4151086C371E99EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F7489 +:40408000602F17436F63A57872ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA69 +:4040C00007C2C021C7B886D11EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB282C +:404100009324C7407BABCA32BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C2E2F66656174757258 +:4041400065732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766963652E63707000005F77726974655F636163686500000000BE +:404180005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F657261736528616464722C2073697A65290000000000000000000052 +:4041C0009D720210C5720210E3720210C7730210F9740210657502109D780210517B0210157C0210D57C0210E77C0210F97C0210337D0210797D0210B17D02106B76000045 +:404200002E2F706C6174666F726D2F53696E676C65746F6E5074722E680000005F707472203D3D202854202A29265F64617461000000000000000000000000000000000091 +:4042400001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D4021001D40210202A2F3F3A3B227C3C3E5C00E2 +:404280006B7673746F726500202A2F3F3A3B227C3C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C61736820617474726962DA +:4042C000757465730000000054444253544F52453A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52453A20556E61626C65A6 +:40430000207265736574206172656120617420696E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265636F7264206174206989 +:404340006E69740054444253544F52453A20556E61626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556E61626C6520746F20D7 +:404380006275696C642052414D207461626C6520617420696E69740054444253544F52453A20556E61626C6520746F20636865636B2077686574686572206572617365205C +:4043C000756E69742069732065726173656420617420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D20474320617420696E69740000FB +:4044000054444253544F52453A20556E61626C6520746F2073796E6320424420617420696E697400000000002E2F647269766572732F4D6265644352432E6800637263204C +:40444000213D204E554C4C004000000000000000000000003D8B0210798B02101DA00210C1A4021095A5021011980210BD9802107D990210959802105D920210419502104F +:404480002196021045A6021045A7021081A8021055A9021001AC02102E2F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692E630000002161726554 +:4044C0005F696E74657272757074735F656E61626C656428290000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F646535 +:40450000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F4379707265737329 +:404540002F5441524745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E430000636F756C64206E6F742070696E6F757400000000CE +:4045800070696E6D6170206D69732D6D617463680000000070696E6D6170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D6170206E6F74206672 +:4045C0006F756E6420666F722066756E6374696F6E00000044656570536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D41582900000000446565705C +:40460000536C6565704C6F636B20756E646572666C6F7720283C2030290000002E2F68616C2F6D6265645F7469636B65725F6170692E6300300000006D617463685F746928 +:40464000636B20213D2071756575652D3E7469636B5F6C6173745F7265616400F16D0310ED6E0310716F03107D6F0310156F0310956F0310B16E0310A96F03105C460410F3 +:40468000B86A00080000000000000000000000000000000001D4021001D4021001D4021001D4021095C10210A1C102105361001071610010ADC10210CD5D0010EF5D00109C +:4046C0000B5E0010275E00104B5E0010575E00106B5E00102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64657669636561 +:404700002F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F544152B8 +:404740004745545F50534F43362F6770696F5F6F626A6563742E68006F626A2D3E70696E20213D204E4300002E2E2E0A000000002E2F706C6174666F726D2F6D6265645FAD +:40478000637269746963616C2E630000637269746963616C5F73656374696F6E5F7265656E7472616E63795F636F756E746572203C2055494E5433325F4D4158000000001F +:4047C000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D65643E0000000A0A2B2B204D6265644F53204572726F7220496E666F202B2B0A457243 +:40480000726F72205374617475733A203078255820436F64653A202564204D6F64756C653A2025640A4572726F72204D6573736167653A20000000004B65726E656C204502 +:4048400072726F723A203078256C582C200000005468726561643A203078256C582C20004D757465783A203078256C582C20000053656D6170686F72653A203078256C58D4 +:404880002C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C6167733A203078256C582C200054696D65723A203078256C582C2000004D6573736C +:4048C00061676551756575653A203078256C582C20000000417373657274696F6E206661696C65643A2000000A4C6F636174696F6E3A203078256C58000000000A46696C65 +:40490000653A20002B2564000A4572726F722056616C75653A203078256C58000A43757272656E74205468726561643A202573202049643A203078256C5820456E74727987 +:404940003A203078256C5820537461636B53697A653A203078256C5820537461636B4D656D3A203078256C582053503A203078256C5820000A466F72206D6F726520696EC7 +:40498000666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875622E696F2F6D6265646F732D6572726F722F3F6572726F723D3078253038580091 +:4049C0000A2D2D204D6265644F53204572726F7220496E666F202D2D0A00000042C9021052C9021062C9021072C9021082C90210A2C9021092C90210B2C90210CCC9021070 +:404A0000CCC90210CCC90210CCC90210CCC90210CCC90210CCC90210CCC90210CCC90210CCC90210CCC90210C2C9021052616D2065786563757465206E65766572206C6FE5 +:404A4000636B206F766572666C6F7720283E2055534852545F4D41582900000052616D2065786563757465206E65766572206C6F636B20756E646572666C6F7720283C2054 +:404A800030290000526F6D207772697465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900526F6D207772697465206E657665722004 +:404AC0006C6F636B20756E646572666C6F7720283C203029000000004572726F72202D2077726974696E6720746F20612066696C6520696E20616E20495352206F722063E3 +:404B00007269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D2072656164696E672066726F6D20612066696C6520696E20616E20495352206F72F9 +:404B400020637269746963616C2073656374696F6E0D0A00457863657074696F6E0000002E2F706C6174666F726D2F6D6265645F72657461726765742E6370700000000038 +:404B800030203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F494E5F50524F475245A3 +:404BC0005353203D3D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574206F66206D656D6F61 +:404C000072790D0A000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00002E2F706C6174666F726D2F53696E676C65746F6E5074722EBF +:404C4000680000005F707472203D3D202854202A29265F6461746100000000000000000075D6021095D6021011CD0210CDCC021029CC021055CC021095C1021049CC021011 +:404C800053610010716100103BCC0210CD5D0010EF5D00100B5E0010275E00104B5E001045CD02106B5E001044657072656361746564206265686176696F723A206D696CDE +:404CC0006C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E746572727570742E0A0000776169745F757320626C6F636B73206416 +:404D000065657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E672064656C6179730A0061706C69636174696F6E5F756E6E616D98 +:404D400065645F6D75746578000000002E2F72746F732F4D757465782E637070000000005F6964004D75746578206C6F636B206661696C65640000004D7574657820756E5D +:404D80006C6F636B206661696C6564006D616C6C6F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D75746578006D61696E00000000D6 +:404DC000507265206D61696E20746872656164206E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349532D52544F5320654F +:404E000072726F723A20537461636B206F766572666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572666C6F77000000008A +:404E4000434D5349532D52544F53206572726F723A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F7700000000434D5349532D5254A2 +:404E80004F53206572726F723A2053544420432F432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D5349532D52544F53206573 +:404EC00072726F723A2053544420432F432B2B206C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D5349532D52544F5320650F +:404F000072726F723A20556E6B6E6F776E000000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636F6D706C657465642022 +:404F400077697468696E207468652074696D656F757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616D6574657220657261 +:404F8000726F720053797374656D206973206F7574206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E746578740000556E6B6E6F776E00A4 +:404FC0003ADB0210EADA0210FADA02100ADB02101ADB02102ADB0210AADB0210A6DB0210A2DB02109EDB02109ADB021096DB02105254582056352E342E3000007274785F45 +:4050000069646C65000000007274785F74696D657200000003000000E803000005000000746C00081000000000000000000000000000000000000000000000000000000009 +:405040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000B4500410D8500410FC500410040000000000000068 +:4050800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC4F041000000000B46C000869 +:4050C00044000000406D0008000200000100000001000000000000000850041000000000F86C000844000000406F00080003000028000000010000000000000000000000B4 +:40510000000000004072000834000000747200085000000000000000F406031090060310F4060310A4060310F4060310B8060310CC060310E00603102E2F72746F732F545F +:405140006869735468726561642E6370700000002128666C6167732026206F73466C6167734572726F72290028666C616773203D3D206F73466C6167734572726F725469DF +:405180006D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028666C616773203D3D206F73466C6167734572726F72526573A6 +:4051C0006F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B00000200000000006140120000000001000000006840120700004F +:405200000005000000006640120500000006000000006440120300000406000000006740120600000007000000006540120400000008000000006540120400000009000096 +:405240000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D00000000674012060000FFFF0000FFFFFFFF5F +:4052800000000000030000000000614012001500010100000000684012071500010500000000664012051500010600000000644012031500050600000000674012061500BF +:4052C000010700000000654012041500010800000000654012041500010900000000634012021500010A00000000624012011500010B00000000664012051500010C000067 +:405300000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000741D03107A1D0310801D0310861D03108E1D031003000000010000000100000046 +:40534000000000000503600004000000010000000000000001000000060460000800000098740008F5210310080000000100000002000000020000000808000309000000E7 +:40538000010000000000000003000000090900030800000078740008812103100A0000000100000004000000040000000A0A000C0B000000010000000000000005000000DF +:4053C0000B0B000C1000000038740008952103102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F6472699C +:40540000766572732F7065726970686572616C2F737973636C6B2F63795F737973636C6B2E68000000127A0000E1F505000000000000000000000100000010000000005028 +:405440002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F80 +:405480006970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F5441524745547E +:4054C0005F4655545552455F53455155414E415F4D305F5053412F73706D5F696E69745F6170692E630000002E2F746172676574732F5441524745545F4379707265737395 +:405500002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F7461FF +:4055400072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F02 +:405580002F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572731A +:4055C0002F7065726970686572616C2F6770696F2F63795F6770696F2E6300002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43A9 +:40560000362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745546D +:405640005F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E63AD +:40568000000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657269706865AC +:4056C00072616C2F6970632F63795F6970635F6472762E68000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465CC +:40570000766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F706970652E630000002E2F746172676574732F5441524745545F437970B2 +:40574000726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E680000000032 +:405780002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F3D +:4057C0007363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963655D +:405800002F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E680000002E2F746172676574732F5441524745545F4379707265737390 +:405840002F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E630000002E2F746159 +:4058800072676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F73797361AE +:4058C0006E616C6F672F63795F737973616E616C6F672E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F64657E +:40590000766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E742E6300008049031096490310AC490310C2490310D849031091 +:40594000EE490310044A03101A4A03102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F64726976657273E3 +:405980002F7065726970686572616C2F737973706D2F63795F737973706D2E63000000002E2F746172676574732F5441524745545F437970726573732F5441524745545F00 +:4059C00050534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745543A +:405A00005F437970726573732F5441524745545F50534F43362F6770696F5F6170692E63000000006F626A006F626A2D3E706F72740000006F626A2D3E70696E20213D2025 +:405A40004E43000043595F50494E286F626A2D3E70696E29203C2038000000004750494F2070696E207265736572766174696F6E20636F6E666C6963742E00002E57031021 +:405A800052570310585703105E570310645703104C5703106A5703102E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465FB +:405AC000766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E680000465B03106A5B0310705B0310765B03107C5B0310645B0310DF +:405B0000825B0310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720746F206672656520778E +:405B4000726F6E6720706F72742F70696E2E00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F70736F63365F7574696C5A +:405B8000732E63006469765F74797065203C2043595F4E554D5F444956494445525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3E6D61785F696E646587 +:405BC00078000000547279696E6720746F2072656C656173652077726F6E6720636C6F636B20646976696465722E0000705F616C6C6F632D3E63757272656E745F696E641C +:405C00006578203C20705F616C6C6F632D3E6D61785F696E64657800547279696E6720746F2072656C656173652077726F6E67205343422E00000000547279696E67207404 +:405C40006F2072656C656173652077726F6E6720544350574D2E00006368616E6E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E454C53004E5649437A +:405C8000206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00000000FC063F0BFD000000000000000000000000FEFF00007F +:405CC00001000000FEFF00002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065720E +:405D00006970686572616C2F6770696F2F63795F6770696F2E6800002E2F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465A4 +:405D4000766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68002E2F746172676574732F5441524745545F43797094 +:405D8000726573732F5441524745545F50534F43362F73657269616C5F6170692E63000073657269616C5F6964203C204E554D5F53455249414C5F504F525453000000005F +:405DC0006F626A0053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F52582070696E207265734F +:405E00006572766174696F6E20636F6E666C6963742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E000000005365726975 +:405E4000616C204354532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617463682E2052657175F2 +:405E800065737465642070696E7320527820616E642054782063616E2774206265207573656420666F72207468652073616D652053657269616C20636F6D6D756E6963613B +:405EC00074696F6E2E00000040420F002000000000005A0003000000FFFFFFFF000000000000000000000000000000000000000000000000000000000200000000000000AE +:405F0000000000000000000000000000000000000000000000000000000000000300000001000000504D2063616C6C6261636B20726567697374726174696F6E20666169E8 +:405F40006C656421000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E000000F8 +:405F80007806000843000000504F5349580000002E00000080910310F4910310F491031064910310F4910310F4910310F4910310F4910310F4910310F49103106C9103105B +:405FC0004E8C0310F4910310088C0310588C0310F4910310A48C03108E8E03108E8E03108E8E03108E8E03108E8E03108E8E03108E8E03108E8E03108E8E0310F491031064 +:40600000F4910310F4910310F4910310F4910310F4910310F4910310F4910310F4910310F4910310AC8C0310F48D0310F4910310F48D0310F4910310F4910310F491031035 +:40604000F4910310BE8E0310F4910310F4910310C68E0310F4910310F4910310F4910310F4910310F4910310688F0310F4910310F49103109A8F0310F4910310F4910310F4 +:40608000F4910310F4910310F4910310F4910310F4910310F4910310F4910310F491031094900310C8900310F48D0310F48D0310F48D0310DA900310C8900310F491031042 +:4060C000F4910310E2900310F4910310FC8F0310C29103103891031032900310F49103103A900310F491031090910310F4910310F4910310F2900310494E4600696E660016 +:406100004E414E006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C290000300000002020202085 +:4061400020202020202020202020202030303030303030303030303030303030002020202020202020202828282828202020202020202020202020202020202020881010CF +:4061800010101010101010101010101010040404040404040404041010101010101041414141414101010101010101010101010101010101010101011010101010104242F9 +:4061C000424242420202020202020202020202020202020202020202101010102000000000000000000000000000000000000000000000000000000000000000000000000F +:40620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E +:406240000000000000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E000080E03779C34143176E05B5B5B89346FB +:40628000F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C34075 +:4062C00000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D420F +:40630000000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF15445C +:4063400050EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D000000F0C80310D2C803108CC80310AAC703108CC803105B +:40638000C4C803108CC80310AAC70310D2C80310D2C80310C4C80310AAC70310A2C70310A2C70310A2C7031008CB031050D1031010D0031010D003100CD0031028D1031067 +:4063C00028D103101AD103100CD0031028D103101AD1031028D103100CD0031030D1031030D1031030D1031034D30310000000000000001000000008C000000018640410E1 +:40640000C0000008101400001015000810720000109DFB7F010000000000000004000000000000001000000000000000000000000100000000000000000000000000000084 +:40644000000000002300000000000000F07F000000000000000000000B0000005CE303100400000000000000000000000A00000000000000F000000000000000000000002F +:40648000040000000000000000000000000000000000000048DE03100000000030170008440000003015000800020000180000000000000000000000001A0000100000007B +:4064C000000000000500000000000000010000000000000000000000B0E203100000000098570008440000009817000800400000180000000000000000000000000F000098 +:4065000010000000000000000100000001000000010000000000000000000000010F000020000000000000000100000001000000010000000000000000000000020F000004 +:4065400040000000000000000100000001000000010000000000000000000000030F000080000000000000000100000001000000010000000000000000000000040F000030 +:4065800000010000000000000100000001000000010000000000000000000000050F000000020000000000000100000001000000010000000000000000000000060F0000A9 +:4065C00000040000000000000100000001000000010000000000000000000000070F000000080000000000000100000001000000010000000000000000000000080F00005C +:4066000000100000000000000100000001000000010000000000000000000000090F0000002000000000000001000000010000000100000000000000000000000A0F0000F3 +:406640000040000000000000010000000100000001000000000000000000000014E6031000000000505C000844000000505800080004000018000000000000000000000006 +:40668000001A010010000000000000000100000000000000010000000000000000000000011A0100200000000000000001000000000000000100000000000000000000006F +:4066C000021A010040000000000000000100000000000000010000000000000000000000031A0100800000000000000001000000000000000100000000000000000000009B +:40670000F8ED031000000000405E000824000000505D0008F00000000CEE0310000000009460000824000000045F0008900100000000000000000000000000000A000000BF +:40674000B05C0008000000000A000000645E00080000000000000000F46000080C610008010000005D7E0310944204109FBF0210FFFFFFFFFFFFFFFFFFFFFFFF0000000023 +:4067800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9 +:4067C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099 +:406800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058 +:4068400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020870008E1DC0210F04F0410C08CFB02FE +:4068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8 +:4068C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098 +:406900000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A0080F0FA0250C30000320000000000A86102FF00005D +:40694000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF00000300000000000000FFFF00000000000000000000FFFF000004 +:4069800001000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000384000000000AD6D0310010000000700000028 +:4069C000500600080000000000000000780600080000000064090008CC090008340A000800000000000000000000000000000000000000000000000000000000000000001B +:406A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 +:406A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000015 +:406A80000E33CDAB34126DE6ECDE05000B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA +:406AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 +:406B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055 +:406B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015 +:406B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5 +:406BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095 +:406C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054 +:406C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014 +:406C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4 +:406CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094 +:406D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053 +:406D40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013 +:406D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3 +:406DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000430000000000000050 +:406E000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000004300000000000000CC +:406E4000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000008C +:406E8000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043000000000000004C +:406EC000000000000000000000000000000000000000000000000000C1A10310417C0310000000005C610410905F04101861041018610410186104101861041018610410B8 +:406F000018610410186104101861041018610410FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000100415343494900000000000000000000000000000000000000000000000000C1 +:406F400000004153434949000000000000000000000000000000000000000000000000000000000000000000000000000C0C00080C0C0008140C0008140C00081C0C0008E8 +:406F80001C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C0008440C00084C0C00084C0C0008540C0008540C00085C0C0008D1 +:406FC0005C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C0008940C00089C0C000891 +:407000009C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C000850 +:40704000DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D000809 +:407080001C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D0008C0 +:4070C0005C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D000880 +:407100009C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D00083F +:40714000DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E0008F8 +:407180001C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E0008AF +:4071C0005C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E00086F +:407200009C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E00082E +:40724000DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F0008E7 +:407280001C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F00089E +:4072C0005C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008940F00089C0F00085E +:407300009C0F0008A40F0008A40F0008AC0F0008AC0F0008B40F0008B40F0008BC0F0008BC0F0008C40F0008C40F0008CC0F0008CC0F0008D40F0008D40F0008DC0F00081D +:40734000DC0F0008E40F0008E40F0008EC0F0008EC0F0008F40F0008F40F0008FC0F0008FC0F00080410000804100008FFFFFFFF00000200E9000010F9710210C100001066 +:407380000000000000B585B00190019B0393039B5B78FF2B37D100F017FA03000293042000F0F2F90300180000F0F6F903001A00164B1A60164B00221A60154B1B685B01B7 +:4073C0005B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A12680A431A60C046094B1B681A68074B1B681340F8D1029B9C +:40740000180000F0D9F9C04605B000BDD0740008D4740008D8740008DC74000800B589B001900091444B0793002000F0ADF9030005930023069300F0CFF9020013236B44CD +:40744000033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F092F90300180000F0D6F903001A0001235340DBB2002B23D0002000F0C4F9DA +:4074800002002E4B9A421CD02D4A00230021012000F072F9031E14D102E0069B01330693002000F0B1F90200244B9A4203D0069B244A9342F1D9069B224A934201D8002396 +:4074C0000793079B002B33D100F07EF903000393002000F059F91C4B1A00012100F08CF9031E13D1019B002B06D1009B180000F02FF8164B07930BE0C046059B1B69002BFF +:40750000FBDB00F051F90300079301E00A4B079313236B441B78002B06D0C0460121002000F062F9031EF9D1039B180000F044F9079B180009B000BD0500520001018800E3 +:40754000E4050008EF490200C07400080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E221A60104B104A1A60104AA323DB000621D1500E49039B1B02CC +:407580001B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04604012640080126401E1F0000000026401C05000010B582B0C9 +:4075C00002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0394B394AD2681204110C384A1269120A1004FF2212041040A5 +:40760000344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A9023D3582B4A134090221201134390228B50264B1B69254A902319 +:40764000D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BFC046194B1B68002BFBDA174BDB68012213401DD0154B154A46 +:40768000126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB681B0E1902FF231B020B40134390228350054B054AD268022121 +:4076C0008A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B4607331A701A4B194A126904210A431A616B4607331B78012B01D013 +:4077000030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A60104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A47 +:4077400086235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F000018052640040126401C052640AAAAAAAA01B40248844601BC33 +:40778000604700BFA536031001B40248844601BC604700BFA12B031001B40248844601BC604700BFD52B031001B40248844601BC604700BF352F031001B40248844601BCC2 +:4077C000604700BFDB4A031001B40248844601BC604700BFD34A031001B40248844601BC604700BF7D20031001B40248844601BC604700BFE53A031001B40248844601BC8F +:40780000604700BFF52B031001B40248844601BC604700BFCD3B031001B40248844601BC604700BFE32B03100000000000000000000000000000000000000000000000009B +:407840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008 +:4078800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8 +:4078C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088 +:0200000490303A +:020000000138C5 +:0200000490501A +:0C0000000005E207210021010000223869 +:00000001FF diff --git a/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.cpp b/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.cpp index ceef2f6a397..08117b7482a 100644 --- a/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.cpp +++ b/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.cpp @@ -477,6 +477,7 @@ void mac_data_confirm_handler(const mac_api_t *api, const mcps_data_conf_t *data if (data->status == expected_statuses.data_conf) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, status: %hhu (%s)\n", data->status, mlme_status_string(data->status)); cmd_ready(CMDLINE_RETCODE_FAIL); } } @@ -501,12 +502,14 @@ void mac_data_indication_handler(const mac_api_t *api, const mcps_data_ind_t *da } if (data->msdu_ptr && expected_statuses.data_ind) { if (data->msduLength != expected_statuses.data_ind_len) { + cmd_printf("Bad recv length %d != %d!\n", data->msduLength, expected_statuses.data_ind_len); return; } if (strncmp((const char *)data->msdu_ptr, (const char *)expected_statuses.data_ind, expected_statuses.data_ind_len) == 0) { ++data_count; + cmd_printf("Data count %d\n", data_count); } else { - tr_warn("Received unexpected data!"); + cmd_printf("Received unexpected data!\n"); } } } @@ -521,6 +524,7 @@ void mac_purge_confirm_handler(const mac_api_t *api, mcps_purge_conf_t *data) if (data->status == expected_statuses.purge_conf) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, status: %hhu (%s)\n", data->status, mlme_status_string(data->status)); cmd_ready(CMDLINE_RETCODE_FAIL); } } @@ -547,6 +551,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi if (get_data->status == expected_statuses.get_conf) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, status: %hhu (%s)\n", get_data->status, mlme_status_string(get_data->status)); cmd_ready(CMDLINE_RETCODE_FAIL); } break; @@ -585,6 +590,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi if (scan_data->status == expected_statuses.scan_conf || scan_data->status == MLME_LIMIT_REACHED) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, status: %hhu (%s)\n", scan_data->status, mlme_status_string(scan_data->status)); cmd_ready(CMDLINE_RETCODE_FAIL); } break; @@ -599,24 +605,28 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi mlme_poll_conf_t *poll_data = (mlme_poll_conf_t *)data; cmd_printf("MLME-POLL.confirm\n"); if (!silent_mode) { - cmd_printf("status: %hhu (%s)\n", poll_data->status, mlme_status_string(poll_data->status)); - cmd_printf("data_count %u\n", data_count); + cmd_printf("status: %hhu (%s)\n", poll_data->status, mlme_status_string(poll_data->status)); + cmd_printf("expected status: %hhu (%s)\n", expected_statuses.poll_conf, mlme_status_string(expected_statuses.poll_conf)); + cmd_printf("data_count %u\n", data_count); } if (expected_statuses.poll_conf == MLME_SUCCESS) { if (data_count == 1 && poll_data->status == MLME_SUCCESS) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, data_count = %u, status:%hhu\n", data_count, poll_data->status); cmd_ready(CMDLINE_RETCODE_FAIL); } } else if (expected_statuses.poll_conf == poll_data->status) { cmd_ready(CMDLINE_RETCODE_SUCCESS); } else { + cmd_printf("CMD failed, data_count = %u, status:%hhu, expected ret:%hhu\n", data_count, poll_data->status, expected_statuses.poll_conf); cmd_ready(CMDLINE_RETCODE_FAIL); } break; } default: { cmd_ready(CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED); + cmd_printf("CMD failed, not implemented\n"); break; } } diff --git a/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.h b/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.h index a57e97fc313..a15d97faf67 100644 --- a/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.h +++ b/TEST_APPS/device/nanostack_mac_tester/source/mac_commands.h @@ -28,7 +28,7 @@ #include "mac_mcps.h" #include "mac_common_defines.h" #include "mac_filter_api.h" -#include "util.h" +#include "mac_tester_util.h" #define LOOKUP_DESCRIPTOR_TABLE_SIZE 2 #define DEVICE_DESCRIPTOR_TABLE_SIZE 2 diff --git a/TEST_APPS/device/nanostack_mac_tester/source/util.cpp b/TEST_APPS/device/nanostack_mac_tester/source/mac_tester_util.cpp similarity index 99% rename from TEST_APPS/device/nanostack_mac_tester/source/util.cpp rename to TEST_APPS/device/nanostack_mac_tester/source/mac_tester_util.cpp index 7a914a7edbb..15fec17bef9 100644 --- a/TEST_APPS/device/nanostack_mac_tester/source/util.cpp +++ b/TEST_APPS/device/nanostack_mac_tester/source/mac_tester_util.cpp @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "util.h" +#include "mac_tester_util.h" int string_to_bytes(const char *str, uint8_t *buf, int bytes) { diff --git a/TEST_APPS/device/nanostack_mac_tester/source/util.h b/TEST_APPS/device/nanostack_mac_tester/source/mac_tester_util.h similarity index 100% rename from TEST_APPS/device/nanostack_mac_tester/source/util.h rename to TEST_APPS/device/nanostack_mac_tester/source/mac_tester_util.h diff --git a/TEST_APPS/testcases/nanostack_mac_tester/ED_scan.py b/TEST_APPS/testcases/nanostack_mac_tester/ED_scan.py index 28cada4f697..11d034edfd1 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/ED_scan.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/ED_scan.py @@ -18,12 +18,13 @@ import threading import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "ED_scan", title = "ED scan test", - status = "development", + status = "released", type = "smoke", subtype = "", execution = { @@ -41,7 +42,7 @@ def __init__(self): '*': { "count":3, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -54,9 +55,6 @@ def __init__(self): def setUp(self): self.channel = 11 - self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") - self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02") - self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03") def spam_channel(self, event): while not event.wait(0.1): @@ -71,8 +69,16 @@ def mask_from_channel_list(self, channels): res = res | ( 1 << ch) return hex(res) - def case(self): + def do_test_iteration(self): self.lock_th = threading.Lock() + self.command("First", "mlme-reset") + self.command("Second", "mlme-reset") + self.command("Third", "mlme-reset") + + self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") + self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02") + self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03") + self.payload = "01234567890123456789012345678901234567890123456789" # Start PAN coordinator @@ -105,6 +111,24 @@ def case(self): # Energy detection analysis self.command("Second", "analyze-ed --channel {} --above 100".format(self.channel)) + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + if (loop < 5): + self.stop_event.set() + self.th.join() + self.delay(5) + + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): self.command("First", "silent-mode off") self.command("Third", "silent-mode off") @@ -112,3 +136,4 @@ def tearDown(self): self.th.join() del self.th self.reset_dut() + diff --git a/TEST_APPS/testcases/nanostack_mac_tester/address_read_and_write.py b/TEST_APPS/testcases/nanostack_mac_tester/address_read_and_write.py index 217d876c576..d65100d2282 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/address_read_and_write.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/address_read_and_write.py @@ -17,12 +17,13 @@ import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "address_read_and_write", title = "MAC address and PAN id read/write test", - status = "development", + status = "released", type = "smoke", subtype = "", execution = { @@ -40,7 +41,7 @@ def __init__(self): '*': { "count":1, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -52,7 +53,8 @@ def __init__(self): def setUp(self): pass - def case(self): + def do_test_iteration(self): + self.command("First", "mlme-reset") self.command("First", "addr") self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") self.command("First", "addr --16-bit 0xABCD") @@ -61,5 +63,20 @@ def case(self): self.command("First", "addr") self.verify_trace(1, "MAC64: 01:02:03:00:00:00:00:01") + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + self.delay(5) + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): self.reset_dut() + diff --git a/TEST_APPS/testcases/nanostack_mac_tester/create_and_join_PAN.py b/TEST_APPS/testcases/nanostack_mac_tester/create_and_join_PAN.py index 9f861cd9bea..91a7f8b50d5 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/create_and_join_PAN.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/create_and_join_PAN.py @@ -17,12 +17,13 @@ import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "create_and_join_PAN", title = "Create a PAN and have a device join it", - status = "development", + status = "released", type = "smoke", subtype = "", execution = { @@ -40,7 +41,7 @@ def __init__(self): '*': { "count":3, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -60,12 +61,16 @@ def mask_from_channel_list(self, channels): def setUp(self): self.channel = 11 - def case(self): + def do_test_iteration(self): + self.command("First", "mlme-reset") + self.command("Second", "mlme-reset") + self.command("Third", "mlme-reset") + # Beacon payload self.command("First", "mlme-set --attr 0x45 --value_ascii mac-tester --value_size 10") # Beacon payload length self.command("First", "mlme-set --attr 0x46 --value_uint8 10 --value_size 1") - + self.command("Second", "mlme-set --attr 0x45 --value_ascii second-mac-tester --value_size 17") self.command("Second", "mlme-set --attr 0x46 --value_uint8 17 --value_size 1") @@ -84,5 +89,19 @@ def case(self): self.command("Third", "find-beacon --data mac-tester") self.command("Third", "find-beacon --data second-mac-tester") + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + self.delay(5) + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): self.reset_dut() diff --git a/TEST_APPS/testcases/nanostack_mac_tester/send_data.py b/TEST_APPS/testcases/nanostack_mac_tester/send_data.py index 559f49c7ef8..40db26069dc 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/send_data.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/send_data.py @@ -17,12 +17,13 @@ import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "send_data", title = "Simple data transmission test", - status = "development", + status = "released", type = "smoke", subtype = "", execution = { @@ -40,7 +41,7 @@ def __init__(self): '*': { "count":2, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -52,10 +53,14 @@ def __init__(self): def setUp(self): self.channel = 11 + + def do_test_iteration(self): + self.command("First", "mlme-reset") + self.command("Second", "mlme-reset") + self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02") - def case(self): # Start PAN coordinator self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel)) # Start PAN beacon @@ -65,5 +70,20 @@ def case(self): self.command("First", "data --dst_addr 01:02:03:00:00:00:00:02 --msdu_length 5 --msdu abcde") self.command("Second", "data --dst_addr 01:02:03:00:00:00:00:01 --msdu_length 5 --msdu 12345") + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + self.delay(5) + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): self.reset_dut() + diff --git a/TEST_APPS/testcases/nanostack_mac_tester/send_data_indirect.py b/TEST_APPS/testcases/nanostack_mac_tester/send_data_indirect.py index 9836db91eea..709321da6d2 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/send_data_indirect.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/send_data_indirect.py @@ -17,12 +17,13 @@ import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "send_data_indirect", title = "Indirect data transmission test", - status = "development", + status = "released", type = "smoke", subtype = "", execution = { @@ -40,7 +41,7 @@ def __init__(self): '*': { "count":3, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -53,11 +54,17 @@ def __init__(self): def setUp(self): self.channel = 11 + + def do_test_iteration(self): + self.channel = 11 + self.command("First", "mlme-reset") + self.command("Second", "mlme-reset") + self.command("Third", "mlme-reset") + self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02") self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03") - def case(self): # Start PAN coordinator self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel)) # Start PAN beacon @@ -107,5 +114,21 @@ def case(self): self.command("Third", "poll --coord_address 01:02:03:00:00:00:00:01") self.command("*", "silent-mode off") + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + self.delay(5) + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): + self.command("*", "silent-mode off") self.reset_dut() + diff --git a/TEST_APPS/testcases/nanostack_mac_tester/send_large_payloads.py b/TEST_APPS/testcases/nanostack_mac_tester/send_large_payloads.py index 19beaaef01e..f0fb4b87bf6 100644 --- a/TEST_APPS/testcases/nanostack_mac_tester/send_large_payloads.py +++ b/TEST_APPS/testcases/nanostack_mac_tester/send_large_payloads.py @@ -17,12 +17,13 @@ import os,sys from icetea_lib.bench import Bench +from icetea_lib.TestStepError import TestStepFail class Testcase(Bench): def __init__(self): Bench.__init__(self, name = "send_large_payloads", title = "Data transmission test with large packets", - status = "development", + status = "released", type = "reliability", subtype = "", execution = { @@ -40,7 +41,7 @@ def __init__(self): '*': { "count":2, "type": "hardware", - "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2"], + "allowed_platforms": ["K64F", "K66F", "NUCLEO_F429ZI", "KW24D", "UBLOX_EVK_ODIN_W2", "KW41Z"], "application": { "name": "TEST_APPS-device-nanostack_mac_tester" } @@ -52,10 +53,14 @@ def __init__(self): def setUp(self): self.channel = 11 + + def do_test_iteration(self): + self.command("First", "mlme-reset") + self.command("Second", "mlme-reset") + self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01") self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02") - def case(self): #104 characters, headers are 2+1+2+8+8+2=23 bytes, resulting in a packet size of 127 (max) large_payload = "0123456789abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZZZZZZZZZ0123456789012345678901234567891234" # Start PAN coordinator @@ -83,5 +88,20 @@ def case(self): self.command("Second", "data") self.command("First", "wait") + def case(self): + # Try tests few times because of potential RF failures + loop = 0 + while loop < 5: + try: + self.do_test_iteration() + break + except TestStepFail: + self.logger.info("Warning, iteration failed #" + str(loop+1)) + loop = loop + 1 + self.delay(5) + else: + raise TestStepFail("Too many failed iterations!") + def tearDown(self): self.reset_dut() + diff --git a/UNITTESTS/CMakeLists.txt b/UNITTESTS/CMakeLists.txt index 7e93bf5c68f..112aa373ea0 100644 --- a/UNITTESTS/CMakeLists.txt +++ b/UNITTESTS/CMakeLists.txt @@ -59,7 +59,7 @@ target_include_directories(gmock_main SYSTEM BEFORE INTERFACE # TESTING #################### -enable_testing() +include(CTest) set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_BINARY_DIR}/Testing" diff --git a/UNITTESTS/README.md b/UNITTESTS/README.md index 9757cef9395..e250a1b8dad 100644 --- a/UNITTESTS/README.md +++ b/UNITTESTS/README.md @@ -1,27 +1,29 @@ ## Unit testing -This document describes how to write and test unit tests for Arm Mbed OS. To prevent and solve problems, please see the [troubleshooting](#troubleshooting) section. +This document describes how to write and use unit tests for Arm Mbed OS. ### Introduction -Unit tests test code in small sections on a host machine. Unlike other testing tools, unit testing doesn't require embedded hardware, and it doesn't need to build the full operating system. Because of this, unit testing can result in faster tests than other testing tools. Unit testing takes place in a build environment where we test each C or C++ class or module in isolation. This means we build test suites into separate test binaries and stub all access outside to remove dependencies on any specific embedded hardware or software combination. This allows us to complete the testing using native compilers on the build machine. +Unit tests test code in small sections on a host machine. Unlike other testing tools, unit testing doesn't require embedded hardware or need to build a full operating system. Because of this, unit testing can result in faster tests than other tools. Unit testing happens in a build environment where you test each C or C++ class or module in isolation. Build test suites into separate test binaries and stub all access outside to remove dependencies on any specific embedded hardware or software combination. This allows you to complete tests using native compilers on the build machine. ### Prerequisites -Please install the following dependencies to use Mbed OS unit testing. +Please install the following dependencies to use Mbed OS unit testing: -- GNU toolchains. - - GCC 6 or later. We recommend you use MinGW-W64 on Windows, but any Windows port of the above GCC versions works. Default compilers can be used on Mac OS instead of GCC to shorten build times, but code coverage results can then differ. -- CMake 3.0 or newer. -- Python 2.7.x, 3.5 or newer. -- Pip 10.0 or newer. -- Gcovr 4.1 or newer. -- Arm Mbed CLI 1.8.0 or newer. +* GNU toolchains. + * GCC 6 or later. We recommend you use MinGW-W64 on Windows, but any Windows port of the above GCC versions works. Default compilers can be used on Mac OS instead of GCC to shorten build times, but code coverage results can differ. +* CMake 3.0 or newer. +* Python 2.7.x, 3.5 or newer. +* Pip 10.0 or newer. +* Gcovr 4.1 or newer. +* Arm Mbed CLI 1.8.0 or newer. Detailed instructions for supported operating systems are below. #### Installing dependencies on Debian or Ubuntu +In a terminal window: + 1. `sudo apt-get -y install build-essential cmake` 1. Install Python and Pip with: @@ -30,10 +32,12 @@ Detailed instructions for supported operating systems are below. sudo easy_install pip ``` -1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/latest/tools/developing-arm-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. +1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/mbed-os/latest/tools/developing-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. #### Installing dependencies on macOS +In a terminal window: + 1. Install [Homebrew](https://brew.sh/). 1. Install Xcode Command Line Tools with `xcode-select --install`. 1. Install CMake with: `brew install cmake`. @@ -44,26 +48,30 @@ Detailed instructions for supported operating systems are below. sudo easy_install pip ``` -1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/latest/tools/developing-arm-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. +1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/mbed-os/latest/tools/developing-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. 1. (Optional) Install GCC with `brew install gcc`. #### Installing dependencies on Windows -1. Download and install [MinGW-W64](http://mingw-w64.org/). +In a terminal window: + +1. Download and install MinGW-W64 from [SourceForge](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/). 1. Download CMake binaries from https://cmake.org/download/, and run the installer. 1. Download Python 2.7 or Python 3 from https://www.python.org/getit/, and run the installer. 1. Add MinGW, CMake and Python into system PATH. -1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/latest/tools/developing-arm-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. +1. Install Gcovr and [Mbed CLI](https://os.mbed.com/docs/mbed-os/latest/tools/developing-mbed-cli.html) with `pip install "gcovr>=4.1" mbed-cli`. ### Test code structure -Unit tests are located in the Mbed OS repository under the `UNITTESTS` folder. We recommend unit test files use an identical directory path to the file under test. This makes it easier to find unit tests for a particular class or a module. For example, if the file under test is `some/example/path/ClassName.cpp`, then all the test files are in the `UNITTESTS/some/example/path/ClassName` directory. Each test suite needs to have its own `unittest.cmake` file for test configuration. +Find unit tests in the Mbed OS repository under the `UNITTESTS` folder. We recommend unit test files use an identical directory path as the file under test. This makes it easier to find unit tests for a particular class or a module. For example, if the file you're testing is `some/example/path/ClassName.cpp`, then all the test files are in the `UNITTESTS/some/example/path/ClassName` directory. Each test suite needs to have its own `unittest.cmake` file for test configuration. + +All the class stubs should be located in the `UNITTESTS/stubs` directory. A single stub class can be used by multiple test suites and should follow the naming convention `ClassName_stub.cpp` for the source file, and `ClassName_stub.h` for the header file. Use the actual header files for the unit tests, and don't stub headers if possible. The stubbed headers reside in the `UNITTESTS/target_h` directory. #### Test discovery -Registering unit tests for running is automatic, and the test runner handles registration. However, test files are not automatically assigned to be built. We build unit tests by using a separate build system, which searches for unit tests under the `UNITTESTS` directory. +Registering unit tests to run happens automatically, and the test runner handles registration. However, test files do not automatically build. Build unit tests with a separate system that searches for unit tests under the `UNITTESTS` directory. -For the build system to find and build any test suite automatically, you must include a unit test configuration file named `unittest.cmake` for each unit test suite. This configuration file contains all the source files required for the build. +For the build system to find and build any test suite automatically, include a unit test configuration file named `unittest.cmake` for each unit test suite. This configuration file lists all the source files required for the test build. #### Test names @@ -71,20 +79,30 @@ The build system automatically generates names of test suites. The name is const ### Unit testing with Mbed CLI -Mbed CLI supports unit tests through `mbed test --unittests` command. For information on using Mbed CLI, please see the [CLI documentation](https://os.mbed.com/docs/latest/tools/developing-arm-mbed-cli.html). +Mbed CLI supports unit tests through the `mbed test --unittests` command. For information on using Mbed CLI, please see the [CLI documentation](https://os.mbed.com/docs/mbed-os/latest/tools/developing-mbed-cli.html). ### Writing unit tests +A unit tests suite consists of one or more test cases. The test cases should cover all the functions in a class under test. All the external dependencies are stubbed including the other classes in the same module. Avoid stubbing header files. Finally, analyze code coverage to ensure all code is tested, and no dead code is found. + +Please see the [documentation for Google Test](https://github.com/google/googletest/blob/master/googletest/docs/primer.md) to learn how to write unit tests using its framework. See the [documentation for Google Mock](https://github.com/google/googletest/blob/master/googlemock/docs/Documentation.md) if you want to write and use C++ mock classes instead of stubs. + +#### Test suite configuration + Create two files in the test directory for each test suite: -- Unit test source file (`test_ClassName.cpp`). -- Unit test configuration file (`unittest.cmake`). +* Unit test source file (`test_ClassName.cpp`). +* Unit test configuration file (`unittest.cmake`). + +List all the required files for the build in the `unittest.cmake` file with paths relative to the `UNITTESTS` folder. Use the following variables to list the source files and include paths: + +* **unittest-includes**: List of header include paths. You can use this to extend or overwrite default paths listed in `UNITTESTS/CMakeLists.txt`. +* **unittest-sources**: List of files under test. +* **unittest-test-sources**: List of test sources and stubs. -List all the files required for the build in the `unittest.cmake` file. We recommend you list the file paths relative to the `UNITTESTS` folder. Use the following variables to list the source files and include paths: +You can also set custom compiler flags and other configurations supported by CMake in `unittest.cmake`. -- **unittest-includes** - List of header include paths. You can use this to extend or overwrite default paths listed in CMakeLists.txt. -- **unittest-sources** - List of files under test. -- **unittest-test-sources** - List of test sources and stubs. +#### Example With the following steps, you can write a simple unit test. In this example, `rtos/Semaphore.cpp` is a class under test. @@ -97,11 +115,13 @@ With the following steps, you can write a simple unit test. In this example, `rt ) set(unittest-test-sources - stubs/mbed_assert.c + stubs/mbed_assert_stub.c + stubs/Kernel_stub.cpp rtos/Semaphore/test_Semaphore.cpp ) ``` - +1. Stub all external dependencies. Create stubs `UNITTESTS/stubs/mbed_assert_stub.c` and `UNITTESTS/stubs/Kernel_stub.cpp` if they don't already exist. +1. Update header stubs with any missing type or function declarations. 1. Create a test source file `UNITTESTS/rtos/Semaphore/test_Semaphore.cpp` with the following content: ``` @@ -163,28 +183,28 @@ Use Mbed CLI to build and run unit tests. For advanced use, you can run CMake an 1. Create a build directory `mkdir UNITTESTS/build`. 1. Move to the build directory `cd UNITTESTS/build`. 1. Run CMake using a relative path to `UNITTESTS` folder as the argument. So from `UNITTESTS/build` use `cmake ..`: - - Add `-g [generator]` if generating other than Unix Makefiles such in case of MinGW use `-g "MinGW Makefiles"`. - - Add `-DCMAKE_MAKE_PROGRAM=`, `-DCMAKE_CXX_COMPILER=` and `-DCMAKE_C_COMPILER=` to use a specific Make program and compilers. - - Add `-DCMAKE_BUILD_TYPE=Debug` to build a debug build. - - Add `-DCOVERAGE=True` to add coverage compiler flags. - - See the [CMake manual](https://cmake.org/cmake/help/v3.0/manual/cmake.1.html) for more information. -1. Run a Make program to build the tests. + * Add `-g [generator]` if generating other than Unix Makefiles such in case of MinGW use `-g "MinGW Makefiles"`. + * Add `-DCMAKE_MAKE_PROGRAM=`, `-DCMAKE_CXX_COMPILER=` and `-DCMAKE_C_COMPILER=` to use a specific Make program and compilers. + * Add `-DCMAKE_BUILD_TYPE=Debug` for a debug build. + * Add `-DCOVERAGE=True` to add coverage compiler flags. + * See the [CMake manual](https://cmake.org/cmake/help/v3.0/manual/cmake.1.html) for more information. +1. Run a Make program to build tests. #### Run tests directly with CTest -Run a test binary in the build directory to run a unit test suite. To run multiple test suites at once, use CTest test runner. Run CTest with `ctest`. Add `-v` to get results for each test case. See the [CTest manual](https://cmake.org/cmake/help/v3.0/manual/ctest.1.html) for more information. +Run a test binary in the build directory to run a unit test suite. To run multiple test suites at once, use the CTest test runner. Run CTest with `ctest`. Add `-v` to get results for each test case. See the [CTest manual](https://cmake.org/cmake/help/v3.0/manual/ctest.1.html) for more information. #### Run tests with GUI test runner -1. Install *gtest-runner* using the [documentation](https://github.com/nholthaus/gtest-runner). -1. Run *gtest-runner* -1. Add test executables into the list. -1. Run them. +1. Install `gtest-runner` according to the [documentation](https://github.com/nholthaus/gtest-runner). +1. Run `gtest-runner`. +1. Add test executables into the list and run. ### Debugging 1. Use Mbed CLI to build a debug build. For advanced use, run CMake directly with `-DCMAKE_BUILD_TYPE=Debug`, and then run a Make program. 1. Run GDB with a test executable as an argument to debug unit tests. +1. Run tests with Valgrind to analyze the test memory profile. ### Get code coverage @@ -200,8 +220,11 @@ Use Mbed CLI to generate code coverage reports. For advanced use, follow these s **Problem:** Generic problems with CMake or with the build process. * **Solution**: Delete the build directory. Make sure that CMake, g++, GCC and a Make program can be found in the path and are correct versions. -**Problem:** Virus protection identifies files generated by CMake as malicious and quarantines the files on Windows. -* **Solution**: Restore the false positive files from the quarantine. +**Problem:** (Windows) Virus protection identifies files generated by CMake as malicious and quarantines the files. +* **Solution**: Restore false-positive files from the quarantine. + +**Problem:** (Windows) Git with shell installation adds sh.exe to the path and then CMake throws an error: sh.exe was found in your PATH. For MinGW make to work correctly, sh.exe must NOT be in your path. +* **Solution**: Remove sh.exe from the system path. -**Problem:** CMake compiler check fails on Mac OS Mojave when using GCC-8. +**Problem:** (Mac OS) CMake compiler check fails on Mac OS Mojave when using GCC-8. * **Solution**: Make sure gnm (binutils) is not installed. Uninstall binutils with `brew uninstall binutils`. diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp index 2f5bbdb1997..4d7b80cb98a 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp @@ -53,7 +53,6 @@ class TestAT_CellularContext : public testing::Test { ATHandler_stub::bool_value = false; ATHandler_stub::uint8_value = 0; ATHandler_stub::fh_value = NULL; - ATHandler_stub::callback = NULL; ATHandler_stub::call_immediately = false; ATHandler_stub::resp_info_true_counter = false; ATHandler_stub::info_elem_true_counter = false; @@ -63,6 +62,9 @@ class TestAT_CellularContext : public testing::Test { ATHandler_stub::read_string_table[kRead_string_table_size]; ATHandler_stub::resp_stop_success_count = kResp_stop_count_default; CellularDevice_stub::connect_counter = 2; + for (int i=0; i < kATHandler_urc_table_max_size; i++) { + ATHandler_stub::callback[i] = NULL; + } } void TearDown() diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp index 28c80e11267..9609ab39358 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp @@ -211,6 +211,71 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params) EXPECT_TRUE(reg_params_check._cell_id == -1 && reg_params_check._active_time == -1 && reg_params_check._periodic_tau == -1); } +static int disconnect_cb_count = 0; +static bool disconnect_cb_param_check = false; +static void disconnect_cb(nsapi_event_t ev, intptr_t intptr) +{ + disconnect_cb_count++; + + if (disconnect_cb_count == 3 && disconnect_cb_param_check) { + EXPECT_TRUE(ev == NSAPI_EVENT_CONNECTION_STATUS_CHANGE); + EXPECT_TRUE(intptr == NSAPI_STATUS_DISCONNECTED); + } +} + +TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_registration_status_change) +{ + EventQueue que; + FileHandle_stub fh1; + ATHandler at(&fh1, que, 0, ","); + + AT_CellularNetwork cn(at); + + + cn.attach(&disconnect_cb); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::process_oob_urc = true; + + ATHandler_stub::read_string_index = 2; + ATHandler_stub::read_string_table[2] = "+CREG:"; + ATHandler_stub::read_string_table[1] = "00C3"; + ATHandler_stub::read_string_table[0] = "A13F"; + ATHandler_stub::int_count = 2; + //ATHandler_stub::int_valid_count_table[2] = 1; //URC status is skipped + ATHandler_stub::int_valid_count_table[1] = 0; //not registered + ATHandler_stub::int_valid_count_table[0] = 1; + at.process_oob(); + + disconnect_cb_count = 0; + disconnect_cb_param_check = true; + ATHandler_stub::read_string_index = 4; + ATHandler_stub::read_string_table[4] = "+CREG:"; + ATHandler_stub::read_string_table[3] = "00C3"; + ATHandler_stub::read_string_table[2] = "A13F"; + ATHandler_stub::read_string_table[1] = "FF"; + ATHandler_stub::read_string_table[0] = "FF"; + ATHandler_stub::int_count = 2; + //ATHandler_stub::int_valid_count_table[2] = 1; //URC status is skipped + ATHandler_stub::int_valid_count_table[1] = 1; //registered, home network + ATHandler_stub::int_valid_count_table[0] = 1; + at.process_oob(); + + ATHandler_stub::read_string_index = 5; + ATHandler_stub::int_count = 3; + ATHandler_stub::read_string_index = 4; + ATHandler_stub::read_string_table[4] = "+CREG:"; + ATHandler_stub::read_string_table[3] = "00C3"; + ATHandler_stub::read_string_table[2] = "A13F"; + ATHandler_stub::read_string_table[1] = "FF"; + ATHandler_stub::read_string_table[0] = "FF"; + ATHandler_stub::int_count = 2; + //ATHandler_stub::int_valid_count_table[2] = 1; //URC status is skipped + ATHandler_stub::int_valid_count_table[1] = 4; //unknown registration status + ATHandler_stub::int_valid_count_table[0] = 1; + at.process_oob(); +} + TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_network_registering_mode) { EventQueue que; diff --git a/UNITTESTS/features/lorawan/loraphy/unittest.cmake b/UNITTESTS/features/lorawan/loraphy/unittest.cmake index c1abde4e46a..b3c8a5854a4 100644 --- a/UNITTESTS/features/lorawan/loraphy/unittest.cmake +++ b/UNITTESTS/features/lorawan/loraphy/unittest.cmake @@ -37,5 +37,5 @@ set(unittest-test-sources ) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH=8 -DMBED_CONF_LORA_DUTY_CYCLE_ON_JOIN=true") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH=8 -DMBED_CONF_LORA_DUTY_CYCLE_ON_JOIN=true") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH=8 -DMBED_CONF_LORA_DUTY_CYCLE_ON_JOIN=true -DMBED_CONF_LORA_WAKEUP_TIME=5") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH=8 -DMBED_CONF_LORA_DUTY_CYCLE_ON_JOIN=true -DMBED_CONF_LORA_WAKEUP_TIME=5") diff --git a/UNITTESTS/features/lorawan/loraphyau915/Test_LoRaPHYAU915.cpp b/UNITTESTS/features/lorawan/loraphyau915/Test_LoRaPHYAU915.cpp index 11a27e9d20c..93ff3d29e08 100644 --- a/UNITTESTS/features/lorawan/loraphyau915/Test_LoRaPHYAU915.cpp +++ b/UNITTESTS/features/lorawan/loraphyau915/Test_LoRaPHYAU915.cpp @@ -181,6 +181,10 @@ TEST_F(Test_LoRaPHYAU915, link_ADR_request) uint8_t nb_rep_out = 0; uint8_t nb_bytes_parsed = 0; + uint8_t payload [] = {SRV_MAC_LINK_ADR_REQ, 1, 2, 3, 4}; + params.payload = payload; + params.payload_size = 5; + LoRaPHY_stub::uint8_value = 1; LoRaPHY_stub::ch_mask_value = 6; LoRaPHY_stub::adr_parse_count = 2; diff --git a/UNITTESTS/features/lorawan/loraphycn470/Test_LoRaPHYCN470.cpp b/UNITTESTS/features/lorawan/loraphycn470/Test_LoRaPHYCN470.cpp index abeefd52d64..20e8fc3be2a 100644 --- a/UNITTESTS/features/lorawan/loraphycn470/Test_LoRaPHYCN470.cpp +++ b/UNITTESTS/features/lorawan/loraphycn470/Test_LoRaPHYCN470.cpp @@ -206,6 +206,10 @@ TEST_F(Test_LoRaPHYCN470, link_ADR_request) uint8_t nb_rep_out = 0; uint8_t nb_bytes_parsed = 0; + uint8_t payload [] = {SRV_MAC_LINK_ADR_REQ, 1, 2, 3, 4}; + params.payload = payload; + params.payload_size = 5; + LoRaPHY_stub::uint8_value = 1; LoRaPHY_stub::ch_mask_value = 6; LoRaPHY_stub::adr_parse_count = 2; diff --git a/UNITTESTS/features/lorawan/loraphyus915/Test_LoRaPHYUS915.cpp b/UNITTESTS/features/lorawan/loraphyus915/Test_LoRaPHYUS915.cpp index b3d921bac92..36e3a15e789 100644 --- a/UNITTESTS/features/lorawan/loraphyus915/Test_LoRaPHYUS915.cpp +++ b/UNITTESTS/features/lorawan/loraphyus915/Test_LoRaPHYUS915.cpp @@ -177,6 +177,7 @@ TEST_F(Test_LoRaPHYUS915, tx_config) TEST_F(Test_LoRaPHYUS915, link_ADR_request) { + uint8_t payload [] = {SRV_MAC_LINK_ADR_REQ, 1, 2, 3, 4}; adr_req_params_t params; memset(¶ms, 0, sizeof(params)); int8_t dr_out = 0; @@ -184,8 +185,14 @@ TEST_F(Test_LoRaPHYUS915, link_ADR_request) uint8_t nb_rep_out = 0; uint8_t nb_bytes_parsed = 0; - EXPECT_TRUE(0 == object->link_ADR_request(¶ms, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed)); + params.payload = payload; + params.payload_size = 4; + uint8_t status = object->link_ADR_request(¶ms, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed); + + EXPECT_TRUE(0 == nb_bytes_parsed); + + params.payload_size = 5; LoRaPHY_stub::uint8_value = 1; LoRaPHY_stub::ch_mask_value = 6; LoRaPHY_stub::adr_parse_count = 2; diff --git a/UNITTESTS/features/lorawan/lorawanstack/Test_LoRaWANStack.cpp b/UNITTESTS/features/lorawan/lorawanstack/Test_LoRaWANStack.cpp index 15a29420014..e91f8420551 100644 --- a/UNITTESTS/features/lorawan/lorawanstack/Test_LoRaWANStack.cpp +++ b/UNITTESTS/features/lorawan/lorawanstack/Test_LoRaWANStack.cpp @@ -494,6 +494,10 @@ TEST_F(Test_LoRaWANStack, handle_rx) ind.buffer = ind_buf; ind.buffer_size = 150; ind.type = MCPS_UNCONFIRMED; + ind.port = 15; + ind.is_data_recvd = true; + ind.fpending_status = false; + LoRaMac_stub::dev_class_value = CLASS_A; radio._ev->rx_done(NULL, 0, 0, 0); //data == NULL || LENGTH == 0 (2 cases) diff --git a/UNITTESTS/stubs/ATHandler_stub.cpp b/UNITTESTS/stubs/ATHandler_stub.cpp index ff58ade4ac0..54003807f59 100644 --- a/UNITTESTS/stubs/ATHandler_stub.cpp +++ b/UNITTESTS/stubs/ATHandler_stub.cpp @@ -43,16 +43,19 @@ bool ATHandler_stub::bool_value = false; uint8_t ATHandler_stub::uint8_value = 0; FileHandle_stub *ATHandler_stub::fh_value = NULL; device_err_t ATHandler_stub::device_err_value; -Callback ATHandler_stub::callback = NULL; bool ATHandler_stub::call_immediately = false; uint8_t ATHandler_stub::resp_info_true_counter = false; uint8_t ATHandler_stub::info_elem_true_counter = false; int ATHandler_stub::int_valid_count_table[kRead_int_table_size]; int ATHandler_stub::int_count = kRead_int_table_size; +bool ATHandler_stub::process_oob_urc = false; int ATHandler_stub::read_string_index = kRead_string_table_size; const char *ATHandler_stub::read_string_table[kRead_string_table_size]; int ATHandler_stub::resp_stop_success_count = kResp_stop_count_default; +int ATHandler_stub::urc_amount = 0; +mbed::Callback ATHandler_stub::callback[kATHandler_urc_table_max_size]; +char *ATHandler_stub::urc_string_table[kATHandler_urc_table_max_size]; ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, int timeout, const char *output_delimiter, uint16_t send_delay) : _nextATHandler(0), @@ -60,6 +63,14 @@ ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, int timeout, const char _queue(queue) { ATHandler_stub::ref_count = 1; + + ATHandler_stub::process_oob_urc = false; + ATHandler_stub::urc_amount = 0; + int i = 0; + while (i < kATHandler_urc_table_max_size) { + ATHandler_stub::callback[i] = NULL; + ATHandler_stub::urc_string_table[i++] = NULL; + } } void ATHandler::set_debug(bool debug_on) @@ -70,6 +81,16 @@ void ATHandler::set_debug(bool debug_on) ATHandler::~ATHandler() { ATHandler_stub::ref_count = kATHandler_destructor_ref_ount; + + int i = 0; + while (i < kATHandler_urc_table_max_size) { + if (ATHandler_stub::urc_string_table[i]) { + delete [] ATHandler_stub::urc_string_table[i]; + i++; + } else { + break; + } + } } void ATHandler::inc_ref_count() @@ -98,7 +119,18 @@ void ATHandler::set_file_handle(FileHandle *fh) nsapi_error_t ATHandler::set_urc_handler(const char *urc, mbed::Callback cb) { - ATHandler_stub::callback = cb; + if (ATHandler_stub::urc_amount < kATHandler_urc_table_max_size) { + ATHandler_stub::callback[ATHandler_stub::urc_amount] = cb; + ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount] = new char[kATHandler_urc_string_max_size]; + if (urc) { + int bytes_to_copy = strlen(urc) < kATHandler_urc_string_max_size ? strlen(urc) : kATHandler_urc_string_max_size; + memcpy(ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount], urc, bytes_to_copy); + } + ATHandler_stub::urc_amount++; + } else { + ATHandler_stub::callback[0] = cb; + MBED_ASSERT("ATHandler URC amount limit reached"); + } if (ATHandler_stub::call_immediately) { cb(); } @@ -143,6 +175,20 @@ void ATHandler::restore_at_timeout() void ATHandler::process_oob() { + if (ATHandler_stub::process_oob_urc) { + int i = 0; + while (i < ATHandler_stub::urc_amount) { + if (ATHandler_stub::read_string_index >= 0) { + if (!memcmp(ATHandler_stub::urc_string_table[i], + ATHandler_stub::read_string_table[ATHandler_stub::read_string_index], + strlen(ATHandler_stub::urc_string_table[i]))) { + ATHandler_stub::callback[i](); + break; + } + } + i++; + } + } } void ATHandler::clear_error() diff --git a/UNITTESTS/stubs/ATHandler_stub.h b/UNITTESTS/stubs/ATHandler_stub.h index c506ccf0179..e243e355ba0 100644 --- a/UNITTESTS/stubs/ATHandler_stub.h +++ b/UNITTESTS/stubs/ATHandler_stub.h @@ -31,6 +31,8 @@ static const int kRead_int_table_size = 100; static const int kResp_stop_count_default = 100; // set reference count to -909 to separate it from zero so we can test that ATHandler is really deleted. static const int kATHandler_destructor_ref_ount = -909; +static const int kATHandler_urc_table_max_size = 10; +static const int kATHandler_urc_string_max_size = 16; namespace ATHandler_stub { extern nsapi_error_t nsapi_error_value; @@ -50,13 +52,16 @@ extern uint8_t info_elem_true_counter; extern uint8_t uint8_value; extern mbed::FileHandle_stub *fh_value; extern mbed::device_err_t device_err_value; -extern mbed::Callback callback; +extern mbed::Callback callback[kATHandler_urc_table_max_size]; extern bool call_immediately; extern const char *read_string_table[kRead_string_table_size]; extern int read_string_index; extern int int_valid_count_table[kRead_int_table_size]; extern int int_count; extern int resp_stop_success_count; +extern bool process_oob_urc; +extern int urc_amount; +extern char *urc_string_table[kATHandler_urc_table_max_size]; } #endif diff --git a/UNITTESTS/stubs/EventQueue_stub.cpp b/UNITTESTS/stubs/EventQueue_stub.cpp index abbfc8ac21d..666d34959fc 100644 --- a/UNITTESTS/stubs/EventQueue_stub.cpp +++ b/UNITTESTS/stubs/EventQueue_stub.cpp @@ -60,7 +60,7 @@ void EventQueue::background(Callback update) { } -void EventQueue::chain(EventQueue *target) +int EventQueue::chain(EventQueue *target) { } diff --git a/UNITTESTS/stubs/LoRaPHY_stub.cpp b/UNITTESTS/stubs/LoRaPHY_stub.cpp index 56862af5dfc..53dce9fe4f9 100644 --- a/UNITTESTS/stubs/LoRaPHY_stub.cpp +++ b/UNITTESTS/stubs/LoRaPHY_stub.cpp @@ -151,9 +151,12 @@ lorawan_time_t LoRaPHY::update_band_timeoff(bool joined, bool duty_cycle, } uint8_t LoRaPHY::parse_link_ADR_req(const uint8_t *payload, + uint8_t payload_size, link_adr_params_t *params) { params->ch_mask_ctrl = LoRaPHY_stub::ch_mask_value; + params->channel_mask = 0; + params->datarate = 0; if (LoRaPHY_stub::adr_parse_count) { return --LoRaPHY_stub::adr_parse_count; @@ -168,9 +171,10 @@ uint8_t LoRaPHY::verify_link_ADR_req(verify_adr_params_t *verify_params, return LoRaPHY_stub::uint8_value; } -void LoRaPHY::get_rx_window_params(double t_symb, uint8_t min_rx_symb, - uint32_t rx_error, uint32_t wakeup_time, - uint32_t *window_timeout, int32_t *window_offset) +void LoRaPHY::get_rx_window_params(float t_symbol, uint8_t min_rx_symbols, + float rx_error, float wakeup_time, + uint32_t *window_length, int32_t *window_offset, + uint8_t phy_dr) { } diff --git a/UNITTESTS/stubs/equeue_stub.c b/UNITTESTS/stubs/equeue_stub.c index 40cdcd65b0d..a1a6f21fcad 100644 --- a/UNITTESTS/stubs/equeue_stub.c +++ b/UNITTESTS/stubs/equeue_stub.c @@ -103,7 +103,7 @@ void equeue_background(equeue_t *queue, } -void equeue_chain(equeue_t *queue, equeue_t *target) +int equeue_chain(equeue_t *queue, equeue_t *target) { } diff --git a/UNITTESTS/unit_test/utils.py b/UNITTESTS/unit_test/utils.py index fe41dc81583..0a26cc71115 100644 --- a/UNITTESTS/unit_test/utils.py +++ b/UNITTESTS/unit_test/utils.py @@ -51,8 +51,13 @@ def execute_program(args, error_msg="An error occurred!", success_msg=None): stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + # Output is stripped to remove newline character. logging adds its own + # so we avoid double newlines. + # Because the process can terminate before the loop has read all lines, + # we read the output remnant just in case. Otherwise we lose it. while process.poll() is None: - logging.info(process.stdout.readline().decode("utf8")) + logging.info(process.stdout.readline().decode('utf8').rstrip('\n')) + logging.info(process.stdout.read().decode('utf8').rstrip('\n')) retcode = process.wait() diff --git a/cmsis/TARGET_CORTEX_A/TOOLCHAIN_IAR/cmain.S b/cmsis/TARGET_CORTEX_A/TOOLCHAIN_IAR/cmain.S new file mode 100644 index 00000000000..0da55009b38 --- /dev/null +++ b/cmsis/TARGET_CORTEX_A/TOOLCHAIN_IAR/cmain.S @@ -0,0 +1,101 @@ +/************************************************** + * + * Part two of the system initialization code, contains C-level + * initialization, thumb-2 only variant. + * + * $Revision: 59783 $ + * + **************************************************/ +/* Copyright 2008-2017, IAR Systems AB. + This source code is the property of IAR Systems. The source code may only + be used together with the IAR Embedded Workbench. Redistribution and use + in source and binary forms, with or without modification, is permitted + provided that the following conditions are met: + - Redistributions of source code, in whole or in part, must retain the + above copyright notice, this list of conditions and the disclaimer below. + - IAR Systems name may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +; -------------------------------------------------- +; Module ?cmain, C-level initialization. +; + + + SECTION SHT$$PREINIT_ARRAY:CONST:NOROOT(2) + SECTION SHT$$INIT_ARRAY:CONST:NOROOT(2) + + SECTION .text:CODE:NOROOT(2) + + PUBLIC __cmain + ;; Keep ?main for legacy reasons, it is accessed in countless instances of cstartup.s around the world... + PUBLIC ?main + EXTWEAK __iar_data_init3 + EXTWEAK __iar_argc_argv + EXTERN __low_level_init + EXTERN __call_ctors + EXTERN main + EXTERN exit + EXTERN __iar_dynamic_initialization + EXTERN mbed_sdk_init + EXTERN mbed_main + EXTERN SystemInit + + THUMB +__cmain: +?main: + +; Initialize segments. +; __segment_init and __low_level_init are assumed to use the same +; instruction set and to be reachable by BL from the ICODE segment +; (it is safest to link them in segment ICODE). + + FUNCALL __cmain, __low_level_init + bl __low_level_init + cmp r0,#0 + beq ?l1 + FUNCALL __cmain, __iar_data_init3 + bl __iar_data_init3 + MOVS r0,#0 ; No parameters + FUNCALL __cmain, mbed_sdk_init + BL mbed_sdk_init + MOVS r0,#0 ; No parameters + FUNCALL __cmain, __iar_dynamic_initialization + BL __iar_dynamic_initialization ; C++ dynamic initialization + +?l1: + REQUIRE ?l3 + + SECTION .text:CODE:NOROOT(2) + + PUBLIC _main + PUBLIC _call_main + THUMB + +__iar_init$$done: ; Copy initialization is done + +?l3: +_call_main: + MOVS r0,#0 ; No parameters + FUNCALL __cmain, __iar_argc_argv + BL __iar_argc_argv ; Maybe setup command line + + MOVS r0,#0 ; No parameters + FUNCALL __cmain, mbed_main + BL mbed_main + + FUNCALL __cmain, main + BL main +_main: + FUNCALL __cmain, exit + BL exit + + END diff --git a/cmsis/TARGET_CORTEX_A/core_ca.h b/cmsis/TARGET_CORTEX_A/core_ca.h index dbe9794d4fe..c62c99f4f21 100644 --- a/cmsis/TARGET_CORTEX_A/core_ca.h +++ b/cmsis/TARGET_CORTEX_A/core_ca.h @@ -59,7 +59,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) #define __FPU_USED 1U #else diff --git a/cmsis/TARGET_CORTEX_M/core_armv8mbl.h b/cmsis/TARGET_CORTEX_M/core_armv8mbl.h index 251e4ede3a9..e213d727e0e 100644 --- a/cmsis/TARGET_CORTEX_M/core_armv8mbl.h +++ b/cmsis/TARGET_CORTEX_M/core_armv8mbl.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_armv8mml.h b/cmsis/TARGET_CORTEX_M/core_armv8mml.h index 3a3148ea314..923f9f1557c 100644 --- a/cmsis/TARGET_CORTEX_M/core_armv8mml.h +++ b/cmsis/TARGET_CORTEX_M/core_armv8mml.h @@ -97,7 +97,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) #define __FPU_USED 1U #else diff --git a/cmsis/TARGET_CORTEX_M/core_cm0.h b/cmsis/TARGET_CORTEX_M/core_cm0.h index f929bba07b7..5ce991e100c 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm0.h +++ b/cmsis/TARGET_CORTEX_M/core_cm0.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_cm0plus.h b/cmsis/TARGET_CORTEX_M/core_cm0plus.h index 424011ac363..55a26f6689d 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm0plus.h +++ b/cmsis/TARGET_CORTEX_M/core_cm0plus.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_cm1.h b/cmsis/TARGET_CORTEX_M/core_cm1.h index 0ed678e3b8d..f9b962fe11b 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm1.h +++ b/cmsis/TARGET_CORTEX_M/core_cm1.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_cm23.h b/cmsis/TARGET_CORTEX_M/core_cm23.h index acbc5dfea2a..8a73801ba7c 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm23.h +++ b/cmsis/TARGET_CORTEX_M/core_cm23.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_cm3.h b/cmsis/TARGET_CORTEX_M/core_cm3.h index 74bff64be4f..fa010da6ec5 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm3.h +++ b/cmsis/TARGET_CORTEX_M/core_cm3.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif @@ -668,7 +668,7 @@ typedef struct #define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ /* Auxiliary Control Register Definitions */ - +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) #define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ #define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ @@ -677,6 +677,7 @@ typedef struct #define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ #define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ +#endif /*@} end of group CMSIS_SCnotSCB */ diff --git a/cmsis/TARGET_CORTEX_M/core_cm33.h b/cmsis/TARGET_CORTEX_M/core_cm33.h index 6cd2db77fe3..5bcaa49413f 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm33.h +++ b/cmsis/TARGET_CORTEX_M/core_cm33.h @@ -97,7 +97,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined (__ARM_PCS_VFP) + #if defined (__ARM_FP) #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) #define __FPU_USED 1U #else diff --git a/cmsis/TARGET_CORTEX_M/core_cm4.h b/cmsis/TARGET_CORTEX_M/core_cm4.h index 7d56873532c..040082f4365 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm4.h +++ b/cmsis/TARGET_CORTEX_M/core_cm4.h @@ -86,7 +86,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) #define __FPU_USED 1U #else diff --git a/cmsis/TARGET_CORTEX_M/core_cm7.h b/cmsis/TARGET_CORTEX_M/core_cm7.h index a14dc623b76..5f9d1498aed 100644 --- a/cmsis/TARGET_CORTEX_M/core_cm7.h +++ b/cmsis/TARGET_CORTEX_M/core_cm7.h @@ -86,7 +86,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) #define __FPU_USED 1U #else diff --git a/cmsis/TARGET_CORTEX_M/core_sc000.h b/cmsis/TARGET_CORTEX_M/core_sc000.h index 9b67c92f3b9..67d3851b126 100644 --- a/cmsis/TARGET_CORTEX_M/core_sc000.h +++ b/cmsis/TARGET_CORTEX_M/core_sc000.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/core_sc300.h b/cmsis/TARGET_CORTEX_M/core_sc300.h index 3e8a47109a7..0c1e3249487 100644 --- a/cmsis/TARGET_CORTEX_M/core_sc300.h +++ b/cmsis/TARGET_CORTEX_M/core_sc300.h @@ -81,7 +81,7 @@ #endif #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP + #if defined __ARM_FP #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif diff --git a/cmsis/TARGET_CORTEX_M/mbed_fault_handler.c b/cmsis/TARGET_CORTEX_M/mbed_fault_handler.c index 62fa90ff07c..5c0f20b21ac 100644 --- a/cmsis/TARGET_CORTEX_M/mbed_fault_handler.c +++ b/cmsis/TARGET_CORTEX_M/mbed_fault_handler.c @@ -18,6 +18,7 @@ #define __STDC_FORMAT_MACROS #endif #include +#include #include "device.h" #include "mbed_error.h" diff --git a/cmsis/TARGET_CORTEX_M/mbed_tz_context.c b/cmsis/TARGET_CORTEX_M/mbed_tz_context.c index 8e9541f75dc..17bf625afea 100644 --- a/cmsis/TARGET_CORTEX_M/mbed_tz_context.c +++ b/cmsis/TARGET_CORTEX_M/mbed_tz_context.c @@ -22,6 +22,8 @@ * limitations under the License. */ +#if !TARGET_TFM + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) #include "RTE_Components.h" @@ -201,3 +203,5 @@ uint32_t TZ_StoreContext_S (TZ_MemoryId_t id) { return 1U; // Success } #endif + +#endif // !TARGET_TFM diff --git a/cmsis/mbed_cmsis_conf.h b/cmsis/mbed_cmsis_conf.h index d5ba37c8b2a..2a79698992f 100644 --- a/cmsis/mbed_cmsis_conf.h +++ b/cmsis/mbed_cmsis_conf.h @@ -1,23 +1,18 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2012 ARM Limited +/* + * Copyright (c) 2018-2019, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. + * http://www.apache.org/licenses/LICENSE-2.0 * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_CMSIS_CONF_H #define MBED_CMSIS_CONF_H diff --git a/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h b/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h index 0adcb7c3084..a5e6baa70eb 100644 --- a/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h +++ b/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h @@ -20,7 +20,7 @@ #include "at24mac.h" #include "PinNames.h" -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C && defined(MBED_CONF_RTOS_PRESENT) #include "NanostackRfPhy.h" diff --git a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp index 89652958bb1..640179aa05e 100644 --- a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp +++ b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp @@ -15,7 +15,7 @@ */ #include -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C && defined(MBED_CONF_RTOS_PRESENT) #include "platform/arm_hal_interrupt.h" #include "nanostack/platform/arm_hal_phy.h" @@ -26,6 +26,12 @@ #include "nanostack/platform/arm_hal_phy.h" #include "mbed_trace.h" #include "mbed_toolchain.h" +#include "DigitalIn.h" +#include "DigitalOut.h" +#include "InterruptIn.h" +#include "SPI.h" +#include "inttypes.h" +#include "Timeout.h" #define TRACE_GROUP "AtRF" @@ -50,6 +56,8 @@ #define RFF_TX 0x04 #define RFF_CCA 0x08 +namespace { + typedef enum { RF_MODE_NORMAL = 0, RF_MODE_SNIFFER = 1, @@ -82,6 +90,8 @@ typedef enum { STATE_TRANSITION_IN_PROGRESS = 0x1F } rf_trx_states_t; +} // anonymous namespace + static const uint8_t *rf_tx_data; // Points to Nanostack's buffer static uint8_t rf_tx_length; /*ACK wait duration changes depending on data rate*/ @@ -215,8 +225,9 @@ static inline rf_trx_states_t rf_if_trx_status_from_full(uint8_t full_trx_status } #ifdef MBED_CONF_RTOS_PRESENT -#include "mbed.h" + #include "rtos.h" + using namespace mbed; using namespace rtos; diff --git a/components/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver/NanostackRfPhyMcr20a.h b/components/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver/NanostackRfPhyMcr20a.h index 6ef567ad0d6..0f94b68bd6e 100644 --- a/components/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver/NanostackRfPhyMcr20a.h +++ b/components/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver/NanostackRfPhyMcr20a.h @@ -17,11 +17,14 @@ #ifndef NANOSTACK_PHY_MCR20A_H_ #define NANOSTACK_PHY_MCR20A_H_ -#include "mbed.h" - -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI - +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && defined(MBED_CONF_RTOS_PRESENT) +#include "inttypes.h" #include "NanostackRfPhy.h" +#include "DigitalIn.h" +#include "DigitalOut.h" +#include "InterruptIn.h" +#include "SPI.h" +#include "rtos.h" // Arduino pin defaults for convenience #if !defined(MCR20A_SPI_MOSI) diff --git a/components/802.15.4_RF/mcr20a-rf-driver/source/NanostackRfPhyMcr20a.cpp b/components/802.15.4_RF/mcr20a-rf-driver/source/NanostackRfPhyMcr20a.cpp index b2595401ba8..2b6df834aa0 100644 --- a/components/802.15.4_RF/mcr20a-rf-driver/source/NanostackRfPhyMcr20a.cpp +++ b/components/802.15.4_RF/mcr20a-rf-driver/source/NanostackRfPhyMcr20a.cpp @@ -15,13 +15,14 @@ */ #include "NanostackRfPhyMcr20a.h" -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && defined(MBED_CONF_RTOS_PRESENT) #include "ns_types.h" #include "platform/arm_hal_interrupt.h" #include "nanostack/platform/arm_hal_phy.h" #include #include "rtos.h" +#include "mbed_interface.h" using namespace mbed; using namespace rtos; @@ -65,6 +66,8 @@ extern "C" { #define gXcvrLowPowerState_d gXcvrPwrAutodoze_c #endif +namespace { + /* MCR20A XCVR states */ typedef enum xcvrState_tag { gIdle_c, @@ -106,6 +109,8 @@ typedef enum { TX_ARET_ON = 0x19 } rf_trx_states_t; +} // anonymous namespace + /*RF receive buffer*/ static uint8_t rf_buffer[RF_BUFFER_SIZE]; diff --git a/components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp b/components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp index ca6bd64ed93..e056c1420cd 100644 --- a/components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp +++ b/components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ #include -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && defined(MBED_CONF_RTOS_PRESENT) #include "platform/arm_hal_interrupt.h" #include "nanostack/platform/arm_hal_phy.h" #include "ns_types.h" @@ -26,6 +26,12 @@ #include "mbed_toolchain.h" #include "common_functions.h" #include +#include "Timeout.h" +#include "Thread.h" +#include "mbed_wait_api.h" + +using namespace mbed; +using namespace rtos; #define TRACE_GROUP "s2lp" @@ -216,7 +222,7 @@ static const phy_device_channel_page_s phy_channel_pages[] = { }; #ifdef MBED_CONF_RTOS_PRESENT -#include "mbed.h" + #include "rtos.h" static void rf_irq_task_process_irq(); diff --git a/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.c b/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.c index 2ccfe85bfaa..fee60bd6678 100644 --- a/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.c +++ b/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.c @@ -13,11 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "ns_types.h" -#include "rf_configuration.h" -#include "mbed_trace.h" -#define TRACE_GROUP "rfcf" +#include "rf_configuration.h" // Note that F_XO and F_DIG depends on the used clock frequency #define F_XO 50000000 @@ -104,7 +101,7 @@ void rf_conf_calculate_rx_filter_bandwidth_registers(uint32_t rx_bandwidth, uint uint8_t chflt_e_tmp = 0; uint8_t chflt_m_tmp = 0; - while (rx_bandwidth < 900000 / (2 << chflt_e_tmp)) { + while (rx_bandwidth < 900000u / (2 << chflt_e_tmp)) { chflt_e_tmp++; } uint32_t rx_bandwidth_tmp = rx_bandwidth; diff --git a/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.h b/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.h index e6869b27488..c48b370b6da 100644 --- a/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.h +++ b/components/802.15.4_RF/stm-s2lp-rf-driver/source/rf_configuration.h @@ -16,6 +16,9 @@ #ifndef RF_CONF_H_ #define RF_CONF_H_ + +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/components/802.15.4_RF/stm-s2lp-rf-driver/source/s2lpReg.h b/components/802.15.4_RF/stm-s2lp-rf-driver/source/s2lpReg.h index 1c855d75230..8dbb4a95455 100644 --- a/components/802.15.4_RF/stm-s2lp-rf-driver/source/s2lpReg.h +++ b/components/802.15.4_RF/stm-s2lp-rf-driver/source/s2lpReg.h @@ -301,7 +301,11 @@ typedef enum { S2LP_STATE_SYNTH_SETUP = 0x50 } s2lp_states_e; +#if defined __cplusplus && __cplusplus >= 201103 +typedef enum : uint8_t { +#else typedef enum { +#endif S2LP_CMD_TX = 0x60, S2LP_CMD_RX, S2LP_CMD_READY, diff --git a/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h b/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h index 4dd3568c566..8cdb99a6282 100644 --- a/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h +++ b/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h @@ -17,9 +17,13 @@ #ifndef NANOSTACK_PHY_S2LP_H_ #define NANOSTACK_PHY_S2LP_H_ -#include "mbed.h" -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && defined(MBED_CONF_RTOS_PRESENT) +#include "inttypes.h" #include "NanostackRfPhy.h" +#include "DigitalIn.h" +#include "DigitalOut.h" +#include "InterruptIn.h" +#include "SPI.h" // Uncomment to use testing gpios attached to TX/RX processes //#define TEST_GPIOS_ENABLED diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c index 36e10cfff61..d7349038746 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c +++ b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c @@ -23,7 +23,7 @@ #include #include -#include "psa_psa_f_ifs.h" +#include "psa_crypto_srv_ifs.h" #include "spm/psa_defs.h" #include "spm/spm_client.h" diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c index a0b3c330262..36ac8803f06 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c @@ -7,7 +7,7 @@ #define PSA_CRYPTO_SECURE 1 #include "crypto_spe.h" #include "crypto_platform_spe.h" -#include "psa_psa_f_partition.h" +#include "psa_crypto_srv_partition.h" #include "mbedtls/entropy.h" #if defined(MBEDTLS_PLATFORM_C) @@ -17,7 +17,7 @@ #define mbedtls_free free #endif // ------------------------- Globals --------------------------- -static psa_spm_init_refence_counter = 0; +static int psa_spm_init_refence_counter = 0; // ------------------------- Partition's Main Thread --------------------------- static void psa_crypto_init_operation(void) @@ -26,7 +26,6 @@ static void psa_crypto_init_operation(void) psa_status_t status = PSA_SUCCESS; psa_get(PSA_CRYPTO_INIT, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: case PSA_IPC_DISCONNECT: { @@ -38,14 +37,16 @@ static void psa_crypto_init_operation(void) if (status == PSA_SUCCESS) { ++psa_spm_init_refence_counter; } + break; } default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } + psa_reply(msg.handle, (psa_error_t) status); } @@ -55,7 +56,6 @@ static void psa_crypto_free_operation(void) psa_status_t status = PSA_SUCCESS; psa_get(PSA_CRYPTO_FREE, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: case PSA_IPC_DISCONNECT: { @@ -66,18 +66,23 @@ static void psa_crypto_free_operation(void) /** perform crypto_free iff the number of init-s * is equal to the number of free-s */ - --psa_spm_init_refence_counter; - if (!psa_spm_init_refence_counter) { + if (psa_spm_init_refence_counter > 0) { + --psa_spm_init_refence_counter; + } + + if (psa_spm_init_refence_counter == 0) { mbedtls_psa_crypto_free(); } + break; } default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } + psa_reply(msg.handle, (psa_error_t) status); } @@ -87,14 +92,14 @@ static void psa_mac_operation(void) psa_status_t status = PSA_SUCCESS; psa_get(PSA_MAC, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: { psa_mac_operation_t *psa_operation = mbedtls_calloc(1, sizeof(psa_mac_operation_t)); if (psa_operation == NULL) { - status = PSA_ERROR_INSUFFICIENT_MEMORY; + status = PSA_CONNECTION_REFUSED; break; } + psa_set_rhandle(msg.handle, psa_operation); break; } @@ -109,7 +114,6 @@ static void psa_mac_operation(void) } bytes_read = psa_read(msg.handle, 0, &psa_crypto, msg.in_size[0]); - if (bytes_read != msg.in_size[0]) { SPM_PANIC("SPM read length mismatch"); } @@ -135,6 +139,7 @@ static void psa_mac_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, input_ptr, msg.in_size[1]); @@ -164,17 +169,19 @@ static void psa_mac_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + status = psa_mac_sign_finish(msg.rhandle, mac, mac_size, &mac_length); - if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, mac, mac_length); psa_write(msg.handle, 1, &mac_length, sizeof(mac_length)); } + mbedtls_free(mac); break; } + case PSA_MAC_VERIFY_FINISH: { size_t mac_length = 0; bytes_read = psa_read(msg.handle, 1, &mac_length, @@ -183,61 +190,71 @@ static void psa_mac_operation(void) mac_length != msg.in_size[2]) { SPM_PANIC("SPM read length mismatch"); } + uint8_t *mac = mbedtls_calloc(1, mac_length); if (mac == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 2, mac, msg.in_size[2]); if (bytes_read != msg.in_size[2]) { SPM_PANIC("SPM read length mismatch"); } + status = psa_mac_verify_finish(msg.rhandle, mac, mac_length); mbedtls_free(mac); break; } + case PSA_MAC_ABORT: { status = psa_mac_abort(msg.rhandle); break; } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; } + break; } + break; } + case PSA_IPC_DISCONNECT: { psa_mac_abort(msg.rhandle); if (msg.rhandle != NULL) { mbedtls_free(msg.rhandle); } + break; } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } + psa_reply(msg.handle, (psa_error_t) status); } - static void psa_hash_operation(void) { psa_msg_t msg = { 0 }; psa_status_t status = PSA_SUCCESS; psa_get(PSA_HASH, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: { psa_hash_operation_t *psa_operation = mbedtls_calloc(1, sizeof(psa_hash_operation_t)); if (psa_operation == NULL) { - status = PSA_ERROR_INSUFFICIENT_MEMORY; + status = PSA_CONNECTION_REFUSED; break; } + psa_set_rhandle(msg.handle, psa_operation); break; } @@ -252,7 +269,6 @@ static void psa_hash_operation(void) } bytes_read = psa_read(msg.handle, 0, &psa_crypto, msg.in_size[0]); - if (bytes_read != msg.in_size[0]) { SPM_PANIC("SPM read length mismatch"); } @@ -270,6 +286,7 @@ static void psa_hash_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, input_ptr, msg.in_size[1]); @@ -291,15 +308,16 @@ static void psa_hash_operation(void) if (bytes_read != msg.in_size[1]) { SPM_PANIC("SPM read length mismatch"); } + size_t hash_length = 0; uint8_t *hash = mbedtls_calloc(1, hash_size); if (hash == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + status = psa_hash_finish(msg.rhandle, hash, hash_size, &hash_length); - if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, hash, hash_length); psa_write(msg.handle, 1, &hash_length, @@ -309,6 +327,7 @@ static void psa_hash_operation(void) mbedtls_free(hash); break; } + case PSA_HASH_VERIFY: { size_t hash_length = 0; bytes_read = psa_read(msg.handle, 1, &hash_length, @@ -317,39 +336,48 @@ static void psa_hash_operation(void) hash_length != msg.in_size[2]) { SPM_PANIC("SPM read length mismatch"); } + uint8_t *hash = mbedtls_calloc(1, hash_length); if (hash == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 2, hash, msg.in_size[2]); if (bytes_read != msg.in_size[2]) { SPM_PANIC("SPM read length mismatch"); } + status = psa_hash_verify(msg.rhandle, hash, hash_length); mbedtls_free(hash); break; } + case PSA_HASH_ABORT: { status = psa_hash_abort(msg.rhandle); break; } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; } } + break; } + case PSA_IPC_DISCONNECT: { psa_hash_abort(msg.rhandle); if (msg.rhandle != NULL) { mbedtls_free(msg.rhandle); } + break; } + default: { - status = PSA_ERROR_INSUFFICIENT_MEMORY; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } @@ -363,10 +391,11 @@ static void psa_asymmetric_operation(void) psa_status_t status = PSA_SUCCESS; psa_get(PSA_ASYMMETRIC, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: + case PSA_IPC_DISCONNECT: { break; + } case PSA_IPC_CALL: { if (msg.in_size[0] != sizeof(psa_crypto_ipc_asymmetric_t)) { @@ -378,7 +407,6 @@ static void psa_asymmetric_operation(void) psa_crypto_ipc_asymmetric_t psa_crypto = {0}; bytes_read = psa_read(msg.handle, 0, &psa_crypto, msg.in_size[0]); - if (bytes_read != msg.in_size[0]) { SPM_PANIC("SPM read length mismatch"); } @@ -407,6 +435,7 @@ static void psa_asymmetric_operation(void) if (bytes_read != msg.in_size[1]) { SPM_PANIC("SPM read length mismatch"); } + status = psa_asymmetric_sign(psa_crypto.key, psa_crypto.alg, hash, @@ -433,11 +462,13 @@ static void psa_asymmetric_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, signature, msg.in_size[1]); if (bytes_read != msg.in_size[1]) { SPM_PANIC("SPM read length mismatch"); } + hash = mbedtls_calloc(1, msg.in_size[2]); if (hash == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; @@ -473,6 +504,7 @@ static void psa_asymmetric_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, buffer, msg.in_size[1]); if (bytes_read != msg.in_size[1]) { @@ -481,7 +513,6 @@ static void psa_asymmetric_operation(void) input = buffer; salt = buffer + psa_crypto.input_length; - output = mbedtls_calloc(1, msg.out_size[0]); if (output == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; @@ -513,6 +544,7 @@ static void psa_asymmetric_operation(void) if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, output, output_length); } + psa_write(msg.handle, 1, &output_length, sizeof(output_length)); @@ -520,18 +552,22 @@ static void psa_asymmetric_operation(void) mbedtls_free(buffer); break; } - break; - default: + default: { status = PSA_ERROR_NOT_SUPPORTED; + break; + } } - } - case PSA_IPC_DISCONNECT: + break; + } - default: - status = PSA_ERROR_NOT_SUPPORTED; + default: { + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); + break; + } } + psa_reply(msg.handle, (psa_error_t) status); } @@ -539,11 +575,13 @@ static void psa_aead_operation() { psa_msg_t msg = { 0 }; psa_status_t status = PSA_SUCCESS; - psa_get(PSA_AEAD, &msg); + psa_get(PSA_AEAD, &msg); switch (msg.type) { case PSA_IPC_CONNECT: + case PSA_IPC_DISCONNECT: { break; + } case PSA_IPC_CALL: { if (msg.in_size[0] != sizeof(psa_crypto_ipc_aead_t)) { @@ -555,7 +593,6 @@ static void psa_aead_operation() psa_crypto_ipc_aead_t psa_crypto = {0}; bytes_read = psa_read(msg.handle, 0, &psa_crypto, msg.in_size[0]); - if (bytes_read != msg.in_size[0]) { SPM_PANIC("SPM read length mismatch"); } @@ -573,6 +610,7 @@ static void psa_aead_operation() status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, buffer, msg.in_size[1]); if (bytes_read != msg.in_size[1]) { @@ -623,18 +661,22 @@ static void psa_aead_operation() mbedtls_free(output); break; } - default: + + default: { status = PSA_ERROR_NOT_SUPPORTED; break; + } } + break; } - case PSA_IPC_DISCONNECT: - break; - default: - status = PSA_ERROR_NOT_SUPPORTED; + default: { + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); + break; + } } + psa_reply(msg.handle, (psa_error_t) status); } @@ -644,18 +686,19 @@ static void psa_symmetric_operation(void) psa_msg_t msg = { 0 }; psa_get(PSA_SYMMETRIC, &msg); - switch (msg.type) { case PSA_IPC_CONNECT: { psa_cipher_operation_t *psa_operation = mbedtls_calloc(1, sizeof(psa_cipher_operation_t)); if (psa_operation == NULL) { - status = PSA_ERROR_INSUFFICIENT_MEMORY; + status = PSA_CONNECTION_REFUSED; break; } + psa_set_rhandle(msg.handle, psa_operation); break; } + case PSA_IPC_CALL: { uint32_t bytes_read; psa_crypto_ipc_t psa_crypto_ipc = { 0 }; @@ -664,6 +707,7 @@ static void psa_symmetric_operation(void) status = PSA_ERROR_COMMUNICATION_FAILURE; break; } + bytes_read = psa_read(msg.handle, 0, &psa_crypto_ipc, msg.in_size[0]); if (bytes_read != msg.in_size[0]) { @@ -677,12 +721,14 @@ static void psa_symmetric_operation(void) psa_crypto_ipc.alg); break; } + case PSA_CIPHER_DECRYPT_SETUP: { status = psa_cipher_decrypt_setup(msg.rhandle, psa_crypto_ipc.key, psa_crypto_ipc.alg); break; } + case PSA_CIPHER_GENERATE_IV: { size_t iv_length = 0; size_t iv_size = msg.out_size[0]; @@ -697,6 +743,7 @@ static void psa_symmetric_operation(void) } break; } + case PSA_CIPHER_SET_IV: { size_t iv_length = msg.in_size[1]; unsigned char iv[PSA_AEAD_MAX_NONCE_SIZE] = { 0 }; @@ -709,6 +756,7 @@ static void psa_symmetric_operation(void) break; } + case PSA_CIPHER_UPDATE: { size_t input_length = msg.in_size[1]; size_t output_size = msg.out_size[0]; @@ -721,6 +769,7 @@ static void psa_symmetric_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 1, input, input_length); if (bytes_read != input_length) { @@ -741,10 +790,12 @@ static void psa_symmetric_operation(void) psa_write(msg.handle, 1, &output_length, sizeof(output_length)); } + mbedtls_free(input); mbedtls_free(output); break; } + case PSA_CIPHER_FINISH: { uint8_t *output; size_t output_size = msg.out_size[0]; @@ -766,26 +817,32 @@ static void psa_symmetric_operation(void) mbedtls_free(output); break; } + case PSA_CIPHER_ABORT: { status = psa_cipher_abort(msg.rhandle); break; } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; } } + break; } + case PSA_IPC_DISCONNECT: { psa_cipher_abort(msg.rhandle); if (msg.rhandle != NULL) { mbedtls_free(msg.rhandle); } + break; } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } @@ -798,11 +855,12 @@ static void psa_key_management_operation(void) { psa_msg_t msg = { 0 }; psa_status_t status = PSA_SUCCESS; - psa_get(PSA_KEY_MNG, &msg); + psa_get(PSA_KEY_MNG, &msg); switch (msg.type) { - case PSA_IPC_CONNECT: { - break; /* do nothing*/ + case PSA_IPC_CONNECT: + case PSA_IPC_DISCONNECT: { + break; } case PSA_IPC_CALL: { @@ -832,8 +890,10 @@ static void psa_key_management_operation(void) psa_write(msg.handle, 0, &lifetime, lifetime_length); } + break; } + case PSA_SET_KEY_LIFETIME: { size_t lifetime_length = msg.in_size[1]; psa_key_lifetime_t lifetime; @@ -843,9 +903,11 @@ static void psa_key_management_operation(void) if (bytes_read != lifetime_length) { SPM_PANIC("SPM read length mismatch"); } + status = psa_set_key_lifetime(psa_key_mng.key, lifetime); break; } + case PSA_SET_KEY_POLICY: { size_t policy_length = msg.in_size[1]; psa_key_policy_t policy; @@ -855,9 +917,11 @@ static void psa_key_management_operation(void) if (bytes_read != policy_length) { SPM_PANIC("SPM read length mismatch"); } + status = psa_set_key_policy(psa_key_mng.key, &policy); break; } + case PSA_GET_KEY_POLICY: { size_t policy_size = msg.out_size[0]; psa_key_policy_t policy; @@ -866,8 +930,10 @@ static void psa_key_management_operation(void) if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, &policy, policy_size); } + break; } + case PSA_IMPORT_KEY: { size_t key_length = msg.in_size[1]; uint8_t *key = mbedtls_calloc(1, key_length); @@ -880,16 +946,19 @@ static void psa_key_management_operation(void) if (bytes_read != key_length) { SPM_PANIC("SPM read length mismatch"); } + status = psa_import_key(psa_key_mng.key, psa_key_mng.type, key, key_length); mbedtls_free(key); break; } + case PSA_DESTROY_KEY: { status = psa_destroy_key(psa_key_mng.key); break; } + case PSA_GET_KEY_INFORMATION: { psa_key_type_t type; size_t bits; @@ -903,8 +972,10 @@ static void psa_key_management_operation(void) psa_write(msg.handle, 1, &bits, sizeof(size_t)); } } + break; } + case PSA_EXPORT_KEY: { size_t key_length = msg.out_size[0]; size_t data_length; @@ -925,6 +996,7 @@ static void psa_key_management_operation(void) mbedtls_free(key); break; } + case PSA_EXPORT_PUBLIC_KEY: { size_t key_length = msg.out_size[0]; size_t data_length; @@ -945,6 +1017,7 @@ static void psa_key_management_operation(void) mbedtls_free(key); break; } + case PSA_GENERATE_KEY: { size_t bits; size_t bits_size = msg.in_size[1]; @@ -963,37 +1036,36 @@ static void psa_key_management_operation(void) break; } - bytes_read = psa_read(msg.handle, 2, parameter, parameter_size); - if (bytes_read != parameter_size) { SPM_PANIC("SPM read length mismatch"); } } + status = psa_generate_key(psa_key_mng.key, psa_key_mng.type, bits, parameter, parameter_size); mbedtls_free(parameter); - break; } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; } } + break; } - case PSA_IPC_DISCONNECT: { - break; /* do nothing*/ - } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } + psa_reply(msg.handle, status); } @@ -1001,44 +1073,49 @@ static void psa_entropy_operation(void) { psa_msg_t msg = { 0 }; psa_status_t status = PSA_SUCCESS; - psa_get(PSA_ENTROPY_INJECT, &msg); -#if ( defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_PSA_HAS_ITS_IO) ) + psa_get(PSA_ENTROPY_INJECT, &msg); switch (msg.type) { - case PSA_IPC_CONNECT: { - break; /* do nothing */ + case PSA_IPC_CONNECT: + case PSA_IPC_DISCONNECT: { + status = PSA_SUCCESS; + break; } + case PSA_IPC_CALL: { +#if (defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_PSA_HAS_ITS_IO)) uint32_t bytes_read; size_t seed_size = msg.in_size[0]; if (MBEDTLS_ENTROPY_MAX_SEED_SIZE < seed_size) { status = PSA_ERROR_INVALID_ARGUMENT; break; } + unsigned char *seed = mbedtls_calloc(1, seed_size); if (seed == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + bytes_read = psa_read(msg.handle, 0, seed, seed_size); if (bytes_read != seed_size) { SPM_PANIC("SPM read length mismatch"); } + status = mbedtls_psa_inject_entropy(seed, seed_size); mbedtls_free(seed); +#else + status = PSA_ERROR_NOT_SUPPORTED; +#endif /* MBEDTLS_ENTROPY_NV_SEED && MBEDTLS_PSA_HAS_ITS_IO*/ break; } - case PSA_IPC_DISCONNECT: { - break; /* do nothing */ - } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } -#else - status = PSA_ERROR_NOT_SUPPORTED; -#endif /* MBEDTLS_ENTROPY_NV_SEED && MBEDTLS_PSA_HAS_ITS_IO*/ + psa_reply(msg.handle, status); } @@ -1047,11 +1124,12 @@ static void psa_rng_operation(void) { psa_msg_t msg = { 0 }; psa_status_t status = PSA_SUCCESS; - psa_get(PSA_RNG, &msg); + psa_get(PSA_RNG, &msg); switch (msg.type) { - case PSA_IPC_CONNECT: { - break; /* do nothing*/ + case PSA_IPC_CONNECT: + case PSA_IPC_DISCONNECT: { + break; } case PSA_IPC_CALL: { @@ -1061,21 +1139,22 @@ static void psa_rng_operation(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + status = psa_generate_random(random, random_size); if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, random, random_size); } + mbedtls_free(random); break; } - case PSA_IPC_DISCONNECT: { - break; /* do nothing*/ - } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } + psa_reply(msg.handle, status); } @@ -1095,9 +1174,11 @@ void psa_crypto_generator_operations(void) status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } + psa_set_rhandle(msg.handle, psa_operation); break; } + case PSA_IPC_CALL: { uint32_t bytes_read; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0 }; @@ -1105,6 +1186,7 @@ void psa_crypto_generator_operations(void) status = PSA_ERROR_COMMUNICATION_FAILURE; break; } + bytes_read = psa_read(msg.handle, 0, &psa_crypto_ipc, msg.in_size[0]); if (bytes_read != msg.in_size[0]) { @@ -1123,6 +1205,7 @@ void psa_crypto_generator_operations(void) break; } + case PSA_GENERATOR_READ: { uint8_t *output = NULL; size_t output_length = msg.out_size[0]; @@ -1141,8 +1224,8 @@ void psa_crypto_generator_operations(void) mbedtls_free(output); break; - } + case PSA_GENERATOR_IMPORT_KEY: { psa_key_type_t type; size_t bits; @@ -1163,12 +1246,13 @@ void psa_crypto_generator_operations(void) bits, msg.rhandle); break; } + case PSA_GENERATOR_ABORT: { status = psa_generator_abort(msg.rhandle); break; } - case PSA_KEY_DERIVATION: { + case PSA_KEY_DERIVATION: { uint8_t *salt = mbedtls_calloc(1, msg.in_size[1]); if (salt == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; @@ -1204,6 +1288,7 @@ void psa_crypto_generator_operations(void) break; } + case PSA_KEY_AGREEMENT: { uint8_t *private_key = mbedtls_calloc(1, msg.in_size[1]); @@ -1225,11 +1310,13 @@ void psa_crypto_generator_operations(void) break; } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; } } + break; } case PSA_IPC_DISCONNECT: { @@ -1237,10 +1324,12 @@ void psa_crypto_generator_operations(void) if (msg.rhandle != NULL) { mbedtls_free(msg.rhandle); } + break; } + default: { - status = PSA_ERROR_NOT_SUPPORTED; + SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); break; } } @@ -1249,13 +1338,10 @@ void psa_crypto_generator_operations(void) } -void part_main(void *ptr) +void crypto_main(void *ptr) { - uint32_t signals = 0; - psa_status_t status = PSA_SUCCESS; - while (1) { - signals = psa_wait_any(PSA_BLOCK); + uint32_t signals = psa_wait_any(PSA_BLOCK); if (signals & PSA_CRYPTO_INIT) { psa_crypto_init_operation(); } diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.c b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c similarity index 79% rename from components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.c rename to components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c index 8a86d8cea0a..fdba6a48f17 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.c +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c @@ -19,6 +19,8 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ #include "cmsis.h" @@ -26,31 +28,31 @@ #include "rtx_os.h" #include "spm_panic.h" #include "spm_internal.h" -#include "psa_psa_f_partition.h" -#include "psa_psa_f_ifs.h" +#include "psa_crypto_srv_partition.h" +#include "psa_crypto_srv_ifs.h" #include "psa_its_ifs.h" /* Threads stacks */ -MBED_ALIGN(8) uint8_t psa_f_thread_stack[16384] = {0}; +MBED_ALIGN(8) uint8_t crypto_srv_thread_stack[16384] = {0}; /* Threads control blocks */ -osRtxThread_t psa_f_thread_cb = {0}; +osRtxThread_t crypto_srv_thread_cb = {0}; /* Thread attributes - for thread initialization */ -osThreadAttr_t psa_f_thread_attr = { - .name = "psa_f", +osThreadAttr_t crypto_srv_thread_attr = { + .name = "crypto_srv", .attr_bits = 0, - .cb_mem = &psa_f_thread_cb, - .cb_size = sizeof(psa_f_thread_cb), - .stack_mem = psa_f_thread_stack, + .cb_mem = &crypto_srv_thread_cb, + .cb_size = sizeof(crypto_srv_thread_cb), + .stack_mem = crypto_srv_thread_stack, .stack_size = 16384, .priority = osPriorityNormal, .tz_module = 0, .reserved = 0 }; -spm_rot_service_t psa_f_rot_services[PSA_F_ROT_SRV_COUNT] = { +spm_rot_service_t crypto_srv_rot_services[CRYPTO_SRV_ROT_SRV_COUNT] = { { .sid = PSA_CRYPTO_INIT_ID, .mask = PSA_CRYPTO_INIT, @@ -185,43 +187,43 @@ spm_rot_service_t psa_f_rot_services[PSA_F_ROT_SRV_COUNT] = { }, }; -/* External SIDs used by PSA_F */ -const uint32_t psa_f_external_sids[4] = { +/* External SIDs used by CRYPTO_SRV */ +const uint32_t crypto_srv_external_sids[4] = { PSA_ITS_GET, PSA_ITS_SET, PSA_ITS_INFO, PSA_ITS_REMOVE, }; -static osRtxMutex_t psa_f_mutex = {0}; -static const osMutexAttr_t psa_f_mutex_attr = { - .name = "psa_f_mutex", +static osRtxMutex_t crypto_srv_mutex = {0}; +static const osMutexAttr_t crypto_srv_mutex_attr = { + .name = "crypto_srv_mutex", .attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust, - .cb_mem = &psa_f_mutex, - .cb_size = sizeof(psa_f_mutex), + .cb_mem = &crypto_srv_mutex, + .cb_size = sizeof(crypto_srv_mutex), }; -extern void part_main(void *ptr); +extern void crypto_main(void *ptr); -void psa_f_init(spm_partition_t *partition) +void crypto_srv_init(spm_partition_t *partition) { if (NULL == partition) { SPM_PANIC("partition is NULL!\n"); } - partition->mutex = osMutexNew(&psa_f_mutex_attr); + partition->mutex = osMutexNew(&crypto_srv_mutex_attr); if (NULL == partition->mutex) { - SPM_PANIC("Failed to create mutex for secure partition psa_f!\n"); + SPM_PANIC("Failed to create mutex for secure partition crypto_srv!\n"); } - for (uint32_t i = 0; i < PSA_F_ROT_SRV_COUNT; ++i) { - psa_f_rot_services[i].partition = partition; + for (uint32_t i = 0; i < CRYPTO_SRV_ROT_SRV_COUNT; ++i) { + crypto_srv_rot_services[i].partition = partition; } - partition->rot_services = psa_f_rot_services; + partition->rot_services = crypto_srv_rot_services; - partition->thread_id = osThreadNew(part_main, NULL, &psa_f_thread_attr); + partition->thread_id = osThreadNew(crypto_main, NULL, &crypto_srv_thread_attr); if (NULL == partition->thread_id) { - SPM_PANIC("Failed to create start main thread of partition psa_f!\n"); + SPM_PANIC("Failed to create start main thread of partition crypto_srv!\n"); } } diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.h b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h similarity index 78% rename from components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.h rename to components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h index 5eed0e4b202..d60aeccf4f7 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_psa_f_partition.h +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h @@ -19,22 +19,24 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ -#ifndef PSA_PSA_F_PARTITION_H -#define PSA_PSA_F_PARTITION_H +#ifndef PSA_CRYPTO_SRV_PARTITION_H +#define PSA_CRYPTO_SRV_PARTITION_H -#define PSA_F_ID 35 +#define CRYPTO_SRV_ID 35 -#define PSA_F_ROT_SRV_COUNT (11UL) -#define PSA_F_EXT_ROT_SRV_COUNT (4UL) +#define CRYPTO_SRV_ROT_SRV_COUNT (11UL) +#define CRYPTO_SRV_EXT_ROT_SRV_COUNT (4UL) -/* PSA_F event flags */ -#define PSA_F_RESERVED1_POS (1UL) -#define PSA_F_RESERVED1_MSK (1UL << PSA_F_RESERVED1_POS) +/* CRYPTO_SRV event flags */ +#define CRYPTO_SRV_RESERVED1_POS (1UL) +#define CRYPTO_SRV_RESERVED1_MSK (1UL << CRYPTO_SRV_RESERVED1_POS) -#define PSA_F_RESERVED2_POS (2UL) -#define PSA_F_RESERVED2_MSK (1UL << PSA_F_RESERVED2_POS) +#define CRYPTO_SRV_RESERVED2_POS (2UL) +#define CRYPTO_SRV_RESERVED2_MSK (1UL << CRYPTO_SRV_RESERVED2_POS) @@ -61,7 +63,7 @@ #define PSA_ENTROPY_INJECT_POS (14UL) #define PSA_ENTROPY_INJECT (1UL << PSA_ENTROPY_INJECT_POS) -#define PSA_F_WAIT_ANY_SID_MSK (\ +#define CRYPTO_SRV_WAIT_ANY_SID_MSK (\ PSA_CRYPTO_INIT | \ PSA_MAC | \ PSA_HASH | \ @@ -74,11 +76,5 @@ PSA_GENERATOR | \ PSA_ENTROPY_INJECT) -/* -#define PSA_F_WAIT_ANY_MSK (\ - PSA_F_WAIT_ANY_SID_MSK) | \ - PSA_DOORBELL) -*/ - -#endif // PSA_PSA_F_PARTITION_H +#endif // PSA_CRYPTO_SRV_PARTITION_H diff --git a/components/TARGET_PSA/services/crypto/crypto_partition_psa.json b/components/TARGET_PSA/services/crypto/crypto_partition_psa.json index 4313706e192..80f2c141ff4 100755 --- a/components/TARGET_PSA/services/crypto/crypto_partition_psa.json +++ b/components/TARGET_PSA/services/crypto/crypto_partition_psa.json @@ -1,9 +1,9 @@ { - "name": "PSA_F", + "name": "CRYPTO_SRV", "type": "APPLICATION-ROT", "priority": "NORMAL", "id": "0x00000023", - "entry_point": "part_main", + "entry_point": "crypto_main", "stack_size": "0x4000", "heap_size": "0x400", "services": [ diff --git a/components/TARGET_PSA/services/crypto/psa_psa_f_ifs.h b/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h similarity index 85% rename from components/TARGET_PSA/services/crypto/psa_psa_f_ifs.h rename to components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h index 36919c3687d..0a5cd17d5ae 100644 --- a/components/TARGET_PSA/services/crypto/psa_psa_f_ifs.h +++ b/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h @@ -19,10 +19,12 @@ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * Template Version 1.0 + * Generated by tools/spm/generate_partition_code.py Version 1.0 **********************************************************************************************************************/ -#ifndef PSA_PSA_F_PARTITION_ROT_SERVICES_H -#define PSA_PSA_F_PARTITION_ROT_SERVICES_H +#ifndef PSA_CRYPTO_SRV_PARTITION_ROT_SERVICES_H +#define PSA_CRYPTO_SRV_PARTITION_ROT_SERVICES_H #define PSA_CRYPTO_INIT_ID 0x00000F00 #define PSA_MAC_ID 0x00000F01 @@ -36,4 +38,4 @@ #define PSA_GENERATOR_ID 0x00000F09 #define PSA_ENTROPY_ID 0x00000F0A -#endif // PSA_PSA_F_PARTITION_ROT_SERVICES_H +#endif // PSA_CRYPTO_SRV_PARTITION_ROT_SERVICES_H diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp index 1e520c5c93d..e6c515f93c5 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp +++ b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp @@ -22,6 +22,7 @@ #include "psa_prot_internal_storage.h" #include "pits_impl.h" #include "mbed_error.h" +#include "mbed_toolchain.h" #ifdef __cplusplus extern "C" @@ -48,52 +49,101 @@ const uint8_t base64_coding_table[] = { '4', '5', '6', '7', '8', '9', '+', '-' }; - +/* + * \brief Get default KVStore instance for internal flesh storage + * + * \return valid pointer to KVStore + */ static KVStore *get_kvstore_instance(void) { KVMap &kv_map = KVMap::get_instance(); - return kv_map.get_main_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); + if (!kvstore) { + // Can only happen due to system misconfiguration. + // Thus considered as unrecoverable error for runtime. + error("Failed getting kvstore instance\n"); + } + return kvstore; } -static void generate_fn(char *tdb_filename, uint32_t tdb_file_len, uint32_t uid, uint32_t pid) +/* + * \brief Convert KVStore stauts codes to PSA internal storage status codes + * + * \param[in] status - KVStore status code + * \return PSA internal storage status code + */ +static psa_its_status_t convert_status(int status) +{ + switch (status) { + case MBED_SUCCESS: + return PSA_ITS_SUCCESS; + case MBED_ERROR_WRITE_PROTECTED: + return PSA_ITS_ERROR_WRITE_ONCE; + case MBED_ERROR_MEDIA_FULL: + return PSA_ITS_ERROR_INSUFFICIENT_SPACE; + case MBED_ERROR_ITEM_NOT_FOUND: + return PSA_ITS_ERROR_KEY_NOT_FOUND; + default: + return PSA_ITS_ERROR_STORAGE_FAILURE; + } +} + +/* + * \brief Logic shift right + * + * \note must operate on unsinged integers to prevent negative carry + * \param x[in] input number for shifting + * \param n[in] number of bits to shift right + * \return the result + */ +MBED_FORCEINLINE uint32_t lsr(uint32_t x, uint32_t n) +{ + return x >> n; +} + +/* + * \breif Generate KVStore file name + * + * Generate KVStore file name by Base64 encoding PID and UID with a delimiter. + * Delimiter is required for determining between PID and UID. + * + * \param[out] tdb_filename - pointer to a buffer for the file name + * \param[in] tdb_filename_size - output buffer size + * \param[in] uid - PSA internal storage unique ID + * \param[in] pid - owner PSA partition ID + */ +static void generate_fn(char *tdb_filename, uint32_t tdb_filename_size, uint32_t uid, int32_t pid) { MBED_ASSERT(tdb_filename != NULL); - MBED_ASSERT(tdb_file_len >= PSA_ITS_FILENAME_MAX_LEN); + MBED_ASSERT(tdb_filename_size == PSA_ITS_FILENAME_MAX_LEN); uint8_t filename_idx = 0; - uint32_t tmp_uid = uid; - uint32_t tmp_pid = pid; + uint32_t unsigned_pid = (uint32_t)pid; // binary only representation for bitwise operations - // Iterate on UID; each time convert 6 bits of UID into a character; first iteration must be done + // Iterate on PID; each time convert 6 bits of PID into a character; first iteration must be done do { - MBED_ASSERT(filename_idx <= PSA_ITS_FILENAME_MAX_LEN); - tdb_filename[filename_idx++] = base64_coding_table[tmp_uid & 0x3F]; - tmp_uid = tmp_uid >> 6; - } while (tmp_uid != 0); + tdb_filename[filename_idx++] = base64_coding_table[unsigned_pid & 0x3F]; + unsigned_pid = lsr(unsigned_pid, 6); + } while (unsigned_pid != 0); // Write delimiter - MBED_ASSERT(filename_idx <= PSA_ITS_FILENAME_MAX_LEN); tdb_filename[filename_idx++] = '#'; - // Iterate on PID; each time convert 6 bits of PID into a character; first iteration must be done + // Iterate on UID; each time convert 6 bits of UID into a character; first iteration must be done do { - MBED_ASSERT(filename_idx <= PSA_ITS_FILENAME_MAX_LEN); - tdb_filename[filename_idx++] = base64_coding_table[tmp_pid & 0x3F]; - tmp_pid = tmp_pid >> 6; - } while (tmp_pid != 0); + tdb_filename[filename_idx++] = base64_coding_table[uid & 0x3F]; + uid = lsr(uid, 6); + } while (uid != 0); + tdb_filename[filename_idx++] = '\0'; MBED_ASSERT(filename_idx <= PSA_ITS_FILENAME_MAX_LEN); - tdb_filename[filename_idx] = '\0'; } - -psa_its_status_t psa_its_set_impl(uint32_t pid, uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags) +psa_its_status_t psa_its_set_impl(int32_t pid, uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags) { KVStore *kvstore = get_kvstore_instance(); - if (!kvstore) { - error("psa_its_set_impl() - Failed getting kvstore instance\n"); - } + MBED_ASSERT(kvstore); if ((create_flags != 0) && (create_flags != PSA_ITS_WRITE_ONCE_FLAG)) { return PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED; @@ -108,53 +158,26 @@ psa_its_status_t psa_its_set_impl(uint32_t pid, uint32_t uid, uint32_t data_leng kv_create_flags = KVStore::WRITE_ONCE_FLAG; } - int kvstore_status = kvstore->set(kv_key, p_data, data_length, kv_create_flags); - - psa_its_status_t status = PSA_ITS_SUCCESS; - if (kvstore_status != MBED_SUCCESS) { - switch (kvstore_status) { - case MBED_ERROR_WRITE_PROTECTED: - status = PSA_ITS_ERROR_WRITE_ONCE; - break; - case MBED_ERROR_MEDIA_FULL: - status = PSA_ITS_ERROR_INSUFFICIENT_SPACE; - break; - default: - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - } + int status = kvstore->set(kv_key, p_data, data_length, kv_create_flags); - return status; + return convert_status(status); } -psa_its_status_t psa_its_get_impl(uint32_t pid, uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) +psa_its_status_t psa_its_get_impl(int32_t pid, uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) { KVStore *kvstore = get_kvstore_instance(); - if (!kvstore) { - error("psa_its_get_impl() - Failed getting kvstore instance\n"); - } + MBED_ASSERT(kvstore); // Generate KVStore key char kv_key[PSA_ITS_FILENAME_MAX_LEN] = {'\0'}; generate_fn(kv_key, PSA_ITS_FILENAME_MAX_LEN, uid, pid); KVStore::info_t kv_info; - int kvstore_status = kvstore->get_info(kv_key, &kv_info); - - psa_its_status_t status = PSA_ITS_SUCCESS; - if (kvstore_status != MBED_SUCCESS) { - switch (kvstore_status) { - case MBED_ERROR_ITEM_NOT_FOUND: - status = PSA_ITS_ERROR_KEY_NOT_FOUND; - break; - default: - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - } + int status = kvstore->get_info(kv_key, &kv_info); - if (kvstore_status == MBED_SUCCESS) { + if (status == MBED_SUCCESS) { if (data_offset > kv_info.size) { - return PSA_PS_ERROR_OFFSET_INVALID; + return PSA_ITS_ERROR_OFFSET_INVALID; } // Verify (size + offset) does not wrap around @@ -167,52 +190,31 @@ psa_its_status_t psa_its_get_impl(uint32_t pid, uint32_t uid, uint32_t data_offs } size_t actual_size = 0; - kvstore_status = kvstore->get(kv_key, p_data, data_length, &actual_size, data_offset); + status = kvstore->get(kv_key, p_data, data_length, &actual_size, data_offset); - if (kvstore_status == MBED_SUCCESS) { + if (status == MBED_SUCCESS) { if (actual_size < data_length) { status = PSA_ITS_ERROR_INCORRECT_SIZE; } - } else { - switch (kvstore_status) { - case MBED_ERROR_ITEM_NOT_FOUND: - status = PSA_ITS_ERROR_KEY_NOT_FOUND; - break; - default: - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } } } - return status; + return convert_status(status); } -psa_its_status_t psa_its_get_info_impl(uint32_t pid, uint32_t uid, struct psa_its_info_t *p_info) +psa_its_status_t psa_its_get_info_impl(int32_t pid, uint32_t uid, struct psa_its_info_t *p_info) { KVStore *kvstore = get_kvstore_instance(); - if (!kvstore) { - error("psa_its_get_info_impl() - Failed getting kvstore instance\n"); - } + MBED_ASSERT(kvstore); // Generate KVStore key char kv_key[PSA_ITS_FILENAME_MAX_LEN] = {'\0'}; generate_fn(kv_key, PSA_ITS_FILENAME_MAX_LEN, uid, pid); KVStore::info_t kv_info; - int kvstore_status = kvstore->get_info(kv_key, &kv_info); - - psa_its_status_t status = PSA_ITS_SUCCESS; - if (kvstore_status != MBED_SUCCESS) { - switch (kvstore_status) { - case MBED_ERROR_ITEM_NOT_FOUND: - status = PSA_ITS_ERROR_KEY_NOT_FOUND; - break; - default: - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - } + int status = kvstore->get_info(kv_key, &kv_info); - if (kvstore_status == MBED_SUCCESS) { + if (status == MBED_SUCCESS) { p_info->flags = 0; if (kv_info.flags & KVStore::WRITE_ONCE_FLAG) { p_info->flags |= PSA_ITS_WRITE_ONCE_FLAG; @@ -220,37 +222,21 @@ psa_its_status_t psa_its_get_info_impl(uint32_t pid, uint32_t uid, struct psa_it p_info->size = (uint32_t)(kv_info.size); // kv_info.size is of type size_t } - return status; + return convert_status(status); } -psa_its_status_t psa_its_remove_impl(uint32_t pid, uint32_t uid) +psa_its_status_t psa_its_remove_impl(int32_t pid, uint32_t uid) { KVStore *kvstore = get_kvstore_instance(); - if (!kvstore) { - error("psa_its_remove_impl() - Failed getting kvstore instance\n"); - } + MBED_ASSERT(kvstore); // Generate KVStore key char kv_key[PSA_ITS_FILENAME_MAX_LEN] = {'\0'}; generate_fn(kv_key, PSA_ITS_FILENAME_MAX_LEN, uid, pid); - int kvstore_status = kvstore->remove(kv_key); - - psa_its_status_t status = PSA_ITS_SUCCESS; - if (kvstore_status != MBED_SUCCESS) { - switch (kvstore_status) { - case MBED_ERROR_WRITE_PROTECTED: - status = PSA_ITS_ERROR_WRITE_ONCE; - break; - case MBED_ERROR_ITEM_NOT_FOUND: - status = PSA_ITS_ERROR_KEY_NOT_FOUND; - break; - default: - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - } + int status = kvstore->remove(kv_key); - return status; + return convert_status(status); } #ifdef __cplusplus diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.h b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.h index 06bde2d8fd5..bb41bedbb21 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.h +++ b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.h @@ -28,10 +28,10 @@ extern "C" #define PITS_DATA_PTR_AT_OFFSET(ptr, offset) ((void *)(((uintptr_t)ptr) + ((uintptr_t)offset))) -psa_its_status_t psa_its_set_impl(uint32_t pid, uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags); -psa_its_status_t psa_its_get_impl(uint32_t pid, uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data); -psa_its_status_t psa_its_get_info_impl(uint32_t pid, uint32_t uid, struct psa_its_info_t *p_info); -psa_its_status_t psa_its_remove_impl(uint32_t pid, uint32_t uid); +psa_its_status_t psa_its_set_impl(int32_t pid, uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags); +psa_its_status_t psa_its_get_impl(int32_t pid, uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data); +psa_its_status_t psa_its_get_info_impl(int32_t pid, uint32_t uid, struct psa_its_info_t *p_info); +psa_its_status_t psa_its_remove_impl(int32_t pid, uint32_t uid); #ifdef __cplusplus } diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/psa_prot_internal_storage.h b/components/TARGET_PSA/services/psa_prot_internal_storage/psa_prot_internal_storage.h index 366f7897ffc..26766ad5337 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/psa_prot_internal_storage.h +++ b/components/TARGET_PSA/services/psa_prot_internal_storage/psa_prot_internal_storage.h @@ -57,7 +57,7 @@ typedef uint32_t psa_its_status_t; #define PSA_ITS_ERROR_BAD_POINTER 6 /**< The operation failed because one of the provided pointers is invalid, for example is `NULL` or references memory the caller cannot access */ #define PSA_ITS_ERROR_KEY_NOT_FOUND 7 /**< The operation failed because the provided key value was not found in the storage */ #define PSA_ITS_ERROR_INCORRECT_SIZE 8 /**< The operation failed because the data associated with provided key is not the same size as `data_size` */ -#define PSA_PS_ERROR_OFFSET_INVALID 9 /**< The operation failed because an offset was supplied that is invalid for the existing data associated with the uid. For example, offset + size is +#define PSA_ITS_ERROR_OFFSET_INVALID 9 /**< The operation failed because an offset was supplied that is invalid for the existing data associated with the uid. For example, offset + size is past the end of the data */ /** @@ -98,7 +98,7 @@ psa_its_status_t psa_its_set(uint32_t uid, uint32_t data_length, const void *p_d * \retval PSA_ITS_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) * \retval PSA_ITS_ERROR_BAD_POINTER The operation failed because one of the provided pointers(`p_data`, `p_data_length`) * is invalid. For example is `NULL` or references memory the caller cannot access - * \retval PSA_PS_ERROR_OFFSET_INVALID The operation failed because an offset was supplied that is invalid for the existing data associated with the + * \retval PSA_ITS_ERROR_OFFSET_INVALID The operation failed because an offset was supplied that is invalid for the existing data associated with the * uid. For example, offset + size is invalid, */ psa_its_status_t psa_its_get(uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data); diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h b/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h index 8a1b7337ba7..76193715d72 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h +++ b/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h @@ -26,24 +26,22 @@ /* -------------------------------- Handle Manager Module ---------------------------- */ -/* The Handle Manager Module manages handles. - * - * It basically generates and exposes a unique handle identifier [handle] per - * handle memory [handle_mem] it receives from the user. - * Then users can use the exposed handle identifier to relate to the "registered" +/* + * The Handle Manager module generates and exposes a unique + * identifier (handle) per handle memory (handle_mem) it receives. + * You can use the exposed handle identifier to relate to the "registered" * handle memory. * - * Users can: - * - Ask for a unique handle identifier for a given handle memory [handle_create] + * You can: + * - Ask for a unique handle identifier for a given handle memory [`handle_create`]. * - Ask for a pointer to the handle memory corresponding to a - * handle identifier [handle_get_mem] - * - Remove a handle from the handle manager module [handle_destroy] + * handle identifier [`handle_get_mem`]. + * - Remove a handle from the handle manager module [`handle_destroy`]. * * Note: - * Handles generation is done exclusively. - * Once we got a handle, removing a handle or getting its memory can be - * done non-exclusive. - * The assumption is that only one context is dealing with a handle after it was + * Handle generation is done exclusively. + * Once you have a handle, you can remove or get its memory non-exclusively. + * The assumption is that only one context is dealing with a handle after it is * generated. */ @@ -61,9 +59,9 @@ extern "C" { #define PSA_HANDLE_MGR_INVALID_FRIEND_OWNER 0 // Denoting invalid friend or invalid owner -// Handles manager pool indexes must be in range 0 - 0x7FFF. -// The reason for this limitation is that the index is stored in the upper 16 bits of a handle, -// and the most significant bit must be zero to keep handles non negative. +// Handle manager pool indexes must be in range 0 - 0x7FFF. +// This is because the index is stored in the upper 16 bits of a handle, +// and the most significant bit must be zero to keep handles non-negative. #define PSA_HANDLE_MGR_MAX_HANDLES_NUM 0x8000 @@ -72,19 +70,19 @@ extern "C" { typedef struct psa_handle_item_t { - psa_handle_t handle; /* The user exposed handle [unique identifier] */ - int32_t handle_owner; /* The partition id of the handle creator - allowed to get_mem() / destroy() */ - int32_t handle_friend; /* The partition id of a "friend" partition - allowed to get_mem() */ - void *handle_mem; /* Points to memory allocated by the user */ + psa_handle_t handle; /* The user-exposed handle [unique identifier]. */ + int32_t handle_owner; /* The partition ID of the handle creator. Allowed to get_mem() / destroy(). */ + int32_t handle_friend; /* The partition ID of a "friend" partition. Allowed to get_mem(). */ + void *handle_mem; /* Points to memory allocated by the use.r */ } psa_handle_item_t; typedef struct psa_handle_manager_t { - uint32_t handle_generator; /* A counter supplying handle numbers */ - uint32_t pool_size; /* The maximum number of handles that pool can contain */ - psa_handle_item_t *handles_pool; /* Holding couples of handles and their memory "blocks" */ + uint32_t handle_generator; /* A counter supplying handle numbers. */ + uint32_t pool_size; /* The maximum number of handles that pool can contain. */ + psa_handle_item_t *handles_pool; /* Holds couples of handles and their memory "blocks". */ } psa_handle_manager_t; @@ -111,43 +109,43 @@ handles_pool /* - * @brief create unique handle identifier + * @brief Create unique handle identifier * - * This function generates a unique handle identifier, and "couples" it with the received handle memory. + * This function generates a unique handle identifier, and **couples** it with the received handle memory. * If there is no vacant space for the new handle, the function fails. * * @note This function is expected to pass since it is always coupled with memory pool allocation of the same size. * In case memory pool allocation fails, this function should not be called. - * This function will panic on non vacant space use case. + * This function will panic in the case of non-vacant space use. * - * @param[in] handle_mgr A pointer to the handle manager object - * @param[in] handle_mem A pointer to a pre-allocated handle memory to get a handle identifier for - * @param[in] friend_pid The partition id which is allowed to get_mem() and destroy() in addition to the handle owner. - * Use PSA_HANDLE_MGR_INVALID_FRIEND_OWNER to denote there is no friend partition. - * @return The created handle identifier + * @param[in] handle_mgr A pointer to the handle manager object. + * @param[in] handle_mem A pointer to a pre-allocated handle memory for which to get a handle identifier. + * @param[in] friend_pid The partition ID allowed to `get_mem()` and `destroy()` in addition to the handle owner. + * Use `PSA_HANDLE_MGR_INVALID_FRIEND_OWNER` to denote that there is no friend partition. + * @return The created handle identifier */ psa_handle_t psa_hndl_mgr_handle_create(psa_handle_manager_t *handle_mgr, void *handle_mem, int32_t friend_pid); /* - * @brief remove a handle from the handle manager. + * @brief Remove a handle from the handle manager. * - * @param handle_mgr A pointer to the handle manager object - * @param handle The handle to be removed + * @param handle_mgr A pointer to the handle manager object. + * @param handle The handle to be removed. */ void psa_hndl_mgr_handle_destroy(psa_handle_manager_t *handle_mgr, psa_handle_t handle); /* - * @brief dereference handle + * @brief De-reference handle * * This function retrieves the pointer associated with the input . * - * @note This function will panic in case caller not allowed to dereference the memory - * or handler does not correspond to a valid existing handle + * @note This function will panic if caller is not allowed to de-reference the memory, + * or handler does not correspond to a valid existing handle. * * @param handle_mgr A pointer to the handle manager object. - * @param handle The handle for which we request the corresponding memory handle. + * @param handle The handle for which you request the corresponding memory handle. * @return void* A pointer to the memory corresponding to the handle. */ void *psa_hndl_mgr_handle_get_mem(psa_handle_manager_t *handle_mgr, psa_handle_t handle); diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c b/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c index b78a4fbba8c..6710b1f9ea1 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c +++ b/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c @@ -27,33 +27,33 @@ #include "spm_internal.h" #include "handles_manager.h" #include "cmsis.h" +#include "psa_crypto_srv_partition.h" #include "psa_its_partition.h" -#include "psa_psa_f_partition.h" -extern const uint32_t psa_f_external_sids[4]; +extern const uint32_t crypto_srv_external_sids[4]; __attribute__((weak)) spm_partition_t g_partitions[2] = { { - .partition_id = ITS_ID, + .partition_id = CRYPTO_SRV_ID, .thread_id = 0, - .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = ITS_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, + .rot_services_count = CRYPTO_SRV_ROT_SRV_COUNT, + .extern_sids = crypto_srv_external_sids, + .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, { - .partition_id = PSA_F_ID, + .partition_id = ITS_ID, .thread_id = 0, - .flags_rot_srv = PSA_F_WAIT_ANY_SID_MSK, + .flags_rot_srv = ITS_WAIT_ANY_SID_MSK, .flags_interrupts = 0, .rot_services = NULL, - .rot_services_count = PSA_F_ROT_SRV_COUNT, - .extern_sids = psa_f_external_sids, - .extern_sids_count = PSA_F_EXT_ROT_SRV_COUNT, + .rot_services_count = ITS_ROT_SRV_COUNT, + .extern_sids = NULL, + .extern_sids_count = ITS_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, }; @@ -68,8 +68,8 @@ __attribute__((weak)) const uint32_t mem_region_count = 0; // forward declaration of partition initializers +void crypto_srv_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); -void psa_f_init(spm_partition_t *partition); __attribute__((weak)) uint32_t init_partitions(spm_partition_t **partitions) @@ -78,8 +78,8 @@ uint32_t init_partitions(spm_partition_t **partitions) SPM_PANIC("partitions is NULL!\n"); } - its_init(&(g_partitions[0])); - psa_f_init(&(g_partitions[1])); + crypto_srv_init(&(g_partitions[0])); + its_init(&(g_partitions[1])); *partitions = g_partitions; return 2; diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h b/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h index f158f5760e5..0b3e1246b8e 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h +++ b/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h @@ -110,11 +110,11 @@ typedef struct spm_ipc_channel { struct spm_partition *src_partition; /* Pointer to the Partition which connects to the Root of Trust Service.*/ spm_rot_service_t *dst_rot_service; /* Pointer to the connected Root of Trust Service.*/ void *rhandle; /* Reverse handle to be used for this channel.*/ - void *msg_ptr; /* message data sent from user */ - struct spm_ipc_channel *next; /* Next channel in the chain */ + void *msg_ptr; /* Message data sent from user. */ + struct spm_ipc_channel *next; /* Next channel in the chain.*/ uint8_t msg_type; /* The message type.*/ uint8_t state; /* The current processing state of the channel.*/ - uint8_t is_dropped; + uint8_t is_dropped; /* Indicates whether the channel has been dropped by the partition.*/ } spm_ipc_channel_t; /* @@ -127,7 +127,7 @@ typedef struct spm_active_msg { } spm_active_msg_t; /* - * Structure containing resources and attributes of a Secure Partition. + * Structure containing resources and attributes of a secure partition. */ typedef struct spm_partition { const int32_t partition_id; /* The Partition ID.*/ @@ -136,7 +136,7 @@ typedef struct spm_partition { const uint32_t flags_interrupts; /* Mask of all the IRQs & doorbell which the partition supports.*/ spm_rot_service_t *rot_services; /* Array of the Partition's Root of Trust Services.*/ const uint32_t rot_services_count; /* Number of the Partition's Root of Trust Services.*/ - const uint32_t *extern_sids; /* Array of Root of Trust Service IDs which the partition can connect to.*/ + const uint32_t *extern_sids; /* Array of Root of Trust Service IDs that the partition can connect to.*/ const uint32_t extern_sids_count; /* Number of Root of Trust Services which the partition can connect to.*/ osMutexId_t mutex; /* Mutex for all rot_service's queues operations. */ spm_signal_to_irq_mapper_t irq_mapper; /* a function which maps signal to irq number*/ @@ -171,19 +171,19 @@ const mem_region_t *get_mem_regions(int32_t partition_id, uint32_t *region_count // Platform dependent APIs /* - * Validates a memory block is accessable from a specific partition + * Validates that a memory block accessible from a specific partition * - * @param[in] ptr pointer to the beggining of the memory block. - * @param[in] size size of the memory block in bytes. - * @param[in] accessing_partition which partition is trying to access the memory. - * @return true if the entire memory block is accessable from given partition. + * @param[in] ptr - Pointer to the beggining of the memory block. + * @param[in] size - Size of the memory block in bytes. + * @param[in] accessing_partition - Which partition is trying to access the memory. + * @return `true` if the entire memory block is accessable from given partition. */ bool is_buffer_accessible(const void *ptr, size_t size, spm_partition_t *accessing_partition); /** * Alerts NSPE that a proccess (connect or call) has ended. * - * @param[in] completion_sem_id semaphore id in NSPE. + * @param[in] completion_sem_id - semaphore id in NSPE. */ void nspe_done(osSemaphoreId_t completion_sem_id); diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h b/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h index 718c512a2a2..c99efd7a0fc 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h +++ b/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h @@ -35,7 +35,7 @@ extern "C" { #endif /** @addtogroup RoT-Service-API - * The C interface for a Root of Trust Service in a partition. + * The C interface for a root of trust (RoT) Service in a partition. * @{ */ @@ -75,8 +75,8 @@ int32_t psa_identity(psa_handle_t msg_handle); /** * Get the message that corresponds to a given signal. * - * @param[in] signum an asserted signal returned from psa_wait(). - * @param[out] msg pointer to a psa_msg structure. + * @param[in] signum An asserted signal returned from psa_wait(). + * @param[out] msg Pointer to a psa_msg structure. */ void psa_get(psa_signal_t signum, psa_msg_t *msg); diff --git a/components/TARGET_PSA/spm/doc/INTRO.md b/components/TARGET_PSA/spm/doc/INTRO.md deleted file mode 100644 index 7796b339d0a..00000000000 --- a/components/TARGET_PSA/spm/doc/INTRO.md +++ /dev/null @@ -1,117 +0,0 @@ -## The Secure Partition Manager - -The **Secure Partition Manager (SPM)** is a Platform Security Architecture (PSA) compliant software hypervisor that creates and manages independent Secure Partitions on Arm Cortex®-M microcontrollers. It increases resilience against malware and protects secrets from leaking between different modules in the same application. The SPM complements other important security features, such as safe firmware updates and secure crypto libraries. - -The SPM provides hardware-enforced partitions for individual code blocks by limiting access to memories and peripherals using the existing hardware security features of the Cortex®-M microcontrollers. It isolates software in partitions, managing the execution of software within those partitions and providing Inter Process Communication (IPC) between the partitions. Correct use of SPM prevents malware from becoming resident on the device and enables protection of device secrets, such as cryptographic keys. - -### Isolating partitions in the Secure Processing Environment - -The SPM and the secure partitions are located in the Secure Processing Environment (SPE), isolating them from the Non-Secure Processing Environment (NSPE), which contains the application firmware, OS kernel and libraries, and other nonsecure hardware resources. - -A secure partition is a container for one or more root of trust services, and a platform may have multiple secure partitions. Secure partitions provide the execution environment for security functionality. - -Platform hardware, such as the Security Attribution Unit (SAU) and Memory Protection Unit (MPU) in the new ARMv8-M platforms, enforces the separation of partitions. Other platforms may use different mechanisms to provide equivalent isolation for the partitions. - -#### PSA levels of isolation - -If you are prototyping software or using platforms without SAU or MPU, you can choose to have no isolation between the SPE and NSPE (sometimes referred to as Level 0), though the PSA does not specify this. However, for production software, consider implementing one of the following levels of isolation: - -* **Level 1 - SPE isolation** In this level, the SPE is fully isolated from the nonsecure application firmware and hardware. -* **Level 2 - Root of Trust isolation** In this level, the SPE is fully isolated from the nonsecure application firmware and hardware and the trusted partitions (secure partitions that implement Root of Trust services) are isolated from other secure partitions. -* **Level 3 - Maximum firmware isolation** In this level, the SPE is fully isolated from the nonsecure application firmware and hardware, and all secure and trusted partitions are individually sandboxed from one another and from the SPM. - -### Using secure partitions - -Secure partitions are located within the SPE, and must contain at least one set of related security operations (known as a root of trust service) or at least one Interrupt Request (IRQ). You can have multiple root of trust services in a single secure partition. - -For a secure partition, you need: - -* The **secure partition code**, which must: - * Be single threaded. - * Be structured as a loop that waits for inputs. - * Never exit its loop (considered as a programming error). - * Be written in C or 'extern "C"' to avoid C++ name mangling. - * Follow PSA IPC rules. Secure partitions communicate with one another using the IPC API defined in [IPC API](https://github.com/ARMmbed/PSA-IPC-doc/blob/master/IPC_revision.md). All IPC messages must eventually be completed [`call psa_end()`]. Note that the SPM does not schedule IPC messages fairly. -* A **manifest file** in JSON format, that describes the Secure Partition characteristics. The specifications in the manifest file are validated during the build process and at run time. - -### Manifest file example - -The secure partition manifest file describes the properties of the secure partitions. In this file: - -* **entry_point** is the function name of the partition's thread. -* **source_files** is the list of source files containing the partition's code. -* **heap_size** sets the heap size for platforms that have an isolation level of 2 and higher. -* **services** is the list of the partition's root of trust services with their properties. -* **extern_sids** defines a dependency to other Root of Trust Service (referenced by SID). If the manifest does not specify the access between a partition (acting as client) and a root of trust service (acting as server), then the client is not able to send any messages to the root of trust service. - -For example: - -```json -{ - "name": "BOX_MAIN", - "type": "APPLICATION-ROT", - "priority": "NORMAL", - "id": "0x7BADD00D", - "entry_point": "main", - "stack_size": 10, - "heap_size": "0x0400", - "mmio_regions": [ - { - "name": "CMU", - "permission": "READ-WRITE" - }, - { - "name": "MSC", - "permission": "READ-WRITE" - }, - { - "name": "GPIO", - "permission": "READ-WRITE" - }, - { - "name": "TIMER0", - "permission": "READ-WRITE" - }, - { - "name": "UART0", - "permission": "READ-WRITE" - }, - { - "base": "0x10000000", - "size": "0x1000", - "permission": "READ-ONLY" - }, - { - "base": "0x42000000", - "size": "0x02000000", - "permission": "READ-ONLY" - } - ], - "services": [ - { - "sid": "PSA_TRUSTED_UPDATE", - "signal": "PSA_TRUSTED_UPDATE", - "non_secure_clients": true, - "minor_version": 1, - "minor_policy": "STRICT" - } - ], - "extern_sids": [ - "PSA_CRYPTO_RSA", - "PSA_CRYPTO_AES" - ], - "source_files": [ - "../source/main.cpp" - ], - "irqs": [ - { - "signal": "MY_IRQ", - "line_num": 4 - } - ] -} -``` - -#### Code example - -[Mbed SPM example on GitHub](https://github.com/ARMmbed/mbed-os-example-spm) diff --git a/components/TARGET_PSA/spm/doc/README.md b/components/TARGET_PSA/spm/doc/README.md deleted file mode 100644 index fb7cf74fe0c..00000000000 --- a/components/TARGET_PSA/spm/doc/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Mbed Secure Partition Manager (SPM) - -The Platform Security Architecture (PSA) firmware framework specifications contain a logic component called the Secure Partition Manager (SPM). PSA defines a Secure Processing Environment (SPE) for: - -* Sensitive data, such as keys, credentials and firmware. -* The code that manages it. -* Its trusted hardware resources. - -The PSA SPM interfaces decouple components, allowing reuse of components in other device platform and helps to reduce an integration effort. - -Mbed SPM is an implementation of PSA SPM, which: - -* Secures low cost IoT devices, where a full Trusted Execution Environment (TEE) would not be appropriate. -* Protects sensitive assets (keys, credentials and firmware) by separating these from the application firmware and hardware. -* Is architecture agnostic and can be implemented on different Arm Cortex®-M architectures, offering variable level of protection, based on platform resources. - -![diagram](png/PSA-standardized-Interfaces-diagram.png) - -## Further reading - -* The [introduction to PSA SPM](INTRO.md) provides more details about PSA SPM. -* Visit the official Arm Platform Security Architecture web page https://pages.arm.com/psa-resources -* Trusted firmware presentation during the Linaro Connect event by James King on IOT http://connect.linaro.org/resource/hkg18/hkg18-212/ diff --git a/components/TARGET_PSA/spm/doc/png/PSA-standardized-Interfaces-diagram.png b/components/TARGET_PSA/spm/doc/png/PSA-standardized-Interfaces-diagram.png deleted file mode 100644 index f8c4cc80c64..00000000000 Binary files a/components/TARGET_PSA/spm/doc/png/PSA-standardized-Interfaces-diagram.png and /dev/null differ diff --git a/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp index bda8c5bfc86..70cdc4429d4 100644 --- a/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp @@ -527,6 +527,11 @@ bd_size_t DataFlashBlockDevice::size() const return device_size; } +const char *DataFlashBlockDevice::get_type() const +{ + return "DATAFLASH"; +} + /** * @brief Function for reading a specific register. * @details Used for reading either the Status Register or Manufacture and ID Register. diff --git a/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.h b/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.h index 87eb6361b28..9d0e7dbeda9 100644 --- a/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.h @@ -153,6 +153,12 @@ class DataFlashBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: // Master side hardware mbed::SPI _spi; diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp index 445ab7978c8..43e19acc822 100644 --- a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp @@ -14,12 +14,12 @@ * limitations under the License. */ -#ifdef DEVICE_FLASH +#if DEVICE_FLASH #include "FlashIAPBlockDevice.h" #include "mbed_critical.h" +#include "mbed_error.h" -#include "mbed.h" using namespace mbed; #include @@ -39,7 +39,10 @@ using namespace mbed; FlashIAPBlockDevice::FlashIAPBlockDevice(uint32_t address, uint32_t size) : _flash(), _base(address), _size(size), _is_initialized(false), _init_ref_count(0) { - + if ((address == 0xFFFFFFFF) || (size == 0)) { + MBED_ERROR(MBED_ERROR_INVALID_ARGUMENT, + "Base address and size need to be set in flashiap-block-device configuration in order to use default constructor"); + } } FlashIAPBlockDevice::~FlashIAPBlockDevice() @@ -248,4 +251,9 @@ bd_size_t FlashIAPBlockDevice::size() const return _size; } +const char *FlashIAPBlockDevice::get_type() const +{ + return "FLASHIAP"; +} + #endif /* DEVICE_FLASH */ diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.h b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.h index 0b6e68125b2..f1ad0519e29 100644 --- a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.h @@ -17,7 +17,7 @@ #ifndef MBED_FLASHIAP_BLOCK_DEVICE_H #define MBED_FLASHIAP_BLOCK_DEVICE_H -#ifdef DEVICE_FLASH +#if DEVICE_FLASH #include "FlashIAP.h" #include "BlockDevice.h" @@ -121,6 +121,12 @@ class FlashIAPBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: // Device configuration mbed::FlashIAP _flash; diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_debug.h b/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_debug.h similarity index 100% rename from components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_debug.h rename to components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_debug.h diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_test.c b/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_test.c similarity index 100% rename from components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_test.c rename to components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_test.c diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_test.h b/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_test.h similarity index 100% rename from components/storage/blockdevice/COMPONENT_FLASHIAP/util/fslittle_test.h rename to components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/COMMON/fslittle_test.h diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/filesystem/fopen/fopen.cpp b/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/filesystem/fopen/fopen.cpp deleted file mode 100644 index 9c80f85dc4a..00000000000 --- a/components/storage/blockdevice/COMPONENT_FLASHIAP/TESTS/filesystem/fopen/fopen.cpp +++ /dev/null @@ -1,1482 +0,0 @@ -/* - * mbed Microcontroller Library - * Copyright (c) 2006-2016 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** @file fopen.cpp Test cases to POSIX file fopen() interface. - * - * Please consult the documentation under the test-case functions for - * a description of the individual test case. - */ - -//#include "mbed.h" -#include "LittleFileSystem.h" -#include "fslittle_debug.h" -#include "fslittle_test.h" -#include "utest/utest.h" -#include "unity/unity.h" -#include "greentea-client/test_env.h" - -#include -#include -#include /*rand()*/ -#include -#include -/* mbed_retarget.h is included after errno.h so symbols are mapped to - * consistent values for all toolchains */ -//#include "platform/mbed_retarget.h" - -using namespace utest::v1; - -/// @cond FSLITTLE_DOXYGEN_DISABLE -#ifdef FSLITTLE_DEBUG -#define FSLITTLE_FOPEN_GREENTEA_TIMEOUT_S 3000 -#else -#define FSLITTLE_FOPEN_GREENTEA_TIMEOUT_S 1000 -#endif -/// @endcond - - -/* DEVICE_SPI - * This symbol is defined in targets.json if the target has a SPI interface, which is required for SDCard support. - * - * MBED_CONF_APP_FSLITTLE_SDCARD_INSTALLED - * For testing purposes, an SDCard must be installed on the target for the test cases in this file to succeed. - * If the target has an SD card installed then the MBED_CONF_APP_FSLITTLE_SDCARD_INSTALLED will be generated - * from the mbed_app.json, which includes the line - * { - * "config": { - * "UART_RX": "D0", - * <<< lines removed >>> - * "DEVICE_SPI": 1, - * "FSLITTLE_SDCARD_INSTALLED": 1 - * }, - * <<< lines removed >>> - */ - -#include "FlashIAPBlockDevice.h" -#include "SlicingBlockDevice.h" - -FlashIAPBlockDevice *flash; -SlicingBlockDevice *slice; -LittleFileSystem fs("sd"); - -static char fslittle_fopen_utest_msg_g[FSLITTLE_UTEST_MSG_BUF_SIZE]; -#define FSLITTLE_FOPEN_TEST_MOUNT_PT_NAME "sd" -#define FSLITTLE_FOPEN_TEST_MOUNT_PT_PATH "/"FSLITTLE_FOPEN_TEST_MOUNT_PT_NAME -#define FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1 64 -#define FSLITTLE_FOPEN_TEST_FILEPATH_MAX_DEPTH 20 -static const int MAX_TEST_SIZE = 256 * 1024 * 2; -static const char *sd_badfile_path = "/sd/badfile.txt"; -static const char *sd_testfile_path = "/sd/test.txt"; - -#define FSLITTLE_FOPEN_TEST_00 fslittle_fopen_test_00 -#define FSLITTLE_FOPEN_TEST_01 fslittle_fopen_test_01 -#define FSLITTLE_FOPEN_TEST_02 fslittle_fopen_test_02 -#define FSLITTLE_FOPEN_TEST_03 fslittle_fopen_test_03 -#define FSLITTLE_FOPEN_TEST_04 fslittle_fopen_test_04 -#define FSLITTLE_FOPEN_TEST_05 fslittle_fopen_test_05 -#define FSLITTLE_FOPEN_TEST_06 fslittle_fopen_test_06 -#define FSLITTLE_FOPEN_TEST_07 fslittle_fopen_test_07 -#define FSLITTLE_FOPEN_TEST_08 fslittle_fopen_test_08 -#define FSLITTLE_FOPEN_TEST_09 fslittle_fopen_test_09 -#define FSLITTLE_FOPEN_TEST_10 fslittle_fopen_test_10 -#define FSLITTLE_FOPEN_TEST_11 fslittle_fopen_test_11 -#define FSLITTLE_FOPEN_TEST_12 fslittle_fopen_test_12 -#define FSLITTLE_FOPEN_TEST_13 fslittle_fopen_test_13 -#define FSLITTLE_FOPEN_TEST_14 fslittle_fopen_test_14 -#define FSLITTLE_FOPEN_TEST_15 fslittle_fopen_test_15 -#define FSLITTLE_FOPEN_TEST_17 fslittle_fopen_test_17 -#define FSLITTLE_FOPEN_TEST_18 fslittle_fopen_test_18 -#define FSLITTLE_FOPEN_TEST_19 fslittle_fopen_test_19 -#define FSLITTLE_FOPEN_TEST_20 fslittle_fopen_test_20 -#define FSLITTLE_FOPEN_TEST_21 fslittle_fopen_test_21 -#define FSLITTLE_FOPEN_TEST_22 fslittle_fopen_test_22 -#define FSLITTLE_FOPEN_TEST_23 fslittle_fopen_test_23 -#define FSLITTLE_FOPEN_TEST_24 fslittle_fopen_test_24 -#define FSLITTLE_FOPEN_TEST_25 fslittle_fopen_test_25 -#define FSLITTLE_FOPEN_TEST_26 fslittle_fopen_test_26 -#define FSLITTLE_FOPEN_TEST_27 fslittle_fopen_test_27 -#define FSLITTLE_FOPEN_TEST_28 fslittle_fopen_test_28 -#define FSLITTLE_FOPEN_TEST_29 fslittle_fopen_test_29 -#define FSLITTLE_FOPEN_TEST_30 fslittle_fopen_test_30 - - -/* support functions */ - -/* - * open tests that focus on testing fopen() - * fslittle_handle_t fopen(const char* filename, char* data, size_t* len, fslittle_key_desc_t* kdesc) - */ - -/* file data for test_01 */ -static fslittle_kv_data_t fslittle_fopen_test_01_kv_data[] = { - { "/sd/fopentst/hello/world/animal/wobbly/dog/foot/frontlft.txt", "missing"}, - { NULL, NULL}, -}; - - -/** @brief - * Split a file path into its component parts, setting '/' characters to '\0', and returning - * pointers to the file path components in the parts array. For example, if - * filepath = "/sd/fopentst/hello/world/animal/wobbly/dog/foot/frontlft.txt" then - * *parts[0] = "sd" - * *parts[1] = "fopentst" - * *parts[2] = "hello" - * *parts[3] = "world" - * *parts[4] = "animal" - * *parts[5] = "wobbly" - * *parts[6] = "dog" - * *parts[7] = "foot" - * *parts[8] = "frontlft.txt" - * parts[9] = NULL - * - * ARGUMENTS - * @param filepath IN file path string to split into component parts. Expected to start with '/' - * @param parts IN OUT array to hold pointers to parts - * @param num IN number of components available in parts - * - * @return On success, this returns the number of components in the filepath Returns number of compoee - */ -static int32_t fslittle_filepath_split(char *filepath, char *parts[], uint32_t num) -{ - uint32_t i = 0; - int32_t ret = -1; - char *z = filepath; - - while (i < num && *z != '\0') { - if (*z == '/') { - *z = '\0'; - parts[i] = ++z; - i++; - } else { - z++; - } - } - if (*z == '\0' && i > 0) { - ret = (int32_t) i; - } - return ret; -} - - -/** @brief - * remove all directories and file in the given filepath - * - * ARGUMENTS - * @param filepath IN file path string to split into component parts. Expected to start with '/' - * - * @return On success, this returns 0, otherwise < 0 is returned; - */ -int32_t fslittle_filepath_remove_all(char *filepath) -{ - int32_t ret = -1; - int32_t len = 0; - char *fpathbuf = NULL; - char *pos = NULL; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - len = strlen(filepath); - fpathbuf = (char *) malloc(len + 1); - if (fpathbuf == NULL) { - FSLITTLE_DBGLOG("%s: failed to duplicate string (out of memory)\n", __func__); - return ret; - } - memset(fpathbuf, 0, len + 1); - memcpy(fpathbuf, filepath, len); - - /* delete the leaf node first, and then successively parent directories. */ - pos = fpathbuf + strlen(fpathbuf); - while (pos != fpathbuf) { - /* If the remaining file path is the mount point path then finish as the mount point cannot be removed */ - if (strlen(fpathbuf) == strlen(FSLITTLE_FOPEN_TEST_MOUNT_PT_PATH) && strncmp(fpathbuf, FSLITTLE_FOPEN_TEST_MOUNT_PT_PATH, strlen(fpathbuf)) == 0) { - break; - } - ret = remove(fpathbuf); - pos = strrchr(fpathbuf, '/'); - *pos = '\0'; - } - if (fpathbuf) { - free(fpathbuf); - } - return ret; -} - - -/** @brief - * make all directories in the given filepath. Do not create the file if present at end of filepath - * - * ARGUMENTS - * @param filepath IN file path containing directories and file - * @param do_asserts IN set to true if function should assert on errors - * - * @return On success, this returns 0, otherwise < 0 is returned; - */ -static int32_t fslittle_filepath_make_dirs(char *filepath, bool do_asserts) -{ - int32_t i = 0; - int32_t num_parts = 0; - int32_t len = 0; - int32_t ret = -1; - char *fpathbuf = NULL; - char *buf = NULL; - int pos = 0; - char *parts[FSLITTLE_FOPEN_TEST_FILEPATH_MAX_DEPTH]; - - FSLITTLE_DBGLOG("%s:entered\n", __func__); - /* find the dirs to create*/ - memset(parts, 0, sizeof(parts)); - len = strlen(filepath); - fpathbuf = (char *) malloc(len + 1); - if (fpathbuf == NULL) { - FSLITTLE_DBGLOG("%s: failed to duplicate string (out of memory)\n", __func__); - return ret; - } - memset(fpathbuf, 0, len + 1); - memcpy(fpathbuf, filepath, len); - num_parts = fslittle_filepath_split(fpathbuf, parts, FSLITTLE_FOPEN_TEST_FILEPATH_MAX_DEPTH); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to split filepath (filename=\"%s\", num_parts=%d)\n", __func__, filepath, (int) num_parts); - TEST_ASSERT_MESSAGE(num_parts > 0, fslittle_fopen_utest_msg_g); - - /* Now create the directories on the directory path. - * Skip creating dir for "/sd" which must be present */ - buf = (char *) malloc(strlen(filepath) + 1); - memset(buf, 0, strlen(filepath) + 1); - pos = sprintf(buf, "/%s", parts[0]); - for (i = 1; i < num_parts - 1; i++) { - pos += sprintf(buf + pos, "/%s", parts[i]); - FSLITTLE_DBGLOG("mkdir(%s)\n", buf); - ret = mkdir(buf, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - if (do_asserts == true) { - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create directory (filepath2=\"%s\", ret=%d, errno=%d)\n", __func__, buf, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - } - } - - if (buf) { - free(buf); - } - if (fpathbuf) { - free(fpathbuf); - } - return ret; -} - - -/* FIX ME: errno not set correctly when error occurs. This indicates a problem with the implementation. */ - -/** @brief - * Basic fopen test which does the following: - * - creates file and writes some data to the value blob. - * - closes the newly created file. - * - opens the file (r-only) - * - reads the file data and checks its the same as the previously created data. - * - closes the opened file - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -static control_t fslittle_fopen_test_01(const size_t call_count) -{ - char *read_buf; - int32_t ret = 0; - size_t len = 0; - fslittle_kv_data_t *node; - FILE *fp = NULL; - - FSLITTLE_DBGLOG("%s:entered\n", __func__); - (void) call_count; - node = fslittle_fopen_test_01_kv_data; - - /* remove file and directory from a previous failed test run, if present */ - fslittle_filepath_remove_all((char *) node->filename); - - /* create dirs */ - ret = fslittle_filepath_make_dirs((char *) node->filename, true); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dirs for filename (filename=\"%s\")(ret=%d)\n", __func__, node->filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_DBGLOG("%s:About to create new file (filename=\"%s\", data=\"%s\")\n", __func__, node->filename, node->value); - fp = fopen(node->filename, "w+"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (filename=\"%s\", data=\"%s\")(ret=%d, errno=%d)\n", __func__, node->filename, node->value, (int) ret, errno); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - FSLITTLE_DBGLOG("%s:length of file=%d (filename=\"%s\", data=\"%s\")\n", __func__, (int) len, node->filename, node->value); - len = strlen(node->value); - ret = fwrite((const void *) node->value, len, 1, fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to write file (filename=\"%s\", data=\"%s\")(ret=%d)\n", __func__, node->filename, node->value, (int) ret); - TEST_ASSERT_MESSAGE(ret == 1, fslittle_fopen_utest_msg_g); - - FSLITTLE_DBGLOG("Created file successfully (filename=\"%s\", data=\"%s\")\n", node->filename, node->value); - ret = fclose(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to close file (ret=%d, errno=%d)\n", __func__, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* now open the newly created key */ - fp = NULL; - fp = fopen(node->filename, "r"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file for reading (filename=\"%s\", data=\"%s\")(ret=%d)\n", __func__, node->filename, node->value, (int) ret); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - len = strlen(node->value) + 1; - read_buf = (char *) malloc(len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to allocated read buffer \n", __func__); - TEST_ASSERT_MESSAGE(read_buf != NULL, fslittle_fopen_utest_msg_g); - - FSLITTLE_DBGLOG("Opened file successfully (filename=\"%s\", data=\"%s\")\n", node->filename, node->value); - memset(read_buf, 0, len); - ret = fread((void *) read_buf, len, 1, fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to read file (filename=\"%s\", data=\"%s\", read_buf=\"%s\", ret=%d)\n", __func__, node->filename, node->value, read_buf, (int) ret); - /* FIX ME: fread should return the number of items read, not 0 when an item is read successfully. - * This indicates a problem with the implementation, as the correct data is read. The correct assert should be: - * TEST_ASSERT_MESSAGE(ret == 1, fslittle_fopen_utest_msg_g); - * The following assert is curerntly used until the implementation is fixed - */ - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* check read data is as expected */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: read value data (%s) != expected value data (filename=\"%s\", data=\"%s\", read_buf=\"%s\", ret=%d)\n", __func__, read_buf, node->filename, node->value, read_buf, (int) ret); - TEST_ASSERT_MESSAGE(strncmp(read_buf, node->value, strlen(node->value)) == 0, fslittle_fopen_utest_msg_g); - - if (read_buf) { - free(read_buf); - } - ret = fclose(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: fclose() call failed (ret=%d, errno=%d).\n", __func__, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - return CaseNext; -} - -static fslittle_kv_data_t fslittle_fopen_test_02_data[] = { - FSLITTLE_INIT_1_TABLE_MID_NODE, - { NULL, NULL}, -}; - -/** - * @brief test to fopen() a pre-existing key and try to write it, which should fail - * as by default pre-existing keys are opened read-only - * - * Basic open test which does the following: - * - creates file with default rw perms and writes some data to the value blob. - * - closes the newly created file. - * - opens the file with the default permissions (read-only) - * - tries to write the file data which should fail because file was not opened with write flag set. - * - closes the opened key - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_02(const size_t call_count) -{ - int32_t ret = -1; - size_t len = 0; - FILE *fp = NULL; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - len = strlen(fslittle_fopen_test_02_data[0].value); - ret = fslittle_test_create(fslittle_fopen_test_02_data[0].filename, (char *) fslittle_fopen_test_02_data[0].value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - /* by default, owner of key opens with read-only permissions*/ - fp = fopen(fslittle_fopen_test_02_data[0].filename, "r"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file (filename=\"%s\", ret=%d)\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - len = strlen(fslittle_fopen_test_02_data[0].value); - ret = fwrite((const void *) fslittle_fopen_test_02_data[0].value, len, 1, fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: call to fwrite() succeeded when should have failed for read-only file (filename=\"%s\")(ret=%d).\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret); - TEST_ASSERT_MESSAGE(ret <= 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: fclose() call failed.\n", __func__); - TEST_ASSERT_MESSAGE(fclose(fp) == 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/** - * @brief test to fopen() a pre-existing file and try to write it, which should succeed - * because the key was opened read-write permissions explicitly - * - * Basic open test which does the following: - * - creates file with default rw perms and writes some data to the value blob. - * - closes the newly created file. - * - opens the file with the rw permissions (non default) - * - tries to write the file data which should succeeds because file was opened with write flag set. - * - closes the opened key - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_03(const size_t call_count) -{ - int32_t ret = -1; - size_t len = 0; - FILE *fp = NULL; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - len = strlen(fslittle_fopen_test_02_data[0].value); - ret = fslittle_test_create(fslittle_fopen_test_02_data[0].filename, (char *) fslittle_fopen_test_02_data[0].value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file in store (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - /* opens with read-write permissions*/ - fp = fopen(fslittle_fopen_test_02_data[0].filename, "w+"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file (filename=\"%s\")(ret=%d)\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - len = strlen(fslittle_fopen_test_02_data[0].value); - ret = fwrite((const void *) fslittle_fopen_test_02_data[0].value, len, 1, fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: call to fwrite() failed when should have succeeded (filename=\"%s\", ret=%d).\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: fclose() call failed.\n", __func__); - TEST_ASSERT_MESSAGE(fclose(fp) >= 0, fslittle_fopen_utest_msg_g); - - /* clean-up */ - ret = remove(fslittle_fopen_test_02_data[0].filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unable to delete file (filename=%s, ret=%d) .\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/** @brief test to call fopen() with a filename string that exceeds the maximum length - * - check that filenames of this length can be created - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_04(const size_t call_count) -{ - char filename_good[FSLITTLE_FILENAME_MAX_LENGTH + 1]; - char filename_bad[FSLITTLE_FILENAME_MAX_LENGTH + 2]; - int32_t ret = -1; - size_t len = 0; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - memset(filename_good, 0, FSLITTLE_FILENAME_MAX_LENGTH + 1); - memset(filename_bad, 0, FSLITTLE_FILENAME_MAX_LENGTH + 2); - ret = fslittle_test_filename_gen(filename_good, FSLITTLE_FILENAME_MAX_LENGTH); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unable to generate filename_good.\n", __func__); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: filename_good is not the correct length (filename_good=%s, len=%d, expected=%d).\n", __func__, filename_good, (int) strlen(filename_good), (int) FSLITTLE_FILENAME_MAX_LENGTH); - TEST_ASSERT_MESSAGE(strlen(filename_good) == FSLITTLE_FILENAME_MAX_LENGTH, fslittle_fopen_utest_msg_g); - - ret = fslittle_test_filename_gen(filename_bad, FSLITTLE_FILENAME_MAX_LENGTH + 1); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unable to generate filename_bad.\n", __func__); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: filename_bad is not the correct length (len=%d, expected=%d).\n", __func__, (int) strlen(filename_bad), (int) FSLITTLE_FILENAME_MAX_LENGTH + 1); - TEST_ASSERT_MESSAGE(strlen(filename_bad) == FSLITTLE_FILENAME_MAX_LENGTH + 1, fslittle_fopen_utest_msg_g); - - len = strlen(filename_good); - ret = fslittle_test_create(filename_good, filename_good, len); - - len = strlen(filename_bad); - ret = fslittle_test_create(filename_bad, filename_bad, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: created file in store for filename_bad when should have failed (filename=%s, ret=%d).\n", __func__, filename_bad, (int) ret); - TEST_ASSERT_MESSAGE(ret < 0, fslittle_fopen_utest_msg_g); - return CaseNext; -} - - -/// @cond FSLITTLE_DOXYGEN_DISABLE -typedef struct fslittle_fopen_kv_name_ascii_node { - uint32_t code; - uint32_t f_allowed : 1; -} fslittle_fopen_kv_name_ascii_node; -/// @endcond - -static const uint32_t fslittle_fopen_kv_name_ascii_table_code_sentinel_g = 256; - -/*@brief table recording ascii character codes permitted in kv names */ -static fslittle_fopen_kv_name_ascii_node fslittle_fopen_kv_name_ascii_table[] = { - {0, true}, /* code 0-33 allowed*/ - {34, false}, /* '"' not allowed */ - {35, true}, /* allowed */ - {42, false}, /* '*' not allowed */ - {43, true}, /* allowed */ - {47, false}, /* '/' not allowed */ - {48, true}, /* allowed */ - {58, false}, /* ':' not allowed */ - {59, true}, /* allowed */ - {60, false}, /* '<' not allowed */ - {61, true}, /* allowed */ - {62, false}, /* '?', '>' not allowed */ - {64, true}, /* allowed */ - {92, false}, /* '\' not allowed */ - {93, true}, /* allowed */ - {124, false}, /* '!' not allowed */ - {125, true}, /* allowed */ - {127, false}, /* DEL not allowed */ - {128, true}, /* allowed */ - {fslittle_fopen_kv_name_ascii_table_code_sentinel_g, false}, /* sentinel */ -}; - - -/// @cond FSLITTLE_DOXYGEN_DISABLE -enum fslittle_fopen_kv_name_pos { - fslittle_fopen_kv_name_pos_start = 0x0, - fslittle_fopen_kv_name_pos_mid, - fslittle_fopen_kv_name_pos_end, - fslittle_fopen_kv_name_pos_max -}; -/// @endcond - -/** @brief test to call fopen() with filename that in includes illegal characters - * - the character(s) can be at the beginning of the filename - * - the character(s) can be at the end of the filename - * - the character(s) can be somewhere within the filename string - * - a max-length string of random characters (legal and illegal) - * - a max-length string of random illegal characters only - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_05(const size_t call_count) -{ - bool f_allowed = false; - const char *mnt_pt = FSLITTLE_FOPEN_TEST_MOUNT_PT_PATH; - const char *basename = "goodfile"; - const char *extname = "txt"; - const size_t basename_len = strlen(basename); - const size_t filename_len = strlen(mnt_pt) + strlen(basename) + strlen(extname) + 2; /* extra 2 chars for '/' and '.' in "/sd/goodfile.txt" */ - char filename[FSLITTLE_BUF_MAX_LENGTH]; - size_t len = 0; - uint32_t j = 0; - int32_t ret = 0; - fslittle_fopen_kv_name_ascii_node *node = NULL; - uint32_t pos; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - -#ifdef FSLITTLE_DEBUG - /* symbol only used why debug is enabled */ - const char *pos_str = NULL; -#endif - - /* create bad keyname strings with invalid character code at start of keyname */ - node = fslittle_fopen_kv_name_ascii_table; - memset(filename, 0, FSLITTLE_BUF_MAX_LENGTH); - while (node->code != fslittle_fopen_kv_name_ascii_table_code_sentinel_g) { - /* loop over range */ - for (j = node->code; j < (node + 1)->code; j++) { - if ((j >= 48 && j <= 57) || (j >= 65 && j <= 90) || (j >= 97 && j <= 122)) { - FSLITTLE_DBGLOG("%s: skipping alpha-numeric ascii character code %d (%c).\n", __func__, (int) j, (char) j); - continue; - } - - /* set the start, mid, last character of the name to the test char code */ - for (pos = (uint32_t) fslittle_fopen_kv_name_pos_start; pos < (uint32_t) fslittle_fopen_kv_name_pos_max; pos++) { - len = snprintf(filename, filename_len + 1, "%s/%s.%s", mnt_pt, basename, extname); - /* overwrite a char at the pos start, mid, end of the filename with an ascii char code (both illegal and legal)*/ - switch (pos) { - case fslittle_fopen_kv_name_pos_start: - filename[5] = (char) j; /* 5 so at to write the second basename char (bad chars as first char not accepted)*/ - break; - case fslittle_fopen_kv_name_pos_mid: - /* create bad keyname strings with invalid character code in the middle of keyname */ - filename[5 + basename_len / 2] = (char) j; - break; - case fslittle_fopen_kv_name_pos_end: - /* create bad keyname strings with invalid character code at end of keyname */ - filename[5 + basename_len - 1] = (char) j; - break; - default: - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected value of pos (pos=%d).\n", __func__, (int) pos); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - break; - } - -#ifdef FSLITTLE_DEBUG - /* processing only required when debug trace enabled */ - switch (pos) { - case fslittle_fopen_kv_name_pos_start: - pos_str = "start"; - break; - case fslittle_fopen_kv_name_pos_mid: - pos_str = "middle"; - break; - case fslittle_fopen_kv_name_pos_end: - pos_str = "end"; - break; - default: - break; - } -#endif - ret = fslittle_test_create(filename, (const char *) filename, len); - - /* special cases */ - switch (j) { - //case 0 : - //case 46 : - // switch(pos) - // { - // /* for code = 0 (null terminator). permitted at mid and end of string */ - // /* for code = 46 ('.'). permitted at mid and end of string but not at start */ - // case fslittle_fopen_kv_name_pos_start: - // f_allowed = false; - // break; - // case fslittle_fopen_kv_name_pos_mid: - // case fslittle_fopen_kv_name_pos_end: - // default: - // f_allowed = true; - // break; - // } - // break; - default: - f_allowed = node->f_allowed; - break; - } - if (f_allowed == true) { - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file in store when filename contains valid characters (code=%d, ret=%d).\n", __func__, (int) j, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - /* revert FSLITTLE_LOG for more trace */ - FSLITTLE_DBGLOG("Successfully created a file with valid keyname containing ascii character code %d (%c) at the %s of the keyname.\n", (int) j, (int) j, pos_str); - FSLITTLE_LOG("%c", '.'); - - ret = fslittle_test_delete(filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to delete file previously created (code=%d, ret=%d).\n", __func__, (int) j, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - } else { - /*node->f_allowed == false => not allowed to create kv name with ascii code */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: created file in store when filename contains an invalid character (code=%d, ret=%d).\n", __func__, (int) j, (int) ret); - TEST_ASSERT_MESSAGE(ret < 0, fslittle_fopen_utest_msg_g); - /* revert FSLITTLE_LOG for more trace */ - FSLITTLE_DBGLOG("Successfully failed to create a file with an invalid keyname containing ascii character code %d at the %s of the keyname.\n", (int) j, pos_str); - FSLITTLE_LOG("%c", '.'); - } - } - } - node++; - } - - FSLITTLE_LOG("%c", '\n'); - return CaseNext; -} - - -static const char fslittle_fopen_ascii_illegal_buf_g[] = "\"?'*+,./:;<=>?[\\]|"; - -/** @brief test to call fopen() with filename that in includes - * illegal characters - * - a max-length string of random illegal characters only - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_06(const size_t call_count) -{ -// legal in LittleFS -#if 0 - const char *mnt_pt = FSLITTLE_FOPEN_TEST_MOUNT_PT_PATH; - const char *extname = "txt"; - const size_t filename_len = strlen(mnt_pt) + FSLITTLE_MAX_FILE_BASENAME + strlen(extname) + 2; /* extra 2 chars for '/' and '.' in "/sd/goodfile.txt" */ - char filename[FSLITTLE_BUF_MAX_LENGTH]; - int32_t i = 0; - int32_t j = 0; - uint32_t pos = 0; - uint32_t len = 0; - int32_t ret = -1; - size_t buf_data_max = 0; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - memset(filename, 0, FSLITTLE_BUF_MAX_LENGTH); - /* create bad keyname strings with invalid character code at start of keyname */ - buf_data_max = strlen(fslittle_fopen_ascii_illegal_buf_g); - - /* generate a number of illegal filenames */ - for (j = 0; i < FSLITTLE_MAX_FILE_BASENAME; j++) { - /* generate a kv name of illegal chars*/ - len = snprintf(filename, filename_len + 1, "%s/", mnt_pt); - for (i = 0; i < FSLITTLE_MAX_FILE_BASENAME; i++) { - pos = rand() % (buf_data_max + 1); - len += snprintf(filename + len, filename_len + 1, "%c", fslittle_fopen_ascii_illegal_buf_g[pos]); - - } - len += snprintf(filename + len, filename_len + 1, ".%s", extname); - ret = fslittle_test_create(filename, filename, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: created file when filename contains invalid characters (filename=%s, ret=%d).\n", __func__, filename, (int) ret); - TEST_ASSERT_MESSAGE(ret < 0, fslittle_fopen_utest_msg_g); - } -#endif - return CaseNext; -} - - -/** @brief test for errno reporting on a failed fopen()call - * - * This test does the following: - * - tries to open a file that does not exist for reading, and checks that a NULL pointer is returned. - * - checks that errno is not 0 as there is an error. - * - checks that ferror() returns 1 indicating an error exists. - * - * Note: see NOTE_1 below. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_07(const size_t call_count) -{ - FILE *f = NULL; - int ret = -1; - int errno_val = 0; - const char *filename = sd_badfile_path; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - errno = 0; - /* this is expect to fail as the file doesnt exist */ - f = fopen(filename, "r"); - - /* Store errno so the current value set is not changed by new function call */ - errno_val = errno; - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: opened non-existent file for reading (filename=%s, f=%p).\n", __func__, filename, f); - TEST_ASSERT_MESSAGE(f == NULL, fslittle_fopen_utest_msg_g); - - /* check errno is set correctly */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: errno has unexpected value (errno != 0 expected) (filename=%s, errno=%d).\n", __func__, filename, errno); - TEST_ASSERT_MESSAGE(errno_val != 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/** @brief test for operation of clearerr() and ferror() - * - * The test does the following: - * - opens and then closes a file, but keeps a copy of the FILE pointer fp. - * - set errno to 0. - * - write to the close file with fwrite(fp) which should return 0 (no writes) and set the errno. - * - check the error condition is set with ferror(). - * - clear the error with clearerr(). - * - check the error condition is reset with ferror(). - * - * NOTE_1: GCC/ARMCC support for setting errno - * - Documentation (e.g. fwrite() man page) does not explicity say fwrite() sets errno - * (e.g. for an fwrite() on a read-only file). - * - GCC libc fwrite() appears to set errno as expected. - * - ARMCC & IAR libc fwrite() appears not to set errno. - * - * The following ARMCC documents are silent on whether fwrite() sets errno: - * - "ARM C and C++ Libraries and Floating-Point Support". - * - "RL-ARM User Guide fwrite() section". - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_08(const size_t call_count) -{ - FILE *fp = NULL; - int ret = -1; - int ret_ferror = -1; - const char *filename = sd_testfile_path; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - errno = 0; - fp = fopen(filename, "w+"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file (filename=%s, f=%p).\n", __func__, filename, fp); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - /* close the fp but then try to read or write it */ - ret = fclose(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to close file (ret=%d, errno=%d)\n", __func__, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* open file */ - errno = 0; - fp = fopen(filename, "r"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file for reading (filename=\"%s\", ret=%d)\n", __func__, filename, (int) ret); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - /* Perform fwrite() operation that will fail. */ - errno = 0; - ret = fwrite("42!", 4, 1, fp); - - ret_ferror = ferror(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: ferror() failed to report error (filename=%s, ret_ferror=%d).\n", __func__, filename, (int) ret_ferror); - TEST_ASSERT_MESSAGE(ret_ferror != 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: fwrite successfully wrote to read-only file (filename=%s, ret=%d).\n", __func__, filename, (int) ret); - /* the fwrite() should fail and return 0. */ - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - -#if ! defined(__ARMCC_VERSION) && defined(__GNUC__) - /* check that errno is set. ARMCC appears not to set errno for fwrite() failure. */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected zero value for errno (filename=%s, ret=%d, errno=%d).\n", __func__, filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(errno != 0, fslittle_fopen_utest_msg_g); - - /* check that errno is set to the expected value (this may change differ for different libc's) */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: errno != EBADF (filename=%s, ret=%d, errno=%d).\n", __func__, filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(errno == EBADF, fslittle_fopen_utest_msg_g); -#endif /* ! defined(__ARMCC_VERSION) && defined(__GNUC__) */ - - /* check clearerr() return clears the error */ - clearerr(fp); - ret = ferror(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: ferror() did not return zero value when error has been cleared (filename=%s, ret=%d).\n", __func__, filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - fclose(fp); - return CaseNext; -} - - -/** @brief test for operation of ftell() - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_09(const size_t call_count) -{ - FILE *fp = NULL; - int ret = -1; - int32_t len = 0; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - /* create a file of a certain length */ - len = strlen(fslittle_fopen_test_02_data[0].value); - ret = fslittle_test_create(fslittle_fopen_test_02_data[0].filename, (char *) fslittle_fopen_test_02_data[0].value, len); - - errno = 0; - /* Open the file for reading so the file is not truncated to 0 length. */ - fp = fopen(fslittle_fopen_test_02_data[0].filename, "r"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to open file (filename=%s, fp=%p, errno=%d).\n", __func__, fslittle_fopen_test_02_data[0].filename, fp, errno); - TEST_ASSERT_MESSAGE(fp != NULL, fslittle_fopen_utest_msg_g); - - errno = 0; - ret = fseek(fp, 0, SEEK_END); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: fseek() failed to SEEK_END (filename=%s, ret=%d, errno=%d).\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - errno = 0; - ret = ftell(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: ftell() failed to report correct offset value (filename=%s, ret=%d, errno=%d).\n", __func__, fslittle_fopen_test_02_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == len, fslittle_fopen_utest_msg_g); - - errno = 0; - ret = fclose(fp); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to close file (ret=%d, errno=%d)\n", __func__, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/* file data for test_10 */ -static fslittle_kv_data_t fslittle_fopen_test_10_kv_data[] = { - { "/sd/test_10/testfile.txt", "test_data"}, - { NULL, NULL}, -}; - -/** @brief test for operation of remove() - * - * Performs the following tests: - * 1. test remove() on a file that exists. This should succeed. - * 2. test remove() on a dir that exists. This should succeed. - * 3. test remove() on a file that doesnt exist. This should fail. check errno set. - * 4. test remove() on a dir that doesnt exist. This should fail. check errno set. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_10(const size_t call_count) -{ - char buf[FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1]; - char *pos = NULL; - int32_t ret = -1; - size_t len = 0; - fslittle_kv_data_t *node = fslittle_fopen_test_10_kv_data; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - TEST_ASSERT(strlen(node->filename) < FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - - /* start from a known state i.e. directory to be created in not present */ - fslittle_filepath_remove_all((char *) node->filename); - - /* (1) */ - errno = 0; - ret = fslittle_filepath_make_dirs((char *) node->filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - len = strlen(node->value); - ret = fslittle_test_create(node->filename, (char *) node->value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - ret = remove(node->filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: delete file operation failed (filename=%s, ret=%d) .\n", __func__, node->filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* (3) */ - ret = remove(node->filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: deleted a file that doesn't exist (filename=%s, ret=%d, errno=%d) .\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret != 0, fslittle_fopen_utest_msg_g); - - /* (2) */ - memset(buf, 0, FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - memcpy(buf, node->filename, strlen(node->filename)); - pos = strrchr(buf, '/'); - *pos = '\0'; - ret = remove(buf); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: delete directory operation failed (directory name=%s, ret=%d, errno=%d).\n", __func__, buf, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* (4) */ - ret = remove(buf); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: deleted a directory that doesn't exist (directory name=%s, ret=%d, errno=%d).\n", __func__, buf, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret != 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/* file data for test_11 */ -static fslittle_kv_data_t fslittle_fopen_test_11_kv_data[] = { - { "/sd/test_11/step0.txt", "test_data"}, - { "/sd/test_11/step1.txt", "test_data"}, - { "/sd/test_11/subdir/step3.txt", "test_data"}, - { NULL, NULL}, -}; - -/** @brief test for operation of rename() - * - * This test does the following: - * 1) test rename() on a file that exists to a new filename within the same directory. - * 2) test rename() on a file that exists to a new filename within a different directory. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_11(const size_t call_count) -{ - int32_t ret = -1; - size_t len = 0; - fslittle_kv_data_t *node = fslittle_fopen_test_11_kv_data; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - TEST_ASSERT(strlen(node->filename) < FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - - /* start from a known state i.e. directory to be created in not present, files not present */ - while (node->filename != NULL) { - fslittle_filepath_remove_all((char *) node->filename); - node++; - } - - /* create file and directories ready for rename() tests */ - errno = 0; - node = fslittle_fopen_test_11_kv_data; - ret = fslittle_filepath_make_dirs((char *) node->filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - len = strlen(node->value); - ret = fslittle_test_create(node->filename, (char *) node->value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - errno = 0; - node = &fslittle_fopen_test_11_kv_data[2]; - ret = fslittle_filepath_make_dirs((char *) node->filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* (1) */ - ret = rename(fslittle_fopen_test_11_kv_data[0].filename, fslittle_fopen_test_11_kv_data[1].filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unable to rename file from (%s) to (%s) (ret=%d, errno=%d).\n", __func__, fslittle_fopen_test_11_kv_data[0].filename, fslittle_fopen_test_11_kv_data[1].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* (2) */ - ret = rename(fslittle_fopen_test_11_kv_data[1].filename, fslittle_fopen_test_11_kv_data[2].filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unable to rename file from (%s) to (%s) (ret=%d, errno=%d).\n", __func__, fslittle_fopen_test_11_kv_data[1].filename, fslittle_fopen_test_11_kv_data[2].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - - -/* file data for test_12 */ -static fslittle_kv_data_t fslittle_fopen_test_12_kv_data[] = { - { "/sd/test_12/subdir/testfil1.txt", "testfil1.txt"}, - { "/sd/test_12/testfil2.txt", "testfil2.txt"}, - { "/sd/test_12/testfil3.txt", "testfil3.txt"}, - { "/sd/test_12/testfil4.txt", "testfil4.txt"}, - { "/sd/test_12/testfil5.txt", "testfil5.txt"}, - { NULL, NULL}, -}; - -/** @brief test for operation of readdir(). - * - * Note, rewinddir(), telldir() and seekdir() dont appear to work reliably. - * opendir() not available on ARM/IAR toolchains. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_12(const size_t call_count) -{ - char buf[FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1]; - char *pos = NULL; - int32_t count = 0; - int32_t ret = -1; - size_t len = 0; - DIR *dir; - struct dirent *dp; - fslittle_kv_data_t *node = fslittle_fopen_test_12_kv_data; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - -#if ! defined(__ARMCC_VERSION) && defined(__GNUC__) - - /* start from a known state i.e. directory to be created in not present */ - while (node->filename != NULL) { - fslittle_filepath_remove_all((char *) node->filename); - node++; - } - - /* create a file */ - node = fslittle_fopen_test_12_kv_data; - errno = 0; - ret = fslittle_filepath_make_dirs((char *) node->filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - node = fslittle_fopen_test_12_kv_data; - while (node->filename != NULL) { - len = strlen(node->value); - ret = fslittle_test_create(node->filename, (char *) node->value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - node++; - } - - node = fslittle_fopen_test_12_kv_data; - memset(buf, 0, FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - memcpy(buf, node->filename, strlen(node->filename)); - pos = strrchr(buf, '/'); - *pos = '\0'; - dir = opendir(buf); - - dp = readdir(dir); - TEST_ASSERT_MESSAGE(dp != 0, "Error: readdir() failed\n"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected object name (name=%s, expected=%s).\n", __func__, dp->d_name, "."); - TEST_ASSERT_MESSAGE(strncmp(dp->d_name, ".", strlen(".")) == 0, fslittle_fopen_utest_msg_g); - dp = readdir(dir); - TEST_ASSERT_MESSAGE(dp != 0, "Error: readdir() failed\n"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected object name (name=%s, expected=%s).\n", __func__, dp->d_name, ".."); - TEST_ASSERT_MESSAGE(strncmp(dp->d_name, "..", strlen("..")) == 0, fslittle_fopen_utest_msg_g); - - while ((dp = readdir(dir)) != NULL) { - FSLITTLE_DBGLOG("%s: filename: \"%s\"\n", __func__, dp->d_name); - TEST_ASSERT_MESSAGE(dp != 0, "Error: readdir() failed\n"); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected object name (name=%s, expected=%s).\n", __func__, dp->d_name, fslittle_fopen_test_12_kv_data[count].value); - TEST_ASSERT_MESSAGE(strncmp(dp->d_name, fslittle_fopen_test_12_kv_data[count].value, strlen(fslittle_fopen_test_12_kv_data[count].value)) == 0, fslittle_fopen_utest_msg_g); - count++; - } - closedir(dir); - - /* cleanup */ - node = fslittle_fopen_test_12_kv_data; - while (node->filename != NULL) { - fslittle_filepath_remove_all((char *) node->filename); - node++; - } -#endif /* ! defined(__ARMCC_VERSION) && defined(__GNUC__) */ - return CaseNext; -} - - -/* file data for test_13 */ -static fslittle_kv_data_t fslittle_fopen_test_13_kv_data[] = { - /* a file is included in the filepath even though its not created by the test, - * as the fslittle_filepath_make_dirs() works with it present. */ - { "/sd/test_13/dummy.txt", "testdir"}, - { NULL, NULL}, -}; -/** @brief test for operation of mkdir()/remove() - * - * This test checks that: - * - The mkdir() function successfully creates a directory that is not already present. - * - The mkdir() function returns EEXIST when trying to create a directory thats already present. - * - The remove() function successfully removes a directory that is present. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_13(const size_t call_count) -{ - int32_t ret = 0; - - FSLITTLE_DBGLOG("%s:entered\n", __func__); - (void) call_count; - - /* start from a known state i.e. directory to be created in not present */ - fslittle_filepath_remove_all((char *) fslittle_fopen_test_13_kv_data[0].filename); - - errno = 0; - ret = fslittle_filepath_make_dirs((char *) fslittle_fopen_test_13_kv_data[0].filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, fslittle_fopen_test_13_kv_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - /* check that get a suitable error when try to create it again.*/ - errno = 0; - ret = fslittle_filepath_make_dirs((char *) fslittle_fopen_test_13_kv_data[0].filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: permitted to create directory when already exists (dirname=%s, ret=%d, errno=%d)\n", __func__, fslittle_fopen_test_13_kv_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret != 0, fslittle_fopen_utest_msg_g); - - /* check errno is as expected */ - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: errno != EEXIST (dirname=%s, ret=%d, errno=%d)\n", __func__, fslittle_fopen_test_13_kv_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(errno == EEXIST, fslittle_fopen_utest_msg_g); - - ret = fslittle_filepath_remove_all((char *) fslittle_fopen_test_13_kv_data[0].filename); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to remove directory (dirname=%s, ret=%d, errno=%d)\n", __func__, fslittle_fopen_test_13_kv_data[0].filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - return CaseNext; -} - -/* file data for test_14 */ -static fslittle_kv_data_t fslittle_fopen_test_14_kv_data[] = { - /* a file is included in the filepath even though its not created by the test, - * as the fslittle_filepath_make_dirs() works with it present. */ - { "/sd/test_14/testfile.txt", "testdata"}, - { NULL, NULL}, -}; - -/** @brief test for operation of stat() - * - * stat() is currently no supported by ARMCC and IAR toolchains libc. - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_14(const size_t call_count) -{ -#if ! defined(__ARMCC_VERSION) && defined(__GNUC__) - - char buf[FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1]; - char *pos = NULL; - int32_t ret = -1; - size_t len = 0; - struct stat file_stat; - fslittle_kv_data_t *node = fslittle_fopen_test_14_kv_data; - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - - TEST_ASSERT(strlen(node->filename) < FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - - /* start from a known state i.e. directory to be created in not present */ - fslittle_filepath_remove_all((char *) node->filename); - - /* Create file in a directory. */ - errno = 0; - ret = fslittle_filepath_make_dirs((char *) node->filename, false); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dir (dirname=%s, ret=%d, errno=%d)\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - len = strlen(node->value); - ret = fslittle_test_create(node->filename, (char *) node->value, len); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create file (ret=%d).\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret >= 0, fslittle_fopen_utest_msg_g); - - /* Test stat() on the file returns the correct attribute set */ - memset(&file_stat, 0, sizeof(file_stat)); - ret = stat(node->filename, &file_stat); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: stat() operation on file failed (filename=%s, ret=%d, errno=%d).\n", __func__, node->filename, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: expected st_mode S_IFREG flag not set (filename=%s).\n", __func__, node->filename); - TEST_ASSERT_MESSAGE((file_stat.st_mode & S_IFREG) == S_IFREG, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected st_mode S_IFDIR flag set (filename=%s).\n", __func__, node->filename); - TEST_ASSERT_MESSAGE((file_stat.st_mode & S_IFDIR) != S_IFDIR, fslittle_fopen_utest_msg_g); - - /* Test stat() on the directory returns the correct attribute set */ - memset(&file_stat, 0, sizeof(file_stat)); - memset(buf, 0, FSLITTLE_FOPEN_TEST_WORK_BUF_SIZE_1); - memcpy(buf, node->filename, strlen(node->filename)); - pos = strrchr(buf, '/'); - *pos = '\0'; - ret = stat(buf, &file_stat); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: stat() operation on directory failed (directory name=%s, ret=%d, errno=%d).\n", __func__, buf, (int) ret, errno); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: unexpected st_mode S_IFREG flag set (directory name=%s).\n", __func__, buf); - TEST_ASSERT_MESSAGE((file_stat.st_mode & S_IFREG) != S_IFREG, fslittle_fopen_utest_msg_g); - - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: expected st_mode S_IFDIR flag not set (directory name=%s).\n", __func__, buf); - TEST_ASSERT_MESSAGE((file_stat.st_mode & S_IFDIR) == S_IFDIR, fslittle_fopen_utest_msg_g); - - /* clean up after successful test */ - fslittle_filepath_remove_all((char *) node->filename); - -#endif /* ! defined(__ARMCC_VERSION) && defined(__GNUC__) */ - return CaseNext; -} - -/** @brief test for operation of SDFileSystem::format() - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_00(const size_t call_count) -{ - - FSLITTLE_FENTRYLOG("%s:entered\n", __func__); - (void) call_count; - int32_t ret = -1; - - flash = new FlashIAPBlockDevice(); - ret = flash->init(); - TEST_ASSERT_EQUAL(0, ret); - - // Use slice of last sectors - bd_addr_t slice_addr = flash->size(); - bd_size_t slice_size = 0; - while (slice_size < MAX_TEST_SIZE) { - bd_size_t unit_size = flash->get_erase_size(slice_addr - 1); - slice_addr -= unit_size; - slice_size += unit_size; - } - slice = new SlicingBlockDevice(flash, slice_addr); - slice->init(); - - ret = fs.reformat(slice); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to format sdcard (ret=%d)\n", __func__, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - fs.mount(slice); - - return CaseNext; -} - - -/* @brief test utility function to create a file of a given size. - * - * A reference data table is used of so that the data file can be later be - * checked with fslittle_test_check_data_file(). - * - * @param filename name of the file including path - * @param data data to store in file - * @param len number of bytes of data present in the data buffer. - */ -int32_t fslittle_test_create_data_file(const char *filename, size_t len) -{ - int32_t ret = -1; - FILE *fp = NULL; - size_t write_len = 0; - size_t written_len = 0; - int32_t exp = 0; - const int32_t exp_max = 8; /* so as not to exceed FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE/2 */ - - FSLITTLE_FENTRYLOG("%s:entered (filename=%s, len=%d).\n", __func__, filename, (int) len); - TEST_ASSERT(len % FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE == 0); - fp = fopen(filename, "a"); - if (fp == NULL) { - return ret; - } - - while (written_len < len) { - /* write fslittle_test_byte_data_table or part thereof, in 9 writes of sizes - * 1, 2, 4, 8, 16, 32, 64, 128, 1, totalling 256 bytes len permitting. */ - for (exp = 0; (exp <= exp_max) && (written_len < len); exp++) { - write_len = 0x1 << (exp % exp_max); - write_len = len - written_len > write_len ? write_len : len - written_len; - ret = fwrite((const void *) &fslittle_test_byte_data_table[written_len % FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE], write_len, 1, fp); - written_len += write_len; - if (ret != 1) { - FSLITTLE_DBGLOG("%s:Error: fwrite() failed (ret=%d)\n", __func__, (int) ret); - ret = -1; - goto out0; - } - } - } - if (written_len == len) { - ret = 0; - } else { - ret = -1; - } -out0: - fclose(fp); - return ret; -} - - -/* @brief test utility function to check the data in the specified file is correct. - * - * The data read from the file is check that it agrees with the data written by - * fslittle_test_create_data_file(). - * - * @param filename name of the file including path - * @param data data to store in file - * @param len number of bytes of data present in the data buffer. - */ -int32_t fslittle_test_check_data_file(const char *filename, size_t len) -{ - int32_t ret = -1; - FILE *fp = NULL; - size_t read_len = 0; - uint8_t buf[FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE]; - - FSLITTLE_FENTRYLOG("%s:entered (filename=%s, len=%d).\n", __func__, filename, (int) len); - TEST_ASSERT(len % FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE == 0); - fp = fopen(filename, "r"); - if (fp == NULL) { - return ret; - } - - while (read_len < len) { - ret = fread((void *) buf, FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE, 1, fp); - read_len += FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE; - if (ret == 0) { - /* end of read*/ - FSLITTLE_DBGLOG("%s:unable to read data\n", __func__); - break; - } - if (memcmp(buf, fslittle_test_byte_data_table, FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE) != 0) { - FSLITTLE_DBGLOG("%s:Error: read data not as expected (0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x, 0x%2x\n", __func__, - buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]); - ret = -1; - goto out0; - } - } - if (read_len == len) { - ret = 0; - } -out0: - fclose(fp); - return ret; -} - -/* file data for test_16 */ -static fslittle_kv_data_t fslittle_fopen_test_15_kv_data[] = { - { "/sd/tst16_0/testfil0.txt", "dummy_data"}, - { "/sd/tst16_1/subdir0/testfil0.txt", "dummy_data"}, - { "/sd/tst16_2/subdir0/subdir1/testfil0.txt", "dummy_data"}, - { "/sd/tst16_3/subdir0/subdir1/subdir2/subdir3/testfil0.txt", "dummy_data"}, - -#if 0 - { "/sd/tst16_4/subdir0/subdir1/subdir2/subdir3/subdir4/testfil0.txt", "dummy_data"}, - { "/sd/tst16_5/subdir0/subdir1/subdir2/subdir3/subdir4/subdir5/testfil0.txt", "dummy_data"}, - { "/sd/tst16_6/subdir0/subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/testfil0.txt", "dummy_data"}, - { "/sd/tst16_7/subdir0/subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/subdir7/testfil0.txt", "dummy_data"}, - { "/sd/tst16_8/subdir0/subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/subdir7/subdir8/testfil0.txt", "dummy_data"}, - { "/sd/tst16_9/subdir0/subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/subdir7/subdir8/subdir9/testfil0.txt", "dummy_data"}, -#endif - { NULL, NULL}, -}; - - -/** @brief stress test to write data to fs - * - * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. - */ -control_t fslittle_fopen_test_15(const size_t call_count) -{ - int32_t ret = 0; - fslittle_kv_data_t *node = fslittle_fopen_test_15_kv_data; - const int32_t num_blocks = 100; /* each file ~25kB */ - - FSLITTLE_DBGLOG("%s:entered\n", __func__); - (void) call_count; - - /* remove file and directory from a previous failed test run, if present */ - while (node->filename != NULL) { - fslittle_filepath_remove_all((char *) node->filename); - node++; - } - - /* create dirs */ - node = fslittle_fopen_test_15_kv_data; - while (node->filename != NULL) { - ret = fslittle_filepath_make_dirs((char *) node->filename, true); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create dirs for filename (filename=\"%s\")(ret=%d)\n", __func__, node->filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - node++; - } - - /* create the data files */ - node = fslittle_fopen_test_15_kv_data; - while (node->filename != NULL) { - ret = fslittle_test_create_data_file(node->filename, num_blocks * FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create data file (filename=\"%s\")(ret=%d)\n", __func__, node->filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - node++; - } - - /* read the data back and check its as expected */ - node = fslittle_fopen_test_15_kv_data; - while (node->filename != NULL) { - ret = fslittle_test_check_data_file(node->filename, num_blocks * FSLITTLE_TEST_BYTE_DATA_TABLE_SIZE); - FSLITTLE_TEST_UTEST_MESSAGE(fslittle_fopen_utest_msg_g, FSLITTLE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to check data file (filename=\"%s\")(ret=%d)\n", __func__, node->filename, (int) ret); - TEST_ASSERT_MESSAGE(ret == 0, fslittle_fopen_utest_msg_g); - node++; - } - - /* clean up */ - node = fslittle_fopen_test_15_kv_data; - while (node->filename != NULL) { - fslittle_filepath_remove_all((char *) node->filename); - node++; - } - return CaseNext; -} - -/// @cond FSLITTLE_DOXYGEN_DISABLE -utest::v1::status_t greentea_setup(const size_t number_of_cases) -{ - GREENTEA_SETUP(FSLITTLE_FOPEN_GREENTEA_TIMEOUT_S, "default_auto"); - return greentea_test_setup_handler(number_of_cases); -} - -Case cases[] = { - /* 1 2 3 4 5 6 7 */ - /* 1234567890123456789012345678901234567890123456789012345678901234567890 */ - Case("FSLITTLE_FOPEN_TEST_00: format() test.", FSLITTLE_FOPEN_TEST_00), - Case("FSLITTLE_FOPEN_TEST_01: fopen()/fwrite()/fclose() directories/file in multi-dir filepath.", FSLITTLE_FOPEN_TEST_01), - Case("FSLITTLE_FOPEN_TEST_02: fopen(r) pre-existing file try to write it.", FSLITTLE_FOPEN_TEST_02), - Case("FSLITTLE_FOPEN_TEST_03: fopen(w+) pre-existing file try to write it.", FSLITTLE_FOPEN_TEST_03), - Case("FSLITTLE_FOPEN_TEST_04: fopen() with a filename exceeding the maximum length.", FSLITTLE_FOPEN_TEST_04), -#ifdef FOPEN_EXTENDED_TESTING - Case("FSLITTLE_FOPEN_TEST_05: fopen() with bad filenames (extended).", FSLITTLE_FOPEN_TEST_05), -#endif - Case("FSLITTLE_FOPEN_TEST_06: fopen() with bad filenames (minimal).", FSLITTLE_FOPEN_TEST_06), - Case("FSLITTLE_FOPEN_TEST_07: fopen()/errno handling.", FSLITTLE_FOPEN_TEST_07), - Case("FSLITTLE_FOPEN_TEST_08: ferror()/clearerr()/errno handling.", FSLITTLE_FOPEN_TEST_08), - Case("FSLITTLE_FOPEN_TEST_09: ftell() handling.", FSLITTLE_FOPEN_TEST_09), - Case("FSLITTLE_FOPEN_TEST_10: remove() test.", FSLITTLE_FOPEN_TEST_10), - Case("FSLITTLE_FOPEN_TEST_11: rename().", FSLITTLE_FOPEN_TEST_11), - Case("FSLITTLE_FOPEN_TEST_12: opendir(), readdir(), closedir() test.", FSLITTLE_FOPEN_TEST_12), - Case("FSLITTLE_FOPEN_TEST_13: mkdir() test.", FSLITTLE_FOPEN_TEST_13), - Case("FSLITTLE_FOPEN_TEST_14: stat() test.", FSLITTLE_FOPEN_TEST_14), - Case("FSLITTLE_FOPEN_TEST_15: write/check n x 25kB data files.", FSLITTLE_FOPEN_TEST_15), -}; - - -/* Declare your test specification with a custom setup handler */ -Specification specification(greentea_setup, cases); - -int main() -{ - return !Harness::run(specification); -} -/// @endcond diff --git a/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.cpp index 7ac7a22dbc1..ae0ca070ed3 100644 --- a/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.cpp @@ -29,8 +29,6 @@ using namespace mbed; /* Default QSPIF Parameters */ /****************************/ -#define QSPIF_DEFAULT_READ_SIZE 1 -#define QSPIF_DEFAULT_PROG_SIZE 1 #define QSPIF_DEFAULT_PAGE_SIZE 256 #define QSPIF_DEFAULT_SE_SIZE 4096 #define QSPI_MAX_STATUS_REGISTER_SIZE 3 @@ -95,6 +93,7 @@ enum qspif_default_instructions { QSPIF_RSTEN = 0x66, // Reset Enable QSPIF_RST = 0x99, // Reset QSPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID + QSPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register }; // Local Function @@ -119,7 +118,7 @@ QSPIFBlockDevice::QSPIFBlockDevice(PinName io0, PinName io1, PinName io2, PinNam _unique_device_status = add_new_csel_instance(csel); if (_unique_device_status == 0) { - tr_info("Adding a new QSPIFBlockDevice csel: %d\n", (int)csel); + tr_debug("Adding a new QSPIFBlockDevice csel: %d\n", (int)csel); } else if (_unique_device_status == -1) { tr_error("QSPIFBlockDevice with the same csel(%d) already exists\n", (int)csel); } else { @@ -187,7 +186,7 @@ int QSPIFBlockDevice::init() status = QSPIF_BD_ERROR_DEVICE_ERROR; goto exit_point; } else { - tr_info("Initialize flash memory OK"); + tr_debug("Initialize flash memory OK"); } /* Read Manufacturer ID (1byte), and Device ID (2bytes)*/ @@ -204,9 +203,9 @@ int QSPIFBlockDevice::init() switch (vendor_device_ids[0]) { case 0xbf: // SST devices come preset with block protection - // enabled for some regions, issue write disable instruction to clear + // enabled for some regions, issue global protection unlock to clear _set_write_enable(); - _qspi_send_general_command(QSPIF_WRDI, QSPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0); + _qspi_send_general_command(QSPIF_ULBPR, QSPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0); break; } @@ -237,8 +236,8 @@ int QSPIFBlockDevice::init() _region_high_boundary[0] = _device_size_bytes - 1; if ((sector_map_table_addr != 0) && (0 != sector_map_table_size)) { - tr_info("Init - Parsing Sector Map Table - addr: 0x%lxh, Size: %d", sector_map_table_addr, - sector_map_table_size); + tr_debug("Init - Parsing Sector Map Table - addr: 0x%lxh, Size: %d", sector_map_table_addr, + sector_map_table_size); if (0 != _sfdp_parse_sector_map_table(sector_map_table_addr, sector_map_table_size)) { tr_error("Init - Parse Sector Map Table Failed"); status = QSPIF_BD_ERROR_PARSING_FAILED; @@ -298,7 +297,7 @@ int QSPIFBlockDevice::deinit() int QSPIFBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size) { int status = QSPIF_BD_ERROR_OK; - tr_info("Read Inst: 0x%xh", _read_instruction); + tr_debug("Read Inst: 0x%xh", _read_instruction); _mutex.lock(); @@ -421,7 +420,7 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size) if (_set_write_enable() != 0) { tr_error("QSPI Erase Device not ready - failed"); erase_failed = true; - status = QSPIF_BD_ERROR_READY_FAILED; + status = QSPIF_BD_ERROR_WREN_FAILED; goto exit_point; } @@ -461,14 +460,14 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size) bd_size_t QSPIFBlockDevice::get_read_size() const { - // Assuming all devices support 1byte read granularity - return QSPIF_DEFAULT_READ_SIZE; + // Return minimum read size in bytes for the device + return MBED_CONF_QSPIF_QSPI_MIN_READ_SIZE; } bd_size_t QSPIFBlockDevice::get_program_size() const { - // Assuming all devices support 1byte program granularity - return QSPIF_DEFAULT_PROG_SIZE; + // Return minimum program/write size in bytes for the device + return MBED_CONF_QSPIF_QSPI_MIN_PROG_SIZE; } bd_size_t QSPIFBlockDevice::get_erase_size() const @@ -477,6 +476,11 @@ bd_size_t QSPIFBlockDevice::get_erase_size() const return _min_common_erase_size; } +const char *QSPIFBlockDevice::get_type() const +{ + return "QSPIF"; +} + // Find minimal erase size supported by the region to which the address belongs to bd_size_t QSPIFBlockDevice::get_erase_size(bd_addr_t addr) { @@ -691,13 +695,13 @@ int QSPIFBlockDevice::_sfdp_parse_basic_param_table(uint32_t basic_table_addr, s if (true == shouldSetQuadEnable) { _enable_fast_mdoe(); // Set Quad Enable and QPI Bus modes if Supported - tr_info("Init - Setting Quad Enable"); + tr_debug("Init - Setting Quad Enable"); if (0 != _sfdp_set_quad_enabled(param_table)) { tr_error("Device supports Quad bus, but Quad Enable Failed"); return -1; } if (true == is_qpi_mode) { - tr_info("Init - Setting QPI mode"); + tr_debug("Init - Setting QPI mode"); _sfdp_set_qpi_enabled(param_table); } } @@ -728,7 +732,7 @@ int QSPIFBlockDevice::_sfdp_parse_sfdp_headers(uint32_t &basic_table_addr, size_ tr_error("Init - _verify SFDP signature and version Failed"); return -1; } else { - tr_info("Init - verified SFDP Signature and version Successfully"); + tr_debug("Init - verified SFDP Signature and version Successfully"); } // Discover Number of Parameter Headers @@ -964,8 +968,8 @@ int QSPIFBlockDevice::_sfdp_detect_erase_types_inst_and_size(uint8_t *basic_para erase_type_inst_arr[i_ind] = 0xff; //0xFF default for unsupported type erase_type_size_arr[i_ind] = local_math_power(2, basic_param_table_ptr[QSPIF_BASIC_PARAM_ERASE_TYPE_1_SIZE_BYTE + 2 * i_ind]); // Size given as 2^N - tr_info("Erase Type(A) %d - Inst: 0x%xh, Size: %d", (i_ind + 1), erase_type_inst_arr[i_ind], - erase_type_size_arr[i_ind]); + tr_debug("Erase Type(A) %d - Inst: 0x%xh, Size: %d", (i_ind + 1), erase_type_inst_arr[i_ind], + erase_type_size_arr[i_ind]); if (erase_type_size_arr[i_ind] > 1) { // if size==1 type is not supported erase_type_inst_arr[i_ind] = basic_param_table_ptr[QSPIF_BASIC_PARAM_ERASE_TYPE_1_BYTE + 2 * i_ind]; @@ -988,8 +992,8 @@ int QSPIFBlockDevice::_sfdp_detect_erase_types_inst_and_size(uint8_t *basic_para _region_erase_types_bitfield[0] |= bitfield; // If there's no region map, set region "0" types bitfield as defualt; } - tr_info("Erase Type %d - Inst: 0x%xh, Size: %d", (i_ind + 1), erase_type_inst_arr[i_ind], - erase_type_size_arr[i_ind]); + tr_debug("Erase Type %d - Inst: 0x%xh, Size: %d", (i_ind + 1), erase_type_inst_arr[i_ind], + erase_type_size_arr[i_ind]); bitfield = bitfield << 1; } } @@ -1024,12 +1028,9 @@ int QSPIFBlockDevice::_sfdp_detect_best_bus_read_mode(uint8_t *basic_param_table //_inst_width = QSPI_CFG_BUS_QUAD; _address_width = QSPI_CFG_BUS_QUAD; _data_width = QSPI_CFG_BUS_QUAD; - - break; } } - - + is_qpi_mode = false; examined_byte = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_FAST_READ_SUPPORT_BYTE]; if (examined_byte & 0x40) { // Fast Read 1-4-4 Supported @@ -1062,7 +1063,7 @@ int QSPIFBlockDevice::_sfdp_detect_best_bus_read_mode(uint8_t *basic_param_table + (basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_222_READ_INST_BYTE - 1] & 0x1F); _address_width = QSPI_CFG_BUS_DUAL; _data_width = QSPI_CFG_BUS_DUAL; - tr_info("Read Bus Mode set to 2-2-2, Instruction: 0x%xh", _read_instruction); + tr_debug("Read Bus Mode set to 2-2-2, Instruction: 0x%xh", _read_instruction); break; } @@ -1097,7 +1098,7 @@ int QSPIFBlockDevice::_reset_flash_mem() // Perform Soft Reset of the Device prior to initialization int status = 0; char status_value[QSPI_MAX_STATUS_REGISTER_SIZE] = {0}; - tr_info("_reset_flash_mem:"); + tr_debug("_reset_flash_mem:"); //Read the Status Register from device if (QSPI_STATUS_OK == _qspi_send_general_command(QSPIF_RDSR, QSPI_NO_ADDRESS_COMMAND, NULL, 0, status_value, QSPI_MAX_STATUS_REGISTER_SIZE)) { // store received values in status_value @@ -1348,7 +1349,7 @@ qspi_status_t QSPIFBlockDevice::_qspi_send_erase_command(unsigned int erase_inst // Send Erase Instruction command to driver qspi_status_t result = QSPI_STATUS_OK; - tr_info("Inst: 0x%xh, addr: %llu, size: %llu", erase_inst, addr, size); + tr_debug("Inst: 0x%xh, addr: %llu, size: %llu", erase_inst, addr, size); result = _qspi.command_transfer(erase_inst, // command to send (((int)addr) & 0x00FFF000), // Align addr to 4096 diff --git a/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.h b/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.h index d1b3556a342..b009bd97b22 100644 --- a/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.h @@ -211,6 +211,12 @@ class QSPIFBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: // Internal functions @@ -307,8 +313,6 @@ class QSPIFBlockDevice : public mbed::BlockDevice { int _utils_iterate_next_largest_erase_type(uint8_t &bitfield, int size, int offset, int boundry); private: - // Internal Members - // QSPI Driver Object mbed::QSPI _qspi; diff --git a/components/storage/blockdevice/COMPONENT_QSPIF/TESTS/block_device/qspif/main.cpp b/components/storage/blockdevice/COMPONENT_QSPIF/TESTS/block_device/qspif/main.cpp index 9297d538128..0674fc463de 100644 --- a/components/storage/blockdevice/COMPONENT_QSPIF/TESTS/block_device/qspif/main.cpp +++ b/components/storage/blockdevice/COMPONENT_QSPIF/TESTS/block_device/qspif/main.cpp @@ -48,6 +48,10 @@ void basic_erase_program_read_test(QSPIFBlockDevice &blockD, bd_size_t block_siz { int err = 0; _mutex->lock(); + + static unsigned block_seed = 1; + srand(block_seed++); + // Find a random block bd_addr_t block = (rand() * block_size) % blockD.size(); diff --git a/components/storage/blockdevice/COMPONENT_QSPIF/mbed_lib.json b/components/storage/blockdevice/COMPONENT_QSPIF/mbed_lib.json index b611268a5a8..683b216cc97 100644 --- a/components/storage/blockdevice/COMPONENT_QSPIF/mbed_lib.json +++ b/components/storage/blockdevice/COMPONENT_QSPIF/mbed_lib.json @@ -8,7 +8,9 @@ "QSPI_SCK": "QSPI_FLASH1_SCK", "QSPI_CSN": "QSPI_FLASH1_CSN", "QSPI_POLARITY_MODE": 0, - "QSPI_FREQ": "40000000" + "QSPI_FREQ": "40000000", + "QSPI_MIN_READ_SIZE": "1", + "QSPI_MIN_PROG_SIZE": "1" }, "target_overrides": { "DISCO_F413ZH": { @@ -20,11 +22,22 @@ "DISCO_L476VG": { "QSPI_FREQ": "80000000" }, + "DISCO_L496AG": { + "QSPI_FREQ": "8000000" + }, "DISCO_F469NI": { "QSPI_FREQ": "80000000" }, - "NRF52840_DK": { - "QSPI_FREQ": "32000000" + "DISCO_F746NG": { + "QSPI_FREQ": "80000000" + }, + "DISCO_F769NI": { + "QSPI_FREQ": "8000000" + }, + "MCU_NRF52840": { + "QSPI_FREQ": "32000000", + "QSPI_MIN_READ_SIZE": "4", + "QSPI_MIN_PROG_SIZE": "4" } } } diff --git a/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.cpp index 8064b70cba8..2092f58e1e5 100644 --- a/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.cpp @@ -40,6 +40,7 @@ enum ops { SPIF_WRDI = 0x04, // Write Disable SPIF_RDSR = 0x05, // Read Status Register SPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID + SPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register }; // Status register from RDSR @@ -48,7 +49,6 @@ enum ops { #define SPIF_WEL 0x2 #define SPIF_WIP 0x1 - SPIFReducedBlockDevice::SPIFReducedBlockDevice( PinName mosi, PinName miso, PinName sclk, PinName cs, int freq) : _spi(mosi, miso, sclk), _cs(cs), _size(0) @@ -67,9 +67,9 @@ int SPIFReducedBlockDevice::init() switch (id[0]) { case 0xbf: // SST devices come preset with block protection - // enabled for some regions, issue gbpu instruction to clear + // enabled for some regions, issue global protection unlock to clear _wren(); - _cmdwrite(0x98, 0, 0, 0x0, NULL); + _cmdwrite(SPIF_ULBPR, 0, 0, 0x0, NULL); break; } @@ -344,3 +344,9 @@ bd_size_t SPIFReducedBlockDevice::size() const { return _size; } + +const char *SPIFReducedBlockDevice::get_type() const +{ + return "SPIFR"; +} + diff --git a/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.h b/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.h index 934b515e2e0..f7dda1fe074 100644 --- a/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.h @@ -155,6 +155,12 @@ class SPIFReducedBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: // Master side hardware mbed::SPI _spi; diff --git a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp index f579dde2c1c..f4c73a7d356 100644 --- a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp @@ -136,7 +136,7 @@ */ /* If the target has no SPI support then SDCard is not supported */ -#ifdef DEVICE_SPI +#if DEVICE_SPI #include "SDBlockDevice.h" #include "platform/mbed_debug.h" @@ -632,6 +632,11 @@ bd_size_t SDBlockDevice::size() const return _block_size * _sectors; } +const char *SDBlockDevice::get_type() const +{ + return "SD"; +} + void SDBlockDevice::debug(bool dbg) { _dbg = dbg; @@ -791,7 +796,7 @@ int SDBlockDevice::_cmd(SDBlockDevice::cmdSupported cmd, uint32_t arg, bool isAc switch (cmd) { case CMD8_SEND_IF_COND: // Response R7 debug_if(_dbg, "V2-Version Card\n"); - _card_type = SDCARD_V2; + _card_type = SDCARD_V2; // fallthrough // Note: No break here, need to read rest of the response case CMD58_READ_OCR: // Response R3 response = (_spi.write(SPI_FILL_CHAR) << 24); diff --git a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h index de166e67a43..0a19194163e 100644 --- a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h @@ -17,8 +17,8 @@ #ifndef MBED_SD_BLOCK_DEVICE_H #define MBED_SD_BLOCK_DEVICE_H -/* If the target has no SPI support then SDCard is not supported */ -#ifdef DEVICE_SPI +/* If the target has no SPI support, then SD Card is not supported. */ +#if DEVICE_SPI #include "BlockDevice.h" #include "drivers/SPI.h" @@ -30,24 +30,35 @@ /** SDBlockDevice class * - * Access an SD Card using SPI + * Access an SD Card using SPI bus */ class SDBlockDevice : public mbed::BlockDevice { public: - /** Lifetime of an SD card + /** Creates an SDBlockDevice on a SPI bus specified by pins + * + * @param mosi SPI master out, slave in pin + * @param miso SPI master in, slave out pin + * @param sclk SPI clock pin + * @param cs SPI chip select pin + * @param hz Clock speed of the SPI bus (defaults to 1MHz) + * @param crc_on Enable cyclic redundancy check (defaults to disabled) */ SDBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName cs, uint64_t hz = 1000000, bool crc_on = 0); virtual ~SDBlockDevice(); /** Initialize a block device * - * @return 0 on success or a negative error code on failure + * @return BD_ERROR_OK(0) - success + * BD_ERROR_DEVICE_ERROR - device driver transaction failed + * SD_BLOCK_DEVICE_ERROR_NO_DEVICE - device (SD card) is missing or not connected + * SD_BLOCK_DEVICE_ERROR_UNUSABLE - unusable card + * SD_BLOCK_DEVICE_ERROR_CRC - crc error */ virtual int init(); /** Deinitialize a block device * - * @return 0 on success or a negative error code on failure + * @return BD_ERROR_OK(0) - success */ virtual int deinit(); @@ -56,18 +67,30 @@ class SDBlockDevice : public mbed::BlockDevice { * @param buffer Buffer to write blocks to * @param addr Address of block to begin reading from * @param size Size to read in bytes, must be a multiple of read block size - * @return 0 on success, negative error code on failure + * @return BD_ERROR_OK(0) - success + * SD_BLOCK_DEVICE_ERROR_NO_DEVICE - device (SD card) is missing or not connected + * SD_BLOCK_DEVICE_ERROR_CRC - crc error + * SD_BLOCK_DEVICE_ERROR_PARAMETER - invalid parameter + * SD_BLOCK_DEVICE_ERROR_NO_RESPONSE - no response from device + * SD_BLOCK_DEVICE_ERROR_UNSUPPORTED - unsupported command */ virtual int read(void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t size); /** Program blocks to a block device * - * The blocks must have been erased prior to being programmed + * @note The blocks must be erased prior to programming * * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to - * @param size Size to write in bytes, must be a multiple of program block size - * @return 0 on success, negative error code on failure + * @param size Size to write in bytes. Must be a multiple of program block size + * @return BD_ERROR_OK(0) - success + * SD_BLOCK_DEVICE_ERROR_NO_DEVICE - device (SD card) is missing or not connected + * SD_BLOCK_DEVICE_ERROR_CRC - crc error + * SD_BLOCK_DEVICE_ERROR_PARAMETER - invalid parameter + * SD_BLOCK_DEVICE_ERROR_UNSUPPORTED - unsupported command + * SD_BLOCK_DEVICE_ERROR_NO_INIT - device is not initialized + * SD_BLOCK_DEVICE_ERROR_WRITE - SPI write error + * SD_BLOCK_DEVICE_ERROR_ERASE - erase error */ virtual int program(const void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t size); @@ -80,7 +103,13 @@ class SDBlockDevice : public mbed::BlockDevice { * * @param addr Address of block to mark as unused * @param size Size to mark as unused in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @return BD_ERROR_OK(0) - success + * SD_BLOCK_DEVICE_ERROR_NO_DEVICE - device (SD card) is missing or not connected + * SD_BLOCK_DEVICE_ERROR_CRC - crc error + * SD_BLOCK_DEVICE_ERROR_PARAMETER - invalid parameter + * SD_BLOCK_DEVICE_ERROR_UNSUPPORTED - unsupported command + * SD_BLOCK_DEVICE_ERROR_NO_INIT - device is not initialized + * SD_BLOCK_DEVICE_ERROR_ERASE - erase error */ virtual int trim(mbed::bd_addr_t addr, mbed::bd_size_t size); @@ -90,9 +119,9 @@ class SDBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t get_read_size() const; - /** Get the size of a programable block + /** Get the size of a programmable block * - * @return Size of a programable block in bytes + * @return Size of a programmable block in bytes * @note Must be a multiple of the read size */ virtual mbed::bd_size_t get_program_size() const; @@ -116,6 +145,11 @@ class SDBlockDevice : public mbed::BlockDevice { */ virtual int frequency(uint64_t freq); + /** Get the BlockDevice class type. + * + * @return A string representation of the BlockDevice class type. + */ + virtual const char *get_type() const; private: /* Commands : Listed below are commands supported @@ -162,9 +196,9 @@ class SDBlockDevice : public mbed::BlockDevice { int _cmd(SDBlockDevice::cmdSupported cmd, uint32_t arg, bool isAcmd = 0, uint32_t *resp = NULL); int _cmd8(); - /* Move the SDCard into the SPI Mode idle state + /* Move the SD Card into the SPI Mode idle state * - * The card is transitioned from SDCard mode to SPI mode by sending the + * The card is transitioned from SD Card mode to SPI mode by sending the * CMD0 (GO_IDLE_STATE) command with CS asserted. See the notes in the * "SPI Startup" section of the comments at the head of the * implementation file for further details and specification references. @@ -182,7 +216,7 @@ class SDBlockDevice : public mbed::BlockDevice { /* SPI functions */ mbed::Timer _spi_timer; /**< Timer Class object used for busy wait */ - uint32_t _init_sck; /**< Intial SPI frequency */ + uint32_t _init_sck; /**< Initial SPI frequency */ uint32_t _transfer_sck; /**< SPI frequency during data transfer/after initialization */ mbed::SPI _spi; /**< SPI Class object */ diff --git a/components/storage/blockdevice/COMPONENT_SD/util/fsfat_debug.h b/components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_debug.h similarity index 100% rename from components/storage/blockdevice/COMPONENT_SD/util/fsfat_debug.h rename to components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_debug.h diff --git a/components/storage/blockdevice/COMPONENT_SD/util/fsfat_test.c b/components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_test.c similarity index 100% rename from components/storage/blockdevice/COMPONENT_SD/util/fsfat_test.c rename to components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_test.c diff --git a/components/storage/blockdevice/COMPONENT_SD/util/fsfat_test.h b/components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_test.h similarity index 100% rename from components/storage/blockdevice/COMPONENT_SD/util/fsfat_test.h rename to components/storage/blockdevice/COMPONENT_SD/TESTS/COMMON/fsfat_test.h diff --git a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/dirs/main.cpp b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/dirs/main.cpp index 412a3379dfb..22a0807ab92 100644 --- a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/dirs/main.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/dirs/main.cpp @@ -49,10 +49,6 @@ using namespace utest::v1; #define MBED_TEST_DIRS 4 #endif -#ifndef MBED_TEST_BUFFER -#define MBED_TEST_BUFFER 8192 -#endif - #ifndef MBED_TEST_TIMEOUT #define MBED_TEST_TIMEOUT 120 #endif @@ -76,9 +72,7 @@ FILE *fd[MBED_TEST_FILES]; struct dirent ent; struct dirent *ed; size_t size; -uint8_t buffer[MBED_TEST_BUFFER]; -uint8_t rbuffer[MBED_TEST_BUFFER]; -uint8_t wbuffer[MBED_TEST_BUFFER]; +uint8_t buffer[MBED_CONF_SD_TEST_BUFFER]; // tests diff --git a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/files/main.cpp b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/files/main.cpp index fcbdb15d193..cf8af3a5bed 100644 --- a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/files/main.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/files/main.cpp @@ -75,7 +75,6 @@ DIR *dd[MBED_TEST_DIRS]; FILE *fd[MBED_TEST_FILES]; struct dirent ent; struct dirent *ed; -size_t size; uint8_t buffer[MBED_TEST_BUFFER]; uint8_t rbuffer[MBED_TEST_BUFFER]; uint8_t wbuffer[MBED_TEST_BUFFER]; @@ -107,6 +106,7 @@ void test_simple_file_test() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello", O_WRONLY | O_CREAT); diff --git a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/fopen/fopen.cpp b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/fopen/fopen.cpp index b1d64d9a878..bc8093d1642 100644 --- a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/fopen/fopen.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/fopen/fopen.cpp @@ -68,7 +68,7 @@ using namespace utest::v1; * <<< lines removed >>> */ -#if defined(DEVICE_SPI) && ( defined(MBED_CONF_APP_FSFAT_SDCARD_INSTALLED) || (MBED_CONF_SD_FSFAT_SDCARD_INSTALLED)) +#if DEVICE_SPI && ( defined(MBED_CONF_APP_FSFAT_SDCARD_INSTALLED) || (MBED_CONF_SD_FSFAT_SDCARD_INSTALLED)) static char fsfat_fopen_utest_msg_g[FSFAT_UTEST_MSG_BUF_SIZE]; #define FSFAT_FOPEN_TEST_MOUNT_PT_NAME "sd" #define FSFAT_FOPEN_TEST_MOUNT_PT_PATH "/" FSFAT_FOPEN_TEST_MOUNT_PT_NAME @@ -80,6 +80,7 @@ static const char *sd_testfile_path = "/sd/test.txt"; SDBlockDevice sd(MBED_CONF_SD_SPI_MOSI, MBED_CONF_SD_SPI_MISO, MBED_CONF_SD_SPI_CLK, MBED_CONF_SD_SPI_CS); FATFileSystem fs("sd", &sd); +#define FSFAT_FOPEN_TEST_00 fsfat_fopen_test_00 #define FSFAT_FOPEN_TEST_01 fsfat_fopen_test_01 #define FSFAT_FOPEN_TEST_02 fsfat_fopen_test_02 #define FSFAT_FOPEN_TEST_03 fsfat_fopen_test_03 @@ -276,6 +277,26 @@ static int32_t fsfat_filepath_make_dirs(char *filepath, bool do_asserts) return ret; } +/** @brief + * First and last test must format the SD card to FAT FS format: + * @return on success returns CaseNext to continue to next test case, otherwise will assert on errors. + */ +control_t fsfat_fopen_test_00(const size_t call_count) +{ + FSFAT_FENTRYLOG("%s:entered\n", __func__); + (void) call_count; + int32_t ret = -1; + + fs.unmount(); + ret = fs.format(&sd); + FSFAT_TEST_UTEST_MESSAGE(fsfat_fopen_utest_msg_g, FSFAT_UTEST_MSG_BUF_SIZE, + "%s:Error: failed to format sdcard (ret=%d)\n", __func__, (int) ret); + TEST_ASSERT_MESSAGE(ret == 0, fsfat_fopen_utest_msg_g); + fs.mount(&sd); + + return CaseNext; +} + /* FIX ME: errno not set correctly when error occurs. This indicates a problem with the implementation. */ @@ -1535,7 +1556,7 @@ control_t fsfat_fopen_test_16(const size_t call_count) #else - +#define FSFAT_FOPEN_TEST_00 fsfat_fopen_test_dummy #define FSFAT_FOPEN_TEST_01 fsfat_fopen_test_dummy #define FSFAT_FOPEN_TEST_02 fsfat_fopen_test_dummy #define FSFAT_FOPEN_TEST_03 fsfat_fopen_test_dummy @@ -1590,6 +1611,7 @@ utest::v1::status_t greentea_setup(const size_t number_of_cases) Case cases[] = { /* 1 2 3 4 5 6 7 */ /* 1234567890123456789012345678901234567890123456789012345678901234567890 */ + Case("FSFAT_FOPEN_TEST_00: format sd card to FAT FS.", FSFAT_FOPEN_TEST_00), Case("FSFAT_FOPEN_TEST_01: fopen()/fwrite()/fclose() directories/file in multi-dir filepath.", FSFAT_FOPEN_TEST_01), Case("FSFAT_FOPEN_TEST_02: fopen(r) pre-existing file try to write it.", FSFAT_FOPEN_TEST_02), Case("FSFAT_FOPEN_TEST_03: fopen(w+) pre-existing file try to write it.", FSFAT_FOPEN_TEST_03), diff --git a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/seek/main.cpp b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/seek/main.cpp index 4fd9f799499..999e4a58c82 100644 --- a/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/seek/main.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/TESTS/filesystem/seek/main.cpp @@ -49,10 +49,6 @@ using namespace utest::v1; #define MBED_TEST_DIRS 4 #endif -#ifndef MBED_TEST_BUFFER -#define MBED_TEST_BUFFER 8192 -#endif - #ifndef MBED_TEST_TIMEOUT #define MBED_TEST_TIMEOUT 120 #endif @@ -75,10 +71,7 @@ DIR *dd[MBED_TEST_DIRS]; FILE *fd[MBED_TEST_FILES]; struct dirent ent; struct dirent *ed; -size_t size; -uint8_t buffer[MBED_TEST_BUFFER]; -uint8_t rbuffer[MBED_TEST_BUFFER]; -uint8_t wbuffer[MBED_TEST_BUFFER]; +uint8_t buffer[MBED_CONF_SD_TEST_BUFFER]; // tests @@ -89,6 +82,7 @@ void test_seek_tests() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = MBED_TEST_FILESYSTEM::format(&bd); TEST_ASSERT_EQUAL(0, res); res = fs.mount(&bd); @@ -271,6 +265,7 @@ void test_simple_file_seek() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDONLY); @@ -318,7 +313,7 @@ void test_simple_file_seek() res = memcmp(buffer, "kittycatcat", size); TEST_ASSERT_EQUAL(0, res); - size_t size = file[0].size(); + size = file[0].size(); res = file[0].seek(0, SEEK_CUR); TEST_ASSERT_EQUAL(size, res); res = file[0].close(); @@ -337,6 +332,7 @@ void test_large_file_seek() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDONLY); @@ -384,7 +380,7 @@ void test_large_file_seek() res = memcmp(buffer, "kittycatcat", size); TEST_ASSERT_EQUAL(0, res); - size_t size = file[0].size(); + size = file[0].size(); res = file[0].seek(0, SEEK_CUR); TEST_ASSERT_EQUAL(size, res); res = file[0].close(); @@ -403,6 +399,7 @@ void test_simple_file_seek_and_write() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDWR); @@ -450,7 +447,7 @@ void test_simple_file_seek_and_write() res = memcmp(buffer, "kittycatcat", size); TEST_ASSERT_EQUAL(0, res); - size_t size = file[0].size(); + size = file[0].size(); res = file[0].seek(0, SEEK_CUR); TEST_ASSERT_EQUAL(size, res); res = file[0].close(); @@ -469,6 +466,7 @@ void test_large_file_seek_and_write() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDWR); @@ -518,7 +516,7 @@ void test_large_file_seek_and_write() res = memcmp(buffer, "kittycatcat", size); TEST_ASSERT_EQUAL(0, res); - size_t size = file[0].size(); + size = file[0].size(); res = file[0].seek(0, SEEK_CUR); TEST_ASSERT_EQUAL(size, res); res = file[0].close(); @@ -537,6 +535,7 @@ void test_boundary_seek_and_write() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDWR); @@ -583,6 +582,7 @@ void test_out_of_bounds_seek() TEST_ASSERT_EQUAL(0, res); { + size_t size; res = fs.mount(&bd); TEST_ASSERT_EQUAL(0, res); res = file[0].open(&fs, "hello/kitty42", O_RDWR); diff --git a/components/storage/blockdevice/COMPONENT_SD/config/mbed_lib.json b/components/storage/blockdevice/COMPONENT_SD/mbed_lib.json similarity index 90% rename from components/storage/blockdevice/COMPONENT_SD/config/mbed_lib.json rename to components/storage/blockdevice/COMPONENT_SD/mbed_lib.json index 1c9d7fe2ced..e3252ed1c26 100644 --- a/components/storage/blockdevice/COMPONENT_SD/config/mbed_lib.json +++ b/components/storage/blockdevice/COMPONENT_SD/mbed_lib.json @@ -9,7 +9,8 @@ "CMD_TIMEOUT": 10000, "CMD0_IDLE_STATE_RETRIES": 5, "INIT_FREQUENCY": 100000, - "CRC_ENABLED": 1 + "CRC_ENABLED": 1, + "TEST_BUFFER": 8192 }, "target_overrides": { "DISCO_F051R8": { @@ -30,6 +31,27 @@ "SPI_CLK": "PE_13", "SPI_CS": "PE_12" }, + "NUCLEO_F070RB": { + "TEST_BUFFER": 4096 + }, + "NUCLEO_F072RB": { + "TEST_BUFFER": 4096 + }, + "NUCLEO_F103RB": { + "TEST_BUFFER": 4096 + }, + "NUCLEO_L073RZ": { + "TEST_BUFFER": 4096 + }, + "DISCO_L072CZ_LRWAN1": { + "TEST_BUFFER": 4096 + }, + "NUCLEO_F091RC": { + "TEST_BUFFER": 4096 + }, + "NUCLEO_F410RB": { + "TEST_BUFFER": 4096 + }, "K20D50M": { "SPI_MOSI": "PTD2", "SPI_MISO": "PTD3", @@ -202,7 +224,7 @@ "SPI_MOSI": "D11", "SPI_MISO": "D12", "SPI_CLK": "D13", - "SPI_CS": "D9" + "SPI_CS": "D10" }, "NUCLEO_F207ZG": { "SPI_MOSI": "PC_12", diff --git a/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.cpp index fbe36020f8e..b55f71707b3 100644 --- a/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.cpp @@ -88,6 +88,7 @@ enum spif_default_instructions { SPIF_RSTEN = 0x66, // Reset Enable SPIF_RST = 0x99, // Reset SPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID + SPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register }; // Mutex is used for some SPI Driver commands that must be done sequentially with no other commands in between @@ -167,9 +168,9 @@ int SPIFBlockDevice::init() switch (vendor_device_ids[0]) { case 0xbf: // SST devices come preset with block protection - // enabled for some regions, issue write disable instruction to clear + // enabled for some regions, issue global protection unlock to clear _set_write_enable(); - _spi_send_general_command(SPIF_WRDI, SPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0); + _spi_send_general_command(SPIF_ULBPR, SPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0); break; } @@ -472,6 +473,11 @@ int SPIFBlockDevice::get_erase_value() const return 0xFF; } +const char *SPIFBlockDevice::get_type() const +{ + return "SPIF"; +} + /***************************************************/ /*********** SPI Driver API Functions **************/ /***************************************************/ diff --git a/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.h b/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.h index bdb85a1aafa..81532b00fcd 100644 --- a/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.h +++ b/components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.h @@ -28,7 +28,7 @@ enum spif_bd_error { SPIF_BD_ERROR_OK = 0, /*!< no error */ SPIF_BD_ERROR_DEVICE_ERROR = BD_ERROR_DEVICE_ERROR, /*!< device specific error -4001 */ SPIF_BD_ERROR_PARSING_FAILED = -4002, /* SFDP Parsing failed */ - SPIF_BD_ERROR_READY_FAILED = -4003, /* Wait for Mem Ready failed */ + SPIF_BD_ERROR_READY_FAILED = -4003, /* Wait for Memory Ready failed */ SPIF_BD_ERROR_WREN_FAILED = -4004, /* Write Enable Failed */ SPIF_BD_ERROR_INVALID_ERASE_PARAMS = -4005, /* Erase command not on sector aligned addresses or exceeds device size */ }; @@ -40,7 +40,7 @@ enum spif_bd_error { /** BlockDevice for SFDP based flash devices over SPI bus * * @code - * // Here's an example using SPI flash device on K82F target + * // An example using SPI flash device on K82F target * #include "mbed.h" * #include "SPIFBlockDevice.h" * @@ -88,7 +88,7 @@ class SPIFBlockDevice : public mbed::BlockDevice { * * @return SPIF_BD_ERROR_OK(0) - success * SPIF_BD_ERROR_DEVICE_ERROR - device driver transaction failed - * SPIF_BD_ERROR_READY_FAILED - Waiting for Memory ready failed or timedout + * SPIF_BD_ERROR_READY_FAILED - Waiting for Memory ready failed or timed out * SPIF_BD_ERROR_PARSING_FAILED - unexpected format or values in one of the SFDP tables */ virtual int init(); @@ -99,7 +99,7 @@ class SPIFBlockDevice : public mbed::BlockDevice { */ virtual int deinit(); - /** Desctruct SPIFBlockDevie + /** Desctruct SPIFBlockDevice */ ~SPIFBlockDevice() { @@ -118,7 +118,7 @@ class SPIFBlockDevice : public mbed::BlockDevice { /** Program blocks to a block device * - * The blocks must have been erased prior to being programmed + * @note The blocks must have been erased prior to being programmed * * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to @@ -132,14 +132,13 @@ class SPIFBlockDevice : public mbed::BlockDevice { /** Erase blocks on a block device * - * The state of an erased block is undefined until it has been programmed + * @note The state of an erased block is undefined until it has been programmed * * @param addr Address of block to begin erasing * @param size Size to erase in bytes, must be a multiple of erase block size * @return SPIF_BD_ERROR_OK(0) - success * SPIF_BD_ERROR_DEVICE_ERROR - device driver transaction failed * SPIF_BD_ERROR_READY_FAILED - Waiting for Memory ready failed or timed out - * SPIF_BD_ERROR_WREN_FAILED - Write Enable failed * SPIF_BD_ERROR_INVALID_ERASE_PARAMS - Trying to erase unaligned address or size */ virtual int erase(mbed::bd_addr_t addr, mbed::bd_size_t size); @@ -157,14 +156,14 @@ class SPIFBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t get_program_size() const; - /** Get the size of a eraseable block + /** Get the size of an erasable block * - * @return Size of a eraseable block in bytes + * @return Size of an erasable block in bytes * @note Must be a multiple of the program size */ virtual mbed::bd_size_t get_erase_size() const; - /** Get the size of minimal eraseable sector size of given address + /** Get the size of minimal erasable sector size of given address * * @param addr Any address within block queried for erase sector size (can be any address within flash size offset) * @return Size of minimal erase sector size, in given address region, in bytes @@ -189,6 +188,12 @@ class SPIFBlockDevice : public mbed::BlockDevice { */ virtual mbed::bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string representation of the BlockDevice class type. + */ + virtual const char *get_type() const; + private: // Internal functions @@ -203,7 +208,7 @@ class SPIFBlockDevice : public mbed::BlockDevice { // Parse and Detect required Basic Parameters from Table int _sfdp_parse_basic_param_table(uint32_t basic_table_addr, size_t basic_table_size); - // Parse and read information required by Regions Secotr Map + // Parse and read information required by Regions Sector Map int _sfdp_parse_sector_map_table(uint32_t sector_map_table_addr, size_t sector_map_table_size); // Detect fastest read Bus mode supported by device @@ -220,10 +225,10 @@ class SPIFBlockDevice : public mbed::BlockDevice { /***********************/ /* Utilities Functions */ /***********************/ - // Find the region to which the given offset belong to + // Find the region to which the given offset belongs to int _utils_find_addr_region(bd_size_t offset); - // Iterate on all supported Erase Types of the Region to which the offset belong to. + // Iterate on all supported Erase Types of the Region to which the offset belongs to. // Iterates from highest type to lowest int _utils_iterate_next_largest_erase_type(uint8_t &bitfield, int size, int offset, int boundry); @@ -260,7 +265,7 @@ class SPIFBlockDevice : public mbed::BlockDevice { private: // Master side hardware mbed::SPI _spi; - // Enable CS control (low/high) for SPI driver operatios + // Enable CS control (low/high) for SPI driver operations mbed::DigitalOut _cs; // Mutex is used to protect Flash device for some SPI Driver commands that must be done sequentially with no other commands in between diff --git a/components/storage/blockdevice/COMPONENT_SPIF/TESTS/block_device/spif/main.cpp b/components/storage/blockdevice/COMPONENT_SPIF/TESTS/block_device/spif/main.cpp index c012c4a6e9e..ad2b2636ed7 100644 --- a/components/storage/blockdevice/COMPONENT_SPIF/TESTS/block_device/spif/main.cpp +++ b/components/storage/blockdevice/COMPONENT_SPIF/TESTS/block_device/spif/main.cpp @@ -47,6 +47,11 @@ void basic_erase_program_read_test(SPIFBlockDevice &block_device, bd_size_t bloc { int err = 0; _mutex->lock(); + + // Make sure block address per each test is unique + static unsigned block_seed = 1; + srand(block_seed++); + // Find a random block bd_addr_t block = (rand() * block_size) % block_device.size(); diff --git a/components/storage/blockdevice/COMPONENT_SPIF/mbed_lib.json b/components/storage/blockdevice/COMPONENT_SPIF/mbed_lib.json index 4d6651ef14a..fc1bd85974e 100644 --- a/components/storage/blockdevice/COMPONENT_SPIF/mbed_lib.json +++ b/components/storage/blockdevice/COMPONENT_SPIF/mbed_lib.json @@ -55,6 +55,12 @@ "SPI_MISO": "PA_6", "SPI_CLK": "PA_5", "SPI_CS": "PB_12" + }, + "UHURU_RAVEN": { + "SPI_MOSI": "PE_14", + "SPI_MISO": "PE_13", + "SPI_CLK": "PE_12", + "SPI_CS": "PE_11" } } } diff --git a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp index f147e65e226..50f898c4f2a 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#if DEVICE_SERIAL && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) #include #include #include @@ -27,8 +28,6 @@ #define TRACE_GROUP "ESPA" // ESP8266 AT layer -using namespace mbed; - #define ESP8266_DEFAULT_BAUD_RATE 115200 #define ESP8266_ALL_SOCKET_IDS -1 @@ -47,9 +46,11 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts) _packets_end(&_packets), _heap_usage(0), _connect_error(0), + _disconnect(false), _fail(false), _sock_already(false), _closed(false), + _busy(false), _conn_status(NSAPI_STATUS_DISCONNECTED) { _serial.set_baud(ESP8266_DEFAULT_BAUD_RATE); @@ -91,9 +92,18 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts) bool ESP8266::at_available() { + bool ready = false; + _smutex.lock(); - bool ready = _parser.send("AT") - && _parser.recv("OK\n"); + // Might take a while to respond after HW reset + for(int i = 0; i < 5; i++) { + ready = _parser.send("AT") + && _parser.recv("OK\n"); + if (ready) { + break; + } + tr_debug("waiting AT response"); + } _smutex.unlock(); return ready; @@ -224,6 +234,8 @@ bool ESP8266::startup(int mode) bool ESP8266::reset(void) { + bool done = false; + _smutex.lock(); set_timeout(ESP8266_CONNECT_TIMEOUT); @@ -231,15 +243,16 @@ bool ESP8266::reset(void) if (_parser.send("AT+RST") && _parser.recv("OK\n") && _parser.recv("ready")) { - _clear_socket_packets(ESP8266_ALL_SOCKET_IDS); - _smutex.unlock(); - return true; + done = true; + break; } } + + _clear_socket_packets(ESP8266_ALL_SOCKET_IDS); set_timeout(); _smutex.unlock(); - return false; + return done; } bool ESP8266::dhcp(bool enabled, int mode) @@ -276,14 +289,14 @@ bool ESP8266::cond_enable_tcp_passive_mode() nsapi_error_t ESP8266::connect(const char *ap, const char *passPhrase) { + nsapi_error_t ret = NSAPI_ERROR_OK; + _smutex.lock(); set_timeout(ESP8266_CONNECT_TIMEOUT); _parser.send("AT+CWJAP_CUR=\"%s\",\"%s\"", ap, passPhrase); if (!_parser.recv("OK\n")) { if (_fail) { - _smutex.unlock(); - nsapi_error_t ret; if (_connect_error == 1) { ret = NSAPI_ERROR_CONNECTION_TIMEOUT; } else if (_connect_error == 2) { @@ -293,21 +306,21 @@ nsapi_error_t ESP8266::connect(const char *ap, const char *passPhrase) } else { ret = NSAPI_ERROR_NO_CONNECTION; } - _fail = false; _connect_error = 0; - return ret; } } + set_timeout(); _smutex.unlock(); - return NSAPI_ERROR_OK; + return ret; } bool ESP8266::disconnect(void) { _smutex.lock(); + _disconnect = true; bool done = _parser.send("AT+CWQAP") && _parser.recv("OK\n"); _smutex.unlock(); @@ -459,8 +472,7 @@ nsapi_error_t ESP8266::open_udp(int id, const char *addr, int port, int local_po _sock_already = false; // To be raised again by OOB msg done = close(id); if (!done) { - MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CLOSE_FAILED), \ - "ESP8266::_open_udp: device refused to close socket"); + break; } } if (_error) { @@ -478,9 +490,7 @@ nsapi_error_t ESP8266::open_udp(int id, const char *addr, int port, int local_po _smutex.unlock(); - if (done) { - tr_debug("UDP socket %d opened", id); - } + tr_debug("UDP socket %d opened: %s", id, (_sock_i[id].open ? "true" : "false")); return done ? NSAPI_ERROR_OK : NSAPI_ERROR_DEVICE_ERROR; } @@ -513,8 +523,7 @@ nsapi_error_t ESP8266::open_tcp(int id, const char *addr, int port, int keepaliv _sock_already = false; // To be raised again by OOB msg done = close(id); if (!done) { - MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CLOSE_FAILED), \ - "ESP8266::_open_tcp: device refused to close socket"); + break; } } if (_error) { @@ -532,9 +541,7 @@ nsapi_error_t ESP8266::open_tcp(int id, const char *addr, int port, int keepaliv _smutex.unlock(); - if (done) { - tr_debug("TCP socket %d opened", id); - } + tr_debug("TCP socket %d opened: %s", id, (_sock_i[id].open ? "true" : "false")); return done ? NSAPI_ERROR_OK : NSAPI_ERROR_DEVICE_ERROR; } @@ -550,30 +557,64 @@ bool ESP8266::dns_lookup(const char *name, char *ip) nsapi_error_t ESP8266::send(int id, const void *data, uint32_t amount) { - //May take a second try if device is busy - for (unsigned i = 0; i < 2; i++) { - _smutex.lock(); - set_timeout(ESP8266_SEND_TIMEOUT); - if (_parser.send("AT+CIPSEND=%d,%lu", id, amount) - && _parser.recv(">") - && _parser.write((char *)data, (int)amount) >= 0 - && _parser.recv("SEND OK")) { - // No flow control, data overrun is possible - if (_serial_rts == NC) { - while (_parser.process_oob()); // Drain USART receive register - } - _smutex.unlock(); - return NSAPI_ERROR_OK; - } - if (_error) { - _error = false; - } + nsapi_error_t ret = NSAPI_ERROR_DEVICE_ERROR; + // +CIPSEND supports up to 2048 bytes at a time + // Data stream can be truncated + if (amount > 2048 && _sock_i[id].proto == NSAPI_TCP) { + amount = 2048; + // Datagram must stay intact + } else if (amount > 2048 && _sock_i[id].proto == NSAPI_UDP) { + tr_debug("UDP datagram maximum size is 2048"); + return NSAPI_ERROR_PARAMETER; + } - set_timeout(); - _smutex.unlock(); + _smutex.lock(); + set_timeout(ESP8266_SEND_TIMEOUT); + _busy = false; + _error = false; + if (!_parser.send("AT+CIPSEND=%d,%lu", id, amount)) { + tr_debug("ESP8266::send(): AT+CIPSEND failed"); + goto END; + } + + if(!_parser.recv(">")) { + tr_debug("ESP8266::send(): didn't get \">\""); + ret = NSAPI_ERROR_WOULD_BLOCK; + goto END; + } + + if (_parser.write((char *)data, (int)amount) >= 0 && _parser.recv("SEND OK")) { + ret = NSAPI_ERROR_OK; } - return NSAPI_ERROR_DEVICE_ERROR; +END: + _process_oob(ESP8266_RECV_TIMEOUT, true); // Drain USART receive register to avoid data overrun + + // error hierarchy, from low to high + if (_busy) { + ret = NSAPI_ERROR_WOULD_BLOCK; + tr_debug("ESP8266::send(): modem busy"); + } + + if (ret == NSAPI_ERROR_DEVICE_ERROR) { + ret = NSAPI_ERROR_WOULD_BLOCK; + tr_debug("ESP8266::send(): send failed"); + } + + if (_error) { + ret = NSAPI_ERROR_CONNECTION_LOST; + tr_debug("ESP8266::send(): connection disrupted"); + } + + if (!_sock_i[id].open && ret != NSAPI_ERROR_OK) { + ret = NSAPI_ERROR_CONNECTION_LOST; + tr_debug("ESP8266::send(): socket closed abruptly"); + } + + set_timeout(); + _smutex.unlock(); + + return ret; } void ESP8266::_oob_packet_hdlr() @@ -674,6 +715,10 @@ int32_t ESP8266::_recv_tcp_passive(int id, void *data, uint32_t amount, uint32_t // update internal variable tcp_data_avbl to reflect the remaining data if (_sock_i[id].tcp_data_rcvd > 0) { + if (_sock_i[id].tcp_data_rcvd > (int32_t)amount) { + MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_EBADMSG), \ + "ESP8266::_recv_tcp_passive() too much data from modem\n"); + } if (_sock_i[id].tcp_data_avbl > _sock_i[id].tcp_data_rcvd) { _sock_i[id].tcp_data_avbl -= _sock_i[id].tcp_data_rcvd; } else { @@ -755,10 +800,9 @@ int32_t ESP8266::recv_udp(int id, void *data, uint32_t amount, uint32_t timeout) _smutex.lock(); set_timeout(timeout); - // No flow control, drain the USART receive register ASAP to avoid data overrun - if (_serial_rts == NC) { - _process_oob(timeout, true); - } + // Process OOB data since this is + // how UDP packets are received + _process_oob(timeout, true); set_timeout(); @@ -942,6 +986,7 @@ void ESP8266::_oob_busy() "ESP8266::_oob_busy() AT timeout\n"); } _busy = true; + _parser.abort(); } void ESP8266::_oob_tcp_data_hdlr() @@ -954,7 +999,7 @@ void ESP8266::_oob_tcp_data_hdlr() return; } - if (!_parser.read(_sock_i[_sock_active_id].tcp_data, len)) { + if (_parser.read(_sock_i[_sock_active_id].tcp_data, len) == -1) { return; } @@ -1035,7 +1080,12 @@ void ESP8266::_oob_connection_status() if (strcmp(status, "GOT IP\n") == 0) { _conn_status = NSAPI_STATUS_GLOBAL_UP; } else if (strcmp(status, "DISCONNECT\n") == 0) { - _conn_status = NSAPI_STATUS_DISCONNECTED; + if (_disconnect) { + _conn_status = NSAPI_STATUS_DISCONNECTED; + _disconnect = false; + } else { + _conn_status = NSAPI_STATUS_CONNECTING; + } } else if (strcmp(status, "CONNECTED\n") == 0) { _conn_status = NSAPI_STATUS_CONNECTING; } else { @@ -1068,6 +1118,13 @@ int8_t ESP8266::default_wifi_mode() return 0; } +void ESP8266::flush() +{ + _smutex.lock(); + _parser.flush(); + _smutex.unlock(); +} + bool ESP8266::set_default_wifi_mode(const int8_t mode) { _smutex.lock(); @@ -1082,3 +1139,4 @@ nsapi_connection_status_t ESP8266::connection_status() const { return _conn_status; } +#endif diff --git a/components/wifi/esp8266-driver/ESP8266/ESP8266.h b/components/wifi/esp8266-driver/ESP8266/ESP8266.h index 730acecc7d4..68eb5f969f5 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.h +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.h @@ -17,6 +17,7 @@ #ifndef ESP8266_H #define ESP8266_H +#if DEVICE_SERIAL && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) #include #include "drivers/UARTSerial.h" @@ -366,6 +367,15 @@ class ESP8266 { */ void bg_process_oob(uint32_t timeout, bool all); + /** + * Flush the serial port input buffers. + * + * If you do HW reset for ESP module, you should + * flush the input buffers from existing responses + * from the device. + */ + void flush(); + static const int8_t WIFIMODE_STATION = 1; static const int8_t WIFIMODE_SOFTAP = 2; static const int8_t WIFIMODE_STATION_SOFTAP = 3; @@ -428,6 +438,7 @@ class ESP8266 { // OOB state variables int _connect_error; + bool _disconnect; bool _fail; bool _sock_already; bool _closed; @@ -454,5 +465,5 @@ class ESP8266 { nsapi_connection_status_t _conn_status; mbed::Callback _conn_stat_cb; // ESP8266Interface registered }; - +#endif #endif diff --git a/components/wifi/esp8266-driver/ESP8266Interface.cpp b/components/wifi/esp8266-driver/ESP8266Interface.cpp index ed02a176991..f3e7d4b7de2 100644 --- a/components/wifi/esp8266-driver/ESP8266Interface.cpp +++ b/components/wifi/esp8266-driver/ESP8266Interface.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#if DEVICE_SERIAL && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) + #include #include @@ -25,6 +27,8 @@ #include "mbed_trace.h" #include "platform/Callback.h" #include "platform/mbed_debug.h" +#include "platform/mbed_wait_api.h" +#include "Kernel.h" #ifndef MBED_CONF_ESP8266_DEBUG #define MBED_CONF_ESP8266_DEBUG false @@ -38,6 +42,10 @@ #define MBED_CONF_ESP8266_CTS NC #endif +#ifndef MBED_CONF_ESP8266_RST +#define MBED_CONF_ESP8266_RST NC +#endif + #define TRACE_GROUP "ESPI" // ESP8266 Interface using namespace mbed; @@ -45,13 +53,17 @@ using namespace mbed; #if defined MBED_CONF_ESP8266_TX && defined MBED_CONF_ESP8266_RX ESP8266Interface::ESP8266Interface() : _esp(MBED_CONF_ESP8266_TX, MBED_CONF_ESP8266_RX, MBED_CONF_ESP8266_DEBUG, MBED_CONF_ESP8266_RTS, MBED_CONF_ESP8266_CTS), + _rst_pin(MBED_CONF_ESP8266_RST), // Notice that Pin7 CH_EN cannot be left floating if used as reset _ap_sec(NSAPI_SECURITY_UNKNOWN), + _if_blocking(true), + _if_connected(_cmutex), _initialized(false), - _started(false), + _connect_retval(NSAPI_ERROR_OK), _conn_stat(NSAPI_STATUS_DISCONNECTED), _conn_stat_cb(NULL), _global_event_queue(NULL), - _oob_event_id(0) + _oob_event_id(0), + _connect_event_id(0) { memset(_cbs, 0, sizeof(_cbs)); memset(ap_ssid, 0, sizeof(ap_ssid)); @@ -65,19 +77,24 @@ ESP8266Interface::ESP8266Interface() _sock_i[i].open = false; _sock_i[i].sport = 0; } + + _oob2global_event_queue(); } #endif // ESP8266Interface implementation -ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName rts, PinName cts) +ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName rts, PinName cts, PinName rst) : _esp(tx, rx, debug, rts, cts), + _rst_pin(rst), _ap_sec(NSAPI_SECURITY_UNKNOWN), + _if_blocking(true), + _if_connected(_cmutex), _initialized(false), - _started(false), _conn_stat(NSAPI_STATUS_DISCONNECTED), _conn_stat_cb(NULL), _global_event_queue(NULL), - _oob_event_id(0) + _oob_event_id(0), + _connect_event_id(0) { memset(_cbs, 0, sizeof(_cbs)); memset(ap_ssid, 0, sizeof(ap_ssid)); @@ -91,6 +108,8 @@ ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName r _sock_i[i].open = false; _sock_i[i].sport = 0; } + + _oob2global_event_queue(); } ESP8266Interface::~ESP8266Interface() @@ -98,6 +117,41 @@ ESP8266Interface::~ESP8266Interface() if (_oob_event_id) { _global_event_queue->cancel(_oob_event_id); } + + _cmutex.lock(); + if (_connect_event_id) { + _global_event_queue->cancel(_connect_event_id); + } + _cmutex.unlock(); + + // Power down the modem + _rst_pin.rst_assert(); +} + +ESP8266Interface::ResetPin::ResetPin(PinName rst_pin) : _rst_pin(mbed::DigitalOut(rst_pin, 1)) +{ +} + +void ESP8266Interface::ResetPin::rst_assert() +{ + if (_rst_pin.is_connected()) { + _rst_pin = 0; + tr_debug("HW reset asserted"); + } +} + +void ESP8266Interface::ResetPin::rst_deassert() +{ + if (_rst_pin.is_connected()) { + // Notice that Pin7 CH_EN cannot be left floating if used as reset + _rst_pin = 1; + tr_debug("HW reset deasserted"); + } +} + +bool ESP8266Interface::ResetPin::is_connected() +{ + return _rst_pin.is_connected(); } int ESP8266Interface::connect(const char *ssid, const char *pass, nsapi_security_t security, @@ -126,9 +180,37 @@ void ESP8266Interface::_oob2global_event_queue() } } +void ESP8266Interface::_connect_async() +{ + _cmutex.lock(); + if (!_connect_event_id) { + tr_debug("_connect_async(): cancelled"); + _cmutex.unlock(); + return; + } + _connect_retval = _esp.connect(ap_ssid, ap_pass); + if (_connect_retval == NSAPI_ERROR_OK || _connect_retval == NSAPI_ERROR_AUTH_FAILURE + || _connect_retval == NSAPI_ERROR_NO_SSID) { + _connect_event_id = 0; + _if_connected.notify_all(); + } else { + // Postpone to give other stuff time to run + _connect_event_id = _global_event_queue->call_in(ESP8266_CONNECT_TIMEOUT, callback(this, &ESP8266Interface::_connect_async)); + + if (!_connect_event_id) { + MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \ + "_connect_async(): unable to add event to queue"); + } + } + _cmutex.unlock(); +} + int ESP8266Interface::connect() { - nsapi_error_t status; + nsapi_error_t status = _conn_status_to_error(); + if (status != NSAPI_ERROR_NO_CONNECTION) { + return status; + } if (strlen(ap_ssid) == 0) { return NSAPI_ERROR_NO_SSID; @@ -145,38 +227,46 @@ int ESP8266Interface::connect() return status; } - if (!_oob_event_id) { - _oob2global_event_queue(); - } - if (get_ip_address()) { return NSAPI_ERROR_IS_CONNECTED; } - status = _startup(ESP8266::WIFIMODE_STATION); - if (status != NSAPI_ERROR_OK) { - return status; - } - _started = true; - if (!_esp.dhcp(true, 1)) { return NSAPI_ERROR_DHCP_FAILURE; } - int connect_error = _esp.connect(ap_ssid, ap_pass); - if (connect_error) { - return connect_error; + _cmutex.lock(); + + _connect_retval = NSAPI_ERROR_NO_CONNECTION; + MBED_ASSERT(!_connect_event_id); + _connect_event_id = _global_event_queue->call(callback(this, &ESP8266Interface::_connect_async)); + + if (!_connect_event_id) { + MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \ + "connect(): unable to add event to queue"); } - if (!get_ip_address()) { - return NSAPI_ERROR_DHCP_FAILURE; + while (_if_blocking && (_conn_status_to_error() != NSAPI_ERROR_IS_CONNECTED) + && (_connect_retval == NSAPI_ERROR_NO_CONNECTION)) { + _if_connected.wait(); } - return NSAPI_ERROR_OK; + _cmutex.unlock(); + + if (!_if_blocking) { + return NSAPI_ERROR_OK; + } else { + return _connect_retval; + } } int ESP8266Interface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security) { + nsapi_error_t status = _conn_status_to_error(); + if (status != NSAPI_ERROR_NO_CONNECTION) { + return status; + } + _ap_sec = security; if (!ssid) { @@ -222,26 +312,43 @@ int ESP8266Interface::set_channel(uint8_t channel) int ESP8266Interface::disconnect() { + _cmutex.lock(); + if (_connect_event_id) { + _global_event_queue->cancel(_connect_event_id); + _connect_event_id = 0; // cancel asynchronous connection attempt if one is ongoing + } + _cmutex.unlock(); + _initialized = false; + + nsapi_error_t status = _conn_status_to_error(); + if (status == NSAPI_ERROR_NO_CONNECTION || !get_ip_address()) { + return NSAPI_ERROR_NO_CONNECTION; + } + int ret = _esp.disconnect() ? NSAPI_ERROR_OK : NSAPI_ERROR_DEVICE_ERROR; if (ret == NSAPI_ERROR_OK) { // Try to lure the nw status update from ESP8266, might come later _esp.bg_process_oob(ESP8266_RECV_TIMEOUT, true); - // In case the status update arrives later - _conn_stat = NSAPI_STATUS_DISCONNECTED; + // In case the status update arrives later inform upper layers manually + if (_conn_stat != NSAPI_STATUS_DISCONNECTED) { + _conn_stat = NSAPI_STATUS_DISCONNECTED; + if (_conn_stat_cb) { + _conn_stat_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _conn_stat); + } + } } + // Power down the modem + _rst_pin.rst_assert(); + return ret; } const char *ESP8266Interface::get_ip_address() { - if (!_started) { - return NULL; - } - const char *ip_buff = _esp.ip_addr(); - if (!ip_buff || std::strcmp(ip_buff, "0.0.0.0") == 0) { + if (!ip_buff || strcmp(ip_buff, "0.0.0.0") == 0) { return NULL; } @@ -255,17 +362,17 @@ const char *ESP8266Interface::get_mac_address() const char *ESP8266Interface::get_gateway() { - return _started ? _esp.gateway() : NULL; + return _conn_stat != NSAPI_STATUS_DISCONNECTED ? _esp.gateway() : NULL; } const char *ESP8266Interface::get_netmask() { - return _started ? _esp.netmask() : NULL; + return _conn_stat != NSAPI_STATUS_DISCONNECTED ? _esp.netmask() : NULL; } int8_t ESP8266Interface::get_rssi() { - return _started ? _esp.rssi() : 0; + return _esp.rssi(); } int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count) @@ -277,11 +384,6 @@ int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count) return status; } - status = _startup(ESP8266::WIFIMODE_STATION); - if (status != NSAPI_ERROR_OK) { - return status; - } - return _esp.scan(res, count); } @@ -306,12 +408,11 @@ bool ESP8266Interface::_get_firmware_ok() nsapi_error_t ESP8266Interface::_init(void) { if (!_initialized) { + _hw_reset(); + if (!_esp.at_available()) { return NSAPI_ERROR_DEVICE_ERROR; } - if (!_esp.stop_uart_hw_flow_ctrl()) { - return NSAPI_ERROR_DEVICE_ERROR; - } if (!_esp.reset()) { return NSAPI_ERROR_DEVICE_ERROR; } @@ -330,20 +431,25 @@ nsapi_error_t ESP8266Interface::_init(void) if (!_esp.cond_enable_tcp_passive_mode()) { return NSAPI_ERROR_DEVICE_ERROR; } + if (!_esp.startup(ESP8266::WIFIMODE_STATION)) { + return NSAPI_ERROR_DEVICE_ERROR; + } _initialized = true; } return NSAPI_ERROR_OK; } -nsapi_error_t ESP8266Interface::_startup(const int8_t wifi_mode) +void ESP8266Interface::_hw_reset() { - if (!_started) { - if (!_esp.startup(wifi_mode)) { - return NSAPI_ERROR_DEVICE_ERROR; - } + if (_rst_pin.is_connected()) { + _rst_pin.rst_assert(); + // If you happen to use Pin7 CH_EN as reset pin, not needed otherwise + // https://www.espressif.com/sites/default/files/documentation/esp8266_hardware_design_guidelines_en.pdf + wait_ms(2); // Documentation says 200 us should have been enough, but experimentation shows that 1ms was not enough + _esp.flush(); + _rst_pin.rst_deassert(); } - return NSAPI_ERROR_OK; } struct esp8266_socket { @@ -470,7 +576,23 @@ int ESP8266Interface::socket_send(void *handle, const void *data, unsigned size) return NSAPI_ERROR_NO_SOCKET; } - status = _esp.send(socket->id, data, size); + if (!size) { + // Firmware limitation + return socket->proto == NSAPI_TCP ? 0 : NSAPI_ERROR_UNSUPPORTED; + } + + unsigned long int sendStartTime = rtos::Kernel::get_ms_count(); + do { + status = _esp.send(socket->id, data, size); + } while ((sendStartTime - rtos::Kernel::get_ms_count() < 50) + && (status != NSAPI_ERROR_OK)); + + if (status == NSAPI_ERROR_WOULD_BLOCK && socket->proto == NSAPI_TCP) { + tr_debug("ESP8266Interface::socket_send(): enqueuing the event call"); + _global_event_queue->call_in(100, callback(this, &ESP8266Interface::event)); + } else if (status == NSAPI_ERROR_WOULD_BLOCK && socket->proto == NSAPI_UDP) { + status = NSAPI_ERROR_DEVICE_ERROR; + } return status != NSAPI_ERROR_OK ? status : size; } @@ -639,8 +761,13 @@ WiFiInterface *WiFiInterface::get_default_instance() void ESP8266Interface::update_conn_state_cb() { + nsapi_connection_status_t prev_stat = _conn_stat; _conn_stat = _esp.connection_status(); + if (prev_stat == _conn_stat) { + return; + } + switch (_conn_stat) { // Doesn't require changes case NSAPI_STATUS_CONNECTING: @@ -648,16 +775,12 @@ void ESP8266Interface::update_conn_state_cb() break; // Start from scratch if connection drops/is dropped case NSAPI_STATUS_DISCONNECTED: - _started = false; break; // Handled on AT layer case NSAPI_STATUS_LOCAL_UP: case NSAPI_STATUS_ERROR_UNSUPPORTED: default: - _started = false; _initialized = false; - _global_event_queue->cancel(_oob_event_id); - _oob_event_id = 0; _conn_stat = NSAPI_STATUS_DISCONNECTED; } @@ -669,7 +792,38 @@ void ESP8266Interface::update_conn_state_cb() void ESP8266Interface::proc_oob_evnt() { - if (_initialized) { _esp.bg_process_oob(ESP8266_RECV_TIMEOUT, true); +} + +nsapi_error_t ESP8266Interface::_conn_status_to_error() +{ + nsapi_error_t ret; + + _esp.bg_process_oob(ESP8266_RECV_TIMEOUT, true); + + switch (_conn_stat) { + case NSAPI_STATUS_DISCONNECTED: + ret = NSAPI_ERROR_NO_CONNECTION; + break; + case NSAPI_STATUS_CONNECTING: + ret = NSAPI_ERROR_ALREADY; + break; + case NSAPI_STATUS_GLOBAL_UP: + ret = NSAPI_ERROR_IS_CONNECTED; + break; + default: + ret = NSAPI_ERROR_DEVICE_ERROR; } + + return ret; } + +nsapi_error_t ESP8266Interface::set_blocking(bool blocking) +{ + _if_blocking = blocking; + + return NSAPI_ERROR_OK; +} + + +#endif diff --git a/components/wifi/esp8266-driver/ESP8266Interface.h b/components/wifi/esp8266-driver/ESP8266Interface.h index 8b4b0fde854..93d455120fe 100644 --- a/components/wifi/esp8266-driver/ESP8266Interface.h +++ b/components/wifi/esp8266-driver/ESP8266Interface.h @@ -17,6 +17,8 @@ #ifndef ESP8266_INTERFACE_H #define ESP8266_INTERFACE_H +#if DEVICE_SERIAL && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) +#include "drivers/DigitalOut.h" #include "ESP8266/ESP8266.h" #include "events/EventQueue.h" #include "events/mbed_shared_queues.h" @@ -27,6 +29,8 @@ #include "features/netsocket/WiFiAccessPoint.h" #include "features/netsocket/WiFiInterface.h" #include "platform/Callback.h" +#include "rtos/ConditionVariable.h" +#include "rtos/Mutex.h" #define ESP8266_SOCKET_COUNT 5 @@ -58,7 +62,7 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { * @param rx RX pin * @param debug Enable debugging */ - ESP8266Interface(PinName tx, PinName rx, bool debug = false, PinName rts = NC, PinName cts = NC); + ESP8266Interface(PinName tx, PinName rx, bool debug = false, PinName rts = NC, PinName cts = NC, PinName rst = NC); /** * @brief ESP8266Interface default destructor @@ -314,11 +318,30 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { return this; } + /** Set blocking status of connect() which by default should be blocking. + * + * @param blocking Use true to make connect() blocking. + * @return NSAPI_ERROR_OK on success, negative error code on failure. + */ + virtual nsapi_error_t set_blocking(bool blocking); + private: // AT layer ESP8266 _esp; void update_conn_state_cb(); + // HW reset pin + class ResetPin { + public: + ResetPin(PinName rst_pin); + void rst_assert(); + void rst_deassert(); + bool is_connected(); + private: + mbed::DigitalOut _rst_pin; + } _rst_pin; + + // Credentials static const int ESP8266_SSID_MAX_LENGTH = 32; /* 32 is what 802.11 defines as longest possible name */ char ap_ssid[ESP8266_SSID_MAX_LENGTH + 1]; /* The longest possible name; +1 for the \0 */ @@ -327,6 +350,12 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { char ap_pass[ESP8266_PASSPHRASE_MAX_LENGTH + 1]; /* The longest possible passphrase; +1 for the \0 */ nsapi_security_t _ap_sec; + bool _if_blocking; // NetworkInterface, blocking or not + rtos::ConditionVariable _if_connected; + + // connect status reporting + nsapi_error_t _conn_status_to_error(); + // Drivers's socket info struct _sock_info { bool open; @@ -338,8 +367,8 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { int _initialized; bool _get_firmware_ok(); nsapi_error_t _init(void); - int _started; - nsapi_error_t _startup(const int8_t wifi_mode); + void _hw_reset(); + nsapi_error_t _connect_retval; //sigio struct { @@ -356,8 +385,12 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { // Use global EventQueue events::EventQueue *_global_event_queue; int _oob_event_id; + int _connect_event_id; void proc_oob_evnt(); void _oob2global_event_queue(); -}; + void _connect_async(); + rtos::Mutex _cmutex; // Protect asynchronous connection logic +}; +#endif #endif diff --git a/components/wifi/esp8266-driver/README.md b/components/wifi/esp8266-driver/README.md index 4b60886cc68..70554dd765a 100644 --- a/components/wifi/esp8266-driver/README.md +++ b/components/wifi/esp8266-driver/README.md @@ -22,7 +22,7 @@ protocol, where data would be lost without notification. On UDP using all firmwa ## Mandatory configuration -![mbed_lib.json](mbed_lib.json) configuration assumes Arduino form factor. Please adjust according to your board. You can override parameters from your app config file. +[mbed_lib.json](mbed_lib.json) configuration assumes Arduino form factor. Please adjust according to your board. You can override parameters from your app config file. At minimum, check the following configuration parameters: diff --git a/components/wifi/esp8266-driver/mbed_lib.json b/components/wifi/esp8266-driver/mbed_lib.json index 021d696e4a5..28337d80772 100644 --- a/components/wifi/esp8266-driver/mbed_lib.json +++ b/components/wifi/esp8266-driver/mbed_lib.json @@ -17,6 +17,10 @@ "help": "CTS pin for serial connection, defaults to Not Connected", "value": null }, + "rst": { + "help": "RESET pin for the modem, defaults to Not Connected", + "value": null + }, "debug": { "help": "Enable debug logs. [true/false]", "value": false diff --git a/docs/design-documents/features/storage/BlockDevices/get_type_method.md b/docs/design-documents/features/storage/BlockDevices/get_type_method.md new file mode 100644 index 00000000000..c9eaf6d43ae --- /dev/null +++ b/docs/design-documents/features/storage/BlockDevices/get_type_method.md @@ -0,0 +1,81 @@ +# Get type method addon to block devices class + +### Revision history +| Revision | Date | Authors | Mbed OS version | Comments | +|---------- |-----------------|-------------------------------------------------------------|------------------------|------------------| +| 1.0 | 04/12/2018 | Yossi Levy ([@yossi2le](https://github.com/yossi2le/)) | 5.11+ | Initial revision | + +## Introduction + +Most storage solutions use block devices, whether it is Filesystems, KVStore or any other solution +most of them will have some BlockDevice class underneath. However, sometimes a storage type or an application needs to know the physical +BlockDevice type in order to work smoothly or the BlockDevice type in order to decide what is +the best storage configuration to use. +To address this an add-on method of getting type is proposed for BlockDevice interface class. + +## The Motivation + +Below there is a list of some examples to explain the motivation and the need for the adding of get_type to BlockDevice interface. + +examples: +- TDBStore needs to know if there are flash characteristics for the block device and if there aren�t it should use + FlashSimBlockDevice to simulate a flash BlockDevice. +- TDBStore should not co-exists with NVStore, but this is true only if TDBStore is running on internal memory. Therefore if TDBStore running on + internal memory and NVStore is also there an error should be raised. +- When creating a file system you would prefer working with FAT on top of SD while LITTLEFS on top of any flash block device. + Those preference in favor of better performance. + +To summarize the above, it may be very useful when using block device to know the type of the instance and especially, but not only, +when using get_default_instace. Sometimes applications and tests would like to behave differently depending on the instance that has been created +or provided to them. + +In fact it might be worth to consider adding the get_type to any interface with get_default_instance at mbed-os. + +## Dive into details +we should add the following method to BlockDevice interface class. + +```virtual const char * get_type() const = 0;``` + +then every physical BlockDevice class which implements the interface should also implement this method and return a string +representing its type. Furthermore, a nonphysical BlockDevice like SlicingBlockDevice should return the underlying physical +BlockDevice type. + +### Physical BlockDevice: +``` +const char * HeapBlockDevice::get_type() const +{ + return "HEAP"; +} +``` + +### Logical BlockDevice: +``` +const char * SlicingBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} +``` + +### Open issue +The ChainingBlockDevice which chains different type of physical block devices into one block device is unable +to return the underneath physical as it contains two or more types. Therefore it will return CHAINING as its +identity and its left for the user to decide how the application will treat this information. + + +The below table describes physical BlockDevice and its tyep names + + +| BlockDevice class | String description | +|-----------------------------|--------------------| +| HeapBlockDevice | "HEAP" | +| SPIFBlockDevice | "SPIF" | +| SPIFReducedBlockDevice | "SPIFR" | +| QSPIFBlockDevice | "QSPIF" | +| SDBlockDevice | "SD" | +| FlashIAPBlockDevice | "FLASHIAP" | +| DataFlashBlockDevice | "DATAFLASH" | +| ChainingBlockDevice | "CHAINING" | diff --git a/docs/design-documents/features/storage/Configuration/CONFIGURATION.md b/docs/design-documents/features/storage/Configuration/CONFIGURATION.md index 82dc28c4132..27e06a252d4 100644 --- a/docs/design-documents/features/storage/Configuration/CONFIGURATION.md +++ b/docs/design-documents/features/storage/Configuration/CONFIGURATION.md @@ -62,6 +62,8 @@ The following is a list of all storage parameters available and their descriptio * `TDB_EXTERNAL_NO_RBP`. * `FILESYSTEM`. * `FILESYSTEM_NO_RBP`. + * `default` + If the `default` configuration is set, the system will choose the type of storage based on the block device component set in `target.json`. If QSPIF, SPIF or DATAFLASH is the block device component in `target.json`, the system chooses `TDB_EXTERNAL` as its storage option. If SD is the block device in `target.json`, the system chooses FILESYSTEM. If FLASHIAP is the only block device component, the system chooses `TDB_INTERNAL`. * `default_kv` - This is a string representing the path for the default KVStore instantiation. Applications can pass an empty path (only the key name) or pass the generated name for this parameter (`MBED_CONF_STORAGE_DEFAULT_KV`) as the path to use this configuration. * `internal_size` - The size in bytes for the internal FlashIAP block device. This, together with the `internal_base_address`, adjusts exactly the size and location where the block device resides on memory. If not defined, the block device will try to get the maximum size available. * `internal_base_address` - The address where the internal FlashIAP blockDevice starts. This helps to prevent collisions with other needs, such as firmware updates. If not defined, the start address will be set to the first sector after the application code ends in `TDB_internal`. In any external configurations with rollback protection support, it will be set to end of flash - `rbp_internal_size`. @@ -83,7 +85,7 @@ Below is the main storage configuration `mbed_lib.json` file: "name": "storage", "config": { "storage_type": { - "help": "Options are TDB_INTERNAL, TDB_EXTERNAL, TDB_EXTERNAL_NO_RBP, FILESYSTEM or FILESYSTEM_NO_RBP.", + "help": "Options are TDB_INTERNAL, TDB_EXTERNAL, TDB_EXTERNAL_NO_RBP, FILESYSTEM, FILESYSTEM_NO_RBP or default. If default, the storage type will be chosen according to the component defined in targets.json", "value": "NULL" }, "default_kv": { diff --git a/docs/design-documents/features/storage/KVStore/KVStore_design.md b/docs/design-documents/features/storage/KVStore/KVStore_design.md index f60fdc74ab1..fc3fa08d6a9 100644 --- a/docs/design-documents/features/storage/KVStore/KVStore_design.md +++ b/docs/design-documents/features/storage/KVStore/KVStore_design.md @@ -82,7 +82,6 @@ class KVStore { enum create_flags { WRITE_ONCE_FLAG = (1 << 0), REQUIRE_CONFIDENTIALITY_FLAG = (1 << 1), - REQUIRE_INTEGRITY_FLAG = (1 << 2), REQUIRE_REPLAY_PROTECTION_FLAG = (1 << 3), }; @@ -130,7 +129,6 @@ As mentioned above, each KVStore API has a parallel C-style API, used globally w enum kv_create_flags { KV_WRITE_ONCE_FLAG = (1 << 0), KV_REQUIRE_CONFIDENTIALITY_FLAG = (1 << 1), - KV_REQUIRE_INTEGRITY_FLAG = (1 << 2), KV_REQUIRE_REPLAY_PROTECTION_FLAG = (1 << 3), }; diff --git a/docs/design-documents/features/storage/SecureStore/SecureStore_design.md b/docs/design-documents/features/storage/SecureStore/SecureStore_design.md index fba01b4a11a..385271c9768 100644 --- a/docs/design-documents/features/storage/SecureStore/SecureStore_design.md +++ b/docs/design-documents/features/storage/SecureStore/SecureStore_design.md @@ -47,10 +47,11 @@ SecureStore is a storage class, derived from KVStore. It adds security features As such, it offers all KVStore APIs, with additional security options (which can be selected using the creation flags at set). These include: - Encryption: Data is encrypted using the AES-CTR encryption method, with a randomly generated 8-byte IV. Key is derived from [Device Key](../../../../../../mbed-os/features/device_key/README.md), using the NIST SP 800-108 KDF in counter mode spec, where salt is the key trimmed to 32 bytes, with "ENC" as prefix. Flag here is called "require confidentiality flag". -- Authentication: A 16-byte CMAC is calculated on all stored data (including metadata) and stored at the end of the record. When reading the record, calculated CMAC is compared with the stored one. In the case of encryption, CMAC is calculated on the encrypted data. The key used for generating the CMAC is derived from [Device Key](../../../../../../mbed-os/features/device_key/README.md), where salt is the key trimmed to 32 bytes, with "AUTH" as prefix. Flag here is called "Require integrity flag". - Rollback protection: (Requires authentication) CMAC is stored in a designated rollback protected storage (also of KVStore type) and compared to when reading the data under the same KVStore key. A missing or different key in the rollback protected storage results in an error. The flag here is called "Require replay protection flag". - Write once: Key can only be stored once and can't be removed. The flag here is called "Write once flag". +SecureStore maintains data integrity using a record CMAC. This 16-byte CMAC is calculated on all stored data (including key & metadata) and stored at the end of the record. When reading the record, SecureStore compares the calculated CMAC with the stored one. In the case of encryption, CMAC is calculated on the encrypted data. The key used for generating the CMAC is derived from [Device Key](../../../../../../mbed-os/features/device_key/README.md), where salt is the key trimmed to 32 bytes, with "AUTH" as prefix. + ![SecureStore Layers](./SecureStore_layers.jpg) ### Data layout @@ -73,7 +74,8 @@ Fields are: Because the code can't construct a single buffer to store all data (including metadata and possibly encrypted data) in one shot, setting the data occurs in chunks, using the incremental set APIs. Get uses the offset argument to extract metadata, data and CMAC separately. -Rollback protection (RBP) keys are stored in the designated rollback protection storage, which is also of KVStore type. RBP keys are the same as the SecureStore keys. +Rollback protection (RBP) keys are stored in the designated rollback protection storage, which is also of KVStore type. RBP keys are the same as the SecureStore keys. +This RBP storage is also used for storing the CMAC in write once case, as otherwise an attacker can delete this key from the underlying storage and modify this flag. # Detailed design @@ -227,14 +229,13 @@ Pseudo code: - Take `_mutex`. - Call `_underlying_kv` `get` API with `metadata` size into a `metadata` local structure. - If failure: - - If rollback protection flag set: + - If rollback protection or write once flag set: - Call `_rbp_kv` `get` API on a local `rbp_cmac` variable, key is `key`, size 16. - If no error, return "RBP authentication" error. - Return "Key not found error". -- If authentication flag set: - - Derive a key from device key and `key`. - - Allocate and initialize `auth_handle` CMAC calculation local handle with derived key. - - Using `auth_handle` handle, calculate CMAC on `key` and `metadata`. +- Derive a key from device key and `key`. +- Allocate and initialize `auth_handle` CMAC calculation local handle with derived key. +- Using `auth_handle` handle, calculate CMAC on `key` and `metadata`. - If encrypt flag set: - Derive a key from device key and `key`. - Allocate and initialize a local `enc_handle` AES-CTR local handle with derived key and `iv` field. @@ -247,13 +248,13 @@ Pseudo code: - Else: - Set `dest_buf` to `_scratch_buf` and `chunk_size` to `actual_size`. - Call `_underlying_kv` `get` API with `dest_buf` and `chunk_size`. - - If authentication flag set, calculate CMAC on `dest_buf`, using `_auth_handle` handle. + - Calculate CMAC on `dest_buf`, using `_auth_handle` handle. - If encrypt flag set, decrypt `dest_buf` (in place) using `_enc_handle` handle. - Decrement `data_size` by `chunk_size`. - Call `_underlying_kv` `get` API with on a local `read_cmac` variable, size 16. - Generate CMAC on local `cmac` variable . - Using `mbedtls_ssl_safer_memcmp` function, compare `read_cmac` with `cmac`. Return "data corrupt error" if no match. -- If rollback protection flag set: +- If rollback protection or write once flags set: - Call `_rbp_kv` `get` API on a local `rbp_cmac` variable, key is `key`, size 16. - If `rbp_cmac` doesn't match `cmac`, clear `buffer` and return "RBP authentication" error. - Deinitialize and free `auth_handle` and `enc_handle`. @@ -312,10 +313,9 @@ Pseudo code: - Using TLS entropy function on `_entropy` handle, randomly generate `iv` field. - Allocate and initialize `enc_handle` AES-CTR handle field with derived key and `iv` field. - Fill all available fields in `metadata`. -- If authentication flag set: - - Derive a key from device key and `key` as salt (trimmed to 32 bytes with "AUTH" as prefix). - - Allocate and initialize `auth_handle` CMAC calculation handle field with derived key. - - Using `auth_handle` handle, calculate CMAC on `key` and `metadata`. +- Derive a key from device key and `key` as salt (trimmed to 32 bytes with "AUTH" as prefix). +- Allocate and initialize `auth_handle` CMAC calculation handle field with derived key. +- Using `auth_handle` handle, calculate CMAC on `key` and `metadata`. - Call `_underlying_kv` `set_start` API. - Call `_underlying_kv` `set_add_data` API with `metadata` field. - Return OK. @@ -332,10 +332,10 @@ Pseudo code: - If flags include encryption: - Iterate over `value_data` field in chunks of `_scratch_buf` size. - Using `enc_handle` handle field, encrypt chunk into `_scratch_buf`. - - If authentication flag set, using `auth_handle` handle field, update CMAC of `_scratch_buf`. + - Using `auth_handle` handle field, update CMAC of `_scratch_buf`. - Call `_underlying_kv` `set_add_data` API with `_scratch_buf`. - Else: - - If authentication flag set, using `auth_handle` handle field, update CMAC of `value_data`. + - Using `auth_handle` handle field, update CMAC of `value_data`. - Call `_underlying_kv` `set_add_data` API with `value_data`. - Update `offset` field in handle. - Return OK. @@ -352,7 +352,7 @@ Pseudo code: - If authentication flag set, using `auth_handle` handle field, generate `cmac`. - Call `_underlying_kv` `set_add_data` API with `cmac`. - Call `_underlying_kv` `set_finalize`. -- If rollback protect flag set, call `_rbp_kv` `set` API with `key` as key and `cmac` as data. +- If rollback protect or write once flags set, call `_rbp_kv` `set` API with `key` as key and `cmac` as data. - Deinitialize and free `auth_handle` and `enc_handle`. - Free `handle`. - Release `_mutex`. @@ -426,10 +426,10 @@ res = secure_store.init(); const char *val1 = "Value of key 1"; const char *val2 = "Updated value of key 1"; -// Add "Key1" with encryption and authentication flags -res = secure_store.set("Key1", val1, sizeof(val1), KVSTore::REQUIRE_CONFIDENTIALITY_FLAG | KVSTore::REQUIRE_INTEGRITY_FLAG); +// Add "Key1" with encryption flag +res = secure_store.set("Key1", val1, sizeof(val1), KVSTore::REQUIRE_CONFIDENTIALITY_FLAG); // Update value of "Key1" (flags must be the same per key) -res = secure_store.set("Key1", val2, sizeof(val2), KVSTore::REQUIRE_CONFIDENTIALITY_FLAG | KVSTore::REQUIRE_INTEGRITY_FLAG); +res = secure_store.set("Key1", val2, sizeof(val2), KVSTore::REQUIRE_CONFIDENTIALITY_FLAG); uint_8 value[32]; size_t actual_size; diff --git a/doxyfile_options b/doxyfile_options index 43aca60d4de..550a6bc930f 100644 --- a/doxyfile_options +++ b/doxyfile_options @@ -859,7 +859,10 @@ EXCLUDE_PATTERNS = */tools/* \ */ble/pal/* \ */components/802.15.4_RF/* \ */components/wifi/* \ - */UNITTESTS/* + */UNITTESTS/* \ + */features/cellular/framework/AT/* \ + */features/cellular/framework/device/* \ + */features/cellular/framework/common/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -2099,6 +2102,8 @@ PREDEFINED = DOXYGEN_ONLY \ DEVICE_SPISLAVE \ DEVICE_QSPI \ DEVICE_STORAGE \ + COMPONENT_SPE \ + COMPONENT_SPM_MAILBOX \ "MBED_DEPRECATED_SINCE(d, m)=" \ "MBED_ENABLE_IF_CALLBACK_COMPATIBLE(F, M)=" \ "MBED_DEPRECATED(s)=" diff --git a/doxygen_options.json b/doxygen_options.json index fc1279a5ece..0e884b9a43f 100644 --- a/doxygen_options.json +++ b/doxygen_options.json @@ -6,7 +6,7 @@ "SEARCH_INCLUDES": "YES", "INCLUDE_PATH": "", "INCLUDE_FILE_PATTERNS": "", - "PREDEFINED": "DOXYGEN_ONLY DEVICE_ANALOGIN DEVICE_ANALOGOUT DEVICE_CAN DEVICE_CRC DEVICE_ETHERNET DEVICE_EMAC DEVICE_FLASH DEVICE_I2C DEVICE_I2CSLAVE DEVICE_I2C_ASYNCH DEVICE_INTERRUPTIN DEVICE_ITM DEVICE_LPTICKER DEVICE_MPU DEVICE_PORTIN DEVICE_PORTINOUT DEVICE_PORTOUT DEVICE_PWMOUT DEVICE_RTC DEVICE_TRNG DEVICE_SERIAL DEVICE_SERIAL_ASYNCH DEVICE_SERIAL_FC DEVICE_SLEEP DEVICE_SPI DEVICE_SPI_ASYNCH DEVICE_SPISLAVE DEVICE_QSPI DEVICE_STORAGE \"MBED_DEPRECATED_SINCE(f, g)=\" \"MBED_ENABLE_IF_CALLBACK_COMPATIBLE(F, M)=\" \"MBED_DEPRECATED(s)=\"", + "PREDEFINED": "DOXYGEN_ONLY DEVICE_ANALOGIN DEVICE_ANALOGOUT DEVICE_CAN DEVICE_CRC DEVICE_ETHERNET DEVICE_EMAC DEVICE_FLASH DEVICE_I2C DEVICE_I2CSLAVE DEVICE_I2C_ASYNCH DEVICE_INTERRUPTIN DEVICE_ITM DEVICE_LPTICKER DEVICE_MPU DEVICE_PORTIN DEVICE_PORTINOUT DEVICE_PORTOUT DEVICE_PWMOUT DEVICE_RTC DEVICE_TRNG DEVICE_SERIAL DEVICE_SERIAL_ASYNCH DEVICE_SERIAL_FC DEVICE_SLEEP DEVICE_SPI DEVICE_SPI_ASYNCH DEVICE_SPISLAVE DEVICE_QSPI DEVICE_STORAGE COMPONENT_SPE COMPONENT_SPM_MAILBOX \"MBED_DEPRECATED_SINCE(f, g)=\" \"MBED_ENABLE_IF_CALLBACK_COMPATIBLE(F, M)=\" \"MBED_DEPRECATED(s)=\"", "EXPAND_AS_DEFINED": "", "SKIP_FUNCTION_MACROS": "NO", "STRIP_CODE_COMMENTS": "NO", diff --git a/drivers/AnalogIn.cpp b/drivers/AnalogIn.cpp index 86fd7be2350..dd9d22f306f 100644 --- a/drivers/AnalogIn.cpp +++ b/drivers/AnalogIn.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/AnalogIn.h b/drivers/AnalogIn.h index 287e6a3d7e9..8f247e5975b 100644 --- a/drivers/AnalogIn.h +++ b/drivers/AnalogIn.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_ANALOGIN) || defined(DOXYGEN_ONLY) +#if DEVICE_ANALOGIN || defined(DOXYGEN_ONLY) #include "hal/analogin_api.h" #include "platform/SingletonPtr.h" diff --git a/drivers/AnalogOut.h b/drivers/AnalogOut.h index 111e1006bf3..d12cbafcc4d 100644 --- a/drivers/AnalogOut.h +++ b/drivers/AnalogOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_ANALOGOUT) || defined(DOXYGEN_ONLY) +#if DEVICE_ANALOGOUT || defined(DOXYGEN_ONLY) #include "hal/analogout_api.h" #include "platform/PlatformMutex.h" diff --git a/drivers/BusIn.cpp b/drivers/BusIn.cpp index c14351f3fe5..7aa557738cb 100644 --- a/drivers/BusIn.cpp +++ b/drivers/BusIn.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/BusIn.h b/drivers/BusIn.h index da3f44545ff..61bf7b536e3 100644 --- a/drivers/BusIn.h +++ b/drivers/BusIn.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/BusInOut.cpp b/drivers/BusInOut.cpp index 170e035b962..8039a450403 100644 --- a/drivers/BusInOut.cpp +++ b/drivers/BusInOut.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/BusInOut.h b/drivers/BusInOut.h index 02f62fbf3ff..64a4e0e1892 100644 --- a/drivers/BusInOut.h +++ b/drivers/BusInOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/BusOut.cpp b/drivers/BusOut.cpp index 769d2e68919..654040103cc 100644 --- a/drivers/BusOut.cpp +++ b/drivers/BusOut.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/BusOut.h b/drivers/BusOut.h index 46e21240a7a..ca83d00a17a 100644 --- a/drivers/BusOut.h +++ b/drivers/BusOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/CAN.cpp b/drivers/CAN.cpp index e3a0d42854d..a3699e3919d 100644 --- a/drivers/CAN.cpp +++ b/drivers/CAN.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/CAN.h b/drivers/CAN.h index d3565ee7271..c34b1f02658 100644 --- a/drivers/CAN.h +++ b/drivers/CAN.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_CAN) || defined(DOXYGEN_ONLY) +#if DEVICE_CAN || defined(DOXYGEN_ONLY) #include "hal/can_api.h" #include "platform/Callback.h" diff --git a/drivers/DigitalIn.h b/drivers/DigitalIn.h index 8eceb077073..348a87bf33a 100644 --- a/drivers/DigitalIn.h +++ b/drivers/DigitalIn.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/DigitalInOut.h b/drivers/DigitalInOut.h index 88411957df2..9ceb025aee8 100644 --- a/drivers/DigitalInOut.h +++ b/drivers/DigitalInOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/DigitalOut.h b/drivers/DigitalOut.h index 8f9059173e3..b9fe1f2d3ec 100644 --- a/drivers/DigitalOut.h +++ b/drivers/DigitalOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Ethernet.cpp b/drivers/Ethernet.cpp index 6b0a2bfab6f..b2b73c113cc 100644 --- a/drivers/Ethernet.cpp +++ b/drivers/Ethernet.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Ethernet.h b/drivers/Ethernet.h index a9b7c2c1dbf..30618806e52 100644 --- a/drivers/Ethernet.h +++ b/drivers/Ethernet.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +20,7 @@ #include "platform/platform.h" #include "platform/NonCopyable.h" -#if defined (DEVICE_ETHERNET) || defined(DOXYGEN_ONLY) +#if DEVICE_ETHERNET || defined(DOXYGEN_ONLY) namespace mbed { /** \addtogroup drivers */ diff --git a/drivers/FlashIAP.cpp b/drivers/FlashIAP.cpp index 8ef6f6e1b0b..ff015092593 100644 --- a/drivers/FlashIAP.cpp +++ b/drivers/FlashIAP.cpp @@ -29,10 +29,12 @@ #include "platform/ScopedRomWriteLock.h" -#ifdef DEVICE_FLASH +#if DEVICE_FLASH namespace mbed { +const unsigned int num_write_retries = 16; + SingletonPtr FlashIAP::_mutex; static inline bool is_aligned(uint32_t number, uint32_t alignment) @@ -119,7 +121,7 @@ int FlashIAP::program(const void *buffer, uint32_t addr, uint32_t size) int ret = 0; _mutex->lock(); - while (size) { + while (size && !ret) { uint32_t current_sector_size = flash_get_sector_size(&_flash, addr); bool unaligned_src = (((size_t) buf / sizeof(uint32_t) * sizeof(uint32_t)) != (size_t) buf); chunk = std::min(current_sector_size - (addr % current_sector_size), size); @@ -141,11 +143,17 @@ int FlashIAP::program(const void *buffer, uint32_t addr, uint32_t size) prog_size = chunk; } { - ScopedRamExecutionLock make_ram_executable; - ScopedRomWriteLock make_rom_writable; - if (flash_program_page(&_flash, addr, prog_buf, prog_size)) { - ret = -1; - break; + // Few boards may fail the write actions due to HW limitations (like critical drivers that + // disable flash operations). Just retry a few times until success. + for (unsigned int retry = 0; retry < num_write_retries; retry++) { + ScopedRamExecutionLock make_ram_executable; + ScopedRomWriteLock make_rom_writable; + ret = flash_program_page(&_flash, addr, prog_buf, prog_size); + if (ret) { + ret = -1; + } else { + break; + } } } size -= chunk; @@ -187,15 +195,18 @@ int FlashIAP::erase(uint32_t addr, uint32_t size) int32_t ret = 0; _mutex->lock(); - while (size) { - { + while (size && !ret) { + // Few boards may fail the erase actions due to HW limitations (like critical drivers that + // disable flash operations). Just retry a few times until success. + for (unsigned int retry = 0; retry < num_write_retries; retry++) { ScopedRamExecutionLock make_ram_executable; ScopedRomWriteLock make_rom_writable; ret = flash_erase_sector(&_flash, addr); - } - if (ret != 0) { - ret = -1; - break; + if (ret) { + ret = -1; + } else { + break; + } } current_sector_size = flash_get_sector_size(&_flash, addr); size -= current_sector_size; diff --git a/drivers/FlashIAP.h b/drivers/FlashIAP.h index befb45ac23a..0c3c8e10495 100644 --- a/drivers/FlashIAP.h +++ b/drivers/FlashIAP.h @@ -22,7 +22,7 @@ #ifndef MBED_FLASHIAP_H #define MBED_FLASHIAP_H -#if defined (DEVICE_FLASH) || defined(DOXYGEN_ONLY) +#if DEVICE_FLASH || defined(DOXYGEN_ONLY) #include "flash_api.h" #include "platform/SingletonPtr.h" @@ -33,14 +33,18 @@ // Export ROM end address #if defined(TOOLCHAIN_GCC_ARM) extern uint32_t __etext; -#define FLASHIAP_ROM_END ((uint32_t) &__etext) +extern uint32_t __data_start__; +extern uint32_t __data_end__; +#define FLASHIAP_APP_ROM_END_ADDR (((uint32_t) &__etext) + ((uint32_t) &__data_end__) - ((uint32_t) &__data_start__)) #elif defined(TOOLCHAIN_ARM) extern uint32_t Load$$LR$$LR_IROM1$$Limit[]; -#define FLASHIAP_ROM_END ((uint32_t)Load$$LR$$LR_IROM1$$Limit) +#define FLASHIAP_APP_ROM_END_ADDR ((uint32_t)Load$$LR$$LR_IROM1$$Limit) #elif defined(TOOLCHAIN_IAR) #pragma section=".rodata" #pragma section=".text" -#define FLASHIAP_ROM_END (std::max((uint32_t) __section_end(".rodata"), (uint32_t) __section_end(".text"))) +#pragma section=".init_array" +#define FLASHIAP_APP_ROM_END_ADDR std::max(std::max((uint32_t) __section_end(".rodata"), (uint32_t) __section_end(".text")), \ + (uint32_t) __section_end(".init_array")) #endif namespace mbed { diff --git a/drivers/I2C.cpp b/drivers/I2C.cpp index 2cdcc49d8c4..3e06825c17d 100644 --- a/drivers/I2C.cpp +++ b/drivers/I2C.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/I2C.h b/drivers/I2C.h index daca532ef51..9a19bd12474 100644 --- a/drivers/I2C.h +++ b/drivers/I2C.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +20,7 @@ #include "platform/platform.h" #include "hal/gpio_api.h" -#if defined (DEVICE_I2C) || defined(DOXYGEN_ONLY) +#if DEVICE_I2C || defined(DOXYGEN_ONLY) #include "hal/i2c_api.h" #include "platform/SingletonPtr.h" diff --git a/drivers/I2CSlave.cpp b/drivers/I2CSlave.cpp index b29b4e74e24..f0697460be6 100644 --- a/drivers/I2CSlave.cpp +++ b/drivers/I2CSlave.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/I2CSlave.h b/drivers/I2CSlave.h index 12d9ce08c74..78715ba9345 100644 --- a/drivers/I2CSlave.h +++ b/drivers/I2CSlave.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_I2CSLAVE) || defined(DOXYGEN_ONLY) +#if DEVICE_I2CSLAVE || defined(DOXYGEN_ONLY) #include "hal/i2c_api.h" diff --git a/drivers/InterruptIn.cpp b/drivers/InterruptIn.cpp index 51d947f7a35..a4ab5f0135a 100644 --- a/drivers/InterruptIn.cpp +++ b/drivers/InterruptIn.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/InterruptIn.h b/drivers/InterruptIn.h index 85928e3e857..32cc6619eec 100644 --- a/drivers/InterruptIn.h +++ b/drivers/InterruptIn.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_INTERRUPTIN) || defined(DOXYGEN_ONLY) +#if DEVICE_INTERRUPTIN || defined(DOXYGEN_ONLY) #include "hal/gpio_api.h" #include "hal/gpio_irq_api.h" diff --git a/drivers/InterruptManager.cpp b/drivers/InterruptManager.cpp index f557cf43781..179731b4199 100644 --- a/drivers/InterruptManager.cpp +++ b/drivers/InterruptManager.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/InterruptManager.h b/drivers/InterruptManager.h index 6b3c1d086c3..8b207f0c5ea 100644 --- a/drivers/InterruptManager.h +++ b/drivers/InterruptManager.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/LowPowerTicker.h b/drivers/LowPowerTicker.h index a77307e68bc..a6f9fa94011 100644 --- a/drivers/LowPowerTicker.h +++ b/drivers/LowPowerTicker.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/LowPowerTimeout.h b/drivers/LowPowerTimeout.h index 561c4a2201a..7198d7dc64c 100644 --- a/drivers/LowPowerTimeout.h +++ b/drivers/LowPowerTimeout.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_LPTICKER) || defined(DOXYGEN_ONLY) +#if DEVICE_LPTICKER || defined(DOXYGEN_ONLY) #include "hal/lp_ticker_api.h" #include "drivers/LowPowerTicker.h" diff --git a/drivers/LowPowerTimer.h b/drivers/LowPowerTimer.h index 19bb8fdc3ef..abd03dd48e0 100644 --- a/drivers/LowPowerTimer.h +++ b/drivers/LowPowerTimer.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +21,7 @@ #include "drivers/Timer.h" #include "platform/NonCopyable.h" -#if defined (DEVICE_LPTICKER) || defined(DOXYGEN_ONLY) +#if DEVICE_LPTICKER || defined(DOXYGEN_ONLY) #include "hal/lp_ticker_api.h" diff --git a/drivers/MbedCRC.cpp b/drivers/MbedCRC.cpp index 34e777a251d..6353e052c3f 100644 --- a/drivers/MbedCRC.cpp +++ b/drivers/MbedCRC.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/MbedCRC.h b/drivers/MbedCRC.h index 9c7328bd007..60227e08269 100644 --- a/drivers/MbedCRC.h +++ b/drivers/MbedCRC.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -100,7 +101,7 @@ class MbedCRC { public: enum CrcMode { -#ifdef DEVICE_CRC +#if DEVICE_CRC HARDWARE = 0, #endif TABLE = 1, @@ -197,7 +198,7 @@ class MbedCRC { int32_t status = 0; switch (_mode) { -#ifdef DEVICE_CRC +#if DEVICE_CRC case HARDWARE: hal_crc_compute_partial((uint8_t *)buffer, size); *crc = 0; @@ -231,7 +232,7 @@ class MbedCRC { { MBED_ASSERT(crc != NULL); -#ifdef DEVICE_CRC +#if DEVICE_CRC if (_mode == HARDWARE) { lock(); crc_mbed_config_t config; @@ -263,7 +264,7 @@ class MbedCRC { { MBED_ASSERT(crc != NULL); -#ifdef DEVICE_CRC +#if DEVICE_CRC if (_mode == HARDWARE) { *crc = hal_crc_get_result(); unlock(); @@ -315,7 +316,7 @@ class MbedCRC { */ void lock() { -#ifdef DEVICE_CRC +#if DEVICE_CRC if (_mode == HARDWARE) { mbed_crc_mutex->lock(); } @@ -326,7 +327,7 @@ class MbedCRC { */ virtual void unlock() { -#ifdef DEVICE_CRC +#if DEVICE_CRC if (_mode == HARDWARE) { mbed_crc_mutex->unlock(); } @@ -496,13 +497,13 @@ class MbedCRC { } /** Constructor init called from all specialized cases of constructor. - * Note: All construtor common code should be in this function. + * Note: All constructor common code should be in this function. */ void mbed_crc_ctor(void) { MBED_STATIC_ASSERT(width <= 32, "Max 32-bit CRC supported"); -#ifdef DEVICE_CRC +#if DEVICE_CRC if (POLY_32BIT_REV_ANSI == polynomial) { _crc_table = (uint32_t *)Table_CRC_32bit_Rev_ANSI; _mode = TABLE; diff --git a/drivers/PortIn.h b/drivers/PortIn.h index fbecc257e0c..f3ae250e98d 100644 --- a/drivers/PortIn.h +++ b/drivers/PortIn.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_PORTIN) || defined(DOXYGEN_ONLY) +#if DEVICE_PORTIN || defined(DOXYGEN_ONLY) #include "hal/port_api.h" #include "platform/mbed_critical.h" diff --git a/drivers/PortInOut.h b/drivers/PortInOut.h index 00c972c2a0f..2036eba2520 100644 --- a/drivers/PortInOut.h +++ b/drivers/PortInOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_PORTINOUT) || defined(DOXYGEN_ONLY) +#if DEVICE_PORTINOUT || defined(DOXYGEN_ONLY) #include "hal/port_api.h" #include "platform/mbed_critical.h" diff --git a/drivers/PortOut.h b/drivers/PortOut.h index 8df644e56c8..18a0bcd3c5d 100644 --- a/drivers/PortOut.h +++ b/drivers/PortOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_PORTOUT) || defined(DOXYGEN_ONLY) +#if DEVICE_PORTOUT || defined(DOXYGEN_ONLY) #include "hal/port_api.h" #include "platform/mbed_critical.h" diff --git a/drivers/PwmOut.h b/drivers/PwmOut.h index 6d6f847f8fd..acdd4a2e66e 100644 --- a/drivers/PwmOut.h +++ b/drivers/PwmOut.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_PWMOUT) || defined(DOXYGEN_ONLY) +#if DEVICE_PWMOUT || defined(DOXYGEN_ONLY) #include "hal/pwmout_api.h" #include "platform/mbed_critical.h" #include "platform/mbed_power_mgmt.h" diff --git a/drivers/QSPI.cpp b/drivers/QSPI.cpp index 9a75d797276..c79c949e3b3 100644 --- a/drivers/QSPI.cpp +++ b/drivers/QSPI.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/QSPI.h b/drivers/QSPI.h index 764a1167ff9..e247e8f6515 100644 --- a/drivers/QSPI.h +++ b/drivers/QSPI.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_QSPI) || defined(DOXYGEN_ONLY) +#if DEVICE_QSPI || defined(DOXYGEN_ONLY) #include "hal/qspi_api.h" #include "platform/PlatformMutex.h" diff --git a/drivers/RawSerial.cpp b/drivers/RawSerial.cpp index 2943bd95206..b473fddae47 100644 --- a/drivers/RawSerial.cpp +++ b/drivers/RawSerial.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/RawSerial.h b/drivers/RawSerial.h index bb06fe47876..4841eb90381 100644 --- a/drivers/RawSerial.h +++ b/drivers/RawSerial.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_SERIAL) || defined(DOXYGEN_ONLY) +#if DEVICE_SERIAL || defined(DOXYGEN_ONLY) #include "mbed_toolchain.h" #include "drivers/SerialBase.h" diff --git a/drivers/SPI.cpp b/drivers/SPI.cpp index d679a9c0a80..8ae1ee2f4ec 100644 --- a/drivers/SPI.cpp +++ b/drivers/SPI.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/SPI.h b/drivers/SPI.h index 10efc7d0aa8..65db21bbb34 100644 --- a/drivers/SPI.h +++ b/drivers/SPI.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_SPI) || defined(DOXYGEN_ONLY) +#if DEVICE_SPI || defined(DOXYGEN_ONLY) #include "platform/PlatformMutex.h" #include "hal/spi_api.h" diff --git a/drivers/SPISlave.cpp b/drivers/SPISlave.cpp index 1f826bb3433..db870cdea2a 100644 --- a/drivers/SPISlave.cpp +++ b/drivers/SPISlave.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/SPISlave.h b/drivers/SPISlave.h index 6ee9ba6171e..878bc8d6721 100644 --- a/drivers/SPISlave.h +++ b/drivers/SPISlave.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +20,7 @@ #include "platform/platform.h" #include "platform/NonCopyable.h" -#if defined (DEVICE_SPISLAVE) || defined(DOXYGEN_ONLY) +#if DEVICE_SPISLAVE || defined(DOXYGEN_ONLY) #include "hal/spi_api.h" diff --git a/drivers/Serial.cpp b/drivers/Serial.cpp index 55e5a38bba5..d0f87263b67 100644 --- a/drivers/Serial.cpp +++ b/drivers/Serial.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Serial.h b/drivers/Serial.h index 1b1e6aa34e7..d19010808d5 100644 --- a/drivers/Serial.h +++ b/drivers/Serial.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_SERIAL) || defined(DOXYGEN_ONLY) +#if DEVICE_SERIAL || defined(DOXYGEN_ONLY) #include "platform/Stream.h" #include "SerialBase.h" diff --git a/drivers/SerialBase.cpp b/drivers/SerialBase.cpp index c4333d9f97d..6557a93e656 100644 --- a/drivers/SerialBase.cpp +++ b/drivers/SerialBase.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/SerialBase.h b/drivers/SerialBase.h index a78d7d00883..b00abe5bae4 100644 --- a/drivers/SerialBase.h +++ b/drivers/SerialBase.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include "platform/platform.h" -#if defined (DEVICE_SERIAL) || defined(DOXYGEN_ONLY) +#if DEVICE_SERIAL || defined(DOXYGEN_ONLY) #include "platform/Callback.h" #include "hal/serial_api.h" diff --git a/drivers/SerialWireOutput.h b/drivers/SerialWireOutput.h index 1e90ebc17c0..0379687c9ba 100644 --- a/drivers/SerialWireOutput.h +++ b/drivers/SerialWireOutput.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/TableCRC.cpp b/drivers/TableCRC.cpp index b6e55aaae8e..b0d316e4719 100644 --- a/drivers/TableCRC.cpp +++ b/drivers/TableCRC.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/TableCRC.h b/drivers/TableCRC.h index 478bb259585..1ab5bf83656 100644 --- a/drivers/TableCRC.h +++ b/drivers/TableCRC.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Ticker.cpp b/drivers/Ticker.cpp index efa3efb9c00..b9540ec0fdd 100644 --- a/drivers/Ticker.cpp +++ b/drivers/Ticker.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,4 +53,16 @@ void Ticker::handler() } } +void Ticker::attach_us(Callback func, us_timestamp_t t) +{ + core_util_critical_section_enter(); + // lock only for the initial callback setup and this is not low power ticker + if (!_function && _lock_deepsleep) { + sleep_manager_lock_deep_sleep(); + } + _function = func; + setup(t); + core_util_critical_section_exit(); +} + } // namespace mbed diff --git a/drivers/Ticker.h b/drivers/Ticker.h index 059d6a17926..e6fbf711de2 100644 --- a/drivers/Ticker.h +++ b/drivers/Ticker.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -116,17 +117,7 @@ class Ticker : public TimerEvent, private NonCopyable { * for threads scheduling. * */ - void attach_us(Callback func, us_timestamp_t t) - { - core_util_critical_section_enter(); - // lock only for the initial callback setup and this is not low power ticker - if (!_function && _lock_deepsleep) { - sleep_manager_lock_deep_sleep(); - } - _function = func; - setup(t); - core_util_critical_section_exit(); - } + void attach_us(Callback func, us_timestamp_t t); /** Attach a member function to be called by the Ticker, specifying the interval in microseconds * diff --git a/drivers/Timeout.cpp b/drivers/Timeout.cpp index 159cc0d4b43..42141c4c48c 100644 --- a/drivers/Timeout.cpp +++ b/drivers/Timeout.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Timeout.h b/drivers/Timeout.h index f39dcc03d12..c155c9bcecf 100644 --- a/drivers/Timeout.h +++ b/drivers/Timeout.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Timer.cpp b/drivers/Timer.cpp index 5a6d7df9e4b..b13f86ce903 100644 --- a/drivers/Timer.cpp +++ b/drivers/Timer.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/Timer.h b/drivers/Timer.h index 9cc3586d98c..010f6019b5f 100644 --- a/drivers/Timer.h +++ b/drivers/Timer.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/TimerEvent.cpp b/drivers/TimerEvent.cpp index 9c5174dc722..9c77eb86f58 100644 --- a/drivers/TimerEvent.cpp +++ b/drivers/TimerEvent.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/TimerEvent.h b/drivers/TimerEvent.h index 87e2481cf25..88f4c3b750d 100644 --- a/drivers/TimerEvent.h +++ b/drivers/TimerEvent.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/UARTSerial.cpp b/drivers/UARTSerial.cpp index 845f0a19e86..2f317b5310f 100644 --- a/drivers/UARTSerial.cpp +++ b/drivers/UARTSerial.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/drivers/UARTSerial.h b/drivers/UARTSerial.h index 792d3e0f369..2a47da1a389 100644 --- a/drivers/UARTSerial.h +++ b/drivers/UARTSerial.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/events/Event.h b/events/Event.h index dd0d8e6cf39..a8a2ff62348 100644 --- a/events/Event.h +++ b/events/Event.h @@ -1,5 +1,6 @@ /* events * Copyright (c) 2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/events/EventQueue.cpp b/events/EventQueue.cpp index f04917c4ef3..27c3a7a4745 100644 --- a/events/EventQueue.cpp +++ b/events/EventQueue.cpp @@ -1,5 +1,6 @@ /* events * Copyright (c) 2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,12 +71,12 @@ void EventQueue::background(Callback update) } } -void EventQueue::chain(EventQueue *target) +int EventQueue::chain(EventQueue *target) { if (target) { - equeue_chain(&_equeue, &target->_equeue); + return equeue_chain(&_equeue, &target->_equeue); } else { - equeue_chain(&_equeue, 0); + return equeue_chain(&_equeue, 0); } } } diff --git a/events/EventQueue.h b/events/EventQueue.h index 02d3d31da1d..2b6b200a779 100644 --- a/events/EventQueue.h +++ b/events/EventQueue.h @@ -1,5 +1,6 @@ /* events * Copyright (c) 2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -180,8 +181,11 @@ class EventQueue : private mbed::NonCopyable { * * @param target Queue that will dispatch this queue's events as a * part of its dispatch loop + * + * @return Zero on success and negative error code value if chaining fails + * */ - void chain(EventQueue *target); + int chain(EventQueue *target); diff --git a/events/README.md b/events/README.md index de471f28933..169d00065aa 100644 --- a/events/README.md +++ b/events/README.md @@ -1,6 +1,6 @@ -## The mbed-events library ## +## The `mbed-events` library ## -The mbed-events library provides a flexible queue for scheduling events. +The `mbed-events` library provides a flexible queue for scheduling events. ``` cpp #include "mbed_events.h" @@ -20,18 +20,18 @@ int main() { } ``` -The mbed-events library can be used as a normal event loop, or it can be -backgrounded on a single hardware timer or even another event loop. It is -both thread and irq safe, and provides functions for easily composing +You can use the `mbed-events library` as a normal event loop, or you can +background it on a single hardware timer or even another event loop. It is +both thread and IRQ safe and provides functions for easily composing independent event queues. -The mbed-events library can act as a drop-in scheduler, provide synchronization -between multiple threads, or just act as a mechanism for moving events out of +The `mbed-events` library can act as a drop-in scheduler, provide synchronization +between multiple threads or act as a mechanism for moving events out of interrupt contexts. ### Usage ### -The core of the mbed-events library is the [EventQueue](EventQueue.h) class, +The core of the `mbed-events library` is the [EventQueue](EventQueue.h) class, which represents a single event queue. The `EventQueue::dispatch` function runs the queue, providing the context for executing events. @@ -53,8 +53,8 @@ queue.dispatch(); ``` The EventQueue class provides several call functions for posting events -to the underlying event queue. The call functions are thread and irq safe, -don't need the underlying loop to be running, and provide an easy mechanism +to the underlying event queue. The call functions are thread and IRQ safe, +don't need the underlying loop to be running and provide a mechanism for moving events out of interrupt contexts. ``` cpp @@ -73,8 +73,8 @@ queue.call_every(2000, doit_every_two_seconds); queue.call_every(400, printf, "called every 0.4 seconds\n"); ``` -The call functions return an id that uniquely represents the event in the -the event queue. This id can be passed to `EventQueue::cancel` to cancel +The call functions return an ID that uniquely represents the event in the +the event queue. You can pass this ID to `EventQueue::cancel` to cancel an in-flight event. ``` cpp @@ -92,9 +92,9 @@ if (id) { queue.cancel(id); ``` -For a more fine-grain control of event dispatch, the `Event` class can be -manually instantiated and configured. An `Event` represents an event as -a C++ style function object and can be directly passed to other APIs that +For a more detailed control of event dispatch, you can manually instantiate +and configure the `Event` class. An `Event` represents an event as +a C++ style function object, and you can directly pass it to other APIs that expect a callback. ``` cpp @@ -126,7 +126,7 @@ queue.dispatch(); Event queues easily align with module boundaries, where internal state can be implicitly synchronized through event dispatch. Multiple modules can -use independent event queues, but still be composed through the +use independent event queues but still be composed through the `EventQueue::chain` function. ``` cpp diff --git a/events/equeue/equeue.c b/events/equeue/equeue.c index 4d985539da5..c67fb6284dc 100644 --- a/events/equeue/equeue.c +++ b/events/equeue/equeue.c @@ -108,13 +108,15 @@ void equeue_destroy(equeue_t *q) { // call destructors on pending events for (struct equeue_event *es = q->queue; es; es = es->next) { - for (struct equeue_event *e = q->queue; e; e = e->sibling) { + for (struct equeue_event *e = es->sibling; e; e = e->sibling) { if (e->dtor) { e->dtor(e + 1); } } + if (es->dtor) { + es->dtor(es + 1); + } } - // notify background timer if (q->background.update) { q->background.update(q->background.timer, -1); @@ -239,8 +241,8 @@ static int equeue_enqueue(equeue_t *q, struct equeue_event *e, unsigned tick) if (e->next) { e->next->ref = &e->next; } - e->sibling = *p; + e->sibling->next = 0; e->sibling->ref = &e->sibling; } else { e->next = *p; @@ -601,23 +603,27 @@ static void equeue_chain_update(void *p, int ms) if (ms >= 0) { c->id = equeue_call_in(c->target, ms, equeue_chain_dispatch, c->q); } else { - equeue_dealloc(c->target, c); + equeue_dealloc(c->q, c); } } -void equeue_chain(equeue_t *q, equeue_t *target) +int equeue_chain(equeue_t *q, equeue_t *target) { if (!target) { equeue_background(q, 0, 0); - return; + return 0; } struct equeue_chain_context *c = equeue_alloc(q, sizeof(struct equeue_chain_context)); + if (!c) { + return -1; + } c->q = q; c->target = target; c->id = 0; equeue_background(q, equeue_chain_update, c); + return 0; } diff --git a/events/equeue/equeue.h b/events/equeue/equeue.h index 37013b31304..a2c56e3fc82 100644 --- a/events/equeue/equeue.h +++ b/events/equeue/equeue.h @@ -220,7 +220,10 @@ void equeue_background(equeue_t *queue, // // The equeue_chain function allows multiple equeues to be composed, sharing // the context of a dispatch loop while still being managed independently. -void equeue_chain(equeue_t *queue, equeue_t *target); +// +// If the event queue chaining fails, equeue_chain returns a negative, +// platform-specific error code. +int equeue_chain(equeue_t *queue, equeue_t *target); #ifdef __cplusplus diff --git a/events/equeue/tests/tests.c b/events/equeue/tests/tests.c index 547255b2c49..96f18429623 100644 --- a/events/equeue/tests/tests.c +++ b/events/equeue/tests/tests.c @@ -779,6 +779,29 @@ void break_request_cleared_on_timeout(void) equeue_destroy(&q); } +void sibling_test(void) +{ + equeue_t q; + int err = equeue_create(&q, 1024); + test_assert(!err); + + int id0 = equeue_call_in(&q, 1, pass_func, 0); + int id1 = equeue_call_in(&q, 1, pass_func, 0); + int id2 = equeue_call_in(&q, 1, pass_func, 0); + + struct equeue_event *e = q.queue; + + for (; e; e = e->next) { + for (struct equeue_event *s = e->sibling; s; s = s->sibling) { + test_assert(!s->next); + } + } + equeue_cancel(&q, id0); + equeue_cancel(&q, id1); + equeue_cancel(&q, id2); + equeue_destroy(&q); +} + int main() { printf("beginning tests...\n"); @@ -806,7 +829,7 @@ int main() test_run(fragmenting_barrage_test, 20); test_run(multithreaded_barrage_test, 20); test_run(break_request_cleared_on_timeout); - + test_run(sibling_test); printf("done!\n"); return test_failure; } diff --git a/events/mbed_events.h b/events/mbed_events.h index 341bf160878..466b82bb17b 100644 --- a/events/mbed_events.h +++ b/events/mbed_events.h @@ -3,6 +3,7 @@ /** @{*/ /* events * Copyright (c) 2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/events/mbed_lib.json b/events/mbed_lib.json index fbf85522d96..886606e64e8 100644 --- a/events/mbed_lib.json +++ b/events/mbed_lib.json @@ -4,7 +4,7 @@ "present": 1, "shared-stacksize": { "help": "Stack size (bytes) for shared event queue thread", - "value": 1024 + "value": 2048 }, "shared-eventsize": { "help": "Event buffer size (bytes) for shared event queue", diff --git a/features/FEATURE_BLE/README.md b/features/FEATURE_BLE/README.md index 17821ec3b92..6030bd3515d 100644 --- a/features/FEATURE_BLE/README.md +++ b/features/FEATURE_BLE/README.md @@ -1,28 +1,10 @@ # mbed Bluetooth Low Energy Stack -This is the Github repo for the `BLE_API` used by developer.mbed.org. Please see the [mbed BLE Homepage](https://developer.mbed.org/teams/Bluetooth-Low-Energy/) for all documentation, code examples and general help. -# Supported Services -Supported GATT services and constantly being added and can be found in the [ble/services/](https://github.com/ARMmbed/ble/tree/master/ble/services) folder. +This is the Github repository for the `BLE_API`. Please see the [Mbed OS Example BLE GitHub Repo](https://github.com/ARMmbed/mbed-os-example-ble) for all code examples, and the [Mbed OS BLE API page](https://os.mbed.com/docs/latest/apis/bluetooth.html) for all code documentation and general help. -Currently supported services include: -* Battery -* Device Firmware Update (DFU) -* Device Information -* Eddystone Configuration Service -* Health Thermometer -* Heart Rate -* Link Loss -* UART -* UriBeacon -* iBeacon +## Getting Started -The [documentation](https://docs.mbed.com/docs/ble-intros/en/latest/AdvSamples/Overview/) -contains an overview on how to create new, application-specific services. - -# Getting Started -The mbed BLE API is meant to be used in projects on developer.mbed.org. Please see examples and sample project files there. -A good starting point are these pages: -* [mbed BLE Homepage](https://developer.mbed.org/teams/Bluetooth-Low-Energy/) for all things BLE -* [mbed BLE Getting Started Guide](https://developer.mbed.org/forum/team-63-Bluetooth-Low-Energy-community/topic/5262/) a wonderful primer on using BLE with mbed -* [mbed BLE doc](https://docs.mbed.com/docs/ble-intros/en/latest/) for an introduction to mbed BLE -* [mbed BLE API page](https://docs.mbed.com/docs/ble-api/en/latest/api/index.html) for the Doxygen API documentation +* [Mbed OS examples](https://os.mbed.com/teams/mbed-os-examples/) for all Mbed OS and BLE examples. +* [Mbed OS example BLE GitHub repo](https://github.com/ARMmbed/mbed-os-example-ble) for all Mbed OS BLE examples. +* [Mbed OS BLE introduction](https://os.mbed.com/docs/latest/apis/ble.html) for an introduction to Mbed BLE. +* [Mbed OS BLE API page](https://os.mbed.com/docs/latest/apis/bluetooth.html) for the Mbed BLE API documentation. diff --git a/features/FEATURE_BLE/ble/BLE.h b/features/FEATURE_BLE/ble/BLE.h index cd38d315b40..0df3656ae04 100644 --- a/features/FEATURE_BLE/ble/BLE.h +++ b/features/FEATURE_BLE/ble/BLE.h @@ -70,7 +70,7 @@ class BLEInstanceBase; * Next, the signal handling/process mechanism should be set up. By design, * Mbed BLE does not impose to the user an event handling/processing mechanism; * however, it exposes APIs, which allows an application to compose its own: - * - onEventsToProcess(), whichs register a callback that + * - onEventsToProcess(), which registers a callback that * the BLE subsystem will call when there is an event ready to be processed. * - processEvents(), which processes all the events present in the BLE subsystem. * @@ -81,10 +81,10 @@ class BLEInstanceBase; * #include "ble/BLE.h" * * // declare the event queue, which the whole application will share. - * static EventQueue event_queue( 4 * EVENTS_EVENT_SIZE); + * static EventQueue event_queue(4 * EVENTS_EVENT_SIZE); * * // Function invoked when there is a BLE event available. - * // It put into the event queue the processing of the event(s) + * // Event processing is put into the event queue. * void schedule_ble_processing(BLE::OnEventsToProcessCallbackContext* context) { * event_queue.call(callback(&(context->ble), &BLE::processEvents)); * } @@ -424,6 +424,8 @@ class BLE { * are thin wrappers around a transport object (that is, ptr. to * BLEInstanceBase). * + * @param[in] instanceID BLE Instance ID to get. + * * It is better to create BLE objects as singletons accessed through the * Instance() method. If multiple BLE handles are constructed for the same * interface (using this constructor), they share the same underlying @@ -442,7 +444,7 @@ class BLE { * MCU might wake up several times to service the stack before returning * control to the caller. * - * @deprecated This function block the CPU prefer to use the pair + * @deprecated This function blocks the CPU. Use the pair * onEventsToProcess() and processEvents(). */ MBED_DEPRECATED("Use BLE::processEvents() and BLE::onEventsToProcess().") @@ -451,6 +453,10 @@ class BLE { /** * Set the BTLE MAC address and type. * + * @param[in] type Type of the address to set. + * @param[in] address Value of the address to set. It is ordered in + * little endian. + * * @return BLE_ERROR_NONE on success. * * @deprecated You should use the parallel API from Gap directly, refer to @@ -466,6 +472,9 @@ class BLE { /** * Fetch the Bluetooth Low Energy MAC address and type. * + * @param[out] typeP Type of the current address set. + * @param[out] address Value of the current address. + * * @return BLE_ERROR_NONE on success. * * @deprecated You should use the parallel API from Gap directly and refer to @@ -483,6 +492,8 @@ class BLE { /** * Set the GAP advertising mode to use for this device. * + * @param[in] advType New type of advertising to use. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setAdvertisingType(). A former call to * ble.setAdvertisingType(...) should be replaced with @@ -492,6 +503,8 @@ class BLE { void setAdvertisingType(GapAdvertisingParams::AdvertisingType advType); /** + * Set the advertising interval. + * * @param[in] interval * Advertising interval in units of milliseconds. Advertising * is disabled if interval is 0. If interval is smaller than @@ -521,6 +534,9 @@ class BLE { void setAdvertisingInterval(uint16_t interval); /** + * Get the minimum advertising interval in milliseconds, which can be used + * for connectable advertising types. + * * @return Minimum Advertising interval in milliseconds. * * @deprecated You should use the parallel API from Gap directly, refer to @@ -535,6 +551,9 @@ class BLE { } /** + * Get the minimum advertising interval in milliseconds, which can be + * used for nonconnectable advertising type. + * * @return Minimum Advertising interval in milliseconds for nonconnectible mode. * * @deprecated You should use the parallel API from Gap directly, refer to @@ -549,6 +568,8 @@ class BLE { } /** + * Get the maximum advertising interval in milliseconds. + * * @return Maximum Advertising interval in milliseconds. * * @deprecated You should use the parallel API from Gap directly, refer to @@ -563,6 +584,10 @@ class BLE { } /** + * Set the advertising duration. + * + * A timeout event is genenerated once the advertising period expired. + * * @param[in] timeout * Advertising timeout (in seconds) between 0x1 and 0x3FFF (1 * and 16383). Use 0 to disable the advertising timeout. @@ -581,6 +606,8 @@ class BLE { * directly; there are other APIs to tweak advertisement parameters * individually (see above). * + * @param[in] advParams The new advertising parameters. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setAdvertisingParams(). A former call to * ble.setAdvertisingParams(...) should be replaced with @@ -590,6 +617,8 @@ class BLE { void setAdvertisingParams(const GapAdvertisingParams &advParams); /** + * Get the current advertising parameters. + * * @return Read back advertising parameters. Useful for storing and * restoring parameters rapidly. * @@ -612,6 +641,9 @@ class BLE { * GapAdvertisingData::Flags for valid flags. Multiple * flags may be specified in combination. * + * @return BLE_ERROR_NONE if the data was successfully added to the + * advertising payload. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::accumulateAdvertisingPayload(uint8_t). A former call to * ble.accumulateAdvertisingPayload(flags) should be replaced with @@ -629,6 +661,9 @@ class BLE { * @param[in] app * The appearance of the peripheral. * + * @return BLE_ERROR_NONE if the data was successfully added to the + * advertising payload. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::accumulateAdvertisingPayload(GapAdvertisingData::Appearance). * A former call to ble.accumulateAdvertisingPayload(appearance) @@ -648,6 +683,9 @@ class BLE { * The max transmit power to be used by the controller. This * is only a hint. * + * @return BLE_ERROR_NONE if the data was successfully added to the + * advertising payload. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::accumulateAdvertisingPayloadTxPower(). A former call to * ble.accumulateAdvertisingPayloadTxPower(txPower) should be replaced with @@ -666,6 +704,9 @@ class BLE { * @param data Data bytes. * @param len Data length. * + * @return BLE_ERROR_NONE if the advertisement payload was updated based on + * matching AD type; otherwise, an appropriate error. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::accumulateAdvertisingPayload(GapAdvertisingData::DataType, const uint8_t, uint8_t). * A former call to ble.accumulateAdvertisingPayload(...) should @@ -679,6 +720,10 @@ class BLE { * underlying stack. It would be uncommon for this API to be used directly; * there are other APIs to build an advertisement payload (see above). * + * @param[in] advData Advertising data to set. + * + * @return BLE_ERROR_NONE if the advertising data was set successfully. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::setAdvertisingData(). A former call to * ble.setAdvertisingData(...) should be replaced with @@ -688,6 +733,8 @@ class BLE { ble_error_t setAdvertisingData(const GapAdvertisingData &advData); /** + * Get a reference to the current advertising payload. + * * @return Read back advertising data. Useful for storing and * restoring payload. * @@ -737,6 +784,9 @@ class BLE { * @param[in] data Data bytes. * @param[in] len Data length. * + * @return BLE_ERROR_NONE if the data was successfully added to the scan + * response payload. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::accumulateScanResponse(). A former call to * ble.accumulateScanResponse(...) should be replaced with @@ -760,6 +810,9 @@ class BLE { /** * Start advertising. * + * @return BLE_ERROR_NONE if the advertising procedure successfully + * started. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::startAdvertising(). A former call to * ble.startAdvertising(...) should be replaced with @@ -771,6 +824,9 @@ class BLE { /** * Stop advertising. * + * @return BLE_ERROR_NONE if the advertising procedure has been successfully + * stopped. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::stopAdvertising(). A former call to * ble.stopAdvertising(...) should be replaced with @@ -781,6 +837,7 @@ class BLE { /** * Set up parameters for GAP scanning (observer mode). + * * @param[in] interval * Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s]. * @param[in] window @@ -791,6 +848,8 @@ class BLE { * Set to True if active-scanning is required. This is used to fetch the * scan response from a peer if possible. * + * @return BLE_ERROR_NONE if the scan parameters were correctly set. + * * The scanning window divided by the interval determines the duty cycle for * scanning. For example, if the interval is 100ms and the window is 10ms, * then the controller will scan for 10 percent of the time. It is possible @@ -818,9 +877,12 @@ class BLE { /** * Set up the scanInterval parameter for GAP scanning (observer mode). + * * @param[in] interval * Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s]. * + * @return BLE_ERROR_NONE if the scan interval was correctly set. + * * The scanning window divided by the interval determines the duty cycle for * scanning. For example, if the interval is 100ms and the window is 10ms, * then the controller will scan for 10 percent of the time. It is possible @@ -841,9 +903,12 @@ class BLE { /** * Set up the scanWindow parameter for GAP scanning (observer mode). + * * @param[in] window * Scan Window (in milliseconds) [valid values lie between 2.5ms and 10.24s]. * + * @return BLE_ERROR_NONE if the scan window was correctly set. + * * The scanning window divided by the interval determines the duty cycle for * scanning. For example, if the interval is 100ms and the window is 10ms, * then the controller will scan for 10 percent of the time. It is possible @@ -864,9 +929,12 @@ class BLE { /** * Set up parameters for GAP scanning (observer mode). + * * @param[in] timeout * Scan timeout (in seconds) between 0x0001 and 0xFFFF; 0x0000 disables timeout. * + * @return BLE_ERROR_NONE if the scan timeout was correctly set. + * * The scanning window divided by the interval determines the duty cycle for * scanning. For example, if the interval is 100ms and the window is 10ms, * then the controller will scan for 10 percent of the time. It is possible @@ -889,6 +957,7 @@ class BLE { /** * Set up parameters for GAP scanning (observer mode). + * * @param[in] activeScanning * Set to True if active-scanning is required. This is used to fetch the * scan response from a peer if possible. @@ -913,6 +982,9 @@ class BLE { * receiving every advertisement report. This can be passed in * as NULL, in which case scanning may not be enabled at all. * + * @return BLE_ERROR_NONE if the device successfully started the scan + * procedure. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::startScan(). A former call to * ble.startScan(callback) should be replaced with @@ -922,7 +994,19 @@ class BLE { ble_error_t startScan(void (*callback)(const Gap::AdvertisementCallbackParams_t *params)); /** - * Same as above, but this takes an (object, method) pair for a callback. + * Start the scanning procedure. + * + * Packets received during the scan procedure are forwarded to the + * scan packet handler passed as argument to this function. + * + * @param[in] object Instance used to invoke @p callbackMember. + * + * @param[in] memberCallback Advertisement packet event handler. Upon + * reception of an advertising packet, the packet is forwarded to @p + * callback invoked from @p object. + * + * @return BLE_ERROR_NONE if the device successfully started the scan + * procedure. * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::startScan(). A former call to @@ -936,7 +1020,7 @@ class BLE { /** * Stop scanning. The current scanning parameters remain in effect. * - * @retval BLE_ERROR_NONE if successfully stopped scanning procedure. + * @return BLE_ERROR_NONE if successfully stopped scanning procedure. * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::stopScan(). A former call to @@ -951,6 +1035,7 @@ class BLE { /** * Create a connection (GAP Link Establishment). + * * @param peerAddr * 48-bit address, LSB format. * @param peerAddrType @@ -959,6 +1044,7 @@ class BLE { * Connection parameters. * @param scanParams * Parameters to use while scanning for the peer. + * * @return BLE_ERROR_NONE if connection establishment procedure is started * successfully. The onConnection callback (if set) is invoked upon * a connection event. @@ -984,6 +1070,14 @@ class BLE { * @param[in] connectionHandle * @param[in] reason * The reason for disconnection; sent back to the peer. + * + * @return BLE_ERROR_NONE if the disconnection procedure successfully + * started. + * + * @deprecated You should use the parallel API from Gap directly and refer to + * GAP::disconnect(). A former call to + * ble.disconnect(...) should be replaced with + * ble.gap().disconnect(...). */ MBED_DEPRECATED("Use ble.gap().disconnect(...)") ble_error_t disconnect(Gap::Handle_t connectionHandle, Gap::DisconnectionReason_t reason); @@ -996,6 +1090,9 @@ class BLE { * @param reason * The reason for disconnection; sent back to the peer. * + * @return BLE_ERROR_NONE if the disconnection procedure successfully + * started. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::disconnect(). A former call to * ble.disconnect(reason) should be replaced with @@ -1012,12 +1109,14 @@ class BLE { * Returns the current Gap state of the device using a bitmask that * describes whether the device is advertising or connected. * + * @return The current GAP state of the device. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::getState(). A former call to * ble.getGapState() should be replaced with * ble.gap().getState(). */ - MBED_DEPRECATED("Use ble.gap().getGapState(...)") + MBED_DEPRECATED("Use ble.gap().getState()") Gap::GapState_t getGapState(void) const; /** @@ -1051,6 +1150,9 @@ class BLE { * @param[in] params * The structure containing the desired parameters. * + * @return BLE_ERROR_NONE if the preferred connection parameters were set + * correctly. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setPreferredConnectionParams(). A former call to * ble.setPreferredConnectionParams() should be replaced with @@ -1064,14 +1166,18 @@ class BLE { /** * Update connection parameters while in the peripheral role. + * * @details In the peripheral role, this will send the corresponding L2CAP request to the connected peer and wait for * the central to perform the procedure. + * * @param[in] handle * Connection Handle * @param[in] params * Pointer to desired connection parameters. If NULL is provided on a peripheral role, * the parameters in the PPCP characteristic of the GAP service will be used instead. * + * @return BLE_ERROR_NONE if the connection parameters were updated correctly. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::updateConnectionParams(). A former call to * ble.updateConnectionParams() should be replaced with @@ -1082,9 +1188,12 @@ class BLE { /** * Set the device name characteristic in the Gap service. + * * @param[in] deviceName * The new value for the device-name. This is a UTF-8 encoded, NULL-terminated string. * + * @return BLE_ERROR_NONE if the device name was set correctly. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setDeviceName(). A former call to * ble.setDeviceName() should be replaced with @@ -1098,6 +1207,7 @@ class BLE { /** * Get the value of the device name characteristic in the Gap service. + * * @param[out] deviceName * Pointer to an empty buffer where the UTF-8 *non NULL- * terminated* string will be placed. Set this @@ -1109,6 +1219,9 @@ class BLE { * (on output) the complete device name length (without the * null terminator). * + * @return BLE_ERROR_NONE if the device name was fetched correctly from the + * underlying BLE stack. + * * @note If the device name is longer than the size of the supplied buffer, * the length will return the complete device name length and not the * number of bytes actually returned in deviceName. The application may @@ -1127,9 +1240,12 @@ class BLE { /** * Set the appearance characteristic in the Gap service. + * * @param[in] appearance * The new value for the device-appearance. * + * @return BLE_ERROR_NONE if the new appearance was set correctly. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setAppearance(). A former call to * ble.setAppearance() should be replaced with @@ -1143,9 +1259,13 @@ class BLE { /** * Get the appearance characteristic in the Gap service. + * * @param[out] appearanceP * The new value for the device-appearance. * + * @return BLE_ERROR_NONE if the device-appearance was fetched correctly + * from the underlying BLE stack. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::getAppearance(). A former call to * ble.getAppearance() should be replaced with @@ -1159,8 +1279,12 @@ class BLE { /** * Set the radio's transmit power. + * * @param[in] txPower Radio transmit power in dBm. * + * @return BLE_ERROR_NONE if the new radio's transmit power was set + * correctly. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::setTxPower(). A former call to * ble.setTxPower() should be replaced with @@ -1189,6 +1313,12 @@ class BLE { * Add a service declaration to the local server ATT table. Also add the * characteristics contained within. * + * @param[in] service The service to be added; attribute handle of services, + * characteristic and characteristic descriptors are updated by the + * process. + * + * @return BLE_ERROR_NONE if the service was successfully added. + * * @deprecated You should use the parallel API from GattServer directly, refer to * GattServer::addService(). A former call * to ble.addService() should be replaced with @@ -1202,6 +1332,7 @@ class BLE { /** * Read the value of a characteristic from the local GattServer. + * * @param[in] attributeHandle * Attribute handle for the value attribute of the characteristic. * @param[out] buffer @@ -1228,6 +1359,7 @@ class BLE { /** * Read the value of a characteristic from the local GattServer. + * * @param[in] connectionHandle * Connection Handle. * @param[in] attributeHandle @@ -1356,7 +1488,7 @@ class BLE { * call to ble.initializeSecurity(...) should be replaced with * ble.securityManager().init(...). */ - MBED_DEPRECATED("Use ble.gattServer().write(...)") + MBED_DEPRECATED("Use ble.securityManager().init(...)") ble_error_t initializeSecurity( bool enableBonding = true, bool requireMITM = true, @@ -1409,6 +1541,8 @@ class BLE { * Set up a callback for timeout events. Refer to Gap::TimeoutSource_t for * possible event types. * + * @param[in] timeoutCallback Event handler being registered. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::onTimeout(). A former call * to ble.onTimeout(callback) should be replaced with @@ -1420,6 +1554,8 @@ class BLE { /** * Set up a callback for connection events. Refer to Gap::ConnectionEventCallback_t. * + * @param[in] connectionCallback Event handler being registered. + * * @deprecated You should use the parallel API from Gap directly, refer to * Gap::onConnection(). A former call * to ble.onConnection(callback) should be replaced with @@ -1431,6 +1567,8 @@ class BLE { /** * Append to a chain of callbacks to be invoked upon GAP disconnection. * + * @param[in] disconnectionCallback Event handler being registered. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::onDisconnection(). A former call * to ble.onDisconnection(callback) should be replaced with @@ -1443,6 +1581,9 @@ class BLE { * The same as onDisconnection() but allows an object reference and member function * to be added to the chain of callbacks. * + * @param[in] tptr Instance used to invoke mptr. + * @param[in] mptr Event handler being registered. + * * @deprecated You should use the parallel API from Gap directly and refer to * Gap::onDisconnection(). A former call * to ble.onDisconnection(callback) should be replaced with @@ -1483,6 +1624,8 @@ class BLE { * Add a callback for the GATT event DATA_SENT (which is triggered when * updates are sent out by GATT in the form of notifications). * + * @param[in] callback Event handler being registered. + * * @note It is possible to chain together multiple onDataSent callbacks * (potentially from different modules of an application) to receive updates * to characteristics. @@ -1505,6 +1648,11 @@ class BLE { * The same as onDataSent() but allows an object reference and member function * to be added to the chain of callbacks. * + * @param[in] objPtr Pointer to the instance that is used to invoke the + * event handler. + * @param[in] memberPtr Event handler being registered. It is a member + * function. + * * @deprecated You should use the parallel API from GattServer directly and refer to * GattServer::onDataSent(). A former call * to ble.onDataSent(...) should be replaced with @@ -1524,6 +1672,8 @@ class BLE { * For a Central, this callback is triggered when a response is received for * a write request. * + * @param[in] callback The event handler being registered. + * * @note It is possible to chain together multiple onDataWritten callbacks * (potentially from different modules of an application) to receive updates * to characteristics. Many services, such as DFU and UART, add their own @@ -1547,6 +1697,12 @@ class BLE { * The same as onDataWritten() but allows an object reference and member function * to be added to the chain of callbacks. * + * @param[in] objPtr Pointer to the instance that is used to invoke the + * event handler (@p memberPtr). + * @param[in] memberPtr Event handler being registered. It is a member + * function. + * + * * @deprecated You should use the parallel API from GattServer directly, refer to * GattServer::onDataWritten(). A former call * to ble.onDataWritten(...) should be replaced with @@ -1575,6 +1731,8 @@ class BLE { * @note It is also possible to set up a callback into a member function of * some object. * + * @param[in] callback Event handler being registered. + * * @return BLE_ERROR_NOT_IMPLEMENTED if this functionality isn't available; * else BLE_ERROR_NONE. * @@ -1593,6 +1751,14 @@ class BLE { * The same as onDataRead() but allows an object reference and member function * to be added to the chain of callbacks. * + * @param[in] objPtr Pointer to the instance that is used to invoke the + * event handler (@p memberPtr). + * @param[in] memberPtr Event handler being registered. It is a member + * function. + * + * @return BLE_ERROR_NOT_IMPLEMENTED if this functionality isn't available; + * else BLE_ERROR_NONE. + * * @deprecated You should use the parallel API from GattServer directly and refer to * GattServer::onDataRead(). A former call * to ble.onDataRead(...) should be replaced with @@ -1609,6 +1775,8 @@ class BLE { * Set up a callback for when notifications or indications are enabled for a * characteristic on the local GattServer. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from GattServer directly and refer to * GattServer::onUpdatesEnabled(). A former call * to ble.onUpdatesEnabled(callback) should be replaced with @@ -1624,6 +1792,8 @@ class BLE { * Set up a callback for when notifications or indications are disabled for a * characteristic on the local GattServer. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from GattServer directly and refer to * GattServer::onUpdatesDisabled(). A former call * to ble.onUpdatesDisabled(callback) should be replaced with @@ -1639,6 +1809,8 @@ class BLE { * Set up a callback for when the GATT server receives a response for an * indication event sent previously. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from GattServer directly and refer to * GattServer::onConfirmationReceived(). A former call * to ble.onConfirmationReceived(callback) should be replaced with @@ -1657,6 +1829,8 @@ class BLE { * security request: bool allowBonding, bool requireMITM and * SecurityIOCapabilities_t. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from SecurityManager directly and refer to * SecurityManager::onSecuritySetupInitiated(). A former * call to ble.onSecuritySetupInitiated(callback) should be replaced with @@ -1674,6 +1848,8 @@ class BLE { * devices. The callback is passed in the success/failure status of the * security setup procedure. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from SecurityManager directly and refer to * SecurityManager::onSecuritySetupCompleted(). A former * call to ble.onSecuritySetupCompleted(callback) should be replaced with @@ -1693,6 +1869,8 @@ class BLE { * or both sides. The callback is passed in a SecurityManager::SecurityMode_t according * to the level of security in effect for the secured link. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from SecurityManager directly and refer to * SecurityManager::onLinkSecured(). A former * call to ble.onLinkSecured(callback) should be replaced with @@ -1708,6 +1886,8 @@ class BLE { * Set up a callback for successful bonding, meaning that link-specific security * context is stored persistently for a peer device. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from SecurityManager directly and refer to * SecurityManager::onSecurityContextStored(). A former * call to ble.onSecurityContextStored(callback) should be replaced with @@ -1726,6 +1906,8 @@ class BLE { * a passkey (or PIN) to authenticate the connection * attempt. * + * @param[in] callback Event handler being registered. + * * @deprecated You should use the parallel API from SecurityManager directly and refer to * SecurityManager::onPasskeyDisplay(). A former * call to ble.onPasskeyDisplay(callback) should be replaced with diff --git a/features/FEATURE_BLE/ble/SafeEnum.h b/features/FEATURE_BLE/ble/SafeEnum.h index a56d6ba32d4..8e00a707f49 100644 --- a/features/FEATURE_BLE/ble/SafeEnum.h +++ b/features/FEATURE_BLE/ble/SafeEnum.h @@ -112,13 +112,15 @@ struct SafeEnum { */ typedef LayoutType representation_t; +protected: /** * Construction of an enumeration value. */ - SafeEnum(LayoutType value) : _value(value) { } + explicit SafeEnum(LayoutType value) : _value(value) { } +public: /** - * Equal to operator for SafeEnum instances. + * Equal to operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison @@ -126,12 +128,12 @@ struct SafeEnum { * @return true if the inner value of lhs and rhs are equal and false * otherwise. */ - friend bool operator==(SafeEnum lhs, SafeEnum rhs) { + friend bool operator==(Target lhs, Target rhs) { return lhs._value == rhs._value; } /** - * Not equal to operator for SafeEnum instances. + * Not equal to operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison @@ -139,24 +141,24 @@ struct SafeEnum { * @return true if the inner value of lhs and rhs are not equal and false * otherwise. */ - friend bool operator!=(SafeEnum lhs, SafeEnum rhs) { + friend bool operator!=(Target lhs, Target rhs) { return !(lhs == rhs); } /** - * Less than operator for SafeEnum instances. + * Less than operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison * * @return true if the inner value of lhs is less than rhs and false otherwise. */ - friend bool operator<(SafeEnum lhs, SafeEnum rhs) { + friend bool operator<(Target lhs, Target rhs) { return lhs.value() < rhs.value(); } /** - * Less than or equal to operator for SafeEnum instances. + * Less than or equal to operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison @@ -164,12 +166,12 @@ struct SafeEnum { * @return true if the inner value of lhs is less than or equal to rhs and * false otherwise. */ - friend bool operator<=(SafeEnum lhs, SafeEnum rhs) { + friend bool operator<=(Target lhs, Target rhs) { return lhs.value() < rhs.value() || lhs == rhs; } /** - * Greater than operator for SafeEnum instances. + * Greater than operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison @@ -177,12 +179,12 @@ struct SafeEnum { * @return true if the inner value of lhs is greater than rhs; false * otherwise. */ - friend bool operator>(SafeEnum lhs, SafeEnum rhs) { + friend bool operator>(Target lhs, Target rhs) { return !(lhs <= rhs); } /** - * Greater than or equal to operator for SafeEnum instances. + * Greater than or equal to operator for Target instances. * * @param lhs left hand side of the comparison * @param rhs right hand side of the comparison @@ -190,7 +192,7 @@ struct SafeEnum { * @return true if the inner value of lhs is greater than or equal to rhs; * false otherwise. */ - friend bool operator>=(SafeEnum lhs, SafeEnum rhs) { + friend bool operator>=(Target lhs, Target rhs) { return !(lhs < rhs); } diff --git a/features/FEATURE_BLE/ble/common/Duration.h b/features/FEATURE_BLE/ble/common/Duration.h index 70e6c559e8a..5441f7a057d 100644 --- a/features/FEATURE_BLE/ble/common/Duration.h +++ b/features/FEATURE_BLE/ble/common/Duration.h @@ -86,7 +86,7 @@ struct Value { * Model BLE durations. * * @tparam Rep The representation type of the duration. - * @tparam TB The time base in us. + * @tparam TB The time base in micro seconds. * @tparam Range Closed interval of the duration * @tparam Forever The special value (if applicable) that represents a forever * duration. @@ -115,7 +115,7 @@ struct Duration { /** * Construct a Duration from an integer value. * - * @param v The value of the duration in TN units. + * @param v The value of the duration in TIME_BASE units. */ explicit Duration(Rep v) : duration(clamp(v)) { @@ -124,10 +124,10 @@ struct Duration { /** * Construct a Duration from another Duration. * - * @note The operation fail at compile time of there is a loss of precision. + * @note The operation fail at compile time if there is a loss of precision. * * @tparam OtherRep The type used to represent the other Duration. - * @tparam OtherTB The time base in us units of the other Duration. + * @tparam OtherTB The time base in micro seconds of the other Duration. * @tparam OtherRange The range of the other Duration. * @tparam OtherF The forever value of the other type. * @@ -149,7 +149,7 @@ struct Duration { * @tparam OtherRange The range used by other_ms. * @tparam OtherF The forever value used by other_ms. * - * @param other_ms The Duration in ms to convert. + * @param other_ms The Duration in millisecond to convert. */ template explicit Duration(Duration other_ms, void* = NULL) : @@ -270,7 +270,7 @@ typedef Duration second_t; * @tparam RangeIn The range of duration. * @tparam FIn The Forever value of duration. * @param duration The duration to convert. - * @return The converted duration. It is rounded up if precision is loss. + * @return The converted duration. It is rounded up if precision is lost. * * @related Duration */ diff --git a/features/FEATURE_BLE/ble/gap/AdvertisingDataParser.h b/features/FEATURE_BLE/ble/gap/AdvertisingDataParser.h index e41610b9fe0..1bc947cad02 100644 --- a/features/FEATURE_BLE/ble/gap/AdvertisingDataParser.h +++ b/features/FEATURE_BLE/ble/gap/AdvertisingDataParser.h @@ -87,7 +87,7 @@ class AdvertisingDataParser { element_t next() { element_t element = { - (ble::adv_data_type_t::type) data[TYPE_INDEX], + (ble::adv_data_type_t::type) data[position + TYPE_INDEX], data.subspan(position + VALUE_INDEX, current_length() - (TYPE_SIZE)) }; diff --git a/features/FEATURE_BLE/ble/gap/AdvertisingDataSimpleBuilder.h b/features/FEATURE_BLE/ble/gap/AdvertisingDataSimpleBuilder.h index 9c529f4a09b..0358672e5b3 100644 --- a/features/FEATURE_BLE/ble/gap/AdvertisingDataSimpleBuilder.h +++ b/features/FEATURE_BLE/ble/gap/AdvertisingDataSimpleBuilder.h @@ -158,6 +158,7 @@ class AdvertisingDataSimpleBuilder { AdvertisingDataSimpleBuilder &setAdvertisingInterval(adv_interval_t interval) { MBED_ASSERT(_builder.setAdvertisingInterval(interval) == BLE_ERROR_NONE); + return *this; } /** diff --git a/features/FEATURE_BLE/ble/gap/AdvertisingParameters.h b/features/FEATURE_BLE/ble/gap/AdvertisingParameters.h index 18e9c83f378..304abddaadd 100644 --- a/features/FEATURE_BLE/ble/gap/AdvertisingParameters.h +++ b/features/FEATURE_BLE/ble/gap/AdvertisingParameters.h @@ -135,7 +135,7 @@ class AdvertisingParameters { _minInterval(minInterval), _maxInterval(maxInterval), _peerAddressType(target_peer_address_type_t::PUBLIC), - _ownAddressType(own_address_type_t::PUBLIC), + _ownAddressType(own_address_type_t::RANDOM), _policy(advertising_filter_policy_t::NO_FILTER), _primaryPhy(phy_t::LE_1M), _secondaryPhy(phy_t::LE_1M), diff --git a/features/FEATURE_BLE/ble/gap/ConnectionParameters.h b/features/FEATURE_BLE/ble/gap/ConnectionParameters.h index d93052a48fd..33aeaf5c466 100644 --- a/features/FEATURE_BLE/ble/gap/ConnectionParameters.h +++ b/features/FEATURE_BLE/ble/gap/ConnectionParameters.h @@ -145,10 +145,10 @@ class ConnectionParameters { phy_t phy = phy_t::LE_1M, scan_interval_t scanInterval = scan_interval_t::min(), scan_window_t scanWindow = scan_window_t::min(), - conn_interval_t minConnectionInterval = conn_interval_t::min(), - conn_interval_t maxConnectionInterval = conn_interval_t::max(), + conn_interval_t minConnectionInterval = conn_interval_t(50), + conn_interval_t maxConnectionInterval = conn_interval_t(100), slave_latency_t slaveLatency = slave_latency_t::min(), - supervision_timeout_t connectionSupervisionTimeout = supervision_timeout_t::max(), + supervision_timeout_t connectionSupervisionTimeout = supervision_timeout_t(100), conn_event_length_t minEventLength = conn_event_length_t::min(), conn_event_length_t maxEventLength = conn_event_length_t::max() ); @@ -215,7 +215,7 @@ class ConnectionParameters { * * @return A reference to this. */ - ConnectionParameters &setFilterPolicy(initiator_filter_policy_t filterPolicy) + ConnectionParameters &setFilter(initiator_filter_policy_t filterPolicy) { _filterPolicy = filterPolicy; @@ -282,7 +282,7 @@ class ConnectionParameters { * * @return The initiator policy. */ - initiator_filter_policy_t getFilterPolicy() const + initiator_filter_policy_t getFilter() const { return _filterPolicy; } diff --git a/features/FEATURE_BLE/ble/gap/Events.h b/features/FEATURE_BLE/ble/gap/Events.h index 3c09137517c..fede40e2f46 100644 --- a/features/FEATURE_BLE/ble/gap/Events.h +++ b/features/FEATURE_BLE/ble/gap/Events.h @@ -63,7 +63,7 @@ struct AdvertisingReportEvent { advertising_sid_t SID, advertising_power_t txPower, rssi_t rssi, - periodic_interval_t periodicInterval, + uint16_t periodicInterval, const peer_address_type_t &directAddressType, const address_t &directAddress, const mbed::Span &advertisingData @@ -133,10 +133,15 @@ struct AdvertisingReportEvent { return rssi; } + /** Indicate if periodic interval is valid */ + bool isPeriodicIntervalPresent() const { + return periodicInterval != 0; + } + /** Get interval. */ periodic_interval_t getPeriodicInterval() const { - return periodicInterval; + return periodic_interval_t(periodicInterval); } /** Get target address type in directed advertising. */ @@ -152,7 +157,7 @@ struct AdvertisingReportEvent { } /** Get payload. */ - const mbed::Span &getAdvertisingData() const + const mbed::Span &getPayload() const { return advertisingData; } @@ -166,7 +171,7 @@ struct AdvertisingReportEvent { advertising_sid_t SID; advertising_power_t txPower; rssi_t rssi; - periodic_interval_t periodicInterval; + uint16_t periodicInterval; peer_address_type_t directAddressType; const address_t &directAddress; mbed::Span advertisingData; @@ -630,10 +635,10 @@ struct ScanRequestEvent { * * @see ble::Gap::EventHandler::onDisconnectionComplete(). */ -struct DisconnectionEvent { +struct DisconnectionCompleteEvent { #if !defined(DOXYGEN_ONLY) - DisconnectionEvent( + DisconnectionCompleteEvent( connection_handle_t connectionHandle, const disconnection_reason_t &reason ) : diff --git a/features/FEATURE_BLE/ble/gap/Gap.h b/features/FEATURE_BLE/ble/gap/Gap.h index ecf281fc1ba..194369c6230 100644 --- a/features/FEATURE_BLE/ble/gap/Gap.h +++ b/features/FEATURE_BLE/ble/gap/Gap.h @@ -427,7 +427,7 @@ class Gap { * * @see disconnect() */ - virtual void onDisconnectionComplete(const DisconnectionEvent &event) + virtual void onDisconnectionComplete(const DisconnectionCompleteEvent &event) { } @@ -536,7 +536,7 @@ class Gap { * * @return Maximum advertising data length supported. */ - virtual uint8_t getMaxAdvertisingDataLength(); + virtual uint16_t getMaxAdvertisingDataLength(); /** Create an advertising set and apply the passed in parameters. The handle returned * by this function must be used for all other calls that accept an advertising handle. @@ -711,8 +711,8 @@ class Gap { /** Start scanning. * - * @param filtering Filtering policy. * @param duration How long to scan for. Special value 0 means scan forever. + * @param filtering Filtering policy. * @param period How long to scan for in single period. If the period is 0 and duration * is nonzero the scan will last for single duration. * @@ -726,8 +726,8 @@ class Gap { * @see EventHandler::onScanTimeout when scanning timeout. */ virtual ble_error_t startScan( - duplicates_filter_t filtering = duplicates_filter_t::DISABLE, scan_duration_t duration = scan_duration_t::forever(), + duplicates_filter_t filtering = duplicates_filter_t::DISABLE, scan_period_t period = scan_period_t(0) ); diff --git a/features/FEATURE_BLE/ble/gap/ScanParameters.h b/features/FEATURE_BLE/ble/gap/ScanParameters.h index 494cc818f67..778f0ba91eb 100644 --- a/features/FEATURE_BLE/ble/gap/ScanParameters.h +++ b/features/FEATURE_BLE/ble/gap/ScanParameters.h @@ -41,8 +41,8 @@ namespace ble { * same value. * * To get extra data from the advertising device, the scanner can send scan - * requests to the advertiser that respond with a scan response. It is possible - * to select what type of address is used to issue the scan request. + * requests to the advertiser; the advertiser may respond with scan responses. + * It is possible to select what type of address is used to issue the scan request. * * With Bluetooth 5, devices can advertise on more physical channels, and by * extension, they can scan on more physical channels. It is possible to define @@ -121,7 +121,7 @@ class ScanParameters { scan_window_t scan_interval = scan_interval_t::min(), scan_interval_t scan_window = scan_window_t::min(), bool active_scanning = false, - own_address_type_t own_address_type = own_address_type_t::PUBLIC, + own_address_type_t own_address_type = own_address_type_t::RANDOM, scanning_filter_policy_t scanning_filter_policy = scanning_filter_policy_t::NO_FILTER ) : own_address_type(own_address_type), diff --git a/features/FEATURE_BLE/ble/gap/Types.h b/features/FEATURE_BLE/ble/gap/Types.h index 59f07ba91b8..9cd255e34b1 100644 --- a/features/FEATURE_BLE/ble/gap/Types.h +++ b/features/FEATURE_BLE/ble/gap/Types.h @@ -229,7 +229,7 @@ struct advertising_data_status_t : SafeEnum * Explicit constructor from a raw value. */ explicit advertising_data_status_t(uint8_t raw_value) : - SafeEnum(static_cast(raw_value)) + SafeEnum(raw_value) { } @@ -891,6 +891,9 @@ struct peripheral_privacy_configuration_t { PERFORM_AUTHENTICATION_PROCEDURE }; + MBED_DEPRECATED_SINCE("mbed-os-5.11", "Use resolution_strategy_t instead.") + typedef resolution_strategy_t ResolutionStrategy; + /** * Connection strategy to use when a connection request contains a * private resolvable address. @@ -941,6 +944,9 @@ struct central_privay_configuration_t { RESOLVE_AND_FILTER }; + MBED_DEPRECATED_SINCE("mbed-os-5.11", "Use resolution_strategy_t instead.") + typedef resolution_strategy_t ResolutionStrategy; + /** * Resolution strategy applied to advertising packets received by the * local device. diff --git a/features/FEATURE_BLE/ble/generic/GenericGap.h b/features/FEATURE_BLE/ble/generic/GenericGap.h index d3a02ffdd94..84891d1a373 100644 --- a/features/FEATURE_BLE/ble/generic/GenericGap.h +++ b/features/FEATURE_BLE/ble/generic/GenericGap.h @@ -90,7 +90,7 @@ class GenericGap : /** @copydoc Gap::getMaxAdvertisingDataLength */ - virtual uint8_t getMaxAdvertisingDataLength(); + virtual uint16_t getMaxAdvertisingDataLength(); /** @copydoc Gap::createAdvertisingSet */ @@ -175,8 +175,8 @@ class GenericGap : /** @copydoc Gap::startScan */ virtual ble_error_t startScan( - duplicates_filter_t filtering, scan_duration_t duration, + duplicates_filter_t filtering, scan_period_t period ); @@ -726,6 +726,7 @@ class GenericGap : ble::address_t _random_static_identity_address; bool _random_address_rotating; + bool _scan_enabled; mbed::Timeout _advertising_timeout; mbed::Timeout _scan_timeout; mbed::Ticker _address_rotation_ticker; diff --git a/features/FEATURE_BLE/ble/services/EddystoneConfigService.h b/features/FEATURE_BLE/ble/services/EddystoneConfigService.h index f21bd13a500..99bed208b16 100644 --- a/features/FEATURE_BLE/ble/services/EddystoneConfigService.h +++ b/features/FEATURE_BLE/ble/services/EddystoneConfigService.h @@ -19,9 +19,10 @@ #warning ble/services/EddystoneConfigService.h is deprecated. Please use the example in 'github.com/ARMmbed/ble-examples/tree/master/BLE_EddystoneService'. -#include "mbed.h" #include "ble/BLE.h" #include "ble/services/EddystoneService.h" +#include "Timer.h" +#include "Ticker.h" #define UUID_URI_BEACON(FIRST, SECOND) { \ 0xee, 0x0c, FIRST, SECOND, 0x87, 0x86, 0x40, 0xba, \ @@ -497,8 +498,8 @@ class EddystoneConfigService BLEDevice &ble; Params_t ¶ms; - Ticker timeSinceBootTick; - Timeout switchFrame; + mbed::Ticker timeSinceBootTick; + mbed::Timeout switchFrame; // Default value that is restored on reset. PowerLevels_t &defaultAdvPowerLevels; // This goes into the advertising frames (radio power measured at 1m from device). PowerLevels_t &radioPowerLevels; // This configures the power levels of the radio. diff --git a/features/FEATURE_BLE/ble/services/EddystoneService.h b/features/FEATURE_BLE/ble/services/EddystoneService.h index 014288fe181..4a42a985481 100644 --- a/features/FEATURE_BLE/ble/services/EddystoneService.h +++ b/features/FEATURE_BLE/ble/services/EddystoneService.h @@ -20,8 +20,11 @@ #warning ble/services/EddystoneService.h is deprecated. Please use the example in 'github.com/ARMmbed/ble-examples/tree/master/BLE_EddystoneService'. #include "ble/BLE.h" -#include "mbed.h" #include "CircularBuffer.h" +#include "Timer.h" +#include "Ticker.h" +#include "Timeout.h" + static const uint8_t BEACON_EDDYSTONE[] = {0xAA, 0xFE}; //Debug is disabled by default @@ -76,7 +79,7 @@ class EddystoneService void (*frames[EDDYSTONE_MAX_FRAMETYPE])(uint8_t *, uint32_t); static const int URI_DATA_MAX = 18; typedef uint8_t UriData_t[URI_DATA_MAX]; - CircularBuffer overflow; + mbed::CircularBuffer overflow; // UID Frame Type subfields static const int UID_NAMESPACEID_SIZE = 10; @@ -543,11 +546,11 @@ class EddystoneService BLEDevice &ble; uint16_t advPeriodus; uint8_t txPower; - Timer timeSinceBootTimer; + mbed::Timer timeSinceBootTimer; volatile uint32_t lastBootTimerRead; volatile bool advLock; volatile FrameTypes frameIndex; - Timeout stopAdv; + mbed::Timeout stopAdv; // URI Frame Variables @@ -556,7 +559,7 @@ class EddystoneService int8_t defaultUrlPower; bool urlIsSet; // flag that enables / disable URI Frames float urlAdvPeriod; // how long the url frame will be advertised for - Ticker urlTicker; + mbed::Ticker urlTicker; // UID Frame Variables UIDNamespaceID_t defaultUidNamespaceID; @@ -565,7 +568,7 @@ class EddystoneService uint16_t uidRFU; bool uidIsSet; // flag that enables / disable UID Frames float uidAdvPeriod; // how long the uid frame will be advertised for - Ticker uidTicker; + mbed::Ticker uidTicker; // TLM Frame Variables uint8_t TlmVersion; @@ -575,7 +578,7 @@ class EddystoneService volatile uint32_t TlmTimeSinceBoot; bool tlmIsSet; // flag that enables / disables TLM frames float TlmAdvPeriod; // number of minutes between adv frames - Ticker tlmTicker; + mbed::Ticker tlmTicker; public: /* diff --git a/features/FEATURE_BLE/ble/services/UARTService.h b/features/FEATURE_BLE/ble/services/UARTService.h index 43da23c6f99..241db763b48 100644 --- a/features/FEATURE_BLE/ble/services/UARTService.h +++ b/features/FEATURE_BLE/ble/services/UARTService.h @@ -21,7 +21,6 @@ #include "mbed-drivers/mbed.h" #include "mbed-drivers/Stream.h" #else -#include "mbed.h" #include "Stream.h" #endif diff --git a/features/FEATURE_BLE/ble/services/URIBeaconConfigService.h b/features/FEATURE_BLE/ble/services/URIBeaconConfigService.h index ba27c4b4344..6a6a583431e 100644 --- a/features/FEATURE_BLE/ble/services/URIBeaconConfigService.h +++ b/features/FEATURE_BLE/ble/services/URIBeaconConfigService.h @@ -22,7 +22,7 @@ #ifdef YOTTA_CFG_MBED_OS #include "mbed-drivers/mbed.h" #else -#include "mbed.h" + #endif extern const uint8_t UUID_URI_BEACON_SERVICE[UUID::LENGTH_OF_LONG_UUID]; diff --git a/features/FEATURE_BLE/ble/services/iBeacon.h b/features/FEATURE_BLE/ble/services/iBeacon.h index bed6d13eaed..e3003e27d39 100644 --- a/features/FEATURE_BLE/ble/services/iBeacon.h +++ b/features/FEATURE_BLE/ble/services/iBeacon.h @@ -1,18 +1,18 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2015 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +* Copyright (c) 2006-2015 ARM Limited +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ #ifndef MBED_BLE_IBEACON_H__ #define MBED_BLE_IBEACON_H__ @@ -28,8 +28,8 @@ * number generally used to determine the location of devices or physical objects * near a mobile phone user. * - * iOS scans for iBeacon devices in a background task and notifies Apps - * subscribed to a specific region when the area is entered or left. Apps may + * iOS scans for iBeacon devices in a background task and notifies apps + * that subscribe to a specific region when a device enters or leaves an area. Apps may * use this information to display context-aware content to users. * * As an example, a museum can deploy an app that informs the user when one of @@ -48,7 +48,7 @@ * of iBeacons in relevant touristic locations it operates. The UUID may * identify a place managed by the city. The major ID would identify the place; * it can be a museum, a historic monument, a metro station and so on. The minor ID - * would locate a specific spot within a specific city place. It can be a + * would identify a specific spot within a specific city place. It can be a * piece of art, a ticket dispenser or a relevant point of interest. * * Each iBeacon device is physically attached to the spot it locates and @@ -78,7 +78,7 @@ * * @attention If you are interested in manufacturing iBeacons, you must obtain a * license from Apple. More information at https://developer.apple.com/ibeacon/. - * The licence also grant access to the iBeacons technical specification. + * The license also grant access to the iBeacons technical specification. * * @note More information at https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf * @@ -88,9 +88,9 @@ MBED_DEPRECATED_SINCE( "mbed-os-5.11", "This service is deprecated, and no replacement is currently available." ) -class iBeacon -{ +class iBeacon { public: +#if !(DOXYGEN_ONLY) /** * Data buffer of a location UUID. */ @@ -116,12 +116,12 @@ class iBeacon uint16_t companyID; /** - * Packet ID; Equal to 2 for an iBeacon. + * Packet ID; equal to 2 for an iBeacon. */ uint8_t ID; /** - * Length of the remaining data presents in the payload. + * Length of the remaining data present in the payload. */ uint8_t len; @@ -131,7 +131,7 @@ class iBeacon uint8_t proximityUUID[16]; /** - * Beacon Major group ID. + * Beacon major group ID. */ uint16_t majorNumber; @@ -150,11 +150,11 @@ class iBeacon * Assemble an iBeacon payload. * * @param[in] uuid Beacon network ID. iBeacon operators use this value - * to group their iBeacons into a single network, a single region and + * to group their iBeacons into a single network, a single region, and * identify their organization among others. * * @param[in] majNum Beacon major group ID. iBeacon exploitants may use - * this field to divide the region into subregions, their network into + * this field to divide the region into subregions, and their network into * subnetworks. * * @param[in] minNum Identifier of the Beacon in its subregion. @@ -181,7 +181,7 @@ class iBeacon memcpy(proximityUUID, uuid, sizeof(LocationUUID_t)); } }; - +#endif //#if !(DOXYGEN_ONLY) public: /** * Construct an iBeacon::Payload and register it into Gap. @@ -189,17 +189,17 @@ class iBeacon * @param[in] _ble The BLE interface to configure with the iBeacon payload. * * @param[in] uuid Beacon network ID. iBeacon operators use this value - * to group their iBeacons into a single network, a single region and + * to group their iBeacons into a single network, a single region, and * identify their organization among others. * - * @param[in] majNum Beacon major group ID. iBeacon exploitants may use - * this field to divide the region into subregions, their network into + * @param[in] majNum Beacon major group ID. iBeacon fleet operators may use + * this field to divide the region into subregions, and their network into * subnetworks. * * @param[in] minNum Identifier of the Beacon in its subregion. * - * @param[in] txP Measured transmit power of the beacon at 1 - * meter. Scanners use this parameter to approximate the distance + * @param[in] txP Measured transmit power of the beacon at distance of + * one meter. Scanners use this parameter to approximate the distance * to the beacon. * * @param[in] compID ID of the beacon manufacturer. diff --git a/features/FEATURE_BLE/module.json b/features/FEATURE_BLE/module.json deleted file mode 100644 index e1199ca4111..00000000000 --- a/features/FEATURE_BLE/module.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "ble", - "version": "2.6.0", - "description": "The BLE module offers a high level abstraction for using Bluetooth Low Energy on multiple platforms.", - "keywords": [ - "Bluetooth", - "BLE", - "mbed", - "mbed-official" - ], - "author": "Rohit Grover", - "repository": { - "url": "https://github.com/ARMmbed/ble.git", - "type": "git" - }, - "homepage": "https://developer.mbed.org/teams/Bluetooth-Low-Energy/", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - } - ], - "dependencies": {}, - "targetDependencies": { - "st-ble-shield": { - "x-nucleo-idb0xa1": "^2.0.0" - }, - "nrf51822": { - "ble-nrf51822": "^2.2.8" - }, - "nrf52832": { - "ble-nrf52832": "ARMmbed/ble-nrf52832" - }, - "cordio": { - "ble-wicentric": "~0.0.4" - }, - "mbed-classic": { - "mbed-classic": "~0.0.1" - }, - "mbed-os": { - "mbed-drivers": "*", - "compiler-polyfill": "^1.2.1" - } - } -} diff --git a/features/FEATURE_BLE/source/BLE.cpp b/features/FEATURE_BLE/source/BLE.cpp index e61356c075f..6e95af82c49 100644 --- a/features/FEATURE_BLE/source/BLE.cpp +++ b/features/FEATURE_BLE/source/BLE.cpp @@ -17,6 +17,7 @@ #include #include "ble/BLE.h" #include "ble/BLEInstanceBase.h" +#include "platform/mbed_critical.h" #if defined(TARGET_OTA_ENABLED) #include "ble/services/DFUService.h" @@ -28,7 +29,7 @@ #if !defined(YOTTA_CFG_MBED_OS) #include -#include +#include #endif #if defined(__GNUC__) && !defined(__CC_ARM) @@ -141,7 +142,8 @@ BLE::initImplementation(FunctionPointerWithContextprocessEvents(); } @@ -328,11 +333,14 @@ void BLE::onEventsToProcess(const BLE::OnEventsToProcessCallback_t& callback) void BLE::signalEventsToProcess() { + core_util_critical_section_enter(); if (event_signaled == true) { + core_util_critical_section_exit(); return; } event_signaled = true; + core_util_critical_section_exit(); if (whenEventsToProcess) { OnEventsToProcessCallbackContext params = { diff --git a/features/FEATURE_BLE/source/gap/AdvertisingDataBuilder.cpp b/features/FEATURE_BLE/source/gap/AdvertisingDataBuilder.cpp index 1e0d465a8bc..5c23ad03d34 100644 --- a/features/FEATURE_BLE/source/gap/AdvertisingDataBuilder.cpp +++ b/features/FEATURE_BLE/source/gap/AdvertisingDataBuilder.cpp @@ -331,7 +331,7 @@ uint8_t *AdvertisingDataBuilder::findField(adv_data_type_t type) for (uint8_t idx = 0; idx < _payload_length;) { uint8_t fieldType = _buffer[idx + FIELD_TYPE_INDEX]; - if (fieldType == type) { + if (fieldType == type.value()) { return _buffer.data() + idx; } diff --git a/features/FEATURE_BLE/source/gap/ConnectionParameters.cpp b/features/FEATURE_BLE/source/gap/ConnectionParameters.cpp index 3ed5b646ef9..837a706f850 100644 --- a/features/FEATURE_BLE/source/gap/ConnectionParameters.cpp +++ b/features/FEATURE_BLE/source/gap/ConnectionParameters.cpp @@ -30,7 +30,7 @@ ConnectionParameters::ConnectionParameters( conn_event_length_t maxEventLength ) : _filterPolicy(initiator_filter_policy_t::NO_FILTER), - _ownAddressType(own_address_type_t::PUBLIC) + _ownAddressType(own_address_type_t::RANDOM) { for (uint8_t i = 0; i < MAX_PARAM_PHYS; ++i) { _enabledPhy[i] = false; diff --git a/features/FEATURE_BLE/source/gap/Gap.cpp b/features/FEATURE_BLE/source/gap/Gap.cpp index 4cb4c6a50e8..3515ddd531d 100644 --- a/features/FEATURE_BLE/source/gap/Gap.cpp +++ b/features/FEATURE_BLE/source/gap/Gap.cpp @@ -30,7 +30,7 @@ uint8_t Gap::getMaxAdvertisingSetNumber() return 1; } -uint8_t Gap::getMaxAdvertisingDataLength() +uint16_t Gap::getMaxAdvertisingDataLength() { /* Requesting action from porter(s): override this API if this capability is supported. */ return LEGACY_ADVERTISING_MAX_SIZE; @@ -145,8 +145,8 @@ ble_error_t Gap::setScanParameters(const ScanParameters ¶ms) }; ble_error_t Gap::startScan( - duplicates_filter_t filtering, scan_duration_t duration, + duplicates_filter_t filtering, scan_period_t period ) { diff --git a/features/FEATURE_BLE/source/generic/GenericGap.cpp b/features/FEATURE_BLE/source/generic/GenericGap.cpp index a4928a07dff..3cdd38843c0 100644 --- a/features/FEATURE_BLE/source/generic/GenericGap.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGap.cpp @@ -64,6 +64,10 @@ static const GapScanningParams default_scan_params; static const mbed_error_status_t mixed_scan_api_error = MBED_MAKE_ERROR(MBED_MODULE_BLE, MBED_ERROR_CODE_BLE_USE_INCOMPATIBLE_API); +static const mbed_error_status_t illegal_state_error = + MBED_MAKE_ERROR(MBED_MODULE_BLE, MBED_ERROR_CODE_BLE_ILLEGAL_STATE); + + /* * Return true if value is included in the range [lower_bound : higher_bound] */ @@ -435,6 +439,7 @@ GenericGap::GenericGap( _peripheral_privacy_configuration(default_peripheral_privacy_configuration), _central_privacy_configuration(default_central_privacy_configuration), _random_address_rotating(false), + _scan_enabled(false), _advertising_timeout(), _scan_timeout(), _connection_event_handler(NULL), @@ -564,6 +569,13 @@ ble_error_t GenericGap::stopAdvertising() ble_error_t GenericGap::stopScan() { ble_error_t err; + + if (!_scan_enabled) { + return BLE_ERROR_NONE; + } + + _scan_enabled = false; + if (is_extended_advertising_available()) { err = _pal_gap.extended_scan_enable(false, pal::duplicates_filter_t::DISABLE, 0, 0); } else { @@ -571,6 +583,7 @@ ble_error_t GenericGap::stopScan() } if (err) { + _scan_enabled = true; return err; } @@ -578,6 +591,7 @@ ble_error_t GenericGap::stopScan() set_random_address_rotation(false); _scan_timeout.detach(); + return BLE_ERROR_NONE; } @@ -675,10 +689,13 @@ ble_error_t GenericGap::connect( return BLE_ERROR_INVALID_PARAM; } + // ensure scan is stopped. + _pal_gap.scan_enable(false, false); + return _pal_gap.create_connection( connectionParams.getScanIntervalArray()[0], connectionParams.getScanWindowArray()[0], - connectionParams.getFilterPolicy(), + connectionParams.getFilter(), (pal::connection_peer_address_type_t::type) peerAddressType.value(), peerAddress, connectionParams.getOwnAddressType(), @@ -691,6 +708,9 @@ ble_error_t GenericGap::connect( ); } + // ensure scan is stopped. + _pal_gap.extended_scan_enable(false, pal::duplicates_filter_t::DISABLE, 0, 0); + // reduce the address type to public or random peer_address_type_t adjusted_address_type(peer_address_type_t::PUBLIC); @@ -701,7 +721,7 @@ ble_error_t GenericGap::connect( } return _pal_gap.extended_create_connection( - connectionParams.getFilterPolicy(), + connectionParams.getFilter(), connectionParams.getOwnAddressType(), adjusted_address_type, peerAddress, @@ -831,7 +851,7 @@ void GenericGap::on_read_phy( ) { ble_error_t status = BLE_ERROR_NONE; - if (pal::hci_error_code_t::SUCCESS != hci_status) { + if (hci_status != pal::hci_error_code_t::SUCCESS) { status = BLE_ERROR_UNSPECIFIED; } @@ -848,7 +868,7 @@ void GenericGap::on_phy_update_complete( ) { ble_error_t status = BLE_ERROR_NONE; - if (pal::hci_error_code_t::SUCCESS != hci_status) { + if (hci_status != pal::hci_error_code_t::SUCCESS) { status = BLE_ERROR_UNSPECIFIED; } @@ -1187,6 +1207,8 @@ ble_error_t GenericGap::startRadioScan(const GapScanningParams &scanningParams) return err; } + _scan_enabled = true; + _scan_timeout.detach(); uint16_t timeout = scanningParams.getTimeout(); if (timeout) { @@ -1442,7 +1464,7 @@ void GenericGap::processDisconnectionEvent( if (_eventHandler) { _eventHandler->onDisconnectionComplete( - DisconnectionEvent( + DisconnectionCompleteEvent( handle, (disconnection_reason_t::type) reason ) @@ -1459,6 +1481,18 @@ BLE_DEPRECATED_API_USE_END() void GenericGap::on_scan_timeout() { + if (!_scan_enabled) { + return; + } + + /* if timeout happened on a 4.2 chip we need to stop the scan manually */ + if (!is_extended_advertising_available()) { + _pal_gap.scan_enable(false, false); + set_random_address_rotation(false); + } + + _scan_enabled = false; + if (!_eventHandler) { return; } @@ -1583,7 +1617,7 @@ void GenericGap::on_advertising_report(const pal::GapAdvertisingReportEvent &e) /* SID - NO ADI FIELD IN THE PDU */ 0xFF, /* tx power information not available */ 127, advertising.rssi, - /* NO PERIODIC ADVERTISING */ periodic_interval_t(0), + /* NO PERIODIC ADVERTISING */ 0, peer_address_type_t::ANONYMOUS, ble::address_t (), mbed::Span(advertising.data.data(), advertising.data.size()) @@ -1757,7 +1791,8 @@ void GenericGap::on_disconnection_complete(const pal::GapDisconnectionCompleteEv void GenericGap::on_connection_parameter_request(const pal::GapRemoteConnectionParameterRequestEvent &e) { if (_user_manage_connection_parameter_requests) { - _eventHandler->onUpdateConnectionParametersRequest( + if (_eventHandler) { + _eventHandler->onUpdateConnectionParametersRequest( UpdateConnectionParametersRequestEvent( e.connection_handle, conn_interval_t(e.min_connection_interval), @@ -1766,6 +1801,9 @@ void GenericGap::on_connection_parameter_request(const pal::GapRemoteConnectionP supervision_timeout_t(e.supervision_timeout) ) ); + } else { + MBED_ERROR(illegal_state_error, "Event handler required if connection params are user handled"); + } } else { _pal_gap.accept_connection_parameter_request( e.connection_handle, @@ -1781,6 +1819,10 @@ void GenericGap::on_connection_parameter_request(const pal::GapRemoteConnectionP void GenericGap::on_connection_update(const pal::GapConnectionUpdateEvent &e) { + if (!_eventHandler) { + return; + } + _eventHandler->onConnectionParametersUpdateComplete( ConnectionParametersUpdateCompleteEvent( e.status == pal::hci_error_code_t::SUCCESS ? BLE_ERROR_NONE : BLE_ERROR_UNSPECIFIED, @@ -1997,7 +2039,7 @@ uint8_t GenericGap::getMaxAdvertisingSetNumber() } } -uint8_t GenericGap::getMaxAdvertisingDataLength() +uint16_t GenericGap::getMaxAdvertisingDataLength() { useVersionTwoAPI(); return _pal_gap.get_maximum_advertising_data_length(); @@ -2053,7 +2095,7 @@ ble_error_t GenericGap::destroyAdvertisingSet(advertising_handle_t handle) return BLE_ERROR_INVALID_PARAM; } - if (_existing_sets.get(handle) == false) { + if (!_existing_sets.get(handle)) { return BLE_ERROR_INVALID_PARAM; } @@ -2135,7 +2177,7 @@ ble_error_t GenericGap::setExtendedAdvertisingParameters( params.getChannel39() ); - return _pal_gap.set_extended_advertising_parameters( + ble_error_t err = _pal_gap.set_extended_advertising_parameters( handle, event_properties, params.getMinPrimaryInterval().value(), @@ -2152,6 +2194,15 @@ ble_error_t GenericGap::setExtendedAdvertisingParameters( /* SID */ (handle % 0x10), params.getScanRequestNotification() ); + + if (err) { + return err; + } + + return _pal_gap.set_advertising_set_random_address( + handle, + _random_static_identity_address + ); } ble_error_t GenericGap::setAdvertisingPayload( @@ -2299,21 +2350,6 @@ ble_error_t GenericGap::startAdvertising( } if (is_extended_advertising_available()) { - ble::address_t random_address; - - if (!getUnresolvableRandomAddress(random_address)) { - return BLE_ERROR_INTERNAL_STACK_FAILURE; - } - - error = _pal_gap.set_advertising_set_random_address( - handle, - random_address - ); - - if (error) { - return error; - } - error = _pal_gap.extended_advertising_enable( /* enable */ true, /* number of advertising sets */ 1, @@ -2357,10 +2393,14 @@ ble_error_t GenericGap::stopAdvertising(advertising_handle_t handle) return BLE_ERROR_INVALID_PARAM; } - if (_existing_sets.get(handle)) { + if (!_existing_sets.get(handle)) { return BLE_ERROR_INVALID_PARAM; } + if (!_active_sets.get(handle)) { + return BLE_ERROR_INVALID_STATE; + } + ble_error_t status; if (is_extended_advertising_available()) { @@ -2427,7 +2467,7 @@ ble_error_t GenericGap::setPeriodicAdvertisingParameters( } if (!_existing_sets.get(handle)) { - return BLE_ERROR_INVALID_STATE; + return BLE_ERROR_INVALID_PARAM; } return _pal_gap.set_periodic_advertising_parameters( @@ -2454,7 +2494,7 @@ ble_error_t GenericGap::setPeriodicAdvertisingPayload( } if (!_existing_sets.get(handle)) { - return BLE_ERROR_INVALID_STATE; + return BLE_ERROR_INVALID_PARAM; } if (payload.size() > getMaxAdvertisingDataLength()) { @@ -2511,7 +2551,7 @@ ble_error_t GenericGap::startPeriodicAdvertising(advertising_handle_t handle) } if (!_existing_sets.get(handle)) { - return BLE_ERROR_INVALID_STATE; + return BLE_ERROR_INVALID_PARAM; } if (_active_sets.get(handle) == false) { @@ -2544,7 +2584,7 @@ ble_error_t GenericGap::stopPeriodicAdvertising(advertising_handle_t handle) } if (!_existing_sets.get(handle)) { - return BLE_ERROR_INVALID_STATE; + return BLE_ERROR_INVALID_PARAM; } if (_active_periodic_sets.get(handle) == false) { @@ -2638,7 +2678,7 @@ void GenericGap::on_extended_advertising_report( advertising_sid, tx_power, rssi, - periodic_interval_t(periodic_advertising_interval), + periodic_advertising_interval, (PeerAddressType_t::type) direct_address_type.value(), (BLEProtocol::AddressBytes_t &) direct_address, mbed::make_Span(data, data_length) @@ -2859,8 +2899,8 @@ ble_error_t GenericGap::setScanParameters(const ScanParameters ¶ms) } ble_error_t GenericGap::startScan( - duplicates_filter_t filtering, scan_duration_t duration, + duplicates_filter_t filtering, scan_period_t period ) { @@ -2871,12 +2911,16 @@ ble_error_t GenericGap::startScan( } if (is_extended_advertising_available()) { - return _pal_gap.extended_scan_enable( + ble_error_t err = _pal_gap.extended_scan_enable( /* enable */true, filtering, duration.value(), period.value() ); + + if (err) { + return err; + } } else { if (period.value() != 0) { return BLE_ERROR_INVALID_PARAM; @@ -2898,9 +2942,11 @@ ble_error_t GenericGap::startScan( microsecond_t(duration).value() ); } - - return BLE_ERROR_NONE; } + + _scan_enabled = true; + + return BLE_ERROR_NONE; } ble_error_t GenericGap::createSync( @@ -2917,7 +2963,7 @@ ble_error_t GenericGap::createSync( return BLE_ERROR_NOT_IMPLEMENTED; } - if (peerAddressType != peer_address_type_t::PUBLIC || + if (peerAddressType != peer_address_type_t::PUBLIC && peerAddressType != peer_address_type_t::RANDOM ) { return BLE_ERROR_INVALID_PARAM; diff --git a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp index 0c5e047dc48..621f758680d 100644 --- a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp +++ b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp @@ -653,14 +653,20 @@ ble_error_t GenericSecurityManager::generateOOB( /* Secure connections. Avoid generating if we're already waiting for it. * If a local random is set to 0 it means we're already calculating. */ if (!is_all_zeros(_oob_local_random)) { - status = _pal.generate_secure_connections_oob(); + /* save the current values in case the call to + * generate_secure_connections_oob fails */ + address_t orig_local_address = _oob_local_address; + oob_lesc_value_t orig_local_random = _oob_local_random; + + _oob_local_address = *address; + /* this will be updated when calculation completes, + * a value of all zeros is an invalid random value */ + set_all_zeros(_oob_local_random); - if (status == BLE_ERROR_NONE) { - _oob_local_address = *address; - /* this will be updated when calculation completes, - * a value of all zeros is an invalid random value */ - set_all_zeros(_oob_local_random); - } else if (status != BLE_ERROR_NOT_IMPLEMENTED) { + status = _pal.generate_secure_connections_oob(); + if (status != BLE_ERROR_NONE && status != BLE_ERROR_NOT_IMPLEMENTED) { + _oob_local_address = orig_local_address; + _oob_local_random = orig_local_random; return status; } } else { diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/doc/PortingGuide.md b/features/FEATURE_BLE/targets/TARGET_CORDIO/doc/PortingGuide.md index 43a6d624ef2..683cad3dbb5 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/doc/PortingGuide.md +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/doc/PortingGuide.md @@ -149,17 +149,26 @@ The functions `do_initialize` and `do_terminate` handle initialization and termi ##### Memory pool -The function `get_buffer_pool_description` in the base class returns a buffer of 1040 bytes divided into different memory pools: +Porters must override the `get_buffer_pool_description` function, which should return a buffer pool for the Cordio stack to use. + +The function `get_default_buffer_pool_description` in the base class returns a buffer of 2250 bytes divided into different memory pools, and most implementations can use it: | Chunk size (bytes) | Number of chunks | |--------------------|------------------| -| 16 | 8 | -| 32 | 4 | -| 64 | 2 | -| 128 | 2 | +| 16 | 16 | +| 32 | 16 | +| 64 | 8 | +| 128 | 4 | | 272 | 1 | -Porting overrides this function if the memory provided by the base class doesn't match what is required by the Bluetooth controller driver. +**Example:** +``` +buf_pool_desc_t CordioHCIDriver::get_buffer_pool_description() { + return get_default_buffer_pool_description(); +} +``` + +If the memory the base class provides doesn't match what the Bluetooth controller driver requires, a custom pool can be returned. **Example:** diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.cpp index 9ca29a336ed..3040d0ba0f5 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.cpp @@ -17,6 +17,7 @@ #include #include +#include "CordioBLE.h" #include "CordioHCIDriver.h" #include "hci_api.h" #include "hci_cmd.h" @@ -78,7 +79,7 @@ void CordioHCIDriver::terminate() _transport_driver.terminate(); } -buf_pool_desc_t CordioHCIDriver::get_buffer_pool_description() +buf_pool_desc_t CordioHCIDriver::get_default_buffer_pool_description() { static union { uint8_t buffer[2250]; @@ -139,10 +140,26 @@ void CordioHCIDriver::handle_reset_sequence(uint8_t *pMsg) HciReadBdAddrCmd(); break; - case HCI_OPCODE_READ_BD_ADDR: + case HCI_OPCODE_READ_BD_ADDR: { /* parse and store event parameters */ BdaCpy(hciCoreCb.bdAddr, pMsg); + ble::address_t static_address; + + if (get_random_static_address(static_address)) { + // note: will send the HCI command to send the random address + cordio::BLE::deviceInstance().getGap().setAddress( + BLEProtocol::AddressType::RANDOM_STATIC, + static_address.data() + ); + } else { + /* send next command in sequence */ + HciLeReadBufSizeCmd(); + } + break; + } + + case HCI_OPCODE_LE_SET_RAND_ADDR: /* send next command in sequence */ HciLeReadBufSizeCmd(); break; @@ -246,6 +263,11 @@ void CordioHCIDriver::handle_reset_sequence(uint8_t *pMsg) } } +bool CordioHCIDriver::get_random_static_address(ble::address_t& address) +{ + return false; +} + void CordioHCIDriver::signal_reset_sequence_done() { hci_mbed_os_signal_reset_sequence_done(); diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.h index a3b923e2700..bf833892416 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/driver/CordioHCIDriver.h @@ -19,6 +19,7 @@ #include #include +#include #include "wsf_buf.h" #include "CordioHCITransportDriver.h" @@ -77,7 +78,7 @@ class CordioHCIDriver { /** * Return the set of memory pool which will be used by the Cordio stack */ - virtual buf_pool_desc_t get_buffer_pool_description(); + virtual buf_pool_desc_t get_buffer_pool_description() = 0; /** * Initialize the HCI driver. @@ -108,6 +109,13 @@ class CordioHCIDriver { */ virtual void handle_reset_sequence(uint8_t *msg); + /** + * Get the random static address of the controller + * + * @return false if the address has not been set and true otherwise. + */ + virtual bool get_random_static_address(ble::address_t& address); + /** * Signal to the stack that the reset sequence has been done. */ @@ -126,6 +134,13 @@ class CordioHCIDriver { */ uint16_t write(uint8_t type, uint16_t len, uint8_t *pData); +protected: + /** + * Return a default set of memory pool that the Cordio stack can use. + * This function can be used to implement get_buffer_pool_description(). + */ + buf_pool_desc_t get_default_buffer_pool_description(); + private: /** * Initialize the chip. diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp index 6295055eb18..ba57e6bb969 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp @@ -48,7 +48,8 @@ wsfHandlerId_t stack_handler_id; */ MBED_WEAK ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver() { - error("Please provide an implementation for the HCI driver"); + MBED_ASSERT("No HCI driver"); + printf("Please provide an implementation for the HCI driver"); ble::vendor::cordio::CordioHCIDriver* bad_instance = NULL; return *bad_instance; } @@ -100,7 +101,7 @@ BLE::BLE(CordioHCIDriver& hci_driver) : _last_update_us(0) { _hci_driver = &hci_driver; - + stack_setup(); } BLE::~BLE() { } @@ -330,8 +331,15 @@ void BLE::stack_setup() buf_pool_desc.pool_count, buf_pool_desc.pool_description ); + // Raise assert if not enough memory was allocated MBED_ASSERT(bytes_used != 0); + // This warning will be raised if we've allocated too much memory + if(bytes_used < buf_pool_desc.buffer_size) + { + MBED_WARNING1(MBED_MAKE_ERROR(MBED_MODULE_BLE, MBED_ERROR_CODE_INVALID_SIZE), "Too much memory allocated for Cordio memory pool, reduce buf_pool_desc.buffer_size by value below.", buf_pool_desc.buffer_size - bytes_used); + } + WsfTimerInit(); SecInit(); @@ -393,7 +401,6 @@ void BLE::stack_setup() void BLE::start_stack_reset() { _hci_driver->initialize(); - stack_setup(); DmDevReset(); } @@ -416,10 +423,10 @@ void BLE::callDispatcher() wsfOsDispatcher(); + static Timeout nextTimeout; CriticalSectionLock critical_section; if (wsfOsReadyToSleep()) { - static Timeout nextTimeout; // setup an mbed timer for the next Cordio timeout bool_t pTimerRunning; timestamp_t nextTimestamp = (timestamp_t) (WsfTimerNextExpiration(&pTimerRunning) * WSF_MS_PER_TICK) * 1000; diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp index 57c02f8c3d1..e5532560875 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp @@ -294,7 +294,7 @@ ble_error_t GattServer::insert_characteristic_value_attribute( attribute_it->settings = ATTS_SET_READ_CBACK; } if (properties & WRITABLE_PROPERTIES) { - attribute_it->settings = ATTS_SET_WRITE_CBACK; + attribute_it->settings |= ATTS_SET_WRITE_CBACK; } if (value_attribute.getUUID().shortOrLong() == UUID::UUID_TYPE_LONG) { attribute_it->settings |= ATTS_SET_UUID_128; @@ -596,14 +596,10 @@ ble_error_t GattServer::write( uint16_t cccd_value; memcpy(&cccd_value, buffer, sizeof(cccd_value)); - uint16_t conn_id = 0; - uint16_t conn_found = 0; - while ((conn_found < DM_CONN_MAX) && (conn_id < CONNECTION_ID_LIMIT)) { + for (dmConnId_t conn_id = DM_CONN_MAX; conn_id > DM_CONN_ID_NONE; --conn_id) { if (DmConnInUse(conn_id) == true) { - ++conn_found; AttsCccSet(conn_id, cccd_index, cccd_value); } - ++conn_id; } return BLE_ERROR_NONE; @@ -622,13 +618,10 @@ ble_error_t GattServer::write( // This characteristic has a CCCD attribute. Handle notifications and // indications for all active connections if the authentication is // successful - uint16_t conn_id = 0; - uint16_t conn_found = 0; size_t updates_sent = 0; - while((conn_found < DM_CONN_MAX) && (conn_id < CONNECTION_ID_LIMIT)) { + for (dmConnId_t conn_id = DM_CONN_MAX; conn_id > DM_CONN_ID_NONE; --conn_id) { if (DmConnInUse(conn_id) == true) { - ++conn_found; if (is_update_authorized(conn_id, att_handle)) { uint16_t cccd_config = AttsCccEnabled(conn_id, cccd_index); if (cccd_config & ATT_CLIENT_CFG_NOTIFY) { @@ -641,7 +634,6 @@ ble_error_t GattServer::write( } } } - ++conn_id; } if (updates_sent) { @@ -709,12 +701,8 @@ ble_error_t GattServer::areUpdatesEnabled( ) { for (size_t idx = 0; idx < cccd_cnt; idx++) { if (characteristic.getValueHandle() == cccd_handles[idx]) { - uint16_t conn_id = 0; - uint16_t conn_found = 0; - - while ((conn_found < DM_CONN_MAX) && (conn_id < CONNECTION_ID_LIMIT)) { + for (dmConnId_t conn_id = DM_CONN_MAX; conn_id > DM_CONN_ID_NONE; --conn_id) { if (DmConnInUse(conn_id) == true) { - ++conn_found; uint16_t cccd_value = AttsCccGet(conn_id, idx); if (cccd_value & (ATT_CLIENT_CFG_NOTIFY | ATT_CLIENT_CFG_INDICATE)) { *enabled = true; @@ -722,7 +710,6 @@ ble_error_t GattServer::areUpdatesEnabled( } } - ++conn_id; } *enabled = false; return BLE_ERROR_NONE; diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalGap.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalGap.cpp index 1179fa776e3..c3330e91452 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalGap.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalGap.cpp @@ -510,30 +510,7 @@ void Gap::gap_handler(const wsfMsgHdr_t *msg) handler->on_periodic_advertising_sync_loss(evt->syncHandle); } break; - - case DM_CONN_OPEN_IND: { - if (!handler) { - break; - } - - // TODO: filter with old event ... - const hciLeConnCmplEvt_t *evt = (const hciLeConnCmplEvt_t *) msg; - handler->on_enhanced_connection_complete( - hci_error_code_t(evt->status), - evt->handle, - connection_role_t(evt->role), - connection_peer_address_type_t(evt->addrType), - evt->peerAddr, - evt->localRpa, - evt->peerRpa, - evt->connInterval, - evt->connLatency, - evt->supTimeout, - clock_accuracy_t(evt->clockAccuracy) - ); - } - break; - + case DM_SCAN_REQ_RCVD_IND: { if (!handler) { break; @@ -693,6 +670,76 @@ ble_error_t Gap::set_extended_advertising_parameters( bool scan_request_notification ) { + uint8_t adv_type; + + if (event_properties.use_legacy_pdu) { + if (event_properties.directed == false) { + if (event_properties.high_duty_cycle) { + return BLE_ERROR_INVALID_PARAM; + } + + if (event_properties.connectable && event_properties.scannable == false) { + return BLE_ERROR_INVALID_PARAM; + } + + if (event_properties.connectable && event_properties.scannable) { + adv_type = DM_ADV_CONN_UNDIRECT; + } else if (event_properties.scannable) { + adv_type = DM_ADV_SCAN_UNDIRECT; + } else { + adv_type = DM_ADV_NONCONN_UNDIRECT; + } + } else { + if (event_properties.scannable) { + return BLE_ERROR_INVALID_PARAM; + } + + if (event_properties.connectable == false) { + return BLE_ERROR_INVALID_PARAM; + } + + if (event_properties.high_duty_cycle) { + adv_type = DM_ADV_CONN_DIRECT; + } else { + adv_type = DM_ADV_CONN_DIRECT_LO_DUTY; + } + } + } else { + if (event_properties.directed == false) { + if (event_properties.high_duty_cycle) { + return BLE_ERROR_INVALID_PARAM; + } + + if (event_properties.connectable && event_properties.scannable) { + adv_type = DM_ADV_CONN_UNDIRECT; + } else if (event_properties.scannable) { + adv_type = DM_ADV_SCAN_UNDIRECT; + } else if (event_properties.connectable) { + adv_type = DM_EXT_ADV_CONN_UNDIRECT; + } else { + adv_type = DM_ADV_NONCONN_UNDIRECT; + } + } else { + // note: not sure how to act with the high duty cycle in scannable + // and non connectable mode. These cases looks correct from a Bluetooth + // standpoint + + if (event_properties.connectable && event_properties.scannable) { + return BLE_ERROR_INVALID_PARAM; + } else if (event_properties.connectable) { + if (event_properties.high_duty_cycle) { + adv_type = DM_ADV_CONN_DIRECT; + } else { + adv_type = DM_ADV_CONN_DIRECT_LO_DUTY; + } + } else if (event_properties.scannable) { + adv_type = DM_EXT_ADV_SCAN_DIRECT; + } else { + adv_type = DM_EXT_ADV_NONCONN_DIRECT; + } + } + } + DmAdvSetInterval( advertising_handle, primary_advertising_interval_min, @@ -732,7 +779,7 @@ ble_error_t Gap::set_extended_advertising_parameters( DmAdvConfig( advertising_handle, - event_properties.value(), // TODO: use the raw value here ??? + adv_type, peer_address_type.value(), const_cast(peer_address.data()) ); @@ -876,7 +923,7 @@ uint16_t Gap::get_maximum_advertising_data_length() uint8_t Gap::get_max_number_of_advertising_sets() { - return HciGetNumSupAdvSets(); + return std::min(HciGetNumSupAdvSets(), (uint8_t) DM_NUM_ADV_SETS); } ble_error_t Gap::remove_advertising_set(advertising_handle_t advertising_handle) @@ -934,12 +981,11 @@ ble_error_t Gap::extended_scan_enable( if (enable) { uint32_t duration_ms = duration * 10; - DmScanModeExt(); DmScanStart( scanning_phys.value(), DM_DISC_MODE_NONE, extended_scan_type, - filter_duplicates.value(), // TODO: cordio API incomplete ??? + filter_duplicates.value(), duration_ms > 0xFFFF ? 0xFFFF : duration_ms, period ); @@ -959,15 +1005,13 @@ ble_error_t Gap::periodic_advertising_create_sync( uint16_t sync_timeout ) { - if (use_periodic_advertiser_list) { - DmDevSetExtFilterPolicy( - DM_ADV_HANDLE_DEFAULT, - DM_FILT_POLICY_MODE_SYNC, - HCI_FILT_PER_ADV_LIST - ); - } + DmDevSetExtFilterPolicy( + DM_ADV_HANDLE_DEFAULT, + DM_FILT_POLICY_MODE_SYNC, + use_periodic_advertiser_list ? HCI_FILT_PER_ADV_LIST : HCI_FILT_NONE + ); - DmSyncStart( + dmSyncId_t sync_id = DmSyncStart( advertising_sid, peer_address_type.value(), peer_address.data(), @@ -975,7 +1019,11 @@ ble_error_t Gap::periodic_advertising_create_sync( sync_timeout ); - return BLE_ERROR_INVALID_PARAM; + if (sync_id == DM_SYNC_ID_NONE) { + return BLE_ERROR_INTERNAL_STACK_FAILURE; + } else { + return BLE_ERROR_NONE; + } } ble_error_t Gap::cancel_periodic_advertising_create_sync() diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp index a957deb40c9..0fc482c4d68 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp @@ -730,7 +730,7 @@ bool CordioSecurityManager::sm_handler(const wsfMsgHdr_t* msg) { case DM_SEC_ECC_KEY_IND: { secEccMsg_t* evt = (secEccMsg_t*) msg; DmSecSetEccKey(&evt->data.key); - memcpy(self._public_key_x, evt->data.key.pubKey_x, sizeof(_public_key_x)); + memcpy(self._public_key_x, evt->data.key.pubKey_x, sizeof(self._public_key_x)); self._lesc_keys_generated = true; return true; } diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.h index f5c8e81423e..b06685ad467 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.h @@ -86,13 +86,13 @@ extern "C" { /*! \brief Number of supported advertising sets: must be set to 1 for legacy advertising */ #ifndef DM_NUM_ADV_SETS -#define DM_NUM_ADV_SETS 1 +#define DM_NUM_ADV_SETS 3 #endif /*! \brief Number of scanner and initiator PHYs (LE 1M, LE 2M and LE Coded): must be set to 1 for legacy scanner and initiator */ #ifndef DM_NUM_PHYS -#define DM_NUM_PHYS 1 +#define DM_NUM_PHYS 3 #endif /**@}*/ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv.h index 123c78b8f59..f1269ebb233 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv.h @@ -151,7 +151,7 @@ typedef struct uint8_t advHandle; uint8_t op; uint8_t len; - uint8_t *pData; + uint8_t pData[]; } dmAdvPerApiSetData_t; /* Data structure for DM_ADV_PER_MSG_API_START */ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv_ae.c b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv_ae.c index 0edc91e329a..eb48e3ac1d4 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv_ae.c +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/dm/dm_adv_ae.c @@ -1634,13 +1634,13 @@ void DmPerAdvSetData(uint8_t advHandle, uint8_t op, uint8_t len, uint8_t *pData) WSF_ASSERT(advHandle < DM_NUM_ADV_SETS); WSF_ASSERT(len <= HCI_PER_ADV_DATA_LEN); - if ((pMsg = WsfMsgAlloc(sizeof(dmAdvPerApiSetData_t))) != NULL) + if ((pMsg = WsfMsgAlloc(sizeof(dmAdvPerApiSetData_t) + len)) != NULL) { pMsg->hdr.event = DM_ADV_PER_MSG_API_SET_DATA; pMsg->advHandle = advHandle; pMsg->op = op; pMsg->len = len; - pMsg->pData = pData; + memcpy(pMsg->pData, pData, len); WsfMsgSend(dmCb.handlerId, pMsg); } } diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/wsf/common/include/wsf_types.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/wsf/common/include/wsf_types.h index 8e48be050e1..88f755ac332 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/wsf/common/include/wsf_types.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/wsf/common/include/wsf_types.h @@ -58,7 +58,7 @@ extern "C" { /**@{*/ #if ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) && \ (!defined(__ICC8051__) || (__ICC8051__ == 0))) || \ - defined(__CC_ARM) || defined(__IAR_SYSTEMS_ICC__) + defined(__CC_ARM) || defined(__IAR_SYSTEMS_ICC__) || defined(__ARMCC_VERSION) #include #else diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack.ar b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack.ar new file mode 100644 index 00000000000..92457dcebaf Binary files /dev/null and b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack.ar differ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/libcordio_stack.a b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack.a similarity index 61% rename from features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/libcordio_stack.a rename to features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack.a index 8d02e1fb51a..3a69e028dcc 100644 Binary files a/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/libcordio_stack.a and b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack.a differ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_IAR/libcordio_stack.a b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_IAR/libcordio_stack.a new file mode 100644 index 00000000000..1012eb2dc8a Binary files /dev/null and b/features/FEATURE_BLE/targets/TARGET_CORDIO_LL/cordio_stack/TOOLCHAIN_IAR/libcordio_stack.a differ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO_ODIN_W2/HCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO_ODIN_W2/HCIDriver.cpp index fe5fbdc4ab5..2e4f112724c 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO_ODIN_W2/HCIDriver.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO_ODIN_W2/HCIDriver.cpp @@ -41,6 +41,8 @@ class HCIDriver : public cordio::CordioHCIDriver { service_pack_transfered(false) { }; + virtual cordio::buf_pool_desc_t get_buffer_pool_description(); + virtual void do_initialize(); virtual void do_terminate(); @@ -134,6 +136,13 @@ class HCIDriver : public cordio::CordioHCIDriver { } // namespace vendor } // namespace ble + +ble::vendor::cordio::buf_pool_desc_t ble::vendor::odin_w2::HCIDriver::get_buffer_pool_description() +{ + // Use default buffer pool + return ble::vendor::cordio::CordioHCIDriver::get_default_buffer_pool_description(); +} + void ble::vendor::odin_w2::HCIDriver::do_initialize() { cordio_callback_s callback; diff --git a/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CY8C63XX/Psoc6BLE.cpp b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CY8C63XX/Psoc6BLE.cpp index 9b47662b313..8a79b7b754a 100644 --- a/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CY8C63XX/Psoc6BLE.cpp +++ b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CY8C63XX/Psoc6BLE.cpp @@ -46,6 +46,8 @@ class Psoc6HCIDriver : public CordioHCIDriver BdAddress() : addr_type(0) {} }; + virtual cordio::buf_pool_desc_t get_buffer_pool_description(); + /** * Initialize the chip. * The transport is up at that time. @@ -63,6 +65,12 @@ class Psoc6HCIDriver : public CordioHCIDriver BdAddress bd_address; }; +cordio::buf_pool_desc_t Psoc6HCIDriver::get_buffer_pool_description() +{ + // Use default buffer pool + return ble::vendor::cordio::CordioHCIDriver::get_default_buffer_pool_description(); +} + void Psoc6HCIDriver::do_initialize() { diff --git a/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CYW43XXX/HCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CYW43XXX/HCIDriver.cpp new file mode 100644 index 00000000000..3288b568e0c --- /dev/null +++ b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CYW43XXX/HCIDriver.cpp @@ -0,0 +1,428 @@ +/* + * Copyright (c) 2018 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "CordioBLE.h" +#include "CordioHCIDriver.h" +#include "hci_api.h" +#include "hci_cmd.h" +#include "hci_core.h" +#include "bstream.h" +#include +#include "hci_mbed_os_adaptation.h" +#include "H4TransportDriver.h" +#include "cycfg_pins.h" + +extern const int brcm_patch_ram_length; +extern const uint8_t brcm_patchram_buf[]; + +static const uint8_t pre_brcm_patchram_buf[] = { + // RESET followed by download mini driver cmd + 0x03, 0x0C, 0x00, + 0x2E, 0xFC, 0x00, +}; +static const int pre_brcm_patch_ram_length = sizeof(pre_brcm_patchram_buf); + +#define HCI_RESET_RAND_CNT 4 +#define HCI_VS_CMD_SET_SLEEP_MODE 0xFC27 + + +extern "C" uint32_t Set_GPIO_Clock(uint32_t port_idx); + +namespace ble { +namespace vendor { +namespace cypress { + +class HCIDriver : public cordio::CordioHCIDriver { +public: + HCIDriver( + cordio::CordioHCITransportDriver& transport_driver, + PinName bt_host_wake_name, + PinName bt_device_wake_name, + PinName bt_power_name + ) : cordio::CordioHCIDriver(transport_driver), + bt_host_wake_name(bt_host_wake_name), + bt_device_wake_name(bt_device_wake_name), + bt_power_name(bt_power_name), + bt_host_wake(bt_host_wake_name, PIN_INPUT, PullNone, 0), + bt_device_wake(bt_device_wake_name, PIN_OUTPUT, PullDefault, 1), + bt_power(bt_power_name, PIN_OUTPUT, PullUp, 0), + service_pack_index(0), + service_pack_ptr(0), + service_pack_length(0), + service_pack_next(), + service_pack_transfered(false) { + } + + virtual cordio::buf_pool_desc_t get_buffer_pool_description() + { + // Use default buffer pool + return cordio::CordioHCIDriver::get_default_buffer_pool_description(); + } + + virtual void do_initialize() + { + bt_device_wake = 0; + wait_ms(500); + + bt_power = 1; + wait_ms(500); + } + + virtual void do_terminate() { } + + virtual void start_reset_sequence() + { + prepare_service_pack_transfert(); + } + + virtual void handle_reset_sequence(uint8_t *pMsg) + { + uint16_t opcode; + static uint8_t randCnt; + + /* if event is a command complete event */ + if (*pMsg == HCI_CMD_CMPL_EVT) { + /* parse parameters */ + pMsg += HCI_EVT_HDR_LEN; + pMsg++; /* skip num packets */ + BSTREAM_TO_UINT16(opcode, pMsg); + pMsg++; /* skip status */ + + if (service_pack_transfered == false) { + randCnt = 0; + ack_service_pack_command(opcode, pMsg); + return; + } + + /* decode opcode */ + switch (opcode) { + // Note: Reset is handled by ack_service_pack. + case HCI_VS_CMD_SET_SLEEP_MODE: + HciWriteLeHostSupport(); + break; + + case HCI_OPCODE_WRITE_LE_HOST_SUPPORT: + randCnt = 0; + /* send next command in sequence */ + HciSetEventMaskCmd((uint8_t *) hciEventMask); + break; + + case HCI_OPCODE_SET_EVENT_MASK: + randCnt = 0; + /* send next command in sequence */ + HciLeSetEventMaskCmd((uint8_t *) hciLeEventMask); + break; + + case HCI_OPCODE_LE_SET_EVENT_MASK: + /* send next command in sequence */ + HciSetEventMaskPage2Cmd((uint8_t *) hciEventMaskPage2); + break; + + case HCI_OPCODE_SET_EVENT_MASK_PAGE2: + /* send next command in sequence */ + HciReadBdAddrCmd(); + break; + + case HCI_OPCODE_READ_BD_ADDR: + /* parse and store event parameters */ + BdaCpy(hciCoreCb.bdAddr, pMsg); + HciLeReadBufSizeCmd(); + break; + + case HCI_OPCODE_LE_READ_BUF_SIZE: + /* parse and store event parameters */ + BSTREAM_TO_UINT16(hciCoreCb.bufSize, pMsg); + BSTREAM_TO_UINT8(hciCoreCb.numBufs, pMsg); + + // FixMe: The number of ACL buffer returned by the chip is + // incorrect. If more than two ACL packets are present in + // the controller, it may block the controller. + // Important: The ACL overflow event is **not** reported + // by the controller. + hciCoreCb.numBufs = 2; + + /* initialize ACL buffer accounting */ + hciCoreCb.availBufs = hciCoreCb.numBufs; + + /* send next command in sequence */ + HciLeReadSupStatesCmd(); + break; + + case HCI_OPCODE_LE_READ_SUP_STATES: + /* parse and store event parameters */ + memcpy(hciCoreCb.leStates, pMsg, HCI_LE_STATES_LEN); + + /* send next command in sequence */ + HciLeReadWhiteListSizeCmd(); + break; + + case HCI_OPCODE_LE_READ_WHITE_LIST_SIZE: + /* parse and store event parameters */ + BSTREAM_TO_UINT8(hciCoreCb.whiteListSize, pMsg); + + /* send next command in sequence */ + HciLeReadLocalSupFeatCmd(); + break; + + case HCI_OPCODE_LE_READ_LOCAL_SUP_FEAT: + /* parse and store event parameters */ + BSTREAM_TO_UINT16(hciCoreCb.leSupFeat, pMsg); + + /* send next command in sequence */ + hciCoreReadResolvingListSize(); + break; + + case HCI_OPCODE_LE_READ_RES_LIST_SIZE: + /* parse and store event parameters */ + BSTREAM_TO_UINT8(hciCoreCb.resListSize, pMsg); + + /* send next command in sequence */ + hciCoreReadMaxDataLen(); + break; + + case HCI_OPCODE_LE_READ_MAX_DATA_LEN: { + uint16_t maxTxOctets; + uint16_t maxTxTime; + + BSTREAM_TO_UINT16(maxTxOctets, pMsg); + BSTREAM_TO_UINT16(maxTxTime, pMsg); + + /* use Controller's maximum supported payload octets and packet duration times + * for transmission as Host's suggested values for maximum transmission number + * of payload octets and maximum packet transmission time for new connections. + */ + HciLeWriteDefDataLen(maxTxOctets, maxTxTime); + } break; + + case HCI_OPCODE_LE_WRITE_DEF_DATA_LEN: + if (hciCoreCb.extResetSeq) { + /* send first extended command */ + (*hciCoreCb.extResetSeq)(pMsg, opcode); + } else { + /* initialize extended parameters */ + hciCoreCb.maxAdvDataLen = 0; + hciCoreCb.numSupAdvSets = 0; + hciCoreCb.perAdvListSize = 0; + + /* send next command in sequence */ + HciLeRandCmd(); + } + break; + + case HCI_OPCODE_LE_READ_MAX_ADV_DATA_LEN: + case HCI_OPCODE_LE_READ_NUM_SUP_ADV_SETS: + case HCI_OPCODE_LE_READ_PER_ADV_LIST_SIZE: + if (hciCoreCb.extResetSeq) { + /* send next extended command in sequence */ + (*hciCoreCb.extResetSeq)(pMsg, opcode); + } + break; + + case HCI_OPCODE_LE_RAND: + /* check if need to send second rand command */ + if (randCnt < (HCI_RESET_RAND_CNT-1)) { + randCnt++; + HciLeRandCmd(); + } else { + uint8_t addr[6] = { 0 }; + memcpy(addr, pMsg, sizeof(addr)); + DM_RAND_ADDR_SET(addr, DM_RAND_ADDR_STATIC); + // note: will invoke set rand address + cordio::BLE::deviceInstance().getGap().setAddress( + BLEProtocol::AddressType::RANDOM_STATIC, + addr + ); + } + break; + + case HCI_OPCODE_LE_SET_RAND_ADDR: + /* send next command in sequence */ + signal_reset_sequence_done(); + break; + + default: + break; + } + } + } + +private: + + // send pre_brcm_patchram_buf + void prepare_service_pack_transfert(void) + { + service_pack_ptr = pre_brcm_patchram_buf; + service_pack_length = pre_brcm_patch_ram_length; + service_pack_next = &HCIDriver::start_service_pack_transfert; + service_pack_index = 0; + service_pack_transfered = false; + send_service_pack_command(); + } + + // Called once pre_brcm_patchram_buf has been transferred; send brcm_patchram_buf + void start_service_pack_transfert(void) + { + service_pack_ptr = brcm_patchram_buf; + service_pack_length = brcm_patch_ram_length; + service_pack_next = &HCIDriver::terminate_service_pack_transfert; + service_pack_index = 0; + service_pack_transfered = false; + send_service_pack_command(); + } + + // Called once post_brcm_patchram_buf has been transferred; start regular initialization. + void terminate_service_pack_transfert(void) + { + service_pack_ptr = NULL; + service_pack_length = 0; + service_pack_next = NULL; + service_pack_index = 0; + service_pack_transfered = true; + wait_ms(1000); + set_sleep_mode(); + } + + void send_service_pack_command(void) + { + uint16_t cmd_len = service_pack_ptr[service_pack_index + 2]; + uint16_t cmd_opcode = (service_pack_ptr[service_pack_index + 1] << 8) | service_pack_ptr[service_pack_index + 0]; + uint8_t *pBuf = hciCmdAlloc(cmd_opcode, cmd_len); + if (pBuf) { + memcpy(pBuf + HCI_CMD_HDR_LEN, service_pack_ptr + service_pack_index + HCI_CMD_HDR_LEN, cmd_len); + hciCmdSend(pBuf); + } else { + } + } + + void ack_service_pack_command(uint16_t opcode, uint8_t* msg) + { + uint16_t cmd_opcode = (service_pack_ptr[service_pack_index + 1] << 8) | service_pack_ptr[service_pack_index + 0]; + + if (cmd_opcode != opcode) { + // DO something in case of error + + while (true); + + } + + // update service pack index + service_pack_index += (HCI_CMD_HDR_LEN + service_pack_ptr[service_pack_index + 2]); + + if (service_pack_index < (size_t)service_pack_length) { + send_service_pack_command(); + } else { + (this->*service_pack_next)(); + } + } + + void set_sleep_mode() + { + uint8_t *pBuf; + if ((pBuf = hciCmdAlloc(HCI_VS_CMD_SET_SLEEP_MODE, 12)) != NULL) + { + pBuf[HCI_CMD_HDR_LEN] = 0x00; // no sleep moode + pBuf[HCI_CMD_HDR_LEN + 1] = 0x00; // no idle threshold host (N/A) + pBuf[HCI_CMD_HDR_LEN + 2] = 0x00; // no idle threshold HC (N/A) + pBuf[HCI_CMD_HDR_LEN + 3] = 0x00; // BT WAKE + pBuf[HCI_CMD_HDR_LEN + 4] = 0x00; // HOST WAKE + pBuf[HCI_CMD_HDR_LEN + 5] = 0x00; // Sleep during SCO + pBuf[HCI_CMD_HDR_LEN + 6] = 0x00; // Combining sleep mode and SCM + pBuf[HCI_CMD_HDR_LEN + 7] = 0x00; // Tristate TX + pBuf[HCI_CMD_HDR_LEN + 8] = 0x00; // Active connection handling on suspend + pBuf[HCI_CMD_HDR_LEN + 9] = 0x00; // resume timeout + pBuf[HCI_CMD_HDR_LEN + 10] = 0x00; // break to host + pBuf[HCI_CMD_HDR_LEN + 10] = 0x00; // Pulsed host wake + hciCmdSend(pBuf); + } + } + + static const uint16_t HCI_OPCODE_WRITE_LE_HOST_SUPPORT = 0x0C6D; + + void HciWriteLeHostSupport() + { + uint8_t *pBuf; + if ((pBuf = hciCmdAlloc(HCI_OPCODE_WRITE_LE_HOST_SUPPORT, 2)) != NULL) + { + pBuf[HCI_CMD_HDR_LEN] = 0x01; + pBuf[HCI_CMD_HDR_LEN + 1] = 0x00; + hciCmdSend(pBuf); + } + } + + void hciCoreReadResolvingListSize(void) + { + /* if LL Privacy is supported by Controller and included */ + if ((hciCoreCb.leSupFeat & HCI_LE_SUP_FEAT_PRIVACY) && + (hciLeSupFeatCfg & HCI_LE_SUP_FEAT_PRIVACY)) + { + /* send next command in sequence */ + HciLeReadResolvingListSize(); + } + else + { + hciCoreCb.resListSize = 0; + + /* send next command in sequence */ + hciCoreReadMaxDataLen(); + } + } + + void hciCoreReadMaxDataLen(void) + { + /* if LE Data Packet Length Extensions is supported by Controller and included */ + if ((hciCoreCb.leSupFeat & HCI_LE_SUP_FEAT_DATA_LEN_EXT) && + (hciLeSupFeatCfg & HCI_LE_SUP_FEAT_DATA_LEN_EXT)) + { + /* send next command in sequence */ + HciLeReadMaxDataLen(); + } + else + { + /* send next command in sequence */ + HciLeRandCmd(); + } + } + + PinName bt_host_wake_name; + PinName bt_device_wake_name; + PinName bt_power_name; + DigitalInOut bt_host_wake; + DigitalInOut bt_device_wake; + DigitalInOut bt_power; + size_t service_pack_index; + const uint8_t* service_pack_ptr; + int service_pack_length; + void (HCIDriver::*service_pack_next)(); + bool service_pack_transfered; + +}; + +} // namespace cypress +} // namespace vendor +} // namespace ble + +ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver() { + static ble::vendor::cordio::H4TransportDriver transport_driver( + /* TX */ CY_BT_UART_TX, /* RX */ CY_BT_UART_RX, + /* cts */ CY_BT_UART_CTS, /* rts */ CY_BT_UART_RTS, 115200 + ); + static ble::vendor::cypress::HCIDriver hci_driver( + transport_driver, /* host wake */ CY_BT_PIN_HOST_WAKE, + /* device wake */ CY_BT_PIN_DEVICE_WAKE, /* bt_power */ CY_BT_PIN_POWER + ); + return hci_driver; +} diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.cpp index 7f8be870f40..4a00372add6 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.cpp @@ -56,7 +56,11 @@ using namespace ble::vendor::nordic; using namespace ble::vendor::cordio; /*! \brief Memory that should be reserved for the stack. */ +#if defined(NRF52840_XXAA) #define CORDIO_LL_MEMORY_FOOTPRINT 41906UL +#else +#define CORDIO_LL_MEMORY_FOOTPRINT 12768UL +#endif /*! \brief Typical implementation revision number (LlRtCfg_t::implRev). */ #define LL_IMPL_REV 0x2303 @@ -107,7 +111,11 @@ const LlRtCfg_t NRFCordioHCIDriver::_ll_cfg = { /*maxScanReqRcvdEvt*/ 4, /*maxExtScanDataLen*/ advDataLen, /* Connection */ + #if defined(NRF52840_XXAA) /*maxConn*/ 4, + #else + /*maxConn*/ 2, + #endif /*numTxBufs*/ numTxBufs, /*numRxBufs*/ numRxBufs, /*maxAclLen*/ connDataLen, @@ -117,7 +125,11 @@ const LlRtCfg_t NRFCordioHCIDriver::_ll_cfg = { /*dtmRxSyncMs*/ 10000, /* PHY */ /*phy2mSup*/ TRUE, + #if defined(NRF52840_XXAA) /*phyCodedSup*/ TRUE, + #else + /*phyCodedSup*/ FALSE, + #endif /*stableModIdxTxSup*/ TRUE, /*stableModIdxRxSup*/ TRUE }; @@ -184,7 +196,11 @@ NRFCordioHCIDriver::~NRFCordioHCIDriver() ble::vendor::cordio::buf_pool_desc_t NRFCordioHCIDriver::get_buffer_pool_description() { static union { + #if defined(NRF52840_XXAA) uint8_t buffer[ 17304 ]; + #else + uint8_t buffer[ 8920 ]; + #endif uint64_t align; }; static const wsfBufPoolDesc_t pool_desc[] = { @@ -297,6 +313,21 @@ void NRFCordioHCIDriver::start_reset_sequence() CordioHCIDriver::start_reset_sequence(); } +bool NRFCordioHCIDriver::get_random_static_address(ble::address_t& address) +{ + /* Load address from nRF configuration. */ + uint64_t devAddr = (((uint64_t)NRF_FICR->DEVICEADDR[0]) << 0) | + (((uint64_t)NRF_FICR->DEVICEADDR[1]) << 32); + + for (size_t i = 0; i < address.size(); ++i) { + address[i] = devAddr >> (i * 8); + } + + address[5] |= 0xC0; /* cf. "Static Address" (Vol C, Part 3, section 10.8.1) */ + return true; +} + + ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver() { static NRFCordioHCITransportDriver transport_driver; @@ -328,6 +359,4 @@ void PlatformLoadBdAddress(uint8_t *pDevAddr) pDevAddr[i] = devAddr >> (i * 8); i++; } - - pDevAddr[5] |= 0xC0; /* cf. "Static Address" (Vol C, Part 3, section 10.8.1) */ } diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.h b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.h index 2efed9d3150..0904d2bd223 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.h +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/NRFCordioHCIDriver.h @@ -59,6 +59,11 @@ class NRFCordioHCIDriver : public cordio::CordioHCIDriver { */ //virtual void handle_reset_sequence(uint8_t *msg); + /** + * @copydoc cordio::CordioHCIDriver::get_random_static_address + */ + virtual bool get_random_static_address(ble::address_t& address); + private: /** * Initialize the chip. diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack_nordic.ar b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack_nordic.ar new file mode 100644 index 00000000000..c93315299dd Binary files /dev/null and b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_ARM_STD/libcordio_stack_nordic.ar differ diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack_nordic.a b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack_nordic.a new file mode 100644 index 00000000000..cc419830f52 Binary files /dev/null and b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_GCC_ARM/libcordio_stack_nordic.a differ diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_IAR/libcordio_stack_nordic.a b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_IAR/libcordio_stack_nordic.a new file mode 100644 index 00000000000..09d78b770c5 Binary files /dev/null and b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/TOOLCHAIN_IAR/libcordio_stack_nordic.a differ diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/libcordio_stack_nordic.a b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/libcordio_stack_nordic.a deleted file mode 100644 index 21e4f37621d..00000000000 Binary files a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/cordio_stack/libcordio_stack_nordic.a and /dev/null differ diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/mbed_lib.json b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/mbed_lib.json index 294475c2b8c..0b8ebca698f 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/mbed_lib.json +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/mbed_lib.json @@ -1,6 +1,6 @@ { "name": "cordio-nordic-ll", "macros": [ - "INIT_BROADCASTER", "INIT_OBSERVER", "INIT_CENTRAL", "INIT_PERIPHERAL", "INIT_ENCRYPTED", "LHCI_ENABLE_VS=0", "BB_CLK_RATE_HZ=32768" + "INIT_BROADCASTER", "INIT_OBSERVER", "INIT_CENTRAL", "INIT_PERIPHERAL", "INIT_ENCRYPTED", "LHCI_ENABLE_VS=0", "BB_CLK_RATE_HZ=1000000" ] } diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/module.json b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/module.json deleted file mode 100644 index b45b894f0e4..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/module.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "ble-nrf51822", - "version": "2.7.1", - "description": "Nordic stack and drivers for the mbed BLE API.", - "keywords": [ - "Bluetooth", - "BLE", - "mbed", - "mbed-official" - ], - "author": "Rohit Grover", - "repository": { - "url": "git@github.com:ARMmbed/ble-nRF51822.git", - "type": "git" - }, - "homepage": "https://developer.mbed.org/teams/Nordic-Semiconductor/", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - }, - { - "type": "LicenseRef-softdevice_nrf51822_licence_agreement.txt" - } - ], - "dependencies": { - "ble": "^2.6.0", - "nrf51-sdk": "^2.4.0" - }, - "extraIncludes": [ - "source/btle", - "source/btle/custom", - "source/common" - ], - "targetDependencies": {} -} diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/sdk/module.json b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/sdk/module.json deleted file mode 100644 index 3f2618f07cb..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/sdk/module.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "nrf51-sdk", - "version": "2.4.0", - "description": "Module to contain files provided by the nordic nRF51 SDK", - "keywords": [ - "nordic", - "nrf51", - "sdk" - ], - "author": "", - "repository": { - "url": "git@github.com:ARMmbed/nrf51-sdk.git", - "type": "git" - }, - "license": "nordic", - "targetDependencies": { - "mbed-classic": { - "mbed-classic": "~0.0.1" - }, - "mbed-os": { - "mbed-drivers": "*" - } - }, - "extraIncludes": [ - "source/nordic_sdk/components/ble/ble_radio_notification", - "source/nordic_sdk/components/ble/ble_services/ble_dfu", - "source/nordic_sdk/components/ble/common", - "source/nordic_sdk/components/ble/device_manager", - "source/nordic_sdk/components/ble/device_manager/config", - "source/nordic_sdk/components/ble/peer_manager", - "source/nordic_sdk/components/device", - "source/nordic_sdk/components/drivers_nrf/ble_flash", - "source/nordic_sdk/components/drivers_nrf/delay", - "source/nordic_sdk/components/drivers_nrf/hal", - "source/nordic_sdk/components/drivers_nrf/pstorage", - "source/nordic_sdk/components/drivers_nrf/pstorage/config", - "source/nordic_sdk/components/libraries/bootloader_dfu", - "source/nordic_sdk/components/libraries/bootloader_dfu/hci_transport", - "source/nordic_sdk/components/libraries/crc16", - "source/nordic_sdk/components/libraries/hci", - "source/nordic_sdk/components/libraries/scheduler", - "source/nordic_sdk/components/libraries/timer", - "source/nordic_sdk/components/libraries/util", - "source/nordic_sdk/components/libraries/fds", - "source/nordic_sdk/components/libraries/fstorage", - "source/nordic_sdk/components/libraries/experimental_section_vars", - "source/nordic_sdk/components/softdevice/common/softdevice_handler", - "source/nordic_sdk/components/softdevice/s130/headers", - "source/nordic_sdk/components/toolchain" - ] -} diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/module.json b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/module.json deleted file mode 100644 index b45b894f0e4..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/module.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "ble-nrf51822", - "version": "2.7.1", - "description": "Nordic stack and drivers for the mbed BLE API.", - "keywords": [ - "Bluetooth", - "BLE", - "mbed", - "mbed-official" - ], - "author": "Rohit Grover", - "repository": { - "url": "git@github.com:ARMmbed/ble-nRF51822.git", - "type": "git" - }, - "homepage": "https://developer.mbed.org/teams/Nordic-Semiconductor/", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - }, - { - "type": "LicenseRef-softdevice_nrf51822_licence_agreement.txt" - } - ], - "dependencies": { - "ble": "^2.6.0", - "nrf51-sdk": "^2.4.0" - }, - "extraIncludes": [ - "source/btle", - "source/btle/custom", - "source/common" - ], - "targetDependencies": {} -} diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.cpp index 4963145059b..619e199896d 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.cpp @@ -664,6 +664,7 @@ void nRF5xGattServer::hwCallback(const ble_evt_t *p_ble_evt) * set to AUTH_CALLBACK_REPLY_SUCCESS if the client * request is to proceed. */ }; + characteristicIndex = resolveValueHandleToCharIndex(req->attr_handle); uint16_t write_authorization = p_characteristics[characteristicIndex]->authorizeWrite(&cbParams); // the user code didn't provide the write authorization, diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/module.json b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/module.json deleted file mode 100644 index b45b894f0e4..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/module.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "ble-nrf51822", - "version": "2.7.1", - "description": "Nordic stack and drivers for the mbed BLE API.", - "keywords": [ - "Bluetooth", - "BLE", - "mbed", - "mbed-official" - ], - "author": "Rohit Grover", - "repository": { - "url": "git@github.com:ARMmbed/ble-nRF51822.git", - "type": "git" - }, - "homepage": "https://developer.mbed.org/teams/Nordic-Semiconductor/", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - }, - { - "type": "LicenseRef-softdevice_nrf51822_licence_agreement.txt" - } - ], - "dependencies": { - "ble": "^2.6.0", - "nrf51-sdk": "^2.4.0" - }, - "extraIncludes": [ - "source/btle", - "source/btle/custom", - "source/common" - ], - "targetDependencies": {} -} diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/btle/btle.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/btle/btle.cpp index cf7836a8eef..962ddef9b7b 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/btle/btle.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/btle/btle.cpp @@ -112,7 +112,6 @@ static uint32_t signalEvent() error_t btle_init(void) { - nrf_clock_lf_cfg_t clockConfiguration; ret_code_t err_code; // register softdevice handler vector @@ -122,6 +121,7 @@ error_t btle_init(void) err_code = nrf_sdh_enable_request(); ASSERT_STATUS(err_code); #else + nrf_clock_lf_cfg_t clockConfiguration; // Configure the LF clock according to values provided by btle_clock.h. // It is input from the chain of the yotta configuration system. clockConfiguration.source = LFCLK_CONF_SOURCE; @@ -355,9 +355,10 @@ void btle_handler(const ble_evt_t *p_ble_evt) uint8_t const data_length_peer = p_gap_evt->params.data_length_update_request.peer_params.max_tx_octets; - const uint8_t max_data_length = NRF_SDH_BLE_GATT_MAX_MTU_SIZE + 4 /* L2CAP header size */; - - uint8_t const data_length = MIN(max_data_length, data_length_peer); + uint8_t const data_length = MIN( + NRF_SDH_BLE_GATT_MAX_MTU_SIZE + 4 /* L2CAP header size */, + data_length_peer + ); ble_gap_data_length_params_t const dlp = { diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGap.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGap.cpp index 5c343eafa52..9b2ef6ee4a4 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGap.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGap.cpp @@ -115,6 +115,23 @@ peer_address_type_t convert_identity_address(advertising_peer_address_type_t add } } +ble::phy_t convert_phy(uint8_t nordic_phy) +{ + switch(nordic_phy) { + case BLE_GAP_PHY_1MBPS: + return ble::phy_t::LE_1M; + + case BLE_GAP_PHY_2MBPS: + return ble::phy_t::LE_2M; + + case BLE_GAP_PHY_CODED: + return ble::phy_t::LE_CODED; + + default: + return ble::phy_t::NONE; + } +} + // FIXME: update when SD 5 (not alpha!) or more is used for 52840. #ifndef BLE_GAP_PHY_AUTO #define BLE_GAP_PHY_AUTO 0 @@ -1630,8 +1647,8 @@ void nRF5xGap::on_phy_update( _eventHandler->onPhyUpdateComplete( status, connection, - Phy_t::LE_1M, - Phy_t::LE_1M + convert_phy(evt.tx_phy), + convert_phy(evt.rx_phy) ); } diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.cpp index 8c93ac118cf..821ee59e547 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.cpp @@ -670,6 +670,7 @@ void nRF5xGattServer::hwCallback(const ble_evt_t *p_ble_evt) * set to AUTH_CALLBACK_REPLY_SUCCESS if the client * request is to proceed. */ }; + characteristicIndex = resolveValueHandleToCharIndex(req->attr_handle); uint16_t write_authorization = p_characteristics[characteristicIndex]->authorizeWrite(&cbParams); // the user code didn't provide the write authorization, diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.cpp b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.cpp index a1d6b1e7e90..78904d33120 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.cpp +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.cpp @@ -15,6 +15,7 @@ */ #include +#include "platform/mbed_assert.h" #include "nRF5xPalSecurityManager.h" #include "nRF5xn.h" #include "ble/Gap.h" @@ -80,11 +81,6 @@ struct nRF5xSecurityManager::pairing_control_block_t { ble_gap_id_key_t peer_id_key; ble_gap_sign_info_t peer_sign_key; ble_gap_lesc_p256_pk_t peer_pk; - - // flag required to help DHKey computation/process; should be removed with - // later versions of the softdevice - uint8_t own_oob:1; - uint8_t peer_oob:1; }; nRF5xSecurityManager::nRF5xSecurityManager() @@ -111,15 +107,17 @@ nRF5xSecurityManager::~nRF5xSecurityManager() ble_error_t nRF5xSecurityManager::initialize() { #if defined(MBEDTLS_ECDH_C) - if (_crypto.generate_keys( + // Note: we do not use the object on the stack as the CryptoToolbox is quite large + // Please do not change or we risk a stack overflow. + CryptoToolbox* crypto = new CryptoToolbox(); + bool success = crypto->generate_keys( make_ArrayView(X), make_ArrayView(Y), make_ArrayView(secret) - )) { - return BLE_ERROR_NONE; - } + ); + delete crypto; - return BLE_ERROR_INTERNAL_STACK_FAILURE; + return success ? BLE_ERROR_NONE : BLE_ERROR_INTERNAL_STACK_FAILURE; #endif return BLE_ERROR_NONE; } @@ -662,26 +660,37 @@ ble_error_t nRF5xSecurityManager::secure_connections_oob_request_reply( const oob_lesc_value_t &peer_random, const oob_confirm_t &peer_confirm ) { + bool have_oob_own; + bool have_oob_peer; + const oob_lesc_value_t zerokey; + ble_gap_lesc_oob_data_t oob_own; + ble_gap_lesc_oob_data_t oob_peer; + pairing_control_block_t* pairing_cb = get_pairing_cb(connection); if (!pairing_cb) { return BLE_ERROR_INVALID_STATE; } - ble_gap_lesc_oob_data_t oob_own; - ble_gap_lesc_oob_data_t oob_peer; - - // is own address important ? - memcpy(oob_own.r, local_random.data(), local_random.size()); - // FIXME: What to do with local confirm ??? + have_oob_own = false; + if (local_random != zerokey) { + have_oob_own = true; + // is own address important ? + memcpy(oob_own.r, local_random.data(), local_random.size()); + // FIXME: What to do with local confirm ??? + } - // is peer address important ? - memcpy(oob_peer.r, peer_random.data(), peer_random.size()); - memcpy(oob_peer.c, peer_confirm.data(), peer_confirm.size()); + have_oob_peer = false; + if (peer_random != zerokey && peer_confirm != zerokey) { + have_oob_peer = true; + // is peer address important ? + memcpy(oob_peer.r, peer_random.data(), peer_random.size()); + memcpy(oob_peer.c, peer_confirm.data(), peer_confirm.size()); + } uint32_t err = sd_ble_gap_lesc_oob_data_set( connection, - pairing_cb->own_oob ? &oob_own : NULL, - pairing_cb->peer_oob ? &oob_peer : NULL + have_oob_own ? &oob_own : NULL, + have_oob_peer ? &oob_peer : NULL ); return convert_sd_error(err); @@ -734,7 +743,9 @@ ble_error_t nRF5xSecurityManager::generate_secure_connections_oob() ble_gap_lesc_p256_pk_t own_secret; ble_gap_lesc_oob_data_t oob_data; - memcpy(own_secret.pk, secret.data(), secret.size()); + MBED_ASSERT(sizeof(own_secret.pk) >= X.size() + Y.size()); + memcpy(own_secret.pk, X.data(), X.size()); + memcpy(own_secret.pk + X.size(), Y.data(), Y.size()); uint32_t err = sd_ble_gap_lesc_oob_data_get( BLE_CONN_HANDLE_INVALID, @@ -934,12 +945,16 @@ bool nRF5xSecurityManager::sm_handler(const ble_evt_t *evt) static const size_t key_size = public_key_coord_t::size_; ble_gap_lesc_dhkey_t shared_secret; - _crypto.generate_shared_secret( + // Allocated on the heap to reduce stack pressure. + // Risk stack overflows if allocated on stack. + CryptoToolbox* crypto = new CryptoToolbox(); + crypto->generate_shared_secret( make_const_ArrayView(dhkey_request.p_pk_peer->pk), make_const_ArrayView(dhkey_request.p_pk_peer->pk + key_size), make_const_ArrayView(secret), shared_secret.key ); + delete crypto; sd_ble_gap_lesc_dhkey_reply(connection, &shared_secret); diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.h b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.h index 30ac7e20cce..b5a55d9dc04 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.h +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xPalSecurityManager.h @@ -360,7 +360,6 @@ class nRF5xSecurityManager : public ::ble::pal::SecurityManager { pairing_control_block_t* _control_blocks; #if defined(MBEDTLS_ECDH_C) - CryptoToolbox _crypto; ble::public_key_coord_t X; ble::public_key_coord_t Y; ble::public_key_coord_t secret; diff --git a/features/FEATURE_BLE/targets/TARGET_CYW4343X/HCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_STM/TARGET_CYW4343X/HCIDriver.cpp similarity index 98% rename from features/FEATURE_BLE/targets/TARGET_CYW4343X/HCIDriver.cpp rename to features/FEATURE_BLE/targets/TARGET_STM/TARGET_CYW4343X/HCIDriver.cpp index 532594e3fbd..545889c914f 100644 --- a/features/FEATURE_BLE/targets/TARGET_CYW4343X/HCIDriver.cpp +++ b/features/FEATURE_BLE/targets/TARGET_STM/TARGET_CYW4343X/HCIDriver.cpp @@ -84,6 +84,12 @@ class HCIDriver : public cordio::CordioHCIDriver { service_pack_transfered(false) { } + virtual cordio::buf_pool_desc_t get_buffer_pool_description() + { + // Use default buffer pool + return cordio::CordioHCIDriver::get_default_buffer_pool_description(); + } + virtual void do_initialize() { output_mode(bt_host_wake_name, 1); diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/LICENSE b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/LICENSE new file mode 100644 index 00000000000..591ac296153 --- /dev/null +++ b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/LICENSE @@ -0,0 +1,49 @@ +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed-bootloader-sdt64b-block_device-sotp-v3_3_0.bin b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed-bootloader-sdt64b-block_device-sotp-v3_3_0.bin new file mode 100644 index 00000000000..be0a42a4872 Binary files /dev/null and b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed-bootloader-sdt64b-block_device-sotp-v3_3_0.bin differ diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed_lib.json b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed_lib.json new file mode 100644 index 00000000000..8a84f800a84 --- /dev/null +++ b/features/FEATURE_BOOTLOADER/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_SDT64B/mbed_lib.json @@ -0,0 +1,10 @@ +{ + "name": "bootloader_SDT64B", + "target_overrides": { + "*": { + "target.app_offset": "0xa400", + "target.header_offset": "0xa000", + "target.bootloader_img": "mbed-bootloader-sdt64b-block_device-sotp-v3_3_0.bin" + } + } +} diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/LICENSE b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/LICENSE new file mode 100644 index 00000000000..591ac296153 --- /dev/null +++ b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/LICENSE @@ -0,0 +1,49 @@ +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed-bootloader-nucleo_f439zi-block_device-sotp-v3_4_0.bin b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed-bootloader-nucleo_f439zi-block_device-sotp-v3_4_0.bin new file mode 100644 index 00000000000..27b7049bc1f Binary files /dev/null and b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed-bootloader-nucleo_f439zi-block_device-sotp-v3_4_0.bin differ diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed_lib.json b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed_lib.json new file mode 100644 index 00000000000..d5bd34e1775 --- /dev/null +++ b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_NUCLEO_F439ZI/mbed_lib.json @@ -0,0 +1,10 @@ +{ + "name": "bootloader_NUCLEO_F439ZI", + "target_overrides": { + "*": { + "target.app_offset": "0x10400", + "target.header_offset": "0x10000", + "target.bootloader_img": "mbed-bootloader-nucleo_f439zi-block_device-sotp-v3_4_0.bin" + } + } +} diff --git a/features/cellular/.mbedignore b/features/cellular/.mbedignore deleted file mode 100644 index e28badb677d..00000000000 --- a/features/cellular/.mbedignore +++ /dev/null @@ -1 +0,0 @@ -UNITTESTS/* diff --git a/features/cellular/Makefile.test b/features/cellular/Makefile.test deleted file mode 100644 index 18f0a75bdd8..00000000000 --- a/features/cellular/Makefile.test +++ /dev/null @@ -1,56 +0,0 @@ -# -# Makefile.test for CIot library unit tests -# - - -# List of subdirectories to build -TEST_FOLDER_NAME := UNITTESTS -TEST_FOLDER := ./UNITTESTS/ -# List of unit test directories for libraries -UNITTESTS := $(sort $(dir $(wildcard $(TEST_FOLDER)*))) -TESTDIRS := $(UNITTESTS:%=build-%) -CLEANTESTDIRS := $(UNITTESTS:%=clean-%) -COVERAGEFILE := ./lcov/coverage.info - -.PHONY: test -test: $(TESTDIRS) - @rm -rf ./lcov - @rm -rf ./coverage - @mkdir -p lcov - @mkdir -p lcov/results - @mkdir coverage - @find $(TEST_FOLDER) -name '*.xml' | xargs cp -t ./lcov/results/ - @rm -f lcov/index.xml - @./xsl_script.sh - @cp junit_xsl.xslt lcov/. - @xsltproc -o lcov/testresults.html lcov/junit_xsl.xslt lcov/index.xml - @rm -f lcov/junit_xsl.xslt - @rm -f lcov/index.xml - @find ./ -name '*.gcno' | xargs cp --backup=numbered -t ./coverage/ - @find ./ -name '*.gcda' | xargs cp --backup=numbered -t ./coverage/ - @gcovr --object-directory ./coverage --exclude-unreachable-branches -e '.*/builds/.*' -e '.*/$(TEST_FOLDER_NAME)/.*' -e '.*/yotta_modules/.*' -e '.*/stubs/.*' -e '.*/mbed-coap/.*' -x -o ./lcov/gcovr.xml - @lcov -d $(TEST_FOLDER_NAME)/. -c -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/usr*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/$(TEST_FOLDER_NAME)*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/mbed-client-libservice*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/mbed-client*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/mbed-os/events*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/mbed-os/features/netsocket*" -o $(COVERAGEFILE) - @lcov -q -r $(COVERAGEFILE) "/mbed-os/platform*" -o $(COVERAGEFILE) - @genhtml -q $(COVERAGEFILE) --output-directory lcov/html - @echo mbed-ciot module unit tests built - -$(TESTDIRS): - @make -C $(@:build-%=%) - -$(CLEANDIRS): - @make -C $(@:clean-%=%) clean - -$(CLEANTESTDIRS): - @make -C $(@:clean-%=%) clean - -# Extend default clean rule -clean: clean-extra - -clean-extra: $(CLEANDIRS) \ - $(CLEANTESTDIRS) diff --git a/features/cellular/README.md b/features/cellular/README.md index a69b2cfa12d..97f1ba0b140 100644 --- a/features/cellular/README.md +++ b/features/cellular/README.md @@ -2,26 +2,21 @@ This is the Github repo for Mbed cellular connectivity: - easy_cellular/ - EasyCellularConnection Simplified cellular usage based on `CellularBase.h` - CellularConnectionUtil A utility class for cellular connection - framework/ API Application Programming Interface for cellular connectivity AT AT implementation based on 3GPP TS 27.007 specification common Common and utility sources + device Implementation of cellular device and state machine targets Vendor specific cellular module adaptations TESTS Cellular Greentea test - UNITTESTS Cellular unit test +**Note:** Application developers should use only the `API` folder. ## Known limitations **Please note that this is a first release of Cellular framework and is subject to further development in future.** -Only UDP is supported when using AT commands to control sockets in an IP stack built into the cellular modem. If TCP is required, use the PPP/LWIP stack. - ## Supported modules You can find currently supported cellular modules in the `framework/targets/` folder, where we also add support for new cellular modules. @@ -30,57 +25,41 @@ You can find currently supported cellular modules in the `framework/targets/` fo You can change cellular defaults in the `mbed_lib.json` configuration file. -You can also override cellular defaults in the `mbed_app.json` configuration file: - - "config": { - "cellular_plmn": { - "help": "PLMN selection, 0=auto", - "value": 0 - }, - "apn": { - "help": "Access point name, e.g. internet", - "value": "\"internet\"" - }, - "cellular_sim_pin": { - "help": "PIN code", - "value": "\"1234\"" - } - } - ## Debug traces You can define the debug tracing level in the `mbed_app.json` configuration file: - - "target_overrides": { - "*": { - "mbed-trace.enable": true, - "platform.stdio-convert-newlines": true, - "platform.stdio-baud-rate": 115200, - "platform.default-serial-baud-rate": 115200 - } - }, - "config": { - "trace-level": { - "help": "Options are TRACE_LEVEL_ERROR,TRACE_LEVEL_WARN,TRACE_LEVEL_INFO,TRACE_LEVEL_DEBUG", - "macro_name": "MBED_TRACE_MAX_LEVEL", - "value": "TRACE_LEVEL_INFO" - } +``` +"target_overrides": { + "*": { + "mbed-trace.enable": true, + "platform.stdio-convert-newlines": true, + "platform.stdio-baud-rate": 115200, + "platform.default-serial-baud-rate": 115200 + } +}, +"config": { + "trace-level": { + "help": "Options are TRACE_LEVEL_ERROR,TRACE_LEVEL_WARN,TRACE_LEVEL_INFO,TRACE_LEVEL_DEBUG", + "macro_name": "MBED_TRACE_MAX_LEVEL", + "value": "TRACE_LEVEL_INFO" } +} +``` ## Greentea tests -The `TESTS` folder contains Greentea tests for cellular specific classes. You need to give relevant configuration file with `--app-config` parameter, e.g.: +The `TESTS` folder contains Greentea tests for cellular specific classes. You need to give relevant configuration file with `--app-config` parameter, such as: - mbed test -n features-cellular-tests-* --app-config features\cellular\TESTS\socket\udp\template_mbed_app.json.txt -v +``` +mbed test -n features-cellular-tests-* --app-config features\cellular\TESTS\socket\udp\template_mbed_app.json.txt -v +``` - Note that Greentea tests use SIM PIN so you need to change that or your SIM card may get locked. +**Note:** Greentea tests use SIM PIN, so you need to change that or your SIM card may get locked. ## Unit tests -The `UNITTESTS` folder contains unit tests for cellular specific classes. Unit tests are based on the stubbing method. - -You can run those tests locally by running `./run_tests` script under the `UNITTESTS/` folder. +Cellular unit tests are in Mbed OS root `UNITTESTS`. Unit tests are based on the stubbing method. You need the following applications: `cpputest`, `gcov` and `lcov` (genhtml) for running the tests. -After you have run the `run_tests` script, you can find test results under `UNITTESTS/results` folder and line and function coverages under the `UNITTESTS/coverages` folder. +After you run the `run_tests` script, you can find test results in `UNITTESTS/results`, and line and function coverages in `UNITTESTS/coverages`. diff --git a/features/cellular/framework/API/CellularContext.h b/features/cellular/framework/API/CellularContext.h index 9107d585e6c..44bd4ec5816 100644 --- a/features/cellular/framework/API/CellularContext.h +++ b/features/cellular/framework/API/CellularContext.h @@ -22,6 +22,12 @@ namespace mbed { +/** + * @addtogroup cellular + * @{ + */ + +/// CellularContext is CellularBase/NetworkInterface with extensions for cellular connectivity class CellularContext : public CellularBase { public: @@ -50,7 +56,7 @@ class CellularContext : public CellularBase { Week }; - /* PDP Context information */ + /// PDP Context information struct pdpcontext_params_t { char apn[MAX_ACCESSPOINT_NAME_LENGTH + 1]; char local_addr[MAX_IPV6_ADDR_IN_IPV4LIKE_DOTTED_FORMAT + 1]; @@ -98,7 +104,7 @@ class CellularContext : public CellularBase { // pointer for next item when used as a linked list CellularContext *_next; protected: - // friend of CellularDevice so that it's the only way to close/delete this class. + // friend of CellularDevice, so it's the only way to close or delete this class. friend class CellularDevice; virtual ~CellularContext() {} @@ -106,6 +112,16 @@ class CellularContext : public CellularBase { virtual nsapi_error_t set_blocking(bool blocking) = 0; virtual NetworkStack *get_stack() = 0; virtual const char *get_ip_address() = 0; + + /** Register callback for status reporting. + * + * The specified status callback function is called on the network, and the cellular device status changes. + * The parameters on the callback are the event type and event type dependent reason parameter. + * + * @remark deleting CellularDevice/CellularContext in callback is not allowed. + * + * @param status_cb The callback for status changes. + */ virtual void attach(mbed::Callback status_cb) = 0; virtual nsapi_error_t connect() = 0; virtual nsapi_error_t disconnect() = 0; @@ -122,13 +138,13 @@ class CellularContext : public CellularBase { static CellularContext *get_default_instance(); -// Operations, can be sync/async. Also Connect() is this kind of operations, inherited from NetworkInterface above. +// Operations, can be sync/async. Also Connect() is this kind of operation, inherited from NetworkInterface above. /** Start the interface * - * Power on the device and does the initializations for communication with the modem.. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with + * Powers on the device and does the initializations for communication with the modem. + * By default, this API is synchronous. API can be set to asynchronous with method set_blocking(...). + * In synchronous and asynchronous mode, the application can get result in from callback, which is set with * attach(...) * * @return NSAPI_ERROR_OK on success @@ -138,9 +154,9 @@ class CellularContext : public CellularBase { /** Start the interface * - * Attempts to open the sim. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with + * Attempts to open the SIM. + * By default, this API is synchronous. API can be set to asynchronous with method set_blocking(...). + * In synchronous and asynchronous mode, the application can get result in from callback, which is set with * attach(...) * * @return NSAPI_ERROR_OK on success @@ -151,8 +167,8 @@ class CellularContext : public CellularBase { /** Start the interface * * Attempts to register the device to cellular network. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with + * By default, this API is synchronous. API can be set to asynchronous with method set_blocking(...). + * In synchronous and asynchronous mode, the application can get result in from callback, which is set with * attach(...) * * @return NSAPI_ERROR_OK on success @@ -163,8 +179,8 @@ class CellularContext : public CellularBase { /** Start the interface * * Attempts to attach the device to cellular network. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with + * By default, this API is synchronous. API can be set to asynchronous with method set_blocking(...). + * In synchronous and asynchronous mode, the application can get result in from callback, which is set with * attach(...) * * @return NSAPI_ERROR_OK on success @@ -186,7 +202,7 @@ class CellularContext : public CellularBase { virtual nsapi_error_t get_rate_control(CellularContext::RateControlExceptionReports &reports, CellularContext::RateControlUplinkTimeUnit &time_unit, int &uplink_rate) = 0; - /** Get the relevant information for an active non secondary PDP context. + /** Get the relevant information for an active nonsecondary PDP context. * * @remark optional params are not updated if not received from network. * @param params_list reference to linked list, which is filled on successful call @@ -205,7 +221,7 @@ class CellularContext : public CellularBase { */ virtual nsapi_error_t get_apn_backoff_timer(int &backoff_timer) = 0; - /** Set the file handle used to communicate with the modem. Can be used to change default file handle. + /** Set the file handle used to communicate with the modem. You can use this to change the default file handle. * * @param fh file handle for communicating with the modem */ @@ -222,8 +238,7 @@ class CellularContext : public CellularBase { OP_MAX = 5 }; - /** Status callback function will be called on status changes on the network or CellularDevice - * by the CellularDevice. + /** The CellularDevice calls the status callback function on status changes on the network or CellularDevice. * * @param ev event type * @param ptr event-type dependent reason parameter @@ -246,6 +261,10 @@ class CellularContext : public CellularBase { const char *_pwd; }; +/** + * @} + */ + } // namespace mbed diff --git a/features/cellular/framework/API/CellularDevice.h b/features/cellular/framework/API/CellularDevice.h index 4dc952f8638..61a40a3e929 100644 --- a/features/cellular/framework/API/CellularDevice.h +++ b/features/cellular/framework/API/CellularDevice.h @@ -20,6 +20,7 @@ #include "CellularTargets.h" #include "CellularStateMachine.h" +#include "Callback.h" namespace mbed { @@ -34,17 +35,22 @@ class FileHandle; const int MAX_PIN_SIZE = 8; const int MAX_PLMN_SIZE = 16; +/** + * @addtogroup cellular + * @{ + */ + /** * Class CellularDevice * * An abstract interface that defines opening and closing of cellular interfaces. - * Deleting/Closing of opened interfaces can be done only via this class. + * You can delete or close opened interfaces only through this class. */ class CellularDevice { public: - /** Return singleton instance of CellularDevice if CELLULAR_DEVICE is defined. If CELLULAR_DEVICE is not - * defined then returns NULL. Implementation is marked as weak. + /** Returns singleton instance of CellularDevice if CELLULAR_DEVICE is defined. If CELLULAR_DEVICE is not + * defined, then it returns NULL. Implementation is marked as weak. * * @return CellularDevice* instance if any */ @@ -62,7 +68,7 @@ class CellularDevice { /** Creates a new CellularContext interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @param apn access point to use with context, can be null. * @@ -94,8 +100,8 @@ class CellularDevice { void set_sim_pin(const char *sim_pin); /** Plmn to use when registering to cellular network. - * If plmn is set then registering is forced to this plmn. If plmn is not set then automatic - * registering is used when registering to a cellular network. Does not start any operations. + * If plmn is set, then registering is forced to this plmn. If plmn is not set, then automatic + * registering is used when registering to a cellular network. It doesn't start any operations. * * @param plmn plmn used when registering to cellular network */ @@ -103,10 +109,9 @@ class CellularDevice { /** Start the interface * - * Power on the device and does the initializations for communication with the modem.. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with - * attach(...) + * Powers on the device and does the initializations for communication with the modem. + * API is asynchronous. Application can get results from CellularContext callback, which is set + * with attach(...), or callback, which is set by attach(...), in this class. * * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_NO_MEMORY on case of memory failure @@ -116,9 +121,8 @@ class CellularDevice { /** Start the interface * * Attempts to open the sim. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with - * attach(...) + * API is asynchronous. Application can get results from CellularContext callback, which is set + * with attach(...), or callback, which is set by attach(...), in this class. * * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_NO_MEMORY on case of memory failure @@ -128,9 +132,8 @@ class CellularDevice { /** Start the interface * * Attempts to register the device to cellular network. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with - * attach(...) + * API is asynchronous. Application can get results from CellularContext callback, which is set + * with attach(...), or callback, which is set by attach(...), in this class. * * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_NO_MEMORY on case of memory failure @@ -140,18 +143,30 @@ class CellularDevice { /** Start the interface * * Attempts to attach the device to cellular network. - * By default this API is synchronous. API can be set to asynchronous with method set_blocking(...). - * In synchronous and asynchronous mode application can get result in from callback which is set with - * attach(...) + * API is asynchronous. Application can get results from CellularContext callback, which is set + * with attach(...), or callback, which is set by attach(...), in this class. * * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_NO_MEMORY on case of memory failure */ nsapi_error_t attach_to_network(); + /** Register callback for status reporting. + * + * The specified status callback function is called on the network, and the cellular device status changes. + * The parameters on the callback are the event type and event type dependent reason parameter. + * + * @remark deleting CellularDevice/CellularContext in callback is not allowed. + * @remark application should not attach to this function if it uses CellularContext::attach because it contains the + * same information. + * + * @param status_cb The callback for status changes. + */ + void attach(Callback status_cb); + /** Create new CellularNetwork interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @return New instance of interface CellularNetwork. */ @@ -159,7 +174,7 @@ class CellularDevice { /** Create new CellularSMS interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @return New instance of interface CellularSMS. */ @@ -167,7 +182,7 @@ class CellularDevice { /** Create new CellularPower interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @return New instance of interface CellularPower. */ @@ -175,7 +190,7 @@ class CellularDevice { /** Create new CellularSIM interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @return New instance of interface CellularSIM. */ @@ -183,7 +198,7 @@ class CellularDevice { /** Create new CellularInformation interface. * - * @param fh file handle used in communication to modem. Can be for example UART handle. If null then the default + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default * file handle is used. * @return New instance of interface CellularInformation. */ @@ -266,8 +281,13 @@ class CellularDevice { char _sim_pin[MAX_PIN_SIZE + 1]; char _plmn[MAX_PLMN_SIZE + 1]; PlatformMutex _mutex; + Callback _status_cb; }; +/** + * @} + */ + } // namespace mbed #endif // CELLULAR_DEVICE_H_ diff --git a/features/cellular/framework/API/CellularInformation.h b/features/cellular/framework/API/CellularInformation.h index 63c02c00913..9ab79d6e925 100644 --- a/features/cellular/framework/API/CellularInformation.h +++ b/features/cellular/framework/API/CellularInformation.h @@ -23,6 +23,11 @@ namespace mbed { +/** + * @addtogroup cellular + * @{ + */ + /** * Class CellularInformation * @@ -83,6 +88,10 @@ class CellularInformation { virtual nsapi_error_t get_serial_number(char *buf, size_t buf_size, SerialNumberType type = SN) = 0; }; +/** + * @} + */ + } // namespace mbed #endif // CELLULAR_INFORMATION_H_ diff --git a/features/cellular/framework/API/CellularNetwork.h b/features/cellular/framework/API/CellularNetwork.h index ec6f3b74a13..eecf365f689 100644 --- a/features/cellular/framework/API/CellularNetwork.h +++ b/features/cellular/framework/API/CellularNetwork.h @@ -1,5 +1,4 @@ -/* - * Copyright (c) 2017, Arm Limited and affiliates. +/* Copyright (c) 2017,2018 Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -32,18 +31,16 @@ const int MAX_OPERATOR_NAME_LONG = 16; const int MAX_OPERATOR_NAME_SHORT = 8; /** - * Class CellularNetwork - * - * An abstract interface for connecting to a network and getting information from it. + * @addtogroup cellular + * @{ */ + +/// An abstract interface for connecting to a network and getting information from it. class CellularNetwork { protected: // friend of CellularDevice so that it's the only way to close/delete this class. friend class CellularDevice; - /** - * virtual Destructor - */ virtual ~CellularNetwork() {} public: @@ -112,7 +109,7 @@ class CellularNetwork { RAT_MAX = 11 // to reserve string array }; - // 3GPP TS 27.007 - 7.3 PLMN selection +COPS + /// 3GPP TS 27.007 - 7.3 PLMN selection +COPS struct operator_t { enum Status { Unknown, @@ -141,6 +138,7 @@ class CellularNetwork { typedef CellularList operList_t; + /// Cellular operator names in numeric and alpha format struct operator_names_t { char numeric[MAX_OPERATOR_NAME_SHORT + 1]; char alpha[MAX_OPERATOR_NAME_LONG + 1]; @@ -154,7 +152,7 @@ class CellularNetwork { }; typedef CellularList operator_names_list; - /* Network registering mode */ + /// Network registering mode enum NWRegisteringMode { NWModeAutomatic = 0, // automatic registering NWModeManual, // manual registering with plmn @@ -163,7 +161,7 @@ class CellularNetwork { NWModeManualAutomatic // if manual fails, fallback to automatic }; - /* Network registration information */ + /// Network registration information struct registration_params_t { RegistrationType _type; RegistrationStatus _status; @@ -365,6 +363,10 @@ class CellularNetwork { virtual nsapi_error_t get_registration_params(RegistrationType type, registration_params_t ®_params) = 0; }; +/** + * @} + */ + } // namespace mbed #endif // CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/API/CellularSMS.h b/features/cellular/framework/API/CellularSMS.h index 3d91635b58b..54d2afc2c46 100644 --- a/features/cellular/framework/API/CellularSMS.h +++ b/features/cellular/framework/API/CellularSMS.h @@ -35,6 +35,11 @@ const uint16_t SMS_SIM_WAIT_TIME_MILLISECONDS = 200; const int SMS_ERROR_MULTIPART_ALL_PARTS_NOT_READ = -5001; +/** + * @addtogroup cellular + * @{ + */ + /** * Class CellularSMS * @@ -162,6 +167,10 @@ class CellularSMS { virtual void set_extra_sim_wait_time(int sim_wait_time) = 0; }; +/** + * @} + */ + } // namespace mbed #endif // CELLULAR_SMS_H_ diff --git a/features/cellular/framework/AT/ATHandler.cpp b/features/cellular/framework/AT/ATHandler.cpp index b1463f5d58d..26129793f41 100644 --- a/features/cellular/framework/AT/ATHandler.cpp +++ b/features/cellular/framework/AT/ATHandler.cpp @@ -467,7 +467,7 @@ ssize_t ATHandler::read_string(char *buf, size_t size, bool read_even_stop_tag) return -1; } - int len = 0; + unsigned int len = 0; size_t match_pos = 0; bool delimiter_found = false; @@ -952,25 +952,31 @@ bool ATHandler::consume_char(char ch) bool ATHandler::consume_to_tag(const char *tag, bool consume_tag) { size_t match_pos = 0; + size_t tag_length = strlen(tag); while (true) { int c = get_char(); if (c == -1) { - break; - // compares c against tag at current position and if this match fails - // compares c against tag[0] and also resets match_pos to 0 - } else if (c == tag[match_pos] || ((match_pos = 1) && (c == tag[--match_pos]))) { + tr_debug("consume_to_tag not found"); + return false; + } + if (c == tag[match_pos]) { match_pos++; - if (match_pos == strlen(tag)) { - if (!consume_tag) { - _recv_pos -= strlen(tag); - } - return true; + } else if (match_pos != 0) { + match_pos = 0; + if (c == tag[match_pos]) { + match_pos++; } } + if (match_pos == tag_length) { + break; + } } - tr_debug("consume_to_tag not found"); - return false; + + if (!consume_tag) { + _recv_pos -= tag_length; + } + return true; } bool ATHandler::consume_to_stop_tag() diff --git a/features/cellular/framework/AT/ATHandler.h b/features/cellular/framework/AT/ATHandler.h index 3d7a128ca50..9b26b8eb012 100644 --- a/features/cellular/framework/AT/ATHandler.h +++ b/features/cellular/framework/AT/ATHandler.h @@ -53,16 +53,13 @@ enum DeviceErrorType { DeviceErrorTypeErrorCME // AT ERROR CME }; -/* struct used when getting at response error. Defines error code and type */ +/** AT response error with error code and type */ struct device_err_t { DeviceErrorType errType; int errCode; }; -/** Class ATHandler - * - * Class for sending AT commands and parsing AT responses. - */ +/// Class for sending AT commands and parsing AT responses. class ATHandler { public: diff --git a/features/cellular/framework/AT/AT_CellularNetwork.cpp b/features/cellular/framework/AT/AT_CellularNetwork.cpp index 6c84f08355c..d04de64d09b 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.cpp +++ b/features/cellular/framework/AT/AT_CellularNetwork.cpp @@ -161,9 +161,17 @@ void AT_CellularNetwork::read_reg_params_and_compare(RegistrationType type) _connection_status_cb((nsapi_event_t)CellularRadioAccessTechnologyChanged, (intptr_t)&data); } if (reg_params._status != _reg_params._status) { + RegistrationStatus previous_registration_status = _reg_params._status; _reg_params._status = reg_params._status; data.status_data = reg_params._status; _connection_status_cb((nsapi_event_t)CellularRegistrationStatusChanged, (intptr_t)&data); + if (!(reg_params._status == RegisteredHomeNetwork || + reg_params._status == RegisteredRoaming)) { + if (previous_registration_status == RegisteredHomeNetwork || + previous_registration_status == RegisteredRoaming) { + _connection_status_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, NSAPI_STATUS_DISCONNECTED); + } + } } if (reg_params._cell_id != -1 && reg_params._cell_id != _reg_params._cell_id) { _reg_params._cell_id = reg_params._cell_id; diff --git a/features/cellular/framework/AT/AT_CellularStack.cpp b/features/cellular/framework/AT/AT_CellularStack.cpp index 5008884f61b..ad4932c072d 100644 --- a/features/cellular/framework/AT/AT_CellularStack.cpp +++ b/features/cellular/framework/AT/AT_CellularStack.cpp @@ -198,15 +198,21 @@ nsapi_error_t AT_CellularStack::socket_bind(nsapi_socket_t handle, const SocketA } if (addr) { - socket->localAddress.set_addr(addr.get_addr()); - } - - if (addr.get_port()) { - socket->localAddress.set_port(addr.get_port()); + return NSAPI_ERROR_UNSUPPORTED; } _at.lock(); + uint16_t port = addr.get_port(); + if (port != socket->localAddress.get_port()) { + if (port && (get_socket_index_by_port(port) == -1)) { + socket->localAddress.set_port(port); + } else { + _at.unlock(); + return NSAPI_ERROR_PARAMETER; + } + } + if (!socket->created) { create_socket_impl(socket); } @@ -307,7 +313,7 @@ nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, S _at.unlock(); if (ret_val != NSAPI_ERROR_OK) { - tr_error("Socket %d create %s error %d", find_socket_index(socket), addr->get_ip_address(), ret_val); + tr_error("Socket %d create error %d", find_socket_index(socket), ret_val); return ret_val; } } @@ -319,7 +325,11 @@ nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, S _at.unlock(); if (ret_val >= 0) { - tr_info("Socket %d recv %d bytes from %s port %d", find_socket_index(socket), ret_val, addr->get_ip_address(), addr->get_port()); + if (addr) { + tr_info("Socket %d recv %d bytes from %s port %d", find_socket_index(socket), ret_val, addr->get_ip_address(), addr->get_port()); + } else { + tr_info("Socket %d recv %d bytes", find_socket_index(socket), ret_val); + } } else if (ret_val != NSAPI_ERROR_WOULD_BLOCK) { tr_error("Socket %d recv error %d", find_socket_index(socket), ret_val); } @@ -336,3 +346,14 @@ void AT_CellularStack::socket_attach(nsapi_socket_t handle, void (*callback)(voi socket->_cb = callback; socket->_data = data; } + +int AT_CellularStack::get_socket_index_by_port(uint16_t port) +{ + int max_socket_count = get_max_socket_count(); + for (int i = 0; i < max_socket_count; i++) { + if (_socket[i]->localAddress.get_port() == port) { + return i; + } + } + return -1; +} diff --git a/features/cellular/framework/AT/AT_CellularStack.h b/features/cellular/framework/AT/AT_CellularStack.h index 2c25da15796..8ce57646653 100644 --- a/features/cellular/framework/AT/AT_CellularStack.h +++ b/features/cellular/framework/AT/AT_CellularStack.h @@ -184,6 +184,8 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { private: int find_socket_index(nsapi_socket_t handle); + int get_socket_index_by_port(uint16_t port); + // mutex for write/read to a _socket array, needed when multiple threads may open sockets simultaneously PlatformMutex _socket_mutex; }; diff --git a/features/cellular/framework/common/CellularTargets.h b/features/cellular/framework/common/CellularTargets.h index feb330efa80..2ffb377c4f6 100644 --- a/features/cellular/framework/common/CellularTargets.h +++ b/features/cellular/framework/common/CellularTargets.h @@ -32,7 +32,7 @@ namespace mbed { #elif TARGET_MTB_MTS_DRAGONFLY #define CELLULAR_DEVICE TELIT_HE910 #elif TARGET_UBLOX_C030 -#if defined(TARGET_UBLOX_C030_N211) || defined(TARGET_UBLOX_C030_R410M) +#if defined(TARGET_UBLOX_C030_N211) || defined(TARGET_UBLOX_C030_R41XM) #define CELLULAR_DEVICE UBLOX_AT #else #define CELLULAR_DEVICE UBLOX_PPP diff --git a/features/cellular/framework/device/CellularDevice.cpp b/features/cellular/framework/device/CellularDevice.cpp index 6ad46ddc67d..bb623fe501d 100644 --- a/features/cellular/framework/device/CellularDevice.cpp +++ b/features/cellular/framework/device/CellularDevice.cpp @@ -51,7 +51,7 @@ MBED_WEAK CellularDevice *CellularDevice::get_default_instance() #endif // CELLULAR_DEVICE CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), _sms_ref_count(0), _power_ref_count(0), _sim_ref_count(0), - _info_ref_count(0), _fh(fh), _queue(5 * EVENTS_EVENT_SIZE), _state_machine(0), _nw(0) + _info_ref_count(0), _fh(fh), _queue(5 * EVENTS_EVENT_SIZE), _state_machine(0), _nw(0), _status_cb(0) { set_sim_pin(NULL); set_plmn(NULL); @@ -158,6 +158,11 @@ nsapi_error_t CellularDevice::start_state_machine(CellularStateMachine::Cellular return err; } +void CellularDevice::attach(Callback status_cb) +{ + _status_cb = status_cb; +} + void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr) { if (ev >= NSAPI_EVENT_CELLULAR_STATUS_BASE && ev <= NSAPI_EVENT_CELLULAR_STATUS_END) { @@ -200,6 +205,11 @@ void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr) curr->cellular_callback(ev, ptr); curr = curr->_next; } + + // forward to callback function if set by attach(...) + if (_status_cb) { + _status_cb(ev, ptr); + } } } // namespace mbed diff --git a/features/cellular/framework/device/CellularStateMachine.cpp b/features/cellular/framework/device/CellularStateMachine.cpp index 75e9416c14f..f84d41fcdb1 100644 --- a/features/cellular/framework/device/CellularStateMachine.cpp +++ b/features/cellular/framework/device/CellularStateMachine.cpp @@ -40,6 +40,8 @@ #define RETRY_COUNT_DEFAULT 3 const int STM_STOPPED = -99; +const int ACTIVE_PDP_CONTEXT = 0x01; +const int ATTACHED_TO_NETWORK = 0x02; namespace mbed { @@ -48,7 +50,7 @@ CellularStateMachine::CellularStateMachine(CellularDevice &device, events::Event _event_status_cb(0), _network(0), _power(0), _sim(0), _queue(queue), _queue_thread(0), _sim_pin(0), _retry_count(0), _event_timeout(-1), _event_id(-1), _plmn(0), _command_success(false), _plmn_network_found(false), _is_retry(false), _cb_data(), _current_event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE), - _active_context(false) + _network_status(0) { #if MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY == 0 _start_time = 0; @@ -83,7 +85,7 @@ void CellularStateMachine::reset() _event_id = -1; _plmn_network_found = false; _is_retry = false; - _active_context = false; + _network_status = 0; enter_to_state(STATE_INIT); } @@ -193,7 +195,7 @@ bool CellularStateMachine::is_registered() } _cb_data.status_data = status; - return is_registered || _active_context; + return is_registered || _network_status; } bool CellularStateMachine::get_network_registration(CellularNetwork::RegistrationType type, @@ -440,8 +442,15 @@ void CellularStateMachine::state_sim_pin() return; } - _active_context = false; - _active_context = _network->is_active_context(); // check if context was already activated + if (_network->is_active_context()) { // check if context was already activated + tr_debug("ACTIVE CONTEXT FOUND, skip registering."); + _network_status |= ACTIVE_PDP_CONTEXT; + } + CellularNetwork::AttachStatus status; // check if modem is already attached to a network + if (_network->get_attach(status) == NSAPI_ERROR_OK && status == CellularNetwork::Attached) { + _network_status |= ATTACHED_TO_NETWORK; + tr_debug("DEVICE IS ALREADY ATTACHED TO NETWORK, skip registering and attach."); + } if (_plmn) { enter_to_state(STATE_MANUAL_REGISTERING_NETWORK); } else { @@ -499,7 +508,9 @@ void CellularStateMachine::state_attaching() { _cellularDevice.set_timeout(TIMEOUT_CONNECT); tr_info("Attaching network (timeout %d s)", TIMEOUT_CONNECT / 1000); - _cb_data.error = _network->set_attach(); + if (_network_status != ATTACHED_TO_NETWORK) { + _cb_data.error = _network->set_attach(); + } if (_cb_data.error == NSAPI_ERROR_OK) { _cellularDevice.close_sim(); _sim = NULL; diff --git a/features/cellular/framework/device/CellularStateMachine.h b/features/cellular/framework/device/CellularStateMachine.h index afff6f05abc..386b39dcc4d 100644 --- a/features/cellular/framework/device/CellularStateMachine.h +++ b/features/cellular/framework/device/CellularStateMachine.h @@ -185,7 +185,7 @@ class CellularStateMachine { bool _is_retry; cell_callback_data_t _cb_data; nsapi_event_t _current_event; - bool _active_context; // Is there any active context? + int _network_status; // Is there any active context or is modem attached to a network? PlatformMutex _mutex; }; diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp index 5b59dd9a9b4..1dd1e58cf98 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp @@ -16,7 +16,6 @@ */ #include "GEMALTO_CINTERION_CellularNetwork.h" -#include "GEMALTO_CINTERION_Module.h" #include "GEMALTO_CINTERION_CellularContext.h" #include "GEMALTO_CINTERION.h" #include "AT_CellularInformation.h" @@ -28,6 +27,8 @@ using namespace events; const uint16_t RESPONSE_TO_SEND_DELAY = 100; // response-to-send delay in milliseconds at bit-rate over 9600 +GEMALTO_CINTERION::Module GEMALTO_CINTERION::_module; + GEMALTO_CINTERION::GEMALTO_CINTERION(FileHandle *fh) : AT_CellularDevice(fh) { } @@ -59,10 +60,60 @@ nsapi_error_t GEMALTO_CINTERION::init_module() tr_error("Cellular model not found!"); return NSAPI_ERROR_DEVICE_ERROR; } - return GEMALTO_CINTERION_Module::detect_model(model); + + if (memcmp(model, "ELS61", sizeof("ELS61") - 1) == 0) { + init_module_els61(); + } else if (memcmp(model, "BGS2", sizeof("BGS2") - 1) == 0) { + init_module_bgs2(); + } else if (memcmp(model, "EMS31", sizeof("EMS31") - 1) == 0) { + init_module_ems31(); + } else { + tr_error("Cinterion model unsupported %s", model); + return NSAPI_ERROR_UNSUPPORTED; + } + tr_info("Cinterion model %s (%d)", model, _module); + + return NSAPI_ERROR_OK; } uint16_t GEMALTO_CINTERION::get_send_delay() const { return RESPONSE_TO_SEND_DELAY; } + +GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_module() +{ + return _module; +} + +void GEMALTO_CINTERION::init_module_bgs2() +{ + // BGS2-W_ATC_V00.100 + static const AT_CellularBase::SupportedFeature unsupported_features[] = { + AT_CellularBase::AT_CGSN_WITH_TYPE, + AT_CellularBase::SUPPORTED_FEATURE_END_MARK + }; + AT_CellularBase::set_unsupported_features(unsupported_features); + _module = ModuleBGS2; +} + +void GEMALTO_CINTERION::init_module_els61() +{ + // ELS61-E2_ATC_V01.000 + static const AT_CellularBase::SupportedFeature unsupported_features[] = { + AT_CellularBase::AT_CGSN_WITH_TYPE, + AT_CellularBase::SUPPORTED_FEATURE_END_MARK + }; + AT_CellularBase::set_unsupported_features(unsupported_features); + _module = ModuleELS61; +} + +void GEMALTO_CINTERION::init_module_ems31() +{ + // EMS31-US_ATC_V4.9.5 + static const AT_CellularBase::SupportedFeature unsupported_features[] = { + AT_CellularBase::SUPPORTED_FEATURE_END_MARK + }; + AT_CellularBase::set_unsupported_features(unsupported_features); + _module = ModuleEMS31; +} diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h index 137641f0f61..2a58da242b9 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h @@ -34,6 +34,23 @@ class GEMALTO_CINTERION : public AT_CellularDevice { public: virtual nsapi_error_t init_module(); virtual uint16_t get_send_delay() const; + + /** Actual model of cellular module is needed to make AT command adaptation at runtime + * to support many different models in one cellular driver. + */ + enum Module { + ModuleUnknown = 0, + ModuleELS61, + ModuleBGS2, + ModuleEMS31, + }; + static Module get_module(); + +private: + static Module _module; + void init_module_bgs2(); + void init_module_els61(); + void init_module_ems31(); }; } // namespace mbed diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp index 322f53e1c72..bce1fb077dc 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp @@ -16,7 +16,7 @@ */ #include "GEMALTO_CINTERION_CellularContext.h" #include "GEMALTO_CINTERION_CellularStack.h" -#include "GEMALTO_CINTERION_Module.h" +#include "GEMALTO_CINTERION.h" namespace mbed { @@ -41,7 +41,7 @@ NetworkStack *GEMALTO_CINTERION_CellularContext::get_stack() bool GEMALTO_CINTERION_CellularContext::stack_type_supported(nsapi_ip_stack_t requested_stack) { - if (GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelBGS2) { + if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { return (requested_stack == IPV4_STACK); } return (requested_stack == IPV4_STACK || requested_stack == IPV6_STACK); diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp index 65f944fc1db..baf4b47be76 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp @@ -16,7 +16,7 @@ */ #include "GEMALTO_CINTERION_CellularNetwork.h" -#include "GEMALTO_CINTERION_Module.h" +#include "GEMALTO_CINTERION.h" using namespace mbed; @@ -30,10 +30,10 @@ GEMALTO_CINTERION_CellularNetwork::~GEMALTO_CINTERION_CellularNetwork() AT_CellularNetwork::RegistrationMode GEMALTO_CINTERION_CellularNetwork::has_registration(RegistrationType reg_type) { - if (GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelEMS31) { + if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleEMS31) { return (reg_type == C_EREG) ? RegistrationModeLAC : RegistrationModeDisable; } - if (GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelBGS2) { + if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { if (reg_type == C_GREG) { return RegistrationModeEnable; } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp index 1c0128ea914..14fb6543fc5 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp @@ -17,7 +17,7 @@ #include #include "GEMALTO_CINTERION_CellularStack.h" -#include "GEMALTO_CINTERION_Module.h" +#include "GEMALTO_CINTERION.h" #include "CellularLog.h" // defines as per ELS61-E2_ATC_V01.000 and BGS2-W_ATC_V00.100 @@ -91,7 +91,7 @@ void GEMALTO_CINTERION_CellularStack::sisw_urc_handler(int sock_id, int urc_code if (urc_code == 1) { // ready if (sock->_cb) { sock->tx_ready = true; - if (sock->proto == NSAPI_TCP || GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelBGS2) { + if (sock->proto == NSAPI_TCP || GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { sock->started = true; } sock->_cb(sock->_data); @@ -180,7 +180,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_open_defer(CellularSocket char sock_addr[sizeof("sockudp://") - 1 + NSAPI_IPv6_SIZE + sizeof("[]:12345;port=12345") - 1 + 1]; if (socket->proto == NSAPI_UDP) { - if (GEMALTO_CINTERION_Module::get_model() != GEMALTO_CINTERION_Module::ModelBGS2) { + if (GEMALTO_CINTERION::get_module() != GEMALTO_CINTERION::ModuleBGS2) { std::sprintf(sock_addr, "sockudp://%s:%u", address ? address->get_ip_address() : "", socket->localAddress.get_port()); } else { std::sprintf(sock_addr, "sockudp://%s:%u;port=%u", address->get_ip_address(), address->get_port(), socket->localAddress.get_port()); @@ -286,7 +286,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::create_socket_impl(CellularSocket } if (socket->proto == NSAPI_UDP) { - if (GEMALTO_CINTERION_Module::get_model() != GEMALTO_CINTERION_Module::ModelBGS2) { + if (GEMALTO_CINTERION::get_module() != GEMALTO_CINTERION::ModuleBGS2) { return socket_open_defer(socket); } } @@ -306,7 +306,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_sendto_impl(Cellul } } - if (socket->proto == NSAPI_UDP && GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelBGS2) { + if (socket->proto == NSAPI_UDP && GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { tr_debug("Send addr %s, prev addr %s", address.get_ip_address(), socket->remoteAddress.get_ip_address()); if (address != socket->remoteAddress) { if (socket->started) { @@ -349,7 +349,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_sendto_impl(Cellul _at.write_int(socket->id); _at.write_int(size); - if (GEMALTO_CINTERION_Module::get_model() != GEMALTO_CINTERION_Module::ModelBGS2) { + if (GEMALTO_CINTERION::get_module() != GEMALTO_CINTERION::ModuleBGS2) { _at.write_int(0); // UDP requires Udp_RemClient @@ -466,7 +466,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell } // UDP Udp_RemClient - if (socket->proto == NSAPI_UDP && GEMALTO_CINTERION_Module::get_model() != GEMALTO_CINTERION_Module::ModelBGS2) { + if (socket->proto == NSAPI_UDP && GEMALTO_CINTERION::get_module() != GEMALTO_CINTERION::ModuleBGS2) { char ip_address[NSAPI_IPv6_SIZE + sizeof("[]:12345") - 1 + 1]; int ip_len = _at.read_string(ip_address, sizeof(ip_address)); if (ip_len <= 0) { @@ -513,7 +513,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell // setup internet connection profile for sockets nsapi_error_t GEMALTO_CINTERION_CellularStack::create_connection_profile(int connection_profile_id) { - if (GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelEMS31) { + if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleEMS31) { // EMS31 connection has only DNS settings and there is no need to modify those here for now return NSAPI_ERROR_OK; } @@ -579,7 +579,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::create_connection_profile(int con void GEMALTO_CINTERION_CellularStack::close_connection_profile(int connection_profile_id) { - if (GEMALTO_CINTERION_Module::get_model() == GEMALTO_CINTERION_Module::ModelEMS31) { + if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleEMS31) { return; } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.cpp deleted file mode 100644 index 0f52bfcbe8c..00000000000 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2018, Arm Limited and affiliates. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "AT_CellularBase.h" -#include "GEMALTO_CINTERION_Module.h" -#include "CellularLog.h" - -using namespace mbed; - -// unsupported features as per ELS61-E2_ATC_V01.000 -static const AT_CellularBase::SupportedFeature unsupported_features_els61[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK -}; - -// unsupported features as per BGS2-W_ATC_V00.100 -static const AT_CellularBase::SupportedFeature unsupported_features_bgs2[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK -}; - -// unsupported features as per EMS31-US_ATC_V4.9.5 -static const AT_CellularBase::SupportedFeature unsupported_features_ems31[] = { - AT_CellularBase::SUPPORTED_FEATURE_END_MARK -}; - -GEMALTO_CINTERION_Module::Model GEMALTO_CINTERION_Module::_model; - -nsapi_error_t GEMALTO_CINTERION_Module::detect_model(const char *model) -{ - static const AT_CellularBase::SupportedFeature *unsupported_features; - if (memcmp(model, "ELS61", sizeof("ELS61") - 1) == 0) { - _model = ModelELS61; - unsupported_features = unsupported_features_els61; - } else if (memcmp(model, "BGS2", sizeof("BGS2") - 1) == 0) { - _model = ModelBGS2; - unsupported_features = unsupported_features_bgs2; - } else if (memcmp(model, "EMS31", sizeof("EMS31") - 1) == 0) { - _model = ModelEMS31; - unsupported_features = unsupported_features_ems31; - } else { - tr_error("Cinterion model unsupported %s", model); - return NSAPI_ERROR_UNSUPPORTED; - } - tr_info("Cinterion model %s (%d)", model, _model); - AT_CellularBase::set_unsupported_features(unsupported_features); - return NSAPI_ERROR_OK; -} - -GEMALTO_CINTERION_Module::Model GEMALTO_CINTERION_Module::get_model() -{ - return _model; -} diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp index f6d5e5a6efa..0f87bac48cf 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp @@ -28,6 +28,7 @@ QUECTEL_BC95_CellularContext::~QUECTEL_BC95_CellularContext() { } +#if !NSAPI_PPP_AVAILABLE NetworkStack *QUECTEL_BC95_CellularContext::get_stack() { if (!_stack) { @@ -35,6 +36,7 @@ NetworkStack *QUECTEL_BC95_CellularContext::get_stack() } return _stack; } +#endif // #if !NSAPI_PPP_AVAILABLE bool QUECTEL_BC95_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) { diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h index e241275aeba..d1421c20b5d 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h @@ -27,7 +27,9 @@ class QUECTEL_BC95_CellularContext: public AT_CellularContext { virtual ~QUECTEL_BC95_CellularContext(); protected: +#if !NSAPI_PPP_AVAILABLE virtual NetworkStack *get_stack(); +#endif // #if !NSAPI_PPP_AVAILABLE virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); }; diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp index c63feb28885..e07b7001c0d 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp @@ -34,6 +34,7 @@ using namespace events; static const AT_CellularBase::SupportedFeature unsupported_features[] = { AT_CellularBase::AT_CGSN_WITH_TYPE, + AT_CellularBase::AT_CGDATA, AT_CellularBase::SUPPORTED_FEATURE_END_MARK }; diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp index 295b0d3af9b..73a971df529 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp @@ -36,6 +36,7 @@ bool QUECTEL_BG96_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_t return false; } +#if !NSAPI_PPP_AVAILABLE NetworkStack *QUECTEL_BG96_CellularContext::get_stack() { if (!_stack) { @@ -43,6 +44,7 @@ NetworkStack *QUECTEL_BG96_CellularContext::get_stack() } return _stack; } +#endif // #if !NSAPI_PPP_AVAILABLE nsapi_error_t QUECTEL_BG96_CellularContext::do_user_authentication() { diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h index 363aaa095e6..89d20fc2310 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h @@ -28,7 +28,9 @@ class QUECTEL_BG96_CellularContext: public AT_CellularContext { protected: virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); +#if !NSAPI_PPP_AVAILABLE virtual NetworkStack *get_stack(); +#endif // #if !NSAPI_PPP_AVAILABLE virtual nsapi_error_t do_user_authentication(); }; diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp index 8d79fa6c745..59ec9487f47 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp @@ -62,6 +62,10 @@ nsapi_error_t QUECTEL_BG96_CellularStack::socket_connect(nsapi_socket_t handle, handle_open_socket_response(modem_connect_id, err); if ((_at.get_last_error() == NSAPI_ERROR_OK) && err) { + if (err == BG96_SOCKET_BIND_FAIL) { + socket->created = false; + return NSAPI_ERROR_PARAMETER; + } _at.cmd_start("AT+QICLOSE="); _at.write_int(modem_connect_id); _at.cmd_stop(); @@ -178,6 +182,10 @@ nsapi_error_t QUECTEL_BG96_CellularStack::create_socket_impl(CellularSocket *soc handle_open_socket_response(modem_connect_id, err); if ((_at.get_last_error() == NSAPI_ERROR_OK) && err) { + if (err == BG96_SOCKET_BIND_FAIL) { + socket->created = false; + return NSAPI_ERROR_PARAMETER; + } _at.cmd_start("AT+QICLOSE="); _at.write_int(modem_connect_id); _at.cmd_stop_read_resp(); @@ -206,6 +214,10 @@ nsapi_error_t QUECTEL_BG96_CellularStack::create_socket_impl(CellularSocket *soc handle_open_socket_response(modem_connect_id, err); if ((_at.get_last_error() == NSAPI_ERROR_OK) && err) { + if (err == BG96_SOCKET_BIND_FAIL) { + socket->created = false; + return NSAPI_ERROR_PARAMETER; + } _at.cmd_start("AT+QICLOSE="); _at.write_int(modem_connect_id); _at.cmd_stop_read_resp(); @@ -239,6 +251,14 @@ nsapi_error_t QUECTEL_BG96_CellularStack::create_socket_impl(CellularSocket *soc nsapi_size_or_error_t QUECTEL_BG96_CellularStack::socket_sendto_impl(CellularSocket *socket, const SocketAddress &address, const void *data, nsapi_size_t size) { + if (size > BG96_MAX_SEND_SIZE) { + return NSAPI_ERROR_PARAMETER; + } + + if (!size && socket->proto == NSAPI_UDP) { + return NSAPI_ERROR_UNSUPPORTED; + } + int sent_len = 0; int sent_len_before = 0; int sent_len_after = 0; @@ -296,6 +316,11 @@ nsapi_size_or_error_t QUECTEL_BG96_CellularStack::socket_recvfrom_impl(CellularS _at.cmd_start("AT+QIRD="); _at.write_int(socket->id); + if (socket->proto == NSAPI_TCP) { + // do not read more than max size + size = size > BG96_MAX_RECV_SIZE ? BG96_MAX_RECV_SIZE : size; + _at.write_int(size); + } _at.cmd_stop(); _at.resp_start("+QIRD:"); @@ -303,11 +328,15 @@ nsapi_size_or_error_t QUECTEL_BG96_CellularStack::socket_recvfrom_impl(CellularS _at.read_string(ip_address, sizeof(ip_address)); port = _at.read_int(); if (recv_len > 0) { + // do not read more than buffer size + recv_len = recv_len > size ? size : recv_len; _at.read_bytes((uint8_t *)buffer, recv_len); } _at.resp_stop(); - if (!recv_len || (_at.get_last_error() != NSAPI_ERROR_OK)) { + // We block only if 0 recv length really means no data. + // If 0 is followed by ip address and port can be an UDP 0 length packet + if (!recv_len && port < 0) { return NSAPI_ERROR_WOULD_BLOCK; } diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h index 1b8e5475305..e8eb670c1c0 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h @@ -25,6 +25,9 @@ namespace mbed { #define BG96_SOCKET_MAX 12 #define BG96_CREATE_SOCKET_TIMEOUT 150000 //150 seconds #define BG96_CLOSE_SOCKET_TIMEOUT 20000 // TCP socket max timeout is >10sec +#define BG96_MAX_RECV_SIZE 1500 +#define BG96_MAX_SEND_SIZE 1460 +#define BG96_SOCKET_BIND_FAIL 556 class QUECTEL_BG96_CellularStack : public AT_CellularStack { public: diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp new file mode 100644 index 00000000000..a5efe042d9a --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "QUECTEL_M26_CellularNetwork.h" +#include "QUECTEL_M26_CellularPower.h" +#include "QUECTEL_M26_CellularSIM.h" +#include "QUECTEL_M26_CellularContext.h" +#include "QUECTEL_M26.h" + +using namespace events; +using namespace mbed; + +#define CONNECT_DELIM "\r\n" +#define CONNECT_BUFFER_SIZE (1280 + 80 + 80) // AT response + sscanf format +#define CONNECT_TIMEOUT 8000 + +#define MAX_STARTUP_TRIALS 5 +#define MAX_RESET_TRIALS 5 + +static const AT_CellularBase::SupportedFeature unsupported_features[] = { + AT_CellularBase::AT_CGSN_WITH_TYPE, + AT_CellularBase::AT_CGAUTH, + AT_CellularBase::SUPPORTED_FEATURE_END_MARK +}; + +QUECTEL_M26::QUECTEL_M26(FileHandle *fh) : AT_CellularDevice(fh) +{ + AT_CellularBase::set_unsupported_features(unsupported_features); +} + +QUECTEL_M26::~QUECTEL_M26() +{ +} + +AT_CellularNetwork *QUECTEL_M26::open_network_impl(ATHandler &at) +{ + return new QUECTEL_M26_CellularNetwork(at); +} + +AT_CellularPower *QUECTEL_M26::open_power_impl(ATHandler &at) +{ + return new QUECTEL_M26_CellularPower(at); +} + +AT_CellularSIM *QUECTEL_M26::open_sim_impl(ATHandler &at) +{ + return new QUECTEL_M26_CellularSIM(at); +} + +AT_CellularContext *QUECTEL_M26::create_context_impl(ATHandler &at, const char *apn) +{ + return new QUECTEL_M26_CellularContext(at, this, apn); +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h new file mode 100644 index 00000000000..05053e0308f --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef QUECTEL_M26_H_ +#define QUECTEL_M26_H_ + +#include "AT_CellularDevice.h" + +namespace mbed { + +class QUECTEL_M26 : public AT_CellularDevice { +public: + QUECTEL_M26(FileHandle *fh); + virtual ~QUECTEL_M26(); + +protected: // AT_CellularDevice + virtual AT_CellularNetwork *open_network_impl(ATHandler &at); + virtual AT_CellularPower *open_power_impl(ATHandler &at); + virtual AT_CellularSIM *open_sim_impl(ATHandler &at); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); + +public: // NetworkInterface + void handle_urc(FileHandle *fh); +}; +} // namespace mbed + +#endif // QUECTEL_M26_H_ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp new file mode 100644 index 00000000000..04d0cb21eec --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "QUECTEL_M26_CellularContext.h" +#include "QUECTEL_M26_CellularStack.h" + +namespace mbed { + +QUECTEL_M26_CellularContext::QUECTEL_M26_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : + AT_CellularContext(at, device, apn) +{ +} + +QUECTEL_M26_CellularContext::~QUECTEL_M26_CellularContext() +{ +} + +bool QUECTEL_M26_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) +{ + return stack_type == IPV4_STACK ? true : false; +} + +#if !NSAPI_PPP_AVAILABLE +NetworkStack *QUECTEL_M26_CellularContext::get_stack() +{ + if (!_stack) { + _stack = new QUECTEL_M26_CellularStack(_at, _cid, _ip_stack_type); + } + return _stack; +} +#endif // #if !NSAPI_PPP_AVAILABLE + +nsapi_error_t QUECTEL_M26_CellularContext::do_user_authentication() +{ + + _at.cmd_start("AT+QICSGP="); + _at.write_int(1); /*GPRS MODE = 1, CSD MODE = 0*/ + _at.write_string(_apn); + if (_pwd && _uname) { + _at.write_string(_uname); + _at.write_string(_pwd); + } + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + if (_at.get_last_error() != NSAPI_ERROR_OK) { + return NSAPI_ERROR_AUTH_FAILURE; + } + + return NSAPI_ERROR_OK; +} + +} /* namespace mbed */ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h new file mode 100644 index 00000000000..ae66b9fd31a --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef QUECTEL_M26_CELLULARCONTEXT_H_ +#define QUECTEL_M26_CELLULARCONTEXT_H_ + +#include "AT_CellularContext.h" + +namespace mbed { + +class QUECTEL_M26_CellularContext: public AT_CellularContext { +public: + QUECTEL_M26_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + virtual ~QUECTEL_M26_CellularContext(); + +protected: + virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); +#if !NSAPI_PPP_AVAILABLE + virtual NetworkStack *get_stack(); +#endif // #if !NSAPI_PPP_AVAILABLE + virtual nsapi_error_t do_user_authentication(); +}; + +} /* namespace mbed */ + +#endif // QUECTEL_M26_CELLULARCONTEXT_H_ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.cpp new file mode 100644 index 00000000000..0ee5464fd85 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "QUECTEL_M26_CellularNetwork.h" + +using namespace mbed; + +QUECTEL_M26_CellularNetwork::QUECTEL_M26_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +{ + _op_act = RAT_EGPRS; +} + +QUECTEL_M26_CellularNetwork::~QUECTEL_M26_CellularNetwork() +{ +} + +AT_CellularNetwork::RegistrationMode QUECTEL_M26_CellularNetwork::has_registration(RegistrationType reg_type) +{ + return (reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; +} + +nsapi_error_t QUECTEL_M26_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) +{ + if (opRat != RAT_EGPRS) { + // only GPRS support in the driver. + _op_act = RAT_EGPRS; + return NSAPI_ERROR_UNSUPPORTED; + } + + return NSAPI_ERROR_OK; +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.h new file mode 100644 index 00000000000..0aff1e3e36a --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef QUECTEL_M26_CELLULAR_NETWORK_H_ +#define QUECTEL_M26_CELLULAR_NETWORK_H_ + +#include "AT_CellularNetwork.h" + +namespace mbed { + +class QUECTEL_M26_CellularNetwork : public AT_CellularNetwork { +public: + QUECTEL_M26_CellularNetwork(ATHandler &atHandler); + virtual ~QUECTEL_M26_CellularNetwork(); + +protected: + virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); + virtual RegistrationMode has_registration(RegistrationType reg_type); +}; +} // namespace mbed +#endif // QUECTEL_M26_CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.cpp new file mode 100644 index 00000000000..2ab2b9a1dd4 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "QUECTEL_M26_CellularPower.h" + +using namespace mbed; + +QUECTEL_M26_CellularPower::QUECTEL_M26_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) +{ + +} + +QUECTEL_M26_CellularPower::~QUECTEL_M26_CellularPower() +{ + +} + +nsapi_error_t QUECTEL_M26_CellularPower::set_at_mode() +{ + _at.lock(); + _at.cmd_start("AT"); + _at.cmd_stop_read_resp(); + + _at.cmd_start("AT+CMEE="); // verbose responses + _at.write_int(1); + _at.cmd_stop_read_resp(); + + return _at.unlock_return_error(); +} + +nsapi_error_t QUECTEL_M26_CellularPower::on() +{ + + return NSAPI_ERROR_OK; +} + +nsapi_error_t QUECTEL_M26_CellularPower::off() +{ + _at.lock(); + _at.cmd_start("AT+QPOWD=0"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + return _at.unlock_return_error();; +} diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.h similarity index 55% rename from features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.h rename to features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.h index 63e6020403e..c62a7f5be87 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_Module.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.h @@ -15,33 +15,26 @@ * limitations under the License. */ -#ifndef GEMALTO_CINTERION_MODULE_H_ -#define GEMALTO_CINTERION_MODULE_H_ +#ifndef QUECTEL_M26_CELLULAR_POWER_H_ +#define QUECTEL_M26_CELLULAR_POWER_H_ -#include "nsapi_types.h" +#include "AT_CellularPower.h" namespace mbed { -class FileHandle; - -class GEMALTO_CINTERION_Module { +class QUECTEL_M26_CellularPower : public AT_CellularPower { public: - /** Actual model of cellular module is needed to make AT command adaptation at runtime - * to support many different models in one cellular driver. - */ - enum Model { - ModelUnknown = 0, - ModelELS61, - ModelBGS2, - ModelEMS31, - }; - static nsapi_error_t detect_model(const char *model); - static Model get_model(); - -private: - static Model _model; + QUECTEL_M26_CellularPower(ATHandler &atHandler); + virtual ~QUECTEL_M26_CellularPower(); + +public: //from CellularPower + virtual nsapi_error_t set_at_mode(); + + virtual nsapi_error_t on(); + + virtual nsapi_error_t off(); }; } // namespace mbed -#endif // GEMALTO_CINTERION_MODULE_H_ +#endif // QUECTEL_M26_CELLULAR_POWER_H_ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.cpp new file mode 100644 index 00000000000..0b4fa846598 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "QUECTEL_M26_CellularSIM.h" +#include "CellularLog.h" + +using namespace mbed; + +QUECTEL_M26_CellularSIM::QUECTEL_M26_CellularSIM(ATHandler &atHandler) : AT_CellularSIM(atHandler) +{ + +} + +QUECTEL_M26_CellularSIM::~QUECTEL_M26_CellularSIM() +{ + +} + +nsapi_error_t QUECTEL_M26_CellularSIM::get_sim_state(SimState &state) +{ + char buf[13]; + + _at.lock(); + _at.cmd_start("AT+CPIN?"); + _at.cmd_stop(); + _at.resp_start("+CPIN:"); + if (_at.info_resp()) { + _at.read_string(buf, 13); + tr_debug("CPIN: %s", buf); + + if (memcmp(buf, "READY", 5) == 0) { + state = SimStateReady; + } else if (memcmp(buf, "SIM PIN", 7) == 0) { + state = SimStatePinNeeded; + } else if (memcmp(buf, "SIM PUK", 7) == 0) { + state = SimStatePukNeeded; + } else if (memcmp(buf, "PH_SIM PIN", 10) == 0) { + state = SimStatePinNeeded; + } else if (memcmp(buf, "PH_SIM PUK", 10) == 0) { + state = SimStatePukNeeded; + } else if (memcmp(buf, "SIM PIN2", 8) == 0) { + state = SimStatePinNeeded; + } else if (memcmp(buf, "SIM PUK2", 8) == 0) { + state = SimStatePukNeeded; + } else { + state = SimStateUnknown; // SIM may not be ready yet + } + + } + _at.resp_stop(); + return _at.unlock_return_error(); +} + +// According to M26_AT_Commands_Manual_V1.9 +nsapi_error_t QUECTEL_M26_CellularSIM::get_iccid(char *buf, size_t buf_size) +{ + _at.lock(); + _at.cmd_start("AT+CCID"); + _at.cmd_stop(); + _at.resp_start("+CCID:"); + _at.read_string(buf, buf_size); + _at.resp_stop(); + return _at.unlock_return_error(); +} + +nsapi_error_t QUECTEL_M26_CellularSIM::change_pin(const char *sim_pin, const char *new_pin) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t QUECTEL_M26_CellularSIM::set_pin_query(const char *sim_pin, bool query_pin) +{ + return NSAPI_ERROR_UNSUPPORTED; +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.h new file mode 100644 index 00000000000..8cf227a70cd --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef QUECTEL_M26_CELLULAR_SIM_H_ +#define QUECTEL_M26_CELLULAR_SIM_H_ + +#include "AT_CellularSIM.h" + +namespace mbed { + +class QUECTEL_M26_CellularSIM : public AT_CellularSIM { +public: + QUECTEL_M26_CellularSIM(ATHandler &atHandler); + virtual ~QUECTEL_M26_CellularSIM(); + +public: //from CellularSIM + virtual nsapi_error_t get_sim_state(SimState &state); + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); + virtual nsapi_error_t change_pin(const char *sim_pin, const char *new_pin); + virtual nsapi_error_t set_pin_query(const char *sim_pin, bool query_pin); +}; + +} // namespace mbed + +#endif // QUECTEL_M26_CELLULAR_SIM_H_ diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp new file mode 100644 index 00000000000..0840edee8d3 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp @@ -0,0 +1,498 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "QUECTEL/M26/QUECTEL_M26_CellularStack.h" +#include "CellularLog.h" + +using namespace mbed; + +QUECTEL_M26_CellularStack::QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +{ + _at.set_urc_handler("+QIRDI:", mbed::Callback(this, &QUECTEL_M26_CellularStack::urc_qiurc)); +} + +QUECTEL_M26_CellularStack::~QUECTEL_M26_CellularStack() +{ +} + +nsapi_error_t QUECTEL_M26_CellularStack::socket_listen(nsapi_socket_t handle, int backlog) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t QUECTEL_M26_CellularStack::socket_accept(void *server, void **socket, SocketAddress *addr) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t QUECTEL_M26_CellularStack::socket_bind(nsapi_socket_t handle, const SocketAddress &addr) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +void QUECTEL_M26_CellularStack::urc_qiurc() +{ + int sock_id = 0; + + _at.lock(); + (void) _at.skip_param(); /* AT+QIFGCNT*/ + (void) _at.skip_param(); /* 1 Client, 2 Server*/ + sock_id = _at.read_int(); + (void) _at.skip_param(); /**/ + (void) _at.skip_param(); /**/ + (void) _at.skip_param(); /**/ + _at.unlock(); + + for (int i = 0; i < get_max_socket_count(); i++) { + CellularSocket *sock = _socket[i]; + if (sock && sock->id == sock_id) { + if (sock->_cb) { + sock->_cb(sock->_data); + } + break; + } + } +} + +nsapi_error_t QUECTEL_M26_CellularStack::socket_stack_init() +{ + int tcpip_mode = 1; + int mux_mode = 0; + int cache_mode = 0; + nsapi_error_t ret_val; + + tr_debug("QUECTEL_M26_CellularStack:%s:%u: START ", __FUNCTION__, __LINE__); + _at.lock(); + + /*AT+QIFGCNT=0*/ + _at.cmd_start("AT+QIFGCNT="); + _at.write_int(0); /* Set the Context 0 as the foreground context.*/ + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + ret_val = _at.get_last_error(); + if (ret_val != NSAPI_ERROR_OK) { + _at.unlock(); + return NSAPI_ERROR_DEVICE_ERROR; + } +#if 0 + /*AT+QICSGP=1*/ + _at.cmd_start("AT+QICSGP="); + _at.write_int(1); /* mode: 0-CSD, 1-GPRS */ + _at.write_string(_apn); + if (_pwd && _uname) { + _at.write_string(_uname); + _at.write_string(_pwd); + } + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); +#endif + ret_val = _at.get_last_error(); + if (ret_val != NSAPI_ERROR_OK) { + _at.unlock(); + return NSAPI_ERROR_DEVICE_ERROR; + } + + /*AT+QIMODE=0 Set transparent mode*/ + _at.cmd_start("AT+QIMODE?"); + _at.cmd_stop(); + _at.resp_start("+QIMODE:"); + if (_at.info_resp()) { + tcpip_mode = _at.read_int(); + } + _at.resp_stop(); + if (tcpip_mode) { + _at.cmd_start("AT+QIMOD="); + _at.write_int(0); /* 0-Disable, 1-Enable */ + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } + ret_val = _at.get_last_error(); + if (ret_val != NSAPI_ERROR_OK) { + _at.unlock(); + return NSAPI_ERROR_DEVICE_ERROR; + } + + /*AT+QIMUX=1*/ + _at.cmd_start("AT+QIMUX?"); + _at.cmd_stop(); + _at.resp_start("+QIMUX:"); + if (_at.info_resp()) { + mux_mode = _at.read_int(); + } + _at.resp_stop(); + if (!mux_mode) { + _at.cmd_start("AT+QIMUX="); + _at.write_int(1); /* 0-Disable, 1-Enable */ + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } + ret_val = _at.get_last_error(); + if (ret_val != NSAPI_ERROR_OK) { + _at.unlock(); + return NSAPI_ERROR_DEVICE_ERROR; + } + + /*AT+QINDI=2*/ + _at.cmd_start("AT+QINDI?"); + _at.cmd_stop(); + _at.resp_start(); + if (_at.info_resp()) { + cache_mode = _at.read_int(); + } + _at.resp_stop(); + if (cache_mode != 2) { + _at.cmd_start("AT+QINDI="); + _at.write_int(2); /* 0-Disable, 1-Single Cache, 2-Multi Cache */ + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } + + ret_val = _at.get_last_error(); + if (ret_val != NSAPI_ERROR_OK) { + _at.unlock(); + return NSAPI_ERROR_DEVICE_ERROR; + } + + _at.unlock(); + + tr_debug("QUECTEL_M26_CellularStack:%s:%u: SUCCESS ", __FUNCTION__, __LINE__); + return NSAPI_ERROR_OK; +} + +int QUECTEL_M26_CellularStack::get_max_socket_count() +{ + return M26_SOCKET_MAX; +} + +bool QUECTEL_M26_CellularStack::is_protocol_supported(nsapi_protocol_t protocol) +{ + return (protocol == NSAPI_UDP || protocol == NSAPI_TCP); +} + +nsapi_error_t QUECTEL_M26_CellularStack::socket_close_impl(int sock_id) +{ + tr_debug("QUECTEL_M26_CellularStack:%s:%u:", __FUNCTION__, __LINE__); + + _at.cmd_start("AT+QICLOSE="); + _at.write_int(sock_id); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + return _at.get_last_error(); +} + +void QUECTEL_M26_CellularStack::handle_open_socket_response(int &modem_connect_id, int &err) +{ + char status[15]; + tr_debug("QUECTEL_M26_CellularStack:%s:%u: START", __FUNCTION__, __LINE__); + + _at.resp_start("ALREADY CONNECT"); + if (_at.info_resp()) { + /* ALREADY CONNECT: The request socket already connected */ + err = 0; + return; + } + _at.resp_stop(); + if (_at.get_last_error() != NSAPI_ERROR_OK) { + /* ERROR: The command format error */ + err = 1; + return; + } + + tr_debug("QUECTEL_M26_CellularStack:%s:%u: OK", __FUNCTION__, __LINE__); + + _at.set_at_timeout(M26_CREATE_SOCKET_TIMEOUT); + _at.resp_start(); + _at.set_stop_tag("\r\n"); + modem_connect_id = _at.read_int(); + _at.read_string(status, sizeof(status), true); + _at.resp_stop(); + _at.restore_at_timeout(); + + if ((!strcmp(status, "CONNECT FAIL")) || (_at.get_last_error() != NSAPI_ERROR_OK)) { + err = 1; + return; + } + + err = 0; + tr_debug("QUECTEL_M26_CellularStack:%s:%u: END [%s, %d]", __FUNCTION__, __LINE__, status, err); +} + + +nsapi_error_t QUECTEL_M26_CellularStack::socket_connect(nsapi_socket_t handle, const SocketAddress &address) +{ + CellularSocket *socket = (CellularSocket *)handle; + + int modem_connect_id = -1; + int request_connect_id = socket->id; + int err = -1; + + _at.lock(); + if (socket->proto == NSAPI_TCP) { + _at.cmd_start("AT+QIOPEN="); + _at.write_int(request_connect_id); + _at.write_string("TCP"); + _at.write_string(address.get_ip_address()); + _at.write_int(address.get_port()); + _at.cmd_stop(); + + handle_open_socket_response(modem_connect_id, err); + + if ((_at.get_last_error() == NSAPI_ERROR_OK) && err) { + _at.cmd_start("AT+QICLOSE="); + _at.write_int(modem_connect_id); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + _at.cmd_start("AT+QIOPEN="); + _at.write_int(request_connect_id); + _at.write_string("TCP"); + _at.write_string(address.get_ip_address()); + _at.write_int(address.get_port()); + _at.cmd_stop(); + + handle_open_socket_response(modem_connect_id, err); + } + } + + // If opened successfully BUT not requested one, close it + if (!err && (modem_connect_id != request_connect_id)) { + _at.cmd_start("AT+QICLOSE="); + _at.write_int(modem_connect_id); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } + + nsapi_error_t ret_val = _at.get_last_error(); + _at.unlock(); + + if ((ret_val == NSAPI_ERROR_OK) && (modem_connect_id == request_connect_id)) { + socket->created = true; + socket->remoteAddress = address; + socket->connected = true; + return NSAPI_ERROR_OK; + } + + return NSAPI_ERROR_NO_CONNECTION; +} + +nsapi_error_t QUECTEL_M26_CellularStack::create_socket_impl(CellularSocket *socket) +{ + int request_connect_id = socket->id; + int modem_connect_id = request_connect_id; + int err = -1; + nsapi_error_t ret_val; + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d,%d]", __FUNCTION__, __LINE__, socket->proto, socket->connected); + + if (socket->connected) { + _at.cmd_start("AT+QIOPEN="); + _at.write_int(request_connect_id); + _at.write_string((socket->proto == NSAPI_TCP) ? "TCP" : "UDP"); + _at.write_string(socket->remoteAddress.get_ip_address()); + _at.write_int(socket->remoteAddress.get_port()); + _at.cmd_stop(); + + handle_open_socket_response(modem_connect_id, err); + + /* Close and retry if socket create fail */ + if ((_at.get_last_error() != NSAPI_ERROR_OK) || err) { + _at.cmd_start("AT+QICLOSE="); + _at.write_int(modem_connect_id); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + _at.cmd_start("AT+QIOPEN="); + _at.write_int(request_connect_id); + _at.write_string((socket->proto == NSAPI_TCP) ? "TCP" : "UDP"); + _at.write_string(socket->remoteAddress.get_ip_address()); + _at.write_int(socket->remoteAddress.get_port()); + _at.cmd_stop(); + + handle_open_socket_response(modem_connect_id, err); + } + + /* If opened successfully BUT not requested one, close it */ + if (!err && (modem_connect_id != request_connect_id)) { + _at.cmd_start("AT+QICLOSE="); + _at.write_int(modem_connect_id); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } + + ret_val = _at.get_last_error(); + socket->created = ((ret_val == NSAPI_ERROR_OK) && (modem_connect_id == request_connect_id)); + return ret_val; + } else { + tr_warn("QUECTEL_M26_CellularStack:%s:%u: Do not support TCP Listner/UDP Service Mode [%d,%d]", __FUNCTION__, __LINE__, socket->created, ret_val); + ret_val = NSAPI_ERROR_OK; + } + + tr_debug("QUECTEL_M26_CellularStack:%s:%u: END [%d,%d]", __FUNCTION__, __LINE__, socket->created, ret_val); + return ret_val; +} + + +nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_sendto_impl(CellularSocket *socket, const SocketAddress &address, + const void *data, nsapi_size_t size) +{ + int sent_len = (size > M26_SENT_BYTE_MAX) ? M26_SENT_BYTE_MAX : size; + int sent_nacked = 0; + int sent_len_before = 0; + int sent_len_after = 0; + int sent_acked; + nsapi_error_t error; + + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d-%d]", __FUNCTION__, __LINE__, sent_len, size); + + if (sent_len == 0) { + tr_error("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_PARAMETER]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_PARAMETER; + } + + if (!socket->created) { + socket->remoteAddress = address; + socket->connected = true; + nsapi_error_t ret_val = create_socket_impl(socket); + if ((ret_val != NSAPI_ERROR_OK) || (!socket->created)) { + tr_error("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_NO_SOCKET]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_NO_SOCKET; + } + } + + if (socket->proto == NSAPI_TCP) { + _at.cmd_start("AT+QISACK="); + _at.write_int(socket->id); + _at.cmd_stop(); + _at.resp_start("+QISACK:"); + sent_len_before = _at.read_int(); + sent_acked = _at.read_int(); + sent_nacked = _at.read_int(); + _at.resp_stop(); + + if (_at.get_last_error() != NSAPI_ERROR_OK) { + tr_error("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_DEVICE_ERROR]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_DEVICE_ERROR; + } + + if (sent_nacked != 0) { + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_WOULD_BLOCK]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_WOULD_BLOCK; + } + } + + _at.cmd_start("AT+QISEND="); + _at.write_int(socket->id); + _at.write_int(sent_len); + _at.cmd_stop(); + + _at.resp_start(">"); + _at.write_bytes((uint8_t *)data, sent_len); + _at.resp_start(); + _at.resp_stop(); + + if (_at.get_last_error() != NSAPI_ERROR_OK) { + tr_error("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_DEVICE_ERROR]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_DEVICE_ERROR; + } + + if (socket->proto == NSAPI_TCP) { + _at.cmd_start("AT+QISACK="); + _at.write_int(socket->id); + _at.cmd_stop(); + + _at.resp_start("+QISACK:"); + sent_len_after = _at.read_int(); + sent_acked = _at.read_int(); + sent_nacked = _at.read_int(); + _at.resp_stop(); + + error = _at.get_last_error(); + if (error == NSAPI_ERROR_OK) { + sent_len = sent_len_after - sent_len_before; + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[TCP: BA %d-%d, ACK %d-%d,LEN %d-%d]", __FUNCTION__, __LINE__, sent_len_before, sent_len_after, sent_acked, sent_nacked, sent_len, size); + return sent_len; + } + + tr_error("QUECTEL_M26_CellularStack:%s:%u:[TCP: %d]", __FUNCTION__, __LINE__, error); + return error; + } + + error = _at.get_last_error(); + if (error == NSAPI_ERROR_OK) { + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[UDP: %d]", __FUNCTION__, __LINE__, sent_len); + return sent_len; + } + + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[ERROR: %d]", __FUNCTION__, __LINE__, error); + return error; +} + +nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_recvfrom_impl(CellularSocket *socket, SocketAddress *address, + void *buffer, nsapi_size_t size) +{ + nsapi_size_or_error_t recv_len = (size > M26_RECV_BYTE_MAX) ? M26_RECV_BYTE_MAX : size; + int recv_len_after = 0; + int port; + char type[8]; + char ip_address[NSAPI_IP_SIZE + 1]; + + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d]", __FUNCTION__, __LINE__, size); + _at.cmd_start("AT+QIRD="); + _at.write_int(0); /* at+qifgcnt 0-1 */ + _at.write_int(1); /* 1-Client, 2-Server */ + _at.write_int(socket->id); + _at.write_int(recv_len); + _at.cmd_stop(); + + _at.resp_start("+QIRD:"); + if (_at.info_resp()) { + _at.set_delimiter(':'); + _at.read_string(ip_address, sizeof(ip_address)); + _at.set_default_delimiter(); + port = _at.read_int(); + _at.read_string(type, sizeof(type)); + recv_len_after = _at.read_int(); + if (recv_len_after > 0) { + _at.read_bytes((uint8_t *)buffer, recv_len_after); + } + } + _at.resp_stop(); + + if (!recv_len_after || (_at.get_last_error() != NSAPI_ERROR_OK)) { + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[ERROR NSAPI_ERROR_WOULD_BLOCK]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_WOULD_BLOCK; + } + + if (address) { + address->set_ip_address(ip_address); + address->set_port(port); + } + + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d]", __FUNCTION__, __LINE__, recv_len_after); + return recv_len_after; +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h new file mode 100644 index 00000000000..822c4967c35 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef QUECTEL_M26_CELLULARSTACK_H_ +#define QUECTEL_M26_CELLULARSTACK_H_ + +#include "AT_CellularStack.h" + +namespace mbed { + +#define M26_SOCKET_MAX 6 +#define M26_CREATE_SOCKET_TIMEOUT 75000 //75 seconds +#define M26_SENT_BYTE_MAX 1460 +#define M26_RECV_BYTE_MAX 1000 + +class QUECTEL_M26_CellularStack : public AT_CellularStack { +public: + QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + virtual ~QUECTEL_M26_CellularStack(); + +protected: // NetworkStack + + virtual nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog); + + virtual nsapi_error_t socket_accept(nsapi_socket_t server, + nsapi_socket_t *handle, SocketAddress *address = 0); + + virtual nsapi_error_t socket_bind(nsapi_socket_t handle, const SocketAddress &address); + + virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address); + +protected: // AT_CellularStack + + virtual nsapi_error_t socket_stack_init(); + + virtual int get_max_socket_count(); + + virtual bool is_protocol_supported(nsapi_protocol_t protocol); + + virtual nsapi_error_t socket_close_impl(int sock_id); + + virtual nsapi_error_t create_socket_impl(CellularSocket *socket); + + virtual nsapi_size_or_error_t socket_sendto_impl(CellularSocket *socket, const SocketAddress &address, + const void *data, nsapi_size_t size); + + virtual nsapi_size_or_error_t socket_recvfrom_impl(CellularSocket *socket, SocketAddress *address, + void *buffer, nsapi_size_t size); + +private: + // URC handlers + // URC handlers + void urc_qiurc(); + + void handle_open_socket_response(int &modem_connect_id, int &err); +}; +} // namespace mbed +#endif /* QUECTEL_M26_CELLULARSTACK_H_ */ diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp index 86e4b72be39..5532b45b938 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp @@ -23,7 +23,7 @@ using namespace mbed; using namespace events; -#ifdef TARGET_UBLOX_C030_R410M +#ifdef TARGET_UBLOX_C030_R41XM static const AT_CellularBase::SupportedFeature unsupported_features[] = { AT_CellularBase::AT_CGSN_WITH_TYPE, AT_CellularBase::SUPPORTED_FEATURE_END_MARK @@ -32,7 +32,7 @@ static const AT_CellularBase::SupportedFeature unsupported_features[] = { UBLOX_AT::UBLOX_AT(FileHandle *fh) : AT_CellularDevice(fh) { -#ifdef TARGET_UBLOX_C030_R410M +#ifdef TARGET_UBLOX_C030_R41XM AT_CellularBase::set_unsupported_features(unsupported_features); #endif } diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp index 240710239e1..c06cf6d119c 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp @@ -50,7 +50,7 @@ void UBLOX_AT_CellularContext::do_connect() _cb_data.error = NSAPI_ERROR_NO_CONNECTION; // Attempt to establish a connection -#ifdef TARGET_UBLOX_C030_R410M +#ifdef TARGET_UBLOX_C030_R41XM _cb_data.error = NSAPI_ERROR_OK; #else _cb_data.error = open_data_channel(); diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp index 85b06a4c7e1..24b6a19c72e 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp @@ -38,6 +38,8 @@ AT_CellularNetwork::RegistrationMode UBLOX_AT_CellularNetwork::has_registration( nsapi_error_t UBLOX_AT_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) { + nsapi_error_t ret = NSAPI_ERROR_OK; + switch (opRat) { #if defined(TARGET_UBLOX_C030_U201) || defined(TARGET_UBLOX_C027) case RAT_GSM: @@ -54,18 +56,18 @@ nsapi_error_t UBLOX_AT_CellularNetwork::set_access_technology_impl(RadioAccessTe break; case RAT_HSDPA_HSUPA: break; -#elif defined(TARGET_UBLOX_C030_R410M) +#elif defined(TARGET_UBLOX_C030_R41XM) case RAT_CATM1: break; -#elif defined(TARGET_UBLOX_C030_R410M) || defined(TARGET_UBLOX_C030_N211) +#elif defined(TARGET_UBLOX_C030_R41XM) || defined(TARGET_UBLOX_C030_N211) case RAT_NB1: break; #endif default: { _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; + ret = NSAPI_ERROR_UNSUPPORTED; } } - return NSAPI_ERROR_OK; + return(ret); } diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/Readme.md b/features/cryptocell/FEATURE_CRYPTOCELL310/Readme.md index 941954e45ac..6d584899c2c 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/Readme.md +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/Readme.md @@ -8,6 +8,13 @@ The CC 310 driver consists of three libraries: * A platform-specific TRNG library, containing TRNG-related information, for sampling sufficient entropy on the specific platform(`libcc_trng.a`). * A platform-specific library containing extra information, such as the CC register's base addresses on the specific board. (`libcc_ext.a`) +Library version information: + +* The CC 310 libraries were built from version `arm_sw-cc310-1.1.0.1285` +* The `IAR` libraries were built using `IAR ANSI C/C++ Compiler V7.80.1.11864/W32 for ARM` with `--cpu Cortex-M4f`. +* The `ARM` libraries were built using `ARM Compiler 5.06 update 4 (build 422)` with `--cpu cortex-m4`. +* The `GCC_ARM` libraries were built using `arm-none-eabi-gcc 6.3.1 20170620 (release)` with `-mcpu=cortex-m4`. + To port your CC 310 driver to Mbed OS on your specific target, do the following: 1. In `targets.json` add the following to your target: @@ -17,5 +24,5 @@ To port your CC 310 driver to Mbed OS on your specific target, do the following: 1. In `features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_`, add your platform-specific libraries for all toolchains in `TOOLCHAIN_ARM`, `TOOLCHAIN_GCC_ARM` and `TOOLCHAIN_IAR` respectively. 1. Add your CC setup code: * Implement `crypto_platform_setup()` and `crypto_platform_terminate()` to enable CC on your platform, in case you have board-specific setup functionality, required for CC setup. You MUST call 'SaSi_LibInit()` and 'SaSi_LibFini()' respectively in these functions. - * Define `crypto_platform_ctx` in `crypto_platform.h` in a way that suits your implementation. + * Define `crypto_platform_ctx` in `crypto_device_platform.h` in a way that suits your implementation. diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_ext.ar b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_ext.ar index 07f546ccf25..40e27f7e4a2 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_ext.ar and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_ext.ar differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_trng.ar b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_trng.ar index e1e34ce8100..17f0057fcd3 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_trng.ar and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_ARM/libcc_310_trng.ar differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_ext.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_ext.a index 68b3dce450c..64c57cceb72 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_ext.a and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_ext.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_trng.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_trng.a index e5185062486..df24c2c2c90 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_trng.a and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_GCC_ARM/libcc_310_trng.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_ext.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_ext.a new file mode 100644 index 00000000000..3b54c606137 Binary files /dev/null and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_ext.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_trng.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_trng.a new file mode 100644 index 00000000000..312518e1e67 Binary files /dev/null and b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/lib_cc310_trng.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_ext_short_wchar_0.9.9.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_ext_short_wchar_0.9.9.a deleted file mode 100644 index 26130959532..00000000000 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_ext_short_wchar_0.9.9.a and /dev/null differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_trng_short_wchar_0.9.9.a b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_trng_short_wchar_0.9.9.a deleted file mode 100644 index 889c117f196..00000000000 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/TOOLCHAIN_IAR/libnrf_cc310_trng_short_wchar_0.9.9.a and /dev/null differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_platform.c b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_device_platform.c similarity index 100% rename from features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_platform.c rename to features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_device_platform.c diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_platform.h b/features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_device_platform.h similarity index 100% rename from features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_platform.h rename to features/cryptocell/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840/crypto_device_platform.h diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_ARM/libcc_310_core.ar b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_ARM/libcc_310_core.ar index d6db74847ae..3121265c28d 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_ARM/libcc_310_core.ar and b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_ARM/libcc_310_core.ar differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_GCC_ARM/libcc_310_core.a b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_GCC_ARM/libcc_310_core.a index 4d0d8957775..bace518f9b3 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_GCC_ARM/libcc_310_core.a and b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_GCC_ARM/libcc_310_core.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_IAR/lib_cc310_core.a b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_IAR/lib_cc310_core.a index b23330ccc4d..498bd54c800 100644 Binary files a/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_IAR/lib_cc310_core.a and b/features/cryptocell/FEATURE_CRYPTOCELL310/binaries/TOOLCHAIN_IAR/lib_cc310_core.a differ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/cc_internal.c b/features/cryptocell/FEATURE_CRYPTOCELL310/cc_internal.c index 5415975c0b4..d3502e45dcf 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/cc_internal.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/cc_internal.c @@ -144,6 +144,8 @@ int convert_CrysError_to_mbedtls_err( CRYSError_t Crys_err ) case CRYS_ECPKI_GEN_KEY_INVALID_PRIVATE_KEY_PTR_ERROR: case CRYS_ECPKI_EXPORT_PUBL_KEY_INVALID_PUBL_KEY_DATA_ERROR: case CRYS_ECPKI_BUILD_KEY_INVALID_PRIV_KEY_DATA_ERROR: + case CRYS_ECPKI_BUILD_KEY_INVALID_PRIV_KEY_SIZE_ERROR: + case CRYS_ECPKI_BUILD_KEY_INVALID_PUBL_KEY_SIZE_ERROR: return ( MBEDTLS_ERR_ECP_INVALID_KEY ); default: diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/ecdh_alt.c b/features/cryptocell/FEATURE_CRYPTOCELL310/ecdh_alt.c index b6df3f22469..b1a9b463730 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/ecdh_alt.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/ecdh_alt.c @@ -27,15 +27,10 @@ #include "crys_ecpki_domain.h" #include "crys_ec_mont_api.h" #include "mbedtls/platform.h" +#include "mbedtls/platform_util.h" #include "cc_internal.h" -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = (unsigned char*)v; - while( n-- ) *p++ = 0; -} - #if defined (MBEDTLS_ECDH_GEN_PUBLIC_ALT) int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int ( *f_rng )( void *, unsigned char *, size_t ), @@ -84,12 +79,12 @@ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp 4*((((grp->nbits+7)/8)+3)/4) ) ); if( ret != 0 ) { - mbedtls_zeroize( temp_buf, sizeof( temp_buf ) ); + mbedtls_platform_zeroize( temp_buf, sizeof( temp_buf ) ); goto cleanup; } MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary( d, temp_buf, (grp->nbits+7)/8 ) ); - mbedtls_zeroize( temp_buf, sizeof( temp_buf ) ); + mbedtls_platform_zeroize( temp_buf, sizeof( temp_buf ) ); } /* if CRYS_ECPKI_GetEcDomain returns NULL, then the given curve is either Montgomery 25519 @@ -124,7 +119,7 @@ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp if ( pHeap ) { - mbedtls_zeroize( pHeap, heapSize ); + mbedtls_platform_zeroize( pHeap, heapSize ); mbedtls_free( pHeap ); } @@ -190,7 +185,7 @@ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, temp_buf, mbedtls_mpi_size( d ), &ecdhParams->privKey ) ); - mbedtls_zeroize( temp_buf, sizeof( temp_buf ) ); + mbedtls_platform_zeroize( temp_buf, sizeof( temp_buf ) ); if ( ret != 0 ) { goto cleanup; @@ -241,13 +236,13 @@ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, if ( pHeap ) { - mbedtls_zeroize( pHeap, heapSize ); + mbedtls_platform_zeroize( pHeap, heapSize ); mbedtls_free ( pHeap ); } if ( secret ) { - mbedtls_zeroize( secret, secret_size_in_heap ); + mbedtls_platform_zeroize( secret, secret_size_in_heap ); mbedtls_free ( secret ); } diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/ecdsa_alt.c b/features/cryptocell/FEATURE_CRYPTOCELL310/ecdsa_alt.c index fb7e87121bd..16a897640f6 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/ecdsa_alt.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/ecdsa_alt.c @@ -27,14 +27,9 @@ #include "crys_ecpki_domain.h" #include "crys_ec_edw_api.h" #include "mbedtls/platform.h" +#include "mbedtls/platform_util.h" #include "cc_internal.h" -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = (unsigned char*)v; - while( n-- ) *p++ = 0; -} - static CRYS_ECPKI_HASH_OpMode_t message_size_to_hash_mode( size_t blen ) { CRYS_ECPKI_HASH_OpMode_t hash_mode; @@ -110,7 +105,7 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, if( CrysRet != CRYS_OK ) { ret = convert_CrysError_to_mbedtls_err( CrysRet ); - mbedtls_zeroize( temp_buf, sizeof(temp_buf) ); + mbedtls_platform_zeroize( temp_buf, sizeof(temp_buf) ); goto cleanup; } @@ -123,7 +118,7 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, blen, pSignature, &signature_size ); - mbedtls_zeroize( temp_buf, sizeof(temp_buf) ); + mbedtls_platform_zeroize( temp_buf, sizeof(temp_buf) ); if( CrysRet != CRYS_OK ) { ret = convert_CrysError_to_mbedtls_err( CrysRet ); @@ -145,13 +140,13 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, if ( pHeap ) { - mbedtls_zeroize( pHeap, heapSize ); + mbedtls_platform_zeroize( pHeap, heapSize ); mbedtls_free( pHeap ); } if( pSignature ) { - mbedtls_zeroize( pSignature, signature_size_for_heap ); + mbedtls_platform_zeroize( pSignature, signature_size_for_heap ); mbedtls_free( pSignature ); } @@ -232,13 +227,13 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, if( pHeap ) { - mbedtls_zeroize( pHeap, heapSize ); + mbedtls_platform_zeroize( pHeap, heapSize ); mbedtls_free( pHeap ); } if( pSignature ) { - mbedtls_zeroize( pSignature, signature_size ); + mbedtls_platform_zeroize( pSignature, signature_size ); mbedtls_free( pSignature ); } @@ -301,12 +296,12 @@ int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, if ( CrysRet != CRYS_OK ) { ret = convert_CrysError_to_mbedtls_err( CrysRet ); - mbedtls_zeroize( temp_buf, sizeof(temp_buf) ); + mbedtls_platform_zeroize( temp_buf, sizeof(temp_buf) ); goto cleanup; } ret = mbedtls_mpi_read_binary( &ctx->d, temp_buf, (ctx->grp.nbits+7)/8 ); - mbedtls_zeroize( temp_buf, sizeof(temp_buf) ); + mbedtls_platform_zeroize( temp_buf, sizeof(temp_buf) ); if ( ret != 0 ) { goto cleanup; @@ -319,7 +314,7 @@ int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, cleanup: if ( pHeap ) { - mbedtls_zeroize( pHeap, heapSize ); + mbedtls_platform_zeroize( pHeap, heapSize ); mbedtls_free ( pHeap ); } return ( ret ); diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.c b/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.c index c721fb7b9f2..f750485413e 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.c @@ -21,11 +21,11 @@ #include "mbedtls/sha1.h" #if defined(MBEDTLS_SHA1_ALT) #include +#include "mbedtls/platform.h" void mbedtls_sha1_init( mbedtls_sha1_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_sha1_context ) ); - } void mbedtls_sha1_free( mbedtls_sha1_context *ctx ) @@ -64,10 +64,10 @@ int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx, int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, unsigned char output[20] ) { - CRYSError_t CrysErr = CRYS_OK; + CRYSError_t crys_err = CRYS_OK; CRYS_HASH_Result_t crys_result = {0}; - CrysErr = CRYS_HASH_Finish( &ctx->crys_hash_ctx, crys_result ); - if( CrysErr == CRYS_OK ) + crys_err = CRYS_HASH_Finish( &ctx->crys_hash_ctx, crys_result ); + if( crys_err == CRYS_OK ) { memcpy( output, crys_result, 20 ); return ( 0 ); @@ -79,8 +79,6 @@ int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx, const unsigned char data[64] ) { - if( CRYS_HASH_Update( &ctx->crys_hash_ctx, (uint8_t*)data, 64 ) != CRYS_OK ) - return ( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED ); - return ( 0 ); + return( MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ); } #endif //MBEDTLS_SHA1_ALT diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.h b/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.h index d9a74f2410f..245910b330e 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.h +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/sha1_alt.h @@ -22,10 +22,6 @@ #define __SHA1_ALT__ #if defined(MBEDTLS_SHA1_ALT) #include "crys_hash.h" -#ifdef __cplusplus -extern "C" { -#endif - /** * \brief SHA-1 context structure @@ -35,114 +31,6 @@ typedef struct CRYS_HASHUserContext_t crys_hash_ctx; } mbedtls_sha1_context; -/** - * \brief This function initializes a SHA-1 context. - * - * \param ctx The SHA-1 context to initialize. - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -void mbedtls_sha1_init( mbedtls_sha1_context *ctx ); - -/** - * \brief This function clears a SHA-1 context. - * - * \param ctx The SHA-1 context to clear. - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -void mbedtls_sha1_free( mbedtls_sha1_context *ctx ); - -/** - * \brief This function clones the state of a SHA-1 context. - * - * \param dst The destination context. - * \param src The context to clone. - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -void mbedtls_sha1_clone( mbedtls_sha1_context *dst, - const mbedtls_sha1_context *src ); - -/** - * \brief This function starts a SHA-1 checksum calculation. - * - * \param ctx The context to initialize. - * - * \return \c 0 if successful - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx ); - -/** - * \brief This function feeds an input buffer into an ongoing SHA-1 - * checksum calculation. - * - * \param ctx The SHA-1 context. - * \param input The buffer holding the input data. - * \param ilen The length of the input data. - * - * \return \c 0 if successful - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx, - const unsigned char *input, - size_t ilen ); - -/** - * \brief This function finishes the SHA-1 operation, and writes - * the result to the output buffer. - * - * \param ctx The SHA-1 context. - * \param output The SHA-1 checksum result. - * - * \return \c 0 if successful - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, - unsigned char output[20] ); - -/** - * \brief SHA-1 process data block (internal use only) - * - * \param ctx SHA-1 context - * \param data The data block being processed. - * - * \return \c 0 if successful - * - * \warning SHA-1 is considered a weak message digest and its use - * constitutes a security risk. We recommend considering - * stronger message digests instead. - * - */ -int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx, - const unsigned char data[64] ); - -#ifdef __cplusplus -} -#endif - #endif //MBEDTLS_SHA1_ALT #endif //__SHA1_ALT__ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.c b/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.c index b2a7942512e..71c42013e95 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.c @@ -21,11 +21,11 @@ #include "mbedtls/sha256.h" #if defined(MBEDTLS_SHA256_ALT) #include +#include "mbedtls/platform.h" void mbedtls_sha256_init( mbedtls_sha256_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_sha256_context ) ); - } void mbedtls_sha256_free( mbedtls_sha256_context *ctx ) @@ -54,9 +54,7 @@ int mbedtls_sha256_starts_ret( mbedtls_sha256_context *ctx, int is224 ) int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx, const unsigned char data[64] ) { - if( CRYS_HASH_Update( &ctx->crys_hash_ctx, (uint8_t*)data, 64 ) != CRYS_OK ) - return ( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED ); - return ( 0 ); + return( MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ); } int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, @@ -71,10 +69,10 @@ int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, unsigned char output[32] ) { - CRYSError_t CrysErr = CRYS_OK; + CRYSError_t crys_err = CRYS_OK; CRYS_HASH_Result_t crys_result = {0}; - CrysErr = CRYS_HASH_Finish( &ctx->crys_hash_ctx, crys_result ); - if( CrysErr == CRYS_OK ) + crys_err = CRYS_HASH_Finish( &ctx->crys_hash_ctx, crys_result ); + if( crys_err == CRYS_OK ) { memcpy( output, crys_result, 32 ); return ( 0 ); diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.h b/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.h index bdb7c45e80c..6be25f9b405 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.h +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/sha256_alt.h @@ -24,10 +24,6 @@ #if defined(MBEDTLS_SHA256_ALT) #include "crys_hash.h" -#ifdef __cplusplus -extern "C" { -#endif - /** * \brief SHA-256 context structure @@ -37,85 +33,5 @@ typedef struct CRYS_HASHUserContext_t crys_hash_ctx; } mbedtls_sha256_context; - -/** - * \brief This function initializes a SHA-256 context. - * - * \param ctx The SHA-256 context to initialize. - */ -void mbedtls_sha256_init( mbedtls_sha256_context *ctx ); - -/** - * \brief This function clears a SHA-256 context. - * - * \param ctx The SHA-256 context to clear. - */ -void mbedtls_sha256_free( mbedtls_sha256_context *ctx ); - -/** - * \brief This function clones the state of a SHA-256 context. - * - * \param dst The destination context. - * \param src The context to clone. - */ -void mbedtls_sha256_clone( mbedtls_sha256_context *dst, - const mbedtls_sha256_context *src ); - -/** - * \brief This function starts a SHA-224 or SHA-256 checksum - * calculation. - * - * \param ctx The context to initialize. - * \param is224 Determines which function to use. - *
  • 0: Use SHA-256.
  • - *
  • 1: Use SHA-224.
- * - * \return \c 0 on success. - */ -int mbedtls_sha256_starts_ret( mbedtls_sha256_context *ctx, int is224 ); - -/** - * \brief This function feeds an input buffer into an ongoing - * SHA-256 checksum calculation. - * - * \param ctx SHA-256 context - * \param input buffer holding the data - * \param ilen length of the input data - * - * \return \c 0 on success. - */ -int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, - const unsigned char *input, - size_t ilen ); - -/** - * \brief This function finishes the SHA-256 operation, and writes - * the result to the output buffer. - * - * \param ctx The SHA-256 context. - * \param output The SHA-224 or SHA-256 checksum result. - * - * \return \c 0 on success. - */ -int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, - unsigned char output[32] ); - -/** - * \brief This function processes a single data block within - * the ongoing SHA-256 computation. This function is for - * internal use only. - * - * \param ctx The SHA-256 context. - * \param data The buffer holding one block of data. - * - * \return \c 0 on success. - */ -int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx, - const unsigned char data[64] ); - -#ifdef __cplusplus -} -#endif - #endif // MBEDTLS_SHA256_ALT__ #endif //__SHA256_ALT__ diff --git a/features/cryptocell/FEATURE_CRYPTOCELL310/trng.c b/features/cryptocell/FEATURE_CRYPTOCELL310/trng.c index 5c3431d2e3f..fb2f893d30d 100644 --- a/features/cryptocell/FEATURE_CRYPTOCELL310/trng.c +++ b/features/cryptocell/FEATURE_CRYPTOCELL310/trng.c @@ -18,13 +18,13 @@ * */ -#if defined(DEVICE_TRNG) +#if DEVICE_TRNG #include #include "trng_api.h" #include "mbedtls/platform.h" -extern mbedtls_platform_context ctx; +extern mbedtls_platform_context plat_ctx; static CRYS_RND_WorkBuff_t rndWorkBuff = { { 0 } }; /* Implementation that should never be optimized out by the compiler */ @@ -49,7 +49,7 @@ CRYSError_t LLF_RND_GetTrngSource( void trng_init(trng_t *obj) { - RNG_PLAT_SetUserRngParameters(&ctx.platform_impl_ctx.rndState, obj); + RNG_PLAT_SetUserRngParameters(&plat_ctx.platform_impl_ctx.rndState, obj); } void trng_free(trng_t *obj) @@ -67,7 +67,7 @@ int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *outputLe uint32_t actualLength; ret = LLF_RND_GetTrngSource( - &ctx.platform_impl_ctx.rndState , /*in/out*/ + &plat_ctx.platform_impl_ctx.rndState , /*in/out*/ obj, /*in/out*/ 0, /*in*/ &entropySizeBits, /*in/out*/ diff --git a/features/device_key/TESTS/device_key/functionality/main.cpp b/features/device_key/TESTS/device_key/functionality/main.cpp index a88145d0325..7be7afabf8f 100644 --- a/features/device_key/TESTS/device_key/functionality/main.cpp +++ b/features/device_key/TESTS/device_key/functionality/main.cpp @@ -51,7 +51,7 @@ void generate_derived_key_consistency_32_byte_key_long_consistency_test(char *ke */ int inject_dummy_rot_key() { -#if !defined(DEVICE_TRNG) +#if !DEVICE_TRNG uint32_t key[DEVICE_KEY_16BYTE / sizeof(uint32_t)]; memcpy(key, "1234567812345678", DEVICE_KEY_16BYTE); diff --git a/features/device_key/source/DeviceKey.cpp b/features/device_key/source/DeviceKey.cpp index a76db59afb1..7491add70a8 100644 --- a/features/device_key/source/DeviceKey.cpp +++ b/features/device_key/source/DeviceKey.cpp @@ -30,6 +30,7 @@ #include "entropy.h" #include "platform_mbed.h" #include "mbed_trace.h" +#include "ssl_internal.h" #define TRACE_GROUP "DEVKEY" @@ -259,19 +260,23 @@ int DeviceKey::generate_key_by_random(uint32_t *output, size_t size) return DEVICEKEY_INVALID_PARAM; } -#if defined(DEVICE_TRNG) +#if defined(DEVICE_TRNG) || defined(MBEDTLS_ENTROPY_NV_SEED) + uint32_t test_buff[DEVICE_KEY_32BYTE / sizeof(int)]; mbedtls_entropy_context *entropy = new mbedtls_entropy_context; mbedtls_entropy_init(entropy); memset(output, 0, size); + memset(test_buff, 0, size); ret = mbedtls_entropy_func(entropy, (unsigned char *)output, size); - if (ret != MBED_SUCCESS) { + if (ret != MBED_SUCCESS || mbedtls_ssl_safer_memcmp(test_buff, (unsigned char *)output, size) == 0) { ret = DEVICEKEY_GENERATE_RANDOM_ERROR; + } else { + ret = DEVICEKEY_SUCCESS; } mbedtls_entropy_free(entropy); delete entropy; - ret = DEVICEKEY_SUCCESS; + #endif return ret; diff --git a/features/device_key/source/DeviceKey.h b/features/device_key/source/DeviceKey.h index 6dd83ecc67e..6ca024127e6 100644 --- a/features/device_key/source/DeviceKey.h +++ b/features/device_key/source/DeviceKey.h @@ -24,7 +24,7 @@ // Whole class is not supported if entropy is not enabled // Flash device is required as Device Key is currently depending on it -#if !defined(DEVICE_FLASH) || !defined(COMPONENT_FLASHIAP) +#if !DEVICE_FLASH || !defined(COMPONENT_FLASHIAP) #undef DEVICEKEY_ENABLED #define DEVICEKEY_ENABLED 0 #endif @@ -91,7 +91,7 @@ class DeviceKey : private mbed::NonCopyable { */ int generate_derived_key(const unsigned char *isalt, size_t isalt_size, unsigned char *output, uint16_t ikey_type); - /** Set a device key into the KVStore. If TRNG support is missing, call this method + /** Set a device key into the KVStore. If entropy support is missing, call this method * before calling device_key_derived_key. This method should be called only once! * @param value Input buffer contain the key. * @param isize Size of the supplied key. Must be 16 bytes or 32 bytes. @@ -131,7 +131,7 @@ class DeviceKey : private mbed::NonCopyable { int get_derived_key(uint32_t *ikey_buff, size_t ikey_size, const unsigned char *isalt, size_t isalt_size, unsigned char *output, uint32_t ikey_type); - /** Generate a random ROT key by using TRNG + /** Generate a random ROT key by using entropy * @param output Output buffer for the generated key. * @param size Input: The size of the buffer. If size is less * than 16 bytes, the method generates an diff --git a/features/frameworks/greentea-client/README.md b/features/frameworks/greentea-client/README.md index 43bc0ac6796..e77b21a7bfa 100644 --- a/features/frameworks/greentea-client/README.md +++ b/features/frameworks/greentea-client/README.md @@ -1,32 +1,21 @@ -# Table of Contents +# Table of contents * [greentea-client](#greentea-client) - * [mbed-drivers dependencies](#mbed-drivers-dependencies) - * [Greentea test tools](#greentea-test-tools) - * [Compatibility](#compatibility) - * [Greentea support](#greentea-support) - * [utest support](#utest-support) - * [greentea-client support in your module](#greentea-client-support-in-your-module) - * [Terms](#terms) + * [Concepts](#concepts) * [Test suite](#test-suite) * [Test case](#test-case) * [key-value protocol](#key-value-protocol) - * [Where can I use it?](#where-can-i-use-it) -* [Test suite model](#test-suite-model) - * [utest support template](#utest-support-template) - * [No utest support template](#no-utest-support-template) +* [Test example](#test-examplel) # greentea-client -**Tip:** If you are unsure about the terms used in this document, please see the [Terms](#Terms) section. - -```greentea-client``` is a C++ client library for [the Greentea test tool](https://github.com/ARMmbed/greentea) when used in an [mbed](www.mbed.com) project. -This package implements the slave side of the simple key-value protocol used for communication between the device under test (DUT) and the host. ```Greentea``` on the host side implements the protocol's master behavior. ```greentea-client``` is released through the [yotta registry](https://yotta.mbed.com/#/module/greentea-client/0.1.8). +`greentea-client` is a client library for [the Greentea test tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea) when used in an [Mbed OS](https://os.mbed.com/) project. +This package implements the client side of the key-value protocol used for communication between the device under test (DUT) and the host. The `Greentea` tool implements the protocol's host behavior. We use [utest](https://github.com/ARMmbed/mbed-os/blob/master/features/frameworks/utest/README.md) as our test harness. ``` - DUT <--- serial port connection ---> host - (slave) . (master) + DUT <--- serial port connection ---> host + (client) . (host) . [greentea-client] . [conn_process] [htrun] ===== . ================ ========= @@ -47,101 +36,26 @@ This package implements the slave side of the simple key-value protocol used fo . ``` -```greentea-client``` is a [yotta module](http://yottadocs.mbed.com/reference/module.html). You can easily include it in your yotta project as ```dependency```/```testDependency```. - -## mbed-drivers dependencies - -This package was introduced as a future replacement for the [mbed-drivers/test_env.h](https://github.com/ARMmbed/mbed-drivers/blob/master/mbed-drivers/test_env.h) test framework. ```mbed-drivers/test_env.h``` is no longer considered the correct way to write tests for mbed modules. - -Examples of test cases ported from the old ```mbed-drivers/test_env``` to the ```greentea-client``` model can be found here: -* [core-util](https://github.com/ARMmbed/core-util/pull/95) -* [ualloc](https://github.com/ARMmbed/ualloc/pull/24) -* [minar](https://github.com/ARMmbed/minar/pull/36) -* [mbed-drivers](https://github.com/ARMmbed/mbed-drivers/pull/165) -* [sal](https://github.com/ARMmbed/sal/pull/46) -* [sockets](https://github.com/ARMmbed/sockets/pull/64) -* [utest](https://github.com/ARMmbed/utest/pull/6) - -## Greentea test tools - -```Greentea``` is a test automation tool written in Python and designed to automate test execution for [mbed](www.mbed.com) projects encapsulated as [yotta](http://yottadocs.mbed.com) modules. Its key features include: integration with yotta module, test automation for yotta module's tests and reporting. - -## Compatibility - -```greentea-client``` is compatible with: -* [Greentea](https://github.com/ARMmbed/greentea) v0.2.x onwards -* [htrun](https://github.com/ARMmbed/htrun) v0.2.x onwards -* [utest](https://github.com/ARMmbed/utest) v1.10.0 onwards -* [unity](https://github.com/ARMmbed/utest) v2.0.1 onwards - -### Greentea support - -If you wish to use ```greentea-client``` please make sure you are using latest ```Greentea``` tools from [PyPI](https://pypi.python.org/pypi/mbed-greentea) (you will need Python 2.7): -``` -$ pip install mbed-greentea --upgrade -``` - -*Note*: If you previously used ```mbed-drivers/test_env.h``` features to write your test cases please downgrade ```Greentea``` to a version lower than ```v0.2.0``` to stay compatible: -``` -$ pip install "mbed-greentea<0.2.0" --upgrade -``` - -*Note*: [Greentea v0.1.x](https://github.com/ARMmbed/greentea/tree/master_v0_1_x) is still developed on a ```master_v0_1_x``` branch. We will only apply critical patches to version 0.1.x, no feature development is planned. - -### utest support - -```utest``` is our preferred test harness which allows you to execute a series of (asynchronous) C++ test cases. ```greentea-client``` includes as test dependency ```utest``` yotta module. See the ```greentea-client``` [module.json](https://github.com/ARMmbed/greentea-client/blob/master/module.json) ```testDependency``` section: -```json -{ - "testDependencies": { - "utest": "^1.10.0" - } -} -``` - -### greentea-client support in your module - -Currently ```greentea-client``` is in on version ```1.0.x```. Please use a ```^1.0.0``` dependency version in your ```module.json``` file. - -Example of ```module.json``` file with ```greentea-client``` as a test dependency: -```json -{ - "testDependencies": { - "greentea-client": "^1.0.0", - "utest" : "^1.10.0", - "unity" : "^2.1.0" - } -} -``` - -## Terms +## Concepts ### Test suite -A test suite is a binary containing test cases we execute on hardware. The test suite has a beginning and an end (like your ```main()``` function would. The test suite may pass, fail or be in an error state (for example if test suite times out or there was a serial port connection problem). -### Test case +A test suite is a binary containing test cases we execute on hardware. The test suite has a beginning and an end (like the `main()` function would. The test suite may pass, fail or be in an error state (for example, if the test suite times out or there was a serial port connection problem). -Preferably you will use ```utest``` to define test cases . test case has the beginning and the end. During test case execution you will use ``ùnity``` assert macros, schedule MINAR callbacks, check for timeouts in your code. Your test cases may pass, fail or be in an error state which means something went wrong and we were unable to determine exactly what that was (you may have to check the logs). +### Test case -### key-value protocol +A test case is contained within a test suite. You can have multiple test cases within a test suite. `unity` assert macros are used to run the checks during the test case. Your test cases may pass, fail or be in an error state. -The key-value protocol (also called ```KiVi```) is a simple protocol introduced to the ```Greentea``` test tools. It is used to send simple text messages (events) between the DUT and the host. Each message consists of a _key_ and corresponding _value_ pair. -A ```KiVi``` message is defined as a string encapsulated between double curly braces. The key and value are separated by a semicolon (```;```). -For example: the ```{{timeout;120}}}``` string is a simple key-value message where the key "_timeout_" is associated with the value "_120_". Both ```greentea-client``` and ```Greentea``` understand this format and can detect key-value messages in a data stream. Both _key_ and _value_ are ASCII strings. -This protocol is a master-slave protocol. The host has the role of _master_ and the DUT is the _slave_. +### Key-value protocol -```greentea-client``` implements the key-value protocol tokenizer and parser. +The key-value protocol is a protocol specific to the `Greentea` test tool. It is used to send messages (events) between the DUT and the host. Each message consists of a _key_ and _value_ pair. A message is surrounded by double curly braces. The key and value are separated by a semicolon (`;`). -## Where can I use it? -It is possible to write test cases that use ```greentea-client``` and at the same time support ```mbed``` features such as [MINAR scheduler](https://github.com/ARMmbed/minar). It is also possible to mix ```greentea-client``` with other test tools we use at ```mbed``` such as [utest](https://github.com/ARMmbed/utest) and [unity](https://github.com/ARMmbed/unity). +For example, the `{{timeout;120}}}` string is a key-value message where the key `timeout` has the value `120`. Both `greentea-client` and `Greentea` understand this format and can detect key-value messages in a data stream. -You can also find references to ```greentea-client``` in many ```mbed``` packages. For example: - * [mbed-drivers](https://github.com/ARMmbed/mbed-drivers) - check its [module.json](https://github.com/ARMmbed/mbed-drivers/blob/master/module.json) - * [core-util](https://github.com/ARMmbed/core-util) - check its [module.json](https://github.com/ARMmbed/core-util/blob/master/module.json) +## Test example -# Test suite model -## utest support template ```c++ +#include "mbed.h" #include "greentea-client/test_env.h" #include "utest/utest.h" #include "unity/unity.h" @@ -170,24 +84,7 @@ status_t greentea_setup(const size_t number_of_cases) { return greentea_test_setup_handler(number_of_cases); } -void app_start(int, char*[]) { +void main(int, char*[]) { Harness::run(specification); } ``` -## No utest support template -```c++ -#include "greentea-client/test_env.h" -#include "unity/unity.h" - -void app_start(int, char*[]) { - bool result = true; - GREENTEA_SETUP(15, "default_auto"); - - // Test suite body - // Here you can run your test cases and or assertions - TEST_ASSERT_TRUE(true); - TEST_ASSERT_FALSE(false); - - GREENTEA_TESTSUITE_RESULT(result); -} -``` diff --git a/features/frameworks/greentea-client/greentea-client/test_env.h b/features/frameworks/greentea-client/greentea-client/test_env.h index 672874d29ac..f041233377d 100644 --- a/features/frameworks/greentea-client/greentea-client/test_env.h +++ b/features/frameworks/greentea-client/greentea-client/test_env.h @@ -22,11 +22,7 @@ #define GREENTEA_CLIENT_TEST_ENV_H_ #ifdef __cplusplus -#ifdef YOTTA_GREENTEA_CLIENT_VERSION_STRING -#define MBED_GREENTEA_CLIENT_VERSION_STRING YOTTA_GREENTEA_CLIENT_VERSION_STRING -#else #define MBED_GREENTEA_CLIENT_VERSION_STRING "1.3.0" -#endif #include @@ -41,7 +37,7 @@ #endif /** - * Auxilary macros to keep mbed-drivers compatibility with utest before greentea-client + * Ensure compatibility with utest */ #define TEST_ENV_TESTCASE_COUNT GREENTEA_TEST_ENV_TESTCASE_COUNT #define TEST_ENV_TESTCASE_START GREENTEA_TEST_ENV_TESTCASE_START diff --git a/features/frameworks/greentea-client/source/greentea_test_env.cpp b/features/frameworks/greentea-client/source/greentea_test_env.cpp index 2a5dda1b8f6..1b59eca20b5 100644 --- a/features/frameworks/greentea-client/source/greentea_test_env.cpp +++ b/features/frameworks/greentea-client/source/greentea_test_env.cpp @@ -158,8 +158,8 @@ extern bool coverage_report; * * Generates preamble of message sent to notify host about code coverage data dump. * - * This function is used by mbedOS software - * (see: mbed-drivers/source/retarget.cpp file) to generate code coverage + * This function is used by Mbed OS + * (see: mbed-os/platform/mbed_retarget.cpp) to generate code coverage * messages to host. When code coverage feature is turned on slave will * print-out code coverage data in form of key-value protocol. * Message with code coverage data will contain message name, path to code @@ -176,8 +176,8 @@ void greentea_notify_coverage_start(const char *path) { /** * \brief Sufix for code coverage message to master (closing statement) * - * This function is used by mbedOS software - * (see: mbed-drivers/source/retarget.cpp file) to generate code coverage + * This function is used by Mbed OS + * (see: mbed-os/platform/mbed_retarget.cpp) to generate code coverage * messages to host. When code coverage feature is turned on slave will * print-out code coverage data in form of key-value protocol. * Message with code coverage data will contain message name, path to code diff --git a/features/frameworks/mbed-client-randlib/module.json b/features/frameworks/mbed-client-randlib/module.json deleted file mode 100644 index 863baaa504a..00000000000 --- a/features/frameworks/mbed-client-randlib/module.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "nanostack-randlib", - "version": "1.2.0", - "description": "Pseudo random library used by mbed-client and 6LoWPAN stack.", - "keywords": [], - "homepage": "https://github.com/ARMmbed/mbed-client-randlib", - "license": "Apache-2.0", - "extraIncludes": [ - "mbed-client-randlib" - ], - "dependencies": {}, - "targetDependencies": {} -} diff --git a/features/frameworks/mbed-coap/.yotta_ignore b/features/frameworks/mbed-coap/.yotta_ignore deleted file mode 100644 index 6cd3f5174f8..00000000000 --- a/features/frameworks/mbed-coap/.yotta_ignore +++ /dev/null @@ -1,5 +0,0 @@ -# need unity.h: -unittest/* -test/* -doxygen/* - diff --git a/features/frameworks/mbed-coap/CHANGELOG.md b/features/frameworks/mbed-coap/CHANGELOG.md index 230a23d44b7..4e0355bf700 100644 --- a/features/frameworks/mbed-coap/CHANGELOG.md +++ b/features/frameworks/mbed-coap/CHANGELOG.md @@ -1,5 +1,24 @@ # Change Log +## [v4.7.4](https://github.com/ARMmbed/mbed-coap/releases/tag/v4.7.4) + +- Remove dependency to yotta tool +- Do not remove stored (GET) blockwise message when EMPTY ACK received + When non piggybacked response mode is used original GET request must not be removed from the stored message list. + Message is needed for building the next (GET) blockwise message. +- Move definitions to sn_config.h + +-[Full Changelog](https://github.com/ARMmbed/mbed-coap/compare/v4.7.3...v4.7.4) + +## [v4.7.3](https://github.com/ARMmbed/mbed-coap/releases/tag/v4.7.3) + +- Do not store EMPTY response to blockwise list + An Empty message only contains the 4-byte header so it does not require any blockwise operations. + This will fix unneseccary message sending timeouts which leads mbed cloud client to do unnecessary + reconnections which increases the network traffic. + +-[Full Changelog](https://github.com/ARMmbed/mbed-coap/compare/v4.7.2...v4.7.3) + ## [v4.7.2](https://github.com/ARMmbed/mbed-coap/releases/tag/v4.7.2) - Fix handling of duplicate blockwise ACK's diff --git a/features/frameworks/mbed-coap/Makefile.test b/features/frameworks/mbed-coap/Makefile.test index 4cc7296c5f4..78cf60fbbce 100644 --- a/features/frameworks/mbed-coap/Makefile.test +++ b/features/frameworks/mbed-coap/Makefile.test @@ -11,6 +11,28 @@ TESTDIRS := $(UNITTESTS:%=build-%) CLEANTESTDIRS := $(UNITTESTS:%=clean-%) COVERAGEFILE := ./lcov/coverage.info +TEST_MODULES = ./test_modules +TEST_MODULE_MBED_TRACE = $(TEST_MODULES)/mbed-trace +TEST_MODULE_NANOSTACK = $(TEST_MODULES)/nanostack-libservice +TEST_MODULE_RANDLIB = $(TEST_MODULES)/mbed-client-randlib + +.PHONY: clone +clone: + if [ ! -d $(TEST_MODULES) ]; \ + then mkdir $(TEST_MODULES); \ + fi; + + if [ ! -d $(TEST_MODULE_MBED_TRACE) ]; \ + then git clone --depth 1 git@github.com:ARMmbed/mbed-trace.git $(TEST_MODULE_MBED_TRACE); \ + fi; + + if [ ! -d $(TEST_MODULE_NANOSTACK) ]; \ + then git clone --depth 1 git@github.com:ARMmbed/nanostack-libservice.git $(TEST_MODULE_NANOSTACK); \ + fi; + + if [ ! -d $(TEST_MODULE_RANDLIB) ]; \ + then git clone --depth 1 git@github.com:ARMmbed/mbed-client-randlib.git $(TEST_MODULE_RANDLIB); \ + fi; .PHONY: test test: $(TESTDIRS) @rm -rf ./lcov @@ -27,7 +49,7 @@ test: $(TESTDIRS) @rm -f lcov/index.xml @find ./ -name '*.gcno' | xargs cp --backup=numbered -t ./coverage/ @find ./ -name '*.gcda' | xargs cp --backup=numbered -t ./coverage/ - @gcovr --object-directory ./coverage --exclude-unreachable-branches -e '.*/builds/.*' -e '.*/test/.*' -e '.*/yotta_modules/.*' -e '.*/stubs/.*' -e '.*/mbed-coap/.*' -x -o ./lcov/gcovr.xml + @gcovr --object-directory ./coverage --exclude-unreachable-branches -e '.*/builds/.*' -e '.*/test/.*' -e '.*/stubs/.*' -e '.*/mbed-coap/.*' -x -o ./lcov/gcovr.xml @lcov -d test/. -c -o $(COVERAGEFILE) @lcov -q -r $(COVERAGEFILE) "/usr*" -o $(COVERAGEFILE) @lcov -q -r $(COVERAGEFILE) "/test*" -o $(COVERAGEFILE) diff --git a/features/frameworks/mbed-coap/mbed-coap/sn_config.h b/features/frameworks/mbed-coap/mbed-coap/sn_config.h index 5794af5cbc8..63652826ede 100644 --- a/features/frameworks/mbed-coap/mbed-coap/sn_config.h +++ b/features/frameworks/mbed-coap/mbed-coap/sn_config.h @@ -17,6 +17,10 @@ #ifndef SN_CONFIG_H #define SN_CONFIG_H +#ifdef MBED_CLIENT_USER_CONFIG_FILE +#include MBED_CLIENT_USER_CONFIG_FILE +#endif + /** * \brief Configuration options (set of defines and values) * @@ -30,9 +34,15 @@ * \brief For Message duplication detection * Init value for the maximum count of messages to be stored for duplication detection * Setting of this value to 0 will disable duplication check, also reduce use of ROM memory - * Default is set to 1. + * Default is set to 0. */ -#undef SN_COAP_DUPLICATION_MAX_MSGS_COUNT /* 1 */ +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT +#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT +#endif + +#ifndef SN_COAP_DUPLICATION_MAX_MSGS_COUNT +#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT 0 +#endif /** * \def SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE @@ -42,7 +52,13 @@ * also reduce use of ROM memory. * Note: This define is common for both received and sent Blockwise messages */ -#undef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE /* 0 */ // < Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024 +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE +#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE +#endif + +#ifndef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE +#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE 0 /**< Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024 */ +#endif /** * \def SN_COAP_DISABLE_RESENDINGS @@ -50,21 +66,33 @@ * when using CoAP with TCP transport for example. By default resendings are * enabled. Set to 1 to disable. */ -#undef SN_COAP_DISABLE_RESENDINGS /* 0 */ // < Default re-sending are not disabled. Set to 1 to disable re-sendings +#ifdef SN_COAP_DISABLE_RESENDINGS +#define ENABLE_RESENDINGS 0 /** Disable resendings **/ +#else +#define ENABLE_RESENDINGS 1 /**< Enable / Disable resending from library in building */ +#endif /** * \def SN_COAP_RESENDING_QUEUE_SIZE_MSGS * \brief Sets the number of messages stored * in the resending queue. Default is 2 */ -#undef SN_COAP_RESENDING_QUEUE_SIZE_MSGS /* 2 */ // < Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS +#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS +#endif + +#ifndef SN_COAP_RESENDING_QUEUE_SIZE_MSGS +#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS 2 /**< Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature */ +#endif /** * \def DEFAULT_RESPONSE_TIMEOUT * \brief Sets the CoAP re-send interval in seconds. * By default is 10 seconds. */ -#undef DEFAULT_RESPONSE_TIMEOUT +#ifndef DEFAULT_RESPONSE_TIMEOUT +#define DEFAULT_RESPONSE_TIMEOUT 10 /**< Default re-sending timeout as seconds */ +#endif /** * \def SN_COAP_RESENDING_QUEUE_SIZE_BYTES @@ -72,7 +100,13 @@ * Setting this to 0 disables this feature. * By default, this feature is disabled. */ -#undef SN_COAP_RESENDING_QUEUE_SIZE_BYTES /* 0 */ // Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES +#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES +#endif + +#ifndef SN_COAP_RESENDING_QUEUE_SIZE_BYTES +#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES 0 /**< Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature */ +#endif /** * \def SN_COAP_MAX_INCOMING_MESSAGE_SIZE @@ -83,7 +117,9 @@ * available storage capability. * By default, maximum size is UINT16_MAX, 65535 bytes. */ -#undef SN_COAP_MAX_INCOMING_MESSAGE_SIZE /* UINT16_MAX */ +#ifndef SN_COAP_MAX_INCOMING_MESSAGE_SIZE +#define SN_COAP_MAX_INCOMING_MESSAGE_SIZE UINT16_MAX +#endif /** * \def SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE @@ -98,21 +134,27 @@ * Note that value should be less than transport layer maximum fragment size. * Note that value has no effect if blockwise transfer is disabled. */ -#undef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE /* 0 */ +#ifndef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE +#define SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE 0 +#endif /** * \def SN_COAP_BLOCKWISE_ENABLED * \brief Enables the blockwise functionality in CoAP library also when blockwise payload * size is set to '0' in SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE. */ -#undef SN_COAP_BLOCKWISE_ENABLED /* 0 */ +#ifndef SN_COAP_BLOCKWISE_ENABLED +#define SN_COAP_BLOCKWISE_ENABLED 0 /**< Enable blockwise */ +#endif /** * \def SN_COAP_RESENDING_MAX_COUNT * \brief Defines how many times CoAP library tries to re-send the CoAP packet. * By default value is 3. */ -#undef SN_COAP_RESENDING_MAX_COUNT /* 3 */ +#ifndef SN_COAP_RESENDING_MAX_COUNT +#define SN_COAP_RESENDING_MAX_COUNT 3 +#endif /** * \def SN_COAP_MAX_ALLOWED_RESENDING_COUNT @@ -120,7 +162,9 @@ * 'sn_coap_protocol_set_retransmission_parameters()' API. * By default value is 6. */ -#undef SN_COAP_MAX_ALLOWED_RESENDING_COUNT /* 6 */ +#ifndef SN_COAP_MAX_ALLOWED_RESENDING_COUNT +#define SN_COAP_MAX_ALLOWED_RESENDING_COUNT 6 /**< Maximum allowed count of re-sending */ +#endif /** * \def SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT @@ -128,7 +172,9 @@ * 'sn_coap_protocol_set_retransmission_parameters()' API. * By default value is 40. */ -#undef SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT /* 40 */ +#ifndef SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT +#define SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT 40 /**< Maximum allowed re-sending timeout */ +#endif /** * \def SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS @@ -136,7 +182,9 @@ * 'sn_coap_protocol_set_retransmission_buffer()' API. * By default value is 6. */ -#undef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS /* 6 */ +#ifndef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS +#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS 6 /**< Maximum allowed number of saved re-sending messages */ +#endif /** * \def SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES @@ -144,7 +192,9 @@ * 'sn_coap_protocol_set_retransmission_buffer()' API. * By default value is 512. */ -#undef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES /* 512 */ +#ifndef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES +#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES 512 /**< Maximum allowed size of re-sending buffer */ +#endif /** * \def SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT @@ -152,14 +202,18 @@ * that can be set via 'sn_coap_protocol_set_duplicate_buffer_size' API. * By default value is 6. */ -#undef SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT +#ifndef SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT +#define SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT 6 +#endif /** * \def SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED * \brief Maximum time in seconds howe long message is kept for duplicate detection. * By default 60 seconds. */ -#undef SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED +#ifndef SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED +#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED 60 /** RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time **/ +#endif /** * \def SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED @@ -167,17 +221,25 @@ * Longer time will increase the memory consumption in lossy networks. * By default 60 seconds. */ -#undef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED +#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED +#endif + +#ifndef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED +#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED 60 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */ +#endif /** * \def SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE * \brief Maximum size of blockwise message that can be received. * By default 65535 bytes. */ -#undef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE +#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE +#endif -#ifdef MBED_CLIENT_USER_CONFIG_FILE -#include MBED_CLIENT_USER_CONFIG_FILE +#ifndef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE +#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE UINT16_MAX #endif #endif // SN_CONFIG_H diff --git a/features/frameworks/mbed-coap/module.json b/features/frameworks/mbed-coap/module.json deleted file mode 100644 index c170db093c0..00000000000 --- a/features/frameworks/mbed-coap/module.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "mbed-coap", - "version": "4.7.2", - "description": "COAP library", - "keywords": [ - "coap", - "nanostack" - ], - "license": "Apache-2.0", - "dependencies": { - "nanostack-libservice": "^3.0.0", - "mbed-trace": ">=0.2.0,<2.0.0", - "nanostack-randlib": "^1.2.0" - }, - "targetDependencies": {}, - "author": "Yogesh Pande ", - "repository": { - "url": "https://github.com/ARMmbed/mbed-coap.git", - "type": "git" - }, - "homepage": "https://github.com/ARMmbed/mbed-coap", - "extraIncludes": [ - "mbed-coap", - "source/include" - ] -} diff --git a/features/frameworks/mbed-coap/run_unit_tests.sh b/features/frameworks/mbed-coap/run_unit_tests.sh index 797ca2c6ce9..de190fe1399 100755 --- a/features/frameworks/mbed-coap/run_unit_tests.sh +++ b/features/frameworks/mbed-coap/run_unit_tests.sh @@ -17,7 +17,6 @@ echo echo "Build mbed-coap C unit tests" echo -yt target x86-linux-native -yt up +make -f Makefile.test clone make -f Makefile.test test #make -f Makefile.test test clean diff --git a/features/frameworks/mbed-coap/source/include/sn_coap_protocol_internal.h b/features/frameworks/mbed-coap/source/include/sn_coap_protocol_internal.h index 0eff1383311..36546845173 100644 --- a/features/frameworks/mbed-coap/source/include/sn_coap_protocol_internal.h +++ b/features/frameworks/mbed-coap/source/include/sn_coap_protocol_internal.h @@ -34,118 +34,13 @@ extern "C" { struct sn_coap_hdr_; -/* * * * * * * * * * * */ -/* * * * DEFINES * * * */ -/* * * * * * * * * * * */ - -/* * For Message resending * */ -#ifdef SN_COAP_DISABLE_RESENDINGS -#define ENABLE_RESENDINGS 0 /* Disable resendings */ -#else -#define ENABLE_RESENDINGS 1 /**< Enable / Disable resending from library in building */ -#endif - -#define SN_COAP_RESENDING_MAX_COUNT 3 /**< Default number of re-sendings */ - -#ifdef YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_MSGS -#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_MSGS -#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS -#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS -#endif - -#ifndef SN_COAP_RESENDING_QUEUE_SIZE_MSGS -#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS 2 /**< Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature */ -#endif - -#ifdef YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_BYTES -#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_BYTES -#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES -#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES -#endif - -#ifndef SN_COAP_RESENDING_QUEUE_SIZE_BYTES -#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES 0 /**< Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature */ -#endif - -#define DEFAULT_RESPONSE_TIMEOUT 10 /**< Default re-sending timeout as seconds */ - -/* These parameters sets maximum values application can set with API */ -#define SN_COAP_MAX_ALLOWED_RESENDING_COUNT 6 /**< Maximum allowed count of re-sending */ -#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS 6 /**< Maximum allowed number of saved re-sending messages */ -#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES 512 /**< Maximum allowed size of re-sending buffer */ -#define SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT 40 /**< Maximum allowed re-sending timeout */ - -#define RESPONSE_RANDOM_FACTOR 1.5 /**< Resending random factor, value is specified in IETF CoAP specification */ - -/* * For Message duplication detecting * */ - -/* Init value for the maximum count of messages to be stored for duplication detection */ -/* Setting of this value to 0 will disable duplication check, also reduce use of ROM memory */ -#ifdef YOTTA_CFG_COAP_DUPLICATION_MAX_MSGS_COUNT -#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT YOTTA_CFG_COAP_DUPLICATION_MAX_MSGS_COUNT -#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT -#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT -#endif - -// Keep the old flag to maintain backward compatibility -#ifndef SN_COAP_DUPLICATION_MAX_MSGS_COUNT -#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT 0 -#endif - -/* Maximum allowed number of saved messages for duplicate searching */ -#define SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT 6 - -/* Maximum time in seconds of messages to be stored for duplication detection */ -#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED 60 /* RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time */ - -/* * For Message blockwising * */ - -/* Init value for the maximum payload size to be sent and received at one blockwise message */ -/* Setting of this value to 0 will disable this feature, and also reduce use of ROM memory */ -/* Note: This define is common for both received and sent Blockwise messages */ - -#ifdef YOTTA_CFG_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE -#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE YOTTA_CFG_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE -#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE -#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE -#endif - -#ifndef SN_COAP_BLOCKWISE_ENABLED -#define SN_COAP_BLOCKWISE_ENABLED 0 /**< Enable blockwise */ -#endif - -#ifndef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE -#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE 0 /**< Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024 */ -#endif - -#ifndef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE -#define SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE 0 -#endif - -#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED -#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED -#endif - -#ifndef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED -#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED 60 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */ -#endif - -#ifdef YOTTA_CFG_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE -#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE YOTTA_CFG_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE -#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE -#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE -#endif - -#ifndef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE -#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE UINT16_MAX -#endif +#define RESPONSE_RANDOM_FACTOR 1.5 /**< Resending random factor, value is specified in IETF CoAP specification */ /* * For Option handling * */ #define COAP_OPTION_MAX_AGE_DEFAULT 60 /**< Default value of Max-Age if option not present */ #define COAP_OPTION_URI_PORT_NONE (-1) /**< Internal value to represent no Uri-Port option */ #define COAP_OPTION_BLOCK_NONE (-1) /**< Internal value to represent no Block1/2 option */ - int8_t prepare_blockwise_message(struct coap_s *handle, struct sn_coap_hdr_ *coap_hdr_ptr); /* Structure which is stored to Linked list for message sending purposes */ diff --git a/features/frameworks/mbed-coap/source/sn_coap_protocol.c b/features/frameworks/mbed-coap/source/sn_coap_protocol.c index caca1f1e902..773216bf290 100644 --- a/features/frameworks/mbed-coap/source/sn_coap_protocol.c +++ b/features/frameworks/mbed-coap/source/sn_coap_protocol.c @@ -564,7 +564,8 @@ int16_t sn_coap_protocol_build(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_p stored_blockwise_msg_ptr->param = param; stored_blockwise_msg_ptr->msg_id = stored_blockwise_msg_ptr->coap_msg_ptr->msg_id; ns_list_add_to_end(&handle->linked_list_blockwise_sent_msgs, stored_blockwise_msg_ptr); - } else if (src_coap_msg_ptr->msg_code <= COAP_MSG_CODE_REQUEST_DELETE) { + } else if (src_coap_msg_ptr->msg_code <= COAP_MSG_CODE_REQUEST_DELETE && + src_coap_msg_ptr->msg_code != COAP_MSG_CODE_EMPTY) { /* Add message to linked list - response can be in blocks and we need header to build response.. */ coap_blockwise_msg_s *stored_blockwise_msg_ptr; @@ -737,7 +738,10 @@ sn_coap_hdr_s *sn_coap_protocol_parse(struct coap_s *handle, sn_nsdl_addr_s *src (returned_dst_coap_msg_ptr->options_list_ptr->block1 != COAP_OPTION_BLOCK_NONE || returned_dst_coap_msg_ptr->options_list_ptr->block2 != COAP_OPTION_BLOCK_NONE)) { returned_dst_coap_msg_ptr = sn_coap_handle_blockwise_message(handle, src_addr_ptr, returned_dst_coap_msg_ptr, param); - } else { + } else if (returned_dst_coap_msg_ptr->msg_code != COAP_MSG_CODE_EMPTY) { + // Do not clean stored blockwise message when empty ack is received. + // Stored message is mandatory when building a next (GET) blockwise message. + // This will happen when non piggybacked response mode is selected. /* Get ... */ coap_blockwise_msg_s *stored_blockwise_msg_temp_ptr = NULL; diff --git a/features/frameworks/mbed-trace/module.json b/features/frameworks/mbed-trace/module.json deleted file mode 100644 index 9c3be8dee9e..00000000000 --- a/features/frameworks/mbed-trace/module.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "mbed-trace", - "version": "1.3.0", - "description": "Trace library for mbed devices", - "keywords": [ - "trace", - "debug", - "library", - "client", - "mbedOS", - "mbed" - ], - "author": "Jussi Vatjus-Anttila", - "repository": { - "url": "https://github.com/ARMmbed/mbed-trace.git", - "type": "git" - }, - "homepage": "https://github.com/ARMmbed/mbed-trace", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - } - ], - "testTargetDependencies": { - "x86-linux-native": { - "cpputest": "ARMmbed/cpputest", - "nanostack-libservice": "^3.6.0" - }, - "x86-osx-native": { - "cpputest": "ARMmbed/cpputest", - "nanostack-libservice": "^3.6.0" - }, - "x86-windows-native": { - "cpputest": "ARMmbed/cpputest", - "nanostack-libservice": "^3.6.0" - } - }, - "dependencies": { - "nanostack-libservice": "^3.6.0" - } -} diff --git a/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_types.h b/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_types.h index f9b7815b266..f19382a67e4 100644 --- a/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_types.h +++ b/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_types.h @@ -121,7 +121,15 @@ typedef int_fast32_t int_fast24_t; #define alignas(n) __align(n) #define __alignas_is_defined 1 #elif (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L) || (defined __cplusplus && __cplusplus >= 201103L) -#include +# if defined __ARMCC_VERSION && __ARMCC_VERSION < 6120000 + /* Workaround for Arm Compiler versions prior to 6.12 */ +# if !defined __cplusplus +# define alignas _Alignas +# endif +# define __alignas_is_defined 1 +# else +# include +# endif #elif defined __GNUC__ #define alignas(n) __attribute__((__aligned__(n))) #define __alignas_is_defined 1 diff --git a/features/frameworks/nanostack-libservice/module.json b/features/frameworks/nanostack-libservice/module.json deleted file mode 100644 index a7233e766f8..00000000000 --- a/features/frameworks/nanostack-libservice/module.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "nanostack-libservice", - "version": "3.6.0", - "description": "Helper libraries for mbed-client and 6LoWPAN stack.", - "keywords": [ - "libservice" - ], - "author": "Seppo Takalo ", - "homepage": "https://github.com/ARMmbed/mbed-client-libservice", - "license": "Apache-2.0", - "extraIncludes": [ - "mbed-client-libservice" - ], - "dependencies": { - "mbed-trace": "ARMmbed/mbed-trace" - }, - "targetDependencies": {} -} diff --git a/features/frameworks/unity/README.md b/features/frameworks/unity/README.md index 89980cc556e..e91c9120299 100644 --- a/features/frameworks/unity/README.md +++ b/features/frameworks/unity/README.md @@ -1,6 +1,6 @@ # UNITY: Unit Testing for C -This yotta module is a fork of the [UNITY test framework](http://www.throwtheswitch.org/unity/) with minor modifications to be able to use it with the [utest harness](https://github.com/ARMmbed/utest) for mbed OS. +This module is a fork of the [UNITY test framework](http://www.throwtheswitch.org/unity/) with minor modifications to be able to use it with the [utest harness](https://github.com/ARMmbed/utest) for Mbed OS. Please note that this module only contains the unity test macros, and no additions such as the unity fixtures. Furthermore the failure macros have been modified to integrate with `utest` failure handlers, as `setjmp` and `longjmp` are not supported by `utest`. diff --git a/features/frameworks/utest/README.md b/features/frameworks/utest/README.md index a2be2f9bde7..fee0ccf7195 100644 --- a/features/frameworks/utest/README.md +++ b/features/frameworks/utest/README.md @@ -25,10 +25,11 @@ The order of handler execution is: ## Example -The following example showcases a lot of functionality and proper integration with the [Greentea testing automation framework](https://github.com/ARMmbed/greentea), while making use of the [unity test macros](https://github.com/ARMmbed/mbed-os/tree/master/features/frameworks/unity): +The following example showcases a lot of functionality and proper integration with the [Greentea test tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea), while making use of the [unity test macros](https://github.com/ARMmbed/mbed-os/tree/master/features/frameworks/unity): ```cpp -#include "mbed-drivers/test_env.h" +#include "mbed.h" +#include "greentea-client/test_env.h" #include "utest/utest.h" #include "unity/unity.h" @@ -45,6 +46,7 @@ status_t test_repeats_setup(const Case *const source, const size_t index_of_case printf("Setting up for '%s'\n", source->get_description()); return status; } + control_t test_repeats(const size_t call_count) { printf("Called for the %u. time\n", call_count); TEST_ASSERT_NOT_EQUAL(3, call_count); @@ -58,10 +60,12 @@ void test_callback_validate() { // Validate the callback Harness::validate_callback(); } + control_t test_asynchronous() { TEST_ASSERT_TRUE_MESSAGE(true, "(true == false) o_O"); // Set up a callback in the future. This may also be an interrupt! - minar::Scheduler::postCallback(test_callback_validate).delay(minar::milliseconds(100)); + EventQueue *queue = mbed_event_queue(); + queue->call_in(100, test_callback_validate); // Set a 200ms timeout starting from now return CaseTimeout(200); } @@ -72,7 +76,8 @@ control_t test_asynchronous_timeout(const size_t call_count) { // but automatically repeat only this handler on timeout. if (call_count >= 5) { // but after the 5th call, the callback finally gets validated - minar::Scheduler::postCallback(test_callback_validate).delay(minar::milliseconds(100)); + EventQueue *queue = mbed_event_queue(); + queue->call_in(100, test_callback_validate); } return CaseRepeatHandlerOnTimeout(200); } @@ -95,7 +100,7 @@ Case cases[] = { // Declare your test specification with a custom setup handler Specification specification(greentea_setup, cases); -void app_start(int, char**) +int main() { // Run the test specification Harness::run(specification); } @@ -155,7 +160,7 @@ Please see the `utest/types.h` file for a detailed description. 1. `status_t case_teardown_handler_t(const Case *const source, const size_t passed, const size_t failed, const failure_t reason)`: called after execution of each test case, and if testing is aborted. 1. `status_t case_failure_handler_t(const Case *const source, const failure_t reason)`: called whenever a failure occurs during the execution of a test case. -All handlers are defaulted for integration with the [Greentea testing automation framework](https://github.com/ARMmbed/greentea). +All handlers are defaulted for integration with the [Greentea testing tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea). ### Test Case Handlers @@ -416,4 +421,4 @@ void main() // or whatever your custom entry point is } } } -``` \ No newline at end of file +``` diff --git a/features/frameworks/utest/TESTS/unit_tests/minimal_async_scheduler/main.cpp b/features/frameworks/utest/TESTS/unit_tests/minimal_async_scheduler/main.cpp index 3bb4e666c20..0e36ce18c4d 100644 --- a/features/frameworks/utest/TESTS/unit_tests/minimal_async_scheduler/main.cpp +++ b/features/frameworks/utest/TESTS/unit_tests/minimal_async_scheduler/main.cpp @@ -15,8 +15,6 @@ * limitations under the License. */ -// define this to get rid of the minar dependency. -#define YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER 1 #include "mbed.h" #include "greentea-client/test_env.h" diff --git a/features/frameworks/utest/TESTS/unit_tests/minimal_scheduler/main.cpp b/features/frameworks/utest/TESTS/unit_tests/minimal_scheduler/main.cpp index 4d43bea7bc9..2f5299ff8a9 100644 --- a/features/frameworks/utest/TESTS/unit_tests/minimal_scheduler/main.cpp +++ b/features/frameworks/utest/TESTS/unit_tests/minimal_scheduler/main.cpp @@ -15,8 +15,6 @@ * limitations under the License. */ -// define this to get rid of the minar dependency. -#define YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER 1 #include "mbed.h" #include "greentea-client/test_env.h" diff --git a/features/frameworks/utest/source/utest_shim.cpp b/features/frameworks/utest/source/utest_shim.cpp index 076323e9b19..558e39a483e 100644 --- a/features/frameworks/utest/source/utest_shim.cpp +++ b/features/frameworks/utest/source/utest_shim.cpp @@ -18,50 +18,9 @@ #include "utest/utest_shim.h" #include "utest/utest_stack_trace.h" - -#if UTEST_SHIM_SCHEDULER_USE_MINAR -#include "minar/minar.h" - -static int32_t utest_minar_init() -{ - return 0; -} -static void *utest_minar_post(const utest_v1_harness_callback_t callback, const uint32_t delay_ms) -{ - void *handle = minar::Scheduler::postCallback(callback).delay(minar::milliseconds(delay_ms)).getHandle(); - return handle; -} -static int32_t utest_minar_cancel(void *handle) -{ - int32_t ret = minar::Scheduler::cancelCallback(handle); - return ret; -} -static int32_t utest_minar_run() -{ - return 0; -} -extern "C" { -static const utest_v1_scheduler_t utest_v1_scheduler = -{ - utest_minar_init, - utest_minar_post, - utest_minar_cancel, - utest_minar_run -}; -utest_v1_scheduler_t utest_v1_get_scheduler() -{ - return utest_v1_scheduler; -} -} - -#elif UTEST_SHIM_SCHEDULER_USE_US_TICKER -#ifdef YOTTA_MBED_HAL_VERSION_STRING -# include "mbed-hal/us_ticker_api.h" -#else #include "platform/SingletonPtr.h" #include "Timeout.h" using mbed::Timeout; -#endif // only one callback is active at any given time static volatile utest_v1_harness_callback_t minimal_callback; @@ -79,7 +38,7 @@ static void ticker_handler() static int32_t utest_us_ticker_init() { UTEST_LOG_FUNCTION(); - // initialize the Timeout object to makes sure it is not initialized in + // initialize the Timeout object to makes sure it is not initialized in // interrupt context. utest_timeout_object.get(); return 0; @@ -88,13 +47,13 @@ static void *utest_us_ticker_post(const utest_v1_harness_callback_t callback, ti { UTEST_LOG_FUNCTION(); timestamp_t delay_us = delay_ms *1000; - + if (delay_ms) { ticker_callback = callback; // fire the interrupt in 1000us * delay_ms utest_timeout_object->attach_us(ticker_handler, delay_us); - - } + + } else { minimal_callback = callback; } @@ -142,10 +101,3 @@ utest_v1_scheduler_t utest_v1_get_scheduler() return utest_v1_scheduler; } } -#endif - -#ifdef YOTTA_CORE_UTIL_VERSION_STRING -// their functionality is implemented using the CriticalSectionLock class -void utest_v1_enter_critical_section(void) {} -void utest_v1_leave_critical_section(void) {} -#endif diff --git a/features/frameworks/utest/utest/utest_harness.h b/features/frameworks/utest/utest/utest_harness.h index 335bbe4f0de..2f0bdbe6d8c 100644 --- a/features/frameworks/utest/utest/utest_harness.h +++ b/features/frameworks/utest/utest/utest_harness.h @@ -41,11 +41,6 @@ namespace v1 { * The harness executes the test specification in an asynchronous fashion, therefore * `run()` returns immediately. * - * By default, this harness uses the MINAR scheduler for asynchronous callbacks. - * If you wamt to provide your own custom scheduler, set `config.utest.use_custom_scheduler` to `true` - * inside your yotta config and set a custom scheduler implementation using the `set_scheduler()` function. - * You must set the scheduler before running a specification. - * * @note In case of an test abort, the harness will busy-wait and never finish. */ class Harness diff --git a/features/frameworks/utest/utest/utest_shim.h b/features/frameworks/utest/utest/utest_shim.h index 1da90c08f25..7f084223b28 100644 --- a/features/frameworks/utest/utest/utest_shim.h +++ b/features/frameworks/utest/utest/utest_shim.h @@ -27,50 +27,22 @@ #include #include "utest/utest_scheduler.h" -#ifdef YOTTA_CFG -# include "compiler-polyfill/attributes.h" -#else -# ifndef __deprecated_message -# if defined(__CC_ARM) -# define __deprecated_message(msg) __attribute__((deprecated)) -# elif defined (__ICCARM__) -# define __deprecated_message(msg) -# else -# define __deprecated_message(msg) __attribute__((deprecated(msg))) -# endif +#ifndef __deprecated_message +# if defined(__CC_ARM) +# define __deprecated_message(msg) __attribute__((deprecated)) +# elif defined (__ICCARM__) +# define __deprecated_message(msg) +# else +# define __deprecated_message(msg) __attribute__((deprecated(msg))) # endif #endif -#ifdef YOTTA_CORE_UTIL_VERSION_STRING -# include "core-util/CriticalSectionLock.h" -# define UTEST_ENTER_CRITICAL_SECTION mbed::util::CriticalSectionLock lock -# define UTEST_LEAVE_CRITICAL_SECTION -#else -# ifndef UTEST_ENTER_CRITICAL_SECTION -# define UTEST_ENTER_CRITICAL_SECTION utest_v1_enter_critical_section() -# endif -# ifndef UTEST_LEAVE_CRITICAL_SECTION -# define UTEST_LEAVE_CRITICAL_SECTION utest_v1_leave_critical_section() -# endif +#ifndef UTEST_ENTER_CRITICAL_SECTION +# define UTEST_ENTER_CRITICAL_SECTION utest_v1_enter_critical_section() +#endif +#ifndef UTEST_LEAVE_CRITICAL_SECTION +# define UTEST_LEAVE_CRITICAL_SECTION utest_v1_leave_critical_section() #endif - -#ifndef YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER -# ifdef YOTTA_MINAR_VERSION_STRING -# define UTEST_MINAR_AVAILABLE 1 -# else -# define UTEST_MINAR_AVAILABLE 0 -# endif -# ifndef UTEST_SHIM_SCHEDULER_USE_MINAR -# define UTEST_SHIM_SCHEDULER_USE_MINAR UTEST_MINAR_AVAILABLE -# endif -# ifndef UTEST_SHIM_SCHEDULER_USE_US_TICKER -# ifdef __MBED__ -# define UTEST_SHIM_SCHEDULER_USE_US_TICKER 1 -# else -# define UTEST_SHIM_SCHEDULER_USE_US_TICKER 0 -# endif -# endif -#endif // YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER #ifdef __cplusplus extern "C" { diff --git a/features/lorawan/LoRaRadio.h b/features/lorawan/LoRaRadio.h index bcb60198404..601c6b9e523 100644 --- a/features/lorawan/LoRaRadio.h +++ b/features/lorawan/LoRaRadio.h @@ -18,129 +18,382 @@ #ifndef LORARADIO_H_ #define LORARADIO_H_ +/** @addtogroup LoRaWAN + * Parent class for a LoRa radio driver + * @{ + */ + #include "platform/Callback.h" #include "PinNames.h" /** * Structure to hold RF controls for LoRa Radio. - * SX1276 have an extra control for the crystal (used in DOSCO-L072CZ) + * SX1276 have an extra control for the crystal (used in DISCO-L072CZ). + * A subset of these pins may be used by the driver in accordance with the physical + * implementation. */ typedef struct { + /** TX latch switch pin. + * Exact operation is implementation specific. + */ PinName rf_switch_ctl1; + + /** RX latch switch pin. + * Exact operation is implementation specific. + */ PinName rf_switch_ctl2; + + /** TX control pin for transceiver packaged as a module. + * Exact operation is implementation specific. + */ PinName txctl; + + /** RX control pin for transceiver packaged as a module. + * Exact operation is implementation specific. + */ PinName rxctl; + + /** Transceiver switch pin. + * Exact operation is implementation specific. One of the polarities of the + * pin may drive the transceiver in either TX or RX mode. + */ PinName ant_switch; + + /** Power amplifier control pin. + * Exact operation is implementation specific. If defined, + * controls the operation of an external power amplifier. + */ PinName pwr_amp_ctl; + + /** TCXO crystal control pin. + * Exact operation is implementation specific. + */ PinName tcxo; } rf_ctrls; /** Radio driver internal state. - * State machine states definition. + * Helps identify current state of the transceiver. */ typedef enum radio_state { + /** IDLE state. + * Radio is in idle state. + */ RF_IDLE = 0, + + /** RX state. + * Radio is receiving. + */ RF_RX_RUNNING, + + /** TX state. + * Radio is transmitting. + */ RF_TX_RUNNING, + + /** CAD state. + * Radio is detecting channel activity. + */ RF_CAD, } radio_state_t; -/** Type of the modem. +/** Type of modem. * [LORA/FSK] */ typedef enum modem_type { + /** FSK operation mode. + * Radio is using FSK modulation. + */ MODEM_FSK = 0, + + /** LoRa operation mode. + * Radio is using LoRa modulation. + */ MODEM_LORA } radio_modems_t; -/** Radio FSK modem parameters. - * +/** FSK modem parameters. + * Parameters encompassing FSK modulation. */ typedef struct radio_fsk_settings { + /** + * Transmit power. + */ int8_t power; + + /** + * Frequency deviation. + */ uint32_t f_dev; + + /** + * Modulation bandwidth. + */ uint32_t bandwidth; + + /** + * Automated frequency correction bandwidth. + */ uint32_t bandwidth_afc; + + /** + * Data rate (SF). + */ uint32_t datarate; + + /** + * Expected preamble length. + */ uint16_t preamble_len; - bool fix_len; + + /** + * This flag turns on if the TX data size is fixed. + */ + bool fix_len; + + /** + * Size of outgoing data. + */ uint8_t payload_len; - bool crc_on; - bool iq_inverted; - bool rx_continuous; + + /** + * Turn CRC on/off. + */ + bool crc_on; + + /** @deprecated + * Does not apply to FSK. Will be removed. + */ + bool iq_inverted; + + /** + * Turn continuous reception mode (such as Class C mode) on/off. + */ + bool rx_continuous; + + /** + * Timeout value in milliseconds (ms) after which the radio driver reports + * a timeout if the radio was unable to transmit. + */ uint32_t tx_timeout; + + /** + * Timeout value in symbols (symb) after which the radio driver reports a timeout + * if the radio did not receive a Preamble. + */ uint32_t rx_single_timeout; } radio_fsk_settings_t; -/** Radio FSK packet handler state. - * +/** FSK packet handle. + * Contains information about an FSK packet and various metadata. */ typedef struct radio_fsk_packet_handler { - uint8_t preamble_detected; - uint8_t sync_word_detected; - int8_t rssi_value; - int32_t afc_value; - uint8_t rx_gain; + /** + * Set to true (1) when a Preamble is detected, otherwise false (0). + */ + uint8_t preamble_detected; + + /** + * Set to true (1) when a SyncWord is detected, otherwise false (0). + */ + uint8_t sync_word_detected; + + /** + * Storage for RSSI value of the received signal. + */ + int8_t rssi_value; + + /** + * Automated frequency correction value. + */ + int32_t afc_value; + + /** + * LNA gain value (dbm). + */ + uint8_t rx_gain; + + /** + * Size of the received data in bytes. + */ uint16_t size; + + /** + * Keeps track of number of bytes already read from the RX FIFO. + */ uint16_t nb_bytes; - uint8_t fifo_thresh; - uint8_t chunk_size; + + /** + * Stores the FIFO threshold value. + */ + uint8_t fifo_thresh; + + /** + * Defines the size of a chunk of outgoing buffer written to + * the FIFO at a unit time. For example, if the size of the data exceeds the FIFO + * limit, a certain sized chunk is written to the FIFO. Later, a FIFO-level + * interrupt enables writing of the remaining data to the FIFO chunk by chunk until + * transmission is complete. + */ + uint8_t chunk_size; } radio_fsk_packet_handler_t; -/** Radio LoRa modem parameters. - * +/** LoRa modem parameters. + * Parameters encompassing LoRa modulation. */ typedef struct radio_lora_settings { - int8_t power; + /** + * Transmit power. + */ + int8_t power; + + /** + * Modulation bandwidth. + */ uint32_t bandwidth; + + /** + * Data rate (SF). + */ uint32_t datarate; - bool low_datarate_optimize; - uint8_t coderate; + + /** + * Turn low data rate optimization on/off. + */ + bool low_datarate_optimize; + + /** + * Error correction code rate. + */ + uint8_t coderate; + + /** + * Preamble length in symbols. + */ uint16_t preamble_len; - bool fix_len; - uint8_t payload_len; - bool crc_on; - bool freq_hop_on; - uint8_t hop_period; - bool iq_inverted; - bool rx_continuous; + + /** + * Set to true if the outgoing payload length is fixed. + */ + bool fix_len; + + /** + * Size of outgoing payload. + */ + uint8_t payload_len; + + /** + * Turn CRC on/off. + */ + bool crc_on; + + /** + * Turn frequency hopping on/off. + */ + bool freq_hop_on; + + /** + * Number of symbols between two frequency hops. + */ + uint8_t hop_period; + + /** + * Turn IQ inversion on/off. Usually, the end device sends an IQ inverted + * signal, and the base stations do not invert. We recommended sending an + * IQ inverted signal from the device side, so any transmissions from the + * base stations do not interfere with end device transmission. + */ + bool iq_inverted; + + /** + * Turn continuous reception mode (such as in Class C) on/off. + */ + bool rx_continuous; + + /** + * Timeout in milliseconds (ms) after which the radio driver reports an error + * if the radio was unable to transmit. + */ uint32_t tx_timeout; - bool public_network; + + /** + * Change the network mode to Public or Private. + */ + bool public_network; } radio_lora_settings_t; -/** Radio LoRa packet handler state. - * +/** LoRa packet + * Contains information about a LoRa packet. */ typedef struct radio_lora_packet_handler { - int8_t snr_value; - int8_t rssi_value; + /** + * Signal-to-noise ratio of a received packet. + */ + int8_t snr_value; + + /** + * RSSI value in dBm for the received packet. + */ + int8_t rssi_value; + + /** + * Size of the transmitted or received packet. + */ uint8_t size; } radio_lora_packet_handler_t; -/** Radio settings. - * +/** Global radio settings. + * Contains settings for the overall transceiver operation. */ typedef struct radio_settings { + /** + * Current state of the radio, such as RF_IDLE. + */ uint8_t state; + + /** + * Current modem operation, such as MODEM_LORA. + */ uint8_t modem; + + /** + * Current channel of operation. + */ uint32_t channel; + + /** + * Settings for FSK modem part. + */ radio_fsk_settings_t fsk; + + /** + * FSK packet and meta data. + */ radio_fsk_packet_handler_t fsk_packet_handler; + + /** + * Settings for LoRa modem part. + */ radio_lora_settings_t lora; + + /** + * LoRa packet and metadata. + */ radio_lora_packet_handler_t lora_packet_handler; } radio_settings_t; -/** Radio driver callback functions. - * +/** Reporting functions for upper layers. + * The radio driver reports various vital events to the upper controlling layers + * using callback functions provided by the upper layers at the initialization + * phase. */ typedef struct radio_events { /** - * Callback when Transmission is done + * Callback when Transmission is done. */ mbed::Callback tx_done; /** - * Callback when Transmission is timed out + * Callback when Transmission is timed out. */ mbed::Callback tx_timeout; @@ -157,12 +410,12 @@ typedef struct radio_events { mbed::Callback rx_done; /** - * Callback when Reception is timed out + * Callback when Reception is timed out. */ mbed::Callback rx_timeout; /** - * Callback when Reception ends up in error + * Callback when Reception ends up in error. */ mbed::Callback rx_error; @@ -182,16 +435,16 @@ typedef struct radio_events { } radio_events_t; /** - * Interface for the radios, contains the main functions that a radio needs, and five callback functions. + * Interface for the radios, containing the main functions that a radio needs, and five callback functions. */ class LoRaRadio { public: /** - * Registers radio events with the Mbed LoRaWAN stack and undergoes the initialization steps if any. + * Registers radio events with the Mbed LoRaWAN stack and undergoes initialization steps, if any. * - * @param events The structure containing the driver callback functions. + * @param events Contains driver callback functions. */ virtual void init_radio(radio_events_t *events) = 0; @@ -201,19 +454,19 @@ class LoRaRadio { virtual void radio_reset() = 0; /** - * Put the RF module in the sleep mode. + * Put the RF module in sleep mode. */ virtual void sleep(void) = 0; /** - * Sets the radio in the standby mode. + * Sets the radio to standby mode. */ virtual void standby(void) = 0; /** - * Sets the reception parameters. + * Sets reception parameters. * - * @param modem The radio modem to be used [0: FSK, 1: LoRa]. + * @param modem The radio modem [0: FSK, 1: LoRa]. * @param bandwidth Sets the bandwidth. * FSK : >= 2600 and <= 250000 Hz * LoRa: [0: 125 kHz, 1: 250 kHz, @@ -236,13 +489,13 @@ class LoRaRadio { * LoRa: Timeout in symbols * @param fix_len Fixed length packets [0: variable, 1: fixed]. * @param payload_len Sets the payload length when fixed length is used. - * @param crc_on Enables/disables the CRC [0: OFF, 1: ON]. - * @param freq_hop_on Enables/disables the intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only). + * @param crc_on Enables/disables CRC [0: OFF, 1: ON]. + * @param freq_hop_on Enables/disables intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only). * @param hop_period The number of symbols bewteen each hop (LoRa only). * @param iq_inverted Inverts the IQ signals (LoRa only). * FSK : N/A (set to 0) * LoRa: [0: not inverted, 1: inverted] - * @param rx_continuous Sets the reception in continuous mode. + * @param rx_continuous Sets the reception to continuous mode. * [false: single mode, true: continuous mode] */ virtual void set_rx_config(radio_modems_t modem, uint32_t bandwidth, @@ -256,7 +509,7 @@ class LoRaRadio { /** * Sets the transmission parameters. * - * @param modem The radio modem to be used [0: FSK, 1: LoRa]. + * @param modem The radio modem [0: FSK, 1: LoRa]. * @param power Sets the output power [dBm]. * @param fdev Sets the frequency deviation (FSK only). * FSK : [Hz] @@ -274,8 +527,8 @@ class LoRaRadio { * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] * @param preamble_len Sets the preamble length. * @param fix_len Fixed length packets [0: variable, 1: fixed]. - * @param crc_on Enables/disables the CRC [0: OFF, 1: ON]. - * @param freq_hop_on Enables/disables the intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only). + * @param crc_on Enables/disables CRC [0: OFF, 1: ON]. + * @param freq_hop_on Enables/disables intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only). * @param hop_period The number of symbols between each hop (LoRa only). * @param iq_inverted Inverts IQ signals (LoRa only) * FSK : N/A (set to 0). @@ -289,9 +542,9 @@ class LoRaRadio { uint8_t hop_period, bool iq_inverted, uint32_t timeout) = 0; /** - * Sends the buffer of size + * Sends the packet. * - * Prepares the packet to be sent and sets the radio in transmission. + * Prepares the packet to be sent and sets the radio to transmission mode. * * @param buffer A pointer to the buffer. * @param size The buffer size. @@ -299,21 +552,21 @@ class LoRaRadio { virtual void send(uint8_t *buffer, uint8_t size) = 0; /** - * Sets the radio in reception mode. + * Sets the radio to reception mode. * - * For configuration of the receiver use the `set_rx_config()` API. + * To configure the receiver, use the `set_rx_config()` API. */ virtual void receive(void) = 0; /** - * Sets the carrier frequency + * Sets the carrier frequency. * * @param freq Channel RF frequency. */ virtual void set_channel(uint32_t freq) = 0; /** - * Generates a 32 bit random value based on the RSSI readings. + * Generates a 32 bit random value based on RSSI readings. * * \remark This function sets the radio in LoRa modem mode and disables all interrupts. * After calling this function, either `Radio.SetRxConfig` or @@ -333,7 +586,7 @@ class LoRaRadio { /** * Sets the maximum payload length. * - * @param modem The radio modem to be used [0: FSK, 1: LoRa]. + * @param modem The radio modem [0: FSK, 1: LoRa]. * @param max The maximum payload length in bytes. */ virtual void set_max_payload_length(radio_modems_t modem, uint8_t max) = 0; @@ -343,16 +596,16 @@ class LoRaRadio { * * Updates the sync byte. Applies to LoRa modem only. * - * @param enable If true, it enables a public network. + * @param enable If true, enables a public network. */ virtual void set_public_network(bool enable) = 0; /** * Computes the packet time on air for the given payload. * - * \remark This can only be called once `SetRxConfig` or `SetTxConfig` have been called. + * \remark This can only be called after `SetRxConfig` or `SetTxConfig`. * - * @param modem The radio modem to be used [0: FSK, 1: LoRa]. + * @param modem The radio modem [0: FSK, 1: LoRa]. * @param pkt_len The packet payload length. * @return The computed `airTime` for the given packet payload length. */ @@ -362,10 +615,10 @@ class LoRaRadio { * Performs carrier sensing. * * Checks for a certain time if the RSSI is above a given threshold. - * This threshold determines whether or not there is a transmission going on - * in the channel already. + * This threshold determines whether or not there is a transmission on + * the channel already. * - * @param modem The type of the radio modem. + * @param modem The type of radio modem. * @param freq The carrier frequency. * @param rssi_threshold The threshold value of RSSI. * @param max_carrier_sense_time The time set for sensing the channel (ms). @@ -379,7 +632,7 @@ class LoRaRadio { uint32_t max_carrier_sense_time) = 0; /** - * Sets the radio in CAD mode. + * Sets the radio to CAD mode. * */ virtual void start_cad(void) = 0; @@ -387,11 +640,11 @@ class LoRaRadio { /** * Checks whether the given RF is in range. * - * @param frequency The frequency to be checked. + * @param frequency The frequency to check. */ virtual bool check_rf_frequency(uint32_t frequency) = 0; - /** Sets the radio in continuous wave transmission mode. + /** Sets the radio to continuous wave transmission mode. * * @param freq The RF frequency of the channel. * @param power The output power [dBm]. @@ -405,9 +658,10 @@ class LoRaRadio { virtual void lock(void) = 0; /** - * Releases the exclusive access to this radio. + * Releases exclusive access to this radio. */ virtual void unlock(void) = 0; }; #endif // LORARADIO_H_ +/** @}*/ diff --git a/features/lorawan/LoRaWANStack.cpp b/features/lorawan/LoRaWANStack.cpp index 0f125c5448b..79f899ef2ad 100644 --- a/features/lorawan/LoRaWANStack.cpp +++ b/features/lorawan/LoRaWANStack.cpp @@ -614,6 +614,8 @@ void LoRaWANStack::post_process_tx_with_reception() _loramac.get_device_class() == CLASS_A ? "A" : "C"); _ctrl_flags &= ~TX_DONE_FLAG; _ctrl_flags |= RETRY_EXHAUSTED_FLAG; + _loramac.post_process_mcps_req(); + make_tx_metadata_available(); state_controller(DEVICE_STATE_STATUS_CHECK); } } diff --git a/features/lorawan/lorastack/mac/LoRaMac.cpp b/features/lorawan/lorastack/mac/LoRaMac.cpp index 05c58a97cf5..a971fb9cd4f 100644 --- a/features/lorawan/lorastack/mac/LoRaMac.cpp +++ b/features/lorawan/lorastack/mac/LoRaMac.cpp @@ -166,11 +166,12 @@ void LoRaMac::post_process_mcps_req() _params.is_node_ack_requested = false; _mcps_confirmation.ack_received = false; _mcps_indication.is_ack_recvd = false; - _params.ul_frame_counter++; - _params.adr_ack_counter++; } else { _mcps_confirmation.status = LORAMAC_EVENT_INFO_STATUS_ERROR; } + + _params.ul_frame_counter++; + _params.adr_ack_counter++; } else { //UNCONFIRMED or PROPRIETARY _params.ul_frame_counter++; diff --git a/features/lorawan/lorastack/mac/LoRaMacCommand.cpp b/features/lorawan/lorastack/mac/LoRaMacCommand.cpp index b3447cde7f2..d2ebf397ffe 100644 --- a/features/lorawan/lorastack/mac/LoRaMacCommand.cpp +++ b/features/lorawan/lorastack/mac/LoRaMacCommand.cpp @@ -149,7 +149,7 @@ lorawan_status_t LoRaMacCommand::process_mac_commands(const uint8_t *payload, ui int8_t link_adr_dr = DR_0; int8_t link_adr_txpower = TX_POWER_0; uint8_t link_adr_nbtrans = 0; - uint8_t link_adr_nb_bytes_pasred = 0; + uint8_t link_adr_nb_bytes_parsed = 0; // Fill parameter structure link_adr_req.payload = &payload[mac_index - 1]; @@ -165,7 +165,14 @@ lorawan_status_t LoRaMacCommand::process_mac_commands(const uint8_t *payload, ui &link_adr_dr, &link_adr_txpower, &link_adr_nbtrans, - &link_adr_nb_bytes_pasred); + &link_adr_nb_bytes_parsed); + + // If nothing was consumed, we have a malformed packet at our hand + // we bin everything and return. link_adr_nb_bytes_parsed being 0 is + // a magic identifier letting us know that there are payload inconsistencies + if (link_adr_nb_bytes_parsed == 0) { + return LORAWAN_STATUS_UNSUPPORTED; + } if ((status & 0x07) == 0x07) { mac_sys_params.channel_data_rate = link_adr_dr; @@ -174,11 +181,11 @@ lorawan_status_t LoRaMacCommand::process_mac_commands(const uint8_t *payload, ui } // Add the answers to the buffer - for (uint8_t i = 0; i < (link_adr_nb_bytes_pasred / 5); i++) { + for (uint8_t i = 0; i < (link_adr_nb_bytes_parsed / 5); i++) { ret_value = add_link_adr_ans(status); } // Update MAC index - mac_index += link_adr_nb_bytes_pasred - 1; + mac_index += link_adr_nb_bytes_parsed - 1; } break; case SRV_MAC_DUTY_CYCLE_REQ: diff --git a/features/lorawan/lorastack/phy/LoRaPHY.cpp b/features/lorawan/lorastack/phy/LoRaPHY.cpp index c995cd211be..dd3cba92171 100644 --- a/features/lorawan/lorastack/phy/LoRaPHY.cpp +++ b/features/lorawan/lorastack/phy/LoRaPHY.cpp @@ -32,8 +32,9 @@ SPDX-License-Identifier: BSD-3-Clause #define BACKOFF_DC_1_HOUR 100 #define BACKOFF_DC_10_HOURS 1000 #define BACKOFF_DC_24_HOURS 10000 - -#define CHANNELS_IN_MASK 16 +#define MAX_PREAMBLE_LENGTH 8.0f +#define TICK_GRANULARITY_JITTER 1.0f +#define CHANNELS_IN_MASK 16 LoRaPHY::LoRaPHY() : _radio(NULL), @@ -281,6 +282,8 @@ lorawan_time_t LoRaPHY::update_band_timeoff(bool joined, bool duty_cycle, if (bands[i].off_time != 0) { next_tx_delay = MIN(bands[i].off_time - txDoneTime, next_tx_delay); + // add a random delay from 200ms to a 1000ms + next_tx_delay += (rand() % 800 + 200); } } else { // if network has been joined @@ -306,11 +309,12 @@ lorawan_time_t LoRaPHY::update_band_timeoff(bool joined, bool duty_cycle, } uint8_t LoRaPHY::parse_link_ADR_req(const uint8_t *payload, + uint8_t payload_size, link_adr_params_t *params) { uint8_t ret_index = 0; - if (payload[0] == SRV_MAC_LINK_ADR_REQ) { + if (payload_size >= 5) { // Parse datarate and tx power params->datarate = payload[1]; @@ -388,23 +392,56 @@ uint8_t LoRaPHY::verify_link_ADR_req(verify_adr_params_t *verify_params, return status; } -double LoRaPHY::compute_symb_timeout_lora(uint8_t phy_dr, uint32_t bandwidth) +float LoRaPHY::compute_symb_timeout_lora(uint8_t phy_dr, uint32_t bandwidth) { - return ((double)(1 << phy_dr) / (double) bandwidth) * 1000; + // in milliseconds + return ((float)(1 << phy_dr) / (float) bandwidth * 1000); } -double LoRaPHY::compute_symb_timeout_fsk(uint8_t phy_dr) +float LoRaPHY::compute_symb_timeout_fsk(uint8_t phy_dr) { - return (8.0 / (double) phy_dr); // 1 symbol equals 1 byte + return (8.0f / (float) phy_dr); // 1 symbol equals 1 byte } -void LoRaPHY::get_rx_window_params(double t_symb, uint8_t min_rx_symb, - uint32_t rx_error, uint32_t wakeup_time, - uint32_t *window_timeout, int32_t *window_offset) + +void LoRaPHY::get_rx_window_params(float t_symb, uint8_t min_rx_symb, + float error_fudge, float wakeup_time, + uint32_t *window_length, int32_t *window_offset, + uint8_t phy_dr) { - // Computed number of symbols - *window_timeout = MAX((uint32_t) ceil(((2 * min_rx_symb - 8) * t_symb + 2 * rx_error) / t_symb), min_rx_symb); - *window_offset = (int32_t) ceil((4.0 * t_symb) - ((*window_timeout * t_symb) / 2.0) - wakeup_time); + float target_rx_window_offset; + float window_len_in_ms; + + if (phy_params.fsk_supported && phy_dr == phy_params.max_rx_datarate) { + min_rx_symb = MAX_PREAMBLE_LENGTH; + } + + // We wish to be as close as possible to the actual start of data, i.e., + // we are interested in the preamble symbols which are at the tail of the + // preamble sequence. + target_rx_window_offset = (MAX_PREAMBLE_LENGTH - min_rx_symb) * t_symb; //in ms + + // Actual window offset in ms in response to timing error fudge factor and + // radio wakeup/turned around time. + *window_offset = floor(target_rx_window_offset - error_fudge - wakeup_time); + + // possible wait for next symbol start if we start inside the preamble + float possible_wait_for_symb_start = MIN(t_symb, + ((2 * error_fudge) + wakeup_time + TICK_GRANULARITY_JITTER)); + + // how early we might start reception relative to transmit start (so negative if before transmit starts) + float earliest_possible_start_time = *window_offset - error_fudge - TICK_GRANULARITY_JITTER; + + // time in (ms) we may have to wait for the other side to start transmission + float possible_wait_for_transmit = -earliest_possible_start_time; + + // Minimum reception time plus extra time (in ms) we may have turned on before the + // other side started transmission + window_len_in_ms = (min_rx_symb * t_symb) + MAX(possible_wait_for_transmit, possible_wait_for_symb_start); + + // Setting the window_length in terms of 'symbols' for LoRa modulation or + // in terms of 'bytes' for FSK + *window_length = (uint32_t) ceil(window_len_in_ms / t_symb); } int8_t LoRaPHY::compute_tx_power(int8_t tx_power_idx, float max_eirp, @@ -791,7 +828,7 @@ void LoRaPHY::compute_rx_win_params(int8_t datarate, uint8_t min_rx_symbols, uint32_t rx_error, rx_config_params_t *rx_conf_params) { - double t_symbol = 0.0; + float t_symbol = 0.0; // Get the datarate, perform a boundary check rx_conf_params->datarate = MIN(datarate, phy_params.max_rx_datarate); @@ -811,9 +848,9 @@ void LoRaPHY::compute_rx_win_params(int8_t datarate, uint8_t min_rx_symbols, rx_conf_params->frequency = phy_params.channels.channel_list[rx_conf_params->channel].frequency; } - - get_rx_window_params(t_symbol, min_rx_symbols, rx_error, RADIO_WAKEUP_TIME, - &rx_conf_params->window_timeout, &rx_conf_params->window_offset); + get_rx_window_params(t_symbol, min_rx_symbols, (float) rx_error, MBED_CONF_LORA_WAKEUP_TIME, + &rx_conf_params->window_timeout, &rx_conf_params->window_offset, + rx_conf_params->datarate); } bool LoRaPHY::rx_config(rx_config_params_t *rx_conf) @@ -847,13 +884,13 @@ bool LoRaPHY::rx_config(rx_config_params_t *rx_conf) // Radio configuration if (dr == DR_7 && phy_params.fsk_supported) { modem = MODEM_FSK; - _radio->set_rx_config(modem, 50000, phy_dr * 1000, 0, 83333, 5, + _radio->set_rx_config(modem, 50000, phy_dr * 1000, 0, 83333, MAX_PREAMBLE_LENGTH, rx_conf->window_timeout, false, 0, true, 0, 0, false, rx_conf->is_rx_continuous); } else { modem = MODEM_LORA; _radio->set_rx_config(modem, rx_conf->bandwidth, phy_dr, 1, 0, - MBED_CONF_LORA_DOWNLINK_PREAMBLE_LENGTH, + MAX_PREAMBLE_LENGTH, rx_conf->window_timeout, false, 0, false, 0, 0, true, rx_conf->is_rx_continuous); } @@ -899,8 +936,8 @@ bool LoRaPHY::tx_config(tx_config_params_t *tx_conf, int8_t *tx_power, // High Speed FSK channel modem = MODEM_FSK; _radio->set_tx_config(modem, phy_tx_power, 25000, bandwidth, - phy_dr * 1000, 0, 5, false, true, 0, 0, false, - 3000); + phy_dr * 1000, 0, MBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH, + false, true, 0, 0, false, 3000); } else { modem = MODEM_LORA; _radio->set_tx_config(modem, phy_tx_power, 0, bandwidth, phy_dr, 1, @@ -937,13 +974,17 @@ uint8_t LoRaPHY::link_ADR_request(adr_req_params_t *link_adr_req, verify_adr_params_t verify_params; - while (bytes_processed < link_adr_req->payload_size) { + while (bytes_processed < link_adr_req->payload_size && + link_adr_req->payload[bytes_processed] == SRV_MAC_LINK_ADR_REQ) { // Get ADR request parameters next_index = parse_link_ADR_req(&(link_adr_req->payload[bytes_processed]), + link_adr_req->payload_size - bytes_processed, &adr_settings); if (next_index == 0) { - break; // break loop, since no more request has been found + bytes_processed = 0; + // break loop, malformed packet + break; } // Update bytes processed @@ -988,6 +1029,11 @@ uint8_t LoRaPHY::link_ADR_request(adr_req_params_t *link_adr_req, } } + if (bytes_processed == 0) { + *nb_bytes_processed = 0; + return status; + } + if (is_datarate_supported(adr_settings.datarate)) { verify_params.status = status; diff --git a/features/lorawan/lorastack/phy/LoRaPHY.h b/features/lorawan/lorastack/phy/LoRaPHY.h index 76bad8993c5..f68f6467263 100644 --- a/features/lorawan/lorastack/phy/LoRaPHY.h +++ b/features/lorawan/lorastack/phy/LoRaPHY.h @@ -202,40 +202,63 @@ class LoRaPHY : private mbed::NonCopyable { /** Computing Receive Windows * - * For more details please consult the following document, chapter 3.1.2. - * http://www.semtech.com/images/datasheet/SX1272_settings_for_LoRaWAN_v2.0.pdf - * or - * http://www.semtech.com/images/datasheet/SX1276_settings_for_LoRaWAN_v2.0.pdf - * - * Downlink start: T = Tx + 1s (+/- 20 us) - * | - * TRxEarly | TRxLate - * | | | - * | | +---+---+---+---+---+---+---+---+ - * | | | Latest Rx window | - * | | +---+---+---+---+---+---+---+---+ - * | | | + * The algorithm tries to calculate the length of receive windows (i.e., + * the minimum time it should remain to acquire a lock on the Preamble + * for synchronization) and the error offset which compensates for the system + * timing errors. Basic idea behind the algorithm is to optimize for the + * reception of last 'min_rx_symbols' symbols out of transmitted Premable + * symbols. The algorithm compensates for the clock drifts, tick granularity + * and system wake up time (from sleep state) by opening the window early for + * the lower SFs. For higher SFs, the symbol time is large enough that we can + * afford to open late (hence the positive offset). + * The table below shows the calculated values for SF7 to SF12 with 125 kHz + * bandwidth. + * + * +----+-----+----------+---------+-------------------------+----------------------+-------------------------+ + * | SF | BW (kHz) | rx_error (ms) | wake_up (ms) | min_rx_symbols | window_timeout(symb) | window_offset(ms) | + * +----+-----+----------+---------+-------------------------+----------------------+-------------------------+ + * | 7 | 125 | 5 | 5 | 5 | 18 | -7 | + * | 8 | 125 | 5 | 5 | 5 | 10 | -4 | + * | 9 | 125 | 5 | 5 | 5 | 6 | 2 | + * | 10 | 125 | 5 | 5 | 5 | 6 | 14 | + * | 11 | 125 | 5 | 5 | 5 | 6 | 39 | + * | 12 | 125 | 5 | 5 | 5 | 6 | 88 | + * +----+-----+----------+---------+-------------------------+----------------------+-------------------------+ + * + * For example for SF7, the receive window will open at downlink start time + * plus the offset calculated and will remain open for the length window_timeout. + * + * Symbol time = 1.024 ms + * Downlink start: T = Tx + 1s (+/- 20 us) + * | + * | + * | + * | + * | + * +---+---+---+---+---+---+---+---+ + * | 8 Preamble Symbols | + * +---+---+---+---+---+---+---+---+ + * | RX Window start time = T +/- Offset + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | | | | | | | | | | | | | | | | | | | + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * + * Similarly for SF12: + * + * Symbol time = 32.768 ms + * Downlink start: T = Tx + 1s (+/- 20 us) + * | + * | + * | + * | + * | * +---+---+---+---+---+---+---+---+ - * | Earliest Rx window | + * | 8 Preamble Symbols | * +---+---+---+---+---+---+---+---+ - * | - * +---+---+---+---+---+---+---+---+ - *Downlink preamble 8 symbols | | | | | | | | | - * +---+---+---+---+---+---+---+---+ - * - * Worst case Rx window timings - * - * TRxLate = DEFAULT_MIN_RX_SYMBOLS * tSymbol - RADIO_WAKEUP_TIME - * TRxEarly = 8 - DEFAULT_MIN_RX_SYMBOLS * tSymbol - RxWindowTimeout - RADIO_WAKEUP_TIME - * - * TRxLate - TRxEarly = 2 * DEFAULT_SYSTEM_MAX_RX_ERROR - * - * RxOffset = ( TRxLate + TRxEarly ) / 2 - * - * RxWindowTimeout = ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * DEFAULT_SYSTEM_MAX_RX_ERROR - * RxOffset = 4 * tSymbol - RxWindowTimeout / 2 - RADIO_WAKE_UP_TIME - * - * The minimum value of RxWindowTimeout must be 5 symbols which implies that the system always tolerates at least an error of 1.5 * tSymbol. + * | RX Window start time = T +/- Offset + * +---+---+---+---+---+---+ + * | | | | | | | + * +---+---+---+---+---+---+ */ /*! * Computes the RX window timeout and offset. @@ -585,7 +608,8 @@ class LoRaPHY : private mbed::NonCopyable { /** * Parses the parameter of an LinkAdrRequest. */ - uint8_t parse_link_ADR_req(const uint8_t *payload, link_adr_params_t *adr_params); + uint8_t parse_link_ADR_req(const uint8_t *payload, uint8_t payload_size, + link_adr_params_t *adr_params); /** * Verifies and updates the datarate, the TX power and the number of repetitions @@ -597,9 +621,10 @@ class LoRaPHY : private mbed::NonCopyable { /** * Computes the RX window timeout and the RX window offset. */ - void get_rx_window_params(double t_symbol, uint8_t min_rx_symbols, - uint32_t rx_error, uint32_t wakeup_time, - uint32_t *window_timeout, int32_t *window_offset); + void get_rx_window_params(float t_symbol, uint8_t min_rx_symbols, + float rx_error, float wakeup_time, + uint32_t *window_length, int32_t *window_offset, + uint8_t phy_dr); /** * Computes the txPower, based on the max EIRP and the antenna gain. @@ -632,12 +657,12 @@ class LoRaPHY : private mbed::NonCopyable { /** * Computes the symbol time for LoRa modulation. */ - double compute_symb_timeout_lora(uint8_t phy_dr, uint32_t bandwidth); + float compute_symb_timeout_lora(uint8_t phy_dr, uint32_t bandwidth); /** * Computes the symbol time for FSK modulation. */ - double compute_symb_timeout_fsk(uint8_t phy_dr); + float compute_symb_timeout_fsk(uint8_t phy_dr); protected: LoRaRadio *_radio; diff --git a/features/lorawan/lorastack/phy/LoRaPHYAU915.cpp b/features/lorawan/lorastack/phy/LoRaPHYAU915.cpp index 46ea3448606..b41091e8e8a 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYAU915.cpp +++ b/features/lorawan/lorastack/phy/LoRaPHYAU915.cpp @@ -435,12 +435,16 @@ uint8_t LoRaPHYAU915::link_ADR_request(adr_req_params_t *params, // Initialize local copy of channels mask copy_channel_mask(temp_channel_masks, channel_mask, AU915_CHANNEL_MASK_SIZE); - while (bytes_processed < params->payload_size) { + while (bytes_processed < params->payload_size && + params->payload[bytes_processed] == SRV_MAC_LINK_ADR_REQ) { next_index = parse_link_ADR_req(&(params->payload[bytes_processed]), + params->payload_size, &adr_settings); if (next_index == 0) { - break; // break loop, since no more request has been found + bytes_processed = 0; + // break loop, malformed packet + break; } // Update bytes processed @@ -471,6 +475,11 @@ uint8_t LoRaPHYAU915::link_ADR_request(adr_req_params_t *params, } } + if (bytes_processed == 0) { + *nb_bytes_parsed = 0; + return status; + } + // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels if ((adr_settings.datarate < DR_6) && (num_active_channels(temp_channel_masks, 0, 4) < 2)) { diff --git a/features/lorawan/lorastack/phy/LoRaPHYCN470.cpp b/features/lorawan/lorastack/phy/LoRaPHYCN470.cpp index 01614e34f5e..da46aea6bff 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYCN470.cpp +++ b/features/lorawan/lorastack/phy/LoRaPHYCN470.cpp @@ -460,13 +460,18 @@ uint8_t LoRaPHYCN470::link_ADR_request(adr_req_params_t *params, // Initialize local copy of channels mask copy_channel_mask(temp_channel_masks, channel_mask, CN470_CHANNEL_MASK_SIZE); - while (bytes_processed < params->payload_size) { + while (bytes_processed < params->payload_size && + params->payload[bytes_processed] == SRV_MAC_LINK_ADR_REQ) { // Get ADR request parameters - next_index = parse_link_ADR_req(&(params->payload[bytes_processed]), &adr_settings); + next_index = parse_link_ADR_req(&(params->payload[bytes_processed]), + params->payload_size, + &adr_settings); if (next_index == 0) { - break; // break loop, since no more request has been found + bytes_processed = 0; + // break loop, malformed packet + break; } // Update bytes processed @@ -501,6 +506,11 @@ uint8_t LoRaPHYCN470::link_ADR_request(adr_req_params_t *params, } } + if (bytes_processed == 0) { + *nb_bytes_parsed = 0; + return status; + } + verify_params.status = status; verify_params.adr_enabled = params->adr_enabled; verify_params.datarate = adr_settings.datarate; diff --git a/features/lorawan/lorastack/phy/LoRaPHYUS915.cpp b/features/lorawan/lorastack/phy/LoRaPHYUS915.cpp index abc496be137..d454fb24e49 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYUS915.cpp +++ b/features/lorawan/lorastack/phy/LoRaPHYUS915.cpp @@ -460,12 +460,16 @@ uint8_t LoRaPHYUS915::link_ADR_request(adr_req_params_t *params, // Initialize local copy of channels mask copy_channel_mask(temp_channel_masks, channel_mask, US915_CHANNEL_MASK_SIZE); - while (bytes_processed < params->payload_size) { + while (bytes_processed < params->payload_size && + params->payload[bytes_processed] == SRV_MAC_LINK_ADR_REQ) { next_idx = parse_link_ADR_req(&(params->payload[bytes_processed]), + params->payload_size - bytes_processed, &adr_settings); if (next_idx == 0) { - break; // break loop, since no more request has been found + bytes_processed = 0; + // break loop, malformed packet + break; } // Update bytes processed @@ -501,6 +505,11 @@ uint8_t LoRaPHYUS915::link_ADR_request(adr_req_params_t *params, } } + if (bytes_processed == 0) { + *nb_bytes_parsed = 0; + return status; + } + // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels if ((adr_settings.datarate < DR_4) && (num_active_channels(temp_channel_masks, 0, 4) < 2)) { diff --git a/features/lorawan/mbed_lib.json b/features/lorawan/mbed_lib.json index e4eefd00e51..30e130b3645 100644 --- a/features/lorawan/mbed_lib.json +++ b/features/lorawan/mbed_lib.json @@ -70,24 +70,28 @@ "value": true }, "max-sys-rx-error": { - "help": "Maximum timing error of the receiver in ms. The receiver will turn on in [-RxError : + RxError]", - "value": 10 + "help": "Max. timing error fudge. The receiver will turn on in [-RxError : + RxError]", + "value": 5 + }, + "wakeup-time": { + "help": "Time in (ms) the platform takes to wakeup from sleep/deep sleep state. This number is platform dependent", + "value": 5 }, "downlink-preamble-length": { - "help": "Number of preamble symbols need to be captured (out of 8) for successful demodulation", - "value": 5 + "help": "Number of whole preamble symbols needed to have a firm lock on the signal.", + "value": 5 }, "uplink-preamble-length": { - "help": "Number of preamble symbols to transmit. Must be <= 8", - "value": 8 + "help": "Number of preamble symbols to transmit. Default: 8", + "value": 8 }, "fsb-mask": { - "help": "FSB mask for upstream [Only for US915 & AU915] Check lorawan/FSB_Usage.txt for more details", - "value": "{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF}" + "help": "FSB mask for upstream [Only for US915 & AU915] Check lorawan/FSB_Usage.txt for more details", + "value": "{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF}" }, "fsb-mask-china": { - "help": "FSB mask for upstream [CN470 PHY] Check lorawan/FSB_Usage.txt for more details", - "value": "{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}" + "help": "FSB mask for upstream [CN470 PHY] Check lorawan/FSB_Usage.txt for more details", + "value": "{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}" } } } diff --git a/features/lorawan/system/lorawan_data_structures.h b/features/lorawan/system/lorawan_data_structures.h index e35d5427617..dafcb29ff18 100644 --- a/features/lorawan/system/lorawan_data_structures.h +++ b/features/lorawan/system/lorawan_data_structures.h @@ -44,9 +44,6 @@ typedef uint32_t lorawan_time_t; #endif -// Radio wake-up time from sleep - unit ms. -#define RADIO_WAKEUP_TIME 1 - /*! * Sets the length of the LoRaMAC footer field. * Mainly indicates the MIC field length. @@ -1259,8 +1256,8 @@ typedef struct { /*! * LoRaMac reception windows delay - * \remark normal frame: RxWindowXDelay = ReceiveDelayX - RADIO_WAKEUP_TIME - * join frame : RxWindowXDelay = JoinAcceptDelayX - RADIO_WAKEUP_TIME + * \remark normal frame: RxWindowXDelay = ReceiveDelayX - Offset + * join frame : RxWindowXDelay = JoinAcceptDelayX - Offset */ uint32_t rx_window1_delay; uint32_t rx_window2_delay; diff --git a/features/lwipstack/lwipopts.h b/features/lwipstack/lwipopts.h index 073a060242f..0de4394c62c 100644 --- a/features/lwipstack/lwipopts.h +++ b/features/lwipstack/lwipopts.h @@ -159,6 +159,14 @@ #define TCP_WND MBED_CONF_LWIP_TCP_WND #endif +#ifdef MBED_CONF_LWIP_TCP_MAXRTX +#define TCP_MAXRTX MBED_CONF_LWIP_TCP_MAXRTX +#endif + +#ifdef MBED_CONF_LWIP_TCP_SYNMAXRTX +#define TCP_SYNMAXRTX MBED_CONF_LWIP_TCP_SYNMAXRTX +#endif + // Number of pool pbufs. // Each requires 684 bytes of RAM (if MSS=536 and PBUF_POOL_BUFSIZE defaulting to be based on MSS) #ifdef MBED_CONF_LWIP_PBUF_POOL_SIZE diff --git a/features/lwipstack/mbed_lib.json b/features/lwipstack/mbed_lib.json index d04cdef3b8d..47d284f8877 100644 --- a/features/lwipstack/mbed_lib.json +++ b/features/lwipstack/mbed_lib.json @@ -88,6 +88,14 @@ "help": "TCP sender buffer space (bytes). Current default (used if null here) is set to (4 * TCP_MSS) in opt.h, unless overridden by target Ethernet drivers.", "value": null }, + "tcp-maxrtx": { + "help": "Maximum number of retransmissions of data segments.", + "value": 6 + }, + "tcp-synmaxrtx": { + "help": "Maximum number of retransmissions of SYN segments. Current default (used if null here) is set to 6 in opt.h", + "value": null + }, "pbuf-pool-size": { "help": "Number of pbufs in pool - usually used for received packets, so this determines how much data can be buffered between reception and the application reading. If a driver uses PBUF_RAM for reception, less pool may be needed. Current default (used if null here) is set to 5 in lwipopts.h, unless overridden by target Ethernet drivers.", "value": null @@ -115,16 +123,17 @@ }, "target_overrides": { "REALTEK_RTL8195AM": { - "tcpip-thread-stacksize": 1600 + "tcpip-thread-stacksize": 1600, + "mem-size": 12800 }, "UBLOX_EVK_ODIN_W2": { "pbuf-pool-size" : 10 }, "STM": { - "mem-size": 25600 + "mem-size": 2310 }, "Freescale": { - "mem-size": 36560 + "mem-size": 33270 }, "LPC1768": { "mem-size": 16362 diff --git a/features/mbedtls/VERSION.txt b/features/mbedtls/VERSION.txt index 31b45ded6e8..a85e9b07f86 100644 --- a/features/mbedtls/VERSION.txt +++ b/features/mbedtls/VERSION.txt @@ -1,2 +1,2 @@ -mbedtls-2.15.0 -mbedcrypto-0.1.0b +mbedtls-2.15.1 +mbedcrypto-0.1.0b2 diff --git a/features/mbedtls/importer/Makefile b/features/mbedtls/importer/Makefile index 1ae8af23800..a9adff62d3a 100644 --- a/features/mbedtls/importer/Makefile +++ b/features/mbedtls/importer/Makefile @@ -27,7 +27,8 @@ # # Set the mbed TLS release to import (this can/should be edited before import) -MBED_TLS_RELEASE ?= mbedtls-2.15.0 +MBED_TLS_RELEASE ?= mbedtls-2.15.1 +MBED_TLS_REPO_URL ?= git@github.com:ARMmbed/mbedtls-restricted.git # Translate between mbed TLS namespace and mbed namespace TARGET_PREFIX:=../ @@ -51,7 +52,6 @@ TARGET_PSA_DRIVERS:=$(TARGET_PREFIX_CRYPTO)/targets TARGET_NSPE:=$(TARGET_SRV_IMPL)/COMPONENT_NSPE # mbed TLS source directory - hidden from mbed via TARGET_IGNORE -MBED_TLS_URL:=git@github.com:ARMmbed/mbedtls-restricted.git MBED_TLS_DIR:=TARGET_IGNORE/mbedtls MBED_TLS_API:=$(MBED_TLS_DIR)/include/mbedtls MBED_TLS_GIT_CFG=$(MBED_TLS_DIR)/.git/config @@ -139,7 +139,7 @@ update: $(MBED_TLS_GIT_CFG) $(MBED_TLS_HA_GIT_CFG) $(MBED_TLS_GIT_CFG): rm -rf $(MBED_TLS_DIR) - git clone $(MBED_TLS_URL) $(MBED_TLS_DIR) + git clone $(MBED_TLS_REPO_URL) $(MBED_TLS_DIR) clean: rm -f $(TARGET_PREFIX)LICENSE diff --git a/features/mbedtls/importer/adjust-config.sh b/features/mbedtls/importer/adjust-config.sh index d6cc758a73f..347ca5c1558 100755 --- a/features/mbedtls/importer/adjust-config.sh +++ b/features/mbedtls/importer/adjust-config.sh @@ -140,6 +140,12 @@ conf unset MBEDTLS_SSL_TRUNCATED_HMAC conf unset MBEDTLS_PLATFORM_TIME_TYPE_MACRO +# The default size of MBEDTLS_MPI_MAX_SIZE is 1024 bytes. +# In some cases, this value is set to stack buffers. +# Reduce the maximal MBEDTLS_MPI_MAX_SIZE to 512 bytes, +# which should fit RSA 4096 bit keys. +conf set MBEDTLS_MPI_MAX_SIZE 512 + # The following configurations are a needed for Mbed Crypto submodule. # They are related to the persistent key storage feature. conf set MBEDTLS_PSA_CRYPTO_STORAGE_C diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto.c b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto.c index d100eb1fcb1..fc296d36557 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto.c +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto.c @@ -3146,7 +3146,7 @@ static void psa_aead_abort( aead_operation_t *operation ) mbedtls_ccm_free( &operation->ctx.ccm ); break; #endif /* MBEDTLS_CCM_C */ -#if defined(MBEDTLS_CCM_C) +#if defined(MBEDTLS_GCM_C) case PSA_ALG_GCM: mbedtls_gcm_free( &operation->ctx.gcm ); break; @@ -3259,6 +3259,7 @@ psa_status_t psa_aead_encrypt( psa_key_slot_t key, } tag = ciphertext + plaintext_length; +#if defined(MBEDTLS_GCM_C) if( operation.core_alg == PSA_ALG_GCM ) { status = mbedtls_to_psa_error( @@ -3270,7 +3271,10 @@ psa_status_t psa_aead_encrypt( psa_key_slot_t key, plaintext, ciphertext, operation.tag_length, tag ) ); } - else if( operation.core_alg == PSA_ALG_CCM ) + else +#endif /* MBEDTLS_GCM_C */ +#if defined(MBEDTLS_CCM_C) + if( operation.core_alg == PSA_ALG_CCM ) { status = mbedtls_to_psa_error( mbedtls_ccm_encrypt_and_tag( &operation.ctx.ccm, @@ -3282,6 +3286,7 @@ psa_status_t psa_aead_encrypt( psa_key_slot_t key, tag, operation.tag_length ) ); } else +#endif /* MBEDTLS_CCM_C */ { return( PSA_ERROR_NOT_SUPPORTED ); } @@ -3339,6 +3344,7 @@ psa_status_t psa_aead_decrypt( psa_key_slot_t key, if( status != PSA_SUCCESS ) return( status ); +#if defined(MBEDTLS_GCM_C) if( operation.core_alg == PSA_ALG_GCM ) { status = psa_aead_unpadded_locate_tag( operation.tag_length, @@ -3356,7 +3362,10 @@ psa_status_t psa_aead_decrypt( psa_key_slot_t key, tag, operation.tag_length, ciphertext, plaintext ) ); } - else if( operation.core_alg == PSA_ALG_CCM ) + else +#endif /* MBEDTLS_GCM_C */ +#if defined(MBEDTLS_CCM_C) + if( operation.core_alg == PSA_ALG_CCM ) { status = psa_aead_unpadded_locate_tag( operation.tag_length, ciphertext, ciphertext_length, @@ -3374,6 +3383,7 @@ psa_status_t psa_aead_decrypt( psa_key_slot_t key, tag, operation.tag_length ) ); } else +#endif /* MBEDTLS_CCM_C */ { return( PSA_ERROR_NOT_SUPPORTED ); } @@ -4249,7 +4259,7 @@ static psa_status_t its_to_psa_error( psa_its_status_t ret ) return( PSA_ERROR_INSUFFICIENT_STORAGE ); case PSA_ITS_ERROR_INVALID_KEY: - case PSA_PS_ERROR_OFFSET_INVALID: + case PSA_ITS_ERROR_OFFSET_INVALID: case PSA_ITS_ERROR_INCORRECT_SIZE: case PSA_ITS_ERROR_BAD_POINTER: return( PSA_ERROR_INVALID_ARGUMENT ); diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_its.c b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_its.c index 29394b5d89c..35caa39adcd 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_its.c +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_its.c @@ -52,7 +52,7 @@ static psa_status_t its_to_psa_error( psa_its_status_t ret ) return( PSA_ERROR_INSUFFICIENT_STORAGE ); case PSA_ITS_ERROR_INVALID_KEY: - case PSA_PS_ERROR_OFFSET_INVALID: + case PSA_ITS_ERROR_OFFSET_INVALID: case PSA_ITS_ERROR_INCORRECT_SIZE: case PSA_ITS_ERROR_BAD_POINTER: return( PSA_ERROR_INVALID_ARGUMENT ); diff --git a/features/mbedtls/platform/inc/platform_alt.h b/features/mbedtls/platform/inc/platform_alt.h index 687be6d642d..92e9c333644 100644 --- a/features/mbedtls/platform/inc/platform_alt.h +++ b/features/mbedtls/platform/inc/platform_alt.h @@ -22,7 +22,7 @@ #define __PLATFORM_ALT__ #include "platform_mbed.h" #if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) -#include "crypto_platform.h" +#include "crypto_device_platform.h" /** * \brief The platform context structure. * diff --git a/features/mbedtls/platform/inc/platform_mbed.h b/features/mbedtls/platform/inc/platform_mbed.h index 0da5014e97f..9ccaf08ab0a 100644 --- a/features/mbedtls/platform/inc/platform_mbed.h +++ b/features/mbedtls/platform/inc/platform_mbed.h @@ -17,7 +17,7 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ -#if defined(DEVICE_TRNG) +#if DEVICE_TRNG #define MBEDTLS_ENTROPY_HARDWARE_ALT #endif diff --git a/features/mbedtls/platform/src/mbed_trng.c b/features/mbedtls/platform/src/mbed_trng.cpp similarity index 85% rename from features/mbedtls/platform/src/mbed_trng.c rename to features/mbedtls/platform/src/mbed_trng.cpp index e5a1cbbe1f0..53c1c210979 100644 --- a/features/mbedtls/platform/src/mbed_trng.c +++ b/features/mbedtls/platform/src/mbed_trng.cpp @@ -14,15 +14,20 @@ * limitations under the License. */ -#if defined(DEVICE_TRNG) +#if DEVICE_TRNG #include "hal/trng_api.h" +#include "platform/PlatformMutex.h" +extern "C" int mbedtls_hardware_poll( void *data, unsigned char *output, size_t len, size_t *olen ) { + static PlatformMutex trng_mutex; trng_t trng_obj; + trng_mutex.lock(); trng_init(&trng_obj); int ret = trng_get_bytes(&trng_obj, output, len, olen); trng_free(&trng_obj); + trng_mutex.unlock(); return ret; } diff --git a/features/mbedtls/platform/src/platform_alt.c b/features/mbedtls/platform/src/platform_alt.c index d3250d11053..c0254de9dcd 100644 --- a/features/mbedtls/platform/src/platform_alt.c +++ b/features/mbedtls/platform/src/platform_alt.c @@ -22,30 +22,30 @@ #if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) #include "mbed_critical.h" -mbedtls_platform_context ctx = { { 0 } }; +mbedtls_platform_context plat_ctx = { { 0 } }; int mbedtls_platform_setup( mbedtls_platform_context *unused_ctx ) { int ret = 0; - core_util_atomic_incr_u32( ( volatile uint32_t * )&ctx.reference_count, 1 ); + core_util_atomic_incr_u32( ( volatile uint32_t * )&plat_ctx.reference_count, 1 ); - if( ctx.reference_count == 1 ) + if( plat_ctx.reference_count == 1 ) { /* call platform specific code to setup crypto driver */ - ret = crypto_platform_setup( &ctx.platform_impl_ctx ); + ret = crypto_platform_setup( &plat_ctx.platform_impl_ctx ); } return ( ret ); } void mbedtls_platform_teardown( mbedtls_platform_context *unused_ctx ) { - core_util_atomic_decr_u32( ( volatile uint32_t * )&ctx.reference_count, 1 ); - if( ctx.reference_count < 1 ) + core_util_atomic_decr_u32( ( volatile uint32_t * )&plat_ctx.reference_count, 1 ); + if( plat_ctx.reference_count < 1 ) { /* call platform specific code to terminate crypto driver */ - crypto_platform_terminate( &ctx.platform_impl_ctx ); - ctx.reference_count = 0; + crypto_platform_terminate( &plat_ctx.platform_impl_ctx ); + plat_ctx.reference_count = 0; } } diff --git a/features/mbedtls/src/ecp.c b/features/mbedtls/src/ecp.c index de5725c7007..e3b9106dbcc 100644 --- a/features/mbedtls/src/ecp.c +++ b/features/mbedtls/src/ecp.c @@ -2393,11 +2393,6 @@ int mbedtls_ecp_muladd_restartable( mbedtls_ecp_point_init( &mP ); -#if defined(MBEDTLS_ECP_INTERNAL_ALT) - if( ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) ) - MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); -#endif /* MBEDTLS_ECP_INTERNAL_ALT */ - ECP_RS_ENTER( ma ); #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -2425,6 +2420,12 @@ int mbedtls_ecp_muladd_restartable( mul2: #endif MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pR, n, Q, rs_ctx ) ); + +#if defined(MBEDTLS_ECP_INTERNAL_ALT) + if( ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) ) + MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); +#endif /* MBEDTLS_ECP_INTERNAL_ALT */ + #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) rs_ctx->ma->state = ecp_rsma_add; diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/aes/aes_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/aes/aes_alt.c index 69a6f790af3..a70ca65812c 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/aes/aes_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/aes/aes_alt.c @@ -144,10 +144,9 @@ static void __nvt_aes_crypt( mbedtls_aes_context *ctx, error("Buffer for AES alter. DMA requires to be word-aligned and located in 0x20000000-0x2FFFFFFF region."); } - /* TODO: Change busy-wait to other means to release CPU */ /* Acquire ownership of AES H/W */ - while (! crypto_aes_acquire()); - + crypto_aes_acquire(); + /* Init crypto module */ crypto_init(); /* Enable AES interrupt */ diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/des/des_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/des/des_alt.c index 2ef63f4b3cb..834592a51a6 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/des/des_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/des/des_alt.c @@ -349,10 +349,9 @@ static int mbedtls_des_docrypt(uint16_t keyopt, uint8_t key[3][MBEDTLS_DES_KEY_S error("Buffer for DES alter. DMA requires to be word-aligned and located in 0x20000000-0x2FFFFFFF region."); } - /* TODO: Change busy-wait to other means to release CPU */ /* Acquire ownership of DES H/W */ - while (! crypto_des_acquire()); - + crypto_des_acquire(); + /* Init crypto module */ crypto_init(); /* Enable DES interrupt */ diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c index be73b1f1d88..9d5bd95bed6 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c @@ -53,6 +53,7 @@ * would be defined in mbedtls/ecp.h from ecp.c for our inclusion */ #define ECP_SHORTWEIERSTRASS +#include "mbedtls/platform.h" #include "mbedtls/ecp_internal.h" #include "mbed_toolchain.h" #include "mbed_assert.h" @@ -222,12 +223,23 @@ unsigned char mbedtls_internal_ecp_grp_capable( const mbedtls_ecp_group *grp ) int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp ) { - /* TODO: Change busy-wait with other means to release CPU */ + /* Behavior of mbedtls_internal_ecp_init()/mbedtls_internal_ecp_free() + * + * mbedtls_internal_ecp_init()/mbedtls_internal_ecp_free() are like pre-op/post-op calls + * and they guarantee: + * + * 1. Paired + * 2. No overlapping + * 3. Upper public function cannot return when ECP alter. is still activated. + */ + /* Acquire ownership of ECC accelerator */ - while (! crypto_ecc_acquire()); + crypto_ecc_acquire(); - /* Init crypto module */ + /* Initialize crypto module */ crypto_init(); + + /* Enable ECC interrupt */ ECC_ENABLE_INT(); return 0; @@ -237,9 +249,10 @@ void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp ) { /* Disable ECC interrupt */ ECC_DISABLE_INT(); + /* Uninit crypto module */ crypto_uninit(); - + /* Release ownership of ECC accelerator */ crypto_ecc_release(); } @@ -589,7 +602,7 @@ NU_STATIC int internal_run_eccop(const mbedtls_ecp_group *grp, ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; goto cleanup; } - + /* Configure ECC curve coefficients A/B */ /* Special case for A = -3 */ if (grp->A.p == NULL) { @@ -632,10 +645,9 @@ NU_STATIC int internal_run_eccop(const mbedtls_ecp_group *grp, crypto_ecc_prestart(); CRPT->ECC_CTL = (grp->pbits << CRPT_ECC_CTL_CURVEM_Pos) | eccop | CRPT_ECC_CTL_FSEL_Msk | CRPT_ECC_CTL_START_Msk; ecc_done = crypto_ecc_wait(); - - /* FIXME: Better error code for ECC accelerator error */ - MBEDTLS_MPI_CHK(ecc_done ? 0 : -1); - + + MBEDTLS_MPI_CHK(ecc_done ? 0 : MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED); + /* (X1, Y1) hold the normalized result. */ MBEDTLS_MPI_CHK(internal_mpi_read_eccreg(&R->X, (uint32_t *) CRPT->ECC_X1, NU_ECC_BIGNUM_MAXWORD)); MBEDTLS_MPI_CHK(internal_mpi_read_eccreg(&R->Y, (uint32_t *) CRPT->ECC_Y1, NU_ECC_BIGNUM_MAXWORD)); @@ -644,7 +656,7 @@ NU_STATIC int internal_run_eccop(const mbedtls_ecp_group *grp, cleanup: mbedtls_mpi_free(&N_); - + return ret; } @@ -698,7 +710,7 @@ NU_STATIC int internal_run_modop(mbedtls_mpi *r, const mbedtls_mpi *Np; mbedtls_mpi_init(&N_); - + /* Use INTERNAL_MPI_NORM(Np, N1, N_, P) to get normalized MPI * * N_: Holds normalized MPI if the passed-in MPI N1 is not @@ -726,10 +738,9 @@ NU_STATIC int internal_run_modop(mbedtls_mpi *r, crypto_ecc_prestart(); CRPT->ECC_CTL = (pbits << CRPT_ECC_CTL_CURVEM_Pos) | (ECCOP_MODULE | modop) | CRPT_ECC_CTL_FSEL_Msk | CRPT_ECC_CTL_START_Msk; ecc_done = crypto_ecc_wait(); - - /* FIXME: Better error code for ECC accelerator error */ - MBEDTLS_MPI_CHK(ecc_done ? 0 : -1); - + + MBEDTLS_MPI_CHK(ecc_done ? 0 : MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED); + /* X1 holds the result. */ MBEDTLS_MPI_CHK(internal_mpi_read_eccreg(r, (uint32_t *) CRPT->ECC_X1, NU_ECC_BIGNUM_MAXWORD)); diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha1_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha1_alt.c index 75c2c983e49..38981bc1ed7 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha1_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha1_alt.c @@ -31,7 +31,7 @@ */ static void mbedtls_sha1_init_internal(mbedtls_sha1_context *ctx, int try_hw) { - if (try_hw && crypto_sha_acquire()) { + if (try_hw && crypto_sha_try_acquire()) { ctx->active_ctx = &ctx->hw_ctx; mbedtls_sha1_hw_init(&ctx->hw_ctx); } else { diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha256_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha256_alt.c index 3b392534ce7..b0948e1c63b 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha256_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha256_alt.c @@ -31,7 +31,7 @@ */ static void mbedtls_sha256_init_internal(mbedtls_sha256_context *ctx, int try_hw) { - if (try_hw && crypto_sha_acquire()) { + if (try_hw && crypto_sha_try_acquire()) { ctx->active_ctx = &ctx->hw_ctx; mbedtls_sha256_hw_init(&ctx->hw_ctx); } else { diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha512_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha512_alt.c index c80085d91ef..4b4a5405510 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha512_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_M480/sha/sha512_alt.c @@ -31,7 +31,7 @@ */ static void mbedtls_sha512_init_internal(mbedtls_sha512_context *ctx, int try_hw) { - if (try_hw && crypto_sha_acquire()) { + if (try_hw && crypto_sha_try_acquire()) { ctx->active_ctx = &ctx->hw_ctx; mbedtls_sha512_hw_init(&ctx->hw_ctx); } else { diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/aes/aes_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/aes/aes_alt.c index af52848035a..162e4016d0d 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/aes/aes_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/aes/aes_alt.c @@ -144,10 +144,9 @@ static void __nvt_aes_crypt( mbedtls_aes_context *ctx, error("Buffer for AES alter. DMA requires to be word-aligned and located in 0x20000000-0x2FFFFFFF region."); } - /* TODO: Change busy-wait to other means to release CPU */ /* Acquire ownership of AES H/W */ - while (! crypto_aes_acquire()); - + crypto_aes_acquire(); + /* Init crypto module */ crypto_init(); /* Enable AES interrupt */ diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/des/des_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/des/des_alt.c index 2ef63f4b3cb..78db79e731c 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/des/des_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/des/des_alt.c @@ -348,11 +348,10 @@ static int mbedtls_des_docrypt(uint16_t keyopt, uint8_t key[3][MBEDTLS_DES_KEY_S (! crypto_dma_buff_compat(dmabuf_out, MAXSIZE_DMABUF, 8))) { error("Buffer for DES alter. DMA requires to be word-aligned and located in 0x20000000-0x2FFFFFFF region."); } - - /* TODO: Change busy-wait to other means to release CPU */ + /* Acquire ownership of DES H/W */ - while (! crypto_des_acquire()); - + crypto_des_acquire(); + /* Init crypto module */ crypto_init(); /* Enable DES interrupt */ diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha1_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha1_alt.c index 75c2c983e49..38981bc1ed7 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha1_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha1_alt.c @@ -31,7 +31,7 @@ */ static void mbedtls_sha1_init_internal(mbedtls_sha1_context *ctx, int try_hw) { - if (try_hw && crypto_sha_acquire()) { + if (try_hw && crypto_sha_try_acquire()) { ctx->active_ctx = &ctx->hw_ctx; mbedtls_sha1_hw_init(&ctx->hw_ctx); } else { diff --git a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha256_alt.c b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha256_alt.c index 0307929ebf5..7bc12497e70 100644 --- a/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha256_alt.c +++ b/features/mbedtls/targets/TARGET_NUVOTON/TARGET_NUC472/sha/sha256_alt.c @@ -31,7 +31,7 @@ */ static void mbedtls_sha256_init_internal(mbedtls_sha256_context *ctx, int try_hw) { - if (try_hw && crypto_sha_acquire()) { + if (try_hw && crypto_sha_try_acquire()) { ctx->active_ctx = &ctx->hw_ctx; mbedtls_sha256_hw_init(&ctx->hw_ctx); } else { diff --git a/features/mbedtls/targets/TARGET_STM/aes_alt.c b/features/mbedtls/targets/TARGET_STM/aes_alt.c index dae8721634a..84d3ed2c645 100644 --- a/features/mbedtls/targets/TARGET_STM/aes_alt.c +++ b/features/mbedtls/targets/TARGET_STM/aes_alt.c @@ -56,13 +56,14 @@ static int aes_set_key(mbedtls_aes_context *ctx, const unsigned char *key, unsig return (MBEDTLS_ERR_AES_INVALID_KEY_LENGTH); } + ctx->hcryp_aes.Init.DataType = CRYP_DATATYPE_8B; + ctx->hcryp_aes.Instance = CRYP; + /* Deinitializes the CRYP peripheral */ if (HAL_CRYP_DeInit(&ctx->hcryp_aes) == HAL_ERROR) { return (HAL_ERROR); } - ctx->hcryp_aes.Init.DataType = CRYP_DATATYPE_8B; - ctx->hcryp_aes.Instance = CRYP; /* Enable CRYP clock */ __HAL_RCC_CRYP_CLK_ENABLE(); diff --git a/features/nanostack/mbed-mesh-api/.gitignore b/features/nanostack/mbed-mesh-api/.gitignore index 65379f95bfd..a007feab071 100644 --- a/features/nanostack/mbed-mesh-api/.gitignore +++ b/features/nanostack/mbed-mesh-api/.gitignore @@ -1,4 +1 @@ -yotta_modules/* -yotta_targets/* build/* -.yotta.json diff --git a/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h b/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h index f6c3c8a53d3..f157a598fc9 100644 --- a/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h +++ b/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h @@ -16,7 +16,6 @@ #ifndef MESHINTERFACENANOSTACK_H #define MESHINTERFACENANOSTACK_H -#include "mbed.h" #include "MeshInterface.h" #include "NanostackRfPhy.h" diff --git a/features/nanostack/mbed-mesh-api/mbed_lib.json b/features/nanostack/mbed-mesh-api/mbed_lib.json index b24664c78a2..fee1171b587 100644 --- a/features/nanostack/mbed-mesh-api/mbed_lib.json +++ b/features/nanostack/mbed-mesh-api/mbed_lib.json @@ -161,6 +161,9 @@ }, "NCS36510": { "mbed-mesh-api.heap-size": 14000 + }, + "KW41Z": { + "mbed-mesh-api.heap-size": 14000 } } } diff --git a/features/nanostack/mbed-mesh-api/module.json b/features/nanostack/mbed-mesh-api/module.json deleted file mode 100644 index c6754fb1707..00000000000 --- a/features/nanostack/mbed-mesh-api/module.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "mbed-mesh-api", - "version": "3.0.2", - "description": "Mesh networking interface", - "keywords": [ - "Mesh", - "6LoWPAN", - "Thread" - ], - "author": "Arto Kinnunen ", - "repository": { - "url": "git@github.com:ARMmbed/mbed-mesh-api.git", - "type": "git" - }, - "homepage": "https://github.com/ARMmbed/mbed-mesh-api", - "license": "Apache-2.0", - "dependencies": { - "sal-iface-6lowpan": "^3.0.0" - }, - "testDependencies": { - "atmel-rf-driver": "^3.0.0" - }, - "targetDependencies": {} -} diff --git a/features/nanostack/mbed-mesh-api/source/LoWPANNDInterface.cpp b/features/nanostack/mbed-mesh-api/source/LoWPANNDInterface.cpp index 7b911865b74..97ea085f865 100644 --- a/features/nanostack/mbed-mesh-api/source/LoWPANNDInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/LoWPANNDInterface.cpp @@ -178,8 +178,19 @@ bool LoWPANNDInterface::getRouterIpAddress(char *address, int8_t len) #if MBED_CONF_NSAPI_DEFAULT_MESH_TYPE == LOWPAN && DEVICE_802_15_4_PHY MBED_WEAK MeshInterface *MeshInterface::get_target_default_instance() { - static LoWPANNDInterface lowpan(&NanostackRfPhy::get_default_instance()); - - return &lowpan; + static bool inited; + static LoWPANNDInterface interface; + singleton_lock(); + if (!inited) { + nsapi_error_t result = interface.initialize(&NanostackRfPhy::get_default_instance()); + if (result != 0) { + tr_error("LoWPANND initialize failed: %d", result); + singleton_unlock(); + return NULL; + } + inited = true; + } + singleton_unlock(); + return &interface; } #endif diff --git a/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp b/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp index 44df5ce3245..c2df8c55670 100644 --- a/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp +++ b/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp @@ -21,6 +21,7 @@ #include "nanostack/net_interface.h" #include "thread_management_if.h" #include "ip6string.h" +#include "mbed_error.h" char *Nanostack::Interface::get_ip_address(char *buf, nsapi_size_t buflen) { diff --git a/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp b/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp index 989b6f8c883..cecb39cabc9 100644 --- a/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp @@ -7,6 +7,8 @@ #include "nsdynmemLIB.h" #include "arm_hal_phy.h" #include "EMAC.h" +#include "enet_tasklet.h" +#include "mbed_interface.h" class EMACPhy : public NanostackEthernetPhy { public: @@ -137,6 +139,7 @@ int8_t EMACPhy::phy_register() emac.set_memory_manager(memory_manager); emac.set_link_input_cb(mbed::callback(this, &EMACPhy::emac_phy_rx)); + emac.set_link_state_cb(enet_tasklet_link_state_changed); if (!emac.power_up()) { return -1; diff --git a/features/nanostack/mbed-mesh-api/source/NanostackEthernetInterface.cpp b/features/nanostack/mbed-mesh-api/source/NanostackEthernetInterface.cpp index a502b868861..04bca1b9a63 100644 --- a/features/nanostack/mbed-mesh-api/source/NanostackEthernetInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/NanostackEthernetInterface.cpp @@ -97,6 +97,8 @@ nsapi_error_t NanostackEthernetInterface::do_initialize() nsapi_error_t Nanostack::EthernetInterface::bringdown() { - enet_tasklet_disconnect(); - return 0; + if (enet_tasklet_disconnect(true)) { + return NSAPI_ERROR_DEVICE_ERROR; + } + return NSAPI_ERROR_OK; } diff --git a/features/nanostack/mbed-mesh-api/source/ThreadInterface.cpp b/features/nanostack/mbed-mesh-api/source/ThreadInterface.cpp index 60e16f3fb96..9f7bec82394 100644 --- a/features/nanostack/mbed-mesh-api/source/ThreadInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/ThreadInterface.cpp @@ -269,10 +269,22 @@ mesh_error_t Nanostack::ThreadInterface::device_pskd_set(const char *pskd) #define THREAD 0x2345 #if MBED_CONF_NSAPI_DEFAULT_MESH_TYPE == THREAD && DEVICE_802_15_4_PHY + MBED_WEAK MeshInterface *MeshInterface::get_target_default_instance() { - static ThreadInterface thread(&NanostackRfPhy::get_default_instance()); - - return &thread; + static bool inited; + static ThreadInterface interface; + singleton_lock(); + if (!inited) { + nsapi_error_t result = interface.initialize(&NanostackRfPhy::get_default_instance()); + if (result != 0) { + tr_error("Thread initialize failed: %d", result); + singleton_unlock(); + return NULL; + } + inited = true; + } + singleton_unlock(); + return &interface; } #endif diff --git a/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp b/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp index 252656a4bb1..cd7570c76d3 100644 --- a/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp @@ -50,7 +50,7 @@ Nanostack::WisunInterface *WisunInterface::get_interface() const nsapi_error_t WisunInterface::do_initialize() { if (!_interface) { - _interface = new (nothrow) Nanostack::WisunInterface(*_phy); + _interface = new (std::nothrow) Nanostack::WisunInterface(*_phy); if (!_interface) { return NSAPI_ERROR_NO_MEMORY; } @@ -178,8 +178,19 @@ bool WisunInterface::getRouterIpAddress(char *address, int8_t len) #if MBED_CONF_NSAPI_DEFAULT_MESH_TYPE == WISUN && DEVICE_802_15_4_PHY MBED_WEAK MeshInterface *MeshInterface::get_target_default_instance() { - static WisunInterface wisun(&NanostackRfPhy::get_default_instance()); - - return &wisun; + static bool inited; + static WisunInterface interface; + singleton_lock(); + if (!inited) { + nsapi_error_t result = interface.initialize(&NanostackRfPhy::get_default_instance()); + if (result != 0) { + tr_error("Wi-SUN initialize failed: %d", result); + singleton_unlock(); + return NULL; + } + inited = true; + } + singleton_unlock(); + return &interface; } #endif diff --git a/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c b/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c index d86b98a36dc..6a63c040813 100644 --- a/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c +++ b/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c @@ -24,6 +24,7 @@ #include "ns_event_loop.h" #include "mesh_interface_types.h" #include "eventOS_event.h" +#include "enet_tasklet.h" // For tracing we need to define flag, have include and define group #include "ns_trace.h" @@ -119,6 +120,26 @@ void enet_tasklet_main(arm_event_s *event) case APPLICATION_EVENT: if (event->event_id == APPL_EVENT_CONNECT) { enet_tasklet_configure_and_connect_to_network(); + } else if (event->event_id == APPL_BACKHAUL_INTERFACE_PHY_UP + && tasklet_data_ptr->tasklet_state != TASKLET_STATE_BOOTSTRAP_STARTED) { + // Ethernet cable has been plugged in + arm_nwk_interface_configure_ipv6_bootstrap_set( + tasklet_data_ptr->network_interface_id, NET_IPV6_BOOTSTRAP_AUTONOMOUS, NULL); + enet_tasklet_configure_and_connect_to_network(); + + if (tasklet_data_ptr->poll_network_status_timeout != NULL) { + // Restart poll timer + eventOS_timeout_cancel(tasklet_data_ptr->poll_network_status_timeout); + } + tasklet_data_ptr->poll_network_status_timeout = + eventOS_timeout_every_ms(enet_tasklet_poll_network_status, 2000, NULL); + } else if (event->event_id == APPL_BACKHAUL_INTERFACE_PHY_DOWN) { + // Ethernet cable has been removed + arm_nwk_interface_down(tasklet_data_ptr->network_interface_id); + eventOS_timeout_cancel(tasklet_data_ptr->poll_network_status_timeout); + tasklet_data_ptr->poll_network_status_timeout = NULL; + memset(tasklet_data_ptr->ip, 0x0, 16); + enet_tasklet_network_state_changed(MESH_BOOTSTRAP_STARTED); } break; @@ -155,13 +176,13 @@ void enet_tasklet_parse_network_event(arm_event_s *event) /* No ND Router at current Channel Stack is Already at Idle state */ tr_info("Bootstrap fail"); tasklet_data_ptr->tasklet_state = TASKLET_STATE_BOOTSTRAP_FAILED; - enet_tasklet_network_state_changed(MESH_DISCONNECTED); + enet_tasklet_network_state_changed(MESH_BOOTSTRAP_FAILED); break; case ARM_NWK_NWK_CONNECTION_DOWN: /* Connection to Access point is lost wait for Scan Result */ tr_info("Connection lost"); tasklet_data_ptr->tasklet_state = TASKLET_STATE_BOOTSTRAP_FAILED; - enet_tasklet_network_state_changed(MESH_DISCONNECTED); + enet_tasklet_network_state_changed(MESH_BOOTSTRAP_FAILED); break; default: tr_warn("Unknown event %d", status); @@ -209,8 +230,18 @@ static void enet_tasklet_poll_network_status(void *param) */ void enet_tasklet_configure_and_connect_to_network(void) { - arm_nwk_interface_up(tasklet_data_ptr->network_interface_id); - enet_tasklet_network_state_changed(MESH_BOOTSTRAP_STARTED); + int8_t status; + + status = arm_nwk_interface_up(tasklet_data_ptr->network_interface_id); + if (status >= 0) { + tasklet_data_ptr->tasklet_state = TASKLET_STATE_BOOTSTRAP_STARTED; + tr_info("Start Bootstrap"); + enet_tasklet_network_state_changed(MESH_BOOTSTRAP_STARTED); + } else { + tasklet_data_ptr->tasklet_state = TASKLET_STATE_BOOTSTRAP_FAILED; + tr_err("Bootstrap start failed, %d", status); + enet_tasklet_network_state_changed(MESH_BOOTSTRAP_START_FAILED); + } } /* @@ -264,7 +295,7 @@ int8_t enet_tasklet_disconnect(bool send_cb) if (tasklet_data_ptr->network_interface_id != INVALID_INTERFACE_ID) { status = arm_nwk_interface_down(tasklet_data_ptr->network_interface_id); tasklet_data_ptr->network_interface_id = INVALID_INTERFACE_ID; - if (send_cb == true) { + if (send_cb) { enet_tasklet_network_state_changed(MESH_DISCONNECTED); } } @@ -300,3 +331,15 @@ int8_t enet_tasklet_network_init(int8_t device_id) tasklet_data_ptr->network_interface_id, NET_IPV6_BOOTSTRAP_AUTONOMOUS, NULL); return tasklet_data_ptr->network_interface_id; } + +void enet_tasklet_link_state_changed(bool up) +{ + arm_event_s event = { + .receiver = tasklet_data_ptr->tasklet, + .sender = tasklet_data_ptr->tasklet, + .event_type = APPLICATION_EVENT, + .priority = ARM_LIB_LOW_PRIORITY_EVENT, + .event_id = up ? APPL_BACKHAUL_INTERFACE_PHY_UP : APPL_BACKHAUL_INTERFACE_PHY_DOWN, + }; + eventOS_event_send(&event); +} diff --git a/features/nanostack/mbed-mesh-api/source/include/callback_handler.h b/features/nanostack/mbed-mesh-api/source/include/callback_handler.h index 24ba7275853..3056eb4a09e 100644 --- a/features/nanostack/mbed-mesh-api/source/include/callback_handler.h +++ b/features/nanostack/mbed-mesh-api/source/include/callback_handler.h @@ -17,7 +17,6 @@ #ifndef __INCLUDE_CALLBACK_HANDLER_H__ #define __INCLUDE_CALLBACK_HANDLER_H__ -#include "mbed.h" #include "mesh_interface_types.h" #ifdef __cplusplus diff --git a/features/nanostack/mbed-mesh-api/source/include/enet_tasklet.h b/features/nanostack/mbed-mesh-api/source/include/enet_tasklet.h index f8a8edf3b17..4aba04cbab9 100644 --- a/features/nanostack/mbed-mesh-api/source/include/enet_tasklet.h +++ b/features/nanostack/mbed-mesh-api/source/include/enet_tasklet.h @@ -17,15 +17,49 @@ #ifndef ENET_TASKLET_H #define ENET_TASKLET_H +#include "mesh_interface_types.h" #ifdef __cplusplus extern "C" { #endif +/* + * \brief Initialize system. + */ void enet_tasklet_init(void); -uint8_t enet_tasklet_network_init(int8_t); + +/* + * \brief Create network interface. + * + * \param device_id Registered physical device. + * \return interface ID used to communication with this interface. + */ +int8_t enet_tasklet_network_init(int8_t device_id); + +/* + * \brief Connect to Ethernet network. + * + * \param callback Call when network state changes. + * \param nwk_interface_id To use for networking. + * + */ int8_t enet_tasklet_connect(void (*)(mesh_connection_status_t mesh_status), int8_t nwk_interface_id); -void enet_tasklet_disconnect(); + +/* + * \brief Disconnect network interface. + * + * \param send_cb Send possible network status change event if set to `true`. + * \return >= 0 if disconnected successfully. + * \return < 0 if error. + */ +int8_t enet_tasklet_disconnect(bool send_cb); + +/* + * \brief Callback to call when the link state changes. + * + * \param up Tells if link is up or down. + */ +void enet_tasklet_link_state_changed(bool up); #ifdef __cplusplus } diff --git a/features/nanostack/mbed-mesh-api/source/include/mesh_system.h b/features/nanostack/mbed-mesh-api/source/include/mesh_system.h index 43fef4c4f0a..66b0a9bbaff 100644 --- a/features/nanostack/mbed-mesh-api/source/include/mesh_system.h +++ b/features/nanostack/mbed-mesh-api/source/include/mesh_system.h @@ -25,7 +25,11 @@ extern "C" { /* * Event type for connecting */ -#define APPL_EVENT_CONNECT 0x01 +enum { + APPL_EVENT_CONNECT = 0x01, + APPL_BACKHAUL_INTERFACE_PHY_DOWN, + APPL_BACKHAUL_INTERFACE_PHY_UP +}; /* * \brief Send application connect event to receiver tasklet to diff --git a/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c b/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c index 194c9bb851a..734aaeb0905 100644 --- a/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c +++ b/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c @@ -27,6 +27,7 @@ #include "multicast_api.h" #include "mac_api.h" #include "sw_mac.h" +#include "ws_management_api.h" //ws_management_node_init // For tracing we need to define flag, have include and define group //#define HAVE_DEBUG @@ -196,6 +197,9 @@ static void wisun_tasklet_configure_and_connect_to_network(void) int8_t status; fhss_timer_t *fhss_timer_ptr = &fhss_functions; + wisun_tasklet_data_ptr->operating_mode = NET_6LOWPAN_ROUTER; + wisun_tasklet_data_ptr->operating_mode_extension = NET_6LOWPAN_WS; + arm_nwk_interface_configure_6lowpan_bootstrap_set( wisun_tasklet_data_ptr->network_interface_id, wisun_tasklet_data_ptr->operating_mode, @@ -255,7 +259,7 @@ int8_t wisun_tasklet_connect(mesh_interface_cb callback, int8_t nwk_interface_id re_connecting = false; } - memset(wisun_tasklet_data_ptr, 0, sizeof(wisun_tasklet_data_ptr)); + memset(wisun_tasklet_data_ptr, 0, sizeof(wisun_tasklet_data_str_t)); wisun_tasklet_data_ptr->mesh_api_cb = callback; wisun_tasklet_data_ptr->network_interface_id = nwk_interface_id; wisun_tasklet_data_ptr->tasklet_state = TASKLET_STATE_INITIALIZED; @@ -299,8 +303,6 @@ void wisun_tasklet_init(void) memset(wisun_tasklet_data_ptr, 0, sizeof(wisun_tasklet_data_str_t)); wisun_tasklet_data_ptr->tasklet_state = TASKLET_STATE_CREATED; wisun_tasklet_data_ptr->network_interface_id = INVALID_INTERFACE_ID; - wisun_tasklet_data_ptr->operating_mode = NET_6LOWPAN_ROUTER; - wisun_tasklet_data_ptr->operating_mode_extension = NET_6LOWPAN_WS; } } diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_fhss_timer.cpp b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_fhss_timer.cpp index 56b8a57dec0..e5aa08f8f88 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_fhss_timer.cpp +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_fhss_timer.cpp @@ -1,25 +1,30 @@ /* - * Copyright (c) 2018 ARM Limited. All rights reserved. + * Copyright (c) 2018-2019, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ns_types.h" #include "fhss_api.h" #include "fhss_config.h" -#include "mbed.h" #include "mbed_trace.h" +#include "platform/SingletonPtr.h" #include "platform/arm_hal_interrupt.h" #include +#include "equeue.h" +#include "EventQueue.h" +#include "mbed_shared_queues.h" +#include "Timeout.h" #define TRACE_GROUP "fhdr" #ifndef NUMBER_OF_SIMULTANEOUS_TIMEOUTS @@ -29,7 +34,7 @@ using namespace mbed; using namespace events; -static Timer timer; +static SingletonPtr timer; static bool timer_initialized = false; static const fhss_api_t *fhss_active_handle = NULL; #if !MBED_CONF_NANOSTACK_HAL_CRITICAL_SECTION_USABLE_FROM_INTERRUPT @@ -41,14 +46,14 @@ struct fhss_timeout_s { uint32_t start_time; uint32_t stop_time; bool active; - Timeout timeout; + SingletonPtr timeout; }; fhss_timeout_s fhss_timeout[NUMBER_OF_SIMULTANEOUS_TIMEOUTS]; static uint32_t read_current_time(void) { - return timer.read_us(); + return timer->read_us(); } static fhss_timeout_s *find_timeout(void (*callback)(const fhss_api_t *api, uint16_t)) @@ -100,7 +105,7 @@ static int platform_fhss_timer_start(uint32_t slots, void (*callback)(const fhss equeue = mbed_highprio_event_queue(); MBED_ASSERT(equeue != NULL); #endif - timer.start(); + timer->start(); timer_initialized = true; } fhss_timeout_s *fhss_tim = find_timeout(callback); @@ -116,7 +121,7 @@ static int platform_fhss_timer_start(uint32_t slots, void (*callback)(const fhss fhss_tim->start_time = read_current_time(); fhss_tim->stop_time = fhss_tim->start_time + slots; fhss_tim->active = true; - fhss_tim->timeout.attach_us(timer_callback, slots); + fhss_tim->timeout->attach_us(timer_callback, slots); fhss_active_handle = callback_param; ret_val = 0; platform_exit_critical(); @@ -132,7 +137,7 @@ static int platform_fhss_timer_stop(void (*callback)(const fhss_api_t *api, uint platform_exit_critical(); return -1; } - fhss_tim->timeout.detach(); + fhss_tim->timeout->detach(); fhss_tim->active = false; platform_exit_critical(); return 0; diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt.c index e09dd3e8bf3..519e3995b90 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt_private.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt_private.h index 586e2e96049..6bea5dcd079 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt_private.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_interrupt_private.h @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_random.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_random.c index 2def6c4f167..7ba0aae6f87 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_random.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_random.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2015 ARM Limited. All rights reserved. + * Copyright (c) 2015, 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_timer.cpp b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_timer.cpp index 7aeb13f334a..c7952d1be93 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_timer.cpp +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/arm_hal_timer.cpp @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/cs_nvm.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/cs_nvm.c index bdd77358f6e..4b9eed9f933 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/cs_nvm.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/cs_nvm.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/csnvmtest.cpp b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/csnvmtest.cpp index 4393ca4ad61..ee1e1881c5a 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/csnvmtest.cpp +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/csnvmtest.cpp @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include "CppUTest/TestHarness.h" diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/main.cpp b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/main.cpp index cc82213e177..d6a8a5740c7 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/main.cpp +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/main.cpp @@ -1,5 +1,18 @@ /* - * Copyright (c) 2015 ARM Limited. All rights reserved. + * Copyright (c) 2015, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include "CppUTest/CommandLineTestRunner.h" diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.c index ced1cec5e87..915a82ea5e4 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.h index 36155af9f6b..b14537ddd69 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/cs_nvm/test_cs_nvm.h @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef TEST_NS_NVM_HELPER_H #define TEST_NS_NVM_HELPER_H diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.c index e00ead2cad3..556c159b6cd 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.h index 02d53e42948..418b2301438 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/configuration_store_stub.h @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef __CONFIGURATION_STORE_STUB_H__ #define __CONFIGURATION_STORE_STUB_H__ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/ns_trace_stub.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/ns_trace_stub.c index b4b4f442b67..d58eb4c4a56 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/ns_trace_stub.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/ns_trace_stub.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2014-2016 ARM Limited. All rights reserved. + * Copyright (c) 2014-2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.c index 0b10772efcc..e870047d86c 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2014-2016 ARM Limited. All rights reserved. + * Copyright (c) 2014-2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include "nsdynmemLIB_stub.h" diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.h index 3a155198767..4ab78ec9dd9 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/nsdynmemLIB_stub.h @@ -1,5 +1,18 @@ /* - * Copyright (c) 2015-2016 ARM Limited. All rights reserved. + * Copyright (c) 2015-2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef __NSDYNMEMLIB_STUB_H__ #define __NSDYNMEMLIB_STUB_H__ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/timeout_stub.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/timeout_stub.c index be22af487ae..4e18eb50105 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/timeout_stub.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/cs_nvm/test/test_cs_nvm_unit/unittest/stubs/timeout_stub.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include "eventOS_event_timer.h" diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.c index ec970bdd077..9b1655c127b 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.h index 8dc55bd7378..5e38ece4281 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop.h @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mbed.cpp b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mbed.cpp index 6953cb660d4..96e320884b1 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mbed.cpp +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mbed.cpp @@ -1,15 +1,16 @@ /* - * Copyright (c) 2018 ARM Limited. All rights reserved. + * Copyright (c) 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.c index b65c98617af..d6244d4757c 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2018 ARM Limited. All rights reserved. + * Copyright (c) 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.h index ce3ac9beb6f..d8a56ca62a7 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_event_loop_mutex.h @@ -1,15 +1,16 @@ /* - * Copyright (c) 2018 ARM Limited. All rights reserved. + * Copyright (c) 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.c index 566472a0dc8..0a81c9ef176 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.h b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.h index 10991ce4c70..a26b48cc256 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.h +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_hal_init.h @@ -1,15 +1,16 @@ /* - * Copyright (c) 2016-2018 ARM Limited. All rights reserved. + * Copyright (c) 2016-2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ diff --git a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/nvm/nvm_ram.c b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/nvm/nvm_ram.c index 51ad41160c2..12a6974fa96 100644 --- a/features/nanostack/nanostack-hal-mbed-cmsis-rtos/nvm/nvm_ram.c +++ b/features/nanostack/nanostack-hal-mbed-cmsis-rtos/nvm/nvm_ram.c @@ -1,5 +1,18 @@ /* - * Copyright (c) 2016, ARM Limited, All Rights Reserved. + * Copyright (c) 2016, 2018, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifdef MBED_CONF_NANOSTACK_HAL_NVM_CFSTORE diff --git a/features/nanostack/nanostack-interface/NanostackInterface.h b/features/nanostack/nanostack-interface/NanostackInterface.h index 2e41253a8e5..c8ac3f1fa83 100644 --- a/features/nanostack/nanostack-interface/NanostackInterface.h +++ b/features/nanostack/nanostack-interface/NanostackInterface.h @@ -18,7 +18,6 @@ #ifndef NANOSTACK_INTERFACE_H_ #define NANOSTACK_INTERFACE_H_ -#include "mbed.h" #include "MeshInterface.h" // Include here for backward compatibility #include "LoWPANNDInterface.h" diff --git a/features/nanostack/sal-stack-nanostack-eventloop/module.json b/features/nanostack/sal-stack-nanostack-eventloop/module.json deleted file mode 100644 index ac6e4f00469..00000000000 --- a/features/nanostack/sal-stack-nanostack-eventloop/module.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "sal-stack-nanostack-eventloop", - "version": "1.1.0", - "description": "Event loop for 6LoWPAN stack", - "keywords": [], - "author": "Seppo Takalo ", - "repository": { - "url": "git@github.com:ARMmbed/sal-stack-nanostack-eventloop.git", - "type": "git" - }, - "homepage": "https://github.com/ARMmbed/sal-stack-nanostack-eventloop", - "license": "Apache-2.0", - "extraIncludes": [ - "nanostack-event-loop" - ], - "dependencies": { - "nanostack-libservice": "ARMmbed/nanostack-libservice#master" - }, - "targetDependencies": { - "mbed": { - "mbed-6lowpan-eventloop-adaptor": "^1.0.0", - "minar": "^1.0.0" - } - } -} diff --git a/features/nanostack/sal-stack-nanostack/mbed_lib.json b/features/nanostack/sal-stack-nanostack/mbed_lib.json index b69dd1c4f1f..28817116673 100644 --- a/features/nanostack/sal-stack-nanostack/mbed_lib.json +++ b/features/nanostack/sal-stack-nanostack/mbed_lib.json @@ -16,6 +16,9 @@ }, "TB_SENSE_12": { "nanostack.configuration": "lowpan_router" + }, + "KW41Z": { + "nanostack.configuration": "lowpan_router" } } } diff --git a/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_extension.h b/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_extension.h index b6f64d1e909..2e9fd3d41f3 100644 --- a/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_extension.h +++ b/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_extension.h @@ -85,7 +85,7 @@ uint8_t *thread_extension_discover_response_write(protocol_interface_info_entry_ #define thread_extension_version_check(version) (false) #define thread_extension_discover_response_read(nwk_info, discover_response_tlv, data_ptr, data_len) ((void) 0) #define thread_extension_discover_response_tlv_write(data, version, securityPolicy) ((void) 0) -#define thread_extension_service_init(cur) (0) +#define thread_extension_service_init(cur) ((void) 0) #define thread_extension_joining_enabled(interface_id) (false) #define thread_extension_discover_response_len(cur) (0) #define thread_extension_discover_response_write(cur, ptr) (ptr) diff --git a/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_mle_message_handler.c b/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_mle_message_handler.c index a6530d4ba1e..48883d2aea0 100644 --- a/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_mle_message_handler.c +++ b/features/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_mle_message_handler.c @@ -759,7 +759,7 @@ static void thread_host_child_update_request_process(protocol_interface_info_ent uint64_t pending_timestamp = 0;// means no pending timestamp mac_neighbor_table_entry_t *entry_temp; bool data_request_needed = false; - mle_tlv_info_t tlv_info = {0}; + mle_tlv_info_t tlv_info = {MLE_TYPE_SRC_ADDRESS, 0, 0}; tr_debug("Child update request"); entry_temp = mac_neighbor_entry_get_by_ll64(mac_neighbor_info(cur), mle_msg->packet_src_address, false, NULL); @@ -831,7 +831,7 @@ static void thread_parse_child_update_response(protocol_interface_info_entry_t * thread_leader_data_t leaderData = {0}; uint8_t status; bool leader_data_received; - mle_tlv_info_t tlv_info = {0}; + mle_tlv_info_t tlv_info = {MLE_TYPE_SRC_ADDRESS, 0, 0}; if (cur->thread_info->thread_endnode_parent == NULL) { return; diff --git a/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.c b/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.c index 2dd17b91436..3059e68265f 100644 --- a/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.c +++ b/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.c @@ -1084,7 +1084,7 @@ buffer_t *icmpv6_up(buffer_t *buf) case ICMPV6_TYPE_INFO_ECHO_REPLY: ipv6_neighbour_reachability_confirmation(buf->src_sa.address, buf->interface->id); - /* fall through */ + /* fall through */ case ICMPV6_TYPE_ERROR_DESTINATION_UNREACH: #ifdef HAVE_RPL_ROOT @@ -1092,7 +1092,7 @@ buffer_t *icmpv6_up(buffer_t *buf) buf = rpl_control_source_route_error_handler(buf, cur); } #endif - /* no break */ + /* fall through */ default: if (buf) { diff --git a/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.cpp b/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.cpp index f88b2ca2dbc..061f11ba044 100644 --- a/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.cpp +++ b/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.cpp @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "mbed.h" + #include "ns_types.h" #include #include "common_functions.h" @@ -33,6 +33,10 @@ extern "C" { #define SIGNAL_COUNT_RADIO 1 +#include "Thread.h" +#include "ThisThread.h" +#include "mbed_error.h" +using namespace rtos; static void rf_thread_loop(); Thread rf_thread(osPriorityRealtime, RF_THREAD_STACK_SIZE); diff --git a/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.h b/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.h index af4172c95a3..32caedf7415 100644 --- a/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.h +++ b/features/nanostack/targets/TARGET_NCS36510/NanostackRfPhyNcs36510.h @@ -17,7 +17,6 @@ #ifndef NANOSTACK_PHY_NCS36510_H_ #define NANOSTACK_PHY_NCS36510_H_ -#include "mbed.h" #include "NanostackRfPhy.h" class NanostackRfPhyNcs36510 : public NanostackRfPhy { diff --git a/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.cpp b/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.cpp new file mode 100644 index 00000000000..9ac086d7712 --- /dev/null +++ b/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.cpp @@ -0,0 +1,1093 @@ +/* +* Copyright (c) 2016-2018 ARM Limited. All rights reserved. +* SPDX-License-Identifier: Apache-2.0 +* Licensed under the Apache License, Version 2.0 (the License); you may +* not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#include "common_functions.h" +#include "platform/arm_hal_interrupt.h" +#include "platform/arm_hal_phy.h" +#include "NanostackRfPhyKw41z.h" + +#include "fsl_xcvr.h" + +#define RF_THREAD_STACK_SIZE 1024 + +static void rf_thread_loop(); +Thread rf_thread(osPriorityRealtime, RF_THREAD_STACK_SIZE); + +#define PHY_MTU_SIZE 127 +#define CRC_LENGTH 0 +#define PHY_HEADER_LENGTH 0 + +#define BM_ZLL_IRQSTS_TMRxMSK (ZLL_IRQSTS_TMR1MSK_MASK | \ + ZLL_IRQSTS_TMR2MSK_MASK | \ + ZLL_IRQSTS_TMR3MSK_MASK | \ + ZLL_IRQSTS_TMR4MSK_MASK) + +#define RF_CCA_THRESHOLD 75 /* -75 dBm */ + +#define gPhyDefaultTxPowerLevel_d (22) +#define gPhyMaxTxPowerLevel_d (32) +#define gCcaED_c (0) +#define gCcaCCA_MODE1_c (1) + +#define gPhyTimeMask_c (0x00FFFFFF) + +#define KW41Z_SHR_PHY_TIME 12 +#define KW41Z_PER_BYTE_TIME 2 +#define KW41Z_ACK_WAIT_TIME 54 + +static int8_t rf_radio_driver_id = -1; +static uint8_t need_ack = 0; + +/* PHY states */ +typedef enum xcvrState_tag { + gIdle_c, + gRX_c, + gTX_c, + gCCA_c, + gTR_c, + gCCCA_c, +} xcvrState_t; + +static int8_t rf_interface_state_control(phy_interface_state_e new_state, uint8_t rf_channel); +static int8_t rf_start_cca(uint8_t *data_ptr, uint16_t data_length, uint8_t tx_handle, data_protocol_e data_protocol); +static int8_t rf_address_write(phy_address_type_e address_type, uint8_t *address_ptr); +static int8_t rf_extension(phy_extension_type_e extension_type, uint8_t *data_ptr); +static void rf_mac_hw_init(void); +static void rf_mac_ed_state_enable(void); +static void rf_mac_set_pending(uint8_t status); +static void rf_mac_set_shortAddress(uint8_t* valueAddress); +static void rf_mac_set_panId(uint8_t* valueAddress); +static void rf_mac_set_mac64(const uint8_t* valueAddress); +static uint8_t rf_convert_energy_level(uint8_t energyLevel); +static void rf_abort(void); +static void rf_ack_wait_timer_start(uint16_t time); +static void rf_get_timestamp(uint32_t *pRetClk); +static uint32_t rf_get_timeout(void); +static void rf_set_timeout(uint32_t timeout); +static void rf_promiscuous(uint8_t state); +static void handle_IRQ_events(void); +static uint8_t PhyPlmeSetCurrentChannelRequest(uint8_t channel, uint8_t pan); +static void rf_receive(void); +static void rf_handle_rx_end(void); + +static uint8_t MAC64_addr_default[8] = {1, 2, 3, 4, 5, 6, 7, 8}; +static uint8_t MAC64_addr[8]; + +static xcvrState_t mPhySeqState; +static uint8_t rf_mac_handle; +volatile uint8_t rf_ed_value = 0; +static bool rf_ack_pending_state = false; + +static NanostackRfPhyKw41z *rf = NULL; + +#define MAC_PACKET_SIZE 127 //MAX MAC payload is 127 bytes +static uint8_t PHYPAYLOAD[MAC_PACKET_SIZE]; + +const phy_rf_channel_configuration_s phy_2_4ghz = {2405000000U, 5000000U, 250000U, 16U, M_OQPSK}; + +const phy_device_channel_page_s phy_channel_pages[] = { + {CHANNEL_PAGE_0, &phy_2_4ghz}, + {CHANNEL_PAGE_0, NULL} +}; + +static phy_device_driver_s device_driver = { + PHY_LINK_15_4_2_4GHZ_TYPE, + PHY_LAYER_PAYLOAD_DATA_FLOW, + MAC64_addr, + PHY_MTU_SIZE, + (char*)"NXP kw41z", + CRC_LENGTH, + PHY_HEADER_LENGTH, + &rf_interface_state_control, + &rf_start_cca, + &rf_address_write, + &rf_extension, + phy_channel_pages, + NULL, + NULL, + NULL, + NULL +}; + +static void rf_thread_loop() +{ + for (;;) { + ThisThread::flags_wait_all(1); + + platform_enter_critical(); + + handle_IRQ_events(); + + platform_exit_critical(); + NVIC_ClearPendingIRQ(Radio_1_IRQn); + NVIC_EnableIRQ(Radio_1_IRQn); + } +} + +static int8_t rf_device_register(void) +{ + if (rf_radio_driver_id < 0) { + rf_mac_hw_init(); + /** + * Read factory stored Mac address to RAM + */ + common_write_32_bit(ZLL->MACLONGADDRS0_MSB, MAC64_addr); + common_write_32_bit(ZLL->MACLONGADDRS0_LSB, MAC64_addr + 4); + + rf_radio_driver_id = arm_net_phy_register(&device_driver); + } + + return rf_radio_driver_id; +} + +static void rf_device_unregister(void) +{ + arm_net_phy_unregister(rf_radio_driver_id); +} + +/* + * \brief Function enables/disables Rx promiscuous mode. + * + * \param state of XCVR promiscuous mode + * + * \return none + */ +static void rf_promiscuous(uint8_t state) +{ + if (state) { + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_PROMISCUOUS_MASK; + /* FRM_VER[11:8] = b1111. Any FrameVersion accepted */ + ZLL->RX_FRAME_FILTER |= (ZLL_RX_FRAME_FILTER_FRM_VER_FILTER_MASK | + ZLL_RX_FRAME_FILTER_ACK_FT_MASK | + ZLL_RX_FRAME_FILTER_NS_FT_MASK); + } else { + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_PROMISCUOUS_MASK; + /* FRM_VER[11:8] = b0011. Accept FrameVersion 0 and 1 packets, reject all others */ + /* Beacon, Data and MAC command frame types accepted */ + ZLL->RX_FRAME_FILTER &= ~(ZLL_RX_FRAME_FILTER_FRM_VER_FILTER_MASK | + ZLL_RX_FRAME_FILTER_ACK_FT_MASK | + ZLL_RX_FRAME_FILTER_NS_FT_MASK | + ZLL_RX_FRAME_FILTER_ACTIVE_PROMISCUOUS_MASK); + ZLL->RX_FRAME_FILTER |= ZLL_RX_FRAME_FILTER_FRM_VER_FILTER(3); + } +} + +static void rf_mac_set_pending(uint8_t status) +{ + uint32_t reg = ZLL->SAM_TABLE; + + /* Disable the Source Address Matching feature and set FP manually */ + reg |= ZLL_SAM_TABLE_ACK_FRM_PND_CTRL_MASK; + if (status) { + reg |= ZLL_SAM_TABLE_ACK_FRM_PND_MASK; + rf_ack_pending_state = true; + } else { + reg &= ~ZLL_SAM_TABLE_ACK_FRM_PND_MASK; + rf_ack_pending_state = false; + } + ZLL->SAM_TABLE = reg; +} + +static int8_t rf_interface_state_control(phy_interface_state_e new_state, uint8_t rf_channel) +{ + platform_enter_critical(); + + switch (new_state) + { + /*Reset PHY driver and set to idle*/ + case PHY_INTERFACE_RESET: + rf_abort(); + break; + /*Disable PHY Interface driver*/ + case PHY_INTERFACE_DOWN: + rf_abort(); + break; + /*Enable PHY Interface driver*/ + case PHY_INTERFACE_UP: + if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) { + return 1; + } + rf_receive(); + break; + /*Enable wireless interface ED scan mode*/ + case PHY_INTERFACE_RX_ENERGY_STATE: + if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) { + return 1; + } + rf_abort(); + rf_mac_ed_state_enable(); + break; + case PHY_INTERFACE_SNIFFER_STATE: /**< Enable Sniffer state */ + rf_promiscuous(1); + if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) { + return 1; + } + rf_receive(); + break; + } + + platform_exit_critical(); + + return 0; +} + +/* + * \brief Function forces the XCVR to Idle state. + * + * \param none + * + * \return none + */ +static void rf_abort(void) +{ + /* Mask XCVR irq */ + NVIC_DisableIRQ(Radio_1_IRQn); + + mPhySeqState = gIdle_c; + + /* Mask SEQ interrupt */ + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_SEQMSK_MASK; + + /* Disable timer trigger (for scheduled XCVSEQ) */ + if (ZLL->PHY_CTRL & ZLL_PHY_CTRL_TMRTRIGEN_MASK) { + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_TMRTRIGEN_MASK; + /* give the FSM enough time to start if it was triggered */ + while( (XCVR_MISC->XCVR_CTRL & XCVR_CTRL_XCVR_STATUS_TSM_COUNT_MASK) == 0) {} + } + + /* If XCVR is not idle, abort current SEQ */ + if (ZLL->PHY_CTRL & ZLL_PHY_CTRL_XCVSEQ_MASK) { + /* Abort current SEQ */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_XCVSEQ_MASK; + + /* Wait for Sequence Idle (if not already) */ + while (ZLL->SEQ_STATE & ZLL_SEQ_STATE_SEQ_STATE_MASK) {} + } + + /* Stop timers */ + ZLL->PHY_CTRL &= ~(ZLL_PHY_CTRL_TMR1CMP_EN_MASK | + ZLL_PHY_CTRL_TMR2CMP_EN_MASK | + ZLL_PHY_CTRL_TMR3CMP_EN_MASK | + ZLL_PHY_CTRL_TC3TMOUT_MASK); + + /* clear all IRQ bits to avoid unexpected interrupts */ + ZLL->IRQSTS = ZLL->IRQSTS; + + /* Unmask XCVR irq */ + NVIC_EnableIRQ(Radio_1_IRQn); +} + +static int8_t rf_start_cca(uint8_t *data_ptr, uint16_t data_length, uint8_t tx_handle, data_protocol_e data_protocol) +{ + uint32_t reg, tx_len; + uint32_t irqSts; + volatile uint8_t *pPB; + uint8_t i; + uint32_t tx_warmup_time; + + platform_enter_critical(); + + if (mPhySeqState == gRX_c) { + rf_abort(); + } + + /* Check if transmitter is busy*/ + if (mPhySeqState != gIdle_c) { + platform_exit_critical(); + /*Return busy*/ + return -1; + } + + /*Store TX handle*/ + rf_mac_handle = tx_handle; + + /* Check if transmitted data needs to be acked */ + need_ack = (*data_ptr & 0x20) == 0x20; + + /* Load data into Packet Buffer */ + pPB = (uint8_t*)ZLL->PKT_BUFFER_TX; + + tx_len = data_length + 2; + *pPB++ = tx_len; /* including 2 bytes of FCS */ + + for (i = 0; i < data_length; i++) { + *pPB++ = *data_ptr++; + } + + reg = ZLL->PHY_CTRL; + + /* Perform CCA before TX */ + reg |= ZLL_PHY_CTRL_CCABFRTX_MASK; + + /* Set CCA mode 1 */ + reg &= ~(ZLL_PHY_CTRL_CCATYPE_MASK); + reg |= ZLL_PHY_CTRL_CCATYPE(gCcaCCA_MODE1_c); + ZLL->PHY_CTRL = reg; + + /* Perform TxRxAck sequence if required by phyTxMode */ + if (need_ack) { + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_RXACKRQD_MASK; + mPhySeqState = gTR_c; + } else { + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_RXACKRQD_MASK; + mPhySeqState = gTX_c; + } + + /* Ensure that no spurious interrupts are raised */ + irqSts = ZLL->IRQSTS; + irqSts &= ~(ZLL_IRQSTS_TMR1IRQ_MASK | ZLL_IRQSTS_TMR4IRQ_MASK); + irqSts |= ZLL_IRQSTS_TMR3MSK_MASK; + ZLL->IRQSTS = irqSts; + + tx_warmup_time = (XCVR_TSM->END_OF_SEQ & XCVR_TSM_END_OF_SEQ_END_OF_TX_WU_MASK) >> + XCVR_TSM_END_OF_SEQ_END_OF_TX_WU_SHIFT; + + /* Compute warmup times (scaled to 16us) */ + if (tx_warmup_time & 0x0F) { + tx_warmup_time = 1 + (tx_warmup_time >> 4); + } else { + tx_warmup_time = tx_warmup_time >> 4; + } + + if (need_ack) { + rf_ack_wait_timer_start(tx_warmup_time + KW41Z_SHR_PHY_TIME + + tx_len * KW41Z_PER_BYTE_TIME + 10 + KW41Z_ACK_WAIT_TIME); + } + + /* Unmask SEQ interrupt */ + ZLL->PHY_CTRL &= ~(ZLL_PHY_CTRL_SEQMSK_MASK); + + /* Start the TX / TRX */ + reg = ZLL->PHY_CTRL; + reg &= ~(ZLL_PHY_CTRL_XCVSEQ_MASK); + reg |= mPhySeqState; + ZLL->PHY_CTRL = reg; + + platform_exit_critical(); + + /*Return success*/ + return 0; +} + +static int8_t rf_address_write(phy_address_type_e address_type, uint8_t *address_ptr) +{ + int8_t ret_val = 0; + + platform_enter_critical(); + + switch (address_type) { + case PHY_MAC_64BIT: + rf_mac_set_mac64(address_ptr); + break; + /*Set 16-bit address*/ + case PHY_MAC_16BIT: + rf_mac_set_shortAddress(address_ptr); + break; + /*Set PAN Id*/ + case PHY_MAC_PANID: + rf_mac_set_panId(address_ptr); + break; + default: + ret_val = -1; + } + + platform_exit_critical(); + + return ret_val; +} + +static int8_t rf_extension(phy_extension_type_e extension_type, uint8_t *data_ptr) +{ + int ret_value = 0; + + platform_enter_critical(); + + switch (extension_type) { + case PHY_EXTENSION_CTRL_PENDING_BIT: /**< Control MAC pending bit for indirect data. */ + rf_mac_set_pending(*data_ptr); + break; + /* Return frame Auto Ack frame pending status */ + case PHY_EXTENSION_READ_LAST_ACK_PENDING_STATUS: { + *data_ptr = rf_ack_pending_state; + break; + } + case PHY_EXTENSION_SET_CHANNEL: /**< Net library channel set. */ + break; + case PHY_EXTENSION_READ_CHANNEL_ENERGY: /**< RF interface ED scan energy read. */ + *data_ptr = rf_ed_value; + break; + case PHY_EXTENSION_READ_LINK_STATUS: /**< Net library could read link status. */ + case PHY_EXTENSION_CONVERT_SIGNAL_INFO: /**< Convert signal info. */ + default: + ret_value = -1; + } + + platform_exit_critical(); + + return ret_value; +} + +/* + * \brief Function converts the energy level from dBm to a 0-255 value. + * + * \param energyLevel in dBm + * + * \return energy level (0-255) + */ +static uint8_t rf_convert_energy_level(uint8_t energyLevel) +{ + int32_t temp = (int8_t)energyLevel; + + if (temp <= -82) { + temp = 0x00; + } else if (temp >= -3) { + temp = 0xFF; + } else { + /* Convert energy level from dbm into a 0x00-0xFF value */ + temp = (255 * temp + 20910) / 79; + } + + return (uint8_t)temp; +} + +/** + * SET MAC 16 address to Register + */ +static void rf_mac_set_shortAddress(uint8_t* valueAddress) { + ZLL->MACSHORTADDRS0 &= ~ZLL_MACSHORTADDRS0_MACSHORTADDRS0_MASK; + ZLL->MACSHORTADDRS0 |= ZLL_MACSHORTADDRS0_MACSHORTADDRS0(common_read_16_bit(valueAddress)); +} + +/** + * SET PAN-ID to Register + */ +static void rf_mac_set_panId(uint8_t* valueAddress) { + ZLL->MACSHORTADDRS0 &= ~ZLL_MACSHORTADDRS0_MACPANID0_MASK; + ZLL->MACSHORTADDRS0 |= ZLL_MACSHORTADDRS0_MACPANID0(common_read_16_bit(valueAddress)); +} + +/** + * SET MAC64 address to register + */ +static void rf_mac_set_mac64(const uint8_t* valueAddress) { + ZLL->MACLONGADDRS0_MSB = common_read_32_bit(valueAddress); + valueAddress += 4; + ZLL->MACLONGADDRS0_LSB = common_read_32_bit(valueAddress); +} + +static void PhyPlmeSetPwrLevelRequest(uint8_t pwrStep) +{ + /* Do not exceed the Tx power limit for the current channel */ + if (pwrStep > gPhyMaxTxPowerLevel_d) { + pwrStep = gPhyMaxTxPowerLevel_d; + } + + if (pwrStep > 2) { + pwrStep = (pwrStep << 1) - 2; + } + + ZLL->PA_PWR = pwrStep; +} + +static uint8_t PhyPlmeGetPwrLevelRequest(void) +{ + uint8_t pwrStep = (uint8_t)ZLL->PA_PWR; + + if (pwrStep > 2) { + pwrStep = (pwrStep + 2) >> 1; + } + + return pwrStep; +} + +static uint8_t PhyPlmeSetCurrentChannelRequest(uint8_t channel, uint8_t pan) +{ + if((channel < 11) || (channel > 26)) { + return 1; + } + + if (!pan) { + ZLL->CHANNEL_NUM0 = channel; + } else { + ZLL->CHANNEL_NUM1 = channel; + } + + /* Make sure the current Tx power doesn't exceed the Tx power limit for the new channel */ + if (PhyPlmeGetPwrLevelRequest() > gPhyMaxTxPowerLevel_d) { + PhyPlmeSetPwrLevelRequest(gPhyMaxTxPowerLevel_d); + } + + return 0; +} + +/* + * Function is a RF interrupt vector. + */ +static void PHY_InterruptHandler(void) +{ + /* Disable and clear transceiver(IRQ_B) interrupt */ + NVIC_DisableIRQ(Radio_1_IRQn); + rf_thread.flags_set(1); +} + +static void PhyIsrSeqCleanup(void) +{ + uint32_t irqStatus; + + /* Set the PHY sequencer back to IDLE */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_XCVSEQ_MASK; + /* Mask SEQ, RX, TX and CCA interrupts */ + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_CCAMSK_MASK | + ZLL_PHY_CTRL_RXMSK_MASK | + ZLL_PHY_CTRL_TXMSK_MASK | + ZLL_PHY_CTRL_SEQMSK_MASK; + + while (ZLL->SEQ_STATE & ZLL_SEQ_STATE_SEQ_STATE_MASK) {} + + irqStatus = ZLL->IRQSTS; + /* Mask TMR3 interrupt */ + irqStatus |= ZLL_IRQSTS_TMR3MSK_MASK; + /* Clear transceiver interrupts except TMRxIRQ */ + irqStatus &= ~(ZLL_IRQSTS_TMR1IRQ_MASK | + ZLL_IRQSTS_TMR2IRQ_MASK | + ZLL_IRQSTS_TMR3IRQ_MASK | + ZLL_IRQSTS_TMR4IRQ_MASK); + ZLL->IRQSTS = irqStatus; +} + +static void PhyIsrTimeoutCleanup(void) +{ + uint32_t irqStatus; + + /* Set the PHY sequencer back to IDLE and disable TMR3 comparator and timeout */ + ZLL->PHY_CTRL &= ~(ZLL_PHY_CTRL_TMR3CMP_EN_MASK | + ZLL_PHY_CTRL_TC3TMOUT_MASK | + ZLL_PHY_CTRL_XCVSEQ_MASK); + /* Mask SEQ, RX, TX and CCA interrupts */ + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_CCAMSK_MASK | + ZLL_PHY_CTRL_RXMSK_MASK | + ZLL_PHY_CTRL_TXMSK_MASK | + ZLL_PHY_CTRL_SEQMSK_MASK; + + while (ZLL->SEQ_STATE & ZLL_SEQ_STATE_SEQ_STATE_MASK) {} + + irqStatus = ZLL->IRQSTS; + /* Mask TMR3 interrupt */ + irqStatus |= ZLL_IRQSTS_TMR3MSK_MASK; + /* Clear transceiver interrupts except TMR1IRQ and TMR4IRQ. */ + irqStatus &= ~( ZLL_IRQSTS_TMR1IRQ_MASK | + ZLL_IRQSTS_TMR4IRQ_MASK ); + ZLL->IRQSTS = irqStatus; + + /* The packet was transmitted successfully, but no ACK was received */ + if (device_driver.phy_tx_done_cb) { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, PHY_LINK_TX_SUCCESS, 1, 1); + } +} + +/* + * \brief Function get the time-out for the current sequence. + * + * \return sequence time-out value + */ +static uint32_t rf_get_timeout(void) +{ + return ZLL->T3CMP; +} + +/* + * \brief Function set a time-out to an XCVR sequence. + * + * \param pEndTime sequence time-out value [symbols] + * + * \return none + */ +static void rf_set_timeout(uint32_t pEndTime) +{ + uint32_t irqsts; + + platform_enter_critical(); + + /* disable TMR3 compare */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_TMR3CMP_EN_MASK; + ZLL->T3CMP = pEndTime & ZLL_T3CMP_T3CMP_MASK; + + /* acknowledge TMR3 IRQ */ + irqsts = ZLL->IRQSTS & BM_ZLL_IRQSTS_TMRxMSK; + irqsts |= ZLL_IRQSTS_TMR3IRQ_MASK; + ZLL->IRQSTS = irqsts; + /* enable TMR3 compare */ + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_TMR3CMP_EN_MASK; + /* enable autosequence stop by TC3 match */ + ZLL->PHY_CTRL |= ZLL_PHY_CTRL_TC3TMOUT_MASK; + + platform_exit_critical(); + +} + +/** + * Call this only One time + */ +static void rf_mac_hw_init(void) +{ + xcvrStatus_t xcvrStatus; + uint32_t phyReg; + + /* The data rate argument only matters when GFSK/MSK protocol is selected */ + xcvrStatus = XCVR_Init(ZIGBEE_MODE, DR_500KBPS); + if (xcvrStatus != gXcvrSuccess_c) { + return; + } + + mPhySeqState = gIdle_c; + + /* Enable 16 bit mode for TC2 - TC2 prime EN, disable all timers, + enable AUTOACK, mask all interrupts */ + ZLL->PHY_CTRL = (gCcaCCA_MODE1_c << ZLL_PHY_CTRL_CCATYPE_SHIFT) | + ZLL_PHY_CTRL_TC2PRIME_EN_MASK | + ZLL_PHY_CTRL_TSM_MSK_MASK | + ZLL_PHY_CTRL_WAKE_MSK_MASK | + ZLL_PHY_CTRL_CRC_MSK_MASK | + ZLL_PHY_CTRL_PLL_UNLOCK_MSK_MASK | + ZLL_PHY_CTRL_FILTERFAIL_MSK_MASK | + ZLL_PHY_CTRL_RX_WMRK_MSK_MASK | + ZLL_PHY_CTRL_CCAMSK_MASK | + ZLL_PHY_CTRL_RXMSK_MASK | + ZLL_PHY_CTRL_TXMSK_MASK | + ZLL_PHY_CTRL_SEQMSK_MASK | + ZLL_PHY_CTRL_AUTOACK_MASK | + ZLL_PHY_CTRL_TRCV_MSK_MASK; + + /* Clear all PP IRQ bits to avoid unexpected interrupts immediately after init + disable all timer interrupts */ + ZLL->IRQSTS = ZLL->IRQSTS; + + /* Clear HW indirect queue */ + ZLL->SAM_TABLE |= ZLL_SAM_TABLE_INVALIDATE_ALL_MASK; + + /* Frame Filtering + FRM_VER[7:6] = b11. Accept FrameVersion 0 and 1 packets, reject all others */ + ZLL->RX_FRAME_FILTER &= ~ZLL_RX_FRAME_FILTER_FRM_VER_FILTER_MASK; + ZLL->RX_FRAME_FILTER = ZLL_RX_FRAME_FILTER_FRM_VER_FILTER(3) | + ZLL_RX_FRAME_FILTER_CMD_FT_MASK | + ZLL_RX_FRAME_FILTER_DATA_FT_MASK | + ZLL_RX_FRAME_FILTER_BEACON_FT_MASK; + + /* Set prescaller to obtain 1 symbol (16us) timebase */ + ZLL->TMR_PRESCALE = 0x05; + + /* Set CCA threshold to -75 dBm */ + ZLL->CCA_LQI_CTRL &= ~ZLL_CCA_LQI_CTRL_CCA1_THRESH_MASK; + ZLL->CCA_LQI_CTRL |= ZLL_CCA_LQI_CTRL_CCA1_THRESH(RF_CCA_THRESHOLD); + + /* Set the default power level */ + PhyPlmeSetPwrLevelRequest(gPhyDefaultTxPowerLevel_d); + + /* Adjust ACK delay to fulfill the 802.15.4 turnaround requirements */ + ZLL->ACKDELAY &= ~ZLL_ACKDELAY_ACKDELAY_MASK; + ZLL->ACKDELAY |= ZLL_ACKDELAY_ACKDELAY(-8); + + /* Adjust LQI compensation */ + ZLL->CCA_LQI_CTRL &= ~ZLL_CCA_LQI_CTRL_LQI_OFFSET_COMP_MASK; + ZLL->CCA_LQI_CTRL |= ZLL_CCA_LQI_CTRL_LQI_OFFSET_COMP(96); + + /* Enable the RxWatermark IRQ */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_RX_WMRK_MSK_MASK; + /* Set Rx watermark level */ + ZLL->RX_WTR_MARK = 0; + + /* Set default channels */ + PhyPlmeSetCurrentChannelRequest(0x0B, 0); /* 2405 MHz */ + PhyPlmeSetCurrentChannelRequest(0x0B, 1); /* 2405 MHz */ + + /* DSM settings */ + phyReg = (RSIM->RF_OSC_CTRL & RSIM_RF_OSC_CTRL_BB_XTAL_READY_COUNT_SEL_MASK) >> + RSIM_RF_OSC_CTRL_BB_XTAL_READY_COUNT_SEL_SHIFT; + phyReg = (1024U << phyReg) / (SystemCoreClock / 32768) + 1; + RSIM->DSM_OSC_OFFSET = phyReg; + + osStatus status = rf_thread.start(mbed::callback(rf_thread_loop)); + MBED_ASSERT(status == osOK); + + /** Clear and enable MAC IRQ at task level, when scheduler is on. */ + InstallIRQHandler((IRQn_Type)Radio_1_IRQn, (uint32_t)PHY_InterruptHandler); + + /* Unmask Transceiver Global Interrupts */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_TRCV_MSK_MASK; + + NVIC_ClearPendingIRQ(Radio_1_IRQn); + NVIC_EnableIRQ(Radio_1_IRQn); +} + +/* + * \brief Function reads a time-stamp value from XCVR [symbols] + * + * \param pEndTime pointer to location where time-stamp will be stored + * + * \return none + */ +static void rf_get_timestamp(uint32_t *pRetClk) +{ + if (NULL == pRetClk) { + return; + } + + platform_enter_critical(); + + *pRetClk = 0; + *pRetClk = ZLL->EVENT_TMR >> ZLL_EVENT_TMR_EVENT_TMR_SHIFT; + + platform_exit_critical(); +} + +/* + * \brief Function starts the ACK wait time-out. + * + * \param slots The ACK wait time-out in [symbols] + * + * \return none + */ +static void rf_ack_wait_timer_start(uint16_t time) +{ + uint32_t timestamp, t; + + rf_get_timestamp(×tamp); + + t = (rf_get_timeout() - timestamp) & gPhyTimeMask_c; + + if (t > 1) { + timestamp += time; + rf_set_timeout(timestamp); + } +} + +/* + * \brief Function sets the RF in RX state. + * + * \param none + * + * \return none + */ +static void rf_receive(void) +{ + uint32_t irqSts; + + /* RX can start only from Idle state */ + if (mPhySeqState != gIdle_c) { + rf_abort(); + } + + mPhySeqState = gRX_c; + + /* Ensure that no spurious interrupts are raised, but do not change TMR1 and TMR4 IRQ status */ + irqSts = ZLL->IRQSTS; + irqSts &= ~(ZLL_IRQSTS_TMR1IRQ_MASK | ZLL_IRQSTS_TMR4IRQ_MASK); + irqSts |= ZLL_IRQSTS_TMR3MSK_MASK; + ZLL->IRQSTS = irqSts; + + /* unmask SEQ interrupt */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_SEQMSK_MASK; + + /* Start the RX sequence */ + ZLL->PHY_CTRL |= gRX_c; +} + +static void rf_mac_ed_state_enable(void) +{ + uint32_t ccaMode, irqSts; + + mPhySeqState = gCCA_c; + + /* Switch to ED mode */ + ccaMode = (ZLL->PHY_CTRL & ZLL_PHY_CTRL_CCATYPE_MASK) >> ZLL_PHY_CTRL_CCATYPE_SHIFT; + if (ccaMode != gCcaED_c) { + ZLL->PHY_CTRL &= ~(ZLL_PHY_CTRL_CCATYPE_MASK); + } + + /* Ensure that no spurious interrupts are raised(do not change TMR1 and TMR4 IRQ status) */ + irqSts = ZLL->IRQSTS; + irqSts &= ~(ZLL_IRQSTS_TMR1IRQ_MASK | ZLL_IRQSTS_TMR4IRQ_MASK); + irqSts |= ZLL_IRQSTS_TMR3MSK_MASK; + ZLL->IRQSTS = irqSts; + + /* Unmask SEQ interrupt */ + ZLL->PHY_CTRL &= ~ZLL_PHY_CTRL_SEQMSK_MASK; + + /* start ED sequence */ + ZLL->PHY_CTRL |= gCCA_c; +} + +/* + * \brief Function is a call back for TX end interrupt. + * + * \param none + * + * \return none + */ +static void rf_handle_tx_end(bool framePending) +{ + /*Start receiver*/ + rf_receive(); + + if (!device_driver.phy_tx_done_cb) { + return; + } + + /*Call PHY TX Done API*/ + if (need_ack) { + if (framePending) { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, PHY_LINK_TX_DONE_PENDING, 1, 1); + } else { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, PHY_LINK_TX_DONE, 1, 1); + } + } else { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, PHY_LINK_TX_SUCCESS, 1, 1); + } +} + +/* + * \brief Function converts LQI into RSSI. + * + * \param LQI + * + * \return RSSI + */ +static int8_t rf_convert_LQI_to_RSSI(uint8_t lqi) +{ + int32_t rssi = (36 * lqi - 9836) / 109; + + return (int8_t)rssi; +} + +/* + * \brief Function scale the LQI value reported by RF into a 0-255 value. + * + * \param hwLqi - the LQI value reported by RF + * + * \return scaled LQI + */ +static uint8_t rf_convert_LQI(uint8_t hwLqi) +{ + if (hwLqi >= 220) { + return 255; + } else { + return (51 * hwLqi) / 44; + } +} + +/* + * \brief Function is a call back for RX end interrupt. + * + * \param none + * + * \return none + */ +static void rf_handle_rx_end(void) +{ + uint8_t rf_lqi = (ZLL->LQI_AND_RSSI & ZLL_LQI_AND_RSSI_LQI_VALUE_MASK) >> + ZLL_LQI_AND_RSSI_LQI_VALUE_SHIFT; + int8_t rf_rssi = 0; + uint8_t len; + uint8_t i; + volatile uint8_t *pPB; + + len = (ZLL->IRQSTS & ZLL_IRQSTS_RX_FRAME_LENGTH_MASK) >> ZLL_IRQSTS_RX_FRAME_LENGTH_SHIFT; /* Including FCS (2 bytes) */ + + /* Excluding FCS (2 bytes) */ + len -= 2; + + /*Check the length is valid*/ + if (len > 1 && len < MAC_PACKET_SIZE) { + rf_lqi = rf_convert_LQI(rf_lqi); + rf_rssi = rf_convert_LQI_to_RSSI(rf_lqi); + + /* Load data from Packet Buffer */ + pPB = (uint8_t*)ZLL->PKT_BUFFER_RX; + + for (i = 0; i < len; i++) { + PHYPAYLOAD[i] = *pPB++; + } + + /* Start receiver */ + rf_receive(); + + if (device_driver.phy_rx_cb) { + device_driver.phy_rx_cb(PHYPAYLOAD, len, rf_lqi, rf_rssi, rf_radio_driver_id); + } + } else { + /* Start receiver */ + rf_receive(); + } +} + +static void handle_IRQ_events(void) +{ + uint8_t xcvseqCopy; + uint32_t irqStatus; + + /* Read current XCVRSEQ and interrupt status */ + xcvseqCopy = ZLL->PHY_CTRL & ZLL_PHY_CTRL_XCVSEQ_MASK; + irqStatus = ZLL->IRQSTS; + /* Clear all xcvr interrupts */ + ZLL->IRQSTS = irqStatus; + + /* Filter Fail IRQ */ + if (irqStatus & ZLL_IRQSTS_FILTERFAIL_IRQ_MASK) { + + } else { + /* Rx Watermark IRQ */ + if((!(ZLL->PHY_CTRL & ZLL_PHY_CTRL_RX_WMRK_MSK_MASK)) && + (irqStatus & ZLL_IRQSTS_RXWTRMRKIRQ_MASK)) { + uint32_t rx_len = (irqStatus & ZLL_IRQSTS_RX_FRAME_LENGTH_MASK) >> ZLL_IRQSTS_RX_FRAME_LENGTH_SHIFT; + + /* Convert to symbols and add IFS and ACK duration */ + rx_len = rx_len * 2 + 12 + 22 + 2; + rf_ack_wait_timer_start(rx_len); + } + } + + /* Sequencer interrupt, the autosequence has completed */ + if (irqStatus & ZLL_IRQSTS_SEQIRQ_MASK) { + + /* XCVR will be set to Idle */ + mPhySeqState = gIdle_c; + + /* PLL unlock, the autosequence has been aborted due to PLL unlock */ + if (irqStatus & ZLL_IRQSTS_PLL_UNLOCK_IRQ_MASK) { + PhyIsrSeqCleanup(); + /* Start receiver */ + rf_receive(); + } + /* TMR3 timeout, the autosequence has been aborted due to TMR3 timeout */ + else if ((irqStatus & ZLL_IRQSTS_TMR3IRQ_MASK) && + (!(irqStatus & ZLL_IRQSTS_RXIRQ_MASK)) && + (xcvseqCopy != gTX_c)) { + PhyIsrTimeoutCleanup(); + /* Start receiver */ + rf_receive(); + } else { + PhyIsrSeqCleanup(); + switch(xcvseqCopy) + { + case gTX_c: + if ((ZLL->PHY_CTRL & ZLL_PHY_CTRL_CCABFRTX_MASK) && + (irqStatus & ZLL_IRQSTS_CCA_MASK)) { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, + PHY_LINK_CCA_FAIL, 1, 1); + } else { + rf_handle_tx_end(false); + } + break; + + case gTR_c: + if ((ZLL->PHY_CTRL & ZLL_PHY_CTRL_CCABFRTX_MASK) && + (irqStatus & ZLL_IRQSTS_CCA_MASK)) { + device_driver.phy_tx_done_cb(rf_radio_driver_id, rf_mac_handle, + PHY_LINK_CCA_FAIL, 1, 1); + } else { + rf_handle_tx_end((irqStatus & ZLL_IRQSTS_RX_FRM_PEND_MASK) > 0); + } + break; + + case gRX_c: + rf_handle_rx_end(); + break; + + case gCCA_c: + rf_ed_value = rf_convert_energy_level((ZLL->LQI_AND_RSSI & + ZLL_LQI_AND_RSSI_CCA1_ED_FNL_MASK) >> + ZLL_LQI_AND_RSSI_CCA1_ED_FNL_SHIFT); + break; + + default: + break; + } + } + } +} + +NanostackRfPhyKw41z::NanostackRfPhyKw41z() +{ + memcpy(MAC64_addr, MAC64_addr_default, sizeof(MAC64_addr)); +} + +NanostackRfPhyKw41z::~NanostackRfPhyKw41z() +{ + // Do nothing +} + +int8_t NanostackRfPhyKw41z::rf_register() +{ + platform_enter_critical(); + + if (rf != NULL) { + platform_exit_critical(); + error("Multiple registrations of NanostackRfPhyKw41z not supported"); + return -1; + } + + rf = this; + int8_t radio_id = rf_device_register(); + if (radio_id < 0) { + rf = NULL; + } + + platform_exit_critical(); + return radio_id; +} + +void NanostackRfPhyKw41z::rf_unregister() +{ + platform_enter_critical(); + + if (rf != this) { + platform_exit_critical(); + return; + } + + rf_device_unregister(); + rf = NULL; + + platform_exit_critical(); +} + +void NanostackRfPhyKw41z::get_mac_address(uint8_t *mac) +{ + platform_enter_critical(); + + memcpy((void*)mac, (void*)MAC64_addr, sizeof(MAC64_addr)); + + platform_exit_critical(); +} + +void NanostackRfPhyKw41z::set_mac_address(uint8_t *mac) +{ + platform_enter_critical(); + + if (NULL != rf) { + error("NanostackRfPhyKw41z cannot change mac address when running"); + platform_exit_critical(); + return; + } + memcpy((void*)MAC64_addr, (void*)mac, sizeof(MAC64_addr)); + + platform_exit_critical(); +} + +NanostackRfPhy &NanostackRfPhy::get_default_instance() +{ + static NanostackRfPhyKw41z rf_phy; + return rf_phy; +} diff --git a/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.h b/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.h new file mode 100644 index 00000000000..c85f6bdca36 --- /dev/null +++ b/features/nanostack/targets/TARGET_NXP/TARGET_KW41Z/NanostackRfPhyKw41z.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NANOSTACK_PHY_KW41Z_H_ +#define NANOSTACK_PHY_KW41Z_H_ + +#if MBED_CONF_RTOS_PRESENT +#include "rtos/rtos.h" +#endif +#include "NanostackRfPhy.h" +#include "fsl_common.h" + +class NanostackRfPhyKw41z : public NanostackRfPhy { +public: + NanostackRfPhyKw41z(); + ~NanostackRfPhyKw41z(); + int8_t rf_register(); + void rf_unregister(); + void get_mac_address(uint8_t *mac); + void set_mac_address(uint8_t *mac); +}; + +#endif /* NANOSTACK_PHY_KW41Z_H_ */ diff --git a/features/netsocket/CellularBase.h b/features/netsocket/CellularBase.h index 1d306cc3168..e430653abb9 100644 --- a/features/netsocket/CellularBase.h +++ b/features/netsocket/CellularBase.h @@ -13,13 +13,18 @@ * limitations under the License. */ +/* @file CellularBase.h CellularBase */ + +/** @addtogroup netinterface + * @{ + */ + #ifndef CELLULAR_BASE_H #define CELLULAR_BASE_H #include "netsocket/NetworkInterface.h" /** Common interface that is shared between cellular interfaces. - * @addtogroup netsocket */ class CellularBase: public NetworkInterface { diff --git a/features/netsocket/DNS.h b/features/netsocket/DNS.h index bdfa69705f2..a9aa5c0a488 100644 --- a/features/netsocket/DNS.h +++ b/features/netsocket/DNS.h @@ -14,9 +14,14 @@ * limitations under the License. */ +/** @file DNS.h Domain Name Service */ +/** @addtogroup netsocket + * @{ */ + #ifndef DNS_H #define DNS_H +/** Base class for DNS provider */ class DNS { public: @@ -95,3 +100,5 @@ class DNS { }; #endif + +/** @} */ \ No newline at end of file diff --git a/features/netsocket/DTLSSocket.h b/features/netsocket/DTLSSocket.h index d7c8db3de29..beacc49dd87 100644 --- a/features/netsocket/DTLSSocket.h +++ b/features/netsocket/DTLSSocket.h @@ -1,3 +1,4 @@ +/** @file DTLSSocket.h DTLSSocket */ /* * Copyright (c) 2018 ARM Limited * SPDX-License-Identifier: Apache-2.0 @@ -14,6 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** @addtogroup netsocket +* @{ +*/ #ifndef DTLSSOCKET_H #define DTLSSOCKET_H @@ -25,9 +29,16 @@ // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) +/** + * \brief DTLSSocket implement DTLS stream over UDP Socket. + * + * This is a helper class that uses DTLSSocketWrapper with + * internal UDPSocket. + */ + class DTLSSocket : public DTLSSocketWrapper { public: - /** Create an uninitialized DTLS socket + /** Create an uninitialized DTLS socket. * * Must call open to initialize the socket on a network stack. */ @@ -37,14 +48,14 @@ class DTLSSocket : public DTLSSocketWrapper { */ virtual ~DTLSSocket(); - /** Create a socket on a network interface + /** Create a socket on a network interface. * * Creates and opens a socket on the network stack of the given * network interface. * If hostname is also given, user is not required to call set_hostname() later. * - * @param stack Network stack as target for socket - * @param hostname Hostname used for certificate verification + * @param stack Network stack as target for socket. + * @param hostname Hostname used for certificate verification. */ template DTLSSocket(S *stack, const char *hostname = NULL) : DTLSSocketWrapper(&_udp_socket, hostname) @@ -53,14 +64,14 @@ class DTLSSocket : public DTLSSocketWrapper { MBED_ASSERT(ret == NSAPI_ERROR_OK); } - /** Opens a socket + /** Opens a socket. * * Creates a network socket on the network stack of the given * network interface. Not needed if stack is passed to the * socket's constructor. * - * @param stack Network stack as target for socket - * @return 0 on success, negative error code on failure + * @param stack Network stack as target for socket. + * @return 0 on success, negative error code on failure. */ virtual nsapi_error_t open(NetworkStack *stack) { @@ -75,14 +86,14 @@ class DTLSSocket : public DTLSSocketWrapper { using DTLSSocketWrapper::connect; - /** Connects TCP socket to a remote host + /** Connects TCP socket to a remote host. * * Initiates a connection to a remote server specified by either * a domain name or an IP address and a port. * - * @param host Hostname of the remote host - * @param port Port of the remote host - * @return 0 on success, negative error code on failure + * @param host Hostname of the remote host. + * @param port Port of the remote host. + * @return 0 on success, negative error code on failure. */ nsapi_error_t connect(const char *host, uint16_t port); @@ -92,3 +103,4 @@ class DTLSSocket : public DTLSSocketWrapper { #endif #endif +/** @} */ diff --git a/features/netsocket/DTLSSocketWrapper.h b/features/netsocket/DTLSSocketWrapper.h index 7322c2d017c..1d024682b55 100644 --- a/features/netsocket/DTLSSocketWrapper.h +++ b/features/netsocket/DTLSSocketWrapper.h @@ -1,3 +1,4 @@ +/** @file DTLSSocketWrapper.h DTLSSocketWrapper */ /* * Copyright (c) 2018 ARM Limited * SPDX-License-Identifier: Apache-2.0 @@ -14,6 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** @addtogroup netsocket +* @{ +*/ #ifndef DTLSSOCKETWRAPPER_H #define DTLSSOCKETWRAPPER_H @@ -23,8 +27,17 @@ // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) +/** + * \brief DTLSSocketWrapper implement DTLS stream over the existing Socket transport. + */ class DTLSSocketWrapper : public TLSSocketWrapper { public: + /** Create a DTLSSocketWrapper. + * + * @param transport Underlying transport socket to wrap. + * @param hostname Hostname of the remote host, used for certificate checking. + * @param control Transport control mode. See @ref control_transport. + */ DTLSSocketWrapper(Socket *transport, const char *hostname = NULL, control_transport control = TRANSPORT_CONNECT_AND_CLOSE); private: static void timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms); @@ -37,3 +50,4 @@ class DTLSSocketWrapper : public TLSSocketWrapper { #endif #endif +/** @} */ \ No newline at end of file diff --git a/features/netsocket/EthInterface.h b/features/netsocket/EthInterface.h index 0e856c99f65..28ff3464746 100644 --- a/features/netsocket/EthInterface.h +++ b/features/netsocket/EthInterface.h @@ -1,7 +1,4 @@ - -/** \addtogroup netsocket */ -/** @{*/ -/* EthInterface +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,13 +14,17 @@ * limitations under the License. */ +/* @file EthInterface.h Common interface between Ethernet hardware */ +/** \addtogroup netinterface */ +/** @{*/ + #ifndef ETH_INTERFACE_H #define ETH_INTERFACE_H #include "netsocket/NetworkInterface.h" -/** Common interface that is shared between Ethernet hardware. +/** Common interface between Ethernet hardware. */ class EthInterface : public virtual NetworkInterface { public: @@ -37,7 +38,7 @@ class EthInterface : public virtual NetworkInterface { /** Get the default Ethernet interface. * - * This is provided as a weak method so applications can override. + * This is provided as a weak method so applications can override it. * Default behavior is to get the target's default interface, if * any. * @@ -50,8 +51,8 @@ class EthInterface : public virtual NetworkInterface { /** Get the target's default Ethernet interface. * - * This is provided as a weak method so targets can override. The - * default implementation will invoke EthernetInterface with the + * This is provided as a weak method so targets can override it. The + * default implementation invokes EthernetInterface with the * default EMAC and default network stack, if DEVICE_EMAC is set. * * @return Pointer to interface, if one exists. diff --git a/features/netsocket/MeshInterface.h b/features/netsocket/MeshInterface.h index cd1c7af3467..2c782e86698 100644 --- a/features/netsocket/MeshInterface.h +++ b/features/netsocket/MeshInterface.h @@ -1,7 +1,4 @@ - -/** \addtogroup netsocket */ -/** @{*/ -/* MeshInterface +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,6 +14,10 @@ * limitations under the License. */ +/* @file MeshInterface.h Mesh network interface */ +/** \addtogroup netinterface */ +/** @{*/ + #ifndef MESH_INTERFACE_H #define MESH_INTERFACE_H diff --git a/features/netsocket/NetworkInterface.h b/features/netsocket/NetworkInterface.h index c84fff25043..5cc74aa41ff 100644 --- a/features/netsocket/NetworkInterface.h +++ b/features/netsocket/NetworkInterface.h @@ -1,4 +1,4 @@ -/* NetworkStack +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,6 +14,12 @@ * limitations under the License. */ +/** @file NetworkInterface.h Network Interface base class */ +/** @addtogroup netinterface + * Network Interface classes + * @{ */ + + #ifndef NETWORK_INTERFACE_H #define NETWORK_INTERFACE_H @@ -33,8 +39,6 @@ class EMACInterface; /** Common interface that is shared between network devices. * - * @\addtogroup netsocket - * @{ */ class NetworkInterface: public DNS { public: @@ -346,5 +350,6 @@ class NetworkInterface: public DNS { #endif //!defined(DOXYGEN_ONLY) }; -/** @}*/ #endif + +/** @}*/ diff --git a/features/netsocket/NetworkStack.cpp b/features/netsocket/NetworkStack.cpp index 72b012d4ebb..8d671da51b7 100644 --- a/features/netsocket/NetworkStack.cpp +++ b/features/netsocket/NetworkStack.cpp @@ -16,9 +16,10 @@ #include "NetworkStack.h" #include "nsapi_dns.h" -#include "mbed.h" #include "stddef.h" #include +#include "EventQueue.h" +#include "mbed_shared_queues.h" // Default NetworkStack operations const char *NetworkStack::get_ip_address() diff --git a/features/netsocket/NetworkStack.h b/features/netsocket/NetworkStack.h index 8edb9e06453..64fac20449a 100644 --- a/features/netsocket/NetworkStack.h +++ b/features/netsocket/NetworkStack.h @@ -23,6 +23,10 @@ #include "netsocket/NetworkInterface.h" #include "DNS.h" +/** @file NetworkStack.h NetworkStack class */ +/** @addtogroup netsocket + * @{ */ + // Predeclared classes class OnboardNetworkStack; @@ -32,7 +36,6 @@ class OnboardNetworkStack; * can connect to a network over IP. By implementing the * NetworkStack, a network stack can be used as a target * for instantiating network sockets. - * @addtogroup netsocket */ class NetworkStack: public DNS { public: @@ -421,3 +424,5 @@ NetworkStack *nsapi_create_stack(IF *iface) #endif + +/** @} */ diff --git a/features/netsocket/Socket.h b/features/netsocket/Socket.h index a9f4c0788e3..ec2864bd3ef 100644 --- a/features/netsocket/Socket.h +++ b/features/netsocket/Socket.h @@ -1,7 +1,4 @@ - -/** \addtogroup netsocket */ -/** @{*/ -/* Socket +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,23 +14,37 @@ * limitations under the License. */ +/** @file Socket.h Abstract Socket interface */ +/** @addtogroup netsocket + * Mbed OS Socket API + * @{ */ + #ifndef SOCKET_H #define SOCKET_H #include "netsocket/SocketAddress.h" #include "Callback.h" -/** Abstract socket class +/** Socket interface. + * + * This class defines the Mbed OS Socket API. + * Socket is an abstract interface for communicating with remote endpoints. + * + * This API is intended for applications and libraries instead of + * protocol-specific implementations. For example, TCPSocket + * and UDPSocket are implementations of the Socket interface. + * Socket API is intentionally not protocol-specific, and allows all protocol + * to provide the same API regardless of the underlying transport mechanism. */ class Socket { public: /** Destroy a socket. * - * Closes socket if the socket is still open + * Closes socket if the socket is still open. */ virtual ~Socket() {} - /** Close the socket. + /** Closes the socket. * * Closes any open connection and deallocates any memory associated * with the socket. Called from destructor if socket is not closed. @@ -44,17 +55,17 @@ class Socket { /** Connects socket to a remote address. * - * Attempt to make connection on connection-mode protocol or set or reset + * Attempts to make connection on connection-mode protocol or set or reset * the peer address on connectionless protocol. * - * Also connectionless protocols use the connected address to filter + * Connectionless protocols also use the connected address to filter * incoming packets for recv() and recvfrom() calls. * - * To reset the peer address, zero initialized(default constructor) SocketAddress - * object have to be in the address parameter. + * To reset the peer address, there must be zero initialized(default constructor) SocketAddress + * objects in the address parameter. * - * @param address The SocketAddress of the remote peer - * @return NSAPI_ERROR_OK on success, negative error code on failure + * @param address The SocketAddress of the remote peer. + * @return NSAPI_ERROR_OK on success, negative error code on failure. */ virtual nsapi_error_t connect(const SocketAddress &address) = 0; @@ -62,14 +73,14 @@ class Socket { * * The socket must be connected to a remote host before send() call. * Returns the number of bytes sent from the buffer. - * In case of connectionless socket, send data to pre-specified remote. + * In case of connectionless socket, sends data to pre-specified remote. * * By default, send blocks until all data is sent. If socket is set to * non-blocking or times out, a partial amount can be written. * NSAPI_ERROR_WOULD_BLOCK is returned if no data was written. * - * @param data Buffer of data to send to the host - * @param size Size of the buffer in bytes + * @param data Buffer of data to send to the host. + * @param size Size of the buffer in bytes. * @return Number of sent bytes on success, negative error * code on failure. */ @@ -77,20 +88,20 @@ class Socket { /** Receive data from a socket. * - * Receive data from connected socket or in case of connectionless socket - * this is equivalent of calling recvfrom(NULL, data, size). + * Receive data from connected socket, or in the case of connectionless socket, + * equivalent to calling recvfrom(NULL, data, size). * * If socket is connected, only packets coming from connected peer address * are accepted. * - * @note recv() is allowed write to data buffer even if error occurs. + * @note recv() is allowed write to data buffer even if an error occurs. * * By default, recv blocks until some data is received. If socket is set to * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK can be returned to * indicate no data. * - * @param data Destination buffer for data received from the host - * @param size Size of the buffer in bytes + * @param data Destination buffer for data received from the host. + * @param size Size of the buffer in bytes. * @return Number of received bytes on success, negative error * code on failure. If no data is available to be received * and the peer has performed an orderly shutdown, @@ -100,9 +111,9 @@ class Socket { /** Send a message on a socket. * - * The sendto() function shall send a message through a connection-mode or connectionless-mode socket. - * If the socket is connectionless-mode, the message shall be sent to the address specified. - * If the socket is connection-mode, address shall be ignored. + * The sendto() function sends a message through a connection-mode or connectionless-mode socket. + * If the socket is a connectionless-mode socket, the message is sent to the address specified. + * If the socket is a connected-mode socket, address is ignored. * * By default, sendto blocks until data is sent. If socket is set to * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned @@ -145,7 +156,7 @@ class Socket { * Binding a socket specifies the address and port on which to receive * data. If the IP address is zeroed, only the port is bound. * - * @param address Local address to bind + * @param address Local address to bind. * @return NSAPI_ERROR_OK on success, negative error code on failure. */ virtual nsapi_error_t bind(const SocketAddress &address) = 0; @@ -154,7 +165,7 @@ class Socket { * * Initially all sockets are in blocking mode. In non-blocking mode * blocking operations such as send/recv/accept return - * NSAPI_ERROR_WOULD_BLOCK if they can not continue. + * NSAPI_ERROR_WOULD_BLOCK if they cannot continue. * * set_blocking(false) is equivalent to set_timeout(0) * set_blocking(true) is equivalent to set_timeout(-1) @@ -168,7 +179,7 @@ class Socket { * Initially all sockets have unbounded timeouts. NSAPI_ERROR_WOULD_BLOCK * is returned if a blocking operation takes longer than the specified * timeout. A timeout of 0 removes the timeout from the socket. A negative - * value give the socket an unbounded timeout. + * value gives the socket an unbounded timeout. * * set_timeout(0) is equivalent to set_blocking(false) * set_timeout(-1) is equivalent to set_blocking(true) @@ -179,17 +190,17 @@ class Socket { /** Register a callback on state change of the socket. * - * The specified callback will be called on state changes such as when - * the socket can recv/send/accept successfully and on when an error + * The specified callback is called on state changes, such as when + * the socket can receive/send/accept successfully and when an error * occurs. The callback may also be called spuriously without reason. * * The callback may be called in an interrupt context and should not - * perform expensive operations such as recv/send calls. + * perform expensive operations such as receive/send calls. * * Note! This is not intended as a replacement for a poll or attach-like - * asynchronous api, but rather as a building block for constructing - * such functionality. The exact timing of when the registered function - * is called is not guaranteed and susceptible to change. + * asynchronous API, but rather as a building block for constructing + * such functionality. The exact timing of the registered function + * is not guaranteed and susceptible to change. * * @param func Function to call on state change. */ @@ -232,15 +243,15 @@ class Socket { /** Accepts a connection on a socket. * * The server socket must be bound and set to listen for connections. - * On a new connection, returns connected network socket which user is expected to call close() - * and that deallocates the resources. Referencing a returned pointer after a close() + * On a new connection, returns connected network socket to call close() + * that deallocates the resources. Referencing a returned pointer after a close() * call is not allowed and leads to undefined behavior. * * By default, accept blocks until incoming connection occurs. If socket is set to * non-blocking or times out, error is set to NSAPI_ERROR_WOULD_BLOCK. * - * @param error pointer to storage of the error value or NULL - * @return pointer to a socket + * @param error Pointer to storage of the error value or NULL. + * @return Pointer to a socket. */ virtual Socket *accept(nsapi_error_t *error = NULL) = 0; @@ -250,8 +261,8 @@ class Socket { * incoming connections. * * @param backlog Number of pending connections that can be queued - * simultaneously, defaults to 1 - * @return NSAPI_ERROR_OK on success, negative error code on failure + * simultaneously, defaults to 1. + * @return NSAPI_ERROR_OK on success, negative error code on failure. */ virtual nsapi_error_t listen(int backlog = 1) = 0; diff --git a/features/netsocket/SocketAddress.h b/features/netsocket/SocketAddress.h index b4b68c1a9df..52a17af7f23 100644 --- a/features/netsocket/SocketAddress.h +++ b/features/netsocket/SocketAddress.h @@ -1,5 +1,4 @@ - -/* SocketAddress +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +14,10 @@ * limitations under the License. */ +/** @file SocketAddress.h SocketAddress class */ +/** \addtogroup netsocket + * @{*/ + #ifndef SOCKET_ADDRESS_H #define SOCKET_ADDRESS_H @@ -25,11 +28,9 @@ class NetworkStack; class NetworkInterface; - /** SocketAddress class * * Representation of an IP address and port pair. - * @addtogroup netsocket */ class SocketAddress { public: @@ -40,6 +41,7 @@ class SocketAddress { * * On failure, the IP address and port will be set to zero * + * @tparam S Type of the Network stack * @param stack Network stack to use for DNS resolution * @param host Hostname to resolve * @param port Optional 16-bit port, defaults to 0 @@ -58,7 +60,7 @@ class SocketAddress { /** Create a SocketAddress from a raw IP address and port * - * To construct from a host name, use NetworkInterface::gethostbyname + * @note To construct from a host name, use NetworkInterface::gethostbyname * * @param addr Raw IP address * @param port Optional 16-bit port, defaults to 0 @@ -125,7 +127,7 @@ class SocketAddress { */ const char *get_ip_address() const; - /* Get the raw IP bytes + /** Get the raw IP bytes * * @return Raw IP address in big-endian order */ diff --git a/features/netsocket/TCPServer.h b/features/netsocket/TCPServer.h index 721e5de4439..3a0a5c3c4e7 100644 --- a/features/netsocket/TCPServer.h +++ b/features/netsocket/TCPServer.h @@ -1,5 +1,4 @@ - -/* TCPServer +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +14,10 @@ * limitations under the License. */ +/** @file TCPServer.h Deprecated TCPServer class */ +/** \addtogroup netsocket + * @{*/ + #ifndef TCPSERVER_H #define TCPSERVER_H @@ -26,7 +29,6 @@ /** TCP socket server - * @addtogroup netsocket */ class TCPServer : public TCPSocket { public: @@ -82,3 +84,5 @@ class TCPServer : public TCPSocket { }; #endif + +/** @} */ diff --git a/features/netsocket/TCPSocket.cpp b/features/netsocket/TCPSocket.cpp index a88fece7967..9e8cfe9ee9e 100644 --- a/features/netsocket/TCPSocket.cpp +++ b/features/netsocket/TCPSocket.cpp @@ -25,7 +25,7 @@ TCPSocket::TCPSocket() TCPSocket::TCPSocket(TCPSocket *parent, nsapi_socket_t socket, SocketAddress address) { - _socket = socket, + _socket = socket; _stack = parent->_stack; _factory_allocated = true; _remote_peer = address; @@ -288,6 +288,8 @@ TCPSocket *TCPSocket::accept(nsapi_error_t *error) if (0 == ret) { connection = new TCPSocket(this, socket, address); + _socket_stats.stats_update_peer(connection, address); + _socket_stats.stats_update_socket_state(connection, SOCK_CONNECTED); break; } else if ((_timeout == 0) || (ret != NSAPI_ERROR_WOULD_BLOCK)) { break; diff --git a/features/netsocket/TCPSocket.h b/features/netsocket/TCPSocket.h index c52a5fc0947..4acddce8cea 100644 --- a/features/netsocket/TCPSocket.h +++ b/features/netsocket/TCPSocket.h @@ -1,7 +1,4 @@ - -/** \addtogroup netsocket */ -/** @{*/ -/* TCPSocket +/* * Copyright (c) 2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,6 +14,10 @@ * limitations under the License. */ +/** @file TCPSocket.h TCPSocket class */ +/** \addtogroup netsocket + * @{*/ + #ifndef TCPSOCKET_H #define TCPSOCKET_H diff --git a/features/netsocket/TLSSocket.h b/features/netsocket/TLSSocket.h index f868865f1d2..2af18d23744 100644 --- a/features/netsocket/TLSSocket.h +++ b/features/netsocket/TLSSocket.h @@ -1,3 +1,4 @@ +/** @file TLSSocket.h TLSSocket */ /* * Copyright (c) 2018 ARM Limited * SPDX-License-Identifier: Apache-2.0 @@ -14,6 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** @addtogroup netsocket +* @{ +*/ #ifndef _MBED_HTTPS_TLS_TCP_SOCKET_H_ #define _MBED_HTTPS_TLS_TCP_SOCKET_H_ @@ -31,11 +35,15 @@ #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) /** - * \brief TLSSocket a wrapper around TCPSocket for interacting with TLS servers + * \brief TLSSocket is a wrapper around TCPSocket for interacting with TLS servers. + * + * TLSSocket uses the TLSSocketWrapper with internal TCP socket. + * This is a helper for creating commonly used TLS connections over TCP. + * */ class TLSSocket : public TLSSocketWrapper { public: - /** Create an uninitialized socket + /** Create an uninitialized socket. * * Must call open to initialize the socket on a network stack. */ @@ -45,17 +53,16 @@ class TLSSocket : public TLSSocketWrapper { */ virtual ~TLSSocket(); - /** Opens a socket + /** Opens a socket. * * Creates a network socket on the network stack of the given - * network interface. Not needed if stack is passed to the - * socket's constructor. + * network interface. * * @note TLSSocket cannot be reopened after closing. It should be destructed to * clear internal TLS memory structures. * - * @param stack Network stack as target for socket - * @return 0 on success, negative error code on failure + * @param stack Network stack as target for socket. + * @return 0 on success, negative error code on failure. */ virtual nsapi_error_t open(NetworkStack *stack) { @@ -70,14 +77,14 @@ class TLSSocket : public TLSSocketWrapper { using TLSSocketWrapper::connect; - /** Connects TCP socket to a remote host + /** Connects TCP socket to a remote host. * * Initiates a connection to a remote server specified by either - * a domain name or an IP address and a port. + * a domain name or an IP address and port. * - * @param host Hostname of the remote host - * @param port Port of the remote host - * @return 0 on success, negative error code on failure + * @param host Hostname of the remote host. + * @param port Port of the remote host. + * @return 0 on success, negative error code on failure. */ nsapi_error_t connect(const char *host, uint16_t port); @@ -87,3 +94,5 @@ class TLSSocket : public TLSSocketWrapper { #endif // MBEDTLS_SSL_CLI_C #endif // _MBED_HTTPS_TLS_TCP_SOCKET_H_ + +/** @} */ diff --git a/features/netsocket/TLSSocketWrapper.cpp b/features/netsocket/TLSSocketWrapper.cpp index eb75479a841..5e65758784f 100644 --- a/features/netsocket/TLSSocketWrapper.cpp +++ b/features/netsocket/TLSSocketWrapper.cpp @@ -287,7 +287,7 @@ nsapi_error_t TLSSocketWrapper::send(const void *data, nsapi_size_t size) ret = continue_handshake(); if (ret != NSAPI_ERROR_IS_CONNECTED) { if (ret == NSAPI_ERROR_ALREADY) { - ret = NSAPI_ERROR_NO_CONNECTION; + ret = NSAPI_ERROR_WOULD_BLOCK; } return ret; } @@ -341,7 +341,7 @@ nsapi_size_or_error_t TLSSocketWrapper::recv(void *data, nsapi_size_t size) ret = continue_handshake(); if (ret != NSAPI_ERROR_IS_CONNECTED) { if (ret == NSAPI_ERROR_ALREADY) { - ret = NSAPI_ERROR_NO_CONNECTION; + ret = NSAPI_ERROR_WOULD_BLOCK; } return ret; } diff --git a/features/netsocket/TLSSocketWrapper.h b/features/netsocket/TLSSocketWrapper.h index bffdd97d2bc..d4e58bd22b2 100644 --- a/features/netsocket/TLSSocketWrapper.h +++ b/features/netsocket/TLSSocketWrapper.h @@ -1,3 +1,4 @@ +/** @file TLSSocketWrapper.h TLSSocketWrapper */ /* * Copyright (c) 2018 ARM Limited * SPDX-License-Identifier: Apache-2.0 @@ -14,6 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** @addtogroup netsocket +* @{ +*/ #ifndef _MBED_HTTPS_TLS_SOCKET_WRAPPER_H_ #define _MBED_HTTPS_TLS_SOCKET_WRAPPER_H_ @@ -31,57 +35,68 @@ #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) /** - * \brief TLSSocket a wrapper around Socket for interacting with TLS servers + * TLSSocket is a wrapper around Socket for interacting with TLS servers. + * + * TLSSocketWrapper can use any Socket as a transport. After + * completing the TLS handshake, it can be used as any Socket would be used. + * */ class TLSSocketWrapper : public Socket { public: + /** Transport modes */ enum control_transport { - TRANSPORT_KEEP, - TRANSPORT_CONNECT_AND_CLOSE, - TRANSPORT_CONNECT, - TRANSPORT_CLOSE, + TRANSPORT_KEEP, /**< Doesn't call connect() or close() on transport socket */ + TRANSPORT_CONNECT_AND_CLOSE, /**< Does call connect() and close() on transport socket */ + TRANSPORT_CONNECT, /**< Does call only connect() on transport socket */ + TRANSPORT_CLOSE, /**< Does call close() on transport socket */ }; - /* Create a TLSSocketWrapper + /** Create a TLSSocketWrapper. * - * @param transport Underlying transport socket to wrap - * @param hostname Hostname of the remote host, used for certificate checking + * @param transport Underlying transport socket to wrap. + * @param hostname Hostname of the remote host, used for certificate checking. + * @param control Transport control mode. See @ref control_transport. */ TLSSocketWrapper(Socket *transport, const char *hostname = NULL, control_transport control = TRANSPORT_CONNECT_AND_CLOSE); - /** Destroy a socket wrapper + /** Destroy a socket wrapper. * - * Closes socket wrapper if the socket wrapper is still open + * Closes socket wrapper if the socket wrapper is still open. */ virtual ~TLSSocketWrapper(); /** Set hostname. * - * TLSSocket requires hostname that is used to verify the certificate. + * TLSSocket requires hostname used to verify the certificate. * If hostname is not given in constructor, this function must be used before * starting the TLS handshake. + * + * @param hostname Hostname of the remote host, used for certificate checking. */ void set_hostname(const char *hostname); /** Sets the certification of Root CA. * - * @param root_ca Root CA Certificate in any mbed-TLS supported format. + * @param root_ca Root CA Certificate in any Mbed TLS-supported format. * @param len Length of certificate (including terminating 0 for PEM). + * @return 0 on success, negative error code on failure. */ nsapi_error_t set_root_ca_cert(const void *root_ca, size_t len); /** Sets the certification of Root CA. * - * @param root_ca_pem Root CA Certificate in PEM format + * @param root_ca_pem Root CA Certificate in PEM format. + * @return 0 on success, negative error code on failure. */ nsapi_error_t set_root_ca_cert(const char *root_ca_pem); /** Sets client certificate, and client private key. * - * @param client_cert client certification in PEM or DER format. - * @param client_cert_len certificate size including the terminating null byte for PEM data. - * @param client_private_key_pem client private key in PEM or DER format - * @param client_private_key_len key size including the terminating null byte for PEM data + * @param client_cert Client certification in PEM or DER format. + * @param client_cert_len Certificate size including the terminating null byte for PEM data. + * @param client_private_key_pem Client private key in PEM or DER format. + * @param client_private_key_len Key size including the terminating null byte for PEM data + * @return 0 on success, negative error code on failure. */ nsapi_error_t set_client_cert_key(const void *client_cert, size_t client_cert_len, const void *client_private_key_pem, size_t client_private_key_len); @@ -90,28 +105,28 @@ class TLSSocketWrapper : public Socket { * * @param client_cert_pem Client certification in PEM format. * @param client_private_key_pem Client private key in PEM format. + * @return 0 on success, negative error code on failure. */ nsapi_error_t set_client_cert_key(const char *client_cert_pem, const char *client_private_key_pem); - /** Send data over a TLS socket + /** Send data over a TLS socket. * * The socket must be connected to a remote host. Returns the number of * bytes sent from the buffer. * - * @param data Buffer of data to send to the host - * @param size Size of the buffer in bytes - * @return Number of sent bytes on success, negative error - * code on failure + * @param data Buffer of data to send to the host. + * @param size Size of the buffer in bytes. + * @return Number of sent bytes on success, negative error code on failure. */ virtual nsapi_error_t send(const void *data, nsapi_size_t size); - /** Receive data over a TLS socket + /** Receive data over a TLS socket. * * The socket must be connected to a remote host. Returns the number of * bytes received into the buffer. * - * @param data Destination buffer for data received from the host - * @param size Size of the buffer in bytes + * @param data Destination buffer for data received from the host. + * @param size Size of the buffer in bytes. * @return Number of received bytes on success, negative error * code on failure. If no data is available to be received * and the peer has performed an orderly shutdown, @@ -136,85 +151,94 @@ class TLSSocketWrapper : public Socket { virtual nsapi_error_t getpeername(SocketAddress *address); #if defined(MBEDTLS_X509_CRT_PARSE_C) || defined(DOXYGEN_ONLY) - /** Get own certificate directly from Mbed TLS - * @return internal Mbed TLS X509 structure + /** Get own certificate directly from Mbed TLS. + * + * @return Internal Mbed TLS X509 structure. */ mbedtls_x509_crt *get_own_cert(); - /** Set own certificate directly to Mbed TLS + /** Set own certificate directly to Mbed TLS. + * * @param crt Mbed TLS X509 certificate chain. - * @return error code from mbedtls_ssl_conf_own_cert() + * @return error code from mbedtls_ssl_conf_own_cert(). */ int set_own_cert(mbedtls_x509_crt *crt); /** Get CA chain structure. + * * @return Mbed TLS X509 certificate chain. */ mbedtls_x509_crt *get_ca_chain(); - /** Set CA chain directly to Mbed TLS + /** Set CA chain directly to Mbed TLS. + * * @param crt Mbed TLS X509 certificate chain. */ void set_ca_chain(mbedtls_x509_crt *crt); #endif - /** Get internal Mbed TLS configuration structure - * @return Mbed TLS SSL config + /** Get internal Mbed TLS configuration structure. + * + * @return Mbed TLS SSL config. */ mbedtls_ssl_config *get_ssl_config(); /** Override Mbed TLS configuration. - * @param conf Mbed TLS SSL configuration structure + * + * @param conf Mbed TLS SSL configuration structure. */ void set_ssl_config(mbedtls_ssl_config *conf); - /** Get internal Mbed TLS contect structure. - * @return SSL context + /** Get internal Mbed TLS context structure. + * + * @return SSL context. */ mbedtls_ssl_context *get_ssl_context(); protected: - /** Initiates TLS Handshake +#ifndef DOXYGEN_ONLY + /** Initiates TLS Handshake. * - * Initiates a TLS handshake to a remote peer - * Underlying transport socket should already be connected + * Initiates a TLS handshake to a remote peer. + * Underlying transport socket should already be connected. * * Root CA certification must be set by set_ssl_ca_pem() before - * call this function. + * calling this function. * * For non-blocking purposes, this functions needs to know whether this * was a first call to Socket::connect() API so that NSAPI_ERROR_INPROGRESS * does not happen twice. * - * @parameter first_call is this a first call to Socket::connect() API. - * @return 0 on success, negative error code on failure + * @param first_call is this a first call to Socket::connect() API. + * @return 0 on success, negative error code on failure */ nsapi_error_t start_handshake(bool first_call); bool is_handshake_started() const; void event(); +#endif private: - /** Continue already initialised handshake */ + /** Continue already initialized handshake */ nsapi_error_t continue_handshake(); /** - * Helper for pretty-printing mbed TLS error codes + * Helper for pretty-printing Mbed TLS error codes */ static void print_mbedtls_error(const char *name, int err); #if MBED_CONF_TLS_SOCKET_DEBUG_LEVEL > 0 /** - * Debug callback for mbed TLS + * Debug callback for Mbed TLS * Just prints on the USB serial port */ static void my_debug(void *ctx, int level, const char *file, int line, const char *str); /** - * Certificate verification callback for mbed TLS + * Certificate verification callback for Mbed TLS * Here we only use it to display information on each cert in the chain */ static int my_verify(void *data, mbedtls_x509_crt *crt, int depth, uint32_t *flags); @@ -261,3 +285,4 @@ class TLSSocketWrapper : public Socket { #endif /* MBEDTLS_SSL_CLI_C */ #endif // _MBED_HTTPS_TLS_SOCKET_WRAPPER_H_ +/** @} */ diff --git a/features/netsocket/WiFiInterface.h b/features/netsocket/WiFiInterface.h index fd2266c8825..a96a742695d 100644 --- a/features/netsocket/WiFiInterface.h +++ b/features/netsocket/WiFiInterface.h @@ -1,5 +1,4 @@ - -/* WiFiInterface +/* * Copyright (c) 2015 - 2016 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +14,11 @@ * limitations under the License. */ +/** @file WifiInterface.h Common interface between Wi-Fi devices */ +/** @addtogroup netinterface + * @{ + */ + #ifndef WIFI_INTERFACE_H #define WIFI_INTERFACE_H @@ -22,15 +26,13 @@ #include "netsocket/NetworkInterface.h" #include "netsocket/WiFiAccessPoint.h" -/** Common interface that is shared between Wi-Fi devices. - * - * @addtogroup netsocket +/** Common interface between Wi-Fi devices. */ class WiFiInterface: public virtual NetworkInterface { public: /** Get the default Wi-Fi interface. * - * This is provided as a weak method so applications can override. + * This is provided as a weak method so applications can override it. * Default behavior is to get the target's default interface, if * any. * @@ -51,7 +53,7 @@ class WiFiInterface: public virtual NetworkInterface { /** Set the Wi-Fi network channel. * - * @param channel Channel on which the connection is to be made, or 0 for any (Default: 0). + * @param channel Channel to make the connection, or 0 for any (Default: 0). * @return NSAPI_ERROR_OK on success, or error code on failure. */ virtual nsapi_error_t set_channel(uint8_t channel) = 0; @@ -68,7 +70,7 @@ class WiFiInterface: public virtual NetworkInterface { * @param ssid Name of the network to connect to. * @param pass Security passphrase to connect to the network. * @param security Type of encryption for connection (Default: NSAPI_SECURITY_NONE). - * @param channel Channel on which the connection is to be made, or 0 for any (Default: 0). + * @param channel Channel to make the connection, or 0 for any (Default: 0). * @return NSAPI_ERROR_OK on success, or error code on failure. */ virtual nsapi_error_t connect(const char *ssid, const char *pass, @@ -89,13 +91,15 @@ class WiFiInterface: public virtual NetworkInterface { /** Scan for available networks. * - * This function will block. If the count is 0, function will only return count of available networks, so that - * user can allocated necessary memory. If the count is grater than 0 and the a \p res is not NULL it'll be populated - * with discovered networks up to value of count. + * @note This is a blocking function. + * + * If the \p count is 0, the function only returns the number of available networks. + * If the \p count is greater than 0 and the \p res is not NULL, the array of discovered APs is populated + * with discovered networks up to the value of the \p count. * * @param res Pointer to allocated array to store discovered APs. * @param count Size of allocated res array, or 0 to only count available APs. - * @return Number of entries in res, or if count was 0 number of available networks. + * @return Number of entries in res, or if count was 0, number of available networks. * Negative on error (@see nsapi_types.h for nsapi_error). */ virtual nsapi_size_or_error_t scan(WiFiAccessPoint *res, nsapi_size_t count) = 0; @@ -112,7 +116,7 @@ class WiFiInterface: public virtual NetworkInterface { /** Get the target's default Wi-Fi interface. * - * This is provided as a weak method so targets can override. The + * This is provided as a weak method so targets can override it. The * default implementation returns NULL. * * @return pointer to interface, if any. diff --git a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp index 6fb7d466697..c0ebe799a9d 100644 --- a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp +++ b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp @@ -24,6 +24,10 @@ #include "mbed_trace.h" #define TRACE_GROUP "UCID" +#include "mbed_wait_api.h" + +using namespace mbed; + /** * PDP (packet data profile) Context */ diff --git a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h index 525c7c9f9ce..b0658c77dd2 100644 --- a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h +++ b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h @@ -18,7 +18,9 @@ #include "CellularBase.h" #include "platform/ATCmdParser.h" -#include "mbed.h" +#include "ATCmdParser.h" +#include "FileHandle.h" +#include "Callback.h" #if NSAPI_PPP_AVAILABLE @@ -114,7 +116,7 @@ class PPPCellularInterface : public CellularBase { * use - this permits a derived class to pass a pointer to a not-yet-constructed member object. */ MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - PPPCellularInterface(FileHandle *fh, bool debug = false); + PPPCellularInterface(mbed::FileHandle *fh, bool debug = false); /** Destructor * @@ -212,7 +214,7 @@ class PPPCellularInterface : public CellularBase { * connection. It doesn't do anything immediately other than setting up flags. * * @param set can be set to true if the SIM pin check is supposed to be enabled - * and vice versa. + * and false if not. */ MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") void set_sim_pin_check(bool set); @@ -286,7 +288,7 @@ class PPPCellularInterface : public CellularBase { * @param status_cb The callback for status changes */ MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual void attach(Callback status_cb); + virtual void attach(mbed::Callback status_cb); /** Get the connection status * @@ -308,8 +310,8 @@ class PPPCellularInterface : public CellularBase { virtual nsapi_error_t set_blocking(bool blocking); private: - FileHandle *_fh; - ATCmdParser *_at; + mbed::FileHandle *_fh; + mbed::ATCmdParser *_at; const char *_new_pin; const char *_pin; const char *_apn; @@ -317,7 +319,7 @@ class PPPCellularInterface : public CellularBase { const char *_pwd; bool _debug_trace_on; nsapi_ip_stack_t _stack; - Callback _connection_status_cb; + mbed::Callback _connection_status_cb; nsapi_connection_status_t _connect_status; bool _connect_is_blocking; void base_initialization(); diff --git a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h b/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h index b35bfa0a848..e1d27459021 100644 --- a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h +++ b/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h @@ -54,7 +54,7 @@ class UARTCellularInterface : public PPPCellularInterface { virtual ~UARTCellularInterface(); private: - UARTSerial _serial; + mbed::UARTSerial _serial; PinName _dcd_pin; bool _active_high; diff --git a/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/mbed_lib.json b/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/mbed_lib.json index 2e1ef2e320a..102de42f02e 100644 --- a/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/mbed_lib.json +++ b/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/mbed_lib.json @@ -1,7 +1,7 @@ { "name": "kinetis-emac", "config": { - "rx-ring-len": 16, - "tx-ring-len": 8 + "rx-ring-len": 2, + "tx-ring-len": 1 } } diff --git a/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F30X/gd32f3_eth_init.c b/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F30X/gd32f3_eth_init.c new file mode 100644 index 00000000000..326acd8de1e --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F30X/gd32f3_eth_init.c @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018 Gigadevice Semiconductor Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "gd32f30x.h" + +/** + * Initializes the HW pin for enet + * + */ +void enet_bsp_init(void) +{ + /* Enable GPIOs clocks */ + rcu_periph_clock_enable(RCU_GPIOA); + rcu_periph_clock_enable(RCU_GPIOB); + rcu_periph_clock_enable(RCU_GPIOC); + rcu_periph_clock_enable(RCU_AF); + + gpio_para_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_8); + rcu_pll2_config(RCU_PLL2_MUL10); + rcu_osci_on(RCU_PLL2_CK); + rcu_osci_stab_wait(RCU_PLL2_CK); + rcu_ckout0_config(RCU_CKOUT0SRC_CKPLL2); + gpio_ethernet_phy_select(GPIO_ENET_PHY_RMII); + + /** ETH GPIO Configuration + RMII_REF_CLK ----------------------> PA1 + RMII_MDIO -------------------------> PA2 + RMII_MDC --------------------------> PC1 + RMII_MII_CRS_DV -------------------> PA7 + RMII_MII_RXD0 ---------------------> PC4 + RMII_MII_RXD1 ---------------------> PC5 + RMII_MII_TX_EN --------------------> PB11 + RMII_MII_TXD0 ---------------------> PB12 + RMII_MII_TXD1 ---------------------> PB13 + */ + /* PA1: ETH_RMII_REF_CLK */ + gpio_para_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_1); + /* PA2: ETH_MDIO */ + gpio_para_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_2); + /* PA7: ETH_RMII_CRS_DV */ + gpio_para_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_7); + + /* PB11: ETH_RMII_TX_EN */ + gpio_para_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_11); + /* PB12: ETH_RMII_TXD0 */ + gpio_para_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_12); + /* PB13: ETH_RMII_TXD1 */ + gpio_para_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_13); + + /* PC1: ETH_MDC */ + gpio_para_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_1); + /* PC4: ETH_RMII_RXD0 */ + gpio_para_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_4); + /* PC5: ETH_RMII_RXD1 */ + gpio_para_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_5); + + /* Enable the Ethernet global Interrupt */ + nvic_irq_enable(ENET_IRQn, 0x7, 0); + + /* Enable ETHERNET clock */ + rcu_periph_clock_enable(RCU_ENET); + rcu_periph_clock_enable(RCU_ENETTX); + rcu_periph_clock_enable(RCU_ENETRX); +} diff --git a/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F4XX/gd32f4_eth_init.c b/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F4XX/gd32f4_eth_init.c new file mode 100644 index 00000000000..1de087fc635 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_GD_EMAC/TARGET_GD32F4XX/gd32f4_eth_init.c @@ -0,0 +1,102 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018 GigaDevice Semiconductor Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "gd32f4xx.h" + +/** + * Initializes the HW pin for enet + * + */ +void enet_bsp_init(void) +{ + /* enable GPIOs clocks */ + rcu_periph_clock_enable(RCU_GPIOA); + rcu_periph_clock_enable(RCU_GPIOB); + rcu_periph_clock_enable(RCU_GPIOC); + + /* enable SYSCFG clock */ + rcu_periph_clock_enable(RCU_SYSCFG); + syscfg_enet_phy_interface_config(SYSCFG_ENET_PHY_RMII); + /** ETH GPIO Configuration + RMII_REF_CLK ----------------------> PA1 + RMII_MDIO -------------------------> PA2 + RMII_MDC --------------------------> PC1 + RMII_MII_CRS_DV -------------------> PA7 + RMII_MII_RXD0 ---------------------> PC4 + RMII_MII_RXD1 ---------------------> PC5 + RMII_MII_TX_EN --------------------> PB11 + RMII_MII_TXD0 ---------------------> PB12 + RMII_MII_TXD1 ---------------------> PB13 + */ + + /* PA1: ETH_RMII_REF_CLK */ + gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1); + gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_1); + + /* PA2: ETH_MDIO */ + gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_2); + gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_2); + + /* PA7: ETH_RMII_CRS_DV */ + gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7); + gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_7); + + gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_1); + gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_2); + gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_7); + + /* PB11: ETH_RMII_TX_EN */ + gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11); + gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_11); + + /* PB12: ETH_RMII_TXD0 */ + gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_12); + gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_12); + + /* PB13: ETH_RMII_TXD1 */ + gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13); + gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_13); + + gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_11); + gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_12); + gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_13); + + /* PC1: ETH_MDC */ + gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1); + gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_1); + + /* PC4: ETH_RMII_RXD0 */ + gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4); + gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_4); + + /* PC5: ETH_RMII_RXD1 */ + gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5); + gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_5); + + gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_1); + gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_4); + gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_5); + + /* enable the ETHERNET global interrupt */ + nvic_irq_enable(ENET_IRQn, 0x7, 0); + + /* enable ETHERNET clock */ + rcu_periph_clock_enable(RCU_ENET); + rcu_periph_clock_enable(RCU_ENETTX); + rcu_periph_clock_enable(RCU_ENETRX); +} diff --git a/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.cpp b/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.cpp new file mode 100644 index 00000000000..8dc808d9f54 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.cpp @@ -0,0 +1,505 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018 Gigadevice Semiconductor Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "cmsis_os.h" + +#include "mbed_interface.h" +#include "mbed_assert.h" +#include "mbed_shared_queues.h" +#include "netsocket/nsapi_types.h" + +#include "gd32xx_emac.h" + +/* \brief Flags for worker thread */ +#define _ENET_FLAG_RX (1) + +/** \brief Driver thread priority */ +#define _THREAD_STACKSIZE (512) +#define _THREAD_PRIORITY (osPriorityHigh) + +#define _PHY_TASK_PERIOD_MS (200) + +#define _ENET_HW_ADDR_SIZE (6) +#define _ENET_MTU_SIZE (1500) +#define _ENET_IF_NAME "gd" + +#define _ENET_BOARD_PHY_ADDRESS (0x01) +#define _ENET_HARDWARE_CHECKSUM (0) + +#define _GD_MAC_ADDR0 0x02 +#define _GD_MAC_ADDR1 0xaa +#define _GD_MAC_ADDR2 0xbb +#define _GD32_ID_ADDR 0x1FFFF7E8 +/* ENET RxDMA/TxDMA descriptor */ +extern enet_descriptors_struct rxdesc_tab[ENET_RXBUF_NUM], txdesc_tab[ENET_TXBUF_NUM]; +/* ENET receive buffer */ +extern uint8_t rx_buff[ENET_RXBUF_NUM][ENET_RXBUF_SIZE]; +/* ENET transmit buffer */ +extern uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE]; +/*global transmit and receive descriptors pointers */ +extern enet_descriptors_struct *dma_current_txdesc; +extern enet_descriptors_struct *dma_current_rxdesc; + +#ifdef __cplusplus +extern "C" { +#endif + +void ENET_IRQHandler(void); +void enet_bsp_init(void); +#ifdef __cplusplus +} +#endif + +/** + * Ethernet IRQ Handler + * + */ +void ENET_IRQHandler(void) +{ + /* frame received */ + if (SET == enet_interrupt_flag_get(ENET_DMA_INT_FLAG_RS)) { + /* clear the enet DMA Rx interrupt pending bits */ + enet_interrupt_flag_clear(ENET_DMA_INT_FLAG_RS_CLR); + enet_interrupt_flag_clear(ENET_DMA_INT_FLAG_NI_CLR); + /* Ethernet Rx Transfer completed callback */ + GD32_EMAC &emac = GD32_EMAC::get_instance(); + if (emac.rx_thread) { + osThreadFlagsSet(emac.rx_thread, _ENET_FLAG_RX); + } + } +} + +GD32_EMAC::GD32_EMAC() + : rx_thread(0), + phy_status(0) +{ +} + +static osThreadId_t create_new_thread(const char *threadName, void (*thread)(void *arg), void *arg, int stacksize, osPriority_t priority, mbed_rtos_storage_thread_t *thread_cb) +{ + osThreadAttr_t attr = {0}; + attr.name = threadName; + attr.stack_mem = malloc(stacksize); + attr.cb_mem = thread_cb; + attr.stack_size = stacksize; + attr.cb_size = sizeof(mbed_rtos_storage_thread_t); + attr.priority = priority; + return osThreadNew(thread, arg, &attr); +} + +/** \brief Low level init of the MAC and PHY. + * + */ +bool GD32_EMAC::low_level_init() +{ + /* Init ETH */ + uint8_t macaddr[6]; + uint32_t i; + +#if (MBED_MAC_ADDRESS_SUM != MBED_MAC_ADDR_INTERFACE) + MACAddr[0] = MBED_MAC_ADDR_0; + MACAddr[1] = MBED_MAC_ADDR_1; + MACAddr[2] = MBED_MAC_ADDR_2; + MACAddr[3] = MBED_MAC_ADDR_3; + MACAddr[4] = MBED_MAC_ADDR_4; + MACAddr[5] = MBED_MAC_ADDR_5; +#else + mbed_mac_address((char *)macaddr); +#endif + + enet_bsp_init(); + /* reset ethernet on AHB bus */ + enet_deinit(); + + if (ERROR == enet_software_reset()) { + while (1); + } + +#if (1 == _ENET_HARDWARE_CHECKSUM) + if (ERROR == enet_init(ENET_AUTO_NEGOTIATION, ENET_AUTOCHECKSUM_DROP_FAILFRAMES, ENET_BROADCAST_FRAMES_PASS)) { + while (1); + } +#else + if (ERROR == enet_init(ENET_AUTO_NEGOTIATION, ENET_NO_AUTOCHECKSUM, ENET_BROADCAST_FRAMES_PASS)) { + while (1); + } +#endif + /* initialize MAC address in ethernet MAC */ + enet_mac_address_set(ENET_MAC_ADDRESS0, macaddr); + + enet_interrupt_enable(ENET_DMA_INT_NIE); + enet_interrupt_enable(ENET_DMA_INT_RIE); + + /* Initialize Tx Descriptors list: Chain Mode */ + enet_descriptors_chain_init(ENET_DMA_TX); + +#if (1 == _ENET_HARDWARE_CHECKSUM) + /* enable the TCP, UDP and ICMP checksum insertion for the Tx frames */ + for (i = 0; i < ENET_TXBUF_NUM; i++) { + enet_transmit_checksum_config(&txdesc_tab[i], ENET_CHECKSUM_TCPUDPICMP_FULL); + } +#endif + + /* Initialize Rx Descriptors list: Chain Mode */ + enet_descriptors_chain_init(ENET_DMA_RX); + + /* enable ethernet Rx interrrupt */ + for (i = 0; i < ENET_RXBUF_NUM; i++) { + enet_rx_desc_immediate_receive_complete_interrupt(&rxdesc_tab[i]); + } + + /* enable MAC and DMA transmission and reception */ + enet_enable(); + + return true; +} + +/** + * Sends the packet over the link + * + * That can not be called from an interrupt context. + * + * @param buf Packet to be send + * @return True if the packet was send successfully, False otherwise + */ +bool GD32_EMAC::link_out(emac_mem_buf_t *buf) +{ + emac_mem_buf_t *q; + uint8_t *buffer; + uint16_t framelength = 0; + + /* Get exclusive access */ + TXLockMutex.lock(); + + while ((uint32_t)RESET != (dma_current_txdesc->status & ENET_TDES0_DAV)) {} + + /* copy frame from pbufs to driver buffers */ + buffer = reinterpret_cast(enet_desc_information_get(dma_current_txdesc, TXDESC_BUFFER_1_ADDR)); + + for (q = buf; q != NULL; q = memory_manager->get_next(q)) { + memcpy(static_cast(&buffer[framelength]), static_cast(memory_manager->get_ptr(q)), memory_manager->get_len(q)); + framelength = framelength + memory_manager->get_len(q); + } + + /* Prepare transmit descriptors to give to DMA */ + if (SUCCESS != ENET_NOCOPY_FRAME_TRANSMIT(framelength)) { + while (1); + } + + memory_manager->free(buf); + /* Restore access */ + TXLockMutex.unlock(); + + return true; +} + +/** \brief Attempt to read a packet from the EMAC interface. + * + */ +emac_mem_buf_t *GD32_EMAC::low_level_input(void) +{ + emac_mem_buf_t *p = NULL, *q; + uint32_t l = 0; + uint16_t len; + uint8_t *buffer; + + /* obtain the size of the packet and put it into the "len" variable. */ + len = enet_desc_information_get(dma_current_rxdesc, RXDESC_FRAME_LENGTH); + buffer = reinterpret_cast(enet_desc_information_get(dma_current_rxdesc, RXDESC_BUFFER_1_ADDR)); + + if (len > 0) { + /* Allocate a memory buffer chain from buffer pool */ + p = memory_manager->alloc_pool(len, 0); + } else { + return p; + } + + if (p != NULL) { + for (q = p; q != NULL; q = memory_manager->get_next(q)) { + memcpy(static_cast(memory_manager->get_ptr(q)), static_cast(&buffer[l]), memory_manager->get_len(q)); + l = l + memory_manager->get_len(q); + } + } + ENET_NOCOPY_FRAME_RECEIVE(); + + return p; +} + + +/** \brief Attempt to read a packet from the EMAC interface. + * + */ +void GD32_EMAC::packet_rx() +{ + /* move received packet into a new buf */ + while (1) { + emac_mem_buf_t *p = NULL; + p = low_level_input(); + + if (p) { + emac_link_input_cb(p); + } else { + break; + } + } +} + +/** \brief Worker thread. + * + * Woken by thread flags to receive packets or clean up transmit + * + * \param[in] pvParameters pointer to the interface data + */ +void GD32_EMAC::thread_function(void *pvParameters) +{ + static struct GD32_EMAC *gd32_enet = static_cast(pvParameters); + + while (1) { + uint32_t flags = osThreadFlagsWait(_ENET_FLAG_RX, osFlagsWaitAny, osWaitForever); + + if (flags & _ENET_FLAG_RX) { + gd32_enet->packet_rx(); + } + } +} + +/** + * This task checks phy link status and updates net status + */ +void GD32_EMAC::phy_task() +{ + uint16_t regval; + + enet_phy_write_read(ENET_PHY_READ, _ENET_BOARD_PHY_ADDRESS, PHY_REG_BSR, ®val); + if (emac_link_state_cb) { + regval &= PHY_LINKED_STATUS; + + if (phy_status != regval) { + if (regval == PHY_LINKED_STATUS) { + emac_link_state_cb(true);; + } else { + emac_link_state_cb(false); + } + } + } + + phy_status = regval; +} + +void GD32_EMAC::eth_arch_enable_interrupts(void) +{ + nvic_irq_enable(ENET_IRQn, 7, 0); +} + +void GD32_EMAC::eth_arch_disable_interrupts(void) +{ + nvic_irq_disable(ENET_IRQn); +} + +/** This returns a unique 6-byte MAC address, based on the device UID +* This function overrides hal/common/mbed_interface.c function +* @param mac A 6-byte array to write the MAC address +*/ +void mbed_mac_address(char *mac) +{ + uint32_t unique_id; + + unique_id = *(uint32_t *)_GD32_ID_ADDR; + mac[0] = _GD_MAC_ADDR0; + mac[1] = _GD_MAC_ADDR1; + mac[2] = _GD_MAC_ADDR2; + mac[3] = (unique_id & 0x00ff0000) >> 16; + mac[4] = (unique_id & 0x0000ff00) >> 8; + mac[5] = (unique_id & 0x000000ff); +} + +/** + * Initializes the HW + * + * @return True on success, False in case of an error. + */ +bool GD32_EMAC::power_up() +{ + /* Initialize the hardware */ + if (true != low_level_init()) { + return false; + } + + /* Worker thread */ + rx_thread = create_new_thread("gd32_emac_thread", &GD32_EMAC::thread_function, this, _THREAD_STACKSIZE, _THREAD_PRIORITY, &rx_thread_cb); + + phy_task_handle = mbed::mbed_event_queue()->call_every(_PHY_TASK_PERIOD_MS, mbed::callback(this, &GD32_EMAC::phy_task)); + + /* Allow the PHY task to detect the initial link state and set up the proper flags */ + osDelay(10); + + eth_arch_enable_interrupts(); + + return true; +} + +/** + * Return maximum transmission unit + * + * @return MTU in bytes + */ +uint32_t GD32_EMAC::get_mtu_size() const +{ + return _ENET_MTU_SIZE; +} + +/** + * Gets memory buffer alignment preference + * + * Gets preferred memory buffer alignment of the Emac device. IP stack may or may not + * align link out memory buffer chains using the alignment. + * + * @return Memory alignment requirement in bytes + */ +uint32_t GD32_EMAC::get_align_preference() const +{ + return 0; +} + +/** + * Return interface name + * + * @param name Pointer to where the name should be written + * @param size Maximum number of character to copy + */ +void GD32_EMAC::get_ifname(char *name, uint8_t size) const +{ + memcpy(name, _ENET_IF_NAME, (size < sizeof(_ENET_IF_NAME)) ? size : sizeof(_ENET_IF_NAME)); +} + +/** + * Returns size of the underlying interface HW address size. + * + * @return HW address size in bytes + */ +uint8_t GD32_EMAC::get_hwaddr_size() const +{ + return _ENET_HW_ADDR_SIZE; +} + +/** + * Returns size of the underlying interface HW address size. + * + * @return HW address size in bytes + */ +bool GD32_EMAC::get_hwaddr(uint8_t *addr) const +{ + mbed_mac_address((char *)addr); + return true; +} + +/** + * Set HW address for interface + * + * Provided address has to be of correct size, see @a get_hwaddr_size + * + * Called to set the MAC address to actually use - if @a get_hwaddr is provided + * the stack would normally use that, but it could be overridden, eg for test + * purposes. + * + * @param addr Address to be set + */ +void GD32_EMAC::set_hwaddr(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +/** + * Sets a callback that needs to be called for packets received for that interface + * + * @param input_cb Function to be register as a callback + */ +void GD32_EMAC::set_link_input_cb(emac_link_input_cb_t input_cb) +{ + emac_link_input_cb = input_cb; +} + +/** + * Sets a callback that needs to be called on link status changes for given interface + * + * @param state_cb Function to be register as a callback + */ +void GD32_EMAC::set_link_state_cb(emac_link_state_change_cb_t state_cb) +{ + emac_link_state_cb = state_cb; +} + +/** Add device to a multicast group + * + * @param address A multicast group hardware address + */ +void GD32_EMAC::add_multicast_group(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +/** Remove device from a multicast group + * + * @param address A multicast group hardware address + */ +void GD32_EMAC::remove_multicast_group(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +/** Request reception of all multicast packets + * + * @param all True to receive all multicasts + * False to receive only multicasts addressed to specified groups + */ +void GD32_EMAC::set_all_multicast(bool all) +{ + /* No-op at this stage */ +} + +/** + * Deinitializes the HW + * + */ +void GD32_EMAC::power_down() +{ + /* No-op at this stage */ +} + +/** Sets memory manager that is used to handle memory buffers + * + * @param mem_mngr Pointer to memory manager + */ +void GD32_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr) +{ + memory_manager = &mem_mngr; +} + +GD32_EMAC &GD32_EMAC::get_instance() +{ + static GD32_EMAC emac; + return emac; +} + +/* Weak so a module can override */ +MBED_WEAK EMAC &EMAC::get_default_instance() +{ + return GD32_EMAC::get_instance(); +} diff --git a/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.h b/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.h new file mode 100644 index 00000000000..e88ab320730 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_GD_EMAC/gd32xx_emac.h @@ -0,0 +1,176 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018 Gigadevice Semiconductor Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef GD32_EMAC_H_ +#define GD32_EMAC_H_ + +#include "EMAC.h" +#include "rtos/Semaphore.h" +#include "rtos/Mutex.h" + +class GD32_EMAC : public EMAC { +public: + GD32_EMAC(); + + static GD32_EMAC &get_instance(); + + /** + * Return maximum transmission unit + * + * @return MTU in bytes + */ + virtual uint32_t get_mtu_size() const; + + /** + * Gets memory buffer alignment preference + * + * Gets preferred memory buffer alignment of the Emac device. IP stack may or may not + * align link out memory buffer chains using the alignment. + * + * @return Memory alignment requirement in bytes + */ + virtual uint32_t get_align_preference() const; + + /** + * Return interface name + * + * @param name Pointer to where the name should be written + * @param size Maximum number of character to copy + */ + virtual void get_ifname(char *name, uint8_t size) const; + + /** + * Returns size of the underlying interface HW address size. + * + * @return HW address size in bytes + */ + virtual uint8_t get_hwaddr_size() const; + + /** + * Return interface-supplied HW address + * + * Copies HW address to provided memory, @param addr has to be of correct size see @a get_hwaddr_size + * + * HW address need not be provided if this interface does not have its own HW + * address configuration; stack will choose address from central system + * configuration if the function returns false and does not write to addr. + * + * @param addr HW address for underlying interface + * @return true if HW address is available + */ + virtual bool get_hwaddr(uint8_t *addr) const; + + /** + * Set HW address for interface + * + * Provided address has to be of correct size, see @a get_hwaddr_size + * + * Called to set the MAC address to actually use - if @a get_hwaddr is provided + * the stack would normally use that, but it could be overridden, eg for test + * purposes. + * + * @param addr Address to be set + */ + virtual void set_hwaddr(const uint8_t *addr); + + /** + * Sends the packet over the link + * + * That can not be called from an interrupt context. + * + * @param buf Packet to be send + * @return True if the packet was send successfully, False otherwise + */ + virtual bool link_out(emac_mem_buf_t *buf); + + /** + * Initializes the HW + * + * @return True on success, False in case of an error. + */ + virtual bool power_up(); + + /** + * Deinitializes the HW + * + */ + virtual void power_down(); + + /** + * Sets a callback that needs to be called for packets received for that interface + * + * @param input_cb Function to be register as a callback + */ + virtual void set_link_input_cb(emac_link_input_cb_t input_cb); + + /** + * Sets a callback that needs to be called on link status changes for given interface + * + * @param state_cb Function to be register as a callback + */ + virtual void set_link_state_cb(emac_link_state_change_cb_t state_cb); + + /** Add device to a multicast group + * + * @param address A multicast group hardware address + */ + virtual void add_multicast_group(const uint8_t *address); + + /** Remove device from a multicast group + * + * @param address A multicast group hardware address + */ + virtual void remove_multicast_group(const uint8_t *address); + + /** Request reception of all multicast packets + * + * @param all True to receive all multicasts + * False to receive only multicasts addressed to specified groups + */ + virtual void set_all_multicast(bool all); + + /** Sets memory manager that is used to handle memory buffers + * + * @param mem_mngr Pointer to memory manager + */ + virtual void set_memory_manager(EMACMemoryManager &mem_mngr); + + /* Called from driver functions */ + osThreadId_t rx_thread; /**< Processing rx thread */ + +private: + bool low_level_init(); + void packet_rx(); + emac_mem_buf_t *low_level_input(void); + static void thread_function(void *pvParameters); + void phy_task(); + void eth_arch_enable_interrupts(); + void eth_arch_disable_interrupts(); + + mbed_rtos_storage_thread_t rx_thread_cb; + + rtos::Mutex TXLockMutex;/**< TX critical section mutex */ + emac_link_input_cb_t emac_link_input_cb; /**< Callback for incoming data */ + emac_link_state_change_cb_t emac_link_state_cb; /**< Link state change callback */ + EMACMemoryManager *memory_manager; /**< Memory manager */ + + uint32_t phy_status; + int phy_task_handle; /**< Handle for phy task event */ +}; + +#endif /* GD32_EMAC_H_ */ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.cpp b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.cpp new file mode 100644 index 00000000000..0df8bb6fee2 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.cpp @@ -0,0 +1,217 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "WiFiInterface.h" +#include "RdaWiFiInterface.h" +#include "rda5991h_wland.h" +#include "nsapi_types.h" +#include "wland_types.h" +#include "rda_sys_wrapper.h" + +nsapi_error_t RDAWiFiInterface::set_channel(uint8_t channel) +{ + int ret= 0; + init(); + + if (channel > 13) + return NSAPI_ERROR_PARAMETER; + + if (channel == 0) { + _channel = 0; + return NSAPI_ERROR_OK; + } + + ret = rda5981_set_channel(channel); + if (ret == 0) { + _channel = channel; + return NSAPI_ERROR_OK; + } else { + return NSAPI_ERROR_TIMEOUT; + } +} + +int8_t RDAWiFiInterface::get_rssi() +{ + return rda5981_get_rssi(); +} + +nsapi_error_t RDAWiFiInterface::init() +{ + if (!_interface) { + if (!_emac.power_up()) { + LWIP_DEBUGF(NETIF_DEBUG,"power up failed!\n"); + } + nsapi_error_t err = _stack.add_ethernet_interface(_emac, true, &_interface); + if (err != NSAPI_ERROR_OK) { + _interface = NULL; + return err; + } + _interface->attach(_connection_status_cb); + } + return NSAPI_ERROR_OK; +} + +nsapi_error_t RDAWiFiInterface::set_credentials(const char *ssid, const char *pass, + nsapi_security_t security) +{ + if (ssid == 0 || strlen(ssid) == 0) { + return NSAPI_ERROR_PARAMETER; + } + if (security != NSAPI_SECURITY_NONE && (pass == 0 || strlen(pass) == 0)) { + return NSAPI_ERROR_PARAMETER; + } + if (strlen(ssid) > 32 || strlen(pass) > 63) { + return NSAPI_ERROR_PARAMETER; + } + memcpy((void*)_ssid, (void*)ssid, strlen(ssid)); + _ssid[strlen(ssid)] = '\0'; + memcpy((void*)_pass, (void*)pass, strlen(pass)); + _pass[strlen(pass)] = '\0'; + _security = security; + return NSAPI_ERROR_OK; +} + +nsapi_error_t RDAWiFiInterface::connect(const char *ssid, const char *pass, + nsapi_security_t security, uint8_t channel) +{ + rda_msg msg; + bool find = false; + int i = 0; + rda5981_scan_result bss; + int ret = 0; + + if (ssid == NULL || ssid[0] == 0) { + return NSAPI_ERROR_PARAMETER; + } + + init(); + + if(rda5981_check_scan_result_name(ssid) != 0) { + for (i = 0; i< 5; i++) { + rda5981_scan(NULL, 0, 0); + if(rda5981_check_scan_result_name(ssid) == 0) { + find = true; + break; + } + } + } else { + find = true; + } + + if (find == false) { + LWIP_DEBUGF(NETIF_DEBUG,"can not find the ap.\r\n"); + return NSAPI_ERROR_CONNECTION_TIMEOUT; + } + bss.channel = 15; + rda5981_get_scan_result_name(&bss, ssid); + if ((channel !=0) && (bss.channel != channel)) { + LWIP_DEBUGF(NETIF_DEBUG, "invalid channel\r\n"); + return NSAPI_ERROR_CONNECTION_TIMEOUT; + } + + memcpy(gssid, ssid, strlen(ssid)); + if (pass[0] != 0) { + memcpy(gpass, pass, strlen(pass)); + } + memset(gbssid, 0, NSAPI_MAC_BYTES); + gssid[strlen(ssid)] = gpass[strlen(pass)] = '\0'; + + msg.type = WLAND_CONNECT; + rda_mail_put(wland_msgQ, (void*)&msg, osWaitForever); + ret = rda_sem_wait(wifi_auth_sem, 10000); + if (ret) { + return NSAPI_ERROR_CONNECTION_TIMEOUT; + } + + ret = _interface->bringup(_dhcp, + _ip_address[0] ? _ip_address : 0, + _netmask[0] ? _netmask : 0, + _gateway[0] ? _gateway : 0, + DEFAULT_STACK, + _blocking); + + return ret; +} + + +nsapi_error_t RDAWiFiInterface::connect() +{ + return connect(_ssid, _pass, _security, _channel); +} + +nsapi_error_t RDAWiFiInterface::disconnect() +{ + rda_msg msg; + + if(sta_state < 2) { + return NSAPI_ERROR_NO_CONNECTION; + } + msg.type = WLAND_DISCONNECT; + rda_mail_put(wland_msgQ, (void*)&msg, osWaitForever); + if (_interface) { + return _interface->bringdown(); + } + + return NSAPI_ERROR_NO_CONNECTION; +} + +nsapi_size_or_error_t RDAWiFiInterface::scan(WiFiAccessPoint *res, nsapi_size_t count) +{ + int bss_num = 0, i; + rda5981_scan_result *bss; + nsapi_wifi_ap_t ap; + + init(); + + rda5981_scan(NULL, 0, 0); + bss_num = rda5981_get_scan_num(); + if (count != 0) { + bss_num = (bss_num < count) ? bss_num : count; + } + if (res) { + bss = (rda5981_scan_result *)malloc(bss_num * sizeof(rda5981_scan_result)); + rda5981_get_scan_result(bss, bss_num); + for (i=0; i +#ifdef __cplusplus +extern "C" { +#endif + +extern const unsigned int RDA_FW_INFO_ADDR; +extern const unsigned int RDA_UPGRADE_ADDR; + +/* + * function: start to wirte a partition. this func will erase given flash region + * @addr: partition start address, must be 4k alignment + * @img_len: length of image getted from OTA server, must be 4k alignment + * return: 0:success, else:fail + */ +int rda5981_write_partition_start(unsigned int addr, unsigned int img_len); + +/* + * function: write image to flash, without erase. + * the write region must be inside of the area given by func rda5981_write_partition_start + * the write region must be in order, otherwise the end function will return crc error. + * the maximum length could be write once time is 0x1000 + * @offset: offset from image inital position, must be 1k alignment + * @buf: data to be written + * @len: buffer len, max #0x1000, must be 1k alignment + * return: 0:success, else:fail + */ +int rda5981_write_partition(unsigned int offset, const unsigned char *buf, unsigned int len); + +/* + * function: end of writing partition + * return: 0:crc32 check success, else:fail + */ +int rda5981_write_partition_end(void); + +#ifdef __cplusplus +} +#endif + +#endif /*_RDA5981_OTA_H_*/ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5981_sniffer.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5981_sniffer.h new file mode 100644 index 00000000000..0f0f4658e35 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5981_sniffer.h @@ -0,0 +1,99 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _RDA5981_SNIFFER_H_ +#define _RDA5981_SNIFFER_H_ + +#ifdef __cplusplus +extern "C" { +#endif +#include "wland_types.h" + +/* Enable filtering ACK frames (no support)*/ +//#define RDA_RX_FILTER_DROP_ACK BIT0 + +/* Enable filtering CTS frames (no support)*/ +//#define RDA_RX_FILTER_DROP_CTS BIT1 + +/* Enable filtering RTS frames (no support)*/ +//#define RDA_RX_FILTER_DROP_RTS BIT2 + +/* Enable filtering beacon frames */ +#define RDA_RX_FILTER_DROP_BEACON BIT3 + +/* Enable filtering ATIM frames (no support)*/ +//#define RDA_RX_FILTER_DROP_ATIM BIT4 + +/* Enable filtering CF_END frames (no support)*/ +//#define RDA_RX_FILTER_DROP_CF_END BIT5 + +/* Enable filtering QCF_POLL frames (no support)*/ +//#define RDA_RX_FILTER_DROP_QCF_POLL BIT6 + +/* Filter Management frames which are not directed to current STA */ +#define RDA_RX_FILTER_DROP_ND_MGMT BIT7 + +/* Filter BC/MC MGMT frames belonging to other BSS */ +#define RDA_RX_FILTER_DROP_BC_MC_MGMT_OTHER_BSS BIT8 + +/* Enable filtering of duplicate frames */ +#define RDA_RX_FILTER_DROP_DUPLICATE BIT9 + +/* Enable filtering of frames whose FCS has failed */ +#define RDA_RX_FILTER_DROP_FCS_FAILED BIT10 + +/* Enable filtering of De-authentication frame */ +#define RDA_RX_FILTER_DROP_DEAUTH BIT11 + +/* Filter BA frames which are not received as SIFS response (no support)*/ +//#define RDA_RX_FILTER_DROP_NSIFS_RESP_BA BIT12 + +/* Filter BA frames which are received as SIFS response (no support)*/ +//#define RDA_RX_FILTER_DROP_SIFS_RESP_BA BIT13 + +/* Filter frames which are received in secondary channel (20 MHz PPDU from Secondary channel) */ +#define RDA_RX_FILTER_DROP_SEC_CHANNEL BIT14 + +/* Filter BC/MC DATA frames belonging to other BSS */ +#define RDA_RX_FILTER_DROP_BC_MC_DATA_OTHER_BSS BIT15 + +/* Filter DATA frames not directed to this station */ +#define RDA_RX_FILTER_DROP_ND_DATA BIT16 + +/* Filter Control frames which are not directed to current STA (no support)*/ +//#define RDA_RX_FILTER_DROP_ND_CONTROL BIT17 + +/* Filter Beacon frames (in IBSS mode) which are not used for adoption because the timestamp field is lower than TSF timer */ +#define RDA_RX_FILTER_DROP_IBSS_BEACON BIT18 + +typedef int (*sniffer_handler_t)(unsigned short data_len, void *data); + +int rda5981_enable_sniffer(sniffer_handler_t handler); +int rda5981_disable_sniffer(void); +//don't use this in sniffer callback handler +int rda5981_disable_sniffer_nocallback(void); +///TODO: time is no use anymore +int rda5981_start_sniffer(unsigned char channel, unsigned char to_ds, + unsigned char from_ds, unsigned char mgm_frame, unsigned short time); +int rda5981_stop_sniffer(void); +int wland_sniffer_set_channel(unsigned char channel); +int rda5981_set_filter(unsigned char to_ds, unsigned char from_ds, unsigned int mgm_filter); +int rda5981_sniffer_enable_fcs(void);//for hiflying +#ifdef __cplusplus +} +#endif + +#endif /*_RDA5981_SNIFFER_H_*/ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5991h_wland.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5991h_wland.h new file mode 100644 index 00000000000..25ec00acbce --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda5991h_wland.h @@ -0,0 +1,658 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _RDA5991H_WLAND_H_ +#define _RDA5991H_WLAND_H_ + +#include "sys_arch.h" +#include "wland_types.h" + +/* Mbed interface mac address + * if MBED_MAC_ADD_x are zero, interface uid sets mac address, + * otherwise MAC_ADD_x are used. + */ + +extern unsigned char user_mac[6];//not save in flash, need fill before wifi init every time +extern unsigned char gssid[32+1]; +extern unsigned char gpass[64+1]; +extern unsigned char gchannel; +extern unsigned char gbssid[6]; + +extern unsigned char gssid_ap[32+1]; +extern unsigned char gpass_ap[64+1]; +extern unsigned char gchannel_ap; +extern void *wland_msgQ; +extern void *wifi_auth_sem; + +extern u8 sta_state; + +typedef enum { + WLAND_CONNECT, + WLAND_RECONNECT, + WLAND_DISCONNECT, + WLAND_DISCONNECT_ERROR, + WLAND_STARTAP, + WLAND_STOPAP, + WLAND_ADD_AP_GTK, + WLAND_AP_EAPOL_3_OF_4, + WLAND_ADD_AP_PTK, + WLAND_STAJOINED, + WLAND_STAEXITED, + WLAND_STADEAUTH, + WLAND_MAC_CONNECTED, + WLAND_MAC_AP_CONNECTED, + WLAND_ADD_GTK, + WLAND_ADD_PTK, + WLAND_CON_FINISH, + WLAND_AUTO_RATE, + WLAND_ARP_OFFLOAD, + WLAND_SM_START, + WLAND_SM_STOP, + WLAND_WPS_CONNECT, + WLAND_WPS_START, + WLAND_WPS_DISCONNECT, +}WLAND_MSG; + +typedef enum { + MAIN_CONNECT, + MAIN_RECONNECT, + MAIN_DISCONNECT, + MAIN_STOP_AP, +}MAIN_MSG; + +typedef struct { + unsigned int type; + unsigned int arg1; + unsigned int arg2; + unsigned int arg3; +}rda_msg; + + +enum { + D_NONE_LEVEL = 0, + D_ERROR_LEVEL = 1, + D_INFO_LEVEL = 2, + D_DEBUG_LEVEL = 3, +}; + +#define WLAND_DBG_DUMP 0 +#define WPA_DBG_DUMP 0 +#define HUT_DBG_DUMP 0 +#define WLAND_DBG_LEVEL D_NONE_LEVEL +#define WPA_DBG_LEBEL D_NONE_LEVEL +#define WLANDLIB_DBG_LEVEL D_NONE_LEVEL + +#define ETH_ALEN 6 + +//encrypt type +#define ENCRYPT_NONE (0) +#define ENCRYPT_WPA_TKIP BIT0 +#define ENCRYPT_WPA_CCMP BIT1 +#define ENCRYPT_WPA2_TKIP BIT2 +#define ENCRYPT_WPA2_CCMP BIT3 +#define ENCRYPT_WEP BIT4 + +/* r91h driver data structure */ +typedef struct { + struct netif *netif_sta; + struct netif *netif_ap; + sys_thread_t wland_thread; + sys_thread_t maclib_thread; + sys_mbox_t maclib_mbox; + sys_mbox_t wland_mbox; +} rda_enetdata_t; + +__STATIC_INLINE int mac_is_valid(char* mac) +{ + return (mac[0] | mac[1] | mac[2] | mac[3] | mac[4] | mac[5]); +} + + +#ifdef __cplusplus +extern "C" { +#endif + +extern void wland_txip_data(void *data, unsigned int len, int mode); +extern void *wland_get_databuf(void); +extern void wland_sta_init(void); +extern void wland_reg_func(void); +extern void r91h_phy_task(void *data); +extern void wland_task(void *arg); +extern void rda_get_macaddr(u8_t *macaddr, int mode); +extern void rda5981_send_rawdata(char* data, unsigned int len); +extern int rda5981_send_nulldata(int power_save); +extern void rda5981_set_country_code(unsigned char country_code);// 0~china(1-14) 1~NA(1-11) 2~EU(1-13) +extern int rda5981_set_retrans_policy(unsigned char count); +extern int rda5981_set_channel(unsigned char channel); +/* default is 0, receive multicast packet, disable please set 1*/ +extern int rda5981_filter_multicast(unsigned char enable); +/* default is 0, 0 ~ no hidden, 1 ~ hidden zero len, 2 ~ hidden zero contents */ +extern void rda5981_set_AP_hidden_type(unsigned char mode); +extern void rda5981_set_AP_link_num(unsigned char num); +extern char* rda5981_get_ver(void); +extern int rda5981_enter_CE_MODE(unsigned char enable); +/* + * mode 0 - not 11n 1 - 11n + * + * -----------------11n(mode 1)(Mbps)----------------- + * rate HT20 HT40 + * GI(800ns) GI(400ns) GI(800ns) GI(400ns) + * 0 6.5 7.2 13.5 15 + * 1 13 14.2 27 30 + * 2 19.5 21.7 40.5 45 + * 3 26 28.9 54 60 + * 4 39 43.3 81 90 + * 5 52 57.8 108 120 + * 6 58.5 65 121.5 135 + * 7 65 72 135 150 + * + * --------------not 11n(mode 0)(Mbps)----------------- + * rate data rate rate data rate + * 0 autorate 9 9 + * 1 1 12 12 + * 2 2 18 18 + * 5 5.5 24 24 + * 11 11 36 36 + * 6 6 48 48 + * + */ +extern int rda5981_set_data_rate(unsigned char mode, unsigned char rate); +extern void rda5981_set_mode(unsigned char bgn_enable); +extern void rda5981_set_auth_timeout(unsigned char timeout_enable); +typedef struct { + char BSSID[ETH_ALEN]; + char SSID[32+1]; + signed char RSSI; + unsigned char SSID_len; + unsigned char channel; + unsigned char secure_type;//refer #define ENCRYPT_XXX + unsigned char wmm; + unsigned char *ie;//user program couldn't free(ie); + unsigned short capability; + unsigned int ie_length; +} rda5981_scan_result; + +typedef struct { + unsigned char mac[ETH_ALEN]; + unsigned int ip; +} rda5981_apsta_info; + +//scan one or all channel(if channel is 0) once +int rda5981_scan(const char *SSID, const unsigned char SSID_len, const unsigned char channel); +//0 passive mode, 1 active mode, scan time(unit is second) +int rda5981_scan_v2(const char *SSID, const unsigned char SSID_len, const unsigned char channel, const unsigned char mode, \ + const unsigned char scan_time); +int rda5981_get_scan_num(); +int rda5981_get_scan_result(rda5981_scan_result *buf, const unsigned char len); +int rda5981_get_scan_result_index(rda5981_scan_result *buf, const unsigned char index); +int rda5981_get_scan_result_name(rda5981_scan_result *buf, const char *name); +int rda5981_get_scan_result_bssid(rda5981_scan_result *buf, const unsigned char *bssid); +int rda5981_check_scan_result_name(const char *name); +int rda5981_check_scan_result(const char *ssid, const char *bssid, const unsigned channel); +int rda5981_check_scan_result_name_bssid(const unsigned char *name, const unsigned char *bssid); +int rda5981_del_scan_all_result(void); +void rda5981_set_expired_time(unsigned int expired_time); +int rda5981_get_joined_AP(rda5981_scan_result *bss); +s8 rda5981_get_rssi(); +void rda5981_set_main_queue(void* queue); + +void rda5981_set_sta_listen_interval(unsigned char interval); +void rda5981_set_sta_link_loss_time(unsigned char time); +unsigned int rda5981_get_ap_join_info(rda5981_apsta_info *buf, const unsigned char len); +void rda5981_set_AP_white_list(unsigned char flag, unsigned char *mac); +int wland_set_joined_sta_ip(char *mac, unsigned int ip); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_mac_addr(unsigned char *mac_addr); +int rda5981_flash_write_mac_addr(unsigned char *mac_addr); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_uart(void); +int rda5981_flash_read_uart(unsigned int *uart); +int rda5981_flash_write_uart(unsigned int *uart); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_ip_addr(unsigned char *ip_addr, unsigned char *server_addr); +int rda5981_flash_write_ip_addr(unsigned char *ip_add, unsigned char *server_addr); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_dhcp_data(void); +int rda5981_flash_read_dhcp_data(unsigned int *enable, unsigned int *ip, unsigned int *msk, unsigned int *gw); +int rda5981_flash_write_dhcp_data(unsigned int enable, unsigned int ip, unsigned int msk, unsigned int gw); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_ap_data(char *ssid, char *passwd, unsigned char *channel); +int rda5981_flash_write_ap_data(const char *ssid, const char *passwd, unsigned char channel); +int rda5981_flash_erase_ap_data(void); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_ap_net_data(unsigned int *ip, unsigned int *msk, unsigned int *gw, + unsigned int *dhcps, unsigned int *dhcpe); +int rda5981_flash_write_ap_net_data(unsigned int ip, unsigned int msk, unsigned int gw, + unsigned int dhcps, unsigned int dhcpe); +int rda5981_flash_erase_ap_net_data(void); + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_sta_data(char *ssid, char *passwd); +int rda5981_flash_write_sta_data(const char *ssid, const char *passwd); +int rda5981_flash_erase_sta_data(void); + + +/* + * read 3rd parter data length from flash + * return user data length + */ +int rda5981_flash_read_3rdparter_data_length(void); + +/* + * read 3rd parter data from flash + * @buf, buf to store user data + * @buf_len, length of buf + * return user data length + */ +int rda5981_flash_read_3rdparter_data(unsigned char *buf, unsigned int buf_len); + +/* + * write 3rd parter data from flash + * @buf, data to write + * @buf_len, length of buf. + * return 0:ok, else:fail + */ +int rda5981_flash_write_3rdparter_data(const unsigned char *buf, unsigned int buf_len); + +/* + * erase 3rd parter data from flash + * return 0:ok, else:fail + */ +int rda5981_flash_erase_3rdparter_data(void); + +/* + * set flash size + * @size, 1MB:0x100000, 2MB:0x200000, 4MB:0x400000. default size: 1MB + * return 0:ok, else:fail + */ +int rda5981_set_flash_size(const unsigned int size); + +/* + * set userdata location on flash + * @sys_data_addr, data to save system parameter, user can not operate this area directly. + * size:4KB. default location:0x180fb000 + * @user_data_addr, data to save user data. user can save own data in this area + * by @rda5981_flash_read_3rdparter_data + * and @rda5981_flash_write_3rdparter_data + * default location:0x180fc000 + * @user_data_len, user data length, default:4KB + * return 0:ok, else:fail + */ +int rda5981_set_user_data_addr(const unsigned int sys_data_addr, + const unsigned int user_data_addr, const unsigned int user_data_len); + +/* + * function: erase flash + * @addr: mast be 4k alignment + * @len: must be 4k alignment. (package 64KB erase and 4KB erase for different condition automatically) + * return: 0:success, else:fail + */ +int rda5981_erase_flash(unsigned int addr, unsigned int len); + +/* + * function: write flash + * @addr: mast be 256 alignment + * @buf: data to be written, best be 4 alignment + * @len: buffer len, mast be 4 alignment + * return: 0:success, else:fail + */ +int rda5981_write_flash(unsigned int addr, char *buf, unsigned int len); + +/* + * function: read flash to @buf + * @addr: best be 4 alignment + * @buf: best be 4 alignment + * @len: buffer len + * return: 0:success, else:fail + */ +int rda5981_read_flash(unsigned int addr, char *buf, unsigned int len); + +/* + * function: read user data + * @data: data to read + * @len: length of data in byte + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_read_user_data(unsigned char *data, unsigned short len, unsigned int flag); + +/* + * function: write user data + * @data: data to write + * @len: length of data in byte + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_write_user_data(unsigned char *data, unsigned short len, unsigned int flag); + +/* + * function: erase user data + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_erase_user_data(unsigned int flag); + +/* + * function: update tx power from efuse data, for reg 11F and 120 + * return: 0:success, else:fail + */ +int update_tx_power_from_efuse(void); + +/* + * function: update xtal calibration from efuse data, for reg DA + * return: 0:success, else:fail + */ +int update_xtal_cal_from_efuse(void); + +/* + * function: update mac addr from flash data + * return: 0:success, else:fail + */ +int update_mac_addr_from_efuse(void); + +/* + * function: update tx power from flash data, Deprecated version + * return: 0:success, else:fail + */ +int update_tx_power_from_flash(void); + +/* + * function: update tx power from flash data, for reg 8A + * return: 0:success, else:fail + */ +int update_tx_power_rf_from_flash(void); + +/* + * function: update tx power from flash data, for reg 11F and 120 + * return: 0:success, else:fail + */ +int update_tx_power_phy_from_flash(void); + +/* + * function: update xtal calibration from flash data + * return: 0:success, else:fail + */ +int update_xtal_cal_from_flash(void); + +/* + * function: update mac addr from flash data + * return: 0:success, else:fail + */ +int update_mac_addr_from_flash(void); + +/* + * function: write rf reg + * @reg: rf reg data + * @value: rf reg value + * return: 0:success, else:fail + * eg: 0x00DA:xtal calibration + */ +int wland_rf_write(unsigned short reg, unsigned short value); + +/* + * function: write rf reg + * @reg: rf reg data + * @value: rf reg value + * @len : value length + * return: 0:success, else:fail + * eg: 0x008A:tx power rf + */ +int wland_rf_write_all_channels(unsigned short reg, unsigned short *value, unsigned short len); + +/* + * function: read rf reg + * @reg: rf reg data + * @value: rf reg value + * return: 0:success, else:fail + */ +int wland_rf_read(unsigned short reg, unsigned short *value); + +/* + * function: read rf reg + * @reg: rf reg data + * @value: rf reg value + * return: 0:success, else:fail + * eg: 0x008A:tx power rf + */ +int wland_rf_read_all_channels(unsigned short reg, unsigned short *value); + +/* + * function: write phy reg + * @reg: phy reg data + * @value: phy reg value + * return: 0:success, else:fail + */ +int wland_phy_write(unsigned int reg, unsigned int value); + +/* + * function: write phy reg + * @reg: phy reg data + * @value: phy reg value + * @len : value length + * return: 0:success, else:fail + */ +int wland_phy_write_all_channels(unsigned int reg, unsigned int *value, unsigned short len); + +/* + * function: read phy reg + * @reg: phy reg data + * @value: phy reg value + * return: 0:success, else:fail + */ +int wland_phy_read(unsigned int reg, unsigned int *value); + +/* + * function: read phy reg + * @reg: phy reg data + * @value: phy reg value + * return: 0:success, else:fail + */ +int wland_phy_read_all_channels(unsigned int reg, unsigned int *value); + +/* efuse API start */ +/* Efuse CAN ONLY WRITE ONCE! DO NOT CALL THESE API IF YOU DO KNOW WHAT THEY MEANS!!! */ + +/* + * function: read all efuse + * @value: buffer to store efuse data, 28 bytes + * return: 0:success, else:fail + */ +int wland_read_efuse(unsigned char *value); + +/* + * function: read tx power from efuse + * @tx_power: 2 bytes, first is mode g/n(range 0x25~0x54), second is mode b(range 0x15~0x54). + * return: 0:success, else:fail + */ +int wland_read_tx_power_from_efuse(unsigned char *tx_power); + +/* + * function: read tx power from efuse + * @tx_power: 2 bytes, first is mode g/n(range 0x25~0x54), second is mode b(range 0x15~0x54) + * @len: must be 2 + * return: 0:success, else:fail + */ +int wland_write_tx_power_to_efuse(unsigned char *tx_power, unsigned char len); + +/* + * function: read xtal cal from efuse + * @xtal_cal: 1 byte, maximum 0x7F + * return: 0:success, else:fail + */ +int wland_read_xtal_cal_from_efuse(unsigned char *cal_val); + +/* + * function: write xtal cal to efuse + * @xtal_cal: 1 byte, maximum 0x7F + * @len : must be 1 + * return: 0:success, else:fail + */ +int wland_write_xtal_cal_to_efuse(unsigned char *xtal_cal, unsigned char len); + +/* + * function: write mac to efuse + * @xtal_cal: 6 bytes + * return: 0:success, else:fail + */ +int wland_read_mac_addr_from_efuse(unsigned char *mac_addr); + +/* + * function: write mac to efuse + * @xtal_cal: 6 bytes + * @len : must be 6 + * return: 0:success, else:fail + */ +int wland_write_mac_addr_to_efuse(unsigned char*mac_addr, unsigned char len); +/* efuse API end */ + +/* + * function: start rf test + * @argc: number of argv + * @argv: args for test, 6 elements for tx test, 4 elements for rx test + * @is_tx: 1 for tx test, 0 for rx test + * return: 0:success, else:fail + */ +int wland_start_rf_test(unsigned int argc, unsigned int *argv, unsigned int is_tx); + +/* + * function: stop rx test + * return: 0:success, else:fail + */ +int wland_stop_rx_test(void); + +/* + * function: get rf test result + * @result buffer to store rx result + * return: 0:success, else:fail + */ +int wland_get_rx_result(char *result); + +/* + * function: restart rx test, use last rx test args + * return: 0:success, else:fail + */ +int wland_restart_rx_test(void); + +/* + * function: stop tx test + * return: 0:success, else:fail + */ +int wland_stop_tx_test(void); + +/* + * function: restart tx test, use last tx test args + * return: 0:success, else:fail + */ +int wland_restart_tx_test(void); + +#define RDA5981_FIRMWARE_INFO_ADDR 0x18003000 +/* + * function: reboot to assigned addr (onece). + * reboot to rf test mode, not for OTA + * @firmware_info_addr: firmware info addr, depend on your flash layout + * @reboot_addr: reboot addr, 0x18001000-0x1840000 + * return: 0:success, else:fail + */ +int rda5981_reboot_to_addr(unsigned int firmware_info_addr, unsigned int reboot_addr); + +/* + * function: read reg and corresponding value related to test mode stored in flash + * @reg: reg to read + * @value: buffer to store value + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_read_user_data_regs(unsigned char *reg, unsigned char *value, unsigned int flag); + +/* + * function: write reg and corresponding value related to test mode stored in flash + * @reg: reg to write + * @value: buffer that stores value + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_write_user_data_regs(unsigned char *reg, unsigned char *value, unsigned int flag); + +/* + * function: erase reg and corresponding value related to test mode stored in flash + * @reg: reg to erase + * @flag: user data flag + * return: 0:success, else:fail + */ +int rda5981_erase_user_data_regs(unsigned char *reg, unsigned int flag); + +/* + * function: get flash Manufacturer ID + * @mid: + * return: 0:success, else:fail + */ +int rda5981_flash_get_mid(unsigned char *mid); + +/* + * function: get flash Device ID + * @did: + * return: 0:success, else:fail + */ +int rda5981_flash_get_did(unsigned char *did); + +/* + * function: get flash ID + * @mid: + * return: 0:success, else:fail + */ +int rda5981_flash_get_jdid(unsigned short *jdid); + +/* + * function: read mac reg + * @reg: mac reg data + * @value: mac reg value + * return: 0:success, else:fail + */ +int wland_mac_reg_read(unsigned short reg, unsigned int *value); + +/* + * function: write mac reg + * @reg: mac reg data + * @value: mac reg value + * return: 0:success, else:fail + */ +int wland_mac_reg_write(unsigned short reg, unsigned int value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda_sys_wrapper.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda_sys_wrapper.h new file mode 100644 index 00000000000..25b80b51996 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/rda_sys_wrapper.h @@ -0,0 +1,216 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if 1 +#ifndef _RDA_SYS_WRAPPER_H_ +#define _RDA_SYS_WRAPPER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Alarm */ +/** + * @brief : get current time in units of micro second + * @param[in] : + * @param[out]: + * @return : return time value with uint32 type + */ +extern unsigned long rda_get_cur_time_ms(void); + +/** + * @brief : create an alarm with given function, return timer handle + * @param[in] : func(callback)/data(pass to func)/mode(once or periodic) + * @param[out]: + * @return : return timer handle, a pointer to the timer structure, non-zero is valid + */ +extern void * rda_alarm_create_v2(void *func, unsigned int data, unsigned int mode); +extern void * rda_alarm_create(void *func, unsigned int data); + +/** + * @brief : delete an alarm with given handle, then reset the handle + * @param[in] : *handle(pointer to the timer structure) + * @param[out]: **handle(address of the handle variable) + * @return : + */ +extern int rda_alarm_delete(void **handle); + +/** + * @brief : start an alarm, raise a function call after given timeout delay + * @param[in] : handle(pointer to the timer structure)/timeout(micro second) + * @param[out]: + * @return : + */ +extern int rda_alarm_start(void *handle, unsigned int timeout_ms); + +/** + * @brief : stop an alarm, will not raise a function call any more + * @param[in] : handle(pointer to the timer structure) + * @param[out]: + * @return : + */ +extern int rda_alarm_stop(void *handle); + + +/* Semaphore */ +/** + * @brief : create a semaphore + * @param[in] : name and initial valve of semaphore + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern void* rda_sem_create(unsigned int count); + +/** + * @brief : wait a semaphore + * @param[in] : name of semaphore + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_sem_wait(void *sem, unsigned int millisec); + +/** + * @brief : release a semaphore + * @param[in] : name of semaphore + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_sem_release(void *sem); + +/** + * @brief : delete a semaphore + * @param[in] : name of semaphore + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_sem_delete(void *sem); + + +/* Queue */ +/** + * @brief : create a message queue + * @param[in] : size of message queue + * @param[out]: + * @return : return message queue id or NULL if error + */ +extern void* rda_msgQ_create(unsigned int queuesz); + +/** + * @brief : put a message to queue + * @param[in] : message queue id, message value and wait time + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_msg_put(void *msgQId, unsigned int msg, unsigned int millisec); + +/** + * @brief : get a message from queue + * @param[in] : message queue id, message value and wait time + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_msg_get(void *msgQId, unsigned int *value, unsigned int millisec); + +/* Mail */ +/** + * @brief : create a mail + * @param[in] : mail count/size + * @param[out]: + * @return : return mail handle + */ +void* rda_mail_create(unsigned int msgcnt, unsigned int msgsize); + +/** + * @brief : get a msg from mail + * @param[in] : handler name of mail/mail/wait time + * @param[out]: + * @return : return ERR or NO_ERR + */ +int rda_mail_get(void *rdahandle, void *evt, unsigned int wait); + +/** + * @brief : put a msg to mail + * @param[in] : handler of mail/mail/wait time + * @param[out]: + * @return : return ERR or NO_ERR + */ + +int rda_mail_put(void *rdahandle, void *evt, unsigned int wait); + +/* Mutex */ +/** + * @brief : create a mutex + * @param[in] : + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern void* rda_mutex_create(void); + +/** + * @brief : wait a mutex + * @param[in] : id of mutex and wait time + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_mutex_wait(void *rdamutex, unsigned int millisec); + +/** + * @brief : release a mutex + * @param[in] : id of mutex + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_mutex_realease(void *rdamutex); + +/** + * @brief : delete a mutex + * @param[in] : id of mutex + * @param[out]: + * @return : return ERR or NO_ERR + */ +extern int rda_mutex_delete(void *rdamutex); + +/* Thread */ +/** + * @brief : creat a thread + * @param[in] : thread name/thread function/thread fuction argument/stacksize/thread priority + * @param[out]: + * @return : return thread id + */ +void* rda_thread_new(const char *pcName, void (*thread)(void *arg), void *arg, int stacksize, int priority); + +/** + * @brief : delete a thread + * @param[in] : thread id + * @param[out]: + * @return : return ERR or NO_ERR + */ +int rda_thread_delete(void* id); + +/** + * @brief : get current thread id + * @param[in] : + * @param[out]: + * @return : return thread id + */ +void* rda_thread_get_id(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _RDA_SYS_WRAPPER_H_ */ +#endif diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_dbg.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_dbg.h new file mode 100644 index 00000000000..ce418c023be --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_dbg.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _WLAND_DBG_H_ +#define _WLAND_DBG_H_ +#include +#include "rda5991h_wland.h" +#include "wland_types.h" + +extern int wland_dbg_dump; +extern int wland_dbg_level; + +#define RDA_WLAND_DBG + +#ifdef RDA_WLAND_DBG +#define WLAND_DBG(level, fmt, ...) do {\ + int dbg_level = D_##level##_LEVEL;\ + if((dbg_level <= wland_dbg_level)){\ + printf("%s,"fmt, __func__, ##__VA_ARGS__);\ + } \ + } while (0) + +//if frmae_len is zero, get len from frame header +static inline void wland_dump_frame(const char* msg, u8 *data, u32 frame_len) +{ + + u32 len,i; + + if(wland_dbg_dump == 1) { + if(frame_len != 0) { + len = frame_len; + } else { + len = data[0] | ((data[1]&0x0f) << 8); + } + printf("%s : ",msg); + for(i=0; i= 4) { + wait_busy_down_4(); + } else { + wait_busy_down_2(); + } +} + +static void spi_write_reset(void) +{ + if (rda_ccfg_hwver() >= 4) { + spi_write_reset_4(); + } else { + spi_write_reset_2(); + } +} + +static void spi_wip_reset(void) +{ + if (rda_ccfg_hwver() >= 4) { + spi_wip_reset_4(); + } else { + spi_wip_reset_2(); + } +} + +static inline void spi_flash_enable_cache(void) +{ + unsigned int func = spi_flash_cfg_cache_addr; + if (rda_ccfg_hwver() >= 4) { + func = spi_flash_cfg_cache_addr_4; + } + ((void(*)(void))func)(); +} + +static inline void spi_flash_disable_cache(void) +{ + unsigned int func = spi_flash_disable_cache_addr; + if (rda_ccfg_hwver() >= 4) { + func = spi_flash_disable_cache_addr_4; + } + ((void(*)(void))func)(); +} + +static inline void spi_flash_flush_cache(void) +{ + unsigned int func = spi_flash_flush_cache_addr; + if (rda_ccfg_hwver() >= 4) { + func = spi_flash_flush_cache_addr_4; + } + ((void(*)(void))func)(); +} + +static inline void rda5981_spi_flash_erase_4KB_sector(u32 addr) +{ + unsigned int func = spi_flash_erase_4KB_sector_addr; + if (rda_ccfg_hwver() >= 4) { + func = spi_flash_erase_4KB_sector_addr_4; + } + ((void(*)(u32))func)(addr); +} + +static inline void RDA5991H_ERASE_FLASH(void *addr, u32 len) +{ + unsigned int func = FLASH_ERASE_FUN_ADDR; + if (rda_ccfg_hwver() >= 4) { + func = FLASH_ERASE_FUN_ADDR_4; + } + ((void(*)(void *, u32))func)(addr, len); +} + +static inline void RDA5991H_WRITE_FLASH(u32 addr, u8 *data, u32 len) +{ + unsigned int func = FLASH_WRITE_FUN_ADDR; + if (rda_ccfg_hwver() >= 4) { + func = FLASH_WRITE_FUN_ADDR_4; + } + ((void(*)(u32, u8 *, u32))func)(addr, data, len); +} + +static inline void RDA5991H_READ_FLASH(u32 addr, u8 *buf, u32 len) +{ + unsigned int func = FLASH_READ_FUN_ADDR; + if (rda_ccfg_hwver() >= 4) { + func = FLASH_READ_FUN_ADDR_4; + } + ((void(*)(u32, u8 *, u32))func)(addr, buf, len); +} + +static inline void SPI_FLASH_READ_DATA_FOR_MBED(void *addr, void *buf, u32 len) +{ + unsigned int func = SPI_FLASH_READ_DATA_FOR_MBED_ADDR; + if (rda_ccfg_hwver() >= 4) { + func = SPI_FLASH_READ_DATA_FOR_MBED_ADDR_4; + } + ((void(*)(void *, void *, u32))func)(buf, addr, len); +} + +#endif /*_WLAND_FLASH_H_*/ + diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_flash_wp.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_flash_wp.h new file mode 100644 index 00000000000..40ee40ee595 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_flash_wp.h @@ -0,0 +1,32 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _WLAND_FLASH_WP_H_ +#define _WLAND_FLASH_WP_H_ + +#ifdef __cplusplus +extern "C" { +#endif +extern void flash_wrtie_protect_all(); +extern void flash_wrtie_protect_none(); +extern void flash_wrtie_protect(unsigned int offset); +extern void rda5981_flash_init(); +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_ota.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_ota.h new file mode 100644 index 00000000000..57b90528717 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_ota.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _WLAND_OTA_H_ +#define _WLAND_OTA_H_ +#include "wland_types.h" +#include "rda_ccfg_api.h" + +extern u32 flash_size; + +#define CRC32_TABLE_ADDR 0xbb5c +#define CRC32_ADDR 0x8dff//u32 crc32(const u8 *p, size_t len) + +#define CRC32_TABLE_ADDR_4 0xbbd8 +#define CRC32_ADDR_4 0x8e33//u32 crc32(const u8 *p, size_t len) + +static inline unsigned int bootrom_crc32(unsigned char *p, unsigned int len) +{ + unsigned int func = CRC32_ADDR; + if (rda_ccfg_hwver() >= 4) { + func = CRC32_ADDR_4; + } + return ((unsigned int(*)(unsigned char *, unsigned int))func)(p, len); +} + +#endif /*_WLAND_OTA_H_*/ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_rf.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_rf.h new file mode 100644 index 00000000000..6a9ebebc985 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_rf.h @@ -0,0 +1,41 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _WLAND_RF_H_ +#define _WLAND_RF_H_ + +#include "wland_types.h" + +#define WLAND_TXP_NUM 2 +#define WLAND_CHANNEL_NUM 14 +#define WLAND_TX_POWER_PHY_GN_REG 0x11F +#define WLAND_TX_POWER_PHY_B_REG 0x120 +#define WLAND_TX_POWER_RF_REG 0x8A +#define WLAND_XTAL_CAL_REG 0xDA + +#define MAKE_WORD16(lsb, msb) (((u16)(msb) << 8) & 0xFF00) | (lsb) +#define MAKE_WORD32(lsw, msw) (((u32)(msw) << 16) & 0xFFFF0000) | (lsw) + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_types.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_types.h new file mode 100644 index 00000000000..3cb0e7e9e60 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/inc/wland_types.h @@ -0,0 +1,86 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*****************************************************************************/ +/* */ +/* File Name : wland_types.h */ +/* */ +/* Description : This file contains all the data type definitions for */ +/* MAC implementation. */ +/* */ +/*****************************************************************************/ + +#ifndef WLAND_TYPES_H +#define WLAND_TYPES_H + +/*****************************************************************************/ +/* Constants Definitions */ +/*****************************************************************************/ + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; +typedef signed char s8; +typedef signed short s16; +typedef signed int s32; +typedef signed long long s64; + +typedef unsigned int size_t; + +/** Indicates Bit Value of BITx */ +#ifndef BIT +#define BIT(x) (1ul << (x)) + +/*****************************************************************************/ +/* Constant Definitions */ +/*****************************************************************************/ + +#define BIT0 (1ul << 0) +#define BIT1 (1ul << 1) +#define BIT2 (1ul << 2) +#define BIT3 (1ul << 3) +#define BIT4 (1ul << 4) +#define BIT5 (1ul << 5) +#define BIT6 (1ul << 6) +#define BIT7 (1ul << 7) +#define BIT8 (1ul << 8) +#define BIT9 (1ul << 9) +#define BIT10 (1ul << 10) +#define BIT11 (1ul << 11) +#define BIT12 (1ul << 12) +#define BIT13 (1ul << 13) +#define BIT14 (1ul << 14) +#define BIT15 (1ul << 15) +#define BIT16 (1ul << 16) +#define BIT17 (1ul << 17) +#define BIT18 (1ul << 18) +#define BIT19 (1ul << 19) +#define BIT20 (1ul << 20) +#define BIT21 (1ul << 21) +#define BIT22 (1ul << 22) +#define BIT23 (1ul << 23) +#define BIT24 (1ul << 24) +#define BIT25 (1ul << 25) +#define BIT26 (1ul << 26) +#define BIT27 (1ul << 27) +#define BIT28 (1ul << 28) +#define BIT29 (1ul << 29) +#define BIT30 (1ul << 30) +#define BIT31 (1ul << 31) +#endif + +#endif /* WLAND_TYPES_H */ diff --git a/targets/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt similarity index 98% rename from targets/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt rename to features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt index 2d906989d58..24e25298db3 100644 --- a/targets/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt @@ -1,6 +1,6 @@ Permissive Binary License -Version 1.0, September 2018 +Version 1.0, January 2019 Redistribution. Redistribution and use in binary form, without modification, are permitted provided that the following conditions are diff --git a/targets/TARGET_RDA/TARGET_UNO_91H/lib/README.md b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/README.md similarity index 78% rename from targets/TARGET_RDA/TARGET_UNO_91H/lib/README.md rename to features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/README.md index beec4098036..5df1aa37df9 100644 --- a/targets/TARGET_RDA/TARGET_UNO_91H/lib/README.md +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/README.md @@ -2,6 +2,6 @@ This directory tree contains binaries build from RDA SDK modified for Mbed OS an libhal files in the subfolders are generated with toolchains: -Arm Compiler 5 - version 5.06u1 +Arm Compiler 5 - version 5.06u6 GNU Arm Embedded - version 6.3.1 -IAR EWARM - version 7.80.2 \ No newline at end of file +IAR EWARM - version 8.32.2.178 \ No newline at end of file diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_ARM_STD/libwifi_sta_ap.ar b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_ARM_STD/libwifi_sta_ap.ar new file mode 100644 index 00000000000..3c5307cd774 Binary files /dev/null and b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_ARM_STD/libwifi_sta_ap.ar differ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_GCC_ARM/libwifi_sta_ap.a b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_GCC_ARM/libwifi_sta_ap.a new file mode 100644 index 00000000000..58685c85624 Binary files /dev/null and b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_GCC_ARM/libwifi_sta_ap.a differ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_IAR/libwifi_sta_ap.a b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_IAR/libwifi_sta_ap.a new file mode 100644 index 00000000000..a55e3853617 Binary files /dev/null and b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/TOOLCHAIN_IAR/libwifi_sta_ap.a differ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/maclib_task.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/maclib_task.c new file mode 100644 index 00000000000..bd31ff81d2a --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/maclib_task.c @@ -0,0 +1,275 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/****************************************************************************** + * @file : maclib_task.c + * @brief : WiFi MACLib task source file + * @version: V1.0 + * @date : 6. May 2017 + * + * @note + * + ******************************************************************************/ +#include +#include +#include + +#include "mbed_interface.h" +#include "cmsis_os.h" +#include "csl_mbed.h" +#include "maclib_task.h" +#include "rda5991h_wland.h" + +#include "lwip/pbuf.h" +#include "lwip/sys.h" + +/** + * Macros + */ +#define MACLIB_TASK_DEBUG (0) + +/** + * Variables + */ +static int maclib_task_run = 0; +static sys_mbox_t maclib_mbox; +static int g_event_num = 0; +static int g_event_proc_done = 1; +static sys_sem_t g_maclib_sem_sleep; +static int g_maclib_sleep_flag = 0; + +extern maclib_func_t *maclib_func_p; + +extern void rda_critical_sec_start(void); +extern void rda_critical_sec_end(void); +extern void wland_set_sta_sleep(unsigned char is_sleep); + +#define MAX_MSG_POOL_NUM (64) +maclib_msg_t msg_str_pool[MAX_MSG_POOL_NUM]; +int msg_str_pool_inited = 0; + +void init_msg_str_pool(void) +{ + int idx; + for(idx = 0; idx < MAX_MSG_POOL_NUM; idx++) { + msg_str_pool[idx].is_free = 1; + } +} + +maclib_msg_t *alloc_msg_str(void) +{ + int idx; + maclib_msg_t *ret = NULL; + rda_critical_sec_start(); + if (0 == msg_str_pool_inited) { + init_msg_str_pool(); + msg_str_pool_inited = 1; + } + rda_critical_sec_end(); + for (idx = 0; idx < MAX_MSG_POOL_NUM; idx++) { + rda_critical_sec_start(); + ret = &msg_str_pool[idx]; + if (1 == ret->is_free) { + ret->is_free = 0; + rda_critical_sec_end(); + break; + } + rda_critical_sec_end(); + } + return ret; +} + +void free_msg_str(maclib_msg_t *p_msg) +{ + rda_critical_sec_start(); + p_msg->is_free = 1; + rda_critical_sec_end(); +} + +/** + * Functions + */ +/* maybe called in isr, should not use "printf", "malloc" */ +void mbed_event_handle_cb(unsigned int event) +{ + MACLIB_EVENT_HANDLE_T type = (MACLIB_EVENT_HANDLE_T)event; + if ((maclib_task_run == 0) && (MACLIB_EVENT_CLEANUP != type)) { + mbed_error_printf("evntHndlCb_nulldata\r\n"); + return; + } + switch(type) { + case MACLIB_EVENT_PEND: + rda_critical_sec_start(); + g_event_num++; + if((1 == g_event_num) && (1 == g_event_proc_done)) { + maclib_msg_t *msg; +#if MACLIB_TASK_DEBUG + mbed_error_printf("#1-1,%d(%08X)\r\n", g_event_num, __get_xPSR()); +#endif + msg = alloc_msg_str(); + if(NULL == msg) { + mbed_error_printf("malloc err\r\n"); + return; + } + msg->type = MACLIB_MSG_EVNT_HNDL; + msg->msg = NULL; + sys_mbox_trypost(&(maclib_mbox), msg); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#1-2\r\n"); +#endif + } + rda_critical_sec_end(); + break; + case MACLIB_EVENT_PROCESS: +#if 1 + rda_critical_sec_start(); + g_event_num--; + if(0 > g_event_num) { + mbed_error_printf("event handle err\r\n"); + g_event_num = 0; + } + rda_critical_sec_end(); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#3,%d\r\n",g_event_num); +#endif +#endif + break; + case MACLIB_EVENT_CLEANUP: +#if MACLIB_TASK_DEBUG + mbed_error_printf("event cleanup\r\n"); +#endif + rda_critical_sec_start(); + g_event_num = 0; + rda_critical_sec_end(); + break; + default: + break; + } +} + +void mbed_mltask_sleep_cb(void) +{ + g_maclib_sleep_flag = 1; + sys_arch_sem_wait(&g_maclib_sem_sleep, 0); +} + +void mbed_mltask_wakeup_cb(void) +{ + rda_critical_sec_start(); + if (1 == g_maclib_sleep_flag) { + g_maclib_sleep_flag = 0; + sys_sem_signal(&g_maclib_sem_sleep); + } + rda_critical_sec_end(); +} + +void maclib_check_status(void) +{ + rda_critical_sec_start(); + if (1 == g_maclib_sleep_flag) { + if(*((unsigned int *)0x40020580U) & (0x01UL << 2)) { + mbed_mltask_wakeup_cb(); + } + } + rda_critical_sec_end(); +} + +int maclib_is_sleep_allowed(void) +{ + return g_maclib_sleep_flag; +} + +void maclib_task(void *pvParameters) +{ + int ret; +#if 0 + sleep_entry_t maclib_sleep_entry = { + wland_set_sta_sleep, + maclib_is_sleep_allowed, + maclib_check_status + }; +#endif + sys_sem_new(&g_maclib_sem_sleep, 0); + //sleep_entry_register(&maclib_sleep_entry); + + ret = sys_mbox_new(&(maclib_mbox), 8); + if(0 != ret) { + LWIP_DEBUGF(NETIF_DEBUG,"msgbox init err!\r\n"); + goto mac_lib_err; + } +#if MACLIB_TASK_DEBUG + LWIP_DEBUGF(NETIF_DEBUG,"#mbox new\r\n"); +#endif + maclib_task_run = 1; + while(1) { + int mem_free = 1; + maclib_msg_t *msg = NULL; + unsigned int time = sys_arch_mbox_fetch(&(maclib_mbox), (void **)&msg, 0); + if ((SYS_ARCH_TIMEOUT == time) || (NULL == msg)) { + LWIP_DEBUGF(NETIF_DEBUG, "ml_task: invalid msg\r\n"); + continue; + } + switch(msg->type) { + case MACLIB_MSG_EVNT_HNDL: { + rda_critical_sec_start(); + g_event_proc_done = 0; + rda_critical_sec_end(); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#get event %d\r\n", g_event_num); +#endif + maclib_func_p->ml_tasklet(); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#5\r\n"); +#endif + rda_critical_sec_start(); +#if 0 + g_event_num--; + if(0 > g_event_num) { + mbed_error_printf("event handle err\r\n"); + } else +#endif + g_event_proc_done = 1; + if(0 < g_event_num) { +#if MACLIB_TASK_DEBUG + mbed_error_printf("#2-1\r\n"); +#endif + sys_mbox_trypost(&(maclib_mbox), msg); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#2-2\r\n"); +#endif + mem_free = 0; + } + rda_critical_sec_end(); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#pDone\r\n"); +#endif + break; + } + default: + break; + } + if (mem_free) { + free_msg_str(msg); +#if MACLIB_TASK_DEBUG + mbed_error_printf("#4\r\n"); +#endif + } + } + +mac_lib_err: + LWIP_DEBUGF(NETIF_DEBUG,"MACLib exit!\r\n"); + osDelay(osWaitForever); +} diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda5991h_wland.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda5991h_wland.c new file mode 100644 index 00000000000..4c6febce9d3 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda5991h_wland.c @@ -0,0 +1,509 @@ +/* Copyright (c) 2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/****************************************************************************** + * @file rda5991h_wland.c + * @brief RDA5991H wlan driver for LWIP + * @version: V1.0 + * @date: 25. July 2016 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "lwip/opt.h" +#include "lwip/sys.h" +#include "lwip/def.h" +#include "lwip/mem.h" +#include "lwip/pbuf.h" +#include "lwip/stats.h" +#include "lwip/snmp.h" +#include "lwip/tcpip.h" +#include "netif/etharp.h" +#include "sys_arch.h" +#include "rda5991h_wland.h" +#include "cmsis.h" +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) +#include "entropy_poll.h" +#else +#include "trng_api.h" +#endif +#include "gpio_api.h" +#include "gpio_irq_api.h" +#include "maclib_task.h" +#include "rda_sys_wrapper.h" +#include +#include +#include +#include + +/* Global variables */ +rda_enetdata_t r91h_wifidata; + +int wland_dbg_dump = WLAND_DBG_DUMP; +int wland_dbg_level = WLAND_DBG_LEVEL; +int wpa_dbg_dump = WPA_DBG_DUMP; +int wpa_dbg_level = WPA_DBG_LEBEL; +int wlandlib_dbg_level = WLANDLIB_DBG_LEVEL; +int hut_dbg_dump = HUT_DBG_DUMP; + +//#define CONFIG_DISABLE_ALL_INT +#define CRI_SEC_START_PRI_LEVEL 0xF8 +#define CRI_SEC_END_PRI_LEVEL 0x00 +static unsigned int g_critical_sec_counter = 0U; +#if defined(CONFIG_DISABLE_ALL_INT) +static unsigned int g_critical_ctxt_saved = 0U; +#endif /* CONFIG_DISABLE_ALL_INT */ +void *packet_rx_queue; + +/* Function statements */ +void r91h_wifiif_input(struct netif *netif, u8_t *data, u32_t len, int idx); +void mbed_mac_address(char *mac); + +/** \brief Driver transmit and receive thread priorities + * + * Thread priorities for receive thread and TX cleanup thread. Alter + * to prioritize receive or transmit bandwidth. In a heavily loaded + * system or with LEIP_DEBUG enabled, the priorities might be better + * the same. */ +#define RX_PRIORITY (osPriorityNormal) +#define TX_PRIORITY (osPriorityNormal) +#define PHY_PRIORITY (osPriorityNormal) + +void rda_netif_down(int netif) +{ + if (netif == 0) { + netif_set_down(r91h_wifidata.netif_sta); + } else { + netif_set_down(r91h_wifidata.netif_ap); + } +} + +void rda_netif_link_down(int netif) +{ + rda_msg msg; + msg.type = 1; + msg.arg1 = 0; + rda_mail_put(packet_rx_queue, (void*)&msg, osWaitForever); +} + +void rda_netif_up(int netif) +{ + if (netif == 0) { + netif_set_up(r91h_wifidata.netif_sta); + } else { + netif_set_up(r91h_wifidata.netif_ap); + } +} + +void rda_netif_link_up(int netif) +{ + rda_msg msg; + msg.type = 1; + msg.arg1 = 1; + rda_mail_put(packet_rx_queue, (void*)&msg, osWaitForever); + return; +} + +void rda_netif_input(u8_t *data, u32_t len, int idx, int netif) +{ + if (netif == 0) { + r91h_wifiif_input(r91h_wifidata.netif_sta, data, len, idx++); + } else { + r91h_wifiif_input(r91h_wifidata.netif_ap, data, len, idx++); + } +} + +void rda_get_macaddr(u8_t *macaddr, int mode) +{ + mbed_mac_address((char *)macaddr); + if (mode == 1) { + if(macaddr[0] & 0x04) { + macaddr[0] &= 0xFB; + } else { + macaddr[0] |= 0x04; + } + } + return; +} + +void rda_critical_sec_start(void) +{ + if (__get_IPSR() == 0U) { + if (0U == g_critical_sec_counter) { +#if defined(CONFIG_DISABLE_ALL_INT) + g_critical_ctxt_saved = __disable_irq(); +#else /* CONFIG_DISABLE_ALL_INT */ + __set_BASEPRI(CRI_SEC_START_PRI_LEVEL); +#endif /* CONFIG_DISABLE_ALL_INT */ + } + g_critical_sec_counter++; + } +} + +void rda_critical_sec_end(void) +{ + if (__get_IPSR() == 0U) { + g_critical_sec_counter--; + if (0U == g_critical_sec_counter) { +#if defined(CONFIG_DISABLE_ALL_INT) + __set_PRIMASK(g_critical_ctxt_saved); +#else /* CONFIG_DISABLE_ALL_INT */ + __set_BASEPRI(CRI_SEC_END_PRI_LEVEL); +#endif /* CONFIG_DISABLE_ALL_INT */ + } + } +} + +void * rda_create_interrupt(unsigned int vec, unsigned int pri, void *isr) +{ + NVIC_SetPriority((IRQn_Type)vec, (uint32_t) pri); + NVIC_SetVector((IRQn_Type)vec, (uint32_t) isr); + + return NULL; +} + +void rda_delete_interrupt(unsigned int vec) +{ + NVIC_SetVector((IRQn_Type)vec, 0); +} + +void rda_enable_interrupt(unsigned int vec) +{ + NVIC_EnableIRQ((IRQn_Type)vec); +} + +void rda_disable_interrupt(unsigned int vec) +{ + NVIC_DisableIRQ((IRQn_Type)vec); +} + +/** \brief Allocates a pbuf and returns the data from the incoming packet. + * + * \param[in] netif the lwip network interface structure + * \param[in] idx index of packet to be read + * \return a pbuf filled with the received packet (including MAC header) + */ +static struct pbuf *r91h_low_level_input(struct netif *netif, u8_t *data, u32_t len, int idx) +{ + struct pbuf *p, *q; + u16_t index = 0; + + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input enter, rxlen:%d\n", len)); + + /* Obtain the size of the packet and put it into the "len" + variable. */ + if(!len) { + return NULL; + } + +#if ETH_PAD_SIZE + len += ETH_PAD_SIZE; /* allow room for Ethernet padding */ +#endif + + /* We allocate a pbuf chain of pbufs from the pool. */ + p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); + + if (p != NULL) { + +#if ETH_PAD_SIZE + pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ +#endif + + /* We iterate over the pbuf chain until we have read the entire + * packet into the pbuf. */ + for (q = p; q != NULL; q = q->next) { + /* Read enough bytes to fill this pbuf in the chain. The + * available data in the pbuf is given by the q->len + * variable. + * This does not necessarily have to be a memcpy, you can also preallocate + * pbufs for a DMA-enabled MAC and after receiving truncate it to the + * actually received size. In this case, ensure the tot_len member of the + * pbuf is the sum of the chained pbuf len members. + */ + /* load rx data from 96 to local mem_pool */ + MEMCPY(q->payload, &data[index], q->len); + index += q->len; + + if (index >= len) { + break; + } + } + +#if ETH_PAD_SIZE + pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ +#endif + + LINK_STATS_INC(link.recv); + } else { + /* Drop this packet */ + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input pbuf_alloc fail, rxlen:%d\n", len)); + LINK_STATS_INC(link.memerr); + LINK_STATS_INC(link.drop); + + return NULL; + } + + return p; +} + +/** \brief Attempt to read a packet from the EMAC interface. + * + * \param[in] netif the lwip network interface structure + * \param[in] idx index of packet to be read + */ +void *data_sem = NULL; +void r91h_wifiif_input(struct netif *netif, u8_t *data, u32_t len, int idx) +{ + if(data_sem == NULL) + data_sem = rda_sem_create(0); + rda_msg msg; + msg.type = 0; + msg.arg1 = (int)data; + msg.arg2 = len; + msg.arg3 = (int)data_sem; + rda_mail_put(packet_rx_queue, (void*)&msg, osWaitForever); + rda_sem_wait(data_sem, osWaitForever); + return; +} + +/** \brief Low level init of the MAC and PHY. + * + * \param[in] netif Pointer to LWIP netif structure + */ + +static err_t low_level_init(struct netif *netif) +{ + static int init_flag = 0; + if (init_flag == 0) { + wland_reg_func(); + init_flag = 1; + } + return ERR_OK; +} + +/** + * This function is the ethernet packet send function. It calls + * etharp_output after checking link status. + * + * \param[in] netif the lwip network interface structure for this enetif + * \param[in] q Pointer to pbug to send + * \param[in] ipaddr IP address + * \return ERR_OK or error code + */ +err_t rda91h_etharp_output(struct netif *netif, struct pbuf *q, const ip_addr_t *ipaddr) +{ + /* Only send packet is link is up */ + if (netif->flags & NETIF_FLAG_LINK_UP) + return etharp_output(netif, q, ipaddr); + + return ERR_CONN; +} + +/** \brief Low level output of a packet. Never call this from an + * interrupt context, as it may block until TX descriptors + * become available. + * + * \param[in] netif the lwip network interface structure for this netif + * \param[in] p the MAC packet to send (e.g. IP packet including MAC addresses and type) + * \return ERR_OK if the packet could be sent or an err_t value if the packet couldn't be sent + */ +static err_t rda91h_low_level_output(struct netif *netif, struct pbuf *p) +{ + struct pbuf *q; + + /* rda5996 initiate transfer */ + u32_t actual_txlen = 0; + u8_t **data; + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output enter, p:%08x\n", p)); + +#if ETH_PAD_SIZE + pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ +#endif + + data = (void*)wland_get_databuf(); + + if(data == NULL){ + LWIP_DEBUGF(NETIF_DEBUG, ("rda91h_low_level_output, no PKT buf\r\n")); + return ERR_BUF; + } + + for(q = p; q != NULL; q = q->next) + { + /* Send the data from the pbuf to the interface, one pbuf at a + time. The size of the data in each pbuf is kept in the ->len + variable. */ + MEMCPY(&((*data)[actual_txlen+2]), q->payload, q->len);//reserve wid header length + actual_txlen += q->len; + if(actual_txlen > 1514 || actual_txlen > p->tot_len) + { + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output err, actual_txlen:%d, tot_len%d\n", + actual_txlen, p->tot_len)); + return ERR_BUF; + } + } + + /* Signal rda5996 that packet should be sent */ + if(actual_txlen == p->tot_len) + { + if(netif->name[0] == 's' && netif->name[1] == 't') { + wland_txip_data((void*)data, actual_txlen, 0); + } else if(netif->name[0] == 'a' && netif->name[1] == 'p') { + wland_txip_data((void*)data, actual_txlen, 1); + } + +#if ETH_PAD_SIZE + pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ +#endif + + LINK_STATS_INC(link.xmit); + + return ERR_OK; + } + + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output pkt len mismatch, actual_txlen:%d, tot_len%d\n", + actual_txlen, p->tot_len)); + + + return ERR_BUF; +} + +/** + * Should be called at the beginning of the program to set up the + * network interface. + * + * This function should be passed as a parameter to netif_add(). + * + * @param[in] netif the lwip network interface structure for this netif + * @return ERR_OK if the loopif is initialized + * ERR_MEM if private data couldn't be allocated + * any other err_t on error + */ +err_t wifi_arch_enetif_init(struct netif *netif) +{ + err_t err; + static int thread_init_flag = 0; + LWIP_ASSERT("netif != NULL", (netif != NULL)); + + if (*((int *)netif->state) == 0) { + r91h_wifidata.netif_sta = netif; + netif->name[0] = 's'; + netif->name[1] = 't'; +#if LWIP_NETIF_HOSTNAME + /* Initialize interface hostname */ + if(netif->hostname == NULL) + netif->hostname = "lwipr91h_sta"; +#endif /* LWIP_NETIF_HOSTNAME */ + rda_get_macaddr((u8_t *)(netif->hwaddr), 0); + } else if(*((int *)netif->state) == 1) { + r91h_wifidata.netif_ap = netif; + netif->name[0] = 'a'; + netif->name[1] = 'p'; +#if LWIP_NETIF_HOSTNAME + /* Initialize interface hostname */ + if(netif->hostname == NULL) + netif->hostname = "lwipr91h_ap"; +#endif /* LWIP_NETIF_HOSTNAME */ + rda_get_macaddr((u8_t *)(netif->hwaddr), 1); + } + + netif->hwaddr_len = ETHARP_HWADDR_LEN; + + /* maximum transfer unit */ + netif->mtu = 1500; + + /* device capabilities */ + // TODOETH: check if the flags are correct below + netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET | NETIF_FLAG_IGMP; + + /* Initialize the hardware */ + netif->state = &r91h_wifidata; + err = low_level_init(netif); + if (err != ERR_OK) + return err; + + netif->output = rda91h_etharp_output; + netif->linkoutput = rda91h_low_level_output; + if(thread_init_flag == 0){ + /* PHY monitoring task */ + sys_thread_new("maclib_thread", maclib_task, netif->state, DEFAULT_THREAD_STACKSIZE*8, PHY_PRIORITY); + sys_thread_new("wland_thread", wland_task, NULL, DEFAULT_THREAD_STACKSIZE*5, PHY_PRIORITY); + /* Allow the PHY task to detect the initial link state and set up the proper flags */ + osDelay(10); + thread_init_flag = 1; + } + return ERR_OK; +} + +unsigned char rda_mac_addr[6] = "\0"; +static int is_available_mac_addr(unsigned char *mac_addr) +{ + if (mac_addr[0]==0 && mac_addr[1]==0 && mac_addr[2]==0 && + mac_addr[3]==0 && mac_addr[4]==0 && mac_addr[5]==0) + return 0; + if (mac_addr[0]&0x1) + return 0; + return 1; +} +static void rda_get_macaddr_from_flash(unsigned char *macaddr) +{ + int ret; + if (!mac_is_valid((char *)rda_mac_addr)) { + ret = rda5981_flash_read_mac_addr(rda_mac_addr); + if ((ret!=0) || (is_available_mac_addr(rda_mac_addr)==0)) { +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) + unsigned int out_len; + ret = mbedtls_hardware_poll(NULL, rda_mac_addr, 6, &out_len); + if (6 != out_len) { + LWIP_DEBUGF(NETIF_DEBUG, ("out_len err:%d\n", out_len)); + } +#else + ret = rda_trng_get_bytes(rda_mac_addr, 6); +#endif + rda_mac_addr[0] &= 0xfe; /* clear multicast bit */ + rda_mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */ + rda5981_flash_write_mac_addr(rda_mac_addr); + } + } + memcpy(macaddr, rda_mac_addr, 6); +} +void mbed_mac_address(char *mac) +{ + mac[0] = 0xD6; + mac[1] = 0x71; + mac[2] = 0x36; + mac[3] = 0x60; + mac[4] = 0xD8; +#if !MBED_CONF_APP_ECHO_SERVER + mac[5] = 0xF4; +#else + mac[5] = 0xF3; +#endif + return; +} diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda_sys_wrapper.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda_sys_wrapper.c new file mode 100644 index 00000000000..35401ef3fe8 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/rda_sys_wrapper.c @@ -0,0 +1,450 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if 1 +#include "sys_arch.h" +#include "cmsis_os.h" +#include "cmsis_os2.h" +#include "lwip/sys.h" +#include "rtx_lib.h" + +#include +#include +#include "mbed_assert.h" +#define NO_ERR 0 +#define ERR -1 + +//#define RDA_SYS_DEBUG +#ifdef RDA_SYS_DEBUG +#define RDA_SYS_PRINT(fmt, ...) do {\ + printf(fmt, ##__VA_ARGS__);\ + } while (0) +#else +#define RDA_SYS_PRINT(fmt, ...) +#endif + + +/* Alarm */ +// Timer definitions +#define osTimerInvalid 0 +#define osTimerStopped 1 +#define osTimerRunning 2 +#if 0 +// Timer structures, same as os_timer_cb(rt_CMSIS.c) +typedef struct rda_ostmr_cb { + struct rda_ostmr_cb *next; // Pointer to next active Timer + uint8_t state; // Timer State + uint8_t type; // Timer Type (Periodic/One-shot) + uint16_t reserved; // Reserved + uint32_t tcnt; // Timer Delay Count + uint32_t icnt; // Timer Initial Count + void *arg; // Timer Function Argument + const osTimerDef_t *timer; // Pointer to Timer definition +} rda_ostmr_cb_t; +#endif +//#define USING_STDLIB + +#if !defined(USING_STDLIB) +typedef struct rda_tmr_node { + mbed_rtos_storage_timer_t _obj_mem; +} rda_tmr_node_t; + +typedef struct rda_tmr_ctrl { + unsigned char *buff; + unsigned char *state; + unsigned char max_node_num; + unsigned char node_size; + unsigned char node_cntr; + unsigned char last_freed_node_idx; +} rda_tmr_ctrl_t; + +#define MAX_ALARM_NUM (28) +#define WORD_ALIGN(n) (((n) + 0x03UL) & ~0x03UL) +#define MAX_ALARM_STAT_SIZE WORD_ALIGN(MAX_ALARM_NUM >> 3) +#define MAX_ALARM_MEM_SIZE (MAX_ALARM_NUM * WORD_ALIGN(sizeof(mbed_rtos_storage_timer_t)) + MAX_ALARM_STAT_SIZE) + +unsigned long g_alarm_buf[WORD_ALIGN(MAX_ALARM_MEM_SIZE) >> 2] = {0}; +rda_tmr_ctrl_t g_alarm_ctrl = { + (unsigned char *)g_alarm_buf + MAX_ALARM_STAT_SIZE, + (unsigned char *)g_alarm_buf, + MAX_ALARM_NUM, + WORD_ALIGN(sizeof(mbed_rtos_storage_timer_t)), + 0U, + 0U +}; + +__STATIC_INLINE unsigned char get_node_state(unsigned char *buf, unsigned char idx) +{ + unsigned char state, ofst; + ofst = (idx & 0x07U); + buf += (idx >> 3); + state = (*buf >> ofst) & 0x01U; + return state; +} + +__STATIC_INLINE void set_node_state(unsigned char *buf, unsigned char idx, unsigned char state) +{ + unsigned char ofst, tmp; + ofst = (idx & 0x07U); + buf += (idx >> 3); + tmp = *buf & (~(0x01U << ofst)); + *buf = tmp | (((state & 0x01U) << ofst)); +} + +static rda_tmr_node_t *get_tmr_node(void) +{ + rda_tmr_node_t *node = NULL; + unsigned char idx = g_alarm_ctrl.last_freed_node_idx; + if ((idx < g_alarm_ctrl.max_node_num) && (0U == get_node_state(g_alarm_ctrl.state, idx))) { + set_node_state(g_alarm_ctrl.state, idx, 1U); + node = (rda_tmr_node_t *)(g_alarm_ctrl.buff + idx * g_alarm_ctrl.node_size); + g_alarm_ctrl.node_cntr++; + } else { + for (idx = 0U; idx < g_alarm_ctrl.max_node_num; idx++) { + if(0U == get_node_state(g_alarm_ctrl.state, idx)) { + set_node_state(g_alarm_ctrl.state, idx, 1U); + node = (rda_tmr_node_t *)(g_alarm_ctrl.buff + idx * g_alarm_ctrl.node_size); + g_alarm_ctrl.node_cntr++; + break; + } + } + } + return node; +} + +static void put_tmr_node(rda_tmr_node_t *node) +{ + unsigned char *node_buf = (unsigned char *)node; + unsigned char idx = (node_buf - g_alarm_ctrl.buff) / g_alarm_ctrl.node_size; + if ((node_buf > g_alarm_ctrl.buff) && (idx < g_alarm_ctrl.max_node_num) && + (1U == get_node_state(g_alarm_ctrl.state, idx))) { + set_node_state(g_alarm_ctrl.state, idx, 0U); + g_alarm_ctrl.node_cntr--; + g_alarm_ctrl.last_freed_node_idx = idx; + } +} +#endif /* !USING_STDLIB */ + +/** + * @brief : get current time in units of micro second + * @param[in] : + * @param[out]: + * @return : return time value with uint32 type + */ +unsigned long rda_get_cur_time_ms(void) +{ + return sys_now(); +} + +/** + * @brief : create an alarm with given function, return timer handle + * @param[in] : func(callback)/data(pass to func)/mode(once or periodic) + * @param[out]: + * @return : return timer handle, a pointer to the timer structure, non-zero is valid + */ +void * rda_alarm_create_v2(void *func, unsigned int data, unsigned int mode) +{ + osTimerId_t handle; + mbed_rtos_storage_timer_t* _obj_mem = NULL; + MBED_ASSERT(func != NULL); + osTimerAttr_t attr = { 0 }; +#if defined(USING_STDLIB) + _obj_mem = (mbed_rtos_storage_timer_t*)malloc(sizeof(mbed_rtos_storage_timer_t)); +#else /* USING_STDLIB */ + _obj_mem = (mbed_rtos_storage_timer_t*)get_tmr_node(); +#endif /* USING_STDLIB */ + MBED_ASSERT(_obj_mem != NULL); + memset(_obj_mem, 0, sizeof(_obj_mem)); + attr.cb_mem = _obj_mem; + attr.cb_size = sizeof(mbed_rtos_storage_timer_t); + //printf("hehehehe fun %p\r\n", func); + handle = osTimerNew((osTimerFunc_t)func, mode, (void *)data, &attr); + //printf("time cb %p handle %p\r\n", _obj_mem, handle); + MBED_ASSERT(handle != NULL); + return handle; +} + +void * rda_alarm_create(void *func, unsigned int data) +{ + return rda_alarm_create_v2(func, data, osTimerOnce); +} + +/** + * @brief : delete an alarm with given handle, then reset the handle + * @param[in] : *handle(pointer to the timer structure) + * @param[out]: **handle(address of the handle variable) + * @return : + */ +int rda_alarm_delete(void **handle) +{ + if (NULL != *handle) { + osTimerId timer_id = (osTimerId)(*handle); + osStatus retval = osTimerDelete(timer_id); + if (osOK == retval) { +#if defined(USING_STDLIB) + free(timer_id); +#else /* USING_STDLIB */ + put_tmr_node((rda_tmr_node_t *)timer_id); +#endif /* USING_STDLIB */ + *handle = NULL; + } else { + RDA_SYS_PRINT("Delete alarm error: %d\r\n", retval); + return ERR; + } + return NO_ERR; + } + return ERR; +} + +/** + * @brief : start an alarm, raise a function call after given timeout delay + * @param[in] : handle(pointer to the timer structure)/timeout(micro second) + * @param[out]: + * @return : + */ +int rda_alarm_start(void *handle, unsigned int timeout_ms) +{ + if (NULL != handle) { + osTimerId timer_id = (osTimerId)handle; + osStatus retval = osTimerStart(timer_id, (uint32_t)timeout_ms); + if (osOK != retval) { + RDA_SYS_PRINT("Start alarm error: %d\r\n", retval); + return ERR; + } + return NO_ERR; + } + return ERR; +} + +/** + * @brief : stop an alarm, will not raise a function call any more + * @param[in] : handle(pointer to the timer structure) + * @param[out]: + * @return : + */ +int rda_alarm_stop(void *handle) +{ + if (NULL != handle) { + osTimerId timer_id = (osTimerId)handle; + osStatus retval = osTimerStop(timer_id); + if (osOK != retval) { + RDA_SYS_PRINT("Stop alarm error: %d\r\n", retval); + return ERR; + } + return NO_ERR; + } + return ERR; +} + + + +/* Semaphore */ +void* rda_sem_create(unsigned int count) +{ + osSemaphoreId_t sem; + mbed_rtos_storage_semaphore_t *_obj_mem = (mbed_rtos_storage_semaphore_t*)malloc(sizeof(mbed_rtos_storage_semaphore_t)); + osSemaphoreAttr_t attr = { 0 }; + attr.name = "rda_unnamed_sem"; + attr.cb_mem = _obj_mem; + attr.cb_size = sizeof(mbed_rtos_storage_semaphore_t); + sem = osSemaphoreNew(1, count, &attr); + MBED_ASSERT(sem != NULL); + + return (void*)sem; +} + +int rda_sem_wait(void* sem, unsigned int millisec) +{ + int res; + + res = osSemaphoreWait(sem, millisec); + if (res > 0) { + return NO_ERR; + } else { + RDA_SYS_PRINT("rda_sem_wait error %d\r\n", res); + return ERR; + } +} + +int rda_sem_release(void *sem) +{ + int res; + + res = osSemaphoreRelease(sem); + if (res == 0) { + return NO_ERR; + } else { + RDA_SYS_PRINT("rda_sem_release error %d\r\n", res); + return ERR; + } +} + +int rda_sem_delete(void *sem) +{ + int res; + + res = osSemaphoreDelete(sem); + free(sem); + if (res == 0) { + return NO_ERR; + } else { + RDA_SYS_PRINT("rda_sem_delete error %d\r\n", res); + return ERR; + } +} + +/* Mail */ +void* rda_mail_create(unsigned int msgcnt, unsigned int msgsize) +{ + unsigned int mq_size = msgcnt * (msgsize + sizeof(os_message_t)); + osMessageQueueId_t msgq; + mbed_rtos_storage_msg_queue_t *_obj_mem = (mbed_rtos_storage_msg_queue_t*)malloc(sizeof(mbed_rtos_storage_msg_queue_t)); + MBED_ASSERT(_obj_mem != NULL); + memset(_obj_mem, 0, sizeof(mbed_rtos_storage_msg_queue_t)); + void *_mq_mem = (void *)malloc(mq_size); + MBED_ASSERT(_mq_mem != NULL); + memset(_mq_mem, 0, mq_size); + osMessageQueueAttr_t attr = { 0 }; + attr.name = "rda_unnamed_message_queue"; + attr.cb_mem = _obj_mem; + attr.cb_size = sizeof(mbed_rtos_storage_msg_queue_t); + attr.mq_mem = _mq_mem; + attr.mq_size = mq_size; + msgq = osMessageQueueNew(msgcnt, msgsize, &attr); + MBED_ASSERT(msgq != NULL); + + return (void*)msgq; +} + +int rda_mail_get(void *msgq, void *msg, unsigned int wait) +{ + int ret; + ret = osMessageQueueGet(msgq, msg, 0, wait); + return ret; +} + +int rda_mail_put(void *msgq, void *msg, unsigned int wait) +{ + int ret; + ret = osMessageQueuePut(msgq, msg, 0, wait); + return ret; +} + +/* Mutex */ +void* rda_mutex_create(void) +{ + osMutexId_t rdamutex; + osMutexAttr_t attr = { 0 }; + mbed_rtos_storage_mutex_t *_obj_mem = (mbed_rtos_storage_mutex_t *)malloc(sizeof(mbed_rtos_storage_mutex_t)); + memset(_obj_mem, 0, sizeof(mbed_rtos_storage_mutex_t)); + attr.name = "rda_unnamed_mutex"; + attr.cb_mem = _obj_mem; + attr.cb_size = sizeof(mbed_rtos_storage_mutex_t); + attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust; + rdamutex = osMutexNew(&attr); + MBED_ASSERT(rdamutex != NULL); + return (void *)rdamutex; +} + +int rda_mutex_wait(void *rdamutex, unsigned int millisec) +{ + osMutexId_t mutex = (osMutexId_t)rdamutex; + osStatus res; + res = osMutexWait(mutex, millisec); + if (res == osOK) { + return NO_ERR; + } else { + return ERR; + } +} + +int rda_mutex_realease(void *rdamutex) +{ + osMutexId_t mutex = (osMutexId_t)rdamutex; + osStatus res; + res = osMutexRelease(mutex); + if(res == osOK) { + return NO_ERR; + } else { + return ERR; + } +} + +int rda_mutex_delete(void *rdamutex) +{ + osMutexId_t mutex = (osMutexId_t)rdamutex; + osStatus res; + res = osMutexDelete(mutex); + free(mutex); + if (res == osOK) { + return NO_ERR; + } else { + return ERR; + } +} + +/* Thread */ +void* rda_thread_new(const char *pcName, + void (*thread)(void *arg), + void *arg, int stacksize, int priority) +{ + osThreadId_t id; + osThreadAttr_t _attr = { 0 }; + mbed_rtos_storage_thread_t *_obj_mem = (mbed_rtos_storage_thread_t *)malloc(sizeof(mbed_rtos_storage_thread_t)); + MBED_ASSERT(_obj_mem != NULL); + memset(_obj_mem, 0, sizeof(mbed_rtos_storage_thread_t)); + _attr.priority = priority; + _attr.stack_size = stacksize; + _attr.name = pcName ? pcName : "rda_unnamed_thread"; + _attr.stack_mem = malloc(stacksize); + MBED_ASSERT(_attr.stack_mem != NULL); + _attr.cb_size = sizeof(mbed_rtos_storage_thread_t); + _attr.cb_mem = _obj_mem; + _attr.tz_module = 0; + + //Fill the stack with a magic word for maximum usage checking + for (uint32_t i = 0; i < (_attr.stack_size / sizeof(uint32_t)); i++) { + ((uint32_t *)_attr.stack_mem)[i] = 0xE25A2EA5; + } + id = osThreadNew(thread, arg, &_attr); + if (id == NULL){ + free(_attr.stack_mem); + free(_attr.cb_mem); + RDA_SYS_PRINT("sys_thread_new create error\n"); + return NULL; + } + return (void *)id; +} + +int rda_thread_delete(void* id) +{ + osStatus ret; + unsigned int *stk = ((osRtxThread_t *)id)->stack_mem; + ret = osThreadTerminate(id); + free(id); + free(stk); + if (ret != osOK) { + return ERR; + } + return NO_ERR; +} + +void* rda_thread_get_id(void) +{ + osThreadId id = osThreadGetId(); + return (void*)id; +} +#endif diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash.c new file mode 100644 index 00000000000..a2c0cd8ffac --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash.c @@ -0,0 +1,1481 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "critical.h" +#include "wland_flash.h" +#include "wland_dbg.h" +#include "rda5981_flash.h" +#include "wland_flash_wp.h" + +#define MACDBG "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC2STRDBG(ea) (ea)[0], (ea)[1], (ea)[2], (ea)[3], (ea)[4], (ea)[5] + +u32 flash_size = FLASH_SIZE; +static u32 user_data_location = RDA5991H_USER_DATA_ADDR; +static u32 third_parter_data_location = RDA5991H_3RDPARTER_DATA_ADDR; +static u32 third_parter_data_len = RDA5991H_3RDPARTER_DATA_LEN; +int rda5981_read_flash(u32 addr, char *buf, u32 len) +{ + int ret = 0; + char *temp_buf = NULL, *temp_buf_aligned; + + addr &= (flash_size -1); + if (addr < RDA5991H_PARTITION_TABLE_END_ADDR-0x18000000) { + WLAND_DBG(ERROR, "couldn't read system data\n"); + return -1; + } + + if ((u32)buf % 4) { + temp_buf = malloc(len + 3); + if (temp_buf == NULL) { + ret = -1; + goto out; + } + if ((u32)temp_buf % 4) { + temp_buf_aligned = temp_buf + (4-(u32)temp_buf%4); + } else { + temp_buf_aligned = temp_buf; + } + } else { + temp_buf_aligned = buf; + } + + core_util_critical_section_enter(); + spi_flash_flush_cache(); + SPI_FLASH_READ_DATA_FOR_MBED((void *)addr, temp_buf_aligned, len); + core_util_critical_section_exit(); + + if (temp_buf_aligned != buf) { + memcpy(buf, temp_buf_aligned, len); + } + +out: + if (temp_buf) { + free(temp_buf); + } + + return ret; +} + +void rda5981_spi_flash_erase_64KB_block(u32 addr) +{ + if (rda_ccfg_hwver() < 4) { + spi_wip_reset_2(); + spi_write_reset_2(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, CMD_64KB_BLOCK_ERASE | (addr<<8)); + wait_busy_down_2(); + spi_wip_reset_2(); + } else { + spi_wip_reset_4(); + spi_write_reset_4(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, CMD_64KB_BLOCK_ERASE | (addr<<8)); + wait_busy_down_4(); + spi_wip_reset_4(); + } +} +void rda5981_spi_erase_partition(void *src, u32 counts) +{ + u32 a4k, a64k, a64kend, a4kend, atmp; + + if (counts > 0x00) { + a4k = ((u32)src ) & (~((0x01UL << 12) - 0x01UL)); + a64k = ((u32)src + (0x01UL << 16) - 0x01UL) & (~((0x01UL << 16) - 0x01UL)); + a64kend = ((u32)src + counts ) & (~((0x01UL << 16) - 0x01UL)); + a4kend = ((u32)src + counts + (0x01UL << 12) - 0x01UL) & (~((0x01UL << 12) - 0x01UL)); + + for (atmp = a4k; atmp < a4kend; atmp += (0x01UL << 12)) { + if (a64kend > a64k) { + if (atmp == a64k) { + for (; atmp < a64kend; atmp += (0x01UL << 16)) { + core_util_critical_section_enter(); + rda5981_spi_flash_erase_64KB_block(atmp); + core_util_critical_section_exit(); + } + if (atmp == a4kend) { + break; + } + } + } + core_util_critical_section_enter(); + rda5981_spi_flash_erase_4KB_sector(atmp); + core_util_critical_section_exit(); + } + } +} +//@len must be 4k aligment +int rda5981_erase_flash(u32 addr, u32 len) +{ + WLAND_DBG(INFO, "erase flash :%x:%x\n", addr, len); + + addr &= (flash_size - 1); + if (addr < RDA5991H_PARTITION_TABLE_END_ADDR-0x18000000) { + WLAND_DBG(ERROR, "couldn't erase system data\n"); + return -1; + } + + if (len & (SECTOR_SIZE-1)) { + len = ((len+SECTOR_SIZE) & (~(SECTOR_SIZE-1))); + } + flash_wrtie_protect(addr); + rda5981_spi_erase_partition((void*)addr, len); + flash_wrtie_protect_all(); + return 0; +} + +//@len must be 256 aligment +int rda5981_write_flash(u32 addr, char *buf, u32 len) +{ + int ret = 0; + u8 *temp_buf = NULL, *temp_buf_aligned; + u8 *check_buf = NULL; + + addr &= (flash_size -1); + if (addr < RDA5991H_PARTITION_TABLE_END_ADDR-0x18000000) { + WLAND_DBG(ERROR, "couldn't write system data\n"); + return -1; + } + + if ((u32)buf % 4) { + temp_buf = malloc(len + 3); + if (temp_buf == NULL) { + goto out; + } + if ((u32)temp_buf % 4) { + temp_buf_aligned = temp_buf + (4-(u32)temp_buf%4); + } else { + temp_buf_aligned = temp_buf; + } + memcpy(temp_buf_aligned, buf, len); + } else { + temp_buf_aligned = (u8*)buf; + } + flash_wrtie_protect(addr); + core_util_critical_section_enter(); + //RDA5991H_ERASE_FLASH(addr, len); + RDA5991H_WRITE_FLASH(addr, temp_buf_aligned, len); + core_util_critical_section_exit(); + flash_wrtie_protect_all(); + +#ifdef FLASH_READ_CHECK + if (ret == 0) { + check_buf = malloc(len); + rda5981_read_flash(addr, check_buf, len); + if (memcmp(buf, check_buf, len) == 0) { + ret = 0; + } else { + ret = -1; + } + } +#endif /*FLASH_READ_CHECK*/ + +out: + if (temp_buf) { + free(temp_buf); + } + if (check_buf) { + free(check_buf); + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +rda5991h_user_data wland_user_data; +u8 read_flag = 0; +int rda5981_write_user_data(u8 *data, u16 len, u32 flag) +{ + WLAND_DBG(INFO, "Enter, flag:0x%x\r\n", flag); + + if (!read_flag) { + if (0 == rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data))) { + read_flag = 1; + } else { + return -1; + } + } + + if ((wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) || + strcmp((const char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG)) { + memset(&wland_user_data, 0xff, sizeof(wland_user_data)); + wland_user_data.flag = flag; + strcpy((char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG); + } + + wland_user_data.flag |= flag; + + switch (flag) { + case RDA5991H_USER_DATA_FLAG_STA: + memcpy(&wland_user_data.sta_data, data, + min(sizeof(wland_user_data.sta_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_MAC: + memcpy(wland_user_data.mac_addr, data, + min(sizeof(wland_user_data.mac_addr), len)); + break; + case RDA5991H_USER_DATA_FLAG_PMK: + memcpy(wland_user_data.pmk, data, + min(sizeof(wland_user_data.pmk), len)); + break; + case RDA5991H_USER_DATA_FLAG_IP: + memcpy(wland_user_data.ip, data, + min(RDA5991H_USER_DATA_IP_LENGTH, len)); + break; + case RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN: + memcpy(&wland_user_data.parter_data_len, data, + min(sizeof(wland_user_data.parter_data_len), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER: + memcpy(&wland_user_data.tx_power, data, + min(sizeof(wland_user_data.tx_power), len)); + break; + case RDA5991H_USER_DATA_FLAG_XTAL_CAL: + memcpy(&wland_user_data.xtal_cal, data, + min(sizeof(wland_user_data.xtal_cal), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_RF: + memcpy(&wland_user_data.tx_power_rf, data, + min(sizeof(wland_user_data.tx_power_rf), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_GN: + memcpy(&wland_user_data.tx_power_phy_gn, data, + min(sizeof(wland_user_data.tx_power_phy_gn), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_B: + memcpy(&wland_user_data.tx_power_phy_b, data, + min(sizeof(wland_user_data.tx_power_phy_b), len)); + break; + case RDA5991H_USER_DATA_FLAG_AP: + memcpy(&wland_user_data.ap_data, data, + min(sizeof(wland_user_data.ap_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_APNET: + memcpy(&wland_user_data.ap_net_data, data, + min(sizeof(wland_user_data.ap_net_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_DHCP: + memcpy(&wland_user_data.dhcp, data, + min(sizeof(wland_user_data.dhcp), len)); + break; + case RDA5991H_USER_DATA_FLAG_UART: + memcpy(&wland_user_data.uart, data, + min(sizeof(wland_user_data.uart), len)); + break; + case RDA5991H_USER_DATA_FLAG_RF: + memcpy(&wland_user_data.rf, data, + min(sizeof(wland_user_data.rf), len)); + break; + case RDA5991H_USER_DATA_FLAG_RF_CHANNELS: + memcpy(&wland_user_data.rf_channels, data, + min(sizeof(wland_user_data.rf_channels), len)); + break; + case RDA5991H_USER_DATA_FLAG_PHY: + memcpy(&wland_user_data.phy, data, + min(sizeof(wland_user_data.phy), len)); + break; + case RDA5991H_USER_DATA_FLAG_PHY_CHANNELS: + memcpy(&wland_user_data.phy_channels, data, + min(sizeof(wland_user_data.phy_channels), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_OFFSET: + memcpy(&wland_user_data.tp_offset, data, + min(sizeof(wland_user_data.tp_offset), len)); + break; + default: + return -1; + } + rda5981_erase_flash(user_data_location, sizeof(wland_user_data)); + return rda5981_write_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); +} + +/* + * return 0:ok, else:error. + */ +int rda5981_erase_user_data(u32 flag) +{ + if (!read_flag) { + read_flag = 1; + rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); + } + + if (wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) {//flash init is 0xffffffff + return -1; + } + + if ((wland_user_data.flag & flag) == 0) { + return 0; + } + + wland_user_data.flag &= (~flag); + + if (wland_user_data.flag == 0) { + wland_user_data.flag = RDA5991H_USER_DATA_FLAG_UNINITIALIZED; + } + if (flag & RDA5991H_USER_DATA_FLAG_STA) { + memset(&wland_user_data.sta_data, 0xff, + sizeof(wland_user_data.sta_data)); + } + if (flag & RDA5991H_USER_DATA_FLAG_MAC) { + memset(wland_user_data.mac_addr, 0xff, + sizeof(wland_user_data.mac_addr)); + } + if (flag & RDA5991H_USER_DATA_FLAG_PMK) { + memset(wland_user_data.pmk, 0xff, + sizeof(wland_user_data.pmk)); + } + if (flag & RDA5991H_USER_DATA_FLAG_IP) { + memset(wland_user_data.ip, 0xff, + RDA5991H_USER_DATA_IP_LENGTH); + } + if (flag & RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN) { + memset(&wland_user_data.parter_data_len, 0xff, + sizeof(wland_user_data.parter_data_len)); + } + if (flag & RDA5991H_USER_DATA_FLAG_TX_POWER) { + memset(&wland_user_data.tx_power, 0xff, + sizeof(wland_user_data.tx_power)); + } + if (flag & RDA5991H_USER_DATA_FLAG_XTAL_CAL) { + memset(&wland_user_data.xtal_cal, 0xff, + sizeof(wland_user_data.xtal_cal)); + } + if (flag & RDA5991H_USER_DATA_FLAG_TX_POWER_RF) { + memset(&wland_user_data.tx_power_rf, 0xff, + sizeof(wland_user_data.tx_power_rf)); + } + if (flag & RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_GN) { + memset(&wland_user_data.tx_power_phy_gn, 0xff, + sizeof(wland_user_data.tx_power_phy_gn)); + } + if (flag & RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_B) { + memset(&wland_user_data.tx_power_phy_b, 0xff, + sizeof(wland_user_data.tx_power_phy_b)); + } + if (flag & RDA5991H_USER_DATA_FLAG_AP) { + memset(&wland_user_data.ap_data, 0xff, + sizeof(wland_user_data.ap_data)); + } + if (flag & RDA5991H_USER_DATA_FLAG_APNET) { + memset(&wland_user_data.ap_net_data, 0xff, + sizeof(wland_user_data.ap_net_data)); + } + if (flag & RDA5991H_USER_DATA_FLAG_DHCP) { + memset(&wland_user_data.dhcp, 0xff, + sizeof(wland_user_data.dhcp)); + } + if (flag & RDA5991H_USER_DATA_FLAG_UART) { + memset(&wland_user_data.uart, 0xff, + sizeof(wland_user_data.uart)); + } + if (flag & RDA5991H_USER_DATA_FLAG_RF) { + memset(&wland_user_data.rf, 0xff, + sizeof(wland_user_data.rf)); + } + if (flag & RDA5991H_USER_DATA_FLAG_RF_CHANNELS) { + memset(&wland_user_data.rf_channels, 0xff, + sizeof(wland_user_data.rf_channels)); + } + if (flag & RDA5991H_USER_DATA_FLAG_PHY) { + memset(&wland_user_data.phy, 0xff, + sizeof(wland_user_data.phy)); + } + if (flag & RDA5991H_USER_DATA_FLAG_PHY_CHANNELS) { + memset(&wland_user_data.phy_channels, 0xff, + sizeof(wland_user_data.phy_channels)); + } + if (flag & RDA5991H_USER_DATA_FLAG_TX_POWER_OFFSET) { + memset(&wland_user_data.tp_offset, 0xff, + sizeof(wland_user_data.tp_offset)); + } + rda5981_erase_flash(user_data_location, sizeof(wland_user_data)); + return rda5981_write_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); +} + +/* + * return 0:ok, else:error. + */ +int rda5981_read_user_data(u8 *data, u16 len, u32 flag) +{ + //rda5991h_user_data wland_user_data; + WLAND_DBG(INFO, "Enter, flag:0x%x\r\n", flag); + + if (!read_flag) { + read_flag = 1; + rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); + } + + if (wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) {//flash init is 0xffffffff + return -1; + } + if (strcmp((const char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG)) { + return -2; + } + if ((wland_user_data.flag & flag) == 0) { + return -3; + } + switch (flag) { + case RDA5991H_USER_DATA_FLAG_STA: + memcpy(data, &wland_user_data.sta_data, + min(sizeof(wland_user_data.sta_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_MAC: + memcpy(data, wland_user_data.mac_addr, + min(sizeof(wland_user_data.mac_addr), len)); + break; + case RDA5991H_USER_DATA_FLAG_PMK: + memcpy(data, wland_user_data.pmk, + min(sizeof(wland_user_data.pmk), len)); + break; + case RDA5991H_USER_DATA_FLAG_IP: + memcpy(data, wland_user_data.ip, + min(RDA5991H_USER_DATA_IP_LENGTH, len)); + break; + case RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN: + memcpy(data, &wland_user_data.parter_data_len, + min(sizeof(wland_user_data.parter_data_len), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER: + memcpy(data, &wland_user_data.tx_power, + min(sizeof(wland_user_data.tx_power), len)); + break; + case RDA5991H_USER_DATA_FLAG_XTAL_CAL: + memcpy(data, &wland_user_data.xtal_cal, + min(sizeof(wland_user_data.xtal_cal), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_RF: + memcpy(data, &wland_user_data.tx_power_rf, + min(sizeof(wland_user_data.tx_power_rf), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_GN: + memcpy(data, &wland_user_data.tx_power_phy_gn, + min(sizeof(wland_user_data.tx_power_phy_gn), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_PHY_B: + memcpy(data, &wland_user_data.tx_power_phy_b, + min(sizeof(wland_user_data.tx_power_phy_b), len)); + break; + case RDA5991H_USER_DATA_FLAG_AP: + memcpy(data, &wland_user_data.ap_data, + min(sizeof(wland_user_data.ap_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_APNET: + memcpy(data, &wland_user_data.ap_net_data, + min(sizeof(wland_user_data.ap_net_data), len)); + break; + case RDA5991H_USER_DATA_FLAG_DHCP: + memcpy(data, &wland_user_data.dhcp, + min(sizeof(wland_user_data.dhcp), len)); + break; + case RDA5991H_USER_DATA_FLAG_UART: + memcpy(data, &wland_user_data.uart, + min(sizeof(wland_user_data.uart), len)); + break; + case RDA5991H_USER_DATA_FLAG_RF: + memcpy(data, &wland_user_data.rf, + min(sizeof(wland_user_data.rf), len)); + break; + case RDA5991H_USER_DATA_FLAG_RF_CHANNELS: + memcpy(data, &wland_user_data.rf_channels, + min(sizeof(wland_user_data.rf_channels), len)); + break; + case RDA5991H_USER_DATA_FLAG_PHY: + memcpy(data, &wland_user_data.phy, + min(sizeof(wland_user_data.phy), len)); + break; + case RDA5991H_USER_DATA_FLAG_PHY_CHANNELS: + memcpy(data, &wland_user_data.phy_channels, + min(sizeof(wland_user_data.phy_channels), len)); + break; + case RDA5991H_USER_DATA_FLAG_TX_POWER_OFFSET: + memcpy(data, &wland_user_data.tp_offset, + min(sizeof(wland_user_data.tp_offset), len)); + break; + default: + return -1; + } + return 0; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_mac_addr(u8 *mac_addr) +{ + int ret; + WLAND_DBG(DEBUG, "Enter\r\n"); + ret = rda5981_read_user_data(mac_addr, 6, RDA5991H_USER_DATA_FLAG_MAC); + if (ret) { + WLAND_DBG(ERROR, "read mac addr from flash fail\r\n"); + } else { + WLAND_DBG(INFO, "Done(ret:%d)"MACDBG"\r\n", ret, MAC2STRDBG(mac_addr)); + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_write_mac_addr(u8 *mac_addr) +{ + WLAND_DBG(INFO, "Enter"MACDBG"\r\n", MAC2STRDBG(mac_addr)); + return rda5981_write_user_data(mac_addr, 6, RDA5991H_USER_DATA_FLAG_MAC); +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_uart(void) +{ + return rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_UART); +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_uart(u32 *uart) +{ + int ret; + WLAND_DBG(DEBUG, "Enter\r\n"); + ret = rda5981_read_user_data((u8 *)uart, 4, RDA5991H_USER_DATA_FLAG_UART); + if (ret) { + WLAND_DBG(ERROR, "read uart setting from flash fail\r\n"); + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_write_uart(u32 *uart) +{ + return rda5981_write_user_data((u8 *)uart, 4, RDA5991H_USER_DATA_FLAG_UART); +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_sta_data(void) +{ + int ret; + ret = rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_PMK | + RDA5991H_USER_DATA_FLAG_STA); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_sta_data(char *ssid, char *passwd) +{ + int ret; + wland_sta_data_t sta_data; + + WLAND_DBG(INFO, "Enter\r\n"); + + ret = rda5981_read_user_data((u8 *)&sta_data, sizeof(sta_data), RDA5991H_USER_DATA_FLAG_STA); + if (ret == 0) { + strcpy(ssid, sta_data.ssid); + strcpy(passwd, sta_data.key); + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +extern u8 *rda_get_bssinfo_pmk(void); +extern u8 *rda_get_bssinfo_SSID(void); +int rda5981_flash_write_sta_data(const char *ssid, const char *passwd) +{ + int ret = 0, ret1; + wland_sta_data_t sta_data; + u8 *pbss_info_pmk = NULL, *pbss_info_SSID = NULL; + pbss_info_pmk = rda_get_bssinfo_pmk(); + pbss_info_SSID = rda_get_bssinfo_SSID(); + + WLAND_DBG(INFO, "Enter:ssid:%s,pw:%s, pmk:%02x %02x***\r\n", + ssid, passwd, pbss_info_pmk[0], pbss_info_SSID[1]); + if (strlen(ssid) == 0) { + WLAND_DBG(ERROR, "ssid is NULL\n"); + return -1; + } + + memset(&sta_data, 0xff, sizeof(sta_data)); + strcpy(sta_data.ssid, ssid); + strcpy(sta_data.key, passwd); + if (pbss_info_pmk[0] && memcmp(pbss_info_SSID, ssid, 6)==0) { + ret = rda5981_write_user_data(pbss_info_pmk, sizeof(pbss_info_pmk), RDA5991H_USER_DATA_FLAG_PMK); + } + ret1 = rda5981_write_user_data((u8 *)&sta_data, sizeof(sta_data), RDA5991H_USER_DATA_FLAG_STA); + return ret || ret1;; +} + + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_dhcp_data(void) +{ + int ret;//, ret1; + //WLAND_DBG(INFO, "Enter\r\n"); + ret = rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_DHCP); + //ret1 = rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_PMK); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_dhcp_data(unsigned int *fixip, unsigned int *ip, unsigned int *msk, unsigned int *gw) +{ + int ret; + wland_dhcp_t dhcp; + + WLAND_DBG(INFO, "Enter\r\n"); + + ret = rda5981_read_user_data((u8 *)&dhcp, sizeof(dhcp), RDA5991H_USER_DATA_FLAG_DHCP); + if (ret == 0) { + *fixip = dhcp.fixip; + *ip = dhcp.ip; + *msk = dhcp.msk; + *gw = dhcp.gw; + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_write_dhcp_data(unsigned int fixip, unsigned int ip, unsigned int msk, unsigned int gw) +{ + int ret = 0; + wland_dhcp_t dhcp; + + memset(&dhcp, 0xff, sizeof(dhcp)); + dhcp.fixip = fixip; + dhcp.ip = ip; + dhcp.msk = msk; + dhcp.gw = gw; + ret = rda5981_write_user_data((u8 *)&dhcp, sizeof(dhcp), RDA5991H_USER_DATA_FLAG_DHCP); + return ret; +} + + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_ap_data(void) +{ + int ret; + ret = rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_AP); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_write_ap_data(const char *ssid, const char *passwd, unsigned char channel) +{ + int ret = 0; + wland_ap_data_t ap_data; + + if (strlen(ssid) == 0) { + WLAND_DBG(ERROR, "ssid is NULL\n"); + return -1; + } + + memset(&ap_data, 0xff, sizeof(ap_data)); + strcpy(ap_data.ssid, ssid); + strcpy(ap_data.key, passwd); + ap_data.channel = channel; + ret = rda5981_write_user_data((u8 *)&ap_data, sizeof(ap_data), RDA5991H_USER_DATA_FLAG_AP); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_ap_data(char *ssid, char *passwd, unsigned char *channel) +{ + int ret; + wland_ap_data_t ap_data; + + WLAND_DBG(INFO, "Enter\r\n"); + + ret = rda5981_read_user_data((u8 *)&ap_data, sizeof(ap_data), RDA5991H_USER_DATA_FLAG_AP); + if (ret == 0) { + strcpy(ssid, ap_data.ssid); + strcpy(passwd, ap_data.key); + *channel = ap_data.channel; + } + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_erase_ap_net_data(void) +{ + int ret; + ret = rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_APNET); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_write_ap_net_data(unsigned int ip, unsigned int msk, unsigned int gw, + unsigned int dhcps, unsigned int dhcpe) +{ + int ret = 0; + wland_ap_net_data_t ap_net_data; + + WLAND_DBG(INFO, "Enter\r\n"); + + memset(&ap_net_data, 0xff, sizeof(ap_net_data)); + ap_net_data.ip = ip; + ap_net_data.msk = msk; + ap_net_data.gw = gw; + ap_net_data.dhcps = dhcps; + ap_net_data.dhcpe = dhcpe; + + ret = rda5981_write_user_data((u8 *)&ap_net_data, sizeof(ap_net_data), RDA5991H_USER_DATA_FLAG_APNET); + return ret; +} + +/* + * return 0:ok, else:error. + */ +int rda5981_flash_read_ap_net_data(unsigned int *ip, unsigned int *msk, unsigned int *gw, + unsigned int *dhcps, unsigned int *dhcpe) +{ + int ret = 0; + wland_ap_net_data_t ap_net_data; + + WLAND_DBG(INFO, "Enter\r\n"); + + ret = rda5981_read_user_data((u8 *)&ap_net_data, sizeof(ap_net_data), RDA5991H_USER_DATA_FLAG_APNET); + if (ret == 0) { + *ip = ap_net_data.ip; + *msk = ap_net_data.msk; + *gw = ap_net_data.gw; + *dhcps = ap_net_data.dhcps; + *dhcpe = ap_net_data.dhcpe; + } + return ret; +} + + +int rda5981_flash_read_pmk(u8 *pmk) +{ + WLAND_DBG(INFO, "Enter\r\n"); + return rda5981_read_user_data(pmk, 32, RDA5991H_USER_DATA_FLAG_PMK); +} + +int rda5981_flash_read_ip_addr(u8 *ip_addr, u8 *server_addr) +{ + int ret; + u8 buf[RDA5991H_USER_DATA_IP_LENGTH]; + WLAND_DBG(DEBUG, "Enter\r\n"); + ret = rda5981_read_user_data(buf, RDA5991H_USER_DATA_IP_LENGTH, RDA5991H_USER_DATA_FLAG_IP); + if (ret) { + WLAND_DBG(ERROR, "read ip addr from flash fail\r\n"); + } else { + memcpy(ip_addr, buf, 4); + memcpy(server_addr, buf+4, 4); + WLAND_DBG(INFO, "read ip:%u.%u.%u.%u\r\n", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); + } + return ret; +} + +int rda5981_flash_write_ip_addr(u8 *ip_addr, u8 *server_addr) +{ + u8 buf[RDA5991H_USER_DATA_IP_LENGTH]; + WLAND_DBG(INFO, "write:%u.%u.%u.%u\r\n", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); + memcpy(buf, ip_addr, 4); + memcpy(buf+4, server_addr, 4); + return rda5981_write_user_data(buf, RDA5991H_USER_DATA_IP_LENGTH, RDA5991H_USER_DATA_FLAG_IP); +} + +int rda5981_flash_read_3rdparter_data_length() +{ + int ret; + u32 data_len = 0; + + WLAND_DBG(INFO, "Enter\r\n"); + ret = rda5981_read_user_data((u8 *)(&data_len), 4, RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN); + if (ret) { + WLAND_DBG(ERROR, "read parter data length from flash fail(%d)\r\n", ret); + return -1; + } + return data_len; +} + +int rda5981_flash_read_3rdparter_data(u8 *buf, u32 buf_len) +{ + int ret; + u32 data_len = 0; + + WLAND_DBG(INFO, "Enter: %u\r\n", buf_len); + ret = rda5981_read_user_data((u8 *)(&data_len), 4, RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN); + if (ret) { + WLAND_DBG(ERROR, "read parter data length from flash fail(%d)\r\n", ret); + return -1; + } + + if (buf_len < data_len) + WLAND_DBG(ERROR, "The buf you prepared is to small(%u:%u)\r\n", buf_len, data_len); + + data_len = min(buf_len, data_len); + + ret = rda5981_read_flash(third_parter_data_location, + (char *)(buf), data_len); + if (ret) { + WLAND_DBG(ERROR, "read parter data from flash fail(%d)\r\n", ret); + return -2; + } + + return data_len; +} + +int rda5981_flash_erase_3rdparter_data() +{ + return rda5981_erase_user_data(RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN); +} + +int rda5981_flash_write_3rdparter_data(const u8 *buf, u32 buf_len) +{ + int ret; + + WLAND_DBG(INFO, "Enter: %u\r\n", buf_len); + if (buf_len > third_parter_data_len) { + WLAND_DBG(ERROR, "buf too long(%u), we have only %x flash space\r\n", + buf_len, third_parter_data_len); + return -1; + } + + rda5981_erase_flash(third_parter_data_location, buf_len); + ret = rda5981_write_flash(third_parter_data_location, + (char *)(buf), buf_len); + if (ret) { + WLAND_DBG(ERROR, "write parter data to flash fail\r\n"); + return -2; + } + + ret = rda5981_write_user_data((u8 *)(&buf_len), 4, RDA5991H_USER_DATA_FLAG_PARTER_DATA_LEN); + if (ret) { + WLAND_DBG(ERROR, "write parter data length to flash fail\r\n"); + return -3; + } + return 0; +} + +int rda5981_set_flash_size(const u32 size) +{ + + WLAND_DBG(INFO, "Enter set flash size: %x\r\n", size); + if (size == 0x100000 || + size == 0x200000 || + size == 0x400000) { + flash_size = size; + return 0; + } + + return -1; +} + +int rda5981_set_user_data_addr(const u32 sys_data_addr, + const u32 user_data_addr, const u32 user_data_len) +{ + WLAND_DBG(INFO, "Enter set userdata addr: %x:%x:%x\r\n", + sys_data_addr, user_data_addr, user_data_len); + if ((sys_data_addr&(SECTOR_SIZE-1)) || (user_data_addr&(SECTOR_SIZE-1))) { + return -1; + } + if (sys_data_addr == user_data_addr) { + return -2; + } + + if (sys_data_addr<=0x18001000 || user_data_addr<=0x18001000) { + return -3; + } + if (sys_data_addr+0x1000 > 0x18000000+flash_size) { + return -4; + } + if (user_data_addr+user_data_len > 0x18000000+flash_size) { + return -5; + } + + user_data_location = sys_data_addr; + third_parter_data_location = user_data_addr; + third_parter_data_len= user_data_len; + return 0; +} + +int rda5981_write_user_data_regs(u8 *reg, u8 *value, u32 flag) +{ + u16 reg16 = 0; + u32 reg32 = 0; + u8 idx = 0; + + if (!read_flag) { + if (0 == rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data))) { + read_flag = 1; + } else { + return -1; + } + } + + if ((wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) || + strcmp((const char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG)) { + memset(&wland_user_data, 0xff, sizeof(wland_user_data)); + wland_user_data.flag = flag; + strcpy((char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG); + } + + wland_user_data.flag |= flag; + + switch (flag) { + case RDA5991H_USER_DATA_FLAG_RF: + if (wland_user_data.rf.valid != 1) { + wland_user_data.rf.valid = 1; + wland_user_data.rf.flag = 0; + } + + reg16 = *((u16 *)reg); + if (wland_user_data.rf.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf.flag & BIT(idx)) && + (wland_user_data.rf.reg_val[idx][0] == reg16)) { + wland_user_data.rf.reg_val[idx][1] = *((u16 *)value); + break; + } else { + continue; + } + } + if ((8 == idx) && (0xFF == wland_user_data.rf.flag)) + return -2; + } + + if ((8 == idx) || (0 == wland_user_data.rf.flag)) { + for (idx = 0; idx < 8; idx++) { + if (!(wland_user_data.rf.flag & BIT(idx))) { + wland_user_data.rf.reg_val[idx][0] = reg16; + wland_user_data.rf.reg_val[idx][1] = *((u16 *)value); + wland_user_data.rf.flag |= BIT(idx); + break; + } else { + continue; + } + } + } + + break; + case RDA5991H_USER_DATA_FLAG_RF_CHANNELS: + if (wland_user_data.rf_channels.valid != 1) { + wland_user_data.rf_channels.valid = 1; + wland_user_data.rf_channels.flag = 0; + } + + reg16 = *((u16 *)reg); + if (wland_user_data.rf_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf_channels.flag & BIT(idx)) && + (wland_user_data.rf_channels.reg_val[idx][0] == reg16)) { + memcpy(&wland_user_data.rf_channels.reg_val[idx][1], value, 14 * sizeof(u16)); + break; + } else { + continue; + } + } + if ((8 == idx) && (0xFF == wland_user_data.rf_channels.flag)) { + return -2; + } + } + + if ((8 == idx) || (0 == wland_user_data.rf_channels.flag)) { + for (idx = 0; idx < 8; idx++) { + if (!(wland_user_data.rf_channels.flag & BIT(idx))) { + wland_user_data.rf_channels.reg_val[idx][0] = reg16; + memcpy(&wland_user_data.rf_channels.reg_val[idx][1], value, 14 * sizeof(u16)); + wland_user_data.rf_channels.flag |= BIT(idx); + break; + } else { + continue; + } + } + } + break; + case RDA5991H_USER_DATA_FLAG_PHY: + if (wland_user_data.phy.valid != 1) { + wland_user_data.phy.valid = 1; + wland_user_data.phy.flag = 0; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy.flag & BIT(idx)) && + (wland_user_data.phy.reg_val[idx][0] == reg32)) { + wland_user_data.phy.reg_val[idx][1] = *((u32 *)value); + break; + } else { + continue; + } + } + if ((8 == idx) && (0xFF == wland_user_data.phy.flag)) { + return -2; + } + } + + if ((8 == idx) || (0 == wland_user_data.phy.flag)) { + for (idx = 0; idx < 8; idx++) { + if (!(wland_user_data.phy.flag & BIT(idx))) { + wland_user_data.phy.reg_val[idx][0] = reg32; + wland_user_data.phy.reg_val[idx][1] = *((u32 *)value); + wland_user_data.phy.flag |= BIT(idx); + break; + } else { + continue; + } + } + } + break; + case RDA5991H_USER_DATA_FLAG_PHY_CHANNELS: + if (wland_user_data.phy_channels.valid != 1) { + wland_user_data.phy_channels.valid = 1; + wland_user_data.phy_channels.flag = 0; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy_channels.flag & BIT(idx)) && + (wland_user_data.phy_channels.reg_val[idx][0] == reg32)) { + memcpy(&wland_user_data.phy_channels.reg_val[idx][1], value, 14 * sizeof(u32)); + break; + } else { + continue; + } + } + if ((8 == idx) && (0xFF == wland_user_data.phy_channels.flag)) { + return -2; + } + } + + if ((8 == idx) || (0 == wland_user_data.phy_channels.flag)) { + for (idx = 0; idx < 8; idx++) { + if (!(wland_user_data.phy_channels.flag & BIT(idx))) { + wland_user_data.phy_channels.reg_val[idx][0] = reg32; + memcpy(&wland_user_data.phy_channels.reg_val[idx][1], value, 14 * sizeof(u32)); + wland_user_data.phy_channels.flag |= BIT(idx); + break; + } else { + continue; + } + } + } + break; + default: + WLAND_DBG(ERROR, "Unknown flag:0x%08x\n", flag); + return -3; + } + + rda5981_erase_flash(user_data_location, sizeof(wland_user_data)); + return rda5981_write_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); +} + +int rda5981_erase_user_data_regs(u8 *reg, u32 flag) +{ + u16 reg16 = 0; + u32 reg32 = 0; + u8 idx = 0; + + if (!read_flag) { + if (0 == rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data))) { + read_flag = 1; + } else { + return -1; + } + } + + if (wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) {//flash init is 0xffffffff + return -1; + } + if ((wland_user_data.flag & flag) == 0) { + return 0; + } + switch (flag) { + case RDA5991H_USER_DATA_FLAG_RF: + if (wland_user_data.rf.valid != 1) { + return 0; + } + + reg16 = *((u16 *)reg); + if (wland_user_data.rf.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf.flag & BIT(idx)) && + (wland_user_data.rf.reg_val[idx][0] == reg16)) { + memset(&wland_user_data.rf.reg_val[idx][0], 0xFF, 2 * sizeof(u16)); + wland_user_data.rf.flag &= ~BIT(idx); + break; + } else { + continue; + } + } + } + + if (0 == wland_user_data.rf.flag) { + wland_user_data.rf.valid = 0xFFFFFFFF; + wland_user_data.rf.flag = 0xFFFFFFFF; + wland_user_data.flag &= (~flag); + } + + break; + case RDA5991H_USER_DATA_FLAG_RF_CHANNELS: + if (wland_user_data.rf_channels.valid != 1) { + return 0; + } + + reg16 = *((u16 *)reg); + if (wland_user_data.rf_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf_channels.flag & BIT(idx)) && + (wland_user_data.rf_channels.reg_val[idx][0] == reg16)) { + memset(&wland_user_data.rf_channels.reg_val[idx][0], 0xFF, 15 * sizeof(u16)); + wland_user_data.rf_channels.flag &= ~BIT(idx); + break; + } else { + continue; + } + } + } + + if (0 == wland_user_data.rf_channels.flag) { + wland_user_data.rf_channels.valid = 0xFFFFFFFF; + wland_user_data.rf_channels.flag = 0xFFFFFFFF; + wland_user_data.flag &= (~flag); + } + + break; + case RDA5991H_USER_DATA_FLAG_PHY: + if (wland_user_data.phy.valid != 1) { + return 0; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy.flag & BIT(idx)) && + (wland_user_data.phy.reg_val[idx][0] == reg32)) { + memset(&wland_user_data.phy.reg_val[idx][0], 0xFF, 2 * sizeof(u32)); + wland_user_data.phy.flag &= ~BIT(idx); + break; + } else { + continue; + } + } + } + + if (0 == wland_user_data.phy.flag) { + wland_user_data.phy.valid = 0xFFFFFFFF; + wland_user_data.phy.flag = 0xFFFFFFFF; + wland_user_data.flag &= (~flag); + } + + break; + case RDA5991H_USER_DATA_FLAG_PHY_CHANNELS: + if (wland_user_data.phy_channels.valid != 1) { + return 0; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy_channels.flag & BIT(idx)) && + (wland_user_data.phy_channels.reg_val[idx][0] == reg32)) { + memset(&wland_user_data.phy_channels.reg_val[idx][0], 0xFF, 15 * sizeof(u32)); + wland_user_data.phy_channels.flag &= ~BIT(idx); + break; + } else { + continue; + } + } + } + + if (0 == wland_user_data.phy_channels.flag) { + wland_user_data.phy_channels.valid = 0xFFFFFFFF; + wland_user_data.phy_channels.flag = 0xFFFFFFFF; + wland_user_data.flag &= (~flag); + } + + break; + default: + WLAND_DBG(ERROR, "Unknown flag:0x%08x\n", flag); + return -3; + } + + rda5981_erase_flash(user_data_location, sizeof(wland_user_data)); + return rda5981_write_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data)); +} + + +int rda5981_read_user_data_regs(u8 *reg, u8 *value, u32 flag) +{ + u16 reg16 = 0; + u32 reg32 = 0; + u8 idx = 0; + + if (!read_flag) { + if(0 == rda5981_read_flash(user_data_location, + (char *)(&wland_user_data), sizeof(wland_user_data))) { + read_flag = 1; + } else { + return -1; + } + } + + if (wland_user_data.flag & RDA5991H_USER_DATA_FLAG_UNINITIALIZED) {//flash init is 0xffffffff + return -1; + } + if (strcmp((const char *)(wland_user_data.rda5981_flag), RDA5981_FLAG_FLAG)) { + return -2; + } + if ((wland_user_data.flag & flag) == 0) { + return -3; + } + switch (flag) { + case RDA5991H_USER_DATA_FLAG_RF: + if (wland_user_data.rf.valid != 1) { + return -4; + } + + reg16 = *((u16 *)reg); + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf.flag & BIT(idx)) && + (wland_user_data.rf.reg_val[idx][0] == reg16)) { + memcpy(value, &wland_user_data.rf.reg_val[idx][1], sizeof(u16)); + break; + } else { + continue; + } + } + + if (8 == idx) { + return -4; + } + break; + case RDA5991H_USER_DATA_FLAG_RF_CHANNELS: + if (wland_user_data.rf_channels.valid != 1) { + return -4; + } + + reg16 = *((u16 *)reg); + if (wland_user_data.rf_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.rf_channels.flag & BIT(idx)) && + (wland_user_data.rf_channels.reg_val[idx][0] == reg16)) { + memcpy(value, &wland_user_data.rf_channels.reg_val[idx][1], 14 * sizeof(u16)); + break; + } else { + continue; + } + } + } + + if (8 == idx) { + return -4; + } + break; + case RDA5991H_USER_DATA_FLAG_PHY: + if (wland_user_data.phy.valid != 1) { + return -4; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy.flag & BIT(idx)) && + (wland_user_data.phy.reg_val[idx][0] == reg32)) { + memcpy(value, &wland_user_data.phy.reg_val[idx][1], sizeof(u32)); + break; + } else { + continue; + } + } + } + + if (8 == idx) { + return -4; + } + break; + case RDA5991H_USER_DATA_FLAG_PHY_CHANNELS: + if (wland_user_data.phy_channels.valid != 1) { + return -4; + } + + reg32 = *((u32 *)reg); + if (wland_user_data.phy_channels.flag != 0) { + for (idx = 0; idx < 8; idx++) { + if ((wland_user_data.phy_channels.flag & BIT(idx)) && + (wland_user_data.phy_channels.reg_val[idx][0] == reg32)) { + memcpy(value, &wland_user_data.phy_channels.reg_val[idx][1], 14 * sizeof(u32)); + break; + } else { + continue; + } + } + } + + if (8 == idx) { + return -4; + } + break; + default: + WLAND_DBG(ERROR, "Unknown flag:0x%08x\n", flag); + return -3; + } + + return 0; +} + +int rda5981_flash_get_mid(u8 *mid) +{ + *mid = 0xC8; + + return 0; +} + +int rda5981_flash_get_did(u8 *did) +{ + *did = 0x13; + + return 0; +} + +int rda5981_flash_get_jdid(u16 *jdid) +{ + *jdid = 0x4014; + + return 0; +} + +int rda5981_read_default_config(char *buf, u32 len, u32 flag) +{ + int ret = 0; + u32 addr; + u32 addr_offset = 0; + char *temp_buf = NULL, *temp_buf_aligned; + + switch (flag) { + case RDA5981_VBAT_CAL: + addr = 0x18000088; + break; + case RDA5981_GPADC0_CAL: + case RDA5981_GPADC1_CAL: + addr = 0x1800008C; + break; + case RDA5981_PRODUCT_ID: + addr = 0x18000084; + break; + case RDA5981_POWER_CLASS: + addr = 0x18000085; + break; + default: + WLAND_DBG(ERROR, "Unknown flag\n"); + return -1; + } + + addr_offset = addr % 4; + addr = (addr - addr_offset) & (flash_size -1); + + if (((u32)buf % 4) || (addr_offset != 0)) { + temp_buf = (char *)malloc(addr_offset + len + 4); + if (temp_buf == NULL) { + ret = -1; + goto out; + } + if ((u32)temp_buf % 4) { + temp_buf_aligned = temp_buf + (4 - (u32)temp_buf % 4); + } else { + temp_buf_aligned = temp_buf; + } + } else { + temp_buf_aligned = buf; + } + + core_util_critical_section_enter(); + spi_flash_flush_cache(); + SPI_FLASH_READ_DATA_FOR_MBED((void *)addr, temp_buf_aligned, (len + addr_offset)); + core_util_critical_section_exit(); + + if (temp_buf_aligned != buf) { + memcpy(buf, temp_buf_aligned + addr_offset, len); + } +out: + if (temp_buf) { + free(temp_buf); + } + return ret; +} + +int rda5981_flash_read_vbat_cal(float *k, float *b) +{ + int ret = 0; + u32 value = 0; + u32 x1 = 0;//y1 3.0f + u32 x2 = 0;//y2 4.2f + float k_tmp = 0; + float b_tmp = 0; + + ret = rda5981_read_default_config((char *)&value, 4, RDA5981_VBAT_CAL); + + if (ret < 0) { + WLAND_DBG(ERROR, "read vbat_cal form flash fail\n"); + return -1; + } + if ((0 == (value & 0xFFFFFUL)) || (0xFFFFFUL == (value & 0xFFFFFUL))) { + WLAND_DBG(ERROR, "invalid vbat_cal:0x%08x\n", value); + return -1; + } else { + x1 = value & 0x3FFUL; + x2 = (value >> 10) & 0x3FFUL; + } + + if (x1 == x2) { + return -1; + } + + k_tmp = (4.2f - 3.0f) / (float)(x2 - x1); + b_tmp = 4.2f - k_tmp * x2; + + *k = k_tmp; + *b = b_tmp; + + return ret; +} diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash_wp.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash_wp.c new file mode 100644 index 00000000000..6ff01816407 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_flash_wp.c @@ -0,0 +1,366 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mbed_interface.h" +#include "wland_flash.h" + +//#define FLASH_PROTECT_ENABLE + +#define FLASH_CTL_REG_BASE 0x17fff000 +#define FLASH_CTL_TX_CMD_ADDR_REG (FLASH_CTL_REG_BASE + 0x00) +#define FLASH_CTL_TX_BLOCK_SIZE_REG (FLASH_CTL_REG_BASE + 0x04) +#define FLAHS_CTL_TX_FIFO_DATA_REG (FLASH_CTL_REG_BASE + 0x08) +#define FLASH_CTL_STATUS_REG (FLASH_CTL_REG_BASE + 0x0c) +#define FLAHS_CTL_RX_FIFO_DATA_REG (FLASH_CTL_REG_BASE + 0x10) + +#define WRITE_REG32(REG, VAL) ((*(volatile unsigned int*)(REG)) = (unsigned int)(VAL)) +#define WRITE_REG8(REG, VAL) ((*(volatile unsigned char*)(REG)) = (unsigned char)(VAL)) +#define MREAD_WORD(addr) *((volatile unsigned int *)(addr)) + +#define MID_GD 0xC8 +#define MID_WINBOND 0xEF + +#define FLASH_1M 0x100000 +#define FLASH_2M 0x200000 +#define FLASH_4M 0x400000 +extern unsigned int flash_size; + +#ifdef FLASH_PROTECT_ENABLE + +#define FLASH_WP_MASK 0x407c +#define FLASH_WP_NONE 0x0000 +#define FLASH_WP_ALL 0x1c + +#define FLASH_4M_WP_4K 0x0064 +#define FLASH_4M_WP_8K 0x0068 +#define FLASH_4M_WP_16K 0x006c +#define FLASH_4M_WP_32K 0x0070 +#define FLASH_4M_WP_1_64 0x0024 +#define FLASH_4M_WP_1_32 0x0028 +#define FLASH_4M_WP_1_16 0x002c +#define FLASH_4M_WP_1_8 0x0030 +#define FLASH_4M_WP_1_4 0x0034 +#define FLASH_4M_WP_1_2 0x0038 +#define FLASH_4M_WP_3_4 0x4014 +#define FLASH_4M_WP_7_8 0x4010 +#define FLASH_4M_WP_15_16 0x400c +#define FLASH_4M_WP_31_32 0x4008 +#define FLASH_4M_WP_63_64 0x4004 +#define FLASH_4M_WP_127_128 0x4058 +#define FLASH_4M_WP_255_256 0x404C +#define FLASH_4M_WP_1023_1024 0x4044 + +#define FLASH_2M_WP_4K 0x0064 +#define FLASH_2M_WP_8K 0x0068 +#define FLASH_2M_WP_16K 0x006c +#define FLASH_2M_WP_32K 0x0070 +#define FLASH_2M_WP_1_32 0x0024 +#define FLASH_2M_WP_1_16 0x0028 +#define FLASH_2M_WP_1_8 0x002c +#define FLASH_2M_WP_1_4 0x0050 +#define FLASH_2M_WP_1_2 0x0051 +#define FLASH_2M_WP_3_4 0x4010 +#define FLASH_2M_WP_7_8 0x400c +#define FLASH_2M_WP_15_16 0x4004 +#define FLASH_2M_WP_31_32 0x4000 +#define FLASH_2M_WP_63_64 0x4050 +#define FLASH_2M_WP_127_128 0x404c +#define FLASH_2M_WP_255_256 0x4048 +#define FLASH_2M_WP_511_512 0x4044 + + +#define FLASH_1M_WP_4K 0x0064 +#define FLASH_1M_WP_8K 0x0068 +#define FLASH_1M_WP_16K 0x006c +#define FLASH_1M_WP_32K 0x0070 +#define FLASH_1M_WP_1_16 0x0024 +#define FLASH_1M_WP_1_8 0x0028 +#define FLASH_1M_WP_1_4 0x002c +#define FLASH_1M_WP_1_2 0x0050 +#define FLASH_1M_WP_3_4 0x400C +#define FLASH_1M_WP_7_8 0x4008 +#define FLASH_1M_WP_15_16 0x4004 +#define FLASH_1M_WP_31_32 0x4050 +#define FLASH_1M_WP_63_64 0x404C +#define FLASH_1M_WP_127_128 0x4048 +#define FLASH_1M_WP_255_256 0x4044 + +static unsigned short flash_wrtie_protect_4M(unsigned short status, unsigned int offset) +{ + unsigned int wp = FLASH_WP_NONE; + if (offset >= flash_size - flash_size/1024) { + wp = FLASH_4M_WP_1023_1024; + } else if(offset >= flash_size - flash_size/256) { + wp = FLASH_4M_WP_255_256; + } else if(offset >= flash_size - flash_size/128) { + wp = FLASH_4M_WP_127_128; + } else if(offset >= flash_size - flash_size/64) { + wp = FLASH_4M_WP_63_64; + } else if(offset >= flash_size - flash_size/32) { + wp = FLASH_4M_WP_31_32; + } else if(offset >= flash_size - flash_size/16) { + wp = FLASH_4M_WP_15_16; + } else if(offset >= flash_size - flash_size/8) { + wp = FLASH_4M_WP_7_8; + } else if(offset >= flash_size - flash_size/4) { + wp = FLASH_4M_WP_3_4; + } else if(offset >= flash_size/2) { + wp = FLASH_4M_WP_1_2; + } else if(offset >= flash_size/4) { + wp = FLASH_4M_WP_1_4; + } else if(offset >= flash_size/8) { + wp = FLASH_4M_WP_1_8; + } else if(offset >= flash_size/16) { + wp = FLASH_4M_WP_1_16; + } else if(offset >= flash_size/32) { + wp = FLASH_4M_WP_1_32; + } else if(offset >= flash_size/64) { + wp = FLASH_4M_WP_1_64; + } else if(offset >= 32 * 1024) { + wp = FLASH_4M_WP_32K; + } else if(offset >= 16 * 1024) { + wp = FLASH_4M_WP_16K; + } else if(offset >= 8 * 1024) { + wp = FLASH_4M_WP_8K; + } else if(offset >= 4 * 1024) { + wp = FLASH_4M_WP_4K; + } + + return (status & ~FLASH_WP_MASK) | wp; + +} + +static unsigned short flash_wrtie_protect_2M(unsigned short status, unsigned int offset) +{ + unsigned int wp = FLASH_WP_NONE; + if (offset >= flash_size - flash_size/256) { + wp = FLASH_2M_WP_255_256; + } else if(offset >= flash_size - flash_size/128) { + wp = FLASH_2M_WP_127_128; + } else if(offset >= flash_size - flash_size/64) { + wp = FLASH_2M_WP_63_64; + } else if(offset >= flash_size - flash_size/32) { + wp = FLASH_2M_WP_31_32; + } else if(offset >= flash_size - flash_size/16) { + wp = FLASH_2M_WP_15_16; + } else if(offset >= flash_size - flash_size/8) { + wp = FLASH_2M_WP_7_8; + } else if(offset >= flash_size - flash_size/4) { + wp = FLASH_2M_WP_3_4; + } else if(offset >= flash_size/2) { + wp = FLASH_2M_WP_1_2; + } else if(offset >= flash_size/4) { + wp = FLASH_2M_WP_1_4; + } else if(offset >= flash_size/8) { + wp = FLASH_2M_WP_1_8; + } else if(offset >= flash_size/16) { + wp = FLASH_2M_WP_1_16; + } else if(offset >= flash_size/32) { + wp = FLASH_2M_WP_1_32; + } else if(offset >= 32 * 1024) { + wp = FLASH_2M_WP_32K; + } else if(offset >= 16 * 1024) { + wp = FLASH_2M_WP_16K; + } else if(offset >= 8 * 1024) { + wp = FLASH_2M_WP_8K; + } else if(offset >= 4 * 1024) { + wp = FLASH_2M_WP_4K; + } + + return (status & ~FLASH_WP_MASK) | wp; + +} + +static unsigned short flash_wrtie_protect_1M(unsigned short status, unsigned int offset) +{ + unsigned int wp = FLASH_WP_NONE; + + if (offset >= flash_size - flash_size/256) { + wp = FLASH_1M_WP_255_256; + } else if(offset >= flash_size - flash_size/128) { + wp = FLASH_1M_WP_127_128; + } else if(offset >= flash_size - flash_size/64) { + wp = FLASH_1M_WP_63_64; + } else if(offset >= flash_size - flash_size/32) { + wp = FLASH_1M_WP_31_32; + } else if(offset >= flash_size - flash_size/16) { + wp = FLASH_1M_WP_15_16; + } else if(offset >= flash_size - flash_size/8) { + wp = FLASH_1M_WP_7_8; + } else if(offset >= flash_size - flash_size/4) { + wp = FLASH_1M_WP_3_4; + } else if(offset >= flash_size/2) { + wp = FLASH_1M_WP_1_2; + } else if(offset >= flash_size/4) { + wp = FLASH_1M_WP_1_4; + } else if(offset >= flash_size/8) { + wp = FLASH_1M_WP_1_8; + } else if(offset >= flash_size/16) { + wp = FLASH_1M_WP_1_16; + } else if(offset >= 32 * 1024) { + wp = FLASH_1M_WP_32K; + } else if(offset >= 16 * 1024) { + wp = FLASH_1M_WP_16K; + } else if(offset >= 8 * 1024) { + wp = FLASH_1M_WP_8K; + } else if(offset >= 4 * 1024) { + wp = FLASH_1M_WP_4K; + } + + return (status & ~FLASH_WP_MASK) | wp; + +} + +void flash_wrtie_protect_all() +{ + unsigned short status; + unsigned char r1, r2; + core_util_critical_section_enter(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x05); + wait_busy_down(); + r1 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x35); + wait_busy_down(); + r2 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + //mbed_error_printf("status %x %x\r\n", r2, r1); + + status = (r2 << 8) | r1; + status = (status & ~FLASH_WP_MASK) | FLASH_WP_ALL; + //mbed_error_printf("status %04x\r\n", status); + + spi_write_reset(); + wait_busy_down(); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, (status&0xff)); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, ((status>>8)&0xff)); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x01); + wait_busy_down(); + spi_wip_reset(); + core_util_critical_section_exit(); + return; +} + +void flash_wrtie_protect_none() +{ + unsigned short status; + unsigned char r1, r2; + core_util_critical_section_enter(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x05); + wait_busy_down(); + r1 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x35); + wait_busy_down(); + r2 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + //mbed_error_printf("status %x %x\r\n", r2, r1); + + status = (r2 << 8) | r1; + status = status & ~FLASH_WP_MASK; + //mbed_error_printf("status %04x\r\n", status); + + spi_write_reset(); + wait_busy_down(); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, (status&0xff)); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, ((status>>8)&0xff)); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x01); + wait_busy_down(); + spi_wip_reset(); + core_util_critical_section_exit(); + return; +} + +void flash_wrtie_protect(unsigned int offset) +{ + unsigned short status; + unsigned char r1, r2; + core_util_critical_section_enter(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x05); + wait_busy_down(); + r1 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x35); + wait_busy_down(); + r2 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + //mbed_error_printf("status %x %x\r\n", r2, r1); + + status = (r2 << 8) | r1; + if (flash_size == FLASH_4M) { + status = flash_wrtie_protect_4M(status, offset); + } else if(flash_size == FLASH_2M) { + status = flash_wrtie_protect_2M(status, offset); + } else if(flash_size == FLASH_1M) { + status = flash_wrtie_protect_1M(status, offset); + } else [ + LWIP_DEBUGF(NETIF_DEBUG,"flash_size is error\r\n"); + } + //mbed_error_printf("status %04x\r\n", status); + + spi_write_reset(); + wait_busy_down(); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, (status&0xff)); + WRITE_REG8(FLAHS_CTL_TX_FIFO_DATA_REG, ((status>>8)&0xff)); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x01); + wait_busy_down(); + spi_wip_reset(); + core_util_critical_section_exit(); + return; +} +#else +void flash_wrtie_protect_all() +{ + return; +} + +void flash_wrtie_protect_none() +{ + return; +} + +void flash_wrtie_protect(unsigned int offset) +{ + return; +} + +#endif +void rda5981_flash_init() +{ + unsigned int status3, status4, status5; + core_util_critical_section_enter(); + WRITE_REG32(FLASH_CTL_TX_BLOCK_SIZE_REG, 3<<8); + status3 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + status4 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + status5 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + + wait_busy_down(); + spi_wip_reset(); + WRITE_REG32(FLASH_CTL_TX_CMD_ADDR_REG, 0x9F); + wait_busy_down(); + //WRITE_REG32(FLASH_CTL_TX_BLOCK_SIZE_REG, 3<<8); + //wait_busy_down(); + status3 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + status4 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + status5 = MREAD_WORD(FLAHS_CTL_RX_FIFO_DATA_REG); + core_util_critical_section_exit(); + + if ((status5&0xff != 0x14) && (status5&0xff != 0x15) && (status5&0xff != 0x16)) { + mbed_error_printf("flash size error\r\n"); + return; + } + flash_size = (1 << (status5&0xff)); + flash_wrtie_protect_all(); + + return; +} diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_ota.c b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_ota.c new file mode 100644 index 00000000000..05a85abc0a5 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/src/wland_ota.c @@ -0,0 +1,145 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "wland_ota.h" +#include "wland_flash.h" +#include "rda5981_ota.h" +#include "wland_dbg.h" +#include "wland_types.h" +#include "critical.h" +#include +#include + +#define IMAGE_MAGIC 0xAEAE + +u32 wland_ota_partition_addr = 0; +u32 wland_ota_partition_len = 0; +u32 wland_crc_result = ~0UL; + +static u32 crc32(const u8 *p, u32 len, u32 crc) +{ + const u32 *crc32_tab = (const u32 *)CRC32_TABLE_ADDR; + + if (rda_ccfg_hwver() >= 4) { + crc32_tab = (const u32 *)CRC32_TABLE_ADDR_4; + } + /* Calculate CRC */ + while(len--) { + crc = crc32_tab[((crc & 0xFF) ^ *p++)] ^ (crc >> 8); + } + + return crc; +} + +static int rda5981_ota_erase_flash(u32 addr, u32 len) +{ + addr &= (flash_size -1); + rda5981_spi_erase_partition((void *)addr, len); + return 0; +} +//write without erase +static int rda5981_ota_write_flash(u32 addr, char *buf, u32 len) +{ + int ret = 0; + u8 *temp_buf = NULL, *temp_buf_aligned; + + addr &= (flash_size -1); + if ((u32)buf % 4) { + temp_buf = malloc(len + 3); + if (temp_buf == NULL) { + goto out; + } + if ((u32)temp_buf % 4) { + temp_buf_aligned = temp_buf + (4-(u32)temp_buf%4); + } else { + temp_buf_aligned = temp_buf; + } + memcpy(temp_buf_aligned, (unsigned char *)buf, len); + } else { + temp_buf_aligned = (u8 *)buf; + } + core_util_critical_section_enter(); + RDA5991H_WRITE_FLASH(addr, temp_buf_aligned, len); + core_util_critical_section_exit(); + +out: + if (temp_buf) { + free(temp_buf); + } + return ret; +} + +int rda5981_write_partition_start(u32 addr, u32 img_len) +{ + if (addr < 0x18001000 || addr+img_len>0x18000000+flash_size) { + WLAND_DBG(ERROR,"write partition start addr error. (0x%08x, %u)\r\n", addr, img_len); + return -1; + } + if (addr%0x1000 || img_len%0x1000) { + WLAND_DBG(ERROR,"write partition start length error.(mast be 4k alignment) (0x%08x, %u)\r\n", addr, img_len); + return -1; + } + + WLAND_DBG(INFO, "rda5981_write_partition_start:0x%08x, %u\r\n", addr, img_len); + wland_ota_partition_addr = addr; + wland_ota_partition_len = img_len; + wland_crc_result = ~0U; + + rda5981_ota_erase_flash(addr, img_len); + return 0; +} +int rda5981_write_partition(u32 offset, const u8 *buf, u32 len) +{ + if (wland_ota_partition_addr==0 || offset+len>wland_ota_partition_len) { + WLAND_DBG(ERROR,"write partition error. out of start addr(0x%08x, %u). (0x%08x, %u)\r\n", + wland_ota_partition_addr, wland_ota_partition_len, offset, len); + return -1; + } + if (len%0x400) { + WLAND_DBG(ERROR,"write partition length error.(mast be 1k alignment) (0x%08x, %u)\r\n", offset, len); + return -1; + } + WLAND_DBG(DEBUG, "rda5981_write_partition:0x%08x, %u.(%02x)\r\n", + wland_ota_partition_addr + offset, len, buf[0]); + wland_crc_result = crc32(buf, len, wland_crc_result); + + WLAND_DBG(DEBUG, "rda5981_write_partition: wland_crc_result 0x%08x\r\n", + wland_crc_result); + return rda5981_ota_write_flash(wland_ota_partition_addr + offset, (char *)buf, len); + //return rda5981_write_flash(wland_ota_partition_addr + offset, buf, len); +} +int rda5981_write_partition_end(void) +{ + WLAND_DBG(INFO, "check crc32:0x%08x, %u\r\n", wland_ota_partition_addr, wland_ota_partition_len); + if (wland_ota_partition_addr == 0) { + WLAND_DBG(ERROR,"OTA is not started\r\n"); + return -1; + } + core_util_critical_section_enter(); + spi_flash_flush_cache(); + //u32 crc32_check = crc32(wland_ota_partition_addr, wland_ota_partition_len, ~0U); + u32 crc32_check = bootrom_crc32((unsigned char *)wland_ota_partition_addr, wland_ota_partition_len); + core_util_critical_section_exit(); + WLAND_DBG(INFO, "rda5981_write_partition_end:0x%08x:0x%08x\r\n", wland_crc_result, crc32_check); + wland_ota_partition_addr = 0UL; + + if (crc32_check == wland_crc_result) { + return 0; + } else { + WLAND_DBG(ERROR,"check crc32 error\r\n"); + return -1; + } +} diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.cpp b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.cpp new file mode 100644 index 00000000000..9305f0daeb6 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.cpp @@ -0,0 +1,293 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "cmsis_os.h" +#include "mbed_interface.h" +#include "mbed_assert.h" +#include "mbed_shared_queues.h" +#include "netsocket/nsapi_types.h" +#include "lwip/arch.h" +#include "lwip/pbuf.h" +#include "rda5991h_wland.h" +#include "rda5981x_emac_config.h" +#include "rda5981x_emac.h" +#include "rda_sys_wrapper.h" +#include "maclib_task.h" + +#define RDA_HWADDR_SIZE (6) +#define RDA_ETH_MTU_SIZE 1500 +#define RDA_ETH_IF_NAME "st" + +#define RX_PRIORITY (osPriorityNormal) +#define TX_PRIORITY (osPriorityNormal) +#define PHY_PRIORITY (osPriorityNormal) + +extern void *packet_rx_queue; + +RDA5981x_EMAC::RDA5981x_EMAC() +{ +} + +/** + * This function should do the actual transmission of the packet. The packet is + * contained in the memory buffer chain that is passed to the function. + * + * @param buf the MAC packet to send (e.g. IP packet including MAC addresses and type) + * @return true if the packet could be sent + * false value if the packet couldn't be sent + * + * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to + * strange results. You might consider waiting for space in the DMA queue + * to become availale since the stack doesn't retry to send a packet + * dropped because of memory failure (except for the TCP timers). + */ +bool RDA5981x_EMAC::link_out(emac_mem_buf_t *buf) +{ + emac_mem_buf_t *q, *p = buf; + + u32_t actual_txlen = 0; + u8_t **data = NULL; + u16_t retry = 400; + + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output enter, p:%08x\n", p)); + + while ((data == NULL) && (retry-- > 0)) { + data = (u8_t**)wland_get_databuf(); + osThreadYield(); + } + if (data == NULL) { + LWIP_DEBUGF(NETIF_DEBUG, ("rda91h_low_level_output, no PKT buf\r\n")); + memory_manager->free(buf); + return false; + } + + for (q = p; q != NULL; q = memory_manager->get_next(q)) { + /* Send the data from the pbuf to the interface, one pbuf at a + time. The size of the data in each pbuf is kept in the ->len + variable. */ + memcpy(&((*data)[actual_txlen+2]), memory_manager->get_ptr(q), memory_manager->get_len(q));//reserve wid header length + actual_txlen += memory_manager->get_len(q); + if (actual_txlen > 1514 || actual_txlen > memory_manager->get_total_len(p)) { + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output err, actual_txlen:%d, tot_len%d\n", actual_txlen, memory_manager->get_total_len(p))); + memory_manager->free(buf); + return false; + } + } + + /* Signal rda5996 that packet should be sent */ + if (actual_txlen == memory_manager->get_total_len(p)) { + wland_txip_data((void*)data, actual_txlen, 0); + memory_manager->free(buf); + return true; + } + + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_output pkt len mismatch, actual_txlen:%d, tot_len%d\n", + actual_txlen, memory_manager->get_total_len(p))); + + memory_manager->free(buf); + return false; +} + +/** + * Should allocate a contiguous memory buffer and transfer the bytes of the incoming + * packet to the buffer. + * + * @param buf If a frame was received and the memory buffer allocation was successful, a memory + * buffer filled with the received packet (including MAC header) + * @return negative value when no more frames, + * zero when frame is received + */ +emac_mem_buf_t * RDA5981x_EMAC::low_level_input(u8_t *data, int len) +{ + emac_mem_buf_t *p, *q; + u16_t index = 0; + + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input enter, rxlen:%d\n", len)); + + /* Obtain the size of the packet and put it into the "len" + variable. */ + if (!len) { + return NULL; + } + + /* We allocate a pbuf chain of pbufs from the pool. */ + p = memory_manager->alloc_pool(len, 0); + if (p != NULL) { + /* We iterate over the pbuf chain until we have read the entire + * packet into the pbuf. */ + for (q = p; q != NULL; q = memory_manager->get_next(q)) { + /* Read enough bytes to fill this pbuf in the chain. The + * available data in the pbuf is given by the q->len + * variable. + * This does not necessarily have to be a memcpy, you can also preallocate + * pbufs for a DMA-enabled MAC and after receiving truncate it to the + * actually received size. In this case, ensure the tot_len member of the + * pbuf is the sum of the chained pbuf len members. + */ + /* load rx data from 96 to local mem_pool */ + memcpy(memory_manager->get_ptr(q), &data[index], memory_manager->get_len(q)); + index += memory_manager->get_len(q); + + if (index >= len) { + break; + } + } + + } else { + /* Drop this packet */ + LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input pbuf_alloc fail, rxlen:%d\n", len)); + + return NULL; + } + return p; +} + + +/** \brief Attempt to read a packet from the EMAC interface. + * + */ +void RDA5981x_EMAC::packet_rx() +{ + rda_msg msg; + packet_rx_queue = rda_mail_create(10, sizeof(unsigned int)*4); + /* move received packet into a new buf */ + while (1) { + emac_mem_buf_t *p = NULL; + rda_mail_get(packet_rx_queue, (void*)&msg, osWaitForever); + switch(msg.type) { + case 0: + p = low_level_input((unsigned char*)msg.arg1, msg.arg2); + if (p == NULL) { + rda_sem_release((void*)msg.arg3); + break; + } + rda_sem_release((void*)msg.arg3); + if (p) { + emac_link_input_cb(p); + } + break; + case 1: + emac_link_state_cb(msg.arg1); + break; + default: + break; + } + } +} + +void RDA5981x_EMAC::thread_function(void *pvParameters) +{ + static struct RDA5981x_EMAC *rda5981x_enet = static_cast(pvParameters); + rda5981x_enet->packet_rx(); +} + +bool RDA5981x_EMAC::power_up() +{ + /* Initialize the hardware */ + static int init_flag = 0; + if (init_flag == 0) { + wland_reg_func(); + rda_thread_new("maclib_thread", maclib_task, NULL, DEFAULT_THREAD_STACKSIZE*8, PHY_PRIORITY); + rda_thread_new("wland_thread", wland_task, NULL, DEFAULT_THREAD_STACKSIZE*5, PHY_PRIORITY); + rda_thread_new("packet_rx", RDA5981x_EMAC::thread_function, this, DEFAULT_THREAD_STACKSIZE*5, PHY_PRIORITY); + /* Allow the PHY task to detect the initial link state and set up the proper flags */ + osDelay(100); + wland_sta_init(); + init_flag = 1; + } + + return true; +} + +uint32_t RDA5981x_EMAC::get_mtu_size() const +{ + return RDA_ETH_MTU_SIZE; +} + +uint32_t RDA5981x_EMAC::get_align_preference() const +{ + return 0; +} + +void RDA5981x_EMAC::get_ifname(char *name, uint8_t size) const +{ + memcpy(name, RDA_ETH_IF_NAME, (size < sizeof(RDA_ETH_IF_NAME)) ? size : sizeof(RDA_ETH_IF_NAME)); +} + +uint8_t RDA5981x_EMAC::get_hwaddr_size() const +{ + return RDA_HWADDR_SIZE; +} + +bool RDA5981x_EMAC::get_hwaddr(uint8_t *addr) const +{ + mbed_mac_address((char *)addr); + return true; +} + +void RDA5981x_EMAC::set_hwaddr(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +void RDA5981x_EMAC::set_link_input_cb(emac_link_input_cb_t input_cb) +{ + emac_link_input_cb = input_cb; +} + +void RDA5981x_EMAC::set_link_state_cb(emac_link_state_change_cb_t state_cb) +{ + emac_link_state_cb = state_cb; +} + +void RDA5981x_EMAC::add_multicast_group(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +void RDA5981x_EMAC::remove_multicast_group(const uint8_t *addr) +{ + /* No-op at this stage */ +} + +void RDA5981x_EMAC::set_all_multicast(bool all) +{ + /* No-op at this stage */ +} + +void RDA5981x_EMAC::power_down() +{ + /* No-op at this stage */ +} + +void RDA5981x_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr) +{ + memory_manager = &mem_mngr; +} + +RDA5981x_EMAC &RDA5981x_EMAC::get_instance() +{ + static RDA5981x_EMAC emac; + return emac; +} + +// Weak so a module can override +MBED_WEAK EMAC &EMAC::get_default_instance() +{ + return RDA5981x_EMAC::get_instance(); +} + diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.h new file mode 100644 index 00000000000..62fda7374d3 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac.h @@ -0,0 +1,161 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef STM32_EMAC_H_ +#define STM32_EMAC_H_ + +#include "EMAC.h" +#include "rtos/Semaphore.h" +#include "rtos/Mutex.h" + +class RDA5981x_EMAC : public EMAC { +public: + RDA5981x_EMAC(); + + static RDA5981x_EMAC &get_instance(); + + /** + * Return maximum transmission unit + * + * @return MTU in bytes + */ + virtual uint32_t get_mtu_size() const; + + /** + * Gets memory buffer alignment preference + * + * Gets preferred memory buffer alignment of the Emac device. IP stack may or may not + * align link out memory buffer chains using the alignment. + * + * @return Memory alignment requirement in bytes + */ + virtual uint32_t get_align_preference() const; + + /** + * Return interface name + * + * @param name Pointer to where the name should be written + * @param size Maximum number of character to copy + */ + virtual void get_ifname(char *name, uint8_t size) const; + + /** + * Returns size of the underlying interface HW address size. + * + * @return HW address size in bytes + */ + virtual uint8_t get_hwaddr_size() const; + + /** + * Return interface-supplied HW address + * + * Copies HW address to provided memory, @param addr has to be of correct size see @a get_hwaddr_size + * + * HW address need not be provided if this interface does not have its own HW + * address configuration; stack will choose address from central system + * configuration if the function returns false and does not write to addr. + * + * @param addr HW address for underlying interface + * @return true if HW address is available + */ + virtual bool get_hwaddr(uint8_t *addr) const; + + /** + * Set HW address for interface + * + * Provided address has to be of correct size, see @a get_hwaddr_size + * + * Called to set the MAC address to actually use - if @a get_hwaddr is provided + * the stack would normally use that, but it could be overridden, eg for test + * purposes. + * + * @param addr Address to be set + */ + virtual void set_hwaddr(const uint8_t *addr); + + /** + * Sends the packet over the link + * + * That can not be called from an interrupt context. + * + * @param buf Packet to be send + * @return True if the packet was send successfully, False otherwise + */ + virtual bool link_out(emac_mem_buf_t *buf); + + /** + * Initializes the HW + * + * @return True on success, False in case of an error. + */ + virtual bool power_up(); + + /** + * Deinitializes the HW + * + */ + virtual void power_down(); + + /** + * Sets a callback that needs to be called for packets received for that interface + * + * @param input_cb Function to be register as a callback + */ + virtual void set_link_input_cb(emac_link_input_cb_t input_cb); + + /** + * Sets a callback that needs to be called on link status changes for given interface + * + * @param state_cb Function to be register as a callback + */ + virtual void set_link_state_cb(emac_link_state_change_cb_t state_cb); + + /** Add device to a multicast group + * + * @param address A multicast group hardware address + */ + virtual void add_multicast_group(const uint8_t *address); + + /** Remove device from a multicast group + * + * @param address A multicast group hardware address + */ + virtual void remove_multicast_group(const uint8_t *address); + + /** Request reception of all multicast packets + * + * @param all True to receive all multicasts + * False to receive only multicasts addressed to specified groups + */ + virtual void set_all_multicast(bool all); + + /** Sets memory manager that is used to handle memory buffers + * + * @param mem_mngr Pointer to memory manager + */ + virtual void set_memory_manager(EMACMemoryManager &mem_mngr); + +private: + void packet_rx(); + emac_mem_buf_t * low_level_input(u8_t *data, int len); + static void thread_function(void *pvParameters); + emac_link_input_cb_t emac_link_input_cb; /**< Callback for incoming data */ + emac_link_state_change_cb_t emac_link_state_cb; /**< Link state change callback */ + EMACMemoryManager *memory_manager; /**< Memory manager */ + +}; + +#endif /* K64F_EMAC_H_ */ diff --git a/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac_config.h b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac_config.h new file mode 100644 index 00000000000..717d423bfee --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/rda5981x_emac_config.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2019 Unisoc Communications Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef STM32XX_EMAC_CONFIG_H__ +#define STM32XX_EMAC_CONFIG_H__ + +#define THREAD_STACKSIZE 512 + +#endif // #define STM32XX_EMAC_CONFIG_H__ diff --git a/features/netsocket/emac-drivers/TARGET_STM_EMAC/mbed_lib.json b/features/netsocket/emac-drivers/TARGET_STM_EMAC/mbed_lib.json new file mode 100644 index 00000000000..39ae08e4a4f --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_STM_EMAC/mbed_lib.json @@ -0,0 +1,13 @@ +{ + "name": "stm32-emac", + "config": { + "eth-rxbufnb": 4, + "eth-txbufnb": 4 + }, + "target_overrides": { + "NUCLEO_F207ZG": { + "eth-rxbufnb": 1, + "eth-txbufnb": 4 + } + } +} diff --git a/features/netsocket/nsapi_dns.h b/features/netsocket/nsapi_dns.h index 4142a00b99e..692d3d5b42f 100644 --- a/features/netsocket/nsapi_dns.h +++ b/features/netsocket/nsapi_dns.h @@ -1,7 +1,4 @@ - -/** \addtogroup netsocket */ -/** @{*/ -/* nsapi_dns.h +/* * Original work Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de) * Modified work Copyright (c) 2015 ARM Limited * @@ -17,6 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +/** \addtogroup netsocket */ +/** @{*/ + #ifndef NSAPI_DNS_H #define NSAPI_DNS_H diff --git a/features/nfc/nfc/NFCController.h b/features/nfc/nfc/NFCController.h index fffb5e1ab21..df55292f13f 100644 --- a/features/nfc/nfc/NFCController.h +++ b/features/nfc/nfc/NFCController.h @@ -31,15 +31,14 @@ namespace mbed { namespace nfc { +/** @addtogroup nfc + * @{ + */ + class NFCRemoteInitiator; class NFCRemoteTarget; class NFCControllerDriver; -/** - * @addtogroup nfc - * @{ - */ - /** * This class represents a NFC Controller. * @@ -178,11 +177,7 @@ class NFCController : private NFCControllerDriver::Delegate { bool _discovery_running; Span _ndef_buffer; }; - -/** - * @} - */ - +/** @}*/ } // namespace nfc } // namespace mbed diff --git a/features/nfc/nfc/NFCEEPROM.h b/features/nfc/nfc/NFCEEPROM.h index e431823caf7..ed0deb301d4 100644 --- a/features/nfc/nfc/NFCEEPROM.h +++ b/features/nfc/nfc/NFCEEPROM.h @@ -27,8 +27,7 @@ namespace mbed { namespace nfc { -/** - * @addtogroup nfc +/** @addtogroup nfc * @{ */ @@ -144,6 +143,7 @@ class NFCEEPROM : public NFCTarget, public NFCEEPROMDriver::Delegate { Delegate *_delegate; NFCEEPROMDriver *_driver; + events::EventQueue *_event_queue; bool _initialized; nfc_eeprom_operation_t _current_op; @@ -152,12 +152,7 @@ class NFCEEPROM : public NFCTarget, public NFCEEPROMDriver::Delegate { uint32_t _eeprom_address; nfc_err_t _operation_result; }; - -/** - * @} - */ - - +/** @}*/ } // namespace nfc } // namespace mbed diff --git a/features/nfc/nfc/ndef/MessageBuilder.h b/features/nfc/nfc/ndef/MessageBuilder.h index 0b2437108e7..1b4e38e0d43 100644 --- a/features/nfc/nfc/ndef/MessageBuilder.h +++ b/features/nfc/nfc/ndef/MessageBuilder.h @@ -27,8 +27,7 @@ namespace mbed { namespace nfc { namespace ndef { -/** - * @addtogroup nfc +/** @addtogroup nfc * @{ */ @@ -189,11 +188,7 @@ class MessageBuilder { bool _message_ended; bool _in_chunk; }; - -/** - * @} - */ - +/** @}*/ } // namespace ndef } // namespace nfc } // namespace mbed diff --git a/features/nfc/nfc/ndef/MessageParser.h b/features/nfc/nfc/ndef/MessageParser.h index 41c4a9e3a32..a0ac9391ede 100644 --- a/features/nfc/nfc/ndef/MessageParser.h +++ b/features/nfc/nfc/ndef/MessageParser.h @@ -18,19 +18,16 @@ #define NFC_NDEF_MESSAGEPARSER_H_ #include - #include "platform/Span.h" namespace mbed { namespace nfc { namespace ndef { -/** - * @addtogroup nfc +/** @addtogroup nfc * @{ */ - // Forward declaration class Record; @@ -165,11 +162,7 @@ class MessageParser { Delegate *_delegate; }; - -/** - * @} - */ - +/** @}*/ } // namespace ndef } // namespace nfc } // namespace mbed diff --git a/features/nfc/nfc/ndef/common/SimpleMessageParser.h b/features/nfc/nfc/ndef/common/SimpleMessageParser.h index a4da0049f90..2f7bbbc2742 100644 --- a/features/nfc/nfc/ndef/common/SimpleMessageParser.h +++ b/features/nfc/nfc/ndef/common/SimpleMessageParser.h @@ -30,8 +30,7 @@ namespace nfc { namespace ndef { namespace common { -/** - * @addtogroup nfc +/** @addtogroup nfc * @{ */ @@ -161,14 +160,11 @@ class SimpleMessageParser : MimeParser _mime_parser; Delegate *_delegate; }; - -/** - * @} - */ - +/** @}*/ } // namespace common } // namespace ndef } // namespace nfc } // namespace mbed #endif /* NFC_COMMON_SIMPLEMESSAGEPARSER_H_ */ + diff --git a/features/nfc/source/nfc/NFCEEPROM.cpp b/features/nfc/source/nfc/NFCEEPROM.cpp index 1772b63fa15..01f2715a85f 100644 --- a/features/nfc/source/nfc/NFCEEPROM.cpp +++ b/features/nfc/source/nfc/NFCEEPROM.cpp @@ -21,7 +21,7 @@ using namespace mbed; using namespace mbed::nfc; NFCEEPROM::NFCEEPROM(NFCEEPROMDriver *driver, events::EventQueue *queue, const Span &ndef_buffer) : NFCTarget(ndef_buffer), - _delegate(NULL), _driver(driver), _initialized(false), _current_op(nfc_eeprom_idle), _ndef_buffer_read_sz(0), _eeprom_address(0), _operation_result(NFC_ERR_UNKNOWN) + _delegate(NULL), _driver(driver), _event_queue(queue), _initialized(false), _current_op(nfc_eeprom_idle), _ndef_buffer_read_sz(0), _eeprom_address(0), _operation_result(NFC_ERR_UNKNOWN) { _driver->set_delegate(this); _driver->set_event_queue(queue); @@ -68,7 +68,6 @@ void NFCEEPROM::write_ndef_message() // Reset EEPROM address _eeprom_address = 0; - // Go through the steps! _driver->start_session(); @@ -87,7 +86,6 @@ void NFCEEPROM::read_ndef_message() } return; } - _current_op = nfc_eeprom_read_start_session; // Reset EEPROM address @@ -114,7 +112,6 @@ void NFCEEPROM::erase_ndef_message() } return; } - _current_op = nfc_eeprom_erase_start_session; // Reset EEPROM address @@ -230,7 +227,7 @@ void NFCEEPROM::on_bytes_read(size_t count) ac_buffer_builder_write_n_skip(buffer_builder, count); // Continue reading - continue_read(); + _event_queue->call(this, &NFCEEPROM::continue_read); break; } default: @@ -254,7 +251,7 @@ void NFCEEPROM::on_bytes_written(size_t count) ac_buffer_read_n_skip(&_ndef_buffer_reader, count); // Continue writing - continue_write(); + _event_queue->call(this, &NFCEEPROM::continue_write); break; default: // Should not happen, state machine is broken or driver is doing something wrong @@ -331,7 +328,7 @@ void NFCEEPROM::on_size_read(bool success, size_t size) // Start reading bytes _current_op = nfc_eeprom_read_read_bytes; - continue_read(); + _event_queue->call(this, &NFCEEPROM::continue_read); break; } default: @@ -343,6 +340,7 @@ void NFCEEPROM::on_size_read(bool success, size_t size) void NFCEEPROM::on_bytes_erased(size_t count) { + switch (_current_op) { case nfc_eeprom_erase_erase_bytes: if (count == 0) { @@ -354,7 +352,7 @@ void NFCEEPROM::on_bytes_erased(size_t count) _eeprom_address += count; // Continue erasing - continue_erase(); + _event_queue->call(this, &NFCEEPROM::continue_erase); break; default: // Should not happen, state machine is broken or driver is doing something wrong diff --git a/features/storage/TESTS/blockdevice/general_block_device/main.cpp b/features/storage/TESTS/blockdevice/general_block_device/main.cpp index d177d51a39c..fecfe1a0dbc 100644 --- a/features/storage/TESTS/blockdevice/general_block_device/main.cpp +++ b/features/storage/TESTS/blockdevice/general_block_device/main.cpp @@ -25,6 +25,27 @@ #include #include #include "BufferedBlockDevice.h" +#include "BlockDevice.h" + +#if COMPONENT_SPIF +#include "SPIFBlockDevice.h" +#endif + +#if COMPONENT_QSPIF +#include "QSPIFBlockDevice.h" +#endif + +#if COMPONENT_DATAFLASH +#include "DataFlashBlockDevice.h" +#endif + +#if COMPONENT_SD +#include "SDBlockDevice.h" +#endif + +#if COMPONENT_FLASHIAP +#include "FlashIAPBlockDevice.h" +#endif using namespace utest::v1; @@ -42,8 +63,122 @@ const struct { {"total size", &BlockDevice::size}, }; +enum bd_type { + spif = 0, + qspif, + dataflash, + sd, + flashiap, + default_bd +}; + +uint8_t bd_arr[5] = {0}; + +static uint8_t test_iteration = 0; + static SingletonPtr _mutex; +BlockDevice *block_device = NULL; + +#if COMPONENT_FLASHIAP +static inline uint32_t align_up(uint32_t val, uint32_t size) +{ + return (((val - 1) / size) + 1) * size; +} +#endif + +static BlockDevice *get_bd_instance(uint8_t bd_type) +{ + switch (bd_arr[bd_type]) { + case spif: { +#if COMPONENT_SPIF + static SPIFBlockDevice default_bd( + MBED_CONF_SPIF_DRIVER_SPI_MOSI, + MBED_CONF_SPIF_DRIVER_SPI_MISO, + MBED_CONF_SPIF_DRIVER_SPI_CLK, + MBED_CONF_SPIF_DRIVER_SPI_CS, + MBED_CONF_SPIF_DRIVER_SPI_FREQ + ); + return &default_bd; +#endif + break; + } + case qspif: { +#if COMPONENT_QSPIF + static QSPIFBlockDevice default_bd( + MBED_CONF_QSPIF_QSPI_IO0, + MBED_CONF_QSPIF_QSPI_IO1, + MBED_CONF_QSPIF_QSPI_IO2, + MBED_CONF_QSPIF_QSPI_IO3, + MBED_CONF_QSPIF_QSPI_SCK, + MBED_CONF_QSPIF_QSPI_CSN, + MBED_CONF_QSPIF_QSPI_POLARITY_MODE, + MBED_CONF_QSPIF_QSPI_FREQ + ); + return &default_bd; +#endif + break; + } + case dataflash: { +#if COMPONENT_DATAFLASH + static DataFlashBlockDevice default_bd( + MBED_CONF_DATAFLASH_SPI_MOSI, + MBED_CONF_DATAFLASH_SPI_MISO, + MBED_CONF_DATAFLASH_SPI_CLK, + MBED_CONF_DATAFLASH_SPI_CS + ); + return &default_bd; +#endif + break; + } + case sd: { +#if COMPONENT_SD + static SDBlockDevice default_bd( + MBED_CONF_SD_SPI_MOSI, + MBED_CONF_SD_SPI_MISO, + MBED_CONF_SD_SPI_CLK, + MBED_CONF_SD_SPI_CS + ); + return &default_bd; +#endif + break; + } + case flashiap: { +#if COMPONENT_FLASHIAP +#if (MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE == 0) && (MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS == 0xFFFFFFFF) + + size_t flash_size; + uint32_t start_address; + uint32_t bottom_address; + mbed::FlashIAP flash; + + int ret = flash.init(); + if (ret != 0) { + return NULL; + } + + //Find the start of first sector after text area + bottom_address = align_up(FLASHIAP_APP_ROM_END_ADDR, flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR)); + start_address = flash.get_flash_start(); + flash_size = flash.get_flash_size(); + + ret = flash.deinit(); + + static FlashIAPBlockDevice default_bd(bottom_address, start_address + flash_size - bottom_address); + +#else + + static FlashIAPBlockDevice default_bd; + +#endif + return &default_bd; +#endif + break; + } + } + return NULL; +} + // Mutex is protecting rand() per srand for buffer writing and verification. // Mutex is also protecting printouts for clear logs. // Mutex is NOT protecting Block Device actions: erase/program/read - which is the purpose of the multithreaded test! @@ -52,6 +187,11 @@ void basic_erase_program_read_test(BlockDevice *block_device, bd_size_t block_si { int err = 0; _mutex->lock(); + + // Make sure block address per each test is unique + static unsigned block_seed = 1; + srand(block_seed++); + // Find a random block bd_addr_t block = (rand() * block_size) % (block_device->size()); @@ -65,7 +205,7 @@ void basic_erase_program_read_test(BlockDevice *block_device, bd_size_t block_si write_block[i_ind] = 0xff & rand(); } // Write, sync, and read the block - utest_printf("\ntest %0*llx:%llu...", addrwidth, block, block_size); + utest_printf("test %0*llx:%llu...\n", addrwidth, block, block_size); _mutex->unlock(); err = block_device->erase(block, block_size); @@ -94,16 +234,23 @@ void basic_erase_program_read_test(BlockDevice *block_device, bd_size_t block_si _mutex->unlock(); } -void test_random_program_read_erase() +void test_init_bd() { - utest_printf("\nTest Random Program Read Erase Starts..\n"); + utest_printf("\nTest Init block device.\n"); - BlockDevice *block_device = BlockDevice::get_default_instance(); + block_device = get_bd_instance(test_iteration); - TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "\nno block device found.\n"); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); int err = block_device->init(); TEST_ASSERT_EQUAL(0, err); +} + +void test_random_program_read_erase() +{ + utest_printf("\nTest Random Program Read Erase Starts..\n"); + + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); for (unsigned atr = 0; atr < sizeof(ATTRS) / sizeof(ATTRS[0]); atr++) { static const char *prefixes[] = {"", "k", "M", "G"}; @@ -122,8 +269,9 @@ void test_random_program_read_erase() uint8_t *write_block = new (std::nothrow) uint8_t[block_size]; uint8_t *read_block = new (std::nothrow) uint8_t[block_size]; + if (!write_block || !read_block) { - utest_printf("\n Not enough memory for test"); + utest_printf("Not enough memory for test\n"); goto end; } @@ -131,9 +279,6 @@ void test_random_program_read_erase() basic_erase_program_read_test(block_device, block_size, write_block, read_block, addrwidth); } - err = block_device->deinit(); - TEST_ASSERT_EQUAL(0, err); - end: delete[] write_block; delete[] read_block; @@ -152,7 +297,7 @@ static void test_thread_job(void *block_device_ptr) uint8_t *read_block = new (std::nothrow) uint8_t[block_size]; if (!write_block || !read_block) { - utest_printf("\n Not enough memory for test"); + utest_printf("Not enough memory for test\n"); goto end; } @@ -169,12 +314,11 @@ void test_multi_threads() { utest_printf("\nTest Multi Threaded Erase/Program/Read Starts..\n"); - BlockDevice *block_device = BlockDevice::get_default_instance(); - - TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "\nno block device found.\n"); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); - int err = block_device->init(); - TEST_ASSERT_EQUAL(0, err); + char *dummy = new (std::nothrow) char[TEST_NUM_OF_THREADS * OS_STACK_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough memory for test.\n"); + delete[] dummy; for (unsigned atr = 0; atr < sizeof(ATTRS) / sizeof(ATTRS[0]); atr++) { static const char *prefixes[] = {"", "k", "M", "G"}; @@ -196,19 +340,16 @@ void test_multi_threads() for (i_ind = 0; i_ind < TEST_NUM_OF_THREADS; i_ind++) { threadStatus = bd_thread[i_ind].start(callback(test_thread_job, (void *)block_device)); if (threadStatus != 0) { - utest_printf("\n Thread %d Start Failed!", i_ind + 1); + utest_printf("Thread %d Start Failed!\n", i_ind + 1); } } for (i_ind = 0; i_ind < TEST_NUM_OF_THREADS; i_ind++) { bd_thread[i_ind].join(); } - - err = block_device->deinit(); - TEST_ASSERT_EQUAL(0, err); } -void test_get_erase_value() +void test_erase_functionality() { utest_printf("\nTest BlockDevice::get_erase_value()..\n"); @@ -218,16 +359,12 @@ void test_get_erase_value() // 2. Erase selected region // 3. Read erased region and compare with get_erase_value() - BlockDevice *block_device = BlockDevice::get_default_instance(); - TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "\nno block device found.\n"); - - int err = block_device->init(); - TEST_ASSERT_EQUAL(0, err); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); // Check erase value int erase_value_int = block_device->get_erase_value(); - utest_printf("\nblock_device->get_erase_value()=%d", erase_value_int); - TEST_SKIP_UNLESS_MESSAGE(erase_value_int >= 0, "\nerase value is negative which means the erase value is unknown\n"); + utest_printf("block_device->get_erase_value()=%d\n", erase_value_int); + TEST_SKIP_UNLESS_MESSAGE(erase_value_int >= 0, "Erase not supported in this block device. Test skipped."); // Assuming that get_erase_value() returns byte value as documentation mentions // "If get_erase_value() returns a non-negative byte value" for unknown case. @@ -245,48 +382,70 @@ void test_get_erase_value() start_address %= block_device->size() - data_buf_size - erase_size; // fit all data + alignment reserve start_address += erase_size; // add alignment reserve start_address -= start_address % erase_size; // align with erase_block - utest_printf("\nstart_address=0x%016" PRIx64, start_address); + utest_printf("start_address=0x%016" PRIx64 "\n", start_address); - // Allocate buffer for read test data + // Allocate buffer for write test data uint8_t *data_buf = (uint8_t *)malloc(data_buf_size); - TEST_ASSERT_NOT_NULL(data_buf); + TEST_SKIP_UNLESS_MESSAGE(data_buf, "Not enough memory for test.\n"); + + // Allocate buffer for read test data + uint8_t *out_data_buf = (uint8_t *)malloc(data_buf_size); + TEST_SKIP_UNLESS_MESSAGE(out_data_buf, "Not enough memory for test.\n"); + + // First must Erase given memory region + utest_printf("erasing given memory region\n"); + int err = block_device->erase(start_address, data_buf_size); + TEST_ASSERT_EQUAL(0, err); // Write random data to selected region to make sure data is not accidentally set to "erased" value. // With this pre-write, the test case will fail even if block_device->erase() is broken. for (bd_size_t i = 0; i < data_buf_size; i++) { data_buf[i] = (uint8_t) rand(); } - utest_printf("\nwriting given memory region"); + + utest_printf("writing given memory region\n"); err = block_device->program((const void *)data_buf, start_address, data_buf_size); TEST_ASSERT_EQUAL(0, err); + // Read written memory region to verify it contains information + memset(out_data_buf, 0, data_buf_size); + utest_printf("reading written memory region\n"); + err = block_device->read((void *)out_data_buf, start_address, data_buf_size); + TEST_ASSERT_EQUAL(0, err); + + // Verify erased memory region + utest_printf("verifying written memory region\n"); + for (bd_size_t i = 0; i < data_buf_size; i++) { + TEST_ASSERT_EQUAL(out_data_buf[i], data_buf[i]); + } + // Erase given memory region - utest_printf("\nerasing given memory region"); + utest_printf("erasing written memory region\n"); err = block_device->erase(start_address, data_buf_size); TEST_ASSERT_EQUAL(0, err); // Read erased memory region - utest_printf("\nreading erased memory region"); - err = block_device->read((void *)data_buf, start_address, data_buf_size); + utest_printf("reading erased memory region\n"); + memset(out_data_buf, 0, data_buf_size); + err = block_device->read((void *)out_data_buf, start_address, data_buf_size); TEST_ASSERT_EQUAL(0, err); // Verify erased memory region - utest_printf("\nverifying erased memory region"); + utest_printf("verifying erased memory region\n"); for (bd_size_t i = 0; i < data_buf_size; i++) { - TEST_ASSERT_EQUAL(erase_value, data_buf[i]); + TEST_ASSERT_EQUAL(erase_value, out_data_buf[i]); } free(data_buf); - - // BlockDevice deinitialization - err = block_device->deinit(); - TEST_ASSERT_EQUAL(0, err); + free(out_data_buf); } void test_contiguous_erase_write_read() { utest_printf("\nTest Contiguous Erase/Program/Read Starts..\n"); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); + // Test flow: // 1. Erase whole test area // - Tests contiguous erase @@ -294,21 +453,14 @@ void test_contiguous_erase_write_read() // - Tests contiguous sector writes // 3. Return step 2 for whole erase region - BlockDevice *block_device = BlockDevice::get_default_instance(); - TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "\nno block device found.\n"); - - // Initialize BlockDevice - int err = block_device->init(); - TEST_ASSERT_EQUAL(0, err); - // Test parameters bd_size_t erase_size = block_device->get_erase_size(); TEST_ASSERT(erase_size > 0); bd_size_t program_size = block_device->get_program_size(); TEST_ASSERT(program_size > 0); - utest_printf("\nerase_size=%d", erase_size); - utest_printf("\nprogram_size=%d", program_size); - utest_printf("\nblock_device->size()=%" PRId64, block_device->size()); + utest_printf("erase_size=%" PRId64 "\n", erase_size); + utest_printf("program_size=%" PRId64 "\n", program_size); + utest_printf("block_device->size()=%" PRId64 "\n", block_device->size()); // Determine write/read buffer size // start write_read_buf_size from 1% block_device->size() @@ -324,18 +476,18 @@ void test_contiguous_erase_write_read() bd_size_t contiguous_write_read_blocks_per_region = write_read_buf_size / program_size; // 2 is minimum to test contiguous write write_read_buf_size = contiguous_write_read_blocks_per_region * program_size; - utest_printf("\ncontiguous_write_read_blocks_per_region=%" PRIu64, contiguous_write_read_blocks_per_region); - utest_printf("\nwrite_read_buf_size=%" PRIu64, write_read_buf_size); + utest_printf("contiguous_write_read_blocks_per_region=%" PRIu64 "\n", contiguous_write_read_blocks_per_region); + utest_printf("write_read_buf_size=%" PRIu64 "\n", write_read_buf_size); // Determine test region count int contiguous_write_read_regions = TEST_BLOCK_COUNT; - utest_printf("\ncontiguous_write_read_regions=%d", contiguous_write_read_regions); + utest_printf("contiguous_write_read_regions=%d\n", contiguous_write_read_regions); // Determine whole erase size bd_size_t contiguous_erase_size = write_read_buf_size * contiguous_write_read_regions; contiguous_erase_size -= contiguous_erase_size % erase_size; // aligned to erase_size contiguous_erase_size += erase_size; // but larger than write/read size * regions - utest_printf("\ncontiguous_erase_size=%" PRIu64, contiguous_erase_size); + utest_printf("contiguous_erase_size=%" PRIu64 "\n", contiguous_erase_size); // Determine starting address bd_addr_t start_address = rand(); // low 32 bytes @@ -344,16 +496,20 @@ void test_contiguous_erase_write_read() start_address += erase_size; // add alignment reserve start_address -= start_address % erase_size; // align with erase_block bd_addr_t stop_address = start_address + write_read_buf_size * contiguous_write_read_regions; - utest_printf("\nstart_address=0x%016" PRIx64, start_address); - utest_printf("\nstop_address=0x%016" PRIx64, stop_address); + utest_printf("start_address=0x%016" PRIx64 "\n", start_address); + utest_printf("stop_address=0x%016" PRIx64 "\n", stop_address); // Allocate write/read buffer uint8_t *write_read_buf = (uint8_t *)malloc(write_read_buf_size); if (write_read_buf == NULL) { - block_device->deinit(); - TEST_SKIP_MESSAGE("\nnot enough memory for test"); + TEST_SKIP_MESSAGE("not enough memory for test"); } - utest_printf("\nwrite_read_buf_size=%" PRIu64 "", (uint64_t)write_read_buf_size); + utest_printf("write_read_buf_size=%" PRIu64 "\n", (uint64_t)write_read_buf_size); + + // Must Erase the whole region first + utest_printf("erasing memory, from 0x%" PRIx64 " of size 0x%" PRIx64 "\n", start_address, contiguous_erase_size); + int err = block_device->erase(start_address, contiguous_erase_size); + TEST_ASSERT_EQUAL(0, err); // Pre-fill the to-be-erased region. By pre-filling the region, // we can be sure the test will not pass if the erase doesn't work. @@ -361,98 +517,98 @@ void test_contiguous_erase_write_read() for (size_t i = 0; i < write_read_buf_size; i++) { write_read_buf[i] = (uint8_t)rand(); } - utest_printf("\npre-filling memory, from 0x%" PRIx64 " of size 0x%" PRIx64, start_address + offset, + utest_printf("pre-filling memory, from 0x%" PRIx64 " of size 0x%" PRIx64 "\n", start_address + offset, write_read_buf_size); err = block_device->program((const void *)write_read_buf, start_address + offset, write_read_buf_size); TEST_ASSERT_EQUAL(0, err); } - // Erase the whole region first - utest_printf("\nerasing memory, from 0x%" PRIx64 " of size 0x%" PRIx64, start_address, contiguous_erase_size); + // Erase the whole region again + utest_printf("erasing memory, from 0x%" PRIx64 " of size 0x%" PRIx64 "\n", start_address, contiguous_erase_size); err = block_device->erase(start_address, contiguous_erase_size); TEST_ASSERT_EQUAL(0, err); // Loop through all write/read regions int region = 0; for (; start_address < stop_address; start_address += write_read_buf_size) { - utest_printf("\n\nregion #%d start_address=0x%016" PRIx64, region++, start_address); + utest_printf("\nregion #%d start_address=0x%016" PRIx64 "\n", region++, start_address); // Generate test data unsigned int seed = rand(); - utest_printf("\ngenerating test data, seed=%u", seed); + utest_printf("generating test data, seed=%u\n", seed); srand(seed); for (size_t i = 0; i < write_read_buf_size; i++) { write_read_buf[i] = (uint8_t)rand(); } // Write test data - utest_printf("\nwriting test data"); + utest_printf("writing test data\n"); err = block_device->program((const void *)write_read_buf, start_address, write_read_buf_size); TEST_ASSERT_EQUAL(0, err); // Read test data memset(write_read_buf, 0, (size_t)write_read_buf_size); - utest_printf("\nreading test data"); + utest_printf("reading test data\n"); err = block_device->read(write_read_buf, start_address, write_read_buf_size); TEST_ASSERT_EQUAL(0, err); // Verify read data - utest_printf("\nverifying test data"); + utest_printf("verifying test data\n"); srand(seed); for (size_t i = 0; i < write_read_buf_size; i++) { uint8_t expected_value = (uint8_t)rand(); if (write_read_buf[i] != expected_value) { - utest_printf("\ndata verify failed, write_read_buf[%d]=%" PRIu8 " and not %" PRIu8 "\n", + utest_printf("data verify failed, write_read_buf[%d]=%" PRIu8 " and not %" PRIu8 "\n", i, write_read_buf[i], expected_value); } TEST_ASSERT_EQUAL(write_read_buf[i], expected_value); } - utest_printf("\nverify OK"); + utest_printf("verify OK\n"); } free(write_read_buf); - - // BlockDevice deinitialization - err = block_device->deinit(); - TEST_ASSERT_EQUAL(0, err); } void test_program_read_small_data_sizes() { utest_printf("\nTest program-read small data sizes, from 1 to 7 bytes..\n"); - BlockDevice *bd = BlockDevice::get_default_instance(); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); + + bd_size_t erase_size = block_device->get_erase_size(); + bd_size_t program_size = block_device->get_program_size(); + bd_size_t read_size = block_device->get_read_size(); + TEST_ASSERT(program_size > 0); - TEST_SKIP_UNLESS_MESSAGE(bd != NULL, "\nno block device found.\n"); + // See that we have enough memory for buffered block device + char *dummy = new (std::nothrow) char[program_size + read_size]; + TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough memory for test.\n"); + delete[] dummy; // use BufferedBlockDevice for better handling of block devices program and read - BufferedBlockDevice *block_device = new BufferedBlockDevice(bd); + BufferedBlockDevice *buff_block_device = new BufferedBlockDevice(block_device); // BlockDevice initialization - int err = block_device->init(); + int err = buff_block_device->init(); TEST_ASSERT_EQUAL(0, err); const char write_buffer[] = "1234567"; char read_buffer[7] = {}; - bd_size_t erase_size = block_device->get_erase_size(); - bd_size_t program_size = block_device->get_program_size(); - TEST_ASSERT(program_size > 0); - // Determine starting address bd_addr_t start_address = 0; for (int i = 1; i <= 7; i++) { - err = block_device->erase(start_address, erase_size); + err = buff_block_device->erase(start_address, erase_size); TEST_ASSERT_EQUAL(0, err); - err = block_device->program((const void *)write_buffer, start_address, i); + err = buff_block_device->program((const void *)write_buffer, start_address, i); TEST_ASSERT_EQUAL(0, err); - err = block_device->sync(); + err = buff_block_device->sync(); TEST_ASSERT_EQUAL(0, err); - err = block_device->read(read_buffer, start_address, i); + err = buff_block_device->read(read_buffer, start_address, i); TEST_ASSERT_EQUAL(0, err); err = memcmp(write_buffer, read_buffer, i); @@ -460,10 +616,47 @@ void test_program_read_small_data_sizes() } // BlockDevice deinitialization - err = block_device->deinit(); + err = buff_block_device->deinit(); + TEST_ASSERT_EQUAL(0, err); + + delete buff_block_device; +} + +void test_get_type_functionality() +{ + utest_printf("\nTest get blockdevice type..\n"); + + block_device = BlockDevice::get_default_instance(); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); + + const char *bd_type = block_device->get_type(); + TEST_ASSERT_NOT_EQUAL(0, bd_type); + +#if COMPONENT_QSPIF + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "QSPIF")); +#elif COMPONENT_SPIF + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "SPIF")); +#elif COMPONENT_DATAFLASH + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "DATAFLASH")); +#elif COMPONENT_SD + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "SD")); +#elif COMPONET_FLASHIAP + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "FLASHIAP")); +#endif +} + +void test_deinit_bd() +{ + utest_printf("\nTest deinit block device.\n"); + + test_iteration++; + + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); + + int err = block_device->deinit(); TEST_ASSERT_EQUAL(0, err); - delete block_device; + block_device = NULL; } utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) @@ -472,24 +665,94 @@ utest::v1::status_t greentea_failure_handler(const Case *const source, const fai return STATUS_CONTINUE; } -// Test setup -utest::v1::status_t test_setup(const size_t number_of_cases) +typedef struct { + const char *description; + const case_handler_t case_handler; + const case_failure_handler_t failure_handler; +} template_case_t; + +template_case_t template_cases[] = { + {"Testing Init block device", test_init_bd, greentea_failure_handler}, + {"Testing read write random blocks", test_random_program_read_erase, greentea_failure_handler}, + {"Testing multi threads erase program read", test_multi_threads, greentea_failure_handler}, + {"Testing contiguous erase, write and read", test_contiguous_erase_write_read, greentea_failure_handler}, + {"Testing BlockDevice erase functionality", test_erase_functionality, greentea_failure_handler}, + {"Testing program read small data sizes", test_program_read_small_data_sizes, greentea_failure_handler}, + {"Testing Deinit block device", test_deinit_bd, greentea_failure_handler}, +}; + +template_case_t def_template_case = {"Testing get type functionality", test_get_type_functionality, greentea_failure_handler}; + +utest::v1::status_t greentea_test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(60, "default_auto"); - return verbose_test_setup_handler(number_of_cases); + return greentea_test_setup_handler(number_of_cases); } -Case cases[] = { - Case("Testing read write random blocks", test_random_program_read_erase, greentea_failure_handler), - Case("Testing multi threads erase program read", test_multi_threads, greentea_failure_handler), - Case("Testing contiguous erase, write and read", test_contiguous_erase_write_read, greentea_failure_handler), - Case("Testing BlockDevice::get_erase_value()", test_get_erase_value, greentea_failure_handler), - Case("Testing program read small data sizes", test_program_read_small_data_sizes, greentea_failure_handler) -}; +int get_bd_count() +{ + int count = 0; -Specification specification(test_setup, cases); +#if COMPONENT_SPIF + bd_arr[count++] = spif; //0 +#endif +#if COMPONENT_QSPIF + bd_arr[count++] = qspif; //1 +#endif +#if COMPONENT_DATAFLASH + bd_arr[count++] = dataflash; //2 +#endif +#if COMPONENT_SD + bd_arr[count++] = sd; //3 +#endif +#if COMPONENT_FLASHIAP + bd_arr[count++] = flashiap; //4 +#endif + + return count; +} + +static const char *prefix[] = {"SPIF ", "QSPIF ", "DATAFLASH ", "SD ", "FLASHIAP ", "DEFAULT "}; int main() { + GREENTEA_SETUP(3000, "default_auto"); + + // We want to replicate our test cases to different types + size_t num_cases = sizeof(template_cases) / sizeof(template_case_t); + size_t total_num_cases = 0; + + int bd_count = get_bd_count(); + + void *raw_mem = new (std::nothrow) uint8_t[(bd_count * num_cases + 1) * sizeof(Case)]; + Case *cases = static_cast(raw_mem); + + for (int j = 0; j < bd_count; j++) { + for (size_t i = 0; i < num_cases; i++) { + char desc[128], *desc_ptr; + sprintf(desc, "%s%s", prefix[bd_arr[j]], template_cases[i].description); + desc_ptr = new char[strlen(desc) + 1]; + strcpy(desc_ptr, desc); + new (&cases[total_num_cases]) Case((const char *) desc_ptr, template_cases[i].case_handler, + template_cases[i].failure_handler); + total_num_cases++; + } + + //Add test_get_type_functionality once, runs on default blockdevice + if (j == bd_count - 1) { + char desc[128], *desc_ptr; + sprintf(desc, "%s%s", prefix[default_bd], def_template_case.description); + desc_ptr = new char[strlen(desc) + 1]; + strcpy(desc_ptr, desc); + new (&cases[total_num_cases]) Case((const char *) desc_ptr, def_template_case.case_handler, + def_template_case.failure_handler); + total_num_cases++; + } + } + + + + Specification specification(greentea_test_setup, cases, total_num_cases, + greentea_test_teardown_handler, (test_failure_handler_t)greentea_failure_handler); + return !Harness::run(specification); } diff --git a/features/storage/TESTS/blockdevice/heap_block_device/main.cpp b/features/storage/TESTS/blockdevice/heap_block_device/main.cpp index 1f84f9265b3..fe65308a3bf 100644 --- a/features/storage/TESTS/blockdevice/heap_block_device/main.cpp +++ b/features/storage/TESTS/blockdevice/heap_block_device/main.cpp @@ -154,6 +154,19 @@ void test_read_write() } +void test_get_type_functionality() +{ + uint8_t *dummy = new (std::nothrow) uint8_t[TEST_BLOCK_DEVICE_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough memory for test"); + delete[] dummy; + + HeapBlockDevice bd(TEST_BLOCK_DEVICE_SIZE, TEST_BLOCK_SIZE); + + const char *bd_type = bd.get_type(); + TEST_ASSERT_NOT_EQUAL(0, bd_type); + TEST_ASSERT_EQUAL(0, strcmp(bd_type, "HEAP")); +} + // Test setup utest::v1::status_t test_setup(const size_t number_of_cases) @@ -164,6 +177,7 @@ utest::v1::status_t test_setup(const size_t number_of_cases) Case cases[] = { Case("Testing read write random blocks", test_read_write), + Case("Testing get type functionality", test_get_type_functionality) }; Specification specification(test_setup, cases); diff --git a/features/storage/TESTS/filesystem/fat_filesystem/main.cpp b/features/storage/TESTS/filesystem/fat_filesystem/main.cpp index cca9acca1cf..86f7b68dd1f 100644 --- a/features/storage/TESTS/filesystem/fat_filesystem/main.cpp +++ b/features/storage/TESTS/filesystem/fat_filesystem/main.cpp @@ -29,15 +29,26 @@ using namespace utest::v1; #error [NOT_SUPPORTED] Filesystem tests not supported by default #endif +static const int mem_alloc_threshold = 32 * 1024; + // Test block device #define BLOCK_SIZE 512 -HeapBlockDevice bd(128 * BLOCK_SIZE, BLOCK_SIZE); +#define BLOCK_COUNT 128 +HeapBlockDevice *bd = 0; // Test formatting void test_format() { - int err = FATFileSystem::format(&bd); + uint8_t *dummy = new (std::nothrow) uint8_t[mem_alloc_threshold]; + TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough heap memory to run test. Test skipped."); + + delete[] dummy; + + bd = new (std::nothrow) HeapBlockDevice(BLOCK_COUNT * BLOCK_SIZE, BLOCK_SIZE); + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + + int err = FATFileSystem::format(bd); TEST_ASSERT_EQUAL(0, err); } @@ -46,13 +57,15 @@ void test_format() template void test_read_write() { + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + FATFileSystem fs("fat"); - int err = fs.mount(&bd); + int err = fs.mount(bd); TEST_ASSERT_EQUAL(0, err); - uint8_t *buffer = (uint8_t *)malloc(TEST_SIZE); - TEST_ASSERT(buffer); + uint8_t *buffer = new (std::nothrow) uint8_t[TEST_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(buffer, "Not enough heap memory to run test. Test skipped."); // Fill with random sequence srand(1); @@ -84,15 +97,19 @@ void test_read_write() err = fs.unmount(); TEST_ASSERT_EQUAL(0, err); + + delete[] buffer; } // Simple test for iterating dir entries void test_read_dir() { + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + FATFileSystem fs("fat"); - int err = fs.mount(&bd); + int err = fs.mount(bd); TEST_ASSERT_EQUAL(0, err); err = fs.mkdir("test_read_dir", S_IRWXU | S_IRWXG | S_IRWXO); @@ -146,6 +163,9 @@ void test_read_dir() err = fs.unmount(); TEST_ASSERT_EQUAL(0, err); + + delete bd; + bd = 0; } diff --git a/features/storage/TESTS/filesystem/multipart_fat_filesystem/main.cpp b/features/storage/TESTS/filesystem/multipart_fat_filesystem/main.cpp index 91dc8c16838..8f983ba5bf5 100644 --- a/features/storage/TESTS/filesystem/multipart_fat_filesystem/main.cpp +++ b/features/storage/TESTS/filesystem/multipart_fat_filesystem/main.cpp @@ -21,6 +21,7 @@ #include "HeapBlockDevice.h" #include "FATFileSystem.h" #include "MBRBlockDevice.h" +#include "LittleFileSystem.h" #include #include "mbed_retarget.h" @@ -30,28 +31,36 @@ using namespace utest::v1; #error [NOT_SUPPORTED] Filesystem tests not supported by default #endif +static const int mem_alloc_threshold = 32 * 1024; + // Test block device #define BLOCK_SIZE 512 #define BLOCK_COUNT 512 -HeapBlockDevice bd(BLOCK_COUNT *BLOCK_SIZE, BLOCK_SIZE); - +HeapBlockDevice *bd = 0; // Test formatting and partitioning void test_format() { + uint8_t *dummy = new (std::nothrow) uint8_t[mem_alloc_threshold]; + TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough heap memory to run test. Test skipped."); + delete[] dummy; + + bd = new (std::nothrow) HeapBlockDevice(BLOCK_COUNT * BLOCK_SIZE, BLOCK_SIZE); + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + // Create two partitions splitting device in ~half - int err = MBRBlockDevice::partition(&bd, 1, 0x83, 0, (BLOCK_COUNT / 2) * BLOCK_SIZE); + int err = MBRBlockDevice::partition(bd, 1, 0x83, 0, (BLOCK_COUNT / 2) * BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); - err = MBRBlockDevice::partition(&bd, 2, 0x83, -(BLOCK_COUNT / 2) * BLOCK_SIZE); + err = MBRBlockDevice::partition(bd, 2, 0x83, -(BLOCK_COUNT / 2) * BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); // Load both partitions - MBRBlockDevice part1(&bd, 1); + MBRBlockDevice part1(bd, 1); err = part1.init(); TEST_ASSERT_EQUAL(0, err); - MBRBlockDevice part2(&bd, 2); + MBRBlockDevice part2(bd, 2); err = part2.init(); TEST_ASSERT_EQUAL(0, err); @@ -75,12 +84,14 @@ void test_format() template void test_read_write() { + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + // Load both partitions - MBRBlockDevice part1(&bd, 1); + MBRBlockDevice part1(bd, 1); int err = part1.init(); TEST_ASSERT_EQUAL(0, err); - MBRBlockDevice part2(&bd, 2); + MBRBlockDevice part2(bd, 2); err = part2.init(); TEST_ASSERT_EQUAL(0, err); @@ -94,11 +105,11 @@ void test_read_write() err = fs2.mount(&part2); TEST_ASSERT_EQUAL(0, err); - uint8_t *buffer1 = (uint8_t *)malloc(TEST_SIZE); - TEST_ASSERT(buffer1); + uint8_t *buffer1 = new (std::nothrow) uint8_t[TEST_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(buffer1, "Not enough heap memory to run test. Test skipped."); - uint8_t *buffer2 = (uint8_t *)malloc(TEST_SIZE); - TEST_ASSERT(buffer2); + uint8_t *buffer2 = new (std::nothrow) uint8_t[TEST_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(buffer2, "Not enough heap memory to run test. Test skipped."); // Fill with random sequence srand(1); @@ -163,49 +174,114 @@ void test_read_write() err = part2.deinit(); TEST_ASSERT_EQUAL(0, err); + + delete[] buffer1; + delete[] buffer2; } void test_single_mbr() { - int err = bd.init(); + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + + int err = bd->init(); TEST_ASSERT_EQUAL(0, err); const bd_addr_t MBR_OFFSET = 0; const bd_addr_t FAT1_OFFSET = 1; const bd_addr_t FAT2_OFFSET = BLOCK_COUNT / 2; - uint8_t *buffer = (uint8_t *)malloc(BLOCK_SIZE); - TEST_ASSERT(buffer); + uint8_t *buffer = new (std::nothrow) uint8_t[BLOCK_SIZE]; + TEST_SKIP_UNLESS_MESSAGE(buffer, "Not enough heap memory to run test. Test skipped."); // Check that all three header blocks have the 0x55aa signature - err = bd.read(buffer, MBR_OFFSET * BLOCK_SIZE, BLOCK_SIZE); + err = bd->read(buffer, MBR_OFFSET * BLOCK_SIZE, BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); TEST_ASSERT(memcmp(&buffer[BLOCK_SIZE - 2], "\x55\xaa", 2) == 0); - err = bd.read(buffer, FAT1_OFFSET * BLOCK_SIZE, BLOCK_SIZE); + err = bd->read(buffer, FAT1_OFFSET * BLOCK_SIZE, BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); TEST_ASSERT(memcmp(&buffer[BLOCK_SIZE - 2], "\x55\xaa", 2) == 0); - err = bd.read(buffer, FAT2_OFFSET * BLOCK_SIZE, BLOCK_SIZE); + err = bd->read(buffer, FAT2_OFFSET * BLOCK_SIZE, BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); TEST_ASSERT(memcmp(&buffer[BLOCK_SIZE - 2], "\x55\xaa", 2) == 0); // Check that the headers for both filesystems contain a jump code // indicating they are actual FAT superblocks and not an extra MBR - err = bd.read(buffer, FAT1_OFFSET * BLOCK_SIZE, BLOCK_SIZE); + err = bd->read(buffer, FAT1_OFFSET * BLOCK_SIZE, BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); TEST_ASSERT(buffer[0] == 0xe9 || buffer[0] == 0xeb || buffer[0] == 0xe8); - err = bd.read(buffer, FAT2_OFFSET * BLOCK_SIZE, BLOCK_SIZE); + err = bd->read(buffer, FAT2_OFFSET * BLOCK_SIZE, BLOCK_SIZE); TEST_ASSERT_EQUAL(0, err); TEST_ASSERT(buffer[0] == 0xe9 || buffer[0] == 0xeb || buffer[0] == 0xe8); - free(buffer); + delete[] buffer; - bd.deinit(); + bd->deinit(); TEST_ASSERT_EQUAL(0, err); + + delete bd; } +void test_with_other_fs() +{ + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + + // Stage 0 - LittleFS + // Stage 1 - FatFS with MBR + // Stage 2 - LittleFS + // Make sure that at no stage we are able to mount the current file system after using the + // previous one + + // start from scratch in this test + bd = new (std::nothrow) HeapBlockDevice(BLOCK_COUNT * BLOCK_SIZE, BLOCK_SIZE); + TEST_SKIP_UNLESS_MESSAGE(bd, "Not enough heap memory to run test. Test skipped."); + + int err; + + for (int stage = 0; stage < 3; stage++) { + + BlockDevice *part; + FileSystem *fs; + + if (stage == 1) { + printf("Stage %d: FAT FS\n", stage + 1); + err = MBRBlockDevice::partition(bd, 1, 0x83, 0, BLOCK_COUNT * BLOCK_SIZE); + TEST_ASSERT_EQUAL(0, err); + + part = new (std::nothrow) MBRBlockDevice(bd, 1); + TEST_SKIP_UNLESS_MESSAGE(part, "Not enough heap memory to run test. Test skipped."); + + err = part->init(); + TEST_ASSERT_EQUAL(0, err); + + fs = new FATFileSystem("fat"); + } else { + printf("Stage %d: Little FS\n", stage + 1); + part = bd; + fs = new LittleFileSystem("lfs"); + } + TEST_SKIP_UNLESS_MESSAGE(fs, "Not enough heap memory to run test. Test skipped."); + + err = fs->mount(part); + TEST_ASSERT_NOT_EQUAL(0, err); + + err = fs->reformat(part); + TEST_ASSERT_EQUAL(0, err); + + err = fs->unmount(); + TEST_ASSERT_EQUAL(0, err); + + delete fs; + if (stage == 1) { + delete part; + } + } + + delete bd; + bd = 0; +} // Test setup utest::v1::status_t test_setup(const size_t number_of_cases) @@ -219,6 +295,7 @@ Case cases[] = { Case("Testing read write < block", test_read_write < BLOCK_SIZE / 2 >), Case("Testing read write > block", test_read_write<2 * BLOCK_SIZE>), Case("Testing for no extra MBRs", test_single_mbr), + Case("Testing with other file system", test_with_other_fs), }; Specification specification(test_setup, cases); diff --git a/features/storage/TESTS/kvstore/direct_access_devicekey_test/main.cpp b/features/storage/TESTS/kvstore/direct_access_devicekey_test/main.cpp new file mode 100644 index 00000000000..25704b8b2af --- /dev/null +++ b/features/storage/TESTS/kvstore/direct_access_devicekey_test/main.cpp @@ -0,0 +1,350 @@ +/* Copyright (c) 2018 Arm Limited +* +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef COMPONENT_FLASHIAP +#error [NOT_SUPPORTED] Target must have internal FlashIAP for this test +#endif + +#include "mbed.h" +#include +#include +#include "DeviceKey.h" +#include "KVStore.h" +#include "KVMap.h" +#include "kv_config.h" +#include "TDBStore.h" +#include "FlashIAP.h" +#include "FlashIAPBlockDevice.h" +#include "DirectAccessDevicekey.h" +#include "greentea-client/test_env.h" +#include "unity.h" +#include "utest.h" +#include + +using namespace utest::v1; +using namespace mbed; + +#define TEST_DEVICEKEY_LENGTH 32 + +static inline uint32_t align_up(uint64_t val, uint64_t size) +{ + return (((val - 1) / size) + 1) * size; +} + +static inline uint32_t align_down(uint64_t val, uint64_t size) +{ + return (((val) / size)) * size; +} + +int get_virtual_TDBStore_position(uint32_t conf_start_address, uint32_t conf_size, bool is_conf_tdb_internal, + uint32_t *tdb_start_address, uint32_t *tdb_end_address) +{ + uint32_t bd_final_size = conf_size;; + uint32_t flash_end_address; + uint32_t flash_start_address; + uint32_t aligned_start_address; + FlashIAP flash; + + int ret = flash.init(); + if (ret != 0) { + return -1; + } + + uint32_t flash_first_writable_sector_address = (uint32_t)(align_up(FLASHIAP_APP_ROM_END_ADDR, + flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR))); + + //Get flash parameters before starting + flash_start_address = flash.get_flash_start(); + flash_end_address = flash_start_address + flash.get_flash_size(); + + bool request_default = false; + if (conf_start_address == 0 && conf_size == 0) { + request_default = true; + } + + if (!request_default) { + if (conf_start_address == 0) { + conf_start_address = flash_end_address - conf_size; + } + aligned_start_address = align_down(conf_start_address, flash.get_sector_size(conf_start_address)); + if (conf_size == 0) { + bd_final_size = (flash_end_address - aligned_start_address); + } + + if ((conf_size == 0) || (conf_start_address == 0)) { + if (aligned_start_address < flash_first_writable_sector_address) { + flash.deinit(); + return -2; + } + } + } else { + if (is_conf_tdb_internal == true) { + aligned_start_address = flash_first_writable_sector_address; + bd_size_t spare_size_for_app = 0; + bd_addr_t curr_addr = aligned_start_address; + int spare_sectors_for_app = 2; + int min_sectors_for_storage = 2; + for (int i = 0; i < spare_sectors_for_app + min_sectors_for_storage - 1; i++) { + bd_size_t sector_size = flash.get_sector_size(curr_addr); + curr_addr += sector_size; + if (curr_addr >= flash_end_address) { + spare_size_for_app = 0; + break; + } + + if (i < spare_sectors_for_app) { + spare_size_for_app += sector_size; + } + } + aligned_start_address += spare_size_for_app; + bd_final_size = (flash_end_address - aligned_start_address); + } else { + aligned_start_address = flash_end_address - (flash.get_sector_size(flash_end_address - 1) * 2); + if (aligned_start_address < flash_first_writable_sector_address) { + flash.deinit(); + return -2; + } + bd_final_size = (flash_end_address - aligned_start_address); + } + } + + (*tdb_start_address) = aligned_start_address; + (*tdb_end_address) = aligned_start_address + bd_final_size; + + flash.deinit(); + + return 0; +} + + +void test_direct_access_to_devicekey_tdb_flashiap_remainder() +{ + utest_printf("Test Direct Access To DeviceKey Test Entire FlashIAP Remainder\n"); + + uint32_t flash_bd_start_address; + uint32_t flash_bd_end_address; + + int err = get_virtual_TDBStore_position(0, 0, true, &flash_bd_start_address, &flash_bd_end_address); + TEST_SKIP_UNLESS_MESSAGE(err != -2, "Test skipped. Not enough available space on Internal FlashIAP"); + TEST_ASSERT_EQUAL(0, err); + uint32_t flash_bd_size = flash_bd_end_address - flash_bd_start_address; + + FlashIAPBlockDevice *flash_bd = new FlashIAPBlockDevice((bd_addr_t)flash_bd_start_address, (bd_size_t)flash_bd_size); + TEST_ASSERT_NOT_EQUAL(NULL, flash_bd); + + TDBStore *tdb = new TDBStore(flash_bd); + TEST_ASSERT_NOT_EQUAL(NULL, tdb); + // Start by Init and Reset to TDBStore + err = tdb->init(); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + err = tdb->reset(); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + // Assign a dummy DeviceKey, and set via tdb + uint8_t device_key_in[TEST_DEVICEKEY_LENGTH] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; + err = tdb->reserved_data_set(device_key_in, TEST_DEVICEKEY_LENGTH); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + + err = tdb->deinit(); + TEST_ASSERT_EQUAL(0, err); + + delete tdb; + delete flash_bd; + + // Now use Direct Access To DeviceKey to retrieve it + uint8_t device_key_out[TEST_DEVICEKEY_LENGTH] = {0}; + size_t actual_data_size = 0; + + err = direct_access_to_devicekey((uint32_t)flash_bd_start_address, (uint32_t)flash_bd_end_address, device_key_out, + TEST_DEVICEKEY_LENGTH, + &actual_data_size); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + // Assert DeviceKey value and length + TEST_ASSERT_EQUAL(actual_data_size, TEST_DEVICEKEY_LENGTH); + for (int i_ind = 0; i_ind < TEST_DEVICEKEY_LENGTH; i_ind++) { + TEST_ASSERT_EQUAL(device_key_in[i_ind], device_key_out[i_ind]); + } + +} + +void test_direct_access_to_devicekey_tdb_last_two_sectors() +{ + utest_printf("Test Direct Access To DeviceKey Test Entire FlashIAP Remainder\n"); + + uint32_t flash_bd_start_address; + uint32_t flash_bd_end_address; + + int err = get_virtual_TDBStore_position(0, 0, false, &flash_bd_start_address, &flash_bd_end_address); + TEST_SKIP_UNLESS_MESSAGE(err != -2, "Test skipped. Not enough available space on Internal FlashIAP"); + TEST_ASSERT_EQUAL(0, err); + + uint32_t flash_bd_size = flash_bd_end_address - flash_bd_start_address; + + FlashIAPBlockDevice *flash_bd = new FlashIAPBlockDevice((bd_addr_t)flash_bd_start_address, (bd_size_t)flash_bd_size); + + TDBStore *tdb = new TDBStore(flash_bd); + // Start by Init and Reset to TDBStore + err = tdb->init(); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + err = tdb->reset(); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + // Assign a dummy DeviceKey, and set via tdb + uint8_t device_key_in[TEST_DEVICEKEY_LENGTH] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; + err = tdb->reserved_data_set(device_key_in, TEST_DEVICEKEY_LENGTH); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + err = tdb->deinit(); + TEST_ASSERT_EQUAL(0, err); + + delete tdb; + delete flash_bd; + + // Now use Direct Access To DeviceKey to retrieve it + uint8_t device_key_out[TEST_DEVICEKEY_LENGTH] = {0}; + size_t actual_data_size = 0; + + err = direct_access_to_devicekey((uint32_t)flash_bd_start_address, (uint32_t)flash_bd_end_address, device_key_out, + TEST_DEVICEKEY_LENGTH, + &actual_data_size); + TEST_ASSERT_EQUAL_ERROR_CODE(0, err); + + // Assert DeviceKey value and length + TEST_ASSERT_EQUAL(TEST_DEVICEKEY_LENGTH, actual_data_size); + for (int i_ind = 0; i_ind < TEST_DEVICEKEY_LENGTH; i_ind++) { + TEST_ASSERT_EQUAL(device_key_in[i_ind], device_key_out[i_ind]); + } + +} +#define STR_EXPAND(tok) #tok +#define STR(tok) STR_EXPAND(tok) + +void test_direct_access_to_device_inject_root() +{ + kv_init_storage_config(); + DeviceKey &devkey = DeviceKey::get_instance(); + uint32_t rkey[DEVICE_KEY_16BYTE / sizeof(uint32_t)]; + uint32_t key[DEVICE_KEY_16BYTE / sizeof(uint32_t)]; + KVMap &kv_map = KVMap::get_instance(); + KVStore *inner_store = kv_map.get_internal_kv_instance(NULL); + TEST_SKIP_UNLESS_MESSAGE(inner_store != NULL, "Test skipped. No KVStore Internal"); + + BlockDevice *flash_bd = kv_map.get_internal_blockdevice_instance(""); + TEST_ASSERT_NOT_EQUAL(NULL, flash_bd); + + int ret = inner_store->reset(); + TEST_ASSERT_EQUAL_INT(DEVICEKEY_SUCCESS, ret); + + memcpy(key, "abcdefghabcdefgh", sizeof(key)); + ret = devkey.device_inject_root_of_trust(key, DEVICE_KEY_16BYTE); + TEST_ASSERT_EQUAL_INT(DEVICEKEY_SUCCESS, ret); + + // Now use Direct Access To DeviceKey to retrieve it */ + uint32_t internal_start_address; + uint32_t internal_rbp_size; + bool is_conf_tdb_internal = false; + if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "FILESYSTEM") == 0) { + internal_start_address = MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE; + } else if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "TDB_EXTERNAL") == 0) { + internal_start_address = MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE; + } else if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "TDB_INTERNAL") == 0) { + internal_start_address = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE; + is_conf_tdb_internal = true; + } else if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "default") == 0) { +#if COMPONENT_QSPIF || COMPONENT_SPIF || COMPONENT_DATAFLASH + internal_start_address = MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE; +#elif COMPONENT_SD + internal_start_address = MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE; +#elif COMPONENT_FLASHIAP + internal_start_address = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS; + internal_rbp_size = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE; + is_conf_tdb_internal = true; +#else + TEST_SKIP_UNLESS_MESSAGE(false, "Test skipped. No KVStore Internal"); +#endif + } else { + TEST_SKIP_UNLESS_MESSAGE(false, "Test skipped. No KVStore Internal"); + } + + uint32_t tdb_st_add = 0; + uint32_t tdb_end_add = 0; + ret = get_virtual_TDBStore_position(internal_start_address, internal_rbp_size, is_conf_tdb_internal, &tdb_st_add, &tdb_end_add); + TEST_SKIP_UNLESS_MESSAGE(ret != -2, "Test skipped. Not enough available space on Internal FlashIAP"); + TEST_ASSERT_EQUAL(0, ret); + + uint32_t expected_tdb_st_add = 0; + uint32_t expected_tdb_end_add = 0; + ret = get_expected_internal_TDBStore_position(&expected_tdb_st_add, &expected_tdb_end_add); + if (ret == MBED_SUCCESS) { + TEST_ASSERT_EQUAL(expected_tdb_st_add, tdb_st_add); + TEST_ASSERT_EQUAL(expected_tdb_end_add, tdb_end_add); + } + + memset(rkey, 0, sizeof(rkey)); + size_t actual_data_size = 0; + ret = ((TDBStore *)inner_store)->reserved_data_get(rkey, DEVICE_KEY_16BYTE, &actual_data_size); + TEST_ASSERT_EQUAL_ERROR_CODE(0, ret); + TEST_ASSERT_EQUAL(actual_data_size, DEVICE_KEY_16BYTE); + TEST_ASSERT_EQUAL_INT32_ARRAY(key, rkey, DEVICE_KEY_16BYTE / sizeof(uint32_t)); + + memset(rkey, 0, sizeof(rkey)); + actual_data_size = 0; + + ret = direct_access_to_devicekey(tdb_st_add, tdb_end_add, rkey, DEVICE_KEY_16BYTE, &actual_data_size); + TEST_ASSERT_EQUAL_ERROR_CODE(0, ret); + /* Assert DeviceKey value and length */ + TEST_ASSERT_EQUAL(actual_data_size, DEVICE_KEY_16BYTE); + TEST_ASSERT_EQUAL_INT32_ARRAY(key, rkey, DEVICE_KEY_16BYTE / sizeof(uint32_t)); + + ret = inner_store->deinit(); + TEST_ASSERT_EQUAL_ERROR_CODE(0, ret); +} + +// Test setup +utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) +{ + greentea_case_failure_abort_handler(source, reason); + return STATUS_CONTINUE; +} + +Case cases[] = { + Case("Testing direct access to devicekey with tdb over flashiap remainder", test_direct_access_to_devicekey_tdb_flashiap_remainder, greentea_failure_handler), + Case("Testing direct access to devicekey with tdb over last two sectors", test_direct_access_to_devicekey_tdb_last_two_sectors, greentea_failure_handler), + Case("Testing direct access to injected devicekey ", test_direct_access_to_device_inject_root, greentea_failure_handler), +}; + +utest::v1::status_t greentea_test_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(120, "default_auto"); + return greentea_test_setup_handler(number_of_cases); +} + +Specification specification(greentea_test_setup, cases, greentea_test_teardown_handler); + +int main() +{ + return !Harness::run(specification); +} diff --git a/features/storage/TESTS/kvstore/filesystemstore_tests/main.cpp b/features/storage/TESTS/kvstore/filesystemstore_tests/main.cpp index 60b27e52a25..4c718a8d233 100644 --- a/features/storage/TESTS/kvstore/filesystemstore_tests/main.cpp +++ b/features/storage/TESTS/kvstore/filesystemstore_tests/main.cpp @@ -27,8 +27,8 @@ #include "utest.h" #include -#if !KVSTORE_ENABLED -#error [NOT_SUPPORTED] KVStore needs to be enabled for this test +#if !defined(TARGET_K64F) +#error [NOT_SUPPORTED] Kvstore API tests run only on K64F devices #endif #define FSST_TEST_NUM_OF_THREADS 5 diff --git a/features/storage/TESTS/kvstore/general_tests_phase_1/main.cpp b/features/storage/TESTS/kvstore/general_tests_phase_1/main.cpp index 44e23c32d1f..bd0f41504e8 100644 --- a/features/storage/TESTS/kvstore/general_tests_phase_1/main.cpp +++ b/features/storage/TESTS/kvstore/general_tests_phase_1/main.cpp @@ -26,13 +26,13 @@ #include "utest/utest.h" #include "FileSystemStore.h" -#if !KVSTORE_ENABLED -#error [NOT_SUPPORTED] KVStore needs to be enabled for this test -#endif - using namespace utest::v1; using namespace mbed; +#if !defined(TARGET_K64F) +#error [NOT_SUPPORTED] Kvstore API tests run only on K64F devices +#endif + static const char data[] = "data"; static const char key[] = "key"; static char buffer[20] = {}; @@ -207,7 +207,7 @@ static void set_buffer_size_is_zero() int res = kvstore->set(key, data, 0, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -225,7 +225,7 @@ static void set_same_key_several_time() res = kvstore->set(key, data, data_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -239,7 +239,7 @@ static void test_thread_set(char *th_key) static void set_several_keys_multithreaded() { TEST_SKIP_UNLESS(kvstore != NULL); - + int i = 0, res = 0; rtos::Thread kvstore_thread[num_of_threads]; osStatus threadStatus; @@ -248,23 +248,23 @@ static void set_several_keys_multithreaded() kvstore_thread[2].start(callback(test_thread_set, (char *)keys[2])); - for (int i = 0; i < num_of_threads; i++) { + for (i = 0; i < num_of_threads; i++) { threadStatus = kvstore_thread[i].join(); if (threadStatus != 0) { utest_printf("\nthread %d join failed!", i + 1); } } - for (int i = 0; i < num_of_threads; i++) { - int res = kvstore->get(keys[i], buffer, buffer_size, &actual_size, 0); + for (i = 0; i < num_of_threads; i++) { + res = kvstore->get(keys[i], buffer, buffer_size, &actual_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - TEST_ASSERT_EQUAL_STRING_LEN(buffer, data, data_size); - } - int res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + for (i = 0; i < num_of_threads; i++) { + res = kvstore->remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } } //set key "write once" and try to set it again @@ -313,7 +313,7 @@ static void set_key_value_one_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(0, res); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -327,10 +327,11 @@ static void set_key_value_two_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_two, 1); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -344,10 +345,11 @@ static void set_key_value_five_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_five, 4); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -361,10 +363,11 @@ static void set_key_value_fifteen_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_fif, 14); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -378,52 +381,84 @@ static void set_key_value_seventeen_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_fif, 16); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } -//set several different key value byte size +//set several different keys and retrieve them static void set_several_key_value_sizes() { TEST_SKIP_UNLESS(kvstore != NULL); char name[7] = "name_"; - char c[2] = {0}; + char c = 0; int i = 0, res = 0; - for (i = 0; i < 30; i++) { - c[0] = i + '0'; - name[6] = c[0]; + name[6] = 0; + + for (i = 0; i < 26; i++) { + c = i + 'a'; + name[5] = c; res = kvstore->set(name, name, sizeof(name), 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } - for (i = 0; i < 30; i++) { - c[0] = i + '0'; - name[6] = c[0]; + for (i = 0; i < 26; i++) { + c = i + 'a'; + name[5] = c; res = kvstore->get(name, buffer, sizeof(buffer), &actual_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(name, buffer, sizeof(name)); memset(buffer, 0, sizeof(buffer)); - } - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + res = kvstore->remove(name); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } } -//set key with ROLLBACK flag without AUTHENTICATION flag -static void Sec_set_key_rollback_without_auth_flag() +//try to set several different unvalid key names +static void set_several_unvalid_key_names() { TEST_SKIP_UNLESS(kvstore != NULL); - if (kv_setup != SecStoreSet) { - return; + + char name[7] = "name_"; + char unvalid[] = {'*', '?', ':', ';', '"', '|', ' ', '<', '>', '\\', '/'}; + int i = 0, res = 0; + + name[6] = 0; + + for (i = 0; i < 11; i++) { + name[5] = unvalid[i]; + res = kvstore->set(name, name, sizeof(name), 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_ARGUMENT, res); } +} - int res = kvstore->set(key, data, data_size, KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_ARGUMENT, res); +//set key initialize kvstore and retrieve it +static void set_key_init_deinit() +{ + TEST_SKIP_UNLESS(kvstore != NULL); + + int res = kvstore->set(key, data, data_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + + res = kvstore->deinit(); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + + res = kvstore->init(); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + + res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + TEST_ASSERT_EQUAL_STRING(data, buffer); + memset(buffer, 0, buffer_size); + + res = kvstore->remove(key); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //set key with ROLLBACK flag and retrieve it, set it again with no ROLBACK @@ -436,7 +471,7 @@ static void Sec_set_key_rollback_set_again_no_rollback() return; } - int res = kvstore->set(key_name, data, data_size, KVStore::REQUIRE_REPLAY_PROTECTION_FLAG | KVStore::REQUIRE_INTEGRITY_FLAG); + int res = kvstore->set(key_name, data, data_size, KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->get(key_name, buffer, sizeof(buffer), &actual_size, 0); @@ -465,29 +500,13 @@ static void Sec_set_key_encrypt() res = kvstore->get(key, buffer, sizeof(buffer), &actual_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(data, buffer, sizeof(data)); - memset(buffer, 0, sizeof(buffer)); - res = kvstore->reset(); + res = kvstore->get_info(key, &info); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); -} - -//set key with AUTH flag and retrieve it -static void Sec_set_key_auth() -{ - TEST_SKIP_UNLESS(kvstore != NULL); - if (kv_setup != SecStoreSet) { - return; - } - - int res = kvstore->set(key, data, data_size, KVStore::REQUIRE_INTEGRITY_FLAG); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kvstore->get(key, buffer, sizeof(buffer), &actual_size, 0); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - TEST_ASSERT_EQUAL_STRING_LEN(data, buffer, sizeof(data)); + TEST_ASSERT_EQUAL_ERROR_CODE(KVStore::REQUIRE_CONFIDENTIALITY_FLAG, info.flags); memset(buffer, 0, sizeof(buffer)); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -549,7 +568,7 @@ static void get_buffer_size_smaller_than_data_real_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, big_data, &actual_size); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -567,7 +586,7 @@ static void get_buffer_size_bigger_than_data_real_size() TEST_ASSERT_EQUAL_STRING_LEN(big_buffer, data, &actual_size); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -582,7 +601,7 @@ static void get_offset_bigger_than_data_size() res = kvstore->get(key, buffer, buffer_size, &actual_size, data_size + 1); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_SIZE, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -608,9 +627,6 @@ static void get_removed_key() res = kvstore->get(key, buffer, buffer_size, &actual_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //set the same key twice and get latest data @@ -630,7 +646,7 @@ static void get_key_that_was_set_twice() TEST_ASSERT_EQUAL_STRING_LEN(buffer, new_data, &actual_size); memset(buffer, 0, buffer_size); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -664,8 +680,10 @@ static void get_several_keys_multithreaded() } } - int res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + for (int i = 0; i < num_of_threads; i++) { + int res = kvstore->remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } } @@ -714,9 +732,6 @@ static void remove_removed_key() res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //key exist - valid flow @@ -729,9 +744,6 @@ static void remove_existed_key() res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } /*----------------setup------------------*/ @@ -767,11 +779,11 @@ template_case_t template_cases[] = { {"set_key_value_fifteen_byte_size", set_key_value_fifteen_byte_size, greentea_failure_handler}, {"set_key_value_seventeen_byte_size", set_key_value_seventeen_byte_size, greentea_failure_handler}, {"set_several_key_value_sizes", set_several_key_value_sizes, greentea_failure_handler}, + {"set_several_unvalid_key_names", set_several_unvalid_key_names, greentea_failure_handler}, + {"set_key_init_deinit", set_key_init_deinit, greentea_failure_handler}, - {"Sec_set_key_rollback_without_auth_flag", Sec_set_key_rollback_without_auth_flag, greentea_failure_handler}, {"Sec_set_key_rollback_set_again_no_rollback", Sec_set_key_rollback_set_again_no_rollback, greentea_failure_handler}, {"Sec_set_key_encrypt", Sec_set_key_encrypt, greentea_failure_handler}, - {"Sec_set_key_auth", Sec_set_key_auth, greentea_failure_handler}, {"get_key_null", get_key_null, greentea_failure_handler}, {"get_key_length_exceeds_max", get_key_length_exceeds_max, greentea_failure_handler}, diff --git a/features/storage/TESTS/kvstore/general_tests_phase_2/main.cpp b/features/storage/TESTS/kvstore/general_tests_phase_2/main.cpp index 6b0db131bca..fbfaad9f8c1 100644 --- a/features/storage/TESTS/kvstore/general_tests_phase_2/main.cpp +++ b/features/storage/TESTS/kvstore/general_tests_phase_2/main.cpp @@ -26,13 +26,13 @@ #include "utest/utest.h" #include "FileSystemStore.h" -#if !KVSTORE_ENABLED -#error [NOT_SUPPORTED] KVStore needs to be enabled for this test -#endif - using namespace utest::v1; using namespace mbed; +#if !defined(TARGET_K64F) +#error [NOT_SUPPORTED] Kvstore API tests run only on K64F devices +#endif + static const char data[] = "data"; static const char key[] = "key"; static char buffer[20] = {}; @@ -204,9 +204,6 @@ static void get_info_removed_key() res = kvstore->get_info(key, &info); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //get_info of existing key - valid flow @@ -236,8 +233,7 @@ static void get_info_overwritten_key() { TEST_SKIP_UNLESS(kvstore != NULL); - char new_key[] = "get_info_key"; - int res = kvstore->set(new_key, data, data_size, 0); + int res = kvstore->set(key, data, data_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); char new_data[] = "new_data"; @@ -248,7 +244,7 @@ static void get_info_overwritten_key() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_ERROR_CODE(info.size, sizeof(new_data)); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -310,15 +306,15 @@ static void iterator_next_one_key_list() res = kvstore->iterator_open(&kvstore_it, NULL); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - char key[KVStore::MAX_KEY_SIZE]; + char key_buf[KVStore::MAX_KEY_SIZE]; - res = kvstore->iterator_next(kvstore_it, key, sizeof(key)); + res = kvstore->iterator_next(kvstore_it, key_buf, sizeof(key_buf)); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -344,16 +340,13 @@ static void iterator_next_empty_list_keys_removed() res = kvstore->iterator_open(&kvstore_it, NULL); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - char key[KVStore::MAX_KEY_SIZE]; + char key_buf[KVStore::MAX_KEY_SIZE]; - res = kvstore->iterator_next(kvstore_it, key, sizeof(key)); + res = kvstore->iterator_next(kvstore_it, key_buf, sizeof(key_buf)); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //iteartor_next with non matching prefix (empty list) @@ -372,15 +365,18 @@ static void iterator_next_empty_list_non_matching_prefix() res = kvstore->iterator_open(&kvstore_it, "Key*"); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - char key[KVStore::MAX_KEY_SIZE]; + char key_buf[KVStore::MAX_KEY_SIZE]; - res = kvstore->iterator_next(kvstore_it, key, sizeof(key)); + res = kvstore->iterator_next(kvstore_it, key_buf, sizeof(key_buf)); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(new_key_1); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + + res = kvstore->remove(new_key_2); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -408,7 +404,7 @@ static void iterator_next_several_overwritten_keys() res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -449,8 +445,10 @@ static void iterator_next_full_list() res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + for (i = 0; i < num_of_keys; i++) { + int res = kvstore->remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } } //iteartor_next remove while iterating @@ -483,7 +481,6 @@ static void iterator_next_remove_while_iterating() if (res != MBED_SUCCESS) { break; } - res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -496,15 +493,14 @@ static void iterator_next_remove_while_iterating() if (res != MBED_SUCCESS) { break; } - TEST_ASSERT_EQUAL_STRING_LEN("new", key, 3); + + res = kvstore->remove(key); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } res = kvstore->iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kvstore->reset(); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } /*----------------iterator_close()------------------*/ @@ -628,7 +624,7 @@ static void set_add_data_data_size_is_zero() res = kvstore->set_finalize(handle); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -683,7 +679,7 @@ static void set_add_data_set_different_data_size_in_same_transaction() TEST_ASSERT_EQUAL_STRING(new_data, buffer); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -715,7 +711,7 @@ static void set_add_data_set_key_value_five_Kbytes() TEST_ASSERT_EQUAL_STRING_LEN(temp_buf, read_temp_buf, sizeof(temp_buf)); - res = kvstore->reset(); + res = kvstore->remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } diff --git a/features/storage/TESTS/kvstore/securestore_whitebox/main.cpp b/features/storage/TESTS/kvstore/securestore_whitebox/main.cpp index 819acc4a499..be8319b9734 100644 --- a/features/storage/TESTS/kvstore/securestore_whitebox/main.cpp +++ b/features/storage/TESTS/kvstore/securestore_whitebox/main.cpp @@ -34,7 +34,11 @@ #include #include -#if !SECURESTORE_ENABLED || !KVSTORE_ENABLED +#if !defined(TARGET_K64F) +#error [NOT_SUPPORTED] Kvstore API tests run only on K64F devices +#endif + +#if !SECURESTORE_ENABLED #error [NOT_SUPPORTED] KVStore & SecureStore need to be enabled for this test #endif @@ -148,13 +152,13 @@ static void white_box_test() elapsed = timer.read_ms(); printf("Elapsed time for reset is %d ms\n", elapsed); - result = sec_kv->set(key1, key1_val1, strlen(key1_val1), KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_INTEGRITY_FLAG); + result = sec_kv->set(key1, key1_val1, strlen(key1_val1), KVStore::REQUIRE_CONFIDENTIALITY_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); - result = sec_kv->set(key2, key2_val1, strlen(key2_val1), KVStore::REQUIRE_INTEGRITY_FLAG); + result = sec_kv->set(key2, key2_val1, strlen(key2_val1), 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); - result = sec_kv->set(key2, key2_val2, strlen(key2_val2), KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_INTEGRITY_FLAG); + result = sec_kv->set(key2, key2_val2, strlen(key2_val2), KVStore::REQUIRE_CONFIDENTIALITY_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = sec_kv->get(key2, get_buf, sizeof(get_buf), &actual_data_size); @@ -163,18 +167,17 @@ static void white_box_test() TEST_ASSERT_EQUAL_STRING_LEN(key2_val2, get_buf, strlen(key2_val2)); timer.reset(); - result = sec_kv->set(key2, key2_val3, strlen(key2_val3), KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + result = sec_kv->set(key2, key2_val3, strlen(key2_val3), KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); elapsed = timer.read_ms(); printf("Elapsed time for set is %d ms\n", elapsed); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = sec_kv->set(key3, key3_val1, strlen(key3_val1), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); - result = sec_kv->set(key3, key3_val2, strlen(key3_val2), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG); + result = sec_kv->set(key3, key3_val2, strlen(key3_val2), KVStore::REQUIRE_CONFIDENTIALITY_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_ARGUMENT, result); result = sec_kv->get(key3, get_buf, sizeof(get_buf), &actual_data_size); @@ -183,18 +186,16 @@ static void white_box_test() TEST_ASSERT_EQUAL_STRING_LEN(key3_val1, get_buf, strlen(key3_val1)); for (int j = 0; j < 2; j++) { - result = sec_kv->set(key4, key4_val1, strlen(key4_val1), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + result = sec_kv->set(key4, key4_val1, strlen(key4_val1), KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); - result = sec_kv->set(key4, key4_val2, strlen(key4_val2), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + result = sec_kv->set(key4, key4_val2, strlen(key4_val2), KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); } result = sec_kv->get_info(key3, &info); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); - TEST_ASSERT_EQUAL(KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG, info.flags); + TEST_ASSERT_EQUAL(KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG, info.flags); TEST_ASSERT_EQUAL(strlen(key3_val1), info.size); result = ul_kv->get_info(key3, &info); @@ -224,7 +225,7 @@ static void white_box_test() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, result); result = sec_kv->set(key5, key5_val1, strlen(key5_val1), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG | KVStore::WRITE_ONCE_FLAG); + KVStore::REQUIRE_REPLAY_PROTECTION_FLAG | KVStore::WRITE_ONCE_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); #ifndef NO_RBP_MODE @@ -234,7 +235,7 @@ static void white_box_test() #endif result = sec_kv->set(key5, key5_val2, strlen(key5_val2), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG | KVStore::WRITE_ONCE_FLAG); + KVStore::REQUIRE_REPLAY_PROTECTION_FLAG | KVStore::WRITE_ONCE_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_WRITE_PROTECTED, result); result = sec_kv->remove(key5); @@ -315,7 +316,7 @@ static void white_box_test() TEST_ASSERT_EQUAL_STRING_LEN(key4_val2, get_buf, strlen(key4_val2)); result = sec_kv->set(key6, key6_val1, strlen(key6_val1), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); #ifndef NO_RBP_MODE @@ -326,7 +327,7 @@ static void white_box_test() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = sec_kv->set(key6, key6_val2, strlen(key6_val2), - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = ul_kv->set(key6, attack_buf, attack_size, 0); @@ -342,7 +343,7 @@ static void white_box_test() int cmac_size = info.size; uint8_t *cmac = new uint8_t[cmac_size]; - result = sec_kv->set(key7, key7_val1, strlen(key7_val1), KVStore::REQUIRE_INTEGRITY_FLAG); + result = sec_kv->set(key7, key7_val1, strlen(key7_val1), 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = ul_kv->get(key7, attack_buf, sizeof(attack_buf), &attack_size); @@ -351,7 +352,7 @@ static void white_box_test() int data_offset = attack_size - cmac_size - strlen(key7_val1); TEST_ASSERT_EQUAL(0, strncmp(key7_val1, attack_buf + data_offset, strlen(key7_val1))); - result = sec_kv->set(key7, key7_val1, strlen(key7_val1), KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG); + result = sec_kv->set(key7, key7_val1, strlen(key7_val1), KVStore::REQUIRE_CONFIDENTIALITY_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result); result = ul_kv->get(key7, attack_buf, sizeof(attack_buf), &attack_size); diff --git a/features/storage/TESTS/kvstore/static_tests/main.cpp b/features/storage/TESTS/kvstore/static_tests/main.cpp index 11f39ffa299..a063d5c4d68 100644 --- a/features/storage/TESTS/kvstore/static_tests/main.cpp +++ b/features/storage/TESTS/kvstore/static_tests/main.cpp @@ -22,10 +22,6 @@ #include "utest/utest.h" #include "kvstore_global_api.h" -#if !KVSTORE_ENABLED -#error [NOT_SUPPORTED] KVStore needs to be enabled for this test -#endif - using namespace utest::v1; using namespace mbed; @@ -116,7 +112,7 @@ static void set_buffer_size_is_zero() int res = kv_set(key, data, 0, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -133,7 +129,7 @@ static void set_same_key_several_time() res = kv_set(key, data, data_size, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -169,24 +165,22 @@ static void set_several_keys_multithreaded() TEST_ASSERT_EQUAL_STRING_LEN(buffer, data, data_size); + res = kv_remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } - - int res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //set key "write once" and try to set it again static void set_write_once_flag_try_set_twice() { TEST_SKIP_UNLESS(!init_res); - int res = kv_set(key, data, data_size, KV_WRITE_ONCE_FLAG); + char write_once_key[] = "write_once_key"; + + int res = kv_set(write_once_key, data, data_size, KV_WRITE_ONCE_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_set(key, data, data_size, KV_WRITE_ONCE_FLAG); + res = kv_set(write_once_key, data, data_size, KV_WRITE_ONCE_FLAG); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_WRITE_PROTECTED, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //set key "write once" and try to remove it @@ -218,7 +212,7 @@ static void set_key_value_one_byte_size() TEST_ASSERT_EQUAL_ERROR_CODE(0, res); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -234,7 +228,7 @@ static void set_key_value_two_byte_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_two, 1); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -250,7 +244,7 @@ static void set_key_value_five_byte_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_five, 4); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -266,7 +260,7 @@ static void set_key_value_fifteen_byte_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_fif, 14); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -282,36 +276,59 @@ static void set_key_value_seventeen_byte_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, data_fif, 16); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } -//set several different key value byte size +//set several different keys and retrieve them static void set_several_key_value_sizes() { TEST_SKIP_UNLESS(!init_res); char name[7] = "name_"; - char c[2] = {0}; + char c = 0; int i = 0, res = 0; - for (i = 0; i < 30; i++) { - c[0] = i + '0'; - name[6] = c[0]; + name[6] = 0; + + for (i = 0; i < 26; i++) { + c = i + 'a'; + name[5] = c; res = kv_set(name, name, sizeof(name), 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } - for (i = 0; i < 30; i++) { - c[0] = i + '0'; - name[6] = c[0]; + for (i = 0; i < 26; i++) { + c = i + 'a'; + name[5] = c; res = kv_get(name, buffer, sizeof(buffer), &actual_size); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_STRING_LEN(name, buffer, sizeof(name)); memset(buffer, 0, sizeof(buffer)); + + res = kv_remove(name); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } +} - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); +//try to set several different unvalid key names +static void set_several_unvalid_key_names() +{ + TEST_SKIP_UNLESS(!init_res); + char name[7] = "name_"; + char unvalid[] = {'*', '?', ':', ';', '"', '|', ' ', '<', '>', '\\', '/'}; + int i = 0, res = 0; + + name[6] = 0; + + for (i = 0; i < 11; i++) { + name[5] = unvalid[i]; + res = kv_set(name, name, sizeof(name), 0); + if (unvalid[i] != '/') { + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_ARGUMENT, res); + } else { + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); + } + } } /*----------------get()------------------*/ @@ -352,7 +369,7 @@ static void get_buffer_size_is_zero() res = kv_get(key, buffer, 0, &actual_size); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -370,7 +387,7 @@ static void get_buffer_size_smaller_than_data_real_size() TEST_ASSERT_EQUAL_STRING_LEN(buffer, big_data, &actual_size); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -387,7 +404,7 @@ static void get_buffer_size_bigger_than_data_real_size() TEST_ASSERT_EQUAL_STRING_LEN(big_buffer, data, &actual_size); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -411,9 +428,6 @@ static void get_removed_key() res = kv_get(key, buffer, buffer_size, &actual_size); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //set the same key twice and get latest data @@ -432,7 +446,7 @@ static void get_key_that_was_set_twice() TEST_ASSERT_EQUAL_STRING_LEN(buffer, new_data, &actual_size); memset(buffer, 0, buffer_size); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -450,11 +464,12 @@ static void test_thread_get(const void *th_key) static void get_several_keys_multithreaded() { TEST_SKIP_UNLESS(!init_res); + int i = 0, res = 0; rtos::Thread kvstore_thread[num_of_threads]; osStatus threadStatus; - for (int i = 0; i < num_of_threads; i++) { - int res = kv_set(keys[i], keys[i], strlen(keys[i]) + 1, 0); + for (i = 0; i < num_of_threads; i++) { + res = kv_set(keys[i], keys[i], strlen(keys[i]) + 1, 0); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -462,15 +477,17 @@ static void get_several_keys_multithreaded() kvstore_thread[1].start(callback(test_thread_get, "key2")); kvstore_thread[2].start(callback(test_thread_get, "key3")); - for (int i = 0; i < num_of_threads; i++) { + for (i = 0; i < num_of_threads; i++) { threadStatus = kvstore_thread[i].join(); if (threadStatus != 0) { utest_printf("\nthread %d join failed!", i + 1); } } - int res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + for (i = 0; i < num_of_threads; i++) { + res = kv_remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } } /*----------------remove()------------------*/ @@ -514,9 +531,6 @@ static void remove_removed_key() res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //key exist - valid flow @@ -528,9 +542,6 @@ static void remove_existed_key() res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } /*----------------get_info()------------------*/ @@ -582,9 +593,6 @@ static void get_info_removed_key() res = kv_get_info(key, &info); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //get_info of existing key - valid flow @@ -617,7 +625,7 @@ static void get_info_overwritten_key() TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); TEST_ASSERT_EQUAL_ERROR_CODE(info.size, sizeof(new_data)); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -677,7 +685,7 @@ static void iterator_next_one_key_list() res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -707,9 +715,6 @@ static void iterator_next_empty_list_keys_removed() res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } //iteartor_next with non matching prefix (empty list) @@ -733,7 +738,10 @@ static void iterator_next_empty_list_non_matching_prefix() res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(new_key_1); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + + res = kv_remove(new_key_2); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -758,7 +766,7 @@ static void iterator_next_several_overwritten_keys() res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -799,8 +807,10 @@ static void iterator_next_full_list() res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + for (i = 0; i < num_of_threads; i++) { + res = kv_remove(keys[i]); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); + } delete[] key_found; } @@ -819,13 +829,12 @@ static void iterator_next_path_check() res = kv_iterator_next(kvstore_it, temp_key, sizeof(temp_key)); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - TEST_ASSERT_EQUAL_STRING(key, temp_key); res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - res = kv_reset(def_kv); + res = kv_remove(key); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } @@ -874,13 +883,13 @@ static void iterator_next_remove_while_iterating() } TEST_ASSERT_EQUAL_STRING_LEN("new", key, 3); + + res = kv_remove(key); + TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } res = kv_iterator_close(kvstore_it); TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); - - res = kv_reset(def_kv); - TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res); } /*----------------iterator_close()------------------*/ @@ -901,6 +910,7 @@ static void iterator_close_right_after_iterator_open() utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) { greentea_case_failure_abort_handler(source, reason); + UnityConcludeTest(); return STATUS_CONTINUE; } @@ -922,6 +932,7 @@ Case cases[] = { Case("set_key_value_fifteen_byte_size", set_key_value_fifteen_byte_size, greentea_failure_handler), Case("set_key_value_seventeen_byte_size", set_key_value_seventeen_byte_size, greentea_failure_handler), Case("set_several_key_value_sizes", set_several_key_value_sizes, greentea_failure_handler), + Case("set_several_unvalid_key_names", set_several_unvalid_key_names, greentea_failure_handler), Case("get_key_null", get_key_null, greentea_failure_handler), Case("get_key_length_exceeds_max", get_key_length_exceeds_max, greentea_failure_handler), diff --git a/features/storage/TESTS/kvstore/tdbstore_whitebox/main.cpp b/features/storage/TESTS/kvstore/tdbstore_whitebox/main.cpp index 4075a466429..eb43e6c601f 100644 --- a/features/storage/TESTS/kvstore/tdbstore_whitebox/main.cpp +++ b/features/storage/TESTS/kvstore/tdbstore_whitebox/main.cpp @@ -33,10 +33,6 @@ #include #include -#if !KVSTORE_ENABLED -#error [NOT_SUPPORTED] KVStore needs to be enabled for this test -#endif - using namespace mbed; using namespace utest::v1; @@ -95,6 +91,11 @@ static const char *const res_val2 = "This should surely not be saved as the res static void white_box_test() { + +#if !defined(TARGET_K64F) + TEST_SKIP_MESSAGE("Kvstore API tests run only on K64F devices"); +#endif + bd_params_t bd_params[] = { {8192, 1, 16, 4096}, // Standard {4096 * 4, 1, 1, 4096}, // K82F like @@ -332,6 +333,11 @@ static void white_box_test() static void multi_set_test() { + +#if !defined(TARGET_K64F) + TEST_SKIP_MESSAGE("Kvstore API tests run only on K64F devices"); +#endif + char *key; uint8_t *get_buf, *set_buf; size_t key_size = 32; @@ -451,6 +457,11 @@ static void multi_set_test() static void error_inject_test() { + +#if !defined(TARGET_K64F) + TEST_SKIP_MESSAGE("Kvstore API tests run only on K64F devices"); +#endif + char *key; uint8_t *get_buf, *set_buf, *exists; size_t key_size = 8; diff --git a/features/storage/blockdevice/BlockDevice.h b/features/storage/blockdevice/BlockDevice.h index 8ba28e93b76..7c83685b2a4 100644 --- a/features/storage/blockdevice/BlockDevice.h +++ b/features/storage/blockdevice/BlockDevice.h @@ -49,12 +49,12 @@ class BlockDevice { /** Return the default block device * - * Returns the default BlockDevice base on configuration json. + * Returns the default block device based on the configuration JSON. * Use the components in target.json or application config to change * the default block device. * * An application can override all target settings by implementing - * BlockDevice::get_default_instance() themselves - the default + * BlockDevice::get_default_instance() - the default * definition is weak, and calls get_target_default_instance(). */ static BlockDevice *get_default_instance(); @@ -90,8 +90,8 @@ class BlockDevice { * * @param buffer Buffer to write blocks to * @param addr Address of block to begin reading from - * @param size Size to read in bytes, must be a multiple of read block size - * @return 0 on success, negative error code on failure + * @param size Size to read in bytes, must be a multiple of the read block size + * @return 0 on success or a negative error code on failure */ virtual int read(void *buffer, bd_addr_t addr, bd_size_t size) = 0; @@ -103,8 +103,8 @@ class BlockDevice { * * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to - * @param size Size to write in bytes, must be a multiple of program block size - * @return 0 on success, negative error code on failure + * @param size Size to write in bytes, must be a multiple of the program block size + * @return 0 on success or a negative error code on failure */ virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size) = 0; @@ -114,8 +114,8 @@ class BlockDevice { * unless get_erase_value returns a non-negative byte value * * @param addr Address of block to begin erasing - * @param size Size to erase in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @param size Size to erase in bytes, must be a multiple of the erase block size + * @return 0 on success or a negative error code on failure */ virtual int erase(bd_addr_t addr, bd_size_t size) { @@ -130,8 +130,8 @@ class BlockDevice { * the device is not busy. * * @param addr Address of block to mark as unused - * @param size Size to mark as unused in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @param size Size to mark as unused in bytes, must be a multiple of the erase block size + * @return 0 on success or a negative error code on failure */ virtual int trim(bd_addr_t addr, bd_size_t size) { @@ -179,7 +179,7 @@ class BlockDevice { * that value can be programmed without another erase. * * @return The value of storage when erased, or -1 if you can't - * rely on the value of erased storage + * rely on the value of the erased storage */ virtual int get_erase_value() const { @@ -233,6 +233,12 @@ class BlockDevice { (addr + size) % get_erase_size(addr + size - 1) == 0 && addr + size <= this->size()); } + + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const = 0; }; } // namespace mbed diff --git a/features/storage/blockdevice/BufferedBlockDevice.cpp b/features/storage/blockdevice/BufferedBlockDevice.cpp index bbfa0a0219a..23ec5db4c0d 100644 --- a/features/storage/blockdevice/BufferedBlockDevice.cpp +++ b/features/storage/blockdevice/BufferedBlockDevice.cpp @@ -330,4 +330,13 @@ bd_size_t BufferedBlockDevice::size() const return _bd_size; } +const char *BufferedBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed diff --git a/features/storage/blockdevice/BufferedBlockDevice.h b/features/storage/blockdevice/BufferedBlockDevice.h index 1f9da26abad..f29f7e1281c 100644 --- a/features/storage/blockdevice/BufferedBlockDevice.h +++ b/features/storage/blockdevice/BufferedBlockDevice.h @@ -35,35 +35,36 @@ namespace mbed { */ class BufferedBlockDevice : public BlockDevice { public: - /** Lifetime of the memory block device + /** Lifetime of a memory-buffered block device wrapping an underlying block device * * @param bd Block device to back the BufferedBlockDevice */ BufferedBlockDevice(BlockDevice *bd); - /** Lifetime of a block device + /** Lifetime of the memory-buffered block device */ virtual ~BufferedBlockDevice(); - /** Initialize a block device + /** Initialize a buffered-memory block device and its underlying block device * * @return 0 on success or a negative error code on failure */ virtual int init(); - /** Deinitialize a block device + /** Deinitialize the buffered-memory block device and its underlying block device * * @return 0 on success or a negative error code on failure */ virtual int deinit(); - /** Ensure data on storage is in sync with the driver + /** Ensure that data on the underlying storage block device is in sync with the + * memory-buffered block device * * @return 0 on success or a negative error code on failure */ virtual int sync(); - /** Read blocks from a block device + /** Read blocks from the memory-buffered block device * * @param buffer Buffer to read blocks into * @param addr Address of block to begin reading from @@ -72,9 +73,9 @@ class BufferedBlockDevice : public BlockDevice { */ virtual int read(void *buffer, bd_addr_t addr, bd_size_t size); - /** Program blocks to a block device + /** Program data to the memory-buffered block device * - * The blocks must have been erased prior to being programmed + * The write address blocks must be erased prior to being programmed. * * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to @@ -83,10 +84,10 @@ class BufferedBlockDevice : public BlockDevice { */ virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size); - /** Erase blocks on a block device + /** Erase blocks from the memory-buffered block device * * The state of an erased block is undefined until it has been programmed, - * unless get_erase_value returns a non-negative byte value + * unless get_erase_value returns a non-negative byte value. * * @param addr Address of block to begin erasing * @param size Size to erase in bytes, must be a multiple of erase block size @@ -127,7 +128,7 @@ class BufferedBlockDevice : public BlockDevice { */ virtual bd_size_t get_erase_size() const; - /** Get the size of an erasable block given address + /** Get the size of an erasable block of a given address * * @param addr Address within the erasable block * @return Size of an erasable block in bytes @@ -135,7 +136,7 @@ class BufferedBlockDevice : public BlockDevice { */ virtual bd_size_t get_erase_size(bd_addr_t addr) const; - /** Get the value of storage when erased + /** Get the value of storage data after being erased * * If get_erase_value returns a non-negative byte value, the underlying * storage is set to that value when erased, and storage containing @@ -152,6 +153,12 @@ class BufferedBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the underlying BlockDevice class type + * + * @return A string representing the underlying BlockDevice class type + */ + virtual const char *get_type() const; + protected: BlockDevice *_bd; bd_size_t _bd_program_size; @@ -164,6 +171,7 @@ class BufferedBlockDevice : public BlockDevice { uint32_t _init_ref_count; bool _is_initialized; +#if !(DOXYGEN_ONLY) /** Flush data in cache * * @return 0 on success or a negative error code on failure @@ -175,7 +183,7 @@ class BufferedBlockDevice : public BlockDevice { * @return none */ void invalidate_write_cache(); - +#endif //#if !(DOXYGEN_ONLY) }; } // namespace mbed diff --git a/features/storage/blockdevice/ChainingBlockDevice.cpp b/features/storage/blockdevice/ChainingBlockDevice.cpp index 8e79baec3e8..c5e31b3aa22 100644 --- a/features/storage/blockdevice/ChainingBlockDevice.cpp +++ b/features/storage/blockdevice/ChainingBlockDevice.cpp @@ -283,4 +283,9 @@ bd_size_t ChainingBlockDevice::size() const return _size; } +const char *ChainingBlockDevice::get_type() const +{ + return "CHAINING"; +} + } // namespace mbed diff --git a/features/storage/blockdevice/ChainingBlockDevice.h b/features/storage/blockdevice/ChainingBlockDevice.h index 4db348e3f47..8558fc4b5c7 100644 --- a/features/storage/blockdevice/ChainingBlockDevice.h +++ b/features/storage/blockdevice/ChainingBlockDevice.h @@ -172,6 +172,12 @@ class ChainingBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + protected: BlockDevice **_bds; size_t _bd_count; diff --git a/features/storage/blockdevice/ExhaustibleBlockDevice.cpp b/features/storage/blockdevice/ExhaustibleBlockDevice.cpp index bd6d4a6bfed..a19d4bb093e 100644 --- a/features/storage/blockdevice/ExhaustibleBlockDevice.cpp +++ b/features/storage/blockdevice/ExhaustibleBlockDevice.cpp @@ -194,4 +194,14 @@ bd_size_t ExhaustibleBlockDevice::size() const return _bd->size(); } +const char *ExhaustibleBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/ExhaustibleBlockDevice.h b/features/storage/blockdevice/ExhaustibleBlockDevice.h index 17ad0ecc6e4..e914d57f698 100644 --- a/features/storage/blockdevice/ExhaustibleBlockDevice.h +++ b/features/storage/blockdevice/ExhaustibleBlockDevice.h @@ -154,6 +154,12 @@ class ExhaustibleBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: BlockDevice *_bd; uint32_t *_erase_array; diff --git a/features/storage/blockdevice/FlashSimBlockDevice.cpp b/features/storage/blockdevice/FlashSimBlockDevice.cpp index adb7ca5c80f..04b30a9a2a7 100644 --- a/features/storage/blockdevice/FlashSimBlockDevice.cpp +++ b/features/storage/blockdevice/FlashSimBlockDevice.cpp @@ -212,4 +212,14 @@ int FlashSimBlockDevice::get_erase_value() const return _erase_value; } +const char *FlashSimBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/FlashSimBlockDevice.h b/features/storage/blockdevice/FlashSimBlockDevice.h index b4581856948..c43e5689dee 100644 --- a/features/storage/blockdevice/FlashSimBlockDevice.h +++ b/features/storage/blockdevice/FlashSimBlockDevice.h @@ -136,6 +136,12 @@ class FlashSimBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: uint8_t _erase_value; bd_size_t _blank_buf_size; diff --git a/features/storage/blockdevice/HeapBlockDevice.cpp b/features/storage/blockdevice/HeapBlockDevice.cpp index 902ec2e1b79..c3c682e49d2 100644 --- a/features/storage/blockdevice/HeapBlockDevice.cpp +++ b/features/storage/blockdevice/HeapBlockDevice.cpp @@ -183,4 +183,10 @@ int HeapBlockDevice::erase(bd_addr_t addr, bd_size_t size) return 0; } +const char *HeapBlockDevice::get_type() const +{ + return "HEAP"; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/HeapBlockDevice.h b/features/storage/blockdevice/HeapBlockDevice.h index c21f6fd4659..3bc8e3b4570 100644 --- a/features/storage/blockdevice/HeapBlockDevice.h +++ b/features/storage/blockdevice/HeapBlockDevice.h @@ -150,6 +150,12 @@ class HeapBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: bd_size_t _read_size; bd_size_t _program_size; diff --git a/features/storage/blockdevice/MBRBlockDevice.cpp b/features/storage/blockdevice/MBRBlockDevice.cpp index 0b280db3ef6..cf4db6a5da1 100644 --- a/features/storage/blockdevice/MBRBlockDevice.cpp +++ b/features/storage/blockdevice/MBRBlockDevice.cpp @@ -92,8 +92,9 @@ static int partition_absolute( return err; } + uint32_t table_start_offset = buffer_size - sizeof(struct mbr_table); struct mbr_table *table = reinterpret_cast( - &buffer[buffer_size - sizeof(struct mbr_table)]); + &buffer[table_start_offset]); if (table->signature[0] != 0x55 || table->signature[1] != 0xaa) { // Setup default values for MBR table->signature[0] = 0x55; @@ -143,6 +144,16 @@ static int partition_absolute( } } + // As the erase operation may do nothing, erase remainder of the buffer, to eradicate + // any remaining programmed data (such as previously programmed file systems). + if (table_start_offset > 0) { + memset(buffer, 0xFF, table_start_offset); + } + if (table_start_offset + sizeof(struct mbr_table) < buffer_size) { + memset(buffer + table_start_offset + sizeof(struct mbr_table), 0xFF, + buffer_size - (table_start_offset + sizeof(struct mbr_table))); + } + // Write out MBR err = bd->erase(0, bd->get_erase_size()); if (err) { @@ -423,4 +434,14 @@ int MBRBlockDevice::get_partition_number() const return _part; } +const char *MBRBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/MBRBlockDevice.h b/features/storage/blockdevice/MBRBlockDevice.h index 920d1bed7d2..682f9f8db66 100644 --- a/features/storage/blockdevice/MBRBlockDevice.h +++ b/features/storage/blockdevice/MBRBlockDevice.h @@ -41,52 +41,6 @@ enum { /** Block device for managing a Master Boot Record * https://en.wikipedia.org/wiki/Master_boot_record * - * Here is an example of partitioning a heap backed block device - * @code - * #include "mbed.h" - * #include "HeapBlockDevice.h" - * #include "MBRBlockDevice.h" - * - * // Create a block device with 64 blocks of size 512 - * HeapBlockDevice mem(64*512, 512); - * - * // Partition into two partitions with ~half the blocks - * MBRBlockDevice::partition(&mem, 1, 0x83, 0*512, 32*512); - * MBRBlockDevice::partition(&mem, 2, 0x83, 32*512); - * - * // Create a block device that maps to the first 32 blocks (excluding MBR block) - * MBRBlockDevice part1(&mem, 1); - * - * // Create a block device that maps to the last 32 blocks - * MBRBlockDevice part2(&mem, 2); - * @endcode - * - * Here is a more realistic example where the MBRBlockDevice is used - * to partition a region of space on an SD card. When plugged into a computer, - * the partitions will be recognized appropriately. - * @code - * #include "mbed.h" - * #include "SDBlockDevice.h" - * #include "MBRBlockDevice.h" - * #include "FATFileSystem.h" - * - * // Create an SD card - * SDBlockDevice sd(s0, s1, s2, s3); - * - * // Create a partition with 1 GB of space - * MBRBlockDevice::partition(&sd, 1, 0x83, 0, 1024*1024); - * - * // Create the block device that represents the partition - * MBRBlockDevice part1(&sd, 1); - * - * // Format the partition with a FAT filesystem - * FATFileSystem::format(&part1); - * - * // Create the FAT filesystem instance, files can now be written to - * // the FAT filesystem in partition 1 - * FATFileSystem fat("fat", &part1); - * @endcode - * * @note * The MBR partition table is relatively limited: * - At most 4 partitions are supported @@ -98,12 +52,12 @@ class MBRBlockDevice : public BlockDevice { * * @param bd Block device to partition * @param part Partition to use, 1-4 - * @param type 8-bit partition type to identitfy partition's contents - * @param start Start block address to map to block 0 of partition, - * negative addresses are calculated from the end of the + * @param type 8-bit partition type to identify partition contents + * @param start Start block address to map to block 0 of partition. + * Negative addresses are calculated from the end of the * underlying block devices. Block 0 is implicitly ignored * from the range to store the MBR. - * @return 0 on success or a negative error code on failure + * @return 0 on success or a negative error code on failure. * @note This is the same as partition(bd, part, type, start, bd->size()) */ static int partition(BlockDevice *bd, int part, uint8_t type, bd_addr_t start); @@ -112,15 +66,15 @@ class MBRBlockDevice : public BlockDevice { * * @param bd Block device to partition * @param part Partition to use, 1-4 - * @param type 8-bit partition type to identitfy partition's contents + * @param type 8-bit partition type to identify partition contents * @param start Start block address to map to block 0 of partition, * negative addresses are calculated from the end of the * underlying block devices. Block 0 is implicitly ignored * from the range to store the MBR. - * @param stop End block address to mark the end of the partition, - * this block is not mapped, negative addresses are calculated + * @param stop End block address to mark the end of the partition. + * This block is not mapped: negative addresses are calculated * from the end of the underlying block device. - * @return 0 on success or a negative error code on failure + * @return 0 on success or a negative error code on failure. */ static int partition(BlockDevice *bd, int part, uint8_t type, bd_addr_t start, bd_addr_t stop); @@ -158,7 +112,7 @@ class MBRBlockDevice : public BlockDevice { * @param buffer Buffer to read blocks into * @param addr Address of block to begin reading from * @param size Size to read in bytes, must be a multiple of read block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int read(void *buffer, bd_addr_t addr, bd_size_t size); @@ -169,7 +123,7 @@ class MBRBlockDevice : public BlockDevice { * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to * @param size Size to write in bytes, must be a multiple of program block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size); @@ -180,7 +134,7 @@ class MBRBlockDevice : public BlockDevice { * * @param addr Address of block to begin erasing * @param size Size to erase in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int erase(bd_addr_t addr, bd_size_t size); @@ -249,6 +203,12 @@ class MBRBlockDevice : public BlockDevice { */ virtual int get_partition_number() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + protected: BlockDevice *_bd; bd_size_t _offset; diff --git a/features/storage/blockdevice/ObservingBlockDevice.cpp b/features/storage/blockdevice/ObservingBlockDevice.cpp index 491dc747206..c9ea0649eae 100644 --- a/features/storage/blockdevice/ObservingBlockDevice.cpp +++ b/features/storage/blockdevice/ObservingBlockDevice.cpp @@ -111,4 +111,14 @@ bd_size_t ObservingBlockDevice::size() const return _bd->size(); } +const char *ObservingBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/ObservingBlockDevice.h b/features/storage/blockdevice/ObservingBlockDevice.h index 4f2ba1c1b04..e172c000eed 100644 --- a/features/storage/blockdevice/ObservingBlockDevice.h +++ b/features/storage/blockdevice/ObservingBlockDevice.h @@ -140,6 +140,12 @@ class ObservingBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: BlockDevice *_bd; mbed::Callback _change; diff --git a/features/storage/blockdevice/ProfilingBlockDevice.cpp b/features/storage/blockdevice/ProfilingBlockDevice.cpp index b4b6d2e26b9..9b7110e53fb 100644 --- a/features/storage/blockdevice/ProfilingBlockDevice.cpp +++ b/features/storage/blockdevice/ProfilingBlockDevice.cpp @@ -15,6 +15,7 @@ */ #include "ProfilingBlockDevice.h" +#include "stddef.h" namespace mbed { @@ -120,4 +121,14 @@ bd_size_t ProfilingBlockDevice::get_erase_count() const return _erase_count; } +const char *ProfilingBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/ProfilingBlockDevice.h b/features/storage/blockdevice/ProfilingBlockDevice.h index 495e003252c..d5f861fac35 100644 --- a/features/storage/blockdevice/ProfilingBlockDevice.h +++ b/features/storage/blockdevice/ProfilingBlockDevice.h @@ -32,22 +32,6 @@ namespace mbed { /** Block device for measuring storage operations of another block device - * - * @code - * #include "mbed.h" - * #include "HeapBlockDevice.h" - * #include "ProfilingBlockDevice.h" - * - * // Create a heap block device and profiling block device - * HeapBlockDevice mem(64*512, 512); - * ProfilingBlockDevice profiler(&mem); - * - * // do block device work.... - * - * printf("read count: %lld\n", profiler.get_read_count()); - * printf("program count: %lld\n", profiler.get_program_count()); - * printf("erase count: %lld\n", profiler.get_erase_count()); - * @endcode */ class ProfilingBlockDevice : public BlockDevice { public: @@ -86,7 +70,7 @@ class ProfilingBlockDevice : public BlockDevice { * @param buffer Buffer to read blocks into * @param addr Address of block to begin reading from * @param size Size to read in bytes, must be a multiple of read block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int read(void *buffer, bd_addr_t addr, bd_size_t size); @@ -97,7 +81,7 @@ class ProfilingBlockDevice : public BlockDevice { * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to * @param size Size to write in bytes, must be a multiple of program block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size); @@ -108,7 +92,7 @@ class ProfilingBlockDevice : public BlockDevice { * * @param addr Address of block to begin erasing * @param size Size to erase in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int erase(bd_addr_t addr, bd_size_t size); @@ -179,6 +163,12 @@ class ProfilingBlockDevice : public BlockDevice { */ bd_size_t get_erase_count() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: BlockDevice *_bd; bd_size_t _read_count; diff --git a/features/storage/blockdevice/ReadOnlyBlockDevice.cpp b/features/storage/blockdevice/ReadOnlyBlockDevice.cpp index 7c9b9e526a2..369f79ca497 100644 --- a/features/storage/blockdevice/ReadOnlyBlockDevice.cpp +++ b/features/storage/blockdevice/ReadOnlyBlockDevice.cpp @@ -101,6 +101,17 @@ bd_size_t ReadOnlyBlockDevice::size() const return _bd->size(); } +const char *ReadOnlyBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed /** @}*/ + + diff --git a/features/storage/blockdevice/ReadOnlyBlockDevice.h b/features/storage/blockdevice/ReadOnlyBlockDevice.h index 9dc32cad4ef..30a91d2dac1 100644 --- a/features/storage/blockdevice/ReadOnlyBlockDevice.h +++ b/features/storage/blockdevice/ReadOnlyBlockDevice.h @@ -133,6 +133,12 @@ class ReadOnlyBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + private: BlockDevice *_bd; }; diff --git a/features/storage/blockdevice/SlicingBlockDevice.cpp b/features/storage/blockdevice/SlicingBlockDevice.cpp index b651cf123b7..842956a7223 100644 --- a/features/storage/blockdevice/SlicingBlockDevice.cpp +++ b/features/storage/blockdevice/SlicingBlockDevice.cpp @@ -16,9 +16,11 @@ #include "SlicingBlockDevice.h" #include "platform/mbed_assert.h" +#include "stddef.h" namespace mbed { + SlicingBlockDevice::SlicingBlockDevice(BlockDevice *bd, bd_addr_t start, bd_addr_t stop) : _bd(bd) , _start_from_end(false), _start(start) @@ -119,4 +121,14 @@ bd_size_t SlicingBlockDevice::size() const return _stop - _start; } +const char *SlicingBlockDevice::get_type() const +{ + if (_bd != NULL) { + return _bd->get_type(); + } + + return NULL; +} + } // namespace mbed + diff --git a/features/storage/blockdevice/SlicingBlockDevice.h b/features/storage/blockdevice/SlicingBlockDevice.h index da686393bd0..90c7970dfcb 100644 --- a/features/storage/blockdevice/SlicingBlockDevice.h +++ b/features/storage/blockdevice/SlicingBlockDevice.h @@ -32,24 +32,6 @@ namespace mbed { /** Block device for mapping to a slice of another block device - * - * @code - * #include "mbed.h" - * #include "HeapBlockDevice.h" - * #include "SlicingBlockDevice.h" - * - * // Create a block device with 64 blocks of size 512 - * HeapBlockDevice mem(64*512, 512); - * - * // Create a block device that maps to the first 32 blocks - * SlicingBlockDevice slice1(&mem, 0*512, 32*512); - * - * // Create a block device that maps to the last 32 blocks - * SlicingBlockDevice slice2(&mem, 32*512); - * - * // Create a block device that maps to the middle 32 blocks - * SlicingBlockDevice slice3(&mem, 16*512, -16*512); - * @endcode */ class SlicingBlockDevice : public BlockDevice { public: @@ -92,7 +74,7 @@ class SlicingBlockDevice : public BlockDevice { * @param buffer Buffer to read blocks into * @param addr Address of block to begin reading from * @param size Size to read in bytes, must be a multiple of read block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int read(void *buffer, bd_addr_t addr, bd_size_t size); @@ -103,7 +85,7 @@ class SlicingBlockDevice : public BlockDevice { * @param buffer Buffer of data to write to blocks * @param addr Address of block to begin writing to * @param size Size to write in bytes, must be a multiple of program block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size); @@ -114,7 +96,7 @@ class SlicingBlockDevice : public BlockDevice { * * @param addr Address of block to begin erasing * @param size Size to erase in bytes, must be a multiple of erase block size - * @return 0 on success, negative error code on failure + * @return 0 on success or a negative error code on failure */ virtual int erase(bd_addr_t addr, bd_size_t size); @@ -163,6 +145,12 @@ class SlicingBlockDevice : public BlockDevice { */ virtual bd_size_t size() const; + /** Get the BlockDevice class type. + * + * @return A string represent the BlockDevice class type. + */ + virtual const char *get_type() const; + protected: BlockDevice *_bd; bool _start_from_end; diff --git a/features/storage/filesystem/littlefs/littlefs/emubd/.mbedignore b/features/storage/filesystem/littlefs/littlefs/emubd/.mbedignore new file mode 100644 index 00000000000..904f0ed67c0 --- /dev/null +++ b/features/storage/filesystem/littlefs/littlefs/emubd/.mbedignore @@ -0,0 +1 @@ +lfs_emubd.* diff --git a/features/storage/filesystem/littlefs/littlefs/lfs.c b/features/storage/filesystem/littlefs/littlefs/lfs.c index c6b5870395c..40d2b86ddc7 100644 --- a/features/storage/filesystem/littlefs/littlefs/lfs.c +++ b/features/storage/filesystem/littlefs/littlefs/lfs.c @@ -2206,6 +2206,10 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) { lfs->root[0] = superblock.d.root[0]; lfs->root[1] = superblock.d.root[1]; + if (lfs_paircmp(lfs->root, dir.d.tail) != 0) { + err = LFS_ERR_CORRUPT; + goto cleanup; + } } if (err || memcmp(superblock.d.magic, "littlefs", 8) != 0) { @@ -2223,10 +2227,18 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) { goto cleanup; } + // verify that no metadata pairs are corrupt + while (!lfs_pairisnull(dir.d.tail)) { + err = lfs_dir_fetch(lfs, &dir, dir.d.tail); + if (err) { + goto cleanup; + } + } + + // succuessfully mounted return 0; cleanup: - lfs_deinit(lfs); return err; } diff --git a/features/storage/kvstore/conf/filesystem/mbed_lib.json b/features/storage/kvstore/conf/filesystem/mbed_lib.json index 866ee34de9f..af9727c721f 100644 --- a/features/storage/kvstore/conf/filesystem/mbed_lib.json +++ b/features/storage/kvstore/conf/filesystem/mbed_lib.json @@ -2,13 +2,9 @@ "name": "storage_filesystem", "config": { "rbp_internal_size": { - "help": "If default the size will be 4K*#entries/32", + "help": "Default is the size of the 2 last sectors of internal flash", "value": "0" }, - "rbp_number_of_entries": { - "help": "If not defined default is 64", - "value": "64" - }, "internal_base_address": { "help": "If default, base address is the first sector after the application code", "value": "0" diff --git a/features/storage/kvstore/conf/kv_config.cpp b/features/storage/kvstore/conf/kv_config.cpp index 35a8e2fd562..852e153f22f 100644 --- a/features/storage/kvstore/conf/kv_config.cpp +++ b/features/storage/kvstore/conf/kv_config.cpp @@ -68,11 +68,12 @@ int _storage_config_TDB_INTERNAL(); * and an external TDBStore over a default blockdevice unless configured differently. * The following is a list of configuration parameter: * MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE - Size of the internal FlashIAPBlockDevice and by - * default is set to 4K*#enteries/32. The start address will be set to end of flash - rbp_internal_size. - * MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_NUMBER_OF_ENTRIES - If not defined default is 64 + * default is set to from start address to the end of the flash. + * If start address is 0 the start address will be set to end of + * flash - rbp_internal_size. * MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS - The satrt address of the internal FlashIAPBlockDevice. * MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_SIZE - Size of the external blockdevice in bytes or NULL for - * max possible size. + * max possible size. * MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BASE_ADDRESS - The block device start address. * MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BLOCK_DEVICE - Alowed vlaues are: default, SPIF, DATAFASH, QSPIF or SD * @returns 0 on success or negative value on failure. @@ -98,10 +99,10 @@ int _storage_config_TDB_EXTERNAL_NO_RBP(); * in the internal memory and an external FileSysteStore. If blockdevice and filesystem not set, * the system will use the default block device and default filesystem * The following is a list of configuration parameter: - * MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE - Size of the internal FlashIAPBlockDevice and by default is - * set to 4K*#enteries/32. The start address will be set to - * end of flash - rbp_internal_size. - * MBED_CONF_STORAGE_FILESYSTEM_RBP_NUMBER_OF_ENTRIES - If not defined default is 64 + * MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE - Size of the internal FlashIAPBlockDevice and by + * default is set to from start address to the end of the flash. + * If start address is 0 the start address will be set to end of + * flash - rbp_internal_size. * MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS - The satrt address of the internal FlashIAPBlockDevice. * MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM - Allowed values are: default, FAT or LITTLE * MBED_CONF_STORAGE_FILESYSTEM_BLOCKDEVICE - Allowed values are: default, SPIF, DATAFASH, QSPIF or SD @@ -133,6 +134,8 @@ int _storage_config_FILESYSTEM_NO_RBP(); int _storage_config_tdb_external_common(); int _storage_config_filesystem_common(); +static const char *filesystemstore_folder_path = NULL; + using namespace mbed; @@ -160,6 +163,7 @@ static inline uint32_t align_down(uint64_t val, uint64_t size) { return (((val) / size)) * size; } + int _calculate_blocksize_match_tdbstore(BlockDevice *bd) { bd_size_t size = bd->size(); @@ -167,13 +171,13 @@ int _calculate_blocksize_match_tdbstore(BlockDevice *bd) bd_size_t number_of_sector = size / erase_size; if (number_of_sector < 2) { - tr_warning("KV Config: there is less then 2 sector TDBStore will not work."); + tr_warning("KV Config: There are less than two sectors - TDBStore will not work."); return -1; } if (number_of_sector % 2 != 0) { - tr_warning("KV Config: Number of sector is not even number. Consider changing the BlockDevice size"); + tr_warning("KV Config: Number of sectors is not an even number. Consider changing the BlockDevice size"); } return MBED_SUCCESS; @@ -215,16 +219,16 @@ int _get_addresses(BlockDevice *bd, bd_addr_t start_address, bd_size_t size, bd_ return 0; } -FileSystem *_get_filesystem_FAT(BlockDevice *bd, const char *mount) +FileSystem *_get_filesystem_FAT(const char *mount) { - static FATFileSystem sdcard(mount, bd); + static FATFileSystem sdcard(mount); return &sdcard; } -FileSystem *_get_filesystem_LITTLE(BlockDevice *bd, const char *mount) +FileSystem *_get_filesystem_LITTLE(const char *mount) { - static LittleFileSystem flash(mount, bd); + static LittleFileSystem flash(mount); return &flash; } @@ -234,22 +238,113 @@ FileSystemStore *_get_file_system_store(FileSystem *fs) return &fss; } -FileSystem *_get_filesystem_default(BlockDevice *bd, const char *mount) +FileSystem *_get_filesystem_default(const char *mount) { #if COMPONENT_QSPIF || COMPONENT_SPIF || COMPONENT_DATAFLASH - return _get_filesystem_LITTLE(bd, mount); + return _get_filesystem_LITTLE(mount); #elif COMPONENT_SD - return _get_filesystem_FAT(bd, mount); + return _get_filesystem_FAT(mount); #else return NULL; #endif } +//Calculates the start address of FLASHIAP block device for TDB_INTERNAL profile. +//If possible, the address will start 2 sectors after the end of code sector allowing +//some space for an application update. +int _get_flashiap_bd_default_addresses_tdb_internal(bd_addr_t *start_address, bd_size_t *size) +{ +#if COMPONENT_FLASHIAP + + FlashIAP flash; + + if (*start_address != 0 || *size != 0) { + return MBED_ERROR_INVALID_ARGUMENT; + } + + //If default values are set, we should get the maximum available size of internal bd. + if (flash.init() != 0) { + return MBED_ERROR_FAILED_OPERATION; + } + + *start_address = align_up(FLASHIAP_APP_ROM_END_ADDR, flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR)); + + // Give the application a couple of spare sectors to grow (if there are such) + bd_size_t spare_size_for_app = 0; + bd_addr_t curr_addr = *start_address; + bd_addr_t flash_end_address = flash.get_flash_start() + flash.get_flash_size(); + + int spare_sectors_for_app = 2; + int min_sectors_for_storage = 2; + for (int i = 0; i < spare_sectors_for_app + min_sectors_for_storage - 1; i++) { + bd_size_t sector_size = flash.get_sector_size(curr_addr); + curr_addr += sector_size; + if (curr_addr >= flash_end_address) { + spare_size_for_app = 0; + break; + } + + if (i < spare_sectors_for_app) { + spare_size_for_app += sector_size; + } + } + *start_address += spare_size_for_app; + + flash.deinit(); + +#endif + + return MBED_SUCCESS; +} + +//Calculates address and size for FLASHIAP block device in TDB_EXTERNAL and FILESYSTEM profiles. +//The size of the block device will be 2 sectors at the ends of the internal flash for +//the use of the rbp internal TDBStore. +int _get_flashiap_bd_default_addresses_rbp(bd_addr_t *start_address, bd_size_t *size) +{ +#if COMPONENT_FLASHIAP + + bd_addr_t flash_end_address; + bd_addr_t flash_start_address; + bd_addr_t aligned_start_address; + bd_addr_t flash_first_writable_sector_address; + FlashIAP flash; + + if (*start_address != 0 || *size != 0) { + return MBED_ERROR_INVALID_ARGUMENT; + } + + int ret = flash.init(); + if (ret != 0) { + return MBED_ERROR_INITIALIZATION_FAILED; + } + + flash_first_writable_sector_address = align_up(FLASHIAP_APP_ROM_END_ADDR, flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR)); + flash_start_address = flash.get_flash_start(); + flash_end_address = flash_start_address + flash.get_flash_size();; + *start_address = flash_end_address - 1; + aligned_start_address = align_down(*start_address, flash.get_sector_size(*start_address)); + *size = (flash_end_address - aligned_start_address) * 2; + *start_address = (flash_end_address - *size); + aligned_start_address = align_down(*start_address, flash.get_sector_size(*start_address)); + + flash.deinit(); + + if (aligned_start_address < flash_first_writable_sector_address) { + tr_error("KV Config: Internal block device start address overlapped ROM address "); + return MBED_ERROR_INITIALIZATION_FAILED; + } + +#endif + + return MBED_SUCCESS; + +} + BlockDevice *_get_blockdevice_FLASHIAP(bd_addr_t start_address, bd_size_t size) { #if COMPONENT_FLASHIAP - bd_size_t bd_final_size; bd_addr_t flash_end_address; bd_addr_t flash_start_address; bd_addr_t flash_first_writable_sector_address; @@ -264,17 +359,13 @@ BlockDevice *_get_blockdevice_FLASHIAP(bd_addr_t start_address, bd_size_t size) } //Get flash parameters before starting - flash_first_writable_sector_address = align_up(FLASHIAP_ROM_END, flash.get_sector_size(FLASHIAP_ROM_END)); + flash_first_writable_sector_address = align_up(FLASHIAP_APP_ROM_END_ADDR, flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR)); flash_start_address = flash.get_flash_start(); flash_end_address = flash_start_address + flash.get_flash_size();; + //Non default configuration if (start_address != 0) { - if (start_address < flash_first_writable_sector_address) { - tr_error("KV Config: Internal block device start address overlapped ROM address "); - flash.deinit(); - return NULL; - } aligned_start_address = align_down(start_address, flash.get_sector_size(start_address)); if (start_address != aligned_start_address) { tr_error("KV Config: Internal block device start address is not aligned. Better use %02llx", aligned_start_address); @@ -283,16 +374,15 @@ BlockDevice *_get_blockdevice_FLASHIAP(bd_addr_t start_address, bd_size_t size) } if (size == 0) { - //will use 2 sector only. - bd_final_size = (flash_end_address - start_address); + //The block device will have all space form start address to the end of the flash + size = (flash_end_address - start_address); - static FlashIAPBlockDevice bd(start_address, bd_final_size); + static FlashIAPBlockDevice bd(start_address, size); flash.deinit(); return &bd; } if (size != 0) { - end_address = start_address + size; if (end_address > flash_end_address) { tr_error("KV Config: Internal block device end address is out of boundaries"); @@ -313,38 +403,22 @@ BlockDevice *_get_blockdevice_FLASHIAP(bd_addr_t start_address, bd_size_t size) } } - bool request_default = false; - if (start_address == 0 && size == 0) { - request_default = true; - size = 1; - } - + //Non default configuration start_address = 0 start_address = flash_end_address - size; aligned_start_address = align_down(start_address, flash.get_sector_size(start_address)); - //Skip this check if default parameters are set (0 for base address and 0 size). - //We will calculate the address and size by ourselves - if (start_address != aligned_start_address && !request_default) { + if (start_address != aligned_start_address) { tr_error("KV Config: Internal block device start address is not aligned. Consider changing the size parameter"); flash.deinit(); return NULL; } - if (request_default) { - //update start_address to double the size for TDBStore needs - bd_final_size = (flash_end_address - aligned_start_address) * 2; - start_address = (flash_end_address - bd_final_size); - aligned_start_address = align_down(start_address, flash.get_sector_size(start_address)); - } else { - bd_final_size = (flash_end_address - aligned_start_address); - } - flash.deinit(); if (aligned_start_address < flash_first_writable_sector_address) { tr_error("KV Config: Internal block device start address overlapped ROM address "); return NULL; } - static FlashIAPBlockDevice bd(aligned_start_address, bd_final_size); + static FlashIAPBlockDevice bd(aligned_start_address, size); return &bd; #else @@ -376,6 +450,7 @@ BlockDevice *_get_blockdevice_SPIF(bd_addr_t start_address, bd_size_t size) return &bd; } + //If address and size were specified use SlicingBlockDevice to get the correct block device size and start address. if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); return NULL; @@ -416,6 +491,7 @@ BlockDevice *_get_blockdevice_QSPIF(bd_addr_t start_address, bd_size_t size) return &bd; } + //If address and size were specified use SlicingBlockDevice to get the correct block device size and start address. if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); return NULL; @@ -452,6 +528,7 @@ BlockDevice *_get_blockdevice_DATAFLASH(bd_addr_t start_address, bd_size_t size) return &bd; } + //If address and size were specified use SlicingBlockDevice to get the correct block device size and start address. if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); return NULL; @@ -485,35 +562,36 @@ BlockDevice *_get_blockdevice_SD(bd_addr_t start_address, bd_size_t size) return NULL; } -#if MBED_CONF_STORAGE_STORAGE_TYPE == TDB_EXTERNAL_NO_RBP || MBED_CONF_STORAGE_STORAGE_TYPE == TDB_EXTERNAL -//In TDBStore we have a constraint of 4GByte - if (start_address == 0 && size == 0 && bd.size() < (uint32_t)(-1)) { - return &bd; - } - - size = size != 0 ? size : align_down(bd.size(), bd.get_erase_size(bd.size() - 1)); + if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "TDB_EXTERNAL_NO_RBP") == 0 || + strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "TDB_EXTERNAL") == 0) { + //In TDBStore profile, we have a constraint of 4GByte + if (start_address == 0 && size == 0 && bd.size() < (uint32_t)(-1)) { + return &bd; + } - if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { - tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); - return NULL; - } + //If the size of external storage is bigger than 4G we need to slice it. + size = size != 0 ? size : align_down(bd.size(), bd.get_erase_size(bd.size() - 1)); - if (aligned_end_address - aligned_start_address != (uint32_t)(aligned_end_address - aligned_start_address)) { - aligned_end_address = aligned_start_address + (uint32_t)(-1);//Support up to 4G only - } + if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { + tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); + return NULL; + } -#else - if (start_address == 0 && size == 0) { - return &bd; - } + if (aligned_end_address - aligned_start_address != (uint32_t)(aligned_end_address - aligned_start_address)) { + aligned_end_address = aligned_start_address + (uint32_t)(-1);//Support up to 4G only + } + } else { + //For all other KVStore profiles beside TDBStore we take the entire external memory space. + if (start_address == 0 && size == 0) { + return &bd; + } - if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { - tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); - return NULL; + if (_get_addresses(&bd, start_address, size, &aligned_start_address, &aligned_end_address) != 0) { + tr_error("KV Config: Fail to get addresses for SlicingBlockDevice."); + return NULL; + } } -#endif - aligned_end_address = align_down(aligned_end_address, bd.get_erase_size(aligned_end_address)); static SlicingBlockDevice sbd(&bd, aligned_start_address, aligned_end_address); return &sbd; @@ -545,33 +623,41 @@ int _storage_config_TDB_INTERNAL() bd_size_t internal_size = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE; bd_addr_t internal_start_address = MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS; - //If default values are set, we should get maximum available size of internal bd. if (internal_size == 0 && internal_start_address == 0) { - FlashIAP flash; - if (flash.init() != 0) { + //Calculate the block device size and start address in case default values are used. + if (_get_flashiap_bd_default_addresses_tdb_internal(&internal_start_address, &internal_size) != MBED_SUCCESS) { return MBED_ERROR_FAILED_OPERATION; } - internal_start_address = align_up(FLASHIAP_ROM_END, flash.get_sector_size(FLASHIAP_ROM_END)); - flash.deinit(); } + //Get internal memory FLASHIAP block device. kvstore_config.internal_bd = GET_BLOCKDEVICE(INTERNAL_BLOCKDEVICE_NAME, internal_start_address, internal_size); if (kvstore_config.internal_bd == NULL) { tr_error("KV Config: Fail to get internal BlockDevice."); return MBED_ERROR_FAILED_OPERATION; } + int ret = kvstore_config.internal_bd->init(); if (ret != MBED_SUCCESS) { tr_error("KV Config: Fail to init internal BlockDevice."); return MBED_ERROR_FAILED_OPERATION; } + //Check that internal flash has 2 or more sectors if (_calculate_blocksize_match_tdbstore(kvstore_config.internal_bd) != MBED_SUCCESS) { tr_error("KV Config: Can not create TDBStore with less then 2 sector."); return MBED_ERROR_INVALID_ARGUMENT; } + //Deinitialize internal block device and TDB will reinitialize and take control on it. + ret = kvstore_config.internal_bd->deinit(); + if (ret != MBED_SUCCESS) { + tr_error("KV Config: Fail to deinit internal BlockDevice."); + return MBED_ERROR_FAILED_OPERATION; + } + + //Create a TDBStore in the internal FLASHIAP block device. static TDBStore tdb_internal(kvstore_config.internal_bd); kvstore_config.internal_store = &tdb_internal; @@ -583,9 +669,12 @@ int _storage_config_TDB_INTERNAL() kvstore_config.kvstore_main_instance = kvstore_config.internal_store; + //Masking flag - Actually used to remove any KVStore flag which is not supported + //in the chosen KVStore profile. kvstore_config.flags_mask = ~(KVStore::REQUIRE_CONFIDENTIALITY_FLAG | - KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); + //Initialize kv_map and add the configuration struct to KVStore map. KVMap &kv_map = KVMap::get_instance(); ret = kv_map.init(); if (MBED_SUCCESS != ret) { @@ -603,7 +692,6 @@ int _storage_config_TDB_INTERNAL() return MBED_ERROR_UNSUPPORTED; #endif - } int _storage_config_TDB_EXTERNAL() @@ -613,13 +701,17 @@ int _storage_config_TDB_EXTERNAL() #endif bd_size_t internal_rbp_size = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE; - size_t rbp_num_of_enteries = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_NUMBER_OF_ENTRIES; bd_addr_t internal_start_address = MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS; - if (internal_rbp_size == 0) { - internal_rbp_size = 4 * 1024 * rbp_num_of_enteries / 32; + //Get the default address and size for internal rbp TDBStore + if (internal_rbp_size == 0 && internal_start_address == 0) { + //Calculate the block device size and start address in case default values are used. + if (_get_flashiap_bd_default_addresses_rbp(&internal_start_address, &internal_rbp_size) != MBED_SUCCESS) { + return MBED_ERROR_FAILED_OPERATION; + } } + //Create internal FLASHIAP block device kvstore_config.internal_bd = GET_BLOCKDEVICE(INTERNAL_BLOCKDEVICE_NAME, internal_start_address, internal_rbp_size); if (kvstore_config.internal_bd == NULL) { tr_error("KV Config: Fail to get internal BlockDevice."); @@ -632,11 +724,13 @@ int _storage_config_TDB_EXTERNAL() return MBED_ERROR_FAILED_OPERATION ; } + //Check if TDBStore has at least 2 sector. if (_calculate_blocksize_match_tdbstore(kvstore_config.internal_bd) != MBED_SUCCESS) { tr_error("KV Config: Can not create TDBStore with less then 2 sector."); return MBED_ERROR_INVALID_ARGUMENT; } + //Create internal TDBStore static TDBStore tdb_internal(kvstore_config.internal_bd); kvstore_config.internal_store = &tdb_internal; @@ -649,12 +743,15 @@ int _storage_config_TDB_EXTERNAL() bd_size_t size = MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_SIZE; bd_addr_t address = MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BASE_ADDRESS; + //Get external BlockDevice for TDBStore BlockDevice *bd = GET_BLOCKDEVICE(MBED_CONF_STORAGE_TDB_EXTERNAL_BLOCKDEVICE, address, size); if (bd == NULL) { tr_error("KV Config: Fail to get external BlockDevice."); return MBED_ERROR_FAILED_OPERATION ; } + //TDBStore needs a block device base on flash. so if this is SD block device or the default block device is SD + //add FlashSimBlockDevice on top of the SDBlockDevice #if defined(COMPONENT_SD) if (strcmp(STR(MBED_CONF_STORAGE_TDB_EXTERNAL_BLOCKDEVICE), "SD") == 0 #if defined(COMPONENT_SD) && !defined(COMPONENT_SPIF) && !defined(COMPONENT_QSPIF) && !defined(COMPONENT_DATAFLASH) @@ -691,12 +788,15 @@ int _storage_config_TDB_EXTERNAL_NO_RBP() bd_size_t size = MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_SIZE; bd_addr_t address = MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_BASE_ADDRESS; + //Get external block device BlockDevice *bd = GET_BLOCKDEVICE(MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_BLOCKDEVICE, address, size); if (bd == NULL) { tr_error("KV Config: Fail to get external BlockDevice."); return MBED_ERROR_FAILED_OPERATION ; } + //TDBStore needs a block device base on flash. so if this is SD block device or the default block device is SD + //add FlashSimBlockDevice on top of the SDBlockDevice #if defined(COMPONENT_SD) if (strcmp(STR(MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_BLOCKDEVICE), "SD") == 0 #if defined(COMPONENT_SD) && !defined(COMPONENT_SPIF) && !defined(COMPONENT_QSPIF) && !defined(COMPONENT_DATAFLASH) @@ -720,35 +820,34 @@ int _storage_config_TDB_EXTERNAL_NO_RBP() kvstore_config.external_bd = bd; #endif + //Masking flag - Actually used to remove any KVStore flag which is not supported + //in the chosen KVStore profile. kvstore_config.flags_mask = ~(KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); return _storage_config_tdb_external_common(); } - int _storage_config_tdb_external_common() { #if SECURESTORE_ENABLED + //Initialize external block device int ret = kvstore_config.external_bd->init(); if (ret != MBED_SUCCESS) { tr_error("KV Config: Fail to init external BlockDevice."); return MBED_ERROR_FAILED_OPERATION ; } + //Check that there is at least 2 sector for the external TDBStore if (_calculate_blocksize_match_tdbstore(kvstore_config.external_bd) != MBED_SUCCESS) { tr_error("KV Config: Can not create TDBStore with less then 2 sector."); - return MBED_ERROR_INVALID_ARGUMENT; + return MBED_ERROR_INVALID_SIZE; } + //Create external TDBStore static TDBStore tdb_external(kvstore_config.external_bd); kvstore_config.external_store = &tdb_external; - ret = kvstore_config.external_store->init(); - if (ret != MBED_SUCCESS) { - tr_error("KV Config: Fail to init external TDBStore"); - return ret; - } - + //Create SecureStore and initialize it static SecureStore secst(kvstore_config.external_store, kvstore_config.internal_store); ret = secst.init(); @@ -759,6 +858,7 @@ int _storage_config_tdb_external_common() kvstore_config.kvstore_main_instance = &secst; + //Init kv_map and add the configuration struct to KVStore map. KVMap &kv_map = KVMap::get_instance(); ret = kv_map.init(); if (MBED_SUCCESS != ret) { @@ -783,14 +883,21 @@ int _storage_config_FILESYSTEM() #if !SECURESTORE_ENABLED return MBED_ERROR_UNSUPPORTED; #endif + + filesystemstore_folder_path = STR(MBED_CONF_STORAGE_FILESYSTEM_FOLDER_PATH); + bd_size_t internal_rbp_size = MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE; - size_t rbp_num_of_enteries = MBED_CONF_STORAGE_FILESYSTEM_RBP_NUMBER_OF_ENTRIES; bd_addr_t internal_start_address = MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS; - if (internal_rbp_size == 0) { - internal_rbp_size = 4 * 1024 * rbp_num_of_enteries / 32; + //Get the default address and size for internal rbp TDBStore + if (internal_rbp_size == 0 && internal_start_address == 0) { + //Calculate the block device size and start address in case default values are used. + if (_get_flashiap_bd_default_addresses_rbp(&internal_start_address, &internal_rbp_size) != MBED_SUCCESS) { + return MBED_ERROR_FAILED_OPERATION; + } } + //Get internal FLASHIAP block device kvstore_config.internal_bd = GET_BLOCKDEVICE(INTERNAL_BLOCKDEVICE_NAME, internal_start_address, internal_rbp_size); if (kvstore_config.internal_bd == NULL) { tr_error("KV Config: Fail to get internal BlockDevice "); @@ -803,6 +910,20 @@ int _storage_config_FILESYSTEM() return MBED_ERROR_FAILED_OPERATION ; } + //Check that internal flash has 2 or more sectors + if (_calculate_blocksize_match_tdbstore(kvstore_config.internal_bd) != MBED_SUCCESS) { + tr_error("KV Config: Can not create TDBStore with less then 2 sector."); + return MBED_ERROR_INVALID_ARGUMENT; + } + + //Deinitialize internal block device and TDB will reinitialize and take control on it. + ret = kvstore_config.internal_bd->deinit(); + if (ret != MBED_SUCCESS) { + tr_error("KV Config: Fail to deinit internal BlockDevice."); + return MBED_ERROR_FAILED_OPERATION; + } + + //Create internal TDBStore for rbp static TDBStore tdb_internal(kvstore_config.internal_bd); kvstore_config.internal_store = &tdb_internal; @@ -816,6 +937,7 @@ int _storage_config_FILESYSTEM() bd_addr_t address = MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_BASE_ADDRESS; const char *mount_point = STR(MBED_CONF_STORAGE_FILESYSTEM_MOUNT_POINT); + //Get external block device for FileSystem. kvstore_config.external_bd = GET_BLOCKDEVICE(MBED_CONF_STORAGE_FILESYSTEM_BLOCKDEVICE, address, size); if (kvstore_config.external_bd == NULL) { tr_error("KV Config: Fail to get external BlockDevice "); @@ -828,8 +950,11 @@ int _storage_config_FILESYSTEM() return MBED_ERROR_FAILED_OPERATION ; } - kvstore_config.external_fs = GET_FILESYSTEM(MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM, kvstore_config.external_bd, - mount_point); + //Get FileSystem. Can be FAT, LITTLE or default. in case of default, the type will be decided base on the default + //component block device configured in the system. The priority is: + //QSPI -> SPI -> DATAFLASH == LITTLE + //SD == FAT + kvstore_config.external_fs = GET_FILESYSTEM(MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM, mount_point); if (kvstore_config.external_fs == NULL) { tr_error("KV Config: Fail to get FileSystem"); return MBED_ERROR_FAILED_OPERATION ; @@ -842,10 +967,17 @@ int _storage_config_FILESYSTEM() int _storage_config_FILESYSTEM_NO_RBP() { +#if !SECURESTORE_ENABLED + return MBED_ERROR_UNSUPPORTED; +#endif + + filesystemstore_folder_path = STR(MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FOLDER_PATH); + bd_size_t size = MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_SIZE; bd_addr_t address = MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_BASE_ADDRESS; const char *mount_point = STR(MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_MOUNT_POINT); + //Get external block device for FileSystem. kvstore_config.external_bd = GET_BLOCKDEVICE(MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_BLOCKDEVICE, address, size); if (kvstore_config.external_bd == NULL) { tr_error("KV Config: Fail to get external BlockDevice "); @@ -858,13 +990,18 @@ int _storage_config_FILESYSTEM_NO_RBP() return MBED_ERROR_FAILED_OPERATION ; } - kvstore_config.external_fs = GET_FILESYSTEM(MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FILESYSTEM, kvstore_config.external_bd, - mount_point); + //Get FileSystem. Can be FAT, LITTLE or default. in case of default, the type will be decided base on the default + //component block device configured in the system. The priority is: + //QSPI -> SPI -> DATAFLASH == LITTLE + //SD == FAT + kvstore_config.external_fs = GET_FILESYSTEM(MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FILESYSTEM, mount_point); if (kvstore_config.external_fs == NULL) { tr_error("KV Config: Fail to get FileSystem"); return MBED_ERROR_FAILED_OPERATION ; } + //Masking flag - Actually used to remove any KVStore flag which is not supported + //in the chosen KVStore profile. kvstore_config.flags_mask = ~(KVStore::REQUIRE_REPLAY_PROTECTION_FLAG); return _storage_config_filesystem_common(); @@ -873,6 +1010,8 @@ int _storage_config_FILESYSTEM_NO_RBP() int _storage_config_filesystem_common() { #if SECURESTORE_ENABLED + + //Mount file system. if it fails, try to reformat int ret = kvstore_config.external_fs->mount(kvstore_config.external_bd); if (ret != MBED_SUCCESS) { ret = kvstore_config.external_fs->reformat(kvstore_config.external_bd); @@ -883,18 +1022,14 @@ int _storage_config_filesystem_common() } } + //Create FileSystemStore kvstore_config.external_store = _get_file_system_store(kvstore_config.external_fs); if (kvstore_config.external_store == NULL) { tr_error("KV Config: Fail to get FileSystemStore"); return MBED_ERROR_FAILED_OPERATION ; } - ret = kvstore_config.external_store->init(); - if (ret != MBED_SUCCESS) { - tr_error("KV Config: Fail to init FileSystemStore"); - return ret; - } - + //Create SecureStore and set it as main KVStore static SecureStore secst(kvstore_config.external_store, kvstore_config.internal_store); ret = secst.init(); @@ -905,6 +1040,7 @@ int _storage_config_filesystem_common() kvstore_config.kvstore_main_instance = &secst; + //Init kv_map and add the configuration struct to KVStore map. KVMap &kv_map = KVMap::get_instance(); ret = kv_map.init(); if (MBED_SUCCESS != ret) { @@ -924,6 +1060,24 @@ int _storage_config_filesystem_common() #endif } +int _storage_config_default() +{ +#if COMPONENT_QSPIF || COMPONENT_SPIF || COMPONENT_DATAFLASH + return _storage_config_TDB_EXTERNAL(); +#elif COMPONENT_SD + return _storage_config_FILESYSTEM(); +#elif COMPONENT_FLASHIAP + return _storage_config_TDB_INTERNAL(); +#else + return MBED_ERROR_UNSUPPORTED; +#endif +} + +const char *get_filesystemstore_folder_path() +{ + return filesystemstore_folder_path; +} + MBED_WEAK int kv_init_storage_config() { diff --git a/features/storage/kvstore/conf/kv_config.h b/features/storage/kvstore/conf/kv_config.h index 43b8677296a..660a6bdd882 100644 --- a/features/storage/kvstore/conf/kv_config.h +++ b/features/storage/kvstore/conf/kv_config.h @@ -20,12 +20,6 @@ extern "C" { #endif -#if MBED_CONF_STORAGE_STORAGE_TYPE == FILESYSTEM -#define FSST_FOLDER_PATH MBED_CONF_STORAGE_FILESYSTEM_FOLDER_PATH -#elif MBED_CONF_STORAGE_STORAGE_TYPE == FILESYSTEM_NO_RBP -#define FSST_FOLDER_PATH MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FOLDER_PATH -#endif - #ifndef MBED_CONF_STORAGE_STORAGE #define MBED_CONF_STORAGE_STORAGE USER_DEFINED #endif @@ -34,13 +28,20 @@ extern "C" { #define _STORAGE_CONFIG(dev) _STORAGE_CONFIG_concat(dev) /** - * @brief This function initializes one of the configuration that exists in Mbed OS. To overwite + * @brief This function initializes one of the configuration that exists in Mbed OS. To overwrite * the default configuration, please overwrite this function. * * @returns 0 on success or negative value on failure. */ int kv_init_storage_config(); +/** + * @brief A getter for filesystemstore folder path configuration + * + * @returns string with the file folder path or NULL if not set + */ +const char *get_filesystemstore_folder_path(); + #ifdef __cplusplus } // closing brace for extern "C" #endif diff --git a/features/storage/kvstore/conf/mbed_lib.json b/features/storage/kvstore/conf/mbed_lib.json index fc8c0211cea..35938fdaae9 100644 --- a/features/storage/kvstore/conf/mbed_lib.json +++ b/features/storage/kvstore/conf/mbed_lib.json @@ -2,8 +2,8 @@ "name": "storage", "config": { "storage_type": { - "help": "Options are TDB_INTERNAL, TDB_EXTERNAL, TDB_EXTERNAL_NO_RBP, FILESYSTEM or FILESYSTEM_NO_RBP.", - "value": "TDB_EXTERNAL" + "help": "Options are TDB_INTERNAL, TDB_EXTERNAL, TDB_EXTERNAL_NO_RBP, FILESYSTEM, FILESYSTEM_NO_RBP or default. If default, the storage type will be chosen according to the component defined in targets.json", + "value": "default" }, "default_kv": { "help": "A string name for the default kvstore configuration", @@ -11,11 +11,20 @@ } }, "target_overrides": { - "K64F": { + "FUTURE_SEQUANA_M0_PSA": { "storage_type": "TDB_INTERNAL" }, "K66F": { "storage_type": "TDB_INTERNAL" + }, + "NUCLEO_F411RE": { + "storage_type": "TDB_INTERNAL" + }, + "NUCLEO_F429ZI": { + "storage_type": "TDB_INTERNAL" + }, + "UBLOX_EVK_ODIN_W2": { + "storage_type": "TDB_INTERNAL" } } } diff --git a/features/storage/kvstore/conf/tdb_external/mbed_lib.json b/features/storage/kvstore/conf/tdb_external/mbed_lib.json index b0ee1ddc303..c102776dcbb 100644 --- a/features/storage/kvstore/conf/tdb_external/mbed_lib.json +++ b/features/storage/kvstore/conf/tdb_external/mbed_lib.json @@ -3,13 +3,9 @@ "name": "storage_tdb_external", "config": { "rbp_internal_size": { - "help": "If default the size will be 4K*#entries/32", + "help": "Default is the size of the 2 last sectors of internal flash", "value": "0" }, - "rbp_number_of_entries": { - "help": "If not defined default is 64", - "value": "64" - }, "internal_base_address": { "help": "If default, the base address is set to the first sector after the application code ends.", "value": "0" diff --git a/features/storage/kvstore/conf/tdb_internal/mbed_lib.json b/features/storage/kvstore/conf/tdb_internal/mbed_lib.json index c5ade697873..01db9dde927 100644 --- a/features/storage/kvstore/conf/tdb_internal/mbed_lib.json +++ b/features/storage/kvstore/conf/tdb_internal/mbed_lib.json @@ -9,5 +9,11 @@ "help": "If default, the base address is set to the first sector after the application code ends.", "value": "0" } + }, + "target_overrides": { + "FUTURE_SEQUANA_M0_PSA": { + "internal_size": "0x8000", + "internal_base_address": "0x10078000" + } } } diff --git a/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.cpp b/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.cpp new file mode 100644 index 00000000000..68085164a1d --- /dev/null +++ b/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.cpp @@ -0,0 +1,292 @@ +/* + * Copyright (c) 2018 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// ----------------------------------------------------------- Includes ----------------------------------------------------------- +#if DEVICE_FLASH +#include "DirectAccessDevicekey.h" +#include +#include +#include "mbed_error.h" +#include "MbedCRC.h" +#include "mbed_trace.h" +#define TRACE_GROUP "DADK" + +using namespace mbed; + +// --------------------------------------------------------- Definitions ---------------------------------------------------------- +typedef struct { + uint32_t address; + size_t size; +} tdbstore_area_data_t; + +typedef struct { + uint16_t trailer_size; + uint16_t data_size; + uint32_t crc; +} reserved_trailer_t; + +#define TDBSTORE_NUMBER_OF_AREAS 2 +#define MAX_DEVICEKEY_DATA_SIZE 64 +#define RESERVED_AREA_SIZE (MAX_DEVICEKEY_DATA_SIZE+sizeof(reserved_trailer_t)) /* DeviceKey Max Data size + metadata trailer */ + +#define STR_EXPAND(tok) #tok +#define STR(tok) STR_EXPAND(tok) + +// -------------------------------------------------- Local Functions Declaration ---------------------------------------------------- +static int calc_area_params(FlashIAP *flash, uint32_t out_tdb_start_offset, uint32_t tdb_end_offset, + tdbstore_area_data_t *area_params); +static int reserved_data_get(FlashIAP *flash, tdbstore_area_data_t *area_params, void *reserved_data_buf, + size_t reserved_data_buf_size, size_t *actual_data_size_ptr); +static inline uint32_t align_up(uint64_t val, uint64_t size); +static inline uint32_t align_down(uint64_t val, uint64_t size); +static uint32_t calc_crc(uint32_t init_crc, uint32_t data_size, const void *data_buf); + +// -------------------------------------------------- API Functions Implementation ---------------------------------------------------- +int direct_access_to_devicekey(uint32_t tdb_start_offset, uint32_t tdb_end_offset, void *data_buf, + size_t data_buf_size, size_t *actual_data_size_ptr) +{ + int status = MBED_ERROR_INVALID_ARGUMENT; + FlashIAP flash; + uint8_t active_area = 0; + tdbstore_area_data_t area_params[TDBSTORE_NUMBER_OF_AREAS]; + memset(area_params, 0, sizeof(area_params)); + bool is_flash_init = false; + + if (NULL == data_buf) { + tr_error("Invalid Data Buf Argument"); + goto exit_point; + } + + status = flash.init(); + if (status != 0) { + tr_error("FlashIAP init failed - err: %d", status); + status = MBED_ERROR_FAILED_OPERATION; + goto exit_point; + } + + is_flash_init = true; + + status = calc_area_params(&flash, tdb_start_offset, tdb_end_offset, area_params); + if (status != MBED_SUCCESS) { + tr_error("Couldn't calulate Area Params - err: %d", status); + goto exit_point; + } + + /* DeviceKey data can be found either in first or second Flash Area */ + /* Loop through Areas to find valid DeviceKey data */ + for (active_area = 0; active_area < TDBSTORE_NUMBER_OF_AREAS; active_area++) { + status = reserved_data_get(&flash, &area_params[active_area], data_buf, data_buf_size, actual_data_size_ptr); + if (status == MBED_SUCCESS) { + break; + } + } + + if (status != MBED_SUCCESS) { + status = MBED_ERROR_ITEM_NOT_FOUND; + tr_error("Couldn't find valid DeviceKey - err: %d", status); + } + +exit_point: + if (true == is_flash_init) { + flash.deinit(); + } + + return status; +} + +int get_expected_internal_TDBStore_position(uint32_t *out_tdb_start_offset, uint32_t *out_tdb_end_offset) +{ + uint32_t flash_end_address; + uint32_t flash_start_address; + uint32_t aligned_start_address; + uint32_t aligned_end_address; + FlashIAP flash; + bool is_default_configuration = false; + uint32_t tdb_size; + + if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "FILESYSTEM") == 0) { + *out_tdb_start_offset = MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS; + tdb_size = MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE; + } else if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "TDB_EXTERNAL") == 0) { + *out_tdb_start_offset = MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS; + tdb_size = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE; + } else if (strcmp(STR(MBED_CONF_STORAGE_STORAGE_TYPE), "default") == 0) { +#if COMPONENT_QSPIF || COMPONENT_SPIF || COMPONENT_DATAFLASH + *out_tdb_start_offset = MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS; + tdb_size = MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE; +#elif COMPONENT_SD + tdb_size = MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE; +#else + return MBED_ERROR_UNSUPPORTED; +#endif + } else { + return MBED_ERROR_UNSUPPORTED; + } + + *out_tdb_end_offset = (*out_tdb_start_offset) + tdb_size; + + if ((*out_tdb_start_offset == 0) && (tdb_size == 0)) { + is_default_configuration = true; + } else if ((*out_tdb_start_offset == 0) || (tdb_size == 0)) { + return MBED_ERROR_UNSUPPORTED; + } + + int ret = flash.init(); + if (ret != 0) { + return MBED_ERROR_FAILED_OPERATION; + } + + uint32_t flash_first_writable_sector_address = (uint32_t)(align_up(FLASHIAP_APP_ROM_END_ADDR, + flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR))); + + //Get flash parameters before starting + flash_start_address = flash.get_flash_start(); + flash_end_address = flash_start_address + flash.get_flash_size(); + + if (!is_default_configuration) { + aligned_start_address = align_down(*out_tdb_start_offset, flash.get_sector_size(*out_tdb_start_offset)); + aligned_end_address = align_up(*out_tdb_end_offset, flash.get_sector_size(*out_tdb_end_offset - 1)); + if ((*out_tdb_start_offset != aligned_start_address) || (*out_tdb_end_offset != aligned_end_address) + || (*out_tdb_end_offset > flash_end_address)) { + flash.deinit(); + return MBED_ERROR_INVALID_OPERATION; + } + } else { + aligned_start_address = flash_end_address - (flash.get_sector_size(flash_end_address - 1) * 2); + if (aligned_start_address < flash_first_writable_sector_address) { + flash.deinit(); + return MBED_ERROR_INVALID_OPERATION; + } + *out_tdb_start_offset = aligned_start_address; + *out_tdb_end_offset = flash_end_address; + } + + flash.deinit(); + + return MBED_SUCCESS; +} + +// -------------------------------------------------- Local Functions Implementation ---------------------------------------------------- +static int calc_area_params(FlashIAP *flash, uint32_t out_tdb_start_offset, uint32_t tdb_end_offset, + tdbstore_area_data_t *area_params) +{ + uint32_t bd_size = 0; + uint32_t initial_erase_size = flash->get_sector_size(out_tdb_start_offset); + uint32_t erase_unit_size = initial_erase_size; + size_t cur_area_size = 0; + + if ((tdb_end_offset < (out_tdb_start_offset + 2 * RESERVED_AREA_SIZE - 1)) || + (tdb_end_offset > (flash->get_flash_start() + flash->get_flash_size()))) { + tr_error("calc_area_params failed - Invalid input addresses"); + return MBED_ERROR_INVALID_ARGUMENT; + } + + // Entire TDBStore can't exceed 32 bits + bd_size = (tdb_end_offset - out_tdb_start_offset + 1); + + while (cur_area_size < bd_size / 2) { + erase_unit_size = flash->get_sector_size(out_tdb_start_offset + cur_area_size); + cur_area_size += erase_unit_size; + } + + area_params[0].address = out_tdb_start_offset; + area_params[0].size = cur_area_size; + area_params[1].address = out_tdb_start_offset + cur_area_size; + area_params[1].size = bd_size - cur_area_size; + + return MBED_SUCCESS; +} + +static int reserved_data_get(FlashIAP *flash, tdbstore_area_data_t *area_params, void *reserved_data_buf, + size_t reserved_data_buf_size, size_t *actual_data_size_ptr) +{ + int status = MBED_SUCCESS; + reserved_trailer_t trailer; + uint8_t *buf; + int ret = MBED_SUCCESS; + bool erased = true; + size_t actual_size = 0; + uint32_t initial_crc = 0xFFFFFFFF; + uint32_t crc = initial_crc; + uint8_t blank = flash->get_erase_value(); + + /* Read Into trailer deviceKey metadata */ + ret = flash->read(&trailer, area_params->address + MAX_DEVICEKEY_DATA_SIZE, sizeof(trailer)); + if (ret != MBED_SUCCESS) { + status = MBED_ERROR_READ_FAILED; + goto exit_point; + } + + buf = reinterpret_cast (&trailer); + for (uint32_t i = 0; i < sizeof(trailer); i++) { + if (buf[i] != blank) { + erased = false; + break; + } + } + + if (true == erased) { + /* Metadata is erased , DeviceKey Data is NOT in this Area */ + status = MBED_ERROR_ITEM_NOT_FOUND; + goto exit_point; + } + + actual_size = trailer.data_size; + if (actual_data_size_ptr != NULL) { + *actual_data_size_ptr = actual_size; + } + if (reserved_data_buf_size < actual_size) { + status = MBED_ERROR_INVALID_SIZE; + goto exit_point; + } + + buf = reinterpret_cast (reserved_data_buf); + + /* Read DeviceKey Data */ + ret = flash->read(buf, area_params->address, (uint32_t)actual_size); + if (ret != MBED_SUCCESS) { + status = MBED_ERROR_READ_FAILED; + goto exit_point; + } + + crc = calc_crc(crc, (uint32_t)actual_size, buf); + if (crc != trailer.crc) { + status = MBED_ERROR_INVALID_DATA_DETECTED; + } + +exit_point: + + return status; +} + +static inline uint32_t align_up(uint64_t val, uint64_t size) +{ + return (((val - 1) / size) + 1) * size; +} + +static inline uint32_t align_down(uint64_t val, uint64_t size) +{ + return (((val) / size)) * size; +} + +static uint32_t calc_crc(uint32_t init_crc, uint32_t data_size, const void *data_buf) +{ + uint32_t crc; + MbedCRC ct(init_crc, 0x0, true, false); + ct.compute(const_cast(data_buf), data_size, &crc); + return crc; +} +#endif // DEVICE_FLASH diff --git a/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.h b/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.h new file mode 100644 index 00000000000..33933bbacba --- /dev/null +++ b/features/storage/kvstore/direct_access_devicekey/DirectAccessDevicekey.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2018 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_DIRECT_ACCESS_DEVICEKEY_H +#define MBED_DIRECT_ACCESS_DEVICEKEY_H + +#include "FlashIAP.h" +#include +/** + * @brief Returns devicekey directly from internal FlashIAP by given tdb internal position + * + * @param[in] tdb_start_offset FlashIAP Start address offset of tdb store + * @param[in] tdb_end_offset FlashIAP End address offset of tdb store + * @param[in] data_buf Buffer to store devicekey data + * @param[in] data_buf_size Max expected size of buffer to store the devicekey data + * @param[out] actual_data_size_ptr Actual retrieved devicekey size + * + * @returns MBED_ERROR_INVALID_ARGUMENT Illegal argument given + * MBED_ERROR_INVALID_SIZE data_buf_size is too small for retrieving actual data size + * MBED_ERROR_INVALID_DATA_DETECTED devicekey data invalid crc + * MBED_ERROR_ITEM_NOT_FOUND devicekey data not found + * MBED_ERROR_FAILED_OPERATION internal flash failure + * MBED_ERROR_READ_FAILED internal flash read failed + * MBED_SUCCESS successful + */ +int direct_access_to_devicekey(uint32_t tdb_start_offset, uint32_t tdb_end_offset, void *data_buf, + size_t data_buf_size, size_t *actual_data_size_ptr); + +/** + * @brief Returns the expected tdb internal position. + * Limitations: + * 1. supporting FILESYSTEM or TDB_EXTERNAL configuration only + * 2. supporting either both start_address and size are explicitly given (different than zero) + * or both of them are zero (default configuration) + * + * @param[out] out_tdb_start_offset Expected FlashIAP Start address offset of tdb store + * @param[out] out_tdb_end_offset Expected FlashIAP End address offset of tdb store + * + * @returns MBED_ERROR_FAILED_OPERATION internal flash failure + * MBED_ERROR_UNSUPPORTED kvstore configuration different than FILESYSTEM or TDB_EXTERNAL + * or start_address or size are different than 0 and the other isn't + * MBED_ERROR_INVALID_OPERATION tdb_start_offset or tdb_end_offset are not aligned or lower + * than end of code segment (when using default configuration) + * MBED_SUCCESS successful + * + */ +int get_expected_internal_TDBStore_position(uint32_t *out_tdb_start_offset, uint32_t *out_tdb_end_offset); + +#endif /* MBED_DIRECT_ACCESS_DEVICEKEY_H */ diff --git a/features/storage/kvstore/filesystemstore/FileSystemStore.cpp b/features/storage/kvstore/filesystemstore/FileSystemStore.cpp index bdd77a6bc6b..ac1aea3cd72 100644 --- a/features/storage/kvstore/filesystemstore/FileSystemStore.cpp +++ b/features/storage/kvstore/filesystemstore/FileSystemStore.cpp @@ -17,6 +17,7 @@ */ #include "FileSystemStore.h" +#include "kv_config.h" #include "Dir.h" #include "File.h" #include "BlockDevice.h" @@ -31,14 +32,14 @@ #define FSST_REVISION 1 #define FSST_MAGIC 0x46535354 // "FSST" hex 'magic' signature -#ifndef FSST_FOLDER_PATH -#define FSST_FOLDER_PATH "kvstore" //default FileSystemStore folder path on fs -#endif +#define FSST_DEFAULT_FOLDER_PATH "kvstore" //default FileSystemStore folder path on fs static const uint32_t supported_flags = mbed::KVStore::WRITE_ONCE_FLAG; using namespace mbed; +namespace { + // incremental set handle typedef struct { char *key; @@ -53,6 +54,8 @@ typedef struct { char *prefix; } key_iterator_handle_t; +} // anonymous namespace + // Local Functions static char *string_ndup(const char *src, size_t size); @@ -69,9 +72,15 @@ int FileSystemStore::init() int status = MBED_SUCCESS; _mutex.lock(); + const char *temp_path = get_filesystemstore_folder_path(); + if (temp_path == NULL) { + _cfg_fs_path_size = strlen(FSST_DEFAULT_FOLDER_PATH); + _cfg_fs_path = string_ndup(FSST_DEFAULT_FOLDER_PATH, _cfg_fs_path_size); + } else { + _cfg_fs_path_size = strlen(temp_path); + _cfg_fs_path = string_ndup(temp_path, _cfg_fs_path_size); + } - _cfg_fs_path_size = strlen(FSST_FOLDER_PATH); - _cfg_fs_path = string_ndup(FSST_FOLDER_PATH, _cfg_fs_path_size); _full_path_key = new char[_cfg_fs_path_size + KVStore::MAX_KEY_SIZE + 1]; memset(_full_path_key, 0, (_cfg_fs_path_size + KVStore::MAX_KEY_SIZE + 1)); strncpy(_full_path_key, _cfg_fs_path, _cfg_fs_path_size); @@ -203,7 +212,7 @@ int FileSystemStore::get(const char *key, void *buffer, size_t buffer_size, size key_metadata_t key_metadata; if ((status = _verify_key_file(key, &key_metadata, &kv_file)) != MBED_SUCCESS) { - tr_error("File Verification failed, status: %d", status); + tr_debug("File Verification failed, status: %d", status); goto exit_point; } @@ -255,7 +264,7 @@ int FileSystemStore::get_info(const char *key, info_t *info) key_metadata_t key_metadata; if ((status = _verify_key_file(key, &key_metadata, &kv_file)) != MBED_SUCCESS) { - tr_error("File Verification failed, status: %d", status); + tr_debug("File Verification failed, status: %d", status); goto exit_point; } @@ -291,9 +300,9 @@ int FileSystemStore::remove(const char *key) /* If File Exists and is Valid, then check its Write Once Flag to verify its disabled before removing */ /* If File exists and is not valid, or is Valid and not Write-Onced then remove it */ if ((status = _verify_key_file(key, &key_metadata, &kv_file)) == MBED_SUCCESS) { - tr_error("File: %s, Exists Verifying Write Once Disabled before setting new value", _full_path_key); if (key_metadata.user_flags & KVStore::WRITE_ONCE_FLAG) { kv_file.close(); + tr_error("File: %s, Exists but write protected", _full_path_key); status = MBED_ERROR_WRITE_PROTECTED; goto exit_point; } @@ -512,7 +521,7 @@ int FileSystemStore::iterator_next(iterator_t it, char *key, size_t key_size) Dir *kv_dir; struct dirent kv_dir_ent; int status = MBED_ERROR_ITEM_NOT_FOUND; - key_iterator_handle_t *key_it = NULL; + key_iterator_handle_t *key_it; size_t key_name_size = KVStore::MAX_KEY_SIZE; if (key_size < key_name_size) { key_name_size = key_size; diff --git a/features/storage/kvstore/filesystemstore/FileSystemStore.h b/features/storage/kvstore/filesystemstore/FileSystemStore.h index 0112044d88a..2ea9590e408 100644 --- a/features/storage/kvstore/filesystemstore/FileSystemStore.h +++ b/features/storage/kvstore/filesystemstore/FileSystemStore.h @@ -23,7 +23,9 @@ namespace mbed { -/** FileSystemStore for Secure Store +/** FileSystemStore for Secure Store. + * This class implements the KVStore interface to + * create a key value store over FileSystem. * * @code * ... @@ -34,7 +36,7 @@ class FileSystemStore : public KVStore { public: /** Create FileSystemStore - A Key Value API on top of FS * - * @param fs File system on top which FileSystemStore is adding KV API + * @param fs File system (FAT/LITTLE) on top of which FileSystemStore is adding KV API */ FileSystemStore(FileSystem *fs); @@ -44,7 +46,8 @@ class FileSystemStore : public KVStore { virtual ~FileSystemStore() {} /** - * @brief Initialize FileSystemStore + * @brief Initialize FileSystemStore, checking validity of + * KVStore writing folder and if it doesn't exist, creating it. * * @returns MBED_SUCCESS Success. * MBED_ERROR_FAILED_OPERATION Underlying file system failed operation. @@ -52,7 +55,7 @@ class FileSystemStore : public KVStore { virtual int init(); /** - * @brief Deinitialize FileSystemStore + * @brief Deinitialize FileSystemStore, release and free resources. * * @returns MBED_SUCCESS Success. */ @@ -85,7 +88,7 @@ class FileSystemStore : public KVStore { virtual int set(const char *key, const void *buffer, size_t size, uint32_t create_flags); /** - * @brief Get one FileSystemStore item, given key. + * @brief Get one FileSystemStore item by given key. * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[in] buffer Value data buffer. @@ -98,13 +101,13 @@ class FileSystemStore : public KVStore { * MBED_ERROR_FAILED_OPERATION Underlying file system failed operation. * MBED_ERROR_INVALID_ARGUMENT Invalid argument given in function arguments. * MBED_ERROR_INVALID_SIZE Invalid size given in function arguments. - * MBED_ERROR_INVALID_DATA_DETECTED Data is corrupt. + * MBED_ERROR_INVALID_DATA_DETECTED Data is corrupted. * MBED_ERROR_ITEM_NOT_FOUND No such key. */ virtual int get(const char *key, void *buffer, size_t buffer_size, size_t *actual_size = NULL, size_t offset = 0); /** - * @brief Get information of a given key. + * @brief Get information of a given key. The returned info contains size and flags * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[out] info Returned information structure. @@ -114,13 +117,13 @@ class FileSystemStore : public KVStore { * MBED_ERROR_FAILED_OPERATION Underlying file system failed operation. * MBED_ERROR_INVALID_ARGUMENT Invalid argument given in function arguments. * MBED_ERROR_INVALID_SIZE Invalid size given in function arguments. - * MBED_ERROR_INVALID_DATA_DETECTED Data is corrupt. + * MBED_ERROR_INVALID_DATA_DETECTED Data is corrupted. * MBED_ERROR_ITEM_NOT_FOUND No such key. */ virtual int get_info(const char *key, info_t *info); /** - * @brief Remove a FileSystemStore item, given key. + * @brief Remove a FileSystemStore item by given key. * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @@ -134,7 +137,8 @@ class FileSystemStore : public KVStore { virtual int remove(const char *key); /** - * @brief Start an incremental FileSystemStore set sequence. + * @brief Start an incremental FileSystemStore set sequence. This operation is blocking other operations. + * Any get/set/remove/iterator operation will be blocked until set_finalize is called. * * @param[out] handle Returned incremental set handle. * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. @@ -151,7 +155,8 @@ class FileSystemStore : public KVStore { virtual int set_start(set_handle_t *handle, const char *key, size_t final_data_size, uint32_t create_flags); /** - * @brief Add data to incremental FileSystemStore set sequence. + * @brief Add data to incremental FileSystemStore set sequence. This operation is blocking other operations. + * Any get/set/remove operation will be blocked until set_finalize is called. * * @param[in] handle Incremental set handle. * @param[in] value_data Value data to add. @@ -180,6 +185,7 @@ class FileSystemStore : public KVStore { /** * @brief Start an iteration over FileSystemStore keys. + * There are no issues with any other operations while iterator is open. * * @param[out] it Returned iterator handle. * @param[in] prefix Key prefix (null for all keys). @@ -192,6 +198,7 @@ class FileSystemStore : public KVStore { /** * @brief Get next key in iteration. + * There are no issues with any other operations while iterator is open. * * @param[in] it Iterator handle. * @param[in] key Buffer for returned key. diff --git a/features/storage/kvstore/global_api/kvstore_global_api.h b/features/storage/kvstore/global_api/kvstore_global_api.h index 43ff72db2a1..12cfe067f33 100644 --- a/features/storage/kvstore/global_api/kvstore_global_api.h +++ b/features/storage/kvstore/global_api/kvstore_global_api.h @@ -27,7 +27,7 @@ typedef struct _opaque_kv_key_iterator *kv_iterator_t; #define KV_WRITE_ONCE_FLAG (1 << 0) #define KV_REQUIRE_CONFIDENTIALITY_FLAG (1 << 1) -#define KV_REQUIRE_INTEGRITY_FLAG (1 << 2) +#define KV_RESERVED_FLAG (1 << 2) #define KV_REQUIRE_REPLAY_PROTECTION_FLAG (1 << 3) #define KV_MAX_KEY_LENGTH 128 @@ -44,7 +44,6 @@ typedef struct info { * The Key flags, possible flags combination: * WRITE_ONCE_FLAG, * REQUIRE_CONFIDENTIALITY_FLAG, - * REQUIRE_INTEGRITY_FLAG, * REQUIRE_REPLAY_PROTECTION_FLAG */ uint32_t flags; @@ -63,7 +62,7 @@ typedef struct info { int kv_set(const char *full_name_key, const void *buffer, size_t size, uint32_t create_flags); /** - * @brief Get one KVStore item, given key. + * @brief Get one KVStore item by given key. * * @param[in] full_name_key /Partition_path/Key. Must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[in] buffer Value data buffer. @@ -75,7 +74,7 @@ int kv_set(const char *full_name_key, const void *buffer, size_t size, uint32_t int kv_get(const char *full_name_key, void *buffer, size_t buffer_size, size_t *actual_size); /** - * @brief Get information of a given key. + * @brief Get information of a given key.The returned info contains size and flags * * @param[in] full_name_key /Partition_path/Key. Must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[out] info Returned information structure. @@ -85,7 +84,7 @@ int kv_get(const char *full_name_key, void *buffer, size_t buffer_size, size_t * int kv_get_info(const char *full_name_key, kv_info_t *info); /** - * @brief Remove a KVStore item, given key. + * @brief Remove a KVStore item by given key. * * @param[in] full_name_key /Partition_path/Key. Must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @@ -95,7 +94,8 @@ int kv_remove(const char *full_name_key); /** * @brief Start an iteration over KVStore keys to find all the entries - * that fit the full_prefix + * that fit the full_prefix. There are no issues with any other operations while + * iterator is open. * * @param[out] it Allocating iterator handle. * Do not forget to call kv_iterator_close @@ -109,7 +109,8 @@ int kv_remove(const char *full_name_key); int kv_iterator_open(kv_iterator_t *it, const char *full_prefix); /** - * @brief Get next key in iteration that matches the prefix. + * @brief Get next key in iteration that matches the prefix. There are no issues with any + * other operations while iterator is open. * * @param[in] it Iterator handle. * @param[in] key Buffer for returned key. @@ -129,7 +130,7 @@ int kv_iterator_next(kv_iterator_t it, char *key, size_t key_size); int kv_iterator_close(kv_iterator_t it); /** - * @brief Remove all keys and related data + * @brief Remove all keys and related data from a specified partition. * * @param[in] kvstore_path /Partition/ * diff --git a/features/storage/kvstore/KVStore.h b/features/storage/kvstore/include/KVStore.h similarity index 97% rename from features/storage/kvstore/KVStore.h rename to features/storage/kvstore/include/KVStore.h index f7a67f62bae..a3383997da1 100644 --- a/features/storage/kvstore/KVStore.h +++ b/features/storage/kvstore/include/KVStore.h @@ -32,7 +32,7 @@ class KVStore { enum create_flags { WRITE_ONCE_FLAG = (1 << 0), REQUIRE_CONFIDENTIALITY_FLAG = (1 << 1), - REQUIRE_INTEGRITY_FLAG = (1 << 2), + RESERVED_FLAG = (1 << 2), REQUIRE_REPLAY_PROTECTION_FLAG = (1 << 3), }; @@ -54,7 +54,6 @@ class KVStore { * The Key flags, possible flags combination: * WRITE_ONCE_FLAG, * REQUIRE_CONFIDENTIALITY_FLAG, - * REQUIRE_INTEGRITY_FLAG, * REQUIRE_REPLAY_PROTECTION_FLAG */ uint32_t flags; @@ -191,7 +190,8 @@ class KVStore { */ virtual int iterator_close(iterator_t it) = 0; - /** Convenience function for checking key validity + /** Convenience function for checking key validity. + * Key must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * * @param[in] key Key buffer. * diff --git a/features/storage/kvstore/kv_map/KVMap.cpp b/features/storage/kvstore/kv_map/KVMap.cpp index b7d8fc0adaf..e86f8bee043 100644 --- a/features/storage/kvstore/kv_map/KVMap.cpp +++ b/features/storage/kvstore/kv_map/KVMap.cpp @@ -78,8 +78,6 @@ int KVMap::attach(const char *partition_name, kvstore_config_t *kv_config) void KVMap::deinit_partition(kv_map_entry_t *partition) { - free(partition->partition_name); - if (partition->kv_config == NULL) { return; } @@ -88,22 +86,15 @@ void KVMap::deinit_partition(kv_map_entry_t *partition) partition->kv_config->external_store->deinit(); } + // TODO: this should be removed after FS APIs are standardized if (partition->kv_config->external_fs != NULL) { partition->kv_config->external_fs->unmount(); } - if (partition->kv_config->external_bd != NULL) { - partition->kv_config->external_bd->deinit(); - } - if (partition->kv_config->internal_store != NULL) { partition->kv_config->internal_store->deinit(); } - if (partition->kv_config->internal_bd != NULL) { - partition->kv_config->internal_bd->deinit(); - } - if (partition->kv_config->kvstore_main_instance != NULL) { partition->kv_config->kvstore_main_instance->deinit(); } diff --git a/features/storage/kvstore/kv_map/KVMap.h b/features/storage/kvstore/kv_map/KVMap.h index 8f128f2f017..14acbe152ca 100644 --- a/features/storage/kvstore/kv_map/KVMap.h +++ b/features/storage/kvstore/kv_map/KVMap.h @@ -144,10 +144,11 @@ class KVMap : private mbed::NonCopyable { /** * @brief Full name lookup, and then break it into KVStore instance and key * - * @param full_name String parameter contains the /partition name/key. - * @param kv_instance The main KVStore instance associated with the required partition name. - * @param key_index An index to the first character of the key. - * @param flags_mask Return the flag masking for the current configuration + * @param[in] full_name String parameter contains the partition name to look for. + * The String should be formated as follow "/partition name/key". The key is optional. + * @param[out] kv_instance Returns the main KVStore instance associated with the required partition name. + * @param[out] key_index Returns an index to the first character of the key. + * @param[out] flags_mask Return the flag masking for the current configuration * @return 0 on success, negative error code on failure */ int lookup(const char *full_name, mbed::KVStore **kv_instance, size_t *key_index, uint32_t *flags_mask = NULL); @@ -211,7 +212,7 @@ class KVMap : private mbed::NonCopyable { private: /** - * @brief Deinitialize all components of a partition configuration struct. + * @brief Deinitialize all components of a partition configuration struct. * * @param partition Partition configuration struct. */ @@ -220,9 +221,9 @@ class KVMap : private mbed::NonCopyable { /** * @brief Full name lookup, and then break it into KVStore config and key * - * @param full_name String parameter contains the /partition name/key. - * @param kv_config The configuration struct associated with the partition name - * @param key_index An index to the first character of the key. + * @param[in] full_name String parameter contains the /partition name/key. + * @param[out] kv_config Returns The configuration struct associated with the partition name + * @param[out] key_index Returns an index to the first character of the key. * @return 0 on success, negative error code on failure */ int config_lookup(const char *full_name, kvstore_config_t **kv_config, size_t *key_index); diff --git a/features/storage/kvstore/mbed_lib.json b/features/storage/kvstore/mbed_lib.json deleted file mode 100644 index 5b8884e85b5..00000000000 --- a/features/storage/kvstore/mbed_lib.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "kvstore", - "config": { - "enabled": { - "macro_name": "KVSTORE_ENABLED", - "value": true, - "help": "Enabled" - } - }, - "target_overrides": { - "REALTEK_RTL8195AM": { - "enabled": false - }, - "NRF51_DK": { - "enabled": false - }, - "KL82Z": { - "enabled": false - }, - "USENSE": { - "enabled": false - }, - "NCS36510": { - "enabled": false - } - } -} diff --git a/features/storage/kvstore/securestore/SecureStore.cpp b/features/storage/kvstore/securestore/SecureStore.cpp index 9d167cf32c4..20cfeca0c92 100644 --- a/features/storage/kvstore/securestore/SecureStore.cpp +++ b/features/storage/kvstore/securestore/SecureStore.cpp @@ -46,7 +46,9 @@ static const uint32_t derived_key_size = 16; static const char *const enc_prefix = "ENC"; static const char *const auth_prefix = "AUTH"; -static const uint32_t security_flags = KVStore::REQUIRE_INTEGRITY_FLAG | KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG; +static const uint32_t security_flags = KVStore::REQUIRE_CONFIDENTIALITY_FLAG | KVStore::REQUIRE_REPLAY_PROTECTION_FLAG; + +namespace { typedef struct { uint16_t metadata_size; @@ -72,6 +74,8 @@ typedef struct { KVStore::iterator_t underlying_it; } key_iterator_handle_t; +} // anonymous namespace + // -------------------------------------------------- Local Functions Declaration ---------------------------------------------------- @@ -190,11 +194,6 @@ int SecureStore::set_start(set_handle_t *handle, const char *key, size_t final_d return MBED_ERROR_INVALID_ARGUMENT; } - // RP requires authentication - if ((create_flags & REQUIRE_REPLAY_PROTECTION_FLAG) && !(create_flags & REQUIRE_INTEGRITY_FLAG)) { - return MBED_ERROR_INVALID_ARGUMENT; - } - *handle = static_cast(_inc_set_handle); ih = reinterpret_cast(*handle); @@ -254,24 +253,22 @@ int SecureStore::set_start(set_handle_t *handle, const char *key, size_t final_d memset(ih->metadata.iv, 0, iv_size); } - if (create_flags & REQUIRE_INTEGRITY_FLAG) { - os_ret = cmac_calc_start(ih->auth_ctx, key, _scratch_buf, scratch_buf_size); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto fail; - } - auth_started = true; - // Although name is not part of the data, we calculate CMAC on it as well - os_ret = cmac_calc_data(ih->auth_ctx, key, strlen(key)); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto fail; - } - os_ret = cmac_calc_data(ih->auth_ctx, &ih->metadata, sizeof(record_metadata_t)); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto fail; - } + os_ret = cmac_calc_start(ih->auth_ctx, key, _scratch_buf, scratch_buf_size); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto fail; + } + auth_started = true; + // Although name is not part of the data, we calculate CMAC on it as well + os_ret = cmac_calc_data(ih->auth_ctx, key, strlen(key)); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto fail; + } + os_ret = cmac_calc_data(ih->auth_ctx, &ih->metadata, sizeof(record_metadata_t)); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto fail; } ih->offset_in_data = 0; @@ -291,7 +288,7 @@ int SecureStore::set_start(set_handle_t *handle, const char *key, size_t final_d goto fail; } - if (create_flags & REQUIRE_REPLAY_PROTECTION_FLAG) { + if (create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG)) { ih->key = new char[strlen(key) + 1]; strcpy(ih->key, key); } @@ -360,12 +357,10 @@ int SecureStore::set_add_data(set_handle_t handle, const void *value_data, size_ dst_ptr = static_cast (value_data); } - if (ih->metadata.create_flags & REQUIRE_INTEGRITY_FLAG) { - os_ret = cmac_calc_data(ih->auth_ctx, dst_ptr, chunk_size); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto fail; - } + os_ret = cmac_calc_data(ih->auth_ctx, dst_ptr, chunk_size); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto fail; } ret = _underlying_kv->set_add_data(ih->underlying_handle, dst_ptr, chunk_size); @@ -387,9 +382,7 @@ int SecureStore::set_add_data(set_handle_t handle, const void *value_data, size_ mbedtls_aes_free(&ih->enc_ctx); } - if (ih->metadata.create_flags & REQUIRE_INTEGRITY_FLAG) { - mbedtls_cipher_free(&ih->auth_ctx); - } + mbedtls_cipher_free(&ih->auth_ctx); // mark handle as invalid by clearing metadata size field in header ih->metadata.metadata_size = 0; @@ -420,12 +413,10 @@ int SecureStore::set_finalize(set_handle_t handle) goto end; } - if (ih->metadata.create_flags & REQUIRE_INTEGRITY_FLAG) { - os_ret = cmac_calc_finish(ih->auth_ctx, cmac); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } + os_ret = cmac_calc_finish(ih->auth_ctx, cmac); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; } ret = _underlying_kv->set_add_data(ih->underlying_handle, cmac, cmac_size); @@ -438,9 +429,11 @@ int SecureStore::set_finalize(set_handle_t handle) goto end; } - if (_rbp_kv && (ih->metadata.create_flags & REQUIRE_REPLAY_PROTECTION_FLAG)) { + if (_rbp_kv && (ih->metadata.create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG))) { // In rollback protect case, we need to store CMAC in RBP store. // If it's also write once case, set write once flag in the RBP key as well. + // Use RBP storage also in write once case only - in order to prevent attacks removing + // a written once value from underlying KV. ret = _rbp_kv->set(ih->key, cmac, cmac_size, ih->metadata.create_flags & WRITE_ONCE_FLAG); delete[] ih->key; if (ret) { @@ -455,9 +448,7 @@ int SecureStore::set_finalize(set_handle_t handle) mbedtls_aes_free(&ih->enc_ctx); } - if (ih->metadata.create_flags & REQUIRE_INTEGRITY_FLAG) { - mbedtls_cipher_free(&ih->auth_ctx); - } + mbedtls_cipher_free(&ih->auth_ctx); _mutex.unlock(); return ret; @@ -493,7 +484,9 @@ int SecureStore::remove(const char *key) _mutex.lock(); int ret = do_get(key, 0, 0, 0, 0, &info); - if (ret) { + // Allow deleting key if read error is of our own errors + if ((ret != MBED_SUCCESS) && (ret != MBED_ERROR_AUTHENTICATION_FAILED) && + (ret != MBED_ERROR_RBP_AUTHENTICATION_FAILED)) { goto end; } @@ -570,30 +563,28 @@ int SecureStore::do_get(const char *key, void *buffer, size_t buffer_size, size_ } // Another potential attack case - key hasn't got the RP flag set, but exists in the RBP KV - if (rbp_key_exists && !(create_flags & REQUIRE_REPLAY_PROTECTION_FLAG)) { + if (rbp_key_exists && !(create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG))) { ret = MBED_ERROR_RBP_AUTHENTICATION_FAILED; goto end; } - if (create_flags & REQUIRE_INTEGRITY_FLAG) { - os_ret = cmac_calc_start(ih->auth_ctx, key, _scratch_buf, scratch_buf_size); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } - auth_started = true; + os_ret = cmac_calc_start(ih->auth_ctx, key, _scratch_buf, scratch_buf_size); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; + } + auth_started = true; - // Although name is not part of the data, we calculate CMAC on it as well - os_ret = cmac_calc_data(ih->auth_ctx, key, strlen(key)); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } - os_ret = cmac_calc_data(ih->auth_ctx, &ih->metadata, sizeof(record_metadata_t)); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } + // Although name is not part of the data, we calculate CMAC on it as well + os_ret = cmac_calc_data(ih->auth_ctx, key, strlen(key)); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; + } + os_ret = cmac_calc_data(ih->auth_ctx, &ih->metadata, sizeof(record_metadata_t)); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; } if (create_flags & REQUIRE_CONFIDENTIALITY_FLAG) { @@ -641,12 +632,10 @@ int SecureStore::do_get(const char *key, void *buffer, size_t buffer_size, size_ goto end; } - if (create_flags & REQUIRE_INTEGRITY_FLAG) { - os_ret = cmac_calc_data(ih->auth_ctx, dest_buf, chunk_size); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } + os_ret = cmac_calc_data(ih->auth_ctx, dest_buf, chunk_size); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; } if (create_flags & REQUIRE_CONFIDENTIALITY_FLAG) { @@ -672,36 +661,34 @@ int SecureStore::do_get(const char *key, void *buffer, size_t buffer_size, size_ *actual_size = actual_data_size; } - if (create_flags & REQUIRE_INTEGRITY_FLAG) { - uint8_t calc_cmac[cmac_size], read_cmac[cmac_size]; - os_ret = cmac_calc_finish(ih->auth_ctx, calc_cmac); - if (os_ret) { - ret = MBED_ERROR_FAILED_OPERATION; - goto end; - } + uint8_t calc_cmac[cmac_size], read_cmac[cmac_size]; + os_ret = cmac_calc_finish(ih->auth_ctx, calc_cmac); + if (os_ret) { + ret = MBED_ERROR_FAILED_OPERATION; + goto end; + } - // Check with record CMAC - ret = _underlying_kv->get(key, read_cmac, cmac_size, 0, - ih->metadata.metadata_size + ih->metadata.data_size); - if (ret) { + // Check with record CMAC + ret = _underlying_kv->get(key, read_cmac, cmac_size, 0, + ih->metadata.metadata_size + ih->metadata.data_size); + if (ret) { + goto end; + } + if (memcmp(calc_cmac, read_cmac, cmac_size) != 0) { + ret = MBED_ERROR_AUTHENTICATION_FAILED; + goto end; + } + + // If rollback protect, check also CMAC stored in RBP store + if (_rbp_kv && (create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG))) { + if (!rbp_key_exists) { + ret = MBED_ERROR_RBP_AUTHENTICATION_FAILED; goto end; } - if (memcmp(calc_cmac, read_cmac, cmac_size) != 0) { - ret = MBED_ERROR_AUTHENTICATION_FAILED; + if (memcmp(calc_cmac, rbp_cmac, cmac_size) != 0) { + ret = MBED_ERROR_RBP_AUTHENTICATION_FAILED; goto end; } - - // If rollback protect, check also CMAC stored in RBP store - if (create_flags & REQUIRE_REPLAY_PROTECTION_FLAG) { - if (!rbp_key_exists) { - ret = MBED_ERROR_RBP_AUTHENTICATION_FAILED; - goto end; - } - if (memcmp(calc_cmac, rbp_cmac, cmac_size) != 0) { - ret = MBED_ERROR_RBP_AUTHENTICATION_FAILED; - goto end; - } - } } if (info) { diff --git a/features/storage/kvstore/securestore/SecureStore.h b/features/storage/kvstore/securestore/SecureStore.h index e6d73b528dd..2dbda2dd2fb 100644 --- a/features/storage/kvstore/securestore/SecureStore.h +++ b/features/storage/kvstore/securestore/SecureStore.h @@ -27,8 +27,8 @@ #define SECURESTORE_ENABLED 1 -// Whole class is not supported if entropy or device key are not enabled -#if !defined(MBEDTLS_ENTROPY_C) || !DEVICEKEY_ENABLED +// Whole class is not supported if entropy, device key or required mbed TLS features are not enabled +#if !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_CIPHER_MODE_CTR) || !defined(MBEDTLS_CMAC_C) || !DEVICEKEY_ENABLED #undef SECURESTORE_ENABLED #define SECURESTORE_ENABLED 0 #endif @@ -53,8 +53,8 @@ class SecureStore : public KVStore { /** * @brief Class constructor * - * @param[in] underlying_kv Underlying KVStore. - * @param[in] rbp_kv Rollback protect KVStore. + * @param[in] underlying_kv KVStore that will hold the data. + * @param[in] rbp_kv Additional KVStore used for rollback protection. * * @returns none */ @@ -68,7 +68,8 @@ class SecureStore : public KVStore { virtual ~SecureStore(); /** - * @brief Initialize SecureStore + * @brief Initialize SecureStore class. It will also initialize + * the underlying KVStore and the rollback protection KVStore. * * @returns MBED_SUCCESS Success. * or any other error from underlying KVStore instances. @@ -76,7 +77,7 @@ class SecureStore : public KVStore { virtual int init(); /** - * @brief Deinitialize SecureStore + * @brief Deinitialize SecureStore class, free handles and memory allocations. * * @returns MBED_SUCCESS Success. * or any other error from underlying KVStore instances. @@ -100,7 +101,8 @@ class SecureStore : public KVStore { * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[in] buffer Value data buffer. * @param[in] size Value data size. - * @param[in] create_flags Flag mask. + * @param[in] create_flags Flag mask - WRITE_ONCE_FLAG|REQUIRE_CONFIDENTIALITY_FLAG| + * REQUIRE_INTEGRITY_FLAG|REQUIRE_REPLAY_PROTECTION_FLAG * * @returns MBED_SUCCESS Success. * MBED_ERROR_NOT_READY Not initialized. @@ -141,7 +143,7 @@ class SecureStore : public KVStore { * @brief Get information of a given key. * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. - * @param[out] info Returned information structure. + * @param[out] info Returned information structure containing size and flags. * * @returns MBED_SUCCESS Success. * MBED_ERROR_NOT_READY Not initialized. @@ -173,12 +175,14 @@ class SecureStore : public KVStore { /** - * @brief Start an incremental KVStore set sequence. + * @brief Start an incremental KVStore set sequence. This operation is blocking other operations. + * Any get/set/remove/iterator operation will be blocked until set_finalize is called. * * @param[out] handle Returned incremental set handle. * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[in] final_data_size Final value data size. - * @param[in] create_flags Flag mask. + * @param[in] create_flags Flag mask - WRITE_ONCE_FLAG|REQUIRE_CONFIDENTIALITY_FLAG| + * REQUIRE_INTEGRITY_FLAG|REQUIRE_REPLAY_PROTECTION_FLAG * * @returns MBED_SUCCESS Success. * MBED_ERROR_NOT_READY Not initialized. @@ -192,7 +196,8 @@ class SecureStore : public KVStore { virtual int set_start(set_handle_t *handle, const char *key, size_t final_data_size, uint32_t create_flags); /** - * @brief Add data to incremental KVStore set sequence. + * @brief Add data to incremental KVStore set sequence. This operation is blocking other operations. + * Any get/set/remove operation will be blocked until set_finalize is called. * * @param[in] handle Incremental set handle. * @param[in] value_data value data to add. @@ -223,6 +228,7 @@ class SecureStore : public KVStore { /** * @brief Start an iteration over KVStore keys. + * There are no issue with any other operation while iterator is open. * * @param[out] it Returned iterator handle. * @param[in] prefix Key prefix (null for all keys). @@ -236,6 +242,7 @@ class SecureStore : public KVStore { /** * @brief Get next key in iteration. + * There are no issue with any other operation while iterator is open. * * @param[in] it Iterator handle. * @param[in] key Buffer for returned key. diff --git a/features/storage/kvstore/tdbstore/TDBStore.cpp b/features/storage/kvstore/tdbstore/TDBStore.cpp index fbb5b3d4c38..0ab8dcecb31 100644 --- a/features/storage/kvstore/tdbstore/TDBStore.cpp +++ b/features/storage/kvstore/tdbstore/TDBStore.cpp @@ -22,9 +22,12 @@ #include #include #include "mbed_error.h" -#include "mbed_assert.h" #include "mbed_wait_api.h" #include "MbedCRC.h" +//Bypass the check of NVStore co existance if compiled for TARGET_TFM +#if !(BYPASS_NVSTORE_CHECK) +#include "SystemStorage.h" +#endif using namespace mbed; @@ -34,6 +37,8 @@ static const uint32_t delete_flag = (1UL << 31); static const uint32_t internal_flags = delete_flag; static const uint32_t supported_flags = KVStore::WRITE_ONCE_FLAG; +namespace { + typedef struct { uint32_t magic; uint16_t header_size; @@ -94,6 +99,8 @@ typedef struct { char *prefix; } key_iterator_handle_t; +} // anonymous namespace + // -------------------------------------------------- Local Functions Declaration ---------------------------------------------------- @@ -228,6 +235,11 @@ int TDBStore::read_record(uint8_t area, uint32_t offset, char *key, total_size = key_size + data_size; + // Make sure our read sizes didn't cause any wraparounds + if ((total_size < key_size) || (total_size < data_size)) { + return MBED_ERROR_INVALID_DATA_DETECTED; + } + if (offset + total_size >= _size) { return MBED_ERROR_INVALID_DATA_DETECTED; } @@ -382,6 +394,7 @@ int TDBStore::set_start(set_handle_t *handle, const char *key, size_t final_data uint32_t offset; uint32_t hash, ram_table_ind; inc_set_handle_t *ih; + bool need_gc = false; if (!is_valid_key(key)) { return MBED_ERROR_INVALID_ARGUMENT; @@ -477,14 +490,19 @@ int TDBStore::set_start(set_handle_t *handle, const char *key, size_t final_data // Write key now ret = write_area(_active_area, ih->bd_curr_offset, ih->header.key_size, key); if (ret) { + need_gc = true; goto fail; } ih->bd_curr_offset += ih->header.key_size; goto end; fail: + if ((need_gc) && (ih->bd_base_offset != _master_record_offset)) { + garbage_collection(); + } // mark handle as invalid by clearing magic field in header ih->header.magic = 0; + _mutex.unlock(); end: @@ -495,6 +513,7 @@ int TDBStore::set_add_data(set_handle_t handle, const void *value_data, size_t d { int ret = MBED_SUCCESS; inc_set_handle_t *ih; + bool need_gc = false; if (handle != _inc_set_handle) { return MBED_ERROR_INVALID_ARGUMENT; @@ -524,12 +543,17 @@ int TDBStore::set_add_data(set_handle_t handle, const void *value_data, size_t d // Write the data chunk ret = write_area(_active_area, ih->bd_curr_offset, data_size, value_data); if (ret) { + need_gc = true; goto end; } ih->bd_curr_offset += data_size; ih->offset_in_data += data_size; end: + if ((need_gc) && (ih->bd_base_offset != _master_record_offset)) { + garbage_collection(); + } + _inc_set_mutex.unlock(); return ret; } @@ -540,6 +564,8 @@ int TDBStore::set_finalize(set_handle_t handle) inc_set_handle_t *ih; ram_table_entry_t *ram_table = (ram_table_entry_t *) _ram_table; ram_table_entry_t *entry; + bool need_gc = false; + uint32_t actual_data_size, hash, flags, next_offset; if (handle != _inc_set_handle) { return MBED_ERROR_INVALID_ARGUMENT; @@ -555,14 +581,14 @@ int TDBStore::set_finalize(set_handle_t handle) if (ih->offset_in_data != ih->header.data_size) { ret = MBED_ERROR_INVALID_SIZE; - // Need GC as otherwise our storage is left in a non-usable state - garbage_collection(); + need_gc = true; goto end; } // Write header ret = write_area(_active_area, ih->bd_base_offset, sizeof(record_header_t), &ih->header); if (ret) { + need_gc = true; goto end; } @@ -570,6 +596,7 @@ int TDBStore::set_finalize(set_handle_t handle) os_ret = _buff_bd->sync(); if (os_ret) { ret = MBED_ERROR_WRITE_FAILED; + need_gc = true; goto end; } @@ -578,6 +605,16 @@ int TDBStore::set_finalize(set_handle_t handle) goto end; } + // Writes may fail without returning a failure (specially in flash components). Reread the record + // to ensure write success (this won't read the data anywhere - just use the CRC calculation). + ret = read_record(_active_area, ih->bd_base_offset, 0, 0, (uint32_t) -1, + actual_data_size, 0, false, false, false, false, + hash, flags, next_offset); + if (ret) { + need_gc = true; + goto end; + } + // Update RAM table if (ih->header.flags & delete_flag) { _num_keys--; @@ -603,10 +640,15 @@ int TDBStore::set_finalize(set_handle_t handle) _free_space_offset = align_up(ih->bd_curr_offset, _prog_size); end: + if ((need_gc) && (ih->bd_base_offset != _master_record_offset)) { + garbage_collection(); + } + // mark handle as invalid by clearing magic field in header ih->header.magic = 0; _inc_set_mutex.unlock(); + if (ih->bd_base_offset != _master_record_offset) { _mutex.unlock(); } @@ -883,6 +925,7 @@ int TDBStore::build_ram_table() if (ret == MBED_ERROR_ITEM_NOT_FOUND) { // Key doesn't exist, need to add it to RAM table + ret = MBED_SUCCESS; if (flags & delete_flag) { continue; @@ -946,6 +989,22 @@ int TDBStore::init() _mutex.lock(); + if (_is_initialized) { + goto end; + } + +//Bypass the check of NVStore co existance if compiled for TARGET_TFM +#if !(BYPASS_NVSTORE_CHECK) + + //Check if we are on internal memory && try to set the internal memory for TDBStore use. + if (strcmp(_bd->get_type(), "FLASHIAP") == 0 && + avoid_conflict_nvstore_tdbstore(TDBSTORE) == MBED_ERROR_ALREADY_INITIALIZED) { + + MBED_ERROR(MBED_ERROR_ALREADY_INITIALIZED, "TDBStore in internal memory can not be initialize when NVStore is in use"); + } + +#endif + _max_keys = initial_max_keys; ram_table = new ram_table_entry_t[_max_keys]; @@ -1396,7 +1455,7 @@ void TDBStore::offset_in_erase_unit(uint8_t area, uint32_t offset, } uint32_t agg_offset = 0; - while (bd_offset < agg_offset + _buff_bd->get_erase_size(agg_offset)) { + while (bd_offset >= agg_offset + _buff_bd->get_erase_size(agg_offset)) { agg_offset += _buff_bd->get_erase_size(agg_offset); } offset_from_start = bd_offset - agg_offset; diff --git a/features/storage/kvstore/tdbstore/TDBStore.h b/features/storage/kvstore/tdbstore/TDBStore.h index 8a5ca7d8cc1..727ad7c7eb4 100644 --- a/features/storage/kvstore/tdbstore/TDBStore.h +++ b/features/storage/kvstore/tdbstore/TDBStore.h @@ -39,7 +39,10 @@ class TDBStore : public KVStore { /** * @brief Class constructor * - * @param[in] bd Underlying block device. + * @param[in] bd Underlying block device. The BlockDevice + * can be any BlockDevice with flash characteristics. + * If using a BlockDevice without flash, such as SDBlockDevice, + * please add the FlashSimBlockDevice on top of it. * * @returns none */ @@ -53,7 +56,9 @@ class TDBStore : public KVStore { virtual ~TDBStore(); /** - * @brief Initialize TDBStore + * @brief Initialize TDBStore. If data exists, TDBStore will check the data integrity + * on initialize. If the integrity checks fails, the TDBStore will use GC to collect + * the available data and clean corrupted and erroneous records. * * @returns MBED_SUCCESS Success. * MBED_ERROR_READ_FAILED Unable to read from media. @@ -62,7 +67,7 @@ class TDBStore : public KVStore { virtual int init(); /** - * @brief Deinitialize TDBStore + * @brief Deinitialize TDBStore, release and free resources. * * @returns MBED_SUCCESS Success. */ @@ -99,7 +104,7 @@ class TDBStore : public KVStore { virtual int set(const char *key, const void *buffer, size_t size, uint32_t create_flags); /** - * @brief Get one TDBStore item, given key. + * @brief Get one TDBStore item by given key. * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[in] buffer Value data buffer. @@ -119,7 +124,7 @@ class TDBStore : public KVStore { size_t offset = 0); /** - * @brief Get information of a given key. + * @brief Get information of a given key. The returned info contains size and flags * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @param[out] info Returned information structure. @@ -134,7 +139,7 @@ class TDBStore : public KVStore { virtual int get_info(const char *key, info_t *info); /** - * @brief Remove a TDBStore item, given key. + * @brief Remove a TDBStore item by given key. * * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. * @@ -151,7 +156,8 @@ class TDBStore : public KVStore { /** - * @brief Start an incremental TDBStore set sequence. + * @brief Start an incremental TDBStore set sequence. This operation is blocking other operations. + * Any get/set/remove/iterator operation will be blocked until set_finalize is called. * * @param[out] handle Returned incremental set handle. * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. @@ -170,7 +176,8 @@ class TDBStore : public KVStore { virtual int set_start(set_handle_t *handle, const char *key, size_t final_data_size, uint32_t create_flags); /** - * @brief Add data to incremental TDBStore set sequence. + * @brief Add data to incremental TDBStore set sequence. This operation is blocking other operations. + * Any get/set/remove operation will be blocked until set_finalize will be called. * * @param[in] handle Incremental set handle. * @param[in] value_data Value data to add. @@ -198,6 +205,7 @@ class TDBStore : public KVStore { /** * @brief Start an iteration over KVStore keys. + * There are no issues with any other operations while iterator is open. * * @param[out] it Returned iterator handle. * @param[in] prefix Key prefix (null for all keys). @@ -210,6 +218,7 @@ class TDBStore : public KVStore { /** * @brief Get next key in iteration. + * There are no issues with any other operations while iterator is open. * * @param[in] it Iterator handle. * @param[in] key Buffer for returned key. @@ -237,7 +246,8 @@ class TDBStore : public KVStore { virtual int iterator_close(iterator_t it); /** - * @brief Set data in reserved area. + * @brief Set data in reserved area, which is a special location for special data, such as ROT. + * The data written to reserved area can't be overwritten. * * @param[in] reserved_data Reserved data buffer. * @param[in] reserved_data_buf_size @@ -253,7 +263,7 @@ class TDBStore : public KVStore { virtual int reserved_data_set(const void *reserved_data, size_t reserved_data_buf_size); /** - * @brief Get data from reserved area. + * @brief Get data from reserved area, which is a special location for special data, such as ROT. * * @param[in] reserved_data Reserved data buffer. * @param[in] reserved_data_buf_size diff --git a/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp b/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp index dade9a7d2c6..ab8752b74b4 100644 --- a/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp +++ b/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp @@ -88,7 +88,7 @@ static void nvstore_basic_functionality_test() size_t area_size; nvstore.get_area_params(area, area_address, area_size); printf("Area %d: address 0x%08lx, size %d (0x%x)\n", area, area_address, area_size, area_size); - if (area_address < FLASHIAP_ROM_END) { + if (area_address < FLASHIAP_APP_ROM_END_ADDR) { nvstore_overlaps_code = true; } TEST_SKIP_UNLESS_MESSAGE(!nvstore_overlaps_code, "Test skipped. NVStore region overlaps code."); @@ -109,12 +109,12 @@ static void nvstore_basic_functionality_test() TEST_SKIP_UNLESS_MESSAGE(max_possible_keys >= max_possible_keys_threshold, "Max possible keys below threshold. Test skipped."); - nvstore.set_max_keys(max_test_keys); - TEST_ASSERT_EQUAL(max_test_keys, nvstore.get_max_keys()); - result = nvstore.reset(); TEST_ASSERT_EQUAL(NVSTORE_SUCCESS, result); + nvstore.set_max_keys(max_test_keys); + TEST_ASSERT_EQUAL(max_test_keys, nvstore.get_max_keys()); + printf("Max keys %d (out of %d possible ones)\n", nvstore.get_max_keys(), max_possible_keys); result = nvstore.set(5, 18, nvstore_testing_buf_set); @@ -449,12 +449,13 @@ static void thread_test_worker() static void nvstore_multi_thread_test() { #ifdef MBED_CONF_RTOS_PRESENT - int i; + int i, result; uint16_t size; uint16_t key; int ret; char *dummy; - uint16_t max_possible_keys; + uint16_t max_possible_keys, actual_len_bytes = 0; + char test[] = "Test", read_buf[10] = {}; NVStore &nvstore = NVStore::get_instance(); @@ -483,6 +484,10 @@ static void nvstore_multi_thread_test() TEST_SKIP_UNLESS_MESSAGE(max_possible_keys >= max_possible_keys_threshold, "Max possible keys below threshold. Test skipped."); + nvstore.set_max_keys(max_test_keys + 1); + result = nvstore.set(max_test_keys, strlen(test), test); + TEST_ASSERT_EQUAL(NVSTORE_SUCCESS, result); + thr_test_data->stop_threads = false; for (key = 0; key < thr_test_data->max_keys; key++) { for (i = 0; i < thr_test_num_buffs; i++) { @@ -498,16 +503,12 @@ static void nvstore_multi_thread_test() TEST_ASSERT_EQUAL(NVSTORE_SUCCESS, ret); } - dummy = new (std::nothrow) char[thr_test_num_threads * thr_test_stack_size]; - delete[] dummy; - if (!dummy) { - goto mem_fail; - } - for (i = 0; i < thr_test_num_threads; i++) { threads[i] = new (std::nothrow) rtos::Thread((osPriority_t)((int)osPriorityBelowNormal - thr_test_num_threads + i), thr_test_stack_size); - if (!threads[i]) { + dummy = new (std::nothrow) char[thr_test_stack_size]; + delete[] dummy; + if (!threads[i] || !dummy) { goto mem_fail; } threads[i]->start(mbed::callback(thread_test_worker)); @@ -527,6 +528,12 @@ static void nvstore_multi_thread_test() for (key = 0; key < thr_test_data->max_keys; key++) { thread_test_check_key(key); } + + result = nvstore.get(max_test_keys, sizeof(read_buf), read_buf, actual_len_bytes); + TEST_ASSERT_EQUAL(NVSTORE_SUCCESS, result); + TEST_ASSERT_EQUAL(strlen(test), actual_len_bytes); + TEST_ASSERT_EQUAL_UINT8_ARRAY(test, read_buf, strlen(test)); + goto clean; mem_fail: diff --git a/features/storage/nvstore/mbed_lib.json b/features/storage/nvstore/mbed_lib.json index a7f72acad00..7221fb8104d 100644 --- a/features/storage/nvstore/mbed_lib.json +++ b/features/storage/nvstore/mbed_lib.json @@ -29,6 +29,9 @@ } }, "target_overrides": { + "NUCLEO_F410RB": { + "enabled" : false + }, "FUTURE_SEQUANA": { "area_1_address": "0x100F8000", "area_1_size": 16384, @@ -40,6 +43,12 @@ "area_1_size": 16384, "area_2_address": "0x1007C000", "area_2_size": 16384 + }, + "FUTURE_SEQUANA_PSA": { + "enabled" : false + }, + "FUTURE_SEQUANA_M0_PSA": { + "enabled" : false } } } diff --git a/features/storage/nvstore/source/nvstore.cpp b/features/storage/nvstore/source/nvstore.cpp index f049062af15..41b2603dcd9 100644 --- a/features/storage/nvstore/source/nvstore.cpp +++ b/features/storage/nvstore/source/nvstore.cpp @@ -21,8 +21,10 @@ #if NVSTORE_ENABLED #include "FlashIAP.h" +#include "SystemStorage.h" #include "mbed_critical.h" #include "mbed_assert.h" +#include "mbed_error.h" #include "mbed_wait_api.h" #include #include @@ -30,6 +32,8 @@ // --------------------------------------------------------- Definitions ---------------------------------------------------------- +namespace { + static const uint16_t delete_item_flag = 0x8000; static const uint16_t set_once_flag = 0x4000; static const uint16_t header_flag_mask = 0xF000; @@ -61,17 +65,26 @@ static const unsigned int owner_bit_pos = 12; typedef struct { uint16_t version; - uint16_t reserved1; - uint32_t reserved2; + uint16_t max_keys; + uint32_t reserved; } master_record_data_t; static const uint32_t min_area_size = 4096; static const uint32_t max_data_size = 4096; -static const int num_write_retries = 16; - static const uint8_t blank_flash_val = 0xFF; +typedef enum { + NVSTORE_AREA_STATE_NONE = 0, + NVSTORE_AREA_STATE_EMPTY, + NVSTORE_AREA_STATE_VALID, +} area_state_e; + +static const uint32_t initial_crc = 0xFFFFFFFF; + +} // anonymous namespace + + // See whether any of these defines are given (by config files) // If so, this means that that area configuration is given by the user #if defined(NVSTORE_AREA_1_ADDRESS) || defined(NVSTORE_AREA_1_SIZE) ||\ @@ -95,15 +108,6 @@ NVStore::nvstore_area_data_t NVStore::initial_area_params[] = {{0, 0}, }; #endif -typedef enum { - NVSTORE_AREA_STATE_NONE = 0, - NVSTORE_AREA_STATE_EMPTY, - NVSTORE_AREA_STATE_VALID, -} area_state_e; - -static const uint32_t initial_crc = 0xFFFFFFFF; - - // -------------------------------------------------- Local Functions Declaration ---------------------------------------------------- // -------------------------------------------------- Functions Implementation ---------------------------------------------------- @@ -171,11 +175,54 @@ uint16_t NVStore::get_max_possible_keys() void NVStore::set_max_keys(uint16_t num_keys) { + uint16_t key = 0, old_max_keys = 0; + MBED_ASSERT(num_keys < get_max_possible_keys()); + + if (num_keys < NVSTORE_NUM_PREDEFINED_KEYS) { + return; + } + + if (!_init_done) { + int ret = init(); + if (ret != NVSTORE_SUCCESS) { + return; + } + } + + _mutex->lock(); + + //check if there are values that might be discarded + if (num_keys < _max_keys) { + for (key = num_keys; key < _max_keys; key++) { + if (_offset_by_key[key] != 0) { + return; + } + } + } + + old_max_keys = _max_keys; _max_keys = num_keys; - // User is allowed to change number of keys. As this affects init, need to deinitialize now. - // Don't call init right away - it is lazily called by get/set functions if needed. - deinit(); + + // Invoke GC to write new max_keys to master record + garbage_collection(no_key, 0, 0, 0, NULL, std::min(_max_keys, old_max_keys)); + + // Reallocate _offset_by_key with new size + if (_max_keys != old_max_keys) { + // Reallocate _offset_by_key with new size + uint32_t *old_offset_by_key = (uint32_t *) _offset_by_key; + uint32_t *new_offset_by_key = new uint32_t[_max_keys]; + MBED_ASSERT(new_offset_by_key); + + // Copy old content to new table + memset(new_offset_by_key, 0, sizeof(uint32_t) * _max_keys); + memcpy(new_offset_by_key, old_offset_by_key, sizeof(uint32_t) * std::min(_max_keys, old_max_keys)); + + _offset_by_key = new_offset_by_key; + delete[] old_offset_by_key; + } + + _mutex->unlock(); } int NVStore::flash_read_area(uint8_t area, uint32_t offset, uint32_t size, void *buf) @@ -185,62 +232,41 @@ int NVStore::flash_read_area(uint8_t area, uint32_t offset, uint32_t size, void int NVStore::flash_write_area(uint8_t area, uint32_t offset, uint32_t size, const void *buf) { - int ret; - // On some boards, write action can fail due to HW limitations (like critical drivers - // that disable all other actions). Just retry a few times until success. - for (int i = 0; i < num_write_retries; i++) { - ret = _flash->program(buf, _flash_area_params[area].address + offset, size); - if (!ret) { - return ret; - } - wait_ms(1); - } + int ret = _flash->program(buf, _flash_area_params[area].address + offset, size); return ret; } int NVStore::flash_erase_area(uint8_t area) { - int ret; - // On some boards, write action can fail due to HW limitations (like critical drivers - // that disable all other actions). Just retry a few times until success. - for (int i = 0; i < num_write_retries; i++) { - ret = _flash->erase(_flash_area_params[area].address, _flash_area_params[area].size); - if (!ret) { - return ret; - } - wait_ms(1); - } + int ret = _flash->erase(_flash_area_params[area].address, _flash_area_params[area].size); return ret; } void NVStore::calc_validate_area_params() { - int num_sectors = 0; - - size_t flash_addr = _flash->get_flash_start(); + size_t flash_start_addr = _flash->get_flash_start(); size_t flash_size = _flash->get_flash_size(); + size_t flash_addr; size_t sector_size; - int max_sectors = flash_size / _flash->get_sector_size(flash_addr) + 1; - size_t *sector_map = new size_t[max_sectors]; int area = 0; size_t left_size = flash_size; memcpy(_flash_area_params, initial_area_params, sizeof(_flash_area_params)); - int user_config = (_flash_area_params[0].size != 0); - int in_area = 0; + bool user_config = (_flash_area_params[0].size != 0); + bool in_area = false; size_t area_size = 0; - while (left_size) { - sector_size = _flash->get_sector_size(flash_addr); - sector_map[num_sectors++] = flash_addr; + if (user_config) { + flash_addr = flash_start_addr; + while (left_size) { + sector_size = _flash->get_sector_size(flash_addr); - if (user_config) { // User configuration - here we validate it // Check that address is on a sector boundary, that size covers complete sector sizes, // and that areas don't overlap. if (_flash_area_params[area].address == flash_addr) { - in_area = 1; + in_area = true; } if (in_area) { area_size += sector_size; @@ -249,18 +275,13 @@ void NVStore::calc_validate_area_params() if (area == NVSTORE_NUM_AREAS) { break; } - in_area = 0; + in_area = false; area_size = 0; } } + flash_addr += sector_size; + left_size -= sector_size; } - - flash_addr += sector_size; - left_size -= sector_size; - } - sector_map[num_sectors] = flash_addr; - - if (user_config) { // Valid areas were counted. Assert if not the expected number. MBED_ASSERT(area == NVSTORE_NUM_AREAS); } else { @@ -268,23 +289,20 @@ void NVStore::calc_validate_area_params() // Take last two sectors by default. If their sizes aren't big enough, take // a few consecutive ones. area = 1; - _flash_area_params[area].size = 0; - int i; - for (i = num_sectors - 1; i >= 0; i--) { - sector_size = sector_map[i + 1] - sector_map[i]; + flash_addr = flash_start_addr + flash_size; + _flash_area_params[0].size = 0; + _flash_area_params[1].size = 0; + while (area >= 0) { + MBED_ASSERT(flash_addr > flash_start_addr); + sector_size = _flash->get_sector_size(flash_addr - 1); + flash_addr -= sector_size; _flash_area_params[area].size += sector_size; if (_flash_area_params[area].size >= min_area_size) { - _flash_area_params[area].address = sector_map[i]; + _flash_area_params[area].address = flash_addr; area--; - if (area < 0) { - break; - } - _flash_area_params[area].size = 0; } } } - - delete[] sector_map; } @@ -444,8 +462,8 @@ int NVStore::write_master_record(uint8_t area, uint16_t version, uint32_t &next_ master_record_data_t master_rec; master_rec.version = version; - master_rec.reserved1 = 0; - master_rec.reserved2 = 0; + master_rec.max_keys = _max_keys; + master_rec.reserved = 0; return write_record(area, 0, master_record_key, 0, 0, sizeof(master_rec), &master_rec, next_offset); } @@ -518,7 +536,7 @@ int NVStore::copy_record(uint8_t from_area, uint32_t from_offset, uint32_t to_of return NVSTORE_SUCCESS; } -int NVStore::garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uint16_t buf_size, const void *buf) +int NVStore::garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uint16_t buf_size, const void *buf, uint16_t num_keys) { uint32_t curr_offset, new_area_offset, next_offset, curr_owner; int ret; @@ -542,7 +560,7 @@ int NVStore::garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uin // Now iterate on all types, and copy the ones who have valid offsets (meaning that they exist) // to the other area. - for (key = 0; key < _max_keys; key++) { + for (key = 0; key < num_keys; key++) { curr_offset = _offset_by_key[key]; uint16_t save_flags = curr_offset & offs_by_key_flag_mask & ~offs_by_key_area_mask; curr_area = (uint8_t)(curr_offset >> offs_by_key_area_bit_pos) & 1; @@ -579,7 +597,6 @@ int NVStore::garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uin return ret; } - int NVStore::do_get(uint16_t key, uint16_t buf_size, void *buf, uint16_t &actual_size, int validate_only) { @@ -684,7 +701,7 @@ int NVStore::do_set(uint16_t key, uint16_t buf_size, const void *buf, uint16_t f // If we cross the area limit, we need to invoke GC. if (new_free_space >= _size) { - ret = garbage_collection(key, flags, owner, buf_size, buf); + ret = garbage_collection(key, flags, owner, buf_size, buf, _max_keys); _mutex->unlock(); return ret; } @@ -800,6 +817,7 @@ int NVStore::init() uint16_t key; uint16_t flags; uint16_t versions[NVSTORE_NUM_AREAS]; + uint16_t keys[NVSTORE_NUM_AREAS]; uint16_t actual_size; uint8_t owner; @@ -807,6 +825,12 @@ int NVStore::init() return NVSTORE_SUCCESS; } + //Check if we are on internal memory && try to set the internal memory for TDBStore use. + ret = avoid_conflict_nvstore_tdbstore(NVSTORE); + //NVstore in internal memory can not be initialize when TDBStore is in use + MBED_ASSERT(ret != MBED_ERROR_ALREADY_INITIALIZED); + + // This handles the case that init function is called by more than one thread concurrently. // Only the one who gets the value of 1 in _init_attempts_val will proceed, while others will // wait until init is finished. @@ -818,13 +842,6 @@ int NVStore::init() return NVSTORE_SUCCESS; } - _offset_by_key = new uint32_t[_max_keys]; - MBED_ASSERT(_offset_by_key); - - for (key = 0; key < _max_keys; key++) { - _offset_by_key[key] = 0; - } - _mutex = new PlatformMutex; MBED_ASSERT(_mutex); @@ -841,10 +858,12 @@ int NVStore::init() calc_validate_area_params(); + //retrieve max keys from master record for (uint8_t area = 0; area < NVSTORE_NUM_AREAS; area++) { area_state[area] = NVSTORE_AREA_STATE_NONE; free_space_offset_of_area[area] = 0; versions[area] = 0; + keys[area] = 0; _size = std::min(_size, _flash_area_params[area].size); @@ -878,6 +897,7 @@ int NVStore::init() continue; } versions[area] = master_rec.version; + keys[area] = master_rec.max_keys; // Place _free_space_offset after the master record (for the traversal, // which takes place after this loop). @@ -888,6 +908,17 @@ int NVStore::init() // that we found our active area. _active_area = area; _active_area_version = versions[area]; + if (!keys[area]) { + keys[area] = NVSTORE_NUM_PREDEFINED_KEYS; + } + _max_keys = keys[area]; + } + + _offset_by_key = new uint32_t[_max_keys]; + MBED_ASSERT(_offset_by_key); + + for (key = 0; key < _max_keys; key++) { + _offset_by_key[key] = 0; } // In case we have two empty areas, arbitrarily assign 0 to the active one. @@ -920,9 +951,9 @@ int NVStore::init() MBED_ASSERT(ret == NVSTORE_SUCCESS); // In case we have a faulty record, this probably means that the system crashed when written. - // Perform a garbage collection, to make the the other area valid. + // Perform a garbage collection, to make the other area valid. if (!valid) { - ret = garbage_collection(no_key, 0, 0, 0, NULL); + ret = garbage_collection(no_key, 0, 0, 0, NULL, _max_keys); break; } if (flags & delete_item_flag) { diff --git a/features/storage/nvstore/source/nvstore.h b/features/storage/nvstore/source/nvstore.h index 53f3f7dcdfa..2890437a9ea 100644 --- a/features/storage/nvstore/source/nvstore.h +++ b/features/storage/nvstore/source/nvstore.h @@ -18,7 +18,7 @@ #define MBED_NVSTORE_H // These addresses need to be configured according to board (in mbed_lib.json) -#ifndef DEVICE_FLASH +#if !DEVICE_FLASH #undef NVSTORE_ENABLED #define NVSTORE_ENABLED 0 #endif @@ -272,7 +272,6 @@ class NVStore : private mbed::NonCopyable { */ int get_area_params(uint8_t area, uint32_t &address, size_t &size); - private: typedef struct { uint32_t address; @@ -417,10 +416,11 @@ class NVStore : private mbed::NonCopyable { * @param[in] owner Owner. * @param[in] buf_size Data size (bytes). * @param[in] buf Data buffer. + * @param[in] num_keys number of keys. * * @returns 0 for success, nonzero for failure. */ - int garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uint16_t buf_size, const void *buf); + int garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uint16_t buf_size, const void *buf, uint16_t num_keys); /** * @brief Actual logics of get API (covers also get size API). diff --git a/features/storage/system_storage/SystemStorage.cpp b/features/storage/system_storage/SystemStorage.cpp index 02777002644..05dbee14b86 100644 --- a/features/storage/system_storage/SystemStorage.cpp +++ b/features/storage/system_storage/SystemStorage.cpp @@ -13,10 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include "SystemStorage.h" #include "BlockDevice.h" #include "FileSystem.h" #include "FATFileSystem.h" #include "LittleFileSystem.h" +#include "mbed_error.h" + #if COMPONENT_SPIF #include "SPIFBlockDevice.h" @@ -40,6 +43,31 @@ using namespace mbed; + + +MBED_WEAK int avoid_conflict_nvstore_tdbstore(owner_type_e in_mem_owner) +{ + int status = MBED_SUCCESS; + static PlatformMutex _mutex; + static owner_type_e internal_memory_owner = NONE; + + _mutex.lock(); + + if (internal_memory_owner != NONE && + internal_memory_owner != in_mem_owner) { + + status = MBED_ERROR_ALREADY_INITIALIZED; + + } else { + + internal_memory_owner = in_mem_owner; + } + + _mutex.unlock(); + + return status; +} + // Align a value to a specified size. // Parameters : // val - [IN] Value. @@ -116,7 +144,7 @@ MBED_WEAK BlockDevice *BlockDevice::get_default_instance() } //Find the start of first sector after text area - bottom_address = align_up(FLASHIAP_ROM_END, flash.get_sector_size(FLASHIAP_ROM_END)); + bottom_address = align_up(FLASHIAP_APP_ROM_END_ADDR, flash.get_sector_size(FLASHIAP_APP_ROM_END_ADDR)); start_address = flash.get_flash_start(); flash_size = flash.get_flash_size(); diff --git a/features/storage/system_storage/SystemStorage.h b/features/storage/system_storage/SystemStorage.h new file mode 100644 index 00000000000..e24e131be1f --- /dev/null +++ b/features/storage/system_storage/SystemStorage.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SYSTEM_STORAGE_H +#define MBED_SYSTEM_STORAGE_H + +#include "mbed_error.h" + +typedef enum { + NONE = 0, + NVSTORE, + TDBSTORE +} owner_type_e; + +/** + * @brief Try to get an ownership for the internal flash memory storage type. + * KVSTORE or NVSTORE is the current option and once the ownership is taken by one + * second one can not be initialize. + * @param[in] in_mem_owner Enum parameter to specify NVSTORE or KVSTORE as the storage owner + * @returns MBED_SUCCESS if succeeded or MBED_ERROR_ALREADY_INITIALIZED if fails. + */ +int avoid_conflict_nvstore_tdbstore(owner_type_e in_mem_owner); + +#endif diff --git a/features/unsupported/tests/utest/general/general.cpp b/features/unsupported/tests/utest/general/general.cpp index b5b665290ee..95ad463fd49 100644 --- a/features/unsupported/tests/utest/general/general.cpp +++ b/features/unsupported/tests/utest/general/general.cpp @@ -64,7 +64,7 @@ TEST(C_String_Format, Sprintf_Negative_Integers) STRCMP_EQUAL(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999"); } -#ifdef DEVICE_SEMIHOST +#if DEVICE_SEMIHOST #include "mbed_semihost_api.h" TEST_GROUP(Device_Semihost) diff --git a/hal/LowPowerTickerWrapper.cpp b/hal/LowPowerTickerWrapper.cpp index 179895f7fff..a61a7a67fdf 100644 --- a/hal/LowPowerTickerWrapper.cpp +++ b/hal/LowPowerTickerWrapper.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,7 +33,12 @@ void LowPowerTickerWrapper::irq_handler(ticker_irq_handler_type handler) { core_util_critical_section_enter(); - if (_pending_fire_now || _match_check(_intf->read()) || _suspended) { + // This code no longer filters out early interrupts. Instead it + // passes them through to the next layer and ignores further interrupts + // until the next call to set_interrrupt or fire_interrupt (when not suspended). + // This is to ensure that the device doesn't get stuck in sleep due to an + // early low power ticker interrupt that was ignored. + if (_pending_fire_now || _pending_match || _suspended) { _timeout.detach(); _pending_timeout = false; _pending_match = false; diff --git a/hal/LowPowerTickerWrapper.h b/hal/LowPowerTickerWrapper.h index 8a6a05aca0d..5ce81c59e32 100644 --- a/hal/LowPowerTickerWrapper.h +++ b/hal/LowPowerTickerWrapper.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/TARGET_FLASH_CMSIS_ALGO/flash_common_algo.c b/hal/TARGET_FLASH_CMSIS_ALGO/flash_common_algo.c index b91191d9ebe..6eff41aa725 100644 --- a/hal/TARGET_FLASH_CMSIS_ALGO/flash_common_algo.c +++ b/hal/TARGET_FLASH_CMSIS_ALGO/flash_common_algo.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/TARGET_FLASH_CMSIS_ALGO/flash_data.h b/hal/TARGET_FLASH_CMSIS_ALGO/flash_data.h index fe6732a673f..91c87b1ab1a 100644 --- a/hal/TARGET_FLASH_CMSIS_ALGO/flash_data.h +++ b/hal/TARGET_FLASH_CMSIS_ALGO/flash_data.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/analogin_api.h b/hal/analogin_api.h index 674e1af24e0..41524402932 100644 --- a/hal/analogin_api.h +++ b/hal/analogin_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/analogout_api.h b/hal/analogout_api.h index 6875b77617e..7c25369a12c 100644 --- a/hal/analogout_api.h +++ b/hal/analogout_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/buffer.h b/hal/buffer.h index bf01cd60097..a68b9408012 100644 --- a/hal/buffer.h +++ b/hal/buffer.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2014-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/can_api.h b/hal/can_api.h index 7fb63905115..777dc6b4437 100644 --- a/hal/can_api.h +++ b/hal/can_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/can_helper.h b/hal/can_helper.h index bf04f4c47a1..5a117509fde 100644 --- a/hal/can_helper.h +++ b/hal/can_helper.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/crc_api.h b/hal/crc_api.h index 29336feb9bf..c2b20cc8c7e 100644 --- a/hal/crc_api.h +++ b/hal/crc_api.h @@ -2,6 +2,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +52,7 @@ typedef struct crc_mbed_config { bool reflect_out; } crc_mbed_config_t; -#ifdef DEVICE_CRC +#if DEVICE_CRC #ifdef __cplusplus extern "C" { diff --git a/hal/critical_section_api.h b/hal/critical_section_api.h index d5cb24296f4..8c6ac5971f9 100644 --- a/hal/critical_section_api.h +++ b/hal/critical_section_api.h @@ -2,6 +2,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/dma_api.h b/hal/dma_api.h index 1c9755d975b..864439e3f0a 100644 --- a/hal/dma_api.h +++ b/hal/dma_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2014-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/ethernet_api.h b/hal/ethernet_api.h index 1802db955e0..1a14fda06e7 100644 --- a/hal/ethernet_api.h +++ b/hal/ethernet_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/flash_api.h b/hal/flash_api.h index 4b59193e459..e98c806a0a9 100644 --- a/hal/flash_api.h +++ b/hal/flash_api.h @@ -3,6 +3,7 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/gpio_api.h b/hal/gpio_api.h index 9f11937be40..51156acd23f 100644 --- a/hal/gpio_api.h +++ b/hal/gpio_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/gpio_irq_api.h b/hal/gpio_irq_api.h index eb631716dff..6ca858f6000 100644 --- a/hal/gpio_irq_api.h +++ b/hal/gpio_irq_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/i2c_api.h b/hal/i2c_api.h index 18f902369e2..43ed7bcebdb 100644 --- a/hal/i2c_api.h +++ b/hal/i2c_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/itm_api.h b/hal/itm_api.h index 38607789cee..897f6fa7923 100644 --- a/hal/itm_api.h +++ b/hal/itm_api.h @@ -2,6 +2,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +20,7 @@ #ifndef MBED_ITM_API_H #define MBED_ITM_API_H -#if defined(DEVICE_ITM) +#if DEVICE_ITM #include #include diff --git a/hal/lp_ticker_api.h b/hal/lp_ticker_api.h index 374990803cb..aecaf8ac4a7 100644 --- a/hal/lp_ticker_api.h +++ b/hal/lp_ticker_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_critical_section_api.c b/hal/mbed_critical_section_api.c index 21e3338b64d..05b42b6f8fa 100644 --- a/hal/mbed_critical_section_api.c +++ b/hal/mbed_critical_section_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_flash_api.c b/hal/mbed_flash_api.c index 83fa7f18055..a5d009bc879 100644 --- a/hal/mbed_flash_api.c +++ b/hal/mbed_flash_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_gpio.c b/hal/mbed_gpio.c index 7bf52dd76d1..b58a6ca61a6 100644 --- a/hal/mbed_gpio.c +++ b/hal/mbed_gpio.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_itm_api.c b/hal/mbed_itm_api.c index 17afe5e1562..46d7e3dcc0b 100644 --- a/hal/mbed_itm_api.c +++ b/hal/mbed_itm_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +15,7 @@ * limitations under the License. */ -#if defined(DEVICE_ITM) +#if DEVICE_ITM #include "hal/itm_api.h" #include "cmsis.h" @@ -130,4 +131,4 @@ void mbed_itm_send_block(uint32_t port, const void *data, size_t len) } } } -#endif // defined(DEVICE_ITM) +#endif // DEVICE_ITM diff --git a/hal/mbed_lp_ticker_api.c b/hal/mbed_lp_ticker_api.c index 477c1b13875..7a29964fd24 100644 --- a/hal/mbed_lp_ticker_api.c +++ b/hal/mbed_lp_ticker_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_lp_ticker_wrapper.cpp b/hal/mbed_lp_ticker_wrapper.cpp index 403141fceaa..09c1a9bf3c6 100644 --- a/hal/mbed_lp_ticker_wrapper.cpp +++ b/hal/mbed_lp_ticker_wrapper.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_lp_ticker_wrapper.h b/hal/mbed_lp_ticker_wrapper.h index e1c1fe4a264..3493abe4961 100644 --- a/hal/mbed_lp_ticker_wrapper.h +++ b/hal/mbed_lp_ticker_wrapper.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_pinmap_common.c b/hal/mbed_pinmap_common.c index 18056075021..0f2083d92e3 100644 --- a/hal/mbed_pinmap_common.c +++ b/hal/mbed_pinmap_common.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_ticker_api.c b/hal/mbed_ticker_api.c index 5c9fc55bcec..0f852ef06c3 100644 --- a/hal/mbed_ticker_api.c +++ b/hal/mbed_ticker_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -415,13 +416,16 @@ timestamp_t ticker_read(const ticker_data_t *const ticker) us_timestamp_t ticker_read_us(const ticker_data_t *const ticker) { + us_timestamp_t ret; + initialize(ticker); core_util_critical_section_enter(); update_present_time(ticker); + ret = ticker->queue->present_time; core_util_critical_section_exit(); - return ticker->queue->present_time; + return ret; } int ticker_get_next_timestamp(const ticker_data_t *const data, timestamp_t *timestamp) diff --git a/hal/mbed_us_ticker_api.c b/hal/mbed_us_ticker_api.c index 433a0355403..28626e0bd63 100644 --- a/hal/mbed_us_ticker_api.c +++ b/hal/mbed_us_ticker_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mpu/mbed_mpu_v7m.c b/hal/mpu/mbed_mpu_v7m.c index 5778e747399..7b7a7c72592 100644 --- a/hal/mpu/mbed_mpu_v7m.c +++ b/hal/mpu/mbed_mpu_v7m.c @@ -15,7 +15,6 @@ */ #include "hal/mpu_api.h" #include "platform/mbed_assert.h" -#include "platform/mbed_error.h" #include "cmsis.h" #if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_6M__ == 1U)) && \ @@ -26,7 +25,9 @@ #error "Device has v7m MPU but it is not enabled. Add 'MPU' to device_has in targets.json" #endif -#if !defined(MBED_MPU_ROM_END) +#ifdef MBED_CONF_TARGET_MPU_ROM_END +#define MBED_MPU_ROM_END MBED_CONF_TARGET_MPU_ROM_END +#else #define MBED_MPU_ROM_END (0x10000000 - 1) #endif #define MBED_MPU_RAM_START (MBED_MPU_ROM_END + 1) @@ -45,12 +46,17 @@ MBED_STATIC_ASSERT( void mbed_mpu_init() { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); const uint32_t regions = (MPU->TYPE & MPU_TYPE_DREGION_Msk) >> MPU_TYPE_DREGION_Pos; - if (regions < 4) { - MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_EINVAL), "Device is not capable of supporting an MPU - remove DEVICE_MPU for device_has."); - } + + // Our MPU setup requires 3 or 4 regions - if this assert is hit, remove + // a region by setting MPU_ROM_END to 0x1fffffff, or remove MPU from device_has +#if MBED_MPU_RAM_START == 0x20000000 + MBED_ASSERT(regions >= 3); +#else + MBED_ASSERT(regions >= 4); +#endif // Disable the MCU MPU->CTRL = 0; @@ -74,13 +80,12 @@ void mbed_mpu_init() * 0xE0000000 - 0xFFFFFFFF System No */ - // Select region 1 and used it for the WT rom region - // - RAM 0x00000000 to MBED_MPU_ROM_END - MPU->RNR = 0; - // Set address to 0 - MPU->RBAR = 0; - // Configure and enable region - MPU->RASR = + // Select region 0 and use it for the WT read-only rom region + // - Code 0x00000000 to MBED_MPU_ROM_END + ARM_MPU_SetRegion( + ARM_MPU_RBAR( + 0, // Region + 0x00000000), // Base ARM_MPU_RASR( 0, // DisableExec ARM_MPU_AP_RO, // AccessPermission @@ -97,16 +102,16 @@ void mbed_mpu_init() ((MBED_MPU_ROM_END >= 0x14000000) ? 0 : (1 << 5)) | ((MBED_MPU_ROM_END >= 0x18000000) ? 0 : (1 << 6)) | ((MBED_MPU_ROM_END >= 0x1C000000) ? 0 : (1 << 7)), - ARM_MPU_REGION_SIZE_512MB // Size - ); - - // Select region 1 and used it for the WT rom region - // - RAM MBED_MPU_ROM_END + 1 to 0x1FFFFFFF - MPU->RNR = 1; - // Set address to 0 - MPU->RBAR = 0; - // Configure and enable region - MPU->RASR = + ARM_MPU_REGION_SIZE_512MB) // Size + ); + +#if MBED_MPU_RAM_START < 0x20000000 + // Select region 3 and use it for a WT ram region in the Code area + // - Code MBED_MPU_ROM_END + 1 to 0x1FFFFFFF + ARM_MPU_SetRegion( + ARM_MPU_RBAR( + 3, // Region + 0x00000000), // Base ARM_MPU_RASR( 1, // DisableExec ARM_MPU_AP_FULL, // AccessPermission @@ -123,17 +128,20 @@ void mbed_mpu_init() ((MBED_MPU_RAM_START <= 0x18000000) ? 0 : (1 << 5)) | ((MBED_MPU_RAM_START <= 0x1C000000) ? 0 : (1 << 6)) | ((MBED_MPU_RAM_START <= 0x20000000) ? 0 : (1 << 7)), - ARM_MPU_REGION_SIZE_512MB // Size - ); + ARM_MPU_REGION_SIZE_512MB) // Size + ); +#define LAST_RAM_REGION 3 +#else +#define LAST_RAM_REGION 2 +#endif - // Select region 2 and used it for WBWA ram regions + // Select region 1 and use it for WBWA ram regions // - SRAM 0x20000000 to 0x3FFFFFFF // - RAM 0x60000000 to 0x7FFFFFFF - MPU->RNR = 2; - // Set address to 0 - MPU->RBAR = 0; - // Configure and enable region - MPU->RASR = + ARM_MPU_SetRegion( + ARM_MPU_RBAR( + 1, // Region + 0x00000000), // Base ARM_MPU_RASR( 1, // DisableExec ARM_MPU_AP_FULL, // AccessPermission @@ -150,16 +158,15 @@ void mbed_mpu_init() (1 << 5) | // Disable Sub-region (1 << 6) | // Disable Sub-region (1 << 7), // Disable Sub-region - ARM_MPU_REGION_SIZE_4GB // Size - ); - - // Select region 3 and used it for the WT ram region - // - RAM RAM 0x80000000 to 0x9FFFFFFF - MPU->RNR = 3; - // Set address - MPU->RBAR = 0x80000000; - // Configure and enable region - MPU->RASR = + ARM_MPU_REGION_SIZE_4GB) // Size + ); + + // Select region 2 and use it for the WT ram region + // - RAM 0x80000000 to 0x9FFFFFFF + ARM_MPU_SetRegion( + ARM_MPU_RBAR( + 2, // Region + 0x80000000), // Base ARM_MPU_RASR( 1, // DisableExec ARM_MPU_AP_FULL, // AccessPermission @@ -167,9 +174,9 @@ void mbed_mpu_init() 0, // IsShareable 1, // IsCacheable 0, // IsBufferable - ~0U, // SubRegionDisable - ARM_MPU_REGION_SIZE_512MB // Size - ); + 0U, // SubRegionDisable + ARM_MPU_REGION_SIZE_512MB) // Size + ); // Enable the MPU MPU->CTRL = @@ -178,53 +185,53 @@ void mbed_mpu_init() (1 << MPU_CTRL_ENABLE_Pos); // Enable MPU // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } void mbed_mpu_free() { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); // Disable the MPU MPU->CTRL = 0; // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); +} + +static void enable_region(bool enable, uint32_t region) +{ + MPU->RNR = region; + MPU->RASR = (MPU->RASR & ~MPU_RASR_ENABLE_Msk) | (enable << MPU_RASR_ENABLE_Pos); } void mbed_mpu_enable_rom_wn(bool enable) { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); - MPU->RNR = 0; - MPU->RASR = (MPU->RASR & ~MPU_RASR_ENABLE_Msk) | (enable ? MPU_RASR_ENABLE_Msk : 0); + enable_region(enable, 0); // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } void mbed_mpu_enable_ram_xn(bool enable) { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); - MPU->RNR = 1; - MPU->RASR = (MPU->RASR & ~MPU_RASR_ENABLE_Msk) | (enable ? MPU_RASR_ENABLE_Msk : 0); - - MPU->RNR = 2; - MPU->RASR = (MPU->RASR & ~MPU_RASR_ENABLE_Msk) | (enable ? MPU_RASR_ENABLE_Msk : 0); - - MPU->RNR = 3; - MPU->RASR = (MPU->RASR & ~MPU_RASR_ENABLE_Msk) | (enable ? MPU_RASR_ENABLE_Msk : 0); + for (uint32_t region = 1; region <= LAST_RAM_REGION; region++) { + enable_region(enable, region); + } // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } #endif diff --git a/hal/mpu/mbed_mpu_v8m.c b/hal/mpu/mbed_mpu_v8m.c index a0bab96532f..4b992f543d1 100644 --- a/hal/mpu/mbed_mpu_v8m.c +++ b/hal/mpu/mbed_mpu_v8m.c @@ -15,7 +15,6 @@ */ #include "hal/mpu_api.h" #include "platform/mbed_assert.h" -#include "platform/mbed_error.h" #include "cmsis.h" #if ((__ARM_ARCH_8M_BASE__ == 1U) || (__ARM_ARCH_8M_MAIN__ == 1U)) && \ @@ -26,35 +25,44 @@ #error "Device has v8m MPU but it is not enabled. Add 'MPU' to device_has in targets.json" #endif -#if !defined(MBED_MPU_ROM_END) -#define MBED_MPU_ROM_END (0x20000000 - 1) +#ifdef MBED_CONF_TARGET_MPU_ROM_END +#define MBED_MPU_ROM_END MBED_CONF_TARGET_MPU_ROM_END +#else +#define MBED_MPU_ROM_END (0x10000000 - 1) #endif +#define MBED_MPU_RAM_START (MBED_MPU_ROM_END + 1) -MBED_STATIC_ASSERT(MBED_MPU_ROM_END == 0x1fffffff, "Changing MBED_MPU_ROM_END for ARMv8-M is not supported."); +MBED_STATIC_ASSERT(MBED_MPU_ROM_END <= 0x20000000 - 1, + "Unsupported value for MBED_MPU_ROM_END"); void mbed_mpu_init() { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); const uint32_t regions = (MPU->TYPE & MPU_TYPE_DREGION_Msk) >> MPU_TYPE_DREGION_Pos; - if (regions < 4) { - MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_EINVAL), "Device is not capable of supporting an MPU - remove DEVICE_MPU for device_has."); - } + + // Our MPU setup requires 4 or 5 regions - if this assert is hit, remove + // a region by setting MPU_ROM_END to 0x1fffffff, or remove MPU from device_has +#if MBED_MPU_RAM_START == 0x20000000 + MBED_ASSERT(regions >= 4); +#else + MBED_ASSERT(regions >= 5); +#endif // Disable the MCU MPU->CTRL = 0; // Reset all mapping for (uint32_t i = 0; i < regions; i++) { - ARM_MPU_ClrRegionEx(MPU, i); + ARM_MPU_ClrRegion(i); } /* * ARMv8-M memory map: * * Start End Name Executable by default Default cache Mbed MPU protection - * 0x00000000 - 0x1FFFFFFF Code Yes WT, WA Write disabled + * 0x00000000 - 0x1FFFFFFF Code Yes WT, WA Write disabled for first portion and execute disabled for the rest * 0x20000000 - 0x3FFFFFFF SRAM Yes WB, WA, RA Execute disabled * 0x40000000 - 0x5FFFFFFF Peripheral No * 0x60000000 - 0x7FFFFFFF RAM Yes WB, WA, RA Execute disabled @@ -64,57 +72,85 @@ void mbed_mpu_init() * 0xE0000000 - 0xFFFFFFFF System No */ - uint32_t region; - uint8_t outer; - uint8_t inner; + const uint8_t WTRA = ARM_MPU_ATTR_MEMORY_(1, 0, 1, 0); // Non-transient, Write-Through, Read-allocate, Not Write-allocate + const uint8_t WBWARA = ARM_MPU_ATTR_MEMORY_(1, 1, 1, 1); // Non-transient, Write-Back, Read-allocate, Write-allocate + enum { + AttrIndex_WTRA, + AttrIndex_WBWARA, + }; + + ARM_MPU_SetMemAttr(AttrIndex_WTRA, ARM_MPU_ATTR(WTRA, WTRA)); + ARM_MPU_SetMemAttr(AttrIndex_WBWARA, ARM_MPU_ATTR(WBWARA, WBWARA)); + + ARM_MPU_SetRegion( + 0, // Region + ARM_MPU_RBAR( + 0x00000000, // Base + ARM_MPU_SH_NON, // Non-shareable + 1, // Read-Only + 1, // Non-Privileged + 0), // Execute Never disabled + ARM_MPU_RLAR( + MBED_MPU_ROM_END, // Limit + AttrIndex_WTRA) // Attribute index - Write-Through, Read-allocate + ); + +#if MBED_MPU_RAM_START != 0x20000000 + ARM_MPU_SetRegion( + 4, // Region + ARM_MPU_RBAR( + MBED_MPU_RAM_START, // Base + ARM_MPU_SH_NON, // Non-shareable + 0, // Read-Write + 1, // Non-Privileged + 1), // Execute Never enabled + ARM_MPU_RLAR( + 0x1FFFFFFF, // Limit + AttrIndex_WTRA) // Attribute index - Write-Through, Read-allocate + ); +#define LAST_RAM_REGION 4 +#else +#define LAST_RAM_REGION 3 +#endif - region = 0; - MPU->RNR = region; - outer = 0xA; // Write-Through, Non-transient, Read-allocate - inner = 0xA; // Write-Through, Non-transient, Read-allocate - ARM_MPU_SetMemAttrEx(MPU, region, (outer << 4) | (inner << 0)); - MPU->RBAR = (0x00000000 & MPU_RBAR_BASE_Msk) | // Start address is 0x00000000 - (0 << MPU_RBAR_SH_Pos) | // Not shareable - (3 << MPU_RBAR_AP_Pos) | // RO allowed by all privilege levels - (0 << MPU_RBAR_XN_Pos); // Execute Never disabled - MPU->RLAR = (0x1FFFFFFF & MPU_RLAR_LIMIT_Msk) | // Last address is 0x1FFFFFFF - (region << MPU_RLAR_AttrIndx_Pos); // Attribute index - configured to be the same as the region number - - region = 1; - MPU->RNR = region; - outer = 0xF; // Write-Back, Non-transient, Read-allocate, Write-allocate - outer = 0xF; // Write-Back, Non-transient, Read-allocate, Write-allocate - ARM_MPU_SetMemAttrEx(MPU, region, (outer << 4) | (inner << 0)); - MPU->RBAR = (0x20000000 & MPU_RBAR_BASE_Msk) | // Start address is 0x20000000 - (0 << MPU_RBAR_SH_Pos) | // Not shareable - (1 << MPU_RBAR_AP_Pos) | // RW allowed by all privilege levels - (1 << MPU_RBAR_XN_Pos); // Execute Never enabled - MPU->RLAR = (0x3FFFFFFF & MPU_RLAR_LIMIT_Msk) | // Last address is 0x3FFFFFFF - (region << MPU_RLAR_AttrIndx_Pos); // Attribute index - configured to be the same as the region number - - region = 2; - MPU->RNR = region; - outer = 0xF; // Write-Back, Non-transient, Read-allocate, Write-allocate - outer = 0xF; // Write-Back, Non-transient, Read-allocate, Write-allocate - ARM_MPU_SetMemAttrEx(MPU, region, (outer << 4) | (inner << 0)); - MPU->RBAR = (0x60000000 & MPU_RBAR_BASE_Msk) | // Start address is 0x60000000 - (0 << MPU_RBAR_SH_Pos) | // Not shareable - (1 << MPU_RBAR_AP_Pos) | // RW allowed by all privilege levels - (1 << MPU_RBAR_XN_Pos); // Execute Never enabled - MPU->RLAR = (0x7FFFFFFF & MPU_RLAR_LIMIT_Msk) | // Last address is 0x7FFFFFFF - (region << MPU_RLAR_AttrIndx_Pos); // Attribute index - configured to be the same as the region number - - region = 3; - MPU->RNR = region; - outer = 0xA; // Write-Through, Non-transient, Read-allocate - inner = 0xA; // Write-Through, Non-transient, Read-allocate - ARM_MPU_SetMemAttrEx(MPU, region, (outer << 4) | (inner << 0)); - MPU->RBAR = (0x80000000 & MPU_RBAR_BASE_Msk) | // Start address is 0x80000000 - (0 << MPU_RBAR_SH_Pos) | // Not shareable - (1 << MPU_RBAR_AP_Pos) | // RW allowed by all privilege levels - (1 << MPU_RBAR_XN_Pos); // Execute Never enabled - MPU->RLAR = (0x9FFFFFFF & MPU_RLAR_LIMIT_Msk) | // Last address is 0x9FFFFFFF - (region << MPU_RLAR_AttrIndx_Pos); // Attribute index - configured to be the same as the region number + ARM_MPU_SetRegion( + 1, // Region + ARM_MPU_RBAR( + 0x20000000, // Base + ARM_MPU_SH_NON, // Non-shareable + 0, // Read-Write + 1, // Non-Privileged + 1), // Execute Never enabled + ARM_MPU_RLAR( + 0x3FFFFFFF, // Limit + AttrIndex_WBWARA) // Attribute index - Write-Back, Write-allocate + ); + + ARM_MPU_SetRegion( + 2, // Region + ARM_MPU_RBAR( + 0x60000000, // Base + ARM_MPU_SH_NON, // Non-shareable + 0, // Read-Write + 1, // Non-Privileged + 1), // Execute Never enabled + ARM_MPU_RLAR( + 0x7FFFFFFF, // Limit + AttrIndex_WBWARA) // Attribute index - Write-Back, Write-allocate + ); + + ARM_MPU_SetRegion( + 3, // Region + ARM_MPU_RBAR( + 0x80000000, // Base + ARM_MPU_SH_NON, // Non-shareable + 0, // Read-Write + 1, // Non-Privileged + 1), // Execute Never enabled + ARM_MPU_RLAR( + 0x9FFFFFFF, // Limit + AttrIndex_WTRA) // Attribute index - Write-Through, Read-allocate + ); // Enable the MPU MPU->CTRL = @@ -123,53 +159,53 @@ void mbed_mpu_init() (1 << MPU_CTRL_ENABLE_Pos); // Enable MPU // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } void mbed_mpu_free() { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); // Disable the MCU MPU->CTRL = 0; // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); +} + +static void enable_region(bool enable, uint32_t region) +{ + MPU->RNR = region; + MPU->RLAR = (MPU->RLAR & ~MPU_RLAR_EN_Msk) | (enable << MPU_RLAR_EN_Pos); } void mbed_mpu_enable_rom_wn(bool enable) { // Flush memory writes before configuring the MPU. - __DSB(); + __DMB(); - MPU->RNR = 0; - MPU->RLAR = (MPU->RLAR & ~MPU_RLAR_EN_Msk) | (enable ? MPU_RLAR_EN_Msk : 0); + enable_region(enable, 0); // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } void mbed_mpu_enable_ram_xn(bool enable) { // Flush memory writes before configuring the MPU. - __DSB(); - - MPU->RNR = 1; - MPU->RLAR = (MPU->RLAR & ~MPU_RLAR_EN_Msk) | (enable ? MPU_RLAR_EN_Msk : 0); - - MPU->RNR = 2; - MPU->RLAR = (MPU->RLAR & ~MPU_RLAR_EN_Msk) | (enable ? MPU_RLAR_EN_Msk : 0); + __DMB(); - MPU->RNR = 3; - MPU->RLAR = (MPU->RLAR & ~MPU_RLAR_EN_Msk) | (enable ? MPU_RLAR_EN_Msk : 0); + for (uint32_t region = 1; region <= LAST_RAM_REGION; region++) { + enable_region(enable, region); + } // Ensure changes take effect - __ISB(); __DSB(); + __ISB(); } #endif diff --git a/hal/mpu_api.h b/hal/mpu_api.h index 5c02c740ffc..5ce034779eb 100644 --- a/hal/mpu_api.h +++ b/hal/mpu_api.h @@ -64,8 +64,8 @@ extern "C" { * Initialize the MPU * * Initialize or re-initialize the memory protection unit. - * It is implementation defined what region are protected - * by the MPU after initialization. + * After initialization or re-initialization, ROM and RAM protection + * are both enabled. */ void mbed_mpu_init(void); @@ -75,7 +75,9 @@ void mbed_mpu_init(void); * This function is used to mark all of ROM as read and execute only. * When enabled writes to ROM cause a fault. * - * @param enable true to disable execution in ram, false otherwise + * By default writes to ROM are disabled. + * + * @param enable true to disable writes to ROM, false otherwise */ void mbed_mpu_enable_rom_wn(bool enable); @@ -85,7 +87,9 @@ void mbed_mpu_enable_rom_wn(bool enable); * This function is used to mark all of RAM as execute never. * When enabled code is only allowed to execute from flash. * - * @param enable true to disable execution in ram, false otherwise + * By default execution from RAM is disabled. + * + * @param enable true to disable execution from RAM, false otherwise */ void mbed_mpu_enable_ram_xn(bool enable); diff --git a/hal/pinmap.h b/hal/pinmap.h index 4b3db4afa4b..d94892a7c68 100644 --- a/hal/pinmap.h +++ b/hal/pinmap.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/port_api.h b/hal/port_api.h index 6e718c54a08..48bd0d27f1a 100644 --- a/hal/port_api.h +++ b/hal/port_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/pwmout_api.h b/hal/pwmout_api.h index 00588c00926..5ede26df1cd 100644 --- a/hal/pwmout_api.h +++ b/hal/pwmout_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/qspi_api.h b/hal/qspi_api.h index 24ba4735455..561e0afb5cf 100644 --- a/hal/qspi_api.h +++ b/hal/qspi_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/rtc_api.h b/hal/rtc_api.h index b049087968b..5685f881580 100644 --- a/hal/rtc_api.h +++ b/hal/rtc_api.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/serial_api.h b/hal/serial_api.h index 30f100f8c78..1da952a6c71 100644 --- a/hal/serial_api.h +++ b/hal/serial_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/sleep_api.h b/hal/sleep_api.h index bc484d6f1bf..1dd2d0dfcdf 100644 --- a/hal/sleep_api.h +++ b/hal/sleep_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/spi_api.h b/hal/spi_api.h index 90117c822bd..423f113c782 100644 --- a/hal/spi_api.h +++ b/hal/spi_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/spm_api.h b/hal/spm_api.h index 1b05247643c..593fbff1c46 100644 --- a/hal/spm_api.h +++ b/hal/spm_api.h @@ -1,3 +1,6 @@ + +/** \addtogroup hal */ +/** @{*/ /* Copyright (c) 2017-2018 ARM Limited * * SPDX-License-Identifier: Apache-2.0 @@ -18,14 +21,6 @@ #ifndef __SPM_API_H__ #define __SPM_API_H__ - -/** @addtogroup SPM - * The Secure Partition Manager (SPM) is responsible for isolating software in - * partitions, managing the execution of software within partitions and - * providing IPC between partitions. - * @{ - */ - #include #include @@ -34,8 +29,8 @@ extern "C" { #endif -/** @addtogroup HAL-SPE - * The HAL functions for SPE. +/** @defgroup SPM-HAL SPM HAL API + * The HAL functions for PSA SPM * @{ */ @@ -92,12 +87,12 @@ void spm_hal_mailbox_notify(void); #endif // defined(COMPONENT_SPM_MAILBOX) -/** @}*/ // end of HAL-SPE group +/** @}*/ #ifdef __cplusplus } #endif -/** @}*/ // end of SPM group - #endif // __SPM_API_H__ + +/** @}*/ diff --git a/hal/ticker_api.h b/hal/ticker_api.h index 98b2786ee35..f7615e4aae9 100644 --- a/hal/ticker_api.h +++ b/hal/ticker_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/trng_api.h b/hal/trng_api.h index 946c25331c2..76770941033 100644 --- a/hal/trng_api.h +++ b/hal/trng_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/us_ticker_api.h b/hal/us_ticker_api.h index e27c8051f4d..ca43e74dc72 100644 --- a/hal/us_ticker_api.h +++ b/hal/us_ticker_api.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/ATCmdParser.cpp b/platform/ATCmdParser.cpp index 0108e8bb189..7ff2ae00ac9 100644 --- a/platform/ATCmdParser.cpp +++ b/platform/ATCmdParser.cpp @@ -1,4 +1,5 @@ /* Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/ATCmdParser.h b/platform/ATCmdParser.h index 0ff4fbd1c5c..ee608138348 100644 --- a/platform/ATCmdParser.h +++ b/platform/ATCmdParser.h @@ -1,4 +1,5 @@ /* Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -170,7 +171,7 @@ class ATCmdParser : private NonCopyable { /** * Allows traces from modem to be turned on or off * - * @param on Set as 1 to turn on traces and vice versa. + * @param on Set as 1 to turn on traces and 0 to disable traces. */ void debug_on(uint8_t on) { @@ -183,7 +184,7 @@ class ATCmdParser : private NonCopyable { * * Allows traces from modem to be turned on or off * - * @param on Set as 1 to turn on traces and vice versa. + * @param on Set as 1 to turn on traces and 0 to disable traces. */ MBED_DEPRECATED_SINCE("mbed-os-5.5.0", "Replaced with debug_on for consistency") void debugOn(uint8_t on) diff --git a/platform/CThunk.h b/platform/CThunk.h index 0610d5a111a..5bd6998ea61 100644 --- a/platform/CThunk.h +++ b/platform/CThunk.h @@ -13,6 +13,7 @@ * - ideally suited for class object receiving interrupts (NVIC_SetVector) * * Copyright (c) 2014-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/CThunkBase.cpp b/platform/CThunkBase.cpp index 39ebea47b61..ce9271bc535 100644 --- a/platform/CThunkBase.cpp +++ b/platform/CThunkBase.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/CThunkBase.h b/platform/CThunkBase.h index ec54a22d4ff..c2ae68c28c3 100644 --- a/platform/CThunkBase.h +++ b/platform/CThunkBase.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/CallChain.cpp b/platform/CallChain.cpp index 6a72d932a40..db8be12f7ec 100644 --- a/platform/CallChain.cpp +++ b/platform/CallChain.cpp @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Suppress deprecation warnings since this whole // class is deprecated already diff --git a/platform/CallChain.h b/platform/CallChain.h index 3fe17231b09..0f35dc1b5e7 100644 --- a/platform/CallChain.h +++ b/platform/CallChain.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/Callback.h b/platform/Callback.h index 1a6b6751bcf..52f6732c71d 100644 --- a/platform/Callback.h +++ b/platform/Callback.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/CircularBuffer.h b/platform/CircularBuffer.h index 2eb5fd5a04d..d1b15e7d5e7 100644 --- a/platform/CircularBuffer.h +++ b/platform/CircularBuffer.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/CriticalSectionLock.h b/platform/CriticalSectionLock.h index f654f5d26ca..cf861f93a2d 100644 --- a/platform/CriticalSectionLock.h +++ b/platform/CriticalSectionLock.h @@ -1,6 +1,6 @@ /* - * PackageLicenseDeclared: Apache-2.0 * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/DeepSleepLock.h b/platform/DeepSleepLock.h index b383770b9a6..37aa98376ee 100644 --- a/platform/DeepSleepLock.h +++ b/platform/DeepSleepLock.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/DirHandle.h b/platform/DirHandle.h index 47e4b9a449b..859d833428e 100644 --- a/platform/DirHandle.h +++ b/platform/DirHandle.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileBase.cpp b/platform/FileBase.cpp index 5ee1a98c0d2..7a6f0a32b71 100644 --- a/platform/FileBase.cpp +++ b/platform/FileBase.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileBase.h b/platform/FileBase.h index 25b650145bf..68b74ed9682 100644 --- a/platform/FileBase.h +++ b/platform/FileBase.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileHandle.cpp b/platform/FileHandle.cpp index c8cd9032a74..be8b9cef45d 100644 --- a/platform/FileHandle.cpp +++ b/platform/FileHandle.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileHandle.h b/platform/FileHandle.h index c9aea35833f..07010df4953 100644 --- a/platform/FileHandle.h +++ b/platform/FileHandle.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileLike.h b/platform/FileLike.h index e75be50bfd3..f4e1911f237 100644 --- a/platform/FileLike.h +++ b/platform/FileLike.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FilePath.cpp b/platform/FilePath.cpp index 92511d1b687..18cb871986b 100644 --- a/platform/FilePath.cpp +++ b/platform/FilePath.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FilePath.h b/platform/FilePath.h index 6183ffbcefe..19f1c1b94ab 100644 --- a/platform/FilePath.h +++ b/platform/FilePath.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileSystemHandle.cpp b/platform/FileSystemHandle.cpp index 0ce6f1603e7..24dc0b2acb6 100644 --- a/platform/FileSystemHandle.cpp +++ b/platform/FileSystemHandle.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileSystemHandle.h b/platform/FileSystemHandle.h index bfdf667dc6c..d5bd217fc02 100644 --- a/platform/FileSystemHandle.h +++ b/platform/FileSystemHandle.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FileSystemLike.h b/platform/FileSystemLike.h index abcd6358d39..ce6df438813 100644 --- a/platform/FileSystemLike.h +++ b/platform/FileSystemLike.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/FunctionPointer.h b/platform/FunctionPointer.h index c17f53a9a96..90a808015ca 100644 --- a/platform/FunctionPointer.h +++ b/platform/FunctionPointer.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/LocalFileSystem.cpp b/platform/LocalFileSystem.cpp index c5c7d33dff7..3a5a09cfa85 100644 --- a/platform/LocalFileSystem.cpp +++ b/platform/LocalFileSystem.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/LocalFileSystem.h b/platform/LocalFileSystem.h index 78ca4993750..7314320d449 100644 --- a/platform/LocalFileSystem.h +++ b/platform/LocalFileSystem.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/NonCopyable.h b/platform/NonCopyable.h index 4322e4149ae..70f76e71776 100644 --- a/platform/NonCopyable.h +++ b/platform/NonCopyable.h @@ -1,4 +1,5 @@ /* Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/PlatformMutex.h b/platform/PlatformMutex.h index ac06a81855c..a63672dc0ce 100644 --- a/platform/PlatformMutex.h +++ b/platform/PlatformMutex.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/ScopedLock.h b/platform/ScopedLock.h index 8e9018c178d..d6d1854d9ac 100644 --- a/platform/ScopedLock.h +++ b/platform/ScopedLock.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/SharedPtr.h b/platform/SharedPtr.h index d2735072558..28111f0936d 100644 --- a/platform/SharedPtr.h +++ b/platform/SharedPtr.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -144,10 +145,13 @@ class SharedPtr { // Clean up by decrementing counter decrement_counter(); + _ptr = ptr; if (ptr != NULL) { // Allocate counter on the heap, so it can be shared _counter = new uint32_t; *_counter = 1; + } else { + _counter = NULL; } } @@ -225,6 +229,8 @@ class SharedPtr { /** * @brief Decrement reference counter. * @details If count reaches zero, free counter and delete object pointed to. + * Does not modify our own pointers - assumption is they will be overwritten + * or destroyed immediately afterwards. */ void decrement_counter() { @@ -232,9 +238,7 @@ class SharedPtr { uint32_t new_value = core_util_atomic_decr_u32(_counter, 1); if (new_value == 0) { delete _counter; - _counter = NULL; delete _ptr; - _ptr = NULL; } } } diff --git a/platform/SingletonPtr.h b/platform/SingletonPtr.h index 81791ca93ff..82b7bcf50a8 100644 --- a/platform/SingletonPtr.h +++ b/platform/SingletonPtr.h @@ -7,6 +7,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/Span.h b/platform/Span.h index 04ef2e1ab05..9859402aa27 100644 --- a/platform/Span.h +++ b/platform/Span.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/Stream.cpp b/platform/Stream.cpp index e395425ae77..bdc7af91770 100644 --- a/platform/Stream.cpp +++ b/platform/Stream.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -146,7 +147,7 @@ int Stream::printf(const char *format, ...) lock(); std::va_list arg; va_start(arg, format); - fflush(_file); + std::fseek(_file, 0, SEEK_CUR); int r = vfprintf(_file, format, arg); va_end(arg); unlock(); @@ -168,7 +169,7 @@ int Stream::scanf(const char *format, ...) int Stream::vprintf(const char *format, std::va_list args) { lock(); - fflush(_file); + std::fseek(_file, 0, SEEK_CUR); int r = vfprintf(_file, format, args); unlock(); return r; diff --git a/platform/Stream.h b/platform/Stream.h index bd705c49662..e8783038f43 100644 --- a/platform/Stream.h +++ b/platform/Stream.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/Transaction.h b/platform/Transaction.h index 1d8d6ff9de5..6917c4d12ba 100644 --- a/platform/Transaction.h +++ b/platform/Transaction.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_alloc_wrappers.cpp b/platform/mbed_alloc_wrappers.cpp index 44521573f7c..1d06a4873f5 100644 --- a/platform/mbed_alloc_wrappers.cpp +++ b/platform/mbed_alloc_wrappers.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_application.c b/platform/mbed_application.c index eab55bc1cdc..c23520b0b3d 100644 --- a/platform/mbed_application.c +++ b/platform/mbed_application.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ #include #include "device.h" #include "platform/mbed_application.h" -#include "hal/mpu_api.h" +#include "platform/mbed_mpu_mgmt.h" #if MBED_APPLICATION_SUPPORT @@ -68,7 +69,18 @@ void mbed_start_application(uintptr_t address) SysTick->CTRL = 0x00000000; powerdown_nvic(); powerdown_scb(address); - mbed_mpu_free(); + mbed_mpu_manager_deinit(); + +#ifdef MBED_DEBUG + // Configs to make debugging easier +#ifdef SCnSCB_ACTLR_DISDEFWBUF_Msk + // Disable write buffer to make BusFaults (eg write to ROM via NULL pointer) precise. + // Possible on Cortex-M3 and M4, not on M0, M7 or M33. + // Would be less necessary if ROM was write-protected in MPU to give a + // precise MemManage exception. + SCnSCB->ACTLR |= SCnSCB_ACTLR_DISDEFWBUF_Msk; +#endif +#endif sp = *((void **)address + 0); pc = *((void **)address + 1); diff --git a/platform/mbed_application.h b/platform/mbed_application.h index ba2aebaecb9..1cccfb83bc7 100644 --- a/platform/mbed_application.h +++ b/platform/mbed_application.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_assert.c b/platform/mbed_assert.c index bc1934461ad..5ed490a1105 100644 --- a/platform/mbed_assert.c +++ b/platform/mbed_assert.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_assert.h b/platform/mbed_assert.h index 4976c11b45f..a748f3acebf 100644 --- a/platform/mbed_assert.h +++ b/platform/mbed_assert.h @@ -7,6 +7,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_board.c b/platform/mbed_board.c index 59635d1d33c..9982182940e 100644 --- a/platform/mbed_board.c +++ b/platform/mbed_board.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +15,7 @@ * limitations under the License. */ #include +#include #include "hal/gpio_api.h" #include "platform/mbed_wait_api.h" #include "platform/mbed_toolchain.h" @@ -32,16 +34,16 @@ WEAK MBED_NORETURN void mbed_die(void) while (1) { for (int i = 0; i < 4; ++i) { gpio_write(&led_err, 1); - wait_ms(150); + wait_us(150000); gpio_write(&led_err, 0); - wait_ms(150); + wait_us(150000); } for (int i = 0; i < 4; ++i) { gpio_write(&led_err, 1); - wait_ms(400); + wait_us(400000); gpio_write(&led_err, 0); - wait_ms(400); + wait_us(400000); } } } @@ -58,7 +60,7 @@ void mbed_error_vprintf(const char *format, va_list arg) { char buffer[132]; int size = vsnprintf(buffer, sizeof buffer, format, arg); - if (size >= sizeof buffer) { + if ((unsigned int)size >= sizeof buffer) { /* Output was truncated - indicate by overwriting tail of buffer * with ellipsis, newline and null terminator. */ diff --git a/platform/mbed_critical.h b/platform/mbed_critical.h index c4a510ca8ee..28a6396b6d3 100644 --- a/platform/mbed_critical.h +++ b/platform/mbed_critical.h @@ -93,14 +93,14 @@ bool core_util_in_critical_section(void); * A lock-free, primitive atomic flag. * * Emulate C11's atomic_flag. The flag is initially in an indeterminate state - * unless explicitly initialised with CORE_UTIL_ATOMIC_FLAG_INIT. + * unless explicitly initialized with CORE_UTIL_ATOMIC_FLAG_INIT. */ typedef struct core_util_atomic_flag { uint8_t _flag; } core_util_atomic_flag; /** - * Initialiser for a core_util_atomic_flag. + * Initializer for a core_util_atomic_flag. * * Example: * ~~~ diff --git a/platform/mbed_debug.h b/platform/mbed_debug.h index 38da79a821f..f560f3db33e 100644 --- a/platform/mbed_debug.h +++ b/platform/mbed_debug.h @@ -8,6 +8,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_error.c b/platform/mbed_error.c index 0faca8b7fc7..b34dfb23d7f 100644 --- a/platform/mbed_error.c +++ b/platform/mbed_error.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,15 +49,14 @@ static core_util_atomic_flag halt_in_progress = CORE_UTIL_ATOMIC_FLAG_INIT; static int error_count = 0; static mbed_error_ctx first_error_ctx = {0}; +static mbed_error_ctx last_error_ctx = {0}; +static mbed_error_hook_t error_hook = NULL; +static mbed_error_status_t handle_error(mbed_error_status_t error_status, unsigned int error_value, const char *filename, int line_number, void *caller); + #if MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED //Global for populating the context in exception handler static mbed_error_ctx *const report_error_ctx = (mbed_error_ctx *)(ERROR_CONTEXT_LOCATION); static bool is_reboot_error_valid = false; -#endif - -static mbed_error_ctx last_error_ctx = {0}; -static mbed_error_hook_t error_hook = NULL; -static mbed_error_status_t handle_error(mbed_error_status_t error_status, unsigned int error_value, const char *filename, int line_number, void *caller); //Helper function to calculate CRC //NOTE: It would have been better to use MbedCRC implementation. But @@ -87,6 +87,7 @@ static unsigned int compute_crc32(const void *data, int datalen) return crc; } +#endif //Helper function to halt the system static MBED_NORETURN void mbed_halt_system(void) @@ -209,26 +210,23 @@ mbed_error_status_t mbed_error_initialize(void) //Read report_error_ctx and check if CRC is correct, and with valid status code if ((report_error_ctx->crc_error_ctx == crc_val) && (report_error_ctx->is_error_processed == 0)) { is_reboot_error_valid = true; - //Report the error info - printf("\n== The system has been rebooted due to a fatal error. ==\n"); //Call the mbed_error_reboot_callback, this enables applications to do some handling before we do the handling mbed_error_reboot_callback(report_error_ctx); //We let the callback reset the error info, so check if its still valid and do the rest only if its still valid. - if (report_error_ctx->error_reboot_count < 0) { + if (report_error_ctx->error_reboot_count > 0) { + + report_error_ctx->is_error_processed = 1;//Set the flag that we already processed this error + crc_val = compute_crc32(report_error_ctx, offsetof(mbed_error_ctx, crc_error_ctx)); + report_error_ctx->crc_error_ctx = crc_val; //Enforce max-reboot only if auto reboot is enabled #if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED if (report_error_ctx->error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX) { - //We have rebooted more than enough, hold the system here. - printf("\n== Reboot count(=%ld) exceeded maximum, system halting ==\n", report_error_ctx->error_reboot_count); mbed_halt_system(); } #endif - report_error_ctx->is_error_processed = 1;//Set the flag that we already processed this error - crc_val = compute_crc32(report_error_ctx, offsetof(mbed_error_ctx, crc_error_ctx)); - report_error_ctx->crc_error_ctx = crc_val; } } } @@ -294,6 +292,13 @@ WEAK MBED_NORETURN mbed_error_status_t mbed_error(mbed_error_status_t error_stat core_util_critical_section_exit(); //We need not call delete_mbed_crc(crc_obj) here as we are going to reset the system anyway, and calling delete while handling a fatal error may cause nested exception #if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED && (MBED_CONF_PLATFORM_ERROR_REBOOT_MAX > 0) +#ifndef NDEBUG + mbed_error_printf("\n= System will be rebooted due to a fatal error =\n"); + if (report_error_ctx->error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX) { + //We have rebooted more than enough, hold the system here. + mbed_error_printf("= Reboot count(=%ld) reached maximum, system will halt after rebooting =\n", report_error_ctx->error_reboot_count); + } +#endif system_reset();//do a system reset to get the system rebooted #endif #endif diff --git a/platform/mbed_error.h b/platform/mbed_error.h index 56355e48e05..4301f2ff67a 100644 --- a/platform/mbed_error.h +++ b/platform/mbed_error.h @@ -6,6 +6,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -791,6 +792,7 @@ typedef enum _mbed_error_code { MBED_DEFINE_SYSTEM_ERROR(AUTHENTICATION_FAILED, 69), /* 325 Authentication Failed */ MBED_DEFINE_SYSTEM_ERROR(RBP_AUTHENTICATION_FAILED, 70), /* 326 Rollback Protection Authentication Failed */ MBED_DEFINE_SYSTEM_ERROR(BLE_USE_INCOMPATIBLE_API, 71), /* 327 Concurrent use of incompatible versions of a BLE API */ + MBED_DEFINE_SYSTEM_ERROR(BLE_ILLEGAL_STATE, 72), /* 328 BLE stack entered illegal state */ //Everytime you add a new system error code, you must update //Error documentation under Handbook to capture the info on @@ -947,7 +949,7 @@ typedef void (*mbed_error_hook_t)(const mbed_error_ctx *error_ctx); * it will auto-reboot the system(if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED is enabled) after capturing the * error info in special crash data RAM region. Once rebooted, MbedOS initialization routines will call this function with a pointer to * the captured mbed_error_ctx structure. If application implementation needs to receive this callback, mbed_error_reboot_callback - * function should be overriden with custom implementation. By default it's defined as a WEAK function in mbed_error.c. + * function should be overridden with custom implementation. By default it's defined as a WEAK function in mbed_error.c. * Note that this callback will be invoked before the system starts executing main() function. So the implementation of * the callback should be aware any resource limitations/availability of resources which are yet to be initialized by application main(). * diff --git a/platform/mbed_error_hist.c b/platform/mbed_error_hist.c index 411ae097ca0..9a618e5ddae 100644 --- a/platform/mbed_error_hist.c +++ b/platform/mbed_error_hist.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_error_hist.h b/platform/mbed_error_hist.h index e83315bfec1..791b562b655 100644 --- a/platform/mbed_error_hist.h +++ b/platform/mbed_error_hist.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_interface.c b/platform/mbed_interface.c index b1a43697e9b..ddacbb99ae0 100644 --- a/platform/mbed_interface.c +++ b/platform/mbed_interface.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_interface.h b/platform/mbed_interface.h index 241cd7be8d5..dd20080ed21 100644 --- a/platform/mbed_interface.h +++ b/platform/mbed_interface.h @@ -8,6 +8,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_lib.json b/platform/mbed_lib.json index 821df0b6728..cd7befa8c32 100644 --- a/platform/mbed_lib.json +++ b/platform/mbed_lib.json @@ -128,6 +128,10 @@ "fatal-error-auto-reboot-enabled": { "help": "Setting this to true enables auto-reboot on a fatal error.", "value": false + }, + "use-mpu": { + "help": "Use the MPU if available to fault execution from RAM and writes to ROM. Can be disabled to reduce image size.", + "value": true } }, "target_overrides": { @@ -164,6 +168,10 @@ "crash-capture-enabled": true, "fatal-error-auto-reboot-enabled": true }, + "NUCLEO_H743ZI": { + "crash-capture-enabled": true, + "fatal-error-auto-reboot-enabled": true + }, "NUCLEO_F439ZI": { "crash-capture-enabled": true, "fatal-error-auto-reboot-enabled": true diff --git a/platform/mbed_mem_trace.cpp b/platform/mbed_mem_trace.cpp index f34453cfd30..8ba4dd80956 100644 --- a/platform/mbed_mem_trace.cpp +++ b/platform/mbed_mem_trace.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_mem_trace.h b/platform/mbed_mem_trace.h index a1b2f10f877..28760b86074 100644 --- a/platform/mbed_mem_trace.h +++ b/platform/mbed_mem_trace.h @@ -4,6 +4,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_mktime.c b/platform/mbed_mktime.c index 68e3b9f62d6..7c282325a44 100644 --- a/platform/mbed_mktime.c +++ b/platform/mbed_mktime.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_mktime.h b/platform/mbed_mktime.h index eed21a9fc3f..58b76249696 100644 --- a/platform/mbed_mktime.h +++ b/platform/mbed_mktime.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2017-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_mpu_mgmt.c b/platform/mbed_mpu_mgmt.c index fa8bc545cc3..d34eb30aa5e 100644 --- a/platform/mbed_mpu_mgmt.c +++ b/platform/mbed_mpu_mgmt.c @@ -16,20 +16,19 @@ #include "platform/mbed_mpu_mgmt.h" #include "platform/mbed_critical.h" -#include "platform/mbed_error.h" +#include "platform/mbed_assert.h" #include "hal/mpu_api.h" #include +#if DEVICE_MPU && MBED_CONF_PLATFORM_USE_MPU + static uint16_t mem_xn_lock; static uint16_t mem_wn_lock; void mbed_mpu_manager_lock_ram_execution() { core_util_critical_section_enter(); - if (mem_xn_lock == USHRT_MAX) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_OVERFLOW), "Ram execute never lock overflow (> USHRT_MAX)", mem_xn_lock); - } + MBED_ASSERT(mem_xn_lock != USHRT_MAX); if (mem_xn_lock == 0) { mbed_mpu_enable_ram_xn(false); } @@ -40,10 +39,7 @@ void mbed_mpu_manager_lock_ram_execution() void mbed_mpu_manager_unlock_ram_execution() { core_util_critical_section_enter(); - if (mem_xn_lock == 0) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_UNDERFLOW), "Ram execute never lock underflow (< 0)", mem_xn_lock); - } + MBED_ASSERT(mem_xn_lock != 0); mem_xn_lock--; if (mem_xn_lock == 0) { mbed_mpu_enable_ram_xn(true); @@ -54,10 +50,7 @@ void mbed_mpu_manager_unlock_ram_execution() void mbed_mpu_manager_lock_rom_write() { core_util_critical_section_enter(); - if (mem_wn_lock == USHRT_MAX) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_OVERFLOW), "Rom write never lock overflow (> USHRT_MAX)", mem_wn_lock); - } + MBED_ASSERT(mem_wn_lock != USHRT_MAX); if (mem_wn_lock == 0) { mbed_mpu_enable_rom_wn(false); } @@ -68,13 +61,12 @@ void mbed_mpu_manager_lock_rom_write() void mbed_mpu_manager_unlock_rom_write() { core_util_critical_section_enter(); - if (mem_wn_lock == 0) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_UNDERFLOW), "Rom write never lock underflow (< 0)", mem_wn_lock); - } + MBED_ASSERT(mem_wn_lock != 0); mem_wn_lock--; if (mem_wn_lock == 0) { mbed_mpu_enable_rom_wn(true); } core_util_critical_section_exit(); } + +#endif diff --git a/platform/mbed_mpu_mgmt.h b/platform/mbed_mpu_mgmt.h index 7af043f586e..8364941d79e 100644 --- a/platform/mbed_mpu_mgmt.h +++ b/platform/mbed_mpu_mgmt.h @@ -23,15 +23,20 @@ #ifndef MBED_MPU_MGMT_H #define MBED_MPU_MGMT_H -#include "hal/sleep_api.h" #include "mbed_toolchain.h" -#include "hal/ticker_api.h" +#include "hal/mpu_api.h" #include #ifdef __cplusplus extern "C" { #endif +#if (DEVICE_MPU && MBED_CONF_PLATFORM_USE_MPU) || defined(DOXYGEN_ONLY) + +#define mbed_mpu_manager_init() mbed_mpu_init() + +#define mbed_mpu_manager_deinit() mbed_mpu_free() + /** Lock ram execute never mode off * * This disables the MPU's execute never ram protection and allows @@ -80,6 +85,22 @@ void mbed_mpu_manager_lock_rom_write(void); */ void mbed_mpu_manager_unlock_rom_write(void); +#else + +#define mbed_mpu_manager_init() (void)0 + +#define mbed_mpu_manager_deinit() (void)0 + +#define mbed_mpu_manager_lock_ram_execution() (void)0 + +#define mbed_mpu_manager_unlock_ram_execution() (void)0 + +#define mbed_mpu_manager_lock_rom_write() (void)0 + +#define mbed_mpu_manager_unlock_rom_write() (void)0 + +#endif + #ifdef __cplusplus } #endif diff --git a/platform/mbed_poll.cpp b/platform/mbed_poll.cpp index da9e825d8a1..a1e7627616c 100644 --- a/platform/mbed_poll.cpp +++ b/platform/mbed_poll.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_poll.h b/platform/mbed_poll.h index f9c894c21f6..43d7cce57c5 100644 --- a/platform/mbed_poll.h +++ b/platform/mbed_poll.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_power_mgmt.h b/platform/mbed_power_mgmt.h index ba0d1bda394..3b8791f2b1a 100644 --- a/platform/mbed_power_mgmt.h +++ b/platform/mbed_power_mgmt.h @@ -7,6 +7,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_preprocessor.h b/platform/mbed_preprocessor.h index 7df3bb68125..42685cda1c3 100644 --- a/platform/mbed_preprocessor.h +++ b/platform/mbed_preprocessor.h @@ -7,6 +7,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_retarget.cpp b/platform/mbed_retarget.cpp index 7e8ed8725d6..276701f70b2 100644 --- a/platform/mbed_retarget.cpp +++ b/platform/mbed_retarget.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_retarget.h b/platform/mbed_retarget.h index d61f3c8c653..9eb27dca6ad 100644 --- a/platform/mbed_retarget.h +++ b/platform/mbed_retarget.h @@ -1,6 +1,7 @@ /* * mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_rtc_time.cpp b/platform/mbed_rtc_time.cpp index 7ec6171b4d7..37cb1cf526e 100644 --- a/platform/mbed_rtc_time.cpp +++ b/platform/mbed_rtc_time.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_rtc_time.h b/platform/mbed_rtc_time.h index f1b04c3d68b..1dc021c806c 100644 --- a/platform/mbed_rtc_time.h +++ b/platform/mbed_rtc_time.h @@ -7,6 +7,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_sdk_boot.c b/platform/mbed_sdk_boot.c index 32658ef60c4..9f3aef1899f 100644 --- a/platform/mbed_sdk_boot.c +++ b/platform/mbed_sdk_boot.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_semihost_api.c b/platform/mbed_semihost_api.c index f655862c3a0..c9975519fc6 100644 --- a/platform/mbed_semihost_api.c +++ b/platform/mbed_semihost_api.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_semihost_api.h b/platform/mbed_semihost_api.h index 2f20c8cbb24..dde34f8a53a 100644 --- a/platform/mbed_semihost_api.h +++ b/platform/mbed_semihost_api.h @@ -1,6 +1,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/hal/mbed_sleep_manager.c b/platform/mbed_sleep_manager.c similarity index 74% rename from hal/mbed_sleep_manager.c rename to platform/mbed_sleep_manager.c index 03f678e826c..c792c783def 100644 --- a/hal/mbed_sleep_manager.c +++ b/platform/mbed_sleep_manager.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,19 +15,18 @@ * limitations under the License. */ -#include "platform/mbed_assert.h" -#include "platform/mbed_power_mgmt.h" -#include "platform/mbed_critical.h" -#include "sleep_api.h" -#include "platform/mbed_error.h" -#include "platform/mbed_debug.h" -#include "platform/mbed_stats.h" -#include "us_ticker_api.h" -#include "lp_ticker_api.h" +#include "mbed_power_mgmt.h" +#include "mbed_interface.h" +#include "mbed_critical.h" +#include "mbed_assert.h" +#include "mbed_error.h" +#include "mbed_stats.h" + +#include "hal/us_ticker_api.h" +#include "hal/lp_ticker_api.h" + #include #include -#include "platform/mbed_stats.h" - #if DEVICE_SLEEP @@ -35,13 +35,13 @@ static uint16_t deep_sleep_lock = 0U; static us_timestamp_t sleep_time = 0; static us_timestamp_t deep_sleep_time = 0; -#if defined(MBED_CPU_STATS_ENABLED) && defined(DEVICE_LPTICKER) +#if defined(MBED_CPU_STATS_ENABLED) && DEVICE_LPTICKER static ticker_data_t *sleep_ticker = NULL; #endif static inline us_timestamp_t read_us(void) { -#if defined(MBED_CPU_STATS_ENABLED) && defined(DEVICE_LPTICKER) +#if defined(MBED_CPU_STATS_ENABLED) && DEVICE_LPTICKER if (NULL == sleep_ticker) { sleep_ticker = (ticker_data_t *)get_lp_ticker_data(); } @@ -73,11 +73,14 @@ us_timestamp_t mbed_time_deepsleep(void) #ifdef MBED_SLEEP_TRACING_ENABLED +// Length of the identifier extracted from the driver name to store for logging. +#define IDENTIFIER_WIDTH 15 + // Number of drivers that can be stored in the structure #define STATISTIC_COUNT 10 typedef struct sleep_statistic { - const char *identifier; + char identifier[IDENTIFIER_WIDTH]; uint8_t count; } sleep_statistic_t; @@ -85,8 +88,13 @@ static sleep_statistic_t sleep_stats[STATISTIC_COUNT]; static sleep_statistic_t *sleep_tracker_find(const char *const filename) { + char temp[IDENTIFIER_WIDTH]; + strncpy(temp, filename, IDENTIFIER_WIDTH); + temp[IDENTIFIER_WIDTH - 1] = '\0'; + + // Search for the a driver matching the current name and return it's index for (int i = 0; i < STATISTIC_COUNT; ++i) { - if (sleep_stats[i].identifier == filename) { + if (strcmp(sleep_stats[i].identifier, temp) == 0) { return &sleep_stats[i]; } } @@ -96,33 +104,39 @@ static sleep_statistic_t *sleep_tracker_find(const char *const filename) static sleep_statistic_t *sleep_tracker_add(const char *const filename) { + char temp[IDENTIFIER_WIDTH]; + strncpy(temp, filename, IDENTIFIER_WIDTH); + temp[IDENTIFIER_WIDTH - 1] = '\0'; + for (int i = 0; i < STATISTIC_COUNT; ++i) { - if (sleep_stats[i].identifier == NULL) { - sleep_stats[i].identifier = filename; + if (sleep_stats[i].identifier[0] == '\0') { + core_util_critical_section_enter(); + strncpy(sleep_stats[i].identifier, temp, sizeof(temp)); + core_util_critical_section_exit(); return &sleep_stats[i]; } } - debug("No free indexes left to use in mbed sleep tracker.\r\n"); + mbed_error_printf("No free indexes left to use in mbed sleep tracker.\r\n"); return NULL; } static void sleep_tracker_print_stats(void) { - debug("Sleep locks held:\r\n"); + mbed_error_printf("Sleep locks held:\r\n"); for (int i = 0; i < STATISTIC_COUNT; ++i) { if (sleep_stats[i].count == 0) { continue; } - if (sleep_stats[i].identifier == NULL) { + if (sleep_stats[i].identifier[0] == '\0') { return; } - debug("[id: %s, count: %u]\r\n", sleep_stats[i].identifier, - sleep_stats[i].count); + mbed_error_printf("[id: %s, count: %u]\r\n", sleep_stats[i].identifier, + sleep_stats[i].count); } } @@ -137,7 +151,7 @@ void sleep_tracker_lock(const char *const filename, int line) core_util_atomic_incr_u8(&stat->count, 1); - debug("LOCK: %s, ln: %i, lock count: %u\r\n", filename, line, deep_sleep_lock); + mbed_error_printf("LOCK: %s, ln: %i, lock count: %u\r\n", filename, line, deep_sleep_lock); } void sleep_tracker_unlock(const char *const filename, int line) @@ -146,13 +160,13 @@ void sleep_tracker_unlock(const char *const filename, int line) // Entry for this driver does not exist, something went wrong. if (stat == NULL) { - debug("Unlocking sleep for driver that was not previously locked: %s, ln: %i\r\n", filename, line); + mbed_error_printf("Unlocking sleep for driver that was not previously locked: %s, ln: %i\r\n", filename, line); return; } core_util_atomic_decr_u8(&stat->count, 1); - debug("UNLOCK: %s, ln: %i, lock count: %u\r\n", filename, line, deep_sleep_lock); + mbed_error_printf("UNLOCK: %s, ln: %i, lock count: %u\r\n", filename, line, deep_sleep_lock); } #endif // MBED_SLEEP_TRACING_ENABLED diff --git a/platform/mbed_stats.c b/platform/mbed_stats.c index b4a3d3de32a..ffc464c6de2 100644 --- a/platform/mbed_stats.c +++ b/platform/mbed_stats.c @@ -13,7 +13,7 @@ #warning Statistics are currently not supported without the rtos. #endif -#if defined(MBED_CPU_STATS_ENABLED) && (!defined(DEVICE_LPTICKER) || !defined(DEVICE_SLEEP)) +#if defined(MBED_CPU_STATS_ENABLED) && (!DEVICE_LPTICKER || !DEVICE_SLEEP) #warning CPU statistics are not supported without low power timer support. #endif @@ -21,7 +21,7 @@ void mbed_stats_cpu_get(mbed_stats_cpu_t *stats) { MBED_ASSERT(stats != NULL); memset(stats, 0, sizeof(mbed_stats_cpu_t)); -#if defined(MBED_CPU_STATS_ENABLED) && defined(DEVICE_LPTICKER) && defined(DEVICE_SLEEP) +#if defined(MBED_CPU_STATS_ENABLED) && DEVICE_LPTICKER && DEVICE_SLEEP stats->uptime = mbed_uptime(); stats->idle_time = mbed_time_idle(); stats->sleep_time = mbed_time_sleep(); diff --git a/platform/mbed_stats.h b/platform/mbed_stats.h index bb6617334f6..1f93f42d952 100644 --- a/platform/mbed_stats.h +++ b/platform/mbed_stats.h @@ -7,6 +7,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2016-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -155,14 +156,14 @@ typedef enum { * struct mbed_stats_sys_t definition */ typedef struct { - uint32_t os_version; /**< Mbed OS version (populated only for tagged releases) */ - uint32_t cpu_id; /**< CPUID register data (Cortex-M only supported) */ - mbed_compiler_id_t compiler_id; /**< Compiler ID \ref mbed_compiler_id_t */ - uint32_t compiler_version; /**< Compiler version */ - uint32_t ram_start[MBED_MAX_MEM_REGIONS];/**< Start addresses of all internal RAM memories */ - uint32_t ram_size[MBED_MAX_MEM_REGIONS];/**< Size of all internal RAM memories in target */ - uint32_t rom_start[MBED_MAX_MEM_REGIONS];/**< Start addresses of all internal ROM memories */ - uint32_t rom_size[MBED_MAX_MEM_REGIONS];/**< Size of all internal ROM memories in target */ + uint32_t os_version; /**< Mbed OS version (populated only for tagged releases) */ + uint32_t cpu_id; /**< CPUID register data (Cortex-M only supported) */ + mbed_compiler_id_t compiler_id; /**< Compiler ID \ref mbed_compiler_id_t */ + uint32_t compiler_version; /**< Compiler version */ + uint32_t ram_start[MBED_MAX_MEM_REGIONS]; /**< Start addresses of all internal RAM memories */ + uint32_t ram_size[MBED_MAX_MEM_REGIONS]; /**< Size of all internal RAM memories in target */ + uint32_t rom_start[MBED_MAX_MEM_REGIONS]; /**< Start addresses of all internal ROM memories */ + uint32_t rom_size[MBED_MAX_MEM_REGIONS]; /**< Size of all internal ROM memories in target */ } mbed_stats_sys_t; /** diff --git a/platform/mbed_toolchain.h b/platform/mbed_toolchain.h index fba7d32beda..b36775c5f43 100644 --- a/platform/mbed_toolchain.h +++ b/platform/mbed_toolchain.h @@ -8,6 +8,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_version.h b/platform/mbed_version.h index 650f5396a76..1c32536c1de 100644 --- a/platform/mbed_version.h +++ b/platform/mbed_version.h @@ -7,6 +7,7 @@ */ /* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,21 +30,21 @@ * * @note 99 is default value for development version (master branch) */ -#define MBED_MAJOR_VERSION 99 +#define MBED_MAJOR_VERSION 5 /** MBED_MINOR_VERSION * Mbed OS minor version * * @note 99 is default value for development version (master branch) */ -#define MBED_MINOR_VERSION 99 +#define MBED_MINOR_VERSION 11 /** MBED_PATCH_VERSION * Mbed OS patch version * * @note 99 is default value for development version (master branch) */ -#define MBED_PATCH_VERSION 99 +#define MBED_PATCH_VERSION 5 #define MBED_ENCODE_VERSION(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) diff --git a/platform/mbed_wait_api.h b/platform/mbed_wait_api.h index 92a380ed9da..9402d6050a8 100644 --- a/platform/mbed_wait_api.h +++ b/platform/mbed_wait_api.h @@ -8,6 +8,7 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_wait_api_no_rtos.c b/platform/mbed_wait_api_no_rtos.c index c29ba17217d..d03840e866b 100644 --- a/platform/mbed_wait_api_no_rtos.c +++ b/platform/mbed_wait_api_no_rtos.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/mbed_wait_api_rtos.cpp b/platform/mbed_wait_api_rtos.cpp index f859093900c..f3b987ae699 100644 --- a/platform/mbed_wait_api_rtos.cpp +++ b/platform/mbed_wait_api_rtos.cpp @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,7 +54,7 @@ void wait_ms(int ms) if (core_util_is_isr_active() || !core_util_are_interrupts_enabled()) { #if defined(MBED_TRAP_ERRORS_ENABLED) && MBED_TRAP_ERRORS_ENABLED MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_INVALID_OPERATION), - "Deprecated behavior: milli-sec delay should not be used in interrupt.\n"); + "Deprecated behavior: milli-sec delay should not be used in interrupt.\n"); #else wait_us(ms * 1000); #endif diff --git a/platform/platform.h b/platform/platform.h index a5802ff655e..33a48c94996 100644 --- a/platform/platform.h +++ b/platform/platform.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/toolchain.h b/platform/toolchain.h index 6fbef808cab..cf561fca75e 100644 --- a/platform/toolchain.h +++ b/platform/toolchain.h @@ -3,6 +3,7 @@ /** @{*/ /* mbed Microcontroller Library * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/requirements.txt b/requirements.txt index 49d67828bf6..de08793b177 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,21 +1,23 @@ colorama==0.3.9 -pyserial>=3,<=3.4 +urllib3[secure]==1.23 prettytable==0.7.2 -Jinja2>=2.7.3,<=2.10 -intelhex>=1.3,<=2.2.1 junit-xml==1.8 -pyYAML==3.13 -urllib3[secure]==1.23 +pyyaml==4.2b1 +jsonschema==2.6.0 +future==0.16.0 +six==1.11.0 +mbed-cloud-sdk==2.0.1 requests>=2.20,<2.21 -mbed-ls>=1.5.1,<1.7 -mbed-host-tests>=1.1.2,<=1.5 -mbed-greentea>=0.2.24,<=1.5 +idna>=2,<2.8 +pyserial>=3,<=3.4 +Jinja2>=2.7.3,<=2.10 +intelhex>=1.3,<=2.2.1 +intervaltree>=2,<3 +mbed-ls>=1.5.1,<1.8 +mbed-host-tests>=1.4.4,<1.6 +mbed-greentea>=0.2.24,<1.7 beautifulsoup4>=4,<=4.6.3 fuzzywuzzy>=0.11,<=0.17 pyelftools>=0.24,<=0.25 -jsonschema==2.6.0 -future==0.16.0 -six==1.11.0 git+https://github.com/armmbed/manifest-tool.git@v1.4.6 -mbed-cloud-sdk==2.0.1 -icetea>=1.0.2,<1.1 +icetea>=1.2.1,<1.3 diff --git a/rtos/EventFlags.cpp b/rtos/EventFlags.cpp index 3d6b79321f1..faa3057e3bf 100644 --- a/rtos/EventFlags.cpp +++ b/rtos/EventFlags.cpp @@ -62,14 +62,14 @@ uint32_t EventFlags::get() const return osEventFlagsGet(_id); } -uint32_t EventFlags::wait_all(uint32_t flags, uint32_t timeout, bool clear) +uint32_t EventFlags::wait_all(uint32_t flags, uint32_t millisec, bool clear) { - return wait(flags, osFlagsWaitAll, timeout, clear); + return wait(flags, osFlagsWaitAll, millisec, clear); } -uint32_t EventFlags::wait_any(uint32_t flags, uint32_t timeout, bool clear) +uint32_t EventFlags::wait_any(uint32_t flags, uint32_t millisec, bool clear) { - return wait(flags, osFlagsWaitAny, timeout, clear); + return wait(flags, osFlagsWaitAny, millisec, clear); } EventFlags::~EventFlags() @@ -77,13 +77,13 @@ EventFlags::~EventFlags() osEventFlagsDelete(_id); } -uint32_t EventFlags::wait(uint32_t flags, uint32_t opt, uint32_t timeout, bool clear) +uint32_t EventFlags::wait(uint32_t flags, uint32_t opt, uint32_t millisec, bool clear) { if (clear == false) { opt |= osFlagsNoClear; } - return osEventFlagsWait(_id, flags, opt, timeout); + return osEventFlagsWait(_id, flags, opt, millisec); } } diff --git a/rtos/EventFlags.h b/rtos/EventFlags.h index a448807459e..bac58ea5889 100644 --- a/rtos/EventFlags.h +++ b/rtos/EventFlags.h @@ -87,23 +87,23 @@ class EventFlags : private mbed::NonCopyable { /** Wait for all of the specified event flags to become signaled. @param flags the flags to wait for (default: 0 -- no flags). - @param timeout timeout value or 0 in case of no time-out (default: osWaitForever). + @param millisec timeout value (default: osWaitForever). @param clear clear specified event flags after waiting for them (default: true). @return event flags before clearing or error code if highest bit set (see @a osFlagsError for details). - @note You may call this function from ISR context if the timeout parameter is set to 0. + @note You may call this function from ISR context if the millisec parameter is set to 0. */ - uint32_t wait_all(uint32_t flags = 0, uint32_t timeout = osWaitForever, bool clear = true); + uint32_t wait_all(uint32_t flags = 0, uint32_t millisec = osWaitForever, bool clear = true); /** Wait for any of the specified event flags to become signaled. @param flags the flags to wait for (default: 0 -- no flags). - @param timeout timeout value or 0 in case of no timeout (default: osWaitForever). + @param millisec timeout value (default: osWaitForever). @param clear clear specified event flags after waiting for them (default: true). @return event flags before clearing or error code if highest bit set (see @a osFlagsError for details). - @note This function may be called from ISR context if the timeout parameter is set to 0. + @note This function may be called from ISR context if the millisec parameter is set to 0. */ - uint32_t wait_any(uint32_t flags = 0, uint32_t timeout = osWaitForever, bool clear = true); + uint32_t wait_any(uint32_t flags = 0, uint32_t millisec = osWaitForever, bool clear = true); /** EventFlags destructor. @@ -113,7 +113,7 @@ class EventFlags : private mbed::NonCopyable { private: void constructor(const char *name = NULL); - uint32_t wait(uint32_t flags, uint32_t opt, uint32_t timeout, bool clear); + uint32_t wait(uint32_t flags, uint32_t opt, uint32_t millisec, bool clear); osEventFlagsId_t _id; mbed_rtos_storage_event_flags_t _obj_mem; }; diff --git a/rtos/Mail.h b/rtos/Mail.h index 4f8cc7cac1e..70f6380d989 100644 --- a/rtos/Mail.h +++ b/rtos/Mail.h @@ -131,7 +131,7 @@ class Mail : private mbed::NonCopyable > { /** Get a mail from the queue. * - * @param millisec Timeout value or 0 in case of no timeout (default: osWaitForever). + * @param millisec Timeout value (default: osWaitForever). * * @return Event that contains mail information or error code. * @retval osEventMessage Message received. diff --git a/rtos/Mutex.h b/rtos/Mutex.h index a364b1c8dc4..a4955a54c66 100644 --- a/rtos/Mutex.h +++ b/rtos/Mutex.h @@ -95,7 +95,7 @@ class Mutex : private mbed::NonCopyable { @deprecated Do not use this function. This function has been replaced with lock(), trylock() and trylock_for() functions. - @param millisec timeout value or 0 in case of no time-out. + @param millisec timeout value. @return status code that indicates the execution status of the function: @a osOK the mutex has been obtained. @a osErrorTimeout the mutex could not be obtained in the given time. @@ -117,7 +117,7 @@ class Mutex : private mbed::NonCopyable { bool trylock(); /** Try to lock the mutex for a specified time - @param millisec timeout value or 0 in case of no time-out. + @param millisec timeout value. @return true if the mutex was acquired, false otherwise. @note the underlying RTOS may have a limit to the maximum wait time due to internal 32-bit computations, but this is guaranteed to work if the diff --git a/rtos/Queue.h b/rtos/Queue.h index d204a75696e..ff258915bf0 100644 --- a/rtos/Queue.h +++ b/rtos/Queue.h @@ -167,7 +167,7 @@ class Queue : private mbed::NonCopyable > { * share the same priority level, they are retrieved in first-in, first-out * (FIFO) order. * - * @param millisec Timeout value or 0 in case of no time-out. + * @param millisec Timeout value. * (default: osWaitForever). * * @return Event information that includes the message in event. Message diff --git a/rtos/Semaphore.h b/rtos/Semaphore.h index 0bcd788de9e..49e0f1e8331 100644 --- a/rtos/Semaphore.h +++ b/rtos/Semaphore.h @@ -60,7 +60,7 @@ class Semaphore : private mbed::NonCopyable { Semaphore(int32_t count, uint16_t max_count); /** Wait until a Semaphore resource becomes available. - @param millisec timeout value or 0 in case of no time-out. (default: osWaitForever). + @param millisec timeout value. (default: osWaitForever). @return number of available tokens, before taking one; or -1 in case of incorrect parameters @note You may call this function from ISR context if the millisec parameter is set to 0. diff --git a/rtos/TARGET_CORTEX/SysTimer.h b/rtos/TARGET_CORTEX/SysTimer.h index dd6b30cf33c..e4c008e3179 100644 --- a/rtos/TARGET_CORTEX/SysTimer.h +++ b/rtos/TARGET_CORTEX/SysTimer.h @@ -22,7 +22,7 @@ #ifndef MBED_SYS_TIMER_H #define MBED_SYS_TIMER_H -#if defined(DEVICE_LPTICKER) || defined(DOXYGEN_ONLY) +#if DEVICE_LPTICKER || defined(DOXYGEN_ONLY) #include "platform/NonCopyable.h" #include "drivers/TimerEvent.h" diff --git a/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_MICRO/mbed_boot_arm_micro.c b/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_MICRO/mbed_boot_arm_micro.c index c968deb755e..58080a168da 100644 --- a/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_MICRO/mbed_boot_arm_micro.c +++ b/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_MICRO/mbed_boot_arm_micro.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c b/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c index 1475082d8ac..482870f501b 100644 --- a/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c +++ b/rtos/TARGET_CORTEX/TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c b/rtos/TARGET_CORTEX/TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c index 105f7808602..1060f349f69 100644 --- a/rtos/TARGET_CORTEX/TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c +++ b/rtos/TARGET_CORTEX/TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/TOOLCHAIN_IAR/mbed_boot_iar.c b/rtos/TARGET_CORTEX/TOOLCHAIN_IAR/mbed_boot_iar.c index 387b7f8dc1f..0812be93f04 100644 --- a/rtos/TARGET_CORTEX/TOOLCHAIN_IAR/mbed_boot_iar.c +++ b/rtos/TARGET_CORTEX/TOOLCHAIN_IAR/mbed_boot_iar.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/mbed_boot.c b/rtos/TARGET_CORTEX/mbed_boot.c index ccca64aa729..c3f691888b2 100644 --- a/rtos/TARGET_CORTEX/mbed_boot.c +++ b/rtos/TARGET_CORTEX/mbed_boot.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -76,7 +77,7 @@ #include "mbed_toolchain.h" #include "mbed_boot.h" #include "mbed_error.h" -#include "mpu_api.h" +#include "mbed_mpu_mgmt.h" int main(void); static void mbed_cpy_nvic(void); @@ -87,9 +88,7 @@ uint32_t mbed_stack_isr_size = 0; void mbed_init(void) { - mbed_mpu_init(); - mbed_mpu_enable_ram_xn(true); - mbed_mpu_enable_rom_wn(true); + mbed_mpu_manager_init(); mbed_cpy_nvic(); mbed_sdk_init(); mbed_rtos_init(); diff --git a/rtos/TARGET_CORTEX/mbed_boot.h b/rtos/TARGET_CORTEX/mbed_boot.h index 7aef50fe911..aed0cdd7071 100644 --- a/rtos/TARGET_CORTEX/mbed_boot.h +++ b/rtos/TARGET_CORTEX/mbed_boot.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/mbed_rtos1_types.h b/rtos/TARGET_CORTEX/mbed_rtos1_types.h index 73df37f061f..e44fa25edb5 100644 --- a/rtos/TARGET_CORTEX/mbed_rtos1_types.h +++ b/rtos/TARGET_CORTEX/mbed_rtos1_types.h @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2017 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/rtos/TARGET_CORTEX/mbed_rtos_rtx.c b/rtos/TARGET_CORTEX/mbed_rtos_rtx.c index 6e7a11c2e8a..6446ab34b10 100644 --- a/rtos/TARGET_CORTEX/mbed_rtos_rtx.c +++ b/rtos/TARGET_CORTEX/mbed_rtos_rtx.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2018-2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/mbed_rtx_handlers.c b/rtos/TARGET_CORTEX/mbed_rtx_handlers.c index 8bc395cba36..845990c7c14 100644 --- a/rtos/TARGET_CORTEX/mbed_rtx_handlers.c +++ b/rtos/TARGET_CORTEX/mbed_rtx_handlers.c @@ -1,5 +1,6 @@ /* mbed Microcontroller Library * Copyright (c) 2006-2016 ARM Limited + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/rtos/TARGET_CORTEX/mbed_rtx_idle.cpp b/rtos/TARGET_CORTEX/mbed_rtx_idle.cpp index 9c095396d07..aaf23db94ad 100644 --- a/rtos/TARGET_CORTEX/mbed_rtx_idle.cpp +++ b/rtos/TARGET_CORTEX/mbed_rtx_idle.cpp @@ -35,7 +35,7 @@ extern "C" { using namespace mbed; -#if (defined(MBED_TICKLESS) && defined(DEVICE_LPTICKER)) +#if (defined(MBED_TICKLESS) && DEVICE_LPTICKER) #include "rtos/TARGET_CORTEX/SysTimer.h" @@ -138,7 +138,7 @@ extern "C" { core_util_critical_section_exit(); } -#endif // (defined(MBED_TICKLESS) && defined(DEVICE_LPTICKER)) +#endif // (defined(MBED_TICKLESS) && DEVICE_LPTICKER) static void (*idle_hook_fptr)(void) = &default_idle_hook; diff --git a/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M23/irq_armv8mbl_common.S b/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M23/irq_armv8mbl_common.S index ec38438d0cd..3249a947a75 100644 --- a/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M23/irq_armv8mbl_common.S +++ b/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M23/irq_armv8mbl_common.S @@ -297,3 +297,5 @@ Sys_ContextRestore2 Sys_ContextExit BX LR ; Exit from handler + + END diff --git a/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M33/irq_armv8mml_common.S b/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M33/irq_armv8mml_common.S index 629bfe93fb4..755cde63d4f 100644 --- a/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M33/irq_armv8mml_common.S +++ b/rtos/TARGET_CORTEX/rtx5/RTX/Source/TOOLCHAIN_IAR/TARGET_M33/irq_armv8mml_common.S @@ -270,3 +270,5 @@ Sys_ContextRestore2 Sys_ContextExit BX LR ; Exit from handler + + END diff --git a/rtos/ThisThread.h b/rtos/ThisThread.h index c0104fc1e06..ed12fd406cb 100644 --- a/rtos/ThisThread.h +++ b/rtos/ThisThread.h @@ -105,7 +105,7 @@ uint32_t flags_wait_any(uint32_t flags, bool clear = true); /** Wait for all of the specified Thread Flags to become signaled for the current thread. @param flags specifies the flags to wait for - @param millisec timeout value or 0 in case of no time-out. + @param millisec timeout value. @param clear whether to clear the specified flags after waiting for them. (default: true) @return actual thread flags before clearing, which may not satisfy the wait @note You cannot call this function from ISR context. @@ -129,7 +129,7 @@ uint32_t flags_wait_all_until(uint32_t flags, uint64_t millisec, bool clear = tr /** Wait for any of the specified Thread Flags to become signaled for the current thread. @param flags specifies the flags to wait for - @param millisec timeout value or 0 in case of no time-out. + @param millisec timeout value. @param clear whether to clear the specified flags after waiting for them. (default: true) @return actual thread flags before clearing, which may not satisfy the wait @note You cannot call this function from ISR context. diff --git a/rtos/Thread.h b/rtos/Thread.h index 34933e8bc20..34da08aa244 100644 --- a/rtos/Thread.h +++ b/rtos/Thread.h @@ -414,7 +414,7 @@ class Thread : private mbed::NonCopyable { /** Wait for one or more Thread Flags to become signaled for the current RUNNING thread. @param signals wait until all specified signal flags are set or 0 for any single signal flag. - @param millisec timeout value or 0 in case of no time-out. (default: osWaitForever). + @param millisec timeout value. (default: osWaitForever). @return event flag information or error code. @note if @a millisec is set to 0 and flag is no set the event carries osOK value. @note You cannot call this function from ISR context. diff --git a/rtos/rtos.h b/rtos/rtos.h index 22d53024214..c2d4ad5a98b 100644 --- a/rtos/rtos.h +++ b/rtos/rtos.h @@ -42,10 +42,7 @@ using namespace rtos; #endif -/* Get mbed lib version number, as RTOS depends on mbed lib features - like mbed_error, Callback and others. -*/ -#include "mbed.h" +#include "platform/mbed_version.h" #endif diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/TARGET_FVP_MPS2_M4/device/SMM_MPS2.h b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/FVP_MPS2.h similarity index 87% rename from targets/TARGET_ARM_FM/TARGET_FVP_MPS2/TARGET_FVP_MPS2_M4/device/SMM_MPS2.h rename to targets/TARGET_ARM_FM/TARGET_FVP_MPS2/FVP_MPS2.h index 6b2a5ac3d77..d7e7db45c2c 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/TARGET_FVP_MPS2_M4/device/SMM_MPS2.h +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/FVP_MPS2.h @@ -28,13 +28,10 @@ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. -******************************************************************************* -* File: smm_mps2.h -* Release: Version 1.1 *******************************************************************************/ -#ifndef __SMM_MPS2_H -#define __SMM_MPS2_H +#ifndef __FVP_MPS2_H +#define __FVP_MPS2_H #include "peripherallink.h" /* device specific header file */ @@ -482,79 +479,6 @@ typedef struct #define I2S_ERROR_RXERR_Pos 1 #define I2S_ERROR_RXERR_Msk (1UL< CONTROL - // TX Enable - // <0=> TX disabled - // <1=> TX enabled - // TX IRQ Enable - // <0=> TX IRQ disabled - // <1=> TX IRQ enabled - // RX Enable - // <0=> RX disabled - // <1=> RX enabled - // RX IRQ Enable - // <0=> RX IRQ disabled - // <1=> RX IRQ enabled - // TX Buffer Water Level - // <0=> / IRQ triggers when any space available - // <1=> / IRQ triggers when more than 1 space available - // <2=> / IRQ triggers when more than 2 space available - // <3=> / IRQ triggers when more than 3 space available - // <4=> Undefined! - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // RX Buffer Water Level - // <0=> Undefined! - // <1=> / IRQ triggers when less than 1 space available - // <2=> / IRQ triggers when less than 2 space available - // <3=> / IRQ triggers when less than 3 space available - // <4=> / IRQ triggers when less than 4 space available - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // FIFO reset - // <0=> Normal operation - // <1=> FIFO reset - // Audio Codec reset - // <0=> Normal operation - // <1=> Assert audio Codec reset - /*!< Offset: 0x004 STATUS Register (R/ ) */ - __I uint32_t STATUS; // STATUS - // TX Buffer alert - // <0=> TX buffer don't need service yet - // <1=> TX buffer need service - // RX Buffer alert - // <0=> RX buffer don't need service yet - // <1=> RX buffer need service - // TX Buffer Empty - // <0=> TX buffer have data - // <1=> TX buffer empty - // TX Buffer Full - // <0=> TX buffer not full - // <1=> TX buffer full - // RX Buffer Empty - // <0=> RX buffer have data - // <1=> RX buffer empty - // RX Buffer Full - // <0=> RX buffer not full - // <1=> RX buffer full - union { - /*!< Offset: 0x008 Error Status Register (R/ ) */ - __I uint32_t ERROR; // ERROR - // TX error - // <0=> Okay - // <1=> TX overrun/underrun - // RX error - // <0=> Okay - // <1=> RX overrun/underrun - /*!< Offset: 0x008 Error Clear Register ( /W) */ - __O uint32_t ERRORCLR; // ERRORCLR - // TX error - // <0=> Okay - // <1=> Clear TX error - // RX error - // <0=> Okay - // <1=> Clear RX error - }; - /*!< Offset: 0x00C Divide ratio Register (R/W) */ - __IO uint32_t DIVIDE; // Divide ratio for Left/Right clock - // TX error (default 0x80) - /*!< Offset: 0x010 Transmit Buffer ( /W) */ - __O uint32_t TXBUF; // Transmit buffer - // Right channel - // Left channel - /*!< Offset: 0x014 Receive Buffer (R/ ) */ - __I uint32_t RXBUF; // Receive buffer - // Right channel - // Left channel - uint32_t RESERVED1[186]; - __IO uint32_t ITCR; // Integration Test Control Register - // ITEN - // <0=> Normal operation - // <1=> Integration Test mode enable - __O uint32_t ITIP1; // Integration Test Input Register 1 - // SDIN - __O uint32_t ITOP1; // Integration Test Output Register 1 - // SDOUT - // SCLK - // LRCK - // IRQOUT -} MPS2_I2S_TypeDef; - -#define I2S_CONTROL_TXEN_Pos 0 -#define I2S_CONTROL_TXEN_Msk (1UL< CONTROL - // TX Enable - // <0=> TX disabled - // <1=> TX enabled - // TX IRQ Enable - // <0=> TX IRQ disabled - // <1=> TX IRQ enabled - // RX Enable - // <0=> RX disabled - // <1=> RX enabled - // RX IRQ Enable - // <0=> RX IRQ disabled - // <1=> RX IRQ enabled - // TX Buffer Water Level - // <0=> / IRQ triggers when any space available - // <1=> / IRQ triggers when more than 1 space available - // <2=> / IRQ triggers when more than 2 space available - // <3=> / IRQ triggers when more than 3 space available - // <4=> Undefined! - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // RX Buffer Water Level - // <0=> Undefined! - // <1=> / IRQ triggers when less than 1 space available - // <2=> / IRQ triggers when less than 2 space available - // <3=> / IRQ triggers when less than 3 space available - // <4=> / IRQ triggers when less than 4 space available - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // FIFO reset - // <0=> Normal operation - // <1=> FIFO reset - // Audio Codec reset - // <0=> Normal operation - // <1=> Assert audio Codec reset - /*!< Offset: 0x004 STATUS Register (R/ ) */ - __I uint32_t STATUS; // STATUS - // TX Buffer alert - // <0=> TX buffer don't need service yet - // <1=> TX buffer need service - // RX Buffer alert - // <0=> RX buffer don't need service yet - // <1=> RX buffer need service - // TX Buffer Empty - // <0=> TX buffer have data - // <1=> TX buffer empty - // TX Buffer Full - // <0=> TX buffer not full - // <1=> TX buffer full - // RX Buffer Empty - // <0=> RX buffer have data - // <1=> RX buffer empty - // RX Buffer Full - // <0=> RX buffer not full - // <1=> RX buffer full - union { - /*!< Offset: 0x008 Error Status Register (R/ ) */ - __I uint32_t ERROR; // ERROR - // TX error - // <0=> Okay - // <1=> TX overrun/underrun - // RX error - // <0=> Okay - // <1=> RX overrun/underrun - /*!< Offset: 0x008 Error Clear Register ( /W) */ - __O uint32_t ERRORCLR; // ERRORCLR - // TX error - // <0=> Okay - // <1=> Clear TX error - // RX error - // <0=> Okay - // <1=> Clear RX error - }; - /*!< Offset: 0x00C Divide ratio Register (R/W) */ - __IO uint32_t DIVIDE; // Divide ratio for Left/Right clock - // TX error (default 0x80) - /*!< Offset: 0x010 Transmit Buffer ( /W) */ - __O uint32_t TXBUF; // Transmit buffer - // Right channel - // Left channel - /*!< Offset: 0x014 Receive Buffer (R/ ) */ - __I uint32_t RXBUF; // Receive buffer - // Right channel - // Left channel - uint32_t RESERVED1[186]; - __IO uint32_t ITCR; // Integration Test Control Register - // ITEN - // <0=> Normal operation - // <1=> Integration Test mode enable - __O uint32_t ITIP1; // Integration Test Input Register 1 - // SDIN - __O uint32_t ITOP1; // Integration Test Output Register 1 - // SDOUT - // SCLK - // LRCK - // IRQOUT -} MPS2_I2S_TypeDef; - -#define I2S_CONTROL_TXEN_Pos 0 -#define I2S_CONTROL_TXEN_Msk (1UL< CONTROL - // TX Enable - // <0=> TX disabled - // <1=> TX enabled - // TX IRQ Enable - // <0=> TX IRQ disabled - // <1=> TX IRQ enabled - // RX Enable - // <0=> RX disabled - // <1=> RX enabled - // RX IRQ Enable - // <0=> RX IRQ disabled - // <1=> RX IRQ enabled - // TX Buffer Water Level - // <0=> / IRQ triggers when any space available - // <1=> / IRQ triggers when more than 1 space available - // <2=> / IRQ triggers when more than 2 space available - // <3=> / IRQ triggers when more than 3 space available - // <4=> Undefined! - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // RX Buffer Water Level - // <0=> Undefined! - // <1=> / IRQ triggers when less than 1 space available - // <2=> / IRQ triggers when less than 2 space available - // <3=> / IRQ triggers when less than 3 space available - // <4=> / IRQ triggers when less than 4 space available - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // FIFO reset - // <0=> Normal operation - // <1=> FIFO reset - // Audio Codec reset - // <0=> Normal operation - // <1=> Assert audio Codec reset - /*!< Offset: 0x004 STATUS Register (R/ ) */ - __I uint32_t STATUS; // STATUS - // TX Buffer alert - // <0=> TX buffer don't need service yet - // <1=> TX buffer need service - // RX Buffer alert - // <0=> RX buffer don't need service yet - // <1=> RX buffer need service - // TX Buffer Empty - // <0=> TX buffer have data - // <1=> TX buffer empty - // TX Buffer Full - // <0=> TX buffer not full - // <1=> TX buffer full - // RX Buffer Empty - // <0=> RX buffer have data - // <1=> RX buffer empty - // RX Buffer Full - // <0=> RX buffer not full - // <1=> RX buffer full - union { - /*!< Offset: 0x008 Error Status Register (R/ ) */ - __I uint32_t ERROR; // ERROR - // TX error - // <0=> Okay - // <1=> TX overrun/underrun - // RX error - // <0=> Okay - // <1=> RX overrun/underrun - /*!< Offset: 0x008 Error Clear Register ( /W) */ - __O uint32_t ERRORCLR; // ERRORCLR - // TX error - // <0=> Okay - // <1=> Clear TX error - // RX error - // <0=> Okay - // <1=> Clear RX error - }; - /*!< Offset: 0x00C Divide ratio Register (R/W) */ - __IO uint32_t DIVIDE; // Divide ratio for Left/Right clock - // TX error (default 0x80) - /*!< Offset: 0x010 Transmit Buffer ( /W) */ - __O uint32_t TXBUF; // Transmit buffer - // Right channel - // Left channel - /*!< Offset: 0x014 Receive Buffer (R/ ) */ - __I uint32_t RXBUF; // Receive buffer - // Right channel - // Left channel - uint32_t RESERVED1[186]; - __IO uint32_t ITCR; // Integration Test Control Register - // ITEN - // <0=> Normal operation - // <1=> Integration Test mode enable - __O uint32_t ITIP1; // Integration Test Input Register 1 - // SDIN - __O uint32_t ITOP1; // Integration Test Output Register 1 - // SDOUT - // SCLK - // LRCK - // IRQOUT -} MPS2_I2S_TypeDef; - -#define I2S_CONTROL_TXEN_Pos 0 -#define I2S_CONTROL_TXEN_Msk (1UL< CONTROL - // TX Enable - // <0=> TX disabled - // <1=> TX enabled - // TX IRQ Enable - // <0=> TX IRQ disabled - // <1=> TX IRQ enabled - // RX Enable - // <0=> RX disabled - // <1=> RX enabled - // RX IRQ Enable - // <0=> RX IRQ disabled - // <1=> RX IRQ enabled - // TX Buffer Water Level - // <0=> / IRQ triggers when any space available - // <1=> / IRQ triggers when more than 1 space available - // <2=> / IRQ triggers when more than 2 space available - // <3=> / IRQ triggers when more than 3 space available - // <4=> Undefined! - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // RX Buffer Water Level - // <0=> Undefined! - // <1=> / IRQ triggers when less than 1 space available - // <2=> / IRQ triggers when less than 2 space available - // <3=> / IRQ triggers when less than 3 space available - // <4=> / IRQ triggers when less than 4 space available - // <5=> Undefined! - // <6=> Undefined! - // <7=> Undefined! - // FIFO reset - // <0=> Normal operation - // <1=> FIFO reset - // Audio Codec reset - // <0=> Normal operation - // <1=> Assert audio Codec reset - /*!< Offset: 0x004 STATUS Register (R/ ) */ - __I uint32_t STATUS; // STATUS - // TX Buffer alert - // <0=> TX buffer don't need service yet - // <1=> TX buffer need service - // RX Buffer alert - // <0=> RX buffer don't need service yet - // <1=> RX buffer need service - // TX Buffer Empty - // <0=> TX buffer have data - // <1=> TX buffer empty - // TX Buffer Full - // <0=> TX buffer not full - // <1=> TX buffer full - // RX Buffer Empty - // <0=> RX buffer have data - // <1=> RX buffer empty - // RX Buffer Full - // <0=> RX buffer not full - // <1=> RX buffer full - union { - /*!< Offset: 0x008 Error Status Register (R/ ) */ - __I uint32_t ERROR; // ERROR - // TX error - // <0=> Okay - // <1=> TX overrun/underrun - // RX error - // <0=> Okay - // <1=> RX overrun/underrun - /*!< Offset: 0x008 Error Clear Register ( /W) */ - __O uint32_t ERRORCLR; // ERRORCLR - // TX error - // <0=> Okay - // <1=> Clear TX error - // RX error - // <0=> Okay - // <1=> Clear RX error - }; - /*!< Offset: 0x00C Divide ratio Register (R/W) */ - __IO uint32_t DIVIDE; // Divide ratio for Left/Right clock - // TX error (default 0x80) - /*!< Offset: 0x010 Transmit Buffer ( /W) */ - __O uint32_t TXBUF; // Transmit buffer - // Right channel - // Left channel - /*!< Offset: 0x014 Receive Buffer (R/ ) */ - __I uint32_t RXBUF; // Receive buffer - // Right channel - // Left channel - uint32_t RESERVED1[186]; - __IO uint32_t ITCR; // Integration Test Control Register - // ITEN - // <0=> Normal operation - // <1=> Integration Test mode enable - __O uint32_t ITIP1; // Integration Test Input Register 1 - // SDIN - __O uint32_t ITOP1; // Integration Test Output Register 1 - // SDOUT - // SCLK - // LRCK - // IRQOUT -} MPS2_I2S_TypeDef; - -#define I2S_CONTROL_TXEN_Pos 0 -#define I2S_CONTROL_TXEN_Msk (1UL< -static lan91_handle_t *lan91c111_handle; +static lan91_handle_t lan91c111_handle; void LAN91_init(void) { @@ -95,8 +95,8 @@ void read_MACaddr(uint8_t *addr) void LAN91_SetCallback(lan91_callback_t callback, void *userData) { /* Set callback and userData. */ - lan91c111_handle->callback = callback; - lan91c111_handle->userData = userData; + lan91c111_handle.callback = callback; + lan91c111_handle.userData = userData; } @@ -216,8 +216,8 @@ void ETHERNET_Handler(void) if ((LREG(uint8_t, B2_IST) & IST_RCV) != 0) { LREG(uint8_t, B2_MSK) = 0; /* Callback function. */ - if (lan91c111_handle->callback) { - lan91c111_handle->callback(LAN91_RxEvent, lan91c111_handle->userData); + if (lan91c111_handle.callback) { + lan91c111_handle.callback(LAN91_RxEvent, lan91c111_handle.userData); } } } diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c index 4bd62b35858..b8a68c0878d 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c @@ -17,7 +17,7 @@ #include "cmsis.h" #include "pinmap.h" #include "mbed_error.h" -#include "SMM_MPS2.h" +#include "FVP_MPS2.h" #include "mbed_wait_api.h" #include "fpga.h" diff --git a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/device/drivers/smsc9220_eth_drv.h b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/device/drivers/smsc9220_eth_drv.h index aa60b4f95fb..cd1ac6e342f 100644 --- a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/device/drivers/smsc9220_eth_drv.h +++ b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/device/drivers/smsc9220_eth_drv.h @@ -125,19 +125,19 @@ enum smsc9220_mac_reg_offsets_t{ * */ enum phy_reg_offsets_t{ - SMSC9220_PHY_REG_OFFSET_BCTRL = 0x0U, - SMSC9220_PHY_REG_OFFSET_BSTATUS = 0x1U, - SMSC9220_PHY_REG_OFFSET_ID1 = 0x2U, - SMSC9220_PHY_REG_OFFSET_ID2 = 0x3U, - SMSC9220_PHY_REG_OFFSET_ANEG_ADV = 0x4U, - SMSC9220_PHY_REG_OFFSET_ANEG_LPA = 0x5U, - SMSC9220_PHY_REG_OFFSET_ANEG_EXP = 0x6U, - SMSC9220_PHY_REG_OFFSET_MCONTROL = 0x17U, - SMSC9220_PHY_REG_OFFSET_MSTATUS = 0x18U, - SMSC9220_PHY_REG_OFFSET_CSINDICATE = 0x27U, - SMSC9220_PHY_REG_OFFSET_INTSRC = 0x29U, - SMSC9220_PHY_REG_OFFSET_INTMASK = 0x30U, - SMSC9220_PHY_REG_OFFSET_CS = 0x31U + SMSC9220_PHY_REG_OFFSET_BCTRL = 0U, + SMSC9220_PHY_REG_OFFSET_BSTATUS = 1U, + SMSC9220_PHY_REG_OFFSET_ID1 = 2U, + SMSC9220_PHY_REG_OFFSET_ID2 = 3U, + SMSC9220_PHY_REG_OFFSET_ANEG_ADV = 4U, + SMSC9220_PHY_REG_OFFSET_ANEG_LPA = 5U, + SMSC9220_PHY_REG_OFFSET_ANEG_EXP = 6U, + SMSC9220_PHY_REG_OFFSET_MCONTROL = 17U, + SMSC9220_PHY_REG_OFFSET_MSTATUS = 18U, + SMSC9220_PHY_REG_OFFSET_CSINDICATE = 27U, + SMSC9220_PHY_REG_OFFSET_INTSRC = 29U, + SMSC9220_PHY_REG_OFFSET_INTMASK = 30U, + SMSC9220_PHY_REG_OFFSET_CS = 31U }; /* Bit definitions for PHY Basic Status Register */ diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/flash_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/flash_api.c index 95d291010e6..e81d76a702c 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/flash_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/flash_api.c @@ -38,7 +38,7 @@ * POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -#ifdef DEVICE_FLASH +#if DEVICE_FLASH #include "flash_api.h" #include "flash_data.h" #include "mbed_critical.h" diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/gpio_irq_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/gpio_irq_api.c index 5fc3b59e2da..242e6fabdd7 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/gpio_irq_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/gpio_irq_api.c @@ -43,7 +43,7 @@ #include "adi_gpio_def.h" #include "ADuCM302x_device.h" -#ifdef DEVICE_INTERRUPTIN +#if DEVICE_INTERRUPTIN #define MAX_GPIO_LINES 16 #define MAX_GPIO_PORTS ADI_GPIO_NUM_PORTS @@ -327,4 +327,4 @@ void gpio_irq_disable(gpio_irq_t *obj) channel_ids[port][pin_num].int_enable = 0; } -#endif // #ifdef DEVICE_INTERRUPTIN +#endif // #if DEVICE_INTERRUPTIN diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/sleep.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/sleep.c index daf5e06738c..482bf0e98fb 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/sleep.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/sleep.c @@ -40,7 +40,7 @@ #include "sleep_api.h" -#ifdef DEVICE_SLEEP +#if DEVICE_SLEEP #include "adi_pwr.h" #include "adi_pwr_def.h" @@ -218,4 +218,4 @@ void hal_deepsleep(void) pADI_CLKG0_CLK->CTL5 = 0; } -#endif // #ifdef DEVICE_SLEEP +#endif // #if DEVICE_SLEEP diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/trng_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/trng_api.c index a7c512ab633..4c06c43727c 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/trng_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/trng_api.c @@ -38,7 +38,7 @@ * POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -#if defined(DEVICE_TRNG) +#if DEVICE_TRNG #include #include diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/flash_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/flash_api.c index c29cdb8255b..5f9cfa52bbc 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/flash_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/flash_api.c @@ -38,7 +38,7 @@ * POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -#ifdef DEVICE_FLASH +#if DEVICE_FLASH #include "flash_api.h" #include "flash_data.h" #include "mbed_critical.h" diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/gpio_irq_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/gpio_irq_api.c index 93d637d28b2..9fea1bb7134 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/gpio_irq_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/gpio_irq_api.c @@ -42,7 +42,7 @@ #include "adi_gpio.h" #include "adi_gpio_def.h" -#ifdef DEVICE_INTERRUPTIN +#if DEVICE_INTERRUPTIN #define MAX_GPIO_LINES 16 #define MAX_GPIO_PORTS ADI_GPIO_NUM_PORTS @@ -326,4 +326,4 @@ void gpio_irq_disable(gpio_irq_t *obj) channel_ids[port][pin_num].int_enable = 0; } -#endif // #ifdef DEVICE_INTERRUPTIN +#endif // #if DEVICE_INTERRUPTIN diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/sleep.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/sleep.c index b6ea83f1ed4..1be0aa04873 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/sleep.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/sleep.c @@ -40,7 +40,7 @@ #include "sleep_api.h" -#ifdef DEVICE_SLEEP +#if DEVICE_SLEEP #include "adi_pwr.h" #include "adi_pwr_def.h" @@ -253,4 +253,4 @@ void hal_deepsleep(void) pADI_CLKG0_CLK->CTL5 = 0; } -#endif // #ifdef DEVICE_SLEEP +#endif // #if DEVICE_SLEEP diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/trng_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/trng_api.c index cfab85645d5..a272b9adcc5 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/trng_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/trng_api.c @@ -38,7 +38,7 @@ * POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -#if defined(DEVICE_TRNG) +#if DEVICE_TRNG #include #include diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c index 2ca86a6b639..34d34d5ef7d 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c @@ -503,7 +503,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b enable_usart(obj); } -#ifdef DEVICE_SERIAL_FC +#if DEVICE_SERIAL_FC void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow) { diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c index 9c08f582103..386559df179 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c @@ -283,7 +283,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b sysclk_enable_peripheral_clock(clockid); } -#ifdef DEVICE_SERIAL_FC +#if DEVICE_SERIAL_FC void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow) { @@ -783,4 +783,4 @@ void serial_rx_abort_asynch(serial_t *obj) pSERIAL_S(obj)->actrec = false; } -#endif \ No newline at end of file +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/PeripheralPins.h b/targets/TARGET_Cypress/TARGET_PSOC6/PeripheralPins.h index 07237af5170..b120b970c2c 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/PeripheralPins.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/PeripheralPins.h @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,7 +36,7 @@ extern const PinMap PinMap_PWM_OUT[]; #endif //*** SERIAL *** -#ifdef DEVICE_SERIAL +#if DEVICE_SERIAL extern const PinMap PinMap_UART_TX[]; extern const PinMap PinMap_UART_RX[]; extern const PinMap PinMap_UART_RTS[]; @@ -42,7 +44,7 @@ extern const PinMap PinMap_UART_CTS[]; #endif //*** SPI *** -#ifdef DEVICE_SPI +#if DEVICE_SPI extern const PinMap PinMap_SPI_MOSI[]; extern const PinMap PinMap_SPI_MISO[]; extern const PinMap PinMap_SPI_SCLK[]; @@ -50,12 +52,12 @@ extern const PinMap PinMap_SPI_SSEL[]; #endif //*** ADC *** -#ifdef DEVICE_ANALOGIN +#if DEVICE_ANALOGIN extern const PinMap PinMap_ADC[]; #endif //*** DAC *** -#ifdef DEVICE_ANALOGOUT +#if DEVICE_ANALOGOUT extern const PinMap PinMap_DAC[]; #endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_ble_controller_1.01.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_ble_controller_1.01.hex deleted file mode 100644 index 3942055ebcf..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_ble_controller_1.01.hex +++ /dev/null @@ -1,1655 +0,0 @@ -:020000041000EA -:4000000000000108310100100D00000095010010000000000000000000000000000000000000000000000000000000009101001000000000000000009101001091010010DC -:400040009101001061080010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001089 -:400080009101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001020 -:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD2819000800000000C0510010084B10B5002B03D00749084800E000BF07480368002B00D11A -:4001000010BD064B002BFBD09847F9E7000000002C190008C051001094020008000000007047EFF3108072B6704780F310887047FFF7F6FF72B6104C104DAC4209DA2168F0 -:400140006268A368043B02DBC858D050FAE70C34F3E70B490B4A0020521A02DD043A8850FCDC094809490860BFF34F8F00F0FCF800F01EF8FEE70000E4950110FC950110BB -:40018000281900089C2800080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F067FEFEE7002110B5080000F063FA002000F0C2FAAB -:4001C00000F0DEF962B60B4B5B689B0301D501F0F7FD002000F09CFDFA20400001F006FE054800F031F905F0BBF8002001F0AEFDF9E7C0460000264000000810F8B5E023D7 -:40020000504C9B00E2580F231340D022990092000919885807224C4D0240032A05D0042A05D0002A0FD0494811E028680FE0C022920089581F220A40112A01D0132A04D198 -:400240008020000203E0424801E0FA20C001002B27D1B223B1210322DB00C900E658635867581B0F3F0F1340174205D0354F7958090F0A40012A01D1F20701D4032B3AD1B4 -:40028000B023344ADB00E658A158E758C904C90C02F0B8FBB603F901B60BC90F7043013127E0012B27D1C823C0210322DB00C900E658635867583F0F174205D0214F7958EF -:4002C000090F0A40012A01D1F20703D49B009B0F032B10D1C0227F23D200A758A1583B401F27A658090A3940584302F08BFB310C394002F087FBE0239B00E3589B069B0F81 -:40030000D840154B68601C691969240A090E013102F078FBE1B2A860013102F073FB0F4BE860286104000E49C01802F06BFBFA210C4B28758900E01802F064FBA861C0030A -:40034000E861F8BD00002640C000000800366E0100127A0084050000000021403F420F0040420F00E7030000B021E02010B530241F4BC9005A588000520052085A501A5814 -:40038000A2431A50802252045A501A491A4A80209950A021043289019950FF21174AC005995081315A5892009208024380205A505A580006024301205A505A5882435A505B -:4003C00000F06CFBFFF71AFF00F056FA00F05EFA01F0EAF9B0235B055A78002A02D05B78212B03D10022064BDA605A6010BDC0460000264001000200840500008C0500008A -:40040000E0002340024BD86F032318407047C0460400214010B5FFF784FE074A074BD16F0B4007490B43D367102306490A681A42FCD0FFF77AFE10BD04002140FCFF00004B -:400440000100FA058800214070B50F4C0600FFF768FEE36F0500DB439B0701D1FFF7DAFFB0230A4A9B00D650E26F094B09491340094A1343E36710230A681A42FCD02800DF -:40048000FFF753FE70BDC0460400214000002140FCFF0000880021400300FA05436870B50400012B02D1007B06F07CF92500A2682B1B01359A4203D9E87B06F073F9F6E758 -:4004C00070BD000010B5034A0349002000F0C4FA10BDC046B96700109D04001007B50022030000911000110000F03AFA07BD10B500F0ACFA10BD10B500F0CAFA10BD10B541 -:400500000400007B00F0F2F8606010BD10B50400007B216900F0B4F8606010BD10B5037B0169180000F0CCF810BD10B50400C06800F008F9606010BD10B5C06800F016F93D -:4005400010BD10B50400C06800F022F9606010BD10B5C06800F036F910BD10B504000C23C05E00F055F8606010BD10B50C23C05E00F06EF810BD10B5C06800F035F910BD5F -:4005800010B500221849042000F0F4FD01221749042000F0EFFD02221549042000F0EAFD03221449042000F0E5FD04221249100000F0E0FD05221149042000F0DBFD062283 -:4005C0000F49042000F0D6FD07220E49042000F0D1FD08220C49042000F0CCFD09220B49042000F0C7FD10BDFF0400100D0500101D0500102B05001039050010430500108D -:40060000510500105B0500106B0500107705001070B507260512EDB206400D2D11D801F094FC0A4901224B5D1C003441144003D1B24013434B5501E00124644201F089FC05 -:4006400001E001246442200070BDC0464419000870B50412E4B20D2C0FD80725054001F074FC064901220B5D1E002E41164202D0AA4093430B5501F06CFC70BD44190008B7 -:40068000F8B50C00050001F060FC0C2301225D431300A3401A00094E71198F683A4008D13B43AD598B60631C4B60AB4202D94A6000E0FF2401F04DFC2000F8BDE0000008FD -:4006C00070B50C00050001F040FC01210C23A1406B43054AD3189A680A4201D08A439A6001F037FC70BDC046E0000008F0B50C2485B0019001F029FC019B114D5C432B19CA -:400700005B68029003932E1971680198FFF7B8FF0700FF280DD173682A59934201D9002373602A1953680399994202D001335360E9E7029801F00DFC380005B0F0BDC04627 -:40074000E000000810B5040007280AD801F0FDFB054B0E331A5D002A01D101321A5501F0F8FB0120404210BD4419000810B5040007280AD801F0E9FB044B0E331A5D012A8E -:4007800001D100221A5501F0E4FB10BD4419000870B505001F280ED801F0D7FB084B30335C5D002C02D101225A5501E00124644201F0CFFB01E001246442200070BDC04614 -:4007C000E000000810B504001F280AD801F0BDFB044B30331A5D012A01D100221A5501F0B8FB10BDE000000870B5B024C025144B144A15496405ED00E35CA25C615C665D5A -:400800003F251F242A400C4024039201224311002B407F2219430B003240520413430B4A1C0A110050310B701B0C8B7000234C7011005031595CC1540133062BF8D170BD5A -:40084000040600000506000003060000E000000810B50248B03000F0ABFC10BDDC19000810B50248583000F0A3FC10BDDC19000810B5FFF7F5FF10BD10B5034A8021603271 -:40088000042000F019FB10BDDC1A000870B501F05CFB0500094800F0DFFB094C200000F00DFC2000343000F009FC2000683000F005FC280001F04DFB70BDC046DC19000897 -:4008C000404500108A22044952000B6853430022CB181A717047C046CC1B00088A230A495B000A6809485A438A18926810B5920082180868D26A4343CB18002119718A42FF -:4009000000D0904710BDC046CC1B0008CC1D00088A21084A490013684B43D3181B79002BF9D101211533FF334343D318197110607047C046CC1B00088A20074A074940005C -:40094000D36C4343CB181B79002BF9D1D06CD36C59424B41D3647047CC1D0008CC1B0008F0B585B0039300238A2714001E00029001917F000A9A96424FD2FFF7DDFF03004B -:400980007B432D490090CA18D46000220431944206D00198855CD018081805740132F6E7019A350012190192721CFF32944622499B1B0A98AA1B0C00A8420BD9654507D045 -:4009C000039A1E48545DEA18821814750135F0E780225200009B00987B43E418029B2261A360FFF795FF164B134ADB6C7B43D3181E79009BF6B27B43D2180832114B002E8F -:400A000000D1114B0221032000F086FB0028EAD17342734104002E00ACE7002CADD1002B07D0029B064A9B00D318DB6A002B00D0984705B0F0BDC046CC1B0008D01B000839 -:400A4000CC1D0008DD080010C508001010B5022000F004FC10BD000070B5040015000200022000F087FB0849022000F097FB074AA400136D14190133E5621365012B01D1B3 -:400A8000FFF7E4FF70BDC046C5080010CC1D000810B5022000F0C8FB10BD0000F0B5962191B0002001F002FA01F0D8F9002801D101F0C6F9012001F077F8E8217E4C7F4BC1 -:400AC000626C89011A400A436264626C0193120AD2B23A2A04D1636C794A13400B4363643422002103A803F00DFD03AA0021754800F002FF3422002103A803F003FD03AA9F -:400B00000121704800F0F8FE0822042623686E4D134323602369334207D1002D04D0012001F07EF9013DF5E701E0002D00D1FEE7A02603220127654CF600A35903AD934305 -:400B40003B43A351D2196249280003F0D2FC280001F06AFB5F4901980B685F4A03400B608021136949041B021B0A0B4313611369019902200B401361E0230F219B00E2588E -:400B80008A433A43E250E25821318A438021E250E25809060A43E250002100F075FB0021032000F071FB0021042000F06DFB0321002000F069FB0321380000F065FB444B34 -:400BC0000522191D280003F094FC2900380000F091FB002800D0FEE74049380000F0DCFB002800D0FEE73E4B3E4AE1580A403A43E250E1583C4A0A408021E250E258090666 -:400C00000A43E250A259394B1340A351A259384B13408022920113438022A351A35912021343A351244B1A68324B1340224A136001F092F9C0235B00E3583B4204D12E4AC4 -:400C4000A3585B005B08A3506421002001F02EF9C0230021294A1B01D15080210901535801981B4C0340802080010343535080232349DB00D150D35823002A000C3343CBE4 -:400C800043C243CB43C243CB43C229000D4800F0ADFE23002A00303313CB13C213CB13C213CB13C22900174800F0A0FE164A174B1A6011B0F0BDC04600002740FF00FFFFFD -:400CC000FFC5FFDF0000324020A1070000002640EC45001090002140000021401027000004050000FEFCFFFFFFFF00FFFFF0FFFFFF8FFFFFFFFCFFFF0C0500000000014026 -:400D000000FF00800003324001001180000E1F4110B5054801F07EF90122044B1A70002801D101F083F910BD38010008201E0008030010B5FF24800882009B1ADB009C402D -:400D40009940E243214007282DD8174B01F050FE04090E13181D2227186A02401143196221E0586A0240114359621CE0986A02401143996217E0D86A02401143D96212E061 -:400D8000186B0240114319630DE0586B02401143596308E0986B02401143996303E0D86B02401143D96310BD00002140064B10309A68064B9A4203D183009858995002E027 -:400DC000034B8000C058704700ED00E00000000800000010F7B5051E01913DD00023C05E002802DBA978FFF7A3FF6A680023E85E9201002812DB1A4B81088900C918FF23A7 -:400E000003271C00C0250740FF00BC401A40BA40AD004E59A64332434A5113E003250F2381B20B402940A940FC352F002A408F408A40083B9B080B4C9B001B19DE69BE43D0 -:400E40003243DA61074B00259A68074B9A4204D10199FFF7ABFF00E0044D2800FEBDC04600E100E000ED00E000000008010056000369002B03DA89B24160002000E001486C -:400E80007047C04601008A000368002B01DB034803E089B2C26081600020704701008A000369002B03DAC36800200B6000E001487047C04601008A0070B5040010000F2C9B -:400EC0002BD8002A07D1002927D1154B6401E418144B1C6022E000291FD01F260E401CD1104D0F4B6401E4186960AA60CA0831002C6003F007FB31002000FFF7B9FF3100F7 -:400F00002A1D2868FFF7C0FF011E04D12868FFF7AFFF011E02D0044900E00449080070BD00002340241E000801018A0003018A00194BF7B51A680193D76804003B680E007C -:400F4000834223D90025A94202D100F0FEFF0500019B18680368002B01DB104C10E063095A01A41A012279689B00CB181968A2400C0014400CD10A431A600021FFF778FF05 -:400F8000002E07D1280000F0E4FF03E0044C01E0044CF2E72000FEBD241E00080301880004018A0002018800194BF7B51A680193D76804003B680E00834223D90025A9423D -:400FC00002D100F0C2FF0500019B18680368002B01DB104C10E063095A01A41A0122A24079689B00CB18196811420DD00024914319600021FFF73CFF002E07D1280000F013 -:40100000A8FF03E0044C01E0044CF2E72000FEBD241E00080301880004018A00020188000A4B1B68DA68136883420DD9430999005B01C31A0120984052688B581840431E54 -:401040009841034BC01800E002487047241E00080001880004018A00024B1A68002A00D118607047301E0008F0B52C246043104C1E0024681F0A2018FF2426403C400D4F7F -:4010800006607601F61906610B4E1B0C44606401A4191E04836033434461A3600023059DC261016283619D4201D02B888381F0BD301E00080000234000102340F0B50389D4 -:4010C00085B002AD2B800368066A1933AB704368476A0095826AC16A040003930369C068FFF7C2FF00213B000A0000913000FFF7BBFF216B2800FFF76DFE0023EA5E002AB1 -:4011000005DB1F231A401E3B9340024A136005B0F0BDC04600E100E0F7B52C25124C6843276801933C182669002E08D04D4379198869002805D13568002D02DA03E00B4820 -:4011400011E00B480FE06768012425004B689D4013882D041D431560F2608C61BC40019BA4B24B62B460FEBD301E000804028A0007028A002C235843064B1B681818C369B6 -:40118000934204D9036A9200D150002000E002487047C046301E00080A028A00034B1A682C235843101881627047C046301E000873B5002642690400D56801962B0CB34295 -:4011C0001CD01B040069136013680369B34215DA01A9FFF765FEB0420CD10198E26903681E0C0378934205D2226A9B009B58002B00D0984731002069FFF73AFEADB2002D63 -:401200000ED063691D6000251B68636AAB4202D09847656203E0A36A002B00D09847A56163691B6873BD00000A4B1A682C23584310180C23C25E002A09DB1F231A401E3B23 -:401240009340054AD367BFF34F8FBFF36F8F00207047C046301E000804E100E0084B1A682C23584310180C23C25E002A05DB1F231A401E3B9340034A136000207047C04635 -:40128000301E000800E100E0042819D804290FD94B1EFF3B132B13D81F231940094B8000C018C02304229B00C1504033C25005E00723D0301940034B8000C150002000E051 -:4012C000014870470000264001004A00084B8200D218D0239B00D05807231840042806D1C0239B00D0581F231840E1331843704700002640F0B5012819D1C022224BD2009E -:401300009A58002A0CDB8A78901E0E280FD84C78601E11280BD8C8780D7800282FD101E01A4830E07026152D01D9AE4201D2184829E00E79022E14D0F82124024901F8271E -:401340000C4021007F2412047F033A4011432C4021438024C022C006240520400143D2009950C020C0248005360706403200E4001D590849002029400A431A5103E0382628 -:40138000122DD4D9D1E7F0BD0000264003004A0001004A00FFFFFFCFF8B50D00012819D1C02180240D4BC9005A582406C826224307001C005A50F600A3593B4206D1002D30 -:4013C0000AD0012000F02CFD013DF5E70020002D03D101E0024800E00248F8BD0000264001004A0002004A00494BF7B51C789C46002C05D0474B484CE358002B00DB82E017 -:40140000464B984200D980E09A427ED8444B99427BD80123644663703F4B424CFF280BD8A3260F25F6009F592840AF43384398511859A843083D1FE03B4E0F25B04204D882 -:401440001E592840AE43304317E01E59AE433500060A35431D51354DA84206D8FF261D59000130400F3EB54306E0F02500022D011E5928402E4D354028431851FF2A10D825 -:40148000A326FF27F6009D5912013A400F3FBD432A439A511A5927481040E022D20210430AE0F027204D3F03AA4207D81D592148120417402840384318511EE01859164EDD -:4014C000009010020740019700981A4F154D3840019F074315481F517459824205D8F020120500040240144804E0F020120600050240124820400243725162465160054AE5 -:401500000020995002E00E4800E00E48FEBDC046341E00081C050000000026400F060000FFFFFF0014050000FF040000FF050000FFF0FFFFFFFFF0FFFFFF0FFFFFFFFFF08D -:4015400003004A0001004A00A423F0B500251F4ADB008446D0582B000002020A85B00292039363461A484570AB421BD1029A039B1A43AA4226D0029C039D029E039F0A00D8 -:4015800063464068614601F0D3FBEB0762081A4300900191009801996B088018594132003B000BE0029A039B44680800290001F0BFFB2B00620880185941220001F098FB3B -:4015C000029003910298039905B0F0BD00002640341E0008174B70B5C318DA179B185340042B22DD8023144E144D1B027459A405A40D984209D9124B0521C01801F002FAF8 -:40160000201AC343DB17184009E00E4B0521181A01F0F8F90C4B0019984200D90B4873599B0A9B020343735101E000242000201A70BDC0460080FFFF000026403C0500005F -:401640000280FFFF02800000FE030000FF0300001E4A0300904238D010D840282ED005D8002831D010282DD119482EE0802827D08021100049008B4227D023E0154A904296 -:4016800014D008D8A022120690421DD0124AA020934211D016E0114A904209D0104A904208D0104A90420DD10F480EE0A42003E00E480AE00E4808E0C00306E00D4804E0A5 -:4016C0000D4802E00D4800E0002070470600520001005000010000F0090000A0040000F0050000F0030000F00100520002005200030052000200500005005200FF00520092 -:40170000F0230F4A1B06C318934201D8580A15E0EC230C4A1B06C318934203D8580A80235B0207E0EA231B06C018904204D88023400A9B02184301E0012040427047C04608 -:40174000FFFF0F00FF7F000010B50400FFF7D8FF0022431C02D0E40562426241100010BD0B4B10B51B69002B10DB0A4B0A4C1868FFF76EFF0121094B094A995099580029D9 -:40178000FCD1064909590029F8D100E0054810BD00002340401E00088C040000000025400C0400000200500010B5022202490020FFF7E0FC10BDC0469503000810B5FFF74B -:4017C000CFFF10BD70B50400FFF7BEFF002824D0FEF714FDE022124B52051A605C600024FA219C60DC600F4B0F4A1D691B692D0E013555431B0ADBB201335D430B4B8900C2 -:40180000186801F0FFF80100280001F0FBF8084BC118200002F08CFE00E0064870BDC046401E00080000214060F59000C4000008980800000600520070B505000C00FFF76E -:4018400083FF002828D0002C26D0FEF7D7FCC022124BD2041A608322FA2152005A609D60DC600F4B0F4A1C691B69240E013454431B0ADBB201335C430B4B8900186801F0B9 -:40188000C1F80100200001F0BDF8E1239B00C118002002F04DFE00E0044870BD401E000800002140808D5B00C4000008060052000F4B30B5C0180F4BC009C01800011F23D2 -:4018C000032909D81D00C9008D4013408B400468AC432343036009E01D000439C9008D4013408B404468AC432343436030BDC0460000CEBF00100304F7B504000E001500E1 -:4019000000286ED0002A6CD0012312688B40002A01D1436000E08360B30001930F231900B0008140A26A8A4369680B4083401343A3622A7A31002000FFF7BAFF03207100C2 -:4019400088400322636A83431800EB6813408B400343636201231F00B7400097FF43BC462F6962461F40B740A0691031104038436F69A0611F40B740E06A10403843E0620D -:40198000A86903221840B0400600E869276B10408A408840009930430A4397436A6A384356000222206304201640AA6A616B92000240286A324303401A43EB6AD800182322 -:4019C0000340FF2013432A6B019D520102401343FE2292002A40934081430B436363002000E00148FEBDC04601005A0000281BD0002919D00D4B0E4AC318DB099B180A682C -:401A00001B010260CA6882620A69C2624A6902638A6842624A6882618A694263CA6900201A600A6A5A6000E0024870470000CEBF0010030401005A0010B50F24022006495C -:401A4000064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F0000010B50F2403200649064BCA58A2430243CA50F02212028B58A34303438B5010BD7F -:401A80000000214004F000000449054A054B88580340C020C00103438B5070470000214004F00000FF8FFFFF0449054A054B885803408020C00103438B50704700002140BF -:401AC00004F00000FF8FFFFFF8B50500072700F03CFA1C4C060063693B409D422DD0022D0FD18021184A490493690B439361FFF7A3FF03226369BB4313436361FFF7C4FFD8 -:401B000009E003226369C820BB431343636100F087F9FFF7C9FF072362699A432B4013436361052D09D1C82000F07AF9FFF798FF054A064B91690B409361300000F009FA66 -:401B4000F8BDC0460000264000F02540FFFFFFFE031E03D1084B5869C00F0CE00020012B09D1054918008A69920F1A4201D18869C00F01231840704700002640072370B53A -:401B8000084CA2691A4090420BD0A5699D4303402B43A361002904D0904202D9C82000F03FF970BD00002640F7B5060000F0CDF9B022E8211F27244D244C01902B595205F9 -:401BC000C900525C3B409B1A5A1E9341B34236D0002E13D180211E4A490493690B439361FFF72AFF0B222B59BB4313432B51FFF74BFFB023E8225B05D2000CE00B222B59C5 -:401C00000920BB4313432B5100F00AF9FFF74CFFB022104B5205D35C2959DAB21F23994313400B432B51012E09D1092000F0F8F8FFF716FF064A084B91690B4093610198E9 -:401C400000F087F9F7BDC046000026401CFF000000F0254041070000FFFFFFFE70B5050000F073F92C1E20D0124B19681F2901D900241AE0EC68002C17D02C68002C14D038 -:401C80005E6800243200002A04D0AA42F0D014005269F8E7002E01D15D6000E0656100222C61012401316A61196000F052F9200070BDC046501E0008F0B5060085B00D0012 -:401CC000204F042901D001291AD100207C68002C35D01D4B984232D02379B3420ED1A368002B01D02B4209D1E36801A85A689B6842608360057023689847BC606469E6E758 -:401D0000BC68022902D1002C00D024690020002C15D00D4B984212D02379B3420DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E705B0CA -:401D4000F0BDC046501E0008FF00420070B5194C06002368002B0AD100F0F7F823680500002B10D004210020FFF7A6FF0BE001210020FFF7A1FF0028EED002210020FFF79C -:401D80009BFF0D4C14E004210C4A13698B431361012E01D030BF00E020BF280000F0D9F823680024A34203D008212000FFF784FF200070BD501E0008FF00420000ED00E072 -:401DC00010B5E82400F0C1F8064B07495A68A4010A4022435A605A68114059605B6800F0B8F810BD00002640FF00FC0F70B5802504002D02AC4206D9064B186800F09CF86D -:401E0000054BE418F6E7054B1868604300F094F870BDC046DC0000080080FFFFD800000810B5034B1B78584300F086F810BDC046D40000080122014B9A6070470000254032 -:401E400080220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D08023DB021843704700002640FEE7000002680A4B08 -:401E800010B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC04678050008F0B51922002800D14B32E82403258A429241194ED8 -:401EC000640033595242AB43134333513359164F3B403351154B5C68AC4322435A605A6817405F60002808D00023102913D921338B429B415B4201330DE003001D290AD96D -:401F000001233A2907D9DB18572904D976338B4240410422131A0F21054A1068884303431360F0BD00002140FFFCFFFFFC00214000002540000000000230800803D001309E -:401F40000238FCD1C046C0467047EFF3108072B6704780F310887047094B042803D11A68104318600BE0C022000692041040902204499200885004211A688A431A6070471C -:401F800010E000E000002140F8B50778012F06D0082F34D11C4B1868FFF7DBFF31E00320FFF73EF8194B984229D000F0CFF8012825D0022003F0D8F90600FFF7C6FF124D59 -:401FC000286003F0D5F9040006281AD0022E0AD1033CB4433000E4B204F026FE002C0BD100280ED008E0380004F01EFE022C03D0002801D1FFF7AAFE2868FFF7AAFF04480B -:4020000000E00020F8BDC0467C1E000801018800FF004200002803D0024B5860002000E0014870477C1E00080100160000B58BB000212822684602F065FA6A46154B1648F7 -:402040009381FB2313835383F83B1377013353770C33D3770132D3776A460232D3776A465B3353846B4601220733DA77FFF7F6FD03F05AF903F060F903F05AF906A803F0FD -:40208000A7F9002804D1054B6846019303F074F90BB000BD901300004C01000898050008014B024AD050704778F0010000003C4010B50BF0EFFA10BDF8B58023FA250C0037 -:4020C00001271B0218430D4E0004F061AD00326C0A4B01203A4205D1002D0CD0013DFFF79FFEF4E7002D06D01A6C10431864DB6A0020238000E00248F8BDC04600003C4007 -:402100000400160070B5FA2401260D4B000418400C4D0143E961A4002B6C0A4A0120334205D1002C0AD0013CFFF77AFEF4E7002C04D0136C18431064002000E0024870BD34 -:402140000000FF7F00003C400400160010B500242000FFF7BBF8032804D00134052CF7D1002000E0012010BDA023034ADB00D058012318407047C0460000264030B524259E -:402180009DB02A00002101A802F0BCF9154B164C0493164B2A0000210AA808930993069402F0B0F9124B2A000D93124B00211193114B13A812930F9402F0A4F90F4B01A9D9 -:4021C00016930F4B0F481A931894FFF70FFC0AA90D48FFF70BFC13A90C48FFF707FC1DB030BDC046666666660000FFFF1C1C1C1C66E6EE661C1A1A1A1A1A000066E6666601 -:402200001A1A001C00013240800132400002324010200349034A8B5803438B507047C04600003C4070F00100F0B585B00090002800D147E1BE4F7B689B0301D5FFF7C0FD6B -:402240000122BC4BBC4C1D001959114204D0BB495B58134200D037E1FFF790FFB84AB94BEA508022009BD2021B781343B64AAB50B64AB74BEA50B74B5A6801231A4200D078 -:4022800024E1B54A116F08220A4008D1B34BB44918681300884202D900F0B4FB431E2A68002B03D0AF485B03034300E0AE4B13432B607B699F499E4E01275B000DD53900DF -:4022C0000320FFF75BFC73699B0F3B420AD08022B369D2051343B36104E00320A34A8B5803438B502B5940200193019AA04BA14E13432B51FFF794FD0123AA598D4F1A42F5 -:4023000008D1BB514020FFF78BFD03234020BB51FFF786FDFA27019A974B984E1A4016430192FF002E51964A964BD3581022134207D1002F00D1CBE00120013FFFF770FDCD -:40234000F1E7002F00D1C3E008218F4A0120AB580B43AB50FFF7FCFB002802D18B4E019B1E438B4B1E4001231E432E511E00894C724BEB58334207D1002C00D1A8E0012097 -:40238000013CFFF74DFDF3E7002C00D1A0E00B27C02181484901FFF7B5FE041E05D102AB991D7D48FFF788FE0400013F002F00D196E0002C25D1C02202AB9E1D33885201AA -:4023C0009342E5D131007548FFF776FE041E18D180233288DB001A4200D083E00B27019380216E48C900FFF78DFE041E04D131006A48FFF761FE0400013F002F70D0002CB3 -:4024000068D0B0256D056B78002B44D06B78212B41D0634FEB5B002B3DD0002C00D0FEE002AB9E1D31005F48FFF746FE041E00D0F5E0C021E85B3488084060398C43400898 -:40244000594920430140F020EA5BC000EB5BD201024011439B05554A9B0F1140DB02194350483180FFF74EFE041E00D0D7E031004F48FFF721FE041E00D0D0E0C022EB5B04 -:4024800031889B069B0F9B019143194348483180FFF738FE0400002C00D0C0E0009B454859781D78444B49001943FFF72BFE041E04D142494248FFF725FE04006801FFF7D6 -:4024C000AFFCACE03F4CAAE03F4CA8E03F4CA6E03F4CA4E03388019A934200D080E701E03B4C8EE731003B48FFF7E6FD041E00D087E732883F2310009843009B36499F78F9 -:40250000DB78012F0ED10222012B04D89FB2D21B92B2019201E0170001947022104330802E4A66E0002B5BD0019401275BE0C0460000264000003C40A0F00100B4F00100AC -:4025400006000001A4F00100A8F0010001000100ACF00100FC003C4000F03D40C800000800093D00041A0080040A0080C4F0010030000300B0F00100EFFFFEFF20000200CA -:40258000000032401040000068F0010028000200FFFFFBFFF07E0E00021E0000031E000016180000071E00007FF8FFFFFFE7FFFF061E0000081E000001100000376800007B -:4025C0000F1E000001001600030016000200160004001600091E0000C00000080048E80101201F0001907F2082436F38024332800C4ADA400A6031880B4839433180FFF750 -:4026000081FD009B0400DB78DF1B03231F40019B9B001F43054BBFB23780EF50F1E6200005B0F0BD0024F400091E000064F00100014B18687047C046C0000008024B58690F -:402640004000C00F7047C046000026400120024B1B68DB0D984370470000264010B50A00002808D0FA23FF33994204D8034901F040FF002000E0024810BDC04607080016C4 -:4026800001001600F0B57D4C7D4BA54407900C000492994200D8ECE08B187A4A93420ED9794A914200D8E4E0784A934207D9784A914200D8DDE0774A934200D9D9E0FFF718 -:4026C000BDFF0523019300280BD0734B5D6907231D40EBB20193022D03D10520FFF7F4F90195FFF7B3FF01230393002810D06B4B694AD158E823B022DB005205D25C1F2307 -:402700000B40934204D10120FFF74EFA00230393F0231B06E3185D0A06936D0200210320FEF706FC0028F9D1070008AB5B1B0293049BBB4273D980239B00EB180593002615 -:402740002B00069A9A4214D8049ABA4211D9079A0299D25DCA54002E08D18021490559180978521A511E8A41160000E00126013705E0802252059A1812780299CA54059A64 -:4027800001339A42DDD10024A6423FD08023C8265B05ED182800FFF715F804000120FFF73FFBA423A422DB032340D203934203D1013E002EEED128E0394B9C4204D1FEF71E -:4027C000FDFF384B0400F8E70120002C1ED1C82608A92800FFF730F804000120FFF720FBA423A422DB032340D203934203D1013E002EEDD109E02A4B01209C4206D1FEF780 -:40280000DDFF284B04009842F9D00120264A029B944663440293002C02D1059D88E70024002801D0FFF706FB00210320FEF7BCFB0028F9D1FFF702FF002805D0019B022B9B -:4028400002D11800FFF740F9FFF700FF002805D0039B002B02D11800FFF7A6F9134B9C4207D0134B9C4204D00020844202D0114800E0114889239B009D44F0BDDCFDFFFFEA -:40288000FFFFFF0F00001010FFFFFF1300800014FF070016000A0016000026401CFF0000010050000200500000FEFFFF0200520006005200130016000100160010B50A0031 -:4028C000002807D0FA23FF33994203D80249FFF7D9FE00E0014810BD0708001601001600002070470020704710B5FFF799FA10BD10B5FDF7FCFD074B1B681B6800229A5E9D -:40290000002A05DB1F231A401E3B9340024A136010BDC046801E000800E100E010B5FDF7EAFD094B1B681B6800229A5E002A09DB1F231A401E3B9340044AD367BFF34F8FCA -:40294000BFF36F8F10BDC046801E000804E100E0A023034ADB00D058032318407047C04600002640024B034AD058C00F7047C0461C0500000000264010B5FEF7E5FD10BD77 -:4029800010B5FEF731FD10BD10B5FEF723FE10BD10B5FFF7F3FB0220FFF782FB094C0A4923681868FEF716FA23681B6800229A5E002A05DB1F231A401E3B9340034A13600A -:4029C00010BDC046801E0008B120001000E100E00420704710B5FFF7B8FA10BD10B5FFF7B8FA10BD10B50021FFF7C8F810BD000002B4714649084900095C49008E4402BCBF -:402A00007047C046002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090A03 -:402A4000C30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B42AC -:402A800001D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D320 -:402AC0004B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110462E -:402B00007047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF2267 -:402B4000090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B23 -:402B80008B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4221 -:402BC00001D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B007B -:402C0000C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A8B4212D3FC228901BF -:402C400012BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D3C7 -:402C80004B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A5241411A00D20146634601 -:402CC00052415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C046002B11D1002A0FD1002900D1002802D090 -:402D00000021C943081C07B4024802A14018029003BDC046D9FFFFFF03B4684601B5029800F050F8019B9E4602B00CBC7047C046F0B54F464646C0B41604360C99463300C8 -:402D400005042C0C070C150C63437E436F4365431C0CAD1964199C46A64203D980235B02984647446346250CEF191D044B464A4343432D0C240464199918C91920000CBCA3 -:402D800090469946F0BDC04670B500220C4B04000D0001F05DFA002804D12000290001F0B5F970BD064B00222000290000F05AFE01F0ACF980231B069C466044F1E7C046E0 -:402DC0000000E041F0B54D46564644465F46F0B4924683B004000D0099468B422FD82CD04946504601F05CFA29000600200001F057FA331A9846203B9B4600D574E053461A -:402E00005A4693401F005346424693401E00AF4229D826D05B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E08242D0D900221A -:402E40000023009201930C9B002B01D01C605D600098019903B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A4346467B080EE0D4 -:402E8000AB4201D1A2420CD8A41A9D41012024196D410021013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B005A46D34044 -:402EC0002A004446E2401C005B461500002B2CDB26009E40330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A4017001F4382E7AB -:402F0000424620239B1A2A0046469A402300F3401343D5E74246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B446974066463B003343D8 -:402F4000C9E7C046F0B556464D4644465F46F0B41D000E034C00CB0F87B0070092468146360B640D98466AD06D4B9C4235D08022430F12041343F6001E43C3009946694B51 -:402F800000279C460023644402932B0368001B0BED0F51469B46400D009500D178E0604B98426CD05B46DA004B0F802109040B4313439B465346D9005A4B9C4600236044E4 -:402FC0004246201A6A40924601901F430F2F00D9B0E05548BF00C0598746374300D088E0002399460233082700260293CDE74346B34649460093029B009A9246022B00D07A -:40300000BFE1002153460122002689461A40444B002136030C0D2405360B2643434C1B0526401E437600D207760816434846310007B03CBC90469946A246AB46F0BD330077 -:4030400003434FD0002E00D1BCE1300001F00AF903000B3B1C2B00DDADE11D220100D31A08393A008F408E40DA40B9461643304B00279C46002360444442029385E753460E -:403080005A4613432CD1002300219B46023397E70B4320D05B46002B00D19EE1584601F0E1F803000B3B1C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0043 -:4030C00059460B4351469B469140194B9C4660444042002374E7002300219B4601336FE703236DE70023994601330427002602934BE703230C27029347E70122D51A382DA6 -:4031000000DCB0E153461A4000210023002689467EE700238026994600223603004B77E7FF07000001FCFFFF40510010FFFF0F80F30300005E4500D972E100D16DE1019B36 -:403140004D46013B01930023340002935B461E020B0E1E430B020393330C994633041B0C494620000093FFF74DFC009B370043430600494620009846FFF7CAFC2C0C090439 -:403180000C43A04509D9E419731EA74200D95CE1A04500D859E1023EE4194346E41A49462000FFF72FFC0300009A80465343494620009B46FFF7ACFC2A040904120C0A4314 -:4031C00093450DD94346D219013B974200D93AE1934500D837E102235B429C46D219E0445B46D21A4346360433439B460399180C0B0C1D00059309045B46090C0C001B04F8 -:403200001B0C4443049159436B4368431B190D0CEB189C4203D980246402A44660441C0C09041B04090C20185D18824200D2DEE000D1D7E0161A029B9C465D1BAC459B41CE -:403240005B42F61AB74200D106E149463000FFF7D9FB009B04004343494630009846FFF757FC2E0C09040E43B04509D9F619631EB74200D9F3E0B04500D8F0E0023CF619CE -:403280004346F31A494618000293FFF7BBFB009B06004343494602989846FFF739FC2D0409042D0C0D43A84509D9ED19731EAF4200D9D6E0A84500D8D3E0023EED192404A4 -:4032C000210043463143049E059A3000ED1A0B040C0C1B0C58436643534354439A19030C9B189E4203D980225202944664441A0C00041B04000C14191B18A54250D34DD0F4 -:4033000001231943964A019B94466344002B00DCF3E64A0709D00F220A40042A05D00A1D8A42894149428B4411005A46D20108D55A468C4B1A4093468022D2009446019B7C -:403340006344894A934200DD5BE65A46C908500708435602514601225B058146360B5B0D0A4055E680231B031E4211D05A461A420ED15E461E433603360B2A0089467B4B4B -:4033800046E6032B00D1E1E0012BBBD11A40BBE61E433603360B4246744B39E6002BB1D07D194A1EAF4252D91100A542A8D1039A9A42A5D1A6E703003E00283B9E400023D5 -:4033C000994654E600F04EFF203041E603005246283B9A400021934677E6504600F042FF20305EE6029B0026AB4200D323E7039E0299B44661448846B045B6415B467642FB -:40340000F619B218013B0291974213D290424FD800D18EE0161A9B460DE7894500D28EE674084B46F60735005B081D434B46DB0702938BE69742EDD10399029CA142E5D9E8 -:403440003E1A9B46F7E69846CAE61E00A5E6AC423ED874D0110053E70121494252E71C000EE71E002BE71F2D3CDC20230A0058465B1B9840EA4099400243481E81415E4694 -:403480001143EE404B0709D00F230B40042B05D00B00191D99429B415B42F61833023CD55346012200211A40002601238946AFE502235B429C46039CE344A446029B634479 -:4034C0009846A045B6417642F6190293B218B1E603988A1E41008142B6417642F619AD19039161E71F225242D31A5A46DA401300202D29D040225846551BA8400143481ED7 -:40350000814107200B4318400026002809D00F2200261A401900042ABBD10B0070077602360BDB0803439946012253461A4000236EE502998D42BBD89B4600267BE6039882 -:403540009842C5D3110032E70020D7E780265B4636031E433603360B009A8946034B57E5FF030000FFFFFFFEFE070000FF070000F0B55F4656464D464446F0B40D039946E5 -:403580004E002B0B87B00700924680469B46760DCC0F002E69D06D4B9E4235D05B468022DD001204430F13432B439B46C3009846674B00279C460023664401934A461503D6 -:4035C0005000D20F53462D0B400D914600D176E05E4A90426CD080225B0F120413435C4AED0094461D4353460022DB00604449463618701C6140029017430F2F00D9AFE0AD -:403600005448BF00C759BF465B461F4300D088E000239B469846023308270193CEE74946022A6AD0032A00D109E2012A00D0BBE111400022002300259046CCB200212D036B -:403640000A0D12052D0B1543434A1B0515401D436D00E4076D0825434046290007B03CBC90469946A246AB46F0BD034352D05B46002B00D18AE1584600F0F4FD03000B3B24 -:403680001C2B00DD7BE11D22D31A3A0001005D46DA4008398D4013008F402B439B46B8462E4B00279C46002360444642019385E752462A432CD100250023022297E75246D4 -:4036C0002A4321D0002D00D154E1280000F0CAFD03000B3B1C2B00DD46E11D21CB1A51460200D9405346083A954093400D431B4A944660444042002279E7012400220C40A4 -:40370000124B0025904699E70025002301226EE703226CE700239B4698460133042701934CE703230C27019348E700238025984600242D03054B81E75D464346019A6FE786 -:403740005D4643462100019A6AE7C046FF07000001FCFFFF80510010FFFF0F80F30300004246120C91461A0C9446424617044A461B041B0C5A43604690464A464243100071 -:40378000039262461C003F0C7A437C4342440192220C9246019A5244904506D98246802040028046C24450460390100C049048462404240C1204121905922A0C2D042D0C38 -:4037C00068432C00824648467C4350438146200C8046574357444744BA4503D9802040028046C144380C3F04B84648442404240C01900498A044404404905846000C814646 -:4038000058460404200C8246070048465F434C464343604660436446834650464443380C8446E4186444A34203D980235B029C46E34448463F04230C3F0C2404E41957463D -:4038400068436F4384464D46504655434243380C814662444A445B44944503D9802040028446654403983F04834604983F0C8446E344C345804140428246100484460198EA -:40388000674484466744A344BC46A345A4419946D44464428742BF41D4458041E144A04699459B417F424042C8440743120CBA18A045A4415F423B0064422343D71843467A -:4038C0007D19DB0D6D021D435B465A02059B1A43531E9A415B46DB0D1A4343465B021343EA0107D501225C0813402343EA07029E13436D08574AB218002A4BDD580709D0BB -:403900000F201840042805D0181D98429B415B42ED180300E80104D54F4A15408022D200B2184E48824200DDE7E60124DB08680718436D02530580462D0B5B0D0C407DE6CF -:40394000802259461203114208D0154206D115432D0398462D0B4C46414B6FE65D4615432D032D0B3E4B69E603005546283B9D400023BCE6504600F075FC2030A8E60300D1 -:40398000283B9F400023BB46984689E600F06AFC203073E60124A61A382E07DD00220C4000230025904649E6029EA3E71F2E20DC20222C001800921BF040944093400443A7 -:4039C000581E83411C43F540630709D00F232340042B05D023001C1D9C4292415242AD182B021FD5012400220C4001230025904624E61F202C004042821AD440202E1CD003 -:403A00004022961BB5402B43581E83410720234318400025002809D00F2200251A401C00042AD8D1230068076D022D0B0124DB08034398460C40002300E60025E3E78022DD -:403A40000124120315432D0398462D0B0C40044BF4E5C046FF030000FFFFFFFEFE070000FF070000F0B557464E464546E0B40E001100F20F9246C500420F18033703740020 -:403A8000400A4E0F7F0A3043CF4E17435A00640D520DDB0FC900B24200D1E5E001267340A61AB446534500D1AFE0002E00DC0DE1002A3AD103000B4300D0E4E06B0709D09C -:403AC0000F232B40042B05D02B1DAB42AD416D427F191D003B0200D488E0BB4B01349C4200D110E13A00B94B51461A4001235007ED08520264050543120B640D0B400021AC -:403B0000280012030D0D120B64052D0515436208AF4CDB072C401443640064081C4321001CBC90469946A246F0BDA74B9C42C5D080231B0418436346382B00DDFDE01F2B10 -:403B400000DD30E1624620239B1A02009A40664690460A009940F24046464B1E99413243114363460200DA40691A8D429B410D00BA1A5B42D71A3B0235D57A02530A98464C -:403B80004346002B00D1C4E0404600F06BFB0300083B1F2B00DDC5E020222900D21A4746D1409F400A009D403A439C4200DDC0E01C1B631C1F2B00DDE4E02021140028003D -:403BC000C91AD8408C408D400443DA40681E854117002543002471E7424663461A4300D14CE2674645466B0700D069E7012351467807ED08FA080B40054373498C4238D0DC -:403C000012036405120B640D79E7002E00DC9AE0002A47D06C4A944200D14FE78022120410436246382A00DC08E10143481E81410022C9B24919D219A942BF410D007F42D7 -:403C4000BF183A0200D442E15F4A0134944200D14EE101205D4A69083A4028400843D507054357089A4629E706000E4300D017E714E72900114300D1F9E1802109030A436B -:403C80001203120B3BE701235B429846C4446346002B72D1691A8D429B413F1A5B42FF1A0D0068E702000A4300D107E7012252429046C4446246002A00D0E6E06918A942E2 -:403CC000B6413F187642F7190D00BAE7002E00D080E0621C5205520D012A00DCF9E06A1A91464D45B6413A1A7642921B9046120200D499E04D1BA9428941C71B49427A1A9C -:403D000090469A463CE752460123002513400022F5E6280000F0A6FA20300300083B1F2B00DC39E72A002838824000259C4200DC3EE7264FE41A1740C0E60143481E8141B9 -:403D40000022C9B210E7002E00D0F1E0621C94465205520D012A00DCA0E01B4A944500D1C5E06918A94292413F185242D2194908D5070D4357086446A0E6134B9C4200D06A -:403D8000D9E69BE611001F3CE1400C00202B00D180E04021CB1A9A4015436A1E95410027254300241FE763460200203BDA406346202B71D0402366469B1B98400143481E83 -:403DC000814111430022CFE6FF070000FFFF7FFFFFFF0F80002C48D0CA4CA24200D1A2E07442A1468024240427434C46382C00DDDBE01F2C00DD44E14E462024A41B3E00B3 -:403E0000A640A246B0464C462E00E640B4464646644626435446A5406C1EA54134002C434D46EF400D1B28E04A4643464D461A4300D0A5E6002300240025DEE61F2A5ADCA8 -:403E400066462022921B060096409146B04662460E00D640424616434A4691404A1E9141020060463143C240E4E63C002C435AD0F443A146002C52D14D1BA9428941C71B8D -:403E800049427F1A14009A4675E69E4A944200D0C7E613E600227FE700208FE7002C00D0C8E03B002B4300D10FE103000B4300D104E66918A9429B413F185B42DF193B02B2 -:403EC00000D41AE1904B0D001F406446F6E59A4689E63A002A43002C5CD1002A75D102000A4300D1CAE007000D009A46E6E564460022002581E662460600203AD6406246C1 -:403F0000B046202A00D1B7E040226646921B904001434246481E8141114300228AE6794CA24200D061E707000D0014009A46C5E5002C41D13C002C4378D0F443A146002C86 -:403F400020D0704CA24271D04C46382C00DDB2E01F2C00DDBCE02026341BA2463C005646B4404E46A0462C00F440A446444666463443A4465446A54064466E1EB541254390 -:403F80004C46E7406D188D4289413F184942CF19140056E6002A2FD102000A4300D184E007000D009A46574C88E53D436F1EBD41ECB200270D1B60E7524CA24236D07442E1 -:403FC00080263604A1463743BEE702000A4300D174E56A1A90464545B6413A1A7642921B9446120200D4F7E54D1BA9428941C71B49427F1A9A4661E502000A433AD0ED0899 -:404000007C072C438025FA082D032A4208D0C7082F4205D145072C003A009A46C9080C43670FD200E5001743364C47E507000D00140043E53A002A4343D002000A4319D034 -:40404000ED087C072C438025FA082D032A4207D0C6082E4204D147073C003200C9080C43D700620FE50017439A46264C26E50022002544E5234C21E5002049E700230025EF -:40408000BBE54C463E00203CE6404C46B446202C31D040244E46A61BB7403D436C1EA54164462C4300270D1BE7E6802200231203144C0025A1E53D436F1EBD410027EDB2AA -:4040C00060E707000D000F4CF8E407000D00F5E44E463C00203EF440A0464C46202C0ED040244E46A41BA7403D436F1EBD4144460027254346E70027CFE70D0073E50027E5 -:40410000F2E7C046FF070000FFFF7FFF0B0330B5134D1A0B4B005B0DC90F0024AB4211DD104CA34210DC8024640322430E4CE41A1F2C0CDD0D48C31ADA4013005C420029CD -:4041400000D11C00200030BD094BCC18FAE7E040084CA44663449A4013000343EEE7C046FE0300001D0400003304000013040000FFFFFF7FEDFBFFFF70B5051E28D000F017 -:4041800071F8154B154A1B1AD21A1F2A16DD2C00134A0025D21A94405A052403240B520D002124030B0D240B1B0523430D4C1205234013435B002800590870BD0B212C0051 -:4041C000081AC440954024035A05240B520DE7E700220024E4E7C0461E0400003304000013040000FFFF0F808446101C62468C46191C634600E0C0461FB500F001F90028B4 -:4042000001D40021C8421FBD10B500F055F84042013010BD10B500F0F3F8002801DB002010BD012010BDC04610B500F0E9F8002801DD002010BD012010BDC04610B500F069 -:404240007BF8002801DC002010BD012010BDC04610B500F071F8002801DA002010BD012010BDC0461C2101231B04984201D3000C10391B0A984201D3000A08391B09984244 -:4042800001D30009043902A2105C40187047C0460403020201010101000000000000000010B5002903D1FFF7DDFF203002E0081CFFF7D8FF10BDC046F0B55F4656464D46AD -:4042C0004446F0B41F035C00DB0F9A46194B0E034D00C90F8046360B6D0D8B4691463F0B640D9D4219D0134B9C421BD00123A54206D018003CBC90469946A246AB46F0BDAF -:40430000BE42F6D1C845F4D1D34510D0002DF0D1304303005A1E9341EBE7310001230143E7D1E0E73A430123002AE2D1DEE70023DFE7C046FF070000F0B55F4644465646AA -:404340004D46F0B41F033C0B2C4F0E034D00A3465C008446360B6D0DC90F9046640DDB0FBD422BD0254FBC422ED0002D0ED130430700814678427841002C17D15F463A4391 -:4043800014D14B460020002B0AD006E0002C02D15846024301D099421AD00123484218433CBC90469946A246AB46F0BD0028F2D058425841012240421043F1E7370007435A -:4043C000D0D002204042EBE75F461743CDD0F8E7A542E2DC05DB5E45DFD808D000205E45DED248424841012340421843D8E7C445D3D80020C445F4D3D2E7C046FF070000C6 -:40440000F0B55F464D4644465646F0B41C03240BA4462F4C0F034D005E00C90F80463F0B6D0D8B469146760DDB0FA54220D0284CA64222D0002D12D1384344424441002E05 -:4044400020D0002C0DD05C42634101245B421C4320003CBC90469946A246AB46F0BD002E17D05B4519D05B465C4201231C43EFE7390002240143EBD1D9E761460224114317 -:40448000E6D1D7E761460A43DBD100240028DFD0E9E761460A43E4D1E5E7B54203DD01225C421443D4E7B542CDDB6745DBD809D000246745CCD259464C4261410124494239 -:4044C0000C43C5E7C845CED80024C845F3D3BFE7FF07000030B50024A24208D0035D651C0C5DA34201D0181B02E02C00F4E7002030BD002310B59A4203D0CC5CC454013372 -:40450000F9E710BD03008218934202D019700133FAE77047F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E4670470000000001B40248844601BC604700BF990200081A -:4045400003000000010000000100000000000000050360000400000001000000000000000100000006046000080000004C1B00086108001008000000010000000200000063 -:4045800002000000080800030900000001000000000000000300000009090003080000006C1B0008710800100A0000000100000004000000040000000A0A000C0B00000066 -:4045C0000100000000000000050000000B0B000C100000008C1B0008510800100A0029000300000003001800030000001920010219010200000000000C00000000000000B3 -:4046000000000000006800000000000000000000000000000000121200000000000000000000000000000000000000BA0000000000000000000000000000000000001D1DFA -:40464000000000000D0000000800000000020000000000000000000000000000000000000000000000000000000000000B0000000000000064000000000000002002000092 -:404680007C01000031010000090901120C00FF0380ABCDABCD80409C1B04041BFFFFFFFF000000000410080007070400F216FBE0FBE01F60427EF56D720096BE209000000F -:4046C00010502604060037D7F401FA00960064004B0032001E00140003040506020D1100F1D9001055D90010A7DF0010A5DA001057DB001053DF00106BDF00102DE000101A -:40470000D1DB001039DC001015DE001043DE00107BE0001041DF00100FE000100FE000100FE00010E9DE001091DE0010D5DE001075150110811501104D2501103526011082 -:4047400041260110A1DA0010EFD90010EBDF001055DB00108FDB001063DF001085DF001079E0001035DC001091DC00102FDE001069DE0010E7E000104BDF001079E000100F -:4047800079E0001079E0001039DF001079E0001079E0001079E0001079E0001079E0001079E0001079E00010DFF50010E7F50010E3F50010DDF50010BBF50010B7F500100A -:4047C000D5F50010D3F50010AFF50010B3F50010EBF50010D7F50010D1F50010EFF50010EFF50010ADF50010DBF50010CD0C011081100110450E0110F10B011001FF001072 -:40480000B5FB001085060110C901011021F7001085F70010D9110110110A01106101011035FB001011060110F15B0010C10A011079120110051601105117011025180110C4 -:4048400041140110D51201108D150110B5130110DF130110EF130110F1130110F51301100FE00010E1130110EB130110E91301107D29011035230110E928011099280110D6 -:40488000352901104D26011059250110F1250110B526011025BE0010572301104D2301105323011051230110552301104F2301100FE000100FE000100FE00010F9AC00109A -:4048C000453C0110273C0110273C0110273C01105D3C01103D7B0110273C01102D7B0110457B0110357B0110DF400110D74001104140011039400110373C01101F3C011034 -:40490000153C01103B3C011031400110614001102F3C011059400110B9400110273C0110694001105140011049400110273C0110653C01106D3C0110753C01102B3C0110A5 -:404940002B3C0110453C0110273C0110273C0110273C01105D3C01103D7B0110273C01102D7B0110457B0110357B0110DF400110D74001104140011039400110373C0110A7 -:404980001F3C0110153C01103B3C011031400110614001102F3C011059400110B9400110273C0110694001105140011049400110273C0110653C01106D3C0110753C011031 -:4049C0002B3C01102B3C0110696401105D640110756401102B3C01102B3C0110096101104561011015610110396101102D61011021610110516101105D610110516401104F -:404A0000B5660110B9660110C56601109D660110A96601102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C011082 -:404A40002B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C01102B3C011069610110A7570110BC -:404A8000555601105556011055560110D957011069570110555601104D5701101958011063570110F3570110E9570110D75501105556011055560110555601105B55011014 -:404AC0003757011081550110B9570110DF560110EF56011069560110555601102F580110A556011097560110555601102357011067580110555601105556011055560110FA -:404B0000F9630110ED63011005640110ED5601108756011055600110916001106160011085600110796001106D6001109D600110A9600110E1630110F1650110FD6501103C -:404B400009660110D9650110E5650110555601105556011055560110555601105556011055560110555601105556011055560110555601105556011055560110555601107F -:404B8000555601105556011055560110555601105556011055560110555601105556011055560110555601105556011055560110B5600110D75A0110055A0110055A0110DD -:404BC000055A01101B5B0110815A0110055A0110C95A0110C95A0110735A0110315B01101F5B0110815901107D590110615A01101559011007590110075901101959011072 -:404C0000FB5A0110355A0110495A0110095A0110055A0110655B0110215A01100D5A0110055A0110655A0110815B01107D5B0110055A0110055A01102563011019630110E5 -:404C400031630110A95B0110035901109D5F0110A55F0110B15F0110BD5F0110A55F0110A55F0110C95F0110D55F01100D630110FD6401100965011015650110E56401109E -:404C8000F1640110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110FE -:404CC000055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110055A0110E15F011008000000060F0020200107021900000007070E0562 -:404D0000020220001C1202000103000E030600040040270700000707010200020307030400000000000000000000000000000000000000000000000000080000A757011057 -:404D4000555601105556011055560110D957011069570110555601104D5701101958011063570110F3570110E9570110D75501105556011055560110555601105B55011051 -:404D80003757011081550110B9570110DF560110EF56011069560110555601102F580110A55601109756011055560110235701106758011055560110555601105556011037 -:404DC000D75A0110055A0110055A0110055A01101B5B0110815A0110055A0110C95A0110C95A0110735A0110315B01101F5B0110815901107D590110615A011015590110B3 -:404E0000075901100759011019590110FB5A0110355A0110495A0110095A0110055A0110655B0110215A01100D5A0110055A0110655A0110815B01107D5B0110055A011014 -:404E4000055A011008000000060F0020200107021900000007070E05020220001C1202000103000E032000800000C00000000004000000A822000000000000040000F7FF90 -:404E8000FF7F0000003000000000000000000000000000000000000000000000000000000000000000000000355E0110ED5F0110555F0110955E0110FB5F01107D5F011022 -:404EC000655E011009600110615F0110935E01100D600110795F01107D5E0110FB5F0110715F0110675E0110FB5F0110695F0110AB5E011019600110855F0110B15E01101F -:404F0000296001108D5F011055560110055A01102B3C011055560110055A01102B3C011055560110055A01102B3C011055560110055A01102B3C011055560110055A01101E -:404F40002B3C011055560110055A01102B3C011055560110055A01102B3C011055560110055A01102B3C0110BF5E011041600110955F011055560110055A01102B3C011044 -:404F800055560110055A01102B3C011055560110055A01102B3C011055560110055A01102B3C011055560110055A01102B3C01107961011055630110FD6201107761011054 -:404FC00049630110F56201109F610110A163011005630110756101103D630110ED62011055560110055A01102B3C011055560110055A01102B3C011055560110055A011081 -:405000002B3C011055560110055A01102B3C011055560110055A01102B3C0110A16401105D65011000000000AF64011071650110BD270110BD6401109B650110ED2701105F -:405040008164011021650110412401108F6401103F6501105D24011030303031423830303031303230333034303530363037303830393041304230433044304530463130A4 -:40508000313131323133313431353136313731383139314131423143314431453146323032313232323332343235323632373238323932413242324332443245324633307A -:4050C000333133323333333433353336333733383339334133423343334433454142000026002B00300036003C0043004B0055005F006A00770086009600A800BD00D400CC -:40510000EE000B012B014F017801A601DA01130254029D02EE024A03B1032404A5043605D9058F065C0742084409650AAA0B160DAF0E79107C12BD1445171C1A4B1DDE20A6 -:40514000343100100230001008310010F82F0010083100101231001008310010F82F0010023000100230001012310010F82F0010EE2F0010EE2F0010EE2F001064330010A0 -:405180006037001020360010203600101E36001038370010383700102A3700101E360010383700102A370010383700101E3600104037001040370010403700104039001054 -:4051C00000000000F8B5074600256846058078683C1D2D492E46002807D06268002A06D0800702D1207A800701D00D4649E0FDF7CFFBFDF793FBFDF7EBFB00F029F9002855 -:405200003DD1788C0006C00F00F0A2F905460004000C34D11D49084600F0A4FE0004000C2DD12289A17A2068194C002806D02060A280E68021810021FFF764F9684601F0DA -:405240001BFC054613486B460078E2888000001DC1B21B88A088D418A04206D3C01A801A80B201F09BF9044600E00B4C00F044FD002C04D100F07CFB08490120087000F03D -:40528000F5F82846F8BD00000100160025540010901E0008CC1E0008FFFF00006401000810B503480078012801D101F013F810BD6401000810B5FDF74BFB032801D100F086 -:4052C000FFFD00F0FDF901F059FC00F07DFE02490020087010BD00006401000800487047901E000870B5044600208A0703D08A07920F891A091D084B89B2DA889E885518D8 -:40530000B54206D81D68AA182260DA885118D98070BD024870BD0000901E000803001600004870479C1E000810B501F033FB10BD10B501F039FB10BD10B501F03DFB10BD54 -:405340000549002806D0054981800521017000214170817008467047010016008203000010B5FFF79DFF10BD10B501F02DFB10BD10B501F03BFB10BD38B505460020694608 -:405380000880002D09D0284601F03CFC0446684601F066FB002C02D015E00C4838BD01F01DFB2846FFF70EFF04000CD1284601F0B1FB040007D1FDF7CBFA032803D100F058 -:4053C00055FD00F093FD204638BD00000100160038B50446002069460880002C08D06189090A05D1617A102902D8E179102901D90A4838BDA0816946204601F0CFFB054626 -:405400006946A08909884018A081002D04D1102221460348FFF76DF8284638BD010016009C1E00087047000010B5084900200978002909D005F052FE044605F015FD201ACD -:4054400080B281004018C00810BD00006C01000810B5FCF793FE442202490348FFF749F8002010BD84460010AC1E000810B5FDF73FFA10BD10B519461046044C01F0C4F9CB -:40548000002800D00024204610BD0000FFFF000010B501F0E5F910BD10B501F0CBF910BD010010B5044806D0044A01201070002007F064FD002010BDFFFF00006C01000848 -:4054C00070B50024034D20462C7007F085FD2C70204670BD6C01000801480078704700006C01000870B5591C89B24C080B4D64000021451906E028685054000A5618891C6C -:40550000707089B2A142F6D3D80705D0D0182038D15CC47FD454C17770BD000000103C4030B50A4C002100195B1E07E054186478555C240225430560891C89B29942F5DBDB -:40554000994201D1515C016030BD000000103C40F8B50746FF2000F0F3F9164EFF2070701548164900684018406B0024410F301D0125022901D0457000E0447005700D4882 -:40558000801C4470384612F03DFB070010D112F07BFB3070012000F0D3F912F07FFB68460470447012F0E4FE6846457012F0E0FE3846F8BD6D0100086801000840F03D40C6 -:4055C000F0B50021094D5B1E08E0441924685718260A7E705454001D891C89B29942F4DB994202D1401900685054F0BD00103C4070B500210A4E5B1E09E0541864782502AE -:40560000545C2C4385192C60001D891C89B29942F3DB994202D1515C8019016070BD000000103C40F0B50599091FCFB200217E1E0AE054186478555C24022543144C0419D6 -:405640002560001D891C89B2B142F2DBFC0710D01C78515C24020E4A0C4381180C609C785D782102001D294384182160001DD9780BE059781A7809021143054A84182160B9 -:40568000D978001D9B780902194380180160F0BD00103C4038B509480024447012F0FEFA69460C704C70684612F062FE012069464870684612F05CFE002038BD6F010008AA -:4056C00010B501F08BF90A480078012805D1FCF73DFD012809D012F02FFF05490020891E0870062000F02CF910BD12F00FFFF4E76F01000810B50B46062816D006DC01281B -:405700000FD0032801D1FFF7C5FF10BD0B2811D0112813D01228F8D11146184612F018FA10BD0020FFF714FF10BD1146184612F09DFD10BD04480078107010BD1146184663 -:4057400012F016FA10BD000071010008F8B5184D184E28688019846AE00719D001F07AF90127012811D1002001F046FA052000F0E7F81149FF204870881C4078002804D10B -:4057800028688019416B39434163286880198762E0050CD50848801C0078052802D1042000F0CEF8FF202968013089198862F8BD6801000840F03D406D01000805490028B2 -:4057C00005D005494A784270097801700021084670470000010016007101000838B504000C4816D06178012913D801F0F7F8607812F074FD207000280AD1694608706846BD -:4058000000F090F869460878012801D104202070002038BD0100160010B5094900280CD00278082A09D24278042A06D205494A700078087012F032FA0021084610BD000022 -:40584000010016007101000810B504460448032C05D801F0C3F8204612F04CFD002010BDFFFF160010B50400054808D06178012905D801F0B3F8204612F07AFD002010BD9C -:405880000100160010B5FCF761FC0122084992040028084B086804D0C018016A1143016210BDC018016A9143016212F04FF910BD6801000880F03D400949087805280ED15F -:4058C0004A780848084900684018002A03D1416B490849004163C16A01221143C16270476F0100086801000840F03D4001480078704700006F01000802484078022800D09F -:40590000012070476D010008012807D0032807D0042803D0052803D0FF207047012070470220704710B5040002D012F065F9207010BD000001494870704700006F01000808 -:4059400010B50446FCF7EAFF062C01D9FF2C01D102480470FCF7CCFF10BD00006F01000801494870704700006D010008002070471CB5002469460C70022001902346054AE1 -:40598000054800F0F5F904480068401C00D1034C20461CBDE559001074010008FFFF00003EB50F4A01460D4800230124126800290BD0012908D1684600930481438169469A -:4059C000104600F0D0F980B23EBD68460093048143816946104600F0C1F9F4E7FFFF00007401000810B50089002100280BD0012802D0052807D103E000200DF061FD02E02A -:405A0000084600F0F5F8002010BD000010B50248006800F041FC10BD74010008FFB581B01F00154606463CD000F0D8FFFCF776FF2F49304B4878401CC0B2044606E02201A6 -:405A4000D218127A202A2AD0641CE4B2202CF6D3002406E02201D218127A202A1FD0641CE4B28442F6D32024202C1AD03470029821490202120A200602432001C618726042 -:405A80001F501B4869180078009120280CD0FFF7CBFC0746BD4223D3281AF0601BE04C70E2E7164805B0F0BD13484042854207D9FFF7F6FC014611488142F3D0009807E084 -:405AC000A8B2FFF7EDFC01460C488142EAD00020F060074804703472FCF70AFF0020E1E7FFF7EEFC781B012100F01EF9DCE7000078010008F01E0008C063FFFFFFFF000083 -:405B000070B5074CA5780E2D07D2FFF787FF002802D1A178491CA17070BD024870BD000078010008FFFF0000F8B520280BD2234D07017C19207A202805D000F04FFFE06877 -:405B4000002802D031E00120F8BDFCF7E7FEFFF76BFC012100F0E8F80020184EE060FFF7AFFCFCF7C5FE00F0ADF80546202819D0FCF7D4FE280186191148F168814205D90F -:405B80000646FFF78DFC0021304604E088B2FFF787FC0021F06800F0C7F8FCF7A9FE0948057002E00749202008702020034920720020C8516060E060F8BD0000F01E000858 -:405BC000409C00007801000810B5074CA178002908D0FFF7A9FF002802D1A078401EA070002010BD014810BD78010008FFFF0000F0B500258BB02E46089500F0EFFE00235F -:405C00006A4618462C49040161180C7A202C02D0C96800291DD000211154401CC0B22028F0D300240993099800280FD06846005D00283BD020482101081806684168089119 -:405C400000210160202241600272C160002D04D028E0012111540B46DFE700F033F80546202819D0144829010818C7681348874207D90021074600F057F8FCF74FFE3846A8 -:405C800006E00021384600F04FF8FCF747FEB8B2FFF706FCFCF72CFE094805700998002808D00125002E01D00898B047641CE4B2202CB8D30BB0F0BDF01E0008409C000007 -:405CC0007801000830B50023DB432020094C00210A011219157A202D06D0D268002A03D09A4201D808461346491CC9B22029EFD330BD0000F01E000830B50020084C05463A -:405D00002023020111190B72A550401C4D60C0B2CD602028F5D303480370457030BD0000F01E00087801000830B50B4D00231A015219147A202C0AD0D468002901D02418C6 -:405D400004E0844201D9241A00E00024D4605B1CDBB2202BEBD330BDF01E000810B50EC900F0B2FA10BD10B50EC900F0E9FA10BD38B50024E443054600290AD0052000909D -:405D80004B68097804A000F043FA2860401C00D00024204638BD00007461736B000000000EB5002005216A46009011815081034869460068FFF7D7FF0EBD000074010008D6 -:405DC00010B51D481D4C0178491E0170FF206070FCF7C8FD002825D0FCF72AFC01460020FCF7CAFDFCF7D0FD411C14DB80B2012811D862881248824208D0124B0021601C97 -:405E0000FFF77EFE002802D10220207010BD0D2010F086FE10BDFF20F530FCF765FD00F065F810BD0548084B02220021401CFFF767FE0028EBD110BD7A0100087C010008F0 -:405E4000FFFF0000855E0010C15D001010B503480078042801D100F049F810BD7C01000801480078704700007C010008044800210170FF214170FF21F53141807047000090 -:405E80007C01000806490878401E087005480178012901D003210170FF214170704700007A0100087C01000801494880704700007C01000801490870704700007C01000886 -:405EC00010B5054C6078FF2803D000F007F8FF2060700020207010BD7C01000810B502484078FFF771FE10BD7C01000810B5FF22043280210820FCF743FD0B4C6078FF28EE -:405F000001D0FFF7EBFF0848084B04220021401CFFF7F6FD002803D00D2010F001FE10BD0120207010BD00007C010008C15D0010C0080A21484380B20849C82801D2084848 -:405F400009E002461923C83A5B019A4201D2400801E0FF20F5304880704700007C010008FFFF000010B50F4A002313600E4A13600E4B18600E4801600E49012008600E49FA -:405F80000860282090600E490C4808600D49143008603C38506000F0C5F800F0F5F9002010BD00009801000880010008AC010008B00100089C0100088C010008182100087D -:405FC00090010008A401000800207047014610B50020002910D0094B1A689C685118A14209D25868196080188A0704D08A07920F891A091D196010BD002010BD8001000861 -:40600000F8B50024164E671E321F3D463168136806E01422624310328A58521C1BD0641C9C42F6D36A1C14D02C461422544322460C3288500C214843FFF7C8FF31680028FC -:4060400008510AD031680020103408517068401C70602846F8BD2546E4E73846F8BD000090010008F3B50026F64381B000281FDB2149096888421BD80299002918D01E4F63 -:40608000142204463F1D54432546396810354859401C0DD0FAF72FFAFCF740FC38682F1F4159C359994205DBFAF721FAFCF720FC3046FEBD214608310091465801590C20F9 -:4060C000704308180C220299FEF713FA0A48761C001D0068C159B14200D100260649009A091D865008684159491C4151FAF7FFF9FCF7FEFB0020FEBD8C010008002803DB64 -:4061000007490968884202D90020C043704704491422091D0968504310300858704700008C010008F0B500200D4A451E0346171F50600FE014260146714314680E1DA35119 -:406140000C461668083433511668083435511468401C635039688842ECD30020F0BD000090010008F3B50026F64381B0002845DB26490968884241D8029900293ED0234FAD -:40618000142204463F1D54432546396810354859401C33D0FAF7AFF9FCF7C0FB3868415900292DD0211D009146580C21005971430F46C1190C220298FEF79BF913480021D1 -:4061C000001D0068761C00590C34C0190160416081600E48001D00680159B14200D100260A49009A091D865008684159491E4151FAF77DF9FCF77CFB0020FEBD3046FEBD4B -:40620000FAF775F9FCF774FBF8E700008C010008FEB504460D4600201E49089E0860471E009001900290002C11D0486885420ED2002A0CD0002E0AD0642E08D808460C30BE -:4062400001681C2068430C18207A002801D03846FEBD0120226020721846FFF7D1FE6060401C13D06681A6810A4827610C3067610179A94200D205710021684601810A464D -:406280002846029B00F05CF82846FEBD00202072DDE700009801000810B5002810DB0949496888420CD807491C220C310968504308184068FFF722FF002801D0002010BD32 -:4062C000012010BD9801000838B50124009400F03DF838BDFEB50027184EFF433D4600240EE01C20316860430818017A002906D04068FFF703FF002801D0254603E0641CBF -:406300003079A042EDDA681C16D01C2130684D434419FAF7F0F8FCF701FB69466068FFF721FF0546FAF7E3F8FCF7E2FA002DD5D1216868468847D1E7FEBD0000A4010008AB -:4063400038B50024009400F001F838BD1FB500220C49541E0A60002811DB496888420ED808491C220C31096850430818406801A9FFF778FE401C02D0002004B010BD20461B -:40638000FBE7000098010008F0B50021114A4D1E174611710C3F0B46BD6016E008461C2460431668041D355114680646235014680836A3551468361DA353044616680A3432 -:4063C000335318301468491C255078688142E5D30020F0BDA401000838B500210091002811DB0F49097888420DDA0D4D04010C3529680859002807D0201D0818694600F0DA -:4064000073F9002801D0002038BDFCF787FA28680F34015D491E0155FCF76AFA009838BDB4010008F7B582B0002502986E1E06602F48D21C024017462E4A2C4610460C38C8 -:406440000178106805E02301C358002B0FD0641CE4B28C42F7D3711C29D03401211D40180191039900F02EF9002820D101E02646F1E72048016820460C300F521D480399A6 -:40648000026820460E3011541A480399026820460F30115403993846484300F0A1F8154900280968085102D00024009011E001251AE01048016801980818009900F02FF9B7 -:4064C000002801D0012502E00098C0190090641CE4B203988442ECD3002D05D10298054906600879401C0871284605B0F0BD0000FCFF0000C0010008F8B50D4600216A4658 -:406500008C461180002839DB23490978884235DA214B04010C3319680A59002A2ED020460C300B5A801C0E5C184670438018954224D3854222D2002006E007465F43BF182F -:40654000AF4206D0401CC0B2B042F6D36046002814D0114E271DC8190C366A46294600F008F900280AD168460088012808D030682946C01900F0D3F8002803D00120F8BD9D -:406580000020F8BDFCF7CAF930680F34015D491C0155FCF7ADF9F3E7B4010008F8B50F46002400F031F8002817D10C4900220B460C334A600EE021011D680E466A501D6804 -:4065C0000C36AA53B61C1D680F31AA551D68641C6A54E4B2BC42EED31A71F8BDB401000800280BD0C01C074A81085068890053884118994203D8936851601818704700201A -:4066000070470000B4010008F8B5064600200F4D009029700C0121466846FEF763FE00280CD129460C3100980860301B001F84B221466846FEF756FE002801D00448F8BD27 -:406640006C800098A8600020F8BD0000B4010008FFFF0000F8B5002827DB19490978884223DA174C05010C342168485900281CD028460C30085A009028460E300E5C401C88 -:406680000E5420682F1DC01900F064F800280CD12068002445590EE0094829460C300068C01900F03CF8002801D00120F8BD00982D18641CE4B2B442EED30020F8BD000093 -:4066C000B401000830B50D4604000BD0A800FFF787FF6060002805D000202570C0436080002030BD012030BD70B50D46040005D0002D03D00220205E002801DA012070BDF0 -:40670000FCF70CF90221615E60688900405828606088401E6080FCF7EBF8002070BD70B50D46040007D0002D05D002212078615E401E814201DB012070BDFCF7EFF86088E9 -:40674000401C00B26080616880000D50FCF7D0F8002070BD10B5040009D0227800216068FDF7D0FE0020C0436080002010BD012010BDF0B500231D46002802D00224045F0A -:406780000AE00120F0BD46689F00F6598E4201D1012503E05B1CDBB29C42F4DA15700020F0BD000001B503480122436811466846984708BD4821000810B50021052010F0E4 -:4067C0005DFA10BD70B50546FCF7A8F80D4C218A002914D0638A8B4209D100206082208201202070A3682A46E068984707E0E0680121C018F9F772FE608A401C6082FCF732 -:4068000077F870BD4821000810B50023084A00280BD0002909D001241470141D0BC413825382F9F74FFE012010BD1370F5E700004821000807B509480378012B01D0002059 -:406840000EBD02230370C16002820021418201216846F9F743FE01200EBD00004821000804480021C160018241820121017008467047000048210008FEB5114C114F089EDB -:40688000099D00280BD0002909D0002A07D0002E05D0002D03D0002B01D01B2B01D93C460CE00096019508F03FFC042802D0052803D003E0034C133400E000242046FEBDA4 -:4068C000FFFF160001001600FEB50E4C0E4F089E099D00280BD0002909D0002A07D0002D05D0002E03D0002B01D01B2B01D93C4606E00096019508F060FC042800D1002489 -:406900002046FEBDFFFF160001001600F0B589B015460F460646144C00F060F8002E20D0002F1ED0002D1CD0102239466846FDF7E0FD1022314604A8FDF7DBFD1021684605 -:4069400010F0DAFB102104A810F0D6FB2B46102204A9684608F000FC1021284610F0CCFB0024204609B0F0BD0100160010B50FF04FFD0AF0A7FC0EF089FC10BD10B50FF074 -:4069800049FE0BF0DBFC10BD10B508F007FE0FF097FB10BD10B50DF089F80FF049FD0AF02BFD0EF07DFC10BD10B50DF07FF80FF043FE0BF0D1FC10BD10B50DF077F808F0AC -:4069C00019FE0FF08DFB10BD10B5022801D100F089FAFEF78BFFFEF797FF10BD10B500F07DFBFEF783FFFEF78FFF10BD10B5FEF77DFF012801D1FEF77FFF10BD10B501886E -:406A00008A0703D08A07920F891A091D0379827B1031534359438BB241888C0703D08C07A40F091B091D447910316143C918438989B2DC0703D092015118103189B29A07B6 -:406A400005D5C0794422504340180C3081B2084610BD000001488078704700009C2100080100034803D00348008808800020704701001600C801000810B504000C4815D030 -:406A8000FEF74EFC817B44238A01C179594351181C312180827B9B005A43891880312180407AC000083008182080002010BD00000100160000B501464A7809781202114337 -:406AC000124A11488BB091421BD111490978002917D1FEF725FC0146102206A8FDF709FDFEF7FCFB01680191808869468881FFF775FF6846FEF766FB002802D1684600F016 -:406B000009F80BB000BD000002001600030C00006401000870B5184D00280BD0FEF700FC0446807A800701D4FFF72EFFA07AC00703D004E01048801E70BDFFF717FFA07A26 -:406B4000000701D4FFF71AFF204610F0EFFB002810D110F071FB00280CD100F0D1FD002808D110F05DF8002804D10DF05DFB002800D10025284670BD0300160010B5064C11 -:406B800010F066FC002804D110F094FC002800D10024204610BD0000FFFF160070B5044640890D46002681070BD0C00709D020881B38E12804D26088FB2801D81B2800D2FB -:406BC0000B4E2046FFF71AFF2880617A5322C900083140182880A17BD20051430922D20189184018034928800880304670BD000001001600C8010008014988707047000054 -:406C00009C2100080021002807D04268002A04D0034A80891288904200D2024908467047C80100080100160070B50546FEF75EFE074CFF280AD0FEF7E9FE012806D10020EA -:406C4000012D04D103494978002900D1204670BD020016005C21000870B5054613480E460078A84201D8002404E01148016AD02068430C18002C13D0228B50060AD5D2072B -:406C8000D20FA078022106F05DFA208B40218843208305E0D207D20FA078012106F052FA3146284604F050FC70BD0000CC1E00085C210008F8B50546002004460B4E0090C2 -:406CC0000FE022466946284601F008FD0098002801D010F001FBA878214603F0A0FF641CE4B2B08AA042ECD8F8BD0000F0210008FFB50446C034A068002103468C468E46B6 -:406D00002033997887B0002915D05E78F200511D06920591415C0091911D0291415CD51D0495475D151D0395455D82580192109A002A07D03CE00A99FF2008700899002070 -:406D400008605EE0002908D0DA78002A05D1002D03D0491E029AC9B281540098854227D3002925D1019810F0B7FAA268059900235354A26802995354A26804995354A268EF -:406D800003995354A26806995350A06820304178491C8907890F4170A16820318878401E0006000E887027D02148864601208446A0686346014620318A78002B0AD04E7804 -:406DC000F1004B1DC35C0093CB1DC75C0B1DC55C40580190002A28D0009885421FD20199401B4A190899C0B20A60B8420CD2099A2918C9B210700BE00A99FF200870089947 -:406E00000B600B480BB0F0BDE819C1B2099807700A980670F000A268001D115405E00A98FF2101700899002008607046EAE70000FFFF0000064A02235188891C89B2518047 -:406E4000814201D8102900D95380508870470000CC0100080148407870470000CC010008F8B517460D460446FBF758FDC034A16820318878042827D0E8780202A87810436A -:406E80000A78521C9207920F0A70A16820318A78521C8A70A1682022525CD6008D51A168721D8854A2680021331DD154F21DA168B8428F540CD33946FBF72AFEC0B20029A1 -:406EC00007D0401CC0B204E0FBF712FD0448F8BD0120A168B61D8855FBF70AFD0020F8BDFFFF0000FEB575480478FEF7FFFC012831D1FBF72DFD724D032831D1A87B012806 -:406F000029D800F033FF012803D100F003FF012808D0A87B002818D06849002020390A782B6A10E0A87B0028E2D10EE0824201D8002102E0D021414359188031C97801294C -:406F400009D0401CC0B28242F0D8FEF789FF032802D3FEF7CBFFAFE0FEF782FF0128FAD05848007800285FD004F052F900285BD00CF0C8F9002857D0FEF748FD002853D018 -:406F800004F08CF800284FD111F084F801284BD06878C00703D000F0F1FE012844D0287E002841D16878484F002803D1FEF794FA002860D06878000706D504F06FF8064623 -:406FC00000F0E4F8304377D16A7801A9684608F03DF90646B4426FD83C48864206D3FEF77BFA002868D06878002865D104F010F9002861D03648006A80B2029068784007C3 -:4070000003D56846008805F02BFA03F007FE6846008803F041FE03F027FF2E490988814203D10120FEF78CFC46E0FBF7D3FC054603F01AFF69468988401A301AA0420ADB09 -:407040000CF060F9012806D1FEF7E0FC012802D1387003F09BFE2846FBF7C0FC3878012803D01B4902980862DBE70120FEF762FC00F0E4FD1BE004F0CBF800281CD0102489 -:4070800003F0F2FE214603F017FD03F005FEFEF7BDFC002810D00120387003F077FE0020FEF748FC00F0CAFD38780128B9D1FEF7E9FB00203870FEBD0748FEBDEC1E0008B7 -:4070C0005C2100086D010008CC010008FF7F000040123C40E6010008FFFF000010B517480078002825D01648046AFEF7FFFB032821D004281FD005281AD103F061FE00F082 -:40710000B1FD03F0EFFE8007800F022810D10D48418800290CD08321095D002908D101210170207E0221C207D20FA07806F00AF810BD0024D9E700F095FD10BDCC1E000871 -:407140005C210008DC010008F8B50646002406F0DBF90546304606F00FFA03460A480021868A0DE001228A401046174628401F40002803D0002F01D1224394B2491CC9B257 -:407180008E42EFD82046F8BDF0210008F8B500252C460A4F0A4E0CE0D020396A604308180079002803D02046FFF7CEFF0543641CE4B23078A042EFD82846F8BD5C210008D9 -:4071C000CC1E000808B50020694648706846FEF705FB69460020085608BD70B50D4601F0BBFF04000BD02079002808D0FFF7F6FBE178A0782A4605F0E9FA002070BD02201A -:4072000070BD00000148007F70470000CC1E00088030C078002800D00120704700B500F001F800BD10B5094BD0225043196A85300A5C074C521CD2B20A54648A196AA24269 -:4072400001D300220A54196A085C10BD5C210008F021000870B50D4601F07EFF04000BD002F0F3FD002807D021462A460A310620FEF740FA002070BD022070BD70B50D4647 -:4072800001F06AFF040007D002F0DFFD002803D0207B2870002070BD022070BDF8B50F4606460146384606F025F9044614480078B04201D8002504E01248016AD020704380 -:4072C0000D18002D12D0284601F084FF032C0ED0002C0BD000220121304602F091F9284603F0C8FA0221284603F0DEFAF8BD3146384606F0C7F90146304606F05FFDEEE76B -:40730000CC1E00085C210008F7B52B4F0446F8682A4D0078297F884201D30720FEBD07F0CDFE002801D00C20FEBD2078611C05F06DFCFF2822D1F868297F007888421DD287 -:4073400005F0B6FC0646FF2816D02178621C03F083FB1B4821780068426B601C904705462078611C02F0B2FEFF2802D0314602F033FE002D04D01CE007251AE01F2518E02D -:407380000298002815D1F86841680078C200101A401C08180622611CFDF7ABF8F868217842680078C300181A1154F8680178491C01702846FEBD0000CC010008CC1E0008EC -:4073C000EC01000810B507F079FE002801D00C2010BD05F0EBFB05480068006B804702F011FE002000F0A2F9002010BDEC01000870B50D46044610210FF07EFE102160180C -:4074000006460FF079FE334610221946204607F0A3FE102130460FF06FFE0220287020460CF028FE70BD0000F8B504464078217802028006870FE0781143A67809050002BE -:40744000090D0643084601F087FE00210546F2B2002816D0002C10D0022F0ED0032F0CD0002A0AD00279092A07D0002A05D0134A8223527D1B5C9A4207D8288900210CF049 -:40748000E8FC20460FF028FF0D49002914D10D48224600682946436930469847084988420AD1284680308178F2B2491C8170FF232146284600F02FFAF8BD0000AC1E0008C5 -:4074C000FFFF0000FC01000800207047F8B5434D0646E8680078002805D007F0EFFD002803D00C20F8BD0220F8BD3078711C05F08DFB0446FF280ED005F024FA3848317891 -:407500000068826B701C90470746204602F0A0FD002F02D060E01F275EE0E968087800285AD0421EA24246D0C200101A4968821FC01F8A18085C114602F0C8FDFF2802D0E5 -:40754000214602F049FDE86842680078C100081A801F1118E000061B701C009010180622FCF7C7FFE86842680078C100081AC01F115C9155E868426800981218204603F08D -:407580006BFAE8680078401EC0B205F0DBF9E86841680078C200101A801F081806220021FCF7B0FFE868002142680078C300181AC01F11540CE04868E1000C1B611C4018B9 -:4075C00006220021FCF79EFFE968002049680855E8680178491E01703846F8BDCC010008EC01000810B500F05BFA0CF01DFE002010BD000010B5014605220A48FCF779FF97 -:407600000849052208463438FCF773FF01F000F9044880224438C17B1143C17300F088FA10BD0000A021000810B5044600786178E2780843A1781143084321790843617917 -:40764000084305D007F024FD002803D00C2010BD122010BD204605F0D1FB002010BD000010B50078002105F02FF8024902200876002010BD5C21000810B502788178407804 -:40768000002305F037F8024901200876002010BD5C21000810B50C4605F08AFC064A117E012900D1002000211176022121700CF03DFA002010BD00005C210008024A936853 -:4076C0000360D06808607047CC01000870B505460024800708D50948807A400604D500F06FFA002800D10224680705D500F086FA002801D104200443204670BDAC1E00089E -:4077000010B5FBF765F905F041FF074807F034FE012000F033F8040001D105F01DF909F041FD204610BD0000B81E000870B50024104D114E002811D0304608210C30FDF745 -:40774000D1FD0404240C13D1287FC100091AF068001DFDF7C7FD0404240C09D1F06800210170297F4068CA00521A0021FCF7CAFE204670BDCC1E0008CC010008F1B54D4874 -:407780009F22817A82B0114000248172FDF7C8FD0746807AC00706D0474802990068C268384690470446B87A800708D5002C7CD1424802990068C26A384690470446002CE8 -:4077C00073D1787A102809D83A492031009108770298FFF7ABFF040002D066E0384C64E038480025457045734571C5750576457645758570C5708571C573042144300173E1 -:407800001F21C1809B21417245732E4EFF2020363073757300F09CFB07F0CEF802F0F6FA30462030C5700298012814D100980178D02041433046FDF755FD0004000C08D131 -:407840000098007841012048FDF74CFD0404240C01D01B48FEBD002507E02846029902F04FFA040005D16D1CEDB200980078A842F3D8144900204431C87288724439887335 -:40788000401E4883FF200877B87A0121000700280848C27A01DA0A4301E052085200C272032030757075F175B1750849002008702046FEBDAC1E0008FC010008EC010008FA -:4078C000FFFF00005C210008D00100087A01000870B505460E46084605F016FE0446304605F04AFE0121A9400A46224001400A4301D0012070BD002070BD10B5044608467D -:4079000005F03AFE0121A140014201D0012010BD002010BD7047FEB51C4616460F46054602F0A8FFA878FFF779FC02460190334639460094284600F00DF8002808D1A87853 -:407940000199FFF789F9FF2C02D138460FF0C4FCFEBD0000FFB50D4685B004468178164610460E9F05F07AFE00280ED0FF2F27D0C8200159F800031D0A58C01DCB5C085C65 -:407980005278834216D9012716E02648D022016AA078504385300A5C002A01D1224A927C521E0A54FF2F02D128460FF095FC012009B0F0BD9006870F69460898088108E0E4 -:4079C0006878A9788006870FE8780002014368460181204602F044FA0390002806D032462946204600F0C3FD0398E1E7384600F0F4FE074604A800903B4602AA21460196F9 -:407A0000284600F02FFC094BB200A178D218FF208854684600893B46C2B2A078314605F047FBE1E75C210008F0210008C5210008F8B518480026009027E000253046FFF718 -:407A400083FB07001ED01448D022016A3046504385300C5C12E0601CFBF75AF8CCB23846E040C007C00F07D02146304603F0CCF821463046FFF712FC6D1CEDB20748818A82 -:407A8000A942E8D8761C0098F6B20078B042D4D8F8BD0000CC1E00085C210008F021000810B5FEF729F90020FFF768FE04F054FFFAF74EFF032803D1FEF7D8F9FEF716FA47 -:407AC0000FF0C6FC09F06EFB002010BDF8B5002400F04CF90125012800D1012406F0F0FE012801D1022004430F4E1049002004270A78336A0FE0D021414359180979002943 -:407B000007D001290BD002290BD0082181402143CCB2401CC0B28242EDD87470F8BD2C43F7E73C43F5E700005C210008CC1E0008F8B5FF2069461E4E0870F07B0024C009D1 -:407B400035D01C4D15E0D020316A60430F188320C05D01280BD102236A46FF21384602F0DAF901280ED04420C05D01280AD0641CE4B22878A042E6D8F07B4006400EF0730D -:407B8000002410E04520C05D00280FD10121384600F0D4FC0AE0D020316A6043081800F092FC641CE4B22878A042F4D80020F8BD5C210008CC1E000810B5FFF787FF10BD53 -:407BC000F8B500252C460B4E0EE049682C20604308180122694607F005FE0006000E01D0054D05E0641CE4B2B1680878A042ECD82846F8BDCC010008FFFF0000F8B5002535 -:407C00002C460C4E0FE04068E100091B401801226946FFF779FB69460870002801D0064D05E0641CE4B2F0680178A142EBD82846F8BD0000CC010008FFFF000010B5084C54 -:407C4000FDF754FE052809D02078012806D1FDF74DFE052802D020780028F1D110BD0000CC01000810B5FDF741FE012803D0FDF73DFE0228F7D110BDF8B504468079254681 -:407C8000603517460E46002806D0687FFDF79CFF0020A071FF206877A671002E09D0687FFF2806D12046A178024B3A467D30FDF727FFF8BD7992001010B5827904468A431E -:407CC00082716034607FFF2803D0FDF77DFFFF20607710BD30B50D4C022061690C4B8AB29978002901D0022906D11D785B78EB18282B01D9032002E0032900D10120510516 -:407D0000490DC0020143616130BD0000C0113C40BA21000800B500F031F8002807D0012805D0032801D0042801D0002000BD012000BD000002460448806901040020C90C12 -:407D4000114200D00120704700103C40014600B50020C90701D000F009F800BD014600B50020C90701D000F001F800BD0248006AC005C00F7047000000103C4004488069EE -:407D800080B2410501D5042070474007800F704700103C4038B50446000610D5FFF7EEFF01280CD1684603F033F86846007800F0E3FB012002F0E8FD0220FFF7FDFE034860 -:407DC000006801692046884738BD0000EC01000810B5034A0178117004F084FF002010BDBA21000870B50446FFF7C0FF002801D00C2070BDA27B01212848002A827801D025 -:407E00000A4301E05208520082706279012A0AD0C17849084900C1702079214E012806D0042804D00AE0C2780A43C270F4E70622E11D301DFCF75DFBA079B072194D28681E -:407E40000168204688472079012808D06188208806F0A2FB2080207904280CD013E02868C168E01D88470021E01D04F0A3FF0120C002208007E02868C168E01D8847002129 -:407E8000E01D04F097FF2079B070204604F038FFB07A05F0EBF8002070BD00005C210008BA210008EC01000808B50178FFF75EFF814201D10C2008BD002927D00720694640 -:407EC0000870FFF75BFF012801D0042808D11A49887A091D02F0FAF8FF2801D00B2008BDFFF718FF01280BD10121684600F092F8012801D0092008BD6846007804F09EF870 -:407F0000FFF7E8FE04F030FF012011E0FFF702FF012806D1684602F07BFF6846007800F087FB04F017FFFFF721FF0028FBD10220FFF742FE002008BDBA21000810B5034A41 -:407F40000178517004F0EEFF002010BDBA21000838B5002168460FF035F9002801D01F2038BD01210098C90201804180002505714571857107214173857304F0C1FE009CCF -:407F8000202200212046FCF7BDFA25702A460021601CFCF7B7FA204604F0A4FE204604F0C1FF00980FF098F90B2200210248FCF7A9FA002038BD0000BA21000810B5044695 -:407FC0000748844209D8204601F0C6F8002804D00089A04201D1012010BD002010BD0000FF0E0000074A9179491C8906890E917138220A4092014907090E114308430249E5 -:40800000084070475C210008FF0E0000C006C00E70470000F3B5174B0E4618781649401C164AC4B281B000200978126A10E0A14200D80024A14201D8002502E0D025654368 -:4080400055192F79002F07D0401C641CC0B2E4B28142ECD80020FEBD1C700021204601F04FFE2E712046FFF7BDFF2881019804700120FEBDE0010008CC1E00085C210008A4 -:4080800010B507F0D9F80222002100F003F804F08BFB10BD10B5094B40074907000F090F185A595A40185043C0086421FAF730FD002800D1012080B210BD0000C846001033 -:4080C000F7B54120405C88B015460C46002802D02878042802D200200BB0F0BD6946087200262046FFF794F8012800D00126204603A93C300191009023460327217F38333B -:408100003246606A07F058F902A8089900900B46019120463A4603A9283006F0E5FF06006846007A287002D1204600F0C1FA204601F0D2FD3046CFE7FFB587B00C460546AF -:408140001078694608724120005D1746002829D000262046FFF75CF8012800D00126204603A93C30019100902346217F38333246606A07F021F902A80090291D019120463D -:408180002B1D03A928300A9A06F0AEFF05006846007A388005D1204601F09EFD204600F087FA28460BB0F0BDFFB50C464020415C25468035107889B0164600290BD06946DF -:4081C0000873C0B2002814D000272046FFF720F8012810D010E0002100910190A078099B129A0C9903F038F80120E87100200DB0F0BD1F20FBE7012703200890204604A964 -:408200003C30019100902346617F38333A46206A07F0D2F8A0780C9902F066FF0F4A0999801803AA01900B4600920291204604A92830089A06F0A5FF02466846007B30701E -:408240000120E8710C99064DA3788900491912985854204601F04AFD1046C8E700103C40C5210008FFB506464020405C89B015460C46002810D0084601F0F2FD01280BD0F7 -:40828000288869468883002813D000272046FEF7BFFF01280FD00FE02878002100910190A078331DFF22139902F0D6FF00200DB0F0BD0220FBE70127204603A93C3001916D -:4082C00000902346617F38333A46206A07F074F8A078139902F008FF00900C4A009912988918029007AA009201912046331D03A928300C9A06F045FF02466846808B28809C -:40830000204601F0F3FC1046D1E7000000103C4070B5054680350446E9784030002908D0012905D10179042902D14078002808D070BD01790C29F8D00D29F9D1287800287E -:40834000F6D0A078FEF700FF2979C840C007C00FEED0A07802F058FC2979A078FEF79EFF70BD000010B518490446484028D0002101231A468A40904221D0491C2029F8D3BB -:4083800000212046C840C243520618D0400616D0491C1929F5D3A0B2210C020AC3B2884201D193420BD01F21204600F01BFA182805D8A00E062100F015FA022801D2002049 -:4083C00010BD012010BD0000D6BE898E70B50D460446FEF71DFF01280AD0E87AA97A00020143A07802F0E0FE012808D0002070BD00222421204606F03CF8242070BD28218F -:408400005A200155204600F037FD282070BD000008490978814201D8002004E00649D022096A504308188030C079012800D0002070470000CC1E00085C210008014610B558 -:40844000002049070FD5094A0021146A084A137807E0D0224A43A2181279022A04D0491CC9B28B42F5D810BD012010BD5C210008CC1E0008014610B5002049070FD5094ACF -:408480000021146A084A137807E0D0224A43A2181279022A04D0491CC9B28B42F5D810BD012010BD5C210008CC1E000810B5044601468034E06A002804D089780EF02AFF71 -:4084C0000020E06210BD38B50546002000902846FEF79EFE01282BD1284601F0B6FC002826D028792C46C01E4034030002F0FCF90705051B1B051B201B00284601F0B6FC10 -:40850000012810D0284605F09BF900280BD0284605F0A0F9012806D0A97868460EF068FE002803D105E06079002801D10120607138BD2846009905F0EDFD38BD4030417172 -:40854000704740308171704770B50546403528790C46052904D0002C05D1801E022802D8022006F003F82C7170BD017170479200101880304161704770B53C2502F0AAF8CA -:40858000040004D020460021473002F007FD0023FF222946204600F05BFD002C02D0A07802F00EF870BD000010B50B490978814201D8002404E00949D022096A50430C18A7 -:4085C00020217F200155002C05D020890BF0B4FC204600F06DF810BDCC1E00085C21000870B505460F480078A84201D8002404E00D48016AD02068430C18002C11D02079C2 -:4086000007280ED1204600F0BAF8204605F0E0FF0A21484302462046044B29467F30FDF76FFA70BDCC1E00085C2100089DA0001010B502F04FF8002802D0807801F0C0FF2B -:4086400010BD38B5044600206946087001236A46FF21204601F018FC054601236A46FF21204601F058FC2843012812D0214640318A79002A02D1087901280CD048790128A8 -:408680000DD0022A0FD0E079400602D5204605F04BFF002038BD204601F0C2FEF9E72046FFF711FFF5E7204600F028F8F1E7000010B50446408A00280DD00748F521807AD8 -:4086C0000840C00607D5204605F082FF82B2618AA07803F0BFFF10BDAC1E000810B50023054C0B60A48A944205D992001018803042690A60436110BDF0210008FEB506469F -:40870000002000900190A8208559B17868460EF06FFD002801D00720FEBD0098374660370290344678884034608238882082E08BA082304605F035FFA88CE18B884207D158 -:40874000288A3988884203D1688A7988884203D0F07920210843F071688A7880288A3880A88CE083FEF766FBA083E08BFEF772FBE0763046029905F009FD0198FEBD38B52E -:40878000044600200090A07900280FD14420005D052801D00E2809D1A17868460EF028FD002803D12046009905F034FE38BD10B501F054FE002010BD70B50C4605460146D0 -:4087C000204605F025F8002805D0A17828460EF095FD232070BD0D2070BD002800D102207047704770B500231A46491E0CE00446D440E507ED0F541C0646E640F407E40F89 -:40880000A54200D05B1C521C8A42F0D3D8B270BD30B50021124C0A46A05C002308E0C50701D0491CC9B201290AD840085B1CDBB20028F4D1012903D8521CD2B2052AEBD3F5 -:4088400002290BD207488118C87B0122082B03D29A400243D0B200E01043C87330BD0000A02100085C2100087FB504468034E16A05460E46183108226846FBF73AFE314672 -:408880002031082202A8FBF734FE102168460EF033FCE06A102108300EF02EFCE06A2B46083028331022694606F056FC7FBD10B504460821FFF700FA10212046FFF7FCF92B -:4088C0002079052822D0062820D008281DD1218900200BF07DFA072020712046FEF798FC012819D00E212046FFF72EFE002180200155204601F06EFE2046FFF7D7FD204668 -:40890000FFF7D6FE2046FFF79CFE10BD2089012200210BF041FADEE70521E4E7FFB581B01F4604460821FFF7C7F910212046FFF7C3F92079082803D0092804D0042503E068 -:408940000425012601E009250026204601F074FA00212046FFF7F8FD25712046FFF7A6FD0398002E02D0012808D00BE001280AD12089002202990BF00FFA04E02189029889 -:408980000BF026FA0127002180200155012F07D0204601F01FFE2046FFF753FE05B0F0BD5A2102980855204605F090FD054605480121428A2046FFF75FF9002DEED109202A -:4089C0002071EBE7AC1E000870B50C460546FEF71FFC012809D108212846FFF76DF90023012221462846FFF799FF70BD10B5044601F022FA2046FFF759FD00212046FFF759 -:408A0000A3FD10BD70B505461A24FEF701FC012809D108212846FFF74FF90023012221462846FFF77BFF70BD38B5044600200090A17868460EF0DCFB002801D00D2038BDFB -:408A40002046009D01F0A4FB2946204605F05CFC05480821428A2046FFF70EF906212046FFF772FD002038BDAC1E0008F8B50446002000900E46A17868460EF0B9FB002827 -:408A800001D00D20F8BD204604213830009D0EF010F9AC200059082118300EF00AF9012E02D1204601F074FB2946204605F0B0FB05480821428A2046FFF7DEF8022120469B -:408AC000FFF742FD0020F8BDAC1E000810B50446FFF7CAFE03212046FFF736FD204601F0C9FE10BD10B50021FFF7C0FF10BD000038B5044600200090A17868460EF078FBA8 -:408B0000002811D12046009A01F096F91146204605F005FC05480821428A2046FFF7ACF807212046FFF710FD38BD0000AC1E000838B5044600200090A17868460EF058FB5F -:408B4000002810D12046009905F0B5FC06480821428A2046FFF790F804212046FFF7F4FC204601F087FE38BDAC1E000810B5FFF79EFE10BDF8B50446002000900E46A178D4 -:408B800068460EF035FB002801D00D20F8BDAC20005908212030009D0EF08BF8204604213C300EF086F8002E02D1204601F0F0FA2946204605F053FB0E480821428A2046C4 -:408BC000FFF75AF8204601F08AFD00280AD0204600F026F8002803D009212046FFF7B4FC0020F8BD08212046FFF7AEFC204601F041FEF5E7AC1E000810B54421095C0829A0 -:408C000006D0092908D00A2901D100F09BF810BD0B21FFF799FC10BD00F002F810BD000070B504460079052805D0062803D0082811D00C2070BD03220621204605F019FCB3 -:408C40000F480821428A2046FFF716F811212046FFF77AFC12E006215A200155204605F035FC05466220025B0A20424301212046FFF702F8002D01D109202071002070BD6E -:408C8000AC1E000838B5044600200090A17868460EF0AEFA002801D00D2038BD2046009D00F074FA08202071204601F071FA2946204605F034FB0021412001550F21204630 -:408CC000FFF742FC204601F0D5FD002038BD10B5024601F0B1F810211046FFF735FC10BD10B50446FEF794FA012809D04420005D112805D100231A4606212046FFF70EFE6A -:408D000010BD10B5FFF7D3FD10BD000038B5044600200090A17868460EF06AFA00280DD12046009905F0C7FB05480821428A2046FEF7A2FF0D212046FFF706FC38BD000083 -:408D4000AC1E000838B5044600200090A17868460EF04EFA002801D00D2038BD2046009905F09EFB05480821428A2046FEF784FF0C212046FFF7E8FB002038BDAC1E000812 -:408D8000007870477CB536490978814201D8002404E03449D022096A50430C18002C5DD0204601F052F8002858D0207903280CD005280CD06220015BA07804F0D7F82646FE -:408DC0004036B079012805D030E0042000E0062020712BE00021204604F069FD25468035A86A002804D0A1780EF094FA0020A8620020B071E87801280CD02046C030417B6A -:408E00007D22114041732046FFF71BFC2079072805D007E02046C030417B7E22F1E72046FFF746FC0221204601F03EFD0E48407BC00713D02079042810D120896946088079 -:408E40006034207A88702089000AC870A07A08716089000A487168460BF028FA7CBD0000CC1E00085C210008A021000810B55A22115400F05DF810BD10B50446FF21FEF782 -:408E80001BFF09202071A07804F0B2F810BD000010B512490978814201D8002404E01049D022096A50430C18002C15D0204600F0DDFF002810D10B480068C169204688473B -:408EC000E07EC00608D4BC20005D012804D10648006801682046884710BD0000CC1E00085C210008FC0100080802000810B504468079002809D022215A200155FF212046EA -:408F0000FEF7DAFE204600F013F810BD10B5037902464032002B03D09176092B02D003E0002100E02221917600F002F810BD0000FEB5044600890027009027812079254662 -:408F4000803500282FD001282DD002282BD0002005F00CFB0AE002AA01A9204604F044FC002808D1A17801980EF0C8F9204604F067FC0028EFD0FF212046FEF79DFE204642 -:408F8000FDF798FE3049AF70887B002804D0401E0006000E887306D1F9F7C0FC2A4840304770F9F7A5FC26466036B07FFCF70CFEA86A002803D0A1780EF0ACF9AF62E86A1C -:408FC000002803D0A1780EF0A5F9EF6225464035A97E002934D0009800F0B6F8F07FFCF7F3FD2046FFF74CF8A07802F0C1F8204602F0ACFEA0780AF0E1F8E87B02F0B8FB5C -:40900000A87BFF26FF2805D0104909680A6C00219047AE73EE73A07801F0D2FA0B20FEF7CBFD01F02DF9F9F793FC032807D10648807B002803D1FF20F530FCF735FFFEBD71 -:409040001F21A976C7E700005C210008EC010008FFB583B01E461746054606F0D7F804006AD020460C303146009001F079FF2046062200211830FBF745FA2046062200218A -:409080001230FBF73FFA2D48224600683946836A284698470190049820702846FEF7B8F8012148402E4640366070002D11D028896080F07920710498002811D16879607120 -:4090C000F08BE08028466030018821814088608109E01B488069C005C00F2071002060800498022824D02846062248300099FBF700FAFF2F11D0114801210068026C38463E -:40910000904710482C220068416838465043021D8A180A30085C114601E02079009903F075FD0546FF2801D003F034F8B773F573204601990AF0CFFD07B0F0BDEC0100084F -:4091400000103C40D40100080A4610B5014600200AF00AFF10BD000000B50146FEF756FF084A1278824201D8002004E0064AD023126A58431018002802D002898A4200D0D4 -:40918000002000BDCC1E00085C21000838B504468034E16A002907D1817868460EF03AF8002801D10098E062E06A38BD10B5014600F056FE012803D08878FEF733F810BD01 -:4091C0000348026A8878D02148438430105C10BD5C21000870B5054604468035A879012811D10948A178026AD02048438430165C3046FEF76DFB002805D10220A871A07894 -:40920000314603F0BFF970BD5C2100080EB500220A216B460292198100905A811046029B00990EF04CF90EBD70B5104DA87A00281AD00F4C217FFF2916D0608B01F036F89D -:40924000012811D10020A872401E6083FF20207701F0EAFD044601F021FF010002D0204600F0D8FBFEF7E4FB70BD0000A02100085C2100087047000070B5104AC0B2117803 -:40928000491E11700E490978814201D8002404E00C49D022096A50430C18A07900280BD025466035687FFF2806D02046FFF71EFE0020A071FF20687770BD00007A01000882 -:4092C000CC1E00085C2100087047490510B5490F0B0001F009FB060704080C0C0F073E21FFF7C4FD10BD0821FFF710FE10BDFFF71FFE10BDFFF7FAFD10BD0000F8B52B48F7 -:40930000002500904DE0A84201D8002604E02848016AD02068430E18F9F700FB30464030C48A078B0021C1820183F9F7E1FA304600F08BFD012831D1A00702D52846FFF783 -:4093400021FDE00602D52846FFF7A2FDA00602D52846FFF75BFF600609D5F9F7DFFA1449002040314870F9F7C3FA00F005FF200602D5284600F020F8600702D5284600F071 -:4093800043FCE00703D021463046FFF79EFFF80704D00849B0780968496988476D1C0098EDB20078A842AED8F8BD0000CC1E00085C2100080802000805490978814201D8B5 -:4093C000002070470349D022096A504308187047CC1E00085C21000810B50446054800680168204688470448006801692046884710BD0000FC01000808020008F8B5054673 -:40940000FF20694608702888FFF7A6FE040035D000F01BFD002831D0207909282ED002236A460021204600F076FD012828D02046FDF7EEFE0646E07920210843E07120468C -:4094400004F052FA002823D0294601F005FA02236A46FF21204600F017FD01281AD04620005D00281BD02325E079DF210840E0712946204604F08FFB2846F8BD0220F8BD63 -:4094800068460078012801D02A20F8BD2320F8BD0720F8BD02204034A0710020F8BD002E05D02046FFF72AF90500DDD1E4E70C20F8BD000070B50E460C2501F0EDF80400D8 -:4094C00013D00025228929460A480AF073F80123FF2202212046FFF7BBFDA07801F0F2FB2046FFF725FD022000E000203070284670BD00000E200000F8B5044601F0CCF86C -:40950000002801D00C20F8BD6079A11D00F0DEFDFF2801D00B20F8BD02216846FEF77AFD012859D13248017868460078814201D8002504E02F49D022096A50430D18002D07 -:409540004AD000212846FEF7FFFF2E46002040367071B0712848002100684268284690470620FEF729FB2F46208A60373880E289A189A87809F0A4FCF083608A78800420E7 -:40958000F0760320B0831B4806228778A11D2430FAF7AFFF2079012820D06079F0710121A01D03F007FCFB20074012488770217E012918D0C278FB210A40C2700F482146FF -:4095C0000068826828469047A978204603F0C2F82846FFF7ECF8F8BD0920F8BD0020F07104200743E1E7C17804221143C170E5E7CC1E00085C21000808020008EC010008E0 -:4096000070B5164602461B480D460078D0211A4B5143904201D8002401E0186A4418002C26D0204600F01CFC012809D1186A8431405C1146FEF74CF9002801D104F07AFE5E -:409640000E483146006882692046904700280CD0204680308178A94201D3491B00E000218170208929460AF0F4FB204601F002F970BD0000CC1E00085C210008FC01000869 -:4096800070B505460088FFF767FD040014D000F0DCFB002810D02079092822D0A97825464035A976204604F011FF0646A879012804D06220025B02E0022070BD6A8A0A20C3 -:4096C000424301212046FEF7D7FA01F055FB8021204602F059FD01F06BFB002E01D109202071002070BD0EB5002218216B460292198100905A810120029B00990DF0DFFE10 -:409700000EBD0000F8B5194E0025B07A002824D101F0C4FC26E001F0BBFC1549401801680068CCB287B22146384600F0BFFD012814D010480121478304774577B1720E49AE -:409740000978A14201D8002003E0006AD0214C430019002801D001F08DF8F8BD01F09EFC6D1CEDB20028D6D1F8BD0000A021000800103C405C210008CC1E000810B5044670 -:40978000C0060FD50C4900200B6A0C490A7807E0D021414359180979022909D0401CC0B28242F5D806480068C1692046884710BD00F050F8F6E700005C210008CC1E00081E -:4097C000EC01000810B50088FFF7C6FC040007D04420005D082805D00B2803D00C2010BD022010BD2046FFF71BFA002803D009212046FEF7A9FE002010BD70B50546008863 -:40980000FFF7AAFC040008D0264640363079082805D00B2803D00C2070BD022070BDAC20005910220830A91CFAF763FE2046FFF71BF83079082804D02046FFF783FA0028AF -:4098400003D00A212046FEF77FFE204601F012F8002070BD70B51E491E4D0978814201D8002403E0D0212A6A414354182179022904D0002901D003F0BBFB70BD01228321A4 -:409880000A5501F03FFC032020710820FEF794F900212046FEF758FE0121204601F004F8204647300121064601F078FB0A480068416A304688470246012300212046FFF736 -:4098C000C7FBA078FFF788FDA87B401CA87370BDCC1E00085C210008EC01000810B50C46002121700088FFF737FC03000BD000F0ACFA002807D00948F521807A0840C00684 -:4099000003D4112010BD022010BD022020705A8A188900210AF044FB002010BDAC1E000870B50088FFF718FC040008D000F08DFA002804D0E079C10903D0002070BD0220A8 -:4099400070BDC1068025002908DA2843E07108480221428A2046FEF78FF9EEE7204600F053FC0028ECD1E1792943E17170BD0000AC1E0008F8B50F46002569460D702E4628 -:409980000088FFF7E9FB040010D000F05EFA00280CD0E079410638D4E17E4A0708D48A074021002A1BDA0843E0712EE00220F8BD05F02CFC067021894180E1898180A17EC3 -:4099C0004170218A0546C180022038702978104809F002FF28460AF087FA0020F8BD0843E07102236A460C21204600F04DFA00280BD102236A46FF21204600F08CFA0028CC -:409A000003D1204604F090FD05462846F8BD00001D0400003EB500220F236C460292238100910190628169460EC900200DF047FD3EBD0000F8B50F46054600F04BFE04003A -:409A400052D0032020710026832006552046E6703146473001F0A2FA05F0EEFB25464035EA8B6179FEF716FB1030FF2281B249321346204604F094FD0920FEF79DF8A07884 -:409A800001F05CFB0021204600F00EFF00212046FEF75AFD6E710023AE713A4619462046FFF7D6FA1248002100684268204690471048817B491C8173A078FFF78DFC00F0DD -:409AC000EBFD040007D00B480021243003F072F9204600F0C3FCF8F73BFF032803D14034E08BFCF725FAF8BD284603F081FAF8BD080200085C210008F8B50446FF206946AD -:409B0000087000262088FFF727FB05001AD0FDF77FFB002812D02948807AC00710D0284600F093F900280DD0287903280CD004280AD0072808D0092836D103E00C20F8BDAE -:409B40001120F8BD0220F8BD4420405D01282BD02846FFF71BFB070028D00822211DFAF7C8FC3846A1782030017261881022090A417221460C311838FAF7BBFC02236A46C1 -:409B8000FF21284600F0C7F9012811D002236A460521284600F078F9012809D0284600F03FFC06463046F8BD0D20F8BD0720F8BD01212846FEF7C8FCF4E70000AC1E0008CD -:409BC00010B50E4AC0B21178491E11700C490978814201D8002404E00A49D022096A50430C18208B102108432083A07803F000FA08212046FFF78AF910BD00007A01000855 -:409C0000CC1E00085C21000810B517490978814201D8002404E01549D022096A50430C18002C1AD020464030417902290BD1002141718320005D012810D02046C030417B4E -:409C40007D2211404173207E0021C207D20FA07803F078FA2046FEF7F4FC10BD2046C030417B7E22EDE70000CC1E00085C21000870B505460E460088FFF76EFA04000BD0BC -:409C800000F0E3F8002807D01248F521807A0840C00603D4112070BD022070BD6020005B5E21095B401C48430004C10C6888884201D2122070BD60822079072802D1204699 -:409CC000FEF7F6FC02203070208900210AF090F9002070BDAC1E0008416A491C416204D1017F491C4906490E01777047016A491C016204D1417F491C4906490E41777047CB -:409D0000F3B506463D4881B00078B04201D8002404E03B48016AD02070430C18002C05D0FBF7FEFA807AC00702D00EE00220FEBD2546C0352F68F8F7F1FDD02200212046E3 -:409D4000FAF7E0FB2F60F8F7D3FD2E480299006882682046904705004DD1A6700026E676267131462046FEF7EFFB204600F064F8204603F05FFD244F6782862006551F48F0 -:409D8000F5212038807A084000D00120A07526830298002805D020462021C030FBF7A2FA85B2C020005920220021FAF7ABFB4C20A664065320464030C671FF21C1738173FA -:409DC0000122603042750275C27582754276027603228276C27606774277002022186032401CC0B251770328F8D305484030C07820736034E780E8B2FEBD0000CC1E000857 -:409E00005C210008FC010008FFFF000010B50020074B084AFF2119541418401CC0B221740428F8D31F2119541018017410BD0000A02100085C2100080021416201770162FA -:409E4000417740300170417070470079002805D0012803D0022801D0012070470020704780308079002800D00120704740300079002807D0012805D0052803D00E2801D05F -:409E80000120704700207047F0B5002405461470C07E0126C006002803DA0124142900D116702846FFF7E2FF002803D00124052900D11670E87E470708D480070ED5012469 -:409EC0000C290BD11670E87E400707D5E87E800704D4012B01D10C2905D001248320405D012802D008E00024F8E7A879800703D50124082900D11670012B02D1092900D1FB -:409F000000242046F0BD10B5807803F035FB002800D0012010BDFFB581B0019F04980026403714460D46022810D17879012803D1012D00D120700126B879022800D10126B7 -:409F4000019803F087FC012800D1012600232370797980208122022908D1012D02D0002D02D002E0227000E020700126B979012908D10126002D02D0012D02D002E02270E9 -:409F800000E020700198A030017F032902D0042908D003E0162D11D101262670007F022804D00BE0162D09D1002607E00126182D03D0162D01D0172D00D12270049802282E -:409FC00006D12078C00702D00120207000E02370304605B0F0BD000010B5084A1278824201D8002004E0064AD023126A584310184030C173084602F0CDF810BDCC1E000831 -:40A000005C210008F8B500240F4D104E17E0A04201D8002103E0D020316A604309180846FFF713FF002808D00F464037F87BFF2803D001F09DFBFF20F873641CE4B22878B3 -:40A04000A042E4D8F8BD0000CC1E00085C210008F8B5064600240F4D18E0A04201D8002104E00D48016AD020604309180846FFF7ECFE002808D00F464037F87BB04203D13E -:40A0800001F076FBFF20F873641CE4B22878A042E3D8F8BDCC1E00085C21000810B50449C0B20A78521E0A70FEF77EFA10BD00007A01000810B50449C0B20A78521E0A7098 -:40A0C000FEF78EFA10BD00007A010008F3B50024C70781B0134EFF0F1FE0A04201D8002504E01148016AD02060430D182846FFF7ACFE00280FD02946062248310298FAF76A -:40A10000E9F9002807D14035E879C007C00F874201D12046FEBD641CE4B23078A042DCD8FF20FEBDCC1E00085C21000830B50446FF281BD000210E4B0E4D14E0884201D8C3 -:40A14000002203E0D0202A6A484312181046FFF77CFE002805D04032907BA04201D1012030BD491CC9B218788842E7D8002030BDCC1E00085C21000810B500F055FE0446D0 -:40A1800000F08CFF010002D02046FFF743FC10BD70B5054604468035A879002827D1FF20E075174BA078D0225043196A85300A5CD026521CD2B20A54A078196A7043114E35 -:40A1C0008530768AB24201D300220A54A078D02250430246196A85328E5C84300E54A1783046FDF775FB002802D00120A87170BD0220A871A078314602F0C4F970BD000049 -:40A200005C210008F02100087CB50446FF206A46002110700191014602232046FFF77BFE01280FD002236A4608212046FFF72CFE012807D0A17801A80CF0DAFF002809D09E -:40A2400007207CBD68460078002801D023207CBD2A207CBD2046019DFCF7DAFF00280BD02946204604F016F804480221428A2046FDF702FD00207CBD11207CBDAC1E00088D -:40A2800070B50024074E084D07E0D020316A60430818FEF7D6F9641CE4B22878A042F4D8002070BD5C210008CC1E0008F0B50F46810785B0890F0291000A6946888055484A -:40A2C0000078B84201D8002404E05348016AD02078430C18002C26D000F0DAFE06466846808800280BD00298012840D002283ED0032809D04120005D01286ED085E047481F -:40A3000030180068608180E000200290A17802A80CF046FF002807D04120005D012877D12046FFF7D9FC73E06846029D82882946304602F095FF394830180068608120468A -:40A34000FDF7E6FF01AA21462846FDF7B9FE002807D0384600F0C0FCA17828460CF0B0FF28E0EF772946204603F094FC4DE00020009020890390A17868460CF0FFFE0028B7 -:40A3800002D0002005B0F0BD6846009D8288291D304602F065FF2148301800686081384600F09AFC2046FDF7B3FF8020005D00280FD106E03D205A2108552046FEF75CFD04 -:40A3C00026E001AA21462846029BFDF7B5FE002804D028460CF06AFFECE713E00298FEF700FA01460398287003980901000A0843687068468088A870000AE8702846FFF795 -:40A4000072F905E02046FFF767FC384600F064FC0120B7E7CC1E00085C21000800103C4070B501790546032904D0042904D0072908D109E0052400E006240121FEF716FB45 -:40A44000002805D00D2070BD0824FEF7EDFAF7E7284600F00FFA2C71002070BDF0B587B0054604F0D3FE044604F0C9FE019004F0BCFE009004F0CEFE029004F0DDFE0690D7 -:40A480000098207000982F46000A607000984037000C0590A07000982E46000EE070F87E20710198607101986036000AA07101984149000C0490E071387F2072B88B0522E1 -:40A4C000000A6072B87FA072F88B000AE072307820733088000A6073B078A0737088000AE073204610300391FAF703F80020E870A878039902F0C8FD0020687106980299B5 -:40A500004001084300216175A075000AE07504E0F98B288849004018288000F0A5FC2988042200F05FFE0128F2D023481038417C027C090211433182C17C827C0902114389 -:40A540007182007DB0820298307600983081059870810198B0810498F0811848298801601821204602F0A6F87088F98BC000F8F7CFFA124980B28860012183204155A878C6 -:40A5800000F07EFBB188A87802F0F8FBF98BA878042208F02BFAF8F71DFA0446A87808F0E7FC06494031086200F07CFB2046F8F715FA07B0F0BD00006C21000800123C4046 -:40A5C00010B50021FFF79CFB002801D0002010BD012010BDFEB50546803001908079002839D0AE780096D021294C4E433746206A8437C05D0099FDF780F9012828D0226A66 -:40A600002046D15D491CCCB22249498AA14200D80024019B002199713346FF218533D154026A8636D1550021006A0B4681550A46009802F0C7FAE97DFF2904D0284603F0EB -:40A6400064F8FF20E87503F075FE0026114F1AE0019803218171FEBD00200090224669462846FEF73BF80099002904D0FF231A462846FDF750F9641C788AE4B2A04200D8C0 -:40A680000024761CF6B2788AB042E5D8FEBD00005C210008F021000800B5022000F002F800BD000030B5044608480021036A0848027807E0D020484318180579A54204D012 -:40A6C000491CC9B28A42F5D8002030BD5C210008CC1E000800B50120FFF7E4FF00BD10B5044604F093FD218901808034E16A4160E16A2831816009F085FB10BDF7B50746CF -:40A700000C460879897882B0092807D0F9772046FFF7A6FB4D4E012806D00FE038460CF0EDFD022005B0F0BDA178D0204843326A8430105CFDF7CCF8012824D0A078FDF7FC -:40A7400067FE01281FD03D780121384603F0CCFC2046FEF72BFD0190A17802F07FFF002818D0204681213A4AC0300C2D3ED023DC26464036002D26D0012D27D0062D33D07D -:40A780000B2D4BD128E06846027C21463846FEF713F8C7E7A078D0225043316A85300A5C002A01D12B4A927C521E0A54A17838460CF0A4FD0720B5E7122D24D0142D25D07E -:40A7C000162D2BD104E00122B27101E002227271427B0A43427321E02046FCF719FD01281CD10020307019E00120FBE7E07E400704D4528A04212046FDF73EFAE07E022176 -:40A800000843E0760AE0528A102104E0E07EC00604D5528A40212046FDF72EFA009504AA21463846019BFDF7BFFC69460A7CA0780323019902F03CFCA0780199FCF70CFA8B -:40A84000A17838460CF05AFD00206BE75C210008AC1E0008F02100088A8802804A884280CA8882800A89C2808A890281498941817047000010B50246803293790021002BC3 -:40A8800003D19278002A00D00121064A927A002A00D000210279092A00D10121807802F085FC10BDA021000870B50C460546FCF7AFFC00280BD1012C06D92879092806D06D -:40A8C0002846FFF720FB0446002C02D004E0012402E0287EC007FAD1287E2146C207D20FA87802F02FFC70BD30B47446641E2578641CAB4200D21D46635D5B00E31830BCEC -:40A90000184700000B4B01280BD002280BD004280BD008280CD10748803002630548A83005E0202002E0382000E05020C01801607047000000103C400149886070470000A8 -:40A9400000103C4010B50446FF20F130012C04D0022C05D0042C08D105E0FF20D53004E0FF20D93001E0FF20DD30002202F074FD03490869034A80B2A0431080086110BD63 -:40A9800000103C40E2010008034A1169034B89B2814319801161704700103C40E2010008034A1169034B89B2014319801161704700103C40E2010008F8B5244F14243A680C -:40A9C000054665432C46936813341B5DF1269B0036019B191E4E9B1900931E68B6B2760876001E602C2306465E43002909D190685168035D301D08181649FF22C96902F027 -:40AA000007FB3868A91D80688022035D40181149896A02F0FDFA38680E498068096A035D4019202202F0F4FA38680A4980680C35035D4019496A402202F0EAFA3868012187 -:40AA40004068805B084300990860F8BDD401000800103C40F0210008F8B505460120A84086B214460F46012231467C2002F0F4FC3A463146782002F0EFFC607826780002EC -:40AA80000643E078A27800020243607923790002034307480C2180694D430649401944182660001D44182260001D40180360F8BDF021000800103C40401880B270470000EA -:40AAC00030B5124BCC061B7849095B0701255B0F640E0902ED02012B10D0022B0ED0032B01D0042B09D18007800FD2072843120E0243144306482143816230BD044321439D -:40AB0000D001084303492843886030BDF021000800F13D4080143C4010B5234A12785207520F012A29D0022A27D0032A01D0042A22D1421C13461C78007822465C782402D5 -:40AB400022439C78DB78240422431B061A431202164C0243A260481C024613780978184653781B0218439378D2781B0418431206104300020843E06010BD4278037812020B -:40AB800013430B4A1361C37880781B021843506148780B78000203439361C878897800020143D16110BD0000F021000800F13D4000143C400B4A12785207520F012A09D061 -:40ABC000022A07D0032A01D0042A02D1064A106051607047054A83B21360000C5060916070470000F021000800F13D4000143C40044A002180180268491C89B21029FAD3A2 -:40AC00007047000000103C4010B50C4602F08CFC01494018046010BD00103C40704770B50C46054600F018F821462846FFF7ECFF70BD0000002310B5F121064A09011846D3 -:40AC40008C182360091D401CC0B289B21028F7D310BD000000103C4070B50C46054602F069FC0549054A097D694309190902214389B28018016070BDF021000800103C40A4 -:40AC800010B504490863FF20012220211D3002F0E3FB10BD80103C400149086070470000C0103C4000B50549012088600449442008600420FFF774FE00BD000040123C40AD -:40ACC00000103C400349086302494520803908607047000080103C40054AD1687C2389B2994380000843D06002494D200860704740123C4000103C4070470000054B19688B -:40AD00000722920289B2002801D0114300E0914319607047001F3C4010B5094800784007400F012808D0022806D0032801D0042801D10DF067FA10BD02495420086010BD11 -:40AD4000F021000800103C4010B5094800784007400F012808D0022806D0032801D0042801D10DF057FA10BD02495320086010BDF021000800103C4000B503490888488003 -:40AD8000FFF702FE00BD0000E201000810B5F7F7A7FD012802D10320FAF756FD0120FBF72BFF02495020086010BD000000103C4000B502484088FFF7F3FD00BDE20100082D -:40ADC00010B5FAF779FD10BD03490868012280B2D203104308607047001F3C40884201D8081A03E00022D243101A401880B27047884201D9401A00E0081A044980B28842D4 -:40AE000003D901210904081A80B27047FF7F000000210170704710B50B4602460021F820FAF760FB10BD00000148006BC0B2704780103C4010B50A490978814201D8002443 -:40AE400004E00849D022096A50430C18F7F766FDC0342068C48BF7F74BFD204610BD0000CC1E00085C2100080148806880B27047C0103C400148406880B2704740503D4038 -:40AE800000280DD00C4A90690870000A4870D0698870000AC870106A0871000A48717047064A10680870000A487050688870000AC8709068F0E7000040103C40C0113C4048 -:40AEC00000B5024A00F004F800BD0000FF7F000000B51346FFF782FF984201D8022800D2002000BD0148006980B27047001A3C400148406A80B2704700103C40014840698E -:40AF000080B2704740103C400148006880B2704700503D400148C06B80B2704700103C40F8B50646002402F0EFFA0546304602F023FB064609480021878A0BE001208840A0 -:40AF4000034602462B403240134301D02043C4B2491CC9B28F42F1D82046F8BDF0210008002910D00B4B196B8AB2596B9B6B89B20270120A42708170090A9BB2C17003715B -:40AF8000190A41717047044B996A8AB2D96A1B6B89B2EDE700123C4040103C40012905D0054989690904C90F017070470249403189688907C90FF7E700103C40FFB581B095 -:40AFC00000242D4B2D4D0B9E002805D0022803D003283ED006281DD1A86B2F4684B2A004850E2007000F012802D0252D1AD916E00C2D14D106230021F820FAF773FA0623DB -:40B000000021F820029AFAF76DFA002E01D0B86B1DE0002304980480184605B0F0BDFFF7D3FEF9E706230021F820FAF75BFA062DEFD30A98002806D0AD1F0246ABB200214B -:40B04000F820FAF74FFAB86B002E80B2E1D03080DFE7A86B84B2A004800E0C28DFD106230021F820FAF73EFA06230021F820029AFAF738FAA86BCCE7FFFF0000C0103C40B9 -:40B08000024800684005C00F70470000001F3C400148C06870470000F02100080248806A8006800E7047000000543D40084910B58000084B4218D9687C2489B2A1430843D9 -:40B0C000D8600548101800688006800E10BD00003044010040123C4000103C400148406880B27047001A3C4010B5054B1A8A9C8A5443444398684A432018801810BD0000F4 -:40B10000F021000870B50B4908630B49D024444325460B6AFF2285355A5523460D6A8433EA54096A002286340A550123114601F049FD70BD80103C405C21000870B50B4A6C -:40B14000D02141430D46146AFF23853563550C46156A84342B55126A00238631535400220123114601F02EFD70BD00005C21000870B50B4AD02141430D46146AFF238535E8 -:40B1800063550C46156A84342B55126A00238631535402F0C3F90349C98D02F07BF870BD5C210008AC1E000870B50D460B490978814201D8002404E00949D022096A50435D -:40B1C0000C18F7F7ABFBC0342068C48BF7F790FB02222946204600F005F870BDCC1E00085C21000810B50023884201D8081A03E00024E443201A4018044980B2884201D83A -:40B20000824200D90123184610BD0000FF7F0000024840680006C00F70470000C0103C4070B55478157824022543D47888232602947834435679127936023243002900D02C -:40B2400098230449086303488038181805604460826070BD80103C40FFB581B015460E4607460A9CFFF740FF002C0AD022460B9B049902F021F90549B0004018C55505B066 -:40B28000F0BD0B9A049902F0FDF8F4E7C5210008F8B59C469308394D002403E0A600AF598751641C9C42F9D39207920F4B1C002A06D0012A15D0022A27D0032A39D13EE05F -:40B2C0001D7809782A465D782D022A439D78DB782D042A431B061A4312020A43A100425027E0A600AD590C78CB7822464C781B06240222438C78240422431A431202EBB24E -:40B300001A438251C978301812E0A200AB584C780D7824062D042C431D042D0E2D022C43DBB21C438450CB788C7819022143101841606046012801D1FFF7EEFCF8BDA40087 -:40B340002A59097815022D0E09062D04294315042D0E2D022943D2B2114301511A461B78194653781B0219439378D2781B041943120611430902090A2018D9E750F13D400C -:40B3800070B50C4D2A785407640F012C08D0022C06D0032C01D0042C01D100F00FF870BD02460B46044CA888082121620021FAF71FF970BDF021000880143C40F0B52B4A11 -:40B3C00008232A4E503A5363546B9C435463820703D000238F08BF001DE08C08002203E09300C558F550521CA242F9D3A30014E0C218521C144625782A4665782D022A43D8 -:40B40000A578E4782D042A4324062243C45C12022243F2501B1D9F42EAD88A0724D089070022890F012904D0022904D0032917D107E0C25C14E0C018417800780A0202437D -:40B440000EE0C01801460A7810464A78120210438A78C97812041043090608430202120A0248103818180261F0BD000050F13D4070B51A4909784907490F012921D0022911 -:40B480001FD0032901D004291AD10446FFF75CFC134D00216018401C02461378184653781B0218439378D2781B04184312061043625C000210434A191061091D1029E9D3EB -:40B4C00070BD212504466D01FFF73EFC1023224600212846FAF78CF870BD0000F021000800F13D40154909784907490F012918D0022916D0032901D0042911D1411C0A463B -:40B5000013780078194653781B0219439378D2781B0419431206114309020143084801627047417802780902064B0A439A63C178807809020843D86370470000F021000805 -:40B5400000F13D4040143C4008B5094A127D4243521812020A4380210A4369460A8001F0E9FF69460988034A8018016008BD0000F021000800103C40FEB5044600266846DD -:40B580000680868006810125A078FBF7DDFD0746A078FFF7C5FC0743A078FFF787FD0743A07802AB01AA694600F020FA3146264660363177002F55D12079092852D06846F3 -:40B5C000808800284ED0204602F03AF9002849D0684681882046C030002909D00168CA79022A05D0CA7AD30902D05206520ECA720068817A002905D0C17AC90902D1217EAF -:40B60000890600D50025214640318A79012A06D04979022903D0BC21095D02290CD1718BC08BFFF7DBFB69468988C91C884202D30D49884200D9002568468088002811D066 -:40B64000012D0FD10421204600F0B0FD01203077684681880422204600F0CAFD208B082188432083FEBD0000FF7F0000F8B5044680782521C001C9024018394940184069BB -:40B6800086B2F7F74BF9FFF7C3FD002864D0207E000761D420466030017F01295CD146210B5D00252146C0312A46012B07D1438B0868C08B834251D0401C83424ED0294888 -:40B6C00003689BB200938368FFF7CEFB5F06264B03D5009D2D1AED18ADB20F687988814201D2401A05E0814209D93F888F4206D2081AC01882B21D48824200D900221B4848 -:40B70000854229D8D00700D0521C50083146F7F7FFF907464800301A4004010C0A2901D9012300E00223581C704340000A30A84212D81021204600F039FDF81881B210226A -:40B74000204600F055FD204600F08EFC00F01EFC208B082108432083F7F7CAF8F8BD000000103C4000503D4000000100FF7F0000FF2806D0034B196A012289B28240914376 -:40B7800019627047801F3C4030B513490A680146C0310B689A80037902464032022B13D00B6800241B88958B6D00EB181B190C689BB223809279012A05D160304088096847 -:40B7C00000011818888330BD044B5B6A93830B6803249B88E7E7000080503D4040123C40F0B585B0002704460546C03403972068252201880291A978D202C90189182E466D -:40B8000040360191B17901297ED044494A68828088682168802208822068022781880291C17A1143C17203F007FDF28B6979FCF731FC0146284660300090C18203F0FCFCF0 -:40B84000B18BC9198AB26979FCF724FCB179344A012921685FD00B8AD31A1B18D833CB8103992F4B0918F07E5843081821688881B08B410002980818C01987B22068591EAA -:40B88000078020680290C089884210D9491CF7F73FF90299381A088027682149F889F7F737F9F9812068022901D20221C181B07901282BD1009920684988028809015118B1 -:40B8C000818300980321C08A09030005000D8843A035297D8907C90F09030143687D8007C00F42030A430F4901984018C26221688989C16320680B49028A0198403140185F -:40B9000042602168C98900E002E0C16005B0F0BD8089039087E7CB891B18A0E780503D407102000000103C40F8B52F4DAA6AEB6B92B29CB28378E606F60EB34214D12A4E7F -:40B94000034689074036C03300290EDA002160300177186801884180F06819680880A00602D41968A009C881F8BD1968CC8B641CCC83696A1C68A183E96A1C685704A18007 -:40B9800011061C68890FE17191041C68890EA1711968FF0FCC7AD20B3C43CC7219688A728321095C002910D11968002A07D10A884A80F1681A681180696B1A68D181296BBA -:40B9C0001A681182A96B1A68918119688A7A002A06D000224A830022042100F0BFFCF8BD4A8B521CF6E7000000503D4010B52524C001E4020019044C001944690C80816928 -:40BA00001180C069188010BD00103C402522C001D2028018024A8018406908807047000000103C403EB5044600F06EFD684606F0D5F9684600780022022836D26846817864 -:40BA40001B4803781B48994201D3002103E0D025036A6943591821604078430706D4800707D514482030007E800702D060318A8015E00A4660326846D388808883420DD9E2 -:40BA800083235B5C002B07D1C0310968C9890C2902D8012800D9401E908000E093800298002801D000F0F8FC3EBD22603EBD0000CC1E00085C21000802488068C006C00ED4 -:40BAC0007047000000503D4008B5034680786946FFF79CFFFFF7C8F9C0331968801C0988401A01210904401880B24910884207D2694609884900F7F70BF8401CC0B208BD10 -:40BB0000012008BD2522C001D2028018024A8018806908807047000000103C40F8B5054604464034A0792F462E466037C03601282AD13068798BC08BFFF750F92D49884244 -:40BB400005D2032803D24021284600F01DFBA079012819D13168788BC98B884214D18320405D0028284613D0FFF70EFE2021284600F00AFB284600F03DF9284600F0CEFA33 -:40BB8000E08A82210843E082607902280ED019E0FFF726FE4021284600F0F6FAF6F7D8FE0328E7D1E08BFAF7C3F9E3E73168788BC98B884206D1284600F006F9E08A042123 -:40BBC0000843E082BC20405D022811D13168788BC98B88420CD108480068416A284688471021284600F0D0FA208B012108432083F8BD0000FFFF000008020008F3B506460F -:40BC00000446C036306881B0818B0088FFF7E6F821792546204F4035032919D91921C902884215D9FFF720F93168898BFFF748F9717900290CD1002820D081004018C20831 -:40BC40002046A178154B7E30F9F75AFF012070718320005D00281DD1207903281AD90E4B0299703330685943AF238289DB00C91A8A420FD9A979012909D103E0E88A38430F -:40BC8000E882E3E76034C08B618B884202D0E88A3843E882FEBD000001020000C19B0010F8B582782523D201DB02D51876220446125AC03420684A43C1898918C1812068D0 -:40BCC00081898918818126682721F0890901884211D94F1C3946F6F71BFF3188081A308026683946F089F6F713FFF1812068022901D20221C1812068024980896918C863A4 -:40BD0000F8BD000000103C402521C001C90242180D4800211018016041608160C160016141618161C161016241628162C162016341638163C16304484030101801604160EA -:40BD40008160C1607047000000103C40F8B50446FFF712F88320A178005D06F039F91649086882B28868254680B246060023C035002E1CDAC006A478C00EA04217D1FFF7BE -:40BD800073F8101A01221204801880B201280ED90124CC60C8688007FCD56846FFF742FE0098002801D000F015F92C7100E02B71FEF7FEFFF8BD000000503D4010B500F04D -:40BDC000A3FB06F06DF910BD81782522C901D20289186030064A038A89180B62428A4A628A6A808A92B2120A120210438862704700103C4081782522C901D20289185E2219 -:40BE0000135A074A89184B610246603213888B615288CA61C0300068808B48637047000000103C4081782522C901D20289180A4A8918CA6A032392B21B039A43A030837D63 -:40BE4000C07D9B07DB0F1B038007C00F134340031843C8627047000000103C40F0B581782522C901D2028B1801466031244A0C899A1814604C8954608C89946004464034AD -:40BE8000E67ECD8936023543D560E48B54610C8894614C88D4610C8A14624C8A54620D7E46792D028C8A760335432543ACB294628324134E245C40360025C030002C0CD03E -:40BEC000D56200689B19808818600E4B0A2018628888106355639563F0BDCC8A03272405240D3F03BC43D4620468A489D4630468278A9C1967600768FF89E760E1E70000D2 -:40BF000000103C4000543D4030B581782522C901D2028C181C4962181368014660310B8153684B8193688B81D368DDB2CD811D0A03464033DD7615699D835569DD839369EB -:40BF40009BB20B80D5694D80156A0D82556A4D82926A92B2D5B28D82D504ED0E520B0D764271002B01D000220A770749403161180A68C03003689A804A6803681A82C9685B -:40BF80000068C18130BD000000103C4008B510490122086883B2886840060FD5FEF764FF181A01231B04C01880B201280ED90120C860C8688007FCD5002A07D06846FFF709 -:40BFC00031FD0098002801D000F004F808BD000000503D4070B581782522C901D2028B18144A9168490604D50121D160D1688907FCD50146C0310C46096809881160642170 -:40C000000D4D095A5B191963014680310B46C97800290CD000215160DB7881785B014024234319439160807806F0A2F870BD2168C989F0E700503D4000103C40044A1168AC -:40C04000FF23F13389B29943000101431160704740503D4003490869012280B21203104308617047001E3C40FEB5044680786946254648708035E8780870062027468870D6 -:40C08000C03738680088088102A9684606F08CF8002838D10520694688701E480126807A800603D5286B017E807A01E01B210846EA78002A00D102262246A032137D012B31 -:40C0C00022D089003C313B68527D9C890919012A1DD080003C30FF302D300F4F08183946F6F716FD801985B26846858060003946F6F70EFD401CA84201D96946888001A937 -:40C10000684606F051F8FEBDC9007031DBE7C0007030E0E7AC1E0008710200001CB581786A4651708321095C1170042191704030C08B908001A9684606F036F81CBD10B5EF -:40C1400086B081786C466175014680310A46C97821750821A17500212181A1725E231B5AA3810223E381D278A274012222700191C02109580988218280786075214605A833 -:40C1800006F012F806B010BD10B5807805F0F8FF10BD0000FF2806D0034B196A012282400A4390B218627047801F3C40C030026810290ED09179D18201680A884A800168FC -:40C1C000CA8B0A830168CA894A820068818981827047518AD18101688A8A8A8101684A880A8001688A7D8A710068018BC1837047F7B5064680780D46252288B0C101D2027D -:40C200008918039106AB05AA01A9FFF7EFFB3446C034374620686037798BC08BFEF7DEFD03462068798BC08B401980B2FEF7D6FD01460A98082828D1304640308279012A25 -:40C2400023D1444A914220D993421ED2002B1CD02268B97E927F891AC9B20091C08B029068466A1A8088049050430299F6F73AFD00994018401C85B202984200681A4243AF -:40C28000049840004843101803E0684680884000684321680A8810180880206800908179387E684308182521F6F732FC009881710A98082809D02068C18B4919C183803647 -:40C2C000F078254E00280DD033E03079032803D12068418B491941832A460821304600F03DF8ECE72168F88ACA8968431218CA8121688A891018888125682721E889090187 -:40C30000884211D94F1C3946F6F702FC2988081A288025683946E889F6F7FAFBE9812068022901D20221C1812068818903988019C1632068C17980798A07D20FC9079200CC -:40C34000090F1143000208430399891988630BB0F0BD0000FF7F000000103C40FEB50F460446002069460880888016460881A07801AB02AAFFF73AFB254620460123C0354E -:40C3800040302179042F02D003294AD053E0092902D0032908D030E0217EC9062DD4C18A01221943920226E029688A7A012A1AD18A8B002A10D1A2782526D201F602961960 -:40C3C000264A926862273F5B3F01BA1892B28A832249C03971184A63C18A02221143C1822179032909D12968498B062905D3C18AFF22194301321143C1822046FFF78EFB2A -:40C40000684601882046FFF7F9FB8320005D002806D168460089002802D02046FFF7ACF8FEBD2968498B062905D3C18AFF22194301321143C182002708E02868C18B491C3C -:40C44000C1832046FFF76AFB7F1CBFB2B742F4D3684601882046FFF7D1FBFEBDC0103C40F1B50B4F0025386A84B20A48406986B202E0A01984B20125012221460098FEF747 -:40C48000B1FE0128F5D0002D00D03C62F8BD000040123C40C0133C40F8B5002405F0F0FC0546174E174F27E0E80722D03078A04201D8002003E0D020396A60430818FFF710 -:40C4C00003FB01463078A04201D8002003E0D0203A6A604310180822FFF78AFE3078A04201D8002003E0D020396A60430818FFF7BBFD6D08641CE4B2002DD5D1F8BD00000D -:40C50000CC1E00085C210008FEB5684605F0E6FC68460078002830D00024184D184E29E0C00722D02878A04201D8002003E0D020316A60430818FFF7C7FA01462878A04221 -:40C5400001D8002003E0D020326A604310180822FFF74EFE2878A04201D8002003E0D020316A60430818FFF77FFD01984008641CE4B2019001980028D2D1FEBDCC1E000865 -:40C580005C21000810B50C4600F0C8FF06494018016889B20A091201FF21224301310A43C9008A43026010BD00103C4070B526490446097800204907490F40250346012963 -:40C5C0000FD002290DD0032901D0042924D100201E4E0146012C24D0032C1ED0052C25D122E000211A4E0A46012C08D0032C02D0052C09D106E0B56002210A2204E00421BE -:40C600000C2201E004210D223461306AC0B204460C42FAD03262336170BDB56202200A2104E004200C2101E004200D21F462726B14460442FBD07163706B0821884370635F -:40C64000F362D0B270BD0000F021000800F13D4080143C40F8B505460D48164600780F46A84201D8002404E00A48016AD02068430C187F20005DF9F7A7FABA1B0A20424351 -:40C680002046054B29467F30F9F73AFAF8BD0000CC1E00085C210008B5A00010044A106303488030816102494B2080390860704780103C40024610B50B460F20002180018A -:40C6C000F8F796FF10BD000013B50C46002269460F20F9F70FF869460978E0030843034980B208630249472008601CBD40113C4000103C407FB50E4604461D46002202A943 -:40C700000E20F8F7F7FF1048F10100780F4A4007400F03280BD0042809D0A00208436946097A084380B21063A009906307E0E80301436846007A014388B21063946304490C -:40C74000462008607FBD0000F021000840113C4000103C40017E012901D9012101764279C9B253000B430179CA001A4310210A4303498A6002880A604088486070470000DA -:40C7800040103C4006490978814201D8002004E00449D022096A50430818603043837047CC1E00085C2100080349884200D908460249486270470000FF0F000040113C4090 -:40C7C0000148806B80B27047C0103C402521C001C902401807494118086A1070000A5070486A9070000AD070886AC0B21071000A5071704700103C4070B50E4D14462A78D6 -:40C800005207520F012A09D0022A07D0032A01D0042A02D1224600F00FF870BD02460B46E8880021F8F7CCFE012CF6D1FEF774FA70BD0000F0210008F8B594461B4F8207B2 -:40C8400005D01A4F0023103F8E08B60015E08C08002303E09D007E5946515B1CA342F9D3A3000CE0DA191469C454240AC5186C70240A220AAC70EA701B1D9E42F2D88A07B9 -:40C880000DD00A4A103A9A18146900228907890F03E09D184455240A521C9142F9D86046012801D1FEF738FAF8BD000050F13D4010B5114909784907490F01290FD002295C -:40C8C0000DD0032901D0042908D10C49496A0170090A4170090A8170090AC17010BD084A11680170090A417051688170090AC170FEF712FA10BD0000F021000800F13D40C3 -:40C9000080143C400148806B80B27047C0103C4010B50A49F1240A681421414393681331595C24018B001B19102906D251682C225043085A02495918086010BDD401000873 -:40C9400000103C400121814010B589B200227C2000F082FD10BD0000FEB5FF210120FDF7F1FF3F210220FDF7EDFF1F210420FDF7E9FFFF210820FDF7E5FF3020FEF704F873 -:40C980007D48802101607D4C20784007400F032801D0042803D10BF03BFD0BF01FFC7748774E00784007400F022806D0032804D0042802D0012807D00BE00321316003281A -:40C9C00005D0042803D004E00020306001E00BF02FFC002211460320F8F78CFE69486A49028D4A61428D8A61828DCA610546624F00242035803709E03C636248818E62480A -:40CA000001632046FEF7B4FB641CE4B22878A042F2D85D480621C03881635A4C5A48218F816320460C30029000F0B0F9062268460299F7F75EFD69464879C02108436946D0 -:40CA40004871684600F0DAF900F0B0F8FFF702FB4A4800784007400F032829D0042827D0E08FB8634748444940304088C0314860E08D0121C903084343490862434901205A -:40CA8000086141498031C8683F2280B212029043072212021043C8603F20FDF781FF374C20784007400F022804D0012802D008E04820D6E7FEF748F9354907208861FEF72D -:40CAC0002BF9E020FEF794F8E820FEF791F8F020FEF78EF80020FBF7D3FA2C490020486110228A618915F96227494031C86022485B21016020784007400F032801D00428A7 -:40CB000001D10BF095FB20784007400F022806D0032804D0042802D001280AD00BE01D4830601D490869012280B252031043086101E01A4830601448C038416B0122114303 -:40CB400089B24163816B114389B2816314494015086014482978006805F0FEF906F00CFB00231846FFF7D0F85B1CDBB2042BF8D30D4900204870FEBD00103C40F021000844 -:40CB8000001F3C40AC1E0008C0113C40001A3C4080143C4003200000001E3C40E023000040503D40D00100089C21000804480021C1638163024974204039086070470000BE -:40CBC00040103C4070B51E4614460D4600F0A6FC0C49411808680122D20280B2012E09D0904300090001FF22284301329043002C04D005E01043044A1040F2E710221043AF -:40CC0000086070BD00103C40FFF90000F3B5254A84B0926900924A780B78120213430393CA788B78120213434A790979FF20120211438C461C499E46CA6B92B20292896B27 -:40CC4000742289B20191184940390A60174900220F7F24E00121144B9140009C403BE3181C6889B2A5B21C681B68A4B2039E9BB26E407546654064462E435C4026430CD129 -:40CC8000029B194209D00199D140CB070499DB0F8B4202D1104606B0F0BD521CD2B29742D8D8F8E7F021000840103C40CC1E000830B50A49FF20C96B094A8CB200210125B2 -:40CCC000137F05E02A468A40224204D0491CC9B28B42F7D830BD084630BD000040103C40CC1E000810B50446E020FDF781FF20782246401CC3B20021E020F8F711FC10BDAB -:40CD000042790021012A02D901214171090342790A430179042914D049001143827B032A01D8D2001143427B52010A43817909021143012252031143054A91610088D0615C -:40CD4000704711460122920211430222E5E7000000103C4000B50120FDF716FE01494120086000BD00103C4000B50120FDF718FE01494020086000BD00103C40024A1063EA -:40CD800001488030C160704780103C404178027809020A4306490A60C2788378120213434B604279007912021043886070470000C0113C404278130202781A4301290CD0D5 -:40CDC0000C498A62C278837812021343CB6242790079120210430863704707490A63C2788378120213434B6342790079120210438863704740103C4000123C404178027895 -:40CE000009020A4306498A61C278837812021343CB61427900791202104308627047000040103C404178027809020A4306494A60C2788378120213438B60427900791202B7 -:40CE40001043C86070470000001F3C40F0B50021FF2501350E4E0F4C15E0F1238A001B01D21893191A6892B2D7070AD0520852001A60884201D12A4300E0AA4301273A43AA -:40CE80001A60491CC9B2E27A8A42E6D8F0BD000000103C407C21000810B500222021302000F0DAFA05494320086001F009FDC007FBD10220FDF768FD10BD000000103C40A1 -:40CEC00030B591B0054640216846FDF7A4FF0A4C0849A1630220FDF763FD6A782021302000F0BAFA4220206001F0EAFCC007FBD011B030BDFFFF000000103C40017942792B -:40CF0000490011438279D2000A43FF2101310A4303490A6302888A624088C8627047000000103C4010B50446E820FDF761FE20782246401CC3B20021E820F8F7F1FA10BD2C -:40CF40004178027809020A430749CA63C17882780902054B0A4340331A60417900790902084358607047000000123C40024A1063014880304160704780103C40094810B529 -:40CF800081420DD8C8000521F5F7C2FD064989680818064980B2486003497220C039086010BD0000409C0000C0103C40001A3C4010B5074948200860064C206B4006FCD405 -:40CFC000002211461020F8F795FB606B80B210BD00103C4040113C400349732008600349042048637047000000103C4000113C4010B500F093FA0121490200F04BF910BD04 -:40D0000010B500F08BFA0121890200F043F910BDF0B515460F4604461E46FF2A04D000222946184600F0D6F86078237800020343E078A17800020143607922790002024336 -:40D040000C207043C419084827183B60241D23181960241D20180260FF2D04D001222946304600F0B7F8F0BD00103C40012808D8044A916901235B0299434002084380B2AD -:40D080009061704700103C40084A106348780B78000203439360C8788B7800020343D36048790979000201431161704780103C40F8B51C4615460E46074600F041FAA9009E -:40D0C000044A2143801801600349B0004018C455F8BD000000103C40D92100080149C86070470000C0103C40044A916B8905890D8002084380B290637047000080103C403D -:40D1000010B50E490B68142141439A681331515CF122890012018918094A89180A6892B2D40709D0520852000A605A682C235843105A01221043086010BD0000D401000852 -:40D1400000103C4038B5174B1B78834201D8002304E0154BD0241B6A60431B182024012906D0022904D0002A05D0002903D005E0188B204301E0188BA0431883187E8006A6 -:40D180000ED58320C05C00280AD198786946FEF7B9FC68460088002802D01846FEF766FA38BD0000CC1E00085C21000810B50C4600F0B4F90649401801688AB240218A43E4 -:40D1C000A10111430122D2029143016010BD000000103C40F12380001B01C018054BC3181868002A80B201D0084300E0884318607047000000103C4070470000F0B5174BE5 -:40D200008C07C318002C03D000209508AD0014E09408002003E01D6886008D51401CA042F9D3A0000BE01C680C54240A0E187470240AB470240AF470001D8542F3D89407BC -:40D240000AD01C6800239207920F03E0C5184C55240A5B1C9A42F9D8F0BD000000103C40134610B50A4A12785207520F012A09D0022A07D0032A01D0042A02D11A46FFF7F5 -:40D28000BDFF10BD0A460021F8F72CF910BD0000F0210008034A8018026892B20A4302607047000000103C40F0B5264BC518880703D000239708BF001DE09408002003E083 -:40D2C0008300CE58EE50401CA042F9D3A30014E0C818401C044626783046667836023043A678E4783604304324062043CC5C00022043E8501B1D9F42EAD8900721D092070E -:40D300000020920F012A04D0022A04D0032A17D107E0C85C14E0C81841780278080210430EE0C81801460A7810464A78120210438A78C97812041043090608430002000A81 -:40D34000E850F0BD00103C40F0B5424C00198C0704D000249D08AD00AC461DE09D08002403E0A6008F598751641CAC42F9D3AC0014E00D196D1C2E4637783D4677783F02B3 -:40D380003D43B778F6783F043D43360635430E5D2D0235430551241DA445EAD89B079B0F551C002B22D0012B31D0022B40D0032B1BD112780B5D1206134309198A784978E2 -:40D3C000120409020A43134303512B78EA7819466B7812061B021943AB781B04194311430902090A0019401C0160F0BD2B462D78127829465D782D0229439D78DB782D0492 -:40D4000029431B061943090211430151F0BD1678D578334656782D06360233439678095D360433432B431B020B430351D178D9E755780B5D2D062B431578091949782D04D1 -:40D4400009020D432B430351D178927809021143C8E7000000103C4070B5094BC5182868002384B2080003D104E040085B1C9BB2C607FAD08C439A40224390B2286070BDFB -:40D4800000103C40134610B50A4A12785207520F012A09D0022A07D0032A01D0042A02D11A46FFF701FF10BD0A460021F8F7A0F810BD0000F021000838B514460C4A1278FC -:40D4C0005207520F012A0BD0022A09D0032A01D0042A04D11B1F9BB22246FFF735FF38BD00930A4623460021F8F79CF838BD0000F0210008034A80008018405C8007800F43 -:40D5000070470000D921000800B500F00DF802494018006880B200BD00103C40014900014018704708420100014900014018704704420100A121000149024018704700009F -:40D54000034A928A424350180249800040187047F021000800410100054B02469B8AFF208B4203D9880003494018805C70470000F0210008C521000800B5FFF7DBFF024905 -:40D580004018006880B200BD00103C40F0B5304902460B680020002B14D10A6052070D26520F0024B601012A0DD0092503276D02FF020423022A1BD0032A2FD0042A2DD090 -:40D5C00012200C60F0BD112292018A80CA80032252028A600122D202CA6040220A8205224A828A82CC610C624C628E618C62F0BD8D80CD8001225203CF608A6012110A82E8 -:40D600004B828B82D2008E61CA61832252010A62432292014A628922520116E08D80CD800522D202CF608A60FF2201320A824B8229228B82D2028A61064ACA61054AC0323A -:40D640000A62054A4A62044AC0328A62F0BD0000F0210008C0480100404A010010B503460C460846FFF788FF02462046FFF74CFF012199400A4001400A4301D0002010BD12 -:40D68000012010BD0A4600B501461046FFF764FF00BD000010B50F4801680F480818846AFF2102310C4202D0F8F750F80DE0406B400F022801D1A00607D5FAF72BF9074867 -:40D6C0000069012180B201F071FA20460AF0E0FA10BD00006801000840F03D4000103C40F8B50446002000900E461546A178684609F07EFD002801D00720F8BD2B46324611 -:40D700002046009900F0A8FEF8BD38B50546002000900C46A978684609F06AFD002804D1009928464C7000F0F2FE38BDF8B5044600206A46107005460846FBF721FB0600AD -:40D7400004D0012806D0162E3AD10DE001236A46002102E001236A4619462046FCF7DBFB0546012804D02BE001236A461621F4E78320005D012811D1CD20005DC0070DD02F -:40D7800068460078C1090DD1C00701D0232200E02A2231462046FFF7A3FF11E068460078C0090DD068460078C10720464030002901D0232100E02A2181762046FBF75CFB8D -:40D7C0002846F8BD10B582790A4201D0FAF774FA10BD10B5044680780021FFF7CFFA01212046FDF761F810BD8030C368002B0AD00B60817A11700169C160C17A81720021D3 -:40D80000016108467047014870470000FFFF00008030C368002B04D00369002B04D004487047C160827201E00161C27200207047FFFF000000218030C160016170470000CF -:40D840008030C068002801D00020704700487047FFFF000070B505468035E8680024002806D0FBF78DFA002801D0012800D101242869002806D0FBF783FA002801D00128BB -:40D8800000D10124204670BD70B50446C0790E461546C1090AD04006400EE07101F0B6FC067021894180856006F0F1FA70BD70B50446C0790D46810601D43A2D13D13A2D7F -:40D8C00002D0DF210840E07101F0A0FC0570218941805E21095B818060342188C1806188018106F0CBF970BD38B54621095C04468034002910D1A16A00290DD18178684622 -:40D9000009F088FC002807D100980021A062C181A06A4185A06A4180A06A38BD01480078704700003C22000810B50446FCF798FA01280AD10648A178026AD020484384305B -:40D94000105CF9F7C5FF012801D000F0F3FC10BD5C21000870B50C460546F9F759FC012838D02879032803D0042801D0072830D1E079A67900020643A8783146FDF714FCFA -:40D9800001282DD0284660304683A17809020182627811430182217909024182E27811434182617981823246611C284600F09DFB02212846FAF7C2FD2846C030417B822282 -:40D9C00011434173287E0221C207D20FA878FFF7B9FB70BD01222421284600F04AFD70BD28215A2041552846FBF746FA70BD704770B50C460546FAF7E9FC00284FD120217D -:40DA00002846FAF759F9F4F789FF284661784030C176E17809028183A278114381836179C38B0A022179114320228B4203D0EB791343EB71C183E1792E460B02A179603611 -:40DA4000194333888B4203D0EB791343EB713180617A0B02217A1943738843828B4203D0EB791343EB717180C18B70888000F5F74FF8401E318880B2814200D93080012134 -:40DA80002846FAF75EFDC035687B822108436873E07AA17A000201437183F4F729FF70BD70470000F8B50D4606460027F9F7B0FB012845D0264CA07AC00707D04420805DAE -:40DAC000002806D0102803D01F212CE01A212AE001273046FBF75AFB002823D0344680340822691CE06AF6F704FDE06A697A20300172A97A4172E06A2946183008220B314A -:40DB0000F6F7F7FC29463046042213313830F6F7F0FC39463046FBF72DF8002810D1002F0FD012E007210322304600F0A2FC628A08213046FAF7A0F811213046FAF704FD61 -:40DB4000F8BD06213046FAF710FD01202070F8BDAC1E0008704770B50446403000790D46022813D126468036F06A08222030691CF6F7BFFC29462046042209313C30F6F7FC -:40DB8000B8FC2046FAF7A2FF0120307070BD10B5FBF732F810BD70B50E4605462021FAF78BF82C468034A06A002804D0A97809F0B1FB0020A06231462846FFF778FE00211E -:40DBC0002846FAF7BEFC2846FAF73BFD002070BD38B504460020009020790D46032803D0042801D007281CD12046F9F711FB012818D0A178684609F0FBFA002811D10C48B8 -:40DC00006A78807A00991040F5221040A075E07E08221043E076204600F05CFB2046FAF710FD38BD08222421204600F022FC38BDAC1E00087047000070B50D460446022126 -:40DC4000FAF73AF82046F9F7E3FA012805D009222421204600F00DFC70BD0C486978807A6A1C0840F5210840A075E07E08210843E076E079EF210840E07100212046FFF73D -:40DC800003FE2046FAF7DDFC70BD0000AC1E000870470000F3B581B004460298FBF770F805462046FCF7D1F800287DD0192D04D32046029900F0ABF976E0264640363079F1 -:40DCC000002700900300FCF70FFE0E1C1C1C08081C1C1C0808080808081C0298354A01780020135C8B4201D1012702E0401C0728F7D38320005D002801D1072901D0002F0F -:40DD000003D00098022816D02EE0A078FFF770F9002301223D212046FAF700FE3D20B0762046FFF756FDA178029809F0C9FA2046FBF7FEF8FEBDFFF7F1FD002814D1042D1E -:40DD400012D00D2D10D0112D0ED0152D0CD0072D0AD0092D08D0202217480299F6F7C9FB012000F003FC1FE020460299FFF7DEFC012819D0A8000F4D029908352A582046AE -:40DD80009047A178029809F09BFAFFF7C7FD0228D0D109480849007880002A5820469047002000F0E3FBFEBDA178029809F088FAFEBD0000D84600101C22000870B50D46EF -:40DDC00011490978814201D8002404E00F49D022096A50430C18002C15D0204600218030C1718079032802D12046FCF7F3FB2046FFF79AFD192D04D20549A80009582046AC -:40DE00008847FCF73DFA70BDCC1E00085C2100084447001010B50446403000790E2805D12046FAF72FFF01208034207010BD10B50446F9F7EDF9012802D1002040342070EA -:40DE400010BD10B5044640300179062905D00F2902D12046FAF73BFF10BD2046FAF748FE01208034207010BD70B50446054640342079072805D12846FBF7DEFF2846FAF738 -:40DE800031FE20790F2801D10020607070BD000038B5044600220E4800920D46807AF5210840C0060FD52046FBF7E0FF01280AD0A178684609F09CF9002803D12046009954 -:40DEC00000F0B4FA38BD2946204600F0A0F838BDAC1E000810B504461021F9F7EDFE2046FAF7E6FB10BD000070B5054610480C46807A400704D409782846FFF706FC70BD04 -:40DF00006078032803D1A1782846FAF75DFD6078122803D110212846F9F7CEFE60781628EDD10448A1780068C2682846904770BDAC1E00080802000810B5FAF7D1FE10BD84 -:40DF400010B54978FAF740FD10BD10B5FAF7C8FE10BD10B54421095C032901D1FAF7E8FD10BD012140304170704710B54421095C042904D00C2901D1FAF7C8FE10BDFAF7A1 -:40DF8000F5FD10BD10B50446F9F742F9014620464030012900D1417000790D2802D12046FAF7AFFE10BD70B502790D460446052A03D0062A01D0082A01D1FAF717FD687824 -:40DFC0005A21085509212046FAF7CFFAFCF7D4FE80212046FEF7D8F8FCF7EAFEA078FFF70FF82046FCF746FC70BD10B50446FF21F9F762FE16215A2001552046FAF798FF42 -:40E00000A078FEF7F5FF2046FCF734FC10BD70B50C460546FBF724FF002802D02078E87570BD21782846FFF770FB70BD70B5054648780C46032802D12846FAF7E3FC60786B -:40E04000122806D110212846F9F736FE2846FAF72FFB0748214600684268284690476078162804D10348006881682846884770BDFC01000808020008704770B50D460446B5 -:40E080000421F9F719FE6878A076E8780002E081A9780843E081687900022082297908432082E07E04210843E076800704D4204600F03AFA072815D0E079410612D5BF2112 -:40E0C0000840E07101F0A2F80021017021894180E1898180A17E4170218AC18005F004FFFCF7CEF870BD7047704770B50446C07815460A4600280AD00020E070C1B2A0783D -:40E10000FDF78EF8A0782946FEF7C8FA70BD0120F3E70000F8B5064601200C46087005221949601CF6F7E5F9B078FCF783FE0546B0786946FDF7E6FC684600880A214843CB -:40E14000114942191039887B002802D0401E4300C018101835460C30603568834A7C0B7C12021A432A82CA7C8B7C12021A436A82097DA982A071000AE07108223146204694 -:40E18000FCF7BCFAF8BD00006C2100087CB505468030866A0C46A878FCF74CFE014628465C30009001AB3246284600F031FAA878FCF740FE69468988FCF710FE69462846F4 -:40E1C0008988603041830021217029464031CA7E62700A7FA2708A8B120AE2708A7F2271C98B0C22090A61710178A1710188090AE1718178217240886946000A6072888885 -:40E20000A072000AE07229462046FCF777FA7CBD70B5054603200C4608702E4680360822601CF16AF6F765F9F06A08222030017A6172407AA072F16A204618310B30F6F70B -:40E2400058F929462046042238311330F6F751F9172229462046FCF751FA002070BD70B50546042008700C46AC20415908222031601CF6F73EF92946204604223C31093056 -:40E28000F6F737F90D2229462046FCF737FA002070BD000070B505460C46C07910210843E8710820207002460021601CF6F72AF90748F522817A11406170C07A0922C007A0 -:40E2C000C00FA07029462046FCF718FA002070BDAC1E000870B5054609200C46087008220021601CF6F70EF9A87D607005480922C07A2946C007C00FA0702046FCF7FEF91C -:40E30000002070BDAC1E00080B4610B501460A20187001221846FCF7F1F9002010BD0B4610B501460B20187001221846FCF7E6F9002010BDFEB50020694608720546334F4B -:40E3400060E03348016AD02068430E183046FFF777FA002854D18720805D002850D101AA69463046FFF740FA002849D100980478002C09D0012C16D00C2C23D0092C21D000 -:40E3800069460A79314629E0012302AA00213046FBF7C1FD012804D030460099FFF7F6FE2EE00C221FE0012302AA19463046FBF7B2FD012804D030460099FFF7ABFE1FE073 -:40E3C000082210E0012302AA21463046FBF75CFD00286846027906D131460098FCF78EF9022C05D00CE031460098FAF7E5F907E0B0780121FEF7DAFE09213046FAF7B5F851 -:40E400006D1CEDB23878A8429BD8FEBDCC1E00085C21000810B50B46122119708178D977014601221846FCF769F910BD10B50B46132119708178D9770649896AC90603D16F -:40E44000018B402211430183014601221846FCF755F910BD00113C4010B50C461121217062700146A37003222046FCF747F9002010BD38B50446002000900D46A1786846C1 -:40E4800008F0B6FE002801D0072038BD00980D210170457002222146FCF730F9002038BD0B4610B501460520187001221846FCF725F9002010BD0B4610B50146062018705F -:40E4C00001221846FCF71AF9002010BD38B5044600200090A178684608F08AFE002801D01F2038BD009D022028705A20005D6870A078E877208B1021084320832046FFF7AA -:40E5000068F9022221462846FCF7F8F838BD10B50B46072119708178D977014602221846FCF7ECF8002010BDF8B50546002000900D4EA9783488684608F05AFE002801D035 -:40E540000720F8BD00980C210170717941708470210AC170F2880271110A417106222946FCF7CCF80020F8BDAC1E0008094A1178002906D0012909D0022908D1002807D00E -:40E5800001E0012804D00021002900D0107070470121F9E73C22000800B500F016F800BD704770B50546FFF79FF9044602884188A87804F085FCA084E0886082A088208235 -:40E5C0006088E0812088A08170BD4018400870470246603000885E21895A401C4843C10800D101214008528A00E0401A8242FCD9704710B56021095A80780A01511A10311A -:40E600008CB2FCF717FC2146FCF756FA10BD0000FFB581B0054604464035288A69460A9F08801E46A078FDF76DFA694609880A20491C41431048807B002802D0401E420087 -:40E640008018081881B20298FCF736FA3080A07804F024FC06468320005D012804D1E98BA078042204F0C2F9A078314604F05CFD388005B0F0BD00005C210008F8B51546E8 -:40E680000E46074600F00EFA0446012804D02A463146384600F0B6F92046F8BD014600B50020890701D500F00BF900BD014600B50020890701D500F003F900BDF0B593B015 -:40E6C0000020FF210391059007901290012612A92F2005F008FD002804D000F097FD0446002600E0129CFEF76BF881040507890E40060891C00F891F2D0F06900491202949 -:40E7000031D2062D2FD800F0DBF8C0072BD03E2020700220A0700120E07003210420624F062D2DD0022D2ED0042D2ED025715E48417949084900417106986071A01D06216C -:40E74000FCF769FBFCF79CFC070006D0574A611D1268A01D126A904703900498012DC0B2029020D044E0002E02D0204605F0C2FC00F04CFD402102A8FCF74DFB13B0F0BDB4 -:40E7800002202071D3E72171D1E720717879C007CDD0002E02D0204605F0ACFC002600F035FD0446C3E70398FF280BD040482C220068416803985043095A4120884301D16A -:40E7C000012007903B48407E012804D10799002901D1012F02D0002F06D007E00120059020730D270B2006E00128F7D00020029020730D270220A0700898062824D0049812 -:40E800002746C1B20D373846FCF705FB0598012817D12948006B03A9C007C00FFCF730FBA07C8009012806D13946062203A8F5F751FE002805D10020203FF8770290022087 -:40E84000A07002980D30C7B2FEF75CF8694688806A4601A90620F6F74DFF69460878E0557F1E16486770407801280BD12A46A01D069900F017F9012811D02A46A01D0699EA -:40E8800000F0C0F8002E04D02046059905F018FC74E7054801224179114341716EE7204605F028FC6AE700005C210008EC010008D4010008A021000800103C407D2200089E -:40E8C0000248806B0004000E7047000000103C4010B50446000701D5FFF7F0FEE00601D5FFF7ECFE0248006881692046884710BDEC01000810B502460178FFF7E1FF814270 -:40E9000001D10C2010BD0D485378002443705470002908D000F06EF81046FEF7D1FA0420F9F74AF907E01046FEF7B6FA0520F9F743F903480476002010BD00007D22000801 -:40E940007C210008F8B50446FFF7BAFF002801D00C20F8BD6079164DFD2702260128E8781DD03840E87013480068416820468847A0790128A87814D03840A8702046FEF7D2 -:40E98000BDFA0B48218862882030914203D1017E0122114301762179012904D006E03043E0E73043E9E7017E314301760020F8BD5C210008EC01000838B5002001460090BE -:40E9C000684608F0FFFB002801D01F2038BD009C002161712171A1711021218020466180FEF78CFA204608F077FC00F003F8002038BD000002480021017007218170704706 -:40EA00007D220008F7B50C2082B0254D0F46002400902878E040C0072DD02148E10040380E18062230460299F5F754FD00280AD1B079B84207D1F079002801D0062802D167 -:40EA4000049804280BD02878E040C00713D0641CE4B2082CDDD300980C2803D00BE00420F07119E0A878401CC0B2A870082801D10020A870C4B20A48E10040380E180622D8 -:40EA800030460299F5F735FDB7710498F07128780121A14008432870002005B0F0BD00007D220008F7B5164E00243546403529780120A040014217D0E0008719B979019818 -:40EAC000814211D1062238460099F5F703FD00280AD1F879022810D004280ED001280CD0002807D0062805D0641CE4B2082CDED30020FEBD02980428FAD00120FEBD000075 -:40EB00003D22000801484078704700007D22000870B5064614460D46500702D5A8B2FAF72DFE200702D5B0B2FAF7E8FBA00702D5280CFFF7CDFEE00702D0300CF9F72AF99E -:40EB400070BD70B5044660C8F8F7C8FA2089C01F0300FBF7C9FE0C071A121E212412122712171312F3F7F4FE032801D1F7F76EF9294630466289FFF7CBFF70BD284604F054 -:40EB800063FD70BDFAF750FB70BD2846F8F74CFC70BDF8F74DFF70BDFAF76CFB70BDFAF793FB70BDE8B2FAF7ADFD70BDF3B5002189B0069105910C460391009101910291C7 -:40EBC000F74989688EB230400490B00618D5FCF74BF9F44908800120F6F7B2FEF24900200870F3F77DFE012802D10020F6F72CFE2020FBF7A1FE0420F7F75CF901200590EA -:40EC0000EA487107009024D5E5484030006987B20498400718D5F80613D5E5480021026A009800780BE0884201D8002502E0D0234B43D5182B79022B29D0491CC9B288426B -:40EC4000F1D8B80880000390394600220420FBF759FE300775D5D748406B80B20190D0488030806A87B2049800076BD5019804218843384367D0D048C06BC006C00E02906A -:40EC8000009801780298814211D8002515E02846FDF7E4F82846FCF777FD2846FDF74FFA40212846FDF770FAFDF770F9C9E7C048D022016A029850430D18002F05D02846C2 -:40ECC0004030C18A3C433943C18201988207B84801463C31403006910090002A3DDA2879002803D1C420405D002833D102212846FCF71AFE2846FDF7B7F907A90298FCF738 -:40ED000001FFA878012103F0A1F9002817D1FDF755F8002813D14620405D012807D1C0217A204959405BC98B401E884207D08320405D002808D16846808B002804D0012081 -:40ED400006E0ABE099E095E00698FCF76BFE0020009908700120F6F703FEF80657D52879002803D1C420405D00284DD104212846FCF7DAFDF3F7ECFD03280CD1C0204059BB -:40ED8000807A002810D18320405D00280CD101212846FCF785FFC0204059807A002803D18320405D00280DD000980078012809D0002810D17E480021C06B807803F046F9F9 -:40EDC000002808D02846FDF74FF90698FCF72AFE0099002008707648C06B002809D001216A465172017B1172FDF7F4F802A8F6F739FD28460A3009F015FA2846C0300179CC -:40EE0000002901D1012101710220F6F7A9FDF80705D07805400F022801D1F6F7A1FD28464030018B06912946C031CA88C08A824201D00443C880087B002805D1A035287F49 -:40EE4000012801D010208443600609D500984078002802D04020844302E0009801214170394600220820FBF74DFD544901980840504948633F2000028443019840070DD5EE -:40EE8000F6F71EFBF6F78CFF4A4904204863FCF7BFF9012802D10220F6F762FDB00719D53F48806B85B20498800709D50399280408430390FFF704FDC00701D00120059023 -:40EEC00081210398490488430390294600220220FBF718FDF0073AD03148006A85B20498C0072CD02804044329208001054206D033492846096849698847012864D005203E -:40EF000040068443A8071AD50220F6F729FD284F2037B87AC00712D0787B00280FD0387BF97A88420BD2274800688168387B14225043801D0818FDF775FF00207873812074 -:40EF400040048443294600220120FBF7DBFCF00605D50120F6F7F4FC1020FBF7EDFC700602D54020FBF7E8FC039806992043084301D00120059007206946088103980090B6 -:40EF80000194049848810598002807D069460EC90A98002850D0002008F04CFA0BB0F0BD00103C40E6010008CC010008CC1E00085C21000800113C4000503D40FBFF00006A -:40EFC000EC010008D4010008FBF784FB074600218030C170384640300090807BFF2808D138464830FBF7BCFF384600214730FBF7D5FF00983946C0794831FBF767F8FF2846 -:40F0000005D0292080058443FDF7AEFE7AE73846FCF77AFF3846FCF7E3FB3846FCF71EFF3846FDF78CF840213846FDF7ADF8FCF7ADFFFDF78FFE65E7002008F040FAADE7DE -:40F04000F0B587B0054605A81E461746019100900C9C04AB06AA02A903A800F0CFF92846FCF706FA21463046FCF78AF96846017A0398FBF79FFD05A904A8FBF74DFD68467A -:40F08000027E21463846FBF71BFD07B0F0BD000070B50948C4782046F8F758FE06462046FFF7FCFA05462046F9F7C8F9014630462843084370BD00005C21000870B5094885 -:40F0C00084782046F8F74AFE06462046FFF7EEFA05462046F9F7CEF9014630462843084370BD00005C210008F8B5069E1F463478042C17D3231FDDB23B460095FFF7A0FF62 -:40F100003819001FFCF7EEF90520FDF74FFA0446012229460798FDF76FFB3570E00701D00020F8BD1F20F8BDF8B51C46009301271346069E079D3A46FFF782FF2846FCF761 -:40F14000D1F90520FDF732FA0546012221463046FDF752FB2846F8BDF8B51D4616460F460024FCF785F931463846FCF709F90320FDF71CFA012231462846FDF73DFB2046CA -:40F18000F8BDF8B5069D089E2C780094FFF758FF0120FDF70BFA07463046FDF789FB0023224631460798FCF773F8241D2C70780701D41F20F8BD0020F8BDF8B51C4600932F -:40F1C00001271346079E069D3A46FFF739FF0120FDF7ECF90746002221462846FDF70CFB3046FDF765FB3846F8BD10B500F02CF90446F9F7B7F80128F8D1204610BD10B5B5 -:40F2000000F022F90002000A10BD0000004870478422000808B500F017F96B4600210090585CC006C00E421F0B2A04D9491CC9B20429F5D3EFE708BD08B56A4600210B203A -:40F24000F6F758FA6846007808BD0000FEB5064601200290042017460D46444C0090FBF703FE28802146FBF727FC3080F8070BD0FBF73EFE019028880199FBF721FEA04221 -:40F2800002D2044601983080B8070BD5FBF742FE019028880199FBF713FEA04202D204460198308078070AD5FBF728FE074628883946FBF705FEA04201D204463780F6F765 -:40F2C0000BF900280AD0FBF709FF074628883946FBF784FDA04201D2044637802448807B00283BD0FBF710FE074628883946FBF7E7FD0546A04231D2FCF7DEFB1D4909789A -:40F30000814201D8002004E01949D022096A504308180190F7F77CFF002817D101983D21C0300068C089F3F7F3FB401DC0B200900A280BD90A21F3F7EBFB0091854204D39A -:40F34000391A281A8FB285B200E0002537802C460198F7F75DFF002800D102900098FDF7BDFE0298FDF7C0FE2046FEBDFFFF00005C210008CC1E000810B50E4C0C492346DE -:40F380000833A160002142189278002A00D05A54491CC9B20429F6D3FF21A0689A314843A06000F051F8F8F7DDFF0128F9D110BD040302015C21000870B5059C049D207046 -:40F3C000060A6670060CA670000EE0704806D101400E0843207104221946601DF5F789F82046042229460930F5F783F870BD00000149086070470000E8010008F8B5079C76 -:40F400000E46E178069D09020160A77839430902016067783943090201602778394301602079611D4006400E30702079C009107004221846F5F75DF821460422093128469F -:40F44000F5F757F8F8BD000010B5FBF70DFD094A916848400849096848408108C3084409414063405940C30F59404008C9070843906010BD5C210008E8010008F3B5074669 -:40F4800081B00E4800240E4E0E4D10E031682C234A6821465943535CDB0706D01B315118029801F02BFB002805D0641CE4B2E97AA142EBD8FEBD3C70FEBD0000FFFF000054 -:40F4C000D40100087C210008FFB585B00C4600200090A004850E0E99684601810026FFF711FB6106C90F27073F0F0191012805D13A460798FFF7C2F8012849D069462F200E -:40F5000004F0F1FD002843D1009C3E2020700599022001290CD0A070A81FC6B20120E0703B00FBF7E1F907080A0C120E121012000B20A070F2E7002008E0012006E00320D7 -:40F5400004E0042002E0022000E0FF20207101986071A01D06220799F4F7CBFF0598012818D0267320460D30AA1F0899F4F7C1FFED1DEDB203AA02A90620F6F7BBF86846D7 -:40F58000007B60556D1E65702046059904F098FD09B0F0BD01202073E4E700000249014808607047A8470010EC010008704700207047FF2070470120704710B5400606D580 -:40F5C000FF210020FAF736FA0220F8F7F5FA10BD7047704770470020704770477047002070470020704700207047002070470020704700000249014808607047EC4700104A -:40F60000EC01000870B512248AB00D46064600292FD000200290039004900590102202A92846F4F757FF002823D00821684607F040FB6946487940214006400E08436946FC -:40F64000487103226C46C91C02A8F4F752FF0322E11CF01CF4F74DFF06AA294602A8F7F755F90404240C04D1032206A93046F4F740FF20460AB070BDF0B50546FF2129704E -:40F680000022144C144B072011462468DB7A0FE02C2766684F43F65DF60707D014274F43A6681337F75D0126BE403243491CC9B28B42EDD8D143002207E0CC0702D02A7060 -:40F6C0000020F0BD4908521CD2B29342F9D90029F3D1F0BDD40100087C21000870B50546FF210D4A297014680C4A0A480021D37A0CE02C2266684A43B25AD60704D052077A -:40F7000002D52970002070BD491CC9B28B42F0D870BD0000FFFF0000D40100087C210008F8B50C460546FF206946087068798009012807D022782946684601F063FA68463D -:40F740000078F8BD2946684601F092FA68460178FF29F4D00A4E2C22306851434068091D411806222846F4F7C4FE30682C2241686846007850430A30085C801C2070DEE79C -:40F78000D40100083EB50446FF206946087213480068C007C00F19D001216846FBF7E0FB684640798009012813D02278694602A801F028FA6846017AFF2907D008482C2240 -:40F7C0000068514340680A31405C20706846007A3EBD694602A801F04BFAF7E7001F3C40D4010008F0B589B01646044600256A461570FF201075CC48072700680278CB483D -:40F800000790C07A82426FD2204606F0C7FB07006AD10C27F7F7E2F8FBF732FC002804D0C248203840784007F2D1A27A211D684601F0E8F9BE490746884220D1684606902A -:40F8400000208446FF206946087007990727CB7AB5490020096807910EE007992C2249684243895CC907C90F614503D106990027087012E0401CC0B28342EED80DE0002E61 -:40F880000BD1A9486A46006881681078142250431330085C6A46107501252846384303D105A8FFF7E9FE0746002FB1D16846017D9D48142300688268684600785843133044 -:40F8C0001154012E11D098482C230068002241686846007858430A52934800684168684600785843801C0AE01AE18F482C220068062341686846007850430A5A1A400A52B4 -:40F900000020019002900390049087482C230068A27A41686846007858430A300A54824800684168684600785843002A03D00A5A10231A430A527C482C22006841686846FF -:40F94000007850430B300818214610220B31F4F7D0FD75482C22006841686846007850431B300818214610221B31F4F7C2FD6E482C2200684168684600785043001D0818BA -:40F980000622211DF4F7B5FD6748142200688168684600785043081806220021F4F7B2FD6148142200688168684600785043801D081806220021F4F7A5FD5B481422006895 -:40F9C00081686846007850430C30081806220021F4F798FD012E33D0534C2C22206841686846007850431B300818102201A9F4F771FD0223002820686946406809780FD00B -:40FA00002C225143425A1A43425220686946426808782C214843801C115A012319430EE02C225143425A9A43425220686946426808782C214843801C115A4908490011527D -:40FA4000394C2C22206841686846007850430B300818102201A9F4F73DFD0028206822D06946097842682C204143505A04231843505221682C234A6869460978594380235A -:40FA8000184350526946226808782C21414353680B315918142392685843801D1018FFF7B1FD074608E04168684600782C2250430A5A84239A430A5220682C2142686846CC -:40FAC00000784843011D0A305118105CFDF79EF80823FF28206869464068097804D02C225143425A1A4303E02C225143425A9A43425220682C2241686846007801235043BD -:40FB00000A5A1A430A52684600210078FAF754FF38462843304303D120680178491C0170384609B0F0BD0000D40100087C210008FFFF000038B50A461B4909784907490FE8 -:40FB4000022903D0032901D004292AD11749897A490626D50146684601F054F80006000E1FD1134C2C222068082341686846007850430A5A1A430A5268460078FAF7D6FAB9 -:40FB800000280AD020682C22416868460078012350430A5A9B021A430A5268460078FDF7AFFA002038BD0000F0210008AC1E0008D4010008F1B584B000260396FAF78AFD7C -:40FBC0000446FBF75DFA002830D0049880057DD5FF2069460870002101A8FBF7C1F96946487A8009012824D0022836D001273A4601A9684601F006F805000AD0012047405E -:40FC00003A4601A9684600F0FDFFB6490546884225D0B5482C2200684168684600785043085CC04380071AD4AE4D1AE0012005B0F0BD01A96846FFF721FC050011D101201B -:40FC40000390A9482C22006841686846007850430A30095C4720015503E00027C7E747200755F8F78BF8002D57D1012823D0042821D00220F8F75EF801281CD19A4D2C2160 -:40FC800028684268684600784843011D0A305118105CFCF7BBFFFF283FD028682C22416868460078082350430A5A1A430A5268460078FDF725FA039800281CD08A4D1422CC -:40FCC0002868816868460078504300E032E00818062201A9F4F70DFC286814228168684600785043024613328B5C08187F492022096AFDF78DF9684600784E2108557A4952 -:40FD00002C22096850434968001D0918204606224830F4F7EEFB012675E0754880694007800F012803D100217248FDF743F8FDF71BF868E00498400665D5FF2668466E49B4 -:40FD40000670684F0868012280B2920310430860002101A8FBF704F9FBF792F925464035AE73012600284ED06846407A8009012828D0002201A9684600F044FF002806D0E0 -:40FD8000012201A9684600F03DFFB8420AD056492C2309684A68694609785943515CC943890701D5002812D05448807AC0072AD00020FDF71DF94E4880694007800F0128C3 -:40FDC0001AD01DE001A9684600F052FFEAE768460078A87344492C230968584303464A680A33D25CEA714968001D0918204606224830F4F77EFB06E000213E48FCF7DAFF16 -:40FE0000FCF7B2FF0026049800053CD5FF2568460570344E002101A8FBF7A2F8002201A9684600F0EFFE002806D0012201A9684600F0E8FEB04221D02B492C2309684A68B8 -:40FE4000694609785943515CC943890716D428488169006A89B2C0050CD44807800F012803D100212348FCF7A5FF0020FDF7C0F8FCF77AFF4034A5730020D8E6002804D043 -:40FE80004034A57301263046D1E6174D2C222868022341686846007850430A5A9A430A522868142281686846007850431330085C00221946FDF78EF96846214600784031F3 -:40FEC00088732A682C256843054653680A355B5DCB715168001D0918204606224830F4F708FBCFE7FFFF0000D4010008F021000800103C40F0010008001F3C407C210008E6 -:40FF0000F0B500278BB004463E46FAF7E3FB08907A4D60057ED500200690059009A9039004900191009007AB03AA05A90320FBF745F86946898B4906CA0F002816D16846B9 -:40FF4000407C03A98009012802A815D000F05AFE6B4988420AD029682C234A686946097A5943515CC943890700D465486946497E8909012904D011E0FFF780FA0127F5E7A3 -:40FF8000002873D128682C2241686846007A50430B30091805A800F0B1FD0126002865D10120F7F7C7FE01281BD169460A7A28682C214A434068131DC1180A32805CFCF725 -:40FFC00025FEFF2852D028682C2241686846007A082350430A5A1A430A526846007AFDF78FF83800474F1AD02868142281686846007A50430818062203A9F4F77AFA286863 -:020000041001E9 -:40000000142281686846007A5043024613328B5C081800E02AE02022396AFCF7F9FF002E24D028682C2241686846007A402350430A5A1A430A522868142281686846007ADD -:4000400050430C300818062205A9F4F752FA2868142281686846007A5043024613328B5C0C3008184022796AFCF7D2FFE00606D525490868012280B2D20310430860E004D9 -:400080002AD500206946087209A90191009007AB03AA05A90320FAF791FF00281CD16846808B03A94006C20F6846407C8009012802A804D000F0A6FD002803D00CE0FFF7D8 -:4000C000DDF9F9E728682C2241686846007A5043085CC04380070ED509208001044201D1200508D508984030817B0020F9F7A2FC0220F7F761FD0BB0F0BD0000D401000806 -:40010000FFFF0000F0210008001F3C4070B50C24F6F764FCFAF7B4FF002803D00E484078400717D1FAF786FD0C4D002128680A4C01702034E27A2C214A4340680021F4F70C -:40014000E1F9E27A14204243286800218068F4F7D9F90024204670BD5C210008D4010008F8B5144800784007400F022803D0032801D004281DD11048807A400619D500244D -:400180000E4F08250E4E11E038682C21426820464843115A0B4BA94311523A681940526811522046FCF7ACFF641CE4B2F07AA042EAD8F8BDF0210008AC1E0008D401000813 -:4001C0007C210008FFFB0000F0B504468BB0AD48002607903546600605D4A00603D4E00501D4A00528D5FFF711F809A90191009008AB03AA05A90020FAF7E0FE0790600624 -:4002000001D4A006EED5002069460872FF2000900798002810D1088C41060007000F01906846407CCA0F8009012803A902A804D000F0E8FC002804D000E1FFF71FF9012659 -:40024000F8E76846407E904F8009012810D1019801280DD138682C2241686846007A50430B30091805A800F049FC01250028E3D186488078F8F7FEF801281CD169460A7A9B -:4002800038682C214A434068131DC1180A32805CFCF7BCFC0090FF28CED038682C2241686846007A082350430A5A1A430A526846007AFCF725FF019801283DD1002D3BD01A -:4002C0003868002E05D081686846007A1422504305E041686846007A2C225043001D0818062203A9F4F7F6F80006000E01D1002E24D168463A68007A2C23434351680B3361 -:40030000C9181423926858430C301018FFF77AF909903868142281686846007A504302461332801D8B5C081859498022896AFCF76FFE099800287DD1002E3CD03868142241 -:4003400081686846007A50430818062203A9F4F7D0F83868142281686846007A5043024613328B5C08184A492022096AFCF750FE0098FF281FD0386842686846017A2C202E -:400380004143505A430702D5019B012B01D1002D03D001235B021843505238682C2241686846007A202350430A5A1A430A526846007AFCF7A5FE002D40D038682C22416892 -:4003C0006846007A402350430A5A1A430A523868142281686846007A50430C300818062205A9F4F786F83868142281686846007A5043024613320C308B5C08182449402294 -:40040000496AFCF705FE21482030807A400715D50098FF2812D038682C2142686846007A4843115A4B0703D501235B0219431152684600E002E0007AFCF762FE200606D531 -:4004400014490868012280B2D20310430860E00501D4A00510D5002069460872079800280AD1088C4006C20F487C03A98009012802A803D000F0C6FB0BB0F0BDFEF7FEFF46 -:40048000FAE70000FFFF0000D40100085C210008F0210008001F3C4010B5054A01781175411C034806220E30F4F723F8002010BDA0210008F8B515461E46024600206B46E5 -:4004C0001870684600F09EFB0406240E02D002242046F8BD0948002E006881686846007802D01422504302E014225043801D091806222846F3F7FDFFEAE70000D4010008CA -:400500000148C07A704700007C210008F8B50646002768463C4D0770286802240078002818D0304605F03EFD040013D10C24F6F755FAFAF7A5FD002803D0344840784007CD -:4005400008D13278711C684600F05CFB0406240E02D002242046F8BD28682C2241686846007850430F5268460078FCF7D1F9296808780028EED06A461278431E93422AD042 -:400580004B682C2148432C3819182C20424398182C22F3F7AEFF2968142288680978142351436A461278143941185A4380181A46F3F79FFF28682C224168007850432C38BF -:4005C00008180021F3F79EFF2868142281680078504314380DE048682C214A4380180A460021F3F78FFF286814228168684600785043081814220021F3F784FF28680178E0 -:40060000491E0170A6E70000D40100085C21000838B50A46174909784907490F022903D0032901D0042922D11349897A49061ED50146684600F0E6FA0006000E17D10F4B56 -:4006400069461868097842682C204143505A0824A043505219682C234A68694609785943074B1840505269460878FCF749FD002038BD0000F0210008AC1E0008D401000816 -:40068000FFFB0000F0B58BB00446FF206946087200200A90A00605D4600603D4200601D4A0057DD5FEF7B2FD08A909900191009007AB03AA05A90020FAF780FC01908E4E4F -:4006C000A00601D460066CD50198002869D10025694600950D72888B4006C20F487C03A98009012802A804D000F08CFA070009D013E0FEF7C3FE070001D001250DE0012020 -:400700000A900AE030682C2241686846007A5043085CC043800700D4784F6846407E800901281BD16846808B0007000F012815D130682C2241686846007A50430B300918D4 -:4007400005A800F0DBF9002804D00225384304D0012703E001210091F8E70027002F7AD167488078FDF7A2FF01281ED130682C2142686846007A4843011D0A305118105C95 -:40078000FCF744FAFF2866D030682C2241686846007A082350430A5A1A430A52684601E0A5E06EE0007AFCF7ABFC30682C2142686846007A4843115A4B0707D501235B0247 -:4007C000194311526846007AFCF79AFC00984D4F002824D030686946097A40682C225143425A40231A434252306869468268087A142148430C301018062205A9F3F779FEE7 -:40080000306869468268087A1421484301461331535C0C3010184022796AFCF7F9FB0A98002818D03068142281686846007A50430818062203A9F3F75CFE30681422816868 -:400840006846007A5043024613328B5C08182022396AFCF7DDFB002D13D06846818B0807000F012805D12848407E012801D1022D10D06846008C009003AA0020099BFEF72A -:4008800023FEA00533D50020694608720198002807D015E06846008C009005AB03AA0120EDE7888B4006C20F487C03A98009012802A81ED000F0A6F96846007AFF2816D0D0 -:4008C00030682C2142686846007A4843115ACB439B070CD50A4B20339B7A9B0707D501235B02194311526846007AFCF709FC0BB0F0BDFEF7C3FDDFE7D4010008FFFF000061 -:400900005C210008F0210008A021000870B5054605F05AFB04000DD107484078400709D1F6F75CF8FAF7ACFB01462878884201D0FAF7E4F9204670BD5C21000870B50646DA -:4009400005F048FB040010D1094D287EF5F73CF900280AD132887D20EA82C00042432846044B00211830F5F7CBF8204670BD0000A02100085D0B011038B505460020694681 -:400980000C240870FAF77CFB002803D01E484078400708D12A78691C684600F033F90406240E02D00224204638BDE8790223174A002810684168684600780ED02C2568433E -:4009C0000D5A9D430D521068142281686846007850431330085C002211E02C256843851C4D5DED07DFD00D5A1D430D521068142281686846007850431330085C01220221FA -:400A0000FCF7E8FBCFE700005C210008D4010008F8B50024264E054600291AD00C213046F4F760FC0004000C40D1E9792C2041433068001DF4F756FC0004000C36D1E9797D -:400A40001420414330680830F4F74CFC0004000C2CD118484022817A002711438172E879154D2C21E87230680770EA7A40684A433946F3F747FDEA7A1420424330680021EE -:400A80008068F3F73FFDFF2007E014223168624313328968641C8854E4B2E97AA142F4D8E1200649AF728000C8820020F8BD0000D4010008AC1E00087C210008A021000847 -:400AC00070B5FF2815D00B4A0446126853682C2254431A5BD5070CD055070AD5002903D0012189020A4301E003490A401A53FCF707FB70BDD4010008FFFB000070B5164C4A -:400B000088B00E46050023D0002E21D0002000900190029003906879400619D5102269463046F3F7D7FC0006000E11D00322E91C6846F3F7DEFC04AA31466846F5F7E6FE4F -:400B4000032204A92846F3F7C5FC002800D10024204608B070BD0000FFFF0000F8B51E491F4B0878401E08701C480021C28A7D20C000424319481830F4F7C2FF0024194DBE -:400B800023E0194B20461A682C26516870430E5CF60718D00B30091820461423584392680746861D9019FEF72DFD0006000E0AD10D48133700680D498068896AC35D8019B3 -:400BC0008022FCF725FA641CE4B2E87AA042D8D801206873F8BD00007A010008A02100085D0B01107C210008D4010008F021000810B5014606220248F3F77BFC10BD00007A -:400C0000F0010008F7B582B016490091FF20029900240870144E154F1FE030682C21254640684D43291D401806220399F3F752FC002810D13068294640680A31425C049982 -:400C40008A4208D1405DC00705D0029804700020009005B0F0BD641CE4B2F87AA042DCD80098F6E7FFFF0000D40100087C210008F3B581B0FF200199114F08700024114D77 -:400C8000114E17E02868062281681420604308180299F3F71FFC00280AD1286841682C206043085CC00703D001980027047004E0641CE4B2F07AA042E4D83846FEBD00000E -:400CC000FFFF0000D40100087C210008FEB50446002069460190087007460646014606225448F3F70FFC5348FCF72AF96079524D022801D003287DD1A279E11D6846FFF7AC -:400D000081FF0606360E23D14C482C230168684600784A684343D25C120619D5142289685043801D0818FCF77DF84448142200688168684600785043024613328B5C801D55 -:400D40000818892180224901FCF762F9012001902079012801D0042815D168460078FF2811D036492C22096842434B681B329A1889681423584308181146FEF743FC0606FB -:400D8000360E0BD000260198002842D0A87A01210843A87268460078287345E0274F2C2238684168684600785043085CC043800702D5E01DFCF7C4F83868142281686846E8 -:400DC0000078504309180622E01DF3F792FB386814228168684600785043024613328B5C081817492022096AFCF712F938684168684600E014E000782C2250430A5A012360 -:400E00005B021A430A5268460078FCF779F90127B9E76079022801D0032801D1801E6071A87A40084000A872002F01D00120A0713046FEBDF00100087C210008D401000867 -:400E4000F0210008F3B587B00C46FF206946087000250595019508728548039060792F46022801D0032800D10127207E022801D0032800D10125FAF703F9002810D02079FD -:400E80007C4E012819D06279002F01D0921ED2B2A11D6846FFF7B6FE0390002816D0BEE0002F02D06079801E6071002D02D06079801E6071002009B0F0BD002DEFD002A846 -:400EC000FEF70CFC039000287ED0A8E06A482C230168684600784A6843431B33D31889681422504308181946FEF78CFB0799039040310491002836D0002D66D05E482C22F0 -:400F000000684168684600785043085C40075CD506220021A01DF3F7F5FA04986179C1710121A01DFBF746FF534D1422286881686846007850431330085CFBF787FF2868B7 -:400F40002C22416868460078032350430A5A1B021A430A5268460078FCF7D2F8B07A04210843B07279E04448142200688168684600785043024613328B5C08183F4920223F -:400F8000096AFCF745F806220021A01DF3F7BAFA04986179C1710121A01DFBF70BFF0120019035482C220068FF23416868460078013350430A5A1A430A5268460078FCF794 -:400FC0009FF82D48006801E01AE028E0816868460078142250431330085CFBF737FF002D1DD025482C2100684268684600784843115A4B0713D501235B0219431152A9E7E7 -:401000001D482C220068012341686846007A50430A5A5B021A430A526846007A9CE7B07AFB210840B072002D17D00598002814D1207E801E20766846007AFF280DD00E4925 -:401040002C2209685043496801230A5A5B029A430A526846007AFCF753F8002F05D00198002802D16079801E6071039823E70000FFFF00007C210008D4010008F0210008CB -:40108000FEB5054640790027424E022801D0032845D16846FEF722FB07063F0E12D13E4C6846226800782C21414353680B315918142392685843801D1018FEF7A3FA0706E6 -:4010C0003F0E05D06879022827D0032825D026E020681422816868460078504302461332801D8B5C08182D498022896AFBF790FF0120687120682C224168684600780123C6 -:4011000050430A5A5B021A430A5268460078FBF7F7FFB07A022108431CE0801E687101204002002401900FE01B482C22006862434168019B885A98438852C00702D02046E9 -:40114000FBF7DEFF641CE4B2F07AA042ECD8B07AFD210840B0720F49A8792039104A03280BD0022812D001280CD0002050768878FD22104088703846FEBD01205076A879F7 -:40118000801EA871887802221043F3E701205076F1E700007C210008D4010008F0210008A021000810B509490748096888420AD10748084BC28A7D20C0004243044800214B -:4011C0001830F4F79DFC10BDEC470010EC010008A02100085D0B0110F7B515460C46F9F74FFF0746FF2C3DD0002F3BD014212646687C4E432C2180094C4301281AD11C4893 -:40120000214600680A314268525C0099921C4031CA714168201D0918284606220C30F3F768F91348062200688068811928461830F3F75FF90098F5F7EBFF002815D0042031 -:401240000C49897A01420DD0094800684168095D490707D58068B61D8119284606221230F3F747F9F807C00FFEBD0120E8E70000D40100087C21000810B510490A781049B7 -:40128000824201D8002003E0D0230A6A58431018002812D00A6B138802468032146B23800B6B146B5B88A3810B6B126B19881289914202D05A8800F009FB10BDCC1E0008C9 -:4012C0005C210008024901484860704750480010F8010008F7B50D463449334F897A84B03E4689065DD52C468034216B0A8B2946C0310091824204D3886820308078002820 -:401300004FD0002A02D12A48006B828828460699F5F7A6FD0646B84208D12889002102F098FD069805F0D8FF00263AE00027FF2069460197087200988068203081780129F2 -:4013400003D1A178002900D0C170A078401CA070A878FCF711F90407240FA878FCF7D4F80007000F04430F2C00D00127002416E00120009002AB03AA01A92846F5F7B8FC2B -:4013800000280AD10199002907D06846037AFF2B03D0027B2846F6F7BEFA641CE4B2BC42E6D3304607B0F0BDFFFF0000AC1E00085C21000870B50446C034217B0546002969 -:4013C0000CD0284600F0CAFA072807D0207B152802D1284600F018F80020207370BD704700487047FFFF000070470120704770470020704700207047024901484860704755 -:4014000030480010F801000870B50646FDF7FEFE04463089354620808035286B4089E080286BC08A2081286B00896080286B808AA0803046F7F705F9204604F027FF70BDED -:40144000FEB5044600790D46C01E05280DD848482E78807A20278006002807DB31462046FCF753F9E07E3843E076FEBD40212046FCF7A8F9A8786946000288806978084346 -:401480006946888029790A026946CA80E9780A436946CA80A9790A0269460A8069790A4369460A80297A0A0269464A80E97925460A4369464A808035296BC88069460888CD -:4014C000296B88806946C888296B488269464888296B0882204600F099FA2046F5F798FE00281ED1FDF7A8FE5E210A5B6179F6F7D1FD22460146A032507D0128286B408988 -:4015000026D080003C3083B2107D0128286B008B21D080003C3082B2103189B22046FDF73FF86420015BA078FBF728FC142E15D00F49A07D897AEF2239400843E17E384346 -:4015400011403943E176A0752046FFF75DFFFEBDC0007030D7E7C0007030DCE71521CC200155A07D3843A0752046FFF723FFFEBDAC1E0008014A526812691047F801000876 -:40158000014A526812691047F8010008F3B585B0FF206A460024107301941472184A2046927A920628D5059EC036B26820329578002917D1002D14D0009003AB02AA01A9B4 -:4015C0000598F5F795FB07466846037BFF2B06D00199002903D0027A0598F6F79CF9002F00D00124B0682030C178002904D0002D02D00124491EC170204607B0F0BD0000E0 -:40160000AC1E000870B504464878142801D015283BD1E07EEF21084020210843E076A07DDF210840A07540212046FCF7CBF82046F5F7EEFD002820D1FDF7FEFD5E210A5B9B -:401640006179F6F727FD22460546A032517D204680300129016B498918D089003C318BB2006B117D008B012913D080003C3082B21035A9B22046FCF793FF6420015BA0785F -:40168000FBF77CFB2046FFF7BFFE70BDC9007031E5E7C0007030EAE710B5044604F036FE00280CD106490A6B928822800A6BD28862800A6B1289A280096B4989E18010BD01 -:4016C0005C21000810B5044604F026FE002806D103490A6B12882280096B4988618010BD5C21000870B5054604F01CFE002817D12888F7F731FD040013D0F8F7A6FB0028D1 -:401700000FD0207909280ED02046F8F7AFFB01280BD0F5F763F9AA886988204600F0D6F870BD022070BD0C2070BD2A2070BD000010B5044604F0FCFD002806D10349228853 -:401740000B6B1A80096B62884A8010BD5C210008F3B5064631480025807A83B080065AD53746C0373868344680340090206B0290B8680190F1F7D2F8D02200213046F2F7A7 -:40178000C1FE029820630198B86000983860F1F7AFF8049801280FD130462421C830F3F7A1FD05042D0C36D130461A21B030F3F799FD05042D0C2ED11A220021206BF2F791 -:4017C000A1FE3046049900F05DF81549226B086B80881080086B226B00895080226B1B209080226BD080226B1081226B50810A6B236BD2889A81096B226B4989D181FF21B5 -:40180000226B49311182226B5182226B9182226BD182216B0883284605B0F0BDAC1E00085C21000810B504460020002906D00C211248F3F757FD0004000C1DD10F491B226A -:4018400030390B6B1A80FF220B6B49325A800B6B22889A8022880B6BD2007032DA800B6B62881A816288096BD20070324A81044920238A7A1A438A7210BD00008C210008D4 -:40188000AC1E000870B50546C03500290FD1A86820308678002408E0A868E1004058002801D005F019FD641CE4B2B442F4D324220021A868F2F726FEA868FF2120300170A9 -:4018C000A86800212030417070BD000070B5064604468036306B03898B4206D1838A934203D11D4B1B78002B07D0E37E9D0606D5A57DAD0603D41A2070BD002070BDDB067A -:4019000028D483891546AB4200D91D460180306B82812046F5F77CFC00280ED1FDF78CFC5E210A5B6179F6F7B5FB316B1030CB8981B22A462046FCF733FE6420015BA078FF -:40194000FBF71CFAE07E10210843E0761420C0342073D2E7232070BDF801000838B50546002000900C46A978684605F041FC002807D0142C03D1E87EEF210840E8760720B9 -:4019800038BD0098092204702C468034216B89784170216B4988090A8170216B897BC170216BC989090A0171216B09784171216B0988090A8171216B097BC171216B898951 -:4019C000090A01722946F8F799FE38BD70B504460088F7F7C1FB014680310B46096B2289CD89AA4203D1E5884E88B54206D0CA811A6BE1885180044A01211170A28861883A -:401A0000FFF764FF70BD0000F801000830B50024002835D0014680310A6BD3881588AB4200D32B4615899D4201D0138101240A6B538A9589AB4200D32B46958A9D4201D0DC -:401A4000938201240A6B958853889D4200D22B4655899D4201D053810124096B0A8ACB899A4200D31A46CB8A934201D0CA820124B421095C012200F007F802490020087010 -:401A8000204630BDF80100088030006B0129838A09D099080F39038989B28B4200D21946002A03D005E0D9080E39F4E7028B8A4200D901837047000070B504461B3CE12CD4 -:401AC0001CD2104C246BA588854217D30E4DA94214D8FF204930814210D3E6888E420DD3FB2A0BD81B2A09D32189914206D3AB4204D8834202D36089984201D2122070BDCA -:401B0000002070BD5C21000848080000F0B5314A0446314B002110465D5C491CC9B2A542FAD1A3009E462D4B491EDB7DCDB29C462A4C00216B003434E45A284B4E003433EC -:401B40009E5B254B5B5C9F00244BDF59BF897F00F619B6B2B44202D90020614625E0B24200D932460E46491CC9B2AE42E5D11CE01A4B4D0034335B5B1E1B052E09D2164D90 -:401B8000164E6D5CAF00F559AD896D005B199BB206E0124F75467F59FF89FF1CBE4217D39A4200D91A46491CC9B28C45E0D8094988420CD1101B04280AD9084A71465158CD -:401BC000C01E897C80B2002901D1401E80B2F0BD0020F0BDFFFF000000020008B4220008F7B50546002082B0164604460090F9F73BF90346002015E081006A581278002AED -:401C00000ED0062A0CD0464A670010556958098ACA1A012109045118424A641CD153E4B2401CC0B2697D8142E6D8012021E0014611E03C4B94467246DA53019B6246DA8352 -:401C4000374A575C5318BC46203BDF7F57546746491EDF77C9B2002909D0324B4F00DA5BFB18203B0193DB8B9E467245E1D3401CC0B2A042DBD300200399641EA446294CC5 -:401C8000086015E026494200095CA35A8F00EF591219FF895288DB19DB1C93420AD9039A136801228A4013430399401CC0B20B606045E7DB0399096800290BD0184A125C35 -:401CC0000120904001430398016001200090009805B0F0BD124801788A00A858807C3070B170002801D00128F1D1AA5821889289638852008A1892B2934204D9511A05E01F -:401D0000491EB180E3E7591A042905D9C91E89B2B1800028F4D0DAE70020B080D7E7000000020008E822000870B50A46034641780024007800F010FA264DFF2847D09E78C5 -:401D400025493300F8F7D0FD09060A0F13171B1F242943008000085800781CE0800008584068106034E08000085800890EE080000858807A0FE080000858808906E080001B -:401D80000858C08902E080000858008A10801FE080000858807C10701AE080000B581B7813700B585B6853600B581B8913810B589B7A93720B589B8993810B58DB89D381A9 -:401DC0000B581B8A13820858807C907400E02C46204670BD01001600B4220008F8B50446002020606060254EA060F07D002809D001280CD0224669463046FFF7F1FE012834 -:401E00001AD031E005202070FF20A070F8BD307E2070317DA170002801D00128F6D1317D8900715889894900C91E89B2A1800028ECD1491EA180F8BD0127104867701C30C5 -:401E4000009905F0B1FB054680003058807C2070B17D2846A94207D9FFF758FEA080A5700098AF40B843A06020783076A0783075A178A088890071580881F8BDB422000835 -:401E8000F8B5154F05460026387D344600901EE0E80716D0009880003858018AA0003858008AF8F79BFF0121C903884201D3002807D1094821461C3005F0EAFB0120A0402D -:401EC0000643641C787D6D08E4B2A04201D3002DDED13046F8BD0000B4220008F8B505460020287068602872F8F7BEFF0746F8F7C1FFFF213931884201D2022600E003266C -:401F0000002420E0A00010580178002919D0062917D0008A0121C01B0904401880B24910884201D8B0420CD801202870917DA14203D96968A040014369602146054805F0F7 -:401F4000A7FB641CE4B2034A1C3A507DA042D9D8F8BD0000D022000870B51C4DFF222A7505222A7600266975EE75A975334606E014225A4312189C005B1C2A51DBB28B4219 -:401F8000F6D30C4603E0A200641CAE50E4B2052CF9D314224A4310180A4601460B481C3005F09BFA00280FD100240AE0A000285821460670012000F00BF8002804D1641C21 -:401FC000E4B2A97DA142F1D870BD0000B4220008F3B583B0002668461A4C0671607D0D4600282BD069464D70039808702946039800F0B2F80746FF281ED0024601A968466A -:4020000000F060F9B8002258711E51602258090C118122589672225891812258D18121582A460E8220580521817420461C30039905F07EFA05B0F0BD0348FBE70248401CEE -:40204000F8E70000B422000801001600F8B50F4606460024F8F708FF0546F8F70BFFFF213931884201D2BF1C00E0FF1C0B48B2008258F9B2107800280ED006280CD0108A27 -:402080000122401B1204801882B20120C003824201D88A4200D801242046F8BDB4220008F8B52B4D0024E87D022801D20020F8BDF8F7DAFE264F264B002134370126360463 -:4020C0005D7D11E08B00D2581378002B0AD0062B08D0204B1955128A6300121A9219641CFA52E4B2491CC9B2194A8D42EAD8012117E008460AE07B53164BF2831A18203A61 -:402100001D5CD67F1E54401ED577C0B2002806D04500EE19203E7A5BF38B9A42EBD3491CC9B2A142E5D30B49388809787B888A0007498A58D2898218D21C9A4206D80A7DBB -:4021400092008958C989C91C8842AFD80120F8BDB422000800020008022804D20348807D401E884200DAFF2108467047B422000810B50146014805F0FBF910BDD022000854 -:402180000A4610B50146024805F066FA10BD0000D02200080A4610B50146024805F04CFA10BD0000D0220008F3B500980C46417800250078FFF7D0FF06463F48FF2E78D0C0 -:4021C00000993E4F89783E4A0B00F8F78DFB09060F161D242D34393E72002178062968D232462146009800F06DF863E0216891425FD8B000385841605CE02188914258D882 -:40220000B0003858018155E02178022951D2B000385881724EE021881922D201914248D8B0003858818145E02188914241D8B0003858C1813EE0B10079582088088239E04C -:402240002178052935D2B0002FE02178062930D2616891422DD8218991422AD8A17A022927D2A3891921C9018B4222D8E18991421FD8A17C05291CD232462146009800F0DD -:4022800021F8B0003A58616851603A58218911813A58A17A91723A58A18991813A58E189D1813A58218A1182A17C3858817401E0FFE705462846FCBD01001600B42200080F -:4022C000FF18000010B51A4B92009A58097814781170002C0BD0002917D1D87D401EC0B2D875012811D1194600204B7D1DE0012901D0022909D1D97D491CC9B2D975012904 -:4023000003D1417819750078187610BD82008A581278002A07D0062A05D082008A58927C0A76087510BD401CC0B28342EED810BDB4220008A03001777047000002490148E8 -:402340000860704798480010080200087047704770477047704770470249014808607047704800100802000870B5224DA030447E6E7D002334404476067E2D7D2E400676EB -:40238000857E2C400C70047EC57E2C4014700D780224032D00D30C701578032D00D31470447E0025012C02D0022C04D00CE0047E012C03D008E0047E022C05D10C78167869 -:4023C000B44201D00D701570047D0E78344200D00D70447D1678344200D015700978002901D0012381751178002901D00123C175184670BD7C2100081CB50400684681701A -:4024000008D020896A4610802046A030417D1171007DD0702146C031487B820701D57D2202E0C20702D07E221040487303496846096888472046F6F704F91CBD54020008A6 -:4024400010B541780078491EC9B2FAF73DF9024904200876002010BD5C21000810B5C1780278491ECBB281784078FAF743F9024903200876002010BD5C210008F0B587B08A -:402480000026694600960E740E75054605AA04A9FFF76AFF2C46A0340746012814D1A07D022602282AD000200290E07D022827D0002001902846FCF79CF80090A878009B7B -:4024C000019A0299FAF75EF91F48807A800604D5A17D00222846FFF7D7FA03966846007C009E00906846007D019000200290A97802A804F07DFE002818D103E00120D3E7C1 -:402500000120D6E702981823019A0099037041708270C670310A017105222946F8F7EEF880212846F5F7C8FB03982077002F08D1607F002805D10320607700212846FFF7FC -:402540005BFF07B0F0BD0000AC1E0008014A12689269104708020008F8B50F460546F4F757FE214EF17AC907C90F12D02C467978A0342176B97801276176677700280DD0D0 -:402580002846FFF77BFFC035687B822108436873F8BD39462846FBF73AFDF8BDB07A800604D5002201212846FFF76EFA00200090A978684604F01CFE0028E4D10098172248 -:4025C00002700A4A2946537D4370127D82700322F8F794F8728A80212846F5F74DFB042020776777CFE70000AC1E00087C21000870B506460E480C46C07AC007C00F30469E -:402600000DD0F4F705FE00280CD035466078A0352876A07868763046FFF730FF70BDFBF7F6FC70BD172224213046FBF722FF70BDAC1E0008014A1268D269104708020008C7 -:40264000014A1268126A10470802000870B517490978814201D8002504E01549D022096A50430D18002D1FD02C46A034207F02281AD1E07D60750E48A17D21752030027D69 -:40268000E276407DA07609482038807A800603D501222846FFF7F8F9002020770320607700212846FFF7A8FE70BD0000CC1E00085C210008FEB50C460746F4F7A9FD0128EA -:4026C0001DD080213846F5F7F7FA2E48A578017D407D667805400E402079E1780002014330463C462843A0340191002804D0B878F8F75AFD012808D0002E0FD00FE0182208 -:4027000024213846FBF7B5FEFEBD28215A20C155002020773846F6F7AFFBFEBD667D002D00D1257D207D28420ED0607D30420BD000200090607F00281BD1032060770021C6 -:402740003846FFF759FE14E0022D17D00021022E16D0002202200090B878019BFAF712F80948807A800604D5002229463846FFF78BF9E675A57500982077FEBD0121E6E731 -:402780000122E7E77C210008AC1E000870B50C46F6F7E2FC0546002060702070002D0BD02846F7F752FB002806D0A035687D6070287D2070002070BD022070BD10B501785C -:4027C0004478CA078378084903D14A7D224009D08A750078800703D4087D184002D0C875002010BD112010BD7C210008F8B50746FF2168460170FE783D793888F6F7ACFC1F -:4028000004000FD0F7F721FB00280BD0B9782148CA0709D0B422175D89070AD4067D2E4005D008E01E20F8BD477D3740F4D11120F8BDB520065D2546A035687D304209D07D -:40284000287D384206D00320687700212046FFF7D3FD14E002236A4618212046F7F75BFB01280ED002236A46FF212046F7F70CFB012806D0AF76EE76204600F07FF800209C -:40288000F8BD68460078002801D02320F8BD2A20F8BD00007C21000870B50E4605468021FAF790FF2C460020A03420770C48017DE176407DA0760B48807A800604D5217D80 -:4028C00001222846FFF7E0F82846F4F7A1FC002805D10320607731462846FFF78DFD70BD7C210008AC1E000870B505468021FAF769FF2C460021A03421770C49087DE076E9 -:40290000487DA0760A48807A800604D5217D01222846FFF7B9F8607F002803D100212846FFF76AFD0320607770BD00007C210008AC1E000810B50F490978814201D800207C -:4029400004E00D49D022096A5043081800280FD00949A03020318A7D037D9A4203D1CB7D447DA34204D08276C97DC1760121017710BD0000CC1E00085C210008F8B5054647 -:402980002C460020A0346077207F012801D1022060772846F4F73CFC134F00281AD0032600200090A978684604F022FC002810D1009816220270A27E4270E27E82702946AA -:4029C0000322F7F79BFE7A8A80212846F5F754F92677F8BDB87A04268006E1D5A17E00222846FFF751F8DBE7AC1E0008F7B54804040C82B0384801900178029816468142F6 -:402A000005D919200002844201D8082E01D9334C52E0029F0620474331483D182879012801D0022802D1029800F0C8FB2C48C4536E71C45B408B84421ED22146F0F768F861 -:402A4000002919D10094019800240078019011E006202146414322480E183079012801D0022804D170880099F0F752F87180641C0198E4B2A042EBD8029800F033F8174999 -:402A8000044688421DD0164E6C80F15B708B814206D2F0F73DF8002902D1029800F000FC718BF05BF0F734F8002908D0022028710B48017F491C0177204605B0F0BD012096 -:402AC000F5E72879002803D06888801C80B200E00A2068800320EAE7CC1E0008FFFF0000F2220008F0B50646AFB00020039001200690E0480090E048089030460622DF49B6 -:402B00005043002501904018029050E028460621DA4A4843811804910979012901D0022943D1B54241D0039F14214F430BACE5550199105A515A00F0A3F93F1904467860ED -:402B400001282AD0049802994079497905914118A14204D90020B860F860069015E00499201A49880919081A04912146EFF7D0FFB96004990598081A2146EFF7C9FFF96036 -:402B80000098844201D2A0B20090F868A04201D9012000E00020387403E00020B860F86006900398401CC0B203906D1CEDB208980078A842AAD8069800280ED00398002801 -:402BC0000ED000200490AD490198085A01900020044605900546039045E00020C04343E1A64806760199415A418300203CE1284606214843A14907904018069000790128A7 -:402C000001D002282DD1B5422BD01420214641430BA80F18B8680099EFF77AFFB960F8680099EFF775FFF9600698069940884979A70042181FA9CA510099EFF769FF27A872 -:402C4000C1518E490798095A019800F019F901901FA8C0590099EFF75BFF1FA8641CC151E4B26D1CEDB208980078A842BFD8601E054681B20A901FA800F0FAFAA9B227A869 -:402C800000F0F6FA002729E00898002500780790B80006901DE0062029464143774808180179012901D0022911D1B5420FD04188407908180099EFF72BFF0A4606981FA994 -:402CC0000858824203D106982BA90D5004E06D1CEDB20798A842DED87F1CFFB2A742D3D3002559E0AE002BA806968059062148436249401840880099EFF70AFF1FA88059EE -:402D00000F4686B209902146681CEFF701FF880008902BA907900858062148435749401840880099EFF7F4FE07981FAA105A012C82B223D9B94201D3B1420ED9BA4201D326 -:402D4000B2420AD9914214D3B24201D2B94201D8012000E00020002810D08F420ED196420CD10A98854209D0069923AA0998505010E0B942EED8B242ECD3E9E7089827A906 -:402D800009580198401E08180199EFF7C1FE069823AA11506D1CEDB2A542A3D300205BE000991FAA8900555823AA535800202E461F469D424DD0002122E0142251430BAA09 -:402DC00089188A680020B24205D3BA4203D8AA4200D915460120C968B14206D3B94204D8994200D20B46012007E0002805D18A4214D99642F7D88F42F5D36146491CC9B2E4 -:402E00008C46A142D9D3002823D0AB4210D30399581B884207D8002905D01AE0964218D98F42E0D315E003905819400804900EE0019803991818401B88420AD903900198ED -:402E40005919081840080199EFF762FE0491012005900098401CC0B20090A042A0D30598002800D1B9E6049802994880029840882FB0F0BDFFFF0000CC1E0008F2220008D4 -:402E800010B50C46002807D0002C05D0EFF740FE20460C00FAD110BD002010BD014606225143064A04488A181179012901D0022900D1508870470000FFFF0000F222000875 -:402EC000FEB5284B1B780293834209D91923DB01994205D89A4203D8062901D3062A01D22148FEBD914201D10846FEBD49040E0C51041E4A0F0C117F002905D0012906D1B0 -:402F00001146097E814202D1F0198008FEBD3D4624E001200024019016E0204606214843124942181279012A0CD1085A29460090EFF7EEFD002905D028460099EFF7E8FD1C -:402F4000002909D1641CE4B20298A042E5D80198002801D06808FEBD6D1EADB2B542D8D2D2E70000CC1E0008FFFF0000F2220008FEB5062107466A4E4F43BC1921790129E8 -:402F800006D0022904D0F7F76FFF6188401860E0337E0121062283426ED1624B00241D780BE0062363439B191B79012B01D0022B01D1844203D1641CE4B2A542F1D8A542B5 -:402FC00003D1F7F751FF0A3043E06846447101718271694601A8FEF7A7FE06204443A019418868460088411A68460180F7F73CFF0546684601882846F7F7FAFE04466846C2 -:40300000018803222846F8F7EDF8002823D06846018801222846F8F7E5F8002812D0778B20463946EFF774FD7819401A01E0708B001984B2032221462846F8F7D3F80028B7 -:40304000F5D16BE0768B20463146EFF761FD4819801984B262E0718B2046EFF759FD481901E0708B001984B2032221462846F8F7B9F80028F5D151E0684643710171827101 -:40308000694601A8FEF750FE684661880088091868460180F7F7E8FE0546684601882846F7F7A6FE02902079022817D0768B6846018803222846F8F795F800281FD0684668 -:4030C000018801222846F8F78DF800280298314610D0EFF71DFDA819401A02E0F65BE6E7A01984B2032221462846F8F77BF80028F6D113E0EFF70CFDA8190818A9E731460A -:403100000298EFF705FD481900E0A01984B2032221462846F8F766F80028F6D12046FEBDF2220008CC1E000810B50B460621104C484302191179012906D0022904D0205A36 -:403140004008F3F777FE10BD0A498B4206D15188022903D3C8031904401807E0215A50880818C01A801EEFF7D3FCC803000C10BDF2220008FFFF0000F0B500200E4A84469E -:40318000014606460A4B0B4CFF20157809E006270A467A43A352121953801671491C5071C9B28D42F3D82076638326776046F0BDFFFF0000F2220008CC1E0008F8B50146E0 -:4031C0000020009026480078844688421AD9084606225043234F8646C0190279002A11D000220271204B7246BB52FF2643804671387F1C46401E3877387E354688422CD18A -:40320000002019E01948009027E0062201465143CA191279012A02D0022A06D00AE0795AA14207D20C46064604E0795A994201D20B460546401CC0B28445E6D8FF2E01D0A2 -:40324000304602E0FF2D03D0284600F029F804E0FF2038760020C04378830098F8BD0000CC1E0008F2220008FFFF000001001600F0B58C4600230FE00022C91A491E08E05C -:403280009600371884597D68AC4201DD85517C60521C9142F4DC5B1C61466345ECDBF0BDFEB5064615480621374606764F43C15B41830146002479181148009100780190C1 -:4032C00016E006200D49604345182879012801D002280AD1B44208D06888C95B421800984088101AEFF7FEFC6980641C0198E4B2A042E6D8009800214180FEBDF22200088D -:40330000CC1E00080348C078002801D000207047012070478025000810B5012200F046F810BD000010B5054802780121002A017002D10120F2F734FB002010BD0C02000888 -:4033400070B5144D297803200129287002D10120F2F726FBEDF7CFF8EFF7E0FA00246C60FF22813221460C48F1F7CCF8F02200210A48F1F7C7F80948F030C47004704470B4 -:40338000C47304734473EDF7B2F8EFF7B1FA002070BD00000C020008102300089024000810B5002200F002F810BD0000F8B515460C460646EDF79FF8EFF7B0FA264A1078E8 -:4033C000012808D01078022805D0EDF790F8EFF78FFA1120F8BD0C20464320483018C1788378994205D3EDF782F8EFF781FA1220F8BD46780C277E43416867687118266851 -:40340000A4684F600E608C60C178431C491CC1704178491CC9B219708078814201D1002018705068401C50601078012805D0EDF75EF8EFF75DFA0020F8BD02201070EDF7D6 -:4034400056F8EFF755FA002D03D00020F2F7A8FAF1E70120FAE700000C0200088025000810B51248002101704160FF2281321048F1F748F8F02200210E48F1F743F80D48DA -:4034800018220021F030F1F73DF80A482021F03081701421817306494160064901610649816006494161F2F761FA10BD0C020008102300089024000843EB0010456C0110C7 -:4034C000F8B50025164C01262F462078002815D0012813D0022802D003281CD11AE000F021F8EDF708F8EFF719FA6068002800D12670ECF7FCFFEFF7FBF90CE0ECF7FBFF7F -:40350000EFF70CFA2078002802D020780128F0D10125EEE72770002DD7D00020F8BD00000C020008FEB5214D214E0027FF24ECF7E2FFEFF7F3F900200C2141438919C97816 -:40354000002901D0044602E0401C0228F4D3FF2C2AD00C204443A41921780C2260685143081801460EC9029301920091076047608760E078401EE0702078401CC0B2207038 -:40358000A178884200D127706868002802D06868401E6860ECF7ABFFEFF7AAF9A1680029C4D068468847C1E7FEBD00000C0200088025000810B5830A082B04D03F2B05D0E9 -:4035C00004F078F810BD00F025F910BD01F0A8FB10BD10B50C460146207800F02BFE0028204603D003F0DFFA002010BD00F082FD1F2010BD38B504460020009069460520FF -:4036000000F071FD00280AD101200099052C07D010220A708C704870FF20FFF7DAFF38BD1A220A708870F6E710B5820A082A04D03F2A05D004F0F0F810BD00F015FA10BD8F -:4036400001F072FB10BD0000F8B5044640782578000205430020694608702846FFF7E4FF01282BD16946A0780978884226D022498D420CD0891D8D4209D0C91C8D4206D0E0 -:40368000C91C8D4203D01C4925318D4204D11221284600F0A1F80CE00022022805D32079E178000201430A05120D12212846FFF781FF204603F0C8FD1220F8BDA80A0F4E59 -:4036C00008280ED03F282A46314610D0E01C04F0EDF8204603F0B8FD3146284600F010F8F8BD2A463146E01C00F0CEF9F1E7E01C01F070FBEDE700000D2000009825000889 -:40370000F8B50D4604460020694608702E48871D844212D0BC4210D0F81C84420DD0C01C84420AD028481830844206D0401C844203D025482530844201D101200870A00A3F -:4037400008280ED03F280A46294620460FD004F0FFF806466846007800280BD001281FD116E00A462946204600F0C2F9F1E701F051FCEEE70022002D05D0687829780002FF -:4037800001430A05120D31462046FFF713FF07E0BC4201D13A2E05D03146204600F01CF83046F8BD68782978000201430805000DF5F7D2FC05460021204600F00DF83A21F5 -:4037C0002846FAF774F8EBE70D2000000148007B70470000A0210008F8B5054600200E4600906946082000F07EFC002801D00720F8BD009C0F202070A670FFF7E7FFE0700C -:403800002571280A6071042060702146FF20FFF7E0FEF8BDF7B584B00546002002900420694608718649874B681A0C22EE1806278D423BD010DC8449681A8D4230D006DC79 -:40384000002E28D0012E28D0052E13D128E006282AD009280ED120E0172829D006DC012824D0022819D0162804D11FE019281FD01A281DD07549284609688847694609794C -:40388000401869460871724928460968884769460979401805E0781C03E06846027107E005206946087103E00B20FAE7684607716846007902A9001D00F015FC002802D0E6 -:4038C000072007B0F0BD029C29462046059A00F001F90420694608715949491C681A8D420AD005DC5B48281806D005280BD103E0072801D0152806D10699A171069968462B -:40390000090AE17107710598002821D14C49491F681A8D425AD009DC4F4F002E20D0012E2FD0052E44D00D2E06D148E003285CD0072866D01B286FD0484B01AA1B682146C5 -:4039400028469847464B01AA1B682146284698476846007960702146FF20FFF73AFEB0E769460979387D6118887069460979000A6118C87069460879801CC0B20871797D55 -:403980005BE06946087908222018801C0021F0F7B9FDB87AF52108406946097961188870F87A6946C0070979C00F6118C87023E0F3F708FC05E069460879401C1FE0F3F779 -:4039C00021FC6946097961188870F4E7684600792118891C0698F3F700FC002801D06071B6E769460879401D09E06946087908212018801C03F05DF9694608790830087170 -:403A0000A6E76946087914492018801C08221831F0F76FFDF0E7FFE7124A694612680698904760716946087809796118887069460879401CC0B20871497820188170BAE726 -:403A40001A200000FEDFFFFF0F2000004C0200083C020008EBDFFFFFAC1E0008480200083802000858020008064AC0B21378834206D3401E1269C0B2105C087001207047E4 -:403A8000002070471402000830B4074BD2B21C78944206D39B689200D218403AD26B30BC104730BC704700001402000807484E21017007494160FF3139318160FF313931A5 -:403AC000C160FF313931016170470000140200084449001070B504460E2016460D462070FFF774FEA070E570280A2071667170BDF8B50D4D16460F46C1B22A780120914206 -:403B000010D88C00E868314620184038C26B38469047002806D16868314620184038C26B38469047F8BD000014020008F8B5054600260D4F69460620009600F0D4FA002802 -:403B400001D00720F8BD009C324639462046FFF7C1FFA571280AE071062060702146FF20FFF737FDF8BD00001F20000070B50446054640220021F0F7C5FC40222349284695 -:403B8000F0F7B7FC2249F522887A20341040C0060028207802DA3022104301E0CF2210402070887AC2070720002A2A7F01D0024301E0D208D2002A778A7A93060122002B96 -:403BC0000ADA6378C0252B436370A37808251343A370E3782B43E3708B7A5B060AD5A378F8252B43A370E3780343E370E07904231843E071C87AC00706D0E078F021084362 -:403C0000E07020791043207170BD0000654E0010AC1E000810B50022F3F776FB10BD10B5F3F7D0FB10BD002070470120704710B5F3F74AFC10BD0020704710B5F3F746FC66 -:403C400010BD0000044A0178D180407800020143D180002070470000A021000810B5F3F7E3FC10BD10B5F3F7FBFC10BD10B5F3F703FD10BD10B5F3F70DFD10BD38B5044669 -:403C80000020009069460E2000F02DFA002801D0072038BD00993E200870032088702078C870A07808716088000A487120798871A088000AC871A0790872E088000A4872F9 -:403CC000207A88722089000AC8720A2048700320FFF77FFC38BDF8B50546002000906946232000F000FA002801D00720F8BD009C3E2020700A2100F09DFA014601200029B2 -:403D000046D001260A20A07007462878E070A978217169880622090A61716878A0712879E0712046294608300C31F0F7E2FB0C20002E0ED0204629460E3006221231F0F790 -:403D4000D8FB20462946143006221831F0F7D1FB1820AA7921188A70EA88801C120ACA702A7A21188A702A89801C120ACA70AA7A21188A706A89801C120ACA70221869796D -:403D80009170401C607021463846FFF722FCF8BD0026A0700127B8E7F8B5044600200E46009015466946082000F09DF9002801D00020F8BD0099082008708E70CC70200A0D -:403DC00008714D7104204870FF20FFF702FCF8BD38B50C460021054600916946072000F082F9002801D0002038BD0099302008708D70CC70200A087103204870FF20FFF730 -:403E0000E8FB38BD38B50546002000906946112000F069F9002801D0002038BD009C3E2020700520A0702878E07028880822000A2071601D6968F0F75CFBA9680D200A7812 -:403E400062734978A173607021460520FFF7C1FB38BD38B5054600200C4600906946092000F041F9002801D0002038BD00991320087001208870CD70280A08714C71200A1F -:403E8000887105204870FF20FFF7A3FB38BD38B50546002000906946102000F024F9002801D0072038BD009C3E2020700420A0702878E070A87820716888000A60712878D1 -:403EC00000280BD0A01D08220021F0F71BFB0C20607021460420FFF77CFB38BDA01D0822A968F0F706FBF2E738B504460020009069460C2000F0F7F8002801D0002038BD69 -:403F000000990C20087020788870A078C8706088000A08716078487120798871A088000AC871A0790872E088000A487208204870FF20FFF74EFB38BD38B504460020009092 -:403F40006946062000F0CFF8002801D0072038BD0099572008708C70200AC87002204870FF20FFF736FB38BDF8B5064600200C46009015466946082000F0B5F8002801D0E2 -:403F80000020F8BD0099052008708E70CC70200A08714D7104204870FF20FFF71AFBF8BDFEB507460020009010480E46019015466946082000F097F8002801D00720FEBD27 -:403FC000009C324620460199FFF784FDA771380AE0710620002E03D1290A25726172082060702146FF20FFF7F4FAFEBD7B0C0000F8B5054600200E4600900C4F69460620F6 -:4040000000F071F8002801D00720F8BD009C324639462046FFF75EFDA571280AE071062060702146FF20FFF7D4FAF8BD7C0C000010B5F5F7E3F910BD10B5F5F73BFA10BDE5 -:4040400010B5F5F759FA10BD10B5F5F7BBFB10BD10B5F5F7D2FB10BD10B5F5F761FC10BD10B5F3F7C7FA10BD10B501220A70F5F743FD10BDF8B505460020074600900D4E2D -:404080006946142000F02FF8002801D00720F8BD009C3A4631462046FFF71CFD1022A01DA918F0F726FA142060702146FF20FFF790FAF8BD1720000010B5F3F799F910BD6E -:4040C00010B50029014601D00B2000E00220FFF780FA002010BD10B5FAF70CFC10BD10B5FAF730FC10BD0A4610B5C1B2104603F02BF810BD10B503F0C3F810BDF8B50546FD -:40410000C078AE78154C00020643A07C27468000C03FC019403004222946F0F7EAF9A07C238A8100C81940302A1D102B15D07D50A17C00234900C91980310E80A17C0B55CF -:40414000A17C491CC9B2A174102900D3A374218A491C2182114602F017FDF8BD9C2600083EB5134C0025E07C21460555E07CC0398000085803F09AF8E07C401CC0B2E074AF -:40418000102800D3E574208A401E20820948807A00280CD00095019511206A4602951081558129460A460020029B03F088F93EBD9C260008A021000870B5184C0025207AD2 -:4041C000002825D1F1F764F915488574C574058225726572A572A5821DE0A07A00280DD0401EA0720D4A0006410DC03A8818515C4068022907D0042907D101E01920F0E77C -:4042000003F03EF801E0FFF7ABFFE07A401EE072E07A0128E1D80348057070BD702700089C2600082802000810B5FFF7C5FF002010BD00001C4B13285A7A31D00EDC0E2803 -:404240002ED006DC052820D0082827D00C2829D11DE00F2824D0102824D11FE03E280AD004DC1A2817D030281CD112E0572814D0FF2817D114E0500614D5491E0120884023 -:40428000D98880B201420BD10CE0012006E0802004E0202002E0022000E00420024201D00120704700207047A021000838B505460020009069460920FFF715FF002801D03D -:4042C000072038BD009CFF2020700320A0702878E07028880422000A2071601DA91CF0F708F9072060702146FF20FFF772F9002038BD03B583B0002069460090888001AAA9 -:4043000004A91220F1F7F6F969460320FFF7EBFE00280ED10099FF2008700620887068468088C870000A087103204870FF20FFF750F905B000BD03B583B00020694600905B -:40434000888001AA04A91120F1F7D4F969460320FFF7C9FE00280ED10099FF2008700720887068468088C870000A087103204870FF20FFF72EF905B000BD000038B50446E1 -:4043800000200C4900900878401E087069460520FFF7A9FE00280CD10099FF20087002208870200ECC70087103204870FF20FFF710F938BD2802000810B50B4C617E0029BB -:4043C0000BD00A49884209D1F2F7D8FB607E022801D1F0F76FFF0020607610BD02F0F4FB607E00F031FF10BD5C210008C0FD0000FEB5044600200290607F0F46401CC6B298 -:4044000002A9301DFFF76FFE002801D00720FEBD029D21463931E81D019100902246637F1E3229392046F2F727FA0C49884204D12846FFF75FFE1220FEBD002208492846C0 -:40444000FFF748FB607FA871361D6E70022038702946FF20FFF7BDF80020FEBD01001600A9FD0000FEB5044600200290607F0F46401DC6B202A9301DFFF735FE002801D06D -:404480000720FEBD029D2246A91D481D019100902146637F1E3210312046F2F715FA0C49884204D12846FFF725FE1220FEBD002208492846FFF70EFB607FA872361D6E701C -:4044C000022038702946FF20FFF783F80020FEBD01001600A8FD0000F8B5044600200E46009069462420FFF7FEFD002801D00720F8BD009D002225492846FFF7EBFA2146CB -:404500002046AA1D20311030F2F700FA002804D02846FFF7EFFD1220F8BD2178A97521882846090AE97521681C30090C29762168090E69762179A976A188090AE976616843 -:40454000090C29776168090E6977217AA9772189090AE977A168090C0171A168090E4171217B001D8170A189090AC170E168090C0171E168090E41712420687002203070B4 -:404580002946FF20FFF725F80020F8BDADFD00000120704738B500200D46009069461020FFF7A1FD002801D0072038BD009C00220B492046FFF78EFAA11D0020F6F760FC6E -:4045C00021460C310120F6F75BFC10206070022028702146FF20FEF7FCFF002038BD0000A1FD00007CB500200D46009069460620FFF779FD002801D007207CBD009C002243 -:404600000B492046FFF766FA01A8F1F7D7F868460079A07168464079E07106206070022028702146FF20FEF7D4FF00207CBD0000A2FD000010B5012008700024034803F064 -:40464000BFFA002800D00C24204610BDF342011010B5012008700024034803F097FA002800D00C24204610BD37430110F3B5044683B000200190207D002601461131CAB20B -:40468000332802D9122005B0F0BD01A9101DFFF72AFD002801D00720F5E7019D002232492846FFF717FA2068FAF7A2FE277DAF710520009009E080194019801C394602F016 -:4046C000F8FA0836083FF6B2FFB20098082FF2D880194019801C394602F0EBFA217D009822790818C1B268188270A288091D120AC2706268C9B2120C02716268120E427186 -:40470000227A681882702289091D120AC270A268C9B2120C0271A268120E4271227B68188270A289091D120AC270E268C9B2120C0271E268120E4271227C68188270228A7C -:40474000091D120AC2702269120C02712269120E427169700498022101702946FF20FEF738FF00208FE70000ACFD0000FEB50F460546FF2069460871002000902888F4F764 -:40478000EBFC060027D0F5F760FB002823D069460720FFF7A8FC002801D00720FEBD009C00220E492046FFF795F92878A07128880223000AE07101AAFF213046F5F7ABFBB5 -:4047C000207207206070022038702146FF20FEF700FF0020FEBD0220FEBD0000AAFD000010B500240C708179002904D0012905D01224204610BDF8F7C9FAFAE7F8F7FEFA4F -:40480000F7E70000F8B505460F460088F4F7A4FC04006FD0F5F719FB00286BD00020009069460620FFF75FFC002801D00720F8BD009EF6F7A1FA2046F2F7EAFC00283FD156 -:40484000FAF7FAFC5E210A5B6179F3F723FC2246A0320146537D2848012B837A05D09B060DD5B0231B595B890AE09B0603D5B0231B595B8900E01B23DB00703302E01B23D3 -:404880009B003C33127D807A9BB2012A05D080060DD5B0200059008B0AE0800603D5B0200059008B00E01B20C000703002E01B2080003C3082B2103189B22046F9F770FE08 -:4048C00068886034E080F6F773FA00220B493046FFF700F92978B17129880620090AF1717070022038703146FF20FEF772FE0020F8BDFFE70220FBE7AC1E0008B0FD0000AD -:4049000010B500240C70F0F787FF0349884200D11224204610BD000001001600F8B504460E460088F4F718FC05002AD0F5F78DFA002826D0A178A878FDF72CFC002801D08E -:404940001220F8BD0020009069460620FFF7CBFB002801D00720F8BD009D00220A492846FFF7B8F82078A87120882946000AE8710620687002203070FF20FEF72AFE0020CD -:40498000F8BD0220F8BD0000B2FD0000F8B504460F460088F4F7E0FB050043D0F5F755FA00283FD00020009069460620FFF79BFB002801D00720F8BD2879009E09280CD066 -:4049C0002389E288A1886088FDF776F8002806D03046FFF78FFB1220F8BD0C220FE0E87E810604D5A97D890601D41A2207E0C00604D42046FCF7EAFF024600E023220A4923 -:404A00003046FFF767F82178B17121880620090AF1717070022038703146FF20FEF7D9FD0020F8BD0220F8BDB1FD0000024600200870024912784A7370470000A021000855 -:404A4000F8B504460F460088F4F786FB060026D0F5F7FBF9002822D00020009069460620FFF741FB002801D00720F8BDA178B078009DF8F7C1FB00220A492846FFF72AF8F0 -:404A80002078A87120882946000AE8710620687002203870FF20FEF79CFD0020F8BD0220F8BD0000ABFD0000F3B5044683B000200090054621786A46517101202056032617 -:404AC0001071002809D0042807D0821D05D0921D03D0121D01D0143007D101290FD001A8F0F7C0FE2949884200D112256946301DFFF7F9FA002830D0072005B0F0BD608806 -:404B0000FF2811D0F4F728FB070000D10225F5F79CF9002806D0002DE8D1EDF7FFFE6078387317E00225E1E7EDF7F8FE0020184B184A08E0D027196A4743C91901D0677874 -:404B40000F73401CC0B211788142F3D8104861784030C170EDF7CCFEC8E7009E2A460E493046FEF7B7FF2078B071A078F07160880221000A307207207070049801703146A5 -:404B8000FF20FEF726FD2846B7E70000010016005C210008CC1E0008A5FD000010B5044602200870F7F7D8FE207800F04DFB10BD7CB505460020184C009020780E461228C2 -:404BC00007D22979154B01A82A68F0F727FF002801D00C207CBD20786946401C20700620FFF781FA002801D007207CBD009C00220B492046FEF76EFF2879A071684600795E -:404C0000E07106206070022030702146FF20FEF7E0FC00207CBD0000280200087D430110C1FD0000F8B505460020154C009020780E4600280FD06878F0F776FF002802D1C7 -:404C40002078401E207069460520FFF74CFA002803D00720F8BD0C20F8BD009C002209492046FEF737FF2878A07105206070022030702146FF20FEF7ACFC0020F8BD0000E5 -:404C800028020008C2FD000038B500200D46009069461020FFF727FA002801D0072038BD009C00221C492046FEF714FF1B48016B0978A171016B0988090AE171016B897846 -:404CC0002172016B4988090A6172016B0979A172016B8988090AE172016B89792173016BC988090A6173016B097AA173016B0989090AE173016B897A2174006B214640896D -:404D0000000A60741020607002202870FF20FEF760FC002038BD0000A7FD00005C21000810B502F0C7FC10BD10B5264B0022C41A98423CD01FDC244BC41A98423CD011DCAF -:404D4000224C031BA0422AD007DC214BC01822D0012822D0C92832D12EE0012B2CD0022B2DD129E02300F5F7BFFD092A271618272A2A181E2A002300F5F7B6FD18211B1ED7 -:404D80001E0D1D151E13212121212121212121212113170F132104220EE002220CE007220AE0012208E0032206E0052204E0152202E0302200E00A220A70012010BD002036 -:404DC00010BD0000ACFD0000A3FD0000A0FD00009A03FFFF10B53D4BD41A9A425AD01CDC3B4BD41A9A4240D00FDC3A4C131BA2422FD005DC384BD31825D0012B20D125E0E4 -:404E0000012B29D0022B1BD12CE0641F2300F5F76BFD062F3217383B3E17092C52D007DC2300F5F761FD080D40430D0D461C490D152C23D0162C30D0172C31D0182C3ED0CB -:404E400000F0B2FF10BD00F022FD10BD00F040FC10BD00F053FC10BD00F026FD10BD00F02AFB10BD00F0B0FC10BD00F0FEFA10BD00F04CFB10BD00F010FB10BD00F051FBFB -:404E800010BD00F039FA10BD00F016FA10BD00F0E5FA10BD00F031FB10BD00F045FB10BD00F053FB10BD00F08FFA10BD00F03CFA10BD00F0E5FA10BD00F0F4FA10BD00F06B -:404EC00019FB10BD00F046FB10BD0000ABFD0000A0FD000049FD00009A03FFFF3EB50020009001900290012008700D4602A90C20FFF7F9F8002801D007203EBD029C002262 -:404F000010492046FEF7E6FD01A96846F2F7D6FB0098A071010AE171010C2172000E60720198A072010AE172010C2173000E60730C206070022028702146FF20FEF749FB42 -:404F400000203EBDB3FD0000F7B582B006460027012000971070154669460620FFF7C3F8002802D0072005B0F0BD009CF00701D01220F8E73A4620460399FEF7ABFD084895 -:404F800030180068A071000AE07106206070022028702146FF20FEF71CFB0020E3E7000000103C4010B50A4600880249FFF7CCFF10BD000067FC0000FEB5064600270120FD -:404FC000009708700D4669460820FFF78CF8002801D00720FEBD009C3A460D492046FEF779FD01AA31460520F0F784FB0198A071010AE171010C2172000E607208206070B4 -:40500000022028702146FF20FEF7E3FA0020FEBD49FD000070B5674B0E460024C11A664D984270D020DC654BC11A984257D013DC634BC11A984238D007DC6249411825D088 -:40504000012928D0E3296ED12AE0012932D056293BD0572967D13DE00B00F5F745FC08A6454A4F555F656AA60C240B00F5F73CFC1A9D6B70752B2B7A267F93989D9D9D9DC7 -:405080009D9D9D9D9D9D9D5184898E9D1146304600F09AF816E011463046FFF783FF70BD11463046FFF788FF70BD1146304600F0BFF870BD3046F7F769FE04E011463046D1 -:4050C0006A682EE00446204670BD11463046FFF787FBF7E711463046FFF75CFAF2E711463046FFF77FFAEDE711463046FFF7B0FAE8E711463046FFF79DFAE3E711463046A1 -:40510000FFF7D2FCDEE719E011463046FFF7F8FBD8E711463046FFF741FDD3E71146AA6830469047CEE740E011463046FFF79AF9C8E711463046FFF75BF9C3E7114630469F -:40514000FFF714FBBEE711463046FFF779FCB9E711463046FFF78AFAB4E711463046FFF7BBF9AFE711463046FFF74CFBAAE711463046FFF7D3FBA5E711463046FFF718FD2E -:40518000A0E711463046FFF74DFD9BE711463046FFF74CFC96E711463046FFF79FFE91E71146304600F01EF88CE7314600F01EFE88E70000AAFD000028020008A2FD0000C9 -:4051C0004AFD00009A03FFFF0188CA0701D012207047034A40888918086000207047000000103C40F8B5064600200090012008700D4669460C20FEF776FF002801D007203E -:40520000F8BD009C002209492046FEF763FC3078F2F75CFAA07105206070022028702146FF20FEF7D6F90020F8BD0000B4FD00000EB5017800914068019002AA69460420F3 -:40524000F0F758FA00200EBD38B505460020009069460520FEF747FF002801D0072038BD009C002207492046FEF734FC064821464576A57105206070FF20FEF7AAF9002013 -:4052800038BD0000C0FD00005C21000803480249416081607047000091450110280200080348024941600349816070478D49011028020008894C011070B50D4604460146AC -:4052C00010222846EFF715F92146284610310D221030EFF70EF9214628461D3104223930EFF707F92120225C214628466A7722311E30EFF7FEF870BD70B50D4604460146E8 -:4053000010222846EFF7F5F82146284610310D221030EFF7EEF8627F214628466A771E311E30EFF7E6F870BD70B50C46054601461022A018EFF7DDF829462046103110228E -:405340002030EFF7D6F82022A818C1780902216083781943090221604078014308022060A95C0843242120606818C2781202626083781A4312026260407802431002606057 -:40538000695C0843282160606818C2781202A26083781A431202A260407802431002A060695C08432C21A0606818C2781202E26083781A431202E260407802431002E0601D -:4053C000695C0843E06070BD10B5C27812020A6083781A4312020A6043781A4312020A6003781A430A6002790A75037A1B024B60C47923431B024B60827913431A024A6044 -:4054000043791A434A60037B1B028B60C47A23431B028B60827A13431A028A60437A1A438A60037C1B02CB60C47B23431B02CB60827B13431A02CA60437B1A43CA60037D09 -:405440001B020B61C47C23431B020B61827C13431A020A61407C02430A6110BD427812020A80007802430A80704770B50C460546014606222046EFF73CF8A879A07170BDFA -:40548000427812020A8003781A430A80C27812024A80807802434A80704702780A70407848707047427812020A8003781A430A80807888707047427812020A8003781A43B0 -:4054C0000A80C27812024A8083781A434A80427912028A8003791A438A80C2791202CA8083791A43CA80427A12020A81007A02430A817047007808707047427812020A8095 -:4055000003781A430A8080788870704702780A7042784A70C27812024A80807802434A807047007808707047C27812020A6083781A4312020A6043781A4312020A600378DE -:405540001A430A6000790871704702780A7040784870704700780870704710B50B460178401C197001460622581CEEF7C2FF10BD034610B5084608221946EEF7BAFF10BDDF -:40558000427812020A8003781A430A80C27812024A8083781A434A80427912028A8003791A438A80C2791202CA8083791A43CA80427A12020A81037A1A430A81C27A1202EF -:4055C0004A81837A1A434A81427B12028A81007B02438A81704770B5054640780C46000208802978062208432080E87800026080A978084360802879207168796071A91D6D -:40560000A01DEEF776FF287B2076A87B0002A081697B0843A081287C0002E081E97B0843E081A87C00022082697C08432082287D00026082E97C08436082A87D0002A0826F -:40564000697D0843A082287E0002E082E97D0843E08270BD7047427812020A8003781A430A8080788870704770B50D460446014610222846EEF73DFF214610221031A81811 -:40568000EEF737FF70BD034610B5084640221946EEF72FFF10BD427812020A80007802430A80704710B50B4641780A021A800178801C0A431A8001461022981CEEF719FFB4 -:4056C00010BD427812020A80007802430A807047427812020A80007802430A807047427812020A80007802430A8070477047427812020A80007802430A80704700780870DE -:405700007047427812020A80007802430A807047427812020A8003781A430A80807888707047007808707047427812020A80007802430A80704710B50B460178401C19708A -:4057400001460622581CEEF7D4FE10BD10B502780B460A701F2A03D8411C581CEEF7C9FE10BD00780870704770B5054640780C46000208802978062208432080E878000289 -:405780006080A978084360802879207168796071A879A071E91DE01DEEF7ABFE687B6073A87BA07370BD0022835C0B70521C491CD2B2082AF8D37047034610B508460522F3 -:4057C0001946EEF796FE10BD034610B5084606221946EEF78EFE10BD034610B5084606221946EEF786FE10BD02780A7040784870704702780A71827812020A8043781A430A -:405800000A80027912024A80C3781A434A8042794A7180798871704710B502780B460A701F2A03D8411C581CEEF763FE10BD70B5054640780C4600020880297808220843D8 -:405840002080A91C201DEEF754FEE87A102200026080A97A08436080294620460C310C30EEF747FE70BD02780A7042784A70807888707047427812020A8003781A430A801D -:40588000C27812024A80807802434A807047427812020A8003781A430A80C27812024A80807802434A80704702780A70027912024A60C3781A4312024A6083781A43120293 -:4058C0004A60407802434A60704710B504460088F2F774FB00280AD0A07815280FD008DC05280CD013280AD0142806D107E0022010BD1A2803D03B2801D0122010BD002028 -:4059000010BD012070470078012801D912207047002070470020704710B50446012008702088F2F74BFB002822D06188A08881421CD8114A891F914218D2511D884215D86A -:4059400021890D4B0A460A3A1B1F9A420ED2E288FF23F4339A4209D8521C4243C9005000814203D9A0896189884203D2122010BD022010BD002010BD7B0C00000020704795 -:4059800010B501220A700179037E0A46194303292FD8002A02D1417903292AD8018842888A4226D8154B091F994222D2042A20D38289C1898A421CD8114B921F9A4218D249 -:4059C0005A1D914215D8428A0D4C13460A3B241FA3420ED2038AFF24F434A34209D85B1C4B43D20059008A4203D9C18A808A814201D2122010BD002010BD0000FD3F00001C -:405A00007B0C0000002070470020704710B50088F2F7D4FA002801D0002010BD022010BD10B50088F2F7CAFA002801D0002010BD022010BD10B50088F2F7C0FA002801D0A0 -:405A4000002010BD022010BD10B501220A700088F2F7B4FA002801D0002010BD022010BD002070470078272801D912207047002070470078012801D9122070470020704781 -:405A800010B501790388428804291BD801290AD0934217D80124A403A24213D8202B11D3827B032A0ED8012901D0042902D18179032907D84179032904D8407B410701D0FA -:405AC000C00800D0122010BD00781F2801D9122070470020704741780A09817812011143C2780A430179114342790A438179C0791143084300D01220704701794A090AD1FA -:405B0000027843781A438378C07803431A430A4301D0002070471220704700207047017840780143012901D91220704700207047017901290FD8018842888A420BD8084B2F -:405B4000091F994207D2042A05D34179032902D88079032801D912207047002070470000FD3F000010B501220A700088F2F726FA002801D0002010BD022010BD00207047EA -:405B80000178272902D88078072801D9122070470020704710B50088F2F710FA002801D0002010BD022010BD0120704710B50088F2F704FA002801D0002010BD022010BD8B -:405BC00010B504460088F2F7F9F9002804D0A078012803D9122010BD022010BD002010BD0020704710B504460088F2F7E7F9002804D06088002803D0002010BD022010BD4D -:405C0000122010BDF8B50E460021054600910120307069460820FEF766FA002801D00720F8BD2868009C056800220A492046FDF751FFA571280AE071280C2072280E607286 -:405C400008206070022030702146FF20FDF7C1FC0020F8BD26FD000010B50020F1F7C2FC002010BDC27812020A6083781A4312020A6043781A4312020A6003781A430A605D -:405C800002790A71407948717047C27812020A6083781A4312020A6043781A4312020A6003781A430A60007908717047C27812020A6083781A4312020A6043781A431202FC -:405CC0000A60007802430A60704710B5C27812020A6083781A4312020A6043781A4312020A6003781A430A6002790A71182A01D918220A71002205E083188C185B79521CE2 -:405D00002372D2B20B799342F6D810BDC27812020A6083781A4312020A6043781A4312020A6003781A430A60C27912024A6083791A4312024A6043791A4312024A60007990 -:405D400002434A60704700003EB500200290012008700D4602A90820FEF7C5F9002801D007203EBD6846029CEFF7EAFA00220D492046FDF7AFFE68460078A0716846407819 -:405D8000E07168468088207268468078607208206070022028702146FF20FDF71AFC00203EBD00002FFD00000F4B00B5D2181300F4F79AFD0B070A0D090916101309070A2D -:405DC0000900FFF762FF00BDFFF77FFF00BDFFF749FF00BDFFF76AFF00BDFFF797FF00BD0078087000BD0000E002FFFF10B50C4601460F4B0020C9180B00F4F775FD0D0C2E -:405E00000D0C080C1717171717170C12170011462046FFF7F7FE10BD11462046FFF71CFF10BD11462046FFF78FFF10BD012010BDDD02FFFF70B5054600780C468872691CD4 -:405E40000622201DEEF755FB2046E91D10221B30EEF74FFB29462046173110220B30EEF748FB70BD704710B50B460178401C197001460622581CEEF73CFB10BD10B50B4684 -:405E80000178401C197001460622581CEEF731FB10BD704710B50B460178401C197001460622581CEEF725FB10BD007808707047427812020A80007802430A80704770B5C1 -:405EC000054600780C460870691C0622601CEEF710FBE879E07170BD7047002070470000F8B50D46114914781646411808D0104807460E37007D012908D002290BD10CE0C0 -:405F0000FAF7FEFA29198870641C03E02A19921C012305E0E4B23470F8BD2A19921C00233946FAF7C7FA6871A41DF3E7D6DFFFFFA02100080649401805D0012805D0022819 -:405F400003D00020704701207047062070470000D6DFFFFF10B50022F9F744FCC0B210BD10B5FAF7D3F810BD10B5FAF795FA10BD10B5FAF791FA10BD0020704710B5FAF7BE -:405F8000C5FA10BD10B5FAF7C1FC10BD10B5FAF7D5FC10BD10B5FAF7EFFC10BD10B500F025F810BD014A12681269104734020008014A1268D269104734020008014A126885 -:405FC000926A104734020008014A1268D26C104734020008014A1268926D104734020008014AD2685268104734020008807A012801D912207047002070470078012801D913 -:40600000122070470020704700207047002801D000207047122070470078012801D91220704700207047000000880449401E884201D312207047002070470000B8A10000EB -:406040000178012902D8C079012801D91220704700207047014A12681268104734020008014A12689269104734020008014A1268D26B104734020008014A1268126B10474E -:4060800034020008014A1268526A104734020008014A1268D268104734020008014A1268926C104734020008014A1268526D104734020008014AD2681268104734020008F3 -:4060C00004480349016004494160044981607047084F001034020008D95E0110DB5E011006480549016006494160064981600249C031C16070470000A84E00103402000828 -:40610000E15E0110355F0110014A12689268104734020008014A1268126A104734020008014A1268526C104734020008014A1268926B104734020008014A1268D26A104779 -:4061400034020008014A12685269104734020008014A1268126D104734020008014A1268D26D104734020008014AD268926810473402000870477047427812020A80037805 -:406180001A430A80C27812024A8083781A434A80427912028A80007902438A807047427812020A8003781A430A80C27812024A80807802434A8070470749401805D0012830 -:4061C00005D00D2805D0002070470220704704207047082070470000DEDFFFFF0020704770470000FEB50D4627491646147840180022002802D00C2844D115E06B461A71C1 -:4062000001A96846FBF75EFA6B461988281981701988A41C090AC170E0B25A8829188A705A88120ACA702BE069460A7202A96846FBF732FA6946898828198170694689884D -:40624000A41C090AC170E0B269462A18C98891706946C988801C090AD170C0B269462A180988917069460988801C090AD170C0B2694649882A18917069464988090AD17027 -:40628000801CC4B23470FEBDDDDFFFFF38B504460020009069460F20FDF725FF002801D0072038BD00993E200870072088702078C8702088000A0871A07848716088000A75 -:4062C00088712079C871A088000A0872A0794872E088000A8872207AC8722089000A08730B2048700720FDF774F938BD10B5FBF7D3F910BD10B5FBF7E5F910BD10B5FBF71D -:40630000F1F910BD10B5FBF713FA10BD014A1268926A104744020008014A12681269104744020008014A12685268104744020008014A1268D269104744020008002801D008 -:406340000020704712207047002801D0002070471220704710B504460088F1F72FFE002816D0618808461B38E1280FD2A0880A4A90420BD8FF224932904207D3074A126B2F -:406380009388994202D8D188884203D9122010BD022010BD002010BD480800005C21000810B50021002815D0028813461B3BE12B0FD24088084B98420BD8FF2349339842F5 -:4063C00007D3064B1B6B9C88A24202D8DA88904200D91221084610BD480800005C210008014A1268526A104744020008014A1268D268104744020008014A1268126810477A -:4064000044020008014A1268926910474402000804480349016004494160044981607047804F001044020008E1610110DD6101100448034901600449416004498160704742 -:40644000B04F001044020008E5610110B9610110014A1268D26A104744020008014A12685269104744020008014A12689268104744020008014A1268126A10474402000828 -:4064800002780A7042784A7080788870704702780A7042784A7082788A70C078C8707047427812020A80007802430A80704702780A7042784A708078887070474278120217 -:4064C0000A8003781A430A8082788A70C278CA7002790A7182791202CA8040790243CA8070470000014A1268926A104750020008014A1268526B104750020008014A126890 -:406500005268104750020008014A12681269104750020008014A1268D2691047500200080178272907D84178012901D0022902D18078012801D912207047002070470178C0 -:40654000272907D8C178012901D0022902D18078072801D9122070470020704710B50088F1F72CFD002801D0002010BD022010BD017803290FD84278032A0CD8807803284C -:4065800009D8CB0701D1002A05D0890701D4002801D0002070471220704710B504460088F1F70CFD00280BD0A078032812D8E17803290FD82279032A0CD8C30702D003E0EA -:4065C000022010BD002905D0800701D4002A01D0002010BD122010BD014A1268526A104750020008014A1268126B104750020008014A12681268104750020008014A126891 -:40660000D268104750020008014A1268926910475002000804480349016004494160044981607047E04F00105002000835660110D166011000207047044803490160044988 -:4066400041600449816070471C50001050020008596601108D27011038B504460020009069460A20FDF73FFD002801D0072038BD00993E2008700C208870A078C8702078A9 -:4066800008712088000A4871E07888712079C871062048700C20FCF79CFF38BD014A1268D26A104750020008014A1268926B10475002000800207047014A12685269104773 -:4066C00050020008014A1268126A1047500200080020704710B50B48017A01290ED0C17A00290CD001210172407A064BC000C03BC1184A884968185CEEF7CEFE10BD0021D2 -:40670000017210BD7027000870B503461448C47A192C0BD3022B05D0042B02D10846FDF7E9FC70BD0846FDF71BFD70BD847AE5000B4CC03C6355837ADB001B195960817AC2 -:40674000C90009194A80C17A491CC172817A491CC9B281721929E8D30021817270BD00007027000810B50F4CE17A002918D0617A2246C900C03A515C022904D0042904D1A6 -:40678000FDF7B8FC01E0FDF7EBFCE07A401EE072607A401CC0B26072192801D30020607210BD000070270008F7B5A14C84B02046E030039009380090401E0E46C0340190A0 -:4067C000E07B354601281CD0A07B012836D0A18A4A19082A02D90822511A8DB2002D0CD0002833D0A18A206A4018401E2A460499EDF77FFEA08A4019A082207C012829D085 -:406800002FE0A08A618A42198A4204D280B28019A08207B0F0BD081A0021A18280B26182E173002807D004992A1A091815460498EDF75FFEAEB2002EC2D1EAE7618AA28AD5 -:40684000891A8DB2B542C9D93546C7E7A18A01980818CBE700F068F90028DAD000202074E073608A002802D0A18A8142D1D3A08A0028CED000200290A07D01280CD0022850 -:4068800065D00220FCF7B6FE012020740021E173A1736182A1821DE0A08A03281CD9A07B002824D100270098F0F704F9002801D10420A0823A460120039900F00EF90128D7 -:4068C0000BD00420FCF796FE012020740021A173A1826182FCF78EFE9EE00120A073A28A012A04D9521E206A0099EDF702FE216A8F78381D6082502F10D9487802020878D1 -:40690000012110430022FCF755FEA07B012802D1216A00F0F8F80020A07331E0A28A82427AD3121A1206120EA28206D00918491E0198EDF7DEFD01200290FA1C216A0120C4 -:40694000069B00F079F80020A073608260E0A08A052861D33648D130C1798279080210430205A07B120D002815D10220039900F0B4F8012807D00520FCF73CFE009820620F -:406980000120E07348E00120A073A28A206A521E0099EDF7AEFD216A264AC8788F7800020743781D80B26082127DBA4213D20820FCF720FE012020740027A7826782E77391 -:4069C000FCF718FEA07B012803D10220216A00F09AF8A77320E0A28A82421DD3121A1206120EA28206D00918491E0198EDF781FD01200290E07B002806D13F1DBAB2216A0C -:406A00000220069B00F018F80020A0736082E0730298012800D12DE7B54200D3F9E60498721B16464119EDF764FDB6B2C8E60000B0260008AC1E00083EB5044600200D4640 -:406A4000009001900290012C14D0022C11D108206946088100954A81002B69460EC90BD0002000F0E7FC002803D02946204600F04AF83EBD1220EBE7002000F020FDF2E7FC -:406A800070B5047800250E2C03D10179C57809020D43FFF767FE0E2C02D12846FDF78CFC024800210172FFF715FE70BD7027000810B5FFF729FEFFF70DFE10BDF8B5154633 -:406AC00007465C1B2046069EEDF713FDA81982B221463846FFF7ECFFF8BD10B50B46012802D002280BD103E0084600F013FB03E01146184600F066FB0006000E01D0002030 -:406B000010BD012010BD10B5012805D0022802D1084600F0E1FB10BD084600F095FB10BD10B5FCF767FD10BDFCB514A00068009013A0144E0068019031460020C0316C46CA -:406B4000012711E03318C0339A7D255CAA4209D001AD2D5CAA4205D000228A829A7D012A00D18F82401C80B28A8A8242EAD890B2042801D00020FCBD0120FCBD01030C00ED -:406B800001091000B026000808B50B46C17882780902891889B20091014604220220FFF78DFF002008BD3EB54178002217236C46029223810090891C61810120029B0099CE -:406BC00000F07DFC00203EBD06480021017241728172C17201748182016241828173C1737047000070270008002210B511461046FCF7E0FC10BD0EB50021019102911921C7 -:406C00006B461981009001205881002A69460EC902D000F00FFC0EBD012000F050FC0EBD10B5FFF7D1FF034B034A04490448EEF721FC10BDF76B0110A9670110396A011039 -:406C4000E96B011010B50189032913D0172907D018290BD0192902D10068FFF711FF10BD428901680420FFF723FF10BD0068FDF745FA10BD03C800F015F810BD3EB500227F -:406C800003236C460292238101910090628169460EC9012000F0CEFB002801D000203EBD01203EBD10B5052802D10020EFF78AFD10BDF8B50E460546F8F7C6FB0023009061 -:406CC0006C46AB20E15C002900D1E0545B1CDBB2042BF7D32A463146204600F001F8F8BDF7B58AB03A480890001D054606900898019038480F460168069800910291039002 -:406D0000012600241835042233A10898EDF7F1FB0099069880310A7902704979417006980422801C0A99EDF7E4FB8E206946087530460899303048702819049001A800F0C4 -:406D40004FF8002021186A5C002A01D130226A54401CC0B21428F5D31434761CF6B2E4B2032EE5D9281D029000200390019568460475174E0024082F1DD9082730190490BF -:406D800001A800F02DF8002030222118735C002B00D17254401CC0B21428F6D36946097D3120685469461434087DE4B2401CC0B2087500212954BC42E0D3002004E00C996F -:406DC000325C0A54401CC0B2B842F8D30DB0F0BD942700085C0200083030303000000000F0B5BD4E07463446C56885B04034BB482060BB486060B948C043A060B848C04327 -:406E0000E060B8482061387C362801D8402104E0762801D8802100E0C021019104280AD23968042208180021EDF76CFB3A7C3968802088541CE088280DD279680422081816 -:406E4000001F0021EDF75EFB3A7C796880208918203908770CE0B9680422081888380021EDF750FB3A7CB96880208918A039087600200090387C694640098870387CC0004B -:406E8000C8700198800903900020D2E00020844602988001864660467146800009183A7CC9B28A421AD3042901D23A6806E0882902D2091F7A6801E0BA68883951180A7894 -:406EC000120232504B781A43120232508B781A4312023250C9780A43325016E0019A083A8A4201DB00210FE06A4611780902315052781143090231506A469278114309022D -:406F000031506A46D278114331506046401CC0B284461028BFD32068286060686860A068A860E068E86020692861002084460007000F86466046102817D37046C01E000778 -:406F4000800E3158704608300007800E305841407046801C0007800E32587046800033585A4051401F22D14131506046142809D26968AA6808461040EA688A431043E0614C -:406F800059481EE0282807D2A96868684840E9684840E061554814E03C280BD2A868EA680346696810430840194611400843E0614F4806E0A96868684840E9684840E06161 -:406FC0004C48A061E0692969A269411828681B23D8411018091870468000305808186061E8682861A868E86068680221C841A86028686860606928606046401CC0B28446D2 -:40700000502894D320682968401820606068696840186060A068A9684018A060E068E9684018E06020692969401820610298401CC0B203990290884200D227E7F968207800 -:40704000C8702088F968000A88702068F968000C48702068F968000E0870F9682079C871A088F968000A88716068F968000C48716068F968000E0871F968207AC872208976 -:40708000F968000A8872A068F968000C4872A068F968000E0872F968207BC873A089F968000A8873E068F968000C4873E068F968000E0873F968207CC874208AF968000A95 -:4070C00088742069F968000C48742069F968000E087405B0F0BD0000F02700080123456789ABCDEFF0E1D2C39979825AA1EBD96EDCBC1B8FD6C162CA30B500224B1E4C083D -:4071000005E0815CC55C8554C1545B1E521C9442F7DC30BD10B5044608484068EFF75CF92060002807D00649087B002801D0401E0873002010BD034810BD0000600200082D -:40714000A0210008FFFF000070B50A4D0446302905D8E868EFF740F92060002805D1A868EFF73AF92060002801D0002070BD024870BD000060020008FFFF000010B5044682 -:4071800005480068EFF728F92060002801D0002010BD024810BD000060020008FFFF000010B50446880005490858EFF715F92060002801D0002010BD014810BD70280008D9 -:4071C000FFFF000010B504460846F0F71FFF064980000858EFF700F92060002801D0002010BD024810BD000050280008FFFF000010B50446880005490858EFF7EDF8206096 -:40720000002801D0002010BD014810BD60280008FFFF000010B50446880005490858EFF7DBF82060002801D0002010BD014810BD80280008FFFF000010B5FCF711F9FCF7E7 -:4072400071F8002010BD0000014610B509484068EFF752F9002801D0074810BD0749087B401CC0B20873042801D904200873002010BD000060020008FFFF0000A02100088E -:4072800070B5084C05460146E068EFF735F9002806D02946A068EFF72FF9002800D0024870BD000060020008FFFF0000014610B502480068EFF720F910BD00006002000819 -:4072C0000246880010B5034908581146EFF714F910BD00007028000810B504464078217800020843F0F792FE0349800008582146EFF702F910BD00005028000802468800E1 -:4073000010B5034908581146EFF7F6F810BD0000602800080246880010B5034908581146EFF7EAF810BD000080280008F8B5040076D03C4E20783075A078F07520797075BE -:407340006079B0753546A07B20352870EBF740FBC0B2022801D0032805D1707D042802D12079401E707500242EE081070DD08107890F401A0C3082B22B48A700717D381860 -:40738000EFF750F800284BD101E00830F3E726482022103038180221EFF744F800283FD121482022203038180221EFF73BF8002836D11D484022303038180221EFF732F84B -:4073C00000282DD1641CE4B22878A042307DCCD881070BD08107890F401A0C3082B2B17D1248EFF71FF800281AD101E00830F5E70E4850220421001DEFF714F800280FD1A0 -:407400000A48482201210830EFF70CF8002807D10648302208210C30EFF704F8002800D00348F8BDAC1E00085028000860020008FFFF00001FB50446EBF770FA01A9204639 -:40744000FBF76AFF0446EBF753FA204604B010BDF8B5154CA068EFF7FDF8E068EFF7FAF86068EFF7F7F82068EFF7F4F800240F4F0F4E14E0A5007859EFF7ECF80B481030A3 -:407480004059EFF7E7F8094820304059EFF7E2F8064830304059EFF7DDF8641CE4B23078A042E7D80020F8BD6002000850280008CC1E000810B5FBF743FF002010BD1FB5A8 -:4074C0000446EBF72BFA01A92046FBF769FF0446EBF70EFA204604B010BDF8B5054600202870F02316466B800246034607E00C245C439F0064187F195B1CDBB27C60B342DD -:40750000F5D3344604E0A1004919641CE4B24A60052CF8D3002408E022460121284600F007F8002803D1641CE4B2B442F4D3F8BD70B50B460546002411461846FAF70CFE5A -:40754000FF2810D0800040194268FF2111704268002151704268917042681181426851814068416000E0014C204670BD0100160010B50C4B89001C7800220818002C01D059 -:4075800041680A8144686189002901D0491E618140688178002902D0491E817000E042701A7010BD70020008F0B500230746FF209C461C461E4D1A4621E0CE071CD09E00C4 -:4075C000F6197668B6467678A64201D934461846002C11D176463678AE420DD8AE4208D105460120A840104301229A400243D2B200E00022184635465B1CDBB2490800293E -:40760000DBD1002C10D1002A0ED0D30708D08B00DB195B681B89634502D3D8B284460846491CC9B25208F0D1024A01211170F0BDFFFF00007002000803460020052906D254 -:40764000002B04D08900C91849680A70704701487047000001001600034610B5002005290ED2002B0CD08900C9184B685C78944208D25A70802A02D1496806228A7010BDDD -:40768000024810BD0148FE3010BD0000010016000246890089184A68002053891B1D53814A6813895B1C138149684A68521C4A6070470000F7B5054682B000205249534A20 -:4076C00000900427681AAE188D421BD00ADC002E1AD04E2E1AD04F2E18D0F5208000301A15D10DE001280BD0032807D0072803D0474940180BD107E00A2708E00B2706E06E -:407700000C2704E0442702E0072700E006276946381DFCF7E8FC002802D0072005B0F0BD009C294667702046039AFCF7D3F90398002864D1344B2A465B1CE81A049F049D04 -:4077400034493F0AEDB29A4238D008DC002E23D0F5208000301A3CD0012850D14CE002280BD0062804D02A49491C401847D11BE0A11D0020F3F784FB41E0087DA071000A08 -:40778000E071087D2072487D6072000AA072487D21460931E0722CE0214608310498EFF76DFD06E060712AE0214608310498EFF751FDA571E771002821D0F3E7251DA01DCD -:4077C00008220021ECF79EFEA87960210843A87115E00879A0710889E071000A2072487960720888A072000AE072C88821460A312073000AC87002E0A01DFCF7B7F92146B3 -:40780000FF20FBF7E6FE89E702100000D3F3FFFFFDFBFFFFAC1E000830B51E4B0224C21A984235D015DC1C4B0325C21A984225D008DC1A4A801826D0172826D0184A8018E6 -:407840001AD11DE02A2A1ED0602A19D0782A13D11BE0144BD01A9A4210D007DC124810180CD001280AD0022806D107E0042805D001229202801A08D0002030BD002000E082 -:407880000820087002E00D7000E00C70012030BD0420F6E77C0C0000030C0000FAFBFFFF05F8FFFF890300007BFCFFFF10B5224C131BA2423CD016DC204C131BA24228D01F -:4078C00008DC1F4BD2182DD0172A2ED01D4BD21808D121E02A2B22D0602B1DD0782B01D1FDF7EFFE10BD184C1A1BA34211D007DC164A9A180DD0012A0BD0022AF2D108E0F8 -:40790000042A06D001239B02D21AEBD1FDF7F9FE10BDFDF79FFE10BDFDF72AFE10BDFDF7F7FE10BDFDF797FE10BDFDF7FDFE10BDFDF7A0FF10BD00007C0C0000030C00001C -:40794000FAFBFFFF05F8FFFF890300007BFCFFFF70B50C460146304E01208B1B0546B1424ED01DDC2D4E8B1BB14238D00CDC2C4BC91839D017293DD02A4BC91803D111468D -:40798000204600F055F870BD2A2B23D0602B3DD0782BF8D115701146204600F091F870BD214D591BAB4213D007DC204959180FD001290DD00229F2D10AE0042908D001236D -:4079C0009B02C91AEBD11146204600F088F870BD002070BD1146204600F085F870BD1146204600F088F870BD15701146204600F05BF870BD15701146204600F078F870BD72 -:407A000015701146204600F082F870BD1146204600F036F870BD00007C0C0000030C0000FAFBFFFF05F8FFFF890300007BFCFFFF10B5104B0422597A3024114059720E4AFE -:407A40000168114001600D4A416811404160026850080843810A2140C00D422420400143587A120989242240104301435972002010BD0000A021000890880002008000205B -:407A8000084AFB23517A1940517201230168DB0519400160507A490D042319400843507200207047A021000870B50C460546FDF70CFF002803D121462846F1F7E1FD70BD76 -:407AC00070B50C460021217005462146FEF762F8002803D121462846F1F700FF70BD10B5FEF764F810BD10B5FEF76AF810BD10B5F1F740FF10BD70B50C460546FEF770F8D3 -:407B0000002803D121462846EFF76CFD70BD70B50C460021217005462146FEF763F8002803D121462846F2F7A3F870BD10B5F0F74FF910BD10B5F0F7B7F910BD10B5F0F7B5 -:407B400051F910BD10B5F0F7F9F910BD7047000010B50C460088044948430449EAF7D8FFBD21081A208010BD4B2800001027000010B50C460088AE214843034940180A2171 -:407B8000EBF7B0F8208010BD91FCFFFF70B5094C054621780648002909D1074A0321074800F0C2F9002802D102212170656070BD02001600740200086D7D011004080000E7 -:407BC00070B50A4C05462178074800290AD10F21074A0902074800F041FA002802D101212170656070BD00000200160074020008A17C01103B08000001484078704700006E -:407C000074020008F8B506461920694608702020487001248C700220C8706846EAF704FB002805D01449884202D013481230F8BD022000F0FFF8114F2F253D630A20EAF7BC -:407C400053FE304600F08EFC0D4E304600F018F9802188430146304600F026F900F076FC00F040FA3D6307488460012000F0D8F900F07EF9F8BD00000300160040F03D4096 -:407C80000E1E000040003C4010B5EAF76DFA10BD10B5400701D500F08BF910BD7047000010B5034A0321034800F03EF910BD0000B97C01100408000010B5034A08210348DB -:407CC00000F01CF910BD0000D17C01100608000010B5034A0821034800F026F910BD0000E97C01100608000010B5034A0721034800F01AF910BD0000017D01103C08000038 -:407D000010B5034A0221034800F0A8F910BD0000197D01103A08000010B50249024800F063F910BD2D7D01101B0A000010B5C80704D00549054800F057F910BD00210846AA -:407D4000FFF7EAFF10BD0000517D01101A0A000010B5054CC9B26268002A01D00020904700206060207010BD7402000810B5034A0821034800F0C2F810BD0000857D01103C -:407D80000608000010B5034A0821034800F0CCF810BD00009D7D011006080000032110B58902034B0A46034800F090F810BD0000B97D01103D08000010B5034A01210348C8 -:407DC00000F04CF910BD0000D17D01103A08000010B50249024800F007F910BDE57D01101B0A000010B5880704D50549054800F0FBF810BD00210846FFF7DEFF10BD0000AA -:407E0000097E01101A0A000010B5054C090A6268002A01D00120904700206060207010BD7402000802480168490049080160704700003C4070B50446002500F091F80128CE -:407E400002D1002000F0ECF80B4A11680B48012301433F20400381431B039943012C08D960033F24640300194003400B0843184301461160284670BD00003C40040A00806D -:407E80000121C9030843074A0004D061054840300168C907FCD00168012319430160D06A80B2704700003C404004400808430649C861054840300168C907FCD001680122BB -:407EC000114301607047000000003C4070B5094C054626780648002E08D1032020706360218162810449284600F07EF870BD00000200160090280008A980011030B5084B4F -:407F000004461D780548002D07D1022018705A6059810449204600F067F830BD0200160090280008A980011010B5074B1C78002C01D0064810BD01241C705A60598104497C -:407F400000F052F810BD00009028000802001600A980011001490120087070477C02000802480068C007C00F7047000000013C4000B50023FFF7F4FF012801D0084B0CE052 -:407F800008490C20086188610748012101700021064A4160116051609160184600BD00000200160000013C407C020008902800080A48C16901610A480A0701D5416802E053 -:407FC0004A0700D50168074A0123137088B25268090C002A00D010477047000000013C4040013C407C02000810B50A4A034614780020012C01D0084810BD022414705160A5 -:4080000006494B60054A403A116808231943116010BD00007C0200080200160040013C400D490A68D207D20F824205D001220028086802D0104308607047022318430860E2 -:408040000868C007FCD10869104308610248C038016811430160704700013C4010B50A4B090401431C780020012C01D0074810BD02241C705A60064A1160054940390A689C -:4080800004231A430A6010BD7C0200080200160040013C4003480078012801D001207047002070477C020008F0B50D4C012622465389277800259E405268012F0AD0022FB8 -:4080C0000BD0032F05D12689B1431943FFF7C6FF2570F0BD0E43B1B2F8E7B143F6E700009028000810B517493820886116484860144A1648C03210611648154A4260174B31 -:40810000154A9A61164A0260144B164A803B9A63154A13680124640223431360134A022313630269082492B222430424CC601A4319030A4381158A4341210A43026100F0B7 -:4081400017F810BDC0103C4037D70000308A000058480000001E3C40FF0F000040123C400524000020FF000040503D40C0F03D4070B51849002548681C2210434860154886 -:408180004038416A826AC9B2D2B2C06A51180002000E4018001DC10700D0401C01264408B6020A2C12D90A212046EAF7B1FCC0B2072800D907200A214143A14204D2611AB6 -:4081C000CDB21F2D00D31F2544012C4302483443846370BDC0F03D4080103C4010B5FFF7BFFE012802D10020FFF71AFF044C2046FFF746FE8104890C2046FFF755FE10BDB2 -:40820000021E00000248416B022291434163704740F03D400248416B022211434163704740F03D40014909680180704780F03D4010B50C4C2F202063FFF754FF9A20E0629E -:40824000FFF78EFE002809D107480068002802DB0220FFF7EFFD0120FFF7E2FEFFF788FE10BD000040F03D4000003C40F0B58C4600881749884202D11648006880B28104D8 -:408280000C0D0004800F10D0012810D0862600202F230246262C10D30F4FD018400841007D5AA54205D140B207E05726EFE77026EDE7991A012905DC50B22030801B614643 -:4082C0000870F0BDA54201D20246E6E70346E4E7FFFF000080F03D40E05000100449002802D0012008567047002008567047000084020008F1B51B4FFD6A1A484030406B17 -:40830000C0072DD0386BC0072AD0FFF7C3FE012826D0102128468843F86200211248FFF763FE124C20690007FCD5104840304068060C08206061FFF70DFE0320400386434F -:40834000009800224003304381B20748FFF786FE20694007FCD504206061FFF7FBFDFD62F8BD000040F03D400F1E000000013C40F8B52449496BC90743D022494039096BA9 -:40838000C9073ED04178002912D01F4D1F492C1D002282560527FF43931D0026BA4214D00CDC0E331ED0042B17D0082B0AD10FE0154D1649083D2C1D491EE9E7002A01D035 -:4083C000042A14D00E70042714E00F70032711E00B22D2430A7002270CE00F22D2430A70012707E01322D2430A70002702E004220A70052700214156084600F01BF82F6063 -:408400002660F8BD80F03D40B8113C408502000810B5FFF7A5FD012802D10020FFF700FE03492F2008630220FFF704FD10BD000040F03D40F8B5314C0646E56AFFF72AFE57 -:40844000012859D01021284688432146C8622B484030006A2A4C2B4F00072BD52A48A178042E02D0042913D043E0042941D0A188802291430722120211430022FFF7EEFD38 -:4084800038694007FCD504207861FFF763FD1CE0A1880F22D20191430322520289180022FFF7DCFD38694007FCD504207861FFF751FD0FE0A078042E02D0042807D018E0A8 -:4084C000042816D00720EAF78DFAB02103E00320EAF788FA98210C4800220930FFF7BEFD38694007FCD50420786104498862FFF731FD0248A670C562F8BD000040F03D408E -:408500008402000800013C40071E000070B5084980200860074C0025E562FFF779FFFFF75DFE262020636563FFF77CFC70BD000000103C4040F03D4010B503490020C8624F -:40854000E9F766FE10BD000040F03D4010B50348FFF796FC0249888010BD0000071E00008402000810B5044600F0D4FC204600F035F900F015F80849012000F0E5FB074CED -:40858000FF214131204601F025F865218901204601F020F810BD000088090000021E0000F8B5002469462046009400F0F9FF00980321C008C000084381B20090002001F0F3 -:4085C00009F80126760269463046009400F0E8FF009902200143009189B2304600F0FAFF4C494D4800F0F6FF4B4D6946ED1E2846009400F0D5FF3F210098C9018843FF214D -:408600008131084381B20090284600F0E3FF424F6946843F3846009400F0C2FF00980125284381B20090384600F0D4FF3A486946801F009400F0B4FF03210098890288432E -:4086400081B200903448801F00F0C4FF6946B81C009400F0A5FF0098A84381B20090B81C00F0B8FF6946B81C009400F099FF0098284381B20090B81C00F0ACFF2648012199 -:40868000001F00F0A7FF00946946244800F088FF0098C007F8D0FF200021013000F09AFF1D480021813800F095FF69463046009400F076FF00980221884381B2009030461E -:4086C00000F088FF69460020009400F069FF00980721C008C000084381B20090002000F079FF0F4E45218901304600F073FF65218901304600F06EFF69463846009400F0B1 -:408700004FFF009938462943009189B200F062FFF8BD0000665E000088080000110A0000021E000038B50B21002000F053FF012464020721204600F04DFF1421224800F0A8 -:4087400049FF214D2049AD1C0939284600F042FFE91F284600F03EFF1B481C49483000F039FF19480121343000F034FF164801213D3000F02FFF21200121800100F02AFF13 -:40878000114813494A3000F025FF0021114D00916946284600F004FF00994907F8D50021204600F017FF0F21002000F013FF0A4C45218901204600F00DFF652189012046A3 -:4087C00000F008FF38BD00000408000042020000BD6E0000110A0000021E0000F1B58AB00A98012842D110216846E9F737FF00283CD168460088A249884237D16A46518873 -:4088000048409188D288514048406A46118948405189484091894840D189814226D1FFF781FF68464188974800F0D4FE684681889448401E00F0CEFE6846C1889148801E91 -:4088400000F0C8FE684601898E48C01E00F0C2FE684641898B48001F00F0BCFE684681898320400100F0B6FE0BB0F0BD8648069086480990EAF734F8012810D04120C001E7 -:408880000790834869465A380882012065244002E4014882401088827D4D662015E0EAF721F8002803D07A4D7A4C2D1D02E0F925794CED0079480790794869460882FF2062 -:4088C000C3304882C82088827020C8827548066A00273007002811DA08A97348089700F05FFE0F210898C901884307210902084381B208906C4800F06DFE02E00720EAF752 -:4089000071F8694808A90930089700F049FE0898782188433821084381B208906248093000F058FEC820E9F7DFFF2946204600F0EBFC544D6C466D1EA11C284600F030FE48 -:4089400068464088810602D1401C69464880E9F7C9FF002808D16846408880090A2803D98320800069464880300712D54E4E08A93046089700F014FE0F210898C90188431D -:4089800003214902084381B20890304600F022FE02E00320EAF726F8434E08A909363046089700F0FDFD0898782188431821084381B20890304600F00DFEC820E9F794FF09 -:4089C0000699079800F0A0FC211D284600F0E8FD68468288900602D1521C6846828004A8099900F063F8A11D264C204600F0D8FD02A9284600F0D4FD02A9A61E0231304607 -:408A000000F0CEFDE71E03A9384600F0C9FD68464188204600F0DEFD68468188284600F0D9FD6846C188304600F0D4FD68460189384600F0CFFD68464189201F00F0CAFDF5 -:408A400068468189601F00F0C5FD0A98012800D00AE70B486A461080518848409188D288514048406A46118948405189484091894840D08110216846E9F720FFF4E6000022 -:408A800082030000651000008202000082040000C6070000D4300000952E0000841C0000DC05000080F03D40071E0000F3B581B00024054669462046009400F071FD0098A4 -:408AC0000321C008C000084381B20090002000F081FD012069464002009400F061FD00980721C008C000084381B200900120400200F070FD834F69463846009400F050FD54 -:408B000000980126304381B20090384600F062FD69463846009400F043FD00980221084381B20090384600F055FD69463846009400F036FD00980421084381B200903846CC -:408B400000F048FD69463846009400F029FD00981021084381B20090384600F03BFD6946B81C009400F01CFD00980627B84381B200906448801C00F02DFD62486946801C72 -:408B8000009400F00DFD0098B843384381B200905C48801C00F01EFD5A4F694648373846009400F0FDFC00980221084381B20090384600F00FFD69463846009400F0F0FC59 -:408BC00000984021084381B20090384600F002FD69463846009400F0E3FC00987102084381B20090384600F0F5FC464F694634373846009400F0D4FC0098304381B20090AA -:408C0000384600F0E7FC3F4F69463D373846009400F0C6FC0098304381B20090384600F0D9FC7F1E69463846009400F0B9FC0098304381B20090384600F0CCFC3148FF21BD -:408C4000CA31623000F0C6FC2E480299643000F0C1FC2C4829885D3000F0BCFC294869885E3000F0B7FC2748A9885F3000F0B2FC2448E988603000F0ADFC224822494A3054 -:408C800000F0A8FC214D00946946284600F088FC00994907F8D51B480221633000F09AFC00946946284600F07BFC00998907F8D501256D0269462846009400F071FC0098EF -:408CC000C108C900009189B2284600F083FC69460020009400F064FC00980721C008C000084381B20090002000F074FC084C45218901204600F06EFC65218901204600F046 -:408D000069FCFEBD04080000BD6E0000110A0000021E000010B50A4A02280AD0012807D1084808188001C01C81B2104600F052FC10BD7D200001081A80013D30F4E7000099 -:408D40004E0800002FF8FFFFF3B5002583B000287DD0FF240026163401A92046019600F01FFC0198022180088000084381B20190204600F02FFC614F01A93846019600F00B -:408D80000FFC032101980903884381B20190384600F020FC01A92046019600F001FC0198302188431021084381B20190204600F011FC534E002402200499FFF7ABFF002096 -:408DC000019001A9304600F0EBFB01984006F8D54B486946083000F0E3FB68460088641C2D180A2CE7D3E9F77BFD07006AD00A212846E9F78DFE6946088068460188FF20E3 -:408E0000143000F0E7FB0020FF241634019001A9204600F0C5FB019830218843084381B20190204600F0D6FB00252C4602200499FFF770FF0020019001A9304600F0B0FB2C -:408E400001984006F8D52E486946083000E037E000F0A6FB68460088641C2D180A2CE5D3002F3DD00A212846E9F752FE6946088068460188FF20153000F0ACFBFF240025C2 -:408E8000163401A92046019500F08AFB019902208143019189B2204600F09CFB01A92046019500F07DFB019930208143019189B2204600F08FFB65218901124800F08AFBCB -:408EC00005B0F0BD2846EBF757F90F4A0F4BEAF74FFB00220E4BEAF735F8E9F755FF8AE72846EBF749F9084A084BEAF741FB0022074BEAF727F8E9F747FFB7E703020000D3 -:408F00001D0A0000021E00009A9999999999244000005940F8B5E9F7E3FCE94D0746002469462846009400F03BFB03210098890388430121C903084381B20090284600F0FF -:408F400049FB6E1C69463046009400F029FB032500986D03A843284381B20090304600F039FB69463046009400F01AFB00981C2188430421084381B20090304600F02AFB57 -:408F800069463046009400F00BFB0098022180088000084381B20090304600F01BFBC84E694609363046009400F0FAFA0098A84381B20090304600F00DFBB021701C00F0C2 -:408FC00009FBBF4865218901001F00F003FBFF25173569462846009400F0E2FA00981021084381B20090284600F0F4FAB54DFF202946313000F0EEFAFF202946323000F090 -:40900000E9FAFF208021333000F0E4FAB1218900012000F0DFFAAC49052000F0DBFA8125ED00AA4E002F7DD0C1218900022000F0D1FA3146032000F0CDFA3C210B2000F020 -:40904000C9FA2946072000F0C5FAA0490820FF3900F0C0FA39210C2000F0BCFA00210A2000F0B8FA40210D2000F0B4FAFF207021133000F0AFFAFF262D211636C901304625 -:4090800000F0A8FAFF27FF2134370902384600F0A1FA8F498F4800F09DFA8E488E49401C00F098FA8B488D49801C00F093FA272181200901800000F08DFA41208849C000FA -:4090C00000F088FA83488749001D00F083FAFF25804801352946401D00F07CFA03203A21400200F077FA78497F480E3100F072FA7D487E49401C00F06DFA7B480621801C7C -:4091000000F068FA78480321401D00F063FA61207749000100F05EFA7348FF21103000F059FA00E0B5E07048C821083000F052FA6D480121093000F04DFA6B483C21113045 -:4091400000F048FA684801210C3000F043FA664868490D3000F03EFA634867490E3000F039FA41206946C000009400F019FA0721009889028843E900084381B2009041202D -:40918000C00000F027FA5D49384600F023FA69463046009400F004FA0F21009809028843084381B20090304600F014FA0421880200F010FA1021524800F00CFA50480E21B5 -:4091C000401C00F007FA4E4840210F3000F002FA4B488021103000F0FDF949488621113000F0F8F93B486946401C009400F0D8F90098382188432021084381B200903548E1 -:40920000401C00F0E7F9812069468000009400F0C7F903210098090388436901084381B200908120800000F0D5F9812069468000009400F0B5F903210098890288430843A5 -:4092400081B200908120800000F0C4F921486946001D009400F0A4F90721009809028843284381B200901B48001D00F0B3F919486946001D009400F093F900980121000927 -:409280000001084381B200901248001D00F0A2F9F8BD2946022000F09DF93146032000F099F93B210B2000F095F90E4907200A3900F090F91349082000F08CF93321CAE679 -:4092C000061E0000808000000DB00000013E000030480000010200009426000043430000D4D20000190800000106000036790000FF0D00008CC800004698000034CA0000DA -:4093000001100000023A0000F3B581B0002469462046009400F044F900980321C008C000084381B20090002000F054F901277F0269463846009400F033F900980625C0084D -:40934000C000284381B20090384600F043F969468E48009400F024F900980126304381B200908A4800F036F969468848009400F017F900980221084381B20090834800F0B2 -:4093800029F969468148009400F00AF900980421084381B200907D4800F01CF969467B48009400F0FDF800981021084381B20090764800F00FF975486946801C009400F0F3 -:4093C000EFF80098A84381B200907048801C00F001F96E486946801C009400F0E1F80098A843284381B200906848801C00F0F2F8664D694648352846009400F0D1F800989B -:409400000221084381B20090284600F0E3F869462846009400F0C4F800984021084381B20090284600F0D6F869462846009400F0B7F80098384381B20090284600F0CAF8EC -:40944000BD1D69462846009400F0AAF80098304381B20090284600F0BDF84C48632149017E3000F0B7F849480521343000F0B2F8474E69463046009400F092F80098032106 -:4094800080088000084381B20090304600F0A2F83E484049623000F09DF83C480299643000F098F8394801995E3000F093F8374800215D3000F08EF8344800215F3000F05A -:4094C00089F832480021603000F084F82F4832494A3000F07FF800946946304800F060F800984006F8D529480221633000F072F800942A4869460C3800F052F80098800700 -:40950000F7D569463846009400F04AF80098C008C00081B20090384600F05CF869460020009400F03DF800980721C008C000084381B20090002000F04DF8154F45217F1F2C -:409540008901384600F046F865218901384600F041F869463046009400F022F80098022180088000084381B20090304600F032F869462846009400F013F800984108490004 -:40958000009189B2284600F025F8FEBD04080000071E0000C9050000BD6E00001D0A000010B50C4601210903FF22411A0232914208D201460548FEF777FC0121C802FEF7D9 -:4095C00073FC0348FEF75CFC208010BD01080000080A000010B5FEF767FC10BDE897FE7F010000000000001000000008C000000004960110C0000008B804000028190008A5 -:40960000740F000000127A0000127A0000093D0000093D0000093D0004000000A00F00000000D0070700000002000000030000000F00000000000000000000000300000015 -:409640000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000019000050A0000000E4450010A5 -:40968000DC450010404600100000614002FF0000891F00100100000006000000841E00080000000000000000000000000000000000000000000000000000000020000000B8 -:4096C00000FFF40100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076 -:40970000000000000000000000000000000000000001000000000000000000000000000000000000FF0000000000000000000000A84700100000000000000000000000002A -:4097400050480010000000000000000098480010000000000000000021000000C04800103C4D0010C04D0010444E0010000000009145011091450110084F0010D95E011043 -:40978000DB5E0110744F0010804F0010E1610110DD610110E04F001035660110D1660110585000100000000000000000000000000000000000000000000000000000000020 -:4097C00000000000000000000000000000000000E9000010C100001000000000F7B50D00019000F04BF9060003281FD12D4B1B69002B19DB002000F051F92B4FB84213D034 -:4098000000232A4A1900012000F020F9041E0BD1002000F043F9264BB84203D09C4203D00134F5E79C4201D1224D39E000F02EF9214A04000121214800F010F900282DD19C -:40984000019B002B16D1ADB2ED0001D11C4D18E03E221C4B06211A601B4A1C4B1A60A3221B4BD20099501B4A9D50995899580029FCDAEBE7114A1369002BFCDB00F016F94A -:409880000500032E03D0200000F0D8F808E00121002000F0EBF80028F9D1F4E7054DF0E72800FEBDC00023400101880048010008F049020005005200401E00080000234090 -:4098C00001005000040126401E1F000008012640000026401C05000010B54378FF2B0DD100F0D4F8064BDB685A68012311681943116011681942FCD100F0A0F810BDC04679 -:409900008000234070B52B490A682A4B002AFBDA0221DA680A43DA60DA68D2071BD5264D264CD9682A69266889B2360A36060E43FF21120209040A4032439026DA602969FD -:409940001F4A360111403143296121680A40324322602A692268002204241A495A605A680A6922430A61012801D030BF00E020BF1A68104D002AFBDAEA68D20712D5FF24EA -:409980000D4E0F4A3069E9682402090A1040214001430A4831610668E9683240090C0C40224302600221DA688A43DA6000225A6070BDC046E000234000002140900021408E -:4099C000FF00FFFF00ED00E00421134A13690B431361012801D030BF00E020BF0F4A1368002BFCDA0E4B19691A00002910D10D490D4B196006210D4B19600D4B3831196008 -:409A00000C4B0631196019680029FCDA0A4B13610022024B5A60704700ED00E0E0002340FC0025401E1F00000801264018052640040126401C052640AAAAAAAA01B40248BD -:409A4000844601BC604700BF531F001001B40248844601BC604700BF1911001001B40248844601BC604700BF890E001001B40248844601BC604700BFA90F001001B402480B -:409A8000844601BC604700BF0504001001B40248844601BC604700BF4B1F001001B40248844601BC604700BF2110001001B40248844601BC604700BF611700100000000099 -:409AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066 -:409B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025 -:409B400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5 -:409B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5 -:409BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065 -:0200000490303A -:02000000C887AF -:0200000490501A -:0C0000000005E20721002101E296E987DB -:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_default_1.01.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_default_1.01.hex deleted file mode 100644 index d605fa34de7..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_default_1.01.hex +++ /dev/null @@ -1,150 +0,0 @@ -:020000041000EA -:4000000000000108310100100D00000095010010000000000000000000000000000000000000000000000000000000009101001000000000000000009101001091010010DC -:4000400091010010F10700109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010FA -:400080009101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001020 -:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD4804000800000000541F0010084B10B5002B03D00749084800E000BF07480368002B00D1AD -:4001000010BD064B002BFBD09847F9E7000000004C040008541F001044010008000000007047EFF3108072B6704780F310887047FFF7F6FF72B6104C104DAC4209DA2168D4 -:400140006268A368043B02DBC858D050FAE70C34F3E70B490B4A0020521A02DD043A8850FCDC094809490860BFF34F8F00F0ECF800F01EF8FEE70000581F0010701F0010D1 -:4001800048040008380700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F08DFAFEE710B500F0A5F962B6064B5B689B0301D517 -:4001C00001F044FA044800F02FF9002001F090F9FBE7C0460000264000000810F8B5E023504C9B00E2580F231340D022990092000919885807224C4D0240032A05D0042A73 -:4002000005D0002A0FD0494811E028680FE0C022920089581F220A40112A01D0132A04D18020000203E0424801E0FA20C001002B27D1B223B1210322DB00C900E65863588A -:4002400067581B0F3F0F1340174205D0354F7958090F0A40012A01D1F20701D4032B3AD1B023344ADB00E658A158E758C904C90C01F050FDB603F901B60BC90F7043013158 -:4002800027E0012B27D1C823C0210322DB00C900E658635867583F0F174205D0214F7958090F0A40012A01D1F20703D49B009B0F032B10D1C0227F23D200A758A1583B40BD -:4002C0001F27A658090A3940584301F023FD310C394001F01FFDE0239B00E3589B069B0FD840154B68601C691969240A090E013101F010FDE1B2A860013101F00BFD0F4BBF -:40030000E860286104000E49C01801F003FDFA210C4B28758900E01801F0FCFCA861C003E861F8BD00002640C000000800366E0100127A0084050000000021403F420F00AC -:4003400040420F00E7030000B021E02010B530241F4BC9005A588000520052085A501A58A2431A50802252045A501A491A4A80209950A021043289019950FF21174AC005FA -:40038000995081315A5892009208024380205A505A580006024301205A505A5882435A5000F054FAFFF71AFF00F02AFA00F032FA00F0B8FEB0235B055A78002A02D05B7855 -:4003C000212B03D10022064BDA605A6010BDC0460000264001000200840500008C050000E0002340024BD86F032318407047C0460400214010B5FFF794FE074A074BD16F79 -:400400000B4007490B43D367102306490A681A42FCD0FFF78AFE10BD04002140FCFF00000100FA058800214070B50F4C0600FFF778FEE36F0500DB439B0701D1FFF7DAFF3F -:40044000B0230A4A9B00D650E26F094B09491340094A1343E36710230A681A42FCD02800FFF763FE70BDC0460400214000002140FCFF0000880021400300FA0510B5040063 -:40048000007B00F0F3F8606010BD10B50400007B216900F0B5F8606010BD10B5037B0169180000F0CDF810BD10B50400C06800F009F9606010BD10B5C06800F017F910BDF0 -:4004C00010B50400C06800F023F9606010BD10B5C06800F037F910BD10B504000C23C05E00F056F8606010BD10B50C23C05E00F06FF810BD10B5C06800F036F910BD0000A8 -:4005000010B500221849042000F0A4FC01221749042000F09FFC02221549042000F09AFC03221449042000F095FC04221249100000F090FC05221149042000F08BFC0622E9 -:400540000F49042000F086FC07220E49042000F081FC08220C49042000F07CFC09220B49042000F077FC10BD7D0400108B0400109B040010A9040010B7040010C104001062 -:40058000CF040010D9040010E9040010F504001070B507260512EDB206400D2D11D801F0F8F80A4901224B5D1C003441144003D1B24013434B5501E00124644201F0EDF8D2 -:4005C00001E001246442200070BDC0466404000870B50412E4B20D2C0FD80725054001F0D8F8064901220B5D1E002E41164202D0AA4093430B5501F0D0F870BD6404000862 -:40060000F8B50C00050001F0C4F80C2301225D431300A3401A00094E71198F683A4008D13B43AD598B60631C4B60AB4202D94A6000E0FF2401F0B1F82000F8BDE0000008BD -:4006400070B50C00050001F0A4F801210C23A1406B43054AD3189A680A4201D08A439A6001F09BF870BDC046E0000008F0B50C2485B0019001F08DF8019B114D5C432B192A -:400680005B68029003932E1971680198FFF7B8FF0700FF280DD173682A59934201D9002373602A1953680399994202D001335360E9E7029801F071F8380005B0F0BDC04648 -:4006C000E000000810B5040007280AD801F061F8054B0E331A5D002A01D101321A5501F05CF80120404210BD6404000810B5040007280AD801F04DF8044B0E331A5D012AE1 -:4007000001D100221A5501F048F810BD6404000870B505001F280ED801F03BF8084B30335C5D002C02D101225A5501E00124644201F033F801E001246442200070BDC04666 -:40074000E000000810B504001F280AD801F021F8044B30331A5D012A01D100221A5501F01CF810BDE000000870B5B024C025144B144A15496405ED00E35CA25C615C665D18 -:400780003F251F242A400C4024039201224311002B407F2219430B003240520413430B4A1C0A110050310B701B0C8B7000234C7011005031595CC1540133062BF8D170BDDB -:4007C000040600000506000003060000E000000810B50248583000F051FB10BDFC04000810B50248B03000F049FB10BDFC04000810B5024800F042FB10BDC046FC0400083C -:4008000010B5034A80216032042000F001FA10BDFC05000870B500F0BCFF0500094800F08BFA094C200000F0B9FA2000343000F0B5FA2000683000F0B1FA280000F0ADFFA1 -:4008400070BDC046FC040008881E0010F0B5962191B0002000F050FF00F026FF002801D100F014FF012000F09FFDE821724C734B626C89011A400A436264626C0193120A04 -:40088000D2B23A2A04D1636C6D4A13400B4363643422002103A801F0D2FA03AA0021694800F06EFC3422002103A801F0C8FA03AA0121644800F064FC082204262368624DA7 -:4008C000134323602369334207D1002D04D0012000F0D2FE013DF5E701E0002D00D1FEE7A02603220127594CF600A35903AD93433B43A351D2195649280001F097FA280088 -:4009000000F0FAFF534901980B68534A03400B608021136949041B021B0A0B4313611369019902200B401361E0230F219B00E2588A433A43E250E25821318A438021E250C6 -:40094000E25809060A43E250002100F0D3FA0021032000F0CFFA0021042000F0CBFA0321002000F0C7FA0321380000F0C3FA384B0522191D280001F059FA2900380000F03F -:40098000DBFA002800D0FEE73449380000F026FB002800D0FEE7324B324AE1580A403A43E250E158304A0A408021E250E25809060A43E250A2592D4B1340A351A2592C4BF3 -:4009C00013408022920113438022A351A35912021343A351184B1A68264B1340164A136000F0DEFEC0235B00E3583B4204D1224AA3585B005B08A3506421002000F07CFEEF -:400A000024220021280001F01AFA29000D4800F031FC2A000E4B0C3313CB13C213CB13C213CB13C22900154800F024FC144A154B1A6011B0F0BDC04600002740FF00FFFF06 -:400A4000FFC5FFDF0000324020A1070000002640241F001090002140000021401027000004050000FEFCFFFFFFFF00FFFFF0FFFFFF8FFFFFFFFCFFFF0C0500000003324062 -:400A800001001180000E1F41030010B5FF24800882009B1ADB009C409940E243214007282DD8174B01F02CF904090E13181D2227186A02401143196221E0586A0240114332 -:400AC00059621CE0986A02401143996217E0D86A02401143D96212E0186B0240114319630DE0586B02401143596308E0986B02401143996303E0D86B02401143D96310BDD7 -:400B000000002140064B10309A68064B9A4203D183009858995002E0034B8000C058704700ED00E00000000800000010F7B5051E01913DD00023C05E002802DBA978FFF735 -:400B4000A3FF6A680023E85E9201002812DB1A4B81088900C918FF2303271C00C0250740FF00BC401A40BA40AD004E59A64332434A5113E003250F2381B20B402940A9404B -:400B8000FC352F002A408F408A40083B9B080B4C9B001B19DE69BE433243DA61074B00259A68074B9A4204D10199FFF7ABFF00E0044D2800FEBDC04600E100E000ED00E070 -:400BC00000000008010056000369002B03DA89B24160002000E001487047C04601008A000368002B01DB034803E089B2C26081600020704701008A000369002B03DAC368D6 -:400C000000200B6000E001487047C04601008A0070B5040010000F2C2BD8002A07D1002927D1154B6401E418144B1C6022E000291FD01F260E401CD1104D0F4B6401E418D0 -:400C40006960AA60CA0831002C6001F0F8F831002000FFF7B9FF31002A1D2868FFF7C0FF011E04D12868FFF7AFFF011E02D0044900E00449080070BD00002340EC06000850 -:400C800001018A0003018A00194BF7B51A680193D76804003B680E00834223D90025A94202D100F076FD0500019B18680368002B01DB104C10E063095A01A41A0122A24090 -:400CC00079689B00CB18196811420DD00024914319600021FFF778FF002E07D1280000F05CFD03E0044C01E0044CF2E72000FEBDEC0600080301880004018A0002018800B6 -:400D00000A4B1B68DA68136883420DD9430999005B01C31A0120984052688B581840431E9841034BC01800E002487047EC0600080001880004018A00024B1A68002A00D14A -:400D400018607047F8060008F0B52C246043104C1E0024681F0A2018FF2426403C400D4F06607601F61906610B4E1B0C44606401A4191E04836033434461A3600023059D5D -:400D8000C261016283619D4201D02B888381F0BDF80600080000234000102340F0B5038985B002AD2B800368066A1933AB704368476A0095826AC16A040003930369C068A1 -:400DC000FFF7C2FF00213B000A0000913000FFF7BBFF216B2800FFF7A9FE0023EA5E002A05DB1F231A401E3B9340024A136005B0F0BDC04600E100E0F7B52C25124C6843E9 -:400E0000276801933C182669002E08D04D4379198869002805D13568002D02DA03E00B4811E00B480FE06768012425004B689D4013882D041D431560F2608C61BC40019B65 -:400E4000A4B24B62B460FEBDF806000804028A0007028A002C235843064B1B681818C369934204D9036A9200D150002000E002487047C046F80600080A028A0073B500269A -:400E800042690400D56801962B0CB3421CD01B040069136013680369B34215DA01A9FFF7ABFEB0420CD10198E26903681E0C0378934205D2226A9B009B58002B00D0984725 -:400EC00031002069FFF780FEADB2002D0ED063691D6000251B68636AAB4202D09847656203E0A36A002B00D09847A56163691B6873BD0000042819D804290FD94B1EFF3B13 -:400F0000132B13D81F231940094B8000C018C02304229B00C1504033C25005E00723D0301940034B8000C150002000E0014870470000264001004A00F0B5012819D1C02275 -:400F4000224BD2009A58002A0CDB8A78901E0E280FD84C78601E11280BD8C8780D7800282FD101E01A4830E07026152D01D9AE4201D2184829E00E79022E14D0F82124020C -:400F80004901F8270C4021007F2412047F033A4011432C4021438024C022C006240520400143D2009950C020C0248005360706403200E4001D590849002029400A431A51C4 -:400FC00003E03826122DD4D9D1E7F0BD0000264003004A0001004A00FFFFFFCFF8B50D00012819D1C02180240D4BC9005A582406C826224307001C005A50F600A3593B42B7 -:4010000006D1002D0AD0012000F036FB013DF5E70020002D03D101E0024800E00248F8BD0000264001004A0002004A001E4A0300904238D010D840282ED005D8002831D0B5 -:4010400010282DD119482EE0802827D08021100049008B4227D023E0154A904214D008D8A022120690421DD0124AA020934211D016E0114A904209D0104A904208D0104AB1 -:4010800090420DD10F480EE0A42003E00E480AE00E4808E0C00306E00D4804E00D4802E00D4800E0002070470600520001005000010000F0090000A0040000F0050000F0C5 -:4010C000030000F00100520002005200030052000200500005005200FF0052000B4B10B51B69002B10DB0A4B0A4C1868FFF79EFF0121094B094A995099580029FCD10649AC -:4011000009590029F8D100E0054810BD00002340FC0600088C040000000025400C0400000200500010B5022202490020FFF792FE10BDC046450200080F4B30B5C0180F4B30 -:40114000C009C01800011F23032909D81D00C9008D4013408B400468AC432343036009E01D000439C9008D4013408B404468AC432343436030BDC0460000CEBF0010030457 -:40118000F7B504000E00150000286ED0002A6CD0012312688B40002A01D1436000E08360B30001930F231900B0008140A26A8A4369680B4083401343A3622A7A31002000BA -:4011C000FFF7BAFF0320710088400322636A83431800EB6813408B400343636201231F00B7400097FF43BC462F6962461F40B740A0691031104038436F69A0611F40B740A9 -:40120000E06A10403843E062A86903221840B0400600E869276B10408A408840009930430A4397436A6A384356000222206304201640AA6A616B92000240286A3243034017 -:401240001A43EB6AD80018230340FF2013432A6B019D520102401343FE2292002A40934081430B436363002000E00148FEBDC04601005A0000281BD0002919D00D4B0E4AD2 -:40128000C318DB099B180A681B010260CA6882620A69C2624A6902638A6842624A6882618A694263CA6900201A600A6A5A6000E0024870470000CEBF0010030401005A0069 -:4012C00010B50F2402200649064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F0000010B50F2403200649064BCA58A2430243CA50F02212028B5872 -:40130000A34303438B5010BD0000214004F000000449054A054B88580340C020C00103438B5070470000214004F00000FF8FFFFF0449054A054B885803408020C001034365 -:401340008B5070470000214004F00000FF8FFFFF031E03D1084B5869C00F0CE00020012B09D1054918008A69920F1A4201D18869C00F01231840704700002640072370B540 -:40138000084CA2691A4090420BD0A5699D4303402B43A361002904D0904202D9C82000F06BF970BD00002640F7B5060000F0F1F9B022E8211F27244D244C01902B595205B1 -:4013C000C900525C3B409B1A5A1E9341B34236D0002E13D180211E4A490493690B439361FFF76EFF0B222B59BB4313432B51FFF78FFFB023E8225B05D2000CE00B222B5945 -:401400000920BB4313432B5100F036F9FFF790FFB022104B5205D35C2959DAB21F23994313400B432B51012E09D1092000F024F9FFF75AFF064A084B91690B409361019810 -:4014400000F0ABF9F7BDC046000026401CFF000000F0254041070000FFFFFFFEF0B5060085B00D00204F042901D001291AD100207C68002C35D01D4B984232D02379B3428C -:401480000ED1A368002B01D02B4209D1E36801A85A689B6842608360057023689847BC606469E6E7BC68022902D1002C00D024690020002C15D00D4B984212D02379B342AB -:4014C0000DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E705B0F0BDC0460C070008FF004200F7B5484C06002368002B0AD100F049F97C -:4015000023680700002B10D004210120FFF7A6FF0BE001210800FFF7A1FF0028EED002210120FFF79BFF3C4C72E03C4D2B680195DB061AD5F2223A4BD2019A58E260F022BA -:40154000D2019A582261374A9A586261364A9A58A261364A9A58E261354A9A582262354A9A586262344A9B58A362B02252055378002B02D05378212B03D1300000F07CFCAF -:401580001DE02E4B2E492F4859588C46E821C900515CC9B20091196809020AD41F2165460D402900009DA94203D0274952581A5002E00023214A1350300000F055FC019B2F -:4015C0001B68DB0619D5F0222169154BD20199506169144A9950A169134A9950E169134A9950216A124A9950616A124A9950A16A114A9950E168E8329950380000F0CDF888 -:4016000023680024A34203D008210120FFF726FF2000FEBD0C070008FF004200E00001400000344004780000087800000C7800001078000014780000187800000000264088 -:401640001CFF0000307F00001018000010B5E82400F09FF8064B07495A68A4010A4022435A605A68114059605B6800F096F810BD00002640FF00FC0F10B5034B1B78584324 -:4016800000F07EF810BDC046D400000880220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D08023DB0218437047C5 -:4016C00000002640FEE7000002680A4B10B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC04628040008F0B51922002800D19E -:401700004B32E82403258A429241194E640033595242AB43134333513359164F3B403351154B5C68AC4322435A605A6817405F60002808D00023102913D921338B429B4167 -:401740005B4201330DE003001D290AD901233A2907D9DB18572904D976338B4240410422131A0F21054A1068884303431360F0BD00002140FFFCFFFFFC002140000025403A -:401780000230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047094B042803D11A68104318600BE0C02200069204104090220449920088500421A6 -:4017C0001A688A431A60704710E000E000002140F8B58023FA250C0001271B0218430D4E0004F061AD00326C0A4B01203A4205D1002D0CD0013DFFF73FFFF4E7002D06D001 -:401800001A6C10431864DB6A0020238000E00248F8BDC04600003C400400160070B5FA2401260D4B000418400C4D0143E961A4002B6C0A4A0120334205D1002C0AD0013C8D -:40184000FFF71AFFF4E7002C04D0136C18431064002000E0024870BD0000FF7F00003C400400160030B524259DB02A00002101A800F0E5FA154B164C0493164B2A00002162 -:401880000AA808930993069400F0D9FA124B2A000D93124B00211193114B13A812930F9400F0CDFA0F4B01A916930F4B0F481A931894FFF7DFFC0AA90D48FFF7DBFC13A96A -:4018C0000C48FFF7D7FC1DB030BDC046666666660000FFFF1C1C1C1C66E6EE661C1A1A1A1A1A000066E666661A1A001C000132408001324000023240F0B585B000900028F3 -:4019000000D147E1BE4F7B689B0301D5FFF79EFE0122BC4BBC4C1D001959114204D0BB495B58134200D037E1FFF79CFFB84AB94BEA508022009BD2021B781343B64AAB5016 -:40194000B64AB74BEA50B74B5A6801231A4200D024E1B54A116F08220A4008D1B34BB44918681300884202D900F0D4F9431E2A68002B03D0AF485B03034300E0AE4B13439B -:401980002B607B699F499E4E01275B000DD539000320FFF7F3FC73699B0F3B420AD08022B369D2051343B36104E00320A34A8B5803438B502B5940200193019AA04BA14E7D -:4019C00013432B51FFF758FE0123AA598D4F1A4208D1BB514020FFF74FFE03234020BB51FFF74AFEFA27019A974B984E1A4016430192FF002E51964A964BD3581022134257 -:401A000007D1002F00D1CBE00120013FFFF734FEF1E7002F00D1C3E008218F4A0120AB580B43AB50FFF794FC002802D18B4E019B1E438B4B1E4001231E432E511E00894C2E -:401A4000724BEB58334207D1002C00D1A8E00120013CFFF711FEF3E7002C00D1A0E00B27C02181484901FFF7D9FE041E05D102AB991D7D48FFF7ACFE0400013F002F00D1E3 -:401A800096E0002C25D1C02202AB9E1D338852019342E5D131007548FFF79AFE041E18D180233288DB001A4200D083E00B27019380216E48C900FFF7B1FE041E04D13100AA -:401AC0006A48FFF785FE0400013F002F70D0002C68D0B0256D056B78002B44D06B78212B41D0634FEB5B002B3DD0002C00D0FEE002AB9E1D31005F48FFF76AFE041E00D061 -:401B0000F5E0C021E85B3488084060398C434008594920430140F020EA5BC000EB5BD201024011439B05554A9B0F1140DB02194350483180FFF772FE041E00D0D7E03100F2 -:401B40004F48FFF745FE041E00D0D0E0C022EB5B31889B069B0F9B019143194348483180FFF75CFE0400002C00D0C0E0009B454859781D78444B49001943FFF74FFE041EA3 -:401B800004D142494248FFF749FE04006801FFF773FDACE03F4CAAE03F4CA8E03F4CA6E03F4CA4E03388019A934200D080E701E03B4C8EE731003B48FFF70AFE041E00D074 -:401BC00087E732883F2310009843009B36499F78DB78012F0ED10222012B04D89FB2D21B92B2019201E0170001947022104330802E4A66E0002B5BD0019401275BE0C04668 -:401C00000000264000003C40A0F00100B4F0010006000001A4F00100A8F0010001000100ACF00100FC003C4000F03D40C800000800093D00041A0080040A0080C4F00100DC -:401C400030000300B0F00100EFFFFEFF20000200000032401040000068F0010028000200FFFFFBFFF07E0E00021E0000031E000016180000071E00007FF8FFFFFFE7FFFFDD -:401C8000061E0000081E000001100000376800000F1E000001001600030016000200160004001600091E0000C00000080048E80101201F0001907F2082436F3802433280A8 -:401CC0000C4ADA400A6031880B4839433180FFF7A5FD009B0400DB78DF1B03231F40019B9B001F43054BBFB23780EF50F1E6200005B0F0BD0024F400091E000064F001008B -:401D000002B4714649084900095C49008E4402BC7047C046002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D3E9 -:401D40001212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A52419D -:401D8000C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A52418309B2 -:401DC0008B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D3C9 -:401E00004B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E770477047C046002310B59A4203D0CC5CC4540133F9E710BD0300EB -:401E40008218934202D019700133FAE770470000F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E46704701B40248844601BC604700BF3503000801B40248844601BC8E -:401E8000604700BF7102000803000000010000000100000000000000050360000400000001000000000000000100000006046000080000006C060008F107001008000000D2 -:401EC000010000000200000002000000080800030900000001000000000000000300000009090003080000008C060008D10700100A0000000100000004000000040000000B -:401F00000A0A000C0B0000000100000000000000050000000B0B000C10000000AC060008E1070010192001021901020000000000000000000000000000000000000000BA7A -:401F40000000000000000000000000000000000000001D1D000000000000001000000008C0000000781F0010C00000086803000048040008F002000000127A0000127A0017 -:401F800000093D0000093D0000093D0004000000A00F00000000D0070700000002000000030000000F000000000000000000000003000000000000000000000000000000A7 -:401FC0000000000000000000030000000000000000000000000000000000000000000000000000000000000019000050A000000002FF0000E9000010C1000010000000000A -:40200000F7B50D00019000F04BF9060003281FD12D4B1B69002B19DB002000F021F92B4FB84213D000232A4A1900012000F048F9041E0BD1002000F013F9264BB84203D00B -:402040009C4203D00134F5E79C4201D1224D39E000F01EF9214A04000121214800F028F900282DD1019B002B16D1ADB2ED0001D11C4D18E03E221C4B06211A601B4A1C4BCD -:402080001A60A3221B4BD20099501B4A9D50995899580029FCDAEBE7114A1369002BFCDB00F0E6F80500032E03D0200000F010F908E00121002000F0E3F80028F9D1F4E730 -:4020C000054DF0E72800FEBDC00023400101880038010008F049020005005200FC0600080000234001005000040126401E1F000008012640000026401C05000010B5437878 -:40210000FF2B0DD100F0C4F8064BDB685A68012311681943116011681942FCD100F0D8F810BDC0468000234070B52B490A682A4B002AFBDA0221DA680A43DA60DA68D2078E -:402140001BD5264D264CD9682A69266889B2360A36060E43FF21120209040A4032439026DA6029691F4A360111403143296121680A40324322602A692268002204241A491B -:402180005A605A680A6922430A61012801D030BF00E020BF1A68104D002AFBDAEA68D20712D5FF240D4E0F4A3069E9682402090A1040214001430A4831610668E9683240C4 -:4021C000090C0C40224302600221DA688A43DA6000225A6070BDC046E00023400000214090002140FF00FFFF00ED00E00421134A13690B431361012801D030BF00E020BF75 -:402200000F4A1368002BFCDA0E4B19691A00002910D10D490D4B196006210D4B19600D4B383119600C4B0631196019680029FCDA0A4B13610022024B5A60704700ED00E074 -:40224000E0002340FC0025401E1F00000801264018052640040126401C052640AAAAAAAA01B40248844601BC604700BF010D001001B40248844601BC604700BFDD100010FE -:4022800001B40248844601BC604700BF890C001001B40248844601BC604700BF9317001001B40248844601BC604700BFE503001001B40248844601BC604700BFE10B00101B -:4022C00001B40248844601BC604700BFF90D001001B40248844601BC604700BF9B17001000000000000000000000000000000000000000000000000000000000000000002E -:40230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D -:40234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D -:40238000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D -:4023C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD -:0200000490303A -:02000000121CD0 -:0200000490501A -:0C0000000005E20721002101E212331C80 -:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.c new file mode 100644 index 00000000000..74c28aba2cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.c @@ -0,0 +1,34 @@ +/******************************************************************************* +* File Name: cycfg.c +* +* Description: +* Wrapper function to initialize all generated code. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg.h" + +void init_cycfg_all(void) +{ + init_cycfg_clocks(); + init_cycfg_peripherals(); + init_cycfg_pins(); + init_cycfg_platform(); + init_cycfg_routing(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.h new file mode 100644 index 00000000000..ac6033d2bd1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg.h @@ -0,0 +1,47 @@ +/******************************************************************************* +* File Name: cycfg.h +* +* Description: +* Simple wrapper header containing all generated files. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +#include "cycfg_clocks.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_platform.h" +#include "cycfg_routing.h" + +void init_cycfg_all(void); + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000..e14461b9aa5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,49 @@ +/******************************************************************************* +* File Name: cycfg_clocks.c +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_clocks.h" + + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_16_BIT, 0U, 999U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 7U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 2U, 108U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 3U, 1U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 4U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 4U, 255U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 4U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000..aeee9061aa0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_clocks.h +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_16_0_HW CY_SYSCLK_DIV_16_BIT +#define peri_0_div_16_0_NUM 0U +#define peri_0_div_8_1_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_1_NUM 1U +#define peri_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_2_NUM 2U +#define peri_0_div_8_3_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_3_NUM 3U +#define peri_0_div_8_4_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_4_NUM 4U + +void init_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_CLOCKS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_notices.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000..90f1013f8a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_notices.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* File Name: cycfg_notices.h +* +* Description: +* Contains warnings and errors that occurred while generating code for the +* design. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + + +#endif /* CYCFG_NOTICES_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000..74b7f028c48 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,219 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.c +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_peripherals.h" + +#define PWM_INPUT_DISABLED 0x7U +#define USBUART_INTR_LVL_SEL (CY_USBFS_DEV_DRV_SET_SOF_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_BUS_RESET_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP0_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_LPM_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_ARB_EP_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_EP1_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP2_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP3_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP4_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP5_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP6_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP7_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP8_LVL(0x1U)) + +cy_stc_csd_context_t cy_csd_0_context = +{ + .lockKey = CY_CSD_NONE_KEY, +}; +const cy_stc_scb_uart_config_t BT_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = true, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 63, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_scb_ezi2c_config_t CSD_COMM_config = +{ + .numberOfAddresses = CY_SCB_EZI2C_ONE_ADDRESS, + .slaveAddress1 = 8U, + .slaveAddress2 = 0U, + .subAddressSize = CY_SCB_EZI2C_SUB_ADDR16_BITS, + .enableWakeFromSleep = false, +}; +const cy_stc_scb_uart_config_t KITPROG_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = false, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 0UL, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +cy_en_sd_host_card_capacity_t SDIO_cardCapacity = CY_SD_HOST_SDSC; +cy_en_sd_host_card_type_t SDIO_cardType = CY_SD_HOST_EMMC; +uint32_t SDIO_rca = 0u; +const cy_stc_sd_host_init_config_t SDIO_config = +{ + .emmc = true, + .dmaType = CY_SD_HOST_DMA_SDMA, + .enableLedControl = false, +}; +cy_stc_sd_host_sd_card_config_t SDIO_card_cfg = +{ + .lowVoltageSignaling = false, + .busWidth = CY_SD_HOST_BUS_WIDTH_4_BIT, + .cardType = &SDIO_cardType, + .rca = &SDIO_rca, + .cardCapacity = &SDIO_cardCapacity, +}; +const cy_stc_smif_config_t QSPI_config = +{ + .mode = (uint32_t)CY_SMIF_NORMAL, + .deselectDelay = QSPI_DESELECT_DELAY, + .rxClockSel = (uint32_t)CY_SMIF_SEL_INV_INTERNAL_CLK, + .blockEvent = (uint32_t)CY_SMIF_BUS_ERROR, +}; +const cy_stc_mcwdt_config_t MCWDT0_config = +{ + .c0Match = 32768U, + .c1Match = 32768U, + .c0Mode = CY_MCWDT_MODE_NONE, + .c1Mode = CY_MCWDT_MODE_NONE, + .c2ToggleBit = 16U, + .c2Mode = CY_MCWDT_MODE_NONE, + .c0ClearOnMatch = false, + .c1ClearOnMatch = false, + .c0c1Cascade = true, + .c1c2Cascade = false, +}; +const cy_stc_rtc_config_t RTC_config = +{ + .sec = 0U, + .min = 0U, + .hour = 12U, + .amPm = CY_RTC_AM, + .hrFormat = CY_RTC_24_HOURS, + .dayOfWeek = CY_RTC_SUNDAY, + .date = 1U, + .month = CY_RTC_JANUARY, + .year = 0U, +}; +const cy_stc_tcpwm_pwm_config_t PWM_config = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PWM_PRESCALER_DIVBY_1, + .pwmAlignment = CY_TCPWM_PWM_LEFT_ALIGN, + .deadTimeClocks = 0, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .period0 = 32000, + .period1 = 32768, + .enablePeriodSwap = false, + .compare0 = 16384, + .compare1 = 16384, + .enableCompareSwap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = CY_TCPWM_PWM_INVERT_DISABLE, + .invertPWMOutN = CY_TCPWM_PWM_INVERT_DISABLE, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .swapInputMode = PWM_INPUT_DISABLED & 0x3U, + .swapInput = CY_TCPWM_INPUT_0, + .reloadInputMode = PWM_INPUT_DISABLED & 0x3U, + .reloadInput = CY_TCPWM_INPUT_0, + .startInputMode = PWM_INPUT_DISABLED & 0x3U, + .startInput = CY_TCPWM_INPUT_0, + .killInputMode = PWM_INPUT_DISABLED & 0x3U, + .killInput = CY_TCPWM_INPUT_0, + .countInputMode = PWM_INPUT_DISABLED & 0x3U, + .countInput = CY_TCPWM_INPUT_1, +}; +const cy_stc_usbfs_dev_drv_config_t USBUART_config = +{ + .mode = CY_USBFS_DEV_DRV_EP_MANAGEMENT_CPU, + .epAccess = CY_USBFS_DEV_DRV_USE_8_BITS_DR, + .epBuffer = NULL, + .epBufferSize = 0U, + .dmaConfig[0] = NULL, + .dmaConfig[1] = NULL, + .dmaConfig[2] = NULL, + .dmaConfig[3] = NULL, + .dmaConfig[4] = NULL, + .dmaConfig[5] = NULL, + .dmaConfig[6] = NULL, + .dmaConfig[7] = NULL, + .enableLpm = false, + .intrLevelSel = USBUART_INTR_LVL_SEL, +}; + + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 4U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB2_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB5_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_TCPWM1_CLOCKS1, CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphAssignDivider(PCLK_USB_CLOCK_DEV_BRS, CY_SYSCLK_DIV_16_BIT, 0U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000..d3b2015e80d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,148 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.h +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_csd.h" +#include "cy_scb_uart.h" +#include "cy_scb_ezi2c.h" +#include "cy_sd_host.h" +#include "cy_smif.h" +#include "cy_mcwdt.h" +#include "cy_rtc.h" +#include "cy_tcpwm_pwm.h" +#include "cycfg_routing.h" +#include "cy_usbfs_dev_drv.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 100000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 4u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT8 +#define Button0_Tx_PORT GPIO_PRT1 +#define Button1_Rx0_PORT GPIO_PRT8 +#define Button1_Tx_PORT GPIO_PRT1 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 1u +#define Button0_Tx_PIN 0u +#define Button1_Rx0_PIN 2u +#define Button1_Tx_PIN 0u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CapSense_HW CSD0 +#define CapSense_IRQ csd_interrupt_IRQn +#define BT_UART_HW SCB2 +#define BT_UART_IRQ scb_2_interrupt_IRQn +#define CSD_COMM_HW SCB3 +#define CSD_COMM_IRQ scb_3_interrupt_IRQn +#define KITPROG_UART_HW SCB5 +#define KITPROG_UART_IRQ scb_5_interrupt_IRQn +#define SDIO_HW SDHC0 +#define SDIO_IRQ sdhc_0_interrupt_general_IRQn +#define QSPI_HW SMIF0 +#define QSPI_IRQ smif_interrupt_IRQn +#define QSPI_MEMORY_MODE_ALIGMENT_ERROR (0UL) +#define QSPI_RX_DATA_FIFO_UNDERFLOW (0UL) +#define QSPI_TX_COMMAND_FIFO_OVERFLOW (0UL) +#define QSPI_TX_DATA_FIFO_OVERFLOW (0UL) +#define QSPI_RX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_TX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_DATALINES0_1 (1UL) +#define QSPI_DATALINES2_3 (1UL) +#define QSPI_DATALINES4_5 (0UL) +#define QSPI_DATALINES6_7 (0UL) +#define QSPI_SS0 (1UL) +#define QSPI_SS1 (0UL) +#define QSPI_SS2 (0UL) +#define QSPI_SS3 (0UL) +#define QSPI_DESELECT_DELAY 7 +#define MCWDT0_HW MCWDT_STRUCT0 +#define RTC_10_MONTH_OFFSET (28U) +#define RTC_MONTH_OFFSET (24U) +#define RTC_10_DAY_OFFSET (20U) +#define RTC_DAY_OFFSET (16U) +#define RTC_1000_YEAR_OFFSET (12U) +#define RTC_100_YEAR_OFFSET (8U) +#define RTC_10_YEAR_OFFSET (4U) +#define RTC_YEAR_OFFSET (0U) +#define PWM_HW TCPWM1 +#define PWM_NUM 1UL +#define PWM_MASK (1UL << 1) +#define USBUART_ACTIVE_ENDPOINTS_MASK 7U +#define USBUART_ENDPOINTS_BUFFER_SIZE 140U +#define USBUART_ENDPOINTS_ACCESS_TYPE 0U +#define USBUART_USB_CORE 4U +#define USBUART_HW USBFS0 +#define USBUART_HI_IRQ usb_interrupt_hi_IRQn +#define USBUART_MED_IRQ usb_interrupt_med_IRQn +#define USBUART_LO_IRQ usb_interrupt_lo_IRQn + +extern cy_stc_csd_context_t cy_csd_0_context; +extern const cy_stc_scb_uart_config_t BT_UART_config; +extern const cy_stc_scb_ezi2c_config_t CSD_COMM_config; +extern const cy_stc_scb_uart_config_t KITPROG_UART_config; +extern cy_en_sd_host_card_capacity_t SDIO_cardCapacity; +extern cy_en_sd_host_card_type_t SDIO_cardType; +extern uint32_t SDIO_rca; +extern const cy_stc_sd_host_init_config_t SDIO_config; +extern cy_stc_sd_host_sd_card_config_t SDIO_card_cfg; +extern const cy_stc_smif_config_t QSPI_config; +extern const cy_stc_mcwdt_config_t MCWDT0_config; +extern const cy_stc_rtc_config_t RTC_config; +extern const cy_stc_tcpwm_pwm_config_t PWM_config; +extern const cy_stc_usbfs_dev_drv_config_t USBUART_config; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000..e8cc28fd9e5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.c @@ -0,0 +1,883 @@ +/******************************************************************************* +* File Name: cycfg_pins.c +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t WCO_IN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WCO_OUT_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_RED_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_RED_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SW2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SW2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_BLUE_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_BLUE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SS0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SS0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SPI_CLOCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED9_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED9_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_GREEN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_GREEN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED8_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED8_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CMD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CMD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CLK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CLK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ENABLE_WIFI_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ENABLE_WIFI_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_RTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_CTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_CTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_POWER_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF, + .hsiom = BT_POWER_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = BT_HOST_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_DEVICE_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SCL_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SCL_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SDA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SDA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDIO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINB_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CMOD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; + + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(WCO_IN_PORT, WCO_IN_PIN, &WCO_IN_config); + + Cy_GPIO_Pin_Init(WCO_OUT_PORT, WCO_OUT_PIN, &WCO_OUT_config); + + Cy_GPIO_Pin_Init(LED_RED_PORT, LED_RED_PIN, &LED_RED_config); + + Cy_GPIO_Pin_Init(SW2_PORT, SW2_PIN, &SW2_config); + + Cy_GPIO_Pin_Init(LED_BLUE_PORT, LED_BLUE_PIN, &LED_BLUE_config); + + Cy_GPIO_Pin_Init(QSPI_SS0_PORT, QSPI_SS0_PIN, &QSPI_SS0_config); + + Cy_GPIO_Pin_Init(QSPI_DATA3_PORT, QSPI_DATA3_PIN, &QSPI_DATA3_config); + + Cy_GPIO_Pin_Init(QSPI_DATA2_PORT, QSPI_DATA2_PIN, &QSPI_DATA2_config); + + Cy_GPIO_Pin_Init(QSPI_DATA1_PORT, QSPI_DATA1_PIN, &QSPI_DATA1_config); + + Cy_GPIO_Pin_Init(QSPI_DATA0_PORT, QSPI_DATA0_PIN, &QSPI_DATA0_config); + + Cy_GPIO_Pin_Init(QSPI_SPI_CLOCK_PORT, QSPI_SPI_CLOCK_PIN, &QSPI_SPI_CLOCK_config); + + Cy_GPIO_Pin_Init(LED9_PORT, LED9_PIN, &LED9_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_0_PORT, ioss_0_port_14_pin_0_PIN, &ioss_0_port_14_pin_0_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_1_PORT, ioss_0_port_14_pin_1_PIN, &ioss_0_port_14_pin_1_config); + + + Cy_GPIO_Pin_Init(LED_GREEN_PORT, LED_GREEN_PIN, &LED_GREEN_config); + + Cy_GPIO_Pin_Init(LED8_PORT, LED8_PIN, &LED8_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT0_PORT, SDHC0_DAT0_PIN, &SDHC0_DAT0_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT1_PORT, SDHC0_DAT1_PIN, &SDHC0_DAT1_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT2_PORT, SDHC0_DAT2_PIN, &SDHC0_DAT2_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT3_PORT, SDHC0_DAT3_PIN, &SDHC0_DAT3_config); + + Cy_GPIO_Pin_Init(SDHC0_CMD_PORT, SDHC0_CMD_PIN, &SDHC0_CMD_config); + + Cy_GPIO_Pin_Init(SDHC0_CLK_PORT, SDHC0_CLK_PIN, &SDHC0_CLK_config); + + Cy_GPIO_Pin_Init(ENABLE_WIFI_PORT, ENABLE_WIFI_PIN, &ENABLE_WIFI_config); + + Cy_GPIO_Pin_Init(BT_UART_RX_PORT, BT_UART_RX_PIN, &BT_UART_RX_config); + + Cy_GPIO_Pin_Init(BT_UART_TX_PORT, BT_UART_TX_PIN, &BT_UART_TX_config); + + Cy_GPIO_Pin_Init(BT_UART_RTS_PORT, BT_UART_RTS_PIN, &BT_UART_RTS_config); + + Cy_GPIO_Pin_Init(BT_UART_CTS_PORT, BT_UART_CTS_PIN, &BT_UART_CTS_config); + + Cy_GPIO_Pin_Init(BT_POWER_PORT, BT_POWER_PIN, &BT_POWER_config); + + Cy_GPIO_Pin_Init(BT_HOST_WAKE_PORT, BT_HOST_WAKE_PIN, &BT_HOST_WAKE_config); + + Cy_GPIO_Pin_Init(BT_DEVICE_WAKE_PORT, BT_DEVICE_WAKE_PIN, &BT_DEVICE_WAKE_config); + + Cy_GPIO_Pin_Init(UART_RX_PORT, UART_RX_PIN, &UART_RX_config); + + Cy_GPIO_Pin_Init(UART_TX_PORT, UART_TX_PIN, &UART_TX_config); + + Cy_GPIO_Pin_Init(EZI2C_SCL_PORT, EZI2C_SCL_PIN, &EZI2C_SCL_config); + + Cy_GPIO_Pin_Init(EZI2C_SDA_PORT, EZI2C_SDA_PIN, &EZI2C_SDA_config); + + Cy_GPIO_Pin_Init(SWO_PORT, SWO_PIN, &SWO_config); + + Cy_GPIO_Pin_Init(SWDIO_PORT, SWDIO_PIN, &SWDIO_config); + + Cy_GPIO_Pin_Init(SWDCK_PORT, SWDCK_PIN, &SWDCK_config); + + + + + + + + + + +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000..edfb6d7fcec --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_pins.h @@ -0,0 +1,571 @@ +/******************************************************************************* +* File Name: cycfg_pins.h +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cycfg_notices.h" +#include "cy_gpio.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define WCO_IN_PORT GPIO_PRT0 +#define WCO_IN_PIN 0U +#define WCO_IN_NUM 0U +#define WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM + #define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#define WCO_OUT_PORT GPIO_PRT0 +#define WCO_OUT_PIN 1U +#define WCO_OUT_NUM 1U +#define WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM + #define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_RED_PORT GPIO_PRT0 +#define LED_RED_PIN 3U +#define LED_RED_NUM 3U +#define LED_RED_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_RED_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_3_HSIOM + #define ioss_0_port_0_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_RED_HSIOM ioss_0_port_0_pin_3_HSIOM +#define LED_RED_IRQ ioss_interrupts_gpio_0_IRQn +#define SW2_PORT GPIO_PRT0 +#define SW2_PIN 4U +#define SW2_NUM 4U +#define SW2_DRIVEMODE CY_GPIO_DM_PULLUP +#define SW2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_4_HSIOM + #define ioss_0_port_0_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SW2_HSIOM ioss_0_port_0_pin_4_HSIOM +#define SW2_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_BLUE_PORT GPIO_PRT11 +#define LED_BLUE_PIN 1U +#define LED_BLUE_NUM 1U +#define LED_BLUE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_BLUE_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_1_HSIOM + #define ioss_0_port_11_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_BLUE_HSIOM ioss_0_port_11_pin_1_HSIOM +#define LED_BLUE_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SS0_PORT GPIO_PRT11 +#define QSPI_SS0_PIN 2U +#define QSPI_SS0_NUM 2U +#define QSPI_SS0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SS0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_2_HSIOM + #define ioss_0_port_11_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SS0_HSIOM ioss_0_port_11_pin_2_HSIOM +#define QSPI_SS0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA3_PORT GPIO_PRT11 +#define QSPI_DATA3_PIN 3U +#define QSPI_DATA3_NUM 3U +#define QSPI_DATA3_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_3_HSIOM + #define ioss_0_port_11_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA3_HSIOM ioss_0_port_11_pin_3_HSIOM +#define QSPI_DATA3_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA2_PORT GPIO_PRT11 +#define QSPI_DATA2_PIN 4U +#define QSPI_DATA2_NUM 4U +#define QSPI_DATA2_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_4_HSIOM + #define ioss_0_port_11_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA2_HSIOM ioss_0_port_11_pin_4_HSIOM +#define QSPI_DATA2_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA1_PORT GPIO_PRT11 +#define QSPI_DATA1_PIN 5U +#define QSPI_DATA1_NUM 5U +#define QSPI_DATA1_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_5_HSIOM + #define ioss_0_port_11_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA1_HSIOM ioss_0_port_11_pin_5_HSIOM +#define QSPI_DATA1_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA0_PORT GPIO_PRT11 +#define QSPI_DATA0_PIN 6U +#define QSPI_DATA0_NUM 6U +#define QSPI_DATA0_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_6_HSIOM + #define ioss_0_port_11_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA0_HSIOM ioss_0_port_11_pin_6_HSIOM +#define QSPI_DATA0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SPI_CLOCK_PORT GPIO_PRT11 +#define QSPI_SPI_CLOCK_PIN 7U +#define QSPI_SPI_CLOCK_NUM 7U +#define QSPI_SPI_CLOCK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SPI_CLOCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_7_HSIOM + #define ioss_0_port_11_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SPI_CLOCK_HSIOM ioss_0_port_11_pin_7_HSIOM +#define QSPI_SPI_CLOCK_IRQ ioss_interrupts_gpio_11_IRQn +#define LED9_PORT GPIO_PRT13 +#define LED9_PIN 7U +#define LED9_NUM 7U +#define LED9_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED9_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_7_HSIOM + #define ioss_0_port_13_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define LED9_HSIOM ioss_0_port_13_pin_7_HSIOM +#define LED9_IRQ ioss_interrupts_gpio_13_IRQn +#define ioss_0_port_14_pin_0_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_0_PIN 0U +#define ioss_0_port_14_pin_0_NUM 0U +#define ioss_0_port_14_pin_0_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_0_HSIOM + #define ioss_0_port_14_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_0_IRQ ioss_interrupts_gpio_14_IRQn +#define ioss_0_port_14_pin_1_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_1_PIN 1U +#define ioss_0_port_14_pin_1_NUM 1U +#define ioss_0_port_14_pin_1_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_1_HSIOM + #define ioss_0_port_14_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_1_IRQ ioss_interrupts_gpio_14_IRQn +#define CSD_TX_PORT GPIO_PRT1 +#define CSD_TX_PIN 0U +#define CSD_TX_NUM 0U +#define CSD_TX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_0_HSIOM + #define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_TX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CSD_TX_IRQ ioss_interrupts_gpio_1_IRQn +#define LED_GREEN_PORT GPIO_PRT1 +#define LED_GREEN_PIN 1U +#define LED_GREEN_NUM 1U +#define LED_GREEN_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_GREEN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_1_HSIOM + #define ioss_0_port_1_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_GREEN_HSIOM ioss_0_port_1_pin_1_HSIOM +#define LED_GREEN_IRQ ioss_interrupts_gpio_1_IRQn +#define LED8_PORT GPIO_PRT1 +#define LED8_PIN 5U +#define LED8_NUM 5U +#define LED8_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED8_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_5_HSIOM + #define ioss_0_port_1_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define LED8_HSIOM ioss_0_port_1_pin_5_HSIOM +#define LED8_IRQ ioss_interrupts_gpio_1_IRQn +#define SDHC0_DAT0_PORT GPIO_PRT2 +#define SDHC0_DAT0_PIN 0U +#define SDHC0_DAT0_NUM 0U +#define SDHC0_DAT0_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_0_HSIOM + #define ioss_0_port_2_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT0_HSIOM ioss_0_port_2_pin_0_HSIOM +#define SDHC0_DAT0_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT1_PORT GPIO_PRT2 +#define SDHC0_DAT1_PIN 1U +#define SDHC0_DAT1_NUM 1U +#define SDHC0_DAT1_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_1_HSIOM + #define ioss_0_port_2_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT1_HSIOM ioss_0_port_2_pin_1_HSIOM +#define SDHC0_DAT1_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT2_PORT GPIO_PRT2 +#define SDHC0_DAT2_PIN 2U +#define SDHC0_DAT2_NUM 2U +#define SDHC0_DAT2_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_2_HSIOM + #define ioss_0_port_2_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT2_HSIOM ioss_0_port_2_pin_2_HSIOM +#define SDHC0_DAT2_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT3_PORT GPIO_PRT2 +#define SDHC0_DAT3_PIN 3U +#define SDHC0_DAT3_NUM 3U +#define SDHC0_DAT3_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_3_HSIOM + #define ioss_0_port_2_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT3_HSIOM ioss_0_port_2_pin_3_HSIOM +#define SDHC0_DAT3_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CMD_PORT GPIO_PRT2 +#define SDHC0_CMD_PIN 4U +#define SDHC0_CMD_NUM 4U +#define SDHC0_CMD_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CMD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_4_HSIOM + #define ioss_0_port_2_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CMD_HSIOM ioss_0_port_2_pin_4_HSIOM +#define SDHC0_CMD_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CLK_PORT GPIO_PRT2 +#define SDHC0_CLK_PIN 5U +#define SDHC0_CLK_NUM 5U +#define SDHC0_CLK_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CLK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_5_HSIOM + #define ioss_0_port_2_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CLK_HSIOM ioss_0_port_2_pin_5_HSIOM +#define SDHC0_CLK_IRQ ioss_interrupts_gpio_2_IRQn +#define ENABLE_WIFI_PORT GPIO_PRT2 +#define ENABLE_WIFI_PIN 6U +#define ENABLE_WIFI_NUM 6U +#define ENABLE_WIFI_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ENABLE_WIFI_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_2_pin_6_HSIOM + #define ioss_0_port_2_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define ENABLE_WIFI_HSIOM ioss_0_port_2_pin_6_HSIOM +#define ENABLE_WIFI_IRQ ioss_interrupts_gpio_2_IRQn +#define BT_UART_RX_PORT GPIO_PRT3 +#define BT_UART_RX_PIN 0U +#define BT_UART_RX_NUM 0U +#define BT_UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_0_HSIOM + #define ioss_0_port_3_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RX_HSIOM ioss_0_port_3_pin_0_HSIOM +#define BT_UART_RX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_TX_PORT GPIO_PRT3 +#define BT_UART_TX_PIN 1U +#define BT_UART_TX_NUM 1U +#define BT_UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_1_HSIOM + #define ioss_0_port_3_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_TX_HSIOM ioss_0_port_3_pin_1_HSIOM +#define BT_UART_TX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_RTS_PORT GPIO_PRT3 +#define BT_UART_RTS_PIN 2U +#define BT_UART_RTS_NUM 2U +#define BT_UART_RTS_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_RTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_2_HSIOM + #define ioss_0_port_3_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RTS_HSIOM ioss_0_port_3_pin_2_HSIOM +#define BT_UART_RTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_CTS_PORT GPIO_PRT3 +#define BT_UART_CTS_PIN 3U +#define BT_UART_CTS_NUM 3U +#define BT_UART_CTS_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_CTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_3_HSIOM + #define ioss_0_port_3_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_CTS_HSIOM ioss_0_port_3_pin_3_HSIOM +#define BT_UART_CTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_POWER_PORT GPIO_PRT3 +#define BT_POWER_PIN 4U +#define BT_POWER_NUM 4U +#define BT_POWER_DRIVEMODE CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF +#define BT_POWER_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_4_HSIOM + #define ioss_0_port_3_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_POWER_HSIOM ioss_0_port_3_pin_4_HSIOM +#define BT_POWER_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_HOST_WAKE_PORT GPIO_PRT3 +#define BT_HOST_WAKE_PIN 5U +#define BT_HOST_WAKE_NUM 5U +#define BT_HOST_WAKE_DRIVEMODE CY_GPIO_DM_ANALOG +#define BT_HOST_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_3_pin_5_HSIOM + #define ioss_0_port_3_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_HOST_WAKE_HSIOM ioss_0_port_3_pin_5_HSIOM +#define BT_HOST_WAKE_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_DEVICE_WAKE_PORT GPIO_PRT4 +#define BT_DEVICE_WAKE_PIN 0U +#define BT_DEVICE_WAKE_NUM 0U +#define BT_DEVICE_WAKE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_DEVICE_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_4_pin_0_HSIOM + #define ioss_0_port_4_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_DEVICE_WAKE_HSIOM ioss_0_port_4_pin_0_HSIOM +#define BT_DEVICE_WAKE_IRQ ioss_interrupts_gpio_4_IRQn +#define UART_RX_PORT GPIO_PRT5 +#define UART_RX_PIN 0U +#define UART_RX_NUM 0U +#define UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_0_HSIOM + #define ioss_0_port_5_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_RX_HSIOM ioss_0_port_5_pin_0_HSIOM +#define UART_RX_IRQ ioss_interrupts_gpio_5_IRQn +#define UART_TX_PORT GPIO_PRT5 +#define UART_TX_PIN 1U +#define UART_TX_NUM 1U +#define UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_1_HSIOM + #define ioss_0_port_5_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_TX_HSIOM ioss_0_port_5_pin_1_HSIOM +#define UART_TX_IRQ ioss_interrupts_gpio_5_IRQn +#define EZI2C_SCL_PORT GPIO_PRT6 +#define EZI2C_SCL_PIN 0U +#define EZI2C_SCL_NUM 0U +#define EZI2C_SCL_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SCL_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_0_HSIOM + #define ioss_0_port_6_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SCL_HSIOM ioss_0_port_6_pin_0_HSIOM +#define EZI2C_SCL_IRQ ioss_interrupts_gpio_6_IRQn +#define EZI2C_SDA_PORT GPIO_PRT6 +#define EZI2C_SDA_PIN 1U +#define EZI2C_SDA_NUM 1U +#define EZI2C_SDA_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SDA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_1_HSIOM + #define ioss_0_port_6_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SDA_HSIOM ioss_0_port_6_pin_1_HSIOM +#define EZI2C_SDA_IRQ ioss_interrupts_gpio_6_IRQn +#define SWO_PORT GPIO_PRT6 +#define SWO_PIN 4U +#define SWO_NUM 4U +#define SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM + #define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define SWO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDIO_PORT GPIO_PRT6 +#define SWDIO_PIN 6U +#define SWDIO_NUM 6U +#define SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM + #define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDCK_PORT GPIO_PRT6 +#define SWDCK_PIN 7U +#define SWDCK_NUM 7U +#define SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM + #define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#define CINA_PORT GPIO_PRT7 +#define CINA_PIN 1U +#define CINA_NUM 1U +#define CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM + #define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CINA_IRQ ioss_interrupts_gpio_7_IRQn +#define CINB_PORT GPIO_PRT7 +#define CINB_PIN 2U +#define CINB_NUM 2U +#define CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM + #define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CINB_IRQ ioss_interrupts_gpio_7_IRQn +#define CMOD_PORT GPIO_PRT7 +#define CMOD_PIN 7U +#define CMOD_NUM 7U +#define CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM + #define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#define CSD_BTN0_PORT GPIO_PRT8 +#define CSD_BTN0_PIN 1U +#define CSD_BTN0_NUM 1U +#define CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_1_HSIOM + #define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_BTN1_PORT GPIO_PRT8 +#define CSD_BTN1_PIN 2U +#define CSD_BTN1_NUM 2U +#define CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_2_HSIOM + #define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD0_PORT GPIO_PRT8 +#define CSD_SLD0_PIN 3U +#define CSD_SLD0_NUM 3U +#define CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_3_HSIOM + #define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD1_PORT GPIO_PRT8 +#define CSD_SLD1_PIN 4U +#define CSD_SLD1_NUM 4U +#define CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_4_HSIOM + #define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD2_PORT GPIO_PRT8 +#define CSD_SLD2_PIN 5U +#define CSD_SLD2_NUM 5U +#define CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_5_HSIOM + #define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD3_PORT GPIO_PRT8 +#define CSD_SLD3_PIN 6U +#define CSD_SLD3_NUM 6U +#define CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_6_HSIOM + #define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD4_PORT GPIO_PRT8 +#define CSD_SLD4_PIN 7U +#define CSD_SLD4_NUM 7U +#define CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_7_HSIOM + #define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn + +extern const cy_stc_gpio_pin_config_t WCO_IN_config; +extern const cy_stc_gpio_pin_config_t WCO_OUT_config; +extern const cy_stc_gpio_pin_config_t LED_RED_config; +extern const cy_stc_gpio_pin_config_t SW2_config; +extern const cy_stc_gpio_pin_config_t LED_BLUE_config; +extern const cy_stc_gpio_pin_config_t QSPI_SS0_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA3_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA2_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA1_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA0_config; +extern const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config; +extern const cy_stc_gpio_pin_config_t LED9_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config; +extern const cy_stc_gpio_pin_config_t CSD_TX_config; +extern const cy_stc_gpio_pin_config_t LED_GREEN_config; +extern const cy_stc_gpio_pin_config_t LED8_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT0_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT1_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT2_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT3_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CMD_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CLK_config; +extern const cy_stc_gpio_pin_config_t ENABLE_WIFI_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_TX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RTS_config; +extern const cy_stc_gpio_pin_config_t BT_UART_CTS_config; +extern const cy_stc_gpio_pin_config_t BT_POWER_config; +extern const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config; +extern const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config; +extern const cy_stc_gpio_pin_config_t UART_RX_config; +extern const cy_stc_gpio_pin_config_t UART_TX_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SCL_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SDA_config; +extern const cy_stc_gpio_pin_config_t SWO_config; +extern const cy_stc_gpio_pin_config_t SWDIO_config; +extern const cy_stc_gpio_pin_config_t SWDCK_config; +extern const cy_stc_gpio_pin_config_t CINA_config; +extern const cy_stc_gpio_pin_config_t CINB_config; +extern const cy_stc_gpio_pin_config_t CMOD_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN0_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD0_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD2_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD3_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD4_config; + +void init_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PINS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.c new file mode 100644 index 00000000000..02ba12d7e98 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.c @@ -0,0 +1,567 @@ +/******************************************************************************* +* File Name: cycfg_platform.c +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_platform.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_PLL1_AVAILABLE 1 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF1_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_CLKHF2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 50UL +#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF3_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_CLKHF4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF4_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_PLL0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_CLKTIMER_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBAC_SUPPLY CY_CFG_PWR_VBAC_SUPPLY_VDD +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_1_1V +#define CY_CFG_PWR_USING_ULP 0 + +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = +{ + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 4U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; +static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig = +{ + .feedbackDiv = 30, + .referenceDiv = 1, + .outputDiv = 5, + .lfMode = false, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO, +}; + +__WEAK void cycfg_ClockStartupError(uint32_t error) +{ + (void)error; /* Suppress the compiler warning */ + while(1); +} +__STATIC_INLINE void Cy_SysClk_ClkAltSysTickInit() +{ + Cy_SysTick_SetClockSource(CY_SYSTICK_CLOCK_SOURCE_CLK_LF); +} +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_ClkHf1Init() +{ + Cy_SysClk_ClkHfSetSource(1U, CY_CFG_SYSCLK_CLKHF1_CLKPATH); + Cy_SysClk_ClkHfSetDivider(1U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(1U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf2Init() +{ + Cy_SysClk_ClkHfSetSource(2U, CY_CFG_SYSCLK_CLKHF2_CLKPATH); + Cy_SysClk_ClkHfSetDivider(2U, CY_SYSCLK_CLKHF_DIVIDE_BY_2); + Cy_SysClk_ClkHfEnable(2U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf3Init() +{ + Cy_SysClk_ClkHfSetSource(3U, CY_CFG_SYSCLK_CLKHF3_CLKPATH); + Cy_SysClk_ClkHfSetDivider(3U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(3U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf4Init() +{ + Cy_SysClk_ClkHfSetSource(4U, CY_CFG_SYSCLK_CLKHF4_CLKPATH); + Cy_SysClk_ClkHfSetDivider(4U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(4U); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_Pll0Init() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllManualConfigure(1U, &srss_0_clock_0_pll_0_pllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllEnable(1U, 10000u)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_ClkTimerInit() +{ + Cy_SysClk_ClkTimerDisable(); + Cy_SysClk_ClkTimerSetSource(CY_SYSCLK_CLKTIMER_IN_IMO); + Cy_SysClk_ClkTimerSetDivider(0U); + Cy_SysClk_ClkTimerEnable(); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} + + +void init_cycfg_platform(void) +{ + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); + #if (CY_CFG_PWR_VBAC_SUPPLY == CY_CFG_PWR_VBAC_SUPPLY_VDD) + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */) + { + Cy_SysLib_ResetBackupDomain(); + Cy_SysClk_IloDisable(); + Cy_SysClk_IloInit(); + } + #endif + #ifdef CY_CFG_PWR_ENABLED + /* Configure power mode */ + #if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_CFG_PWR_LDO_VOLTAGE); + #else + Cy_SysPm_BuckEnable(CY_CFG_PWR_BUCK_VOLTAGE); + #endif + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); + #if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); + #else + Cy_SysPm_PmicDisableOutput(); + #endif + #endif + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH1); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_FllDisable(); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); + #ifdef CY_IP_MXBLESS + (void)Cy_BLE_EcoReset(); + #endif + + #ifdef CY_CFG_SYSCLK_PLL1_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH2); + #endif + + #ifdef CY_CFG_SYSCLK_PLL2_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH3); + #endif + + #ifdef CY_CFG_SYSCLK_PLL3_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH4); + #endif + + #ifdef CY_CFG_SYSCLK_PLL4_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH5); + #endif + + #ifdef CY_CFG_SYSCLK_PLL5_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH6); + #endif + + #ifdef CY_CFG_SYSCLK_PLL6_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH7); + #endif + + #ifdef CY_CFG_SYSCLK_PLL7_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH8); + #endif + + #ifdef CY_CFG_SYSCLK_PLL8_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH9); + #endif + + #ifdef CY_CFG_SYSCLK_PLL9_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH10); + #endif + + #ifdef CY_CFG_SYSCLK_PLL10_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH11); + #endif + + #ifdef CY_CFG_SYSCLK_PLL11_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH12); + #endif + + #ifdef CY_CFG_SYSCLK_PLL12_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH13); + #endif + + #ifdef CY_CFG_SYSCLK_PLL13_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH14); + #endif + + #ifdef CY_CFG_SYSCLK_PLL14_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH15); + #endif + + /* Enable all source clocks */ + #ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); + #endif + + #ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + Cy_SysClk_AltHfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); + #endif + + /* Configure CPU clock dividers */ + #ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); + #endif + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); + #else + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure Path Clocks */ + #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); + #endif + + /* Configure and enable FLL */ + #ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); + #endif + + Cy_SysClk_ClkHf0Init(); + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure and enable PLLs */ + #ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); + #endif + + /* Configure HF clocks */ + #ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); + #endif + + /* Configure miscellaneous clocks */ + #ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); + #endif + + /* Configure default enabled clocks */ + #ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); + #else + Cy_SysClk_IloDisable(); + #endif + + #ifndef CY_CFG_SYSCLK_IMO_ENABLED + #error the IMO must be enabled for proper chip operation + #endif + + /* Set accurate flash wait states */ + #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); + #endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.h new file mode 100644 index 00000000000..76dfbef7bc4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_platform.h @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_platform.h +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PLATFORM_H) +#define CYCFG_PLATFORM_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_systick.h" +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +void init_cycfg_platform(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PLATFORM_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000..ae79008829d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.c @@ -0,0 +1,39 @@ +/******************************************************************************* +* File Name: cycfg_routing.c +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_routing.h" + +#include "cy_device_headers.h" + +void init_cycfg_routing(void) +{ + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000..76a886ce97c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/GeneratedSource/cycfg_routing.h @@ -0,0 +1,76 @@ +/******************************************************************************* +* File Name: cycfg_routing.h +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +void init_cycfg_routing(void); +#define init_cycfg_connectivity() init_cycfg_routing() +#define ioss_0_port_11_pin_1_HSIOM P11_1_TCPWM1_LINE_COMPL1 +#define ioss_0_port_11_pin_2_HSIOM P11_2_SMIF_SPI_SELECT0 +#define ioss_0_port_11_pin_3_HSIOM P11_3_SMIF_SPI_DATA3 +#define ioss_0_port_11_pin_4_HSIOM P11_4_SMIF_SPI_DATA2 +#define ioss_0_port_11_pin_5_HSIOM P11_5_SMIF_SPI_DATA1 +#define ioss_0_port_11_pin_6_HSIOM P11_6_SMIF_SPI_DATA0 +#define ioss_0_port_11_pin_7_HSIOM P11_7_SMIF_SPI_CLK +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_2_pin_0_HSIOM P2_0_SDHC0_CARD_DAT_3TO00 +#define ioss_0_port_2_pin_1_HSIOM P2_1_SDHC0_CARD_DAT_3TO01 +#define ioss_0_port_2_pin_2_HSIOM P2_2_SDHC0_CARD_DAT_3TO02 +#define ioss_0_port_2_pin_3_HSIOM P2_3_SDHC0_CARD_DAT_3TO03 +#define ioss_0_port_2_pin_4_HSIOM P2_4_SDHC0_CARD_CMD +#define ioss_0_port_2_pin_5_HSIOM P2_5_SDHC0_CLK_CARD +#define ioss_0_port_3_pin_0_HSIOM P3_0_SCB2_UART_RX +#define ioss_0_port_3_pin_1_HSIOM P3_1_SCB2_UART_TX +#define ioss_0_port_3_pin_2_HSIOM P3_2_SCB2_UART_RTS +#define ioss_0_port_3_pin_3_HSIOM P3_3_SCB2_UART_CTS +#define ioss_0_port_5_pin_0_HSIOM P5_0_SCB5_UART_RX +#define ioss_0_port_5_pin_1_HSIOM P5_1_SCB5_UART_TX +#define ioss_0_port_6_pin_0_HSIOM P6_0_SCB3_I2C_SCL +#define ioss_0_port_6_pin_1_HSIOM P6_1_SCB3_I2C_SDA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXB + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_ROUTING_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralNames.h new file mode 100644 index 00000000000..31b70bad7b9 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralNames.h @@ -0,0 +1,119 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)SCB0_BASE, + UART_1 = (int)SCB1_BASE, + UART_2 = (int)SCB2_BASE, + UART_3 = (int)SCB3_BASE, + UART_4 = (int)SCB4_BASE, + UART_5 = (int)SCB5_BASE, + UART_6 = (int)SCB6_BASE, + UART_7 = (int)SCB7_BASE, + /* SCB_8 does not support UART mode */ + UART_9 = (int)SCB9_BASE, + UART_10 = (int)SCB10_BASE, + UART_11 = (int)SCB11_BASE, + UART_12 = (int)SCB12_BASE, +} UARTName; + + +typedef enum { + SPI_0 = (int)SCB0_BASE, + SPI_1 = (int)SCB1_BASE, + SPI_2 = (int)SCB2_BASE, + SPI_3 = (int)SCB3_BASE, + SPI_4 = (int)SCB4_BASE, + SPI_5 = (int)SCB5_BASE, + SPI_6 = (int)SCB6_BASE, + SPI_7 = (int)SCB7_BASE, + SPI_8 = (int)SCB8_BASE, + /* SCB_9 - SCB_12 does not support UART mode */ +} SPIName; + +typedef enum { + I2C_0 = (int)SCB0_BASE, + I2C_1 = (int)SCB1_BASE, + I2C_2 = (int)SCB2_BASE, + I2C_3 = (int)SCB3_BASE, + I2C_4 = (int)SCB4_BASE, + I2C_5 = (int)SCB5_BASE, + I2C_6 = (int)SCB6_BASE, + I2C_7 = (int)SCB7_BASE, + I2C_8 = (int)SCB8_BASE, + I2C_9 = (int)SCB9_BASE, + I2C_10 = (int)SCB10_BASE, + I2C_11 = (int)SCB11_BASE, + I2C_12 = (int)SCB12_BASE, +} I2CName; + +typedef enum { + PWM_32b_0 = TCPWM0_BASE, + PWM_32b_1, + PWM_32b_2, + PWM_32b_3, + PWM_32b_4, + PWM_32b_5, + PWM_32b_6, + PWM_32b_7, + PWM_16b_0 = TCPWM1_BASE, + PWM_16b_1, + PWM_16b_2, + PWM_16b_3, + PWM_16b_4, + PWM_16b_5, + PWM_16b_6, + PWM_16b_7, + PWM_16b_8, + PWM_16b_9, + PWM_16b_10, + PWM_16b_11, + PWM_16b_12, + PWM_16b_13, + PWM_16b_14, + PWM_16b_15, + PWM_16b_16, + PWM_16b_17, + PWM_16b_18, + PWM_16b_19, + PWM_16b_20, + PWM_16b_21, + PWM_16b_22, + PWM_16b_23, +} PWMName; + +typedef enum { + ADC_0 = (int)SAR_BASE, +} ADCName; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralPins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralPins.c new file mode 100644 index 00000000000..ce8e855e0d2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PeripheralPins.c @@ -0,0 +1,465 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PeripheralNames.h" +#include "PeripheralPins.h" +#include "pinmap.h" + +#if DEVICE_SERIAL +//*** SERIAL *** +const PinMap PinMap_UART_RX[] = { + {P0_2, UART_0, CY_PIN_IN_FUNCTION( P0_2_SCB0_UART_RX, PCLK_SCB0_CLOCK)}, + {P1_0, UART_7, CY_PIN_IN_FUNCTION( P1_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P2_0, UART_1, CY_PIN_IN_FUNCTION( P2_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P2_4, UART_9, CY_PIN_IN_FUNCTION( P2_4_SCB9_UART_RX, PCLK_SCB9_CLOCK)}, + {P3_0, UART_2, CY_PIN_IN_FUNCTION( P3_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P4_0, UART_7, CY_PIN_IN_FUNCTION( P4_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P5_0, UART_5, CY_PIN_IN_FUNCTION( P5_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P5_4, UART_10, CY_PIN_IN_FUNCTION( P5_4_SCB10_UART_RX, PCLK_SCB10_CLOCK)}, + {P6_0, UART_3, CY_PIN_IN_FUNCTION( P6_0_SCB3_UART_RX, PCLK_SCB3_CLOCK)}, + {P6_4, UART_6, CY_PIN_IN_FUNCTION( P6_4_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P7_0, UART_4, CY_PIN_IN_FUNCTION( P7_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_0, UART_4, CY_PIN_IN_FUNCTION( P8_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_4, UART_11, CY_PIN_IN_FUNCTION( P8_4_SCB11_UART_RX, PCLK_SCB11_CLOCK)}, + {P9_0, UART_2, CY_PIN_IN_FUNCTION( P9_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P10_0, UART_1, CY_PIN_IN_FUNCTION( P10_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P11_0, UART_5, CY_PIN_IN_FUNCTION( P11_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P12_0, UART_6, CY_PIN_IN_FUNCTION( P12_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_0, UART_6, CY_PIN_IN_FUNCTION( P13_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_4, UART_12, CY_PIN_IN_FUNCTION( P13_4_SCB12_UART_RX, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_TX[] = { + {P0_3, UART_0, CY_PIN_OUT_FUNCTION( P0_3_SCB0_UART_TX, PCLK_SCB0_CLOCK)}, + {P1_1, UART_7, CY_PIN_OUT_FUNCTION( P1_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P2_1, UART_1, CY_PIN_OUT_FUNCTION( P2_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P2_5, UART_9, CY_PIN_OUT_FUNCTION( P2_5_SCB9_UART_TX, PCLK_SCB9_CLOCK)}, + {P3_1, UART_2, CY_PIN_OUT_FUNCTION( P3_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P4_1, UART_7, CY_PIN_OUT_FUNCTION( P4_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P5_1, UART_5, CY_PIN_OUT_FUNCTION( P5_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P5_5, UART_10, CY_PIN_OUT_FUNCTION( P5_5_SCB10_UART_TX, PCLK_SCB10_CLOCK)}, + {P6_1, UART_3, CY_PIN_OUT_FUNCTION( P6_1_SCB3_UART_TX, PCLK_SCB3_CLOCK)}, + {P6_5, UART_6, CY_PIN_OUT_FUNCTION( P6_5_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P7_1, UART_4, CY_PIN_OUT_FUNCTION( P7_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_1, UART_4, CY_PIN_OUT_FUNCTION( P8_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_5, UART_11, CY_PIN_OUT_FUNCTION( P8_5_SCB11_UART_TX, PCLK_SCB11_CLOCK)}, + {P9_1, UART_2, CY_PIN_OUT_FUNCTION( P9_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P10_1, UART_1, CY_PIN_OUT_FUNCTION( P10_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P11_1, UART_5, CY_PIN_OUT_FUNCTION( P11_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P12_1, UART_6, CY_PIN_OUT_FUNCTION( P12_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_1, UART_6, CY_PIN_OUT_FUNCTION( P13_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_5, UART_12, CY_PIN_OUT_FUNCTION( P13_5_SCB12_UART_TX, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_RTS[] = { + {P0_4, UART_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_UART_RTS, PCLK_SCB0_CLOCK)}, + {P1_2, UART_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_UART_RTS, PCLK_SCB7_CLOCK)}, + {P2_2, UART_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P2_6, UART_9, CY_PIN_OUT_FUNCTION( P2_6_SCB9_UART_RTS, PCLK_SCB9_CLOCK)}, + {P3_2, UART_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P5_2, UART_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P5_6, UART_10, CY_PIN_OUT_FUNCTION( P5_6_SCB10_UART_RTS, PCLK_SCB10_CLOCK)}, + {P6_2, UART_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_UART_RTS, PCLK_SCB3_CLOCK)}, + {P6_6, UART_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P7_2, UART_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_2, UART_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_6, UART_11, CY_PIN_OUT_FUNCTION( P8_6_SCB11_UART_RTS, PCLK_SCB11_CLOCK)}, + {P9_2, UART_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P10_2, UART_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P11_2, UART_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P12_2, UART_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P13_2, UART_6, CY_PIN_OUT_FUNCTION( P13_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P13_6, UART_12, CY_PIN_OUT_FUNCTION( P13_6_SCB12_UART_RTS, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_CTS[] = { + {P0_5, UART_0, CY_PIN_IN_FUNCTION( P0_5_SCB0_UART_CTS, PCLK_SCB0_CLOCK)}, + {P1_3, UART_7, CY_PIN_IN_FUNCTION( P1_3_SCB7_UART_CTS, PCLK_SCB7_CLOCK)}, + {P2_3, UART_1, CY_PIN_IN_FUNCTION( P2_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P2_7, UART_9, CY_PIN_IN_FUNCTION( P2_7_SCB9_UART_CTS, PCLK_SCB9_CLOCK)}, + {P3_3, UART_2, CY_PIN_IN_FUNCTION( P3_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P5_3, UART_5, CY_PIN_IN_FUNCTION( P5_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P5_7, UART_10, CY_PIN_IN_FUNCTION( P5_7_SCB10_UART_CTS, PCLK_SCB10_CLOCK)}, + {P6_3, UART_3, CY_PIN_IN_FUNCTION( P6_3_SCB3_UART_CTS, PCLK_SCB3_CLOCK)}, + {P6_7, UART_6, CY_PIN_IN_FUNCTION( P6_7_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P7_3, UART_4, CY_PIN_IN_FUNCTION( P7_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_3, UART_4, CY_PIN_IN_FUNCTION( P8_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_7, UART_11, CY_PIN_IN_FUNCTION( P8_7_SCB11_UART_CTS, PCLK_SCB11_CLOCK)}, + {P9_3, UART_2, CY_PIN_IN_FUNCTION( P9_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P10_3, UART_1, CY_PIN_IN_FUNCTION( P10_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P11_3, UART_5, CY_PIN_IN_FUNCTION( P11_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P12_3, UART_6, CY_PIN_IN_FUNCTION( P12_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P13_3, UART_6, CY_PIN_IN_FUNCTION( P13_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P13_7, UART_12, CY_PIN_IN_FUNCTION( P13_7_SCB12_UART_CTS, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SERIAL + + +#if DEVICE_I2C +//*** I2C *** +const PinMap PinMap_I2C_SCL[] = { + {P0_2, I2C_0, CY_PIN_OD_FUNCTION( P0_2_SCB0_I2C_SCL, PCLK_SCB0_CLOCK)}, + {P1_0, I2C_7, CY_PIN_OD_FUNCTION( P1_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P2_0, I2C_1, CY_PIN_OD_FUNCTION( P2_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P2_4, I2C_9, CY_PIN_OD_FUNCTION( P2_4_SCB9_I2C_SCL, PCLK_SCB9_CLOCK)}, + {P3_0, I2C_2, CY_PIN_OD_FUNCTION( P3_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P4_0, I2C_7, CY_PIN_OD_FUNCTION( P4_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P5_0, I2C_5, CY_PIN_OD_FUNCTION( P5_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P5_4, I2C_10, CY_PIN_OD_FUNCTION( P5_4_SCB10_I2C_SCL, PCLK_SCB10_CLOCK)}, + {P6_0, I2C_3, CY_PIN_OD_FUNCTION( P6_0_SCB3_I2C_SCL, PCLK_SCB3_CLOCK)}, + {P6_4, I2C_6, CY_PIN_OD_FUNCTION( P6_4_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P7_0, I2C_4, CY_PIN_OD_FUNCTION( P7_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_0, I2C_4, CY_PIN_OD_FUNCTION( P8_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_4, I2C_11, CY_PIN_OD_FUNCTION( P8_4_SCB11_I2C_SCL, PCLK_SCB11_CLOCK)}, + {P9_0, I2C_2, CY_PIN_OD_FUNCTION( P9_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P10_0, I2C_1, CY_PIN_OD_FUNCTION( P10_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P11_0, I2C_5, CY_PIN_OD_FUNCTION( P11_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P12_0, I2C_6, CY_PIN_OD_FUNCTION( P12_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_0, I2C_6, CY_PIN_OD_FUNCTION( P13_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_4, I2C_12, CY_PIN_OD_FUNCTION( P13_4_SCB12_I2C_SCL, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_I2C_SDA[] = { + {P0_3, I2C_0, CY_PIN_OD_FUNCTION( P0_3_SCB0_I2C_SDA, PCLK_SCB0_CLOCK)}, + {P1_1, I2C_7, CY_PIN_OD_FUNCTION( P1_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P2_1, I2C_1, CY_PIN_OD_FUNCTION( P2_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P2_5, I2C_9, CY_PIN_OD_FUNCTION( P2_5_SCB9_I2C_SDA, PCLK_SCB9_CLOCK)}, + {P3_1, I2C_2, CY_PIN_OD_FUNCTION( P3_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P4_1, I2C_7, CY_PIN_OD_FUNCTION( P4_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P5_1, I2C_5, CY_PIN_OD_FUNCTION( P5_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P5_5, I2C_10, CY_PIN_OD_FUNCTION( P5_5_SCB10_I2C_SDA, PCLK_SCB10_CLOCK)}, + {P6_1, I2C_3, CY_PIN_OD_FUNCTION( P6_1_SCB3_I2C_SDA, PCLK_SCB3_CLOCK)}, + {P6_5, I2C_6, CY_PIN_OD_FUNCTION( P6_5_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P7_1, I2C_4, CY_PIN_OD_FUNCTION( P7_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_1, I2C_4, CY_PIN_OD_FUNCTION( P8_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_5, I2C_11, CY_PIN_OD_FUNCTION( P8_5_SCB11_I2C_SDA, PCLK_SCB11_CLOCK)}, + {P9_1, I2C_2, CY_PIN_OD_FUNCTION( P9_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P10_1, I2C_1, CY_PIN_OD_FUNCTION( P10_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P11_1, I2C_5, CY_PIN_OD_FUNCTION( P11_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P12_1, I2C_6, CY_PIN_OD_FUNCTION( P12_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_1, I2C_6, CY_PIN_OD_FUNCTION( P13_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_5, I2C_12, CY_PIN_OD_FUNCTION( P13_5_SCB12_I2C_SDA, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_I2C + +#if DEVICE_SPI +//*** SPI *** +const PinMap PinMap_SPI_MOSI[] = { + {P0_2, SPI_0, CY_PIN_OUT_FUNCTION( P0_2_SCB0_SPI_MOSI, PCLK_SCB0_CLOCK)}, + {P1_0, SPI_7, CY_PIN_OUT_FUNCTION( P1_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P2_0, SPI_1, CY_PIN_OUT_FUNCTION( P2_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P3_0, SPI_2, CY_PIN_OUT_FUNCTION( P3_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P4_0, SPI_7, CY_PIN_OUT_FUNCTION( P4_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P5_0, SPI_5, CY_PIN_OUT_FUNCTION( P5_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P6_0, SPI_3, CY_PIN_OUT_FUNCTION( P6_0_SCB3_SPI_MOSI, PCLK_SCB3_CLOCK)}, + {P6_4, SPI_6, CY_PIN_OUT_FUNCTION( P6_4_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P7_0, SPI_4, CY_PIN_OUT_FUNCTION( P7_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P8_0, SPI_4, CY_PIN_OUT_FUNCTION( P8_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P9_0, SPI_2, CY_PIN_OUT_FUNCTION( P9_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P10_0, SPI_1, CY_PIN_OUT_FUNCTION( P10_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P11_0, SPI_5, CY_PIN_OUT_FUNCTION( P11_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P12_0, SPI_6, CY_PIN_OUT_FUNCTION( P12_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P13_0, SPI_6, CY_PIN_OUT_FUNCTION( P13_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_MISO[] = { + {P0_3, SPI_0, CY_PIN_IN_FUNCTION( P0_3_SCB0_SPI_MISO, PCLK_SCB0_CLOCK)}, + {P1_1, SPI_7, CY_PIN_IN_FUNCTION( P1_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P2_1, SPI_1, CY_PIN_IN_FUNCTION( P2_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P3_1, SPI_2, CY_PIN_IN_FUNCTION( P3_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P4_1, SPI_7, CY_PIN_IN_FUNCTION( P4_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P5_1, SPI_5, CY_PIN_IN_FUNCTION( P5_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P6_1, SPI_3, CY_PIN_IN_FUNCTION( P6_1_SCB3_SPI_MISO, PCLK_SCB3_CLOCK)}, + {P6_5, SPI_6, CY_PIN_IN_FUNCTION( P6_5_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P7_1, SPI_4, CY_PIN_IN_FUNCTION( P7_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P8_1, SPI_4, CY_PIN_IN_FUNCTION( P8_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P9_1, SPI_2, CY_PIN_IN_FUNCTION( P9_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P10_1, SPI_1, CY_PIN_IN_FUNCTION( P10_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P11_1, SPI_5, CY_PIN_IN_FUNCTION( P11_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P12_1, SPI_6, CY_PIN_IN_FUNCTION( P12_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P13_1, SPI_6, CY_PIN_IN_FUNCTION( P13_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SCLK[] = { + {P0_4, SPI_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_SPI_CLK, PCLK_SCB0_CLOCK)}, + {P1_2, SPI_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_SPI_CLK, PCLK_SCB7_CLOCK)}, + {P2_2, SPI_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P3_2, SPI_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P5_2, SPI_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P6_2, SPI_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_SPI_CLK, PCLK_SCB3_CLOCK)}, + {P6_6, SPI_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P7_2, SPI_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P8_2, SPI_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P9_2, SPI_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P10_2, SPI_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P11_2, SPI_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P12_2, SPI_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P13_2, SPI_6, CY_PIN_OUT_FUNCTION( P13_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SSEL[] = { + {P0_5, SPI_0, CY_PIN_OUT_FUNCTION( P0_5_SCB0_SPI_SELECT0, PCLK_SCB0_CLOCK)}, + {P1_3, SPI_7, CY_PIN_OUT_FUNCTION( P1_3_SCB7_SPI_SELECT0, PCLK_SCB7_CLOCK)}, + {P2_3, SPI_1, CY_PIN_OUT_FUNCTION( P2_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P3_3, SPI_2, CY_PIN_OUT_FUNCTION( P3_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P5_3, SPI_5, CY_PIN_OUT_FUNCTION( P5_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P6_3, SPI_3, CY_PIN_OUT_FUNCTION( P6_3_SCB3_SPI_SELECT0, PCLK_SCB3_CLOCK)}, + {P6_7, SPI_6, CY_PIN_OUT_FUNCTION( P6_7_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P7_3, SPI_4, CY_PIN_OUT_FUNCTION( P7_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P8_3, SPI_4, CY_PIN_OUT_FUNCTION( P8_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P9_3, SPI_2, CY_PIN_OUT_FUNCTION( P9_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P10_3, SPI_1, CY_PIN_OUT_FUNCTION( P10_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P11_3, SPI_5, CY_PIN_OUT_FUNCTION( P11_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P12_3, SPI_6, CY_PIN_OUT_FUNCTION( P12_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P13_3, SPI_6, CY_PIN_OUT_FUNCTION( P13_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SPI + +#if DEVICE_PWMOUT +//*** PWM *** +const PinMap PinMap_PWM_OUT[] = { + // 16-bit PWM outputs + {P0_0, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P0_2, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P0_4, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P1_0, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P1_2, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_2_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P1_4, PWM_16b_13, CY_PIN_OUT_FUNCTION(P1_4_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P2_0, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_0_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P2_2, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_2_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P2_4, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_4_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P2_6, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_6_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P3_0, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_0_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P3_2, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_2_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P3_4, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_4_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P4_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P5_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P5_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P5_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P5_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P6_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P6_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P6_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P6_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + {P7_0, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_0_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P7_2, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_2_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P7_4, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_4_TCPWM1_LINE14, PCLK_TCPWM1_CLOCKS14)}, + {P7_6, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_6_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P8_0, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_0_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P8_2, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_2_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P8_4, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_4_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P8_6, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_6_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P9_0, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_0_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P9_2, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_2_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P9_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P9_6, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_6_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P10_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P10_2, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_2_TCPWM1_LINE23, PCLK_TCPWM1_CLOCKS23)}, + {P10_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P10_6, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_6_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_0, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P11_2, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_4, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P12_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P12_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P12_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P12_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P13_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P13_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P13_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P13_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + // 16-bit PWM inverted outputs + {P0_1, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P0_3, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P0_5, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P1_1, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P1_3, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_3_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P1_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P1_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P2_1, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_1_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P2_3, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_3_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P2_5, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_5_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P2_7, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_7_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P3_1, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_1_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P3_3, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_3_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P3_5, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_5_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P4_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P5_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P5_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P5_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P5_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P6_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P6_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P6_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P6_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + {P7_1, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_1_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P7_3, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_3_TCPWM1_LINE_COMPL13, PCLK_TCPWM1_CLOCKS13)}, + {P7_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P7_7, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_7_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P8_1, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_1_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P8_3, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_3_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P8_5, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_5_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P8_7, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_7_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P9_1, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_1_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P9_3, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_3_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P9_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P9_7, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_7_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P10_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P10_3, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_3_TCPWM1_LINE_COMPL23, PCLK_TCPWM1_CLOCKS23)}, + {P10_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P10_7, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_7_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_1, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P11_3, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_5, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P12_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P12_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P12_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P12_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P13_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P13_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P13_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P13_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + // 32-bit PWM outputs + {PWM32(P0_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_0), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_2), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_2_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_4), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_4_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_0), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_0_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_2), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_2_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_4), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_4_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_0), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_0_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + //{PWM32(P4_2), PWM_32b_6, CY_PIN_OUT_FUNCTION(P4_2_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_4), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_4_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_6), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_6_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_0), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_2), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_4), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + // 32-bit PWM inverted outputs + {PWM32(P0_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_1), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_3), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_3_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_5), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_5_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_1), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_1_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_3), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_3_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_5), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_5_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_1), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_1_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + //{PWM32(P4_3), PWM_32b_6, CY_PIN_OUT_FUNCTION(P4_3_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_5), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_5_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_7), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_7_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_1), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_3), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_5), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {NC, NC, 0} +}; +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +const PinMap PinMap_ADC[] = { + {P9_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_0 pin through the AMUXA bus + {P9_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_1 pin through the AMUXA bus + {P9_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_2 pin through the AMUXA bus + {P9_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_4 pin through the AMUXA bus + {P9_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_5 pin through the AMUXA bus + {P9_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_6 pin through the AMUXA bus + {P10_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_0 pin + {P10_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_1 pin + {P10_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_2 pin + {P10_3, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_3 pin + {P10_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_4 pin + {P10_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_5 pin + {P10_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_6 pin + {P10_7, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_7 pin + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PinNames.h new file mode 100644 index 00000000000..2bc950ce2c6 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/PinNames.h @@ -0,0 +1,276 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" +#include "PortNames.h" + +// PinName[15-0] = Port[15-8] + Pin[7-0] +typedef enum { + P0_0 = (Port0 << 8) + 0x00, + P0_1 = (Port0 << 8) + 0x01, + P0_2 = (Port0 << 8) + 0x02, + P0_3 = (Port0 << 8) + 0x03, + P0_4 = (Port0 << 8) + 0x04, + P0_5 = (Port0 << 8) + 0x05, + P0_6 = (Port0 << 8) + 0x06, + P0_7 = (Port0 << 8) + 0x07, + + P1_0 = (Port1 << 8) + 0x00, + P1_1 = (Port1 << 8) + 0x01, + P1_2 = (Port1 << 8) + 0x02, + P1_3 = (Port1 << 8) + 0x03, + P1_4 = (Port1 << 8) + 0x04, + P1_5 = (Port1 << 8) + 0x05, + P1_6 = (Port1 << 8) + 0x06, + P1_7 = (Port1 << 8) + 0x07, + + P2_0 = (Port2 << 8) + 0x00, + P2_1 = (Port2 << 8) + 0x01, + P2_2 = (Port2 << 8) + 0x02, + P2_3 = (Port2 << 8) + 0x03, + P2_4 = (Port2 << 8) + 0x04, + P2_5 = (Port2 << 8) + 0x05, + P2_6 = (Port2 << 8) + 0x06, + P2_7 = (Port2 << 8) + 0x07, + + P3_0 = (Port3 << 8) + 0x00, + P3_1 = (Port3 << 8) + 0x01, + P3_2 = (Port3 << 8) + 0x02, + P3_3 = (Port3 << 8) + 0x03, + P3_4 = (Port3 << 8) + 0x04, + P3_5 = (Port3 << 8) + 0x05, + P3_6 = (Port3 << 8) + 0x06, + P3_7 = (Port3 << 8) + 0x07, + + P4_0 = (Port4 << 8) + 0x00, + P4_1 = (Port4 << 8) + 0x01, + P4_2 = (Port4 << 8) + 0x02, + P4_3 = (Port4 << 8) + 0x03, + P4_4 = (Port4 << 8) + 0x04, + P4_5 = (Port4 << 8) + 0x05, + P4_6 = (Port4 << 8) + 0x06, + P4_7 = (Port4 << 8) + 0x07, + + P5_0 = (Port5 << 8) + 0x00, + P5_1 = (Port5 << 8) + 0x01, + P5_2 = (Port5 << 8) + 0x02, + P5_3 = (Port5 << 8) + 0x03, + P5_4 = (Port5 << 8) + 0x04, + P5_5 = (Port5 << 8) + 0x05, + P5_6 = (Port5 << 8) + 0x06, + P5_7 = (Port5 << 8) + 0x07, + + P6_0 = (Port6 << 8) + 0x00, + P6_1 = (Port6 << 8) + 0x01, + P6_2 = (Port6 << 8) + 0x02, + P6_3 = (Port6 << 8) + 0x03, + P6_4 = (Port6 << 8) + 0x04, + P6_5 = (Port6 << 8) + 0x05, + P6_6 = (Port6 << 8) + 0x06, + P6_7 = (Port6 << 8) + 0x07, + + P7_0 = (Port7 << 8) + 0x00, + P7_1 = (Port7 << 8) + 0x01, + P7_2 = (Port7 << 8) + 0x02, + P7_3 = (Port7 << 8) + 0x03, + P7_4 = (Port7 << 8) + 0x04, + P7_5 = (Port7 << 8) + 0x05, + P7_6 = (Port7 << 8) + 0x06, + P7_7 = (Port7 << 8) + 0x07, + + P8_0 = (Port8 << 8) + 0x00, + P8_1 = (Port8 << 8) + 0x01, + P8_2 = (Port8 << 8) + 0x02, + P8_3 = (Port8 << 8) + 0x03, + P8_4 = (Port8 << 8) + 0x04, + P8_5 = (Port8 << 8) + 0x05, + P8_6 = (Port8 << 8) + 0x06, + P8_7 = (Port8 << 8) + 0x07, + + P9_0 = (Port9 << 8) + 0x00, + P9_1 = (Port9 << 8) + 0x01, + P9_2 = (Port9 << 8) + 0x02, + P9_3 = (Port9 << 8) + 0x03, + P9_4 = (Port9 << 8) + 0x04, + P9_5 = (Port9 << 8) + 0x05, + P9_6 = (Port9 << 8) + 0x06, + P9_7 = (Port9 << 8) + 0x07, + + P10_0 = (Port10 << 8) + 0x00, + P10_1 = (Port10 << 8) + 0x01, + P10_2 = (Port10 << 8) + 0x02, + P10_3 = (Port10 << 8) + 0x03, + P10_4 = (Port10 << 8) + 0x04, + P10_5 = (Port10 << 8) + 0x05, + P10_6 = (Port10 << 8) + 0x06, + P10_7 = (Port10 << 8) + 0x07, + + P11_0 = (Port11 << 8) + 0x00, + P11_1 = (Port11 << 8) + 0x01, + P11_2 = (Port11 << 8) + 0x02, + P11_3 = (Port11 << 8) + 0x03, + P11_4 = (Port11 << 8) + 0x04, + P11_5 = (Port11 << 8) + 0x05, + P11_6 = (Port11 << 8) + 0x06, + P11_7 = (Port11 << 8) + 0x07, + + P12_0 = (Port12 << 8) + 0x00, + P12_1 = (Port12 << 8) + 0x01, + P12_2 = (Port12 << 8) + 0x02, + P12_3 = (Port12 << 8) + 0x03, + P12_4 = (Port12 << 8) + 0x04, + P12_5 = (Port12 << 8) + 0x05, + P12_6 = (Port12 << 8) + 0x06, + P12_7 = (Port12 << 8) + 0x07, + + P13_0 = (Port13 << 8) + 0x00, + P13_1 = (Port13 << 8) + 0x01, + P13_2 = (Port13 << 8) + 0x02, + P13_3 = (Port13 << 8) + 0x03, + P13_4 = (Port13 << 8) + 0x04, + P13_5 = (Port13 << 8) + 0x05, + P13_6 = (Port13 << 8) + 0x06, + P13_7 = (Port13 << 8) + 0x07, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Arduino connector namings + A0 = P10_0, + A1 = P10_1, + A2 = P10_2, + A3 = P10_3, + A4 = P10_4, + A5 = P10_5, + + D0 = P5_0, + D1 = P5_1, + D2 = P5_2, + D3 = P5_3, + D4 = P5_4, + D5 = P5_5, + D6 = P5_6, + D7 = P0_2, + D8 = P13_0, + D9 = P13_1, + D10 = P12_3, + D11 = P12_0, + D12 = P12_1, + D13 = P12_2, + D14 = P6_1, + D15 = P6_0, + + // Generic signal names + + I2C_SCL = P6_0, + I2C_SDA = P6_1, + + SPI_MOSI = P12_0, + SPI_MISO = P12_1, + SPI_CLK = P12_2, + SPI_CS = P12_4, + + UART_RX = P5_0, + UART_TX = P5_1, + UART_RTS = P5_2, + UART_CTS = P5_3, + + BT_UART_RX = P3_0, + BT_UART_TX = P3_1, + BT_UART_CTS = P3_3, + BT_UART_RTS = P3_2, + + BT_PIN_POWER = P3_4, + BT_PIN_HOST_WAKE = P3_5, + BT_PIN_DEVICE_WAKE = P4_0, + // Reset pin unavailable + + + SWITCH2 = P0_4, + LED1 = P0_3, + LED2 = P1_1, + LED3 = P11_1, + LED4 = P1_5, + LED5 = P13_7, + + LED_RED = LED1, + LED_BLUE = LED3, + LED_GREEN = LED2, + + USER_BUTTON = SWITCH2, + BUTTON1 = USER_BUTTON, + + QSPI_CLK = P11_7, + QSPI_IO_0 = P11_6, + QSPI_IO_1 = P11_5, + QSPI_IO_2 = P11_4, + QSPI_IO_3 = P11_3, + QSPI_SEL = P11_2, + + // Standardized interfaces names + STDIO_UART_TX = UART_TX, + STDIO_UART_RX = UART_RX, + STDIO_UART_CTS = UART_CTS, + STDIO_UART_RTS = UART_RTS, + + CY_STDIO_UART_RX = STDIO_UART_RX, + CY_STDIO_UART_TX = STDIO_UART_TX, + CY_STDIO_UART_CTS = STDIO_UART_CTS, + CY_STDIO_UART_RTS = STDIO_UART_RTS, + + CY_BT_UART_RX = BT_UART_RX, + CY_BT_UART_TX = BT_UART_TX, + CY_BT_UART_CTS = BT_UART_CTS, + CY_BT_UART_RTS = BT_UART_RTS, + + CY_BT_PIN_POWER = BT_PIN_POWER, + CY_BT_PIN_HOST_WAKE = BT_PIN_HOST_WAKE, + CY_BT_PIN_DEVICE_WAKE = BT_PIN_DEVICE_WAKE, + + + USBTX = UART_TX, + USBRX = UART_RX, + + // Not connected + AOUT = (int)0xFFFFFFFF +} PinName; + +// PinName[15-0] = Port[15-8] + Pin[4-0] +static inline unsigned CY_PIN(PinName pin) +{ + return pin & 0x07; +} + +static inline unsigned CY_PORT(PinName pin) +{ + return (pin >> 8) & 0xFF; +} + +// Because MBED pin mapping API does not allow to map multiple instances of the PWM +// to be mapped to the same pin, we create special pin names to force 32-bit PWM unit +// usage instead of standard 16-bit PWM. + +#define PWM32(pin) CY_PIN_FORCE_PWM_32(pin) + + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct new file mode 100644 index 00000000000..0f640fc931f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct @@ -0,0 +1,256 @@ +#! armcc -E +; The first line specifies a preprocessor command that the linker invokes +; to pass a scatter file through a C preprocessor. + +;******************************************************************************* +;* \file cy8c6xxa_cm4_dual.scat +;* \version `$CY_MAJOR_VERSION`.`$CY_MINOR_VERSION` +;* +;* Linker file for the ARMCC. +;* +;* The main purpose of the linker script is to describe how the sections in the +;* input files should be mapped into the output file, and to control the memory +;* layout of the output file. +;* +;* \note The entry point location is fixed and starts at 0x10000000. The valid +;* application image should be placed there. +;* +;* \note The linker files included with the PDL template projects must be +;* generic and handle all common use cases. Your project may not use every +;* section defined in the linker files. In that case you may see the warnings +;* during the build process: L6314W (no section matches pattern) and/or L6329W +;* (pattern only matches removed unused sections). In your project, you can +;* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +;* the linker, simply comment out or remove the relevant code in the linker +;* file. +;* +;******************************************************************************* +;* \copyright +;* Copyright 2016-2019 Cypress Semiconductor Corporation +;* SPDX-License-Identifier: Apache-2.0 +;* +;* Licensed under the Apache License, Version 2.0 (the "License"); +;* you may not use this file except in compliance with the License. +;* You may obtain a copy of the License at +;* +;* http://www.apache.org/licenses/LICENSE-2.0 +;* +;* Unless required by applicable law or agreed to in writing, software +;* distributed under the License is distributed on an "AS IS" BASIS, +;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;* See the License for the specific language governing permissions and +;* limitations under the License. +;******************************************************************************/ + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x001FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x000FD800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +#define Stack_Size MBED_BOOT_STACK_SIZE + +; The defines below describe the location and size of blocks of memory in the target. +; Use these defines to specify the memory regions available for allocation. + +; The following defines control RAM and flash memory allocation for the CM4 core. +; You can change the memory allocation by editing RAM and Flash defines. +; Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. +; Using this memory region for other purposes will lead to unexpected behavior. +; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat', +; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'. +; RAM +#define RAM_START MBED_RAM_START +#define RAM_SIZE MBED_RAM_SIZE +; Flash +#define FLASH_START MBED_ROM_START +#define FLASH_SIZE MBED_ROM_SIZE + +; The following defines describe a 32K flash region used for EEPROM emulation. +; This region can also be used as the general purpose flash. +; You can assign sections to this memory region for only one of the cores. +; Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. +; Therefore, repurposing this memory region will prevent such middleware from operation. +#define EM_EEPROM_START 0x14000000 +#define EM_EEPROM_SIZE 0x8000 + +; The following defines describe device specific memory regions and must not be changed. +; Supervisory flash: User data +#define SFLASH_USER_DATA_START 0x16000800 +#define SFLASH_USER_DATA_SIZE 0x00000800 + +; Supervisory flash: Normal Access Restrictions (NAR) +#define SFLASH_NAR_START 0x16001A00 +#define SFLASH_NAR_SIZE 0x00000200 + +; Supervisory flash: Public Key +#define SFLASH_PUBLIC_KEY_START 0x16005A00 +#define SFLASH_PUBLIC_KEY_SIZE 0x00000C00 + +; Supervisory flash: Table of Content # 2 +#define SFLASH_TOC_2_START 0x16007C00 +#define SFLASH_TOC_2_SIZE 0x00000200 + +; Supervisory flash: Table of Content # 2 Copy +#define SFLASH_RTOC_2_START 0x16007E00 +#define SFLASH_RTOC_2_SIZE 0x00000200 + +; External memory +#define XIP_START 0x18000000 +#define XIP_SIZE 0x08000000 + +; eFuse +#define EFUSE_START 0x90700000 +#define EFUSE_SIZE 0x100000 + + +LR_IROM1 FLASH_START FLASH_SIZE +{ + ER_FLASH_VECTORS +0 + { + * (RESET, +FIRST) + } + + ER_FLASH_CODE +0 FIXED + { + * (InRoot$$Sections) + * (+RO) + } + + ER_RAM_VECTORS RAM_START UNINIT + { + * (RESET_RAM, +FIRST) + } + + RW_RAM_DATA +0 + { + * (.cy_ramfunc) + .ANY (+RW, +ZI) + } + + ; Place variables in the section that should not be initialized during the + ; device startup. + RW_IRAM1 +0 UNINIT + { + * (.noinit) + } + + ; Application heap area (HEAP) + ARM_LIB_HEAP +0 + { + * (HEAP) + } + + ; Stack region growing down + ARM_LIB_STACK RAM_START+RAM_SIZE -Stack_Size + { + * (STACK) + } + + ; Used for the digital signature of the secure application and the + ; Bootloader SDK application. The size of the section depends on the required + ; data size. + .cy_app_signature (FLASH_START + FLASH_SIZE - 256) 256 + { + * (.cy_app_signature) + } +} + + +; Emulated EEPROM Flash area +LR_EM_EEPROM EM_EEPROM_START EM_EEPROM_SIZE +{ + .cy_em_eeprom +0 + { + * (.cy_em_eeprom) + } +} + +; Supervisory flash: User data +LR_SFLASH_USER_DATA SFLASH_USER_DATA_START SFLASH_USER_DATA_SIZE +{ + .cy_sflash_user_data +0 + { + * (.cy_sflash_user_data) + } +} + +; Supervisory flash: Normal Access Restrictions (NAR) +LR_SFLASH_NAR SFLASH_NAR_START SFLASH_NAR_SIZE +{ + .cy_sflash_nar +0 + { + * (.cy_sflash_nar) + } +} + +; Supervisory flash: Public Key +LR_SFLASH_PUBLIC_KEY SFLASH_PUBLIC_KEY_START SFLASH_PUBLIC_KEY_SIZE +{ + .cy_sflash_public_key +0 + { + * (.cy_sflash_public_key) + } +} + +; Supervisory flash: Table of Content # 2 +LR_SFLASH_TOC_2 SFLASH_TOC_2_START SFLASH_TOC_2_SIZE +{ + .cy_toc_part2 +0 + { + * (.cy_toc_part2) + } +} + +; Supervisory flash: Table of Content # 2 Copy +LR_SFLASH_RTOC_2 SFLASH_RTOC_2_START SFLASH_RTOC_2_SIZE +{ + .cy_rtoc_part2 +0 + { + * (.cy_rtoc_part2) + } +} + + +; Places the code in the Execute in Place (XIP) section. See the smif driver documentation for details. +LR_EROM XIP_START XIP_SIZE +{ + .cy_xip +0 + { + * (.cy_xip) + } +} + + +; eFuse +LR_EFUSE EFUSE_START EFUSE_SIZE +{ + .cy_efuse +0 + { + * (.cy_efuse) + } +} + + +; The section is used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. +CYMETA 0x90500000 +{ + .cymeta +0 { * (.cymeta) } +} + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..cceaf06e646 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S @@ -0,0 +1,759 @@ +;/**************************************************************************//** +; * @file startup_psoc6_02_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 02. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;/* +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__STACK_SIZE +Stack_Size EQU __STACK_SIZE + ELSE +Stack_Size EQU 0x00000400 + ENDIF + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__HEAP_SIZE +Heap_Size EQU __HEAP_SIZE + ELSE +Heap_Size EQU 0x00000400 + ENDIF + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + + DCD 0x0000000D ; NMI Handler located at ROM code + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External interrupts Power Mode Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD scb_9_interrupt_IRQHandler ; Serial Communication Block #9 + DCD scb_10_interrupt_IRQHandler ; Serial Communication Block #10 + DCD scb_11_interrupt_IRQHandler ; Serial Communication Block #11 + DCD scb_12_interrupt_IRQHandler ; Serial Communication Block #12 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dmac_0_IRQHandler ; CPUSS DMAC, Channel #0 + DCD cpuss_interrupts_dmac_1_IRQHandler ; CPUSS DMAC, Channel #1 + DCD cpuss_interrupts_dmac_2_IRQHandler ; CPUSS DMAC, Channel #2 + DCD cpuss_interrupts_dmac_3_IRQHandler ; CPUSS DMAC, Channel #3 + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw0_16_IRQHandler ; CPUSS DataWire #0, Channel #16 + DCD cpuss_interrupts_dw0_17_IRQHandler ; CPUSS DataWire #0, Channel #17 + DCD cpuss_interrupts_dw0_18_IRQHandler ; CPUSS DataWire #0, Channel #18 + DCD cpuss_interrupts_dw0_19_IRQHandler ; CPUSS DataWire #0, Channel #19 + DCD cpuss_interrupts_dw0_20_IRQHandler ; CPUSS DataWire #0, Channel #20 + DCD cpuss_interrupts_dw0_21_IRQHandler ; CPUSS DataWire #0, Channel #21 + DCD cpuss_interrupts_dw0_22_IRQHandler ; CPUSS DataWire #0, Channel #22 + DCD cpuss_interrupts_dw0_23_IRQHandler ; CPUSS DataWire #0, Channel #23 + DCD cpuss_interrupts_dw0_24_IRQHandler ; CPUSS DataWire #0, Channel #24 + DCD cpuss_interrupts_dw0_25_IRQHandler ; CPUSS DataWire #0, Channel #25 + DCD cpuss_interrupts_dw0_26_IRQHandler ; CPUSS DataWire #0, Channel #26 + DCD cpuss_interrupts_dw0_27_IRQHandler ; CPUSS DataWire #0, Channel #27 + DCD cpuss_interrupts_dw0_28_IRQHandler ; CPUSS DataWire #0, Channel #28 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_dw1_16_IRQHandler ; CPUSS DataWire #1, Channel #16 + DCD cpuss_interrupts_dw1_17_IRQHandler ; CPUSS DataWire #1, Channel #17 + DCD cpuss_interrupts_dw1_18_IRQHandler ; CPUSS DataWire #1, Channel #18 + DCD cpuss_interrupts_dw1_19_IRQHandler ; CPUSS DataWire #1, Channel #19 + DCD cpuss_interrupts_dw1_20_IRQHandler ; CPUSS DataWire #1, Channel #20 + DCD cpuss_interrupts_dw1_21_IRQHandler ; CPUSS DataWire #1, Channel #21 + DCD cpuss_interrupts_dw1_22_IRQHandler ; CPUSS DataWire #1, Channel #22 + DCD cpuss_interrupts_dw1_23_IRQHandler ; CPUSS DataWire #1, Channel #23 + DCD cpuss_interrupts_dw1_24_IRQHandler ; CPUSS DataWire #1, Channel #24 + DCD cpuss_interrupts_dw1_25_IRQHandler ; CPUSS DataWire #1, Channel #25 + DCD cpuss_interrupts_dw1_26_IRQHandler ; CPUSS DataWire #1, Channel #26 + DCD cpuss_interrupts_dw1_27_IRQHandler ; CPUSS DataWire #1, Channel #27 + DCD cpuss_interrupts_dw1_28_IRQHandler ; CPUSS DataWire #1, Channel #28 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm4_fp_IRQHandler ; Floating Point operation fault + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_0_interrupt_i2s_IRQHandler ; I2S0 Audio interrupt + DCD audioss_0_interrupt_pdm_IRQHandler ; PDM0/PCM0 Audio interrupt + DCD audioss_1_interrupt_i2s_IRQHandler ; I2S1 Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD sdhc_0_interrupt_wakeup_IRQHandler ; SDIO wakeup interrupt for mxsdhc + DCD sdhc_0_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + DCD sdhc_1_interrupt_wakeup_IRQHandler ; EEMC wakeup interrupt for mxsdhc, not used + DCD sdhc_1_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + EXPORT __ramVectors + AREA RESET_RAM, READWRITE, NOINIT +__ramVectors SPACE __Vectors_Size + + + AREA |.text|, CODE, READONLY + + +; Weak function for startup customization +; +; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +; because this function is executed as the first instruction in the ResetHandler. +; The PDL is also not initialized to use the proper register offsets. +; The user of this function is responsible for initializing the PDL and resources before using them. +; +Cy_OnResetUser PROC + EXPORT Cy_OnResetUser [WEAK] + BX LR + ENDP + + +; Reset Handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT Cy_SystemInitFpuEnable + IMPORT __main + + ; Define strong function for startup customization + BL Cy_OnResetUser + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__Vectors + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +Vectors_Copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE Vectors_Copy + + ; Update Vector Table Offset Register. */ + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb 0xF + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + LDR R0, =__main + BLX R0 + + ; Should never get here + B . + + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP + +Cy_SysLib_FaultHandler PROC + EXPORT Cy_SysLib_FaultHandler [WEAK] + B . + ENDP +HardFault_Wrapper\ + PROC + EXPORT HardFault_Wrapper [WEAK] + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + bl L_API_call +L_MSP + mrs r0, MSP +L_API_call + bl Cy_SysLib_FaultHandler + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B HardFault_Wrapper + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT Default_Handler [WEAK] + EXPORT ioss_interrupts_gpio_0_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_1_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_2_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_3_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_4_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_5_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_6_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_7_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_8_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_9_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_10_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_11_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_12_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_13_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_14_IRQHandler [WEAK] + EXPORT ioss_interrupt_gpio_IRQHandler [WEAK] + EXPORT ioss_interrupt_vdd_IRQHandler [WEAK] + EXPORT lpcomp_interrupt_IRQHandler [WEAK] + EXPORT scb_8_interrupt_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_0_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_1_IRQHandler [WEAK] + EXPORT srss_interrupt_backup_IRQHandler [WEAK] + EXPORT srss_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_15_IRQHandler [WEAK] + EXPORT scb_0_interrupt_IRQHandler [WEAK] + EXPORT scb_1_interrupt_IRQHandler [WEAK] + EXPORT scb_2_interrupt_IRQHandler [WEAK] + EXPORT scb_3_interrupt_IRQHandler [WEAK] + EXPORT scb_4_interrupt_IRQHandler [WEAK] + EXPORT scb_5_interrupt_IRQHandler [WEAK] + EXPORT scb_6_interrupt_IRQHandler [WEAK] + EXPORT scb_7_interrupt_IRQHandler [WEAK] + EXPORT scb_9_interrupt_IRQHandler [WEAK] + EXPORT scb_10_interrupt_IRQHandler [WEAK] + EXPORT scb_11_interrupt_IRQHandler [WEAK] + EXPORT scb_12_interrupt_IRQHandler [WEAK] + EXPORT csd_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_16_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_17_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_18_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_19_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_20_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_21_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_22_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_23_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_24_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_25_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_26_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_27_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_28_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_16_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_17_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_18_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_19_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_20_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_21_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_22_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_23_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_24_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_25_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_26_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_27_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_28_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_1_IRQHandler [WEAK] + EXPORT cpuss_interrupt_crypto_IRQHandler [WEAK] + EXPORT cpuss_interrupt_fm_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_fp_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_8_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_9_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_10_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_11_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_12_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_13_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_14_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_15_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_16_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_17_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_18_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_19_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_20_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_21_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_22_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_23_IRQHandler [WEAK] + EXPORT pass_interrupt_sar_IRQHandler [WEAK] + EXPORT audioss_0_interrupt_i2s_IRQHandler [WEAK] + EXPORT audioss_0_interrupt_pdm_IRQHandler [WEAK] + EXPORT audioss_1_interrupt_i2s_IRQHandler [WEAK] + EXPORT profile_interrupt_IRQHandler [WEAK] + EXPORT smif_interrupt_IRQHandler [WEAK] + EXPORT usb_interrupt_hi_IRQHandler [WEAK] + EXPORT usb_interrupt_med_IRQHandler [WEAK] + EXPORT usb_interrupt_lo_IRQHandler [WEAK] + EXPORT sdhc_0_interrupt_wakeup_IRQHandler [WEAK] + EXPORT sdhc_0_interrupt_general_IRQHandler [WEAK] + EXPORT sdhc_1_interrupt_wakeup_IRQHandler [WEAK] + EXPORT sdhc_1_interrupt_general_IRQHandler [WEAK] + +ioss_interrupts_gpio_0_IRQHandler +ioss_interrupts_gpio_1_IRQHandler +ioss_interrupts_gpio_2_IRQHandler +ioss_interrupts_gpio_3_IRQHandler +ioss_interrupts_gpio_4_IRQHandler +ioss_interrupts_gpio_5_IRQHandler +ioss_interrupts_gpio_6_IRQHandler +ioss_interrupts_gpio_7_IRQHandler +ioss_interrupts_gpio_8_IRQHandler +ioss_interrupts_gpio_9_IRQHandler +ioss_interrupts_gpio_10_IRQHandler +ioss_interrupts_gpio_11_IRQHandler +ioss_interrupts_gpio_12_IRQHandler +ioss_interrupts_gpio_13_IRQHandler +ioss_interrupts_gpio_14_IRQHandler +ioss_interrupt_gpio_IRQHandler +ioss_interrupt_vdd_IRQHandler +lpcomp_interrupt_IRQHandler +scb_8_interrupt_IRQHandler +srss_interrupt_mcwdt_0_IRQHandler +srss_interrupt_mcwdt_1_IRQHandler +srss_interrupt_backup_IRQHandler +srss_interrupt_IRQHandler +cpuss_interrupts_ipc_0_IRQHandler +cpuss_interrupts_ipc_1_IRQHandler +cpuss_interrupts_ipc_2_IRQHandler +cpuss_interrupts_ipc_3_IRQHandler +cpuss_interrupts_ipc_4_IRQHandler +cpuss_interrupts_ipc_5_IRQHandler +cpuss_interrupts_ipc_6_IRQHandler +cpuss_interrupts_ipc_7_IRQHandler +cpuss_interrupts_ipc_8_IRQHandler +cpuss_interrupts_ipc_9_IRQHandler +cpuss_interrupts_ipc_10_IRQHandler +cpuss_interrupts_ipc_11_IRQHandler +cpuss_interrupts_ipc_12_IRQHandler +cpuss_interrupts_ipc_13_IRQHandler +cpuss_interrupts_ipc_14_IRQHandler +cpuss_interrupts_ipc_15_IRQHandler +scb_0_interrupt_IRQHandler +scb_1_interrupt_IRQHandler +scb_2_interrupt_IRQHandler +scb_3_interrupt_IRQHandler +scb_4_interrupt_IRQHandler +scb_5_interrupt_IRQHandler +scb_6_interrupt_IRQHandler +scb_7_interrupt_IRQHandler +scb_9_interrupt_IRQHandler +scb_10_interrupt_IRQHandler +scb_11_interrupt_IRQHandler +scb_12_interrupt_IRQHandler +csd_interrupt_IRQHandler +cpuss_interrupts_dmac_0_IRQHandler +cpuss_interrupts_dmac_1_IRQHandler +cpuss_interrupts_dmac_2_IRQHandler +cpuss_interrupts_dmac_3_IRQHandler +cpuss_interrupts_dw0_0_IRQHandler +cpuss_interrupts_dw0_1_IRQHandler +cpuss_interrupts_dw0_2_IRQHandler +cpuss_interrupts_dw0_3_IRQHandler +cpuss_interrupts_dw0_4_IRQHandler +cpuss_interrupts_dw0_5_IRQHandler +cpuss_interrupts_dw0_6_IRQHandler +cpuss_interrupts_dw0_7_IRQHandler +cpuss_interrupts_dw0_8_IRQHandler +cpuss_interrupts_dw0_9_IRQHandler +cpuss_interrupts_dw0_10_IRQHandler +cpuss_interrupts_dw0_11_IRQHandler +cpuss_interrupts_dw0_12_IRQHandler +cpuss_interrupts_dw0_13_IRQHandler +cpuss_interrupts_dw0_14_IRQHandler +cpuss_interrupts_dw0_15_IRQHandler +cpuss_interrupts_dw0_16_IRQHandler +cpuss_interrupts_dw0_17_IRQHandler +cpuss_interrupts_dw0_18_IRQHandler +cpuss_interrupts_dw0_19_IRQHandler +cpuss_interrupts_dw0_20_IRQHandler +cpuss_interrupts_dw0_21_IRQHandler +cpuss_interrupts_dw0_22_IRQHandler +cpuss_interrupts_dw0_23_IRQHandler +cpuss_interrupts_dw0_24_IRQHandler +cpuss_interrupts_dw0_25_IRQHandler +cpuss_interrupts_dw0_26_IRQHandler +cpuss_interrupts_dw0_27_IRQHandler +cpuss_interrupts_dw0_28_IRQHandler +cpuss_interrupts_dw1_0_IRQHandler +cpuss_interrupts_dw1_1_IRQHandler +cpuss_interrupts_dw1_2_IRQHandler +cpuss_interrupts_dw1_3_IRQHandler +cpuss_interrupts_dw1_4_IRQHandler +cpuss_interrupts_dw1_5_IRQHandler +cpuss_interrupts_dw1_6_IRQHandler +cpuss_interrupts_dw1_7_IRQHandler +cpuss_interrupts_dw1_8_IRQHandler +cpuss_interrupts_dw1_9_IRQHandler +cpuss_interrupts_dw1_10_IRQHandler +cpuss_interrupts_dw1_11_IRQHandler +cpuss_interrupts_dw1_12_IRQHandler +cpuss_interrupts_dw1_13_IRQHandler +cpuss_interrupts_dw1_14_IRQHandler +cpuss_interrupts_dw1_15_IRQHandler +cpuss_interrupts_dw1_16_IRQHandler +cpuss_interrupts_dw1_17_IRQHandler +cpuss_interrupts_dw1_18_IRQHandler +cpuss_interrupts_dw1_19_IRQHandler +cpuss_interrupts_dw1_20_IRQHandler +cpuss_interrupts_dw1_21_IRQHandler +cpuss_interrupts_dw1_22_IRQHandler +cpuss_interrupts_dw1_23_IRQHandler +cpuss_interrupts_dw1_24_IRQHandler +cpuss_interrupts_dw1_25_IRQHandler +cpuss_interrupts_dw1_26_IRQHandler +cpuss_interrupts_dw1_27_IRQHandler +cpuss_interrupts_dw1_28_IRQHandler +cpuss_interrupts_fault_0_IRQHandler +cpuss_interrupts_fault_1_IRQHandler +cpuss_interrupt_crypto_IRQHandler +cpuss_interrupt_fm_IRQHandler +cpuss_interrupts_cm4_fp_IRQHandler +cpuss_interrupts_cm0_cti_0_IRQHandler +cpuss_interrupts_cm0_cti_1_IRQHandler +cpuss_interrupts_cm4_cti_0_IRQHandler +cpuss_interrupts_cm4_cti_1_IRQHandler +tcpwm_0_interrupts_0_IRQHandler +tcpwm_0_interrupts_1_IRQHandler +tcpwm_0_interrupts_2_IRQHandler +tcpwm_0_interrupts_3_IRQHandler +tcpwm_0_interrupts_4_IRQHandler +tcpwm_0_interrupts_5_IRQHandler +tcpwm_0_interrupts_6_IRQHandler +tcpwm_0_interrupts_7_IRQHandler +tcpwm_1_interrupts_0_IRQHandler +tcpwm_1_interrupts_1_IRQHandler +tcpwm_1_interrupts_2_IRQHandler +tcpwm_1_interrupts_3_IRQHandler +tcpwm_1_interrupts_4_IRQHandler +tcpwm_1_interrupts_5_IRQHandler +tcpwm_1_interrupts_6_IRQHandler +tcpwm_1_interrupts_7_IRQHandler +tcpwm_1_interrupts_8_IRQHandler +tcpwm_1_interrupts_9_IRQHandler +tcpwm_1_interrupts_10_IRQHandler +tcpwm_1_interrupts_11_IRQHandler +tcpwm_1_interrupts_12_IRQHandler +tcpwm_1_interrupts_13_IRQHandler +tcpwm_1_interrupts_14_IRQHandler +tcpwm_1_interrupts_15_IRQHandler +tcpwm_1_interrupts_16_IRQHandler +tcpwm_1_interrupts_17_IRQHandler +tcpwm_1_interrupts_18_IRQHandler +tcpwm_1_interrupts_19_IRQHandler +tcpwm_1_interrupts_20_IRQHandler +tcpwm_1_interrupts_21_IRQHandler +tcpwm_1_interrupts_22_IRQHandler +tcpwm_1_interrupts_23_IRQHandler +pass_interrupt_sar_IRQHandler +audioss_0_interrupt_i2s_IRQHandler +audioss_0_interrupt_pdm_IRQHandler +audioss_1_interrupt_i2s_IRQHandler +profile_interrupt_IRQHandler +smif_interrupt_IRQHandler +usb_interrupt_hi_IRQHandler +usb_interrupt_med_IRQHandler +usb_interrupt_lo_IRQHandler +sdhc_0_interrupt_wakeup_IRQHandler +sdhc_0_interrupt_general_IRQHandler +sdhc_1_interrupt_wakeup_IRQHandler +sdhc_1_interrupt_general_IRQHandler + + B . + ENDP + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld new file mode 100644 index 00000000000..8b0f1ec04dd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld @@ -0,0 +1,430 @@ +/***************************************************************************//** +* \file cy8c6xxa_cm4_dual.ld +* \version 2.30 +* +* Linker file for the GNU C compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point location is fixed and starts at 0x10000000. The valid +* application image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) +ENTRY(Reset_Handler) + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x001FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x000FD800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +STACK_SIZE = MBED_BOOT_STACK_SIZE; + +/* Force symbol to be entered in the output file as an undefined symbol. Doing +* this may, for example, trigger linking of additional modules from standard +* libraries. You may list several symbols for each EXTERN, and you may use +* EXTERN multiple times. This command has the same effect as the -u command-line +* option. +*/ +EXTERN(Reset_Handler) + +/* The MEMORY section below describes the location and size of blocks of memory in the target. +* Use this section to specify the memory regions available for allocation. +*/ +MEMORY +{ + /* The ram and flash regions control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing the 'ram' and 'flash' regions. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. + */ + ram (rwx) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE + flash (rx) : ORIGIN = MBED_ROM_START, LENGTH = MBED_ROM_SIZE + + /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ + em_eeprom (rx) : ORIGIN = 0x14000000, LENGTH = 0x8000 /* 32 KB */ + + /* The following regions define device specific memory regions and must not be changed. */ + sflash_user_data (rx) : ORIGIN = 0x16000800, LENGTH = 0x800 /* Supervisory flash: User data */ + sflash_nar (rx) : ORIGIN = 0x16001A00, LENGTH = 0x200 /* Supervisory flash: Normal Access Restrictions (NAR) */ + sflash_public_key (rx) : ORIGIN = 0x16005A00, LENGTH = 0xC00 /* Supervisory flash: Public Key */ + sflash_toc_2 (rx) : ORIGIN = 0x16007C00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 */ + sflash_rtoc_2 (rx) : ORIGIN = 0x16007E00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 Copy */ + xip (rx) : ORIGIN = 0x18000000, LENGTH = 0x8000000 /* 128 MB */ + efuse (r) : ORIGIN = 0x90700000, LENGTH = 0x100000 /* 1 MB */ +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ + + +SECTIONS +{ + .text : + { + . = ALIGN(4); + __Vectors = . ; + KEEP(*(.vectors)) + . = ALIGN(4); + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + . = ALIGN(4); + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + /* Read-only code (constants). */ + *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*) + + KEEP(*(.eh_frame*)) + } > flash + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + __exidx_start = .; + + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_psoc6_02_cm4.S */ + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + /* Copy interrupt vectors from flash to RAM */ + LONG (__Vectors) /* From */ + LONG (__ram_vectors_start__) /* To */ + LONG (__Vectors_End - __Vectors) /* Size */ + + /* Copy data section to RAM */ + LONG (__etext) /* From */ + LONG (__data_start__) /* To */ + LONG (__data_end__ - __data_start__) /* Size */ + + __copy_table_end__ = .; + } > flash + + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_02_cm4.S */ + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + __zero_table_end__ = .; + } > flash + + __etext = . ; + + + .ramVectors (NOLOAD) : ALIGN(8) + { + __ram_vectors_start__ = .; + KEEP(*(.ram_vectors)) + __ram_vectors_end__ = .; + } > ram + + + .data __ram_vectors_end__ : AT (__etext) + { + __data_start__ = .; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + + KEEP(*(.cy_ramfunc*)) + . = ALIGN(4); + + __data_end__ = .; + + } > ram + + + /* Place variables in the section that should not be initialized during the + * device startup. + */ + .noinit (NOLOAD) : ALIGN(8) + { + KEEP(*(.noinit)) + } > ram + + + /* The uninitialized global or static variables are placed in this section. + * + * The NOLOAD attribute tells linker that .bss section does not consume + * any space in the image. The NOLOAD attribute changes the .bss type to + * NOBITS, and that makes linker to A) not allocate section in memory, and + * A) put information to clear the section with all zeros during application + * loading. + * + * Without the NOLOAD attribute, the .bss section might get PROGBITS type. + * This makes linker to A) allocate zeroed section in memory, and B) copy + * this section to RAM during application loading. + */ + .bss (NOLOAD): + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .heap (NOLOAD): + { + __HeapBase = .; + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + __HeapLimit = .; + } > ram + + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram) + LENGTH(ram); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Used for the digital signature of the secure application and the Bootloader SDK application. + * The size of the section depends on the required data size. */ + .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 : + { + KEEP(*(.cy_app_signature)) + } > flash + + + /* Emulated EEPROM Flash area */ + .cy_em_eeprom : + { + KEEP(*(.cy_em_eeprom)) + } > em_eeprom + + + /* Supervisory Flash: User data */ + .cy_sflash_user_data : + { + KEEP(*(.cy_sflash_user_data)) + } > sflash_user_data + + + /* Supervisory Flash: Normal Access Restrictions (NAR) */ + .cy_sflash_nar : + { + KEEP(*(.cy_sflash_nar)) + } > sflash_nar + + + /* Supervisory Flash: Public Key */ + .cy_sflash_public_key : + { + KEEP(*(.cy_sflash_public_key)) + } > sflash_public_key + + + /* Supervisory Flash: Table of Content # 2 */ + .cy_toc_part2 : + { + KEEP(*(.cy_toc_part2)) + } > sflash_toc_2 + + + /* Supervisory Flash: Table of Content # 2 Copy */ + .cy_rtoc_part2 : + { + KEEP(*(.cy_rtoc_part2)) + } > sflash_rtoc_2 + + + /* Places the code in the Execute in Place (XIP) section. See the smif driver + * documentation for details. + */ + .cy_xip : + { + KEEP(*(.cy_xip)) + } > xip + + + /* eFuse */ + .cy_efuse : + { + KEEP(*(.cy_efuse)) + } > efuse + + + /* These sections are used for additional metadata (silicon revision, + * Silicon/JTAG ID, etc.) storage. + */ + .cymeta 0x90500000 : { KEEP(*(.cymeta)) } :NONE +} + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +__cy_memory_0_start = 0x10000000; +__cy_memory_0_length = 0x00200000; +__cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +__cy_memory_1_start = 0x14000000; +__cy_memory_1_length = 0x8000; +__cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +__cy_memory_2_start = 0x16000000; +__cy_memory_2_length = 0x8000; +__cy_memory_2_row_size = 0x200; + +/* XIP */ +__cy_memory_3_start = 0x18000000; +__cy_memory_3_length = 0x08000000; +__cy_memory_3_row_size = 0x200; + +/* eFuse */ +__cy_memory_4_start = 0x90700000; +__cy_memory_4_length = 0x100000; +__cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..1ebcac39f8f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S @@ -0,0 +1,673 @@ +/**************************************************************************//** + * @file startup_psoc6_02_cm4.S + * @brief CMSIS Core Device Startup File for + * ARMCM4 Device Series + * @version V5.00 + * @date 02. March 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* Address of the NMI handler */ + #define CY_NMI_HANLDER_ADDR 0x0000000D + + /* The CPU VTOR register */ + #define CY_CPU_VTOR_ADDR 0xE000ED08 + + /* Copy flash vectors and data section to RAM */ + #define __STARTUP_COPY_MULTIPLE + + /* Clear single BSS section */ + #define __STARTUP_CLEAR_BSS + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00001000 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000400 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long CY_NMI_HANLDER_ADDR /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External interrupts Description */ + .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + .long scb_9_interrupt_IRQHandler /* Serial Communication Block #9 */ + .long scb_10_interrupt_IRQHandler /* Serial Communication Block #10 */ + .long scb_11_interrupt_IRQHandler /* Serial Communication Block #11 */ + .long scb_12_interrupt_IRQHandler /* Serial Communication Block #12 */ + .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + .long cpuss_interrupts_dmac_0_IRQHandler /* CPUSS DMAC, Channel #0 */ + .long cpuss_interrupts_dmac_1_IRQHandler /* CPUSS DMAC, Channel #1 */ + .long cpuss_interrupts_dmac_2_IRQHandler /* CPUSS DMAC, Channel #2 */ + .long cpuss_interrupts_dmac_3_IRQHandler /* CPUSS DMAC, Channel #3 */ + .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + .long cpuss_interrupts_dw0_16_IRQHandler /* CPUSS DataWire #0, Channel #16 */ + .long cpuss_interrupts_dw0_17_IRQHandler /* CPUSS DataWire #0, Channel #17 */ + .long cpuss_interrupts_dw0_18_IRQHandler /* CPUSS DataWire #0, Channel #18 */ + .long cpuss_interrupts_dw0_19_IRQHandler /* CPUSS DataWire #0, Channel #19 */ + .long cpuss_interrupts_dw0_20_IRQHandler /* CPUSS DataWire #0, Channel #20 */ + .long cpuss_interrupts_dw0_21_IRQHandler /* CPUSS DataWire #0, Channel #21 */ + .long cpuss_interrupts_dw0_22_IRQHandler /* CPUSS DataWire #0, Channel #22 */ + .long cpuss_interrupts_dw0_23_IRQHandler /* CPUSS DataWire #0, Channel #23 */ + .long cpuss_interrupts_dw0_24_IRQHandler /* CPUSS DataWire #0, Channel #24 */ + .long cpuss_interrupts_dw0_25_IRQHandler /* CPUSS DataWire #0, Channel #25 */ + .long cpuss_interrupts_dw0_26_IRQHandler /* CPUSS DataWire #0, Channel #26 */ + .long cpuss_interrupts_dw0_27_IRQHandler /* CPUSS DataWire #0, Channel #27 */ + .long cpuss_interrupts_dw0_28_IRQHandler /* CPUSS DataWire #0, Channel #28 */ + .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + .long cpuss_interrupts_dw1_16_IRQHandler /* CPUSS DataWire #1, Channel #16 */ + .long cpuss_interrupts_dw1_17_IRQHandler /* CPUSS DataWire #1, Channel #17 */ + .long cpuss_interrupts_dw1_18_IRQHandler /* CPUSS DataWire #1, Channel #18 */ + .long cpuss_interrupts_dw1_19_IRQHandler /* CPUSS DataWire #1, Channel #19 */ + .long cpuss_interrupts_dw1_20_IRQHandler /* CPUSS DataWire #1, Channel #20 */ + .long cpuss_interrupts_dw1_21_IRQHandler /* CPUSS DataWire #1, Channel #21 */ + .long cpuss_interrupts_dw1_22_IRQHandler /* CPUSS DataWire #1, Channel #22 */ + .long cpuss_interrupts_dw1_23_IRQHandler /* CPUSS DataWire #1, Channel #23 */ + .long cpuss_interrupts_dw1_24_IRQHandler /* CPUSS DataWire #1, Channel #24 */ + .long cpuss_interrupts_dw1_25_IRQHandler /* CPUSS DataWire #1, Channel #25 */ + .long cpuss_interrupts_dw1_26_IRQHandler /* CPUSS DataWire #1, Channel #26 */ + .long cpuss_interrupts_dw1_27_IRQHandler /* CPUSS DataWire #1, Channel #27 */ + .long cpuss_interrupts_dw1_28_IRQHandler /* CPUSS DataWire #1, Channel #28 */ + .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + .long cpuss_interrupts_cm4_fp_IRQHandler /* Floating Point operation fault */ + .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + .long audioss_0_interrupt_i2s_IRQHandler /* I2S0 Audio interrupt */ + .long audioss_0_interrupt_pdm_IRQHandler /* PDM0/PCM0 Audio interrupt */ + .long audioss_1_interrupt_i2s_IRQHandler /* I2S1 Audio interrupt */ + .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + .long usb_interrupt_hi_IRQHandler /* USB Interrupt */ + .long usb_interrupt_med_IRQHandler /* USB Interrupt */ + .long usb_interrupt_lo_IRQHandler /* USB Interrupt */ + .long sdhc_0_interrupt_wakeup_IRQHandler /* SDIO wakeup interrupt for mxsdhc */ + .long sdhc_0_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + .long sdhc_1_interrupt_wakeup_IRQHandler /* EEMC wakeup interrupt for mxsdhc, not used */ + .long sdhc_1_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + + + .size __Vectors, . - __Vectors + .equ __VectorsSize, . - __Vectors + + .section .ram_vectors + .align 2 + .globl __ramVectors +__ramVectors: + .space __VectorsSize + .size __ramVectors, . - __ramVectors + + + .text + .thumb + .thumb_func + .align 2 + + /* + * Device startup customization + * + * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) + * because this function is executed as the first instruction in the ResetHandler. + * The PDL is also not initialized to use the proper register offsets. + * The user of this function is responsible for initializing the PDL and resources before using them. + */ + .weak Cy_OnResetUser + .func Cy_OnResetUser, Cy_OnResetUser + .type Cy_OnResetUser, %function + +Cy_OnResetUser: + bx lr + .size Cy_OnResetUser, . - Cy_OnResetUser + .endfunc + + /* Reset handler */ + .weak Reset_Handler + .type Reset_Handler, %function + +Reset_Handler: + bl Cy_OnResetUser + cpsid i + +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + + /* Update Vector Table Offset Register. */ + ldr r0, =__ramVectors + ldr r1, =CY_CPU_VTOR_ADDR + str r0, [r1] + dsb 0xF + + /* Enable the FPU if used */ + bl Cy_SystemInitFpuEnable + + bl _start + + /* Should never get here */ + b . + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function + +Default_Handler: + b . + .size Default_Handler, . - Default_Handler + + + .weak Cy_SysLib_FaultHandler + .type Cy_SysLib_FaultHandler, %function + +Cy_SysLib_FaultHandler: + b . + .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler + .type Fault_Handler, %function + +Fault_Handler: + /* Storing LR content for Creator call stack trace */ + push {LR} + movs r0, #4 + mov r1, LR + tst r0, r1 + beq .L_MSP + mrs r0, PSP + b .L_API_call +.L_MSP: + mrs r0, MSP +.L_API_call: + /* Compensation of stack pointer address due to pushing 4 bytes of LR */ + adds r0, r0, #4 + bl Cy_SysLib_FaultHandler + b . + .size Fault_Handler, . - Fault_Handler + +.macro def_fault_Handler fault_handler_name + .weak \fault_handler_name + .set \fault_handler_name, Fault_Handler + .endm + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + + def_fault_Handler HardFault_Handler + def_fault_Handler MemManage_Handler + def_fault_Handler BusFault_Handler + def_fault_Handler UsageFault_Handler + + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + def_irq_handler scb_9_interrupt_IRQHandler /* Serial Communication Block #9 */ + def_irq_handler scb_10_interrupt_IRQHandler /* Serial Communication Block #10 */ + def_irq_handler scb_11_interrupt_IRQHandler /* Serial Communication Block #11 */ + def_irq_handler scb_12_interrupt_IRQHandler /* Serial Communication Block #12 */ + def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + def_irq_handler cpuss_interrupts_dmac_0_IRQHandler /* CPUSS DMAC, Channel #0 */ + def_irq_handler cpuss_interrupts_dmac_1_IRQHandler /* CPUSS DMAC, Channel #1 */ + def_irq_handler cpuss_interrupts_dmac_2_IRQHandler /* CPUSS DMAC, Channel #2 */ + def_irq_handler cpuss_interrupts_dmac_3_IRQHandler /* CPUSS DMAC, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + def_irq_handler cpuss_interrupts_dw0_16_IRQHandler /* CPUSS DataWire #0, Channel #16 */ + def_irq_handler cpuss_interrupts_dw0_17_IRQHandler /* CPUSS DataWire #0, Channel #17 */ + def_irq_handler cpuss_interrupts_dw0_18_IRQHandler /* CPUSS DataWire #0, Channel #18 */ + def_irq_handler cpuss_interrupts_dw0_19_IRQHandler /* CPUSS DataWire #0, Channel #19 */ + def_irq_handler cpuss_interrupts_dw0_20_IRQHandler /* CPUSS DataWire #0, Channel #20 */ + def_irq_handler cpuss_interrupts_dw0_21_IRQHandler /* CPUSS DataWire #0, Channel #21 */ + def_irq_handler cpuss_interrupts_dw0_22_IRQHandler /* CPUSS DataWire #0, Channel #22 */ + def_irq_handler cpuss_interrupts_dw0_23_IRQHandler /* CPUSS DataWire #0, Channel #23 */ + def_irq_handler cpuss_interrupts_dw0_24_IRQHandler /* CPUSS DataWire #0, Channel #24 */ + def_irq_handler cpuss_interrupts_dw0_25_IRQHandler /* CPUSS DataWire #0, Channel #25 */ + def_irq_handler cpuss_interrupts_dw0_26_IRQHandler /* CPUSS DataWire #0, Channel #26 */ + def_irq_handler cpuss_interrupts_dw0_27_IRQHandler /* CPUSS DataWire #0, Channel #27 */ + def_irq_handler cpuss_interrupts_dw0_28_IRQHandler /* CPUSS DataWire #0, Channel #28 */ + def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + def_irq_handler cpuss_interrupts_dw1_16_IRQHandler /* CPUSS DataWire #1, Channel #16 */ + def_irq_handler cpuss_interrupts_dw1_17_IRQHandler /* CPUSS DataWire #1, Channel #17 */ + def_irq_handler cpuss_interrupts_dw1_18_IRQHandler /* CPUSS DataWire #1, Channel #18 */ + def_irq_handler cpuss_interrupts_dw1_19_IRQHandler /* CPUSS DataWire #1, Channel #19 */ + def_irq_handler cpuss_interrupts_dw1_20_IRQHandler /* CPUSS DataWire #1, Channel #20 */ + def_irq_handler cpuss_interrupts_dw1_21_IRQHandler /* CPUSS DataWire #1, Channel #21 */ + def_irq_handler cpuss_interrupts_dw1_22_IRQHandler /* CPUSS DataWire #1, Channel #22 */ + def_irq_handler cpuss_interrupts_dw1_23_IRQHandler /* CPUSS DataWire #1, Channel #23 */ + def_irq_handler cpuss_interrupts_dw1_24_IRQHandler /* CPUSS DataWire #1, Channel #24 */ + def_irq_handler cpuss_interrupts_dw1_25_IRQHandler /* CPUSS DataWire #1, Channel #25 */ + def_irq_handler cpuss_interrupts_dw1_26_IRQHandler /* CPUSS DataWire #1, Channel #26 */ + def_irq_handler cpuss_interrupts_dw1_27_IRQHandler /* CPUSS DataWire #1, Channel #27 */ + def_irq_handler cpuss_interrupts_dw1_28_IRQHandler /* CPUSS DataWire #1, Channel #28 */ + def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + def_irq_handler cpuss_interrupts_cm4_fp_IRQHandler /* Floating Point operation fault */ + def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + def_irq_handler audioss_0_interrupt_i2s_IRQHandler /* I2S0 Audio interrupt */ + def_irq_handler audioss_0_interrupt_pdm_IRQHandler /* PDM0/PCM0 Audio interrupt */ + def_irq_handler audioss_1_interrupt_i2s_IRQHandler /* I2S1 Audio interrupt */ + def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */ + def_irq_handler sdhc_0_interrupt_wakeup_IRQHandler /* SDIO wakeup interrupt for mxsdhc */ + def_irq_handler sdhc_0_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + def_irq_handler sdhc_1_interrupt_wakeup_IRQHandler /* EEMC wakeup interrupt for mxsdhc, not used */ + def_irq_handler sdhc_1_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + + .end + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf new file mode 100644 index 00000000000..611b1ccc7a3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cy8c6xxa_cm4_dual.icf +* \version 2.30 +* +* Linker file for the IAR compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point is fixed and starts at 0x10000000. The valid application +* image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; + +if (!isdefinedsymbol(MBED_ROM_START)) { + define symbol MBED_ROM_START = 0x10002000; +} + +if (!isdefinedsymbol(MBED_ROM_SIZE)) { + define symbol MBED_ROM_SIZE = 0x001FE000; +} + +if (!isdefinedsymbol(MBED_RAM_START)) { + define symbol MBED_RAM_START = 0x08002000; +} + +if (!isdefinedsymbol(MBED_RAM_SIZE)) { + define symbol MBED_RAM_SIZE = 0x000FD800; +} + +if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { + define symbol MBED_BOOT_STACK_SIZE = 0x400; +} + +/* The symbols below define the location and size of blocks of memory in the target. + * Use these symbols to specify the memory regions available for allocation. + */ + +/* The following symbols control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing RAM and Flash symbols. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding symbols for CM0+ core in 'xx_cm0plus.icf', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.icf'. + */ +/* RAM */ +define symbol __ICFEDIT_region_IRAM1_start__ = MBED_RAM_START; +define symbol __ICFEDIT_region_IRAM1_end__ = (MBED_RAM_START + MBED_RAM_SIZE); +/* Flash */ +define symbol __ICFEDIT_region_IROM1_start__ = MBED_ROM_START; +define symbol __ICFEDIT_region_IROM1_end__ = (MBED_ROM_START + MBED_ROM_SIZE); + +/* The following symbols define a 32K flash region used for EEPROM emulation. + * This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ +define symbol __ICFEDIT_region_IROM2_start__ = 0x14000000; +define symbol __ICFEDIT_region_IROM2_end__ = 0x14007FFF; + +/* The following symbols define device specific memory regions and must not be changed. */ +/* Supervisory FLASH - User Data */ +define symbol __ICFEDIT_region_IROM3_start__ = 0x16000800; +define symbol __ICFEDIT_region_IROM3_end__ = 0x160007FF; + +/* Supervisory FLASH - Normal Access Restrictions (NAR) */ +define symbol __ICFEDIT_region_IROM4_start__ = 0x16001A00; +define symbol __ICFEDIT_region_IROM4_end__ = 0x16001BFF; + +/* Supervisory FLASH - Public Key */ +define symbol __ICFEDIT_region_IROM5_start__ = 0x16005A00; +define symbol __ICFEDIT_region_IROM5_end__ = 0x160065FF; + +/* Supervisory FLASH - Table of Content # 2 */ +define symbol __ICFEDIT_region_IROM6_start__ = 0x16007C00; +define symbol __ICFEDIT_region_IROM6_end__ = 0x16007DFF; + +/* Supervisory FLASH - Table of Content # 2 Copy */ +define symbol __ICFEDIT_region_IROM7_start__ = 0x16007E00; +define symbol __ICFEDIT_region_IROM7_end__ = 0x16007FFF; + +/* eFuse */ +define symbol __ICFEDIT_region_IROM8_start__ = 0x90700000; +define symbol __ICFEDIT_region_IROM8_end__ = 0x907FFFFF; + +/* XIP */ +define symbol __ICFEDIT_region_EROM1_start__ = 0x18000000; +define symbol __ICFEDIT_region_EROM1_end__ = 0x1FFFFFFF; + +define symbol __ICFEDIT_region_EROM2_start__ = 0x0; +define symbol __ICFEDIT_region_EROM2_end__ = 0x0; +define symbol __ICFEDIT_region_EROM3_start__ = 0x0; +define symbol __ICFEDIT_region_EROM3_end__ = 0x0; + + +define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; +define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; +/*-Sizes-*/ +if (!isdefinedsymbol(__STACK_SIZE)) { + define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; +} else { + define symbol __ICFEDIT_size_cstack__ = __STACK_SIZE; +} + +if (!isdefinedsymbol(__HEAP_SIZE)) { + define symbol __ICFEDIT_size_heap__ = 0x20000; +} else { + define symbol __ICFEDIT_size_heap__ = __HEAP_SIZE; +} +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region IROM1_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]; +define region IROM2_region = mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; +define region IROM3_region = mem:[from __ICFEDIT_region_IROM3_start__ to __ICFEDIT_region_IROM3_end__]; +define region IROM4_region = mem:[from __ICFEDIT_region_IROM4_start__ to __ICFEDIT_region_IROM4_end__]; +define region IROM5_region = mem:[from __ICFEDIT_region_IROM5_start__ to __ICFEDIT_region_IROM5_end__]; +define region IROM6_region = mem:[from __ICFEDIT_region_IROM6_start__ to __ICFEDIT_region_IROM6_end__]; +define region IROM7_region = mem:[from __ICFEDIT_region_IROM7_start__ to __ICFEDIT_region_IROM7_end__]; +define region IROM8_region = mem:[from __ICFEDIT_region_IROM8_start__ to __ICFEDIT_region_IROM8_end__]; +define region EROM1_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__]; +define region IRAM1_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]; + +define block RAM_DATA {readwrite section .data}; +define block RAM_OTHER {readwrite section * }; +define block RAM_NOINIT {readwrite section .noinit}; +define block RAM_BSS {readwrite section .bss}; +define block RAM with fixed order {block RAM_DATA, block RAM_OTHER, block RAM_NOINIT, block RAM_BSS}; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +define block RO {first section .intvec, readonly}; + +/*-Initializations-*/ +initialize by copy { readwrite }; +do not initialize { section .noinit, section .intvec_ram }; + +/*-Placement-*/ + +/* Flash */ +place at start of IROM1_region { block RO }; +".cy_app_signature" : place at address (__ICFEDIT_region_IROM1_end__ - 0x200) { section .cy_app_signature }; + +/* Emulated EEPROM Flash area */ +".cy_em_eeprom" : place at start of IROM2_region { section .cy_em_eeprom }; + +/* Supervisory Flash - User Data */ +".cy_sflash_user_data" : place at start of IROM3_region { section .cy_sflash_user_data }; + +/* Supervisory Flash - NAR */ +".cy_sflash_nar" : place at start of IROM4_region { section .cy_sflash_nar }; + +/* Supervisory Flash - Public Key */ +".cy_sflash_public_key" : place at start of IROM5_region { section .cy_sflash_public_key }; + +/* Supervisory Flash - TOC2 */ +".cy_toc_part2" : place at start of IROM6_region { section .cy_toc_part2 }; + +/* Supervisory Flash - RTOC2 */ +".cy_rtoc_part2" : place at start of IROM7_region { section .cy_rtoc_part2 }; + +/* eFuse */ +".cy_efuse" : place at start of IROM8_region { section .cy_efuse }; + +/* Execute in Place (XIP). See the smif driver documentation for details. */ +".cy_xip" : place at start of EROM1_region { section .cy_xip }; + +/* RAM */ +place at start of IRAM1_region { readwrite section .intvec_ram}; +place in IRAM1_region { block RAM}; +place in IRAM1_region { block HEAP}; +place at end of IRAM1_region { block CSTACK }; + +/* These sections are used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. */ +".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta }; + + +keep { section .cy_app_signature, + section .cy_em_eeprom, + section .cy_sflash_user_data, + section .cy_sflash_nar, + section .cy_sflash_public_key, + section .cy_toc_part2, + section .cy_rtoc_part2, + section .cy_efuse, + section .cy_xip, + section .cymeta, + }; + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +define exported symbol __cy_memory_0_start = 0x10000000; +define exported symbol __cy_memory_0_length = 0x00200000; +define exported symbol __cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +define exported symbol __cy_memory_1_start = 0x14000000; +define exported symbol __cy_memory_1_length = 0x8000; +define exported symbol __cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +define exported symbol __cy_memory_2_start = 0x16000000; +define exported symbol __cy_memory_2_length = 0x8000; +define exported symbol __cy_memory_2_row_size = 0x200; + +/* XIP */ +define exported symbol __cy_memory_3_start = 0x18000000; +define exported symbol __cy_memory_3_length = 0x08000000; +define exported symbol __cy_memory_3_row_size = 0x200; + +/* eFuse */ +define exported symbol __cy_memory_4_start = 0x90700000; +define exported symbol __cy_memory_4_length = 0x100000; +define exported symbol __cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..902e98dca1b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S @@ -0,0 +1,1268 @@ +;/**************************************************************************//** +; * @file startup_psoc6_02_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 08. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + SECTION .intvec_ram:DATA:NOROOT(2) + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + EXTERN Cy_SystemInitFpuEnable + EXTERN __iar_data_init3 + PUBLIC __vector_table + PUBLIC __vector_table_0x1c + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + PUBLIC __ramVectors + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + + DCD 0x0000000D ; NMI_Handler is defined in ROM code + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler +__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD DebugMon_Handler + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + + ; External interrupts Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD scb_9_interrupt_IRQHandler ; Serial Communication Block #9 + DCD scb_10_interrupt_IRQHandler ; Serial Communication Block #10 + DCD scb_11_interrupt_IRQHandler ; Serial Communication Block #11 + DCD scb_12_interrupt_IRQHandler ; Serial Communication Block #12 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dmac_0_IRQHandler ; CPUSS DMAC, Channel #0 + DCD cpuss_interrupts_dmac_1_IRQHandler ; CPUSS DMAC, Channel #1 + DCD cpuss_interrupts_dmac_2_IRQHandler ; CPUSS DMAC, Channel #2 + DCD cpuss_interrupts_dmac_3_IRQHandler ; CPUSS DMAC, Channel #3 + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw0_16_IRQHandler ; CPUSS DataWire #0, Channel #16 + DCD cpuss_interrupts_dw0_17_IRQHandler ; CPUSS DataWire #0, Channel #17 + DCD cpuss_interrupts_dw0_18_IRQHandler ; CPUSS DataWire #0, Channel #18 + DCD cpuss_interrupts_dw0_19_IRQHandler ; CPUSS DataWire #0, Channel #19 + DCD cpuss_interrupts_dw0_20_IRQHandler ; CPUSS DataWire #0, Channel #20 + DCD cpuss_interrupts_dw0_21_IRQHandler ; CPUSS DataWire #0, Channel #21 + DCD cpuss_interrupts_dw0_22_IRQHandler ; CPUSS DataWire #0, Channel #22 + DCD cpuss_interrupts_dw0_23_IRQHandler ; CPUSS DataWire #0, Channel #23 + DCD cpuss_interrupts_dw0_24_IRQHandler ; CPUSS DataWire #0, Channel #24 + DCD cpuss_interrupts_dw0_25_IRQHandler ; CPUSS DataWire #0, Channel #25 + DCD cpuss_interrupts_dw0_26_IRQHandler ; CPUSS DataWire #0, Channel #26 + DCD cpuss_interrupts_dw0_27_IRQHandler ; CPUSS DataWire #0, Channel #27 + DCD cpuss_interrupts_dw0_28_IRQHandler ; CPUSS DataWire #0, Channel #28 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_dw1_16_IRQHandler ; CPUSS DataWire #1, Channel #16 + DCD cpuss_interrupts_dw1_17_IRQHandler ; CPUSS DataWire #1, Channel #17 + DCD cpuss_interrupts_dw1_18_IRQHandler ; CPUSS DataWire #1, Channel #18 + DCD cpuss_interrupts_dw1_19_IRQHandler ; CPUSS DataWire #1, Channel #19 + DCD cpuss_interrupts_dw1_20_IRQHandler ; CPUSS DataWire #1, Channel #20 + DCD cpuss_interrupts_dw1_21_IRQHandler ; CPUSS DataWire #1, Channel #21 + DCD cpuss_interrupts_dw1_22_IRQHandler ; CPUSS DataWire #1, Channel #22 + DCD cpuss_interrupts_dw1_23_IRQHandler ; CPUSS DataWire #1, Channel #23 + DCD cpuss_interrupts_dw1_24_IRQHandler ; CPUSS DataWire #1, Channel #24 + DCD cpuss_interrupts_dw1_25_IRQHandler ; CPUSS DataWire #1, Channel #25 + DCD cpuss_interrupts_dw1_26_IRQHandler ; CPUSS DataWire #1, Channel #26 + DCD cpuss_interrupts_dw1_27_IRQHandler ; CPUSS DataWire #1, Channel #27 + DCD cpuss_interrupts_dw1_28_IRQHandler ; CPUSS DataWire #1, Channel #28 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm4_fp_IRQHandler ; Floating Point operation fault + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_0_interrupt_i2s_IRQHandler ; I2S0 Audio interrupt + DCD audioss_0_interrupt_pdm_IRQHandler ; PDM0/PCM0 Audio interrupt + DCD audioss_1_interrupt_i2s_IRQHandler ; I2S1 Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD sdhc_0_interrupt_wakeup_IRQHandler ; SDIO wakeup interrupt for mxsdhc + DCD sdhc_0_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + DCD sdhc_1_interrupt_wakeup_IRQHandler ; EEMC wakeup interrupt for mxsdhc, not used + DCD sdhc_1_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + +__Vectors_End + +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors + + SECTION .intvec_ram:DATA:REORDER:NOROOT(2) +__ramVectors + DS32 __Vectors_Size + + + THUMB + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default handlers +;; + PUBWEAK Default_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Default_Handler + B Default_Handler + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Weak function for startup customization +;; +;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +;; because this function is executed as the first instruction in the ResetHandler. +;; The PDL is also not initialized to use the proper register offsets. +;; The user of this function is responsible for initializing the PDL and resources before using them. +;; + PUBWEAK Cy_OnResetUser + SECTION .text:CODE:REORDER:NOROOT(2) +Cy_OnResetUser + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Define strong version to return zero for +;; __iar_program_start to skip data sections +;; initialization. +;; + PUBLIC __low_level_init + SECTION .text:CODE:REORDER:NOROOT(2) +__low_level_init + MOVS R0, #0 + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + + ; Define strong function for startup customization + LDR R0, =Cy_OnResetUser + BLX R0 + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__vector_table + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +intvec_copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE intvec_copy + + ; Update Vector Table Offset Register + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + ; Initialize data sections + LDR R0, =__iar_data_init3 + BLX R0 + + LDR R0, =SystemInit + BLX R0 + + LDR R0, =__iar_program_start + BLX R0 + +; Should never get here +Cy_Main_Exited + B Cy_Main_Exited + + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B NMI_Handler + + + PUBWEAK Cy_SysLib_FaultHandler + SECTION .text:CODE:REORDER:NOROOT(1) +Cy_SysLib_FaultHandler + B Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Wrapper + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Wrapper + IMPORT Cy_SysLib_FaultHandler + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + b L_API_call +L_MSP + mrs r0, MSP +L_API_call + ; Storing LR content for Creator call stack trace + push {LR} + bl Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B HardFault_Wrapper + + PUBWEAK MemManage_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +MemManage_Handler + B HardFault_Wrapper + + PUBWEAK BusFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +BusFault_Handler + B HardFault_Wrapper + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +UsageFault_Handler + B HardFault_Wrapper + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B SysTick_Handler + + + ; External interrupts + PUBWEAK ioss_interrupts_gpio_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_0_IRQHandler + B ioss_interrupts_gpio_0_IRQHandler + + PUBWEAK ioss_interrupts_gpio_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_1_IRQHandler + B ioss_interrupts_gpio_1_IRQHandler + + PUBWEAK ioss_interrupts_gpio_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_2_IRQHandler + B ioss_interrupts_gpio_2_IRQHandler + + PUBWEAK ioss_interrupts_gpio_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_3_IRQHandler + B ioss_interrupts_gpio_3_IRQHandler + + PUBWEAK ioss_interrupts_gpio_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_4_IRQHandler + B ioss_interrupts_gpio_4_IRQHandler + + PUBWEAK ioss_interrupts_gpio_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_5_IRQHandler + B ioss_interrupts_gpio_5_IRQHandler + + PUBWEAK ioss_interrupts_gpio_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_6_IRQHandler + B ioss_interrupts_gpio_6_IRQHandler + + PUBWEAK ioss_interrupts_gpio_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_7_IRQHandler + B ioss_interrupts_gpio_7_IRQHandler + + PUBWEAK ioss_interrupts_gpio_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_8_IRQHandler + B ioss_interrupts_gpio_8_IRQHandler + + PUBWEAK ioss_interrupts_gpio_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_9_IRQHandler + B ioss_interrupts_gpio_9_IRQHandler + + PUBWEAK ioss_interrupts_gpio_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_10_IRQHandler + B ioss_interrupts_gpio_10_IRQHandler + + PUBWEAK ioss_interrupts_gpio_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_11_IRQHandler + B ioss_interrupts_gpio_11_IRQHandler + + PUBWEAK ioss_interrupts_gpio_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_12_IRQHandler + B ioss_interrupts_gpio_12_IRQHandler + + PUBWEAK ioss_interrupts_gpio_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_13_IRQHandler + B ioss_interrupts_gpio_13_IRQHandler + + PUBWEAK ioss_interrupts_gpio_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_14_IRQHandler + B ioss_interrupts_gpio_14_IRQHandler + + PUBWEAK ioss_interrupt_gpio_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_gpio_IRQHandler + B ioss_interrupt_gpio_IRQHandler + + PUBWEAK ioss_interrupt_vdd_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_vdd_IRQHandler + B ioss_interrupt_vdd_IRQHandler + + PUBWEAK lpcomp_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +lpcomp_interrupt_IRQHandler + B lpcomp_interrupt_IRQHandler + + PUBWEAK scb_8_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_8_interrupt_IRQHandler + B scb_8_interrupt_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_0_IRQHandler + B srss_interrupt_mcwdt_0_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_1_IRQHandler + B srss_interrupt_mcwdt_1_IRQHandler + + PUBWEAK srss_interrupt_backup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_backup_IRQHandler + B srss_interrupt_backup_IRQHandler + + PUBWEAK srss_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_IRQHandler + B srss_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_0_IRQHandler + B cpuss_interrupts_ipc_0_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_1_IRQHandler + B cpuss_interrupts_ipc_1_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_2_IRQHandler + B cpuss_interrupts_ipc_2_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_3_IRQHandler + B cpuss_interrupts_ipc_3_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_4_IRQHandler + B cpuss_interrupts_ipc_4_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_5_IRQHandler + B cpuss_interrupts_ipc_5_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_6_IRQHandler + B cpuss_interrupts_ipc_6_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_7_IRQHandler + B cpuss_interrupts_ipc_7_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_8_IRQHandler + B cpuss_interrupts_ipc_8_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_9_IRQHandler + B cpuss_interrupts_ipc_9_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_10_IRQHandler + B cpuss_interrupts_ipc_10_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_11_IRQHandler + B cpuss_interrupts_ipc_11_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_12_IRQHandler + B cpuss_interrupts_ipc_12_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_13_IRQHandler + B cpuss_interrupts_ipc_13_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_14_IRQHandler + B cpuss_interrupts_ipc_14_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_15_IRQHandler + B cpuss_interrupts_ipc_15_IRQHandler + + PUBWEAK scb_0_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_0_interrupt_IRQHandler + B scb_0_interrupt_IRQHandler + + PUBWEAK scb_1_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_1_interrupt_IRQHandler + B scb_1_interrupt_IRQHandler + + PUBWEAK scb_2_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_2_interrupt_IRQHandler + B scb_2_interrupt_IRQHandler + + PUBWEAK scb_3_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_3_interrupt_IRQHandler + B scb_3_interrupt_IRQHandler + + PUBWEAK scb_4_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_4_interrupt_IRQHandler + B scb_4_interrupt_IRQHandler + + PUBWEAK scb_5_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_5_interrupt_IRQHandler + B scb_5_interrupt_IRQHandler + + PUBWEAK scb_6_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_6_interrupt_IRQHandler + B scb_6_interrupt_IRQHandler + + PUBWEAK scb_7_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_7_interrupt_IRQHandler + B scb_7_interrupt_IRQHandler + + PUBWEAK scb_9_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_9_interrupt_IRQHandler + B scb_9_interrupt_IRQHandler + + PUBWEAK scb_10_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_10_interrupt_IRQHandler + B scb_10_interrupt_IRQHandler + + PUBWEAK scb_11_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_11_interrupt_IRQHandler + B scb_11_interrupt_IRQHandler + + PUBWEAK scb_12_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_12_interrupt_IRQHandler + B scb_12_interrupt_IRQHandler + + PUBWEAK csd_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +csd_interrupt_IRQHandler + B csd_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_0_IRQHandler + B cpuss_interrupts_dmac_0_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_1_IRQHandler + B cpuss_interrupts_dmac_1_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_2_IRQHandler + B cpuss_interrupts_dmac_2_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_3_IRQHandler + B cpuss_interrupts_dmac_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_0_IRQHandler + B cpuss_interrupts_dw0_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_1_IRQHandler + B cpuss_interrupts_dw0_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_2_IRQHandler + B cpuss_interrupts_dw0_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_3_IRQHandler + B cpuss_interrupts_dw0_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_4_IRQHandler + B cpuss_interrupts_dw0_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_5_IRQHandler + B cpuss_interrupts_dw0_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_6_IRQHandler + B cpuss_interrupts_dw0_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_7_IRQHandler + B cpuss_interrupts_dw0_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_8_IRQHandler + B cpuss_interrupts_dw0_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_9_IRQHandler + B cpuss_interrupts_dw0_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_10_IRQHandler + B cpuss_interrupts_dw0_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_11_IRQHandler + B cpuss_interrupts_dw0_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_12_IRQHandler + B cpuss_interrupts_dw0_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_13_IRQHandler + B cpuss_interrupts_dw0_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_14_IRQHandler + B cpuss_interrupts_dw0_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_15_IRQHandler + B cpuss_interrupts_dw0_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_16_IRQHandler + B cpuss_interrupts_dw0_16_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_17_IRQHandler + B cpuss_interrupts_dw0_17_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_18_IRQHandler + B cpuss_interrupts_dw0_18_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_19_IRQHandler + B cpuss_interrupts_dw0_19_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_20_IRQHandler + B cpuss_interrupts_dw0_20_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_21_IRQHandler + B cpuss_interrupts_dw0_21_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_22_IRQHandler + B cpuss_interrupts_dw0_22_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_23_IRQHandler + B cpuss_interrupts_dw0_23_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_24_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_24_IRQHandler + B cpuss_interrupts_dw0_24_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_25_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_25_IRQHandler + B cpuss_interrupts_dw0_25_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_26_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_26_IRQHandler + B cpuss_interrupts_dw0_26_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_27_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_27_IRQHandler + B cpuss_interrupts_dw0_27_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_28_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_28_IRQHandler + B cpuss_interrupts_dw0_28_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_0_IRQHandler + B cpuss_interrupts_dw1_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_1_IRQHandler + B cpuss_interrupts_dw1_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_2_IRQHandler + B cpuss_interrupts_dw1_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_3_IRQHandler + B cpuss_interrupts_dw1_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_4_IRQHandler + B cpuss_interrupts_dw1_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_5_IRQHandler + B cpuss_interrupts_dw1_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_6_IRQHandler + B cpuss_interrupts_dw1_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_7_IRQHandler + B cpuss_interrupts_dw1_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_8_IRQHandler + B cpuss_interrupts_dw1_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_9_IRQHandler + B cpuss_interrupts_dw1_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_10_IRQHandler + B cpuss_interrupts_dw1_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_11_IRQHandler + B cpuss_interrupts_dw1_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_12_IRQHandler + B cpuss_interrupts_dw1_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_13_IRQHandler + B cpuss_interrupts_dw1_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_14_IRQHandler + B cpuss_interrupts_dw1_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_15_IRQHandler + B cpuss_interrupts_dw1_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_16_IRQHandler + B cpuss_interrupts_dw1_16_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_17_IRQHandler + B cpuss_interrupts_dw1_17_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_18_IRQHandler + B cpuss_interrupts_dw1_18_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_19_IRQHandler + B cpuss_interrupts_dw1_19_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_20_IRQHandler + B cpuss_interrupts_dw1_20_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_21_IRQHandler + B cpuss_interrupts_dw1_21_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_22_IRQHandler + B cpuss_interrupts_dw1_22_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_23_IRQHandler + B cpuss_interrupts_dw1_23_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_24_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_24_IRQHandler + B cpuss_interrupts_dw1_24_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_25_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_25_IRQHandler + B cpuss_interrupts_dw1_25_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_26_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_26_IRQHandler + B cpuss_interrupts_dw1_26_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_27_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_27_IRQHandler + B cpuss_interrupts_dw1_27_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_28_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_28_IRQHandler + B cpuss_interrupts_dw1_28_IRQHandler + + PUBWEAK cpuss_interrupts_fault_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_0_IRQHandler + B cpuss_interrupts_fault_0_IRQHandler + + PUBWEAK cpuss_interrupts_fault_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_1_IRQHandler + B cpuss_interrupts_fault_1_IRQHandler + + PUBWEAK cpuss_interrupt_crypto_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_crypto_IRQHandler + B cpuss_interrupt_crypto_IRQHandler + + PUBWEAK cpuss_interrupt_fm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_fm_IRQHandler + B cpuss_interrupt_fm_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_fp_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_fp_IRQHandler + B cpuss_interrupts_cm4_fp_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_0_IRQHandler + B cpuss_interrupts_cm0_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_1_IRQHandler + B cpuss_interrupts_cm0_cti_1_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_0_IRQHandler + B cpuss_interrupts_cm4_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_1_IRQHandler + B cpuss_interrupts_cm4_cti_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_0_IRQHandler + B tcpwm_0_interrupts_0_IRQHandler + + PUBWEAK tcpwm_0_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_1_IRQHandler + B tcpwm_0_interrupts_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_2_IRQHandler + B tcpwm_0_interrupts_2_IRQHandler + + PUBWEAK tcpwm_0_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_3_IRQHandler + B tcpwm_0_interrupts_3_IRQHandler + + PUBWEAK tcpwm_0_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_4_IRQHandler + B tcpwm_0_interrupts_4_IRQHandler + + PUBWEAK tcpwm_0_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_5_IRQHandler + B tcpwm_0_interrupts_5_IRQHandler + + PUBWEAK tcpwm_0_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_6_IRQHandler + B tcpwm_0_interrupts_6_IRQHandler + + PUBWEAK tcpwm_0_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_7_IRQHandler + B tcpwm_0_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_0_IRQHandler + B tcpwm_1_interrupts_0_IRQHandler + + PUBWEAK tcpwm_1_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_1_IRQHandler + B tcpwm_1_interrupts_1_IRQHandler + + PUBWEAK tcpwm_1_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_2_IRQHandler + B tcpwm_1_interrupts_2_IRQHandler + + PUBWEAK tcpwm_1_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_3_IRQHandler + B tcpwm_1_interrupts_3_IRQHandler + + PUBWEAK tcpwm_1_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_4_IRQHandler + B tcpwm_1_interrupts_4_IRQHandler + + PUBWEAK tcpwm_1_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_5_IRQHandler + B tcpwm_1_interrupts_5_IRQHandler + + PUBWEAK tcpwm_1_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_6_IRQHandler + B tcpwm_1_interrupts_6_IRQHandler + + PUBWEAK tcpwm_1_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_7_IRQHandler + B tcpwm_1_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_8_IRQHandler + B tcpwm_1_interrupts_8_IRQHandler + + PUBWEAK tcpwm_1_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_9_IRQHandler + B tcpwm_1_interrupts_9_IRQHandler + + PUBWEAK tcpwm_1_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_10_IRQHandler + B tcpwm_1_interrupts_10_IRQHandler + + PUBWEAK tcpwm_1_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_11_IRQHandler + B tcpwm_1_interrupts_11_IRQHandler + + PUBWEAK tcpwm_1_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_12_IRQHandler + B tcpwm_1_interrupts_12_IRQHandler + + PUBWEAK tcpwm_1_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_13_IRQHandler + B tcpwm_1_interrupts_13_IRQHandler + + PUBWEAK tcpwm_1_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_14_IRQHandler + B tcpwm_1_interrupts_14_IRQHandler + + PUBWEAK tcpwm_1_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_15_IRQHandler + B tcpwm_1_interrupts_15_IRQHandler + + PUBWEAK tcpwm_1_interrupts_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_16_IRQHandler + B tcpwm_1_interrupts_16_IRQHandler + + PUBWEAK tcpwm_1_interrupts_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_17_IRQHandler + B tcpwm_1_interrupts_17_IRQHandler + + PUBWEAK tcpwm_1_interrupts_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_18_IRQHandler + B tcpwm_1_interrupts_18_IRQHandler + + PUBWEAK tcpwm_1_interrupts_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_19_IRQHandler + B tcpwm_1_interrupts_19_IRQHandler + + PUBWEAK tcpwm_1_interrupts_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_20_IRQHandler + B tcpwm_1_interrupts_20_IRQHandler + + PUBWEAK tcpwm_1_interrupts_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_21_IRQHandler + B tcpwm_1_interrupts_21_IRQHandler + + PUBWEAK tcpwm_1_interrupts_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_22_IRQHandler + B tcpwm_1_interrupts_22_IRQHandler + + PUBWEAK tcpwm_1_interrupts_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_23_IRQHandler + B tcpwm_1_interrupts_23_IRQHandler + + PUBWEAK pass_interrupt_sar_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_sar_IRQHandler + B pass_interrupt_sar_IRQHandler + + PUBWEAK audioss_0_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_0_interrupt_i2s_IRQHandler + B audioss_0_interrupt_i2s_IRQHandler + + PUBWEAK audioss_0_interrupt_pdm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_0_interrupt_pdm_IRQHandler + B audioss_0_interrupt_pdm_IRQHandler + + PUBWEAK audioss_1_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_1_interrupt_i2s_IRQHandler + B audioss_1_interrupt_i2s_IRQHandler + + PUBWEAK profile_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +profile_interrupt_IRQHandler + B profile_interrupt_IRQHandler + + PUBWEAK smif_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +smif_interrupt_IRQHandler + B smif_interrupt_IRQHandler + + PUBWEAK usb_interrupt_hi_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_hi_IRQHandler + B usb_interrupt_hi_IRQHandler + + PUBWEAK usb_interrupt_med_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_med_IRQHandler + B usb_interrupt_med_IRQHandler + + PUBWEAK usb_interrupt_lo_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_lo_IRQHandler + B usb_interrupt_lo_IRQHandler + + PUBWEAK sdhc_0_interrupt_wakeup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_0_interrupt_wakeup_IRQHandler + B sdhc_0_interrupt_wakeup_IRQHandler + + PUBWEAK sdhc_0_interrupt_general_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_0_interrupt_general_IRQHandler + B sdhc_0_interrupt_general_IRQHandler + + PUBWEAK sdhc_1_interrupt_wakeup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_1_interrupt_wakeup_IRQHandler + B sdhc_1_interrupt_wakeup_IRQHandler + + PUBWEAK sdhc_1_interrupt_general_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_1_interrupt_general_IRQHandler + B sdhc_1_interrupt_general_IRQHandler + + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/LICENSE.txt b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/LICENSE.txt new file mode 100644 index 00000000000..7adfadddb21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2018-2019 Cypress Semiconductor Corporation + +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/README.md new file mode 100644 index 00000000000..4fb5046d275 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/README.md @@ -0,0 +1,18 @@ +README for pre-compiled PSoC 6 Cortex M0+ core images +===================================================== + +This folder contains precompiled program images for the CM0+ core of the +PSoC 6 MCU suitable for use with Mbed OS applications running on CM4 core. + +* `psoc6_02_cm0p_sleep.hex` + + This image starts CM4 core at CY_CORTEX_M4_APPL_ADDR=0x10080000 + and puts CM0+ core into a deep sleep. + +The images are 'bare metal' code prepared with Cypress ModusToolbox IDE +and are toolchain agnostic, i.e. can be used with CM4 Mbed applications +build with any supported toolchain. + +**These images were prepared by Cypress Semiconductor Corporation +and are made available under the conditions of Permissive Binary Licence, +see file LICENSE.txt** diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex new file mode 100644 index 00000000000..431f99f8b55 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex @@ -0,0 +1,82 @@ +:020000041000EA +:4000000000200008CB0000100D0000002D010010000000000000000000000000000000000000000000000000000000002901001000000000000000002901001029010010C4 +:4000400029010010290100102901001029010010290100102901001029010010290100102901001029010010290100102901001029010010290100102901001029010010E0 +:4000800010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BDD40200080000000074110010044B10B5002B03D00349044800E000BF10BDC0460000000040 +:4000C000D8020008741100107047FFF7FDFF72B60F4C104DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E70A490B4A0020521A02DD043A8850FCDC08480949D7 +:400100000860BFF34F8F00F0E7F800F073F9FEE77811001090110010D4020008CC0400080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880AE +:40014000043000F0DBFBFEE710B5002000F096FA10BD7047E02370B54F4C9B00E2580F23D021072013409A00121989005158014065D0042959D04948002B65D1B223B12225 +:400180000321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233D4ADB00E558A158E658C904C90C00F0AEFDAD03AD0BD4 +:4001C0006843F101C90F013100F0A6FDE0239B00E358344A9B069B0FD840334B1860334BD458D158240A090E013100F095FD304BE1B21860013100F08FFD2E4B0400186020 +:400200002D4B2E4918602E4BC01800F085FDFA212C4B890018702C4BE01800F07DFD2B4B18602B4BC003186070BDC021890052581F210A40112A04D1802000029CE725480C +:400240009AE7FA20C00197E7012BBFD1C823C0220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032BA9D1C022D200A358A158BE +:40028000A5587F221F261340090A3140584300F043FD290C314097E70000264000366E018405000000002040840000080810000088000008800000089000000840420F00BC +:4002C0003F420F0098000008E7030000940000088C00000800127A0010B51D4800F0A8F8B022E02130201B4CD200A35889005B005B08A35063588343635080235B04A350B4 +:40030000154B164AE250A02204339201E250FF22134BE25000F098FCC02201215200A3588B43A350FFF715FFFFF714FF0D4A8021042000F00BFA0C4800F080F80B4B1B680D +:4003400051331B78002B02D0094800F0E3F810BDC40E00100000264084050000010002008C050000F002000800030008C8040008900E001010B5902400F053F8074B640129 +:400380001A5907491140074A0A431A51102259681142FCD000F049F810BDC04600002040FCFF00000100FA05F8B590250E4C6D01070000F036F863590600DB439B0701D10C +:4003C000FFF7D8FF80239B00E7506359074A1A40074B13436351102362681A42FCD0300000F023F8F8BDC04600002040FCFF00000300FA0510B562B60348FFF7D5FF00206E +:4004000000F08CFBFBE7C04600200010000000000230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047014B18607047C046C8040008024B1A686E +:40044000002A00D11860704780040008F7B52C4D1F002B68040000910192002B03D1B521284800F03BFA2C23FF225C432B683D001C193B0A3F0CA760234F134063603B6887 +:400480001540256031331B789D4204D3C4211F48FF3100F023FA3B681A00B032128855431A6A3233AD1825611B7865689D4204D3E0211648FF3100F011FA3B6880351B6AAA +:4004C0006D01A668ED186561330C09D0FF210F4F4900380000F002FA0D49380000F0FEF933041A0C1343AB60019BE361009B23620023A361089B002B01D01B782373F7BDDC +:40050000800400087C0F0010C8040008E20F0010FF010000F0B5040085B0002803D15221214800F0DBF96368032B03D954211E4800F0D4F9E36A002B03D158211A4800F0C1 +:40054000CDF9236B002B03D15921174800F0C6F9A36802AD2B70154B22681B68E16ADB8EE0689B186B706368A26A039300952369266A676AFFF76AFF00213B000A0000910F +:400580003000FFF763FF216B280000F053F90023EB56002B06DB1F2213401E3A9A401300034A136005B0F0BD7C0F0010C804000800E100E0002373B504000193984204D196 +:4005C000D2212C48FF3100F089F92369002B04D1E9212848490000F081F96369002B04D1D4212448FF3100F079F9236A002B04D1EA212048490000F071F96269D5682B0C98 +:4006000022D01B04136013681B4B20691B68B4331B68C3181B68002B16DA01A900F060FB0026B0420CD10198E26903681E0CDBB29A4205D9226A9B009B58002B00D09847C8 +:400640003100206900F012FBADB2002D09D063691D6000251B68636AAB4205D098476562A56163691B6873BDA36A002BF8D09847F6E7C0467C0F0010C804000870B5084C09 +:4006800005002368002B04D1B2210648FF3100F025F92C20454320684019FFF78BFF70BD800400087C0F001070B50A4D04002B6831331B78834204D8C4210748FF3100F0C3 +:4006C0000DF92B681A00B03210884443186A201870BDC046C8040008E20F0010F8B5174B0D001B6831331B78834225D9002923D01F240B681C401FD1FFF7D6FF07002B68A8 +:400700000F4EDA0821003060686800F091FB2100380000F0ABFA21002A00306800F0C6FA041E07D10100306800F0A0FA03002000002B00D00348F8BD0348FCE7C8040008BF +:400740008C04000801018A0003018A0010B50C00002A07D100290DD1FFF7A6FF064B1860200010BD002905D004490C604A60FFF7B5FFF6E70248F4E78C0400088404000867 +:4007800003018A0070B51A4E050033680C001A0028321278012A15D182080721100088430FD103202840C00084401B68920020339B182200FF24844019684A4014404C40D8 +:4007C0001C6070BD5B8FDBB28B4203D17621094800F084F80720802205408020336892011B680006A4180543A400E550E9E7C046C8040008481000100A4B70B59B680A4EBB +:4008000010300D008400B34209D1002904D138210648FF3100F062F83059355170BD044B1859FBE700ED00E0000000084810001000000010F8B506000D00002841D043682A +:40084000032B03D93221204800F048F800203056002828DB7178FFF795FF0024FF2200200327944630567168C3B21F40FF006646BA4089013140D243B940002815DB134E7C +:4008800083089B009B19C026B6009F593A40114399510F4B9A680F4B9A4202D12900FFF7ABFF2000F8BD0C4CD8E70F263340083B074E9B089B009B19DE6932401143D9617F +:4008C000E7E7054CEDE7C0464810001000E100E000ED00E0000000080100560070B50D00044C01001822200000F0AAFAA56101BEFEE7C04698020008FEE7000002680A4B43 +:4009000010B5DA6142681A6282685A62C2689A620269DA6242691A6382695A63C2699A63FFF7EAFF10BDC04698020008B0235B055A782120002A01D05878C0B27047B023C5 +:400940005B059A89002A02D0988980B2704780204000FBE710B5074C236831331B78002B04D1C4210448FF31FFF7B8FF2368186A10BDC046C8040008E20F001030B50400E6 +:4009800085B00D00042803D927492848FFF7A6FF6B1E012B07D9FB222B1F134203D024492248FFF79BFF234BA400E458042D01D0012D1AD100200FE0A3682B420BD1E368D0 +:4009C00029001A685B6802920193039302A823689847194B1C606469002C04D0174B9842EAD1012DE8D105B030BD022D06D1124B1B68181EF7D01C6903E01C006369002B2C +:400A0000FBD10020002CEED0A3682B4209D1E36829001A685B6802920193039302A8236898472469EEE7C046DC090000AC100010DD0900009404000890040008FF00420087 +:400A400010B5041E03D111491148FFF747FFF222104BD2011B68DB689A582260F022D2019A5862600C4A9A58A2600C4A9A58E2600B4A9A5822610B4A9A5862610A4A9A58C9 +:400A8000A2610A4A9B58E36110BDC046CB0A0000AC100010C804000804780000087800000C78000010780000147800001878000010B5041E03D110491048FFF70FFFF022BA +:400AC0000F4B61681B68D201DB689950A1680D4A9950E1680C4A995021690C4A995061690B4A9950A1690B4A9950E1690A4A99502168E832995010BDF30A0000AC100010BE +:400B0000C804000804780000087800000C780000107800001478000018780000F7B50700012803D940494148FFF7D8FE404D6B68002B4AD1FFF775FC6B680190002B56D164 +:400B40003C4E33681A0043321278002A07D09B68E0331B68DB0602D53748FFF771FFFFF7EEFE80235B00984246D1380000F088F9002433681A0043321278002A17D0002875 +:400B800015D09B68E0331B68DB0610D5FFF7CEFE294B212808D032681300B033198807234B43126A9B18DB681800FFF781FF0198FFF73BFC002C0ED16B68002B03D00821E6 +:400BC0000120FFF7DBFE2000FEBD01210800FFF7D5FE041EAED06B68002B03D002210120FFF7CCFE154B9C42EDD0154CEBE704210120FFF7C3FEA3E7FFF7ACFE3368B433EB +:400C00001B68C0180368002B0BDB04230D4A11690B431361012F02D030BF0020A8E720BFFBE70020054CA4E7A5020000AC10001094040008C8040008A804000805004200E4 +:400C4000FF00420000ED00E0C0228020064952008B58C0059B009B0803438B50802388581B0603438B507047000026400B4B70B51B680500B4331B680C00C3181B68002B58 +:400C800009DA0B0C03D006490648FFF727FE0020A4B26C6070BD0448FCE7C046C8040008D5020000E20F001001008A00036870B505000C00002B0ADAC2600B0C03D00549CA +:400CC0000548FFF70BFE0020A4B2AC6070BD0348FCE7C046BB020000E20F001001008A0070B505000C1E03D199210848FFF7F6FD074B1B68B4331B68EB181B68002B03DA94 +:400D00000020EB68236070BD0248FCE70F110010C804000801008A00002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030CBE +:400D40008B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B0378 +:400D8000C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A74 +:400DC000524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143085B +:400E00008B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E770477047C04603001218934200D1704719700133F9E7EE +:400E400030B50500002A00D130BD0C78013A6B1C2C700131002C05D19A189A42F4D01C700133FAE71D00EDE7F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E4670471A +:400E800001B40248844601BC604700BFA500000803000000010000000100000000000000050360000400000001000000000000000100000006046000080000006004000848 +:400EC000490100100000204000002440000000400000000000002340000030400000314000009F40000022400000104002020202020202020210101D800017007500FF0362 +:400F00000602063604102000000000007FC0000000040000000000000019324B647D00804000080B100000000000FF012002001F00800004FF081018001000140018001C50 +:400F40004044484C50000000081000000800000004000000041000000012000004210000002100000016000040114002C41300138013A013200000001C000000433A2F5563 +:400F8000736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F6386 +:400FC0003670646C2F647269766572732F736F757263652F63795F6970635F706970652E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E31A3 +:401000002F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F696E636C7564652F63795F6970B0 +:40104000635F6472762E6800433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D0B +:40108000706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F737973696E742E6300433A2F55736572732F766D65642F4D6F6475735418 +:4010C0006F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F753E +:401100007263652F63795F737973706D2E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D7B +:40114000312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F6970635F6472762E630000000000000000100000000828 +:4011800080000000981100108000000818020000D4020008F801000000093D0000127A0000093D000000D00700093D00A00F000004000000A900001081000010F7B56E4DE4 +:4011C00004002A68536800931300B033198807234B43126A9B181A68002AFCDA00F0E0F82A681300B033198807234B43212800D096E0116A5B180221D8680143D960D968C4 +:40120000C9072FD508208446944460461600D968C06F01911168883608183568076849190D683902FF273F040F40694689882D0A2D0639432943D960902103684F4D090118 +:401240002B400B430360136830681B18186805402943196013686246D26F9A18126832689B181B68444D2A681300B033198807234B43126A9B1800225A600423404A11695A +:401280000B431361012C50D030BF2A681300B033198807234B43126A9B181A68002AFCDA00F07EF8212842D1296807220B000124B0331B8800205A430B6AD318DD682542A3 +:4012C0001CD0080008300D68C06F2C4E28180568DB6835401B0C1B061B0C2B4303600B00883318680B6818180B6A0568D318DB682E401B0E1B023343036020000B6A0221C1 +:40130000D218D3688B43D3601B4B1A681300B033198807234B43126A9B1800225A60FEBD126A9B18174ADA609CE720BFADE70020009BFC331B698342E6D1A320124B134964 +:40134000134A144FC0000E681D5814680F6006271F503E20106010483E371F501F58002FFCDA00980D4FFC3007610E60A321C9005D5001201460C7E7C8040008FF00FFFFB1 +:4013800000ED00E0A80400080000264008012640040126401E1F00001C050000AAAAAAAA01B40248844601BC604700BF2D0900100000000000000000000000000000000034 +:4013C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED +:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6.h new file mode 100644 index 00000000000..6dcb0ce124d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6.h @@ -0,0 +1,669 @@ +/***************************************************************************//** +* \file system_psoc6.h +* \version 2.30 +* +* \brief Device system header file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#ifndef _SYSTEM_PSOC6_H_ +#define _SYSTEM_PSOC6_H_ + +/** +* \addtogroup group_system_config +* \{ +* Provides device startup, system configuration, and linker script files. +* The system startup provides the followings features: +* - See \ref group_system_config_device_initialization for the: +* * \ref group_system_config_dual_core_device_initialization +* * \ref group_system_config_single_core_device_initialization +* - \ref group_system_config_device_memory_definition +* - \ref group_system_config_heap_stack_config +* - \ref group_system_config_merge_apps +* - \ref group_system_config_default_handlers +* - \ref group_system_config_device_vector_table +* - \ref group_system_config_cm4_functions +* +* \section group_system_config_configuration Configuration Considerations +* +* \subsection group_system_config_device_memory_definition Device Memory Definition +* The flash and RAM allocation for each CPU is defined by the linker scripts. +* For dual-core devices, the physical flash and RAM memory is shared between the CPU cores. +* 2 KB of RAM (allocated at the end of RAM) are reserved for system use. +* For Single-Core devices the system reserves additional 80 bytes of RAM. +* Using the reserved memory area for other purposes will lead to unexpected behavior. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see warnings during the build process. To eliminate build +* warnings in your project, you can simply comment out or remove the relevant +* code in the linker file. +* +* ARM GCC\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.ld', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.ld' and 'cy8c6xx7_cm4_dual.ld'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10000000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00024000 +* \endcode +* - 'xx_cm4_dual.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10080000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the rom ORIGIN's +* value in the 'xx_cm4_dual.ld' file, where 'xx' is the device group. Do this +* by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* ARM MDK\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.scat', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.scat' and 'cy8c6xx7_cm4_dual.scat'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see the warnings during the build process: +* L6314W (no section matches pattern) and/or L6329W +* (pattern only matches removed unused sections). In your project, you can +* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +* the linker. You can also comment out or remove the relevant code in the linker +* file. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10000000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08000000 +* #define RAM_SIZE 0x00024000 +* \endcode +* - 'xx_cm4_dual.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10080000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08024000 +* #define RAM_SIZE 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the FLASH_START +* value in the 'xx_cm4_dual.scat' file, +* where 'xx' is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* IAR\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.icf', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.icf' and 'cy8c6xx7_cm4_dual.icf'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10000000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10080000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08000000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08024000; +* \endcode +* - 'xx_cm4_dual.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10080000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10100000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08024000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08047800; +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the +* __ICFEDIT_region_IROM1_start__ value in the 'xx_cm4_dual.icf' file, where 'xx' +* is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* \subsection group_system_config_device_initialization Device Initialization +* After a power-on-reset (POR), the boot process is handled by the boot code +* from the on-chip ROM that is always executed by the Cortex-M0+ core. The boot +* code passes the control to the Cortex-M0+ startup code located in flash. +* +* \subsubsection group_system_config_dual_core_device_initialization Dual-Core Devices +* The Cortex-M0+ startup code performs the device initialization by a call to +* SystemInit() and then calls the main() function. The Cortex-M4 core is disabled +* by default. Enable the core using the \ref Cy_SysEnableCM4() function. +* See \ref group_system_config_cm4_functions for more details. +* \note Startup code executes SystemInit() function for the both Cortex-M0+ and Cortex-M4 cores. +* The function has a separate implementation on each core. +* Both function implementations unlock and disable the WDT. +* Therefore enable the WDT after both cores have been initialized. +* +* \subsubsection group_system_config_single_core_device_initialization Single-Core Devices +* The Cortex-M0+ core is not user-accessible on these devices. In this case the +* Flash Boot handles setup of the CM0+ core and starts the Cortex-M4 core. +* +* \subsection group_system_config_heap_stack_config Heap and Stack Configuration +* There are two ways to adjust heap and stack configurations: +* -# Editing source code files +* -# Specifying via command line +* +* By default, the stack size is set to 0x00001000 and the heap size is set to 0x00000400. +* +* \subsubsection group_system_config_heap_stack_config_gcc ARM GCC +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* Change the heap and stack sizes by modifying the following lines:\n +* \code .equ Stack_Size, 0x00001000 \endcode +* \code .equ Heap_Size, 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the compiler:\n +* \code -D __STACK_SIZE=0x000000400 \endcode +* \code -D __HEAP_SIZE=0x000000100 \endcode +* +* \subsubsection group_system_config_heap_stack_config_mdk ARM MDK +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the assembler:\n +* \code "--predefine=___STACK_SIZE SETA 0x000000400" \endcode +* \code "--predefine=__HEAP_SIZE SETA 0x000000100" \endcode +* +* \subsubsection group_system_config_heap_stack_config_iar IAR +* - Editing source code files\n +* The heap and stack sizes are defined in the linker scatter files: 'xx_yy.icf', +* where 'xx' is the device family, and 'yy' is the target CPU; for example, +* cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the +* linker (including quotation marks):\n +* \code --define_symbol __STACK_SIZE=0x000000400 \endcode +* \code --define_symbol __HEAP_SIZE=0x000000100 \endcode +* +* \subsection group_system_config_merge_apps Merging CM0+ and CM4 Executables +* The CM0+ project and linker script build the CM0+ application image. Similarly, +* the CM4 linker script builds the CM4 application image. Each specifies +* locations, sizes, and contents of sections in memory. See +* \ref group_system_config_device_memory_definition for the symbols and default +* values. +* +* The cymcuelftool is invoked by a post-build command. The precise project +* setting is IDE-specific. +* +* The cymcuelftool combines the two executables. The tool examines the +* executables to ensure that memory regions either do not overlap, or contain +* identical bytes (shared). If there are no problems, it creates a new ELF file +* with the merged image, without changing any of the addresses or data. +* +* \subsection group_system_config_default_handlers Default Interrupt Handlers Definition +* The default interrupt handler functions are defined as weak functions to a dummy +* handler in the startup file. The naming convention for the interrupt handler names +* is \_IRQHandler. A default interrupt handler can be overwritten in +* user code by defining the handler function using the same name. For example: +* \code +* void scb_0_interrupt_IRQHandler(void) +*{ +* ... +*} +* \endcode +* +* \subsection group_system_config_device_vector_table Vectors Table Copy from Flash to RAM +* This process uses memory sections defined in the linker script. The startup +* code actually defines the contents of the vector table and performs the copy. +* \subsubsection group_system_config_device_vector_table_gcc ARM GCC +* The linker script file is 'xx_yy.ld', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.ld and cy8c6xx7_cm4_dual.ld. +* It defines sections and locations in memory.\n +* Copy interrupt vectors from flash to RAM: \n +* From: \code LONG (__Vectors) \endcode +* To: \code LONG (__ram_vectors_start__) \endcode +* Size: \code LONG (__Vectors_End - __Vectors) \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* The code in these files copies the vector table from Flash to RAM. +* \subsubsection group_system_config_device_vector_table_mdk ARM MDK +* The linker script file is 'xx_yy.scat', where 'xx' is the device family, +* and 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.scat and +* cy8c6xx7_cm4_dual.scat. The linker script specifies that the vector table +* (RESET_RAM) shall be first in the RAM section.\n +* RESET_RAM represents the vector table. It is defined in the assembler startup +* files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \subsubsection group_system_config_device_vector_table_iar IAR +* The linker script file is 'xx_yy.icf', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* This file defines the .intvec_ram section and its location. +* \code place at start of IRAM1_region { readwrite section .intvec_ram}; \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \section group_system_config_more_information More Information +* Refer to the PDL User Guide for the +* more details. +* +* \section group_system_config_MISRA MISRA Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
2.3RThe character sequence // shall not be used within a comment.The comments provide a useful WEB link to the documentation.
+* +* \section group_system_config_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.30Added assembler files, linker skripts for Mbed OS.Added Arm Mbed OS embedded operating system support.
Updated linker scripts to extend the Flash and Ram memories size available for the CM4 core.Enhanced PDL usability.
2.20Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup.Changed the IPC driver configuration method from compile time to run time.
2.10Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* uVision Debugger support.
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* Documentation improvement.
2.0Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +*
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* Linker scripts usability improvement.
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API.Reserved system resources for internal operations.
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API.To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering.
1.0Initial version
+* +* +* \defgroup group_system_config_macro Macro +* \{ +* \defgroup group_system_config_system_macro System +* \defgroup group_system_config_cm4_status_macro Cortex-M4 Status +* \defgroup group_system_config_user_settings_macro User Settings +* \} +* \defgroup group_system_config_functions Functions +* \{ +* \defgroup group_system_config_system_functions System +* \defgroup group_system_config_cm4_functions Cortex-M4 Control +* \} +* \defgroup group_system_config_globals Global Variables +* +* \} +*/ + +/** +* \addtogroup group_system_config_system_functions +* \{ +* \details +* The following system functions implement CMSIS Core functions. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* \} +*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************************* +* Include files +*******************************************************************************/ +#include + + +/******************************************************************************* +* Global preprocessor symbols/macros ('define') +*******************************************************************************/ +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined (__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3))) + #define CY_SYSTEM_CPU_CM0P 1UL +#else + #define CY_SYSTEM_CPU_CM0P 0UL +#endif + +#if defined (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) + #include "cyfitter.h" +#endif /* (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) */ + + + + +/******************************************************************************* +* +* START OF USER SETTINGS HERE +* =========================== +* +* All lines with '<<<' can be set by user. +* +*******************************************************************************/ + +/** +* \addtogroup group_system_config_user_settings_macro +* \{ +*/ + +#if defined (CYDEV_CLK_EXTCLK__HZ) + #define CY_CLK_EXT_FREQ_HZ (CYDEV_CLK_EXTCLK__HZ) +#else + /***************************************************************************//** + * External Clock Frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_EXT_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_EXTCLK__HZ) */ + + +#if defined (CYDEV_CLK_ECO__HZ) + #define CY_CLK_ECO_FREQ_HZ (CYDEV_CLK_ECO__HZ) +#else + /***************************************************************************//** + * \brief External crystal oscillator frequency (in Hz, [value]UL). If compiled + * within PSoC Creator and the clock is enabled in the DWR, the value from DWR + * used. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ECO_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_ECO__HZ) */ + + +#if defined (CYDEV_CLK_ALTHF__HZ) + #define CY_CLK_ALTHF_FREQ_HZ (CYDEV_CLK_ALTHF__HZ) +#else + /***************************************************************************//** + * \brief Alternate high frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ALTHF_FREQ_HZ (32000000UL) /* <<< 32 MHz */ +#endif /* (CYDEV_CLK_ALTHF__HZ) */ + + +/***************************************************************************//** +* \brief Start address of the Cortex-M4 application ([address]UL) +* (USER SETTING) +*******************************************************************************/ +#if !defined (CY_CORTEX_M4_APPL_ADDR) + #define CY_CORTEX_M4_APPL_ADDR (CY_FLASH_BASE + 0x2000U) /* <<< 8 kB of flash is reserved for the Cortex-M0+ application */ +#endif /* (CY_CORTEX_M4_APPL_ADDR) */ + + +/***************************************************************************//** +* \brief IPC Semaphores allocation ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_SEMA_COUNT (128UL) /* <<< This will allow 128 (4*32) semaphores */ + + +/***************************************************************************//** +* \brief IPC Pipe definitions ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_MAX_ENDPOINTS (8UL) /* <<< 8 endpoints */ + + +/******************************************************************************* +* +* END OF USER SETTINGS HERE +* ========================= +* +*******************************************************************************/ + +/** \} group_system_config_user_settings_macro */ + + +/** +* \addtogroup group_system_config_system_macro +* \{ +*/ + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M0+ startup driver identifier */ + #define CY_STARTUP_M0P_ID ((uint32_t)((uint32_t)((0x0EU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + +#if (CY_SYSTEM_CPU_CM0P != 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M4 startup driver identifier */ + #define CY_STARTUP_M4_ID ((uint32_t)((uint32_t)((0x0FU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P != 1UL) */ + +/** \} group_system_config_system_macro */ + + +/** +* \addtogroup group_system_config_system_functions +* \{ +*/ +#if defined(__ARMCC_VERSION) + extern void SystemInit(void) __attribute__((constructor)); +#else + extern void SystemInit(void); +#endif /* (__ARMCC_VERSION) */ + +extern void SystemCoreClockUpdate(void); +/** \} group_system_config_system_functions */ + + +/** +* \addtogroup group_system_config_cm4_functions +* \{ +*/ +extern uint32_t Cy_SysGetCM4Status(void); +extern void Cy_SysEnableCM4(uint32_t vectorTableOffset); +extern void Cy_SysDisableCM4(void); +extern void Cy_SysRetainCM4(void); +extern void Cy_SysResetCM4(void); +/** \} group_system_config_cm4_functions */ + + +/** \cond */ +extern void Default_Handler (void); + +void Cy_SysIpcPipeIsrCm0(void); +void Cy_SysIpcPipeIsrCm4(void); + +extern void Cy_SystemInit(void); +extern void Cy_SystemInitFpuEnable(void); + +extern uint32_t cy_delayFreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; +/** \endcond */ + + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) +/** +* \addtogroup group_system_config_cm4_status_macro +* \{ +*/ +#define CY_SYS_CM4_STATUS_ENABLED (3U) /**< The Cortex-M4 core is enabled: power on, clock on, no isolate, no reset and no retain. */ +#define CY_SYS_CM4_STATUS_DISABLED (0U) /**< The Cortex-M4 core is disabled: power off, clock off, isolate, reset and no retain. */ +#define CY_SYS_CM4_STATUS_RETAINED (2U) /**< The Cortex-M4 core is retained. power off, clock off, isolate, no reset and retain. */ +#define CY_SYS_CM4_STATUS_RESET (1U) /**< The Cortex-M4 core is in the Reset mode: clock off, no isolated, no retain and reset. */ +/** \} group_system_config_cm4_status_macro */ + +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + + +/******************************************************************************* +* IPC Configuration +* ========================= +*******************************************************************************/ +/* IPC CY_PIPE default configuration */ +#define CY_SYS_CYPIPE_CLIENT_CNT (8UL) + +#define CY_SYS_INTR_CYPIPE_MUX_EP0 (1UL) /* IPC CYPRESS PIPE */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP0 (1UL) /* Notifier Priority */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP1 (1UL) /* Notifier Priority */ + +#define CY_SYS_CYPIPE_CHAN_MASK_EP0 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CHAN_MASK_EP1 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP1) + + +/******************************************************************************/ +/* + * The System pipe configuration defines the IPC channel number, interrupt + * number, and the pipe interrupt mask for the endpoint. + * + * The format of the endPoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ + +/* System Pipe addresses */ +/* CyPipe defines */ + +#define CY_SYS_CYPIPE_INTR_MASK ( CY_SYS_CYPIPE_CHAN_MASK_EP0 | CY_SYS_CYPIPE_CHAN_MASK_EP1 ) + +#define CY_SYS_CYPIPE_CONFIG_EP0 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP0 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CONFIG_EP1 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP1 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP1) + +/******************************************************************************/ + + +/** \addtogroup group_system_config_globals +* \{ +*/ + +extern uint32_t SystemCoreClock; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_PeriClkFreqHz; + +/** \} group_system_config_globals */ + + + +/** \cond INTERNAL */ +/******************************************************************************* +* Backward compatibility macro. The following code is DEPRECATED and must +* not be used in new projects +*******************************************************************************/ + +/* BWC defines for functions related to enter/exit critical section */ +#define Cy_SaveIRQ Cy_SysLib_EnterCriticalSection +#define Cy_RestoreIRQ Cy_SysLib_ExitCriticalSection +#define CY_SYS_INTR_CYPIPE_EP0 (CY_IPC_INTR_CYPIPE_EP0) +#define CY_SYS_INTR_CYPIPE_EP1 (CY_IPC_INTR_CYPIPE_EP1) + +/** \endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYSTEM_PSOC6_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6_cm4.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6_cm4.c new file mode 100644 index 00000000000..da838b41236 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/device/system_psoc6_cm4.c @@ -0,0 +1,582 @@ +/***************************************************************************//** +* \file system_psoc6_cm4.c +* \version 2.30 +* +* The device system-source file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "device.h" +#include "system_psoc6.h" +#include "cy_device_headers.h" +#include "psoc6_utils.h" +#include "cy_syslib.h" +#include "cy_wdt.h" +#include "cycfg.h" + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + #include "cy_ipc_sema.h" + #include "cy_ipc_pipe.h" + #include "cy_ipc_drv.h" + + #if defined(CY_DEVICE_PSOC6ABLE2) + #include "cy_flash.h" + #endif /* defined(CY_DEVICE_PSOC6ABLE2) */ +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ + + +/******************************************************************************* +* SystemCoreClockUpdate() +*******************************************************************************/ + +/** Default HFClk frequency in Hz */ +#define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL) + +/** Default PeriClk frequency in Hz */ +#define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL) + +/** Default SlowClk system core frequency in Hz */ +#define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL) + +/** IMO frequency in Hz */ +#define CY_CLK_IMO_FREQ_HZ (8000000UL) + +/** HVILO frequency in Hz */ +#define CY_CLK_HVILO_FREQ_HZ (32000UL) + +/** PILO frequency in Hz */ +#define CY_CLK_PILO_FREQ_HZ (32768UL) + +/** WCO frequency in Hz */ +#define CY_CLK_WCO_FREQ_HZ (32768UL) + +/** ALTLF frequency in Hz */ +#define CY_CLK_ALTLF_FREQ_HZ (32768UL) + + +/** +* Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock, +* which is the system clock frequency supplied to the SysTick timer and the +* processor core clock. +* This variable implements CMSIS Core global variable. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* This variable can be used by debuggers to query the frequency +* of the debug timer or to configure the trace clock speed. +* +* \attention Compilers must be configured to avoid removing this variable in case +* the application program is not using it. Debugging systems require the variable +* to be physically present in memory so that it can be examined to configure the debugger. */ +uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +/** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT; + +/** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT; + +/** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */ +#if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) + uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ; +#endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */ + +/* SCB->CPACR */ +#define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u) + + +/******************************************************************************* +* SystemInit() +*******************************************************************************/ + +/* CLK_FLL_CONFIG default values */ +#define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u) +#define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u) +#define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u) +#define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu) + + +/******************************************************************************* +* SystemCoreClockUpdate (void) +*******************************************************************************/ + +/* Do not use these definitions directly in your application */ +#define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u) +#define CY_DELAY_1K_THRESHOLD (1000u) +#define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u) +#define CY_DELAY_1M_THRESHOLD (1000000u) +#define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u) +uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / + CY_DELAY_1K_THRESHOLD; + +uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) / + CY_DELAY_1M_THRESHOLD); + +uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * + ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD); + +#define CY_ROOT_PATH_SRC_IMO (0UL) +#define CY_ROOT_PATH_SRC_EXT (1UL) +#if (SRSS_ECO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ECO (2UL) +#endif /* (SRSS_ECO_PRESENT == 1U) */ +#if (SRSS_ALTHF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ALTHF (3UL) +#endif /* (SRSS_ALTHF_PRESENT == 1U) */ +#define CY_ROOT_PATH_SRC_DSI_MUX (4UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL) +#if (SRSS_ALTLF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL) +#endif /* (SRSS_ALTLF_PRESENT == 1U) */ +#if (SRSS_PILO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL) +#endif /* (SRSS_PILO_PRESENT == 1U) */ + + +/******************************************************************************* +* Function Name: SystemInit +****************************************************************************//** +* \cond +* Initializes the system: +* - Restores FLL registers to the default state for single core devices. +* - Unlocks and disables WDT. +* - Calls Cy_PDL_Init() function to define the driver library. +* - Calls the Cy_SystemInit() function, if compiled from PSoC Creator. +* - Calls \ref SystemCoreClockUpdate(). +* \endcond +*******************************************************************************/ +void SystemInit(void) +{ + Cy_PDL_Init(CY_DEVICE_CFG); + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Restore FLL registers to the default state as they are not restored by the ROM code */ + uint32_t copy = SRSS->CLK_FLL_CONFIG; + copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk; + SRSS->CLK_FLL_CONFIG = copy; + + copy = SRSS->CLK_ROOT_SELECT[0u]; + copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/ + SRSS->CLK_ROOT_SELECT[0u] = copy; + + SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE; + SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE; + SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE; + SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE; + + /* Unlock and disable WDT */ + Cy_WDT_Unlock(); + Cy_WDT_Disable(); + #endif /* (__CM0P_PRESENT == 0) */ +#endif /* __CM0P_PRESENT */ + + Cy_SystemInit(); + SystemCoreClockUpdate(); + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Allocate and initialize semaphores for the system operations. */ + static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD]; + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray); + #else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); + #endif /* (__CM0P_PRESENT) */ +#else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); +#endif /* __CM0P_PRESENT */ + + + /******************************************************************************** + * + * Initializes the system pipes. The system pipes are used by BLE and Flash. + * + * If the default startup file is not used, or SystemInit() is not called in your + * project, call the following three functions prior to executing any flash or + * EmEEPROM write or erase operation: + * -# Cy_IPC_Sema_Init() + * -# Cy_IPC_Pipe_Config() + * -# Cy_IPC_Pipe_Init() + * -# Cy_Flash_Init() + * + *******************************************************************************/ + /* Create an array of endpoint structures */ + static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS]; + + Cy_IPC_Pipe_Config(systemIpcPipeEpArray); + + static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT]; + + static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 = + { + /* .ep0ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0, + /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0 + }, + /* .ep1ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1, + /* .ipcNotifierMuxNumber */ 0u, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1 + }, + /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT, + /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray, + /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4 + }; + + if (cy_device->flashPipeRequired != 0u) + { + Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4); + } + +#if defined(CY_DEVICE_PSOC6ABLE2) + Cy_Flash_Init(); +#endif /* defined(CY_DEVICE_PSOC6ABLE2) */ + +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ +} + + +/******************************************************************************* +* Function Name: mbed_sdk_init +****************************************************************************//** +* +* Mbed's post-memory-initialization function. +* Used here to initialize common parts of the Cypress libraries. +* +*******************************************************************************/ +void mbed_sdk_init(void) +{ + /* Initialize shared resource manager */ + cy_srm_initialize(); + + /* Initialize system and clocks. */ + /* Placed here as it must be done after proper LIBC initialization. */ + SystemInit(); + + /* Set up the device based on configurator selections */ + init_cycfg_all(); + + /* Enable global interrupts */ + __enable_irq(); +} + + + +/******************************************************************************* +* Function Name: Cy_SystemInit +****************************************************************************//** +* +* The function is called during device startup. Once project compiled as part of +* the PSoC Creator project, the Cy_SystemInit() function is generated by the +* PSoC Creator. +* +* The function generated by PSoC Creator performs all of the necessary device +* configuration based on the design settings. This includes settings from the +* Design Wide Resources (DWR) such as Clocks and Pins as well as any component +* configuration that is necessary. +* +*******************************************************************************/ +__WEAK void Cy_SystemInit(void) +{ + /* Empty weak function. The actual implementation to be in the PSoC Creator + * generated strong function. + */ +} + + +/******************************************************************************* +* Function Name: SystemCoreClockUpdate +****************************************************************************//** +* +* Gets core clock frequency and updates \ref SystemCoreClock, \ref +* cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz. +* +* Updates global variables used by the \ref Cy_SysLib_Delay(), \ref +* Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles(). +* +*******************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t srcFreqHz; + uint32_t pathFreqHz; + uint32_t fastClkDiv; + uint32_t periClkDiv; + uint32_t rootPath; + uint32_t srcClk; + + /* Get root path clock for the high-frequency clock # 0 */ + rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]); + + /* Get source of the root path clock */ + srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]); + + /* Get frequency of the source */ + switch (srcClk) + { + case CY_ROOT_PATH_SRC_IMO: + srcFreqHz = CY_CLK_IMO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_EXT: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + + #if (SRSS_ECO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ECO: + srcFreqHz = CY_CLK_ECO_FREQ_HZ; + break; + #endif /* (SRSS_ECO_PRESENT == 1U) */ + +#if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ALTHF: + srcFreqHz = cy_BleEcoClockFreqHz; + break; +#endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */ + + case CY_ROOT_PATH_SRC_DSI_MUX: + { + uint32_t dsi_src; + dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]); + switch (dsi_src) + { + case CY_ROOT_PATH_SRC_DSI_MUX_HVILO: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_DSI_MUX_WCO: + srcFreqHz = CY_CLK_WCO_FREQ_HZ; + break; + + #if (SRSS_ALTLF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF: + srcFreqHz = CY_CLK_ALTLF_FREQ_HZ; + break; + #endif /* (SRSS_ALTLF_PRESENT == 1U) */ + + #if (SRSS_PILO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_PILO: + srcFreqHz = CY_CLK_PILO_FREQ_HZ; + break; + #endif /* (SRSS_PILO_PRESENT == 1U) */ + + default: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + } + } + break; + + default: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + } + + if (rootPath == 0UL) + { + /* FLL */ + bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS)); + bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)); + bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) || + (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3))); + if ((fllOutputAuto && fllLocked) || fllOutputOutput) + { + uint32_t fllMult; + uint32_t refDiv; + uint32_t outputDiv; + + fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG); + refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2); + outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL; + + pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv; + } + else + { + pathFreqHz = srcFreqHz; + } + } + else if ((rootPath == 1UL) || (rootPath == 2UL)) + { + /* PLL */ + bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL])); + bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])); + bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) || + (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]))); + if ((pllOutputAuto && pllLocked) || pllOutputOutput) + { + uint32_t feedbackDiv; + uint32_t referenceDiv; + uint32_t outputDiv; + + feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + + pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv; + + } + else + { + pathFreqHz = srcFreqHz; + } + } + else + { + /* Direct */ + pathFreqHz = srcFreqHz; + } + + /* Get frequency after hf_clk pre-divider */ + pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]); + cy_Hfclk0FreqHz = pathFreqHz; + + /* Fast Clock Divider */ + fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL); + + /* Peripheral Clock Divider */ + periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL); + cy_PeriClkFreqHz = pathFreqHz / periClkDiv; + + pathFreqHz = pathFreqHz / fastClkDiv; + SystemCoreClock = pathFreqHz; + + /* Sets clock frequency for Delay API */ + cy_delayFreqHz = SystemCoreClock; + cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD); + cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD; + cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz; +} + + +/******************************************************************************* +* Function Name: Cy_SystemInitFpuEnable +****************************************************************************//** +* +* Enables the FPU if it is used. The function is called from the startup file. +* +*******************************************************************************/ +void Cy_SystemInitFpuEnable(void) +{ + #if defined (__FPU_USED) && (__FPU_USED == 1U) + uint32_t interruptState; + interruptState = Cy_SysLib_EnterCriticalSection(); + SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE; + __DSB(); + __ISB(); + Cy_SysLib_ExitCriticalSection(interruptState); + #endif /* (__FPU_USED) && (__FPU_USED == 1U) */ +} + + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) +/******************************************************************************* +* Function Name: Cy_SysIpcPipeIsrCm4 +****************************************************************************//** +* +* This is the interrupt service routine for the system pipe. +* +*******************************************************************************/ +void Cy_SysIpcPipeIsrCm4(void) +{ + Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR); +} +#endif + +/******************************************************************************* +* Function Name: Cy_MemorySymbols +****************************************************************************//** +* +* The intention of the function is to declare boundaries of the memories for the +* MDK compilers. For the rest of the supported compilers, this is done using +* linker configuration files. The following symbols used by the cymcuelftool. +* +*******************************************************************************/ +#if defined (__ARMCC_VERSION) +__asm void Cy_MemorySymbols(void) +{ + /* Flash */ + EXPORT __cy_memory_0_start + EXPORT __cy_memory_0_length + EXPORT __cy_memory_0_row_size + + /* Working Flash */ + EXPORT __cy_memory_1_start + EXPORT __cy_memory_1_length + EXPORT __cy_memory_1_row_size + + /* Supervisory Flash */ + EXPORT __cy_memory_2_start + EXPORT __cy_memory_2_length + EXPORT __cy_memory_2_row_size + + /* XIP */ + EXPORT __cy_memory_3_start + EXPORT __cy_memory_3_length + EXPORT __cy_memory_3_row_size + + /* eFuse */ + EXPORT __cy_memory_4_start + EXPORT __cy_memory_4_length + EXPORT __cy_memory_4_row_size + + /* Flash */ +__cy_memory_0_start EQU __cpp(CY_FLASH_BASE) +__cy_memory_0_length EQU __cpp(CY_FLASH_SIZE) +__cy_memory_0_row_size EQU 0x200 + + /* Flash region for EEPROM emulation */ +__cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE) +__cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE) +__cy_memory_1_row_size EQU 0x200 + + /* Supervisory Flash */ +__cy_memory_2_start EQU __cpp(CY_SFLASH_BASE) +__cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE) +__cy_memory_2_row_size EQU 0x200 + + /* XIP */ +__cy_memory_3_start EQU __cpp(CY_XIP_BASE) +__cy_memory_3_length EQU __cpp(CY_XIP_SIZE) +__cy_memory_3_row_size EQU 0x200 + + /* eFuse */ +__cy_memory_4_start EQU __cpp(0x90700000) +__cy_memory_4_length EQU __cpp(0x100000) +__cy_memory_4_row_size EQU __cpp(1) +} + +#endif /* defined (__ARMCC_VERSION) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/psoc6_static_srm.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/psoc6_static_srm.h new file mode 100644 index 00000000000..20f1e9d1cf6 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_4343W/psoc6_static_srm.h @@ -0,0 +1,85 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + */ + +/* + * This file defines hardware resources reserved by device-generated code. These + * resources are accessed directly by the Peripheral Driver library (PDL). + * + * There are four classes of resources that must be declared here: + * 1 CYCFG_ASSIGNED_PORTS macro defines which ports and pins are reserved. + * You define these as a colon separated list of ports and pins reserved + * using macro SRM_PORT(port_num, pins), once for each reserved port. + * SRM_PORT macro arguments are port number (in the range 0 ... 14) and + * pins, which is a hex value with a bit set for each reserved pin on a port. + * + * 2 CYCFG_ASSIGNED_DIVIDERS macro defines which clock dividers are reserved. + * You define these as a colon separated list of dividers reserved + * using macro SRM_DIVIDER(type, reservations), once for each required + * divider type. + * SRM_DIVIDER arguments are divider type (one of cy_en_divider_types_t + * values) and reservations, which is a hex mask value with a bit set for + * each reserved divider of a given type. + * + * 3 CYCFG_ASSIGNED_SCBS macro defines which SCB blocks are reserved. + * You define these as a colon separated list of SCBs reserved using + * macro SRM_SCB(n), which argument is SCB number in a range 0 ... 7. + * + * 4 CYCFG_ASSIGNED_TCPWM macro defines which TCPWM blocks are reserved. + * You define these as a colon separated list of TCPWMs reserved using + * macro SRM_TCPWM(n), which argument is TCPWM number in a range 0 ... 31. + * + * Examples: + * #define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x30), SRM_PORT(5, 0x03) + * + * #define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + * + * #define CYCFG_ASSIGNED_SCBS SRM_SCB(2) + * + * #define CYCFG_ASSIGNED_TCPWMS + * + */ + + +/* P0_0 and P0_1 reserved for WCO, +* P1_0 reserved for CSD TX, +* P2_0 ... P2_5 reserved for SDHC +* P6-4, P6-6 and P6_7 reserved for SWD, +* P7_1, P7_2 and P7_7 reserved for CSD Capacitors +* P8_1 ... P8_7 reserved for CSD Buttons +* P11_2 ... P11_7 reserved for QSPI +* P14_0 ... P14_1 reserved for USB +*/ +#define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x03), SRM_PORT(1, 0x01),\ + SRM_PORT(2, 0x3f), SRM_PORT(6, 0xd0),\ + SRM_PORT(7, 0x86), SRM_PORT(8, 0xfe),\ + SRM_PORT(11, 0xfc), SRM_PORT(14, 0x03) + +/* +* 8-bit divider 4 reserved for CSD +* 16-bit divider 0 reserved for USB +*/ +#define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x10), \ + SRM_DIVIDER(CY_SYSCLK_DIV_16_BIT, 0x01) + +#define CYCFG_ASSIGNED_SCBS + +#define CYCFG_ASSIGNED_TCPWMS + +/* End of File */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.c new file mode 100644 index 00000000000..74c28aba2cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.c @@ -0,0 +1,34 @@ +/******************************************************************************* +* File Name: cycfg.c +* +* Description: +* Wrapper function to initialize all generated code. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg.h" + +void init_cycfg_all(void) +{ + init_cycfg_clocks(); + init_cycfg_peripherals(); + init_cycfg_pins(); + init_cycfg_platform(); + init_cycfg_routing(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.h new file mode 100644 index 00000000000..ac6033d2bd1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg.h @@ -0,0 +1,47 @@ +/******************************************************************************* +* File Name: cycfg.h +* +* Description: +* Simple wrapper header containing all generated files. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +#include "cycfg_clocks.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_platform.h" +#include "cycfg_routing.h" + +void init_cycfg_all(void); + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000..9a6a4e3cf91 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,45 @@ +/******************************************************************************* +* File Name: cycfg_clocks.c +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_clocks.h" + + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 0U, 255U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 3U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 2U, 35U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 3U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 3U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000..ce944e4bd0c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,51 @@ +/******************************************************************************* +* File Name: cycfg_clocks.h +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_8_0_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_0_NUM 0U +#define peri_0_div_8_1_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_1_NUM 1U +#define peri_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_2_NUM 2U +#define peri_0_div_8_3_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_3_NUM 3U + +void init_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_CLOCKS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_notices.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000..90f1013f8a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_notices.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* File Name: cycfg_notices.h +* +* Description: +* Contains warnings and errors that occurred while generating code for the +* design. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + + +#endif /* CYCFG_NOTICES_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000..211f24a1134 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,108 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.c +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_peripherals.h" + +cy_stc_csd_context_t cy_csd_0_context = +{ + .lockKey = CY_CSD_NONE_KEY, +}; +const cy_stc_scb_ezi2c_config_t CSD_COMM_config = +{ + .numberOfAddresses = CY_SCB_EZI2C_ONE_ADDRESS, + .slaveAddress1 = 8U, + .slaveAddress2 = 0U, + .subAddressSize = CY_SCB_EZI2C_SUB_ADDR16_BITS, + .enableWakeFromSleep = false, +}; +const cy_stc_scb_uart_config_t KITPROG_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 12, + .enableMsbFirst = false, + .dataWidth = 9UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = false, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 0UL, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_smif_config_t QSPI_config = +{ + .mode = (uint32_t)CY_SMIF_NORMAL, + .deselectDelay = QSPI_DESELECT_DELAY, + .rxClockSel = (uint32_t)CY_SMIF_SEL_INV_INTERNAL_CLK, + .blockEvent = (uint32_t)CY_SMIF_BUS_ERROR, +}; +const cy_stc_mcwdt_config_t MCWDT0_config = +{ + .c0Match = 32768U, + .c1Match = 32768U, + .c0Mode = CY_MCWDT_MODE_NONE, + .c1Mode = CY_MCWDT_MODE_NONE, + .c2ToggleBit = 16U, + .c2Mode = CY_MCWDT_MODE_NONE, + .c0ClearOnMatch = false, + .c1ClearOnMatch = false, + .c0c1Cascade = true, + .c1c2Cascade = false, +}; +const cy_stc_rtc_config_t RTC_config = +{ + .sec = 0U, + .min = 0U, + .hour = 12U, + .amPm = CY_RTC_AM, + .hrFormat = CY_RTC_24_HOURS, + .dayOfWeek = CY_RTC_SUNDAY, + .date = 1U, + .month = CY_RTC_JANUARY, + .year = 0U, +}; + + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB5_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000..230df68ef51 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,128 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.h +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_csd.h" +#include "cy_scb_ezi2c.h" +#include "cy_scb_uart.h" +#include "cy_smif.h" +#include "cy_mcwdt.h" +#include "cy_rtc.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_BLE_CORE_CORTEX_M4 4U +#define CY_BLE_CORE_CORTEX_M0P 0U +#define CY_BLE_CORE_DUAL 255U +#ifndef CY_BLE_CORE + #define CY_BLE_CORE 4U +#endif +#define CY_BLE_IRQ bless_interrupt_IRQn +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 50000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 0u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT8 +#define Button0_Tx_PORT GPIO_PRT1 +#define Button1_Rx0_PORT GPIO_PRT8 +#define Button1_Tx_PORT GPIO_PRT1 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 1u +#define Button0_Tx_PIN 0u +#define Button1_Rx0_PIN 2u +#define Button1_Tx_PIN 0u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CapSense_HW CSD0 +#define CapSense_IRQ csd_interrupt_IRQn +#define CSD_COMM_HW SCB3 +#define CSD_COMM_IRQ scb_3_interrupt_IRQn +#define KITPROG_UART_HW SCB5 +#define KITPROG_UART_IRQ scb_5_interrupt_IRQn +#define QSPI_HW SMIF0 +#define QSPI_IRQ smif_interrupt_IRQn +#define QSPI_MEMORY_MODE_ALIGMENT_ERROR (0UL) +#define QSPI_RX_DATA_FIFO_UNDERFLOW (0UL) +#define QSPI_TX_COMMAND_FIFO_OVERFLOW (0UL) +#define QSPI_TX_DATA_FIFO_OVERFLOW (0UL) +#define QSPI_RX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_TX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_DATALINES0_1 (1UL) +#define QSPI_DATALINES2_3 (1UL) +#define QSPI_DATALINES4_5 (0UL) +#define QSPI_DATALINES6_7 (0UL) +#define QSPI_SS0 (1UL) +#define QSPI_SS1 (0UL) +#define QSPI_SS2 (0UL) +#define QSPI_SS3 (0UL) +#define QSPI_DESELECT_DELAY 7 +#define MCWDT0_HW MCWDT_STRUCT0 +#define RTC_10_MONTH_OFFSET (28U) +#define RTC_MONTH_OFFSET (24U) +#define RTC_10_DAY_OFFSET (20U) +#define RTC_DAY_OFFSET (16U) +#define RTC_1000_YEAR_OFFSET (12U) +#define RTC_100_YEAR_OFFSET (8U) +#define RTC_10_YEAR_OFFSET (4U) +#define RTC_YEAR_OFFSET (0U) + +extern cy_stc_csd_context_t cy_csd_0_context; +extern const cy_stc_scb_ezi2c_config_t CSD_COMM_config; +extern const cy_stc_scb_uart_config_t KITPROG_UART_config; +extern const cy_stc_smif_config_t QSPI_config; +extern const cy_stc_mcwdt_config_t MCWDT0_config; +extern const cy_stc_rtc_config_t RTC_config; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000..9f927f5c86e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.c @@ -0,0 +1,595 @@ +/******************************************************************************* +* File Name: cycfg_pins.c +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t WCO_IN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WCO_OUT_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_RED_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_RED_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SW2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SW2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_BLUE_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_BLUE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SS0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SS0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SPI_CLOCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED9_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED9_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_GREEN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_GREEN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_1_pin_4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_1_pin_4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED8_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED8_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SCL_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SCL_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SDA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SDA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDIO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINB_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CMOD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; + + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(WCO_IN_PORT, WCO_IN_PIN, &WCO_IN_config); + + Cy_GPIO_Pin_Init(WCO_OUT_PORT, WCO_OUT_PIN, &WCO_OUT_config); + + Cy_GPIO_Pin_Init(LED_RED_PORT, LED_RED_PIN, &LED_RED_config); + + Cy_GPIO_Pin_Init(SW2_PORT, SW2_PIN, &SW2_config); + + Cy_GPIO_Pin_Init(LED_BLUE_PORT, LED_BLUE_PIN, &LED_BLUE_config); + + Cy_GPIO_Pin_Init(QSPI_SS0_PORT, QSPI_SS0_PIN, &QSPI_SS0_config); + + Cy_GPIO_Pin_Init(QSPI_DATA3_PORT, QSPI_DATA3_PIN, &QSPI_DATA3_config); + + Cy_GPIO_Pin_Init(QSPI_DATA2_PORT, QSPI_DATA2_PIN, &QSPI_DATA2_config); + + Cy_GPIO_Pin_Init(QSPI_DATA1_PORT, QSPI_DATA1_PIN, &QSPI_DATA1_config); + + Cy_GPIO_Pin_Init(QSPI_DATA0_PORT, QSPI_DATA0_PIN, &QSPI_DATA0_config); + + Cy_GPIO_Pin_Init(QSPI_SPI_CLOCK_PORT, QSPI_SPI_CLOCK_PIN, &QSPI_SPI_CLOCK_config); + + Cy_GPIO_Pin_Init(LED9_PORT, LED9_PIN, &LED9_config); + + + Cy_GPIO_Pin_Init(LED_GREEN_PORT, LED_GREEN_PIN, &LED_GREEN_config); + + Cy_GPIO_Pin_Init(ioss_0_port_1_pin_4_PORT, ioss_0_port_1_pin_4_PIN, &ioss_0_port_1_pin_4_config); + + Cy_GPIO_Pin_Init(LED8_PORT, LED8_PIN, &LED8_config); + + Cy_GPIO_Pin_Init(UART_TX_PORT, UART_TX_PIN, &UART_TX_config); + + Cy_GPIO_Pin_Init(EZI2C_SCL_PORT, EZI2C_SCL_PIN, &EZI2C_SCL_config); + + Cy_GPIO_Pin_Init(EZI2C_SDA_PORT, EZI2C_SDA_PIN, &EZI2C_SDA_config); + + Cy_GPIO_Pin_Init(SWO_PORT, SWO_PIN, &SWO_config); + + Cy_GPIO_Pin_Init(SWDIO_PORT, SWDIO_PIN, &SWDIO_config); + + Cy_GPIO_Pin_Init(SWDCK_PORT, SWDCK_PIN, &SWDCK_config); + + + + + + + + + + +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000..874eac99dc8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_pins.h @@ -0,0 +1,396 @@ +/******************************************************************************* +* File Name: cycfg_pins.h +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cycfg_notices.h" +#include "cy_gpio.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define WCO_IN_PORT GPIO_PRT0 +#define WCO_IN_PIN 0U +#define WCO_IN_NUM 0U +#define WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM + #define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#define WCO_OUT_PORT GPIO_PRT0 +#define WCO_OUT_PIN 1U +#define WCO_OUT_NUM 1U +#define WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM + #define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_RED_PORT GPIO_PRT0 +#define LED_RED_PIN 3U +#define LED_RED_NUM 3U +#define LED_RED_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_RED_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_3_HSIOM + #define ioss_0_port_0_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_RED_HSIOM ioss_0_port_0_pin_3_HSIOM +#define LED_RED_IRQ ioss_interrupts_gpio_0_IRQn +#define SW2_PORT GPIO_PRT0 +#define SW2_PIN 4U +#define SW2_NUM 4U +#define SW2_DRIVEMODE CY_GPIO_DM_PULLUP +#define SW2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_4_HSIOM + #define ioss_0_port_0_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SW2_HSIOM ioss_0_port_0_pin_4_HSIOM +#define SW2_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_BLUE_PORT GPIO_PRT11 +#define LED_BLUE_PIN 1U +#define LED_BLUE_NUM 1U +#define LED_BLUE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_BLUE_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_1_HSIOM + #define ioss_0_port_11_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_BLUE_HSIOM ioss_0_port_11_pin_1_HSIOM +#define LED_BLUE_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SS0_PORT GPIO_PRT11 +#define QSPI_SS0_PIN 2U +#define QSPI_SS0_NUM 2U +#define QSPI_SS0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SS0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_2_HSIOM + #define ioss_0_port_11_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SS0_HSIOM ioss_0_port_11_pin_2_HSIOM +#define QSPI_SS0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA3_PORT GPIO_PRT11 +#define QSPI_DATA3_PIN 3U +#define QSPI_DATA3_NUM 3U +#define QSPI_DATA3_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_3_HSIOM + #define ioss_0_port_11_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA3_HSIOM ioss_0_port_11_pin_3_HSIOM +#define QSPI_DATA3_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA2_PORT GPIO_PRT11 +#define QSPI_DATA2_PIN 4U +#define QSPI_DATA2_NUM 4U +#define QSPI_DATA2_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_4_HSIOM + #define ioss_0_port_11_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA2_HSIOM ioss_0_port_11_pin_4_HSIOM +#define QSPI_DATA2_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA1_PORT GPIO_PRT11 +#define QSPI_DATA1_PIN 5U +#define QSPI_DATA1_NUM 5U +#define QSPI_DATA1_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_5_HSIOM + #define ioss_0_port_11_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA1_HSIOM ioss_0_port_11_pin_5_HSIOM +#define QSPI_DATA1_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA0_PORT GPIO_PRT11 +#define QSPI_DATA0_PIN 6U +#define QSPI_DATA0_NUM 6U +#define QSPI_DATA0_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_6_HSIOM + #define ioss_0_port_11_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA0_HSIOM ioss_0_port_11_pin_6_HSIOM +#define QSPI_DATA0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SPI_CLOCK_PORT GPIO_PRT11 +#define QSPI_SPI_CLOCK_PIN 7U +#define QSPI_SPI_CLOCK_NUM 7U +#define QSPI_SPI_CLOCK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SPI_CLOCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_7_HSIOM + #define ioss_0_port_11_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SPI_CLOCK_HSIOM ioss_0_port_11_pin_7_HSIOM +#define QSPI_SPI_CLOCK_IRQ ioss_interrupts_gpio_11_IRQn +#define LED9_PORT GPIO_PRT13 +#define LED9_PIN 7U +#define LED9_NUM 7U +#define LED9_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED9_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_7_HSIOM + #define ioss_0_port_13_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define LED9_HSIOM ioss_0_port_13_pin_7_HSIOM +#define LED9_IRQ ioss_interrupts_gpio_13_IRQn +#define CSD_TX_PORT GPIO_PRT1 +#define CSD_TX_PIN 0U +#define CSD_TX_NUM 0U +#define CSD_TX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_0_HSIOM + #define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_TX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CSD_TX_IRQ ioss_interrupts_gpio_1_IRQn +#define LED_GREEN_PORT GPIO_PRT1 +#define LED_GREEN_PIN 1U +#define LED_GREEN_NUM 1U +#define LED_GREEN_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_GREEN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_1_HSIOM + #define ioss_0_port_1_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_GREEN_HSIOM ioss_0_port_1_pin_1_HSIOM +#define LED_GREEN_IRQ ioss_interrupts_gpio_1_IRQn +#define ioss_0_port_1_pin_4_PORT GPIO_PRT1 +#define ioss_0_port_1_pin_4_PIN 4U +#define ioss_0_port_1_pin_4_NUM 4U +#define ioss_0_port_1_pin_4_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_1_pin_4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_4_HSIOM + #define ioss_0_port_1_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_1_pin_4_IRQ ioss_interrupts_gpio_1_IRQn +#define LED8_PORT GPIO_PRT1 +#define LED8_PIN 5U +#define LED8_NUM 5U +#define LED8_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED8_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_5_HSIOM + #define ioss_0_port_1_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define LED8_HSIOM ioss_0_port_1_pin_5_HSIOM +#define LED8_IRQ ioss_interrupts_gpio_1_IRQn +#define UART_TX_PORT GPIO_PRT5 +#define UART_TX_PIN 1U +#define UART_TX_NUM 1U +#define UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_1_HSIOM + #define ioss_0_port_5_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_TX_HSIOM ioss_0_port_5_pin_1_HSIOM +#define UART_TX_IRQ ioss_interrupts_gpio_5_IRQn +#define EZI2C_SCL_PORT GPIO_PRT6 +#define EZI2C_SCL_PIN 0U +#define EZI2C_SCL_NUM 0U +#define EZI2C_SCL_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SCL_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_0_HSIOM + #define ioss_0_port_6_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SCL_HSIOM ioss_0_port_6_pin_0_HSIOM +#define EZI2C_SCL_IRQ ioss_interrupts_gpio_6_IRQn +#define EZI2C_SDA_PORT GPIO_PRT6 +#define EZI2C_SDA_PIN 1U +#define EZI2C_SDA_NUM 1U +#define EZI2C_SDA_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SDA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_1_HSIOM + #define ioss_0_port_6_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SDA_HSIOM ioss_0_port_6_pin_1_HSIOM +#define EZI2C_SDA_IRQ ioss_interrupts_gpio_6_IRQn +#define SWO_PORT GPIO_PRT6 +#define SWO_PIN 4U +#define SWO_NUM 4U +#define SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM + #define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define SWO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDIO_PORT GPIO_PRT6 +#define SWDIO_PIN 6U +#define SWDIO_NUM 6U +#define SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM + #define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDCK_PORT GPIO_PRT6 +#define SWDCK_PIN 7U +#define SWDCK_NUM 7U +#define SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM + #define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#define CINA_PORT GPIO_PRT7 +#define CINA_PIN 1U +#define CINA_NUM 1U +#define CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM + #define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CINA_IRQ ioss_interrupts_gpio_7_IRQn +#define CINB_PORT GPIO_PRT7 +#define CINB_PIN 2U +#define CINB_NUM 2U +#define CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM + #define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CINB_IRQ ioss_interrupts_gpio_7_IRQn +#define CMOD_PORT GPIO_PRT7 +#define CMOD_PIN 7U +#define CMOD_NUM 7U +#define CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM + #define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#define CSD_BTN0_PORT GPIO_PRT8 +#define CSD_BTN0_PIN 1U +#define CSD_BTN0_NUM 1U +#define CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_1_HSIOM + #define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_BTN1_PORT GPIO_PRT8 +#define CSD_BTN1_PIN 2U +#define CSD_BTN1_NUM 2U +#define CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_2_HSIOM + #define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD0_PORT GPIO_PRT8 +#define CSD_SLD0_PIN 3U +#define CSD_SLD0_NUM 3U +#define CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_3_HSIOM + #define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD1_PORT GPIO_PRT8 +#define CSD_SLD1_PIN 4U +#define CSD_SLD1_NUM 4U +#define CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_4_HSIOM + #define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD2_PORT GPIO_PRT8 +#define CSD_SLD2_PIN 5U +#define CSD_SLD2_NUM 5U +#define CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_5_HSIOM + #define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD3_PORT GPIO_PRT8 +#define CSD_SLD3_PIN 6U +#define CSD_SLD3_NUM 6U +#define CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_6_HSIOM + #define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD4_PORT GPIO_PRT8 +#define CSD_SLD4_PIN 7U +#define CSD_SLD4_NUM 7U +#define CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_7_HSIOM + #define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn + +extern const cy_stc_gpio_pin_config_t WCO_IN_config; +extern const cy_stc_gpio_pin_config_t WCO_OUT_config; +extern const cy_stc_gpio_pin_config_t LED_RED_config; +extern const cy_stc_gpio_pin_config_t SW2_config; +extern const cy_stc_gpio_pin_config_t LED_BLUE_config; +extern const cy_stc_gpio_pin_config_t QSPI_SS0_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA3_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA2_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA1_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA0_config; +extern const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config; +extern const cy_stc_gpio_pin_config_t LED9_config; +extern const cy_stc_gpio_pin_config_t CSD_TX_config; +extern const cy_stc_gpio_pin_config_t LED_GREEN_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_1_pin_4_config; +extern const cy_stc_gpio_pin_config_t LED8_config; +extern const cy_stc_gpio_pin_config_t UART_TX_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SCL_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SDA_config; +extern const cy_stc_gpio_pin_config_t SWO_config; +extern const cy_stc_gpio_pin_config_t SWDIO_config; +extern const cy_stc_gpio_pin_config_t SWDCK_config; +extern const cy_stc_gpio_pin_config_t CINA_config; +extern const cy_stc_gpio_pin_config_t CINB_config; +extern const cy_stc_gpio_pin_config_t CMOD_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN0_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD0_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD2_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD3_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD4_config; + +void init_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PINS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.c new file mode 100644 index 00000000000..9cd3f7692be --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.c @@ -0,0 +1,506 @@ +/******************************************************************************* +* File Name: cycfg_platform.c +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_platform.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 50UL +#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBAC_SUPPLY CY_CFG_PWR_VBAC_SUPPLY_VDD +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_1_1V +#define CY_CFG_PWR_USING_ULP 0 + +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = +{ + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 10U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; + +__WEAK void cycfg_ClockStartupError(uint32_t error) +{ + (void)error; /* Suppress the compiler warning */ + while(1); +} +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_ClkHf2Init() +{ + Cy_SysClk_ClkHfSetSource(2U, CY_CFG_SYSCLK_CLKHF2_CLKPATH); + Cy_SysClk_ClkHfSetDivider(2U, CY_SYSCLK_CLKHF_DIVIDE_BY_2); + Cy_SysClk_ClkHfEnable(2U); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(1U); +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} + + +void init_cycfg_platform(void) +{ + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); + #if (CY_CFG_PWR_VBAC_SUPPLY == CY_CFG_PWR_VBAC_SUPPLY_VDD) + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */) + { + Cy_SysLib_ResetBackupDomain(); + Cy_SysClk_IloDisable(); + Cy_SysClk_IloInit(); + } + #endif + #ifdef CY_CFG_PWR_ENABLED + /* Configure power mode */ + #if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_CFG_PWR_LDO_VOLTAGE); + #else + Cy_SysPm_BuckEnable(CY_CFG_PWR_BUCK_VOLTAGE); + #endif + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); + #if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); + #else + Cy_SysPm_PmicDisableOutput(); + #endif + #endif + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH1); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_FllDisable(); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); + #ifdef CY_IP_MXBLESS + (void)Cy_BLE_EcoReset(); + #endif + + #ifdef CY_CFG_SYSCLK_PLL1_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH2); + #endif + + #ifdef CY_CFG_SYSCLK_PLL2_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH3); + #endif + + #ifdef CY_CFG_SYSCLK_PLL3_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH4); + #endif + + #ifdef CY_CFG_SYSCLK_PLL4_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH5); + #endif + + #ifdef CY_CFG_SYSCLK_PLL5_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH6); + #endif + + #ifdef CY_CFG_SYSCLK_PLL6_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH7); + #endif + + #ifdef CY_CFG_SYSCLK_PLL7_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH8); + #endif + + #ifdef CY_CFG_SYSCLK_PLL8_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH9); + #endif + + #ifdef CY_CFG_SYSCLK_PLL9_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH10); + #endif + + #ifdef CY_CFG_SYSCLK_PLL10_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH11); + #endif + + #ifdef CY_CFG_SYSCLK_PLL11_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH12); + #endif + + #ifdef CY_CFG_SYSCLK_PLL12_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH13); + #endif + + #ifdef CY_CFG_SYSCLK_PLL13_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH14); + #endif + + #ifdef CY_CFG_SYSCLK_PLL14_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH15); + #endif + + /* Enable all source clocks */ + #ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); + #endif + + #ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + Cy_SysClk_AltHfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); + #endif + + /* Configure CPU clock dividers */ + #ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); + #endif + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); + #else + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure Path Clocks */ + #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); + #endif + + /* Configure and enable FLL */ + #ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); + #endif + + Cy_SysClk_ClkHf0Init(); + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure and enable PLLs */ + #ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); + #endif + + /* Configure HF clocks */ + #ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); + #endif + + /* Configure miscellaneous clocks */ + #ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); + #endif + + /* Configure default enabled clocks */ + #ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); + #else + Cy_SysClk_IloDisable(); + #endif + + #ifndef CY_CFG_SYSCLK_IMO_ENABLED + #error the IMO must be enabled for proper chip operation + #endif + + /* Set accurate flash wait states */ + #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); + #endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.h new file mode 100644 index 00000000000..391f01a0be1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_platform.h @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_platform.h +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PLATFORM_H) +#define CYCFG_PLATFORM_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_ble_clk.h" +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +void init_cycfg_platform(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PLATFORM_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000..a1dadb2d0b0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.c @@ -0,0 +1,39 @@ +/******************************************************************************* +* File Name: cycfg_routing.c +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_routing.h" + +#include "cy_device_headers.h" + +void init_cycfg_routing(void) +{ + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000..92fbc92d25f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/GeneratedSource/cycfg_routing.h @@ -0,0 +1,64 @@ +/******************************************************************************* +* File Name: cycfg_routing.h +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +void init_cycfg_routing(void); +#define init_cycfg_connectivity() init_cycfg_routing() +#define ioss_0_port_11_pin_2_HSIOM P11_2_SMIF_SPI_SELECT0 +#define ioss_0_port_11_pin_3_HSIOM P11_3_SMIF_SPI_DATA3 +#define ioss_0_port_11_pin_4_HSIOM P11_4_SMIF_SPI_DATA2 +#define ioss_0_port_11_pin_5_HSIOM P11_5_SMIF_SPI_DATA1 +#define ioss_0_port_11_pin_6_HSIOM P11_6_SMIF_SPI_DATA0 +#define ioss_0_port_11_pin_7_HSIOM P11_7_SMIF_SPI_CLK +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_5_pin_1_HSIOM P5_1_SCB5_UART_TX +#define ioss_0_port_6_pin_0_HSIOM P6_0_SCB3_I2C_SCL +#define ioss_0_port_6_pin_1_HSIOM P6_1_SCB3_I2C_SDA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXA + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_ROUTING_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralNames.h new file mode 100644 index 00000000000..cbceb3a24bb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralNames.h @@ -0,0 +1,113 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)SCB0_BASE, + UART_1 = (int)SCB1_BASE, + UART_2 = (int)SCB2_BASE, + UART_3 = (int)SCB3_BASE, + UART_4 = (int)SCB4_BASE, + UART_5 = (int)SCB5_BASE, + UART_6 = (int)SCB6_BASE, + UART_7 = (int)SCB7_BASE, +} UARTName; + + +typedef enum { + SPI_0 = (int)SCB0_BASE, + SPI_1 = (int)SCB1_BASE, + SPI_2 = (int)SCB2_BASE, + SPI_3 = (int)SCB3_BASE, + SPI_4 = (int)SCB4_BASE, + SPI_5 = (int)SCB5_BASE, + SPI_6 = (int)SCB6_BASE, + SPI_7 = (int)SCB7_BASE, + SPI_8 = (int)SCB8_BASE, +} SPIName; + +typedef enum { + I2C_0 = (int)SCB0_BASE, + I2C_1 = (int)SCB1_BASE, + I2C_2 = (int)SCB2_BASE, + I2C_3 = (int)SCB3_BASE, + I2C_4 = (int)SCB4_BASE, + I2C_5 = (int)SCB5_BASE, + I2C_6 = (int)SCB6_BASE, + I2C_7 = (int)SCB7_BASE, + I2C_8 = (int)SCB8_BASE, +} I2CName; + +typedef enum { + PWM_32b_0 = TCPWM0_BASE, + PWM_32b_1, + PWM_32b_2, + PWM_32b_3, + PWM_32b_4, + PWM_32b_5, + PWM_32b_6, + PWM_32b_7, + PWM_16b_0 = TCPWM1_BASE, + PWM_16b_1, + PWM_16b_2, + PWM_16b_3, + PWM_16b_4, + PWM_16b_5, + PWM_16b_6, + PWM_16b_7, + PWM_16b_8, + PWM_16b_9, + PWM_16b_10, + PWM_16b_11, + PWM_16b_12, + PWM_16b_13, + PWM_16b_14, + PWM_16b_15, + PWM_16b_16, + PWM_16b_17, + PWM_16b_18, + PWM_16b_19, + PWM_16b_20, + PWM_16b_21, + PWM_16b_22, + PWM_16b_23, +} PWMName; + +typedef enum { + ADC_0 = (int)SAR_BASE, +} ADCName; + +typedef enum { + DAC_0 = (int)CTDAC0_BASE, +} DACName; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralPins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralPins.c new file mode 100644 index 00000000000..58649a5ca13 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PeripheralPins.c @@ -0,0 +1,366 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PeripheralNames.h" +#include "PeripheralPins.h" +#include "pinmap.h" + +#if DEVICE_SERIAL +//*** SERIAL *** +const PinMap PinMap_UART_RX[] = { + {P0_2, UART_0, CY_PIN_IN_FUNCTION( P0_2_SCB0_UART_RX, PCLK_SCB0_CLOCK)}, + {P1_0, UART_7, CY_PIN_IN_FUNCTION( P1_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P5_0, UART_5, CY_PIN_IN_FUNCTION( P5_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P6_0, UART_3, CY_PIN_IN_FUNCTION( P6_0_SCB3_UART_RX, PCLK_SCB3_CLOCK)}, + {P6_4, UART_6, CY_PIN_IN_FUNCTION( P6_4_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P7_0, UART_4, CY_PIN_IN_FUNCTION( P7_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_0, UART_4, CY_PIN_IN_FUNCTION( P8_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P9_0, UART_2, CY_PIN_IN_FUNCTION( P9_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P10_0, UART_1, CY_PIN_IN_FUNCTION( P10_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P11_0, UART_5, CY_PIN_IN_FUNCTION( P11_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P12_0, UART_6, CY_PIN_IN_FUNCTION( P12_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_0, UART_6, CY_PIN_IN_FUNCTION( P13_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_TX[] = { + {P0_3, UART_0, CY_PIN_OUT_FUNCTION( P0_3_SCB0_UART_TX, PCLK_SCB0_CLOCK)}, + {P1_1, UART_7, CY_PIN_OUT_FUNCTION( P1_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P5_1, UART_5, CY_PIN_OUT_FUNCTION( P5_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P6_1, UART_3, CY_PIN_OUT_FUNCTION( P6_1_SCB3_UART_TX, PCLK_SCB3_CLOCK)}, + {P6_5, UART_6, CY_PIN_OUT_FUNCTION( P6_5_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P7_1, UART_4, CY_PIN_OUT_FUNCTION( P7_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_1, UART_4, CY_PIN_OUT_FUNCTION( P8_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P9_1, UART_2, CY_PIN_OUT_FUNCTION( P9_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P10_1, UART_1, CY_PIN_OUT_FUNCTION( P10_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P11_1, UART_5, CY_PIN_OUT_FUNCTION( P11_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P12_1, UART_6, CY_PIN_OUT_FUNCTION( P12_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_1, UART_6, CY_PIN_OUT_FUNCTION( P13_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_RTS[] = { + {P0_4, UART_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_UART_RTS, PCLK_SCB0_CLOCK)}, + {P1_2, UART_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_UART_RTS, PCLK_SCB7_CLOCK)}, + {P5_2, UART_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P6_2, UART_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_UART_RTS, PCLK_SCB3_CLOCK)}, + {P6_6, UART_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P7_2, UART_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_2, UART_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P9_2, UART_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P10_2, UART_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P11_2, UART_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P12_2, UART_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_CTS[] = { + {P0_5, UART_0, CY_PIN_IN_FUNCTION( P0_5_SCB0_UART_CTS, PCLK_SCB0_CLOCK)}, + {P1_3, UART_7, CY_PIN_IN_FUNCTION( P1_3_SCB7_UART_CTS, PCLK_SCB7_CLOCK)}, + {P5_3, UART_5, CY_PIN_IN_FUNCTION( P5_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P6_3, UART_3, CY_PIN_IN_FUNCTION( P6_3_SCB3_UART_CTS, PCLK_SCB3_CLOCK)}, + {P6_7, UART_6, CY_PIN_IN_FUNCTION( P6_7_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P7_3, UART_4, CY_PIN_IN_FUNCTION( P7_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_3, UART_4, CY_PIN_IN_FUNCTION( P8_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P9_3, UART_2, CY_PIN_IN_FUNCTION( P9_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P10_3, UART_1, CY_PIN_IN_FUNCTION( P10_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P11_3, UART_5, CY_PIN_IN_FUNCTION( P11_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P12_3, UART_6, CY_PIN_IN_FUNCTION( P12_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SERIAL + + +#if DEVICE_I2C +//*** I2C *** +const PinMap PinMap_I2C_SCL[] = { + {P0_2, I2C_0, CY_PIN_OD_FUNCTION( P0_2_SCB0_I2C_SCL, PCLK_SCB0_CLOCK)}, + {P1_0, I2C_7, CY_PIN_OD_FUNCTION( P1_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P5_0, I2C_5, CY_PIN_OD_FUNCTION( P5_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P6_0, I2C_3, CY_PIN_OD_FUNCTION( P6_0_SCB3_I2C_SCL, PCLK_SCB3_CLOCK)}, + {P6_4, I2C_6, CY_PIN_OD_FUNCTION( P6_4_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P7_0, I2C_4, CY_PIN_OD_FUNCTION( P7_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_0, I2C_4, CY_PIN_OD_FUNCTION( P8_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P9_0, I2C_2, CY_PIN_OD_FUNCTION( P9_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P10_0, I2C_1, CY_PIN_OD_FUNCTION( P10_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P11_0, I2C_5, CY_PIN_OD_FUNCTION( P11_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P12_0, I2C_6, CY_PIN_OD_FUNCTION( P12_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_0, I2C_6, CY_PIN_OD_FUNCTION( P13_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_I2C_SDA[] = { + {P0_3, I2C_0, CY_PIN_OD_FUNCTION( P0_3_SCB0_I2C_SDA, PCLK_SCB0_CLOCK)}, + {P1_1, I2C_7, CY_PIN_OD_FUNCTION( P1_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P5_1, I2C_5, CY_PIN_OD_FUNCTION( P5_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P6_1, I2C_3, CY_PIN_OD_FUNCTION( P6_1_SCB3_I2C_SDA, PCLK_SCB3_CLOCK)}, + {P6_5, I2C_6, CY_PIN_OD_FUNCTION( P6_5_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P7_1, I2C_4, CY_PIN_OD_FUNCTION( P7_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_1, I2C_4, CY_PIN_OD_FUNCTION( P8_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P9_1, I2C_2, CY_PIN_OD_FUNCTION( P9_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P10_1, I2C_1, CY_PIN_OD_FUNCTION( P10_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P11_1, I2C_5, CY_PIN_OD_FUNCTION( P11_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P12_1, I2C_6, CY_PIN_OD_FUNCTION( P12_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_1, I2C_6, CY_PIN_OD_FUNCTION( P13_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_I2C + +#if DEVICE_SPI +//*** SPI *** +const PinMap PinMap_SPI_MOSI[] = { + {P0_2, SPI_0, CY_PIN_OUT_FUNCTION( P0_2_SCB0_SPI_MOSI, PCLK_SCB0_CLOCK)}, + {P1_0, SPI_7, CY_PIN_OUT_FUNCTION( P1_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P5_0, SPI_5, CY_PIN_OUT_FUNCTION( P5_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P6_0, SPI_3, CY_PIN_OUT_FUNCTION( P6_0_SCB3_SPI_MOSI, PCLK_SCB3_CLOCK)}, + {P6_4, SPI_6, CY_PIN_OUT_FUNCTION( P6_4_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P7_0, SPI_4, CY_PIN_OUT_FUNCTION( P7_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P8_0, SPI_4, CY_PIN_OUT_FUNCTION( P8_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P9_0, SPI_2, CY_PIN_OUT_FUNCTION( P9_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P10_0, SPI_1, CY_PIN_OUT_FUNCTION( P10_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P11_0, SPI_5, CY_PIN_OUT_FUNCTION( P11_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P12_0, SPI_6, CY_PIN_OUT_FUNCTION( P12_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P13_0, SPI_6, CY_PIN_OUT_FUNCTION( P13_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_MISO[] = { + {P0_3, SPI_0, CY_PIN_IN_FUNCTION( P0_3_SCB0_SPI_MISO, PCLK_SCB0_CLOCK)}, + {P1_1, SPI_7, CY_PIN_IN_FUNCTION( P1_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P5_1, SPI_5, CY_PIN_IN_FUNCTION( P5_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P6_1, SPI_3, CY_PIN_IN_FUNCTION( P6_1_SCB3_SPI_MISO, PCLK_SCB3_CLOCK)}, + {P6_5, SPI_6, CY_PIN_IN_FUNCTION( P6_5_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P7_1, SPI_4, CY_PIN_IN_FUNCTION( P7_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P8_1, SPI_4, CY_PIN_IN_FUNCTION( P8_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P9_1, SPI_2, CY_PIN_IN_FUNCTION( P9_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P10_1, SPI_1, CY_PIN_IN_FUNCTION( P10_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P11_1, SPI_5, CY_PIN_IN_FUNCTION( P11_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P12_1, SPI_6, CY_PIN_IN_FUNCTION( P12_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P13_1, SPI_6, CY_PIN_IN_FUNCTION( P13_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SCLK[] = { + {P0_4, SPI_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_SPI_CLK, PCLK_SCB0_CLOCK)}, + {P1_2, SPI_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_SPI_CLK, PCLK_SCB7_CLOCK)}, + {P5_2, SPI_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P6_2, SPI_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_SPI_CLK, PCLK_SCB3_CLOCK)}, + {P6_6, SPI_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P7_2, SPI_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + + {P8_2, SPI_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P9_2, SPI_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P10_2, SPI_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P11_2, SPI_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P12_2, SPI_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SSEL[] = { + {P0_5, SPI_0, CY_PIN_OUT_FUNCTION( P0_5_SCB0_SPI_SELECT0, PCLK_SCB0_CLOCK)}, + {P1_3, SPI_7, CY_PIN_OUT_FUNCTION( P1_3_SCB7_SPI_SELECT0, PCLK_SCB7_CLOCK)}, + {P5_3, SPI_5, CY_PIN_OUT_FUNCTION( P5_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P6_3, SPI_3, CY_PIN_OUT_FUNCTION( P6_3_SCB3_SPI_SELECT0, PCLK_SCB3_CLOCK)}, + {P6_7, SPI_6, CY_PIN_OUT_FUNCTION( P6_7_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P7_3, SPI_4, CY_PIN_OUT_FUNCTION( P7_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P8_3, SPI_4, CY_PIN_OUT_FUNCTION( P8_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P9_3, SPI_2, CY_PIN_OUT_FUNCTION( P9_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P10_3, SPI_1, CY_PIN_OUT_FUNCTION( P10_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P11_3, SPI_5, CY_PIN_OUT_FUNCTION( P11_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P12_3, SPI_6, CY_PIN_OUT_FUNCTION( P12_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SPI + +#if DEVICE_PWMOUT +//*** PWM *** +const PinMap PinMap_PWM_OUT[] = { + // 16-bit PWM outputs + {P0_0, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P0_2, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P0_4, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P1_0, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P1_2, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_2_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P1_4, PWM_16b_13, CY_PIN_OUT_FUNCTION(P1_4_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P5_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P5_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P5_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P5_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P6_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P6_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P6_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P6_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + {P7_0, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_0_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P7_2, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_2_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P7_4, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_4_TCPWM1_LINE14, PCLK_TCPWM1_CLOCKS14)}, + {P7_6, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_6_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P8_0, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_0_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P8_2, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_2_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P8_4, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_4_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P8_6, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_6_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P9_0, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_0_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P9_2, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_2_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P9_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P9_6, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_6_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P10_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P10_2, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_2_TCPWM1_LINE23, PCLK_TCPWM1_CLOCKS23)}, + {P10_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P10_6, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_6_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_0, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P11_2, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_4, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P12_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P12_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P12_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P12_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P13_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P13_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + // 16-bit PWM inverted outputs + {P0_1, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P0_3, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P0_5, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P1_1, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P1_3, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_3_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P1_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P1_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P5_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P5_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P5_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P6_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P6_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P6_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P6_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + {P7_1, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_1_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P7_3, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_3_TCPWM1_LINE_COMPL13, PCLK_TCPWM1_CLOCKS13)}, + {P7_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P7_7, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_7_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P8_1, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_1_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P8_3, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_3_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P8_5, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_5_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P8_7, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_7_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P9_1, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_1_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P9_3, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_3_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P9_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P9_7, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_7_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P10_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P10_3, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_3_TCPWM1_LINE_COMPL23, PCLK_TCPWM1_CLOCKS23)}, + {P10_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P11_1, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P11_3, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_5, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P12_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P12_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P12_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P12_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P13_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P13_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + // 32-bit PWM outputs + {PWM32(P0_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_0), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_2), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_2_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_4), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_4_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_4), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_4_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_6), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_6_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_0), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_2), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_4), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + // 32-bit PWM inverted outputs + {PWM32(P0_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_1), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_3), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_3_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_5), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_5_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P6_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_5), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_5_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_7), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_7_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P11_1), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_3), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_5), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {NC, NC, 0} +}; +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +const PinMap PinMap_ADC[] = { + {P10_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_3, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN + +#if DEVICE_ANALOGOUT +const PinMap PinMap_DAC[] = { + {P9_6, DAC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_CTDAC)}, + {P10_5, DAC_0, CY_PIN_FUNCTION(HSIOM_SEL_AMUXA, PCLK_PASS_CLOCK_CTDAC, AnalogMode, 0)}, // CTDAC connects to the P10_5 pin through the AMUXA bus + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PinNames.h new file mode 100644 index 00000000000..d0dcee1cc67 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/PinNames.h @@ -0,0 +1,254 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" +#include "PortNames.h" + +// PinName[15-0] = Port[15-8] + Pin[7-0] +typedef enum { + P0_0 = (Port0 << 8) + 0x00, + P0_1 = (Port0 << 8) + 0x01, + P0_2 = (Port0 << 8) + 0x02, + P0_3 = (Port0 << 8) + 0x03, + P0_4 = (Port0 << 8) + 0x04, + P0_5 = (Port0 << 8) + 0x05, + P0_6 = (Port0 << 8) + 0x06, + P0_7 = (Port0 << 8) + 0x07, + + P1_0 = (Port1 << 8) + 0x00, + P1_1 = (Port1 << 8) + 0x01, + P1_2 = (Port1 << 8) + 0x02, + P1_3 = (Port1 << 8) + 0x03, + P1_4 = (Port1 << 8) + 0x04, + P1_5 = (Port1 << 8) + 0x05, + P1_6 = (Port1 << 8) + 0x06, + P1_7 = (Port1 << 8) + 0x07, + + P2_0 = (Port2 << 8) + 0x00, + P2_1 = (Port2 << 8) + 0x01, + P2_2 = (Port2 << 8) + 0x02, + P2_3 = (Port2 << 8) + 0x03, + P2_4 = (Port2 << 8) + 0x04, + P2_5 = (Port2 << 8) + 0x05, + P2_6 = (Port2 << 8) + 0x06, + P2_7 = (Port2 << 8) + 0x07, + + P3_0 = (Port3 << 8) + 0x00, + P3_1 = (Port3 << 8) + 0x01, + P3_2 = (Port3 << 8) + 0x02, + P3_3 = (Port3 << 8) + 0x03, + P3_4 = (Port3 << 8) + 0x04, + P3_5 = (Port3 << 8) + 0x05, + P3_6 = (Port3 << 8) + 0x06, + P3_7 = (Port3 << 8) + 0x07, + + P4_0 = (Port4 << 8) + 0x00, + P4_1 = (Port4 << 8) + 0x01, + P4_2 = (Port4 << 8) + 0x02, + P4_3 = (Port4 << 8) + 0x03, + P4_4 = (Port4 << 8) + 0x04, + P4_5 = (Port4 << 8) + 0x05, + P4_6 = (Port4 << 8) + 0x06, + P4_7 = (Port4 << 8) + 0x07, + + P5_0 = (Port5 << 8) + 0x00, + P5_1 = (Port5 << 8) + 0x01, + P5_2 = (Port5 << 8) + 0x02, + P5_3 = (Port5 << 8) + 0x03, + P5_4 = (Port5 << 8) + 0x04, + P5_5 = (Port5 << 8) + 0x05, + P5_6 = (Port5 << 8) + 0x06, + P5_7 = (Port5 << 8) + 0x07, + + P6_0 = (Port6 << 8) + 0x00, + P6_1 = (Port6 << 8) + 0x01, + P6_2 = (Port6 << 8) + 0x02, + P6_3 = (Port6 << 8) + 0x03, + P6_4 = (Port6 << 8) + 0x04, + P6_5 = (Port6 << 8) + 0x05, + P6_6 = (Port6 << 8) + 0x06, + P6_7 = (Port6 << 8) + 0x07, + + P7_0 = (Port7 << 8) + 0x00, + P7_1 = (Port7 << 8) + 0x01, + P7_2 = (Port7 << 8) + 0x02, + P7_3 = (Port7 << 8) + 0x03, + P7_4 = (Port7 << 8) + 0x04, + P7_5 = (Port7 << 8) + 0x05, + P7_6 = (Port7 << 8) + 0x06, + P7_7 = (Port7 << 8) + 0x07, + + P8_0 = (Port8 << 8) + 0x00, + P8_1 = (Port8 << 8) + 0x01, + P8_2 = (Port8 << 8) + 0x02, + P8_3 = (Port8 << 8) + 0x03, + P8_4 = (Port8 << 8) + 0x04, + P8_5 = (Port8 << 8) + 0x05, + P8_6 = (Port8 << 8) + 0x06, + P8_7 = (Port8 << 8) + 0x07, + + P9_0 = (Port9 << 8) + 0x00, + P9_1 = (Port9 << 8) + 0x01, + P9_2 = (Port9 << 8) + 0x02, + P9_3 = (Port9 << 8) + 0x03, + P9_4 = (Port9 << 8) + 0x04, + P9_5 = (Port9 << 8) + 0x05, + P9_6 = (Port9 << 8) + 0x06, + P9_7 = (Port9 << 8) + 0x07, + + P10_0 = (Port10 << 8) + 0x00, + P10_1 = (Port10 << 8) + 0x01, + P10_2 = (Port10 << 8) + 0x02, + P10_3 = (Port10 << 8) + 0x03, + P10_4 = (Port10 << 8) + 0x04, + P10_5 = (Port10 << 8) + 0x05, + P10_6 = (Port10 << 8) + 0x06, + P10_7 = (Port10 << 8) + 0x07, + + P11_0 = (Port11 << 8) + 0x00, + P11_1 = (Port11 << 8) + 0x01, + P11_2 = (Port11 << 8) + 0x02, + P11_3 = (Port11 << 8) + 0x03, + P11_4 = (Port11 << 8) + 0x04, + P11_5 = (Port11 << 8) + 0x05, + P11_6 = (Port11 << 8) + 0x06, + P11_7 = (Port11 << 8) + 0x07, + + P12_0 = (Port12 << 8) + 0x00, + P12_1 = (Port12 << 8) + 0x01, + P12_2 = (Port12 << 8) + 0x02, + P12_3 = (Port12 << 8) + 0x03, + P12_4 = (Port12 << 8) + 0x04, + P12_5 = (Port12 << 8) + 0x05, + P12_6 = (Port12 << 8) + 0x06, + P12_7 = (Port12 << 8) + 0x07, + + P13_0 = (Port13 << 8) + 0x00, + P13_1 = (Port13 << 8) + 0x01, + P13_2 = (Port13 << 8) + 0x02, + P13_3 = (Port13 << 8) + 0x03, + P13_4 = (Port13 << 8) + 0x04, + P13_5 = (Port13 << 8) + 0x05, + P13_6 = (Port13 << 8) + 0x06, + P13_7 = (Port13 << 8) + 0x07, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Arduino connector namings + A0 = P10_0, + A1 = P10_1, + A2 = P10_2, + A3 = P10_3, + A4 = P10_4, + A5 = P10_5, + + D0 = P5_0, + D1 = P5_1, + D2 = P5_2, + D3 = P5_3, + D4 = P5_4, + D5 = P5_5, + D6 = P5_6, + D7 = P0_2, + D8 = P13_0, + D9 = P13_1, + D10 = P12_3, + D11 = P12_0, + D12 = P12_1, + D13 = P12_2, + D14 = P6_1, + D15 = P6_0, + + // Generic signal names + + I2C_SCL = P6_0, + I2C_SDA = P6_1, + + SPI_MOSI = P12_0, + SPI_MISO = P12_1, + SPI_CLK = P12_2, + SPI_CS = P12_4, + + UART_RX = P5_0, + UART_TX = P5_1, + UART_RTS = P5_2, + UART_CTS = P5_3, + + SWITCH2 = P0_4, + LED1 = P0_3, + LED2 = P1_1, + LED3 = P11_1, + LED4 = P1_5, + LED5 = P13_7, + + LED_RED = LED1, + LED_BLUE = LED3, + LED_GREEN = LED2, + + USER_BUTTON = SWITCH2, + BUTTON1 = USER_BUTTON, + + QSPI_CLK = P11_7, + QSPI_IO_0 = P11_6, + QSPI_IO_1 = P11_5, + QSPI_IO_2 = P11_4, + QSPI_IO_3 = P11_3, + QSPI_SEL = P11_2, + + // Standardized interfaces names + STDIO_UART_TX = UART_TX, + STDIO_UART_RX = UART_RX, + STDIO_UART_CTS = UART_CTS, + STDIO_UART_RTS = UART_RTS, + + CY_STDIO_UART_RX = STDIO_UART_RX, + CY_STDIO_UART_TX = STDIO_UART_TX, + CY_STDIO_UART_CTS = STDIO_UART_CTS, + CY_STDIO_UART_RTS = STDIO_UART_RTS, + + USBTX = UART_TX, + USBRX = UART_RX, + + AOUT = P9_6 +} PinName; + +// PinName[15-0] = Port[15-8] + Pin[4-0] +static inline unsigned CY_PIN(PinName pin) +{ + return pin & 0x07; +} + +static inline unsigned CY_PORT(PinName pin) +{ + return (pin >> 8) & 0xFF; +} + +// Because MBED pin mapping API does not allow to map multiple instances of the PWM +// to be mapped to the same pin, we create special pin names to force 32-bit PWM unit +// usage instead of standard 16-bit PWM. + +#define PWM32(pin) CY_PIN_FORCE_PWM_32(pin) + + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct new file mode 100644 index 00000000000..1dcfac33dba --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct @@ -0,0 +1,256 @@ +#! armcc -E +; The first line specifies a preprocessor command that the linker invokes +; to pass a scatter file through a C preprocessor. + +;******************************************************************************* +;* \file cy8c6xx7_cm4_dual.scat +;* \version `$CY_MAJOR_VERSION`.`$CY_MINOR_VERSION` +;* +;* Linker file for the ARMCC. +;* +;* The main purpose of the linker script is to describe how the sections in the +;* input files should be mapped into the output file, and to control the memory +;* layout of the output file. +;* +;* \note The entry point location is fixed and starts at 0x10000000. The valid +;* application image should be placed there. +;* +;* \note The linker files included with the PDL template projects must be +;* generic and handle all common use cases. Your project may not use every +;* section defined in the linker files. In that case you may see the warnings +;* during the build process: L6314W (no section matches pattern) and/or L6329W +;* (pattern only matches removed unused sections). In your project, you can +;* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +;* the linker, simply comment out or remove the relevant code in the linker +;* file. +;* +;******************************************************************************* +;* \copyright +;* Copyright 2016-2019 Cypress Semiconductor Corporation +;* SPDX-License-Identifier: Apache-2.0 +;* +;* Licensed under the Apache License, Version 2.0 (the "License"); +;* you may not use this file except in compliance with the License. +;* You may obtain a copy of the License at +;* +;* http://www.apache.org/licenses/LICENSE-2.0 +;* +;* Unless required by applicable law or agreed to in writing, software +;* distributed under the License is distributed on an "AS IS" BASIS, +;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;* See the License for the specific language governing permissions and +;* limitations under the License. +;******************************************************************************/ + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +#define Stack_Size MBED_BOOT_STACK_SIZE + +; The defines below describe the location and size of blocks of memory in the target. +; Use these defines to specify the memory regions available for allocation. + +; The following defines control RAM and flash memory allocation for the CM4 core. +; You can change the memory allocation by editing RAM and Flash defines. +; Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. +; Using this memory region for other purposes will lead to unexpected behavior. +; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat', +; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'. +; RAM +#define RAM_START MBED_RAM_START +#define RAM_SIZE MBED_RAM_SIZE +; Flash +#define FLASH_START MBED_ROM_START +#define FLASH_SIZE MBED_ROM_SIZE + +; The following defines describe a 32K flash region used for EEPROM emulation. +; This region can also be used as the general purpose flash. +; You can assign sections to this memory region for only one of the cores. +; Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. +; Therefore, repurposing this memory region will prevent such middleware from operation. +#define EM_EEPROM_START 0x14000000 +#define EM_EEPROM_SIZE 0x8000 + +; The following defines describe device specific memory regions and must not be changed. +; Supervisory flash: User data +#define SFLASH_USER_DATA_START 0x16000800 +#define SFLASH_USER_DATA_SIZE 0x00000800 + +; Supervisory flash: Normal Access Restrictions (NAR) +#define SFLASH_NAR_START 0x16001A00 +#define SFLASH_NAR_SIZE 0x00000200 + +; Supervisory flash: Public Key +#define SFLASH_PUBLIC_KEY_START 0x16005A00 +#define SFLASH_PUBLIC_KEY_SIZE 0x00000C00 + +; Supervisory flash: Table of Content # 2 +#define SFLASH_TOC_2_START 0x16007C00 +#define SFLASH_TOC_2_SIZE 0x00000200 + +; Supervisory flash: Table of Content # 2 Copy +#define SFLASH_RTOC_2_START 0x16007E00 +#define SFLASH_RTOC_2_SIZE 0x00000200 + +; External memory +#define XIP_START 0x18000000 +#define XIP_SIZE 0x08000000 + +; eFuse +#define EFUSE_START 0x90700000 +#define EFUSE_SIZE 0x100000 + + +LR_IROM1 FLASH_START FLASH_SIZE +{ + ER_FLASH_VECTORS +0 + { + * (RESET, +FIRST) + } + + ER_FLASH_CODE +0 FIXED + { + * (InRoot$$Sections) + * (+RO) + } + + ER_RAM_VECTORS RAM_START UNINIT + { + * (RESET_RAM, +FIRST) + } + + RW_RAM_DATA +0 + { + * (.cy_ramfunc) + .ANY (+RW, +ZI) + } + + ; Place variables in the section that should not be initialized during the + ; device startup. + RW_IRAM1 +0 UNINIT + { + * (.noinit) + } + + ; Application heap area (HEAP) + ARM_LIB_HEAP +0 + { + * (HEAP) + } + + ; Stack region growing down + ARM_LIB_STACK RAM_START+RAM_SIZE -Stack_Size + { + * (STACK) + } + + ; Used for the digital signature of the secure application and the + ; Bootloader SDK application. The size of the section depends on the required + ; data size. + .cy_app_signature (FLASH_START + FLASH_SIZE - 256) 256 + { + * (.cy_app_signature) + } +} + + +; Emulated EEPROM Flash area +LR_EM_EEPROM EM_EEPROM_START EM_EEPROM_SIZE +{ + .cy_em_eeprom +0 + { + * (.cy_em_eeprom) + } +} + +; Supervisory flash: User data +LR_SFLASH_USER_DATA SFLASH_USER_DATA_START SFLASH_USER_DATA_SIZE +{ + .cy_sflash_user_data +0 + { + * (.cy_sflash_user_data) + } +} + +; Supervisory flash: Normal Access Restrictions (NAR) +LR_SFLASH_NAR SFLASH_NAR_START SFLASH_NAR_SIZE +{ + .cy_sflash_nar +0 + { + * (.cy_sflash_nar) + } +} + +; Supervisory flash: Public Key +LR_SFLASH_PUBLIC_KEY SFLASH_PUBLIC_KEY_START SFLASH_PUBLIC_KEY_SIZE +{ + .cy_sflash_public_key +0 + { + * (.cy_sflash_public_key) + } +} + +; Supervisory flash: Table of Content # 2 +LR_SFLASH_TOC_2 SFLASH_TOC_2_START SFLASH_TOC_2_SIZE +{ + .cy_toc_part2 +0 + { + * (.cy_toc_part2) + } +} + +; Supervisory flash: Table of Content # 2 Copy +LR_SFLASH_RTOC_2 SFLASH_RTOC_2_START SFLASH_RTOC_2_SIZE +{ + .cy_rtoc_part2 +0 + { + * (.cy_rtoc_part2) + } +} + + +; Places the code in the Execute in Place (XIP) section. See the smif driver documentation for details. +LR_EROM XIP_START XIP_SIZE +{ + .cy_xip +0 + { + * (.cy_xip) + } +} + + +; eFuse +LR_EFUSE EFUSE_START EFUSE_SIZE +{ + .cy_efuse +0 + { + * (.cy_efuse) + } +} + + +; The section is used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. +CYMETA 0x90500000 +{ + .cymeta +0 { * (.cymeta) } +} + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..bdbd72f8c64 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S @@ -0,0 +1,696 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 02. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;/* +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__STACK_SIZE +Stack_Size EQU __STACK_SIZE + ELSE +Stack_Size EQU 0x00000400 + ENDIF + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__HEAP_SIZE +Heap_Size EQU __HEAP_SIZE + ELSE +Heap_Size EQU 0x00000400 + ENDIF + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + + DCD 0x0000000D ; NMI Handler located at ROM code + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External interrupts Power Mode Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + EXPORT __ramVectors + AREA RESET_RAM, READWRITE, NOINIT +__ramVectors SPACE __Vectors_Size + + + AREA |.text|, CODE, READONLY + + +; Weak function for startup customization +; +; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +; because this function is executed as the first instruction in the ResetHandler. +; The PDL is also not initialized to use the proper register offsets. +; The user of this function is responsible for initializing the PDL and resources before using them. +; +Cy_OnResetUser PROC + EXPORT Cy_OnResetUser [WEAK] + BX LR + ENDP + + +; Reset Handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT Cy_SystemInitFpuEnable + IMPORT __main + + ; Define strong function for startup customization + BL Cy_OnResetUser + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__Vectors + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +Vectors_Copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE Vectors_Copy + + ; Update Vector Table Offset Register. */ + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb 0xF + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + LDR R0, =__main + BLX R0 + + ; Should never get here + B . + + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP + +Cy_SysLib_FaultHandler PROC + EXPORT Cy_SysLib_FaultHandler [WEAK] + B . + ENDP +HardFault_Wrapper\ + PROC + EXPORT HardFault_Wrapper [WEAK] + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + bl L_API_call +L_MSP + mrs r0, MSP +L_API_call + bl Cy_SysLib_FaultHandler + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B HardFault_Wrapper + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT Default_Handler [WEAK] + EXPORT ioss_interrupts_gpio_0_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_1_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_2_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_3_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_4_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_5_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_6_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_7_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_8_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_9_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_10_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_11_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_12_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_13_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_14_IRQHandler [WEAK] + EXPORT ioss_interrupt_gpio_IRQHandler [WEAK] + EXPORT ioss_interrupt_vdd_IRQHandler [WEAK] + EXPORT lpcomp_interrupt_IRQHandler [WEAK] + EXPORT scb_8_interrupt_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_0_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_1_IRQHandler [WEAK] + EXPORT srss_interrupt_backup_IRQHandler [WEAK] + EXPORT srss_interrupt_IRQHandler [WEAK] + EXPORT pass_interrupt_ctbs_IRQHandler [WEAK] + EXPORT bless_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_15_IRQHandler [WEAK] + EXPORT scb_0_interrupt_IRQHandler [WEAK] + EXPORT scb_1_interrupt_IRQHandler [WEAK] + EXPORT scb_2_interrupt_IRQHandler [WEAK] + EXPORT scb_3_interrupt_IRQHandler [WEAK] + EXPORT scb_4_interrupt_IRQHandler [WEAK] + EXPORT scb_5_interrupt_IRQHandler [WEAK] + EXPORT scb_6_interrupt_IRQHandler [WEAK] + EXPORT scb_7_interrupt_IRQHandler [WEAK] + EXPORT csd_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_1_IRQHandler [WEAK] + EXPORT cpuss_interrupt_crypto_IRQHandler [WEAK] + EXPORT cpuss_interrupt_fm_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_8_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_9_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_10_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_11_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_12_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_13_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_14_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_15_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_16_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_17_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_18_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_19_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_20_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_21_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_22_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_23_IRQHandler [WEAK] + EXPORT udb_interrupts_0_IRQHandler [WEAK] + EXPORT udb_interrupts_1_IRQHandler [WEAK] + EXPORT udb_interrupts_2_IRQHandler [WEAK] + EXPORT udb_interrupts_3_IRQHandler [WEAK] + EXPORT udb_interrupts_4_IRQHandler [WEAK] + EXPORT udb_interrupts_5_IRQHandler [WEAK] + EXPORT udb_interrupts_6_IRQHandler [WEAK] + EXPORT udb_interrupts_7_IRQHandler [WEAK] + EXPORT udb_interrupts_8_IRQHandler [WEAK] + EXPORT udb_interrupts_9_IRQHandler [WEAK] + EXPORT udb_interrupts_10_IRQHandler [WEAK] + EXPORT udb_interrupts_11_IRQHandler [WEAK] + EXPORT udb_interrupts_12_IRQHandler [WEAK] + EXPORT udb_interrupts_13_IRQHandler [WEAK] + EXPORT udb_interrupts_14_IRQHandler [WEAK] + EXPORT udb_interrupts_15_IRQHandler [WEAK] + EXPORT pass_interrupt_sar_IRQHandler [WEAK] + EXPORT audioss_interrupt_i2s_IRQHandler [WEAK] + EXPORT audioss_interrupt_pdm_IRQHandler [WEAK] + EXPORT profile_interrupt_IRQHandler [WEAK] + EXPORT smif_interrupt_IRQHandler [WEAK] + EXPORT usb_interrupt_hi_IRQHandler [WEAK] + EXPORT usb_interrupt_med_IRQHandler [WEAK] + EXPORT usb_interrupt_lo_IRQHandler [WEAK] + EXPORT pass_interrupt_dacs_IRQHandler [WEAK] + +ioss_interrupts_gpio_0_IRQHandler +ioss_interrupts_gpio_1_IRQHandler +ioss_interrupts_gpio_2_IRQHandler +ioss_interrupts_gpio_3_IRQHandler +ioss_interrupts_gpio_4_IRQHandler +ioss_interrupts_gpio_5_IRQHandler +ioss_interrupts_gpio_6_IRQHandler +ioss_interrupts_gpio_7_IRQHandler +ioss_interrupts_gpio_8_IRQHandler +ioss_interrupts_gpio_9_IRQHandler +ioss_interrupts_gpio_10_IRQHandler +ioss_interrupts_gpio_11_IRQHandler +ioss_interrupts_gpio_12_IRQHandler +ioss_interrupts_gpio_13_IRQHandler +ioss_interrupts_gpio_14_IRQHandler +ioss_interrupt_gpio_IRQHandler +ioss_interrupt_vdd_IRQHandler +lpcomp_interrupt_IRQHandler +scb_8_interrupt_IRQHandler +srss_interrupt_mcwdt_0_IRQHandler +srss_interrupt_mcwdt_1_IRQHandler +srss_interrupt_backup_IRQHandler +srss_interrupt_IRQHandler +pass_interrupt_ctbs_IRQHandler +bless_interrupt_IRQHandler +cpuss_interrupts_ipc_0_IRQHandler +cpuss_interrupts_ipc_1_IRQHandler +cpuss_interrupts_ipc_2_IRQHandler +cpuss_interrupts_ipc_3_IRQHandler +cpuss_interrupts_ipc_4_IRQHandler +cpuss_interrupts_ipc_5_IRQHandler +cpuss_interrupts_ipc_6_IRQHandler +cpuss_interrupts_ipc_7_IRQHandler +cpuss_interrupts_ipc_8_IRQHandler +cpuss_interrupts_ipc_9_IRQHandler +cpuss_interrupts_ipc_10_IRQHandler +cpuss_interrupts_ipc_11_IRQHandler +cpuss_interrupts_ipc_12_IRQHandler +cpuss_interrupts_ipc_13_IRQHandler +cpuss_interrupts_ipc_14_IRQHandler +cpuss_interrupts_ipc_15_IRQHandler +scb_0_interrupt_IRQHandler +scb_1_interrupt_IRQHandler +scb_2_interrupt_IRQHandler +scb_3_interrupt_IRQHandler +scb_4_interrupt_IRQHandler +scb_5_interrupt_IRQHandler +scb_6_interrupt_IRQHandler +scb_7_interrupt_IRQHandler +csd_interrupt_IRQHandler +cpuss_interrupts_dw0_0_IRQHandler +cpuss_interrupts_dw0_1_IRQHandler +cpuss_interrupts_dw0_2_IRQHandler +cpuss_interrupts_dw0_3_IRQHandler +cpuss_interrupts_dw0_4_IRQHandler +cpuss_interrupts_dw0_5_IRQHandler +cpuss_interrupts_dw0_6_IRQHandler +cpuss_interrupts_dw0_7_IRQHandler +cpuss_interrupts_dw0_8_IRQHandler +cpuss_interrupts_dw0_9_IRQHandler +cpuss_interrupts_dw0_10_IRQHandler +cpuss_interrupts_dw0_11_IRQHandler +cpuss_interrupts_dw0_12_IRQHandler +cpuss_interrupts_dw0_13_IRQHandler +cpuss_interrupts_dw0_14_IRQHandler +cpuss_interrupts_dw0_15_IRQHandler +cpuss_interrupts_dw1_0_IRQHandler +cpuss_interrupts_dw1_1_IRQHandler +cpuss_interrupts_dw1_2_IRQHandler +cpuss_interrupts_dw1_3_IRQHandler +cpuss_interrupts_dw1_4_IRQHandler +cpuss_interrupts_dw1_5_IRQHandler +cpuss_interrupts_dw1_6_IRQHandler +cpuss_interrupts_dw1_7_IRQHandler +cpuss_interrupts_dw1_8_IRQHandler +cpuss_interrupts_dw1_9_IRQHandler +cpuss_interrupts_dw1_10_IRQHandler +cpuss_interrupts_dw1_11_IRQHandler +cpuss_interrupts_dw1_12_IRQHandler +cpuss_interrupts_dw1_13_IRQHandler +cpuss_interrupts_dw1_14_IRQHandler +cpuss_interrupts_dw1_15_IRQHandler +cpuss_interrupts_fault_0_IRQHandler +cpuss_interrupts_fault_1_IRQHandler +cpuss_interrupt_crypto_IRQHandler +cpuss_interrupt_fm_IRQHandler +cpuss_interrupts_cm0_cti_0_IRQHandler +cpuss_interrupts_cm0_cti_1_IRQHandler +cpuss_interrupts_cm4_cti_0_IRQHandler +cpuss_interrupts_cm4_cti_1_IRQHandler +tcpwm_0_interrupts_0_IRQHandler +tcpwm_0_interrupts_1_IRQHandler +tcpwm_0_interrupts_2_IRQHandler +tcpwm_0_interrupts_3_IRQHandler +tcpwm_0_interrupts_4_IRQHandler +tcpwm_0_interrupts_5_IRQHandler +tcpwm_0_interrupts_6_IRQHandler +tcpwm_0_interrupts_7_IRQHandler +tcpwm_1_interrupts_0_IRQHandler +tcpwm_1_interrupts_1_IRQHandler +tcpwm_1_interrupts_2_IRQHandler +tcpwm_1_interrupts_3_IRQHandler +tcpwm_1_interrupts_4_IRQHandler +tcpwm_1_interrupts_5_IRQHandler +tcpwm_1_interrupts_6_IRQHandler +tcpwm_1_interrupts_7_IRQHandler +tcpwm_1_interrupts_8_IRQHandler +tcpwm_1_interrupts_9_IRQHandler +tcpwm_1_interrupts_10_IRQHandler +tcpwm_1_interrupts_11_IRQHandler +tcpwm_1_interrupts_12_IRQHandler +tcpwm_1_interrupts_13_IRQHandler +tcpwm_1_interrupts_14_IRQHandler +tcpwm_1_interrupts_15_IRQHandler +tcpwm_1_interrupts_16_IRQHandler +tcpwm_1_interrupts_17_IRQHandler +tcpwm_1_interrupts_18_IRQHandler +tcpwm_1_interrupts_19_IRQHandler +tcpwm_1_interrupts_20_IRQHandler +tcpwm_1_interrupts_21_IRQHandler +tcpwm_1_interrupts_22_IRQHandler +tcpwm_1_interrupts_23_IRQHandler +udb_interrupts_0_IRQHandler +udb_interrupts_1_IRQHandler +udb_interrupts_2_IRQHandler +udb_interrupts_3_IRQHandler +udb_interrupts_4_IRQHandler +udb_interrupts_5_IRQHandler +udb_interrupts_6_IRQHandler +udb_interrupts_7_IRQHandler +udb_interrupts_8_IRQHandler +udb_interrupts_9_IRQHandler +udb_interrupts_10_IRQHandler +udb_interrupts_11_IRQHandler +udb_interrupts_12_IRQHandler +udb_interrupts_13_IRQHandler +udb_interrupts_14_IRQHandler +udb_interrupts_15_IRQHandler +pass_interrupt_sar_IRQHandler +audioss_interrupt_i2s_IRQHandler +audioss_interrupt_pdm_IRQHandler +profile_interrupt_IRQHandler +smif_interrupt_IRQHandler +usb_interrupt_hi_IRQHandler +usb_interrupt_med_IRQHandler +usb_interrupt_lo_IRQHandler +pass_interrupt_dacs_IRQHandler + + B . + ENDP + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld new file mode 100644 index 00000000000..fad6275f262 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld @@ -0,0 +1,430 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.ld +* \version 2.30 +* +* Linker file for the GNU C compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point location is fixed and starts at 0x10000000. The valid +* application image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) +ENTRY(Reset_Handler) + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +STACK_SIZE = MBED_BOOT_STACK_SIZE; + +/* Force symbol to be entered in the output file as an undefined symbol. Doing +* this may, for example, trigger linking of additional modules from standard +* libraries. You may list several symbols for each EXTERN, and you may use +* EXTERN multiple times. This command has the same effect as the -u command-line +* option. +*/ +EXTERN(Reset_Handler) + +/* The MEMORY section below describes the location and size of blocks of memory in the target. +* Use this section to specify the memory regions available for allocation. +*/ +MEMORY +{ + /* The ram and flash regions control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing the 'ram' and 'flash' regions. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. + */ + ram (rwx) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE + flash (rx) : ORIGIN = MBED_ROM_START, LENGTH = MBED_ROM_SIZE + + /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ + em_eeprom (rx) : ORIGIN = 0x14000000, LENGTH = 0x8000 /* 32 KB */ + + /* The following regions define device specific memory regions and must not be changed. */ + sflash_user_data (rx) : ORIGIN = 0x16000800, LENGTH = 0x800 /* Supervisory flash: User data */ + sflash_nar (rx) : ORIGIN = 0x16001A00, LENGTH = 0x200 /* Supervisory flash: Normal Access Restrictions (NAR) */ + sflash_public_key (rx) : ORIGIN = 0x16005A00, LENGTH = 0xC00 /* Supervisory flash: Public Key */ + sflash_toc_2 (rx) : ORIGIN = 0x16007C00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 */ + sflash_rtoc_2 (rx) : ORIGIN = 0x16007E00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 Copy */ + xip (rx) : ORIGIN = 0x18000000, LENGTH = 0x8000000 /* 128 MB */ + efuse (r) : ORIGIN = 0x90700000, LENGTH = 0x100000 /* 1 MB */ +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ + + +SECTIONS +{ + .text : + { + . = ALIGN(4); + __Vectors = . ; + KEEP(*(.vectors)) + . = ALIGN(4); + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + . = ALIGN(4); + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + /* Read-only code (constants). */ + *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*) + + KEEP(*(.eh_frame*)) + } > flash + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + __exidx_start = .; + + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_psoc6_01_cm4.S */ + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + /* Copy interrupt vectors from flash to RAM */ + LONG (__Vectors) /* From */ + LONG (__ram_vectors_start__) /* To */ + LONG (__Vectors_End - __Vectors) /* Size */ + + /* Copy data section to RAM */ + LONG (__etext) /* From */ + LONG (__data_start__) /* To */ + LONG (__data_end__ - __data_start__) /* Size */ + + __copy_table_end__ = .; + } > flash + + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_01_cm4.S */ + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + __zero_table_end__ = .; + } > flash + + __etext = . ; + + + .ramVectors (NOLOAD) : ALIGN(8) + { + __ram_vectors_start__ = .; + KEEP(*(.ram_vectors)) + __ram_vectors_end__ = .; + } > ram + + + .data __ram_vectors_end__ : AT (__etext) + { + __data_start__ = .; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + + KEEP(*(.cy_ramfunc*)) + . = ALIGN(4); + + __data_end__ = .; + + } > ram + + + /* Place variables in the section that should not be initialized during the + * device startup. + */ + .noinit (NOLOAD) : ALIGN(8) + { + KEEP(*(.noinit)) + } > ram + + + /* The uninitialized global or static variables are placed in this section. + * + * The NOLOAD attribute tells linker that .bss section does not consume + * any space in the image. The NOLOAD attribute changes the .bss type to + * NOBITS, and that makes linker to A) not allocate section in memory, and + * A) put information to clear the section with all zeros during application + * loading. + * + * Without the NOLOAD attribute, the .bss section might get PROGBITS type. + * This makes linker to A) allocate zeroed section in memory, and B) copy + * this section to RAM during application loading. + */ + .bss (NOLOAD): + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .heap (NOLOAD): + { + __HeapBase = .; + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + __HeapLimit = .; + } > ram + + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram) + LENGTH(ram); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Used for the digital signature of the secure application and the Bootloader SDK application. + * The size of the section depends on the required data size. */ + .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 : + { + KEEP(*(.cy_app_signature)) + } > flash + + + /* Emulated EEPROM Flash area */ + .cy_em_eeprom : + { + KEEP(*(.cy_em_eeprom)) + } > em_eeprom + + + /* Supervisory Flash: User data */ + .cy_sflash_user_data : + { + KEEP(*(.cy_sflash_user_data)) + } > sflash_user_data + + + /* Supervisory Flash: Normal Access Restrictions (NAR) */ + .cy_sflash_nar : + { + KEEP(*(.cy_sflash_nar)) + } > sflash_nar + + + /* Supervisory Flash: Public Key */ + .cy_sflash_public_key : + { + KEEP(*(.cy_sflash_public_key)) + } > sflash_public_key + + + /* Supervisory Flash: Table of Content # 2 */ + .cy_toc_part2 : + { + KEEP(*(.cy_toc_part2)) + } > sflash_toc_2 + + + /* Supervisory Flash: Table of Content # 2 Copy */ + .cy_rtoc_part2 : + { + KEEP(*(.cy_rtoc_part2)) + } > sflash_rtoc_2 + + + /* Places the code in the Execute in Place (XIP) section. See the smif driver + * documentation for details. + */ + .cy_xip : + { + KEEP(*(.cy_xip)) + } > xip + + + /* eFuse */ + .cy_efuse : + { + KEEP(*(.cy_efuse)) + } > efuse + + + /* These sections are used for additional metadata (silicon revision, + * Silicon/JTAG ID, etc.) storage. + */ + .cymeta 0x90500000 : { KEEP(*(.cymeta)) } :NONE +} + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +__cy_memory_0_start = 0x10000000; +__cy_memory_0_length = 0x00100000; +__cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +__cy_memory_1_start = 0x14000000; +__cy_memory_1_length = 0x8000; +__cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +__cy_memory_2_start = 0x16000000; +__cy_memory_2_length = 0x8000; +__cy_memory_2_row_size = 0x200; + +/* XIP */ +__cy_memory_3_start = 0x18000000; +__cy_memory_3_length = 0x08000000; +__cy_memory_3_row_size = 0x200; + +/* eFuse */ +__cy_memory_4_start = 0x90700000; +__cy_memory_4_length = 0x100000; +__cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..3c2f44d1e07 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S @@ -0,0 +1,631 @@ +/**************************************************************************//** + * @file startup_psoc6_01_cm4.S + * @brief CMSIS Core Device Startup File for + * ARMCM4 Device Series + * @version V5.00 + * @date 02. March 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* Address of the NMI handler */ + #define CY_NMI_HANLDER_ADDR 0x0000000D + + /* The CPU VTOR register */ + #define CY_CPU_VTOR_ADDR 0xE000ED08 + + /* Copy flash vectors and data section to RAM */ + #define __STARTUP_COPY_MULTIPLE + + /* Clear single BSS section */ + #define __STARTUP_CLEAR_BSS + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00001000 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000400 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long CY_NMI_HANLDER_ADDR /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External interrupts Description */ + .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + .long pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + .long bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + .long udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + .long udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + .long udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + .long udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + .long udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + .long udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + .long udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + .long udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + .long udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + .long udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + .long udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + .long udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + .long udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + .long udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + .long udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + .long udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + .long audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + .long audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + .long usb_interrupt_hi_IRQHandler /* USB Interrupt */ + .long usb_interrupt_med_IRQHandler /* USB Interrupt */ + .long usb_interrupt_lo_IRQHandler /* USB Interrupt */ + .long pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + + .size __Vectors, . - __Vectors + .equ __VectorsSize, . - __Vectors + + .section .ram_vectors + .align 2 + .globl __ramVectors +__ramVectors: + .space __VectorsSize + .size __ramVectors, . - __ramVectors + + + .text + .thumb + .thumb_func + .align 2 + + /* + * Device startup customization + * + * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) + * because this function is executed as the first instruction in the ResetHandler. + * The PDL is also not initialized to use the proper register offsets. + * The user of this function is responsible for initializing the PDL and resources before using them. + */ + .weak Cy_OnResetUser + .func Cy_OnResetUser, Cy_OnResetUser + .type Cy_OnResetUser, %function + +Cy_OnResetUser: + bx lr + .size Cy_OnResetUser, . - Cy_OnResetUser + .endfunc + + /* Reset handler */ + .weak Reset_Handler + .type Reset_Handler, %function + +Reset_Handler: + bl Cy_OnResetUser + cpsid i + +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + + /* Update Vector Table Offset Register. */ + ldr r0, =__ramVectors + ldr r1, =CY_CPU_VTOR_ADDR + str r0, [r1] + dsb 0xF + + /* Enable the FPU if used */ + bl Cy_SystemInitFpuEnable + + bl _start + + /* Should never get here */ + b . + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function + +Default_Handler: + b . + .size Default_Handler, . - Default_Handler + + + .weak Cy_SysLib_FaultHandler + .type Cy_SysLib_FaultHandler, %function + +Cy_SysLib_FaultHandler: + b . + .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler + .type Fault_Handler, %function + +Fault_Handler: + /* Storing LR content for Creator call stack trace */ + push {LR} + movs r0, #4 + mov r1, LR + tst r0, r1 + beq .L_MSP + mrs r0, PSP + b .L_API_call +.L_MSP: + mrs r0, MSP +.L_API_call: + /* Compensation of stack pointer address due to pushing 4 bytes of LR */ + adds r0, r0, #4 + bl Cy_SysLib_FaultHandler + b . + .size Fault_Handler, . - Fault_Handler + +.macro def_fault_Handler fault_handler_name + .weak \fault_handler_name + .set \fault_handler_name, Fault_Handler + .endm + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + + def_fault_Handler HardFault_Handler + def_fault_Handler MemManage_Handler + def_fault_Handler BusFault_Handler + def_fault_Handler UsageFault_Handler + + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + def_irq_handler pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + def_irq_handler bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + def_irq_handler udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + def_irq_handler udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + def_irq_handler udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + def_irq_handler udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + def_irq_handler udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + def_irq_handler udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + def_irq_handler udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + def_irq_handler udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + def_irq_handler udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + def_irq_handler udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + def_irq_handler udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + def_irq_handler udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + def_irq_handler udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + def_irq_handler udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + def_irq_handler udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + def_irq_handler udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + def_irq_handler audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + def_irq_handler audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */ + def_irq_handler pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + .end + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf new file mode 100644 index 00000000000..249452e3b59 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.icf +* \version 2.30 +* +* Linker file for the IAR compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point is fixed and starts at 0x10000000. The valid application +* image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; + +if (!isdefinedsymbol(MBED_ROM_START)) { + define symbol MBED_ROM_START = 0x10002000; +} + +if (!isdefinedsymbol(MBED_ROM_SIZE)) { + define symbol MBED_ROM_SIZE = 0x000FE000; +} + +if (!isdefinedsymbol(MBED_RAM_START)) { + define symbol MBED_RAM_START = 0x08002000; +} + +if (!isdefinedsymbol(MBED_RAM_SIZE)) { + define symbol MBED_RAM_SIZE = 0x00045800; +} + +if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { + define symbol MBED_BOOT_STACK_SIZE = 0x400; +} + +/* The symbols below define the location and size of blocks of memory in the target. + * Use these symbols to specify the memory regions available for allocation. + */ + +/* The following symbols control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing RAM and Flash symbols. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding symbols for CM0+ core in 'xx_cm0plus.icf', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.icf'. + */ +/* RAM */ +define symbol __ICFEDIT_region_IRAM1_start__ = MBED_RAM_START; +define symbol __ICFEDIT_region_IRAM1_end__ = (MBED_RAM_START + MBED_RAM_SIZE); +/* Flash */ +define symbol __ICFEDIT_region_IROM1_start__ = MBED_ROM_START; +define symbol __ICFEDIT_region_IROM1_end__ = (MBED_ROM_START + MBED_ROM_SIZE); + +/* The following symbols define a 32K flash region used for EEPROM emulation. + * This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ +define symbol __ICFEDIT_region_IROM2_start__ = 0x14000000; +define symbol __ICFEDIT_region_IROM2_end__ = 0x14007FFF; + +/* The following symbols define device specific memory regions and must not be changed. */ +/* Supervisory FLASH - User Data */ +define symbol __ICFEDIT_region_IROM3_start__ = 0x16000800; +define symbol __ICFEDIT_region_IROM3_end__ = 0x160007FF; + +/* Supervisory FLASH - Normal Access Restrictions (NAR) */ +define symbol __ICFEDIT_region_IROM4_start__ = 0x16001A00; +define symbol __ICFEDIT_region_IROM4_end__ = 0x16001BFF; + +/* Supervisory FLASH - Public Key */ +define symbol __ICFEDIT_region_IROM5_start__ = 0x16005A00; +define symbol __ICFEDIT_region_IROM5_end__ = 0x160065FF; + +/* Supervisory FLASH - Table of Content # 2 */ +define symbol __ICFEDIT_region_IROM6_start__ = 0x16007C00; +define symbol __ICFEDIT_region_IROM6_end__ = 0x16007DFF; + +/* Supervisory FLASH - Table of Content # 2 Copy */ +define symbol __ICFEDIT_region_IROM7_start__ = 0x16007E00; +define symbol __ICFEDIT_region_IROM7_end__ = 0x16007FFF; + +/* eFuse */ +define symbol __ICFEDIT_region_IROM8_start__ = 0x90700000; +define symbol __ICFEDIT_region_IROM8_end__ = 0x907FFFFF; + +/* XIP */ +define symbol __ICFEDIT_region_EROM1_start__ = 0x18000000; +define symbol __ICFEDIT_region_EROM1_end__ = 0x1FFFFFFF; + +define symbol __ICFEDIT_region_EROM2_start__ = 0x0; +define symbol __ICFEDIT_region_EROM2_end__ = 0x0; +define symbol __ICFEDIT_region_EROM3_start__ = 0x0; +define symbol __ICFEDIT_region_EROM3_end__ = 0x0; + + +define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; +define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; +/*-Sizes-*/ +if (!isdefinedsymbol(__STACK_SIZE)) { + define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; +} else { + define symbol __ICFEDIT_size_cstack__ = __STACK_SIZE; +} + +if (!isdefinedsymbol(__HEAP_SIZE)) { + define symbol __ICFEDIT_size_heap__ = 0x20000; +} else { + define symbol __ICFEDIT_size_heap__ = __HEAP_SIZE; +} +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region IROM1_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]; +define region IROM2_region = mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; +define region IROM3_region = mem:[from __ICFEDIT_region_IROM3_start__ to __ICFEDIT_region_IROM3_end__]; +define region IROM4_region = mem:[from __ICFEDIT_region_IROM4_start__ to __ICFEDIT_region_IROM4_end__]; +define region IROM5_region = mem:[from __ICFEDIT_region_IROM5_start__ to __ICFEDIT_region_IROM5_end__]; +define region IROM6_region = mem:[from __ICFEDIT_region_IROM6_start__ to __ICFEDIT_region_IROM6_end__]; +define region IROM7_region = mem:[from __ICFEDIT_region_IROM7_start__ to __ICFEDIT_region_IROM7_end__]; +define region IROM8_region = mem:[from __ICFEDIT_region_IROM8_start__ to __ICFEDIT_region_IROM8_end__]; +define region EROM1_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__]; +define region IRAM1_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]; + +define block RAM_DATA {readwrite section .data}; +define block RAM_OTHER {readwrite section * }; +define block RAM_NOINIT {readwrite section .noinit}; +define block RAM_BSS {readwrite section .bss}; +define block RAM with fixed order {block RAM_DATA, block RAM_OTHER, block RAM_NOINIT, block RAM_BSS}; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +define block RO {first section .intvec, readonly}; + +/*-Initializations-*/ +initialize by copy { readwrite }; +do not initialize { section .noinit, section .intvec_ram }; + +/*-Placement-*/ + +/* Flash */ +place at start of IROM1_region { block RO }; +".cy_app_signature" : place at address (__ICFEDIT_region_IROM1_end__ - 0x200) { section .cy_app_signature }; + +/* Emulated EEPROM Flash area */ +".cy_em_eeprom" : place at start of IROM2_region { section .cy_em_eeprom }; + +/* Supervisory Flash - User Data */ +".cy_sflash_user_data" : place at start of IROM3_region { section .cy_sflash_user_data }; + +/* Supervisory Flash - NAR */ +".cy_sflash_nar" : place at start of IROM4_region { section .cy_sflash_nar }; + +/* Supervisory Flash - Public Key */ +".cy_sflash_public_key" : place at start of IROM5_region { section .cy_sflash_public_key }; + +/* Supervisory Flash - TOC2 */ +".cy_toc_part2" : place at start of IROM6_region { section .cy_toc_part2 }; + +/* Supervisory Flash - RTOC2 */ +".cy_rtoc_part2" : place at start of IROM7_region { section .cy_rtoc_part2 }; + +/* eFuse */ +".cy_efuse" : place at start of IROM8_region { section .cy_efuse }; + +/* Execute in Place (XIP). See the smif driver documentation for details. */ +".cy_xip" : place at start of EROM1_region { section .cy_xip }; + +/* RAM */ +place at start of IRAM1_region { readwrite section .intvec_ram}; +place in IRAM1_region { block RAM}; +place in IRAM1_region { block HEAP}; +place at end of IRAM1_region { block CSTACK }; + +/* These sections are used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. */ +".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta }; + + +keep { section .cy_app_signature, + section .cy_em_eeprom, + section .cy_sflash_user_data, + section .cy_sflash_nar, + section .cy_sflash_public_key, + section .cy_toc_part2, + section .cy_rtoc_part2, + section .cy_efuse, + section .cy_xip, + section .cymeta, + }; + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +define exported symbol __cy_memory_0_start = 0x10000000; +define exported symbol __cy_memory_0_length = 0x00100000; +define exported symbol __cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +define exported symbol __cy_memory_1_start = 0x14000000; +define exported symbol __cy_memory_1_length = 0x8000; +define exported symbol __cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +define exported symbol __cy_memory_2_start = 0x16000000; +define exported symbol __cy_memory_2_length = 0x8000; +define exported symbol __cy_memory_2_row_size = 0x200; + +/* XIP */ +define exported symbol __cy_memory_3_start = 0x18000000; +define exported symbol __cy_memory_3_length = 0x08000000; +define exported symbol __cy_memory_3_row_size = 0x200; + +/* eFuse */ +define exported symbol __cy_memory_4_start = 0x90700000; +define exported symbol __cy_memory_4_length = 0x100000; +define exported symbol __cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..6f1e869b92a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S @@ -0,0 +1,1142 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 08. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + SECTION .intvec_ram:DATA:NOROOT(2) + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + EXTERN Cy_SystemInitFpuEnable + EXTERN __iar_data_init3 + PUBLIC __vector_table + PUBLIC __vector_table_0x1c + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + PUBLIC __ramVectors + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + + DCD 0x0000000D ; NMI_Handler is defined in ROM code + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler +__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD DebugMon_Handler + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + + ; External interrupts Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors + + SECTION .intvec_ram:DATA:REORDER:NOROOT(2) +__ramVectors + DS32 __Vectors_Size + + + THUMB + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default handlers +;; + PUBWEAK Default_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Default_Handler + B Default_Handler + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Weak function for startup customization +;; +;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +;; because this function is executed as the first instruction in the ResetHandler. +;; The PDL is also not initialized to use the proper register offsets. +;; The user of this function is responsible for initializing the PDL and resources before using them. +;; + PUBWEAK Cy_OnResetUser + SECTION .text:CODE:REORDER:NOROOT(2) +Cy_OnResetUser + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Define strong version to return zero for +;; __iar_program_start to skip data sections +;; initialization. +;; + PUBLIC __low_level_init + SECTION .text:CODE:REORDER:NOROOT(2) +__low_level_init + MOVS R0, #0 + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + + ; Define strong function for startup customization + LDR R0, =Cy_OnResetUser + BLX R0 + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__vector_table + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +intvec_copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE intvec_copy + + ; Update Vector Table Offset Register + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + ; Initialize data sections + LDR R0, =__iar_data_init3 + BLX R0 + + LDR R0, =SystemInit + BLX R0 + + LDR R0, =__iar_program_start + BLX R0 + +; Should never get here +Cy_Main_Exited + B Cy_Main_Exited + + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B NMI_Handler + + + PUBWEAK Cy_SysLib_FaultHandler + SECTION .text:CODE:REORDER:NOROOT(1) +Cy_SysLib_FaultHandler + B Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Wrapper + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Wrapper + IMPORT Cy_SysLib_FaultHandler + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + b L_API_call +L_MSP + mrs r0, MSP +L_API_call + ; Storing LR content for Creator call stack trace + push {LR} + bl Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B HardFault_Wrapper + + PUBWEAK MemManage_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +MemManage_Handler + B HardFault_Wrapper + + PUBWEAK BusFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +BusFault_Handler + B HardFault_Wrapper + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +UsageFault_Handler + B HardFault_Wrapper + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B SysTick_Handler + + + ; External interrupts + PUBWEAK ioss_interrupts_gpio_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_0_IRQHandler + B ioss_interrupts_gpio_0_IRQHandler + + PUBWEAK ioss_interrupts_gpio_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_1_IRQHandler + B ioss_interrupts_gpio_1_IRQHandler + + PUBWEAK ioss_interrupts_gpio_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_2_IRQHandler + B ioss_interrupts_gpio_2_IRQHandler + + PUBWEAK ioss_interrupts_gpio_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_3_IRQHandler + B ioss_interrupts_gpio_3_IRQHandler + + PUBWEAK ioss_interrupts_gpio_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_4_IRQHandler + B ioss_interrupts_gpio_4_IRQHandler + + PUBWEAK ioss_interrupts_gpio_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_5_IRQHandler + B ioss_interrupts_gpio_5_IRQHandler + + PUBWEAK ioss_interrupts_gpio_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_6_IRQHandler + B ioss_interrupts_gpio_6_IRQHandler + + PUBWEAK ioss_interrupts_gpio_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_7_IRQHandler + B ioss_interrupts_gpio_7_IRQHandler + + PUBWEAK ioss_interrupts_gpio_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_8_IRQHandler + B ioss_interrupts_gpio_8_IRQHandler + + PUBWEAK ioss_interrupts_gpio_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_9_IRQHandler + B ioss_interrupts_gpio_9_IRQHandler + + PUBWEAK ioss_interrupts_gpio_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_10_IRQHandler + B ioss_interrupts_gpio_10_IRQHandler + + PUBWEAK ioss_interrupts_gpio_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_11_IRQHandler + B ioss_interrupts_gpio_11_IRQHandler + + PUBWEAK ioss_interrupts_gpio_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_12_IRQHandler + B ioss_interrupts_gpio_12_IRQHandler + + PUBWEAK ioss_interrupts_gpio_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_13_IRQHandler + B ioss_interrupts_gpio_13_IRQHandler + + PUBWEAK ioss_interrupts_gpio_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_14_IRQHandler + B ioss_interrupts_gpio_14_IRQHandler + + PUBWEAK ioss_interrupt_gpio_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_gpio_IRQHandler + B ioss_interrupt_gpio_IRQHandler + + PUBWEAK ioss_interrupt_vdd_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_vdd_IRQHandler + B ioss_interrupt_vdd_IRQHandler + + PUBWEAK lpcomp_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +lpcomp_interrupt_IRQHandler + B lpcomp_interrupt_IRQHandler + + PUBWEAK scb_8_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_8_interrupt_IRQHandler + B scb_8_interrupt_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_0_IRQHandler + B srss_interrupt_mcwdt_0_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_1_IRQHandler + B srss_interrupt_mcwdt_1_IRQHandler + + PUBWEAK srss_interrupt_backup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_backup_IRQHandler + B srss_interrupt_backup_IRQHandler + + PUBWEAK srss_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_IRQHandler + B srss_interrupt_IRQHandler + + PUBWEAK pass_interrupt_ctbs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_ctbs_IRQHandler + B pass_interrupt_ctbs_IRQHandler + + PUBWEAK bless_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +bless_interrupt_IRQHandler + B bless_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_0_IRQHandler + B cpuss_interrupts_ipc_0_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_1_IRQHandler + B cpuss_interrupts_ipc_1_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_2_IRQHandler + B cpuss_interrupts_ipc_2_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_3_IRQHandler + B cpuss_interrupts_ipc_3_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_4_IRQHandler + B cpuss_interrupts_ipc_4_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_5_IRQHandler + B cpuss_interrupts_ipc_5_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_6_IRQHandler + B cpuss_interrupts_ipc_6_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_7_IRQHandler + B cpuss_interrupts_ipc_7_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_8_IRQHandler + B cpuss_interrupts_ipc_8_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_9_IRQHandler + B cpuss_interrupts_ipc_9_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_10_IRQHandler + B cpuss_interrupts_ipc_10_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_11_IRQHandler + B cpuss_interrupts_ipc_11_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_12_IRQHandler + B cpuss_interrupts_ipc_12_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_13_IRQHandler + B cpuss_interrupts_ipc_13_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_14_IRQHandler + B cpuss_interrupts_ipc_14_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_15_IRQHandler + B cpuss_interrupts_ipc_15_IRQHandler + + PUBWEAK scb_0_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_0_interrupt_IRQHandler + B scb_0_interrupt_IRQHandler + + PUBWEAK scb_1_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_1_interrupt_IRQHandler + B scb_1_interrupt_IRQHandler + + PUBWEAK scb_2_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_2_interrupt_IRQHandler + B scb_2_interrupt_IRQHandler + + PUBWEAK scb_3_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_3_interrupt_IRQHandler + B scb_3_interrupt_IRQHandler + + PUBWEAK scb_4_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_4_interrupt_IRQHandler + B scb_4_interrupt_IRQHandler + + PUBWEAK scb_5_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_5_interrupt_IRQHandler + B scb_5_interrupt_IRQHandler + + PUBWEAK scb_6_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_6_interrupt_IRQHandler + B scb_6_interrupt_IRQHandler + + PUBWEAK scb_7_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_7_interrupt_IRQHandler + B scb_7_interrupt_IRQHandler + + PUBWEAK csd_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +csd_interrupt_IRQHandler + B csd_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_0_IRQHandler + B cpuss_interrupts_dw0_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_1_IRQHandler + B cpuss_interrupts_dw0_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_2_IRQHandler + B cpuss_interrupts_dw0_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_3_IRQHandler + B cpuss_interrupts_dw0_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_4_IRQHandler + B cpuss_interrupts_dw0_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_5_IRQHandler + B cpuss_interrupts_dw0_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_6_IRQHandler + B cpuss_interrupts_dw0_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_7_IRQHandler + B cpuss_interrupts_dw0_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_8_IRQHandler + B cpuss_interrupts_dw0_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_9_IRQHandler + B cpuss_interrupts_dw0_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_10_IRQHandler + B cpuss_interrupts_dw0_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_11_IRQHandler + B cpuss_interrupts_dw0_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_12_IRQHandler + B cpuss_interrupts_dw0_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_13_IRQHandler + B cpuss_interrupts_dw0_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_14_IRQHandler + B cpuss_interrupts_dw0_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_15_IRQHandler + B cpuss_interrupts_dw0_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_0_IRQHandler + B cpuss_interrupts_dw1_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_1_IRQHandler + B cpuss_interrupts_dw1_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_2_IRQHandler + B cpuss_interrupts_dw1_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_3_IRQHandler + B cpuss_interrupts_dw1_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_4_IRQHandler + B cpuss_interrupts_dw1_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_5_IRQHandler + B cpuss_interrupts_dw1_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_6_IRQHandler + B cpuss_interrupts_dw1_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_7_IRQHandler + B cpuss_interrupts_dw1_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_8_IRQHandler + B cpuss_interrupts_dw1_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_9_IRQHandler + B cpuss_interrupts_dw1_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_10_IRQHandler + B cpuss_interrupts_dw1_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_11_IRQHandler + B cpuss_interrupts_dw1_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_12_IRQHandler + B cpuss_interrupts_dw1_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_13_IRQHandler + B cpuss_interrupts_dw1_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_14_IRQHandler + B cpuss_interrupts_dw1_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_15_IRQHandler + B cpuss_interrupts_dw1_15_IRQHandler + + PUBWEAK cpuss_interrupts_fault_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_0_IRQHandler + B cpuss_interrupts_fault_0_IRQHandler + + PUBWEAK cpuss_interrupts_fault_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_1_IRQHandler + B cpuss_interrupts_fault_1_IRQHandler + + PUBWEAK cpuss_interrupt_crypto_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_crypto_IRQHandler + B cpuss_interrupt_crypto_IRQHandler + + PUBWEAK cpuss_interrupt_fm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_fm_IRQHandler + B cpuss_interrupt_fm_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_0_IRQHandler + B cpuss_interrupts_cm0_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_1_IRQHandler + B cpuss_interrupts_cm0_cti_1_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_0_IRQHandler + B cpuss_interrupts_cm4_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_1_IRQHandler + B cpuss_interrupts_cm4_cti_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_0_IRQHandler + B tcpwm_0_interrupts_0_IRQHandler + + PUBWEAK tcpwm_0_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_1_IRQHandler + B tcpwm_0_interrupts_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_2_IRQHandler + B tcpwm_0_interrupts_2_IRQHandler + + PUBWEAK tcpwm_0_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_3_IRQHandler + B tcpwm_0_interrupts_3_IRQHandler + + PUBWEAK tcpwm_0_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_4_IRQHandler + B tcpwm_0_interrupts_4_IRQHandler + + PUBWEAK tcpwm_0_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_5_IRQHandler + B tcpwm_0_interrupts_5_IRQHandler + + PUBWEAK tcpwm_0_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_6_IRQHandler + B tcpwm_0_interrupts_6_IRQHandler + + PUBWEAK tcpwm_0_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_7_IRQHandler + B tcpwm_0_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_0_IRQHandler + B tcpwm_1_interrupts_0_IRQHandler + + PUBWEAK tcpwm_1_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_1_IRQHandler + B tcpwm_1_interrupts_1_IRQHandler + + PUBWEAK tcpwm_1_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_2_IRQHandler + B tcpwm_1_interrupts_2_IRQHandler + + PUBWEAK tcpwm_1_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_3_IRQHandler + B tcpwm_1_interrupts_3_IRQHandler + + PUBWEAK tcpwm_1_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_4_IRQHandler + B tcpwm_1_interrupts_4_IRQHandler + + PUBWEAK tcpwm_1_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_5_IRQHandler + B tcpwm_1_interrupts_5_IRQHandler + + PUBWEAK tcpwm_1_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_6_IRQHandler + B tcpwm_1_interrupts_6_IRQHandler + + PUBWEAK tcpwm_1_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_7_IRQHandler + B tcpwm_1_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_8_IRQHandler + B tcpwm_1_interrupts_8_IRQHandler + + PUBWEAK tcpwm_1_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_9_IRQHandler + B tcpwm_1_interrupts_9_IRQHandler + + PUBWEAK tcpwm_1_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_10_IRQHandler + B tcpwm_1_interrupts_10_IRQHandler + + PUBWEAK tcpwm_1_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_11_IRQHandler + B tcpwm_1_interrupts_11_IRQHandler + + PUBWEAK tcpwm_1_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_12_IRQHandler + B tcpwm_1_interrupts_12_IRQHandler + + PUBWEAK tcpwm_1_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_13_IRQHandler + B tcpwm_1_interrupts_13_IRQHandler + + PUBWEAK tcpwm_1_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_14_IRQHandler + B tcpwm_1_interrupts_14_IRQHandler + + PUBWEAK tcpwm_1_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_15_IRQHandler + B tcpwm_1_interrupts_15_IRQHandler + + PUBWEAK tcpwm_1_interrupts_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_16_IRQHandler + B tcpwm_1_interrupts_16_IRQHandler + + PUBWEAK tcpwm_1_interrupts_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_17_IRQHandler + B tcpwm_1_interrupts_17_IRQHandler + + PUBWEAK tcpwm_1_interrupts_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_18_IRQHandler + B tcpwm_1_interrupts_18_IRQHandler + + PUBWEAK tcpwm_1_interrupts_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_19_IRQHandler + B tcpwm_1_interrupts_19_IRQHandler + + PUBWEAK tcpwm_1_interrupts_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_20_IRQHandler + B tcpwm_1_interrupts_20_IRQHandler + + PUBWEAK tcpwm_1_interrupts_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_21_IRQHandler + B tcpwm_1_interrupts_21_IRQHandler + + PUBWEAK tcpwm_1_interrupts_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_22_IRQHandler + B tcpwm_1_interrupts_22_IRQHandler + + PUBWEAK tcpwm_1_interrupts_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_23_IRQHandler + B tcpwm_1_interrupts_23_IRQHandler + + PUBWEAK udb_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_0_IRQHandler + B udb_interrupts_0_IRQHandler + + PUBWEAK udb_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_1_IRQHandler + B udb_interrupts_1_IRQHandler + + PUBWEAK udb_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_2_IRQHandler + B udb_interrupts_2_IRQHandler + + PUBWEAK udb_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_3_IRQHandler + B udb_interrupts_3_IRQHandler + + PUBWEAK udb_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_4_IRQHandler + B udb_interrupts_4_IRQHandler + + PUBWEAK udb_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_5_IRQHandler + B udb_interrupts_5_IRQHandler + + PUBWEAK udb_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_6_IRQHandler + B udb_interrupts_6_IRQHandler + + PUBWEAK udb_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_7_IRQHandler + B udb_interrupts_7_IRQHandler + + PUBWEAK udb_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_8_IRQHandler + B udb_interrupts_8_IRQHandler + + PUBWEAK udb_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_9_IRQHandler + B udb_interrupts_9_IRQHandler + + PUBWEAK udb_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_10_IRQHandler + B udb_interrupts_10_IRQHandler + + PUBWEAK udb_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_11_IRQHandler + B udb_interrupts_11_IRQHandler + + PUBWEAK udb_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_12_IRQHandler + B udb_interrupts_12_IRQHandler + + PUBWEAK udb_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_13_IRQHandler + B udb_interrupts_13_IRQHandler + + PUBWEAK udb_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_14_IRQHandler + B udb_interrupts_14_IRQHandler + + PUBWEAK udb_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_15_IRQHandler + B udb_interrupts_15_IRQHandler + + PUBWEAK pass_interrupt_sar_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_sar_IRQHandler + B pass_interrupt_sar_IRQHandler + + PUBWEAK audioss_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_i2s_IRQHandler + B audioss_interrupt_i2s_IRQHandler + + PUBWEAK audioss_interrupt_pdm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_pdm_IRQHandler + B audioss_interrupt_pdm_IRQHandler + + PUBWEAK profile_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +profile_interrupt_IRQHandler + B profile_interrupt_IRQHandler + + PUBWEAK smif_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +smif_interrupt_IRQHandler + B smif_interrupt_IRQHandler + + PUBWEAK usb_interrupt_hi_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_hi_IRQHandler + B usb_interrupt_hi_IRQHandler + + PUBWEAK usb_interrupt_med_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_med_IRQHandler + B usb_interrupt_med_IRQHandler + + PUBWEAK usb_interrupt_lo_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_lo_IRQHandler + B usb_interrupt_lo_IRQHandler + + PUBWEAK pass_interrupt_dacs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_dacs_IRQHandler + B pass_interrupt_dacs_IRQHandler + + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/LICENSE.txt b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/LICENSE.txt new file mode 100644 index 00000000000..7adfadddb21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2018-2019 Cypress Semiconductor Corporation + +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/README.md new file mode 100644 index 00000000000..c4c2c82e613 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/README.md @@ -0,0 +1,18 @@ +README for pre-compiled PSoC 6 Cortex M0+ core images +===================================================== + +This folder contains precompiled program images for the CM0+ core of the +PSoC 6 MCU suitable for use with Mbed OS applications running on CM4 core. + +* `psoc6_01_cm0p_sleep.hex` + + This image starts CM4 core at CY_CORTEX_M4_APPL_ADDR=0x10080000 + and puts CM0+ core into a deep sleep. + +The images are 'bare metal' code prepared with Cypress ModusToolbox IDE +and are toolchain agnostic, i.e. can be used with CM4 Mbed applications +build with any supported toolchain. + +**These images were prepared by Cypress Semiconductor Corporation +and are made available under the conditions of Permissive Binary Licence, +see file LICENSE.txt** diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/psoc6_01_cm0p_sleep.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/psoc6_01_cm0p_sleep.hex new file mode 100644 index 00000000000..58b7e756cbb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/hex/psoc6_01_cm0p_sleep.hex @@ -0,0 +1,106 @@ +:020000041000EA +:40000000002000080B0100100D0000006D01001000000000000000000000000000000000000000000000000000000000690100100000000000000000690100106901001083 +:4000400069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010E0 +:4000800069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010A0 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD6C050008000000000C150010044B10B5002B03D00349044800E000BF10BDC04600000000C9 +:40010000700500080C1500107047FFF7FDFF72B60F4C104DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E70A490B4A0020521A02DD043A8850FCDC084809495F +:400140000860BFF34F8F00F0F1F800F099F9FEE710150010281500106C0500087C0700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880B8 +:40018000043000F0DBFDFEE710B5002000F040FC10BD7047E02370B5544C9B00E2580F23D02113409A0089001219505807210840032860D0042861D0424250414C4A40426B +:4001C00010404C4A8018002B67D1B223B1220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233F4ADB00E558A158EC +:40020000E658C904C90C00F051FFAD03AD0B6843F101C90F013100F049FFE0239B00E3589B069B0FD840354B1860354B1C691969240A090E013100F039FF324BE1B2186075 +:40024000013100F033FF304B040018602F4B30491860304BC01800F029FFFA212E4B890018702E4BE01800F021FF2D4B18602D4BC003186070BD2C4A1068A4E7C021890084 +:4002800052581F210A40112A01D0132A02D18020000298E7FA20C00195E7012BBDD1C823C0220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A7A +:4002C00001D1EA0701D4032BA7D1C022D200A358A158A5587F221F261340090A3140584300F0E4FE290C314095E7C0460000264000DC0BFF00366E0184050000C80000087F +:4003000000002140CC000008C0000008D400000840420F003F420F00DC000008E7030000D8000008D0000008C400000810B5244800F0C2F8B022E0213020224CD200A35838 +:4003400089005B005B08A35063588343635080235B04A3501C4B1D4AE250A02204339201E250FF221A4BE25000F08EFEC02201215200A3588B43A350FFF70BFFFFF70AFF17 +:40038000B0235B055A78002A02D05B78212B03D10022104BDA605A600F4A8021042000F09FFB0E4800F09EF90D4B1B6851331B78002B02D00B4800F001FA00F035F910BD3B +:4003C0005C1200100000264084050000010002008C050000E000234088050008980500087807000828120010024BD86F032318407047C0460400214010B500F056F8074927 +:40040000074ACB6F1A40074B1343CB67102306490A681A42FCD000F04CF810BD04002140FCFF00000100FA058800214070B50F4C060000F03AF8E36F0500DB439B0701D106 +:40044000FFF7DAFFB0230A4A9B00D650E36F094A09491A40094B1343E36710230A681A42FCD0280000F025F870BDC0460400214000002140FCFF0000880021400300FA059F +:4004800010B562B60348FFF7D1FF002000F066FDFBE7C046002000100230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047014B18607047C046A7 +:4004C000780700081D4B98420FD010D840282FD005D8002830D0102828D019481EE0802828D080235B009842F7D1144816E0154B984214D008D8A0231B0698421CD0124BDA +:400500009842EAD1A0200BE0104B98420AD0104B984209D00F4B9842DFD10F487047A420C003FBE70D48F9E70D48F7E70D48F5E70D48F3E70D48F1E70020EFE706005200C0 +:40054000FF005200010000F0090000A0040000F0050000F0030000F001005200020052000300520001005000020050000500520070B50A4D04002B6831331B78834204D813 +:40058000C4210748FF3100F0C9FB2B681A00B03210884443186A201870BDC046780700081413001010B50020FFF7E2FF0A4B1C682300B4331B68C0180368002B0ADB074B03 +:4005C0001868FFF77FFF012263689A609A68002AFCD110BD0248FCE77807000818070008020050000D4B10B51860002804D0FE235B42038000234380094B1B681A00503201 +:400600001278002A08D051331B78002B04D002220449002000F06EF910BDC04628070008780700084D01000810B50248FFF7DAFF10BDC0462C0700080B4B70B51B6805005A +:40064000B4331B680C00C3181B68002B09DA0B0C03D00649064800F061FB0020A4B26C6070BD0448FCE7C04678070008D50200001413001001008A00036870B505000C0060 +:40068000002B0ADAC2600B0C03D00549054800F045FB0020A4B2AC6070BD0348FCE7C046BB0200001413001001008A0070B505000C1E03D19921084800F030FB074B1B68D0 +:4006C000B4331B68EB181B68002B03DA0020EB68236070BD0248FCE77A1300107807000801008A00024B1A68002A00D11860704730070008F7B52C4D1F002B68040000915F +:400700000192002B03D1B521284800F007FB2C23FF225C432B683D001C193B0A3F0CA760234F134063603B681540256031331B789D4204D3C4211F48FF3100F0EFFA3B689A +:400740001A00B032128855431A6A3233AD1825611B7865689D4204D3E0211648FF3100F0DDFA3B6880351B6A6D01A668ED186561330C09D0FF210F4F4900380000F0CEFAB8 +:400780000D49380000F0CAFA33041A0C1343AB60019BE361009B23620023A361089B002B01D01B782373F7BD30070008DF1300107807000814130010FF010000F0B50400EE +:4007C00085B0002803D15221214800F0A7FA6368032B03D954211E4800F0A0FAE36A002B03D158211A4800F099FA236B002B03D15921174800F092FAA36802AD2B70154BE0 +:4008000022681B68E16ADB8EE0689B186B706368A26A039300952369266A676AFFF76AFF00213B000A0000913000FFF763FF216B280000F01FFA0023EB56002B06DB1F22E6 +:4008400013401E3A9A401300034A136005B0F0BDDF1300107807000800E100E0F7B504000F00151E019303D1FD211C4800F056FA1B4E3368002B03D1FE21184800F04EFA9E +:400880002C235C4332685F4314192669D719002E1FD0BB69002B1ED13368002B1BDA01226368140011009C407B6899402B6809049BB20B432B60019BF5607B62BA61230CC3 +:4008C00003D00849084800F029FA0020A4B2B460FEBD0648FCE70648FAE7C046DF13001030070008BB0200001413001004028A0007028A00F8B5114F04003B680E00150097 +:40090000002B04D1AF210E48490000F007FA2C2060433C682418236A002B04D1B1210848490000F0FBF9E369AB4204D90020236AAD00EE50F8BD0348FCE7C04630070008D6 +:40094000DF1300100A028A00002373B504000193984204D1D2212C48FF3100F0DFF92369002B04D1E9212848490000F0D7F96369002B04D1D4212448FF3100F0CFF9236A3D +:40098000002B04D1EA212048490000F0C7F96269D5682B0C22D01B04136013681B4B20691B68B4331B68C3181B68002B16DA01A9FFF77CFE0026B0420CD10198E2690368DA +:4009C0001E0CDBB29A4205D9226A9B009B58002B00D0984731002069FFF72EFEADB2002D09D063691D6000251B68636AAB4205D098476562A56163691B6873BDA36A002B6E +:400A0000F8D09847F6E7C046DF1300107807000870B5084C05002368002B04D1B2210648FF3100F07BF92C20454320684019FFF78BFF70BD30070008DF13001070B50A4DC6 +:400A400004002B6831331B78834204D8C4210748FF3100F063F92B681A00B03210884443186A201870BDC0467807000814130010F8B5174B0D001B6831331B78834225D9E5 +:400A8000002923D01F240B681C401FD1FFF7D6FF07002B680F4EDA0821003060686800F091FB21003800FFF7C7FD21002A003068FFF7E2FD041E07D101003068FFF7BCFD6A +:400AC00003002000002B00D00348F8BD0348FCE7780700083C07000801018A0003018A0010B50C00002A07D100290DD1FFF7A6FF064B1860200010BD002905D004490C60DC +:400B00004A60FFF7B5FFF6E70248F4E73C0700083407000803018A00F7B5184F04003B680191DE683368834226D90025A94202D1FFF7BBFC050038680368002B1ADA1F2252 +:400B400001232240934064097268A4001419226813420DD09A43226000240021FFF76CFD019B002B02D12800FFF7A3FC2000FEBD034CF2E7034CF3E7034CF7E73C0700084A +:400B8000020188000301880004018A000A4B1B68DB681A6882420DD959681F23420918401E3B8340920050581840431E9841034BC01870470248FCE73C07000800018800DC +:400BC00004018A0070B51A4E050033680C001A0028321278012A15D182080721100088430FD103202840C00084401B68920020339B182200FF24844019684A4014404C4093 +:400C00001C6070BD5B8FDBB28B4203D17621094800F084F80720802205408020336892011B680006A4180543A400E550E9E7C04678070008451400100A4B70B59B680A4EC2 +:400C400010300D008400B34209D1002904D138210648FF3100F062F83059355170BD044B1859FBE700ED00E0000000084514001000000010F8B506000D00002841D04368E5 +:400C8000032B03D93221204800F048F800203056002828DB7178FFF795FF0024FF2200200327944630567168C3B21F40FF006646BA4089013140D243B940002815DB134E38 +:400CC00083089B009B19C026B6009F593A40114399510F4B9A680F4B9A4202D12900FFF7ABFF2000F8BD0C4CD8E70F263340083B074E9B089B009B19DE6932401143D9613B +:400D0000E7E7054CEDE7C0464514001000E100E000ED00E0000000080100560070B50D00044C01001822200000F054FAA56101BEFEE7C04630050008FEE7000002680A4BB8 +:400D400010B5DA6142681A6282685A62C2689A620269DA6242691A6382695A63C2699A63FFF7EAFF10BDC04630050008B0235B055A782120002A01D05878C0B27047B023E6 +:400D80005B059A89002A02D0988980B2704780204000FBE710B5074C236831331B78002B04D1C4210448FF31FFF7B8FF2368186A10BDC046780700081413001030B50400B9 +:400DC00085B00D00042803D927492848FFF7A6FF6B1E012B07D9FB222B1F134203D024492248FFF79BFF234BA400E458042D01D0012D1AD100200FE0A3682B420BD1E3688C +:400E000029001A685B6802920193039302A823689847194B1C606469002C04D0174B9842EAD1012DE8D105B030BD022D06D1124B1B68181EF7D01C6903E01C006369002BE7 +:400E4000FBD10020002CEED0A3682B4209D1E36829001A685B6802920193039302A8236898472469EEE7C046DC090000A9140010DD0900004407000840070008FF004200DC +:400E800010B5041E03D111491148FFF747FFF222104BD2011B68DB689A582260F022D2019A5862600C4A9A58A2600C4A9A58E2600B4A9A5822610B4A9A5862610A4A9A5885 +:400EC000A2610A4A9B58E36110BDC046CB0A0000A91400107807000804780000087800000C78000010780000147800001878000010B5041E03D110491048FFF70FFFF022C2 +:400F00000F4B61681B68D201DB689950A1680D4A9950E1680C4A995021690C4A995061690B4A9950A1690B4A9950E1690A4A99502168E832995010BDF30A0000A914001078 +:400F40007807000804780000087800000C780000107800001478000018780000F7B50700012803D940494148FFF7D8FE404D6B68002B4AD1FFF799FA6B680190002B56D14B +:400F80003C4E33681A0043321278002A07D09B68E0331B68DB0602D53748FFF771FFFFF7EEFE80235B00984246D1380000F034F9002433681A0043321278002A17D0002885 +:400FC00015D09B68E0331B68DB0610D5FFF7CEFE294B212808D032681300B033198807234B43126A9B18DB681800FFF781FF0198FFF75FFA002C0ED16B68002B03D0082180 +:401000000120FFF7DBFE2000FEBD01210800FFF7D5FE041EAED06B68002B03D002210120FFF7CCFE154B9C42EDD0154CEBE704210120FFF7C3FEA3E7FFF7ACFE3368B433A6 +:401040001B68C0180368002B0BDB04230D4A11690B431361012F02D030BF0020A8E720BFFBE70020054CA4E7A5020000A91400104407000878070008580700080500420086 +:40108000FF00420000ED00E0C0228020064952008B58C0059B009B0803438B50802388581B0603438B50704700002640002243088B4274D303098B425FD3030A8B4244D399 +:4010C000030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241C3 +:40110000430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4289 +:4011400001D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D37E +:40118000CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E77047A8 +:4011C0007047C04603001218934200D1704719700133F9E730B50500002A00D130BD0C78013A6B1C2C700131002C05D19A189A42F4D01C700133FAE71D00EDE7F8B5C0468C +:40120000F8BC08BC9E467047F8B5C046F8BC08BC9E4670470000000001B40248844601BC604700BFA9020008030000000100000001000000000000000503600004000000C5 +:401240000100000000000000010000000604600008000000F8060008890100100000214000002540000001400000344000002440000031400000324000001F4100002340D5 +:4012800000001140010101010101010101101010800019005500F0000501053B04101C01010000000FC000000004000001010101011D3A5778960008200010120800000068 +:4012C000001F00000010000F002000023F06080E00080009000A000B24282C3034000000100000009000000088000000080000008000000004F0000000F00000400200005B +:401300002005A000D00100018001A0012000000010000000433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736FB1 +:40134000633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F696E636C7564652F63795F6970635F6472762E6800433A2F5573655D +:4013800072732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670B4 +:4013C000646C2F647269766572732F736F757263652F63795F6970635F6472762E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69A3 +:40140000627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F6970635F706968 +:4014400070652E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6EF8 +:40148000656E74732F70736F633670646C2F647269766572732F736F757263652F63795F737973696E742E6300433A2F55736572732F766D65642F4D6F647573546F6F6C17 +:4014C000626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263654A +:401500002F63795F737973706D2E6300000000000000001000000008C000000030150010C0000008700400006C0500081002000000093D000048E80100127A0000093D0037 +:401540000000D00700093D00A00F000004000000E9000010C100001080B230B5C00020D0104B07221C682300B0331B885A43236AD31819680029FCDA3E210B4B062519606B +:401580000A4B0B491960A3210A4BC9005D500A4958505858206A1218002050605A58002AFCDA30BD7807000804012640080126401E1F0000000026401C05000010B5437807 +:4015C000FF2B11D100F0CCF90400042000F0A8F9C3685A68012311681943116011681942FCD1200000F0C4F910BDF7B500900020019100F095F93F4D06002B681A005033B1 +:40160000B43214681B780419002B5AD000F090F9070003281BD000F0A3F9374A374B0500D358002B3EDA364A0121300000F0A8F9002837D10198FFF78FFF009B002B3ED027 +:401640002368002BFCDB00F07BF904002BE0062000F066F92B68B4331B68C0180368002B02DA284C2000FEBD002000F091F9264B9842F6D00023254A19001268012000F07E +:4016800047F90025A842ECD1002000F081F91E4A1F4B904203D09D42E3D00135F4E79D42B9D1DEE7174C032F05D10121002000F04FF90028F9D1280000F05AF9D2E7154CF0 +:4016C000F1E700F04DF90E4A05000121300000F057F9002809D1009B002B08D02368002BFCDB00F02DF90400E5E7064CE3E7094CE1E7C04678070008000026401C0500008D +:4017000018070008050052000101880028070008F049020001005000F7B56E4D04002A68536800931300B033198807234B43126A9B181A68002AFCDA00F0E2F82A68130024 +:40174000B033198807234B43212800D096E0116A5B180221D8680143D960D968C9072FD508208446944460461600D968C06F01911168883608183568076849190D683902BE +:40178000FF273F040F40694689882D0A2D0639432943D960902103684F4D09012B400B430360136830681B18186805402943196013686246D26F9A18126832689B181B68F8 +:4017C000444D2A681300B033198807234B43126A9B1800225A600423404A11690B431361012C50D030BF2A681300B033198807234B43126A9B181A68002AFCDA00F080F849 +:40180000212842D1296807220B000124B0331B8800205A430B6AD318DD6825421CD0080008300D68C06F2C4E28180568DB6835401B0C1B061B0C2B4303600B0088331868DE +:401840000B6818180B6A0568D318DB682E401B0E1B023343036020000B6A0221D218D3688B43D3601B4B1A681300B033198807234B43126A9B1800225A60FEBD126A9B181E +:40188000174ADA609CE720BFADE70020009BFC331B698342E6D1A320124B1349134A144FC0000E681D5814680F6006271F503E20106010483E371F501F58002FFCDA009821 +:4018C0000D4FFC3007610E60A321C9005D5001201460C7E778070008FF00FFFF00ED00E0580700080000264008012640040126401E1F00001C050000AAAAAAAA000000000F +:4019000001B40248844601BC604700BF6D0D001001B40248844601BC604700BF5D08001001B40248844601BC604700BF7105001001B40248844601BC604700BFE903001076 +:4019400001B40248844601BC604700BFA505001001B40248844601BC604700BF190B001001B40248844601BC604700BFAB04001001B40248844601BC604700BFB304001043 +:4019800001B40248844601BC604700BF7906001001B40248844601BC604700BF8D0B0010000000000000000000000000000000000000000000000000000000000000000018 +:4019C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7 +:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6.h new file mode 100644 index 00000000000..6dcb0ce124d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6.h @@ -0,0 +1,669 @@ +/***************************************************************************//** +* \file system_psoc6.h +* \version 2.30 +* +* \brief Device system header file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#ifndef _SYSTEM_PSOC6_H_ +#define _SYSTEM_PSOC6_H_ + +/** +* \addtogroup group_system_config +* \{ +* Provides device startup, system configuration, and linker script files. +* The system startup provides the followings features: +* - See \ref group_system_config_device_initialization for the: +* * \ref group_system_config_dual_core_device_initialization +* * \ref group_system_config_single_core_device_initialization +* - \ref group_system_config_device_memory_definition +* - \ref group_system_config_heap_stack_config +* - \ref group_system_config_merge_apps +* - \ref group_system_config_default_handlers +* - \ref group_system_config_device_vector_table +* - \ref group_system_config_cm4_functions +* +* \section group_system_config_configuration Configuration Considerations +* +* \subsection group_system_config_device_memory_definition Device Memory Definition +* The flash and RAM allocation for each CPU is defined by the linker scripts. +* For dual-core devices, the physical flash and RAM memory is shared between the CPU cores. +* 2 KB of RAM (allocated at the end of RAM) are reserved for system use. +* For Single-Core devices the system reserves additional 80 bytes of RAM. +* Using the reserved memory area for other purposes will lead to unexpected behavior. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see warnings during the build process. To eliminate build +* warnings in your project, you can simply comment out or remove the relevant +* code in the linker file. +* +* ARM GCC\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.ld', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.ld' and 'cy8c6xx7_cm4_dual.ld'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10000000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00024000 +* \endcode +* - 'xx_cm4_dual.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10080000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the rom ORIGIN's +* value in the 'xx_cm4_dual.ld' file, where 'xx' is the device group. Do this +* by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* ARM MDK\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.scat', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.scat' and 'cy8c6xx7_cm4_dual.scat'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see the warnings during the build process: +* L6314W (no section matches pattern) and/or L6329W +* (pattern only matches removed unused sections). In your project, you can +* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +* the linker. You can also comment out or remove the relevant code in the linker +* file. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10000000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08000000 +* #define RAM_SIZE 0x00024000 +* \endcode +* - 'xx_cm4_dual.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10080000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08024000 +* #define RAM_SIZE 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the FLASH_START +* value in the 'xx_cm4_dual.scat' file, +* where 'xx' is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* IAR\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.icf', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.icf' and 'cy8c6xx7_cm4_dual.icf'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10000000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10080000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08000000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08024000; +* \endcode +* - 'xx_cm4_dual.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10080000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10100000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08024000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08047800; +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the +* __ICFEDIT_region_IROM1_start__ value in the 'xx_cm4_dual.icf' file, where 'xx' +* is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* \subsection group_system_config_device_initialization Device Initialization +* After a power-on-reset (POR), the boot process is handled by the boot code +* from the on-chip ROM that is always executed by the Cortex-M0+ core. The boot +* code passes the control to the Cortex-M0+ startup code located in flash. +* +* \subsubsection group_system_config_dual_core_device_initialization Dual-Core Devices +* The Cortex-M0+ startup code performs the device initialization by a call to +* SystemInit() and then calls the main() function. The Cortex-M4 core is disabled +* by default. Enable the core using the \ref Cy_SysEnableCM4() function. +* See \ref group_system_config_cm4_functions for more details. +* \note Startup code executes SystemInit() function for the both Cortex-M0+ and Cortex-M4 cores. +* The function has a separate implementation on each core. +* Both function implementations unlock and disable the WDT. +* Therefore enable the WDT after both cores have been initialized. +* +* \subsubsection group_system_config_single_core_device_initialization Single-Core Devices +* The Cortex-M0+ core is not user-accessible on these devices. In this case the +* Flash Boot handles setup of the CM0+ core and starts the Cortex-M4 core. +* +* \subsection group_system_config_heap_stack_config Heap and Stack Configuration +* There are two ways to adjust heap and stack configurations: +* -# Editing source code files +* -# Specifying via command line +* +* By default, the stack size is set to 0x00001000 and the heap size is set to 0x00000400. +* +* \subsubsection group_system_config_heap_stack_config_gcc ARM GCC +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* Change the heap and stack sizes by modifying the following lines:\n +* \code .equ Stack_Size, 0x00001000 \endcode +* \code .equ Heap_Size, 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the compiler:\n +* \code -D __STACK_SIZE=0x000000400 \endcode +* \code -D __HEAP_SIZE=0x000000100 \endcode +* +* \subsubsection group_system_config_heap_stack_config_mdk ARM MDK +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the assembler:\n +* \code "--predefine=___STACK_SIZE SETA 0x000000400" \endcode +* \code "--predefine=__HEAP_SIZE SETA 0x000000100" \endcode +* +* \subsubsection group_system_config_heap_stack_config_iar IAR +* - Editing source code files\n +* The heap and stack sizes are defined in the linker scatter files: 'xx_yy.icf', +* where 'xx' is the device family, and 'yy' is the target CPU; for example, +* cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the +* linker (including quotation marks):\n +* \code --define_symbol __STACK_SIZE=0x000000400 \endcode +* \code --define_symbol __HEAP_SIZE=0x000000100 \endcode +* +* \subsection group_system_config_merge_apps Merging CM0+ and CM4 Executables +* The CM0+ project and linker script build the CM0+ application image. Similarly, +* the CM4 linker script builds the CM4 application image. Each specifies +* locations, sizes, and contents of sections in memory. See +* \ref group_system_config_device_memory_definition for the symbols and default +* values. +* +* The cymcuelftool is invoked by a post-build command. The precise project +* setting is IDE-specific. +* +* The cymcuelftool combines the two executables. The tool examines the +* executables to ensure that memory regions either do not overlap, or contain +* identical bytes (shared). If there are no problems, it creates a new ELF file +* with the merged image, without changing any of the addresses or data. +* +* \subsection group_system_config_default_handlers Default Interrupt Handlers Definition +* The default interrupt handler functions are defined as weak functions to a dummy +* handler in the startup file. The naming convention for the interrupt handler names +* is \_IRQHandler. A default interrupt handler can be overwritten in +* user code by defining the handler function using the same name. For example: +* \code +* void scb_0_interrupt_IRQHandler(void) +*{ +* ... +*} +* \endcode +* +* \subsection group_system_config_device_vector_table Vectors Table Copy from Flash to RAM +* This process uses memory sections defined in the linker script. The startup +* code actually defines the contents of the vector table and performs the copy. +* \subsubsection group_system_config_device_vector_table_gcc ARM GCC +* The linker script file is 'xx_yy.ld', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.ld and cy8c6xx7_cm4_dual.ld. +* It defines sections and locations in memory.\n +* Copy interrupt vectors from flash to RAM: \n +* From: \code LONG (__Vectors) \endcode +* To: \code LONG (__ram_vectors_start__) \endcode +* Size: \code LONG (__Vectors_End - __Vectors) \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* The code in these files copies the vector table from Flash to RAM. +* \subsubsection group_system_config_device_vector_table_mdk ARM MDK +* The linker script file is 'xx_yy.scat', where 'xx' is the device family, +* and 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.scat and +* cy8c6xx7_cm4_dual.scat. The linker script specifies that the vector table +* (RESET_RAM) shall be first in the RAM section.\n +* RESET_RAM represents the vector table. It is defined in the assembler startup +* files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \subsubsection group_system_config_device_vector_table_iar IAR +* The linker script file is 'xx_yy.icf', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* This file defines the .intvec_ram section and its location. +* \code place at start of IRAM1_region { readwrite section .intvec_ram}; \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \section group_system_config_more_information More Information +* Refer to the PDL User Guide for the +* more details. +* +* \section group_system_config_MISRA MISRA Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
2.3RThe character sequence // shall not be used within a comment.The comments provide a useful WEB link to the documentation.
+* +* \section group_system_config_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.30Added assembler files, linker skripts for Mbed OS.Added Arm Mbed OS embedded operating system support.
Updated linker scripts to extend the Flash and Ram memories size available for the CM4 core.Enhanced PDL usability.
2.20Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup.Changed the IPC driver configuration method from compile time to run time.
2.10Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* uVision Debugger support.
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* Documentation improvement.
2.0Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +*
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* Linker scripts usability improvement.
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API.Reserved system resources for internal operations.
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API.To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering.
1.0Initial version
+* +* +* \defgroup group_system_config_macro Macro +* \{ +* \defgroup group_system_config_system_macro System +* \defgroup group_system_config_cm4_status_macro Cortex-M4 Status +* \defgroup group_system_config_user_settings_macro User Settings +* \} +* \defgroup group_system_config_functions Functions +* \{ +* \defgroup group_system_config_system_functions System +* \defgroup group_system_config_cm4_functions Cortex-M4 Control +* \} +* \defgroup group_system_config_globals Global Variables +* +* \} +*/ + +/** +* \addtogroup group_system_config_system_functions +* \{ +* \details +* The following system functions implement CMSIS Core functions. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* \} +*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************************* +* Include files +*******************************************************************************/ +#include + + +/******************************************************************************* +* Global preprocessor symbols/macros ('define') +*******************************************************************************/ +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined (__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3))) + #define CY_SYSTEM_CPU_CM0P 1UL +#else + #define CY_SYSTEM_CPU_CM0P 0UL +#endif + +#if defined (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) + #include "cyfitter.h" +#endif /* (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) */ + + + + +/******************************************************************************* +* +* START OF USER SETTINGS HERE +* =========================== +* +* All lines with '<<<' can be set by user. +* +*******************************************************************************/ + +/** +* \addtogroup group_system_config_user_settings_macro +* \{ +*/ + +#if defined (CYDEV_CLK_EXTCLK__HZ) + #define CY_CLK_EXT_FREQ_HZ (CYDEV_CLK_EXTCLK__HZ) +#else + /***************************************************************************//** + * External Clock Frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_EXT_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_EXTCLK__HZ) */ + + +#if defined (CYDEV_CLK_ECO__HZ) + #define CY_CLK_ECO_FREQ_HZ (CYDEV_CLK_ECO__HZ) +#else + /***************************************************************************//** + * \brief External crystal oscillator frequency (in Hz, [value]UL). If compiled + * within PSoC Creator and the clock is enabled in the DWR, the value from DWR + * used. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ECO_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_ECO__HZ) */ + + +#if defined (CYDEV_CLK_ALTHF__HZ) + #define CY_CLK_ALTHF_FREQ_HZ (CYDEV_CLK_ALTHF__HZ) +#else + /***************************************************************************//** + * \brief Alternate high frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ALTHF_FREQ_HZ (32000000UL) /* <<< 32 MHz */ +#endif /* (CYDEV_CLK_ALTHF__HZ) */ + + +/***************************************************************************//** +* \brief Start address of the Cortex-M4 application ([address]UL) +* (USER SETTING) +*******************************************************************************/ +#if !defined (CY_CORTEX_M4_APPL_ADDR) + #define CY_CORTEX_M4_APPL_ADDR (CY_FLASH_BASE + 0x2000U) /* <<< 8 kB of flash is reserved for the Cortex-M0+ application */ +#endif /* (CY_CORTEX_M4_APPL_ADDR) */ + + +/***************************************************************************//** +* \brief IPC Semaphores allocation ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_SEMA_COUNT (128UL) /* <<< This will allow 128 (4*32) semaphores */ + + +/***************************************************************************//** +* \brief IPC Pipe definitions ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_MAX_ENDPOINTS (8UL) /* <<< 8 endpoints */ + + +/******************************************************************************* +* +* END OF USER SETTINGS HERE +* ========================= +* +*******************************************************************************/ + +/** \} group_system_config_user_settings_macro */ + + +/** +* \addtogroup group_system_config_system_macro +* \{ +*/ + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M0+ startup driver identifier */ + #define CY_STARTUP_M0P_ID ((uint32_t)((uint32_t)((0x0EU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + +#if (CY_SYSTEM_CPU_CM0P != 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M4 startup driver identifier */ + #define CY_STARTUP_M4_ID ((uint32_t)((uint32_t)((0x0FU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P != 1UL) */ + +/** \} group_system_config_system_macro */ + + +/** +* \addtogroup group_system_config_system_functions +* \{ +*/ +#if defined(__ARMCC_VERSION) + extern void SystemInit(void) __attribute__((constructor)); +#else + extern void SystemInit(void); +#endif /* (__ARMCC_VERSION) */ + +extern void SystemCoreClockUpdate(void); +/** \} group_system_config_system_functions */ + + +/** +* \addtogroup group_system_config_cm4_functions +* \{ +*/ +extern uint32_t Cy_SysGetCM4Status(void); +extern void Cy_SysEnableCM4(uint32_t vectorTableOffset); +extern void Cy_SysDisableCM4(void); +extern void Cy_SysRetainCM4(void); +extern void Cy_SysResetCM4(void); +/** \} group_system_config_cm4_functions */ + + +/** \cond */ +extern void Default_Handler (void); + +void Cy_SysIpcPipeIsrCm0(void); +void Cy_SysIpcPipeIsrCm4(void); + +extern void Cy_SystemInit(void); +extern void Cy_SystemInitFpuEnable(void); + +extern uint32_t cy_delayFreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; +/** \endcond */ + + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) +/** +* \addtogroup group_system_config_cm4_status_macro +* \{ +*/ +#define CY_SYS_CM4_STATUS_ENABLED (3U) /**< The Cortex-M4 core is enabled: power on, clock on, no isolate, no reset and no retain. */ +#define CY_SYS_CM4_STATUS_DISABLED (0U) /**< The Cortex-M4 core is disabled: power off, clock off, isolate, reset and no retain. */ +#define CY_SYS_CM4_STATUS_RETAINED (2U) /**< The Cortex-M4 core is retained. power off, clock off, isolate, no reset and retain. */ +#define CY_SYS_CM4_STATUS_RESET (1U) /**< The Cortex-M4 core is in the Reset mode: clock off, no isolated, no retain and reset. */ +/** \} group_system_config_cm4_status_macro */ + +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + + +/******************************************************************************* +* IPC Configuration +* ========================= +*******************************************************************************/ +/* IPC CY_PIPE default configuration */ +#define CY_SYS_CYPIPE_CLIENT_CNT (8UL) + +#define CY_SYS_INTR_CYPIPE_MUX_EP0 (1UL) /* IPC CYPRESS PIPE */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP0 (1UL) /* Notifier Priority */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP1 (1UL) /* Notifier Priority */ + +#define CY_SYS_CYPIPE_CHAN_MASK_EP0 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CHAN_MASK_EP1 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP1) + + +/******************************************************************************/ +/* + * The System pipe configuration defines the IPC channel number, interrupt + * number, and the pipe interrupt mask for the endpoint. + * + * The format of the endPoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ + +/* System Pipe addresses */ +/* CyPipe defines */ + +#define CY_SYS_CYPIPE_INTR_MASK ( CY_SYS_CYPIPE_CHAN_MASK_EP0 | CY_SYS_CYPIPE_CHAN_MASK_EP1 ) + +#define CY_SYS_CYPIPE_CONFIG_EP0 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP0 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CONFIG_EP1 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP1 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP1) + +/******************************************************************************/ + + +/** \addtogroup group_system_config_globals +* \{ +*/ + +extern uint32_t SystemCoreClock; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_PeriClkFreqHz; + +/** \} group_system_config_globals */ + + + +/** \cond INTERNAL */ +/******************************************************************************* +* Backward compatibility macro. The following code is DEPRECATED and must +* not be used in new projects +*******************************************************************************/ + +/* BWC defines for functions related to enter/exit critical section */ +#define Cy_SaveIRQ Cy_SysLib_EnterCriticalSection +#define Cy_RestoreIRQ Cy_SysLib_ExitCriticalSection +#define CY_SYS_INTR_CYPIPE_EP0 (CY_IPC_INTR_CYPIPE_EP0) +#define CY_SYS_INTR_CYPIPE_EP1 (CY_IPC_INTR_CYPIPE_EP1) + +/** \endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYSTEM_PSOC6_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6_cm4.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6_cm4.c new file mode 100644 index 00000000000..da838b41236 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/device/system_psoc6_cm4.c @@ -0,0 +1,582 @@ +/***************************************************************************//** +* \file system_psoc6_cm4.c +* \version 2.30 +* +* The device system-source file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "device.h" +#include "system_psoc6.h" +#include "cy_device_headers.h" +#include "psoc6_utils.h" +#include "cy_syslib.h" +#include "cy_wdt.h" +#include "cycfg.h" + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + #include "cy_ipc_sema.h" + #include "cy_ipc_pipe.h" + #include "cy_ipc_drv.h" + + #if defined(CY_DEVICE_PSOC6ABLE2) + #include "cy_flash.h" + #endif /* defined(CY_DEVICE_PSOC6ABLE2) */ +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ + + +/******************************************************************************* +* SystemCoreClockUpdate() +*******************************************************************************/ + +/** Default HFClk frequency in Hz */ +#define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL) + +/** Default PeriClk frequency in Hz */ +#define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL) + +/** Default SlowClk system core frequency in Hz */ +#define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL) + +/** IMO frequency in Hz */ +#define CY_CLK_IMO_FREQ_HZ (8000000UL) + +/** HVILO frequency in Hz */ +#define CY_CLK_HVILO_FREQ_HZ (32000UL) + +/** PILO frequency in Hz */ +#define CY_CLK_PILO_FREQ_HZ (32768UL) + +/** WCO frequency in Hz */ +#define CY_CLK_WCO_FREQ_HZ (32768UL) + +/** ALTLF frequency in Hz */ +#define CY_CLK_ALTLF_FREQ_HZ (32768UL) + + +/** +* Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock, +* which is the system clock frequency supplied to the SysTick timer and the +* processor core clock. +* This variable implements CMSIS Core global variable. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* This variable can be used by debuggers to query the frequency +* of the debug timer or to configure the trace clock speed. +* +* \attention Compilers must be configured to avoid removing this variable in case +* the application program is not using it. Debugging systems require the variable +* to be physically present in memory so that it can be examined to configure the debugger. */ +uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +/** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT; + +/** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT; + +/** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */ +#if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) + uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ; +#endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */ + +/* SCB->CPACR */ +#define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u) + + +/******************************************************************************* +* SystemInit() +*******************************************************************************/ + +/* CLK_FLL_CONFIG default values */ +#define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u) +#define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u) +#define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u) +#define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu) + + +/******************************************************************************* +* SystemCoreClockUpdate (void) +*******************************************************************************/ + +/* Do not use these definitions directly in your application */ +#define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u) +#define CY_DELAY_1K_THRESHOLD (1000u) +#define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u) +#define CY_DELAY_1M_THRESHOLD (1000000u) +#define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u) +uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / + CY_DELAY_1K_THRESHOLD; + +uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) / + CY_DELAY_1M_THRESHOLD); + +uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * + ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD); + +#define CY_ROOT_PATH_SRC_IMO (0UL) +#define CY_ROOT_PATH_SRC_EXT (1UL) +#if (SRSS_ECO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ECO (2UL) +#endif /* (SRSS_ECO_PRESENT == 1U) */ +#if (SRSS_ALTHF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ALTHF (3UL) +#endif /* (SRSS_ALTHF_PRESENT == 1U) */ +#define CY_ROOT_PATH_SRC_DSI_MUX (4UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL) +#if (SRSS_ALTLF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL) +#endif /* (SRSS_ALTLF_PRESENT == 1U) */ +#if (SRSS_PILO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL) +#endif /* (SRSS_PILO_PRESENT == 1U) */ + + +/******************************************************************************* +* Function Name: SystemInit +****************************************************************************//** +* \cond +* Initializes the system: +* - Restores FLL registers to the default state for single core devices. +* - Unlocks and disables WDT. +* - Calls Cy_PDL_Init() function to define the driver library. +* - Calls the Cy_SystemInit() function, if compiled from PSoC Creator. +* - Calls \ref SystemCoreClockUpdate(). +* \endcond +*******************************************************************************/ +void SystemInit(void) +{ + Cy_PDL_Init(CY_DEVICE_CFG); + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Restore FLL registers to the default state as they are not restored by the ROM code */ + uint32_t copy = SRSS->CLK_FLL_CONFIG; + copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk; + SRSS->CLK_FLL_CONFIG = copy; + + copy = SRSS->CLK_ROOT_SELECT[0u]; + copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/ + SRSS->CLK_ROOT_SELECT[0u] = copy; + + SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE; + SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE; + SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE; + SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE; + + /* Unlock and disable WDT */ + Cy_WDT_Unlock(); + Cy_WDT_Disable(); + #endif /* (__CM0P_PRESENT == 0) */ +#endif /* __CM0P_PRESENT */ + + Cy_SystemInit(); + SystemCoreClockUpdate(); + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Allocate and initialize semaphores for the system operations. */ + static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD]; + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray); + #else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); + #endif /* (__CM0P_PRESENT) */ +#else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); +#endif /* __CM0P_PRESENT */ + + + /******************************************************************************** + * + * Initializes the system pipes. The system pipes are used by BLE and Flash. + * + * If the default startup file is not used, or SystemInit() is not called in your + * project, call the following three functions prior to executing any flash or + * EmEEPROM write or erase operation: + * -# Cy_IPC_Sema_Init() + * -# Cy_IPC_Pipe_Config() + * -# Cy_IPC_Pipe_Init() + * -# Cy_Flash_Init() + * + *******************************************************************************/ + /* Create an array of endpoint structures */ + static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS]; + + Cy_IPC_Pipe_Config(systemIpcPipeEpArray); + + static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT]; + + static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 = + { + /* .ep0ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0, + /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0 + }, + /* .ep1ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1, + /* .ipcNotifierMuxNumber */ 0u, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1 + }, + /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT, + /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray, + /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4 + }; + + if (cy_device->flashPipeRequired != 0u) + { + Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4); + } + +#if defined(CY_DEVICE_PSOC6ABLE2) + Cy_Flash_Init(); +#endif /* defined(CY_DEVICE_PSOC6ABLE2) */ + +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ +} + + +/******************************************************************************* +* Function Name: mbed_sdk_init +****************************************************************************//** +* +* Mbed's post-memory-initialization function. +* Used here to initialize common parts of the Cypress libraries. +* +*******************************************************************************/ +void mbed_sdk_init(void) +{ + /* Initialize shared resource manager */ + cy_srm_initialize(); + + /* Initialize system and clocks. */ + /* Placed here as it must be done after proper LIBC initialization. */ + SystemInit(); + + /* Set up the device based on configurator selections */ + init_cycfg_all(); + + /* Enable global interrupts */ + __enable_irq(); +} + + + +/******************************************************************************* +* Function Name: Cy_SystemInit +****************************************************************************//** +* +* The function is called during device startup. Once project compiled as part of +* the PSoC Creator project, the Cy_SystemInit() function is generated by the +* PSoC Creator. +* +* The function generated by PSoC Creator performs all of the necessary device +* configuration based on the design settings. This includes settings from the +* Design Wide Resources (DWR) such as Clocks and Pins as well as any component +* configuration that is necessary. +* +*******************************************************************************/ +__WEAK void Cy_SystemInit(void) +{ + /* Empty weak function. The actual implementation to be in the PSoC Creator + * generated strong function. + */ +} + + +/******************************************************************************* +* Function Name: SystemCoreClockUpdate +****************************************************************************//** +* +* Gets core clock frequency and updates \ref SystemCoreClock, \ref +* cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz. +* +* Updates global variables used by the \ref Cy_SysLib_Delay(), \ref +* Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles(). +* +*******************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t srcFreqHz; + uint32_t pathFreqHz; + uint32_t fastClkDiv; + uint32_t periClkDiv; + uint32_t rootPath; + uint32_t srcClk; + + /* Get root path clock for the high-frequency clock # 0 */ + rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]); + + /* Get source of the root path clock */ + srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]); + + /* Get frequency of the source */ + switch (srcClk) + { + case CY_ROOT_PATH_SRC_IMO: + srcFreqHz = CY_CLK_IMO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_EXT: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + + #if (SRSS_ECO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ECO: + srcFreqHz = CY_CLK_ECO_FREQ_HZ; + break; + #endif /* (SRSS_ECO_PRESENT == 1U) */ + +#if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ALTHF: + srcFreqHz = cy_BleEcoClockFreqHz; + break; +#endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */ + + case CY_ROOT_PATH_SRC_DSI_MUX: + { + uint32_t dsi_src; + dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]); + switch (dsi_src) + { + case CY_ROOT_PATH_SRC_DSI_MUX_HVILO: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_DSI_MUX_WCO: + srcFreqHz = CY_CLK_WCO_FREQ_HZ; + break; + + #if (SRSS_ALTLF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF: + srcFreqHz = CY_CLK_ALTLF_FREQ_HZ; + break; + #endif /* (SRSS_ALTLF_PRESENT == 1U) */ + + #if (SRSS_PILO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_PILO: + srcFreqHz = CY_CLK_PILO_FREQ_HZ; + break; + #endif /* (SRSS_PILO_PRESENT == 1U) */ + + default: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + } + } + break; + + default: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + } + + if (rootPath == 0UL) + { + /* FLL */ + bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS)); + bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)); + bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) || + (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3))); + if ((fllOutputAuto && fllLocked) || fllOutputOutput) + { + uint32_t fllMult; + uint32_t refDiv; + uint32_t outputDiv; + + fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG); + refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2); + outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL; + + pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv; + } + else + { + pathFreqHz = srcFreqHz; + } + } + else if ((rootPath == 1UL) || (rootPath == 2UL)) + { + /* PLL */ + bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL])); + bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])); + bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) || + (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]))); + if ((pllOutputAuto && pllLocked) || pllOutputOutput) + { + uint32_t feedbackDiv; + uint32_t referenceDiv; + uint32_t outputDiv; + + feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + + pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv; + + } + else + { + pathFreqHz = srcFreqHz; + } + } + else + { + /* Direct */ + pathFreqHz = srcFreqHz; + } + + /* Get frequency after hf_clk pre-divider */ + pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]); + cy_Hfclk0FreqHz = pathFreqHz; + + /* Fast Clock Divider */ + fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL); + + /* Peripheral Clock Divider */ + periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL); + cy_PeriClkFreqHz = pathFreqHz / periClkDiv; + + pathFreqHz = pathFreqHz / fastClkDiv; + SystemCoreClock = pathFreqHz; + + /* Sets clock frequency for Delay API */ + cy_delayFreqHz = SystemCoreClock; + cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD); + cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD; + cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz; +} + + +/******************************************************************************* +* Function Name: Cy_SystemInitFpuEnable +****************************************************************************//** +* +* Enables the FPU if it is used. The function is called from the startup file. +* +*******************************************************************************/ +void Cy_SystemInitFpuEnable(void) +{ + #if defined (__FPU_USED) && (__FPU_USED == 1U) + uint32_t interruptState; + interruptState = Cy_SysLib_EnterCriticalSection(); + SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE; + __DSB(); + __ISB(); + Cy_SysLib_ExitCriticalSection(interruptState); + #endif /* (__FPU_USED) && (__FPU_USED == 1U) */ +} + + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) +/******************************************************************************* +* Function Name: Cy_SysIpcPipeIsrCm4 +****************************************************************************//** +* +* This is the interrupt service routine for the system pipe. +* +*******************************************************************************/ +void Cy_SysIpcPipeIsrCm4(void) +{ + Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR); +} +#endif + +/******************************************************************************* +* Function Name: Cy_MemorySymbols +****************************************************************************//** +* +* The intention of the function is to declare boundaries of the memories for the +* MDK compilers. For the rest of the supported compilers, this is done using +* linker configuration files. The following symbols used by the cymcuelftool. +* +*******************************************************************************/ +#if defined (__ARMCC_VERSION) +__asm void Cy_MemorySymbols(void) +{ + /* Flash */ + EXPORT __cy_memory_0_start + EXPORT __cy_memory_0_length + EXPORT __cy_memory_0_row_size + + /* Working Flash */ + EXPORT __cy_memory_1_start + EXPORT __cy_memory_1_length + EXPORT __cy_memory_1_row_size + + /* Supervisory Flash */ + EXPORT __cy_memory_2_start + EXPORT __cy_memory_2_length + EXPORT __cy_memory_2_row_size + + /* XIP */ + EXPORT __cy_memory_3_start + EXPORT __cy_memory_3_length + EXPORT __cy_memory_3_row_size + + /* eFuse */ + EXPORT __cy_memory_4_start + EXPORT __cy_memory_4_length + EXPORT __cy_memory_4_row_size + + /* Flash */ +__cy_memory_0_start EQU __cpp(CY_FLASH_BASE) +__cy_memory_0_length EQU __cpp(CY_FLASH_SIZE) +__cy_memory_0_row_size EQU 0x200 + + /* Flash region for EEPROM emulation */ +__cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE) +__cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE) +__cy_memory_1_row_size EQU 0x200 + + /* Supervisory Flash */ +__cy_memory_2_start EQU __cpp(CY_SFLASH_BASE) +__cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE) +__cy_memory_2_row_size EQU 0x200 + + /* XIP */ +__cy_memory_3_start EQU __cpp(CY_XIP_BASE) +__cy_memory_3_length EQU __cpp(CY_XIP_SIZE) +__cy_memory_3_row_size EQU 0x200 + + /* eFuse */ +__cy_memory_4_start EQU __cpp(0x90700000) +__cy_memory_4_length EQU __cpp(0x100000) +__cy_memory_4_row_size EQU __cpp(1) +} + +#endif /* defined (__ARMCC_VERSION) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/psoc6_static_srm.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/psoc6_static_srm.h new file mode 100644 index 00000000000..866391bc29d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_BLE/psoc6_static_srm.h @@ -0,0 +1,77 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + */ + +/* + * This file defines hardware resources reserved by device-generated code. These + * resources are accessed directly by the Peripheral Driver library (PDL). + * + * There are four classes of resources that must be declared here: + * 1 CYCFG_ASSIGNED_PORTS macro defines which ports and pins are reserved. + * You define these as a colon separated list of ports and pins reserved + * using macro SRM_PORT(port_num, pins), once for each reserved port. + * SRM_PORT macro arguments are port number (in the range 0 ... 14) and + * pins, which is a hex value with a bit set for each reserved pin on a port. + * + * 2 CYCFG_ASSIGNED_DIVIDERS macro defines which clock dividers are reserved. + * You define these as a colon separated list of dividers reserved + * using macro SRM_DIVIDER(type, reservations), once for each required + * divider type. + * SRM_DIVIDER arguments are divider type (one of cy_en_divider_types_t + * values) and reservations, which is a hex mask value with a bit set for + * each reserved divider of a given type. + * + * 3 CYCFG_ASSIGNED_SCBS macro defines which SCB blocks are reserved. + * You define these as a colon separated list of SCBs reserved using + * macro SRM_SCB(n), which argument is SCB number in a range 0 ... 7. + * + * 4 CYCFG_ASSIGNED_TCPWM macro defines which TCPWM blocks are reserved. + * You define these as a colon separated list of TCPWMs reserved using + * macro SRM_TCPWM(n), which argument is TCPWM number in a range 0 ... 31. + * + * Examples: + * #define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x30), SRM_PORT(5, 0x03) + * + * #define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + * + * #define CYCFG_ASSIGNED_SCBS SRM_SCB(2) + * + * #define CYCFG_ASSIGNED_TCPWMS + * + */ + +/* P0_0 and P0_1 reserved for WCO, +* P1_0 reserved for CSD TX, +* P6-4, P6-6 and P6_7 reserved for SWD, +* P7_1, P7_2 and P7_7 reserved for CSD Capacitors +* P8_1 ... P8_7 reserved for CSD Buttons +* P11_2 ... P11_7 reserved for QSPI +*/ +#define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x03), SRM_PORT(1, 0x01),\ + SRM_PORT(6, 0xd0), SRM_PORT(7, 0x86),\ + SRM_PORT(8, 0xfe), SRM_PORT(11, 0xfc) + +/* 8-bit divider 0 reserved for CSD */ +#define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + +#define CYCFG_ASSIGNED_SCBS + +#define CYCFG_ASSIGNED_TCPWMS + +/* End of File */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.c new file mode 100644 index 00000000000..74c28aba2cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.c @@ -0,0 +1,34 @@ +/******************************************************************************* +* File Name: cycfg.c +* +* Description: +* Wrapper function to initialize all generated code. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg.h" + +void init_cycfg_all(void) +{ + init_cycfg_clocks(); + init_cycfg_peripherals(); + init_cycfg_pins(); + init_cycfg_platform(); + init_cycfg_routing(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.h new file mode 100644 index 00000000000..1709481df21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg.h @@ -0,0 +1,48 @@ +/******************************************************************************* +* File Name: cycfg.h +* +* Description: +* Simple wrapper header containing all generated files. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +#include "cycfg_clocks.h" +#include "cycfg_dmas.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_platform.h" +#include "cycfg_routing.h" + +void init_cycfg_all(void); + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000..5249f7d3a0d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_clocks.c +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_clocks.h" + + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_16_BIT, 0U, 999U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 0U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 7U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 2U, 108U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 3U, 1U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 4U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 4U, 255U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 4U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000..0da97983ced --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,55 @@ +/******************************************************************************* +* File Name: cycfg_clocks.h +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_16_0_HW CY_SYSCLK_DIV_16_BIT +#define peri_0_div_16_0_NUM 0U +#define peri_0_div_8_0_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_0_NUM 0U +#define peri_0_div_8_1_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_1_NUM 1U +#define peri_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_2_NUM 2U +#define peri_0_div_8_3_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_3_NUM 3U +#define peri_0_div_8_4_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_4_NUM 4U + +void init_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_CLOCKS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.c new file mode 100644 index 00000000000..a8e9de3e069 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.c @@ -0,0 +1,179 @@ +/******************************************************************************* +* File Name: cycfg_dmas.c +* +* Description: +* DMA configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_dmas.h" + +const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_0_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_IM, + .interruptType = CY_DMA_1ELEMENT, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_1ELEMENT, + .dataSize = CY_DMA_BYTE, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_1D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 0, + .dstXincrement = 1, + .xCount = 6, + .srcYincrement = 0, + .dstYincrement = 0, + .yCount = 1, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_0_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_0_channelConfig = +{ + .descriptor = &cpuss_0_dw0_0_chan_0_Descriptor_0, + .preemptable = true, + .priority = 1, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_1_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_16CYC, + .interruptType = CY_DMA_1ELEMENT, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_1ELEMENT, + .dataSize = CY_DMA_BYTE, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_1D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 1, + .dstXincrement = 0, + .xCount = 5, + .srcYincrement = 0, + .dstYincrement = 0, + .yCount = 1, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_1_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_1_channelConfig = +{ + .descriptor = &cpuss_0_dw0_0_chan_1_Descriptor_0, + .preemptable = true, + .priority = 1, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_1_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_4CYC, + .interruptType = CY_DMA_DESCR, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_X_LOOP, + .dataSize = CY_DMA_HALFWORD, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_2D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 2, + .dstXincrement = 0, + .xCount = 10, + .srcYincrement = 10, + .dstYincrement = 0, + .yCount = 2, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_1_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_1_channelConfig = +{ + .descriptor = &cpuss_0_dw1_0_chan_1_Descriptor_0, + .preemptable = false, + .priority = 0, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_3_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_IM, + .interruptType = CY_DMA_DESCR, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_X_LOOP, + .dataSize = CY_DMA_HALFWORD, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_2D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 0, + .dstXincrement = 2, + .xCount = 10, + .srcYincrement = 0, + .dstYincrement = 10, + .yCount = 2, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_3_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_3_channelConfig = +{ + .descriptor = &cpuss_0_dw1_0_chan_3_Descriptor_0, + .preemptable = false, + .priority = 0, + .enable = false, + .bufferable = false, +}; + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.h new file mode 100644 index 00000000000..c68d4b9ec81 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_dmas.h @@ -0,0 +1,67 @@ +/******************************************************************************* +* File Name: cycfg_dmas.h +* +* Description: +* DMA configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_DMAS_H) +#define CYCFG_DMAS_H + +#include "cycfg_notices.h" +#include "cy_dma.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define cpuss_0_dw0_0_chan_0_HW DW0 +#define cpuss_0_dw0_0_chan_0_CHANNEL 0 +#define cpuss_0_dw0_0_chan_0_IRQ cpuss_interrupts_dw0_0_IRQn +#define cpuss_0_dw0_0_chan_1_HW DW0 +#define cpuss_0_dw0_0_chan_1_CHANNEL 1 +#define cpuss_0_dw0_0_chan_1_IRQ cpuss_interrupts_dw0_1_IRQn +#define cpuss_0_dw1_0_chan_1_HW DW1 +#define cpuss_0_dw1_0_chan_1_CHANNEL 1 +#define cpuss_0_dw1_0_chan_1_IRQ cpuss_interrupts_dw1_1_IRQn +#define cpuss_0_dw1_0_chan_3_HW DW1 +#define cpuss_0_dw1_0_chan_3_CHANNEL 3 +#define cpuss_0_dw1_0_chan_3_IRQ cpuss_interrupts_dw1_3_IRQn + +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_0_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_0_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_0_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_1_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_1_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_1_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_1_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_1_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_1_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_3_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_3_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_3_channelConfig; + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_DMAS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_notices.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000..90f1013f8a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_notices.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* File Name: cycfg_notices.h +* +* Description: +* Contains warnings and errors that occurred while generating code for the +* design. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + + +#endif /* CYCFG_NOTICES_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000..67b745f8053 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,204 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.c +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_peripherals.h" + +#define PWM_INPUT_DISABLED 0x7U +#define USBUART_INTR_LVL_SEL (CY_USBFS_DEV_DRV_SET_SOF_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_BUS_RESET_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP0_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_LPM_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_ARB_EP_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_EP1_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP2_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP3_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP4_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP5_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP6_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP7_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP8_LVL(0x1U)) + +cy_stc_csd_context_t cy_csd_0_context = +{ + .lockKey = CY_CSD_NONE_KEY, +}; +const cy_stc_scb_uart_config_t BT_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = true, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 63, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 1UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_scb_ezi2c_config_t CSD_COMM_config = +{ + .numberOfAddresses = CY_SCB_EZI2C_ONE_ADDRESS, + .slaveAddress1 = 8U, + .slaveAddress2 = 0U, + .subAddressSize = CY_SCB_EZI2C_SUB_ADDR16_BITS, + .enableWakeFromSleep = false, +}; +const cy_stc_scb_uart_config_t KITPROG_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = false, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 0UL, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_smif_config_t QSPI_config = +{ + .mode = (uint32_t)CY_SMIF_NORMAL, + .deselectDelay = QSPI_DESELECT_DELAY, + .rxClockSel = (uint32_t)CY_SMIF_SEL_INV_INTERNAL_CLK, + .blockEvent = (uint32_t)CY_SMIF_BUS_ERROR, +}; +const cy_stc_mcwdt_config_t MCWDT0_config = +{ + .c0Match = 32768U, + .c1Match = 32768U, + .c0Mode = CY_MCWDT_MODE_NONE, + .c1Mode = CY_MCWDT_MODE_NONE, + .c2ToggleBit = 16U, + .c2Mode = CY_MCWDT_MODE_NONE, + .c0ClearOnMatch = false, + .c1ClearOnMatch = false, + .c0c1Cascade = true, + .c1c2Cascade = false, +}; +const cy_stc_rtc_config_t RTC_config = +{ + .sec = 0U, + .min = 0U, + .hour = 12U, + .amPm = CY_RTC_AM, + .hrFormat = CY_RTC_24_HOURS, + .dayOfWeek = CY_RTC_SUNDAY, + .date = 1U, + .month = CY_RTC_JANUARY, + .year = 0U, +}; +const cy_stc_tcpwm_pwm_config_t PWM_config = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PWM_PRESCALER_DIVBY_1, + .pwmAlignment = CY_TCPWM_PWM_LEFT_ALIGN, + .deadTimeClocks = 0, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .period0 = 32000, + .period1 = 32768, + .enablePeriodSwap = false, + .compare0 = 16384, + .compare1 = 16384, + .enableCompareSwap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = CY_TCPWM_PWM_INVERT_DISABLE, + .invertPWMOutN = CY_TCPWM_PWM_INVERT_DISABLE, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .swapInputMode = PWM_INPUT_DISABLED & 0x3U, + .swapInput = CY_TCPWM_INPUT_0, + .reloadInputMode = PWM_INPUT_DISABLED & 0x3U, + .reloadInput = CY_TCPWM_INPUT_0, + .startInputMode = PWM_INPUT_DISABLED & 0x3U, + .startInput = CY_TCPWM_INPUT_0, + .killInputMode = PWM_INPUT_DISABLED & 0x3U, + .killInput = CY_TCPWM_INPUT_0, + .countInputMode = PWM_INPUT_DISABLED & 0x3U, + .countInput = CY_TCPWM_INPUT_1, +}; +const cy_stc_usbfs_dev_drv_config_t USBUART_config = +{ + .mode = CY_USBFS_DEV_DRV_EP_MANAGEMENT_CPU, + .epAccess = CY_USBFS_DEV_DRV_USE_8_BITS_DR, + .epBuffer = NULL, + .epBufferSize = 0U, + .dmaConfig[0] = NULL, + .dmaConfig[1] = NULL, + .dmaConfig[2] = NULL, + .dmaConfig[3] = NULL, + .dmaConfig[4] = NULL, + .dmaConfig[5] = NULL, + .dmaConfig[6] = NULL, + .dmaConfig[7] = NULL, + .enableLpm = false, + .intrLevelSel = USBUART_INTR_LVL_SEL, +}; + + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 4U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB2_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB5_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_TCPWM1_CLOCKS1, CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphAssignDivider(PCLK_UDB_CLOCKS0, CY_SYSCLK_DIV_8_BIT, 0u); + + Cy_SysClk_PeriphAssignDivider(PCLK_USB_CLOCK_DEV_BRS, CY_SYSCLK_DIV_16_BIT, 0U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000..beadadac395 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,140 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.h +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_csd.h" +#include "cy_scb_uart.h" +#include "cy_scb_ezi2c.h" +#include "cy_smif.h" +#include "cy_mcwdt.h" +#include "cy_rtc.h" +#include "cy_tcpwm_pwm.h" +#include "cycfg_routing.h" +#include "cy_usbfs_dev_drv.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 100000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 4u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT8 +#define Button0_Tx_PORT GPIO_PRT1 +#define Button1_Rx0_PORT GPIO_PRT8 +#define Button1_Tx_PORT GPIO_PRT1 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 1u +#define Button0_Tx_PIN 0u +#define Button1_Rx0_PIN 2u +#define Button1_Tx_PIN 0u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CapSense_HW CSD0 +#define CapSense_IRQ csd_interrupt_IRQn +#define BT_UART_HW SCB2 +#define BT_UART_IRQ scb_2_interrupt_IRQn +#define CSD_COMM_HW SCB3 +#define CSD_COMM_IRQ scb_3_interrupt_IRQn +#define KITPROG_UART_HW SCB5 +#define KITPROG_UART_IRQ scb_5_interrupt_IRQn +#define QSPI_HW SMIF0 +#define QSPI_IRQ smif_interrupt_IRQn +#define QSPI_MEMORY_MODE_ALIGMENT_ERROR (0UL) +#define QSPI_RX_DATA_FIFO_UNDERFLOW (0UL) +#define QSPI_TX_COMMAND_FIFO_OVERFLOW (0UL) +#define QSPI_TX_DATA_FIFO_OVERFLOW (0UL) +#define QSPI_RX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_TX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_DATALINES0_1 (1UL) +#define QSPI_DATALINES2_3 (1UL) +#define QSPI_DATALINES4_5 (0UL) +#define QSPI_DATALINES6_7 (0UL) +#define QSPI_SS0 (1UL) +#define QSPI_SS1 (0UL) +#define QSPI_SS2 (0UL) +#define QSPI_SS3 (0UL) +#define QSPI_DESELECT_DELAY 7 +#define MCWDT0_HW MCWDT_STRUCT0 +#define RTC_10_MONTH_OFFSET (28U) +#define RTC_MONTH_OFFSET (24U) +#define RTC_10_DAY_OFFSET (20U) +#define RTC_DAY_OFFSET (16U) +#define RTC_1000_YEAR_OFFSET (12U) +#define RTC_100_YEAR_OFFSET (8U) +#define RTC_10_YEAR_OFFSET (4U) +#define RTC_YEAR_OFFSET (0U) +#define PWM_HW TCPWM1 +#define PWM_NUM 1UL +#define PWM_MASK (1UL << 1) +#define USBUART_ACTIVE_ENDPOINTS_MASK 7U +#define USBUART_ENDPOINTS_BUFFER_SIZE 140U +#define USBUART_ENDPOINTS_ACCESS_TYPE 0U +#define USBUART_USB_CORE 4U +#define USBUART_HW USBFS0 +#define USBUART_HI_IRQ usb_interrupt_hi_IRQn +#define USBUART_MED_IRQ usb_interrupt_med_IRQn +#define USBUART_LO_IRQ usb_interrupt_lo_IRQn + +extern cy_stc_csd_context_t cy_csd_0_context; +extern const cy_stc_scb_uart_config_t BT_UART_config; +extern const cy_stc_scb_ezi2c_config_t CSD_COMM_config; +extern const cy_stc_scb_uart_config_t KITPROG_UART_config; +extern const cy_stc_smif_config_t QSPI_config; +extern const cy_stc_mcwdt_config_t MCWDT0_config; +extern const cy_stc_rtc_config_t RTC_config; +extern const cy_stc_tcpwm_pwm_config_t PWM_config; +extern const cy_stc_usbfs_dev_drv_config_t USBUART_config; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000..8fed53e2107 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.c @@ -0,0 +1,883 @@ +/******************************************************************************* +* File Name: cycfg_pins.c +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t WCO_IN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WCO_OUT_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_RED_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_RED_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SW2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SW2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_BLUE_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_BLUE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SS0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SS0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SPI_CLOCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED9_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED9_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_GREEN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_GREEN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED8_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED8_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CMD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CMD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CLK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SDHC0_CLK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ENABLE_WIFI_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ENABLE_WIFI_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_RTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_CTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_CTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_POWER_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF, + .hsiom = BT_POWER_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = BT_HOST_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_DEVICE_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SCL_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SCL_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SDA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SDA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDIO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINB_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CMOD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; + + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(WCO_IN_PORT, WCO_IN_PIN, &WCO_IN_config); + + Cy_GPIO_Pin_Init(WCO_OUT_PORT, WCO_OUT_PIN, &WCO_OUT_config); + + Cy_GPIO_Pin_Init(LED_RED_PORT, LED_RED_PIN, &LED_RED_config); + + Cy_GPIO_Pin_Init(SW2_PORT, SW2_PIN, &SW2_config); + + Cy_GPIO_Pin_Init(LED_BLUE_PORT, LED_BLUE_PIN, &LED_BLUE_config); + + Cy_GPIO_Pin_Init(QSPI_SS0_PORT, QSPI_SS0_PIN, &QSPI_SS0_config); + + Cy_GPIO_Pin_Init(QSPI_DATA3_PORT, QSPI_DATA3_PIN, &QSPI_DATA3_config); + + Cy_GPIO_Pin_Init(QSPI_DATA2_PORT, QSPI_DATA2_PIN, &QSPI_DATA2_config); + + Cy_GPIO_Pin_Init(QSPI_DATA1_PORT, QSPI_DATA1_PIN, &QSPI_DATA1_config); + + Cy_GPIO_Pin_Init(QSPI_DATA0_PORT, QSPI_DATA0_PIN, &QSPI_DATA0_config); + + Cy_GPIO_Pin_Init(QSPI_SPI_CLOCK_PORT, QSPI_SPI_CLOCK_PIN, &QSPI_SPI_CLOCK_config); + + Cy_GPIO_Pin_Init(LED9_PORT, LED9_PIN, &LED9_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_0_PORT, ioss_0_port_14_pin_0_PIN, &ioss_0_port_14_pin_0_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_1_PORT, ioss_0_port_14_pin_1_PIN, &ioss_0_port_14_pin_1_config); + + + Cy_GPIO_Pin_Init(LED_GREEN_PORT, LED_GREEN_PIN, &LED_GREEN_config); + + Cy_GPIO_Pin_Init(LED8_PORT, LED8_PIN, &LED8_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT0_PORT, SDHC0_DAT0_PIN, &SDHC0_DAT0_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT1_PORT, SDHC0_DAT1_PIN, &SDHC0_DAT1_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT2_PORT, SDHC0_DAT2_PIN, &SDHC0_DAT2_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT3_PORT, SDHC0_DAT3_PIN, &SDHC0_DAT3_config); + + Cy_GPIO_Pin_Init(SDHC0_CMD_PORT, SDHC0_CMD_PIN, &SDHC0_CMD_config); + + Cy_GPIO_Pin_Init(SDHC0_CLK_PORT, SDHC0_CLK_PIN, &SDHC0_CLK_config); + + Cy_GPIO_Pin_Init(ENABLE_WIFI_PORT, ENABLE_WIFI_PIN, &ENABLE_WIFI_config); + + Cy_GPIO_Pin_Init(BT_UART_RX_PORT, BT_UART_RX_PIN, &BT_UART_RX_config); + + Cy_GPIO_Pin_Init(BT_UART_TX_PORT, BT_UART_TX_PIN, &BT_UART_TX_config); + + Cy_GPIO_Pin_Init(BT_UART_RTS_PORT, BT_UART_RTS_PIN, &BT_UART_RTS_config); + + Cy_GPIO_Pin_Init(BT_UART_CTS_PORT, BT_UART_CTS_PIN, &BT_UART_CTS_config); + + Cy_GPIO_Pin_Init(BT_POWER_PORT, BT_POWER_PIN, &BT_POWER_config); + + Cy_GPIO_Pin_Init(BT_HOST_WAKE_PORT, BT_HOST_WAKE_PIN, &BT_HOST_WAKE_config); + + Cy_GPIO_Pin_Init(BT_DEVICE_WAKE_PORT, BT_DEVICE_WAKE_PIN, &BT_DEVICE_WAKE_config); + + Cy_GPIO_Pin_Init(UART_RX_PORT, UART_RX_PIN, &UART_RX_config); + + Cy_GPIO_Pin_Init(UART_TX_PORT, UART_TX_PIN, &UART_TX_config); + + Cy_GPIO_Pin_Init(EZI2C_SCL_PORT, EZI2C_SCL_PIN, &EZI2C_SCL_config); + + Cy_GPIO_Pin_Init(EZI2C_SDA_PORT, EZI2C_SDA_PIN, &EZI2C_SDA_config); + + Cy_GPIO_Pin_Init(SWO_PORT, SWO_PIN, &SWO_config); + + Cy_GPIO_Pin_Init(SWDIO_PORT, SWDIO_PIN, &SWDIO_config); + + Cy_GPIO_Pin_Init(SWDCK_PORT, SWDCK_PIN, &SWDCK_config); + + + + + + + + + + +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000..7496d6069ec --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_pins.h @@ -0,0 +1,571 @@ +/******************************************************************************* +* File Name: cycfg_pins.h +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cycfg_notices.h" +#include "cy_gpio.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define WCO_IN_PORT GPIO_PRT0 +#define WCO_IN_PIN 0U +#define WCO_IN_NUM 0U +#define WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM + #define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#define WCO_OUT_PORT GPIO_PRT0 +#define WCO_OUT_PIN 1U +#define WCO_OUT_NUM 1U +#define WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM + #define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_RED_PORT GPIO_PRT0 +#define LED_RED_PIN 3U +#define LED_RED_NUM 3U +#define LED_RED_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_RED_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_3_HSIOM + #define ioss_0_port_0_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_RED_HSIOM ioss_0_port_0_pin_3_HSIOM +#define LED_RED_IRQ ioss_interrupts_gpio_0_IRQn +#define SW2_PORT GPIO_PRT0 +#define SW2_PIN 4U +#define SW2_NUM 4U +#define SW2_DRIVEMODE CY_GPIO_DM_PULLUP +#define SW2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_4_HSIOM + #define ioss_0_port_0_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SW2_HSIOM ioss_0_port_0_pin_4_HSIOM +#define SW2_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_BLUE_PORT GPIO_PRT11 +#define LED_BLUE_PIN 1U +#define LED_BLUE_NUM 1U +#define LED_BLUE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_BLUE_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_1_HSIOM + #define ioss_0_port_11_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_BLUE_HSIOM ioss_0_port_11_pin_1_HSIOM +#define LED_BLUE_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SS0_PORT GPIO_PRT11 +#define QSPI_SS0_PIN 2U +#define QSPI_SS0_NUM 2U +#define QSPI_SS0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SS0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_2_HSIOM + #define ioss_0_port_11_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SS0_HSIOM ioss_0_port_11_pin_2_HSIOM +#define QSPI_SS0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA3_PORT GPIO_PRT11 +#define QSPI_DATA3_PIN 3U +#define QSPI_DATA3_NUM 3U +#define QSPI_DATA3_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_3_HSIOM + #define ioss_0_port_11_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA3_HSIOM ioss_0_port_11_pin_3_HSIOM +#define QSPI_DATA3_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA2_PORT GPIO_PRT11 +#define QSPI_DATA2_PIN 4U +#define QSPI_DATA2_NUM 4U +#define QSPI_DATA2_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_4_HSIOM + #define ioss_0_port_11_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA2_HSIOM ioss_0_port_11_pin_4_HSIOM +#define QSPI_DATA2_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA1_PORT GPIO_PRT11 +#define QSPI_DATA1_PIN 5U +#define QSPI_DATA1_NUM 5U +#define QSPI_DATA1_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_5_HSIOM + #define ioss_0_port_11_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA1_HSIOM ioss_0_port_11_pin_5_HSIOM +#define QSPI_DATA1_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA0_PORT GPIO_PRT11 +#define QSPI_DATA0_PIN 6U +#define QSPI_DATA0_NUM 6U +#define QSPI_DATA0_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_6_HSIOM + #define ioss_0_port_11_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA0_HSIOM ioss_0_port_11_pin_6_HSIOM +#define QSPI_DATA0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SPI_CLOCK_PORT GPIO_PRT11 +#define QSPI_SPI_CLOCK_PIN 7U +#define QSPI_SPI_CLOCK_NUM 7U +#define QSPI_SPI_CLOCK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SPI_CLOCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_7_HSIOM + #define ioss_0_port_11_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SPI_CLOCK_HSIOM ioss_0_port_11_pin_7_HSIOM +#define QSPI_SPI_CLOCK_IRQ ioss_interrupts_gpio_11_IRQn +#define LED9_PORT GPIO_PRT13 +#define LED9_PIN 7U +#define LED9_NUM 7U +#define LED9_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED9_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_7_HSIOM + #define ioss_0_port_13_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define LED9_HSIOM ioss_0_port_13_pin_7_HSIOM +#define LED9_IRQ ioss_interrupts_gpio_13_IRQn +#define ioss_0_port_14_pin_0_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_0_PIN 0U +#define ioss_0_port_14_pin_0_NUM 0U +#define ioss_0_port_14_pin_0_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_0_HSIOM + #define ioss_0_port_14_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_0_IRQ ioss_interrupts_gpio_14_IRQn +#define ioss_0_port_14_pin_1_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_1_PIN 1U +#define ioss_0_port_14_pin_1_NUM 1U +#define ioss_0_port_14_pin_1_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_1_HSIOM + #define ioss_0_port_14_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_1_IRQ ioss_interrupts_gpio_14_IRQn +#define CSD_TX_PORT GPIO_PRT1 +#define CSD_TX_PIN 0U +#define CSD_TX_NUM 0U +#define CSD_TX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_0_HSIOM + #define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_TX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CSD_TX_IRQ ioss_interrupts_gpio_1_IRQn +#define LED_GREEN_PORT GPIO_PRT1 +#define LED_GREEN_PIN 1U +#define LED_GREEN_NUM 1U +#define LED_GREEN_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_GREEN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_1_HSIOM + #define ioss_0_port_1_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_GREEN_HSIOM ioss_0_port_1_pin_1_HSIOM +#define LED_GREEN_IRQ ioss_interrupts_gpio_1_IRQn +#define LED8_PORT GPIO_PRT1 +#define LED8_PIN 5U +#define LED8_NUM 5U +#define LED8_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED8_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_5_HSIOM + #define ioss_0_port_1_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define LED8_HSIOM ioss_0_port_1_pin_5_HSIOM +#define LED8_IRQ ioss_interrupts_gpio_1_IRQn +#define SDHC0_DAT0_PORT GPIO_PRT2 +#define SDHC0_DAT0_PIN 0U +#define SDHC0_DAT0_NUM 0U +#define SDHC0_DAT0_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_0_HSIOM + #define ioss_0_port_2_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT0_HSIOM ioss_0_port_2_pin_0_HSIOM +#define SDHC0_DAT0_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT1_PORT GPIO_PRT2 +#define SDHC0_DAT1_PIN 1U +#define SDHC0_DAT1_NUM 1U +#define SDHC0_DAT1_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_1_HSIOM + #define ioss_0_port_2_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT1_HSIOM ioss_0_port_2_pin_1_HSIOM +#define SDHC0_DAT1_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT2_PORT GPIO_PRT2 +#define SDHC0_DAT2_PIN 2U +#define SDHC0_DAT2_NUM 2U +#define SDHC0_DAT2_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_2_HSIOM + #define ioss_0_port_2_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT2_HSIOM ioss_0_port_2_pin_2_HSIOM +#define SDHC0_DAT2_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT3_PORT GPIO_PRT2 +#define SDHC0_DAT3_PIN 3U +#define SDHC0_DAT3_NUM 3U +#define SDHC0_DAT3_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_3_HSIOM + #define ioss_0_port_2_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT3_HSIOM ioss_0_port_2_pin_3_HSIOM +#define SDHC0_DAT3_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CMD_PORT GPIO_PRT2 +#define SDHC0_CMD_PIN 4U +#define SDHC0_CMD_NUM 4U +#define SDHC0_CMD_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CMD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_4_HSIOM + #define ioss_0_port_2_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CMD_HSIOM ioss_0_port_2_pin_4_HSIOM +#define SDHC0_CMD_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CLK_PORT GPIO_PRT2 +#define SDHC0_CLK_PIN 5U +#define SDHC0_CLK_NUM 5U +#define SDHC0_CLK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SDHC0_CLK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_5_HSIOM + #define ioss_0_port_2_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CLK_HSIOM ioss_0_port_2_pin_5_HSIOM +#define SDHC0_CLK_IRQ ioss_interrupts_gpio_2_IRQn +#define ENABLE_WIFI_PORT GPIO_PRT2 +#define ENABLE_WIFI_PIN 6U +#define ENABLE_WIFI_NUM 6U +#define ENABLE_WIFI_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ENABLE_WIFI_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_2_pin_6_HSIOM + #define ioss_0_port_2_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define ENABLE_WIFI_HSIOM ioss_0_port_2_pin_6_HSIOM +#define ENABLE_WIFI_IRQ ioss_interrupts_gpio_2_IRQn +#define BT_UART_RX_PORT GPIO_PRT3 +#define BT_UART_RX_PIN 0U +#define BT_UART_RX_NUM 0U +#define BT_UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_0_HSIOM + #define ioss_0_port_3_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RX_HSIOM ioss_0_port_3_pin_0_HSIOM +#define BT_UART_RX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_TX_PORT GPIO_PRT3 +#define BT_UART_TX_PIN 1U +#define BT_UART_TX_NUM 1U +#define BT_UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_1_HSIOM + #define ioss_0_port_3_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_TX_HSIOM ioss_0_port_3_pin_1_HSIOM +#define BT_UART_TX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_RTS_PORT GPIO_PRT3 +#define BT_UART_RTS_PIN 2U +#define BT_UART_RTS_NUM 2U +#define BT_UART_RTS_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_RTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_2_HSIOM + #define ioss_0_port_3_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RTS_HSIOM ioss_0_port_3_pin_2_HSIOM +#define BT_UART_RTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_CTS_PORT GPIO_PRT3 +#define BT_UART_CTS_PIN 3U +#define BT_UART_CTS_NUM 3U +#define BT_UART_CTS_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_CTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_3_HSIOM + #define ioss_0_port_3_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_CTS_HSIOM ioss_0_port_3_pin_3_HSIOM +#define BT_UART_CTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_POWER_PORT GPIO_PRT3 +#define BT_POWER_PIN 4U +#define BT_POWER_NUM 4U +#define BT_POWER_DRIVEMODE CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF +#define BT_POWER_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_4_HSIOM + #define ioss_0_port_3_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_POWER_HSIOM ioss_0_port_3_pin_4_HSIOM +#define BT_POWER_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_HOST_WAKE_PORT GPIO_PRT3 +#define BT_HOST_WAKE_PIN 5U +#define BT_HOST_WAKE_NUM 5U +#define BT_HOST_WAKE_DRIVEMODE CY_GPIO_DM_ANALOG +#define BT_HOST_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_3_pin_5_HSIOM + #define ioss_0_port_3_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_HOST_WAKE_HSIOM ioss_0_port_3_pin_5_HSIOM +#define BT_HOST_WAKE_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_DEVICE_WAKE_PORT GPIO_PRT4 +#define BT_DEVICE_WAKE_PIN 0U +#define BT_DEVICE_WAKE_NUM 0U +#define BT_DEVICE_WAKE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_DEVICE_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_4_pin_0_HSIOM + #define ioss_0_port_4_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_DEVICE_WAKE_HSIOM ioss_0_port_4_pin_0_HSIOM +#define BT_DEVICE_WAKE_IRQ ioss_interrupts_gpio_4_IRQn +#define UART_RX_PORT GPIO_PRT5 +#define UART_RX_PIN 0U +#define UART_RX_NUM 0U +#define UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_0_HSIOM + #define ioss_0_port_5_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_RX_HSIOM ioss_0_port_5_pin_0_HSIOM +#define UART_RX_IRQ ioss_interrupts_gpio_5_IRQn +#define UART_TX_PORT GPIO_PRT5 +#define UART_TX_PIN 1U +#define UART_TX_NUM 1U +#define UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_1_HSIOM + #define ioss_0_port_5_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_TX_HSIOM ioss_0_port_5_pin_1_HSIOM +#define UART_TX_IRQ ioss_interrupts_gpio_5_IRQn +#define EZI2C_SCL_PORT GPIO_PRT6 +#define EZI2C_SCL_PIN 0U +#define EZI2C_SCL_NUM 0U +#define EZI2C_SCL_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SCL_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_0_HSIOM + #define ioss_0_port_6_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SCL_HSIOM ioss_0_port_6_pin_0_HSIOM +#define EZI2C_SCL_IRQ ioss_interrupts_gpio_6_IRQn +#define EZI2C_SDA_PORT GPIO_PRT6 +#define EZI2C_SDA_PIN 1U +#define EZI2C_SDA_NUM 1U +#define EZI2C_SDA_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SDA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_1_HSIOM + #define ioss_0_port_6_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SDA_HSIOM ioss_0_port_6_pin_1_HSIOM +#define EZI2C_SDA_IRQ ioss_interrupts_gpio_6_IRQn +#define SWO_PORT GPIO_PRT6 +#define SWO_PIN 4U +#define SWO_NUM 4U +#define SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM + #define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define SWO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDIO_PORT GPIO_PRT6 +#define SWDIO_PIN 6U +#define SWDIO_NUM 6U +#define SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM + #define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDCK_PORT GPIO_PRT6 +#define SWDCK_PIN 7U +#define SWDCK_NUM 7U +#define SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM + #define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#define CINA_PORT GPIO_PRT7 +#define CINA_PIN 1U +#define CINA_NUM 1U +#define CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM + #define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CINA_IRQ ioss_interrupts_gpio_7_IRQn +#define CINB_PORT GPIO_PRT7 +#define CINB_PIN 2U +#define CINB_NUM 2U +#define CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM + #define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CINB_IRQ ioss_interrupts_gpio_7_IRQn +#define CMOD_PORT GPIO_PRT7 +#define CMOD_PIN 7U +#define CMOD_NUM 7U +#define CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM + #define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#define CSD_BTN0_PORT GPIO_PRT8 +#define CSD_BTN0_PIN 1U +#define CSD_BTN0_NUM 1U +#define CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_1_HSIOM + #define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_BTN1_PORT GPIO_PRT8 +#define CSD_BTN1_PIN 2U +#define CSD_BTN1_NUM 2U +#define CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_2_HSIOM + #define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD0_PORT GPIO_PRT8 +#define CSD_SLD0_PIN 3U +#define CSD_SLD0_NUM 3U +#define CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_3_HSIOM + #define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD1_PORT GPIO_PRT8 +#define CSD_SLD1_PIN 4U +#define CSD_SLD1_NUM 4U +#define CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_4_HSIOM + #define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD2_PORT GPIO_PRT8 +#define CSD_SLD2_PIN 5U +#define CSD_SLD2_NUM 5U +#define CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_5_HSIOM + #define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD3_PORT GPIO_PRT8 +#define CSD_SLD3_PIN 6U +#define CSD_SLD3_NUM 6U +#define CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_6_HSIOM + #define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD4_PORT GPIO_PRT8 +#define CSD_SLD4_PIN 7U +#define CSD_SLD4_NUM 7U +#define CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_7_HSIOM + #define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn + +extern const cy_stc_gpio_pin_config_t WCO_IN_config; +extern const cy_stc_gpio_pin_config_t WCO_OUT_config; +extern const cy_stc_gpio_pin_config_t LED_RED_config; +extern const cy_stc_gpio_pin_config_t SW2_config; +extern const cy_stc_gpio_pin_config_t LED_BLUE_config; +extern const cy_stc_gpio_pin_config_t QSPI_SS0_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA3_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA2_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA1_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA0_config; +extern const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config; +extern const cy_stc_gpio_pin_config_t LED9_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config; +extern const cy_stc_gpio_pin_config_t CSD_TX_config; +extern const cy_stc_gpio_pin_config_t LED_GREEN_config; +extern const cy_stc_gpio_pin_config_t LED8_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT0_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT1_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT2_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT3_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CMD_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CLK_config; +extern const cy_stc_gpio_pin_config_t ENABLE_WIFI_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_TX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RTS_config; +extern const cy_stc_gpio_pin_config_t BT_UART_CTS_config; +extern const cy_stc_gpio_pin_config_t BT_POWER_config; +extern const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config; +extern const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config; +extern const cy_stc_gpio_pin_config_t UART_RX_config; +extern const cy_stc_gpio_pin_config_t UART_TX_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SCL_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SDA_config; +extern const cy_stc_gpio_pin_config_t SWO_config; +extern const cy_stc_gpio_pin_config_t SWDIO_config; +extern const cy_stc_gpio_pin_config_t SWDCK_config; +extern const cy_stc_gpio_pin_config_t CINA_config; +extern const cy_stc_gpio_pin_config_t CINB_config; +extern const cy_stc_gpio_pin_config_t CMOD_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN0_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD0_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD2_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD3_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD4_config; + +void init_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PINS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.c new file mode 100644 index 00000000000..306a16a389b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.c @@ -0,0 +1,557 @@ +/******************************************************************************* +* File Name: cycfg_platform.c +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_platform.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF1_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_CLKHF2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 50UL +#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF3_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_PLL0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_CLKTIMER_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBAC_SUPPLY CY_CFG_PWR_VBAC_SUPPLY_VDD +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_1_1V +#define CY_CFG_PWR_USING_ULP 0 + +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = +{ + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 4U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; +static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig = +{ + .feedbackDiv = 30, + .referenceDiv = 1, + .outputDiv = 5, + .lfMode = false, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO, +}; + +__WEAK void cycfg_ClockStartupError(uint32_t error) +{ + (void)error; /* Suppress the compiler warning */ + while(1); +} +__STATIC_INLINE void Cy_SysClk_ClkAltSysTickInit() +{ + Cy_SysTick_SetClockSource(CY_SYSTICK_CLOCK_SOURCE_CLK_LF); +} +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_ClkHf1Init() +{ + Cy_SysClk_ClkHfSetSource(1U, CY_CFG_SYSCLK_CLKHF1_CLKPATH); + Cy_SysClk_ClkHfSetDivider(1U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(1U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf2Init() +{ + Cy_SysClk_ClkHfSetSource(2U, CY_CFG_SYSCLK_CLKHF2_CLKPATH); + Cy_SysClk_ClkHfSetDivider(2U, CY_SYSCLK_CLKHF_DIVIDE_BY_2); + Cy_SysClk_ClkHfEnable(2U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf3Init() +{ + Cy_SysClk_ClkHfSetSource(3U, CY_CFG_SYSCLK_CLKHF3_CLKPATH); + Cy_SysClk_ClkHfSetDivider(3U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(3U); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_Pll0Init() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllManualConfigure(1U, &srss_0_clock_0_pll_0_pllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllEnable(1U, 10000u)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_ClkTimerInit() +{ + Cy_SysClk_ClkTimerDisable(); + Cy_SysClk_ClkTimerSetSource(CY_SYSCLK_CLKTIMER_IN_IMO); + Cy_SysClk_ClkTimerSetDivider(0U); + Cy_SysClk_ClkTimerEnable(); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} + + +void init_cycfg_platform(void) +{ + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); + #if (CY_CFG_PWR_VBAC_SUPPLY == CY_CFG_PWR_VBAC_SUPPLY_VDD) + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */) + { + Cy_SysLib_ResetBackupDomain(); + Cy_SysClk_IloDisable(); + Cy_SysClk_IloInit(); + } + #endif + #ifdef CY_CFG_PWR_ENABLED + /* Configure power mode */ + #if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_CFG_PWR_LDO_VOLTAGE); + #else + Cy_SysPm_BuckEnable(CY_CFG_PWR_BUCK_VOLTAGE); + #endif + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); + #if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); + #else + Cy_SysPm_PmicDisableOutput(); + #endif + #endif + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH1); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_FllDisable(); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); + #ifdef CY_IP_MXBLESS + (void)Cy_BLE_EcoReset(); + #endif + + #ifdef CY_CFG_SYSCLK_PLL1_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH2); + #endif + + #ifdef CY_CFG_SYSCLK_PLL2_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH3); + #endif + + #ifdef CY_CFG_SYSCLK_PLL3_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH4); + #endif + + #ifdef CY_CFG_SYSCLK_PLL4_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH5); + #endif + + #ifdef CY_CFG_SYSCLK_PLL5_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH6); + #endif + + #ifdef CY_CFG_SYSCLK_PLL6_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH7); + #endif + + #ifdef CY_CFG_SYSCLK_PLL7_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH8); + #endif + + #ifdef CY_CFG_SYSCLK_PLL8_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH9); + #endif + + #ifdef CY_CFG_SYSCLK_PLL9_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH10); + #endif + + #ifdef CY_CFG_SYSCLK_PLL10_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH11); + #endif + + #ifdef CY_CFG_SYSCLK_PLL11_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH12); + #endif + + #ifdef CY_CFG_SYSCLK_PLL12_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH13); + #endif + + #ifdef CY_CFG_SYSCLK_PLL13_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH14); + #endif + + #ifdef CY_CFG_SYSCLK_PLL14_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH15); + #endif + + /* Enable all source clocks */ + #ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); + #endif + + #ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + Cy_SysClk_AltHfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); + #endif + + /* Configure CPU clock dividers */ + #ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); + #endif + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); + #else + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure Path Clocks */ + #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); + #endif + + /* Configure and enable FLL */ + #ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); + #endif + + Cy_SysClk_ClkHf0Init(); + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure and enable PLLs */ + #ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); + #endif + + /* Configure HF clocks */ + #ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); + #endif + + /* Configure miscellaneous clocks */ + #ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); + #endif + + /* Configure default enabled clocks */ + #ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); + #else + Cy_SysClk_IloDisable(); + #endif + + #ifndef CY_CFG_SYSCLK_IMO_ENABLED + #error the IMO must be enabled for proper chip operation + #endif + + /* Set accurate flash wait states */ + #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); + #endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.h new file mode 100644 index 00000000000..76dfbef7bc4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_platform.h @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_platform.h +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PLATFORM_H) +#define CYCFG_PLATFORM_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_systick.h" +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +void init_cycfg_platform(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PLATFORM_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000..8a1e6551574 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.c @@ -0,0 +1,51 @@ +/******************************************************************************* +* File Name: cycfg_routing.c +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_routing.h" + +#include "cy_trigmux.h" + +#include "stdbool.h" + +#include "cy_device_headers.h" + +void init_cycfg_routing(void) +{ + Cy_TrigMux_Connect(TRIG0_IN_TR_GROUP14_OUTPUT3, TRIG0_OUT_CPUSS_DW0_TR_IN0, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG0_IN_TR_GROUP14_OUTPUT4, TRIG0_OUT_CPUSS_DW0_TR_IN1, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB0, TRIG14_OUT_TR_GROUP1_INPUT44, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB1, TRIG14_OUT_TR_GROUP0_INPUT47, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB3, TRIG14_OUT_TR_GROUP0_INPUT46, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB7, TRIG14_OUT_TR_GROUP1_INPUT43, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG1_IN_TR_GROUP14_OUTPUT0, TRIG1_OUT_CPUSS_DW1_TR_IN3, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG1_IN_TR_GROUP14_OUTPUT1, TRIG1_OUT_CPUSS_DW1_TR_IN1, false, TRIGGER_TYPE_LEVEL); + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000..9d9b019eae8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/GeneratedSource/cycfg_routing.h @@ -0,0 +1,89 @@ +/******************************************************************************* +* File Name: cycfg_routing.h +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +void init_cycfg_routing(void); +#define init_cycfg_connectivity() init_cycfg_routing() +#define ioss_0_port_11_pin_1_HSIOM P11_1_TCPWM1_LINE_COMPL1 +#define ioss_0_port_11_pin_2_HSIOM P11_2_SMIF_SPI_SELECT0 +#define ioss_0_port_11_pin_3_HSIOM P11_3_SMIF_SPI_DATA3 +#define ioss_0_port_11_pin_4_HSIOM P11_4_SMIF_SPI_DATA2 +#define ioss_0_port_11_pin_5_HSIOM P11_5_SMIF_SPI_DATA1 +#define ioss_0_port_11_pin_6_HSIOM P11_6_SMIF_SPI_DATA0 +#define ioss_0_port_11_pin_7_HSIOM P11_7_SMIF_SPI_CLK +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_2_pin_0_HSIOM P2_0_DSI_DSI +#define ioss_0_port_2_pin_1_HSIOM P2_1_DSI_DSI +#define ioss_0_port_2_pin_2_HSIOM P2_2_DSI_DSI +#define ioss_0_port_2_pin_3_HSIOM P2_3_DSI_DSI +#define ioss_0_port_2_pin_4_HSIOM P2_4_DSI_DSI +#define ioss_0_port_2_pin_5_HSIOM P2_5_DSI_GPIO +#define ioss_0_port_3_pin_0_HSIOM P3_0_SCB2_UART_RX +#define ioss_0_port_3_pin_1_HSIOM P3_1_SCB2_UART_TX +#define ioss_0_port_3_pin_2_HSIOM P3_2_SCB2_UART_RTS +#define ioss_0_port_3_pin_3_HSIOM P3_3_SCB2_UART_CTS +#define ioss_0_port_5_pin_0_HSIOM P5_0_SCB5_UART_RX +#define ioss_0_port_5_pin_1_HSIOM P5_1_SCB5_UART_TX +#define ioss_0_port_6_pin_0_HSIOM P6_0_SCB3_I2C_SCL +#define ioss_0_port_6_pin_1_HSIOM P6_1_SCB3_I2C_SDA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXA + +#define cpuss_0_dw0_0_chan_0_tr_in_0_TRIGGER_OUT TRIG0_OUT_CPUSS_DW0_TR_IN0 +#define cpuss_0_dw0_0_chan_1_tr_in_0_TRIGGER_OUT TRIG0_OUT_CPUSS_DW0_TR_IN1 +#define cpuss_0_dw1_0_chan_1_tr_in_0_TRIGGER_OUT TRIG1_OUT_CPUSS_DW1_TR_IN1 +#define cpuss_0_dw1_0_chan_3_tr_in_0_TRIGGER_OUT TRIG1_OUT_CPUSS_DW1_TR_IN3 +#define udb_0_out_p_116_TRIGGER_IN_0 TRIG14_IN_UDB_TR_UDB0 +#define udb_0_out_p_116_TRIGGER_IN_1 TRIG1_IN_TR_GROUP14_OUTPUT1 +#define udb_0_out_p_117_TRIGGER_IN_0 TRIG0_IN_TR_GROUP14_OUTPUT4 +#define udb_0_out_p_117_TRIGGER_IN_1 TRIG14_IN_UDB_TR_UDB1 +#define udb_0_out_p_119_TRIGGER_IN_0 TRIG0_IN_TR_GROUP14_OUTPUT3 +#define udb_0_out_p_119_TRIGGER_IN_1 TRIG14_IN_UDB_TR_UDB3 +#define udb_0_out_p_123_TRIGGER_IN_0 TRIG14_IN_UDB_TR_UDB7 +#define udb_0_out_p_123_TRIGGER_IN_1 TRIG1_IN_TR_GROUP14_OUTPUT0 + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_ROUTING_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralNames.h new file mode 100644 index 00000000000..cbceb3a24bb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralNames.h @@ -0,0 +1,113 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)SCB0_BASE, + UART_1 = (int)SCB1_BASE, + UART_2 = (int)SCB2_BASE, + UART_3 = (int)SCB3_BASE, + UART_4 = (int)SCB4_BASE, + UART_5 = (int)SCB5_BASE, + UART_6 = (int)SCB6_BASE, + UART_7 = (int)SCB7_BASE, +} UARTName; + + +typedef enum { + SPI_0 = (int)SCB0_BASE, + SPI_1 = (int)SCB1_BASE, + SPI_2 = (int)SCB2_BASE, + SPI_3 = (int)SCB3_BASE, + SPI_4 = (int)SCB4_BASE, + SPI_5 = (int)SCB5_BASE, + SPI_6 = (int)SCB6_BASE, + SPI_7 = (int)SCB7_BASE, + SPI_8 = (int)SCB8_BASE, +} SPIName; + +typedef enum { + I2C_0 = (int)SCB0_BASE, + I2C_1 = (int)SCB1_BASE, + I2C_2 = (int)SCB2_BASE, + I2C_3 = (int)SCB3_BASE, + I2C_4 = (int)SCB4_BASE, + I2C_5 = (int)SCB5_BASE, + I2C_6 = (int)SCB6_BASE, + I2C_7 = (int)SCB7_BASE, + I2C_8 = (int)SCB8_BASE, +} I2CName; + +typedef enum { + PWM_32b_0 = TCPWM0_BASE, + PWM_32b_1, + PWM_32b_2, + PWM_32b_3, + PWM_32b_4, + PWM_32b_5, + PWM_32b_6, + PWM_32b_7, + PWM_16b_0 = TCPWM1_BASE, + PWM_16b_1, + PWM_16b_2, + PWM_16b_3, + PWM_16b_4, + PWM_16b_5, + PWM_16b_6, + PWM_16b_7, + PWM_16b_8, + PWM_16b_9, + PWM_16b_10, + PWM_16b_11, + PWM_16b_12, + PWM_16b_13, + PWM_16b_14, + PWM_16b_15, + PWM_16b_16, + PWM_16b_17, + PWM_16b_18, + PWM_16b_19, + PWM_16b_20, + PWM_16b_21, + PWM_16b_22, + PWM_16b_23, +} PWMName; + +typedef enum { + ADC_0 = (int)SAR_BASE, +} ADCName; + +typedef enum { + DAC_0 = (int)CTDAC0_BASE, +} DACName; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralPins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralPins.c new file mode 100644 index 00000000000..a9b788872d8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PeripheralPins.c @@ -0,0 +1,436 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PeripheralNames.h" +#include "PeripheralPins.h" +#include "pinmap.h" + +#if DEVICE_SERIAL +//*** SERIAL *** +const PinMap PinMap_UART_RX[] = { + {P0_2, UART_0, CY_PIN_IN_FUNCTION( P0_2_SCB0_UART_RX, PCLK_SCB0_CLOCK)}, + {P1_0, UART_7, CY_PIN_IN_FUNCTION( P1_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P2_0, UART_1, CY_PIN_IN_FUNCTION( P2_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P3_0, UART_2, CY_PIN_IN_FUNCTION( P3_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P4_0, UART_7, CY_PIN_IN_FUNCTION( P4_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P5_0, UART_5, CY_PIN_IN_FUNCTION( P5_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P6_0, UART_3, CY_PIN_IN_FUNCTION( P6_0_SCB3_UART_RX, PCLK_SCB3_CLOCK)}, + {P6_4, UART_6, CY_PIN_IN_FUNCTION( P6_4_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P7_0, UART_4, CY_PIN_IN_FUNCTION( P7_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_0, UART_4, CY_PIN_IN_FUNCTION( P8_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P9_0, UART_2, CY_PIN_IN_FUNCTION( P9_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P10_0, UART_1, CY_PIN_IN_FUNCTION( P10_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P11_0, UART_5, CY_PIN_IN_FUNCTION( P11_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P12_0, UART_6, CY_PIN_IN_FUNCTION( P12_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_0, UART_6, CY_PIN_IN_FUNCTION( P13_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_TX[] = { + {P0_3, UART_0, CY_PIN_OUT_FUNCTION( P0_3_SCB0_UART_TX, PCLK_SCB0_CLOCK)}, + {P1_1, UART_7, CY_PIN_OUT_FUNCTION( P1_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P2_1, UART_1, CY_PIN_OUT_FUNCTION( P2_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P3_1, UART_2, CY_PIN_OUT_FUNCTION( P3_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P4_1, UART_7, CY_PIN_OUT_FUNCTION( P4_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P5_1, UART_5, CY_PIN_OUT_FUNCTION( P5_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P6_1, UART_3, CY_PIN_OUT_FUNCTION( P6_1_SCB3_UART_TX, PCLK_SCB3_CLOCK)}, + {P6_5, UART_6, CY_PIN_OUT_FUNCTION( P6_5_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P7_1, UART_4, CY_PIN_OUT_FUNCTION( P7_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_1, UART_4, CY_PIN_OUT_FUNCTION( P8_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P9_1, UART_2, CY_PIN_OUT_FUNCTION( P9_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P10_1, UART_1, CY_PIN_OUT_FUNCTION( P10_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P11_1, UART_5, CY_PIN_OUT_FUNCTION( P11_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P12_1, UART_6, CY_PIN_OUT_FUNCTION( P12_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_1, UART_6, CY_PIN_OUT_FUNCTION( P13_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_RTS[] = { + {P0_4, UART_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_UART_RTS, PCLK_SCB0_CLOCK)}, + {P1_2, UART_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_UART_RTS, PCLK_SCB7_CLOCK)}, + {P2_2, UART_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P3_2, UART_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P5_2, UART_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P6_2, UART_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_UART_RTS, PCLK_SCB3_CLOCK)}, + {P6_6, UART_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P7_2, UART_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_2, UART_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P9_2, UART_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P10_2, UART_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P11_2, UART_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P12_2, UART_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_CTS[] = { + {P0_5, UART_0, CY_PIN_IN_FUNCTION( P0_5_SCB0_UART_CTS, PCLK_SCB0_CLOCK)}, + {P1_3, UART_7, CY_PIN_IN_FUNCTION( P1_3_SCB7_UART_CTS, PCLK_SCB7_CLOCK)}, + {P2_3, UART_1, CY_PIN_IN_FUNCTION( P2_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P3_3, UART_2, CY_PIN_IN_FUNCTION( P3_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P5_3, UART_5, CY_PIN_IN_FUNCTION( P5_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P6_3, UART_3, CY_PIN_IN_FUNCTION( P6_3_SCB3_UART_CTS, PCLK_SCB3_CLOCK)}, + {P6_7, UART_6, CY_PIN_IN_FUNCTION( P6_7_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P7_3, UART_4, CY_PIN_IN_FUNCTION( P7_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_3, UART_4, CY_PIN_IN_FUNCTION( P8_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P9_3, UART_2, CY_PIN_IN_FUNCTION( P9_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P10_3, UART_1, CY_PIN_IN_FUNCTION( P10_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P11_3, UART_5, CY_PIN_IN_FUNCTION( P11_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P12_3, UART_6, CY_PIN_IN_FUNCTION( P12_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SERIAL + + +#if DEVICE_I2C +//*** I2C *** +const PinMap PinMap_I2C_SCL[] = { + {P0_2, I2C_0, CY_PIN_OD_FUNCTION( P0_2_SCB0_I2C_SCL, PCLK_SCB0_CLOCK)}, + {P1_0, I2C_7, CY_PIN_OD_FUNCTION( P1_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P2_0, I2C_1, CY_PIN_OD_FUNCTION( P2_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P3_0, I2C_2, CY_PIN_OD_FUNCTION( P3_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P4_0, I2C_7, CY_PIN_OD_FUNCTION( P4_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P5_0, I2C_5, CY_PIN_OD_FUNCTION( P5_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P6_0, I2C_3, CY_PIN_OD_FUNCTION( P6_0_SCB3_I2C_SCL, PCLK_SCB3_CLOCK)}, + {P6_4, I2C_6, CY_PIN_OD_FUNCTION( P6_4_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P7_0, I2C_4, CY_PIN_OD_FUNCTION( P7_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_0, I2C_4, CY_PIN_OD_FUNCTION( P8_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P9_0, I2C_2, CY_PIN_OD_FUNCTION( P9_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P10_0, I2C_1, CY_PIN_OD_FUNCTION( P10_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P11_0, I2C_5, CY_PIN_OD_FUNCTION( P11_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P12_0, I2C_6, CY_PIN_OD_FUNCTION( P12_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_0, I2C_6, CY_PIN_OD_FUNCTION( P13_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_I2C_SDA[] = { + {P0_3, I2C_0, CY_PIN_OD_FUNCTION( P0_3_SCB0_I2C_SDA, PCLK_SCB0_CLOCK)}, + {P1_1, I2C_7, CY_PIN_OD_FUNCTION( P1_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P2_1, I2C_1, CY_PIN_OD_FUNCTION( P2_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P3_1, I2C_2, CY_PIN_OD_FUNCTION( P3_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P4_1, I2C_7, CY_PIN_OD_FUNCTION( P4_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P5_1, I2C_5, CY_PIN_OD_FUNCTION( P5_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P6_1, I2C_3, CY_PIN_OD_FUNCTION( P6_1_SCB3_I2C_SDA, PCLK_SCB3_CLOCK)}, + {P6_5, I2C_6, CY_PIN_OD_FUNCTION( P6_5_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P7_1, I2C_4, CY_PIN_OD_FUNCTION( P7_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_1, I2C_4, CY_PIN_OD_FUNCTION( P8_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P9_1, I2C_2, CY_PIN_OD_FUNCTION( P9_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P10_1, I2C_1, CY_PIN_OD_FUNCTION( P10_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P11_1, I2C_5, CY_PIN_OD_FUNCTION( P11_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P12_1, I2C_6, CY_PIN_OD_FUNCTION( P12_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_1, I2C_6, CY_PIN_OD_FUNCTION( P13_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_I2C + +#if DEVICE_SPI +//*** SPI *** +const PinMap PinMap_SPI_MOSI[] = { + {P0_2, SPI_0, CY_PIN_OUT_FUNCTION( P0_2_SCB0_SPI_MOSI, PCLK_SCB0_CLOCK)}, + {P1_0, SPI_7, CY_PIN_OUT_FUNCTION( P1_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P2_0, SPI_1, CY_PIN_OUT_FUNCTION( P2_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P3_0, SPI_2, CY_PIN_OUT_FUNCTION( P3_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P4_0, SPI_7, CY_PIN_OUT_FUNCTION( P4_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P5_0, SPI_5, CY_PIN_OUT_FUNCTION( P5_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P6_0, SPI_3, CY_PIN_OUT_FUNCTION( P6_0_SCB3_SPI_MOSI, PCLK_SCB3_CLOCK)}, + {P6_4, SPI_6, CY_PIN_OUT_FUNCTION( P6_4_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P7_0, SPI_4, CY_PIN_OUT_FUNCTION( P7_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P8_0, SPI_4, CY_PIN_OUT_FUNCTION( P8_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P9_0, SPI_2, CY_PIN_OUT_FUNCTION( P9_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P10_0, SPI_1, CY_PIN_OUT_FUNCTION( P10_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P11_0, SPI_5, CY_PIN_OUT_FUNCTION( P11_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P12_0, SPI_6, CY_PIN_OUT_FUNCTION( P12_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P13_0, SPI_6, CY_PIN_OUT_FUNCTION( P13_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_MISO[] = { + {P0_3, SPI_0, CY_PIN_IN_FUNCTION( P0_3_SCB0_SPI_MISO, PCLK_SCB0_CLOCK)}, + {P1_1, SPI_7, CY_PIN_IN_FUNCTION( P1_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P2_1, SPI_1, CY_PIN_IN_FUNCTION( P2_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P3_1, SPI_2, CY_PIN_IN_FUNCTION( P3_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P4_1, SPI_7, CY_PIN_IN_FUNCTION( P4_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P5_1, SPI_5, CY_PIN_IN_FUNCTION( P5_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P6_1, SPI_3, CY_PIN_IN_FUNCTION( P6_1_SCB3_SPI_MISO, PCLK_SCB3_CLOCK)}, + {P6_5, SPI_6, CY_PIN_IN_FUNCTION( P6_5_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P7_1, SPI_4, CY_PIN_IN_FUNCTION( P7_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P8_1, SPI_4, CY_PIN_IN_FUNCTION( P8_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P9_1, SPI_2, CY_PIN_IN_FUNCTION( P9_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P10_1, SPI_1, CY_PIN_IN_FUNCTION( P10_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P11_1, SPI_5, CY_PIN_IN_FUNCTION( P11_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P12_1, SPI_6, CY_PIN_IN_FUNCTION( P12_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P13_1, SPI_6, CY_PIN_IN_FUNCTION( P13_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SCLK[] = { + {P0_4, SPI_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_SPI_CLK, PCLK_SCB0_CLOCK)}, + {P1_2, SPI_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_SPI_CLK, PCLK_SCB7_CLOCK)}, + {P2_2, SPI_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P3_2, SPI_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P5_2, SPI_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P6_2, SPI_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_SPI_CLK, PCLK_SCB3_CLOCK)}, + {P6_6, SPI_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P7_2, SPI_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P8_2, SPI_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P9_2, SPI_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P10_2, SPI_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P11_2, SPI_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P12_2, SPI_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SSEL[] = { + {P0_5, SPI_0, CY_PIN_OUT_FUNCTION( P0_5_SCB0_SPI_SELECT0, PCLK_SCB0_CLOCK)}, + {P1_3, SPI_7, CY_PIN_OUT_FUNCTION( P1_3_SCB7_SPI_SELECT0, PCLK_SCB7_CLOCK)}, + {P2_3, SPI_1, CY_PIN_OUT_FUNCTION( P2_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P3_3, SPI_2, CY_PIN_OUT_FUNCTION( P3_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P5_3, SPI_5, CY_PIN_OUT_FUNCTION( P5_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P6_3, SPI_3, CY_PIN_OUT_FUNCTION( P6_3_SCB3_SPI_SELECT0, PCLK_SCB3_CLOCK)}, + {P6_7, SPI_6, CY_PIN_OUT_FUNCTION( P6_7_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P7_3, SPI_4, CY_PIN_OUT_FUNCTION( P7_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P8_3, SPI_4, CY_PIN_OUT_FUNCTION( P8_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P9_3, SPI_2, CY_PIN_OUT_FUNCTION( P9_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P10_3, SPI_1, CY_PIN_OUT_FUNCTION( P10_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P11_3, SPI_5, CY_PIN_OUT_FUNCTION( P11_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P12_3, SPI_6, CY_PIN_OUT_FUNCTION( P12_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SPI + +#if DEVICE_PWMOUT +//*** PWM *** +const PinMap PinMap_PWM_OUT[] = { + // 16-bit PWM outputs + {P0_0, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P0_2, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P0_4, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P1_0, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P1_2, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_2_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P1_4, PWM_16b_13, CY_PIN_OUT_FUNCTION(P1_4_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P2_0, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_0_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P2_2, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_2_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P2_4, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_4_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P2_6, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_6_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P3_0, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_0_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P3_2, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_2_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P3_4, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_4_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P4_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P5_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P5_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P5_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P5_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P6_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P6_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P6_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P6_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + {P7_0, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_0_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P7_2, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_2_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P7_4, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_4_TCPWM1_LINE14, PCLK_TCPWM1_CLOCKS14)}, + {P7_6, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_6_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P8_0, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_0_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P8_2, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_2_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P8_4, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_4_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P8_6, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_6_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P9_0, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_0_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P9_2, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_2_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P9_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P9_6, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_6_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P10_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P10_2, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_2_TCPWM1_LINE23, PCLK_TCPWM1_CLOCKS23)}, + {P10_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P10_6, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_6_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_0, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P11_2, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_4, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P12_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P12_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P12_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P12_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P13_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P13_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P13_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P13_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + // 16-bit PWM inverted outputs + {P0_1, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P0_3, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P0_5, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P1_1, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P1_3, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_3_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P1_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P1_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P2_1, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_1_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P2_3, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_3_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P2_5, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_5_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P2_7, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_7_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P3_1, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_1_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P3_3, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_3_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P3_5, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_5_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P4_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P5_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P5_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P5_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P5_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P6_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P6_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P6_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P6_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + {P7_1, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_1_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P7_3, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_3_TCPWM1_LINE_COMPL13, PCLK_TCPWM1_CLOCKS13)}, + {P7_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P7_7, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_7_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P8_1, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_1_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P8_3, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_3_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P8_5, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_5_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P8_7, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_7_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P9_1, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_1_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P9_3, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_3_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P9_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P9_7, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_7_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P10_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P10_3, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_3_TCPWM1_LINE_COMPL23, PCLK_TCPWM1_CLOCKS23)}, + {P10_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P10_7, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_7_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_1, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P11_3, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_5, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P12_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P12_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P12_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P12_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P13_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P13_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P13_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P13_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + // 32-bit PWM outputs + {PWM32(P0_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_0), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_2), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_2_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_4), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_4_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_0), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_0_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_2), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_2_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_4), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_4_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_0), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_0_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_4), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_4_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_6), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_6_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_0), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_2), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_4), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + // 32-bit PWM inverted outputs + {PWM32(P0_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_1), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_3), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_3_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_5), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_5_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_1), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_1_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_3), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_3_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_5), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_5_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_1), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_1_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_5), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_5_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_7), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_7_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_1), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_3), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_5), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {NC, NC, 0} +}; +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +const PinMap PinMap_ADC[] = { + {P10_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_3, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_7, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN + +#if DEVICE_ANALOGOUT +const PinMap PinMap_DAC[] = { + {P9_6, DAC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_CTDAC)}, + {P10_5, DAC_0, CY_PIN_FUNCTION(HSIOM_SEL_AMUXA, PCLK_PASS_CLOCK_CTDAC, AnalogMode, 0)}, // CTDAC connects to the P10_5 pin through the AMUXA bus + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PinNames.h new file mode 100644 index 00000000000..3f0d8b9d15c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/PinNames.h @@ -0,0 +1,275 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" +#include "PortNames.h" + +// PinName[15-0] = Port[15-8] + Pin[7-0] +typedef enum { + P0_0 = (Port0 << 8) + 0x00, + P0_1 = (Port0 << 8) + 0x01, + P0_2 = (Port0 << 8) + 0x02, + P0_3 = (Port0 << 8) + 0x03, + P0_4 = (Port0 << 8) + 0x04, + P0_5 = (Port0 << 8) + 0x05, + P0_6 = (Port0 << 8) + 0x06, + P0_7 = (Port0 << 8) + 0x07, + + P1_0 = (Port1 << 8) + 0x00, + P1_1 = (Port1 << 8) + 0x01, + P1_2 = (Port1 << 8) + 0x02, + P1_3 = (Port1 << 8) + 0x03, + P1_4 = (Port1 << 8) + 0x04, + P1_5 = (Port1 << 8) + 0x05, + P1_6 = (Port1 << 8) + 0x06, + P1_7 = (Port1 << 8) + 0x07, + + P2_0 = (Port2 << 8) + 0x00, + P2_1 = (Port2 << 8) + 0x01, + P2_2 = (Port2 << 8) + 0x02, + P2_3 = (Port2 << 8) + 0x03, + P2_4 = (Port2 << 8) + 0x04, + P2_5 = (Port2 << 8) + 0x05, + P2_6 = (Port2 << 8) + 0x06, + P2_7 = (Port2 << 8) + 0x07, + + P3_0 = (Port3 << 8) + 0x00, + P3_1 = (Port3 << 8) + 0x01, + P3_2 = (Port3 << 8) + 0x02, + P3_3 = (Port3 << 8) + 0x03, + P3_4 = (Port3 << 8) + 0x04, + P3_5 = (Port3 << 8) + 0x05, + P3_6 = (Port3 << 8) + 0x06, + P3_7 = (Port3 << 8) + 0x07, + + P4_0 = (Port4 << 8) + 0x00, + P4_1 = (Port4 << 8) + 0x01, + P4_2 = (Port4 << 8) + 0x02, + P4_3 = (Port4 << 8) + 0x03, + P4_4 = (Port4 << 8) + 0x04, + P4_5 = (Port4 << 8) + 0x05, + P4_6 = (Port4 << 8) + 0x06, + P4_7 = (Port4 << 8) + 0x07, + + P5_0 = (Port5 << 8) + 0x00, + P5_1 = (Port5 << 8) + 0x01, + P5_2 = (Port5 << 8) + 0x02, + P5_3 = (Port5 << 8) + 0x03, + P5_4 = (Port5 << 8) + 0x04, + P5_5 = (Port5 << 8) + 0x05, + P5_6 = (Port5 << 8) + 0x06, + P5_7 = (Port5 << 8) + 0x07, + + P6_0 = (Port6 << 8) + 0x00, + P6_1 = (Port6 << 8) + 0x01, + P6_2 = (Port6 << 8) + 0x02, + P6_3 = (Port6 << 8) + 0x03, + P6_4 = (Port6 << 8) + 0x04, + P6_5 = (Port6 << 8) + 0x05, + P6_6 = (Port6 << 8) + 0x06, + P6_7 = (Port6 << 8) + 0x07, + + P7_0 = (Port7 << 8) + 0x00, + P7_1 = (Port7 << 8) + 0x01, + P7_2 = (Port7 << 8) + 0x02, + P7_3 = (Port7 << 8) + 0x03, + P7_4 = (Port7 << 8) + 0x04, + P7_5 = (Port7 << 8) + 0x05, + P7_6 = (Port7 << 8) + 0x06, + P7_7 = (Port7 << 8) + 0x07, + + P8_0 = (Port8 << 8) + 0x00, + P8_1 = (Port8 << 8) + 0x01, + P8_2 = (Port8 << 8) + 0x02, + P8_3 = (Port8 << 8) + 0x03, + P8_4 = (Port8 << 8) + 0x04, + P8_5 = (Port8 << 8) + 0x05, + P8_6 = (Port8 << 8) + 0x06, + P8_7 = (Port8 << 8) + 0x07, + + P9_0 = (Port9 << 8) + 0x00, + P9_1 = (Port9 << 8) + 0x01, + P9_2 = (Port9 << 8) + 0x02, + P9_3 = (Port9 << 8) + 0x03, + P9_4 = (Port9 << 8) + 0x04, + P9_5 = (Port9 << 8) + 0x05, + P9_6 = (Port9 << 8) + 0x06, + P9_7 = (Port9 << 8) + 0x07, + + P10_0 = (Port10 << 8) + 0x00, + P10_1 = (Port10 << 8) + 0x01, + P10_2 = (Port10 << 8) + 0x02, + P10_3 = (Port10 << 8) + 0x03, + P10_4 = (Port10 << 8) + 0x04, + P10_5 = (Port10 << 8) + 0x05, + P10_6 = (Port10 << 8) + 0x06, + P10_7 = (Port10 << 8) + 0x07, + + P11_0 = (Port11 << 8) + 0x00, + P11_1 = (Port11 << 8) + 0x01, + P11_2 = (Port11 << 8) + 0x02, + P11_3 = (Port11 << 8) + 0x03, + P11_4 = (Port11 << 8) + 0x04, + P11_5 = (Port11 << 8) + 0x05, + P11_6 = (Port11 << 8) + 0x06, + P11_7 = (Port11 << 8) + 0x07, + + P12_0 = (Port12 << 8) + 0x00, + P12_1 = (Port12 << 8) + 0x01, + P12_2 = (Port12 << 8) + 0x02, + P12_3 = (Port12 << 8) + 0x03, + P12_4 = (Port12 << 8) + 0x04, + P12_5 = (Port12 << 8) + 0x05, + P12_6 = (Port12 << 8) + 0x06, + P12_7 = (Port12 << 8) + 0x07, + + P13_0 = (Port13 << 8) + 0x00, + P13_1 = (Port13 << 8) + 0x01, + P13_2 = (Port13 << 8) + 0x02, + P13_3 = (Port13 << 8) + 0x03, + P13_4 = (Port13 << 8) + 0x04, + P13_5 = (Port13 << 8) + 0x05, + P13_6 = (Port13 << 8) + 0x06, + P13_7 = (Port13 << 8) + 0x07, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Arduino connector namings + A0 = P10_0, + A1 = P10_1, + A2 = P10_2, + A3 = P10_3, + A4 = P10_4, + A5 = P10_5, + + D0 = P5_0, + D1 = P5_1, + D2 = P5_2, + D3 = P5_3, + D4 = P5_4, + D5 = P5_5, + D6 = P5_6, + D7 = P0_2, + D8 = P13_0, + D9 = P13_1, + D10 = P12_3, + D11 = P12_0, + D12 = P12_1, + D13 = P12_2, + D14 = P6_1, + D15 = P6_0, + + // Generic signal names + + I2C_SCL = P6_0, + I2C_SDA = P6_1, + + SPI_MOSI = P12_0, + SPI_MISO = P12_1, + SPI_CLK = P12_2, + SPI_CS = P12_4, + + UART_RX = P5_0, + UART_TX = P5_1, + UART_RTS = P5_2, + UART_CTS = P5_3, + + BT_UART_RX = P3_0, + BT_UART_TX = P3_1, + BT_UART_CTS = P3_3, + BT_UART_RTS = P3_2, + + BT_PIN_POWER = P3_4, + BT_PIN_HOST_WAKE = P3_5, + BT_PIN_DEVICE_WAKE = P4_0, + // Reset pin unavailable + + + SWITCH2 = P0_4, + LED1 = P0_3, + LED2 = P1_1, + LED3 = P11_1, + LED4 = P1_5, + LED5 = P13_7, + + LED_RED = LED1, + LED_BLUE = LED3, + LED_GREEN = LED2, + + USER_BUTTON = SWITCH2, + BUTTON1 = USER_BUTTON, + + QSPI_CLK = P11_7, + QSPI_IO_0 = P11_6, + QSPI_IO_1 = P11_5, + QSPI_IO_2 = P11_4, + QSPI_IO_3 = P11_3, + QSPI_SEL = P11_2, + + // Standardized interfaces names + STDIO_UART_TX = UART_TX, + STDIO_UART_RX = UART_RX, + STDIO_UART_CTS = UART_CTS, + STDIO_UART_RTS = UART_RTS, + + CY_STDIO_UART_RX = STDIO_UART_RX, + CY_STDIO_UART_TX = STDIO_UART_TX, + CY_STDIO_UART_CTS = STDIO_UART_CTS, + CY_STDIO_UART_RTS = STDIO_UART_RTS, + + CY_BT_UART_RX = BT_UART_RX, + CY_BT_UART_TX = BT_UART_TX, + CY_BT_UART_CTS = BT_UART_CTS, + CY_BT_UART_RTS = BT_UART_RTS, + + CY_BT_PIN_POWER = BT_PIN_POWER, + CY_BT_PIN_HOST_WAKE = BT_PIN_HOST_WAKE, + CY_BT_PIN_DEVICE_WAKE = BT_PIN_DEVICE_WAKE, + + + USBTX = UART_TX, + USBRX = UART_RX, + + AOUT = P9_6 +} PinName; + +// PinName[15-0] = Port[15-8] + Pin[4-0] +static inline unsigned CY_PIN(PinName pin) +{ + return pin & 0x07; +} + +static inline unsigned CY_PORT(PinName pin) +{ + return (pin >> 8) & 0xFF; +} + +// Because MBED pin mapping API does not allow to map multiple instances of the PWM +// to be mapped to the same pin, we create special pin names to force 32-bit PWM unit +// usage instead of standard 16-bit PWM. + +#define PWM32(pin) CY_PIN_FORCE_PWM_32(pin) + + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct new file mode 100644 index 00000000000..1dcfac33dba --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct @@ -0,0 +1,256 @@ +#! armcc -E +; The first line specifies a preprocessor command that the linker invokes +; to pass a scatter file through a C preprocessor. + +;******************************************************************************* +;* \file cy8c6xx7_cm4_dual.scat +;* \version `$CY_MAJOR_VERSION`.`$CY_MINOR_VERSION` +;* +;* Linker file for the ARMCC. +;* +;* The main purpose of the linker script is to describe how the sections in the +;* input files should be mapped into the output file, and to control the memory +;* layout of the output file. +;* +;* \note The entry point location is fixed and starts at 0x10000000. The valid +;* application image should be placed there. +;* +;* \note The linker files included with the PDL template projects must be +;* generic and handle all common use cases. Your project may not use every +;* section defined in the linker files. In that case you may see the warnings +;* during the build process: L6314W (no section matches pattern) and/or L6329W +;* (pattern only matches removed unused sections). In your project, you can +;* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +;* the linker, simply comment out or remove the relevant code in the linker +;* file. +;* +;******************************************************************************* +;* \copyright +;* Copyright 2016-2019 Cypress Semiconductor Corporation +;* SPDX-License-Identifier: Apache-2.0 +;* +;* Licensed under the Apache License, Version 2.0 (the "License"); +;* you may not use this file except in compliance with the License. +;* You may obtain a copy of the License at +;* +;* http://www.apache.org/licenses/LICENSE-2.0 +;* +;* Unless required by applicable law or agreed to in writing, software +;* distributed under the License is distributed on an "AS IS" BASIS, +;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;* See the License for the specific language governing permissions and +;* limitations under the License. +;******************************************************************************/ + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +#define Stack_Size MBED_BOOT_STACK_SIZE + +; The defines below describe the location and size of blocks of memory in the target. +; Use these defines to specify the memory regions available for allocation. + +; The following defines control RAM and flash memory allocation for the CM4 core. +; You can change the memory allocation by editing RAM and Flash defines. +; Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. +; Using this memory region for other purposes will lead to unexpected behavior. +; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat', +; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'. +; RAM +#define RAM_START MBED_RAM_START +#define RAM_SIZE MBED_RAM_SIZE +; Flash +#define FLASH_START MBED_ROM_START +#define FLASH_SIZE MBED_ROM_SIZE + +; The following defines describe a 32K flash region used for EEPROM emulation. +; This region can also be used as the general purpose flash. +; You can assign sections to this memory region for only one of the cores. +; Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. +; Therefore, repurposing this memory region will prevent such middleware from operation. +#define EM_EEPROM_START 0x14000000 +#define EM_EEPROM_SIZE 0x8000 + +; The following defines describe device specific memory regions and must not be changed. +; Supervisory flash: User data +#define SFLASH_USER_DATA_START 0x16000800 +#define SFLASH_USER_DATA_SIZE 0x00000800 + +; Supervisory flash: Normal Access Restrictions (NAR) +#define SFLASH_NAR_START 0x16001A00 +#define SFLASH_NAR_SIZE 0x00000200 + +; Supervisory flash: Public Key +#define SFLASH_PUBLIC_KEY_START 0x16005A00 +#define SFLASH_PUBLIC_KEY_SIZE 0x00000C00 + +; Supervisory flash: Table of Content # 2 +#define SFLASH_TOC_2_START 0x16007C00 +#define SFLASH_TOC_2_SIZE 0x00000200 + +; Supervisory flash: Table of Content # 2 Copy +#define SFLASH_RTOC_2_START 0x16007E00 +#define SFLASH_RTOC_2_SIZE 0x00000200 + +; External memory +#define XIP_START 0x18000000 +#define XIP_SIZE 0x08000000 + +; eFuse +#define EFUSE_START 0x90700000 +#define EFUSE_SIZE 0x100000 + + +LR_IROM1 FLASH_START FLASH_SIZE +{ + ER_FLASH_VECTORS +0 + { + * (RESET, +FIRST) + } + + ER_FLASH_CODE +0 FIXED + { + * (InRoot$$Sections) + * (+RO) + } + + ER_RAM_VECTORS RAM_START UNINIT + { + * (RESET_RAM, +FIRST) + } + + RW_RAM_DATA +0 + { + * (.cy_ramfunc) + .ANY (+RW, +ZI) + } + + ; Place variables in the section that should not be initialized during the + ; device startup. + RW_IRAM1 +0 UNINIT + { + * (.noinit) + } + + ; Application heap area (HEAP) + ARM_LIB_HEAP +0 + { + * (HEAP) + } + + ; Stack region growing down + ARM_LIB_STACK RAM_START+RAM_SIZE -Stack_Size + { + * (STACK) + } + + ; Used for the digital signature of the secure application and the + ; Bootloader SDK application. The size of the section depends on the required + ; data size. + .cy_app_signature (FLASH_START + FLASH_SIZE - 256) 256 + { + * (.cy_app_signature) + } +} + + +; Emulated EEPROM Flash area +LR_EM_EEPROM EM_EEPROM_START EM_EEPROM_SIZE +{ + .cy_em_eeprom +0 + { + * (.cy_em_eeprom) + } +} + +; Supervisory flash: User data +LR_SFLASH_USER_DATA SFLASH_USER_DATA_START SFLASH_USER_DATA_SIZE +{ + .cy_sflash_user_data +0 + { + * (.cy_sflash_user_data) + } +} + +; Supervisory flash: Normal Access Restrictions (NAR) +LR_SFLASH_NAR SFLASH_NAR_START SFLASH_NAR_SIZE +{ + .cy_sflash_nar +0 + { + * (.cy_sflash_nar) + } +} + +; Supervisory flash: Public Key +LR_SFLASH_PUBLIC_KEY SFLASH_PUBLIC_KEY_START SFLASH_PUBLIC_KEY_SIZE +{ + .cy_sflash_public_key +0 + { + * (.cy_sflash_public_key) + } +} + +; Supervisory flash: Table of Content # 2 +LR_SFLASH_TOC_2 SFLASH_TOC_2_START SFLASH_TOC_2_SIZE +{ + .cy_toc_part2 +0 + { + * (.cy_toc_part2) + } +} + +; Supervisory flash: Table of Content # 2 Copy +LR_SFLASH_RTOC_2 SFLASH_RTOC_2_START SFLASH_RTOC_2_SIZE +{ + .cy_rtoc_part2 +0 + { + * (.cy_rtoc_part2) + } +} + + +; Places the code in the Execute in Place (XIP) section. See the smif driver documentation for details. +LR_EROM XIP_START XIP_SIZE +{ + .cy_xip +0 + { + * (.cy_xip) + } +} + + +; eFuse +LR_EFUSE EFUSE_START EFUSE_SIZE +{ + .cy_efuse +0 + { + * (.cy_efuse) + } +} + + +; The section is used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. +CYMETA 0x90500000 +{ + .cymeta +0 { * (.cymeta) } +} + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..bdbd72f8c64 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S @@ -0,0 +1,696 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 02. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;/* +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__STACK_SIZE +Stack_Size EQU __STACK_SIZE + ELSE +Stack_Size EQU 0x00000400 + ENDIF + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__HEAP_SIZE +Heap_Size EQU __HEAP_SIZE + ELSE +Heap_Size EQU 0x00000400 + ENDIF + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + + DCD 0x0000000D ; NMI Handler located at ROM code + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External interrupts Power Mode Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + EXPORT __ramVectors + AREA RESET_RAM, READWRITE, NOINIT +__ramVectors SPACE __Vectors_Size + + + AREA |.text|, CODE, READONLY + + +; Weak function for startup customization +; +; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +; because this function is executed as the first instruction in the ResetHandler. +; The PDL is also not initialized to use the proper register offsets. +; The user of this function is responsible for initializing the PDL and resources before using them. +; +Cy_OnResetUser PROC + EXPORT Cy_OnResetUser [WEAK] + BX LR + ENDP + + +; Reset Handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT Cy_SystemInitFpuEnable + IMPORT __main + + ; Define strong function for startup customization + BL Cy_OnResetUser + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__Vectors + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +Vectors_Copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE Vectors_Copy + + ; Update Vector Table Offset Register. */ + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb 0xF + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + LDR R0, =__main + BLX R0 + + ; Should never get here + B . + + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP + +Cy_SysLib_FaultHandler PROC + EXPORT Cy_SysLib_FaultHandler [WEAK] + B . + ENDP +HardFault_Wrapper\ + PROC + EXPORT HardFault_Wrapper [WEAK] + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + bl L_API_call +L_MSP + mrs r0, MSP +L_API_call + bl Cy_SysLib_FaultHandler + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B HardFault_Wrapper + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT Default_Handler [WEAK] + EXPORT ioss_interrupts_gpio_0_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_1_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_2_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_3_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_4_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_5_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_6_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_7_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_8_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_9_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_10_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_11_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_12_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_13_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_14_IRQHandler [WEAK] + EXPORT ioss_interrupt_gpio_IRQHandler [WEAK] + EXPORT ioss_interrupt_vdd_IRQHandler [WEAK] + EXPORT lpcomp_interrupt_IRQHandler [WEAK] + EXPORT scb_8_interrupt_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_0_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_1_IRQHandler [WEAK] + EXPORT srss_interrupt_backup_IRQHandler [WEAK] + EXPORT srss_interrupt_IRQHandler [WEAK] + EXPORT pass_interrupt_ctbs_IRQHandler [WEAK] + EXPORT bless_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_15_IRQHandler [WEAK] + EXPORT scb_0_interrupt_IRQHandler [WEAK] + EXPORT scb_1_interrupt_IRQHandler [WEAK] + EXPORT scb_2_interrupt_IRQHandler [WEAK] + EXPORT scb_3_interrupt_IRQHandler [WEAK] + EXPORT scb_4_interrupt_IRQHandler [WEAK] + EXPORT scb_5_interrupt_IRQHandler [WEAK] + EXPORT scb_6_interrupt_IRQHandler [WEAK] + EXPORT scb_7_interrupt_IRQHandler [WEAK] + EXPORT csd_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_1_IRQHandler [WEAK] + EXPORT cpuss_interrupt_crypto_IRQHandler [WEAK] + EXPORT cpuss_interrupt_fm_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_8_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_9_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_10_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_11_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_12_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_13_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_14_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_15_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_16_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_17_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_18_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_19_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_20_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_21_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_22_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_23_IRQHandler [WEAK] + EXPORT udb_interrupts_0_IRQHandler [WEAK] + EXPORT udb_interrupts_1_IRQHandler [WEAK] + EXPORT udb_interrupts_2_IRQHandler [WEAK] + EXPORT udb_interrupts_3_IRQHandler [WEAK] + EXPORT udb_interrupts_4_IRQHandler [WEAK] + EXPORT udb_interrupts_5_IRQHandler [WEAK] + EXPORT udb_interrupts_6_IRQHandler [WEAK] + EXPORT udb_interrupts_7_IRQHandler [WEAK] + EXPORT udb_interrupts_8_IRQHandler [WEAK] + EXPORT udb_interrupts_9_IRQHandler [WEAK] + EXPORT udb_interrupts_10_IRQHandler [WEAK] + EXPORT udb_interrupts_11_IRQHandler [WEAK] + EXPORT udb_interrupts_12_IRQHandler [WEAK] + EXPORT udb_interrupts_13_IRQHandler [WEAK] + EXPORT udb_interrupts_14_IRQHandler [WEAK] + EXPORT udb_interrupts_15_IRQHandler [WEAK] + EXPORT pass_interrupt_sar_IRQHandler [WEAK] + EXPORT audioss_interrupt_i2s_IRQHandler [WEAK] + EXPORT audioss_interrupt_pdm_IRQHandler [WEAK] + EXPORT profile_interrupt_IRQHandler [WEAK] + EXPORT smif_interrupt_IRQHandler [WEAK] + EXPORT usb_interrupt_hi_IRQHandler [WEAK] + EXPORT usb_interrupt_med_IRQHandler [WEAK] + EXPORT usb_interrupt_lo_IRQHandler [WEAK] + EXPORT pass_interrupt_dacs_IRQHandler [WEAK] + +ioss_interrupts_gpio_0_IRQHandler +ioss_interrupts_gpio_1_IRQHandler +ioss_interrupts_gpio_2_IRQHandler +ioss_interrupts_gpio_3_IRQHandler +ioss_interrupts_gpio_4_IRQHandler +ioss_interrupts_gpio_5_IRQHandler +ioss_interrupts_gpio_6_IRQHandler +ioss_interrupts_gpio_7_IRQHandler +ioss_interrupts_gpio_8_IRQHandler +ioss_interrupts_gpio_9_IRQHandler +ioss_interrupts_gpio_10_IRQHandler +ioss_interrupts_gpio_11_IRQHandler +ioss_interrupts_gpio_12_IRQHandler +ioss_interrupts_gpio_13_IRQHandler +ioss_interrupts_gpio_14_IRQHandler +ioss_interrupt_gpio_IRQHandler +ioss_interrupt_vdd_IRQHandler +lpcomp_interrupt_IRQHandler +scb_8_interrupt_IRQHandler +srss_interrupt_mcwdt_0_IRQHandler +srss_interrupt_mcwdt_1_IRQHandler +srss_interrupt_backup_IRQHandler +srss_interrupt_IRQHandler +pass_interrupt_ctbs_IRQHandler +bless_interrupt_IRQHandler +cpuss_interrupts_ipc_0_IRQHandler +cpuss_interrupts_ipc_1_IRQHandler +cpuss_interrupts_ipc_2_IRQHandler +cpuss_interrupts_ipc_3_IRQHandler +cpuss_interrupts_ipc_4_IRQHandler +cpuss_interrupts_ipc_5_IRQHandler +cpuss_interrupts_ipc_6_IRQHandler +cpuss_interrupts_ipc_7_IRQHandler +cpuss_interrupts_ipc_8_IRQHandler +cpuss_interrupts_ipc_9_IRQHandler +cpuss_interrupts_ipc_10_IRQHandler +cpuss_interrupts_ipc_11_IRQHandler +cpuss_interrupts_ipc_12_IRQHandler +cpuss_interrupts_ipc_13_IRQHandler +cpuss_interrupts_ipc_14_IRQHandler +cpuss_interrupts_ipc_15_IRQHandler +scb_0_interrupt_IRQHandler +scb_1_interrupt_IRQHandler +scb_2_interrupt_IRQHandler +scb_3_interrupt_IRQHandler +scb_4_interrupt_IRQHandler +scb_5_interrupt_IRQHandler +scb_6_interrupt_IRQHandler +scb_7_interrupt_IRQHandler +csd_interrupt_IRQHandler +cpuss_interrupts_dw0_0_IRQHandler +cpuss_interrupts_dw0_1_IRQHandler +cpuss_interrupts_dw0_2_IRQHandler +cpuss_interrupts_dw0_3_IRQHandler +cpuss_interrupts_dw0_4_IRQHandler +cpuss_interrupts_dw0_5_IRQHandler +cpuss_interrupts_dw0_6_IRQHandler +cpuss_interrupts_dw0_7_IRQHandler +cpuss_interrupts_dw0_8_IRQHandler +cpuss_interrupts_dw0_9_IRQHandler +cpuss_interrupts_dw0_10_IRQHandler +cpuss_interrupts_dw0_11_IRQHandler +cpuss_interrupts_dw0_12_IRQHandler +cpuss_interrupts_dw0_13_IRQHandler +cpuss_interrupts_dw0_14_IRQHandler +cpuss_interrupts_dw0_15_IRQHandler +cpuss_interrupts_dw1_0_IRQHandler +cpuss_interrupts_dw1_1_IRQHandler +cpuss_interrupts_dw1_2_IRQHandler +cpuss_interrupts_dw1_3_IRQHandler +cpuss_interrupts_dw1_4_IRQHandler +cpuss_interrupts_dw1_5_IRQHandler +cpuss_interrupts_dw1_6_IRQHandler +cpuss_interrupts_dw1_7_IRQHandler +cpuss_interrupts_dw1_8_IRQHandler +cpuss_interrupts_dw1_9_IRQHandler +cpuss_interrupts_dw1_10_IRQHandler +cpuss_interrupts_dw1_11_IRQHandler +cpuss_interrupts_dw1_12_IRQHandler +cpuss_interrupts_dw1_13_IRQHandler +cpuss_interrupts_dw1_14_IRQHandler +cpuss_interrupts_dw1_15_IRQHandler +cpuss_interrupts_fault_0_IRQHandler +cpuss_interrupts_fault_1_IRQHandler +cpuss_interrupt_crypto_IRQHandler +cpuss_interrupt_fm_IRQHandler +cpuss_interrupts_cm0_cti_0_IRQHandler +cpuss_interrupts_cm0_cti_1_IRQHandler +cpuss_interrupts_cm4_cti_0_IRQHandler +cpuss_interrupts_cm4_cti_1_IRQHandler +tcpwm_0_interrupts_0_IRQHandler +tcpwm_0_interrupts_1_IRQHandler +tcpwm_0_interrupts_2_IRQHandler +tcpwm_0_interrupts_3_IRQHandler +tcpwm_0_interrupts_4_IRQHandler +tcpwm_0_interrupts_5_IRQHandler +tcpwm_0_interrupts_6_IRQHandler +tcpwm_0_interrupts_7_IRQHandler +tcpwm_1_interrupts_0_IRQHandler +tcpwm_1_interrupts_1_IRQHandler +tcpwm_1_interrupts_2_IRQHandler +tcpwm_1_interrupts_3_IRQHandler +tcpwm_1_interrupts_4_IRQHandler +tcpwm_1_interrupts_5_IRQHandler +tcpwm_1_interrupts_6_IRQHandler +tcpwm_1_interrupts_7_IRQHandler +tcpwm_1_interrupts_8_IRQHandler +tcpwm_1_interrupts_9_IRQHandler +tcpwm_1_interrupts_10_IRQHandler +tcpwm_1_interrupts_11_IRQHandler +tcpwm_1_interrupts_12_IRQHandler +tcpwm_1_interrupts_13_IRQHandler +tcpwm_1_interrupts_14_IRQHandler +tcpwm_1_interrupts_15_IRQHandler +tcpwm_1_interrupts_16_IRQHandler +tcpwm_1_interrupts_17_IRQHandler +tcpwm_1_interrupts_18_IRQHandler +tcpwm_1_interrupts_19_IRQHandler +tcpwm_1_interrupts_20_IRQHandler +tcpwm_1_interrupts_21_IRQHandler +tcpwm_1_interrupts_22_IRQHandler +tcpwm_1_interrupts_23_IRQHandler +udb_interrupts_0_IRQHandler +udb_interrupts_1_IRQHandler +udb_interrupts_2_IRQHandler +udb_interrupts_3_IRQHandler +udb_interrupts_4_IRQHandler +udb_interrupts_5_IRQHandler +udb_interrupts_6_IRQHandler +udb_interrupts_7_IRQHandler +udb_interrupts_8_IRQHandler +udb_interrupts_9_IRQHandler +udb_interrupts_10_IRQHandler +udb_interrupts_11_IRQHandler +udb_interrupts_12_IRQHandler +udb_interrupts_13_IRQHandler +udb_interrupts_14_IRQHandler +udb_interrupts_15_IRQHandler +pass_interrupt_sar_IRQHandler +audioss_interrupt_i2s_IRQHandler +audioss_interrupt_pdm_IRQHandler +profile_interrupt_IRQHandler +smif_interrupt_IRQHandler +usb_interrupt_hi_IRQHandler +usb_interrupt_med_IRQHandler +usb_interrupt_lo_IRQHandler +pass_interrupt_dacs_IRQHandler + + B . + ENDP + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld new file mode 100644 index 00000000000..fad6275f262 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld @@ -0,0 +1,430 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.ld +* \version 2.30 +* +* Linker file for the GNU C compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point location is fixed and starts at 0x10000000. The valid +* application image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) +ENTRY(Reset_Handler) + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +STACK_SIZE = MBED_BOOT_STACK_SIZE; + +/* Force symbol to be entered in the output file as an undefined symbol. Doing +* this may, for example, trigger linking of additional modules from standard +* libraries. You may list several symbols for each EXTERN, and you may use +* EXTERN multiple times. This command has the same effect as the -u command-line +* option. +*/ +EXTERN(Reset_Handler) + +/* The MEMORY section below describes the location and size of blocks of memory in the target. +* Use this section to specify the memory regions available for allocation. +*/ +MEMORY +{ + /* The ram and flash regions control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing the 'ram' and 'flash' regions. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. + */ + ram (rwx) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE + flash (rx) : ORIGIN = MBED_ROM_START, LENGTH = MBED_ROM_SIZE + + /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ + em_eeprom (rx) : ORIGIN = 0x14000000, LENGTH = 0x8000 /* 32 KB */ + + /* The following regions define device specific memory regions and must not be changed. */ + sflash_user_data (rx) : ORIGIN = 0x16000800, LENGTH = 0x800 /* Supervisory flash: User data */ + sflash_nar (rx) : ORIGIN = 0x16001A00, LENGTH = 0x200 /* Supervisory flash: Normal Access Restrictions (NAR) */ + sflash_public_key (rx) : ORIGIN = 0x16005A00, LENGTH = 0xC00 /* Supervisory flash: Public Key */ + sflash_toc_2 (rx) : ORIGIN = 0x16007C00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 */ + sflash_rtoc_2 (rx) : ORIGIN = 0x16007E00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 Copy */ + xip (rx) : ORIGIN = 0x18000000, LENGTH = 0x8000000 /* 128 MB */ + efuse (r) : ORIGIN = 0x90700000, LENGTH = 0x100000 /* 1 MB */ +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ + + +SECTIONS +{ + .text : + { + . = ALIGN(4); + __Vectors = . ; + KEEP(*(.vectors)) + . = ALIGN(4); + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + . = ALIGN(4); + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + /* Read-only code (constants). */ + *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*) + + KEEP(*(.eh_frame*)) + } > flash + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + __exidx_start = .; + + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_psoc6_01_cm4.S */ + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + /* Copy interrupt vectors from flash to RAM */ + LONG (__Vectors) /* From */ + LONG (__ram_vectors_start__) /* To */ + LONG (__Vectors_End - __Vectors) /* Size */ + + /* Copy data section to RAM */ + LONG (__etext) /* From */ + LONG (__data_start__) /* To */ + LONG (__data_end__ - __data_start__) /* Size */ + + __copy_table_end__ = .; + } > flash + + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_01_cm4.S */ + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + __zero_table_end__ = .; + } > flash + + __etext = . ; + + + .ramVectors (NOLOAD) : ALIGN(8) + { + __ram_vectors_start__ = .; + KEEP(*(.ram_vectors)) + __ram_vectors_end__ = .; + } > ram + + + .data __ram_vectors_end__ : AT (__etext) + { + __data_start__ = .; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + + KEEP(*(.cy_ramfunc*)) + . = ALIGN(4); + + __data_end__ = .; + + } > ram + + + /* Place variables in the section that should not be initialized during the + * device startup. + */ + .noinit (NOLOAD) : ALIGN(8) + { + KEEP(*(.noinit)) + } > ram + + + /* The uninitialized global or static variables are placed in this section. + * + * The NOLOAD attribute tells linker that .bss section does not consume + * any space in the image. The NOLOAD attribute changes the .bss type to + * NOBITS, and that makes linker to A) not allocate section in memory, and + * A) put information to clear the section with all zeros during application + * loading. + * + * Without the NOLOAD attribute, the .bss section might get PROGBITS type. + * This makes linker to A) allocate zeroed section in memory, and B) copy + * this section to RAM during application loading. + */ + .bss (NOLOAD): + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .heap (NOLOAD): + { + __HeapBase = .; + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + __HeapLimit = .; + } > ram + + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram) + LENGTH(ram); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Used for the digital signature of the secure application and the Bootloader SDK application. + * The size of the section depends on the required data size. */ + .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 : + { + KEEP(*(.cy_app_signature)) + } > flash + + + /* Emulated EEPROM Flash area */ + .cy_em_eeprom : + { + KEEP(*(.cy_em_eeprom)) + } > em_eeprom + + + /* Supervisory Flash: User data */ + .cy_sflash_user_data : + { + KEEP(*(.cy_sflash_user_data)) + } > sflash_user_data + + + /* Supervisory Flash: Normal Access Restrictions (NAR) */ + .cy_sflash_nar : + { + KEEP(*(.cy_sflash_nar)) + } > sflash_nar + + + /* Supervisory Flash: Public Key */ + .cy_sflash_public_key : + { + KEEP(*(.cy_sflash_public_key)) + } > sflash_public_key + + + /* Supervisory Flash: Table of Content # 2 */ + .cy_toc_part2 : + { + KEEP(*(.cy_toc_part2)) + } > sflash_toc_2 + + + /* Supervisory Flash: Table of Content # 2 Copy */ + .cy_rtoc_part2 : + { + KEEP(*(.cy_rtoc_part2)) + } > sflash_rtoc_2 + + + /* Places the code in the Execute in Place (XIP) section. See the smif driver + * documentation for details. + */ + .cy_xip : + { + KEEP(*(.cy_xip)) + } > xip + + + /* eFuse */ + .cy_efuse : + { + KEEP(*(.cy_efuse)) + } > efuse + + + /* These sections are used for additional metadata (silicon revision, + * Silicon/JTAG ID, etc.) storage. + */ + .cymeta 0x90500000 : { KEEP(*(.cymeta)) } :NONE +} + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +__cy_memory_0_start = 0x10000000; +__cy_memory_0_length = 0x00100000; +__cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +__cy_memory_1_start = 0x14000000; +__cy_memory_1_length = 0x8000; +__cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +__cy_memory_2_start = 0x16000000; +__cy_memory_2_length = 0x8000; +__cy_memory_2_row_size = 0x200; + +/* XIP */ +__cy_memory_3_start = 0x18000000; +__cy_memory_3_length = 0x08000000; +__cy_memory_3_row_size = 0x200; + +/* eFuse */ +__cy_memory_4_start = 0x90700000; +__cy_memory_4_length = 0x100000; +__cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..3c2f44d1e07 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S @@ -0,0 +1,631 @@ +/**************************************************************************//** + * @file startup_psoc6_01_cm4.S + * @brief CMSIS Core Device Startup File for + * ARMCM4 Device Series + * @version V5.00 + * @date 02. March 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* Address of the NMI handler */ + #define CY_NMI_HANLDER_ADDR 0x0000000D + + /* The CPU VTOR register */ + #define CY_CPU_VTOR_ADDR 0xE000ED08 + + /* Copy flash vectors and data section to RAM */ + #define __STARTUP_COPY_MULTIPLE + + /* Clear single BSS section */ + #define __STARTUP_CLEAR_BSS + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00001000 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000400 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long CY_NMI_HANLDER_ADDR /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External interrupts Description */ + .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + .long pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + .long bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + .long udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + .long udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + .long udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + .long udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + .long udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + .long udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + .long udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + .long udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + .long udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + .long udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + .long udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + .long udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + .long udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + .long udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + .long udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + .long udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + .long audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + .long audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + .long usb_interrupt_hi_IRQHandler /* USB Interrupt */ + .long usb_interrupt_med_IRQHandler /* USB Interrupt */ + .long usb_interrupt_lo_IRQHandler /* USB Interrupt */ + .long pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + + .size __Vectors, . - __Vectors + .equ __VectorsSize, . - __Vectors + + .section .ram_vectors + .align 2 + .globl __ramVectors +__ramVectors: + .space __VectorsSize + .size __ramVectors, . - __ramVectors + + + .text + .thumb + .thumb_func + .align 2 + + /* + * Device startup customization + * + * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) + * because this function is executed as the first instruction in the ResetHandler. + * The PDL is also not initialized to use the proper register offsets. + * The user of this function is responsible for initializing the PDL and resources before using them. + */ + .weak Cy_OnResetUser + .func Cy_OnResetUser, Cy_OnResetUser + .type Cy_OnResetUser, %function + +Cy_OnResetUser: + bx lr + .size Cy_OnResetUser, . - Cy_OnResetUser + .endfunc + + /* Reset handler */ + .weak Reset_Handler + .type Reset_Handler, %function + +Reset_Handler: + bl Cy_OnResetUser + cpsid i + +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + + /* Update Vector Table Offset Register. */ + ldr r0, =__ramVectors + ldr r1, =CY_CPU_VTOR_ADDR + str r0, [r1] + dsb 0xF + + /* Enable the FPU if used */ + bl Cy_SystemInitFpuEnable + + bl _start + + /* Should never get here */ + b . + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function + +Default_Handler: + b . + .size Default_Handler, . - Default_Handler + + + .weak Cy_SysLib_FaultHandler + .type Cy_SysLib_FaultHandler, %function + +Cy_SysLib_FaultHandler: + b . + .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler + .type Fault_Handler, %function + +Fault_Handler: + /* Storing LR content for Creator call stack trace */ + push {LR} + movs r0, #4 + mov r1, LR + tst r0, r1 + beq .L_MSP + mrs r0, PSP + b .L_API_call +.L_MSP: + mrs r0, MSP +.L_API_call: + /* Compensation of stack pointer address due to pushing 4 bytes of LR */ + adds r0, r0, #4 + bl Cy_SysLib_FaultHandler + b . + .size Fault_Handler, . - Fault_Handler + +.macro def_fault_Handler fault_handler_name + .weak \fault_handler_name + .set \fault_handler_name, Fault_Handler + .endm + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + + def_fault_Handler HardFault_Handler + def_fault_Handler MemManage_Handler + def_fault_Handler BusFault_Handler + def_fault_Handler UsageFault_Handler + + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + def_irq_handler pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + def_irq_handler bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + def_irq_handler udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + def_irq_handler udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + def_irq_handler udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + def_irq_handler udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + def_irq_handler udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + def_irq_handler udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + def_irq_handler udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + def_irq_handler udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + def_irq_handler udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + def_irq_handler udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + def_irq_handler udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + def_irq_handler udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + def_irq_handler udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + def_irq_handler udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + def_irq_handler udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + def_irq_handler udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + def_irq_handler audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + def_irq_handler audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */ + def_irq_handler pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + .end + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf new file mode 100644 index 00000000000..249452e3b59 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.icf +* \version 2.30 +* +* Linker file for the IAR compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point is fixed and starts at 0x10000000. The valid application +* image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; + +if (!isdefinedsymbol(MBED_ROM_START)) { + define symbol MBED_ROM_START = 0x10002000; +} + +if (!isdefinedsymbol(MBED_ROM_SIZE)) { + define symbol MBED_ROM_SIZE = 0x000FE000; +} + +if (!isdefinedsymbol(MBED_RAM_START)) { + define symbol MBED_RAM_START = 0x08002000; +} + +if (!isdefinedsymbol(MBED_RAM_SIZE)) { + define symbol MBED_RAM_SIZE = 0x00045800; +} + +if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { + define symbol MBED_BOOT_STACK_SIZE = 0x400; +} + +/* The symbols below define the location and size of blocks of memory in the target. + * Use these symbols to specify the memory regions available for allocation. + */ + +/* The following symbols control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing RAM and Flash symbols. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding symbols for CM0+ core in 'xx_cm0plus.icf', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.icf'. + */ +/* RAM */ +define symbol __ICFEDIT_region_IRAM1_start__ = MBED_RAM_START; +define symbol __ICFEDIT_region_IRAM1_end__ = (MBED_RAM_START + MBED_RAM_SIZE); +/* Flash */ +define symbol __ICFEDIT_region_IROM1_start__ = MBED_ROM_START; +define symbol __ICFEDIT_region_IROM1_end__ = (MBED_ROM_START + MBED_ROM_SIZE); + +/* The following symbols define a 32K flash region used for EEPROM emulation. + * This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ +define symbol __ICFEDIT_region_IROM2_start__ = 0x14000000; +define symbol __ICFEDIT_region_IROM2_end__ = 0x14007FFF; + +/* The following symbols define device specific memory regions and must not be changed. */ +/* Supervisory FLASH - User Data */ +define symbol __ICFEDIT_region_IROM3_start__ = 0x16000800; +define symbol __ICFEDIT_region_IROM3_end__ = 0x160007FF; + +/* Supervisory FLASH - Normal Access Restrictions (NAR) */ +define symbol __ICFEDIT_region_IROM4_start__ = 0x16001A00; +define symbol __ICFEDIT_region_IROM4_end__ = 0x16001BFF; + +/* Supervisory FLASH - Public Key */ +define symbol __ICFEDIT_region_IROM5_start__ = 0x16005A00; +define symbol __ICFEDIT_region_IROM5_end__ = 0x160065FF; + +/* Supervisory FLASH - Table of Content # 2 */ +define symbol __ICFEDIT_region_IROM6_start__ = 0x16007C00; +define symbol __ICFEDIT_region_IROM6_end__ = 0x16007DFF; + +/* Supervisory FLASH - Table of Content # 2 Copy */ +define symbol __ICFEDIT_region_IROM7_start__ = 0x16007E00; +define symbol __ICFEDIT_region_IROM7_end__ = 0x16007FFF; + +/* eFuse */ +define symbol __ICFEDIT_region_IROM8_start__ = 0x90700000; +define symbol __ICFEDIT_region_IROM8_end__ = 0x907FFFFF; + +/* XIP */ +define symbol __ICFEDIT_region_EROM1_start__ = 0x18000000; +define symbol __ICFEDIT_region_EROM1_end__ = 0x1FFFFFFF; + +define symbol __ICFEDIT_region_EROM2_start__ = 0x0; +define symbol __ICFEDIT_region_EROM2_end__ = 0x0; +define symbol __ICFEDIT_region_EROM3_start__ = 0x0; +define symbol __ICFEDIT_region_EROM3_end__ = 0x0; + + +define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; +define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; +/*-Sizes-*/ +if (!isdefinedsymbol(__STACK_SIZE)) { + define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; +} else { + define symbol __ICFEDIT_size_cstack__ = __STACK_SIZE; +} + +if (!isdefinedsymbol(__HEAP_SIZE)) { + define symbol __ICFEDIT_size_heap__ = 0x20000; +} else { + define symbol __ICFEDIT_size_heap__ = __HEAP_SIZE; +} +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region IROM1_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]; +define region IROM2_region = mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; +define region IROM3_region = mem:[from __ICFEDIT_region_IROM3_start__ to __ICFEDIT_region_IROM3_end__]; +define region IROM4_region = mem:[from __ICFEDIT_region_IROM4_start__ to __ICFEDIT_region_IROM4_end__]; +define region IROM5_region = mem:[from __ICFEDIT_region_IROM5_start__ to __ICFEDIT_region_IROM5_end__]; +define region IROM6_region = mem:[from __ICFEDIT_region_IROM6_start__ to __ICFEDIT_region_IROM6_end__]; +define region IROM7_region = mem:[from __ICFEDIT_region_IROM7_start__ to __ICFEDIT_region_IROM7_end__]; +define region IROM8_region = mem:[from __ICFEDIT_region_IROM8_start__ to __ICFEDIT_region_IROM8_end__]; +define region EROM1_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__]; +define region IRAM1_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]; + +define block RAM_DATA {readwrite section .data}; +define block RAM_OTHER {readwrite section * }; +define block RAM_NOINIT {readwrite section .noinit}; +define block RAM_BSS {readwrite section .bss}; +define block RAM with fixed order {block RAM_DATA, block RAM_OTHER, block RAM_NOINIT, block RAM_BSS}; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +define block RO {first section .intvec, readonly}; + +/*-Initializations-*/ +initialize by copy { readwrite }; +do not initialize { section .noinit, section .intvec_ram }; + +/*-Placement-*/ + +/* Flash */ +place at start of IROM1_region { block RO }; +".cy_app_signature" : place at address (__ICFEDIT_region_IROM1_end__ - 0x200) { section .cy_app_signature }; + +/* Emulated EEPROM Flash area */ +".cy_em_eeprom" : place at start of IROM2_region { section .cy_em_eeprom }; + +/* Supervisory Flash - User Data */ +".cy_sflash_user_data" : place at start of IROM3_region { section .cy_sflash_user_data }; + +/* Supervisory Flash - NAR */ +".cy_sflash_nar" : place at start of IROM4_region { section .cy_sflash_nar }; + +/* Supervisory Flash - Public Key */ +".cy_sflash_public_key" : place at start of IROM5_region { section .cy_sflash_public_key }; + +/* Supervisory Flash - TOC2 */ +".cy_toc_part2" : place at start of IROM6_region { section .cy_toc_part2 }; + +/* Supervisory Flash - RTOC2 */ +".cy_rtoc_part2" : place at start of IROM7_region { section .cy_rtoc_part2 }; + +/* eFuse */ +".cy_efuse" : place at start of IROM8_region { section .cy_efuse }; + +/* Execute in Place (XIP). See the smif driver documentation for details. */ +".cy_xip" : place at start of EROM1_region { section .cy_xip }; + +/* RAM */ +place at start of IRAM1_region { readwrite section .intvec_ram}; +place in IRAM1_region { block RAM}; +place in IRAM1_region { block HEAP}; +place at end of IRAM1_region { block CSTACK }; + +/* These sections are used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. */ +".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta }; + + +keep { section .cy_app_signature, + section .cy_em_eeprom, + section .cy_sflash_user_data, + section .cy_sflash_nar, + section .cy_sflash_public_key, + section .cy_toc_part2, + section .cy_rtoc_part2, + section .cy_efuse, + section .cy_xip, + section .cymeta, + }; + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +define exported symbol __cy_memory_0_start = 0x10000000; +define exported symbol __cy_memory_0_length = 0x00100000; +define exported symbol __cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +define exported symbol __cy_memory_1_start = 0x14000000; +define exported symbol __cy_memory_1_length = 0x8000; +define exported symbol __cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +define exported symbol __cy_memory_2_start = 0x16000000; +define exported symbol __cy_memory_2_length = 0x8000; +define exported symbol __cy_memory_2_row_size = 0x200; + +/* XIP */ +define exported symbol __cy_memory_3_start = 0x18000000; +define exported symbol __cy_memory_3_length = 0x08000000; +define exported symbol __cy_memory_3_row_size = 0x200; + +/* eFuse */ +define exported symbol __cy_memory_4_start = 0x90700000; +define exported symbol __cy_memory_4_length = 0x100000; +define exported symbol __cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..6f1e869b92a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S @@ -0,0 +1,1142 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 08. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + SECTION .intvec_ram:DATA:NOROOT(2) + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + EXTERN Cy_SystemInitFpuEnable + EXTERN __iar_data_init3 + PUBLIC __vector_table + PUBLIC __vector_table_0x1c + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + PUBLIC __ramVectors + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + + DCD 0x0000000D ; NMI_Handler is defined in ROM code + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler +__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD DebugMon_Handler + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + + ; External interrupts Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors + + SECTION .intvec_ram:DATA:REORDER:NOROOT(2) +__ramVectors + DS32 __Vectors_Size + + + THUMB + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default handlers +;; + PUBWEAK Default_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Default_Handler + B Default_Handler + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Weak function for startup customization +;; +;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +;; because this function is executed as the first instruction in the ResetHandler. +;; The PDL is also not initialized to use the proper register offsets. +;; The user of this function is responsible for initializing the PDL and resources before using them. +;; + PUBWEAK Cy_OnResetUser + SECTION .text:CODE:REORDER:NOROOT(2) +Cy_OnResetUser + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Define strong version to return zero for +;; __iar_program_start to skip data sections +;; initialization. +;; + PUBLIC __low_level_init + SECTION .text:CODE:REORDER:NOROOT(2) +__low_level_init + MOVS R0, #0 + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + + ; Define strong function for startup customization + LDR R0, =Cy_OnResetUser + BLX R0 + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__vector_table + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +intvec_copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE intvec_copy + + ; Update Vector Table Offset Register + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + ; Initialize data sections + LDR R0, =__iar_data_init3 + BLX R0 + + LDR R0, =SystemInit + BLX R0 + + LDR R0, =__iar_program_start + BLX R0 + +; Should never get here +Cy_Main_Exited + B Cy_Main_Exited + + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B NMI_Handler + + + PUBWEAK Cy_SysLib_FaultHandler + SECTION .text:CODE:REORDER:NOROOT(1) +Cy_SysLib_FaultHandler + B Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Wrapper + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Wrapper + IMPORT Cy_SysLib_FaultHandler + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + b L_API_call +L_MSP + mrs r0, MSP +L_API_call + ; Storing LR content for Creator call stack trace + push {LR} + bl Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B HardFault_Wrapper + + PUBWEAK MemManage_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +MemManage_Handler + B HardFault_Wrapper + + PUBWEAK BusFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +BusFault_Handler + B HardFault_Wrapper + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +UsageFault_Handler + B HardFault_Wrapper + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B SysTick_Handler + + + ; External interrupts + PUBWEAK ioss_interrupts_gpio_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_0_IRQHandler + B ioss_interrupts_gpio_0_IRQHandler + + PUBWEAK ioss_interrupts_gpio_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_1_IRQHandler + B ioss_interrupts_gpio_1_IRQHandler + + PUBWEAK ioss_interrupts_gpio_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_2_IRQHandler + B ioss_interrupts_gpio_2_IRQHandler + + PUBWEAK ioss_interrupts_gpio_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_3_IRQHandler + B ioss_interrupts_gpio_3_IRQHandler + + PUBWEAK ioss_interrupts_gpio_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_4_IRQHandler + B ioss_interrupts_gpio_4_IRQHandler + + PUBWEAK ioss_interrupts_gpio_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_5_IRQHandler + B ioss_interrupts_gpio_5_IRQHandler + + PUBWEAK ioss_interrupts_gpio_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_6_IRQHandler + B ioss_interrupts_gpio_6_IRQHandler + + PUBWEAK ioss_interrupts_gpio_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_7_IRQHandler + B ioss_interrupts_gpio_7_IRQHandler + + PUBWEAK ioss_interrupts_gpio_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_8_IRQHandler + B ioss_interrupts_gpio_8_IRQHandler + + PUBWEAK ioss_interrupts_gpio_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_9_IRQHandler + B ioss_interrupts_gpio_9_IRQHandler + + PUBWEAK ioss_interrupts_gpio_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_10_IRQHandler + B ioss_interrupts_gpio_10_IRQHandler + + PUBWEAK ioss_interrupts_gpio_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_11_IRQHandler + B ioss_interrupts_gpio_11_IRQHandler + + PUBWEAK ioss_interrupts_gpio_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_12_IRQHandler + B ioss_interrupts_gpio_12_IRQHandler + + PUBWEAK ioss_interrupts_gpio_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_13_IRQHandler + B ioss_interrupts_gpio_13_IRQHandler + + PUBWEAK ioss_interrupts_gpio_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_14_IRQHandler + B ioss_interrupts_gpio_14_IRQHandler + + PUBWEAK ioss_interrupt_gpio_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_gpio_IRQHandler + B ioss_interrupt_gpio_IRQHandler + + PUBWEAK ioss_interrupt_vdd_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_vdd_IRQHandler + B ioss_interrupt_vdd_IRQHandler + + PUBWEAK lpcomp_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +lpcomp_interrupt_IRQHandler + B lpcomp_interrupt_IRQHandler + + PUBWEAK scb_8_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_8_interrupt_IRQHandler + B scb_8_interrupt_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_0_IRQHandler + B srss_interrupt_mcwdt_0_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_1_IRQHandler + B srss_interrupt_mcwdt_1_IRQHandler + + PUBWEAK srss_interrupt_backup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_backup_IRQHandler + B srss_interrupt_backup_IRQHandler + + PUBWEAK srss_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_IRQHandler + B srss_interrupt_IRQHandler + + PUBWEAK pass_interrupt_ctbs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_ctbs_IRQHandler + B pass_interrupt_ctbs_IRQHandler + + PUBWEAK bless_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +bless_interrupt_IRQHandler + B bless_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_0_IRQHandler + B cpuss_interrupts_ipc_0_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_1_IRQHandler + B cpuss_interrupts_ipc_1_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_2_IRQHandler + B cpuss_interrupts_ipc_2_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_3_IRQHandler + B cpuss_interrupts_ipc_3_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_4_IRQHandler + B cpuss_interrupts_ipc_4_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_5_IRQHandler + B cpuss_interrupts_ipc_5_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_6_IRQHandler + B cpuss_interrupts_ipc_6_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_7_IRQHandler + B cpuss_interrupts_ipc_7_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_8_IRQHandler + B cpuss_interrupts_ipc_8_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_9_IRQHandler + B cpuss_interrupts_ipc_9_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_10_IRQHandler + B cpuss_interrupts_ipc_10_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_11_IRQHandler + B cpuss_interrupts_ipc_11_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_12_IRQHandler + B cpuss_interrupts_ipc_12_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_13_IRQHandler + B cpuss_interrupts_ipc_13_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_14_IRQHandler + B cpuss_interrupts_ipc_14_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_15_IRQHandler + B cpuss_interrupts_ipc_15_IRQHandler + + PUBWEAK scb_0_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_0_interrupt_IRQHandler + B scb_0_interrupt_IRQHandler + + PUBWEAK scb_1_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_1_interrupt_IRQHandler + B scb_1_interrupt_IRQHandler + + PUBWEAK scb_2_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_2_interrupt_IRQHandler + B scb_2_interrupt_IRQHandler + + PUBWEAK scb_3_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_3_interrupt_IRQHandler + B scb_3_interrupt_IRQHandler + + PUBWEAK scb_4_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_4_interrupt_IRQHandler + B scb_4_interrupt_IRQHandler + + PUBWEAK scb_5_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_5_interrupt_IRQHandler + B scb_5_interrupt_IRQHandler + + PUBWEAK scb_6_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_6_interrupt_IRQHandler + B scb_6_interrupt_IRQHandler + + PUBWEAK scb_7_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_7_interrupt_IRQHandler + B scb_7_interrupt_IRQHandler + + PUBWEAK csd_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +csd_interrupt_IRQHandler + B csd_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_0_IRQHandler + B cpuss_interrupts_dw0_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_1_IRQHandler + B cpuss_interrupts_dw0_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_2_IRQHandler + B cpuss_interrupts_dw0_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_3_IRQHandler + B cpuss_interrupts_dw0_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_4_IRQHandler + B cpuss_interrupts_dw0_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_5_IRQHandler + B cpuss_interrupts_dw0_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_6_IRQHandler + B cpuss_interrupts_dw0_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_7_IRQHandler + B cpuss_interrupts_dw0_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_8_IRQHandler + B cpuss_interrupts_dw0_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_9_IRQHandler + B cpuss_interrupts_dw0_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_10_IRQHandler + B cpuss_interrupts_dw0_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_11_IRQHandler + B cpuss_interrupts_dw0_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_12_IRQHandler + B cpuss_interrupts_dw0_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_13_IRQHandler + B cpuss_interrupts_dw0_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_14_IRQHandler + B cpuss_interrupts_dw0_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_15_IRQHandler + B cpuss_interrupts_dw0_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_0_IRQHandler + B cpuss_interrupts_dw1_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_1_IRQHandler + B cpuss_interrupts_dw1_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_2_IRQHandler + B cpuss_interrupts_dw1_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_3_IRQHandler + B cpuss_interrupts_dw1_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_4_IRQHandler + B cpuss_interrupts_dw1_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_5_IRQHandler + B cpuss_interrupts_dw1_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_6_IRQHandler + B cpuss_interrupts_dw1_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_7_IRQHandler + B cpuss_interrupts_dw1_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_8_IRQHandler + B cpuss_interrupts_dw1_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_9_IRQHandler + B cpuss_interrupts_dw1_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_10_IRQHandler + B cpuss_interrupts_dw1_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_11_IRQHandler + B cpuss_interrupts_dw1_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_12_IRQHandler + B cpuss_interrupts_dw1_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_13_IRQHandler + B cpuss_interrupts_dw1_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_14_IRQHandler + B cpuss_interrupts_dw1_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_15_IRQHandler + B cpuss_interrupts_dw1_15_IRQHandler + + PUBWEAK cpuss_interrupts_fault_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_0_IRQHandler + B cpuss_interrupts_fault_0_IRQHandler + + PUBWEAK cpuss_interrupts_fault_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_1_IRQHandler + B cpuss_interrupts_fault_1_IRQHandler + + PUBWEAK cpuss_interrupt_crypto_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_crypto_IRQHandler + B cpuss_interrupt_crypto_IRQHandler + + PUBWEAK cpuss_interrupt_fm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_fm_IRQHandler + B cpuss_interrupt_fm_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_0_IRQHandler + B cpuss_interrupts_cm0_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_1_IRQHandler + B cpuss_interrupts_cm0_cti_1_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_0_IRQHandler + B cpuss_interrupts_cm4_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_1_IRQHandler + B cpuss_interrupts_cm4_cti_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_0_IRQHandler + B tcpwm_0_interrupts_0_IRQHandler + + PUBWEAK tcpwm_0_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_1_IRQHandler + B tcpwm_0_interrupts_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_2_IRQHandler + B tcpwm_0_interrupts_2_IRQHandler + + PUBWEAK tcpwm_0_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_3_IRQHandler + B tcpwm_0_interrupts_3_IRQHandler + + PUBWEAK tcpwm_0_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_4_IRQHandler + B tcpwm_0_interrupts_4_IRQHandler + + PUBWEAK tcpwm_0_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_5_IRQHandler + B tcpwm_0_interrupts_5_IRQHandler + + PUBWEAK tcpwm_0_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_6_IRQHandler + B tcpwm_0_interrupts_6_IRQHandler + + PUBWEAK tcpwm_0_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_7_IRQHandler + B tcpwm_0_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_0_IRQHandler + B tcpwm_1_interrupts_0_IRQHandler + + PUBWEAK tcpwm_1_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_1_IRQHandler + B tcpwm_1_interrupts_1_IRQHandler + + PUBWEAK tcpwm_1_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_2_IRQHandler + B tcpwm_1_interrupts_2_IRQHandler + + PUBWEAK tcpwm_1_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_3_IRQHandler + B tcpwm_1_interrupts_3_IRQHandler + + PUBWEAK tcpwm_1_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_4_IRQHandler + B tcpwm_1_interrupts_4_IRQHandler + + PUBWEAK tcpwm_1_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_5_IRQHandler + B tcpwm_1_interrupts_5_IRQHandler + + PUBWEAK tcpwm_1_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_6_IRQHandler + B tcpwm_1_interrupts_6_IRQHandler + + PUBWEAK tcpwm_1_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_7_IRQHandler + B tcpwm_1_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_8_IRQHandler + B tcpwm_1_interrupts_8_IRQHandler + + PUBWEAK tcpwm_1_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_9_IRQHandler + B tcpwm_1_interrupts_9_IRQHandler + + PUBWEAK tcpwm_1_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_10_IRQHandler + B tcpwm_1_interrupts_10_IRQHandler + + PUBWEAK tcpwm_1_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_11_IRQHandler + B tcpwm_1_interrupts_11_IRQHandler + + PUBWEAK tcpwm_1_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_12_IRQHandler + B tcpwm_1_interrupts_12_IRQHandler + + PUBWEAK tcpwm_1_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_13_IRQHandler + B tcpwm_1_interrupts_13_IRQHandler + + PUBWEAK tcpwm_1_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_14_IRQHandler + B tcpwm_1_interrupts_14_IRQHandler + + PUBWEAK tcpwm_1_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_15_IRQHandler + B tcpwm_1_interrupts_15_IRQHandler + + PUBWEAK tcpwm_1_interrupts_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_16_IRQHandler + B tcpwm_1_interrupts_16_IRQHandler + + PUBWEAK tcpwm_1_interrupts_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_17_IRQHandler + B tcpwm_1_interrupts_17_IRQHandler + + PUBWEAK tcpwm_1_interrupts_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_18_IRQHandler + B tcpwm_1_interrupts_18_IRQHandler + + PUBWEAK tcpwm_1_interrupts_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_19_IRQHandler + B tcpwm_1_interrupts_19_IRQHandler + + PUBWEAK tcpwm_1_interrupts_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_20_IRQHandler + B tcpwm_1_interrupts_20_IRQHandler + + PUBWEAK tcpwm_1_interrupts_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_21_IRQHandler + B tcpwm_1_interrupts_21_IRQHandler + + PUBWEAK tcpwm_1_interrupts_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_22_IRQHandler + B tcpwm_1_interrupts_22_IRQHandler + + PUBWEAK tcpwm_1_interrupts_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_23_IRQHandler + B tcpwm_1_interrupts_23_IRQHandler + + PUBWEAK udb_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_0_IRQHandler + B udb_interrupts_0_IRQHandler + + PUBWEAK udb_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_1_IRQHandler + B udb_interrupts_1_IRQHandler + + PUBWEAK udb_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_2_IRQHandler + B udb_interrupts_2_IRQHandler + + PUBWEAK udb_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_3_IRQHandler + B udb_interrupts_3_IRQHandler + + PUBWEAK udb_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_4_IRQHandler + B udb_interrupts_4_IRQHandler + + PUBWEAK udb_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_5_IRQHandler + B udb_interrupts_5_IRQHandler + + PUBWEAK udb_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_6_IRQHandler + B udb_interrupts_6_IRQHandler + + PUBWEAK udb_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_7_IRQHandler + B udb_interrupts_7_IRQHandler + + PUBWEAK udb_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_8_IRQHandler + B udb_interrupts_8_IRQHandler + + PUBWEAK udb_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_9_IRQHandler + B udb_interrupts_9_IRQHandler + + PUBWEAK udb_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_10_IRQHandler + B udb_interrupts_10_IRQHandler + + PUBWEAK udb_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_11_IRQHandler + B udb_interrupts_11_IRQHandler + + PUBWEAK udb_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_12_IRQHandler + B udb_interrupts_12_IRQHandler + + PUBWEAK udb_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_13_IRQHandler + B udb_interrupts_13_IRQHandler + + PUBWEAK udb_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_14_IRQHandler + B udb_interrupts_14_IRQHandler + + PUBWEAK udb_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_15_IRQHandler + B udb_interrupts_15_IRQHandler + + PUBWEAK pass_interrupt_sar_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_sar_IRQHandler + B pass_interrupt_sar_IRQHandler + + PUBWEAK audioss_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_i2s_IRQHandler + B audioss_interrupt_i2s_IRQHandler + + PUBWEAK audioss_interrupt_pdm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_pdm_IRQHandler + B audioss_interrupt_pdm_IRQHandler + + PUBWEAK profile_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +profile_interrupt_IRQHandler + B profile_interrupt_IRQHandler + + PUBWEAK smif_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +smif_interrupt_IRQHandler + B smif_interrupt_IRQHandler + + PUBWEAK usb_interrupt_hi_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_hi_IRQHandler + B usb_interrupt_hi_IRQHandler + + PUBWEAK usb_interrupt_med_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_med_IRQHandler + B usb_interrupt_med_IRQHandler + + PUBWEAK usb_interrupt_lo_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_lo_IRQHandler + B usb_interrupt_lo_IRQHandler + + PUBWEAK pass_interrupt_dacs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_dacs_IRQHandler + B pass_interrupt_dacs_IRQHandler + + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/LICENSE.txt b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/LICENSE.txt new file mode 100644 index 00000000000..7adfadddb21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2018-2019 Cypress Semiconductor Corporation + +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/README.md new file mode 100644 index 00000000000..c4c2c82e613 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/README.md @@ -0,0 +1,18 @@ +README for pre-compiled PSoC 6 Cortex M0+ core images +===================================================== + +This folder contains precompiled program images for the CM0+ core of the +PSoC 6 MCU suitable for use with Mbed OS applications running on CM4 core. + +* `psoc6_01_cm0p_sleep.hex` + + This image starts CM4 core at CY_CORTEX_M4_APPL_ADDR=0x10080000 + and puts CM0+ core into a deep sleep. + +The images are 'bare metal' code prepared with Cypress ModusToolbox IDE +and are toolchain agnostic, i.e. can be used with CM4 Mbed applications +build with any supported toolchain. + +**These images were prepared by Cypress Semiconductor Corporation +and are made available under the conditions of Permissive Binary Licence, +see file LICENSE.txt** diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/psoc6_01_cm0p_sleep.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/psoc6_01_cm0p_sleep.hex new file mode 100644 index 00000000000..58b7e756cbb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/hex/psoc6_01_cm0p_sleep.hex @@ -0,0 +1,106 @@ +:020000041000EA +:40000000002000080B0100100D0000006D01001000000000000000000000000000000000000000000000000000000000690100100000000000000000690100106901001083 +:4000400069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010E0 +:4000800069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010A0 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD6C050008000000000C150010044B10B5002B03D00349044800E000BF10BDC04600000000C9 +:40010000700500080C1500107047FFF7FDFF72B60F4C104DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E70A490B4A0020521A02DD043A8850FCDC084809495F +:400140000860BFF34F8F00F0F1F800F099F9FEE710150010281500106C0500087C0700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880B8 +:40018000043000F0DBFDFEE710B5002000F040FC10BD7047E02370B5544C9B00E2580F23D02113409A0089001219505807210840032860D0042861D0424250414C4A40426B +:4001C00010404C4A8018002B67D1B223B1220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233F4ADB00E558A158EC +:40020000E658C904C90C00F051FFAD03AD0B6843F101C90F013100F049FFE0239B00E3589B069B0FD840354B1860354B1C691969240A090E013100F039FF324BE1B2186075 +:40024000013100F033FF304B040018602F4B30491860304BC01800F029FFFA212E4B890018702E4BE01800F021FF2D4B18602D4BC003186070BD2C4A1068A4E7C021890084 +:4002800052581F210A40112A01D0132A02D18020000298E7FA20C00195E7012BBDD1C823C0220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A7A +:4002C00001D1EA0701D4032BA7D1C022D200A358A158A5587F221F261340090A3140584300F0E4FE290C314095E7C0460000264000DC0BFF00366E0184050000C80000087F +:4003000000002140CC000008C0000008D400000840420F003F420F00DC000008E7030000D8000008D0000008C400000810B5244800F0C2F8B022E0213020224CD200A35838 +:4003400089005B005B08A35063588343635080235B04A3501C4B1D4AE250A02204339201E250FF221A4BE25000F08EFEC02201215200A3588B43A350FFF70BFFFFF70AFF17 +:40038000B0235B055A78002A02D05B78212B03D10022104BDA605A600F4A8021042000F09FFB0E4800F09EF90D4B1B6851331B78002B02D00B4800F001FA00F035F910BD3B +:4003C0005C1200100000264084050000010002008C050000E000234088050008980500087807000828120010024BD86F032318407047C0460400214010B500F056F8074927 +:40040000074ACB6F1A40074B1343CB67102306490A681A42FCD000F04CF810BD04002140FCFF00000100FA058800214070B50F4C060000F03AF8E36F0500DB439B0701D106 +:40044000FFF7DAFFB0230A4A9B00D650E36F094A09491A40094B1343E36710230A681A42FCD0280000F025F870BDC0460400214000002140FCFF0000880021400300FA059F +:4004800010B562B60348FFF7D1FF002000F066FDFBE7C046002000100230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047014B18607047C046A7 +:4004C000780700081D4B98420FD010D840282FD005D8002830D0102828D019481EE0802828D080235B009842F7D1144816E0154B984214D008D8A0231B0698421CD0124BDA +:400500009842EAD1A0200BE0104B98420AD0104B984209D00F4B9842DFD10F487047A420C003FBE70D48F9E70D48F7E70D48F5E70D48F3E70D48F1E70020EFE706005200C0 +:40054000FF005200010000F0090000A0040000F0050000F0030000F001005200020052000300520001005000020050000500520070B50A4D04002B6831331B78834204D813 +:40058000C4210748FF3100F0C9FB2B681A00B03210884443186A201870BDC046780700081413001010B50020FFF7E2FF0A4B1C682300B4331B68C0180368002B0ADB074B03 +:4005C0001868FFF77FFF012263689A609A68002AFCD110BD0248FCE77807000818070008020050000D4B10B51860002804D0FE235B42038000234380094B1B681A00503201 +:400600001278002A08D051331B78002B04D002220449002000F06EF910BDC04628070008780700084D01000810B50248FFF7DAFF10BDC0462C0700080B4B70B51B6805005A +:40064000B4331B680C00C3181B68002B09DA0B0C03D00649064800F061FB0020A4B26C6070BD0448FCE7C04678070008D50200001413001001008A00036870B505000C0060 +:40068000002B0ADAC2600B0C03D00549054800F045FB0020A4B2AC6070BD0348FCE7C046BB0200001413001001008A0070B505000C1E03D19921084800F030FB074B1B68D0 +:4006C000B4331B68EB181B68002B03DA0020EB68236070BD0248FCE77A1300107807000801008A00024B1A68002A00D11860704730070008F7B52C4D1F002B68040000915F +:400700000192002B03D1B521284800F007FB2C23FF225C432B683D001C193B0A3F0CA760234F134063603B681540256031331B789D4204D3C4211F48FF3100F0EFFA3B689A +:400740001A00B032128855431A6A3233AD1825611B7865689D4204D3E0211648FF3100F0DDFA3B6880351B6A6D01A668ED186561330C09D0FF210F4F4900380000F0CEFAB8 +:400780000D49380000F0CAFA33041A0C1343AB60019BE361009B23620023A361089B002B01D01B782373F7BD30070008DF1300107807000814130010FF010000F0B50400EE +:4007C00085B0002803D15221214800F0A7FA6368032B03D954211E4800F0A0FAE36A002B03D158211A4800F099FA236B002B03D15921174800F092FAA36802AD2B70154BE0 +:4008000022681B68E16ADB8EE0689B186B706368A26A039300952369266A676AFFF76AFF00213B000A0000913000FFF763FF216B280000F01FFA0023EB56002B06DB1F22E6 +:4008400013401E3A9A401300034A136005B0F0BDDF1300107807000800E100E0F7B504000F00151E019303D1FD211C4800F056FA1B4E3368002B03D1FE21184800F04EFA9E +:400880002C235C4332685F4314192669D719002E1FD0BB69002B1ED13368002B1BDA01226368140011009C407B6899402B6809049BB20B432B60019BF5607B62BA61230CC3 +:4008C00003D00849084800F029FA0020A4B2B460FEBD0648FCE70648FAE7C046DF13001030070008BB0200001413001004028A0007028A00F8B5114F04003B680E00150097 +:40090000002B04D1AF210E48490000F007FA2C2060433C682418236A002B04D1B1210848490000F0FBF9E369AB4204D90020236AAD00EE50F8BD0348FCE7C04630070008D6 +:40094000DF1300100A028A00002373B504000193984204D1D2212C48FF3100F0DFF92369002B04D1E9212848490000F0D7F96369002B04D1D4212448FF3100F0CFF9236A3D +:40098000002B04D1EA212048490000F0C7F96269D5682B0C22D01B04136013681B4B20691B68B4331B68C3181B68002B16DA01A9FFF77CFE0026B0420CD10198E2690368DA +:4009C0001E0CDBB29A4205D9226A9B009B58002B00D0984731002069FFF72EFEADB2002D09D063691D6000251B68636AAB4205D098476562A56163691B6873BDA36A002B6E +:400A0000F8D09847F6E7C046DF1300107807000870B5084C05002368002B04D1B2210648FF3100F07BF92C20454320684019FFF78BFF70BD30070008DF13001070B50A4DC6 +:400A400004002B6831331B78834204D8C4210748FF3100F063F92B681A00B03210884443186A201870BDC0467807000814130010F8B5174B0D001B6831331B78834225D9E5 +:400A8000002923D01F240B681C401FD1FFF7D6FF07002B680F4EDA0821003060686800F091FB21003800FFF7C7FD21002A003068FFF7E2FD041E07D101003068FFF7BCFD6A +:400AC00003002000002B00D00348F8BD0348FCE7780700083C07000801018A0003018A0010B50C00002A07D100290DD1FFF7A6FF064B1860200010BD002905D004490C60DC +:400B00004A60FFF7B5FFF6E70248F4E73C0700083407000803018A00F7B5184F04003B680191DE683368834226D90025A94202D1FFF7BBFC050038680368002B1ADA1F2252 +:400B400001232240934064097268A4001419226813420DD09A43226000240021FFF76CFD019B002B02D12800FFF7A3FC2000FEBD034CF2E7034CF3E7034CF7E73C0700084A +:400B8000020188000301880004018A000A4B1B68DB681A6882420DD959681F23420918401E3B8340920050581840431E9841034BC01870470248FCE73C07000800018800DC +:400BC00004018A0070B51A4E050033680C001A0028321278012A15D182080721100088430FD103202840C00084401B68920020339B182200FF24844019684A4014404C4093 +:400C00001C6070BD5B8FDBB28B4203D17621094800F084F80720802205408020336892011B680006A4180543A400E550E9E7C04678070008451400100A4B70B59B680A4EC2 +:400C400010300D008400B34209D1002904D138210648FF3100F062F83059355170BD044B1859FBE700ED00E0000000084514001000000010F8B506000D00002841D04368E5 +:400C8000032B03D93221204800F048F800203056002828DB7178FFF795FF0024FF2200200327944630567168C3B21F40FF006646BA4089013140D243B940002815DB134E38 +:400CC00083089B009B19C026B6009F593A40114399510F4B9A680F4B9A4202D12900FFF7ABFF2000F8BD0C4CD8E70F263340083B074E9B089B009B19DE6932401143D9613B +:400D0000E7E7054CEDE7C0464514001000E100E000ED00E0000000080100560070B50D00044C01001822200000F054FAA56101BEFEE7C04630050008FEE7000002680A4BB8 +:400D400010B5DA6142681A6282685A62C2689A620269DA6242691A6382695A63C2699A63FFF7EAFF10BDC04630050008B0235B055A782120002A01D05878C0B27047B023E6 +:400D80005B059A89002A02D0988980B2704780204000FBE710B5074C236831331B78002B04D1C4210448FF31FFF7B8FF2368186A10BDC046780700081413001030B50400B9 +:400DC00085B00D00042803D927492848FFF7A6FF6B1E012B07D9FB222B1F134203D024492248FFF79BFF234BA400E458042D01D0012D1AD100200FE0A3682B420BD1E3688C +:400E000029001A685B6802920193039302A823689847194B1C606469002C04D0174B9842EAD1012DE8D105B030BD022D06D1124B1B68181EF7D01C6903E01C006369002BE7 +:400E4000FBD10020002CEED0A3682B4209D1E36829001A685B6802920193039302A8236898472469EEE7C046DC090000A9140010DD0900004407000840070008FF004200DC +:400E800010B5041E03D111491148FFF747FFF222104BD2011B68DB689A582260F022D2019A5862600C4A9A58A2600C4A9A58E2600B4A9A5822610B4A9A5862610A4A9A5885 +:400EC000A2610A4A9B58E36110BDC046CB0A0000A91400107807000804780000087800000C78000010780000147800001878000010B5041E03D110491048FFF70FFFF022C2 +:400F00000F4B61681B68D201DB689950A1680D4A9950E1680C4A995021690C4A995061690B4A9950A1690B4A9950E1690A4A99502168E832995010BDF30A0000A914001078 +:400F40007807000804780000087800000C780000107800001478000018780000F7B50700012803D940494148FFF7D8FE404D6B68002B4AD1FFF799FA6B680190002B56D14B +:400F80003C4E33681A0043321278002A07D09B68E0331B68DB0602D53748FFF771FFFFF7EEFE80235B00984246D1380000F034F9002433681A0043321278002A17D0002885 +:400FC00015D09B68E0331B68DB0610D5FFF7CEFE294B212808D032681300B033198807234B43126A9B18DB681800FFF781FF0198FFF75FFA002C0ED16B68002B03D0082180 +:401000000120FFF7DBFE2000FEBD01210800FFF7D5FE041EAED06B68002B03D002210120FFF7CCFE154B9C42EDD0154CEBE704210120FFF7C3FEA3E7FFF7ACFE3368B433A6 +:401040001B68C0180368002B0BDB04230D4A11690B431361012F02D030BF0020A8E720BFFBE70020054CA4E7A5020000A91400104407000878070008580700080500420086 +:40108000FF00420000ED00E0C0228020064952008B58C0059B009B0803438B50802388581B0603438B50704700002640002243088B4274D303098B425FD3030A8B4244D399 +:4010C000030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241C3 +:40110000430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4289 +:4011400001D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D37E +:40118000CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E77047A8 +:4011C0007047C04603001218934200D1704719700133F9E730B50500002A00D130BD0C78013A6B1C2C700131002C05D19A189A42F4D01C700133FAE71D00EDE7F8B5C0468C +:40120000F8BC08BC9E467047F8B5C046F8BC08BC9E4670470000000001B40248844601BC604700BFA9020008030000000100000001000000000000000503600004000000C5 +:401240000100000000000000010000000604600008000000F8060008890100100000214000002540000001400000344000002440000031400000324000001F4100002340D5 +:4012800000001140010101010101010101101010800019005500F0000501053B04101C01010000000FC000000004000001010101011D3A5778960008200010120800000068 +:4012C000001F00000010000F002000023F06080E00080009000A000B24282C3034000000100000009000000088000000080000008000000004F0000000F00000400200005B +:401300002005A000D00100018001A0012000000010000000433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736FB1 +:40134000633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F696E636C7564652F63795F6970635F6472762E6800433A2F5573655D +:4013800072732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670B4 +:4013C000646C2F647269766572732F736F757263652F63795F6970635F6472762E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69A3 +:40140000627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F6970635F706968 +:4014400070652E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6EF8 +:40148000656E74732F70736F633670646C2F647269766572732F736F757263652F63795F737973696E742E6300433A2F55736572732F766D65642F4D6F647573546F6F6C17 +:4014C000626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263654A +:401500002F63795F737973706D2E6300000000000000001000000008C000000030150010C0000008700400006C0500081002000000093D000048E80100127A0000093D0037 +:401540000000D00700093D00A00F000004000000E9000010C100001080B230B5C00020D0104B07221C682300B0331B885A43236AD31819680029FCDA3E210B4B062519606B +:401580000A4B0B491960A3210A4BC9005D500A4958505858206A1218002050605A58002AFCDA30BD7807000804012640080126401E1F0000000026401C05000010B5437807 +:4015C000FF2B11D100F0CCF90400042000F0A8F9C3685A68012311681943116011681942FCD1200000F0C4F910BDF7B500900020019100F095F93F4D06002B681A005033B1 +:40160000B43214681B780419002B5AD000F090F9070003281BD000F0A3F9374A374B0500D358002B3EDA364A0121300000F0A8F9002837D10198FFF78FFF009B002B3ED027 +:401640002368002BFCDB00F07BF904002BE0062000F066F92B68B4331B68C0180368002B02DA284C2000FEBD002000F091F9264B9842F6D00023254A19001268012000F07E +:4016800047F90025A842ECD1002000F081F91E4A1F4B904203D09D42E3D00135F4E79D42B9D1DEE7174C032F05D10121002000F04FF90028F9D1280000F05AF9D2E7154CF0 +:4016C000F1E700F04DF90E4A05000121300000F057F9002809D1009B002B08D02368002BFCDB00F02DF90400E5E7064CE3E7094CE1E7C04678070008000026401C0500008D +:4017000018070008050052000101880028070008F049020001005000F7B56E4D04002A68536800931300B033198807234B43126A9B181A68002AFCDA00F0E2F82A68130024 +:40174000B033198807234B43212800D096E0116A5B180221D8680143D960D968C9072FD508208446944460461600D968C06F01911168883608183568076849190D683902BE +:40178000FF273F040F40694689882D0A2D0639432943D960902103684F4D09012B400B430360136830681B18186805402943196013686246D26F9A18126832689B181B68F8 +:4017C000444D2A681300B033198807234B43126A9B1800225A600423404A11690B431361012C50D030BF2A681300B033198807234B43126A9B181A68002AFCDA00F080F849 +:40180000212842D1296807220B000124B0331B8800205A430B6AD318DD6825421CD0080008300D68C06F2C4E28180568DB6835401B0C1B061B0C2B4303600B0088331868DE +:401840000B6818180B6A0568D318DB682E401B0E1B023343036020000B6A0221D218D3688B43D3601B4B1A681300B033198807234B43126A9B1800225A60FEBD126A9B181E +:40188000174ADA609CE720BFADE70020009BFC331B698342E6D1A320124B1349134A144FC0000E681D5814680F6006271F503E20106010483E371F501F58002FFCDA009821 +:4018C0000D4FFC3007610E60A321C9005D5001201460C7E778070008FF00FFFF00ED00E0580700080000264008012640040126401E1F00001C050000AAAAAAAA000000000F +:4019000001B40248844601BC604700BF6D0D001001B40248844601BC604700BF5D08001001B40248844601BC604700BF7105001001B40248844601BC604700BFE903001076 +:4019400001B40248844601BC604700BFA505001001B40248844601BC604700BF190B001001B40248844601BC604700BFAB04001001B40248844601BC604700BFB304001043 +:4019800001B40248844601BC604700BF7906001001B40248844601BC604700BF8D0B0010000000000000000000000000000000000000000000000000000000000000000018 +:4019C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7 +:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6.h new file mode 100644 index 00000000000..6dcb0ce124d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6.h @@ -0,0 +1,669 @@ +/***************************************************************************//** +* \file system_psoc6.h +* \version 2.30 +* +* \brief Device system header file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#ifndef _SYSTEM_PSOC6_H_ +#define _SYSTEM_PSOC6_H_ + +/** +* \addtogroup group_system_config +* \{ +* Provides device startup, system configuration, and linker script files. +* The system startup provides the followings features: +* - See \ref group_system_config_device_initialization for the: +* * \ref group_system_config_dual_core_device_initialization +* * \ref group_system_config_single_core_device_initialization +* - \ref group_system_config_device_memory_definition +* - \ref group_system_config_heap_stack_config +* - \ref group_system_config_merge_apps +* - \ref group_system_config_default_handlers +* - \ref group_system_config_device_vector_table +* - \ref group_system_config_cm4_functions +* +* \section group_system_config_configuration Configuration Considerations +* +* \subsection group_system_config_device_memory_definition Device Memory Definition +* The flash and RAM allocation for each CPU is defined by the linker scripts. +* For dual-core devices, the physical flash and RAM memory is shared between the CPU cores. +* 2 KB of RAM (allocated at the end of RAM) are reserved for system use. +* For Single-Core devices the system reserves additional 80 bytes of RAM. +* Using the reserved memory area for other purposes will lead to unexpected behavior. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see warnings during the build process. To eliminate build +* warnings in your project, you can simply comment out or remove the relevant +* code in the linker file. +* +* ARM GCC\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.ld', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.ld' and 'cy8c6xx7_cm4_dual.ld'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10000000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00024000 +* \endcode +* - 'xx_cm4_dual.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10080000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the rom ORIGIN's +* value in the 'xx_cm4_dual.ld' file, where 'xx' is the device group. Do this +* by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* ARM MDK\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.scat', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.scat' and 'cy8c6xx7_cm4_dual.scat'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see the warnings during the build process: +* L6314W (no section matches pattern) and/or L6329W +* (pattern only matches removed unused sections). In your project, you can +* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +* the linker. You can also comment out or remove the relevant code in the linker +* file. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10000000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08000000 +* #define RAM_SIZE 0x00024000 +* \endcode +* - 'xx_cm4_dual.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10080000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08024000 +* #define RAM_SIZE 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the FLASH_START +* value in the 'xx_cm4_dual.scat' file, +* where 'xx' is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* IAR\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.icf', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.icf' and 'cy8c6xx7_cm4_dual.icf'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10000000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10080000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08000000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08024000; +* \endcode +* - 'xx_cm4_dual.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10080000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10100000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08024000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08047800; +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the +* __ICFEDIT_region_IROM1_start__ value in the 'xx_cm4_dual.icf' file, where 'xx' +* is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* \subsection group_system_config_device_initialization Device Initialization +* After a power-on-reset (POR), the boot process is handled by the boot code +* from the on-chip ROM that is always executed by the Cortex-M0+ core. The boot +* code passes the control to the Cortex-M0+ startup code located in flash. +* +* \subsubsection group_system_config_dual_core_device_initialization Dual-Core Devices +* The Cortex-M0+ startup code performs the device initialization by a call to +* SystemInit() and then calls the main() function. The Cortex-M4 core is disabled +* by default. Enable the core using the \ref Cy_SysEnableCM4() function. +* See \ref group_system_config_cm4_functions for more details. +* \note Startup code executes SystemInit() function for the both Cortex-M0+ and Cortex-M4 cores. +* The function has a separate implementation on each core. +* Both function implementations unlock and disable the WDT. +* Therefore enable the WDT after both cores have been initialized. +* +* \subsubsection group_system_config_single_core_device_initialization Single-Core Devices +* The Cortex-M0+ core is not user-accessible on these devices. In this case the +* Flash Boot handles setup of the CM0+ core and starts the Cortex-M4 core. +* +* \subsection group_system_config_heap_stack_config Heap and Stack Configuration +* There are two ways to adjust heap and stack configurations: +* -# Editing source code files +* -# Specifying via command line +* +* By default, the stack size is set to 0x00001000 and the heap size is set to 0x00000400. +* +* \subsubsection group_system_config_heap_stack_config_gcc ARM GCC +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* Change the heap and stack sizes by modifying the following lines:\n +* \code .equ Stack_Size, 0x00001000 \endcode +* \code .equ Heap_Size, 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the compiler:\n +* \code -D __STACK_SIZE=0x000000400 \endcode +* \code -D __HEAP_SIZE=0x000000100 \endcode +* +* \subsubsection group_system_config_heap_stack_config_mdk ARM MDK +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the assembler:\n +* \code "--predefine=___STACK_SIZE SETA 0x000000400" \endcode +* \code "--predefine=__HEAP_SIZE SETA 0x000000100" \endcode +* +* \subsubsection group_system_config_heap_stack_config_iar IAR +* - Editing source code files\n +* The heap and stack sizes are defined in the linker scatter files: 'xx_yy.icf', +* where 'xx' is the device family, and 'yy' is the target CPU; for example, +* cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the +* linker (including quotation marks):\n +* \code --define_symbol __STACK_SIZE=0x000000400 \endcode +* \code --define_symbol __HEAP_SIZE=0x000000100 \endcode +* +* \subsection group_system_config_merge_apps Merging CM0+ and CM4 Executables +* The CM0+ project and linker script build the CM0+ application image. Similarly, +* the CM4 linker script builds the CM4 application image. Each specifies +* locations, sizes, and contents of sections in memory. See +* \ref group_system_config_device_memory_definition for the symbols and default +* values. +* +* The cymcuelftool is invoked by a post-build command. The precise project +* setting is IDE-specific. +* +* The cymcuelftool combines the two executables. The tool examines the +* executables to ensure that memory regions either do not overlap, or contain +* identical bytes (shared). If there are no problems, it creates a new ELF file +* with the merged image, without changing any of the addresses or data. +* +* \subsection group_system_config_default_handlers Default Interrupt Handlers Definition +* The default interrupt handler functions are defined as weak functions to a dummy +* handler in the startup file. The naming convention for the interrupt handler names +* is \_IRQHandler. A default interrupt handler can be overwritten in +* user code by defining the handler function using the same name. For example: +* \code +* void scb_0_interrupt_IRQHandler(void) +*{ +* ... +*} +* \endcode +* +* \subsection group_system_config_device_vector_table Vectors Table Copy from Flash to RAM +* This process uses memory sections defined in the linker script. The startup +* code actually defines the contents of the vector table and performs the copy. +* \subsubsection group_system_config_device_vector_table_gcc ARM GCC +* The linker script file is 'xx_yy.ld', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.ld and cy8c6xx7_cm4_dual.ld. +* It defines sections and locations in memory.\n +* Copy interrupt vectors from flash to RAM: \n +* From: \code LONG (__Vectors) \endcode +* To: \code LONG (__ram_vectors_start__) \endcode +* Size: \code LONG (__Vectors_End - __Vectors) \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* The code in these files copies the vector table from Flash to RAM. +* \subsubsection group_system_config_device_vector_table_mdk ARM MDK +* The linker script file is 'xx_yy.scat', where 'xx' is the device family, +* and 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.scat and +* cy8c6xx7_cm4_dual.scat. The linker script specifies that the vector table +* (RESET_RAM) shall be first in the RAM section.\n +* RESET_RAM represents the vector table. It is defined in the assembler startup +* files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \subsubsection group_system_config_device_vector_table_iar IAR +* The linker script file is 'xx_yy.icf', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* This file defines the .intvec_ram section and its location. +* \code place at start of IRAM1_region { readwrite section .intvec_ram}; \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \section group_system_config_more_information More Information +* Refer to the PDL User Guide for the +* more details. +* +* \section group_system_config_MISRA MISRA Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
2.3RThe character sequence // shall not be used within a comment.The comments provide a useful WEB link to the documentation.
+* +* \section group_system_config_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.30Added assembler files, linker skripts for Mbed OS.Added Arm Mbed OS embedded operating system support.
Updated linker scripts to extend the Flash and Ram memories size available for the CM4 core.Enhanced PDL usability.
2.20Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup.Changed the IPC driver configuration method from compile time to run time.
2.10Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* uVision Debugger support.
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* Documentation improvement.
2.0Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +*
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* Linker scripts usability improvement.
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API.Reserved system resources for internal operations.
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API.To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering.
1.0Initial version
+* +* +* \defgroup group_system_config_macro Macro +* \{ +* \defgroup group_system_config_system_macro System +* \defgroup group_system_config_cm4_status_macro Cortex-M4 Status +* \defgroup group_system_config_user_settings_macro User Settings +* \} +* \defgroup group_system_config_functions Functions +* \{ +* \defgroup group_system_config_system_functions System +* \defgroup group_system_config_cm4_functions Cortex-M4 Control +* \} +* \defgroup group_system_config_globals Global Variables +* +* \} +*/ + +/** +* \addtogroup group_system_config_system_functions +* \{ +* \details +* The following system functions implement CMSIS Core functions. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* \} +*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************************* +* Include files +*******************************************************************************/ +#include + + +/******************************************************************************* +* Global preprocessor symbols/macros ('define') +*******************************************************************************/ +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined (__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3))) + #define CY_SYSTEM_CPU_CM0P 1UL +#else + #define CY_SYSTEM_CPU_CM0P 0UL +#endif + +#if defined (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) + #include "cyfitter.h" +#endif /* (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) */ + + + + +/******************************************************************************* +* +* START OF USER SETTINGS HERE +* =========================== +* +* All lines with '<<<' can be set by user. +* +*******************************************************************************/ + +/** +* \addtogroup group_system_config_user_settings_macro +* \{ +*/ + +#if defined (CYDEV_CLK_EXTCLK__HZ) + #define CY_CLK_EXT_FREQ_HZ (CYDEV_CLK_EXTCLK__HZ) +#else + /***************************************************************************//** + * External Clock Frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_EXT_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_EXTCLK__HZ) */ + + +#if defined (CYDEV_CLK_ECO__HZ) + #define CY_CLK_ECO_FREQ_HZ (CYDEV_CLK_ECO__HZ) +#else + /***************************************************************************//** + * \brief External crystal oscillator frequency (in Hz, [value]UL). If compiled + * within PSoC Creator and the clock is enabled in the DWR, the value from DWR + * used. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ECO_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_ECO__HZ) */ + + +#if defined (CYDEV_CLK_ALTHF__HZ) + #define CY_CLK_ALTHF_FREQ_HZ (CYDEV_CLK_ALTHF__HZ) +#else + /***************************************************************************//** + * \brief Alternate high frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ALTHF_FREQ_HZ (32000000UL) /* <<< 32 MHz */ +#endif /* (CYDEV_CLK_ALTHF__HZ) */ + + +/***************************************************************************//** +* \brief Start address of the Cortex-M4 application ([address]UL) +* (USER SETTING) +*******************************************************************************/ +#if !defined (CY_CORTEX_M4_APPL_ADDR) + #define CY_CORTEX_M4_APPL_ADDR (CY_FLASH_BASE + 0x2000U) /* <<< 8 kB of flash is reserved for the Cortex-M0+ application */ +#endif /* (CY_CORTEX_M4_APPL_ADDR) */ + + +/***************************************************************************//** +* \brief IPC Semaphores allocation ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_SEMA_COUNT (128UL) /* <<< This will allow 128 (4*32) semaphores */ + + +/***************************************************************************//** +* \brief IPC Pipe definitions ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_MAX_ENDPOINTS (8UL) /* <<< 8 endpoints */ + + +/******************************************************************************* +* +* END OF USER SETTINGS HERE +* ========================= +* +*******************************************************************************/ + +/** \} group_system_config_user_settings_macro */ + + +/** +* \addtogroup group_system_config_system_macro +* \{ +*/ + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M0+ startup driver identifier */ + #define CY_STARTUP_M0P_ID ((uint32_t)((uint32_t)((0x0EU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + +#if (CY_SYSTEM_CPU_CM0P != 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M4 startup driver identifier */ + #define CY_STARTUP_M4_ID ((uint32_t)((uint32_t)((0x0FU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P != 1UL) */ + +/** \} group_system_config_system_macro */ + + +/** +* \addtogroup group_system_config_system_functions +* \{ +*/ +#if defined(__ARMCC_VERSION) + extern void SystemInit(void) __attribute__((constructor)); +#else + extern void SystemInit(void); +#endif /* (__ARMCC_VERSION) */ + +extern void SystemCoreClockUpdate(void); +/** \} group_system_config_system_functions */ + + +/** +* \addtogroup group_system_config_cm4_functions +* \{ +*/ +extern uint32_t Cy_SysGetCM4Status(void); +extern void Cy_SysEnableCM4(uint32_t vectorTableOffset); +extern void Cy_SysDisableCM4(void); +extern void Cy_SysRetainCM4(void); +extern void Cy_SysResetCM4(void); +/** \} group_system_config_cm4_functions */ + + +/** \cond */ +extern void Default_Handler (void); + +void Cy_SysIpcPipeIsrCm0(void); +void Cy_SysIpcPipeIsrCm4(void); + +extern void Cy_SystemInit(void); +extern void Cy_SystemInitFpuEnable(void); + +extern uint32_t cy_delayFreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; +/** \endcond */ + + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) +/** +* \addtogroup group_system_config_cm4_status_macro +* \{ +*/ +#define CY_SYS_CM4_STATUS_ENABLED (3U) /**< The Cortex-M4 core is enabled: power on, clock on, no isolate, no reset and no retain. */ +#define CY_SYS_CM4_STATUS_DISABLED (0U) /**< The Cortex-M4 core is disabled: power off, clock off, isolate, reset and no retain. */ +#define CY_SYS_CM4_STATUS_RETAINED (2U) /**< The Cortex-M4 core is retained. power off, clock off, isolate, no reset and retain. */ +#define CY_SYS_CM4_STATUS_RESET (1U) /**< The Cortex-M4 core is in the Reset mode: clock off, no isolated, no retain and reset. */ +/** \} group_system_config_cm4_status_macro */ + +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + + +/******************************************************************************* +* IPC Configuration +* ========================= +*******************************************************************************/ +/* IPC CY_PIPE default configuration */ +#define CY_SYS_CYPIPE_CLIENT_CNT (8UL) + +#define CY_SYS_INTR_CYPIPE_MUX_EP0 (1UL) /* IPC CYPRESS PIPE */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP0 (1UL) /* Notifier Priority */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP1 (1UL) /* Notifier Priority */ + +#define CY_SYS_CYPIPE_CHAN_MASK_EP0 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CHAN_MASK_EP1 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP1) + + +/******************************************************************************/ +/* + * The System pipe configuration defines the IPC channel number, interrupt + * number, and the pipe interrupt mask for the endpoint. + * + * The format of the endPoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ + +/* System Pipe addresses */ +/* CyPipe defines */ + +#define CY_SYS_CYPIPE_INTR_MASK ( CY_SYS_CYPIPE_CHAN_MASK_EP0 | CY_SYS_CYPIPE_CHAN_MASK_EP1 ) + +#define CY_SYS_CYPIPE_CONFIG_EP0 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP0 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CONFIG_EP1 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP1 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP1) + +/******************************************************************************/ + + +/** \addtogroup group_system_config_globals +* \{ +*/ + +extern uint32_t SystemCoreClock; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_PeriClkFreqHz; + +/** \} group_system_config_globals */ + + + +/** \cond INTERNAL */ +/******************************************************************************* +* Backward compatibility macro. The following code is DEPRECATED and must +* not be used in new projects +*******************************************************************************/ + +/* BWC defines for functions related to enter/exit critical section */ +#define Cy_SaveIRQ Cy_SysLib_EnterCriticalSection +#define Cy_RestoreIRQ Cy_SysLib_ExitCriticalSection +#define CY_SYS_INTR_CYPIPE_EP0 (CY_IPC_INTR_CYPIPE_EP0) +#define CY_SYS_INTR_CYPIPE_EP1 (CY_IPC_INTR_CYPIPE_EP1) + +/** \endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYSTEM_PSOC6_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6_cm4.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6_cm4.c new file mode 100644 index 00000000000..da838b41236 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/device/system_psoc6_cm4.c @@ -0,0 +1,582 @@ +/***************************************************************************//** +* \file system_psoc6_cm4.c +* \version 2.30 +* +* The device system-source file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "device.h" +#include "system_psoc6.h" +#include "cy_device_headers.h" +#include "psoc6_utils.h" +#include "cy_syslib.h" +#include "cy_wdt.h" +#include "cycfg.h" + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + #include "cy_ipc_sema.h" + #include "cy_ipc_pipe.h" + #include "cy_ipc_drv.h" + + #if defined(CY_DEVICE_PSOC6ABLE2) + #include "cy_flash.h" + #endif /* defined(CY_DEVICE_PSOC6ABLE2) */ +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ + + +/******************************************************************************* +* SystemCoreClockUpdate() +*******************************************************************************/ + +/** Default HFClk frequency in Hz */ +#define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL) + +/** Default PeriClk frequency in Hz */ +#define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL) + +/** Default SlowClk system core frequency in Hz */ +#define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL) + +/** IMO frequency in Hz */ +#define CY_CLK_IMO_FREQ_HZ (8000000UL) + +/** HVILO frequency in Hz */ +#define CY_CLK_HVILO_FREQ_HZ (32000UL) + +/** PILO frequency in Hz */ +#define CY_CLK_PILO_FREQ_HZ (32768UL) + +/** WCO frequency in Hz */ +#define CY_CLK_WCO_FREQ_HZ (32768UL) + +/** ALTLF frequency in Hz */ +#define CY_CLK_ALTLF_FREQ_HZ (32768UL) + + +/** +* Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock, +* which is the system clock frequency supplied to the SysTick timer and the +* processor core clock. +* This variable implements CMSIS Core global variable. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* This variable can be used by debuggers to query the frequency +* of the debug timer or to configure the trace clock speed. +* +* \attention Compilers must be configured to avoid removing this variable in case +* the application program is not using it. Debugging systems require the variable +* to be physically present in memory so that it can be examined to configure the debugger. */ +uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +/** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT; + +/** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT; + +/** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */ +#if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) + uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ; +#endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */ + +/* SCB->CPACR */ +#define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u) + + +/******************************************************************************* +* SystemInit() +*******************************************************************************/ + +/* CLK_FLL_CONFIG default values */ +#define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u) +#define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u) +#define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u) +#define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu) + + +/******************************************************************************* +* SystemCoreClockUpdate (void) +*******************************************************************************/ + +/* Do not use these definitions directly in your application */ +#define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u) +#define CY_DELAY_1K_THRESHOLD (1000u) +#define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u) +#define CY_DELAY_1M_THRESHOLD (1000000u) +#define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u) +uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / + CY_DELAY_1K_THRESHOLD; + +uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) / + CY_DELAY_1M_THRESHOLD); + +uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * + ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD); + +#define CY_ROOT_PATH_SRC_IMO (0UL) +#define CY_ROOT_PATH_SRC_EXT (1UL) +#if (SRSS_ECO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ECO (2UL) +#endif /* (SRSS_ECO_PRESENT == 1U) */ +#if (SRSS_ALTHF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ALTHF (3UL) +#endif /* (SRSS_ALTHF_PRESENT == 1U) */ +#define CY_ROOT_PATH_SRC_DSI_MUX (4UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL) +#if (SRSS_ALTLF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL) +#endif /* (SRSS_ALTLF_PRESENT == 1U) */ +#if (SRSS_PILO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL) +#endif /* (SRSS_PILO_PRESENT == 1U) */ + + +/******************************************************************************* +* Function Name: SystemInit +****************************************************************************//** +* \cond +* Initializes the system: +* - Restores FLL registers to the default state for single core devices. +* - Unlocks and disables WDT. +* - Calls Cy_PDL_Init() function to define the driver library. +* - Calls the Cy_SystemInit() function, if compiled from PSoC Creator. +* - Calls \ref SystemCoreClockUpdate(). +* \endcond +*******************************************************************************/ +void SystemInit(void) +{ + Cy_PDL_Init(CY_DEVICE_CFG); + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Restore FLL registers to the default state as they are not restored by the ROM code */ + uint32_t copy = SRSS->CLK_FLL_CONFIG; + copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk; + SRSS->CLK_FLL_CONFIG = copy; + + copy = SRSS->CLK_ROOT_SELECT[0u]; + copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/ + SRSS->CLK_ROOT_SELECT[0u] = copy; + + SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE; + SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE; + SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE; + SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE; + + /* Unlock and disable WDT */ + Cy_WDT_Unlock(); + Cy_WDT_Disable(); + #endif /* (__CM0P_PRESENT == 0) */ +#endif /* __CM0P_PRESENT */ + + Cy_SystemInit(); + SystemCoreClockUpdate(); + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Allocate and initialize semaphores for the system operations. */ + static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD]; + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray); + #else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); + #endif /* (__CM0P_PRESENT) */ +#else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); +#endif /* __CM0P_PRESENT */ + + + /******************************************************************************** + * + * Initializes the system pipes. The system pipes are used by BLE and Flash. + * + * If the default startup file is not used, or SystemInit() is not called in your + * project, call the following three functions prior to executing any flash or + * EmEEPROM write or erase operation: + * -# Cy_IPC_Sema_Init() + * -# Cy_IPC_Pipe_Config() + * -# Cy_IPC_Pipe_Init() + * -# Cy_Flash_Init() + * + *******************************************************************************/ + /* Create an array of endpoint structures */ + static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS]; + + Cy_IPC_Pipe_Config(systemIpcPipeEpArray); + + static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT]; + + static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 = + { + /* .ep0ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0, + /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0 + }, + /* .ep1ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1, + /* .ipcNotifierMuxNumber */ 0u, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1 + }, + /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT, + /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray, + /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4 + }; + + if (cy_device->flashPipeRequired != 0u) + { + Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4); + } + +#if defined(CY_DEVICE_PSOC6ABLE2) + Cy_Flash_Init(); +#endif /* defined(CY_DEVICE_PSOC6ABLE2) */ + +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ +} + + +/******************************************************************************* +* Function Name: mbed_sdk_init +****************************************************************************//** +* +* Mbed's post-memory-initialization function. +* Used here to initialize common parts of the Cypress libraries. +* +*******************************************************************************/ +void mbed_sdk_init(void) +{ + /* Initialize shared resource manager */ + cy_srm_initialize(); + + /* Initialize system and clocks. */ + /* Placed here as it must be done after proper LIBC initialization. */ + SystemInit(); + + /* Set up the device based on configurator selections */ + init_cycfg_all(); + + /* Enable global interrupts */ + __enable_irq(); +} + + + +/******************************************************************************* +* Function Name: Cy_SystemInit +****************************************************************************//** +* +* The function is called during device startup. Once project compiled as part of +* the PSoC Creator project, the Cy_SystemInit() function is generated by the +* PSoC Creator. +* +* The function generated by PSoC Creator performs all of the necessary device +* configuration based on the design settings. This includes settings from the +* Design Wide Resources (DWR) such as Clocks and Pins as well as any component +* configuration that is necessary. +* +*******************************************************************************/ +__WEAK void Cy_SystemInit(void) +{ + /* Empty weak function. The actual implementation to be in the PSoC Creator + * generated strong function. + */ +} + + +/******************************************************************************* +* Function Name: SystemCoreClockUpdate +****************************************************************************//** +* +* Gets core clock frequency and updates \ref SystemCoreClock, \ref +* cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz. +* +* Updates global variables used by the \ref Cy_SysLib_Delay(), \ref +* Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles(). +* +*******************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t srcFreqHz; + uint32_t pathFreqHz; + uint32_t fastClkDiv; + uint32_t periClkDiv; + uint32_t rootPath; + uint32_t srcClk; + + /* Get root path clock for the high-frequency clock # 0 */ + rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]); + + /* Get source of the root path clock */ + srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]); + + /* Get frequency of the source */ + switch (srcClk) + { + case CY_ROOT_PATH_SRC_IMO: + srcFreqHz = CY_CLK_IMO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_EXT: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + + #if (SRSS_ECO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ECO: + srcFreqHz = CY_CLK_ECO_FREQ_HZ; + break; + #endif /* (SRSS_ECO_PRESENT == 1U) */ + +#if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ALTHF: + srcFreqHz = cy_BleEcoClockFreqHz; + break; +#endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */ + + case CY_ROOT_PATH_SRC_DSI_MUX: + { + uint32_t dsi_src; + dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]); + switch (dsi_src) + { + case CY_ROOT_PATH_SRC_DSI_MUX_HVILO: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_DSI_MUX_WCO: + srcFreqHz = CY_CLK_WCO_FREQ_HZ; + break; + + #if (SRSS_ALTLF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF: + srcFreqHz = CY_CLK_ALTLF_FREQ_HZ; + break; + #endif /* (SRSS_ALTLF_PRESENT == 1U) */ + + #if (SRSS_PILO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_PILO: + srcFreqHz = CY_CLK_PILO_FREQ_HZ; + break; + #endif /* (SRSS_PILO_PRESENT == 1U) */ + + default: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + } + } + break; + + default: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + } + + if (rootPath == 0UL) + { + /* FLL */ + bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS)); + bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)); + bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) || + (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3))); + if ((fllOutputAuto && fllLocked) || fllOutputOutput) + { + uint32_t fllMult; + uint32_t refDiv; + uint32_t outputDiv; + + fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG); + refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2); + outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL; + + pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv; + } + else + { + pathFreqHz = srcFreqHz; + } + } + else if ((rootPath == 1UL) || (rootPath == 2UL)) + { + /* PLL */ + bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL])); + bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])); + bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) || + (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]))); + if ((pllOutputAuto && pllLocked) || pllOutputOutput) + { + uint32_t feedbackDiv; + uint32_t referenceDiv; + uint32_t outputDiv; + + feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + + pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv; + + } + else + { + pathFreqHz = srcFreqHz; + } + } + else + { + /* Direct */ + pathFreqHz = srcFreqHz; + } + + /* Get frequency after hf_clk pre-divider */ + pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]); + cy_Hfclk0FreqHz = pathFreqHz; + + /* Fast Clock Divider */ + fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL); + + /* Peripheral Clock Divider */ + periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL); + cy_PeriClkFreqHz = pathFreqHz / periClkDiv; + + pathFreqHz = pathFreqHz / fastClkDiv; + SystemCoreClock = pathFreqHz; + + /* Sets clock frequency for Delay API */ + cy_delayFreqHz = SystemCoreClock; + cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD); + cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD; + cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz; +} + + +/******************************************************************************* +* Function Name: Cy_SystemInitFpuEnable +****************************************************************************//** +* +* Enables the FPU if it is used. The function is called from the startup file. +* +*******************************************************************************/ +void Cy_SystemInitFpuEnable(void) +{ + #if defined (__FPU_USED) && (__FPU_USED == 1U) + uint32_t interruptState; + interruptState = Cy_SysLib_EnterCriticalSection(); + SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE; + __DSB(); + __ISB(); + Cy_SysLib_ExitCriticalSection(interruptState); + #endif /* (__FPU_USED) && (__FPU_USED == 1U) */ +} + + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) +/******************************************************************************* +* Function Name: Cy_SysIpcPipeIsrCm4 +****************************************************************************//** +* +* This is the interrupt service routine for the system pipe. +* +*******************************************************************************/ +void Cy_SysIpcPipeIsrCm4(void) +{ + Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR); +} +#endif + +/******************************************************************************* +* Function Name: Cy_MemorySymbols +****************************************************************************//** +* +* The intention of the function is to declare boundaries of the memories for the +* MDK compilers. For the rest of the supported compilers, this is done using +* linker configuration files. The following symbols used by the cymcuelftool. +* +*******************************************************************************/ +#if defined (__ARMCC_VERSION) +__asm void Cy_MemorySymbols(void) +{ + /* Flash */ + EXPORT __cy_memory_0_start + EXPORT __cy_memory_0_length + EXPORT __cy_memory_0_row_size + + /* Working Flash */ + EXPORT __cy_memory_1_start + EXPORT __cy_memory_1_length + EXPORT __cy_memory_1_row_size + + /* Supervisory Flash */ + EXPORT __cy_memory_2_start + EXPORT __cy_memory_2_length + EXPORT __cy_memory_2_row_size + + /* XIP */ + EXPORT __cy_memory_3_start + EXPORT __cy_memory_3_length + EXPORT __cy_memory_3_row_size + + /* eFuse */ + EXPORT __cy_memory_4_start + EXPORT __cy_memory_4_length + EXPORT __cy_memory_4_row_size + + /* Flash */ +__cy_memory_0_start EQU __cpp(CY_FLASH_BASE) +__cy_memory_0_length EQU __cpp(CY_FLASH_SIZE) +__cy_memory_0_row_size EQU 0x200 + + /* Flash region for EEPROM emulation */ +__cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE) +__cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE) +__cy_memory_1_row_size EQU 0x200 + + /* Supervisory Flash */ +__cy_memory_2_start EQU __cpp(CY_SFLASH_BASE) +__cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE) +__cy_memory_2_row_size EQU 0x200 + + /* XIP */ +__cy_memory_3_start EQU __cpp(CY_XIP_BASE) +__cy_memory_3_length EQU __cpp(CY_XIP_SIZE) +__cy_memory_3_row_size EQU 0x200 + + /* eFuse */ +__cy_memory_4_start EQU __cpp(0x90700000) +__cy_memory_4_length EQU __cpp(0x100000) +__cy_memory_4_row_size EQU __cpp(1) +} + +#endif /* defined (__ARMCC_VERSION) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/psoc6_static_srm.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/psoc6_static_srm.h new file mode 100644 index 00000000000..f265e20da70 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_062_WIFI_BT/psoc6_static_srm.h @@ -0,0 +1,85 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + */ + +/* + * This file defines hardware resources reserved by device-generated code. These + * resources are accessed directly by the Peripheral Driver library (PDL). + * + * There are four classes of resources that must be declared here: + * 1 CYCFG_ASSIGNED_PORTS macro defines which ports and pins are reserved. + * You define these as a colon separated list of ports and pins reserved + * using macro SRM_PORT(port_num, pins), once for each reserved port. + * SRM_PORT macro arguments are port number (in the range 0 ... 14) and + * pins, which is a hex value with a bit set for each reserved pin on a port. + * + * 2 CYCFG_ASSIGNED_DIVIDERS macro defines which clock dividers are reserved. + * You define these as a colon separated list of dividers reserved + * using macro SRM_DIVIDER(type, reservations), once for each required + * divider type. + * SRM_DIVIDER arguments are divider type (one of cy_en_divider_types_t + * values) and reservations, which is a hex mask value with a bit set for + * each reserved divider of a given type. + * + * 3 CYCFG_ASSIGNED_SCBS macro defines which SCB blocks are reserved. + * You define these as a colon separated list of SCBs reserved using + * macro SRM_SCB(n), which argument is SCB number in a range 0 ... 7. + * + * 4 CYCFG_ASSIGNED_TCPWM macro defines which TCPWM blocks are reserved. + * You define these as a colon separated list of TCPWMs reserved using + * macro SRM_TCPWM(n), which argument is TCPWM number in a range 0 ... 31. + * + * Examples: + * #define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x30), SRM_PORT(5, 0x03) + * + * #define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + * + * #define CYCFG_ASSIGNED_SCBS SRM_SCB(2) + * + * #define CYCFG_ASSIGNED_TCPWMS + * + */ + +/* P0_0 and P0_1 reserved for WCO, +* P1_0 reserved for CSD TX, +* P2_0 ... P2_5 reserved for SDHC +* P6-4, P6-6 and P6_7 reserved for SWD, +* P7_1, P7_2 and P7_7 reserved for CSD Capacitors +* P8_1 ... P8_7 reserved for CSD Buttons +* P11_2 ... P11_7 reserved for QSPI +* P14_0 ... P14_1 reserved for USB +*/ +#define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x03), SRM_PORT(1, 0x01),\ + SRM_PORT(2, 0x3f), SRM_PORT(6, 0xd0),\ + SRM_PORT(7, 0x86), SRM_PORT(8, 0xfe),\ + SRM_PORT(11, 0xfc), SRM_PORT(14, 0x03) + +/* +* 8-bit divider 0 reserved for UDB +* 8-bit divider 4 reserved for CSD +* 16-bit divider 0 reserved for USB +*/ +#define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x11), \ + SRM_DIVIDER(CY_SYSCLK_DIV_16_BIT, 0x01) + +#define CYCFG_ASSIGNED_SCBS + +#define CYCFG_ASSIGNED_TCPWMS + +/* End of File */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralNames.h new file mode 100644 index 00000000000..434c29999ef --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralNames.h @@ -0,0 +1,119 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)SCB0_BASE, + UART_1 = (int)SCB1_BASE, + UART_2 = (int)SCB2_BASE, + UART_3 = (int)SCB3_BASE, + UART_4 = (int)SCB4_BASE, + UART_5 = (int)SCB5_BASE, + UART_6 = (int)SCB6_BASE, + UART_7 = (int)SCB7_BASE, + /* SCB_8 does not support UART mode */ + UART_9 = (int)SCB9_BASE, + UART_10 = (int)SCB10_BASE, + UART_11 = (int)SCB11_BASE, + UART_12 = (int)SCB12_BASE, +} UARTName; + + +typedef enum { + SPI_0 = (int)SCB0_BASE, + SPI_1 = (int)SCB1_BASE, + SPI_2 = (int)SCB2_BASE, + SPI_3 = (int)SCB3_BASE, + SPI_4 = (int)SCB4_BASE, + SPI_5 = (int)SCB5_BASE, + SPI_6 = (int)SCB6_BASE, + SPI_7 = (int)SCB7_BASE, + SPI_8 = (int)SCB8_BASE, + /* SCB_9 - SCB_12 does not support SPI mode */ +} SPIName; + +typedef enum { + I2C_0 = (int)SCB0_BASE, + I2C_1 = (int)SCB1_BASE, + I2C_2 = (int)SCB2_BASE, + I2C_3 = (int)SCB3_BASE, + I2C_4 = (int)SCB4_BASE, + I2C_5 = (int)SCB5_BASE, + I2C_6 = (int)SCB6_BASE, + I2C_7 = (int)SCB7_BASE, + I2C_8 = (int)SCB8_BASE, + I2C_9 = (int)SCB9_BASE, + I2C_10 = (int)SCB10_BASE, + I2C_11 = (int)SCB11_BASE, + I2C_12 = (int)SCB12_BASE, +} I2CName; + +typedef enum { + PWM_32b_0 = TCPWM0_BASE, + PWM_32b_1, + PWM_32b_2, + PWM_32b_3, + PWM_32b_4, + PWM_32b_5, + PWM_32b_6, + PWM_32b_7, + PWM_16b_0 = TCPWM1_BASE, + PWM_16b_1, + PWM_16b_2, + PWM_16b_3, + PWM_16b_4, + PWM_16b_5, + PWM_16b_6, + PWM_16b_7, + PWM_16b_8, + PWM_16b_9, + PWM_16b_10, + PWM_16b_11, + PWM_16b_12, + PWM_16b_13, + PWM_16b_14, + PWM_16b_15, + PWM_16b_16, + PWM_16b_17, + PWM_16b_18, + PWM_16b_19, + PWM_16b_20, + PWM_16b_21, + PWM_16b_22, + PWM_16b_23, +} PWMName; + +typedef enum { + ADC_0 = (int)SAR_BASE, +} ADCName; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralPins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralPins.c new file mode 100644 index 00000000000..ce8e855e0d2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/PeripheralPins.c @@ -0,0 +1,465 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PeripheralNames.h" +#include "PeripheralPins.h" +#include "pinmap.h" + +#if DEVICE_SERIAL +//*** SERIAL *** +const PinMap PinMap_UART_RX[] = { + {P0_2, UART_0, CY_PIN_IN_FUNCTION( P0_2_SCB0_UART_RX, PCLK_SCB0_CLOCK)}, + {P1_0, UART_7, CY_PIN_IN_FUNCTION( P1_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P2_0, UART_1, CY_PIN_IN_FUNCTION( P2_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P2_4, UART_9, CY_PIN_IN_FUNCTION( P2_4_SCB9_UART_RX, PCLK_SCB9_CLOCK)}, + {P3_0, UART_2, CY_PIN_IN_FUNCTION( P3_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P4_0, UART_7, CY_PIN_IN_FUNCTION( P4_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P5_0, UART_5, CY_PIN_IN_FUNCTION( P5_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P5_4, UART_10, CY_PIN_IN_FUNCTION( P5_4_SCB10_UART_RX, PCLK_SCB10_CLOCK)}, + {P6_0, UART_3, CY_PIN_IN_FUNCTION( P6_0_SCB3_UART_RX, PCLK_SCB3_CLOCK)}, + {P6_4, UART_6, CY_PIN_IN_FUNCTION( P6_4_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P7_0, UART_4, CY_PIN_IN_FUNCTION( P7_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_0, UART_4, CY_PIN_IN_FUNCTION( P8_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_4, UART_11, CY_PIN_IN_FUNCTION( P8_4_SCB11_UART_RX, PCLK_SCB11_CLOCK)}, + {P9_0, UART_2, CY_PIN_IN_FUNCTION( P9_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P10_0, UART_1, CY_PIN_IN_FUNCTION( P10_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P11_0, UART_5, CY_PIN_IN_FUNCTION( P11_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P12_0, UART_6, CY_PIN_IN_FUNCTION( P12_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_0, UART_6, CY_PIN_IN_FUNCTION( P13_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_4, UART_12, CY_PIN_IN_FUNCTION( P13_4_SCB12_UART_RX, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_TX[] = { + {P0_3, UART_0, CY_PIN_OUT_FUNCTION( P0_3_SCB0_UART_TX, PCLK_SCB0_CLOCK)}, + {P1_1, UART_7, CY_PIN_OUT_FUNCTION( P1_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P2_1, UART_1, CY_PIN_OUT_FUNCTION( P2_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P2_5, UART_9, CY_PIN_OUT_FUNCTION( P2_5_SCB9_UART_TX, PCLK_SCB9_CLOCK)}, + {P3_1, UART_2, CY_PIN_OUT_FUNCTION( P3_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P4_1, UART_7, CY_PIN_OUT_FUNCTION( P4_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P5_1, UART_5, CY_PIN_OUT_FUNCTION( P5_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P5_5, UART_10, CY_PIN_OUT_FUNCTION( P5_5_SCB10_UART_TX, PCLK_SCB10_CLOCK)}, + {P6_1, UART_3, CY_PIN_OUT_FUNCTION( P6_1_SCB3_UART_TX, PCLK_SCB3_CLOCK)}, + {P6_5, UART_6, CY_PIN_OUT_FUNCTION( P6_5_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P7_1, UART_4, CY_PIN_OUT_FUNCTION( P7_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_1, UART_4, CY_PIN_OUT_FUNCTION( P8_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_5, UART_11, CY_PIN_OUT_FUNCTION( P8_5_SCB11_UART_TX, PCLK_SCB11_CLOCK)}, + {P9_1, UART_2, CY_PIN_OUT_FUNCTION( P9_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P10_1, UART_1, CY_PIN_OUT_FUNCTION( P10_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P11_1, UART_5, CY_PIN_OUT_FUNCTION( P11_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P12_1, UART_6, CY_PIN_OUT_FUNCTION( P12_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_1, UART_6, CY_PIN_OUT_FUNCTION( P13_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_5, UART_12, CY_PIN_OUT_FUNCTION( P13_5_SCB12_UART_TX, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_RTS[] = { + {P0_4, UART_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_UART_RTS, PCLK_SCB0_CLOCK)}, + {P1_2, UART_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_UART_RTS, PCLK_SCB7_CLOCK)}, + {P2_2, UART_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P2_6, UART_9, CY_PIN_OUT_FUNCTION( P2_6_SCB9_UART_RTS, PCLK_SCB9_CLOCK)}, + {P3_2, UART_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P5_2, UART_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P5_6, UART_10, CY_PIN_OUT_FUNCTION( P5_6_SCB10_UART_RTS, PCLK_SCB10_CLOCK)}, + {P6_2, UART_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_UART_RTS, PCLK_SCB3_CLOCK)}, + {P6_6, UART_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P7_2, UART_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_2, UART_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_6, UART_11, CY_PIN_OUT_FUNCTION( P8_6_SCB11_UART_RTS, PCLK_SCB11_CLOCK)}, + {P9_2, UART_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P10_2, UART_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P11_2, UART_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P12_2, UART_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P13_2, UART_6, CY_PIN_OUT_FUNCTION( P13_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P13_6, UART_12, CY_PIN_OUT_FUNCTION( P13_6_SCB12_UART_RTS, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_CTS[] = { + {P0_5, UART_0, CY_PIN_IN_FUNCTION( P0_5_SCB0_UART_CTS, PCLK_SCB0_CLOCK)}, + {P1_3, UART_7, CY_PIN_IN_FUNCTION( P1_3_SCB7_UART_CTS, PCLK_SCB7_CLOCK)}, + {P2_3, UART_1, CY_PIN_IN_FUNCTION( P2_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P2_7, UART_9, CY_PIN_IN_FUNCTION( P2_7_SCB9_UART_CTS, PCLK_SCB9_CLOCK)}, + {P3_3, UART_2, CY_PIN_IN_FUNCTION( P3_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P5_3, UART_5, CY_PIN_IN_FUNCTION( P5_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P5_7, UART_10, CY_PIN_IN_FUNCTION( P5_7_SCB10_UART_CTS, PCLK_SCB10_CLOCK)}, + {P6_3, UART_3, CY_PIN_IN_FUNCTION( P6_3_SCB3_UART_CTS, PCLK_SCB3_CLOCK)}, + {P6_7, UART_6, CY_PIN_IN_FUNCTION( P6_7_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P7_3, UART_4, CY_PIN_IN_FUNCTION( P7_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_3, UART_4, CY_PIN_IN_FUNCTION( P8_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_7, UART_11, CY_PIN_IN_FUNCTION( P8_7_SCB11_UART_CTS, PCLK_SCB11_CLOCK)}, + {P9_3, UART_2, CY_PIN_IN_FUNCTION( P9_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P10_3, UART_1, CY_PIN_IN_FUNCTION( P10_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P11_3, UART_5, CY_PIN_IN_FUNCTION( P11_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P12_3, UART_6, CY_PIN_IN_FUNCTION( P12_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P13_3, UART_6, CY_PIN_IN_FUNCTION( P13_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P13_7, UART_12, CY_PIN_IN_FUNCTION( P13_7_SCB12_UART_CTS, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SERIAL + + +#if DEVICE_I2C +//*** I2C *** +const PinMap PinMap_I2C_SCL[] = { + {P0_2, I2C_0, CY_PIN_OD_FUNCTION( P0_2_SCB0_I2C_SCL, PCLK_SCB0_CLOCK)}, + {P1_0, I2C_7, CY_PIN_OD_FUNCTION( P1_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P2_0, I2C_1, CY_PIN_OD_FUNCTION( P2_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P2_4, I2C_9, CY_PIN_OD_FUNCTION( P2_4_SCB9_I2C_SCL, PCLK_SCB9_CLOCK)}, + {P3_0, I2C_2, CY_PIN_OD_FUNCTION( P3_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P4_0, I2C_7, CY_PIN_OD_FUNCTION( P4_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P5_0, I2C_5, CY_PIN_OD_FUNCTION( P5_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P5_4, I2C_10, CY_PIN_OD_FUNCTION( P5_4_SCB10_I2C_SCL, PCLK_SCB10_CLOCK)}, + {P6_0, I2C_3, CY_PIN_OD_FUNCTION( P6_0_SCB3_I2C_SCL, PCLK_SCB3_CLOCK)}, + {P6_4, I2C_6, CY_PIN_OD_FUNCTION( P6_4_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P7_0, I2C_4, CY_PIN_OD_FUNCTION( P7_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_0, I2C_4, CY_PIN_OD_FUNCTION( P8_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_4, I2C_11, CY_PIN_OD_FUNCTION( P8_4_SCB11_I2C_SCL, PCLK_SCB11_CLOCK)}, + {P9_0, I2C_2, CY_PIN_OD_FUNCTION( P9_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P10_0, I2C_1, CY_PIN_OD_FUNCTION( P10_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P11_0, I2C_5, CY_PIN_OD_FUNCTION( P11_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P12_0, I2C_6, CY_PIN_OD_FUNCTION( P12_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_0, I2C_6, CY_PIN_OD_FUNCTION( P13_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_4, I2C_12, CY_PIN_OD_FUNCTION( P13_4_SCB12_I2C_SCL, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_I2C_SDA[] = { + {P0_3, I2C_0, CY_PIN_OD_FUNCTION( P0_3_SCB0_I2C_SDA, PCLK_SCB0_CLOCK)}, + {P1_1, I2C_7, CY_PIN_OD_FUNCTION( P1_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P2_1, I2C_1, CY_PIN_OD_FUNCTION( P2_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P2_5, I2C_9, CY_PIN_OD_FUNCTION( P2_5_SCB9_I2C_SDA, PCLK_SCB9_CLOCK)}, + {P3_1, I2C_2, CY_PIN_OD_FUNCTION( P3_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P4_1, I2C_7, CY_PIN_OD_FUNCTION( P4_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P5_1, I2C_5, CY_PIN_OD_FUNCTION( P5_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P5_5, I2C_10, CY_PIN_OD_FUNCTION( P5_5_SCB10_I2C_SDA, PCLK_SCB10_CLOCK)}, + {P6_1, I2C_3, CY_PIN_OD_FUNCTION( P6_1_SCB3_I2C_SDA, PCLK_SCB3_CLOCK)}, + {P6_5, I2C_6, CY_PIN_OD_FUNCTION( P6_5_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P7_1, I2C_4, CY_PIN_OD_FUNCTION( P7_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_1, I2C_4, CY_PIN_OD_FUNCTION( P8_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_5, I2C_11, CY_PIN_OD_FUNCTION( P8_5_SCB11_I2C_SDA, PCLK_SCB11_CLOCK)}, + {P9_1, I2C_2, CY_PIN_OD_FUNCTION( P9_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P10_1, I2C_1, CY_PIN_OD_FUNCTION( P10_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P11_1, I2C_5, CY_PIN_OD_FUNCTION( P11_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P12_1, I2C_6, CY_PIN_OD_FUNCTION( P12_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_1, I2C_6, CY_PIN_OD_FUNCTION( P13_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_5, I2C_12, CY_PIN_OD_FUNCTION( P13_5_SCB12_I2C_SDA, PCLK_SCB12_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_I2C + +#if DEVICE_SPI +//*** SPI *** +const PinMap PinMap_SPI_MOSI[] = { + {P0_2, SPI_0, CY_PIN_OUT_FUNCTION( P0_2_SCB0_SPI_MOSI, PCLK_SCB0_CLOCK)}, + {P1_0, SPI_7, CY_PIN_OUT_FUNCTION( P1_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P2_0, SPI_1, CY_PIN_OUT_FUNCTION( P2_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P3_0, SPI_2, CY_PIN_OUT_FUNCTION( P3_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P4_0, SPI_7, CY_PIN_OUT_FUNCTION( P4_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P5_0, SPI_5, CY_PIN_OUT_FUNCTION( P5_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P6_0, SPI_3, CY_PIN_OUT_FUNCTION( P6_0_SCB3_SPI_MOSI, PCLK_SCB3_CLOCK)}, + {P6_4, SPI_6, CY_PIN_OUT_FUNCTION( P6_4_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P7_0, SPI_4, CY_PIN_OUT_FUNCTION( P7_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P8_0, SPI_4, CY_PIN_OUT_FUNCTION( P8_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P9_0, SPI_2, CY_PIN_OUT_FUNCTION( P9_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P10_0, SPI_1, CY_PIN_OUT_FUNCTION( P10_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P11_0, SPI_5, CY_PIN_OUT_FUNCTION( P11_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P12_0, SPI_6, CY_PIN_OUT_FUNCTION( P12_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P13_0, SPI_6, CY_PIN_OUT_FUNCTION( P13_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_MISO[] = { + {P0_3, SPI_0, CY_PIN_IN_FUNCTION( P0_3_SCB0_SPI_MISO, PCLK_SCB0_CLOCK)}, + {P1_1, SPI_7, CY_PIN_IN_FUNCTION( P1_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P2_1, SPI_1, CY_PIN_IN_FUNCTION( P2_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P3_1, SPI_2, CY_PIN_IN_FUNCTION( P3_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P4_1, SPI_7, CY_PIN_IN_FUNCTION( P4_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P5_1, SPI_5, CY_PIN_IN_FUNCTION( P5_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P6_1, SPI_3, CY_PIN_IN_FUNCTION( P6_1_SCB3_SPI_MISO, PCLK_SCB3_CLOCK)}, + {P6_5, SPI_6, CY_PIN_IN_FUNCTION( P6_5_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P7_1, SPI_4, CY_PIN_IN_FUNCTION( P7_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P8_1, SPI_4, CY_PIN_IN_FUNCTION( P8_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P9_1, SPI_2, CY_PIN_IN_FUNCTION( P9_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P10_1, SPI_1, CY_PIN_IN_FUNCTION( P10_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P11_1, SPI_5, CY_PIN_IN_FUNCTION( P11_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P12_1, SPI_6, CY_PIN_IN_FUNCTION( P12_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P13_1, SPI_6, CY_PIN_IN_FUNCTION( P13_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SCLK[] = { + {P0_4, SPI_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_SPI_CLK, PCLK_SCB0_CLOCK)}, + {P1_2, SPI_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_SPI_CLK, PCLK_SCB7_CLOCK)}, + {P2_2, SPI_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P3_2, SPI_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P5_2, SPI_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P6_2, SPI_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_SPI_CLK, PCLK_SCB3_CLOCK)}, + {P6_6, SPI_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P7_2, SPI_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P8_2, SPI_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P9_2, SPI_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P10_2, SPI_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P11_2, SPI_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P12_2, SPI_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P13_2, SPI_6, CY_PIN_OUT_FUNCTION( P13_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SSEL[] = { + {P0_5, SPI_0, CY_PIN_OUT_FUNCTION( P0_5_SCB0_SPI_SELECT0, PCLK_SCB0_CLOCK)}, + {P1_3, SPI_7, CY_PIN_OUT_FUNCTION( P1_3_SCB7_SPI_SELECT0, PCLK_SCB7_CLOCK)}, + {P2_3, SPI_1, CY_PIN_OUT_FUNCTION( P2_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P3_3, SPI_2, CY_PIN_OUT_FUNCTION( P3_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P5_3, SPI_5, CY_PIN_OUT_FUNCTION( P5_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P6_3, SPI_3, CY_PIN_OUT_FUNCTION( P6_3_SCB3_SPI_SELECT0, PCLK_SCB3_CLOCK)}, + {P6_7, SPI_6, CY_PIN_OUT_FUNCTION( P6_7_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P7_3, SPI_4, CY_PIN_OUT_FUNCTION( P7_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P8_3, SPI_4, CY_PIN_OUT_FUNCTION( P8_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P9_3, SPI_2, CY_PIN_OUT_FUNCTION( P9_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P10_3, SPI_1, CY_PIN_OUT_FUNCTION( P10_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P11_3, SPI_5, CY_PIN_OUT_FUNCTION( P11_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P12_3, SPI_6, CY_PIN_OUT_FUNCTION( P12_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P13_3, SPI_6, CY_PIN_OUT_FUNCTION( P13_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SPI + +#if DEVICE_PWMOUT +//*** PWM *** +const PinMap PinMap_PWM_OUT[] = { + // 16-bit PWM outputs + {P0_0, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P0_2, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P0_4, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P1_0, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P1_2, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_2_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P1_4, PWM_16b_13, CY_PIN_OUT_FUNCTION(P1_4_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P2_0, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_0_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P2_2, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_2_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P2_4, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_4_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P2_6, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_6_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P3_0, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_0_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P3_2, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_2_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P3_4, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_4_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P4_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P5_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P5_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P5_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P5_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P6_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P6_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P6_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P6_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + {P7_0, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_0_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P7_2, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_2_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P7_4, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_4_TCPWM1_LINE14, PCLK_TCPWM1_CLOCKS14)}, + {P7_6, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_6_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P8_0, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_0_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P8_2, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_2_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P8_4, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_4_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P8_6, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_6_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P9_0, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_0_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P9_2, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_2_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P9_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P9_6, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_6_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P10_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P10_2, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_2_TCPWM1_LINE23, PCLK_TCPWM1_CLOCKS23)}, + {P10_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P10_6, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_6_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_0, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P11_2, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_4, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P12_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P12_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P12_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P12_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P13_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P13_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P13_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P13_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + // 16-bit PWM inverted outputs + {P0_1, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P0_3, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P0_5, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P1_1, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P1_3, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_3_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P1_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P1_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P2_1, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_1_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P2_3, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_3_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P2_5, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_5_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P2_7, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_7_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P3_1, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_1_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P3_3, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_3_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P3_5, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_5_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P4_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P5_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P5_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P5_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P5_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P6_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P6_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P6_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P6_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + {P7_1, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_1_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P7_3, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_3_TCPWM1_LINE_COMPL13, PCLK_TCPWM1_CLOCKS13)}, + {P7_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P7_7, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_7_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P8_1, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_1_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P8_3, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_3_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P8_5, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_5_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P8_7, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_7_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P9_1, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_1_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P9_3, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_3_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P9_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P9_7, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_7_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P10_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P10_3, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_3_TCPWM1_LINE_COMPL23, PCLK_TCPWM1_CLOCKS23)}, + {P10_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P10_7, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_7_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_1, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P11_3, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_5, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P12_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P12_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P12_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P12_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P13_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P13_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P13_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P13_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + // 32-bit PWM outputs + {PWM32(P0_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_0), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_2), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_2_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_4), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_4_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_0), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_0_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_2), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_2_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_4), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_4_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_0), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_0_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + //{PWM32(P4_2), PWM_32b_6, CY_PIN_OUT_FUNCTION(P4_2_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_4), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_4_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_6), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_6_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_0), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_2), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_4), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + // 32-bit PWM inverted outputs + {PWM32(P0_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_1), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_3), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_3_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_5), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_5_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_1), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_1_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_3), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_3_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_5), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_5_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_1), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_1_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + //{PWM32(P4_3), PWM_32b_6, CY_PIN_OUT_FUNCTION(P4_3_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_5), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_5_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_7), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_7_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_1), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_3), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_5), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {NC, NC, 0} +}; +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +const PinMap PinMap_ADC[] = { + {P9_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_0 pin through the AMUXA bus + {P9_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_1 pin through the AMUXA bus + {P9_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_2 pin through the AMUXA bus + {P9_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_4 pin through the AMUXA bus + {P9_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_5 pin through the AMUXA bus + {P9_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input connects to the P9_6 pin through the AMUXA bus + {P10_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_0 pin + {P10_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_1 pin + {P10_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_2 pin + {P10_3, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_3 pin + {P10_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_4 pin + {P10_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_5 pin + {P10_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_6 pin + {P10_7, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, // The SAR ADC Vplus input has the direct connection to the P10_7 pin + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.c new file mode 100644 index 00000000000..74c28aba2cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.c @@ -0,0 +1,34 @@ +/******************************************************************************* +* File Name: cycfg.c +* +* Description: +* Wrapper function to initialize all generated code. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg.h" + +void init_cycfg_all(void) +{ + init_cycfg_clocks(); + init_cycfg_peripherals(); + init_cycfg_pins(); + init_cycfg_platform(); + init_cycfg_routing(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.h new file mode 100644 index 00000000000..ac6033d2bd1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg.h @@ -0,0 +1,47 @@ +/******************************************************************************* +* File Name: cycfg.h +* +* Description: +* Simple wrapper header containing all generated files. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +#include "cycfg_clocks.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_platform.h" +#include "cycfg_routing.h" + +void init_cycfg_all(void); + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000..9a6a4e3cf91 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,45 @@ +/******************************************************************************* +* File Name: cycfg_clocks.c +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_clocks.h" + + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 0U, 255U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 3U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 2U, 35U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 3U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 3U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000..ce944e4bd0c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,51 @@ +/******************************************************************************* +* File Name: cycfg_clocks.h +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_8_0_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_0_NUM 0U +#define peri_0_div_8_1_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_1_NUM 1U +#define peri_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_2_NUM 2U +#define peri_0_div_8_3_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_3_NUM 3U + +void init_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_CLOCKS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_notices.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000..90f1013f8a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_notices.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* File Name: cycfg_notices.h +* +* Description: +* Contains warnings and errors that occurred while generating code for the +* design. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + + +#endif /* CYCFG_NOTICES_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000..72e28490f03 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,187 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.c +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_peripherals.h" + +#define PWM_INPUT_DISABLED 0x7U + +cy_stc_csd_context_t cy_csd_0_context = +{ + .lockKey = CY_CSD_NONE_KEY, +}; +const cy_stc_scb_uart_config_t BT_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 12, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = true, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 63, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 1UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_scb_ezi2c_config_t CSD_COMM_config = +{ + .numberOfAddresses = CY_SCB_EZI2C_ONE_ADDRESS, + .slaveAddress1 = 8U, + .slaveAddress2 = 0U, + .subAddressSize = CY_SCB_EZI2C_SUB_ADDR16_BITS, + .enableWakeFromSleep = false, +}; +const cy_stc_scb_uart_config_t KITPROG_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 12, + .enableMsbFirst = false, + .dataWidth = 9UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = false, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 0UL, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +cy_en_sd_host_card_capacity_t RADIO_cardCapacity = CY_SD_HOST_SDSC; +cy_en_sd_host_card_type_t RADIO_cardType = CY_SD_HOST_NOT_EMMC; +uint32_t RADIO_rca = 0u; +const cy_stc_sd_host_init_config_t RADIO_config = +{ + .emmc = false, + .dmaType = CY_SD_HOST_DMA_SDMA, + .enableLedControl = false, +}; +cy_stc_sd_host_sd_card_config_t RADIO_card_cfg = +{ + .lowVoltageSignaling = false, + .busWidth = CY_SD_HOST_BUS_WIDTH_4_BIT, + .cardType = &RADIO_cardType, + .rca = &RADIO_rca, + .cardCapacity = &RADIO_cardCapacity, +}; +const cy_stc_smif_config_t QSPI_config = +{ + .mode = (uint32_t)CY_SMIF_NORMAL, + .deselectDelay = QSPI_DESELECT_DELAY, + .rxClockSel = (uint32_t)CY_SMIF_SEL_INV_INTERNAL_CLK, + .blockEvent = (uint32_t)CY_SMIF_BUS_ERROR, +}; +const cy_stc_mcwdt_config_t MCWDT0_config = +{ + .c0Match = 32768U, + .c1Match = 32768U, + .c0Mode = CY_MCWDT_MODE_NONE, + .c1Mode = CY_MCWDT_MODE_NONE, + .c2ToggleBit = 16U, + .c2Mode = CY_MCWDT_MODE_NONE, + .c0ClearOnMatch = false, + .c1ClearOnMatch = false, + .c0c1Cascade = true, + .c1c2Cascade = false, +}; +const cy_stc_rtc_config_t RTC_config = +{ + .sec = 0U, + .min = 0U, + .hour = 12U, + .amPm = CY_RTC_AM, + .hrFormat = CY_RTC_24_HOURS, + .dayOfWeek = CY_RTC_SUNDAY, + .date = 1U, + .month = CY_RTC_JANUARY, + .year = 0U, +}; +const cy_stc_tcpwm_pwm_config_t PWM_config = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PWM_PRESCALER_DIVBY_1, + .pwmAlignment = CY_TCPWM_PWM_LEFT_ALIGN, + .deadTimeClocks = 0, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .period0 = 32000, + .period1 = 32768, + .enablePeriodSwap = false, + .compare0 = 16384, + .compare1 = 16384, + .enableCompareSwap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = CY_TCPWM_PWM_INVERT_DISABLE, + .invertPWMOutN = CY_TCPWM_PWM_INVERT_DISABLE, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .swapInputMode = PWM_INPUT_DISABLED & 0x3U, + .swapInput = CY_TCPWM_INPUT_0, + .reloadInputMode = PWM_INPUT_DISABLED & 0x3U, + .reloadInput = CY_TCPWM_INPUT_0, + .startInputMode = PWM_INPUT_DISABLED & 0x3U, + .startInput = CY_TCPWM_INPUT_0, + .killInputMode = PWM_INPUT_DISABLED & 0x3U, + .killInput = CY_TCPWM_INPUT_0, + .countInputMode = PWM_INPUT_DISABLED & 0x3U, + .countInput = CY_TCPWM_INPUT_1, +}; + + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB2_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB5_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_TCPWM0_CLOCKS1, CY_SYSCLK_DIV_8_BIT, 3U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000..2a1bfa380ef --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,138 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.h +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_csd.h" +#include "cy_scb_uart.h" +#include "cy_scb_ezi2c.h" +#include "cy_sd_host.h" +#include "cy_smif.h" +#include "cy_mcwdt.h" +#include "cy_rtc.h" +#include "cy_tcpwm_pwm.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 50000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 0u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT8 +#define Button0_Tx_PORT GPIO_PRT1 +#define Button1_Rx0_PORT GPIO_PRT8 +#define Button1_Tx_PORT GPIO_PRT1 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 1u +#define Button0_Tx_PIN 0u +#define Button1_Rx0_PIN 2u +#define Button1_Tx_PIN 0u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CapSense_HW CSD0 +#define CapSense_IRQ csd_interrupt_IRQn +#define BT_UART_HW SCB2 +#define BT_UART_IRQ scb_2_interrupt_IRQn +#define CSD_COMM_HW SCB3 +#define CSD_COMM_IRQ scb_3_interrupt_IRQn +#define KITPROG_UART_HW SCB5 +#define KITPROG_UART_IRQ scb_5_interrupt_IRQn +#define RADIO_HW SDHC0 +#define RADIO_IRQ sdhc_0_interrupt_general_IRQn +#define QSPI_HW SMIF0 +#define QSPI_IRQ smif_interrupt_IRQn +#define QSPI_MEMORY_MODE_ALIGMENT_ERROR (0UL) +#define QSPI_RX_DATA_FIFO_UNDERFLOW (0UL) +#define QSPI_TX_COMMAND_FIFO_OVERFLOW (0UL) +#define QSPI_TX_DATA_FIFO_OVERFLOW (0UL) +#define QSPI_RX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_TX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_DATALINES0_1 (1UL) +#define QSPI_DATALINES2_3 (1UL) +#define QSPI_DATALINES4_5 (0UL) +#define QSPI_DATALINES6_7 (0UL) +#define QSPI_SS0 (1UL) +#define QSPI_SS1 (0UL) +#define QSPI_SS2 (0UL) +#define QSPI_SS3 (0UL) +#define QSPI_DESELECT_DELAY 7 +#define MCWDT0_HW MCWDT_STRUCT0 +#define RTC_10_MONTH_OFFSET (28U) +#define RTC_MONTH_OFFSET (24U) +#define RTC_10_DAY_OFFSET (20U) +#define RTC_DAY_OFFSET (16U) +#define RTC_1000_YEAR_OFFSET (12U) +#define RTC_100_YEAR_OFFSET (8U) +#define RTC_10_YEAR_OFFSET (4U) +#define RTC_YEAR_OFFSET (0U) +#define PWM_HW TCPWM0 +#define PWM_NUM 1UL +#define PWM_MASK (1UL << 1) + +extern cy_stc_csd_context_t cy_csd_0_context; +extern const cy_stc_scb_uart_config_t BT_UART_config; +extern const cy_stc_scb_ezi2c_config_t CSD_COMM_config; +extern const cy_stc_scb_uart_config_t KITPROG_UART_config; +extern cy_en_sd_host_card_capacity_t RADIO_cardCapacity; +extern cy_en_sd_host_card_type_t RADIO_cardType; +extern uint32_t RADIO_rca; +extern const cy_stc_sd_host_init_config_t RADIO_config; +extern cy_stc_sd_host_sd_card_config_t RADIO_card_cfg; +extern const cy_stc_smif_config_t QSPI_config; +extern const cy_stc_mcwdt_config_t MCWDT0_config; +extern const cy_stc_rtc_config_t RTC_config; +extern const cy_stc_tcpwm_pwm_config_t PWM_config; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000..7f16b5f4590 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.c @@ -0,0 +1,811 @@ +/******************************************************************************* +* File Name: cycfg_pins.c +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t WCO_IN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WCO_OUT_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_RED_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_RED_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SW2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SW2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_BLUE_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_BLUE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SS0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SS0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SPI_CLOCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED9_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED9_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_GREEN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_GREEN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED8_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED8_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CMD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CMD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CLK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CLK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_RTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_CTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_CTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_POWER_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF, + .hsiom = BT_POWER_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = BT_HOST_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_DEVICE_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SCL_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SCL_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SDA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SDA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDIO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINB_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CMOD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; + + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(WCO_IN_PORT, WCO_IN_PIN, &WCO_IN_config); + + Cy_GPIO_Pin_Init(WCO_OUT_PORT, WCO_OUT_PIN, &WCO_OUT_config); + + Cy_GPIO_Pin_Init(LED_RED_PORT, LED_RED_PIN, &LED_RED_config); + + Cy_GPIO_Pin_Init(SW2_PORT, SW2_PIN, &SW2_config); + + Cy_GPIO_Pin_Init(LED_BLUE_PORT, LED_BLUE_PIN, &LED_BLUE_config); + + Cy_GPIO_Pin_Init(QSPI_SS0_PORT, QSPI_SS0_PIN, &QSPI_SS0_config); + + Cy_GPIO_Pin_Init(QSPI_DATA3_PORT, QSPI_DATA3_PIN, &QSPI_DATA3_config); + + Cy_GPIO_Pin_Init(QSPI_DATA2_PORT, QSPI_DATA2_PIN, &QSPI_DATA2_config); + + Cy_GPIO_Pin_Init(QSPI_DATA1_PORT, QSPI_DATA1_PIN, &QSPI_DATA1_config); + + Cy_GPIO_Pin_Init(QSPI_DATA0_PORT, QSPI_DATA0_PIN, &QSPI_DATA0_config); + + Cy_GPIO_Pin_Init(QSPI_SPI_CLOCK_PORT, QSPI_SPI_CLOCK_PIN, &QSPI_SPI_CLOCK_config); + + Cy_GPIO_Pin_Init(LED9_PORT, LED9_PIN, &LED9_config); + + + Cy_GPIO_Pin_Init(LED_GREEN_PORT, LED_GREEN_PIN, &LED_GREEN_config); + + Cy_GPIO_Pin_Init(LED8_PORT, LED8_PIN, &LED8_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT0_PORT, SDHC0_DAT0_PIN, &SDHC0_DAT0_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT1_PORT, SDHC0_DAT1_PIN, &SDHC0_DAT1_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT2_PORT, SDHC0_DAT2_PIN, &SDHC0_DAT2_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT3_PORT, SDHC0_DAT3_PIN, &SDHC0_DAT3_config); + + Cy_GPIO_Pin_Init(SDHC0_CMD_PORT, SDHC0_CMD_PIN, &SDHC0_CMD_config); + + Cy_GPIO_Pin_Init(SDHC0_CLK_PORT, SDHC0_CLK_PIN, &SDHC0_CLK_config); + + Cy_GPIO_Pin_Init(BT_UART_RX_PORT, BT_UART_RX_PIN, &BT_UART_RX_config); + + Cy_GPIO_Pin_Init(BT_UART_TX_PORT, BT_UART_TX_PIN, &BT_UART_TX_config); + + Cy_GPIO_Pin_Init(BT_UART_RTS_PORT, BT_UART_RTS_PIN, &BT_UART_RTS_config); + + Cy_GPIO_Pin_Init(BT_UART_CTS_PORT, BT_UART_CTS_PIN, &BT_UART_CTS_config); + + Cy_GPIO_Pin_Init(BT_POWER_PORT, BT_POWER_PIN, &BT_POWER_config); + + Cy_GPIO_Pin_Init(BT_HOST_WAKE_PORT, BT_HOST_WAKE_PIN, &BT_HOST_WAKE_config); + + Cy_GPIO_Pin_Init(BT_DEVICE_WAKE_PORT, BT_DEVICE_WAKE_PIN, &BT_DEVICE_WAKE_config); + + Cy_GPIO_Pin_Init(UART_TX_PORT, UART_TX_PIN, &UART_TX_config); + + Cy_GPIO_Pin_Init(EZI2C_SCL_PORT, EZI2C_SCL_PIN, &EZI2C_SCL_config); + + Cy_GPIO_Pin_Init(EZI2C_SDA_PORT, EZI2C_SDA_PIN, &EZI2C_SDA_config); + + Cy_GPIO_Pin_Init(SWO_PORT, SWO_PIN, &SWO_config); + + Cy_GPIO_Pin_Init(SWDIO_PORT, SWDIO_PIN, &SWDIO_config); + + Cy_GPIO_Pin_Init(SWDCK_PORT, SWDCK_PIN, &SWDCK_config); + + + + + + + + + + +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000..d0709a2adc6 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_pins.h @@ -0,0 +1,529 @@ +/******************************************************************************* +* File Name: cycfg_pins.h +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cycfg_notices.h" +#include "cy_gpio.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define WCO_IN_PORT GPIO_PRT0 +#define WCO_IN_PIN 0U +#define WCO_IN_NUM 0U +#define WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM + #define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#define WCO_OUT_PORT GPIO_PRT0 +#define WCO_OUT_PIN 1U +#define WCO_OUT_NUM 1U +#define WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM + #define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_RED_PORT GPIO_PRT0 +#define LED_RED_PIN 3U +#define LED_RED_NUM 3U +#define LED_RED_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_RED_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_3_HSIOM + #define ioss_0_port_0_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_RED_HSIOM ioss_0_port_0_pin_3_HSIOM +#define LED_RED_IRQ ioss_interrupts_gpio_0_IRQn +#define SW2_PORT GPIO_PRT0 +#define SW2_PIN 4U +#define SW2_NUM 4U +#define SW2_DRIVEMODE CY_GPIO_DM_PULLUP +#define SW2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_4_HSIOM + #define ioss_0_port_0_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SW2_HSIOM ioss_0_port_0_pin_4_HSIOM +#define SW2_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_BLUE_PORT GPIO_PRT11 +#define LED_BLUE_PIN 1U +#define LED_BLUE_NUM 1U +#define LED_BLUE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_BLUE_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_1_HSIOM + #define ioss_0_port_11_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_BLUE_HSIOM ioss_0_port_11_pin_1_HSIOM +#define LED_BLUE_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SS0_PORT GPIO_PRT11 +#define QSPI_SS0_PIN 2U +#define QSPI_SS0_NUM 2U +#define QSPI_SS0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SS0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_2_HSIOM + #define ioss_0_port_11_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SS0_HSIOM ioss_0_port_11_pin_2_HSIOM +#define QSPI_SS0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA3_PORT GPIO_PRT11 +#define QSPI_DATA3_PIN 3U +#define QSPI_DATA3_NUM 3U +#define QSPI_DATA3_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_3_HSIOM + #define ioss_0_port_11_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA3_HSIOM ioss_0_port_11_pin_3_HSIOM +#define QSPI_DATA3_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA2_PORT GPIO_PRT11 +#define QSPI_DATA2_PIN 4U +#define QSPI_DATA2_NUM 4U +#define QSPI_DATA2_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_4_HSIOM + #define ioss_0_port_11_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA2_HSIOM ioss_0_port_11_pin_4_HSIOM +#define QSPI_DATA2_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA1_PORT GPIO_PRT11 +#define QSPI_DATA1_PIN 5U +#define QSPI_DATA1_NUM 5U +#define QSPI_DATA1_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_5_HSIOM + #define ioss_0_port_11_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA1_HSIOM ioss_0_port_11_pin_5_HSIOM +#define QSPI_DATA1_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA0_PORT GPIO_PRT11 +#define QSPI_DATA0_PIN 6U +#define QSPI_DATA0_NUM 6U +#define QSPI_DATA0_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_6_HSIOM + #define ioss_0_port_11_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA0_HSIOM ioss_0_port_11_pin_6_HSIOM +#define QSPI_DATA0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SPI_CLOCK_PORT GPIO_PRT11 +#define QSPI_SPI_CLOCK_PIN 7U +#define QSPI_SPI_CLOCK_NUM 7U +#define QSPI_SPI_CLOCK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SPI_CLOCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_7_HSIOM + #define ioss_0_port_11_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SPI_CLOCK_HSIOM ioss_0_port_11_pin_7_HSIOM +#define QSPI_SPI_CLOCK_IRQ ioss_interrupts_gpio_11_IRQn +#define LED9_PORT GPIO_PRT13 +#define LED9_PIN 7U +#define LED9_NUM 7U +#define LED9_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED9_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_7_HSIOM + #define ioss_0_port_13_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define LED9_HSIOM ioss_0_port_13_pin_7_HSIOM +#define LED9_IRQ ioss_interrupts_gpio_13_IRQn +#define CSD_TX_PORT GPIO_PRT1 +#define CSD_TX_PIN 0U +#define CSD_TX_NUM 0U +#define CSD_TX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_0_HSIOM + #define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_TX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CSD_TX_IRQ ioss_interrupts_gpio_1_IRQn +#define LED_GREEN_PORT GPIO_PRT1 +#define LED_GREEN_PIN 1U +#define LED_GREEN_NUM 1U +#define LED_GREEN_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_GREEN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_1_HSIOM + #define ioss_0_port_1_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_GREEN_HSIOM ioss_0_port_1_pin_1_HSIOM +#define LED_GREEN_IRQ ioss_interrupts_gpio_1_IRQn +#define LED8_PORT GPIO_PRT1 +#define LED8_PIN 5U +#define LED8_NUM 5U +#define LED8_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED8_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_5_HSIOM + #define ioss_0_port_1_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define LED8_HSIOM ioss_0_port_1_pin_5_HSIOM +#define LED8_IRQ ioss_interrupts_gpio_1_IRQn +#define SDHC0_DAT0_PORT GPIO_PRT2 +#define SDHC0_DAT0_PIN 0U +#define SDHC0_DAT0_NUM 0U +#define SDHC0_DAT0_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_0_HSIOM + #define ioss_0_port_2_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT0_HSIOM ioss_0_port_2_pin_0_HSIOM +#define SDHC0_DAT0_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT1_PORT GPIO_PRT2 +#define SDHC0_DAT1_PIN 1U +#define SDHC0_DAT1_NUM 1U +#define SDHC0_DAT1_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_1_HSIOM + #define ioss_0_port_2_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT1_HSIOM ioss_0_port_2_pin_1_HSIOM +#define SDHC0_DAT1_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT2_PORT GPIO_PRT2 +#define SDHC0_DAT2_PIN 2U +#define SDHC0_DAT2_NUM 2U +#define SDHC0_DAT2_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_2_HSIOM + #define ioss_0_port_2_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT2_HSIOM ioss_0_port_2_pin_2_HSIOM +#define SDHC0_DAT2_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT3_PORT GPIO_PRT2 +#define SDHC0_DAT3_PIN 3U +#define SDHC0_DAT3_NUM 3U +#define SDHC0_DAT3_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_3_HSIOM + #define ioss_0_port_2_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT3_HSIOM ioss_0_port_2_pin_3_HSIOM +#define SDHC0_DAT3_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CMD_PORT GPIO_PRT2 +#define SDHC0_CMD_PIN 4U +#define SDHC0_CMD_NUM 4U +#define SDHC0_CMD_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CMD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_4_HSIOM + #define ioss_0_port_2_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CMD_HSIOM ioss_0_port_2_pin_4_HSIOM +#define SDHC0_CMD_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CLK_PORT GPIO_PRT2 +#define SDHC0_CLK_PIN 5U +#define SDHC0_CLK_NUM 5U +#define SDHC0_CLK_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CLK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_5_HSIOM + #define ioss_0_port_2_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CLK_HSIOM ioss_0_port_2_pin_5_HSIOM +#define SDHC0_CLK_IRQ ioss_interrupts_gpio_2_IRQn +#define BT_UART_RX_PORT GPIO_PRT3 +#define BT_UART_RX_PIN 0U +#define BT_UART_RX_NUM 0U +#define BT_UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_0_HSIOM + #define ioss_0_port_3_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RX_HSIOM ioss_0_port_3_pin_0_HSIOM +#define BT_UART_RX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_TX_PORT GPIO_PRT3 +#define BT_UART_TX_PIN 1U +#define BT_UART_TX_NUM 1U +#define BT_UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_1_HSIOM + #define ioss_0_port_3_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_TX_HSIOM ioss_0_port_3_pin_1_HSIOM +#define BT_UART_TX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_RTS_PORT GPIO_PRT3 +#define BT_UART_RTS_PIN 2U +#define BT_UART_RTS_NUM 2U +#define BT_UART_RTS_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_RTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_2_HSIOM + #define ioss_0_port_3_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RTS_HSIOM ioss_0_port_3_pin_2_HSIOM +#define BT_UART_RTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_CTS_PORT GPIO_PRT3 +#define BT_UART_CTS_PIN 3U +#define BT_UART_CTS_NUM 3U +#define BT_UART_CTS_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_CTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_3_HSIOM + #define ioss_0_port_3_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_CTS_HSIOM ioss_0_port_3_pin_3_HSIOM +#define BT_UART_CTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_POWER_PORT GPIO_PRT3 +#define BT_POWER_PIN 4U +#define BT_POWER_NUM 4U +#define BT_POWER_DRIVEMODE CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF +#define BT_POWER_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_4_HSIOM + #define ioss_0_port_3_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_POWER_HSIOM ioss_0_port_3_pin_4_HSIOM +#define BT_POWER_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_HOST_WAKE_PORT GPIO_PRT3 +#define BT_HOST_WAKE_PIN 5U +#define BT_HOST_WAKE_NUM 5U +#define BT_HOST_WAKE_DRIVEMODE CY_GPIO_DM_ANALOG +#define BT_HOST_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_3_pin_5_HSIOM + #define ioss_0_port_3_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_HOST_WAKE_HSIOM ioss_0_port_3_pin_5_HSIOM +#define BT_HOST_WAKE_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_DEVICE_WAKE_PORT GPIO_PRT4 +#define BT_DEVICE_WAKE_PIN 0U +#define BT_DEVICE_WAKE_NUM 0U +#define BT_DEVICE_WAKE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_DEVICE_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_4_pin_0_HSIOM + #define ioss_0_port_4_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_DEVICE_WAKE_HSIOM ioss_0_port_4_pin_0_HSIOM +#define BT_DEVICE_WAKE_IRQ ioss_interrupts_gpio_4_IRQn +#define UART_TX_PORT GPIO_PRT5 +#define UART_TX_PIN 1U +#define UART_TX_NUM 1U +#define UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_5_pin_1_HSIOM + #define ioss_0_port_5_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_TX_HSIOM ioss_0_port_5_pin_1_HSIOM +#define UART_TX_IRQ ioss_interrupts_gpio_5_IRQn +#define EZI2C_SCL_PORT GPIO_PRT6 +#define EZI2C_SCL_PIN 0U +#define EZI2C_SCL_NUM 0U +#define EZI2C_SCL_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SCL_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_0_HSIOM + #define ioss_0_port_6_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SCL_HSIOM ioss_0_port_6_pin_0_HSIOM +#define EZI2C_SCL_IRQ ioss_interrupts_gpio_6_IRQn +#define EZI2C_SDA_PORT GPIO_PRT6 +#define EZI2C_SDA_PIN 1U +#define EZI2C_SDA_NUM 1U +#define EZI2C_SDA_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SDA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_1_HSIOM + #define ioss_0_port_6_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SDA_HSIOM ioss_0_port_6_pin_1_HSIOM +#define EZI2C_SDA_IRQ ioss_interrupts_gpio_6_IRQn +#define SWO_PORT GPIO_PRT6 +#define SWO_PIN 4U +#define SWO_NUM 4U +#define SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM + #define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define SWO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDIO_PORT GPIO_PRT6 +#define SWDIO_PIN 6U +#define SWDIO_NUM 6U +#define SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM + #define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDCK_PORT GPIO_PRT6 +#define SWDCK_PIN 7U +#define SWDCK_NUM 7U +#define SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM + #define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#define CINA_PORT GPIO_PRT7 +#define CINA_PIN 1U +#define CINA_NUM 1U +#define CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM + #define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CINA_IRQ ioss_interrupts_gpio_7_IRQn +#define CINB_PORT GPIO_PRT7 +#define CINB_PIN 2U +#define CINB_NUM 2U +#define CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM + #define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CINB_IRQ ioss_interrupts_gpio_7_IRQn +#define CMOD_PORT GPIO_PRT7 +#define CMOD_PIN 7U +#define CMOD_NUM 7U +#define CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM + #define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#define CSD_BTN0_PORT GPIO_PRT8 +#define CSD_BTN0_PIN 1U +#define CSD_BTN0_NUM 1U +#define CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_1_HSIOM + #define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_BTN1_PORT GPIO_PRT8 +#define CSD_BTN1_PIN 2U +#define CSD_BTN1_NUM 2U +#define CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_2_HSIOM + #define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD0_PORT GPIO_PRT8 +#define CSD_SLD0_PIN 3U +#define CSD_SLD0_NUM 3U +#define CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_3_HSIOM + #define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD1_PORT GPIO_PRT8 +#define CSD_SLD1_PIN 4U +#define CSD_SLD1_NUM 4U +#define CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_4_HSIOM + #define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD2_PORT GPIO_PRT8 +#define CSD_SLD2_PIN 5U +#define CSD_SLD2_NUM 5U +#define CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_5_HSIOM + #define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD3_PORT GPIO_PRT8 +#define CSD_SLD3_PIN 6U +#define CSD_SLD3_NUM 6U +#define CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_6_HSIOM + #define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD4_PORT GPIO_PRT8 +#define CSD_SLD4_PIN 7U +#define CSD_SLD4_NUM 7U +#define CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_7_HSIOM + #define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn + +extern const cy_stc_gpio_pin_config_t WCO_IN_config; +extern const cy_stc_gpio_pin_config_t WCO_OUT_config; +extern const cy_stc_gpio_pin_config_t LED_RED_config; +extern const cy_stc_gpio_pin_config_t SW2_config; +extern const cy_stc_gpio_pin_config_t LED_BLUE_config; +extern const cy_stc_gpio_pin_config_t QSPI_SS0_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA3_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA2_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA1_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA0_config; +extern const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config; +extern const cy_stc_gpio_pin_config_t LED9_config; +extern const cy_stc_gpio_pin_config_t CSD_TX_config; +extern const cy_stc_gpio_pin_config_t LED_GREEN_config; +extern const cy_stc_gpio_pin_config_t LED8_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT0_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT1_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT2_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT3_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CMD_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CLK_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_TX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RTS_config; +extern const cy_stc_gpio_pin_config_t BT_UART_CTS_config; +extern const cy_stc_gpio_pin_config_t BT_POWER_config; +extern const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config; +extern const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config; +extern const cy_stc_gpio_pin_config_t UART_TX_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SCL_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SDA_config; +extern const cy_stc_gpio_pin_config_t SWO_config; +extern const cy_stc_gpio_pin_config_t SWDIO_config; +extern const cy_stc_gpio_pin_config_t SWDCK_config; +extern const cy_stc_gpio_pin_config_t CINA_config; +extern const cy_stc_gpio_pin_config_t CINB_config; +extern const cy_stc_gpio_pin_config_t CMOD_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN0_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD0_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD2_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD3_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD4_config; + +void init_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PINS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.c new file mode 100644 index 00000000000..f0edc010bcc --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.c @@ -0,0 +1,508 @@ +/******************************************************************************* +* File Name: cycfg_platform.c +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_platform.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_PLL1_AVAILABLE 1 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 50UL +#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF4_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBAC_SUPPLY CY_CFG_PWR_VBAC_SUPPLY_VDD +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_1_1V +#define CY_CFG_PWR_USING_ULP 0 + +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = +{ + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 10U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; + +__WEAK void cycfg_ClockStartupError(uint32_t error) +{ + (void)error; /* Suppress the compiler warning */ + while(1); +} +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_ClkHf2Init() +{ + Cy_SysClk_ClkHfSetSource(2U, CY_CFG_SYSCLK_CLKHF2_CLKPATH); + Cy_SysClk_ClkHfSetDivider(2U, CY_SYSCLK_CLKHF_DIVIDE_BY_2); + Cy_SysClk_ClkHfEnable(2U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf4Init() +{ + Cy_SysClk_ClkHfSetSource(4U, CY_CFG_SYSCLK_CLKHF4_CLKPATH); + Cy_SysClk_ClkHfSetDivider(4U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(4U); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(1U); +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} + + +void init_cycfg_platform(void) +{ + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); + #if (CY_CFG_PWR_VBAC_SUPPLY == CY_CFG_PWR_VBAC_SUPPLY_VDD) + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */){ Cy_SysLib_ResetBackupDomain(); } + #endif + #ifdef CY_CFG_PWR_ENABLED + /* Configure power mode */ + #if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_CFG_PWR_LDO_VOLTAGE); + #else + Cy_SysPm_BuckEnable(CY_CFG_PWR_BUCK_VOLTAGE); + #endif + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); + #if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); + #else + Cy_SysPm_PmicDisableOutput(); + #endif + #endif + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH1); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_FllDisable(); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); + + #ifdef CY_CFG_SYSCLK_PLL1_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH2); + #endif + + #ifdef CY_CFG_SYSCLK_PLL2_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH3); + #endif + + #ifdef CY_CFG_SYSCLK_PLL3_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH4); + #endif + + #ifdef CY_CFG_SYSCLK_PLL4_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH5); + #endif + + #ifdef CY_CFG_SYSCLK_PLL5_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH6); + #endif + + #ifdef CY_CFG_SYSCLK_PLL6_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH7); + #endif + + #ifdef CY_CFG_SYSCLK_PLL7_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH8); + #endif + + #ifdef CY_CFG_SYSCLK_PLL8_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH9); + #endif + + #ifdef CY_CFG_SYSCLK_PLL9_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH10); + #endif + + #ifdef CY_CFG_SYSCLK_PLL10_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH11); + #endif + + #ifdef CY_CFG_SYSCLK_PLL11_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH12); + #endif + + #ifdef CY_CFG_SYSCLK_PLL12_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH13); + #endif + + #ifdef CY_CFG_SYSCLK_PLL13_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH14); + #endif + + #ifdef CY_CFG_SYSCLK_PLL14_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH15); + #endif + + /* Enable all source clocks */ + #ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); + #endif + + #ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + Cy_SysClk_AltHfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); + #endif + + /* Configure CPU clock dividers */ + #ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); + #endif + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); + #else + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure Path Clocks */ + #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); + #endif + + /* Configure and enable FLL */ + #ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); + #endif + + Cy_SysClk_ClkHf0Init(); + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure and enable PLLs */ + #ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); + #endif + + /* Configure HF clocks */ + #ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); + #endif + + /* Configure miscellaneous clocks */ + #ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); + #endif + + /* Configure default enabled clocks */ + #ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); + #else + Cy_SysClk_IloDisable(); + #endif + + #ifndef CY_CFG_SYSCLK_IMO_ENABLED + #error the IMO must be enabled for proper chip operation + #endif + + /* Set accurate flash wait states */ + #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); + #endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.h new file mode 100644 index 00000000000..aa4aeb61596 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_platform.h @@ -0,0 +1,52 @@ +/******************************************************************************* +* File Name: cycfg_platform.h +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PLATFORM_H) +#define CYCFG_PLATFORM_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +void init_cycfg_platform(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PLATFORM_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000..ae79008829d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.c @@ -0,0 +1,39 @@ +/******************************************************************************* +* File Name: cycfg_routing.c +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_routing.h" + +#include "cy_device_headers.h" + +void init_cycfg_routing(void) +{ + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000..191672e5998 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/GeneratedSource/cycfg_routing.h @@ -0,0 +1,75 @@ +/******************************************************************************* +* File Name: cycfg_routing.h +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +void init_cycfg_routing(void); +#define init_cycfg_connectivity() init_cycfg_routing() +#define ioss_0_port_11_pin_1_HSIOM P11_1_TCPWM0_LINE_COMPL1 +#define ioss_0_port_11_pin_2_HSIOM P11_2_SMIF_SPI_SELECT0 +#define ioss_0_port_11_pin_3_HSIOM P11_3_SMIF_SPI_DATA3 +#define ioss_0_port_11_pin_4_HSIOM P11_4_SMIF_SPI_DATA2 +#define ioss_0_port_11_pin_5_HSIOM P11_5_SMIF_SPI_DATA1 +#define ioss_0_port_11_pin_6_HSIOM P11_6_SMIF_SPI_DATA0 +#define ioss_0_port_11_pin_7_HSIOM P11_7_SMIF_SPI_CLK +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_2_pin_0_HSIOM P2_0_SDHC0_CARD_DAT_3TO00 +#define ioss_0_port_2_pin_1_HSIOM P2_1_SDHC0_CARD_DAT_3TO01 +#define ioss_0_port_2_pin_2_HSIOM P2_2_SDHC0_CARD_DAT_3TO02 +#define ioss_0_port_2_pin_3_HSIOM P2_3_SDHC0_CARD_DAT_3TO03 +#define ioss_0_port_2_pin_4_HSIOM P2_4_SDHC0_CARD_CMD +#define ioss_0_port_2_pin_5_HSIOM P2_5_SDHC0_CLK_CARD +#define ioss_0_port_3_pin_0_HSIOM P3_0_SCB2_UART_RX +#define ioss_0_port_3_pin_1_HSIOM P3_1_SCB2_UART_TX +#define ioss_0_port_3_pin_2_HSIOM P3_2_SCB2_UART_RTS +#define ioss_0_port_3_pin_3_HSIOM P3_3_SCB2_UART_CTS +#define ioss_0_port_5_pin_1_HSIOM P5_1_SCB5_UART_TX +#define ioss_0_port_6_pin_0_HSIOM P6_0_SCB3_I2C_SCL +#define ioss_0_port_6_pin_1_HSIOM P6_1_SCB3_I2C_SDA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXB + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_ROUTING_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/PinNames.h new file mode 100644 index 00000000000..344a980a9cf --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/TARGET_CY8CPROTO_062_4343W/PinNames.h @@ -0,0 +1,258 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" +#include "PortNames.h" + +// PinName[15-0] = Port[15-8] + Pin[7-0] +typedef enum { + P0_0 = (Port0 << 8) + 0x00, + P0_1 = (Port0 << 8) + 0x01, + P0_2 = (Port0 << 8) + 0x02, + P0_3 = (Port0 << 8) + 0x03, + P0_4 = (Port0 << 8) + 0x04, + P0_5 = (Port0 << 8) + 0x05, + P0_6 = (Port0 << 8) + 0x06, + P0_7 = (Port0 << 8) + 0x07, + + P1_0 = (Port1 << 8) + 0x00, + P1_1 = (Port1 << 8) + 0x01, + P1_2 = (Port1 << 8) + 0x02, + P1_3 = (Port1 << 8) + 0x03, + P1_4 = (Port1 << 8) + 0x04, + P1_5 = (Port1 << 8) + 0x05, + P1_6 = (Port1 << 8) + 0x06, + P1_7 = (Port1 << 8) + 0x07, + + P2_0 = (Port2 << 8) + 0x00, + P2_1 = (Port2 << 8) + 0x01, + P2_2 = (Port2 << 8) + 0x02, + P2_3 = (Port2 << 8) + 0x03, + P2_4 = (Port2 << 8) + 0x04, + P2_5 = (Port2 << 8) + 0x05, + P2_6 = (Port2 << 8) + 0x06, + P2_7 = (Port2 << 8) + 0x07, + + P3_0 = (Port3 << 8) + 0x00, + P3_1 = (Port3 << 8) + 0x01, + P3_2 = (Port3 << 8) + 0x02, + P3_3 = (Port3 << 8) + 0x03, + P3_4 = (Port3 << 8) + 0x04, + P3_5 = (Port3 << 8) + 0x05, + P3_6 = (Port3 << 8) + 0x06, + P3_7 = (Port3 << 8) + 0x07, + + P4_0 = (Port4 << 8) + 0x00, + P4_1 = (Port4 << 8) + 0x01, + P4_2 = (Port4 << 8) + 0x02, + P4_3 = (Port4 << 8) + 0x03, + P4_4 = (Port4 << 8) + 0x04, + P4_5 = (Port4 << 8) + 0x05, + P4_6 = (Port4 << 8) + 0x06, + P4_7 = (Port4 << 8) + 0x07, + + P5_0 = (Port5 << 8) + 0x00, + P5_1 = (Port5 << 8) + 0x01, + P5_2 = (Port5 << 8) + 0x02, + P5_3 = (Port5 << 8) + 0x03, + P5_4 = (Port5 << 8) + 0x04, + P5_5 = (Port5 << 8) + 0x05, + P5_6 = (Port5 << 8) + 0x06, + P5_7 = (Port5 << 8) + 0x07, + + P6_0 = (Port6 << 8) + 0x00, + P6_1 = (Port6 << 8) + 0x01, + P6_2 = (Port6 << 8) + 0x02, + P6_3 = (Port6 << 8) + 0x03, + P6_4 = (Port6 << 8) + 0x04, + P6_5 = (Port6 << 8) + 0x05, + P6_6 = (Port6 << 8) + 0x06, + P6_7 = (Port6 << 8) + 0x07, + + P7_0 = (Port7 << 8) + 0x00, + P7_1 = (Port7 << 8) + 0x01, + P7_2 = (Port7 << 8) + 0x02, + P7_3 = (Port7 << 8) + 0x03, + P7_4 = (Port7 << 8) + 0x04, + P7_5 = (Port7 << 8) + 0x05, + P7_6 = (Port7 << 8) + 0x06, + P7_7 = (Port7 << 8) + 0x07, + + P8_0 = (Port8 << 8) + 0x00, + P8_1 = (Port8 << 8) + 0x01, + P8_2 = (Port8 << 8) + 0x02, + P8_3 = (Port8 << 8) + 0x03, + P8_4 = (Port8 << 8) + 0x04, + P8_5 = (Port8 << 8) + 0x05, + P8_6 = (Port8 << 8) + 0x06, + P8_7 = (Port8 << 8) + 0x07, + + P9_0 = (Port9 << 8) + 0x00, + P9_1 = (Port9 << 8) + 0x01, + P9_2 = (Port9 << 8) + 0x02, + P9_3 = (Port9 << 8) + 0x03, + P9_4 = (Port9 << 8) + 0x04, + P9_5 = (Port9 << 8) + 0x05, + P9_6 = (Port9 << 8) + 0x06, + P9_7 = (Port9 << 8) + 0x07, + + P10_0 = (Port10 << 8) + 0x00, + P10_1 = (Port10 << 8) + 0x01, + P10_2 = (Port10 << 8) + 0x02, + P10_3 = (Port10 << 8) + 0x03, + P10_4 = (Port10 << 8) + 0x04, + P10_5 = (Port10 << 8) + 0x05, + P10_6 = (Port10 << 8) + 0x06, + P10_7 = (Port10 << 8) + 0x07, + + P11_0 = (Port11 << 8) + 0x00, + P11_1 = (Port11 << 8) + 0x01, + P11_2 = (Port11 << 8) + 0x02, + P11_3 = (Port11 << 8) + 0x03, + P11_4 = (Port11 << 8) + 0x04, + P11_5 = (Port11 << 8) + 0x05, + P11_6 = (Port11 << 8) + 0x06, + P11_7 = (Port11 << 8) + 0x07, + + P12_0 = (Port12 << 8) + 0x00, + P12_1 = (Port12 << 8) + 0x01, + P12_2 = (Port12 << 8) + 0x02, + P12_3 = (Port12 << 8) + 0x03, + P12_4 = (Port12 << 8) + 0x04, + P12_5 = (Port12 << 8) + 0x05, + P12_6 = (Port12 << 8) + 0x06, + P12_7 = (Port12 << 8) + 0x07, + + P13_0 = (Port13 << 8) + 0x00, + P13_1 = (Port13 << 8) + 0x01, + P13_2 = (Port13 << 8) + 0x02, + P13_3 = (Port13 << 8) + 0x03, + P13_4 = (Port13 << 8) + 0x04, + P13_5 = (Port13 << 8) + 0x05, + P13_6 = (Port13 << 8) + 0x06, + P13_7 = (Port13 << 8) + 0x07, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Generic signal names + + I2C_SCL = P6_0, + I2C_SDA = P6_1, + + UART_RX = P5_0, + UART_TX = P5_1, + UART_RTS = P5_2, + UART_CTS = P5_3, + + BT_UART_RX = P3_0, + BT_UART_TX = P3_1, + BT_UART_CTS = P3_3, + BT_UART_RTS = P3_2, + + BT_PIN_POWER = P3_4, + BT_PIN_HOST_WAKE = P3_5, + BT_PIN_DEVICE_WAKE = P4_0, + // Reset pin unavailable + + SWITCH2 = P0_4, + LED1 = P13_7, + LED2 = LED1, + LED3 = NC, + LED4 = NC, + LED_RED = LED1, + + USER_BUTTON = SWITCH2, + BUTTON1 = USER_BUTTON, + + PDM_DATA = P10_5, + PDM_CLK = P10_4, + THERM_OUT_1 = P10_1, + THERM_OUT_2 = P10_2, + THERM_OUT = THERM_OUT_1, + THERM_VDD = P10_3, + THERM_GND = P10_0, + + CARD_DETECT_1 = P13_5, + CARD_DETECT_2 = P12_1, + CARD_DETECT = CARD_DETECT_1, + SD_CMD = P12_4, + SD_CLK = P12_5, + SD_IO_0 = P13_0, + SD_IO_1 = P13_1, + SD_IO_2 = P13_2, + SD_IO_3 = P13_3, + + QSPI_CLK = P11_7, + QSPI_IO_0 = P11_6, + QSPI_IO_1 = P11_5, + QSPI_IO_2 = P11_4, + QSPI_IO_3 = P11_3, + QSPI_SEL = P11_2, + + // Standardized interfaces names + STDIO_UART_TX = UART_TX, + STDIO_UART_RX = UART_RX, + STDIO_UART_CTS = UART_CTS, + STDIO_UART_RTS = UART_RTS, + + CY_STDIO_UART_RX = STDIO_UART_RX, + CY_STDIO_UART_TX = STDIO_UART_TX, + CY_STDIO_UART_CTS = STDIO_UART_CTS, + CY_STDIO_UART_RTS = STDIO_UART_RTS, + + CY_BT_UART_RX = BT_UART_RX, + CY_BT_UART_TX = BT_UART_TX, + CY_BT_UART_CTS = BT_UART_CTS, + CY_BT_UART_RTS = BT_UART_RTS, + + CY_BT_PIN_POWER = BT_PIN_POWER, + CY_BT_PIN_HOST_WAKE = BT_PIN_HOST_WAKE, + CY_BT_PIN_DEVICE_WAKE = BT_PIN_DEVICE_WAKE, + + USBTX = UART_TX, + USBRX = UART_RX, + + // Not connected + AOUT = (int)0xFFFFFFFF +} PinName; + +// PinName[15-0] = Port[15-8] + Pin[4-0] +static inline unsigned CY_PIN(PinName pin) +{ + return pin & 0x07; +} + +static inline unsigned CY_PORT(PinName pin) +{ + return (pin >> 8) & 0xFF; +} + +// Because MBED pin mapping API does not allow to map multiple instances of the PWM +// to be mapped to the same pin, we create special pin names to force 32-bit PWM unit +// usage instead of standard 16-bit PWM. + +#define PWM32(pin) CY_PIN_FORCE_PWM_32(pin) + + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct new file mode 100644 index 00000000000..0f640fc931f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/cy8c6xxa_cm4_dual.sct @@ -0,0 +1,256 @@ +#! armcc -E +; The first line specifies a preprocessor command that the linker invokes +; to pass a scatter file through a C preprocessor. + +;******************************************************************************* +;* \file cy8c6xxa_cm4_dual.scat +;* \version `$CY_MAJOR_VERSION`.`$CY_MINOR_VERSION` +;* +;* Linker file for the ARMCC. +;* +;* The main purpose of the linker script is to describe how the sections in the +;* input files should be mapped into the output file, and to control the memory +;* layout of the output file. +;* +;* \note The entry point location is fixed and starts at 0x10000000. The valid +;* application image should be placed there. +;* +;* \note The linker files included with the PDL template projects must be +;* generic and handle all common use cases. Your project may not use every +;* section defined in the linker files. In that case you may see the warnings +;* during the build process: L6314W (no section matches pattern) and/or L6329W +;* (pattern only matches removed unused sections). In your project, you can +;* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +;* the linker, simply comment out or remove the relevant code in the linker +;* file. +;* +;******************************************************************************* +;* \copyright +;* Copyright 2016-2019 Cypress Semiconductor Corporation +;* SPDX-License-Identifier: Apache-2.0 +;* +;* Licensed under the Apache License, Version 2.0 (the "License"); +;* you may not use this file except in compliance with the License. +;* You may obtain a copy of the License at +;* +;* http://www.apache.org/licenses/LICENSE-2.0 +;* +;* Unless required by applicable law or agreed to in writing, software +;* distributed under the License is distributed on an "AS IS" BASIS, +;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;* See the License for the specific language governing permissions and +;* limitations under the License. +;******************************************************************************/ + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x001FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x000FD800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +#define Stack_Size MBED_BOOT_STACK_SIZE + +; The defines below describe the location and size of blocks of memory in the target. +; Use these defines to specify the memory regions available for allocation. + +; The following defines control RAM and flash memory allocation for the CM4 core. +; You can change the memory allocation by editing RAM and Flash defines. +; Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. +; Using this memory region for other purposes will lead to unexpected behavior. +; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat', +; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'. +; RAM +#define RAM_START MBED_RAM_START +#define RAM_SIZE MBED_RAM_SIZE +; Flash +#define FLASH_START MBED_ROM_START +#define FLASH_SIZE MBED_ROM_SIZE + +; The following defines describe a 32K flash region used for EEPROM emulation. +; This region can also be used as the general purpose flash. +; You can assign sections to this memory region for only one of the cores. +; Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. +; Therefore, repurposing this memory region will prevent such middleware from operation. +#define EM_EEPROM_START 0x14000000 +#define EM_EEPROM_SIZE 0x8000 + +; The following defines describe device specific memory regions and must not be changed. +; Supervisory flash: User data +#define SFLASH_USER_DATA_START 0x16000800 +#define SFLASH_USER_DATA_SIZE 0x00000800 + +; Supervisory flash: Normal Access Restrictions (NAR) +#define SFLASH_NAR_START 0x16001A00 +#define SFLASH_NAR_SIZE 0x00000200 + +; Supervisory flash: Public Key +#define SFLASH_PUBLIC_KEY_START 0x16005A00 +#define SFLASH_PUBLIC_KEY_SIZE 0x00000C00 + +; Supervisory flash: Table of Content # 2 +#define SFLASH_TOC_2_START 0x16007C00 +#define SFLASH_TOC_2_SIZE 0x00000200 + +; Supervisory flash: Table of Content # 2 Copy +#define SFLASH_RTOC_2_START 0x16007E00 +#define SFLASH_RTOC_2_SIZE 0x00000200 + +; External memory +#define XIP_START 0x18000000 +#define XIP_SIZE 0x08000000 + +; eFuse +#define EFUSE_START 0x90700000 +#define EFUSE_SIZE 0x100000 + + +LR_IROM1 FLASH_START FLASH_SIZE +{ + ER_FLASH_VECTORS +0 + { + * (RESET, +FIRST) + } + + ER_FLASH_CODE +0 FIXED + { + * (InRoot$$Sections) + * (+RO) + } + + ER_RAM_VECTORS RAM_START UNINIT + { + * (RESET_RAM, +FIRST) + } + + RW_RAM_DATA +0 + { + * (.cy_ramfunc) + .ANY (+RW, +ZI) + } + + ; Place variables in the section that should not be initialized during the + ; device startup. + RW_IRAM1 +0 UNINIT + { + * (.noinit) + } + + ; Application heap area (HEAP) + ARM_LIB_HEAP +0 + { + * (HEAP) + } + + ; Stack region growing down + ARM_LIB_STACK RAM_START+RAM_SIZE -Stack_Size + { + * (STACK) + } + + ; Used for the digital signature of the secure application and the + ; Bootloader SDK application. The size of the section depends on the required + ; data size. + .cy_app_signature (FLASH_START + FLASH_SIZE - 256) 256 + { + * (.cy_app_signature) + } +} + + +; Emulated EEPROM Flash area +LR_EM_EEPROM EM_EEPROM_START EM_EEPROM_SIZE +{ + .cy_em_eeprom +0 + { + * (.cy_em_eeprom) + } +} + +; Supervisory flash: User data +LR_SFLASH_USER_DATA SFLASH_USER_DATA_START SFLASH_USER_DATA_SIZE +{ + .cy_sflash_user_data +0 + { + * (.cy_sflash_user_data) + } +} + +; Supervisory flash: Normal Access Restrictions (NAR) +LR_SFLASH_NAR SFLASH_NAR_START SFLASH_NAR_SIZE +{ + .cy_sflash_nar +0 + { + * (.cy_sflash_nar) + } +} + +; Supervisory flash: Public Key +LR_SFLASH_PUBLIC_KEY SFLASH_PUBLIC_KEY_START SFLASH_PUBLIC_KEY_SIZE +{ + .cy_sflash_public_key +0 + { + * (.cy_sflash_public_key) + } +} + +; Supervisory flash: Table of Content # 2 +LR_SFLASH_TOC_2 SFLASH_TOC_2_START SFLASH_TOC_2_SIZE +{ + .cy_toc_part2 +0 + { + * (.cy_toc_part2) + } +} + +; Supervisory flash: Table of Content # 2 Copy +LR_SFLASH_RTOC_2 SFLASH_RTOC_2_START SFLASH_RTOC_2_SIZE +{ + .cy_rtoc_part2 +0 + { + * (.cy_rtoc_part2) + } +} + + +; Places the code in the Execute in Place (XIP) section. See the smif driver documentation for details. +LR_EROM XIP_START XIP_SIZE +{ + .cy_xip +0 + { + * (.cy_xip) + } +} + + +; eFuse +LR_EFUSE EFUSE_START EFUSE_SIZE +{ + .cy_efuse +0 + { + * (.cy_efuse) + } +} + + +; The section is used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. +CYMETA 0x90500000 +{ + .cymeta +0 { * (.cymeta) } +} + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..cceaf06e646 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_ARM_STD/startup_psoc6_02_cm4.S @@ -0,0 +1,759 @@ +;/**************************************************************************//** +; * @file startup_psoc6_02_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 02. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;/* +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__STACK_SIZE +Stack_Size EQU __STACK_SIZE + ELSE +Stack_Size EQU 0x00000400 + ENDIF + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__HEAP_SIZE +Heap_Size EQU __HEAP_SIZE + ELSE +Heap_Size EQU 0x00000400 + ENDIF + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + + DCD 0x0000000D ; NMI Handler located at ROM code + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External interrupts Power Mode Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD scb_9_interrupt_IRQHandler ; Serial Communication Block #9 + DCD scb_10_interrupt_IRQHandler ; Serial Communication Block #10 + DCD scb_11_interrupt_IRQHandler ; Serial Communication Block #11 + DCD scb_12_interrupt_IRQHandler ; Serial Communication Block #12 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dmac_0_IRQHandler ; CPUSS DMAC, Channel #0 + DCD cpuss_interrupts_dmac_1_IRQHandler ; CPUSS DMAC, Channel #1 + DCD cpuss_interrupts_dmac_2_IRQHandler ; CPUSS DMAC, Channel #2 + DCD cpuss_interrupts_dmac_3_IRQHandler ; CPUSS DMAC, Channel #3 + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw0_16_IRQHandler ; CPUSS DataWire #0, Channel #16 + DCD cpuss_interrupts_dw0_17_IRQHandler ; CPUSS DataWire #0, Channel #17 + DCD cpuss_interrupts_dw0_18_IRQHandler ; CPUSS DataWire #0, Channel #18 + DCD cpuss_interrupts_dw0_19_IRQHandler ; CPUSS DataWire #0, Channel #19 + DCD cpuss_interrupts_dw0_20_IRQHandler ; CPUSS DataWire #0, Channel #20 + DCD cpuss_interrupts_dw0_21_IRQHandler ; CPUSS DataWire #0, Channel #21 + DCD cpuss_interrupts_dw0_22_IRQHandler ; CPUSS DataWire #0, Channel #22 + DCD cpuss_interrupts_dw0_23_IRQHandler ; CPUSS DataWire #0, Channel #23 + DCD cpuss_interrupts_dw0_24_IRQHandler ; CPUSS DataWire #0, Channel #24 + DCD cpuss_interrupts_dw0_25_IRQHandler ; CPUSS DataWire #0, Channel #25 + DCD cpuss_interrupts_dw0_26_IRQHandler ; CPUSS DataWire #0, Channel #26 + DCD cpuss_interrupts_dw0_27_IRQHandler ; CPUSS DataWire #0, Channel #27 + DCD cpuss_interrupts_dw0_28_IRQHandler ; CPUSS DataWire #0, Channel #28 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_dw1_16_IRQHandler ; CPUSS DataWire #1, Channel #16 + DCD cpuss_interrupts_dw1_17_IRQHandler ; CPUSS DataWire #1, Channel #17 + DCD cpuss_interrupts_dw1_18_IRQHandler ; CPUSS DataWire #1, Channel #18 + DCD cpuss_interrupts_dw1_19_IRQHandler ; CPUSS DataWire #1, Channel #19 + DCD cpuss_interrupts_dw1_20_IRQHandler ; CPUSS DataWire #1, Channel #20 + DCD cpuss_interrupts_dw1_21_IRQHandler ; CPUSS DataWire #1, Channel #21 + DCD cpuss_interrupts_dw1_22_IRQHandler ; CPUSS DataWire #1, Channel #22 + DCD cpuss_interrupts_dw1_23_IRQHandler ; CPUSS DataWire #1, Channel #23 + DCD cpuss_interrupts_dw1_24_IRQHandler ; CPUSS DataWire #1, Channel #24 + DCD cpuss_interrupts_dw1_25_IRQHandler ; CPUSS DataWire #1, Channel #25 + DCD cpuss_interrupts_dw1_26_IRQHandler ; CPUSS DataWire #1, Channel #26 + DCD cpuss_interrupts_dw1_27_IRQHandler ; CPUSS DataWire #1, Channel #27 + DCD cpuss_interrupts_dw1_28_IRQHandler ; CPUSS DataWire #1, Channel #28 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm4_fp_IRQHandler ; Floating Point operation fault + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_0_interrupt_i2s_IRQHandler ; I2S0 Audio interrupt + DCD audioss_0_interrupt_pdm_IRQHandler ; PDM0/PCM0 Audio interrupt + DCD audioss_1_interrupt_i2s_IRQHandler ; I2S1 Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD sdhc_0_interrupt_wakeup_IRQHandler ; SDIO wakeup interrupt for mxsdhc + DCD sdhc_0_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + DCD sdhc_1_interrupt_wakeup_IRQHandler ; EEMC wakeup interrupt for mxsdhc, not used + DCD sdhc_1_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + EXPORT __ramVectors + AREA RESET_RAM, READWRITE, NOINIT +__ramVectors SPACE __Vectors_Size + + + AREA |.text|, CODE, READONLY + + +; Weak function for startup customization +; +; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +; because this function is executed as the first instruction in the ResetHandler. +; The PDL is also not initialized to use the proper register offsets. +; The user of this function is responsible for initializing the PDL and resources before using them. +; +Cy_OnResetUser PROC + EXPORT Cy_OnResetUser [WEAK] + BX LR + ENDP + + +; Reset Handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT Cy_SystemInitFpuEnable + IMPORT __main + + ; Define strong function for startup customization + BL Cy_OnResetUser + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__Vectors + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +Vectors_Copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE Vectors_Copy + + ; Update Vector Table Offset Register. */ + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb 0xF + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + LDR R0, =__main + BLX R0 + + ; Should never get here + B . + + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP + +Cy_SysLib_FaultHandler PROC + EXPORT Cy_SysLib_FaultHandler [WEAK] + B . + ENDP +HardFault_Wrapper\ + PROC + EXPORT HardFault_Wrapper [WEAK] + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + bl L_API_call +L_MSP + mrs r0, MSP +L_API_call + bl Cy_SysLib_FaultHandler + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B HardFault_Wrapper + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT Default_Handler [WEAK] + EXPORT ioss_interrupts_gpio_0_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_1_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_2_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_3_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_4_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_5_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_6_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_7_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_8_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_9_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_10_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_11_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_12_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_13_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_14_IRQHandler [WEAK] + EXPORT ioss_interrupt_gpio_IRQHandler [WEAK] + EXPORT ioss_interrupt_vdd_IRQHandler [WEAK] + EXPORT lpcomp_interrupt_IRQHandler [WEAK] + EXPORT scb_8_interrupt_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_0_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_1_IRQHandler [WEAK] + EXPORT srss_interrupt_backup_IRQHandler [WEAK] + EXPORT srss_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_15_IRQHandler [WEAK] + EXPORT scb_0_interrupt_IRQHandler [WEAK] + EXPORT scb_1_interrupt_IRQHandler [WEAK] + EXPORT scb_2_interrupt_IRQHandler [WEAK] + EXPORT scb_3_interrupt_IRQHandler [WEAK] + EXPORT scb_4_interrupt_IRQHandler [WEAK] + EXPORT scb_5_interrupt_IRQHandler [WEAK] + EXPORT scb_6_interrupt_IRQHandler [WEAK] + EXPORT scb_7_interrupt_IRQHandler [WEAK] + EXPORT scb_9_interrupt_IRQHandler [WEAK] + EXPORT scb_10_interrupt_IRQHandler [WEAK] + EXPORT scb_11_interrupt_IRQHandler [WEAK] + EXPORT scb_12_interrupt_IRQHandler [WEAK] + EXPORT csd_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dmac_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_16_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_17_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_18_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_19_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_20_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_21_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_22_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_23_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_24_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_25_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_26_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_27_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_28_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_16_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_17_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_18_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_19_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_20_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_21_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_22_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_23_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_24_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_25_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_26_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_27_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_28_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_1_IRQHandler [WEAK] + EXPORT cpuss_interrupt_crypto_IRQHandler [WEAK] + EXPORT cpuss_interrupt_fm_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_fp_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_8_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_9_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_10_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_11_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_12_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_13_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_14_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_15_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_16_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_17_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_18_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_19_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_20_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_21_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_22_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_23_IRQHandler [WEAK] + EXPORT pass_interrupt_sar_IRQHandler [WEAK] + EXPORT audioss_0_interrupt_i2s_IRQHandler [WEAK] + EXPORT audioss_0_interrupt_pdm_IRQHandler [WEAK] + EXPORT audioss_1_interrupt_i2s_IRQHandler [WEAK] + EXPORT profile_interrupt_IRQHandler [WEAK] + EXPORT smif_interrupt_IRQHandler [WEAK] + EXPORT usb_interrupt_hi_IRQHandler [WEAK] + EXPORT usb_interrupt_med_IRQHandler [WEAK] + EXPORT usb_interrupt_lo_IRQHandler [WEAK] + EXPORT sdhc_0_interrupt_wakeup_IRQHandler [WEAK] + EXPORT sdhc_0_interrupt_general_IRQHandler [WEAK] + EXPORT sdhc_1_interrupt_wakeup_IRQHandler [WEAK] + EXPORT sdhc_1_interrupt_general_IRQHandler [WEAK] + +ioss_interrupts_gpio_0_IRQHandler +ioss_interrupts_gpio_1_IRQHandler +ioss_interrupts_gpio_2_IRQHandler +ioss_interrupts_gpio_3_IRQHandler +ioss_interrupts_gpio_4_IRQHandler +ioss_interrupts_gpio_5_IRQHandler +ioss_interrupts_gpio_6_IRQHandler +ioss_interrupts_gpio_7_IRQHandler +ioss_interrupts_gpio_8_IRQHandler +ioss_interrupts_gpio_9_IRQHandler +ioss_interrupts_gpio_10_IRQHandler +ioss_interrupts_gpio_11_IRQHandler +ioss_interrupts_gpio_12_IRQHandler +ioss_interrupts_gpio_13_IRQHandler +ioss_interrupts_gpio_14_IRQHandler +ioss_interrupt_gpio_IRQHandler +ioss_interrupt_vdd_IRQHandler +lpcomp_interrupt_IRQHandler +scb_8_interrupt_IRQHandler +srss_interrupt_mcwdt_0_IRQHandler +srss_interrupt_mcwdt_1_IRQHandler +srss_interrupt_backup_IRQHandler +srss_interrupt_IRQHandler +cpuss_interrupts_ipc_0_IRQHandler +cpuss_interrupts_ipc_1_IRQHandler +cpuss_interrupts_ipc_2_IRQHandler +cpuss_interrupts_ipc_3_IRQHandler +cpuss_interrupts_ipc_4_IRQHandler +cpuss_interrupts_ipc_5_IRQHandler +cpuss_interrupts_ipc_6_IRQHandler +cpuss_interrupts_ipc_7_IRQHandler +cpuss_interrupts_ipc_8_IRQHandler +cpuss_interrupts_ipc_9_IRQHandler +cpuss_interrupts_ipc_10_IRQHandler +cpuss_interrupts_ipc_11_IRQHandler +cpuss_interrupts_ipc_12_IRQHandler +cpuss_interrupts_ipc_13_IRQHandler +cpuss_interrupts_ipc_14_IRQHandler +cpuss_interrupts_ipc_15_IRQHandler +scb_0_interrupt_IRQHandler +scb_1_interrupt_IRQHandler +scb_2_interrupt_IRQHandler +scb_3_interrupt_IRQHandler +scb_4_interrupt_IRQHandler +scb_5_interrupt_IRQHandler +scb_6_interrupt_IRQHandler +scb_7_interrupt_IRQHandler +scb_9_interrupt_IRQHandler +scb_10_interrupt_IRQHandler +scb_11_interrupt_IRQHandler +scb_12_interrupt_IRQHandler +csd_interrupt_IRQHandler +cpuss_interrupts_dmac_0_IRQHandler +cpuss_interrupts_dmac_1_IRQHandler +cpuss_interrupts_dmac_2_IRQHandler +cpuss_interrupts_dmac_3_IRQHandler +cpuss_interrupts_dw0_0_IRQHandler +cpuss_interrupts_dw0_1_IRQHandler +cpuss_interrupts_dw0_2_IRQHandler +cpuss_interrupts_dw0_3_IRQHandler +cpuss_interrupts_dw0_4_IRQHandler +cpuss_interrupts_dw0_5_IRQHandler +cpuss_interrupts_dw0_6_IRQHandler +cpuss_interrupts_dw0_7_IRQHandler +cpuss_interrupts_dw0_8_IRQHandler +cpuss_interrupts_dw0_9_IRQHandler +cpuss_interrupts_dw0_10_IRQHandler +cpuss_interrupts_dw0_11_IRQHandler +cpuss_interrupts_dw0_12_IRQHandler +cpuss_interrupts_dw0_13_IRQHandler +cpuss_interrupts_dw0_14_IRQHandler +cpuss_interrupts_dw0_15_IRQHandler +cpuss_interrupts_dw0_16_IRQHandler +cpuss_interrupts_dw0_17_IRQHandler +cpuss_interrupts_dw0_18_IRQHandler +cpuss_interrupts_dw0_19_IRQHandler +cpuss_interrupts_dw0_20_IRQHandler +cpuss_interrupts_dw0_21_IRQHandler +cpuss_interrupts_dw0_22_IRQHandler +cpuss_interrupts_dw0_23_IRQHandler +cpuss_interrupts_dw0_24_IRQHandler +cpuss_interrupts_dw0_25_IRQHandler +cpuss_interrupts_dw0_26_IRQHandler +cpuss_interrupts_dw0_27_IRQHandler +cpuss_interrupts_dw0_28_IRQHandler +cpuss_interrupts_dw1_0_IRQHandler +cpuss_interrupts_dw1_1_IRQHandler +cpuss_interrupts_dw1_2_IRQHandler +cpuss_interrupts_dw1_3_IRQHandler +cpuss_interrupts_dw1_4_IRQHandler +cpuss_interrupts_dw1_5_IRQHandler +cpuss_interrupts_dw1_6_IRQHandler +cpuss_interrupts_dw1_7_IRQHandler +cpuss_interrupts_dw1_8_IRQHandler +cpuss_interrupts_dw1_9_IRQHandler +cpuss_interrupts_dw1_10_IRQHandler +cpuss_interrupts_dw1_11_IRQHandler +cpuss_interrupts_dw1_12_IRQHandler +cpuss_interrupts_dw1_13_IRQHandler +cpuss_interrupts_dw1_14_IRQHandler +cpuss_interrupts_dw1_15_IRQHandler +cpuss_interrupts_dw1_16_IRQHandler +cpuss_interrupts_dw1_17_IRQHandler +cpuss_interrupts_dw1_18_IRQHandler +cpuss_interrupts_dw1_19_IRQHandler +cpuss_interrupts_dw1_20_IRQHandler +cpuss_interrupts_dw1_21_IRQHandler +cpuss_interrupts_dw1_22_IRQHandler +cpuss_interrupts_dw1_23_IRQHandler +cpuss_interrupts_dw1_24_IRQHandler +cpuss_interrupts_dw1_25_IRQHandler +cpuss_interrupts_dw1_26_IRQHandler +cpuss_interrupts_dw1_27_IRQHandler +cpuss_interrupts_dw1_28_IRQHandler +cpuss_interrupts_fault_0_IRQHandler +cpuss_interrupts_fault_1_IRQHandler +cpuss_interrupt_crypto_IRQHandler +cpuss_interrupt_fm_IRQHandler +cpuss_interrupts_cm4_fp_IRQHandler +cpuss_interrupts_cm0_cti_0_IRQHandler +cpuss_interrupts_cm0_cti_1_IRQHandler +cpuss_interrupts_cm4_cti_0_IRQHandler +cpuss_interrupts_cm4_cti_1_IRQHandler +tcpwm_0_interrupts_0_IRQHandler +tcpwm_0_interrupts_1_IRQHandler +tcpwm_0_interrupts_2_IRQHandler +tcpwm_0_interrupts_3_IRQHandler +tcpwm_0_interrupts_4_IRQHandler +tcpwm_0_interrupts_5_IRQHandler +tcpwm_0_interrupts_6_IRQHandler +tcpwm_0_interrupts_7_IRQHandler +tcpwm_1_interrupts_0_IRQHandler +tcpwm_1_interrupts_1_IRQHandler +tcpwm_1_interrupts_2_IRQHandler +tcpwm_1_interrupts_3_IRQHandler +tcpwm_1_interrupts_4_IRQHandler +tcpwm_1_interrupts_5_IRQHandler +tcpwm_1_interrupts_6_IRQHandler +tcpwm_1_interrupts_7_IRQHandler +tcpwm_1_interrupts_8_IRQHandler +tcpwm_1_interrupts_9_IRQHandler +tcpwm_1_interrupts_10_IRQHandler +tcpwm_1_interrupts_11_IRQHandler +tcpwm_1_interrupts_12_IRQHandler +tcpwm_1_interrupts_13_IRQHandler +tcpwm_1_interrupts_14_IRQHandler +tcpwm_1_interrupts_15_IRQHandler +tcpwm_1_interrupts_16_IRQHandler +tcpwm_1_interrupts_17_IRQHandler +tcpwm_1_interrupts_18_IRQHandler +tcpwm_1_interrupts_19_IRQHandler +tcpwm_1_interrupts_20_IRQHandler +tcpwm_1_interrupts_21_IRQHandler +tcpwm_1_interrupts_22_IRQHandler +tcpwm_1_interrupts_23_IRQHandler +pass_interrupt_sar_IRQHandler +audioss_0_interrupt_i2s_IRQHandler +audioss_0_interrupt_pdm_IRQHandler +audioss_1_interrupt_i2s_IRQHandler +profile_interrupt_IRQHandler +smif_interrupt_IRQHandler +usb_interrupt_hi_IRQHandler +usb_interrupt_med_IRQHandler +usb_interrupt_lo_IRQHandler +sdhc_0_interrupt_wakeup_IRQHandler +sdhc_0_interrupt_general_IRQHandler +sdhc_1_interrupt_wakeup_IRQHandler +sdhc_1_interrupt_general_IRQHandler + + B . + ENDP + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld new file mode 100644 index 00000000000..8b0f1ec04dd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld @@ -0,0 +1,430 @@ +/***************************************************************************//** +* \file cy8c6xxa_cm4_dual.ld +* \version 2.30 +* +* Linker file for the GNU C compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point location is fixed and starts at 0x10000000. The valid +* application image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) +ENTRY(Reset_Handler) + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x001FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x000FD800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +STACK_SIZE = MBED_BOOT_STACK_SIZE; + +/* Force symbol to be entered in the output file as an undefined symbol. Doing +* this may, for example, trigger linking of additional modules from standard +* libraries. You may list several symbols for each EXTERN, and you may use +* EXTERN multiple times. This command has the same effect as the -u command-line +* option. +*/ +EXTERN(Reset_Handler) + +/* The MEMORY section below describes the location and size of blocks of memory in the target. +* Use this section to specify the memory regions available for allocation. +*/ +MEMORY +{ + /* The ram and flash regions control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing the 'ram' and 'flash' regions. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. + */ + ram (rwx) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE + flash (rx) : ORIGIN = MBED_ROM_START, LENGTH = MBED_ROM_SIZE + + /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ + em_eeprom (rx) : ORIGIN = 0x14000000, LENGTH = 0x8000 /* 32 KB */ + + /* The following regions define device specific memory regions and must not be changed. */ + sflash_user_data (rx) : ORIGIN = 0x16000800, LENGTH = 0x800 /* Supervisory flash: User data */ + sflash_nar (rx) : ORIGIN = 0x16001A00, LENGTH = 0x200 /* Supervisory flash: Normal Access Restrictions (NAR) */ + sflash_public_key (rx) : ORIGIN = 0x16005A00, LENGTH = 0xC00 /* Supervisory flash: Public Key */ + sflash_toc_2 (rx) : ORIGIN = 0x16007C00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 */ + sflash_rtoc_2 (rx) : ORIGIN = 0x16007E00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 Copy */ + xip (rx) : ORIGIN = 0x18000000, LENGTH = 0x8000000 /* 128 MB */ + efuse (r) : ORIGIN = 0x90700000, LENGTH = 0x100000 /* 1 MB */ +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ + + +SECTIONS +{ + .text : + { + . = ALIGN(4); + __Vectors = . ; + KEEP(*(.vectors)) + . = ALIGN(4); + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + . = ALIGN(4); + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + /* Read-only code (constants). */ + *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*) + + KEEP(*(.eh_frame*)) + } > flash + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + __exidx_start = .; + + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_psoc6_02_cm4.S */ + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + /* Copy interrupt vectors from flash to RAM */ + LONG (__Vectors) /* From */ + LONG (__ram_vectors_start__) /* To */ + LONG (__Vectors_End - __Vectors) /* Size */ + + /* Copy data section to RAM */ + LONG (__etext) /* From */ + LONG (__data_start__) /* To */ + LONG (__data_end__ - __data_start__) /* Size */ + + __copy_table_end__ = .; + } > flash + + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_02_cm4.S */ + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + __zero_table_end__ = .; + } > flash + + __etext = . ; + + + .ramVectors (NOLOAD) : ALIGN(8) + { + __ram_vectors_start__ = .; + KEEP(*(.ram_vectors)) + __ram_vectors_end__ = .; + } > ram + + + .data __ram_vectors_end__ : AT (__etext) + { + __data_start__ = .; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + + KEEP(*(.cy_ramfunc*)) + . = ALIGN(4); + + __data_end__ = .; + + } > ram + + + /* Place variables in the section that should not be initialized during the + * device startup. + */ + .noinit (NOLOAD) : ALIGN(8) + { + KEEP(*(.noinit)) + } > ram + + + /* The uninitialized global or static variables are placed in this section. + * + * The NOLOAD attribute tells linker that .bss section does not consume + * any space in the image. The NOLOAD attribute changes the .bss type to + * NOBITS, and that makes linker to A) not allocate section in memory, and + * A) put information to clear the section with all zeros during application + * loading. + * + * Without the NOLOAD attribute, the .bss section might get PROGBITS type. + * This makes linker to A) allocate zeroed section in memory, and B) copy + * this section to RAM during application loading. + */ + .bss (NOLOAD): + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .heap (NOLOAD): + { + __HeapBase = .; + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + __HeapLimit = .; + } > ram + + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram) + LENGTH(ram); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Used for the digital signature of the secure application and the Bootloader SDK application. + * The size of the section depends on the required data size. */ + .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 : + { + KEEP(*(.cy_app_signature)) + } > flash + + + /* Emulated EEPROM Flash area */ + .cy_em_eeprom : + { + KEEP(*(.cy_em_eeprom)) + } > em_eeprom + + + /* Supervisory Flash: User data */ + .cy_sflash_user_data : + { + KEEP(*(.cy_sflash_user_data)) + } > sflash_user_data + + + /* Supervisory Flash: Normal Access Restrictions (NAR) */ + .cy_sflash_nar : + { + KEEP(*(.cy_sflash_nar)) + } > sflash_nar + + + /* Supervisory Flash: Public Key */ + .cy_sflash_public_key : + { + KEEP(*(.cy_sflash_public_key)) + } > sflash_public_key + + + /* Supervisory Flash: Table of Content # 2 */ + .cy_toc_part2 : + { + KEEP(*(.cy_toc_part2)) + } > sflash_toc_2 + + + /* Supervisory Flash: Table of Content # 2 Copy */ + .cy_rtoc_part2 : + { + KEEP(*(.cy_rtoc_part2)) + } > sflash_rtoc_2 + + + /* Places the code in the Execute in Place (XIP) section. See the smif driver + * documentation for details. + */ + .cy_xip : + { + KEEP(*(.cy_xip)) + } > xip + + + /* eFuse */ + .cy_efuse : + { + KEEP(*(.cy_efuse)) + } > efuse + + + /* These sections are used for additional metadata (silicon revision, + * Silicon/JTAG ID, etc.) storage. + */ + .cymeta 0x90500000 : { KEEP(*(.cymeta)) } :NONE +} + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +__cy_memory_0_start = 0x10000000; +__cy_memory_0_length = 0x00200000; +__cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +__cy_memory_1_start = 0x14000000; +__cy_memory_1_length = 0x8000; +__cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +__cy_memory_2_start = 0x16000000; +__cy_memory_2_length = 0x8000; +__cy_memory_2_row_size = 0x200; + +/* XIP */ +__cy_memory_3_start = 0x18000000; +__cy_memory_3_length = 0x08000000; +__cy_memory_3_row_size = 0x200; + +/* eFuse */ +__cy_memory_4_start = 0x90700000; +__cy_memory_4_length = 0x100000; +__cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..1ebcac39f8f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S @@ -0,0 +1,673 @@ +/**************************************************************************//** + * @file startup_psoc6_02_cm4.S + * @brief CMSIS Core Device Startup File for + * ARMCM4 Device Series + * @version V5.00 + * @date 02. March 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* Address of the NMI handler */ + #define CY_NMI_HANLDER_ADDR 0x0000000D + + /* The CPU VTOR register */ + #define CY_CPU_VTOR_ADDR 0xE000ED08 + + /* Copy flash vectors and data section to RAM */ + #define __STARTUP_COPY_MULTIPLE + + /* Clear single BSS section */ + #define __STARTUP_CLEAR_BSS + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00001000 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000400 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long CY_NMI_HANLDER_ADDR /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External interrupts Description */ + .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + .long scb_9_interrupt_IRQHandler /* Serial Communication Block #9 */ + .long scb_10_interrupt_IRQHandler /* Serial Communication Block #10 */ + .long scb_11_interrupt_IRQHandler /* Serial Communication Block #11 */ + .long scb_12_interrupt_IRQHandler /* Serial Communication Block #12 */ + .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + .long cpuss_interrupts_dmac_0_IRQHandler /* CPUSS DMAC, Channel #0 */ + .long cpuss_interrupts_dmac_1_IRQHandler /* CPUSS DMAC, Channel #1 */ + .long cpuss_interrupts_dmac_2_IRQHandler /* CPUSS DMAC, Channel #2 */ + .long cpuss_interrupts_dmac_3_IRQHandler /* CPUSS DMAC, Channel #3 */ + .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + .long cpuss_interrupts_dw0_16_IRQHandler /* CPUSS DataWire #0, Channel #16 */ + .long cpuss_interrupts_dw0_17_IRQHandler /* CPUSS DataWire #0, Channel #17 */ + .long cpuss_interrupts_dw0_18_IRQHandler /* CPUSS DataWire #0, Channel #18 */ + .long cpuss_interrupts_dw0_19_IRQHandler /* CPUSS DataWire #0, Channel #19 */ + .long cpuss_interrupts_dw0_20_IRQHandler /* CPUSS DataWire #0, Channel #20 */ + .long cpuss_interrupts_dw0_21_IRQHandler /* CPUSS DataWire #0, Channel #21 */ + .long cpuss_interrupts_dw0_22_IRQHandler /* CPUSS DataWire #0, Channel #22 */ + .long cpuss_interrupts_dw0_23_IRQHandler /* CPUSS DataWire #0, Channel #23 */ + .long cpuss_interrupts_dw0_24_IRQHandler /* CPUSS DataWire #0, Channel #24 */ + .long cpuss_interrupts_dw0_25_IRQHandler /* CPUSS DataWire #0, Channel #25 */ + .long cpuss_interrupts_dw0_26_IRQHandler /* CPUSS DataWire #0, Channel #26 */ + .long cpuss_interrupts_dw0_27_IRQHandler /* CPUSS DataWire #0, Channel #27 */ + .long cpuss_interrupts_dw0_28_IRQHandler /* CPUSS DataWire #0, Channel #28 */ + .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + .long cpuss_interrupts_dw1_16_IRQHandler /* CPUSS DataWire #1, Channel #16 */ + .long cpuss_interrupts_dw1_17_IRQHandler /* CPUSS DataWire #1, Channel #17 */ + .long cpuss_interrupts_dw1_18_IRQHandler /* CPUSS DataWire #1, Channel #18 */ + .long cpuss_interrupts_dw1_19_IRQHandler /* CPUSS DataWire #1, Channel #19 */ + .long cpuss_interrupts_dw1_20_IRQHandler /* CPUSS DataWire #1, Channel #20 */ + .long cpuss_interrupts_dw1_21_IRQHandler /* CPUSS DataWire #1, Channel #21 */ + .long cpuss_interrupts_dw1_22_IRQHandler /* CPUSS DataWire #1, Channel #22 */ + .long cpuss_interrupts_dw1_23_IRQHandler /* CPUSS DataWire #1, Channel #23 */ + .long cpuss_interrupts_dw1_24_IRQHandler /* CPUSS DataWire #1, Channel #24 */ + .long cpuss_interrupts_dw1_25_IRQHandler /* CPUSS DataWire #1, Channel #25 */ + .long cpuss_interrupts_dw1_26_IRQHandler /* CPUSS DataWire #1, Channel #26 */ + .long cpuss_interrupts_dw1_27_IRQHandler /* CPUSS DataWire #1, Channel #27 */ + .long cpuss_interrupts_dw1_28_IRQHandler /* CPUSS DataWire #1, Channel #28 */ + .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + .long cpuss_interrupts_cm4_fp_IRQHandler /* Floating Point operation fault */ + .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + .long audioss_0_interrupt_i2s_IRQHandler /* I2S0 Audio interrupt */ + .long audioss_0_interrupt_pdm_IRQHandler /* PDM0/PCM0 Audio interrupt */ + .long audioss_1_interrupt_i2s_IRQHandler /* I2S1 Audio interrupt */ + .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + .long usb_interrupt_hi_IRQHandler /* USB Interrupt */ + .long usb_interrupt_med_IRQHandler /* USB Interrupt */ + .long usb_interrupt_lo_IRQHandler /* USB Interrupt */ + .long sdhc_0_interrupt_wakeup_IRQHandler /* SDIO wakeup interrupt for mxsdhc */ + .long sdhc_0_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + .long sdhc_1_interrupt_wakeup_IRQHandler /* EEMC wakeup interrupt for mxsdhc, not used */ + .long sdhc_1_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + + + .size __Vectors, . - __Vectors + .equ __VectorsSize, . - __Vectors + + .section .ram_vectors + .align 2 + .globl __ramVectors +__ramVectors: + .space __VectorsSize + .size __ramVectors, . - __ramVectors + + + .text + .thumb + .thumb_func + .align 2 + + /* + * Device startup customization + * + * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) + * because this function is executed as the first instruction in the ResetHandler. + * The PDL is also not initialized to use the proper register offsets. + * The user of this function is responsible for initializing the PDL and resources before using them. + */ + .weak Cy_OnResetUser + .func Cy_OnResetUser, Cy_OnResetUser + .type Cy_OnResetUser, %function + +Cy_OnResetUser: + bx lr + .size Cy_OnResetUser, . - Cy_OnResetUser + .endfunc + + /* Reset handler */ + .weak Reset_Handler + .type Reset_Handler, %function + +Reset_Handler: + bl Cy_OnResetUser + cpsid i + +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + + /* Update Vector Table Offset Register. */ + ldr r0, =__ramVectors + ldr r1, =CY_CPU_VTOR_ADDR + str r0, [r1] + dsb 0xF + + /* Enable the FPU if used */ + bl Cy_SystemInitFpuEnable + + bl _start + + /* Should never get here */ + b . + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function + +Default_Handler: + b . + .size Default_Handler, . - Default_Handler + + + .weak Cy_SysLib_FaultHandler + .type Cy_SysLib_FaultHandler, %function + +Cy_SysLib_FaultHandler: + b . + .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler + .type Fault_Handler, %function + +Fault_Handler: + /* Storing LR content for Creator call stack trace */ + push {LR} + movs r0, #4 + mov r1, LR + tst r0, r1 + beq .L_MSP + mrs r0, PSP + b .L_API_call +.L_MSP: + mrs r0, MSP +.L_API_call: + /* Compensation of stack pointer address due to pushing 4 bytes of LR */ + adds r0, r0, #4 + bl Cy_SysLib_FaultHandler + b . + .size Fault_Handler, . - Fault_Handler + +.macro def_fault_Handler fault_handler_name + .weak \fault_handler_name + .set \fault_handler_name, Fault_Handler + .endm + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + + def_fault_Handler HardFault_Handler + def_fault_Handler MemManage_Handler + def_fault_Handler BusFault_Handler + def_fault_Handler UsageFault_Handler + + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + def_irq_handler scb_9_interrupt_IRQHandler /* Serial Communication Block #9 */ + def_irq_handler scb_10_interrupt_IRQHandler /* Serial Communication Block #10 */ + def_irq_handler scb_11_interrupt_IRQHandler /* Serial Communication Block #11 */ + def_irq_handler scb_12_interrupt_IRQHandler /* Serial Communication Block #12 */ + def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + def_irq_handler cpuss_interrupts_dmac_0_IRQHandler /* CPUSS DMAC, Channel #0 */ + def_irq_handler cpuss_interrupts_dmac_1_IRQHandler /* CPUSS DMAC, Channel #1 */ + def_irq_handler cpuss_interrupts_dmac_2_IRQHandler /* CPUSS DMAC, Channel #2 */ + def_irq_handler cpuss_interrupts_dmac_3_IRQHandler /* CPUSS DMAC, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + def_irq_handler cpuss_interrupts_dw0_16_IRQHandler /* CPUSS DataWire #0, Channel #16 */ + def_irq_handler cpuss_interrupts_dw0_17_IRQHandler /* CPUSS DataWire #0, Channel #17 */ + def_irq_handler cpuss_interrupts_dw0_18_IRQHandler /* CPUSS DataWire #0, Channel #18 */ + def_irq_handler cpuss_interrupts_dw0_19_IRQHandler /* CPUSS DataWire #0, Channel #19 */ + def_irq_handler cpuss_interrupts_dw0_20_IRQHandler /* CPUSS DataWire #0, Channel #20 */ + def_irq_handler cpuss_interrupts_dw0_21_IRQHandler /* CPUSS DataWire #0, Channel #21 */ + def_irq_handler cpuss_interrupts_dw0_22_IRQHandler /* CPUSS DataWire #0, Channel #22 */ + def_irq_handler cpuss_interrupts_dw0_23_IRQHandler /* CPUSS DataWire #0, Channel #23 */ + def_irq_handler cpuss_interrupts_dw0_24_IRQHandler /* CPUSS DataWire #0, Channel #24 */ + def_irq_handler cpuss_interrupts_dw0_25_IRQHandler /* CPUSS DataWire #0, Channel #25 */ + def_irq_handler cpuss_interrupts_dw0_26_IRQHandler /* CPUSS DataWire #0, Channel #26 */ + def_irq_handler cpuss_interrupts_dw0_27_IRQHandler /* CPUSS DataWire #0, Channel #27 */ + def_irq_handler cpuss_interrupts_dw0_28_IRQHandler /* CPUSS DataWire #0, Channel #28 */ + def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + def_irq_handler cpuss_interrupts_dw1_16_IRQHandler /* CPUSS DataWire #1, Channel #16 */ + def_irq_handler cpuss_interrupts_dw1_17_IRQHandler /* CPUSS DataWire #1, Channel #17 */ + def_irq_handler cpuss_interrupts_dw1_18_IRQHandler /* CPUSS DataWire #1, Channel #18 */ + def_irq_handler cpuss_interrupts_dw1_19_IRQHandler /* CPUSS DataWire #1, Channel #19 */ + def_irq_handler cpuss_interrupts_dw1_20_IRQHandler /* CPUSS DataWire #1, Channel #20 */ + def_irq_handler cpuss_interrupts_dw1_21_IRQHandler /* CPUSS DataWire #1, Channel #21 */ + def_irq_handler cpuss_interrupts_dw1_22_IRQHandler /* CPUSS DataWire #1, Channel #22 */ + def_irq_handler cpuss_interrupts_dw1_23_IRQHandler /* CPUSS DataWire #1, Channel #23 */ + def_irq_handler cpuss_interrupts_dw1_24_IRQHandler /* CPUSS DataWire #1, Channel #24 */ + def_irq_handler cpuss_interrupts_dw1_25_IRQHandler /* CPUSS DataWire #1, Channel #25 */ + def_irq_handler cpuss_interrupts_dw1_26_IRQHandler /* CPUSS DataWire #1, Channel #26 */ + def_irq_handler cpuss_interrupts_dw1_27_IRQHandler /* CPUSS DataWire #1, Channel #27 */ + def_irq_handler cpuss_interrupts_dw1_28_IRQHandler /* CPUSS DataWire #1, Channel #28 */ + def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + def_irq_handler cpuss_interrupts_cm4_fp_IRQHandler /* Floating Point operation fault */ + def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + def_irq_handler audioss_0_interrupt_i2s_IRQHandler /* I2S0 Audio interrupt */ + def_irq_handler audioss_0_interrupt_pdm_IRQHandler /* PDM0/PCM0 Audio interrupt */ + def_irq_handler audioss_1_interrupt_i2s_IRQHandler /* I2S1 Audio interrupt */ + def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */ + def_irq_handler sdhc_0_interrupt_wakeup_IRQHandler /* SDIO wakeup interrupt for mxsdhc */ + def_irq_handler sdhc_0_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + def_irq_handler sdhc_1_interrupt_wakeup_IRQHandler /* EEMC wakeup interrupt for mxsdhc, not used */ + def_irq_handler sdhc_1_interrupt_general_IRQHandler /* Consolidated interrupt for mxsdhc for everything else */ + + .end + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf new file mode 100644 index 00000000000..611b1ccc7a3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/cy8c6xxa_cm4_dual.icf @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cy8c6xxa_cm4_dual.icf +* \version 2.30 +* +* Linker file for the IAR compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point is fixed and starts at 0x10000000. The valid application +* image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; + +if (!isdefinedsymbol(MBED_ROM_START)) { + define symbol MBED_ROM_START = 0x10002000; +} + +if (!isdefinedsymbol(MBED_ROM_SIZE)) { + define symbol MBED_ROM_SIZE = 0x001FE000; +} + +if (!isdefinedsymbol(MBED_RAM_START)) { + define symbol MBED_RAM_START = 0x08002000; +} + +if (!isdefinedsymbol(MBED_RAM_SIZE)) { + define symbol MBED_RAM_SIZE = 0x000FD800; +} + +if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { + define symbol MBED_BOOT_STACK_SIZE = 0x400; +} + +/* The symbols below define the location and size of blocks of memory in the target. + * Use these symbols to specify the memory regions available for allocation. + */ + +/* The following symbols control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing RAM and Flash symbols. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding symbols for CM0+ core in 'xx_cm0plus.icf', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.icf'. + */ +/* RAM */ +define symbol __ICFEDIT_region_IRAM1_start__ = MBED_RAM_START; +define symbol __ICFEDIT_region_IRAM1_end__ = (MBED_RAM_START + MBED_RAM_SIZE); +/* Flash */ +define symbol __ICFEDIT_region_IROM1_start__ = MBED_ROM_START; +define symbol __ICFEDIT_region_IROM1_end__ = (MBED_ROM_START + MBED_ROM_SIZE); + +/* The following symbols define a 32K flash region used for EEPROM emulation. + * This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ +define symbol __ICFEDIT_region_IROM2_start__ = 0x14000000; +define symbol __ICFEDIT_region_IROM2_end__ = 0x14007FFF; + +/* The following symbols define device specific memory regions and must not be changed. */ +/* Supervisory FLASH - User Data */ +define symbol __ICFEDIT_region_IROM3_start__ = 0x16000800; +define symbol __ICFEDIT_region_IROM3_end__ = 0x160007FF; + +/* Supervisory FLASH - Normal Access Restrictions (NAR) */ +define symbol __ICFEDIT_region_IROM4_start__ = 0x16001A00; +define symbol __ICFEDIT_region_IROM4_end__ = 0x16001BFF; + +/* Supervisory FLASH - Public Key */ +define symbol __ICFEDIT_region_IROM5_start__ = 0x16005A00; +define symbol __ICFEDIT_region_IROM5_end__ = 0x160065FF; + +/* Supervisory FLASH - Table of Content # 2 */ +define symbol __ICFEDIT_region_IROM6_start__ = 0x16007C00; +define symbol __ICFEDIT_region_IROM6_end__ = 0x16007DFF; + +/* Supervisory FLASH - Table of Content # 2 Copy */ +define symbol __ICFEDIT_region_IROM7_start__ = 0x16007E00; +define symbol __ICFEDIT_region_IROM7_end__ = 0x16007FFF; + +/* eFuse */ +define symbol __ICFEDIT_region_IROM8_start__ = 0x90700000; +define symbol __ICFEDIT_region_IROM8_end__ = 0x907FFFFF; + +/* XIP */ +define symbol __ICFEDIT_region_EROM1_start__ = 0x18000000; +define symbol __ICFEDIT_region_EROM1_end__ = 0x1FFFFFFF; + +define symbol __ICFEDIT_region_EROM2_start__ = 0x0; +define symbol __ICFEDIT_region_EROM2_end__ = 0x0; +define symbol __ICFEDIT_region_EROM3_start__ = 0x0; +define symbol __ICFEDIT_region_EROM3_end__ = 0x0; + + +define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; +define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; +/*-Sizes-*/ +if (!isdefinedsymbol(__STACK_SIZE)) { + define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; +} else { + define symbol __ICFEDIT_size_cstack__ = __STACK_SIZE; +} + +if (!isdefinedsymbol(__HEAP_SIZE)) { + define symbol __ICFEDIT_size_heap__ = 0x20000; +} else { + define symbol __ICFEDIT_size_heap__ = __HEAP_SIZE; +} +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region IROM1_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]; +define region IROM2_region = mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; +define region IROM3_region = mem:[from __ICFEDIT_region_IROM3_start__ to __ICFEDIT_region_IROM3_end__]; +define region IROM4_region = mem:[from __ICFEDIT_region_IROM4_start__ to __ICFEDIT_region_IROM4_end__]; +define region IROM5_region = mem:[from __ICFEDIT_region_IROM5_start__ to __ICFEDIT_region_IROM5_end__]; +define region IROM6_region = mem:[from __ICFEDIT_region_IROM6_start__ to __ICFEDIT_region_IROM6_end__]; +define region IROM7_region = mem:[from __ICFEDIT_region_IROM7_start__ to __ICFEDIT_region_IROM7_end__]; +define region IROM8_region = mem:[from __ICFEDIT_region_IROM8_start__ to __ICFEDIT_region_IROM8_end__]; +define region EROM1_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__]; +define region IRAM1_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]; + +define block RAM_DATA {readwrite section .data}; +define block RAM_OTHER {readwrite section * }; +define block RAM_NOINIT {readwrite section .noinit}; +define block RAM_BSS {readwrite section .bss}; +define block RAM with fixed order {block RAM_DATA, block RAM_OTHER, block RAM_NOINIT, block RAM_BSS}; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +define block RO {first section .intvec, readonly}; + +/*-Initializations-*/ +initialize by copy { readwrite }; +do not initialize { section .noinit, section .intvec_ram }; + +/*-Placement-*/ + +/* Flash */ +place at start of IROM1_region { block RO }; +".cy_app_signature" : place at address (__ICFEDIT_region_IROM1_end__ - 0x200) { section .cy_app_signature }; + +/* Emulated EEPROM Flash area */ +".cy_em_eeprom" : place at start of IROM2_region { section .cy_em_eeprom }; + +/* Supervisory Flash - User Data */ +".cy_sflash_user_data" : place at start of IROM3_region { section .cy_sflash_user_data }; + +/* Supervisory Flash - NAR */ +".cy_sflash_nar" : place at start of IROM4_region { section .cy_sflash_nar }; + +/* Supervisory Flash - Public Key */ +".cy_sflash_public_key" : place at start of IROM5_region { section .cy_sflash_public_key }; + +/* Supervisory Flash - TOC2 */ +".cy_toc_part2" : place at start of IROM6_region { section .cy_toc_part2 }; + +/* Supervisory Flash - RTOC2 */ +".cy_rtoc_part2" : place at start of IROM7_region { section .cy_rtoc_part2 }; + +/* eFuse */ +".cy_efuse" : place at start of IROM8_region { section .cy_efuse }; + +/* Execute in Place (XIP). See the smif driver documentation for details. */ +".cy_xip" : place at start of EROM1_region { section .cy_xip }; + +/* RAM */ +place at start of IRAM1_region { readwrite section .intvec_ram}; +place in IRAM1_region { block RAM}; +place in IRAM1_region { block HEAP}; +place at end of IRAM1_region { block CSTACK }; + +/* These sections are used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. */ +".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta }; + + +keep { section .cy_app_signature, + section .cy_em_eeprom, + section .cy_sflash_user_data, + section .cy_sflash_nar, + section .cy_sflash_public_key, + section .cy_toc_part2, + section .cy_rtoc_part2, + section .cy_efuse, + section .cy_xip, + section .cymeta, + }; + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +define exported symbol __cy_memory_0_start = 0x10000000; +define exported symbol __cy_memory_0_length = 0x00200000; +define exported symbol __cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +define exported symbol __cy_memory_1_start = 0x14000000; +define exported symbol __cy_memory_1_length = 0x8000; +define exported symbol __cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +define exported symbol __cy_memory_2_start = 0x16000000; +define exported symbol __cy_memory_2_length = 0x8000; +define exported symbol __cy_memory_2_row_size = 0x200; + +/* XIP */ +define exported symbol __cy_memory_3_start = 0x18000000; +define exported symbol __cy_memory_3_length = 0x08000000; +define exported symbol __cy_memory_3_row_size = 0x200; + +/* eFuse */ +define exported symbol __cy_memory_4_start = 0x90700000; +define exported symbol __cy_memory_4_length = 0x100000; +define exported symbol __cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S new file mode 100644 index 00000000000..902e98dca1b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/TOOLCHAIN_IAR/startup_psoc6_02_cm4.S @@ -0,0 +1,1268 @@ +;/**************************************************************************//** +; * @file startup_psoc6_02_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 08. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + SECTION .intvec_ram:DATA:NOROOT(2) + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + EXTERN Cy_SystemInitFpuEnable + EXTERN __iar_data_init3 + PUBLIC __vector_table + PUBLIC __vector_table_0x1c + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + PUBLIC __ramVectors + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + + DCD 0x0000000D ; NMI_Handler is defined in ROM code + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler +__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD DebugMon_Handler + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + + ; External interrupts Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD scb_9_interrupt_IRQHandler ; Serial Communication Block #9 + DCD scb_10_interrupt_IRQHandler ; Serial Communication Block #10 + DCD scb_11_interrupt_IRQHandler ; Serial Communication Block #11 + DCD scb_12_interrupt_IRQHandler ; Serial Communication Block #12 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dmac_0_IRQHandler ; CPUSS DMAC, Channel #0 + DCD cpuss_interrupts_dmac_1_IRQHandler ; CPUSS DMAC, Channel #1 + DCD cpuss_interrupts_dmac_2_IRQHandler ; CPUSS DMAC, Channel #2 + DCD cpuss_interrupts_dmac_3_IRQHandler ; CPUSS DMAC, Channel #3 + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw0_16_IRQHandler ; CPUSS DataWire #0, Channel #16 + DCD cpuss_interrupts_dw0_17_IRQHandler ; CPUSS DataWire #0, Channel #17 + DCD cpuss_interrupts_dw0_18_IRQHandler ; CPUSS DataWire #0, Channel #18 + DCD cpuss_interrupts_dw0_19_IRQHandler ; CPUSS DataWire #0, Channel #19 + DCD cpuss_interrupts_dw0_20_IRQHandler ; CPUSS DataWire #0, Channel #20 + DCD cpuss_interrupts_dw0_21_IRQHandler ; CPUSS DataWire #0, Channel #21 + DCD cpuss_interrupts_dw0_22_IRQHandler ; CPUSS DataWire #0, Channel #22 + DCD cpuss_interrupts_dw0_23_IRQHandler ; CPUSS DataWire #0, Channel #23 + DCD cpuss_interrupts_dw0_24_IRQHandler ; CPUSS DataWire #0, Channel #24 + DCD cpuss_interrupts_dw0_25_IRQHandler ; CPUSS DataWire #0, Channel #25 + DCD cpuss_interrupts_dw0_26_IRQHandler ; CPUSS DataWire #0, Channel #26 + DCD cpuss_interrupts_dw0_27_IRQHandler ; CPUSS DataWire #0, Channel #27 + DCD cpuss_interrupts_dw0_28_IRQHandler ; CPUSS DataWire #0, Channel #28 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_dw1_16_IRQHandler ; CPUSS DataWire #1, Channel #16 + DCD cpuss_interrupts_dw1_17_IRQHandler ; CPUSS DataWire #1, Channel #17 + DCD cpuss_interrupts_dw1_18_IRQHandler ; CPUSS DataWire #1, Channel #18 + DCD cpuss_interrupts_dw1_19_IRQHandler ; CPUSS DataWire #1, Channel #19 + DCD cpuss_interrupts_dw1_20_IRQHandler ; CPUSS DataWire #1, Channel #20 + DCD cpuss_interrupts_dw1_21_IRQHandler ; CPUSS DataWire #1, Channel #21 + DCD cpuss_interrupts_dw1_22_IRQHandler ; CPUSS DataWire #1, Channel #22 + DCD cpuss_interrupts_dw1_23_IRQHandler ; CPUSS DataWire #1, Channel #23 + DCD cpuss_interrupts_dw1_24_IRQHandler ; CPUSS DataWire #1, Channel #24 + DCD cpuss_interrupts_dw1_25_IRQHandler ; CPUSS DataWire #1, Channel #25 + DCD cpuss_interrupts_dw1_26_IRQHandler ; CPUSS DataWire #1, Channel #26 + DCD cpuss_interrupts_dw1_27_IRQHandler ; CPUSS DataWire #1, Channel #27 + DCD cpuss_interrupts_dw1_28_IRQHandler ; CPUSS DataWire #1, Channel #28 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm4_fp_IRQHandler ; Floating Point operation fault + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_0_interrupt_i2s_IRQHandler ; I2S0 Audio interrupt + DCD audioss_0_interrupt_pdm_IRQHandler ; PDM0/PCM0 Audio interrupt + DCD audioss_1_interrupt_i2s_IRQHandler ; I2S1 Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD sdhc_0_interrupt_wakeup_IRQHandler ; SDIO wakeup interrupt for mxsdhc + DCD sdhc_0_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + DCD sdhc_1_interrupt_wakeup_IRQHandler ; EEMC wakeup interrupt for mxsdhc, not used + DCD sdhc_1_interrupt_general_IRQHandler ; Consolidated interrupt for mxsdhc for everything else + +__Vectors_End + +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors + + SECTION .intvec_ram:DATA:REORDER:NOROOT(2) +__ramVectors + DS32 __Vectors_Size + + + THUMB + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default handlers +;; + PUBWEAK Default_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Default_Handler + B Default_Handler + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Weak function for startup customization +;; +;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +;; because this function is executed as the first instruction in the ResetHandler. +;; The PDL is also not initialized to use the proper register offsets. +;; The user of this function is responsible for initializing the PDL and resources before using them. +;; + PUBWEAK Cy_OnResetUser + SECTION .text:CODE:REORDER:NOROOT(2) +Cy_OnResetUser + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Define strong version to return zero for +;; __iar_program_start to skip data sections +;; initialization. +;; + PUBLIC __low_level_init + SECTION .text:CODE:REORDER:NOROOT(2) +__low_level_init + MOVS R0, #0 + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + + ; Define strong function for startup customization + LDR R0, =Cy_OnResetUser + BLX R0 + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__vector_table + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +intvec_copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE intvec_copy + + ; Update Vector Table Offset Register + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + ; Initialize data sections + LDR R0, =__iar_data_init3 + BLX R0 + + LDR R0, =SystemInit + BLX R0 + + LDR R0, =__iar_program_start + BLX R0 + +; Should never get here +Cy_Main_Exited + B Cy_Main_Exited + + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B NMI_Handler + + + PUBWEAK Cy_SysLib_FaultHandler + SECTION .text:CODE:REORDER:NOROOT(1) +Cy_SysLib_FaultHandler + B Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Wrapper + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Wrapper + IMPORT Cy_SysLib_FaultHandler + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + b L_API_call +L_MSP + mrs r0, MSP +L_API_call + ; Storing LR content for Creator call stack trace + push {LR} + bl Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B HardFault_Wrapper + + PUBWEAK MemManage_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +MemManage_Handler + B HardFault_Wrapper + + PUBWEAK BusFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +BusFault_Handler + B HardFault_Wrapper + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +UsageFault_Handler + B HardFault_Wrapper + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B SysTick_Handler + + + ; External interrupts + PUBWEAK ioss_interrupts_gpio_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_0_IRQHandler + B ioss_interrupts_gpio_0_IRQHandler + + PUBWEAK ioss_interrupts_gpio_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_1_IRQHandler + B ioss_interrupts_gpio_1_IRQHandler + + PUBWEAK ioss_interrupts_gpio_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_2_IRQHandler + B ioss_interrupts_gpio_2_IRQHandler + + PUBWEAK ioss_interrupts_gpio_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_3_IRQHandler + B ioss_interrupts_gpio_3_IRQHandler + + PUBWEAK ioss_interrupts_gpio_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_4_IRQHandler + B ioss_interrupts_gpio_4_IRQHandler + + PUBWEAK ioss_interrupts_gpio_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_5_IRQHandler + B ioss_interrupts_gpio_5_IRQHandler + + PUBWEAK ioss_interrupts_gpio_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_6_IRQHandler + B ioss_interrupts_gpio_6_IRQHandler + + PUBWEAK ioss_interrupts_gpio_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_7_IRQHandler + B ioss_interrupts_gpio_7_IRQHandler + + PUBWEAK ioss_interrupts_gpio_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_8_IRQHandler + B ioss_interrupts_gpio_8_IRQHandler + + PUBWEAK ioss_interrupts_gpio_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_9_IRQHandler + B ioss_interrupts_gpio_9_IRQHandler + + PUBWEAK ioss_interrupts_gpio_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_10_IRQHandler + B ioss_interrupts_gpio_10_IRQHandler + + PUBWEAK ioss_interrupts_gpio_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_11_IRQHandler + B ioss_interrupts_gpio_11_IRQHandler + + PUBWEAK ioss_interrupts_gpio_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_12_IRQHandler + B ioss_interrupts_gpio_12_IRQHandler + + PUBWEAK ioss_interrupts_gpio_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_13_IRQHandler + B ioss_interrupts_gpio_13_IRQHandler + + PUBWEAK ioss_interrupts_gpio_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_14_IRQHandler + B ioss_interrupts_gpio_14_IRQHandler + + PUBWEAK ioss_interrupt_gpio_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_gpio_IRQHandler + B ioss_interrupt_gpio_IRQHandler + + PUBWEAK ioss_interrupt_vdd_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_vdd_IRQHandler + B ioss_interrupt_vdd_IRQHandler + + PUBWEAK lpcomp_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +lpcomp_interrupt_IRQHandler + B lpcomp_interrupt_IRQHandler + + PUBWEAK scb_8_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_8_interrupt_IRQHandler + B scb_8_interrupt_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_0_IRQHandler + B srss_interrupt_mcwdt_0_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_1_IRQHandler + B srss_interrupt_mcwdt_1_IRQHandler + + PUBWEAK srss_interrupt_backup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_backup_IRQHandler + B srss_interrupt_backup_IRQHandler + + PUBWEAK srss_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_IRQHandler + B srss_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_0_IRQHandler + B cpuss_interrupts_ipc_0_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_1_IRQHandler + B cpuss_interrupts_ipc_1_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_2_IRQHandler + B cpuss_interrupts_ipc_2_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_3_IRQHandler + B cpuss_interrupts_ipc_3_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_4_IRQHandler + B cpuss_interrupts_ipc_4_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_5_IRQHandler + B cpuss_interrupts_ipc_5_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_6_IRQHandler + B cpuss_interrupts_ipc_6_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_7_IRQHandler + B cpuss_interrupts_ipc_7_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_8_IRQHandler + B cpuss_interrupts_ipc_8_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_9_IRQHandler + B cpuss_interrupts_ipc_9_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_10_IRQHandler + B cpuss_interrupts_ipc_10_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_11_IRQHandler + B cpuss_interrupts_ipc_11_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_12_IRQHandler + B cpuss_interrupts_ipc_12_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_13_IRQHandler + B cpuss_interrupts_ipc_13_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_14_IRQHandler + B cpuss_interrupts_ipc_14_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_15_IRQHandler + B cpuss_interrupts_ipc_15_IRQHandler + + PUBWEAK scb_0_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_0_interrupt_IRQHandler + B scb_0_interrupt_IRQHandler + + PUBWEAK scb_1_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_1_interrupt_IRQHandler + B scb_1_interrupt_IRQHandler + + PUBWEAK scb_2_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_2_interrupt_IRQHandler + B scb_2_interrupt_IRQHandler + + PUBWEAK scb_3_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_3_interrupt_IRQHandler + B scb_3_interrupt_IRQHandler + + PUBWEAK scb_4_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_4_interrupt_IRQHandler + B scb_4_interrupt_IRQHandler + + PUBWEAK scb_5_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_5_interrupt_IRQHandler + B scb_5_interrupt_IRQHandler + + PUBWEAK scb_6_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_6_interrupt_IRQHandler + B scb_6_interrupt_IRQHandler + + PUBWEAK scb_7_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_7_interrupt_IRQHandler + B scb_7_interrupt_IRQHandler + + PUBWEAK scb_9_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_9_interrupt_IRQHandler + B scb_9_interrupt_IRQHandler + + PUBWEAK scb_10_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_10_interrupt_IRQHandler + B scb_10_interrupt_IRQHandler + + PUBWEAK scb_11_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_11_interrupt_IRQHandler + B scb_11_interrupt_IRQHandler + + PUBWEAK scb_12_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_12_interrupt_IRQHandler + B scb_12_interrupt_IRQHandler + + PUBWEAK csd_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +csd_interrupt_IRQHandler + B csd_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_0_IRQHandler + B cpuss_interrupts_dmac_0_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_1_IRQHandler + B cpuss_interrupts_dmac_1_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_2_IRQHandler + B cpuss_interrupts_dmac_2_IRQHandler + + PUBWEAK cpuss_interrupts_dmac_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dmac_3_IRQHandler + B cpuss_interrupts_dmac_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_0_IRQHandler + B cpuss_interrupts_dw0_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_1_IRQHandler + B cpuss_interrupts_dw0_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_2_IRQHandler + B cpuss_interrupts_dw0_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_3_IRQHandler + B cpuss_interrupts_dw0_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_4_IRQHandler + B cpuss_interrupts_dw0_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_5_IRQHandler + B cpuss_interrupts_dw0_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_6_IRQHandler + B cpuss_interrupts_dw0_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_7_IRQHandler + B cpuss_interrupts_dw0_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_8_IRQHandler + B cpuss_interrupts_dw0_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_9_IRQHandler + B cpuss_interrupts_dw0_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_10_IRQHandler + B cpuss_interrupts_dw0_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_11_IRQHandler + B cpuss_interrupts_dw0_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_12_IRQHandler + B cpuss_interrupts_dw0_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_13_IRQHandler + B cpuss_interrupts_dw0_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_14_IRQHandler + B cpuss_interrupts_dw0_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_15_IRQHandler + B cpuss_interrupts_dw0_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_16_IRQHandler + B cpuss_interrupts_dw0_16_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_17_IRQHandler + B cpuss_interrupts_dw0_17_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_18_IRQHandler + B cpuss_interrupts_dw0_18_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_19_IRQHandler + B cpuss_interrupts_dw0_19_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_20_IRQHandler + B cpuss_interrupts_dw0_20_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_21_IRQHandler + B cpuss_interrupts_dw0_21_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_22_IRQHandler + B cpuss_interrupts_dw0_22_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_23_IRQHandler + B cpuss_interrupts_dw0_23_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_24_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_24_IRQHandler + B cpuss_interrupts_dw0_24_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_25_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_25_IRQHandler + B cpuss_interrupts_dw0_25_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_26_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_26_IRQHandler + B cpuss_interrupts_dw0_26_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_27_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_27_IRQHandler + B cpuss_interrupts_dw0_27_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_28_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_28_IRQHandler + B cpuss_interrupts_dw0_28_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_0_IRQHandler + B cpuss_interrupts_dw1_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_1_IRQHandler + B cpuss_interrupts_dw1_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_2_IRQHandler + B cpuss_interrupts_dw1_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_3_IRQHandler + B cpuss_interrupts_dw1_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_4_IRQHandler + B cpuss_interrupts_dw1_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_5_IRQHandler + B cpuss_interrupts_dw1_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_6_IRQHandler + B cpuss_interrupts_dw1_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_7_IRQHandler + B cpuss_interrupts_dw1_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_8_IRQHandler + B cpuss_interrupts_dw1_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_9_IRQHandler + B cpuss_interrupts_dw1_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_10_IRQHandler + B cpuss_interrupts_dw1_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_11_IRQHandler + B cpuss_interrupts_dw1_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_12_IRQHandler + B cpuss_interrupts_dw1_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_13_IRQHandler + B cpuss_interrupts_dw1_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_14_IRQHandler + B cpuss_interrupts_dw1_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_15_IRQHandler + B cpuss_interrupts_dw1_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_16_IRQHandler + B cpuss_interrupts_dw1_16_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_17_IRQHandler + B cpuss_interrupts_dw1_17_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_18_IRQHandler + B cpuss_interrupts_dw1_18_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_19_IRQHandler + B cpuss_interrupts_dw1_19_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_20_IRQHandler + B cpuss_interrupts_dw1_20_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_21_IRQHandler + B cpuss_interrupts_dw1_21_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_22_IRQHandler + B cpuss_interrupts_dw1_22_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_23_IRQHandler + B cpuss_interrupts_dw1_23_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_24_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_24_IRQHandler + B cpuss_interrupts_dw1_24_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_25_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_25_IRQHandler + B cpuss_interrupts_dw1_25_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_26_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_26_IRQHandler + B cpuss_interrupts_dw1_26_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_27_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_27_IRQHandler + B cpuss_interrupts_dw1_27_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_28_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_28_IRQHandler + B cpuss_interrupts_dw1_28_IRQHandler + + PUBWEAK cpuss_interrupts_fault_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_0_IRQHandler + B cpuss_interrupts_fault_0_IRQHandler + + PUBWEAK cpuss_interrupts_fault_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_1_IRQHandler + B cpuss_interrupts_fault_1_IRQHandler + + PUBWEAK cpuss_interrupt_crypto_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_crypto_IRQHandler + B cpuss_interrupt_crypto_IRQHandler + + PUBWEAK cpuss_interrupt_fm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_fm_IRQHandler + B cpuss_interrupt_fm_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_fp_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_fp_IRQHandler + B cpuss_interrupts_cm4_fp_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_0_IRQHandler + B cpuss_interrupts_cm0_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_1_IRQHandler + B cpuss_interrupts_cm0_cti_1_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_0_IRQHandler + B cpuss_interrupts_cm4_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_1_IRQHandler + B cpuss_interrupts_cm4_cti_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_0_IRQHandler + B tcpwm_0_interrupts_0_IRQHandler + + PUBWEAK tcpwm_0_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_1_IRQHandler + B tcpwm_0_interrupts_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_2_IRQHandler + B tcpwm_0_interrupts_2_IRQHandler + + PUBWEAK tcpwm_0_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_3_IRQHandler + B tcpwm_0_interrupts_3_IRQHandler + + PUBWEAK tcpwm_0_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_4_IRQHandler + B tcpwm_0_interrupts_4_IRQHandler + + PUBWEAK tcpwm_0_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_5_IRQHandler + B tcpwm_0_interrupts_5_IRQHandler + + PUBWEAK tcpwm_0_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_6_IRQHandler + B tcpwm_0_interrupts_6_IRQHandler + + PUBWEAK tcpwm_0_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_7_IRQHandler + B tcpwm_0_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_0_IRQHandler + B tcpwm_1_interrupts_0_IRQHandler + + PUBWEAK tcpwm_1_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_1_IRQHandler + B tcpwm_1_interrupts_1_IRQHandler + + PUBWEAK tcpwm_1_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_2_IRQHandler + B tcpwm_1_interrupts_2_IRQHandler + + PUBWEAK tcpwm_1_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_3_IRQHandler + B tcpwm_1_interrupts_3_IRQHandler + + PUBWEAK tcpwm_1_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_4_IRQHandler + B tcpwm_1_interrupts_4_IRQHandler + + PUBWEAK tcpwm_1_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_5_IRQHandler + B tcpwm_1_interrupts_5_IRQHandler + + PUBWEAK tcpwm_1_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_6_IRQHandler + B tcpwm_1_interrupts_6_IRQHandler + + PUBWEAK tcpwm_1_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_7_IRQHandler + B tcpwm_1_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_8_IRQHandler + B tcpwm_1_interrupts_8_IRQHandler + + PUBWEAK tcpwm_1_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_9_IRQHandler + B tcpwm_1_interrupts_9_IRQHandler + + PUBWEAK tcpwm_1_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_10_IRQHandler + B tcpwm_1_interrupts_10_IRQHandler + + PUBWEAK tcpwm_1_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_11_IRQHandler + B tcpwm_1_interrupts_11_IRQHandler + + PUBWEAK tcpwm_1_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_12_IRQHandler + B tcpwm_1_interrupts_12_IRQHandler + + PUBWEAK tcpwm_1_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_13_IRQHandler + B tcpwm_1_interrupts_13_IRQHandler + + PUBWEAK tcpwm_1_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_14_IRQHandler + B tcpwm_1_interrupts_14_IRQHandler + + PUBWEAK tcpwm_1_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_15_IRQHandler + B tcpwm_1_interrupts_15_IRQHandler + + PUBWEAK tcpwm_1_interrupts_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_16_IRQHandler + B tcpwm_1_interrupts_16_IRQHandler + + PUBWEAK tcpwm_1_interrupts_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_17_IRQHandler + B tcpwm_1_interrupts_17_IRQHandler + + PUBWEAK tcpwm_1_interrupts_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_18_IRQHandler + B tcpwm_1_interrupts_18_IRQHandler + + PUBWEAK tcpwm_1_interrupts_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_19_IRQHandler + B tcpwm_1_interrupts_19_IRQHandler + + PUBWEAK tcpwm_1_interrupts_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_20_IRQHandler + B tcpwm_1_interrupts_20_IRQHandler + + PUBWEAK tcpwm_1_interrupts_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_21_IRQHandler + B tcpwm_1_interrupts_21_IRQHandler + + PUBWEAK tcpwm_1_interrupts_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_22_IRQHandler + B tcpwm_1_interrupts_22_IRQHandler + + PUBWEAK tcpwm_1_interrupts_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_23_IRQHandler + B tcpwm_1_interrupts_23_IRQHandler + + PUBWEAK pass_interrupt_sar_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_sar_IRQHandler + B pass_interrupt_sar_IRQHandler + + PUBWEAK audioss_0_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_0_interrupt_i2s_IRQHandler + B audioss_0_interrupt_i2s_IRQHandler + + PUBWEAK audioss_0_interrupt_pdm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_0_interrupt_pdm_IRQHandler + B audioss_0_interrupt_pdm_IRQHandler + + PUBWEAK audioss_1_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_1_interrupt_i2s_IRQHandler + B audioss_1_interrupt_i2s_IRQHandler + + PUBWEAK profile_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +profile_interrupt_IRQHandler + B profile_interrupt_IRQHandler + + PUBWEAK smif_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +smif_interrupt_IRQHandler + B smif_interrupt_IRQHandler + + PUBWEAK usb_interrupt_hi_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_hi_IRQHandler + B usb_interrupt_hi_IRQHandler + + PUBWEAK usb_interrupt_med_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_med_IRQHandler + B usb_interrupt_med_IRQHandler + + PUBWEAK usb_interrupt_lo_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_lo_IRQHandler + B usb_interrupt_lo_IRQHandler + + PUBWEAK sdhc_0_interrupt_wakeup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_0_interrupt_wakeup_IRQHandler + B sdhc_0_interrupt_wakeup_IRQHandler + + PUBWEAK sdhc_0_interrupt_general_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_0_interrupt_general_IRQHandler + B sdhc_0_interrupt_general_IRQHandler + + PUBWEAK sdhc_1_interrupt_wakeup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_1_interrupt_wakeup_IRQHandler + B sdhc_1_interrupt_wakeup_IRQHandler + + PUBWEAK sdhc_1_interrupt_general_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +sdhc_1_interrupt_general_IRQHandler + B sdhc_1_interrupt_general_IRQHandler + + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/LICENSE.txt b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/LICENSE.txt new file mode 100644 index 00000000000..7adfadddb21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2018-2019 Cypress Semiconductor Corporation + +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/README.md new file mode 100644 index 00000000000..4fb5046d275 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/README.md @@ -0,0 +1,18 @@ +README for pre-compiled PSoC 6 Cortex M0+ core images +===================================================== + +This folder contains precompiled program images for the CM0+ core of the +PSoC 6 MCU suitable for use with Mbed OS applications running on CM4 core. + +* `psoc6_02_cm0p_sleep.hex` + + This image starts CM4 core at CY_CORTEX_M4_APPL_ADDR=0x10080000 + and puts CM0+ core into a deep sleep. + +The images are 'bare metal' code prepared with Cypress ModusToolbox IDE +and are toolchain agnostic, i.e. can be used with CM4 Mbed applications +build with any supported toolchain. + +**These images were prepared by Cypress Semiconductor Corporation +and are made available under the conditions of Permissive Binary Licence, +see file LICENSE.txt** diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex new file mode 100644 index 00000000000..431f99f8b55 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/hex/psoc6_02_cm0p_sleep.hex @@ -0,0 +1,82 @@ +:020000041000EA +:4000000000200008CB0000100D0000002D010010000000000000000000000000000000000000000000000000000000002901001000000000000000002901001029010010C4 +:4000400029010010290100102901001029010010290100102901001029010010290100102901001029010010290100102901001029010010290100102901001029010010E0 +:4000800010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BDD40200080000000074110010044B10B5002B03D00349044800E000BF10BDC0460000000040 +:4000C000D8020008741100107047FFF7FDFF72B60F4C104DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E70A490B4A0020521A02DD043A8850FCDC08480949D7 +:400100000860BFF34F8F00F0E7F800F073F9FEE77811001090110010D4020008CC0400080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880AE +:40014000043000F0DBFBFEE710B5002000F096FA10BD7047E02370B54F4C9B00E2580F23D021072013409A00121989005158014065D0042959D04948002B65D1B223B12225 +:400180000321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233D4ADB00E558A158E658C904C90C00F0AEFDAD03AD0BD4 +:4001C0006843F101C90F013100F0A6FDE0239B00E358344A9B069B0FD840334B1860334BD458D158240A090E013100F095FD304BE1B21860013100F08FFD2E4B0400186020 +:400200002D4B2E4918602E4BC01800F085FDFA212C4B890018702C4BE01800F07DFD2B4B18602B4BC003186070BDC021890052581F210A40112A04D1802000029CE725480C +:400240009AE7FA20C00197E7012BBFD1C823C0220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032BA9D1C022D200A358A158BE +:40028000A5587F221F261340090A3140584300F043FD290C314097E70000264000366E018405000000002040840000080810000088000008800000089000000840420F00BC +:4002C0003F420F0098000008E7030000940000088C00000800127A0010B51D4800F0A8F8B022E02130201B4CD200A35889005B005B08A35063588343635080235B04A350B4 +:40030000154B164AE250A02204339201E250FF22134BE25000F098FCC02201215200A3588B43A350FFF715FFFFF714FF0D4A8021042000F00BFA0C4800F080F80B4B1B680D +:4003400051331B78002B02D0094800F0E3F810BDC40E00100000264084050000010002008C050000F002000800030008C8040008900E001010B5902400F053F8074B640129 +:400380001A5907491140074A0A431A51102259681142FCD000F049F810BDC04600002040FCFF00000100FA05F8B590250E4C6D01070000F036F863590600DB439B0701D10C +:4003C000FFF7D8FF80239B00E7506359074A1A40074B13436351102362681A42FCD0300000F023F8F8BDC04600002040FCFF00000300FA0510B562B60348FFF7D5FF00206E +:4004000000F08CFBFBE7C04600200010000000000230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047014B18607047C046C8040008024B1A686E +:40044000002A00D11860704780040008F7B52C4D1F002B68040000910192002B03D1B521284800F03BFA2C23FF225C432B683D001C193B0A3F0CA760234F134063603B6887 +:400480001540256031331B789D4204D3C4211F48FF3100F023FA3B681A00B032128855431A6A3233AD1825611B7865689D4204D3E0211648FF3100F011FA3B6880351B6AAA +:4004C0006D01A668ED186561330C09D0FF210F4F4900380000F002FA0D49380000F0FEF933041A0C1343AB60019BE361009B23620023A361089B002B01D01B782373F7BDDC +:40050000800400087C0F0010C8040008E20F0010FF010000F0B5040085B0002803D15221214800F0DBF96368032B03D954211E4800F0D4F9E36A002B03D158211A4800F0C1 +:40054000CDF9236B002B03D15921174800F0C6F9A36802AD2B70154B22681B68E16ADB8EE0689B186B706368A26A039300952369266A676AFFF76AFF00213B000A0000910F +:400580003000FFF763FF216B280000F053F90023EB56002B06DB1F2213401E3A9A401300034A136005B0F0BD7C0F0010C804000800E100E0002373B504000193984204D196 +:4005C000D2212C48FF3100F089F92369002B04D1E9212848490000F081F96369002B04D1D4212448FF3100F079F9236A002B04D1EA212048490000F071F96269D5682B0C98 +:4006000022D01B04136013681B4B20691B68B4331B68C3181B68002B16DA01A900F060FB0026B0420CD10198E26903681E0CDBB29A4205D9226A9B009B58002B00D09847C8 +:400640003100206900F012FBADB2002D09D063691D6000251B68636AAB4205D098476562A56163691B6873BDA36A002BF8D09847F6E7C0467C0F0010C804000870B5084C09 +:4006800005002368002B04D1B2210648FF3100F025F92C20454320684019FFF78BFF70BD800400087C0F001070B50A4D04002B6831331B78834204D8C4210748FF3100F0C3 +:4006C0000DF92B681A00B03210884443186A201870BDC046C8040008E20F0010F8B5174B0D001B6831331B78834225D9002923D01F240B681C401FD1FFF7D6FF07002B68A8 +:400700000F4EDA0821003060686800F091FB2100380000F0ABFA21002A00306800F0C6FA041E07D10100306800F0A0FA03002000002B00D00348F8BD0348FCE7C8040008BF +:400740008C04000801018A0003018A0010B50C00002A07D100290DD1FFF7A6FF064B1860200010BD002905D004490C604A60FFF7B5FFF6E70248F4E78C0400088404000867 +:4007800003018A0070B51A4E050033680C001A0028321278012A15D182080721100088430FD103202840C00084401B68920020339B182200FF24844019684A4014404C40D8 +:4007C0001C6070BD5B8FDBB28B4203D17621094800F084F80720802205408020336892011B680006A4180543A400E550E9E7C046C8040008481000100A4B70B59B680A4EBB +:4008000010300D008400B34209D1002904D138210648FF3100F062F83059355170BD044B1859FBE700ED00E0000000084810001000000010F8B506000D00002841D043682A +:40084000032B03D93221204800F048F800203056002828DB7178FFF795FF0024FF2200200327944630567168C3B21F40FF006646BA4089013140D243B940002815DB134E7C +:4008800083089B009B19C026B6009F593A40114399510F4B9A680F4B9A4202D12900FFF7ABFF2000F8BD0C4CD8E70F263340083B074E9B089B009B19DE6932401143D9617F +:4008C000E7E7054CEDE7C0464810001000E100E000ED00E0000000080100560070B50D00044C01001822200000F0AAFAA56101BEFEE7C04698020008FEE7000002680A4B43 +:4009000010B5DA6142681A6282685A62C2689A620269DA6242691A6382695A63C2699A63FFF7EAFF10BDC04698020008B0235B055A782120002A01D05878C0B27047B023C5 +:400940005B059A89002A02D0988980B2704780204000FBE710B5074C236831331B78002B04D1C4210448FF31FFF7B8FF2368186A10BDC046C8040008E20F001030B50400E6 +:4009800085B00D00042803D927492848FFF7A6FF6B1E012B07D9FB222B1F134203D024492248FFF79BFF234BA400E458042D01D0012D1AD100200FE0A3682B420BD1E368D0 +:4009C00029001A685B6802920193039302A823689847194B1C606469002C04D0174B9842EAD1012DE8D105B030BD022D06D1124B1B68181EF7D01C6903E01C006369002B2C +:400A0000FBD10020002CEED0A3682B4209D1E36829001A685B6802920193039302A8236898472469EEE7C046DC090000AC100010DD0900009404000890040008FF00420087 +:400A400010B5041E03D111491148FFF747FFF222104BD2011B68DB689A582260F022D2019A5862600C4A9A58A2600C4A9A58E2600B4A9A5822610B4A9A5862610A4A9A58C9 +:400A8000A2610A4A9B58E36110BDC046CB0A0000AC100010C804000804780000087800000C78000010780000147800001878000010B5041E03D110491048FFF70FFFF022BA +:400AC0000F4B61681B68D201DB689950A1680D4A9950E1680C4A995021690C4A995061690B4A9950A1690B4A9950E1690A4A99502168E832995010BDF30A0000AC100010BE +:400B0000C804000804780000087800000C780000107800001478000018780000F7B50700012803D940494148FFF7D8FE404D6B68002B4AD1FFF775FC6B680190002B56D164 +:400B40003C4E33681A0043321278002A07D09B68E0331B68DB0602D53748FFF771FFFFF7EEFE80235B00984246D1380000F088F9002433681A0043321278002A17D0002875 +:400B800015D09B68E0331B68DB0610D5FFF7CEFE294B212808D032681300B033198807234B43126A9B18DB681800FFF781FF0198FFF73BFC002C0ED16B68002B03D00821E6 +:400BC0000120FFF7DBFE2000FEBD01210800FFF7D5FE041EAED06B68002B03D002210120FFF7CCFE154B9C42EDD0154CEBE704210120FFF7C3FEA3E7FFF7ACFE3368B433EB +:400C00001B68C0180368002B0BDB04230D4A11690B431361012F02D030BF0020A8E720BFFBE70020054CA4E7A5020000AC10001094040008C8040008A804000805004200E4 +:400C4000FF00420000ED00E0C0228020064952008B58C0059B009B0803438B50802388581B0603438B507047000026400B4B70B51B680500B4331B680C00C3181B68002B58 +:400C800009DA0B0C03D006490648FFF727FE0020A4B26C6070BD0448FCE7C046C8040008D5020000E20F001001008A00036870B505000C00002B0ADAC2600B0C03D00549CA +:400CC0000548FFF70BFE0020A4B2AC6070BD0348FCE7C046BB020000E20F001001008A0070B505000C1E03D199210848FFF7F6FD074B1B68B4331B68EB181B68002B03DA94 +:400D00000020EB68236070BD0248FCE70F110010C804000801008A00002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030CBE +:400D40008B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B0378 +:400D8000C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A74 +:400DC000524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143085B +:400E00008B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E770477047C04603001218934200D1704719700133F9E7EE +:400E400030B50500002A00D130BD0C78013A6B1C2C700131002C05D19A189A42F4D01C700133FAE71D00EDE7F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E4670471A +:400E800001B40248844601BC604700BFA500000803000000010000000100000000000000050360000400000001000000000000000100000006046000080000006004000848 +:400EC000490100100000204000002440000000400000000000002340000030400000314000009F40000022400000104002020202020202020210101D800017007500FF0362 +:400F00000602063604102000000000007FC0000000040000000000000019324B647D00804000080B100000000000FF012002001F00800004FF081018001000140018001C50 +:400F40004044484C50000000081000000800000004000000041000000012000004210000002100000016000040114002C41300138013A013200000001C000000433A2F5563 +:400F8000736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F6386 +:400FC0003670646C2F647269766572732F736F757263652F63795F6970635F706970652E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E31A3 +:401000002F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F696E636C7564652F63795F6970B0 +:40104000635F6472762E6800433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D0B +:40108000706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F737973696E742E6300433A2F55736572732F766D65642F4D6F6475735418 +:4010C0006F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F753E +:401100007263652F63795F737973706D2E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D7B +:40114000312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F6970635F6472762E630000000000000000100000000828 +:4011800080000000981100108000000818020000D4020008F801000000093D0000127A0000093D000000D00700093D00A00F000004000000A900001081000010F7B56E4DE4 +:4011C00004002A68536800931300B033198807234B43126A9B181A68002AFCDA00F0E0F82A681300B033198807234B43212800D096E0116A5B180221D8680143D960D968C4 +:40120000C9072FD508208446944460461600D968C06F01911168883608183568076849190D683902FF273F040F40694689882D0A2D0639432943D960902103684F4D090118 +:401240002B400B430360136830681B18186805402943196013686246D26F9A18126832689B181B68444D2A681300B033198807234B43126A9B1800225A600423404A11695A +:401280000B431361012C50D030BF2A681300B033198807234B43126A9B181A68002AFCDA00F07EF8212842D1296807220B000124B0331B8800205A430B6AD318DD682542A3 +:4012C0001CD0080008300D68C06F2C4E28180568DB6835401B0C1B061B0C2B4303600B00883318680B6818180B6A0568D318DB682E401B0E1B023343036020000B6A0221C1 +:40130000D218D3688B43D3601B4B1A681300B033198807234B43126A9B1800225A60FEBD126A9B18174ADA609CE720BFADE70020009BFC331B698342E6D1A320124B134964 +:40134000134A144FC0000E681D5814680F6006271F503E20106010483E371F501F58002FFCDA00980D4FFC3007610E60A321C9005D5001201460C7E7C8040008FF00FFFFB1 +:4013800000ED00E0A80400080000264008012640040126401E1F00001C050000AAAAAAAA01B40248844601BC604700BF2D0900100000000000000000000000000000000034 +:4013C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED +:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6.h new file mode 100644 index 00000000000..6dcb0ce124d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6.h @@ -0,0 +1,669 @@ +/***************************************************************************//** +* \file system_psoc6.h +* \version 2.30 +* +* \brief Device system header file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#ifndef _SYSTEM_PSOC6_H_ +#define _SYSTEM_PSOC6_H_ + +/** +* \addtogroup group_system_config +* \{ +* Provides device startup, system configuration, and linker script files. +* The system startup provides the followings features: +* - See \ref group_system_config_device_initialization for the: +* * \ref group_system_config_dual_core_device_initialization +* * \ref group_system_config_single_core_device_initialization +* - \ref group_system_config_device_memory_definition +* - \ref group_system_config_heap_stack_config +* - \ref group_system_config_merge_apps +* - \ref group_system_config_default_handlers +* - \ref group_system_config_device_vector_table +* - \ref group_system_config_cm4_functions +* +* \section group_system_config_configuration Configuration Considerations +* +* \subsection group_system_config_device_memory_definition Device Memory Definition +* The flash and RAM allocation for each CPU is defined by the linker scripts. +* For dual-core devices, the physical flash and RAM memory is shared between the CPU cores. +* 2 KB of RAM (allocated at the end of RAM) are reserved for system use. +* For Single-Core devices the system reserves additional 80 bytes of RAM. +* Using the reserved memory area for other purposes will lead to unexpected behavior. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see warnings during the build process. To eliminate build +* warnings in your project, you can simply comment out or remove the relevant +* code in the linker file. +* +* ARM GCC\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.ld', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.ld' and 'cy8c6xx7_cm4_dual.ld'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10000000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00024000 +* \endcode +* - 'xx_cm4_dual.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10080000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the rom ORIGIN's +* value in the 'xx_cm4_dual.ld' file, where 'xx' is the device group. Do this +* by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* ARM MDK\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.scat', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.scat' and 'cy8c6xx7_cm4_dual.scat'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see the warnings during the build process: +* L6314W (no section matches pattern) and/or L6329W +* (pattern only matches removed unused sections). In your project, you can +* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +* the linker. You can also comment out or remove the relevant code in the linker +* file. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10000000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08000000 +* #define RAM_SIZE 0x00024000 +* \endcode +* - 'xx_cm4_dual.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10080000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08024000 +* #define RAM_SIZE 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the FLASH_START +* value in the 'xx_cm4_dual.scat' file, +* where 'xx' is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* IAR\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.icf', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.icf' and 'cy8c6xx7_cm4_dual.icf'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10000000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10080000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08000000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08024000; +* \endcode +* - 'xx_cm4_dual.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10080000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10100000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08024000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08047800; +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the +* __ICFEDIT_region_IROM1_start__ value in the 'xx_cm4_dual.icf' file, where 'xx' +* is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* \subsection group_system_config_device_initialization Device Initialization +* After a power-on-reset (POR), the boot process is handled by the boot code +* from the on-chip ROM that is always executed by the Cortex-M0+ core. The boot +* code passes the control to the Cortex-M0+ startup code located in flash. +* +* \subsubsection group_system_config_dual_core_device_initialization Dual-Core Devices +* The Cortex-M0+ startup code performs the device initialization by a call to +* SystemInit() and then calls the main() function. The Cortex-M4 core is disabled +* by default. Enable the core using the \ref Cy_SysEnableCM4() function. +* See \ref group_system_config_cm4_functions for more details. +* \note Startup code executes SystemInit() function for the both Cortex-M0+ and Cortex-M4 cores. +* The function has a separate implementation on each core. +* Both function implementations unlock and disable the WDT. +* Therefore enable the WDT after both cores have been initialized. +* +* \subsubsection group_system_config_single_core_device_initialization Single-Core Devices +* The Cortex-M0+ core is not user-accessible on these devices. In this case the +* Flash Boot handles setup of the CM0+ core and starts the Cortex-M4 core. +* +* \subsection group_system_config_heap_stack_config Heap and Stack Configuration +* There are two ways to adjust heap and stack configurations: +* -# Editing source code files +* -# Specifying via command line +* +* By default, the stack size is set to 0x00001000 and the heap size is set to 0x00000400. +* +* \subsubsection group_system_config_heap_stack_config_gcc ARM GCC +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* Change the heap and stack sizes by modifying the following lines:\n +* \code .equ Stack_Size, 0x00001000 \endcode +* \code .equ Heap_Size, 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the compiler:\n +* \code -D __STACK_SIZE=0x000000400 \endcode +* \code -D __HEAP_SIZE=0x000000100 \endcode +* +* \subsubsection group_system_config_heap_stack_config_mdk ARM MDK +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the assembler:\n +* \code "--predefine=___STACK_SIZE SETA 0x000000400" \endcode +* \code "--predefine=__HEAP_SIZE SETA 0x000000100" \endcode +* +* \subsubsection group_system_config_heap_stack_config_iar IAR +* - Editing source code files\n +* The heap and stack sizes are defined in the linker scatter files: 'xx_yy.icf', +* where 'xx' is the device family, and 'yy' is the target CPU; for example, +* cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the +* linker (including quotation marks):\n +* \code --define_symbol __STACK_SIZE=0x000000400 \endcode +* \code --define_symbol __HEAP_SIZE=0x000000100 \endcode +* +* \subsection group_system_config_merge_apps Merging CM0+ and CM4 Executables +* The CM0+ project and linker script build the CM0+ application image. Similarly, +* the CM4 linker script builds the CM4 application image. Each specifies +* locations, sizes, and contents of sections in memory. See +* \ref group_system_config_device_memory_definition for the symbols and default +* values. +* +* The cymcuelftool is invoked by a post-build command. The precise project +* setting is IDE-specific. +* +* The cymcuelftool combines the two executables. The tool examines the +* executables to ensure that memory regions either do not overlap, or contain +* identical bytes (shared). If there are no problems, it creates a new ELF file +* with the merged image, without changing any of the addresses or data. +* +* \subsection group_system_config_default_handlers Default Interrupt Handlers Definition +* The default interrupt handler functions are defined as weak functions to a dummy +* handler in the startup file. The naming convention for the interrupt handler names +* is \_IRQHandler. A default interrupt handler can be overwritten in +* user code by defining the handler function using the same name. For example: +* \code +* void scb_0_interrupt_IRQHandler(void) +*{ +* ... +*} +* \endcode +* +* \subsection group_system_config_device_vector_table Vectors Table Copy from Flash to RAM +* This process uses memory sections defined in the linker script. The startup +* code actually defines the contents of the vector table and performs the copy. +* \subsubsection group_system_config_device_vector_table_gcc ARM GCC +* The linker script file is 'xx_yy.ld', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.ld and cy8c6xx7_cm4_dual.ld. +* It defines sections and locations in memory.\n +* Copy interrupt vectors from flash to RAM: \n +* From: \code LONG (__Vectors) \endcode +* To: \code LONG (__ram_vectors_start__) \endcode +* Size: \code LONG (__Vectors_End - __Vectors) \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* The code in these files copies the vector table from Flash to RAM. +* \subsubsection group_system_config_device_vector_table_mdk ARM MDK +* The linker script file is 'xx_yy.scat', where 'xx' is the device family, +* and 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.scat and +* cy8c6xx7_cm4_dual.scat. The linker script specifies that the vector table +* (RESET_RAM) shall be first in the RAM section.\n +* RESET_RAM represents the vector table. It is defined in the assembler startup +* files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \subsubsection group_system_config_device_vector_table_iar IAR +* The linker script file is 'xx_yy.icf', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* This file defines the .intvec_ram section and its location. +* \code place at start of IRAM1_region { readwrite section .intvec_ram}; \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \section group_system_config_more_information More Information +* Refer to the PDL User Guide for the +* more details. +* +* \section group_system_config_MISRA MISRA Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
2.3RThe character sequence // shall not be used within a comment.The comments provide a useful WEB link to the documentation.
+* +* \section group_system_config_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.30Added assembler files, linker skripts for Mbed OS.Added Arm Mbed OS embedded operating system support.
Updated linker scripts to extend the Flash and Ram memories size available for the CM4 core.Enhanced PDL usability.
2.20Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup.Changed the IPC driver configuration method from compile time to run time.
2.10Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* uVision Debugger support.
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* Documentation improvement.
2.0Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +*
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* Linker scripts usability improvement.
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API.Reserved system resources for internal operations.
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API.To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering.
1.0Initial version
+* +* +* \defgroup group_system_config_macro Macro +* \{ +* \defgroup group_system_config_system_macro System +* \defgroup group_system_config_cm4_status_macro Cortex-M4 Status +* \defgroup group_system_config_user_settings_macro User Settings +* \} +* \defgroup group_system_config_functions Functions +* \{ +* \defgroup group_system_config_system_functions System +* \defgroup group_system_config_cm4_functions Cortex-M4 Control +* \} +* \defgroup group_system_config_globals Global Variables +* +* \} +*/ + +/** +* \addtogroup group_system_config_system_functions +* \{ +* \details +* The following system functions implement CMSIS Core functions. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* \} +*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************************* +* Include files +*******************************************************************************/ +#include + + +/******************************************************************************* +* Global preprocessor symbols/macros ('define') +*******************************************************************************/ +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined (__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3))) + #define CY_SYSTEM_CPU_CM0P 1UL +#else + #define CY_SYSTEM_CPU_CM0P 0UL +#endif + +#if defined (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) + #include "cyfitter.h" +#endif /* (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) */ + + + + +/******************************************************************************* +* +* START OF USER SETTINGS HERE +* =========================== +* +* All lines with '<<<' can be set by user. +* +*******************************************************************************/ + +/** +* \addtogroup group_system_config_user_settings_macro +* \{ +*/ + +#if defined (CYDEV_CLK_EXTCLK__HZ) + #define CY_CLK_EXT_FREQ_HZ (CYDEV_CLK_EXTCLK__HZ) +#else + /***************************************************************************//** + * External Clock Frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_EXT_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_EXTCLK__HZ) */ + + +#if defined (CYDEV_CLK_ECO__HZ) + #define CY_CLK_ECO_FREQ_HZ (CYDEV_CLK_ECO__HZ) +#else + /***************************************************************************//** + * \brief External crystal oscillator frequency (in Hz, [value]UL). If compiled + * within PSoC Creator and the clock is enabled in the DWR, the value from DWR + * used. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ECO_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_ECO__HZ) */ + + +#if defined (CYDEV_CLK_ALTHF__HZ) + #define CY_CLK_ALTHF_FREQ_HZ (CYDEV_CLK_ALTHF__HZ) +#else + /***************************************************************************//** + * \brief Alternate high frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ALTHF_FREQ_HZ (32000000UL) /* <<< 32 MHz */ +#endif /* (CYDEV_CLK_ALTHF__HZ) */ + + +/***************************************************************************//** +* \brief Start address of the Cortex-M4 application ([address]UL) +* (USER SETTING) +*******************************************************************************/ +#if !defined (CY_CORTEX_M4_APPL_ADDR) + #define CY_CORTEX_M4_APPL_ADDR (CY_FLASH_BASE + 0x2000U) /* <<< 8 kB of flash is reserved for the Cortex-M0+ application */ +#endif /* (CY_CORTEX_M4_APPL_ADDR) */ + + +/***************************************************************************//** +* \brief IPC Semaphores allocation ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_SEMA_COUNT (128UL) /* <<< This will allow 128 (4*32) semaphores */ + + +/***************************************************************************//** +* \brief IPC Pipe definitions ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_MAX_ENDPOINTS (8UL) /* <<< 8 endpoints */ + + +/******************************************************************************* +* +* END OF USER SETTINGS HERE +* ========================= +* +*******************************************************************************/ + +/** \} group_system_config_user_settings_macro */ + + +/** +* \addtogroup group_system_config_system_macro +* \{ +*/ + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M0+ startup driver identifier */ + #define CY_STARTUP_M0P_ID ((uint32_t)((uint32_t)((0x0EU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + +#if (CY_SYSTEM_CPU_CM0P != 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M4 startup driver identifier */ + #define CY_STARTUP_M4_ID ((uint32_t)((uint32_t)((0x0FU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P != 1UL) */ + +/** \} group_system_config_system_macro */ + + +/** +* \addtogroup group_system_config_system_functions +* \{ +*/ +#if defined(__ARMCC_VERSION) + extern void SystemInit(void) __attribute__((constructor)); +#else + extern void SystemInit(void); +#endif /* (__ARMCC_VERSION) */ + +extern void SystemCoreClockUpdate(void); +/** \} group_system_config_system_functions */ + + +/** +* \addtogroup group_system_config_cm4_functions +* \{ +*/ +extern uint32_t Cy_SysGetCM4Status(void); +extern void Cy_SysEnableCM4(uint32_t vectorTableOffset); +extern void Cy_SysDisableCM4(void); +extern void Cy_SysRetainCM4(void); +extern void Cy_SysResetCM4(void); +/** \} group_system_config_cm4_functions */ + + +/** \cond */ +extern void Default_Handler (void); + +void Cy_SysIpcPipeIsrCm0(void); +void Cy_SysIpcPipeIsrCm4(void); + +extern void Cy_SystemInit(void); +extern void Cy_SystemInitFpuEnable(void); + +extern uint32_t cy_delayFreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; +/** \endcond */ + + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) +/** +* \addtogroup group_system_config_cm4_status_macro +* \{ +*/ +#define CY_SYS_CM4_STATUS_ENABLED (3U) /**< The Cortex-M4 core is enabled: power on, clock on, no isolate, no reset and no retain. */ +#define CY_SYS_CM4_STATUS_DISABLED (0U) /**< The Cortex-M4 core is disabled: power off, clock off, isolate, reset and no retain. */ +#define CY_SYS_CM4_STATUS_RETAINED (2U) /**< The Cortex-M4 core is retained. power off, clock off, isolate, no reset and retain. */ +#define CY_SYS_CM4_STATUS_RESET (1U) /**< The Cortex-M4 core is in the Reset mode: clock off, no isolated, no retain and reset. */ +/** \} group_system_config_cm4_status_macro */ + +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + + +/******************************************************************************* +* IPC Configuration +* ========================= +*******************************************************************************/ +/* IPC CY_PIPE default configuration */ +#define CY_SYS_CYPIPE_CLIENT_CNT (8UL) + +#define CY_SYS_INTR_CYPIPE_MUX_EP0 (1UL) /* IPC CYPRESS PIPE */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP0 (1UL) /* Notifier Priority */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP1 (1UL) /* Notifier Priority */ + +#define CY_SYS_CYPIPE_CHAN_MASK_EP0 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CHAN_MASK_EP1 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP1) + + +/******************************************************************************/ +/* + * The System pipe configuration defines the IPC channel number, interrupt + * number, and the pipe interrupt mask for the endpoint. + * + * The format of the endPoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ + +/* System Pipe addresses */ +/* CyPipe defines */ + +#define CY_SYS_CYPIPE_INTR_MASK ( CY_SYS_CYPIPE_CHAN_MASK_EP0 | CY_SYS_CYPIPE_CHAN_MASK_EP1 ) + +#define CY_SYS_CYPIPE_CONFIG_EP0 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP0 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CONFIG_EP1 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP1 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP1) + +/******************************************************************************/ + + +/** \addtogroup group_system_config_globals +* \{ +*/ + +extern uint32_t SystemCoreClock; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_PeriClkFreqHz; + +/** \} group_system_config_globals */ + + + +/** \cond INTERNAL */ +/******************************************************************************* +* Backward compatibility macro. The following code is DEPRECATED and must +* not be used in new projects +*******************************************************************************/ + +/* BWC defines for functions related to enter/exit critical section */ +#define Cy_SaveIRQ Cy_SysLib_EnterCriticalSection +#define Cy_RestoreIRQ Cy_SysLib_ExitCriticalSection +#define CY_SYS_INTR_CYPIPE_EP0 (CY_IPC_INTR_CYPIPE_EP0) +#define CY_SYS_INTR_CYPIPE_EP1 (CY_IPC_INTR_CYPIPE_EP1) + +/** \endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYSTEM_PSOC6_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6_cm4.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6_cm4.c new file mode 100644 index 00000000000..da838b41236 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/device/system_psoc6_cm4.c @@ -0,0 +1,582 @@ +/***************************************************************************//** +* \file system_psoc6_cm4.c +* \version 2.30 +* +* The device system-source file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "device.h" +#include "system_psoc6.h" +#include "cy_device_headers.h" +#include "psoc6_utils.h" +#include "cy_syslib.h" +#include "cy_wdt.h" +#include "cycfg.h" + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + #include "cy_ipc_sema.h" + #include "cy_ipc_pipe.h" + #include "cy_ipc_drv.h" + + #if defined(CY_DEVICE_PSOC6ABLE2) + #include "cy_flash.h" + #endif /* defined(CY_DEVICE_PSOC6ABLE2) */ +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ + + +/******************************************************************************* +* SystemCoreClockUpdate() +*******************************************************************************/ + +/** Default HFClk frequency in Hz */ +#define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL) + +/** Default PeriClk frequency in Hz */ +#define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL) + +/** Default SlowClk system core frequency in Hz */ +#define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL) + +/** IMO frequency in Hz */ +#define CY_CLK_IMO_FREQ_HZ (8000000UL) + +/** HVILO frequency in Hz */ +#define CY_CLK_HVILO_FREQ_HZ (32000UL) + +/** PILO frequency in Hz */ +#define CY_CLK_PILO_FREQ_HZ (32768UL) + +/** WCO frequency in Hz */ +#define CY_CLK_WCO_FREQ_HZ (32768UL) + +/** ALTLF frequency in Hz */ +#define CY_CLK_ALTLF_FREQ_HZ (32768UL) + + +/** +* Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock, +* which is the system clock frequency supplied to the SysTick timer and the +* processor core clock. +* This variable implements CMSIS Core global variable. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* This variable can be used by debuggers to query the frequency +* of the debug timer or to configure the trace clock speed. +* +* \attention Compilers must be configured to avoid removing this variable in case +* the application program is not using it. Debugging systems require the variable +* to be physically present in memory so that it can be examined to configure the debugger. */ +uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +/** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT; + +/** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT; + +/** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */ +#if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) + uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ; +#endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */ + +/* SCB->CPACR */ +#define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u) + + +/******************************************************************************* +* SystemInit() +*******************************************************************************/ + +/* CLK_FLL_CONFIG default values */ +#define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u) +#define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u) +#define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u) +#define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu) + + +/******************************************************************************* +* SystemCoreClockUpdate (void) +*******************************************************************************/ + +/* Do not use these definitions directly in your application */ +#define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u) +#define CY_DELAY_1K_THRESHOLD (1000u) +#define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u) +#define CY_DELAY_1M_THRESHOLD (1000000u) +#define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u) +uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / + CY_DELAY_1K_THRESHOLD; + +uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) / + CY_DELAY_1M_THRESHOLD); + +uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * + ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD); + +#define CY_ROOT_PATH_SRC_IMO (0UL) +#define CY_ROOT_PATH_SRC_EXT (1UL) +#if (SRSS_ECO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ECO (2UL) +#endif /* (SRSS_ECO_PRESENT == 1U) */ +#if (SRSS_ALTHF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ALTHF (3UL) +#endif /* (SRSS_ALTHF_PRESENT == 1U) */ +#define CY_ROOT_PATH_SRC_DSI_MUX (4UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL) +#if (SRSS_ALTLF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL) +#endif /* (SRSS_ALTLF_PRESENT == 1U) */ +#if (SRSS_PILO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL) +#endif /* (SRSS_PILO_PRESENT == 1U) */ + + +/******************************************************************************* +* Function Name: SystemInit +****************************************************************************//** +* \cond +* Initializes the system: +* - Restores FLL registers to the default state for single core devices. +* - Unlocks and disables WDT. +* - Calls Cy_PDL_Init() function to define the driver library. +* - Calls the Cy_SystemInit() function, if compiled from PSoC Creator. +* - Calls \ref SystemCoreClockUpdate(). +* \endcond +*******************************************************************************/ +void SystemInit(void) +{ + Cy_PDL_Init(CY_DEVICE_CFG); + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Restore FLL registers to the default state as they are not restored by the ROM code */ + uint32_t copy = SRSS->CLK_FLL_CONFIG; + copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk; + SRSS->CLK_FLL_CONFIG = copy; + + copy = SRSS->CLK_ROOT_SELECT[0u]; + copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/ + SRSS->CLK_ROOT_SELECT[0u] = copy; + + SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE; + SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE; + SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE; + SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE; + + /* Unlock and disable WDT */ + Cy_WDT_Unlock(); + Cy_WDT_Disable(); + #endif /* (__CM0P_PRESENT == 0) */ +#endif /* __CM0P_PRESENT */ + + Cy_SystemInit(); + SystemCoreClockUpdate(); + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Allocate and initialize semaphores for the system operations. */ + static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD]; + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray); + #else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); + #endif /* (__CM0P_PRESENT) */ +#else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); +#endif /* __CM0P_PRESENT */ + + + /******************************************************************************** + * + * Initializes the system pipes. The system pipes are used by BLE and Flash. + * + * If the default startup file is not used, or SystemInit() is not called in your + * project, call the following three functions prior to executing any flash or + * EmEEPROM write or erase operation: + * -# Cy_IPC_Sema_Init() + * -# Cy_IPC_Pipe_Config() + * -# Cy_IPC_Pipe_Init() + * -# Cy_Flash_Init() + * + *******************************************************************************/ + /* Create an array of endpoint structures */ + static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS]; + + Cy_IPC_Pipe_Config(systemIpcPipeEpArray); + + static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT]; + + static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 = + { + /* .ep0ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0, + /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0 + }, + /* .ep1ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1, + /* .ipcNotifierMuxNumber */ 0u, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1 + }, + /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT, + /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray, + /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4 + }; + + if (cy_device->flashPipeRequired != 0u) + { + Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4); + } + +#if defined(CY_DEVICE_PSOC6ABLE2) + Cy_Flash_Init(); +#endif /* defined(CY_DEVICE_PSOC6ABLE2) */ + +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ +} + + +/******************************************************************************* +* Function Name: mbed_sdk_init +****************************************************************************//** +* +* Mbed's post-memory-initialization function. +* Used here to initialize common parts of the Cypress libraries. +* +*******************************************************************************/ +void mbed_sdk_init(void) +{ + /* Initialize shared resource manager */ + cy_srm_initialize(); + + /* Initialize system and clocks. */ + /* Placed here as it must be done after proper LIBC initialization. */ + SystemInit(); + + /* Set up the device based on configurator selections */ + init_cycfg_all(); + + /* Enable global interrupts */ + __enable_irq(); +} + + + +/******************************************************************************* +* Function Name: Cy_SystemInit +****************************************************************************//** +* +* The function is called during device startup. Once project compiled as part of +* the PSoC Creator project, the Cy_SystemInit() function is generated by the +* PSoC Creator. +* +* The function generated by PSoC Creator performs all of the necessary device +* configuration based on the design settings. This includes settings from the +* Design Wide Resources (DWR) such as Clocks and Pins as well as any component +* configuration that is necessary. +* +*******************************************************************************/ +__WEAK void Cy_SystemInit(void) +{ + /* Empty weak function. The actual implementation to be in the PSoC Creator + * generated strong function. + */ +} + + +/******************************************************************************* +* Function Name: SystemCoreClockUpdate +****************************************************************************//** +* +* Gets core clock frequency and updates \ref SystemCoreClock, \ref +* cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz. +* +* Updates global variables used by the \ref Cy_SysLib_Delay(), \ref +* Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles(). +* +*******************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t srcFreqHz; + uint32_t pathFreqHz; + uint32_t fastClkDiv; + uint32_t periClkDiv; + uint32_t rootPath; + uint32_t srcClk; + + /* Get root path clock for the high-frequency clock # 0 */ + rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]); + + /* Get source of the root path clock */ + srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]); + + /* Get frequency of the source */ + switch (srcClk) + { + case CY_ROOT_PATH_SRC_IMO: + srcFreqHz = CY_CLK_IMO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_EXT: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + + #if (SRSS_ECO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ECO: + srcFreqHz = CY_CLK_ECO_FREQ_HZ; + break; + #endif /* (SRSS_ECO_PRESENT == 1U) */ + +#if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ALTHF: + srcFreqHz = cy_BleEcoClockFreqHz; + break; +#endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */ + + case CY_ROOT_PATH_SRC_DSI_MUX: + { + uint32_t dsi_src; + dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]); + switch (dsi_src) + { + case CY_ROOT_PATH_SRC_DSI_MUX_HVILO: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_DSI_MUX_WCO: + srcFreqHz = CY_CLK_WCO_FREQ_HZ; + break; + + #if (SRSS_ALTLF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF: + srcFreqHz = CY_CLK_ALTLF_FREQ_HZ; + break; + #endif /* (SRSS_ALTLF_PRESENT == 1U) */ + + #if (SRSS_PILO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_PILO: + srcFreqHz = CY_CLK_PILO_FREQ_HZ; + break; + #endif /* (SRSS_PILO_PRESENT == 1U) */ + + default: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + } + } + break; + + default: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + } + + if (rootPath == 0UL) + { + /* FLL */ + bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS)); + bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)); + bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) || + (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3))); + if ((fllOutputAuto && fllLocked) || fllOutputOutput) + { + uint32_t fllMult; + uint32_t refDiv; + uint32_t outputDiv; + + fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG); + refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2); + outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL; + + pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv; + } + else + { + pathFreqHz = srcFreqHz; + } + } + else if ((rootPath == 1UL) || (rootPath == 2UL)) + { + /* PLL */ + bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL])); + bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])); + bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) || + (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]))); + if ((pllOutputAuto && pllLocked) || pllOutputOutput) + { + uint32_t feedbackDiv; + uint32_t referenceDiv; + uint32_t outputDiv; + + feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + + pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv; + + } + else + { + pathFreqHz = srcFreqHz; + } + } + else + { + /* Direct */ + pathFreqHz = srcFreqHz; + } + + /* Get frequency after hf_clk pre-divider */ + pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]); + cy_Hfclk0FreqHz = pathFreqHz; + + /* Fast Clock Divider */ + fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL); + + /* Peripheral Clock Divider */ + periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL); + cy_PeriClkFreqHz = pathFreqHz / periClkDiv; + + pathFreqHz = pathFreqHz / fastClkDiv; + SystemCoreClock = pathFreqHz; + + /* Sets clock frequency for Delay API */ + cy_delayFreqHz = SystemCoreClock; + cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD); + cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD; + cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz; +} + + +/******************************************************************************* +* Function Name: Cy_SystemInitFpuEnable +****************************************************************************//** +* +* Enables the FPU if it is used. The function is called from the startup file. +* +*******************************************************************************/ +void Cy_SystemInitFpuEnable(void) +{ + #if defined (__FPU_USED) && (__FPU_USED == 1U) + uint32_t interruptState; + interruptState = Cy_SysLib_EnterCriticalSection(); + SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE; + __DSB(); + __ISB(); + Cy_SysLib_ExitCriticalSection(interruptState); + #endif /* (__FPU_USED) && (__FPU_USED == 1U) */ +} + + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) +/******************************************************************************* +* Function Name: Cy_SysIpcPipeIsrCm4 +****************************************************************************//** +* +* This is the interrupt service routine for the system pipe. +* +*******************************************************************************/ +void Cy_SysIpcPipeIsrCm4(void) +{ + Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR); +} +#endif + +/******************************************************************************* +* Function Name: Cy_MemorySymbols +****************************************************************************//** +* +* The intention of the function is to declare boundaries of the memories for the +* MDK compilers. For the rest of the supported compilers, this is done using +* linker configuration files. The following symbols used by the cymcuelftool. +* +*******************************************************************************/ +#if defined (__ARMCC_VERSION) +__asm void Cy_MemorySymbols(void) +{ + /* Flash */ + EXPORT __cy_memory_0_start + EXPORT __cy_memory_0_length + EXPORT __cy_memory_0_row_size + + /* Working Flash */ + EXPORT __cy_memory_1_start + EXPORT __cy_memory_1_length + EXPORT __cy_memory_1_row_size + + /* Supervisory Flash */ + EXPORT __cy_memory_2_start + EXPORT __cy_memory_2_length + EXPORT __cy_memory_2_row_size + + /* XIP */ + EXPORT __cy_memory_3_start + EXPORT __cy_memory_3_length + EXPORT __cy_memory_3_row_size + + /* eFuse */ + EXPORT __cy_memory_4_start + EXPORT __cy_memory_4_length + EXPORT __cy_memory_4_row_size + + /* Flash */ +__cy_memory_0_start EQU __cpp(CY_FLASH_BASE) +__cy_memory_0_length EQU __cpp(CY_FLASH_SIZE) +__cy_memory_0_row_size EQU 0x200 + + /* Flash region for EEPROM emulation */ +__cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE) +__cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE) +__cy_memory_1_row_size EQU 0x200 + + /* Supervisory Flash */ +__cy_memory_2_start EQU __cpp(CY_SFLASH_BASE) +__cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE) +__cy_memory_2_row_size EQU 0x200 + + /* XIP */ +__cy_memory_3_start EQU __cpp(CY_XIP_BASE) +__cy_memory_3_length EQU __cpp(CY_XIP_SIZE) +__cy_memory_3_row_size EQU 0x200 + + /* eFuse */ +__cy_memory_4_start EQU __cpp(0x90700000) +__cy_memory_4_length EQU __cpp(0x100000) +__cy_memory_4_row_size EQU __cpp(1) +} + +#endif /* defined (__ARMCC_VERSION) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/psoc6_static_srm.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/psoc6_static_srm.h new file mode 100644 index 00000000000..291b5a60da3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CMOD_062_4343W/psoc6_static_srm.h @@ -0,0 +1,73 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + */ + +/* + * This file defines hardware resources reserved by device-generated code. These + * resources are accessed directly by the Peripheral Driver library (PDL). + * + * There are four classes of resources that must be declared here: + * 1 CYCFG_ASSIGNED_PORTS macro defines which ports and pins are reserved. + * You define these as a colon separated list of ports and pins reserved + * using macro SRM_PORT(port_num, pins), once for each reserved port. + * SRM_PORT macro arguments are port number (in the range 0 ... 14) and + * pins, which is a hex value with a bit set for each reserved pin on a port. + * + * 2 CYCFG_ASSIGNED_DIVIDERS macro defines which clock dividers are reserved. + * You define these as a colon separated list of dividers reserved + * using macro SRM_DIVIDER(type, reservations), once for each required + * divider type. + * SRM_DIVIDER arguments are divider type (one of cy_en_divider_types_t + * values) and reservations, which is a hex mask value with a bit set for + * each reserved divider of a given type. + * + * 3 CYCFG_ASSIGNED_SCBS macro defines which SCB blocks are reserved. + * You define these as a colon separated list of SCBs reserved using + * macro SRM_SCB(n), which argument is SCB number in a range 0 ... 7. + * + * 4 CYCFG_ASSIGNED_TCPWM macro defines which TCPWM blocks are reserved. + * You define these as a colon separated list of TCPWMs reserved using + * macro SRM_TCPWM(n), which argument is TCPWM number in a range 0 ... 31. + * + * Examples: + * #define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x30), SRM_PORT(5, 0x03) + * + * #define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + * + * #define CYCFG_ASSIGNED_SCBS SRM_SCB(2) + * + * #define CYCFG_ASSIGNED_TCPWMS + * + */ + +/* P2_0 ... P2_5 reserved for SDHC +* P6-4, P6-6 and P6_7 reserved for SWD, +*/ +#define CYCFG__ASSIGNED_PORTS SRM_PORT(2, 0x3f), SRM_PORT(6, 0xd0) + +/* No dividers reservation */ +#define CYCFG__ASSIGNED_DIVIDERS + +/* No SCB reservation */ +#define CYCFG__ASSIGNED_SCBS + +/* No TCPWM reservation */ +#define CYCFG__ASSIGNED_TCPWMS + +/* End of File */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.c new file mode 100644 index 00000000000..74c28aba2cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.c @@ -0,0 +1,34 @@ +/******************************************************************************* +* File Name: cycfg.c +* +* Description: +* Wrapper function to initialize all generated code. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg.h" + +void init_cycfg_all(void) +{ + init_cycfg_clocks(); + init_cycfg_peripherals(); + init_cycfg_pins(); + init_cycfg_platform(); + init_cycfg_routing(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.h new file mode 100644 index 00000000000..1709481df21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg.h @@ -0,0 +1,48 @@ +/******************************************************************************* +* File Name: cycfg.h +* +* Description: +* Simple wrapper header containing all generated files. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +#include "cycfg_clocks.h" +#include "cycfg_dmas.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_platform.h" +#include "cycfg_routing.h" + +void init_cycfg_all(void); + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000..5249f7d3a0d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_clocks.c +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_clocks.h" + + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_16_BIT, 0U, 999U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_16_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 0U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 7U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 2U, 108U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 3U, 1U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 4U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 4U, 255U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 4U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000..0da97983ced --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,55 @@ +/******************************************************************************* +* File Name: cycfg_clocks.h +* +* Description: +* Clock configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_16_0_HW CY_SYSCLK_DIV_16_BIT +#define peri_0_div_16_0_NUM 0U +#define peri_0_div_8_0_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_0_NUM 0U +#define peri_0_div_8_1_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_1_NUM 1U +#define peri_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_2_NUM 2U +#define peri_0_div_8_3_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_3_NUM 3U +#define peri_0_div_8_4_HW CY_SYSCLK_DIV_8_BIT +#define peri_0_div_8_4_NUM 4U + +void init_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_CLOCKS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.c new file mode 100644 index 00000000000..a8e9de3e069 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.c @@ -0,0 +1,179 @@ +/******************************************************************************* +* File Name: cycfg_dmas.c +* +* Description: +* DMA configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_dmas.h" + +const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_0_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_IM, + .interruptType = CY_DMA_1ELEMENT, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_1ELEMENT, + .dataSize = CY_DMA_BYTE, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_1D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 0, + .dstXincrement = 1, + .xCount = 6, + .srcYincrement = 0, + .dstYincrement = 0, + .yCount = 1, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_0_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_0_channelConfig = +{ + .descriptor = &cpuss_0_dw0_0_chan_0_Descriptor_0, + .preemptable = true, + .priority = 1, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_1_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_16CYC, + .interruptType = CY_DMA_1ELEMENT, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_1ELEMENT, + .dataSize = CY_DMA_BYTE, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_1D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 1, + .dstXincrement = 0, + .xCount = 5, + .srcYincrement = 0, + .dstYincrement = 0, + .yCount = 1, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_1_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_1_channelConfig = +{ + .descriptor = &cpuss_0_dw0_0_chan_1_Descriptor_0, + .preemptable = true, + .priority = 1, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_1_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_4CYC, + .interruptType = CY_DMA_DESCR, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_X_LOOP, + .dataSize = CY_DMA_HALFWORD, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_2D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 2, + .dstXincrement = 0, + .xCount = 10, + .srcYincrement = 10, + .dstYincrement = 0, + .yCount = 2, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_1_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_1_channelConfig = +{ + .descriptor = &cpuss_0_dw1_0_chan_1_Descriptor_0, + .preemptable = false, + .priority = 0, + .enable = false, + .bufferable = false, +}; +const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_3_Descriptor_0_config = +{ + .retrigger = CY_DMA_RETRIG_IM, + .interruptType = CY_DMA_DESCR, + .triggerOutType = CY_DMA_1ELEMENT, + .channelState = CY_DMA_CHANNEL_DISABLED, + .triggerInType = CY_DMA_X_LOOP, + .dataSize = CY_DMA_HALFWORD, + .srcTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .dstTransferSize = CY_DMA_TRANSFER_SIZE_DATA, + .descriptorType = CY_DMA_2D_TRANSFER, + .srcAddress = NULL, + .dstAddress = NULL, + .srcXincrement = 0, + .dstXincrement = 2, + .xCount = 10, + .srcYincrement = 0, + .dstYincrement = 10, + .yCount = 2, + .nextDescriptor = NULL, +}; +cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_3_Descriptor_0 = +{ + .ctl = 0UL, + .src = 0UL, + .dst = 0UL, + .xCtl = 0UL, + .yCtl = 0UL, + .nextPtr = 0UL, +}; +const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_3_channelConfig = +{ + .descriptor = &cpuss_0_dw1_0_chan_3_Descriptor_0, + .preemptable = false, + .priority = 0, + .enable = false, + .bufferable = false, +}; + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.h new file mode 100644 index 00000000000..c68d4b9ec81 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_dmas.h @@ -0,0 +1,67 @@ +/******************************************************************************* +* File Name: cycfg_dmas.h +* +* Description: +* DMA configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_DMAS_H) +#define CYCFG_DMAS_H + +#include "cycfg_notices.h" +#include "cy_dma.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define cpuss_0_dw0_0_chan_0_HW DW0 +#define cpuss_0_dw0_0_chan_0_CHANNEL 0 +#define cpuss_0_dw0_0_chan_0_IRQ cpuss_interrupts_dw0_0_IRQn +#define cpuss_0_dw0_0_chan_1_HW DW0 +#define cpuss_0_dw0_0_chan_1_CHANNEL 1 +#define cpuss_0_dw0_0_chan_1_IRQ cpuss_interrupts_dw0_1_IRQn +#define cpuss_0_dw1_0_chan_1_HW DW1 +#define cpuss_0_dw1_0_chan_1_CHANNEL 1 +#define cpuss_0_dw1_0_chan_1_IRQ cpuss_interrupts_dw1_1_IRQn +#define cpuss_0_dw1_0_chan_3_HW DW1 +#define cpuss_0_dw1_0_chan_3_CHANNEL 3 +#define cpuss_0_dw1_0_chan_3_IRQ cpuss_interrupts_dw1_3_IRQn + +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_0_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_0_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_0_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw0_0_chan_1_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw0_0_chan_1_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw0_0_chan_1_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_1_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_1_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_1_channelConfig; +extern const cy_stc_dma_descriptor_config_t cpuss_0_dw1_0_chan_3_Descriptor_0_config; +extern cy_stc_dma_descriptor_t cpuss_0_dw1_0_chan_3_Descriptor_0; +extern const cy_stc_dma_channel_config_t cpuss_0_dw1_0_chan_3_channelConfig; + + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_DMAS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_notices.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000..90f1013f8a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_notices.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* File Name: cycfg_notices.h +* +* Description: +* Contains warnings and errors that occurred while generating code for the +* design. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + + +#endif /* CYCFG_NOTICES_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000..eff312bed2c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,204 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.c +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_peripherals.h" + +#define PWM_INPUT_DISABLED 0x7U +#define USBUART_INTR_LVL_SEL (CY_USBFS_DEV_DRV_SET_SOF_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_BUS_RESET_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP0_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_LPM_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_ARB_EP_LVL(0x0U) | \ + CY_USBFS_DEV_DRV_SET_EP1_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP2_LVL(0x2U) | \ + CY_USBFS_DEV_DRV_SET_EP3_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP4_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP5_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP6_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP7_LVL(0x1U) | \ + CY_USBFS_DEV_DRV_SET_EP8_LVL(0x1U)) + +cy_stc_csd_context_t cy_csd_0_context = +{ + .lockKey = CY_CSD_NONE_KEY, +}; +const cy_stc_scb_uart_config_t BT_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = true, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 63, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 1UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_scb_ezi2c_config_t CSD_COMM_config = +{ + .numberOfAddresses = CY_SCB_EZI2C_ONE_ADDRESS, + .slaveAddress1 = 8U, + .slaveAddress2 = 0U, + .subAddressSize = CY_SCB_EZI2C_SUB_ADDR16_BITS, + .enableWakeFromSleep = false, +}; +const cy_stc_scb_uart_config_t KITPROG_UART_config = +{ + .uartMode = CY_SCB_UART_STANDARD, + .enableMutliProcessorMode = false, + .smartCardRetryOnNack = false, + .irdaInvertRx = false, + .irdaEnableLowPowerReceiver = false, + .oversample = 8, + .enableMsbFirst = false, + .dataWidth = 8UL, + .parity = CY_SCB_UART_PARITY_NONE, + .stopBits = CY_SCB_UART_STOP_BITS_1, + .enableInputFilter = false, + .breakWidth = 11UL, + .dropOnFrameError = false, + .dropOnParityError = false, + .receiverAddress = 0x0UL, + .receiverAddressMask = 0x0UL, + .acceptAddrInFifo = false, + .enableCts = false, + .ctsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rtsRxFifoLevel = 0UL, + .rtsPolarity = CY_SCB_UART_ACTIVE_LOW, + .rxFifoTriggerLevel = 63UL, + .rxFifoIntEnableMask = 0UL, + .txFifoTriggerLevel = 63UL, + .txFifoIntEnableMask = 0UL, +}; +const cy_stc_smif_config_t QSPI_config = +{ + .mode = (uint32_t)CY_SMIF_NORMAL, + .deselectDelay = QSPI_DESELECT_DELAY, + .rxClockSel = (uint32_t)CY_SMIF_SEL_INV_INTERNAL_CLK, + .blockEvent = (uint32_t)CY_SMIF_BUS_ERROR, +}; +const cy_stc_mcwdt_config_t MCWDT0_config = +{ + .c0Match = 32768U, + .c1Match = 32768U, + .c0Mode = CY_MCWDT_MODE_NONE, + .c1Mode = CY_MCWDT_MODE_NONE, + .c2ToggleBit = 16U, + .c2Mode = CY_MCWDT_MODE_NONE, + .c0ClearOnMatch = false, + .c1ClearOnMatch = false, + .c0c1Cascade = true, + .c1c2Cascade = false, +}; +const cy_stc_rtc_config_t RTC_config = +{ + .sec = 0U, + .min = 0U, + .hour = 12U, + .amPm = CY_RTC_AM, + .hrFormat = CY_RTC_24_HOURS, + .dayOfWeek = CY_RTC_SUNDAY, + .date = 1U, + .month = CY_RTC_JANUARY, + .year = 0U, +}; +const cy_stc_tcpwm_pwm_config_t PWM_config = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PWM_PRESCALER_DIVBY_1, + .pwmAlignment = CY_TCPWM_PWM_LEFT_ALIGN, + .deadTimeClocks = 0, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .period0 = 32000, + .period1 = 32768, + .enablePeriodSwap = false, + .compare0 = 16384, + .compare1 = 16384, + .enableCompareSwap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = CY_TCPWM_PWM_INVERT_DISABLE, + .invertPWMOutN = CY_TCPWM_PWM_INVERT_DISABLE, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .swapInputMode = PWM_INPUT_DISABLED & 0x3U, + .swapInput = CY_TCPWM_INPUT_0, + .reloadInputMode = PWM_INPUT_DISABLED & 0x3U, + .reloadInput = CY_TCPWM_INPUT_0, + .startInputMode = PWM_INPUT_DISABLED & 0x3U, + .startInput = CY_TCPWM_INPUT_0, + .killInputMode = PWM_INPUT_DISABLED & 0x3U, + .killInput = CY_TCPWM_INPUT_0, + .countInputMode = PWM_INPUT_DISABLED & 0x3U, + .countInput = CY_TCPWM_INPUT_1, +}; +const cy_stc_usbfs_dev_drv_config_t USBUART_config = +{ + .mode = CY_USBFS_DEV_DRV_EP_MANAGEMENT_CPU, + .epAccess = CY_USBFS_DEV_DRV_USE_8_BITS_DR, + .epBuffer = NULL, + .epBufferSize = 0U, + .dmaConfig[0] = NULL, + .dmaConfig[1] = NULL, + .dmaConfig[2] = NULL, + .dmaConfig[3] = NULL, + .dmaConfig[4] = NULL, + .dmaConfig[5] = NULL, + .dmaConfig[6] = NULL, + .dmaConfig[7] = NULL, + .enableLpm = false, + .intrLevelSel = USBUART_INTR_LVL_SEL, +}; + + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 4U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB2_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U); + + Cy_SysClk_PeriphAssignDivider(PCLK_SCB6_CLOCK, CY_SYSCLK_DIV_8_BIT, 2U); + + Cy_SysClk_PeriphAssignDivider(PCLK_TCPWM1_CLOCKS1, CY_SYSCLK_DIV_8_BIT, 3U); + + Cy_SysClk_PeriphAssignDivider(PCLK_UDB_CLOCKS0, CY_SYSCLK_DIV_8_BIT, 0u); + + Cy_SysClk_PeriphAssignDivider(PCLK_USB_CLOCK_DEV_BRS, CY_SYSCLK_DIV_16_BIT, 0U); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000..404b85be4ae --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,140 @@ +/******************************************************************************* +* File Name: cycfg_peripherals.h +* +* Description: +* Peripheral Hardware Block configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_csd.h" +#include "cy_scb_uart.h" +#include "cy_scb_ezi2c.h" +#include "cy_smif.h" +#include "cy_mcwdt.h" +#include "cy_rtc.h" +#include "cy_tcpwm_pwm.h" +#include "cycfg_routing.h" +#include "cy_usbfs_dev_drv.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 100000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 4u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT8 +#define Button0_Tx_PORT GPIO_PRT1 +#define Button1_Rx0_PORT GPIO_PRT8 +#define Button1_Tx_PORT GPIO_PRT1 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 1u +#define Button0_Tx_PIN 0u +#define Button1_Rx0_PIN 2u +#define Button1_Tx_PIN 0u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CapSense_HW CSD0 +#define CapSense_IRQ csd_interrupt_IRQn +#define BT_UART_HW SCB2 +#define BT_UART_IRQ scb_2_interrupt_IRQn +#define CSD_COMM_HW SCB3 +#define CSD_COMM_IRQ scb_3_interrupt_IRQn +#define KITPROG_UART_HW SCB6 +#define KITPROG_UART_IRQ scb_6_interrupt_IRQn +#define QSPI_HW SMIF0 +#define QSPI_IRQ smif_interrupt_IRQn +#define QSPI_MEMORY_MODE_ALIGMENT_ERROR (0UL) +#define QSPI_RX_DATA_FIFO_UNDERFLOW (0UL) +#define QSPI_TX_COMMAND_FIFO_OVERFLOW (0UL) +#define QSPI_TX_DATA_FIFO_OVERFLOW (0UL) +#define QSPI_RX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_TX_FIFO_TRIGEER_LEVEL (0UL) +#define QSPI_DATALINES0_1 (1UL) +#define QSPI_DATALINES2_3 (1UL) +#define QSPI_DATALINES4_5 (0UL) +#define QSPI_DATALINES6_7 (0UL) +#define QSPI_SS0 (1UL) +#define QSPI_SS1 (0UL) +#define QSPI_SS2 (0UL) +#define QSPI_SS3 (0UL) +#define QSPI_DESELECT_DELAY 7 +#define MCWDT0_HW MCWDT_STRUCT0 +#define RTC_10_MONTH_OFFSET (28U) +#define RTC_MONTH_OFFSET (24U) +#define RTC_10_DAY_OFFSET (20U) +#define RTC_DAY_OFFSET (16U) +#define RTC_1000_YEAR_OFFSET (12U) +#define RTC_100_YEAR_OFFSET (8U) +#define RTC_10_YEAR_OFFSET (4U) +#define RTC_YEAR_OFFSET (0U) +#define PWM_HW TCPWM1 +#define PWM_NUM 1UL +#define PWM_MASK (1UL << 1) +#define USBUART_ACTIVE_ENDPOINTS_MASK 7U +#define USBUART_ENDPOINTS_BUFFER_SIZE 140U +#define USBUART_ENDPOINTS_ACCESS_TYPE 0U +#define USBUART_USB_CORE 4U +#define USBUART_HW USBFS0 +#define USBUART_HI_IRQ usb_interrupt_hi_IRQn +#define USBUART_MED_IRQ usb_interrupt_med_IRQn +#define USBUART_LO_IRQ usb_interrupt_lo_IRQn + +extern cy_stc_csd_context_t cy_csd_0_context; +extern const cy_stc_scb_uart_config_t BT_UART_config; +extern const cy_stc_scb_ezi2c_config_t CSD_COMM_config; +extern const cy_stc_scb_uart_config_t KITPROG_UART_config; +extern const cy_stc_smif_config_t QSPI_config; +extern const cy_stc_mcwdt_config_t MCWDT0_config; +extern const cy_stc_rtc_config_t RTC_config; +extern const cy_stc_tcpwm_pwm_config_t PWM_config; +extern const cy_stc_usbfs_dev_drv_config_t USBUART_config; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000..2c568392657 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.c @@ -0,0 +1,1045 @@ +/******************************************************************************* +* File Name: cycfg_pins.c +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t WCO_IN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WCO_OUT_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_RED_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_RED_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SW6_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SW6_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_BLUE_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_BLUE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WL_UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = WL_UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t WL_UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = WL_UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SS0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SS0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_DATA0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = QSPI_DATA0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = QSPI_SPI_CLOCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_12_pin_6_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_12_pin_6_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_12_pin_7_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_12_pin_7_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED9_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED9_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = ioss_0_port_14_pin_1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED_GREEN_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED_GREEN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t LED8_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = LED8_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_DAT3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_DAT3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CMD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SDHC0_CMD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SDHC0_CLK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SDHC0_CLK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ENABLE_WIFI_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ENABLE_WIFI_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_TX_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_TX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_RTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_UART_RTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_UART_CTS_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = BT_UART_CTS_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_POWER_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF, + .hsiom = BT_POWER_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = BT_HOST_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config = +{ + .outVal = 0, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = BT_DEVICE_WAKE_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SCL_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SCL_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t EZI2C_SDA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_OD_DRIVESLOW, + .hsiom = EZI2C_SDA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDIO_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t SWDCK_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_7_pin_0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_7_pin_0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINA_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CINB_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CMOD_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_BTN1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t CSD_SLD4_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_0_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_9_pin_0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_1_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_9_pin_1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_2_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_9_pin_2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_3_config = +{ + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = ioss_0_port_9_pin_3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_FULL, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; + + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(WCO_IN_PORT, WCO_IN_PIN, &WCO_IN_config); + + Cy_GPIO_Pin_Init(WCO_OUT_PORT, WCO_OUT_PIN, &WCO_OUT_config); + + Cy_GPIO_Pin_Init(LED_RED_PORT, LED_RED_PIN, &LED_RED_config); + + Cy_GPIO_Pin_Init(SW6_PORT, SW6_PIN, &SW6_config); + + Cy_GPIO_Pin_Init(LED_BLUE_PORT, LED_BLUE_PIN, &LED_BLUE_config); + + Cy_GPIO_Pin_Init(WL_UART_RX_PORT, WL_UART_RX_PIN, &WL_UART_RX_config); + + Cy_GPIO_Pin_Init(WL_UART_TX_PORT, WL_UART_TX_PIN, &WL_UART_TX_config); + + Cy_GPIO_Pin_Init(QSPI_SS0_PORT, QSPI_SS0_PIN, &QSPI_SS0_config); + + Cy_GPIO_Pin_Init(QSPI_DATA3_PORT, QSPI_DATA3_PIN, &QSPI_DATA3_config); + + Cy_GPIO_Pin_Init(QSPI_DATA2_PORT, QSPI_DATA2_PIN, &QSPI_DATA2_config); + + Cy_GPIO_Pin_Init(QSPI_DATA1_PORT, QSPI_DATA1_PIN, &QSPI_DATA1_config); + + Cy_GPIO_Pin_Init(QSPI_DATA0_PORT, QSPI_DATA0_PIN, &QSPI_DATA0_config); + + Cy_GPIO_Pin_Init(QSPI_SPI_CLOCK_PORT, QSPI_SPI_CLOCK_PIN, &QSPI_SPI_CLOCK_config); + + Cy_GPIO_Pin_Init(ioss_0_port_12_pin_6_PORT, ioss_0_port_12_pin_6_PIN, &ioss_0_port_12_pin_6_config); + + Cy_GPIO_Pin_Init(ioss_0_port_12_pin_7_PORT, ioss_0_port_12_pin_7_PIN, &ioss_0_port_12_pin_7_config); + + Cy_GPIO_Pin_Init(UART_RX_PORT, UART_RX_PIN, &UART_RX_config); + + Cy_GPIO_Pin_Init(UART_TX_PORT, UART_TX_PIN, &UART_TX_config); + + Cy_GPIO_Pin_Init(LED9_PORT, LED9_PIN, &LED9_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_0_PORT, ioss_0_port_14_pin_0_PIN, &ioss_0_port_14_pin_0_config); + + Cy_GPIO_Pin_Init(ioss_0_port_14_pin_1_PORT, ioss_0_port_14_pin_1_PIN, &ioss_0_port_14_pin_1_config); + + + Cy_GPIO_Pin_Init(LED_GREEN_PORT, LED_GREEN_PIN, &LED_GREEN_config); + + Cy_GPIO_Pin_Init(LED8_PORT, LED8_PIN, &LED8_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT0_PORT, SDHC0_DAT0_PIN, &SDHC0_DAT0_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT1_PORT, SDHC0_DAT1_PIN, &SDHC0_DAT1_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT2_PORT, SDHC0_DAT2_PIN, &SDHC0_DAT2_config); + + Cy_GPIO_Pin_Init(SDHC0_DAT3_PORT, SDHC0_DAT3_PIN, &SDHC0_DAT3_config); + + Cy_GPIO_Pin_Init(SDHC0_CMD_PORT, SDHC0_CMD_PIN, &SDHC0_CMD_config); + + Cy_GPIO_Pin_Init(SDHC0_CLK_PORT, SDHC0_CLK_PIN, &SDHC0_CLK_config); + + Cy_GPIO_Pin_Init(ENABLE_WIFI_PORT, ENABLE_WIFI_PIN, &ENABLE_WIFI_config); + + Cy_GPIO_Pin_Init(BT_UART_RX_PORT, BT_UART_RX_PIN, &BT_UART_RX_config); + + Cy_GPIO_Pin_Init(BT_UART_TX_PORT, BT_UART_TX_PIN, &BT_UART_TX_config); + + Cy_GPIO_Pin_Init(BT_UART_RTS_PORT, BT_UART_RTS_PIN, &BT_UART_RTS_config); + + Cy_GPIO_Pin_Init(BT_UART_CTS_PORT, BT_UART_CTS_PIN, &BT_UART_CTS_config); + + Cy_GPIO_Pin_Init(BT_POWER_PORT, BT_POWER_PIN, &BT_POWER_config); + + Cy_GPIO_Pin_Init(BT_HOST_WAKE_PORT, BT_HOST_WAKE_PIN, &BT_HOST_WAKE_config); + + Cy_GPIO_Pin_Init(BT_DEVICE_WAKE_PORT, BT_DEVICE_WAKE_PIN, &BT_DEVICE_WAKE_config); + + Cy_GPIO_Pin_Init(EZI2C_SCL_PORT, EZI2C_SCL_PIN, &EZI2C_SCL_config); + + Cy_GPIO_Pin_Init(EZI2C_SDA_PORT, EZI2C_SDA_PIN, &EZI2C_SDA_config); + + Cy_GPIO_Pin_Init(SWO_PORT, SWO_PIN, &SWO_config); + + Cy_GPIO_Pin_Init(SWDIO_PORT, SWDIO_PIN, &SWDIO_config); + + Cy_GPIO_Pin_Init(SWDCK_PORT, SWDCK_PIN, &SWDCK_config); + + Cy_GPIO_Pin_Init(ioss_0_port_7_pin_0_PORT, ioss_0_port_7_pin_0_PIN, &ioss_0_port_7_pin_0_config); + + + + + + + + + + + + Cy_GPIO_Pin_Init(ioss_0_port_9_pin_0_PORT, ioss_0_port_9_pin_0_PIN, &ioss_0_port_9_pin_0_config); + + Cy_GPIO_Pin_Init(ioss_0_port_9_pin_1_PORT, ioss_0_port_9_pin_1_PIN, &ioss_0_port_9_pin_1_config); + + Cy_GPIO_Pin_Init(ioss_0_port_9_pin_2_PORT, ioss_0_port_9_pin_2_PIN, &ioss_0_port_9_pin_2_config); + + Cy_GPIO_Pin_Init(ioss_0_port_9_pin_3_PORT, ioss_0_port_9_pin_3_PIN, &ioss_0_port_9_pin_3_config); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000..f5e0b37d47a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_pins.h @@ -0,0 +1,663 @@ +/******************************************************************************* +* File Name: cycfg_pins.h +* +* Description: +* Pin configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cycfg_notices.h" +#include "cy_gpio.h" +#include "cycfg_routing.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define WCO_IN_PORT GPIO_PRT0 +#define WCO_IN_PIN 0U +#define WCO_IN_NUM 0U +#define WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM + #define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#define WCO_OUT_PORT GPIO_PRT0 +#define WCO_OUT_PIN 1U +#define WCO_OUT_NUM 1U +#define WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM + #define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_RED_PORT GPIO_PRT0 +#define LED_RED_PIN 3U +#define LED_RED_NUM 3U +#define LED_RED_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_RED_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_3_HSIOM + #define ioss_0_port_0_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_RED_HSIOM ioss_0_port_0_pin_3_HSIOM +#define LED_RED_IRQ ioss_interrupts_gpio_0_IRQn +#define SW6_PORT GPIO_PRT0 +#define SW6_PIN 4U +#define SW6_NUM 4U +#define SW6_DRIVEMODE CY_GPIO_DM_PULLUP +#define SW6_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_4_HSIOM + #define ioss_0_port_0_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SW6_HSIOM ioss_0_port_0_pin_4_HSIOM +#define SW6_IRQ ioss_interrupts_gpio_0_IRQn +#define LED_BLUE_PORT GPIO_PRT10 +#define LED_BLUE_PIN 6U +#define LED_BLUE_NUM 6U +#define LED_BLUE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_BLUE_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_10_pin_6_HSIOM + #define ioss_0_port_10_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_BLUE_HSIOM ioss_0_port_10_pin_6_HSIOM +#define LED_BLUE_IRQ ioss_interrupts_gpio_10_IRQn +#define WL_UART_RX_PORT GPIO_PRT11 +#define WL_UART_RX_PIN 0U +#define WL_UART_RX_NUM 0U +#define WL_UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define WL_UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_0_HSIOM + #define ioss_0_port_11_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define WL_UART_RX_HSIOM ioss_0_port_11_pin_0_HSIOM +#define WL_UART_RX_IRQ ioss_interrupts_gpio_11_IRQn +#define WL_UART_TX_PORT GPIO_PRT11 +#define WL_UART_TX_PIN 1U +#define WL_UART_TX_NUM 1U +#define WL_UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define WL_UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_1_HSIOM + #define ioss_0_port_11_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define WL_UART_TX_HSIOM ioss_0_port_11_pin_1_HSIOM +#define WL_UART_TX_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SS0_PORT GPIO_PRT11 +#define QSPI_SS0_PIN 2U +#define QSPI_SS0_NUM 2U +#define QSPI_SS0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SS0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_2_HSIOM + #define ioss_0_port_11_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SS0_HSIOM ioss_0_port_11_pin_2_HSIOM +#define QSPI_SS0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA3_PORT GPIO_PRT11 +#define QSPI_DATA3_PIN 3U +#define QSPI_DATA3_NUM 3U +#define QSPI_DATA3_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_3_HSIOM + #define ioss_0_port_11_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA3_HSIOM ioss_0_port_11_pin_3_HSIOM +#define QSPI_DATA3_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA2_PORT GPIO_PRT11 +#define QSPI_DATA2_PIN 4U +#define QSPI_DATA2_NUM 4U +#define QSPI_DATA2_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_4_HSIOM + #define ioss_0_port_11_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA2_HSIOM ioss_0_port_11_pin_4_HSIOM +#define QSPI_DATA2_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA1_PORT GPIO_PRT11 +#define QSPI_DATA1_PIN 5U +#define QSPI_DATA1_NUM 5U +#define QSPI_DATA1_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_5_HSIOM + #define ioss_0_port_11_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA1_HSIOM ioss_0_port_11_pin_5_HSIOM +#define QSPI_DATA1_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_DATA0_PORT GPIO_PRT11 +#define QSPI_DATA0_PIN 6U +#define QSPI_DATA0_NUM 6U +#define QSPI_DATA0_DRIVEMODE CY_GPIO_DM_STRONG +#define QSPI_DATA0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_6_HSIOM + #define ioss_0_port_11_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_DATA0_HSIOM ioss_0_port_11_pin_6_HSIOM +#define QSPI_DATA0_IRQ ioss_interrupts_gpio_11_IRQn +#define QSPI_SPI_CLOCK_PORT GPIO_PRT11 +#define QSPI_SPI_CLOCK_PIN 7U +#define QSPI_SPI_CLOCK_NUM 7U +#define QSPI_SPI_CLOCK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define QSPI_SPI_CLOCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_11_pin_7_HSIOM + #define ioss_0_port_11_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define QSPI_SPI_CLOCK_HSIOM ioss_0_port_11_pin_7_HSIOM +#define QSPI_SPI_CLOCK_IRQ ioss_interrupts_gpio_11_IRQn +#define ioss_0_port_12_pin_6_PORT GPIO_PRT12 +#define ioss_0_port_12_pin_6_PIN 6U +#define ioss_0_port_12_pin_6_NUM 6U +#define ioss_0_port_12_pin_6_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_12_pin_6_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_12_pin_6_HSIOM + #define ioss_0_port_12_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_12_pin_6_IRQ ioss_interrupts_gpio_12_IRQn +#define ioss_0_port_12_pin_7_PORT GPIO_PRT12 +#define ioss_0_port_12_pin_7_PIN 7U +#define ioss_0_port_12_pin_7_NUM 7U +#define ioss_0_port_12_pin_7_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_12_pin_7_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_12_pin_7_HSIOM + #define ioss_0_port_12_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_12_pin_7_IRQ ioss_interrupts_gpio_12_IRQn +#define UART_RX_PORT GPIO_PRT13 +#define UART_RX_PIN 0U +#define UART_RX_NUM 0U +#define UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_0_HSIOM + #define ioss_0_port_13_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_RX_HSIOM ioss_0_port_13_pin_0_HSIOM +#define UART_RX_IRQ ioss_interrupts_gpio_13_IRQn +#define UART_TX_PORT GPIO_PRT13 +#define UART_TX_PIN 1U +#define UART_TX_NUM 1U +#define UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_1_HSIOM + #define ioss_0_port_13_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define UART_TX_HSIOM ioss_0_port_13_pin_1_HSIOM +#define UART_TX_IRQ ioss_interrupts_gpio_13_IRQn +#define LED9_PORT GPIO_PRT13 +#define LED9_PIN 7U +#define LED9_NUM 7U +#define LED9_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED9_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_13_pin_7_HSIOM + #define ioss_0_port_13_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define LED9_HSIOM ioss_0_port_13_pin_7_HSIOM +#define LED9_IRQ ioss_interrupts_gpio_13_IRQn +#define ioss_0_port_14_pin_0_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_0_PIN 0U +#define ioss_0_port_14_pin_0_NUM 0U +#define ioss_0_port_14_pin_0_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_0_HSIOM + #define ioss_0_port_14_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_0_IRQ ioss_interrupts_gpio_14_IRQn +#define ioss_0_port_14_pin_1_PORT GPIO_PRT14 +#define ioss_0_port_14_pin_1_PIN 1U +#define ioss_0_port_14_pin_1_NUM 1U +#define ioss_0_port_14_pin_1_DRIVEMODE CY_GPIO_DM_ANALOG +#define ioss_0_port_14_pin_1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_14_pin_1_HSIOM + #define ioss_0_port_14_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_14_pin_1_IRQ ioss_interrupts_gpio_14_IRQn +#define CSD_TX_PORT GPIO_PRT1 +#define CSD_TX_PIN 0U +#define CSD_TX_NUM 0U +#define CSD_TX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_0_HSIOM + #define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_TX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CSD_TX_IRQ ioss_interrupts_gpio_1_IRQn +#define LED_GREEN_PORT GPIO_PRT1 +#define LED_GREEN_PIN 1U +#define LED_GREEN_NUM 1U +#define LED_GREEN_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED_GREEN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_1_HSIOM + #define ioss_0_port_1_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define LED_GREEN_HSIOM ioss_0_port_1_pin_1_HSIOM +#define LED_GREEN_IRQ ioss_interrupts_gpio_1_IRQn +#define LED8_PORT GPIO_PRT1 +#define LED8_PIN 5U +#define LED8_NUM 5U +#define LED8_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define LED8_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_1_pin_5_HSIOM + #define ioss_0_port_1_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define LED8_HSIOM ioss_0_port_1_pin_5_HSIOM +#define LED8_IRQ ioss_interrupts_gpio_1_IRQn +#define SDHC0_DAT0_PORT GPIO_PRT2 +#define SDHC0_DAT0_PIN 0U +#define SDHC0_DAT0_NUM 0U +#define SDHC0_DAT0_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_0_HSIOM + #define ioss_0_port_2_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT0_HSIOM ioss_0_port_2_pin_0_HSIOM +#define SDHC0_DAT0_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT1_PORT GPIO_PRT2 +#define SDHC0_DAT1_PIN 1U +#define SDHC0_DAT1_NUM 1U +#define SDHC0_DAT1_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_1_HSIOM + #define ioss_0_port_2_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT1_HSIOM ioss_0_port_2_pin_1_HSIOM +#define SDHC0_DAT1_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT2_PORT GPIO_PRT2 +#define SDHC0_DAT2_PIN 2U +#define SDHC0_DAT2_NUM 2U +#define SDHC0_DAT2_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_2_HSIOM + #define ioss_0_port_2_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT2_HSIOM ioss_0_port_2_pin_2_HSIOM +#define SDHC0_DAT2_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_DAT3_PORT GPIO_PRT2 +#define SDHC0_DAT3_PIN 3U +#define SDHC0_DAT3_NUM 3U +#define SDHC0_DAT3_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_DAT3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_3_HSIOM + #define ioss_0_port_2_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_DAT3_HSIOM ioss_0_port_2_pin_3_HSIOM +#define SDHC0_DAT3_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CMD_PORT GPIO_PRT2 +#define SDHC0_CMD_PIN 4U +#define SDHC0_CMD_NUM 4U +#define SDHC0_CMD_DRIVEMODE CY_GPIO_DM_STRONG +#define SDHC0_CMD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_4_HSIOM + #define ioss_0_port_2_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CMD_HSIOM ioss_0_port_2_pin_4_HSIOM +#define SDHC0_CMD_IRQ ioss_interrupts_gpio_2_IRQn +#define SDHC0_CLK_PORT GPIO_PRT2 +#define SDHC0_CLK_PIN 5U +#define SDHC0_CLK_NUM 5U +#define SDHC0_CLK_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SDHC0_CLK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_2_pin_5_HSIOM + #define ioss_0_port_2_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define SDHC0_CLK_HSIOM ioss_0_port_2_pin_5_HSIOM +#define SDHC0_CLK_IRQ ioss_interrupts_gpio_2_IRQn +#define ENABLE_WIFI_PORT GPIO_PRT2 +#define ENABLE_WIFI_PIN 6U +#define ENABLE_WIFI_NUM 6U +#define ENABLE_WIFI_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ENABLE_WIFI_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_2_pin_6_HSIOM + #define ioss_0_port_2_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define ENABLE_WIFI_HSIOM ioss_0_port_2_pin_6_HSIOM +#define ENABLE_WIFI_IRQ ioss_interrupts_gpio_2_IRQn +#define BT_UART_RX_PORT GPIO_PRT3 +#define BT_UART_RX_PIN 0U +#define BT_UART_RX_NUM 0U +#define BT_UART_RX_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_RX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_0_HSIOM + #define ioss_0_port_3_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RX_HSIOM ioss_0_port_3_pin_0_HSIOM +#define BT_UART_RX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_TX_PORT GPIO_PRT3 +#define BT_UART_TX_PIN 1U +#define BT_UART_TX_NUM 1U +#define BT_UART_TX_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_TX_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_1_HSIOM + #define ioss_0_port_3_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_TX_HSIOM ioss_0_port_3_pin_1_HSIOM +#define BT_UART_TX_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_RTS_PORT GPIO_PRT3 +#define BT_UART_RTS_PIN 2U +#define BT_UART_RTS_NUM 2U +#define BT_UART_RTS_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_UART_RTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_2_HSIOM + #define ioss_0_port_3_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_RTS_HSIOM ioss_0_port_3_pin_2_HSIOM +#define BT_UART_RTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_UART_CTS_PORT GPIO_PRT3 +#define BT_UART_CTS_PIN 3U +#define BT_UART_CTS_NUM 3U +#define BT_UART_CTS_DRIVEMODE CY_GPIO_DM_HIGHZ +#define BT_UART_CTS_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_3_HSIOM + #define ioss_0_port_3_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_UART_CTS_HSIOM ioss_0_port_3_pin_3_HSIOM +#define BT_UART_CTS_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_POWER_PORT GPIO_PRT3 +#define BT_POWER_PIN 4U +#define BT_POWER_NUM 4U +#define BT_POWER_DRIVEMODE CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF +#define BT_POWER_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_3_pin_4_HSIOM + #define ioss_0_port_3_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_POWER_HSIOM ioss_0_port_3_pin_4_HSIOM +#define BT_POWER_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_HOST_WAKE_PORT GPIO_PRT3 +#define BT_HOST_WAKE_PIN 5U +#define BT_HOST_WAKE_NUM 5U +#define BT_HOST_WAKE_DRIVEMODE CY_GPIO_DM_ANALOG +#define BT_HOST_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_3_pin_5_HSIOM + #define ioss_0_port_3_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_HOST_WAKE_HSIOM ioss_0_port_3_pin_5_HSIOM +#define BT_HOST_WAKE_IRQ ioss_interrupts_gpio_3_IRQn +#define BT_DEVICE_WAKE_PORT GPIO_PRT4 +#define BT_DEVICE_WAKE_PIN 0U +#define BT_DEVICE_WAKE_NUM 0U +#define BT_DEVICE_WAKE_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define BT_DEVICE_WAKE_INIT_DRIVESTATE 0 +#ifndef ioss_0_port_4_pin_0_HSIOM + #define ioss_0_port_4_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define BT_DEVICE_WAKE_HSIOM ioss_0_port_4_pin_0_HSIOM +#define BT_DEVICE_WAKE_IRQ ioss_interrupts_gpio_4_IRQn +#define EZI2C_SCL_PORT GPIO_PRT6 +#define EZI2C_SCL_PIN 0U +#define EZI2C_SCL_NUM 0U +#define EZI2C_SCL_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SCL_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_0_HSIOM + #define ioss_0_port_6_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SCL_HSIOM ioss_0_port_6_pin_0_HSIOM +#define EZI2C_SCL_IRQ ioss_interrupts_gpio_6_IRQn +#define EZI2C_SDA_PORT GPIO_PRT6 +#define EZI2C_SDA_PIN 1U +#define EZI2C_SDA_NUM 1U +#define EZI2C_SDA_DRIVEMODE CY_GPIO_DM_OD_DRIVESLOW +#define EZI2C_SDA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_1_HSIOM + #define ioss_0_port_6_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define EZI2C_SDA_HSIOM ioss_0_port_6_pin_1_HSIOM +#define EZI2C_SDA_IRQ ioss_interrupts_gpio_6_IRQn +#define SWO_PORT GPIO_PRT6 +#define SWO_PIN 4U +#define SWO_NUM 4U +#define SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM + #define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define SWO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDIO_PORT GPIO_PRT6 +#define SWDIO_PIN 6U +#define SWDIO_NUM 6U +#define SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM + #define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#define SWDCK_PORT GPIO_PRT6 +#define SWDCK_PIN 7U +#define SWDCK_NUM 7U +#define SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM + #define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#define ioss_0_port_7_pin_0_PORT GPIO_PRT7 +#define ioss_0_port_7_pin_0_PIN 0U +#define ioss_0_port_7_pin_0_NUM 0U +#define ioss_0_port_7_pin_0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_7_pin_0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_0_HSIOM + #define ioss_0_port_7_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_7_pin_0_IRQ ioss_interrupts_gpio_7_IRQn +#define CINA_PORT GPIO_PRT7 +#define CINA_PIN 1U +#define CINA_NUM 1U +#define CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM + #define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CINA_IRQ ioss_interrupts_gpio_7_IRQn +#define CINB_PORT GPIO_PRT7 +#define CINB_PIN 2U +#define CINB_NUM 2U +#define CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM + #define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CINB_IRQ ioss_interrupts_gpio_7_IRQn +#define CMOD_PORT GPIO_PRT7 +#define CMOD_PIN 7U +#define CMOD_NUM 7U +#define CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM + #define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#define CSD_BTN0_PORT GPIO_PRT8 +#define CSD_BTN0_PIN 1U +#define CSD_BTN0_NUM 1U +#define CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_1_HSIOM + #define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_BTN1_PORT GPIO_PRT8 +#define CSD_BTN1_PIN 2U +#define CSD_BTN1_NUM 2U +#define CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_BTN1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_2_HSIOM + #define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD0_PORT GPIO_PRT8 +#define CSD_SLD0_PIN 3U +#define CSD_SLD0_NUM 3U +#define CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_3_HSIOM + #define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD1_PORT GPIO_PRT8 +#define CSD_SLD1_PIN 4U +#define CSD_SLD1_NUM 4U +#define CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_4_HSIOM + #define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD2_PORT GPIO_PRT8 +#define CSD_SLD2_PIN 5U +#define CSD_SLD2_NUM 5U +#define CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_5_HSIOM + #define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD3_PORT GPIO_PRT8 +#define CSD_SLD3_PIN 6U +#define CSD_SLD3_NUM 6U +#define CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_6_HSIOM + #define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CSD_SLD4_PORT GPIO_PRT8 +#define CSD_SLD4_PIN 7U +#define CSD_SLD4_NUM 7U +#define CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CSD_SLD4_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_8_pin_7_HSIOM + #define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn +#define ioss_0_port_9_pin_0_PORT GPIO_PRT9 +#define ioss_0_port_9_pin_0_PIN 0U +#define ioss_0_port_9_pin_0_NUM 0U +#define ioss_0_port_9_pin_0_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_9_pin_0_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_9_pin_0_HSIOM + #define ioss_0_port_9_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_9_pin_0_IRQ ioss_interrupts_gpio_9_IRQn +#define ioss_0_port_9_pin_1_PORT GPIO_PRT9 +#define ioss_0_port_9_pin_1_PIN 1U +#define ioss_0_port_9_pin_1_NUM 1U +#define ioss_0_port_9_pin_1_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_9_pin_1_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_9_pin_1_HSIOM + #define ioss_0_port_9_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_9_pin_1_IRQ ioss_interrupts_gpio_9_IRQn +#define ioss_0_port_9_pin_2_PORT GPIO_PRT9 +#define ioss_0_port_9_pin_2_PIN 2U +#define ioss_0_port_9_pin_2_NUM 2U +#define ioss_0_port_9_pin_2_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_9_pin_2_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_9_pin_2_HSIOM + #define ioss_0_port_9_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_9_pin_2_IRQ ioss_interrupts_gpio_9_IRQn +#define ioss_0_port_9_pin_3_PORT GPIO_PRT9 +#define ioss_0_port_9_pin_3_PIN 3U +#define ioss_0_port_9_pin_3_NUM 3U +#define ioss_0_port_9_pin_3_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define ioss_0_port_9_pin_3_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_9_pin_3_HSIOM + #define ioss_0_port_9_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define ioss_0_port_9_pin_3_IRQ ioss_interrupts_gpio_9_IRQn + +extern const cy_stc_gpio_pin_config_t WCO_IN_config; +extern const cy_stc_gpio_pin_config_t WCO_OUT_config; +extern const cy_stc_gpio_pin_config_t LED_RED_config; +extern const cy_stc_gpio_pin_config_t SW6_config; +extern const cy_stc_gpio_pin_config_t LED_BLUE_config; +extern const cy_stc_gpio_pin_config_t WL_UART_RX_config; +extern const cy_stc_gpio_pin_config_t WL_UART_TX_config; +extern const cy_stc_gpio_pin_config_t QSPI_SS0_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA3_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA2_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA1_config; +extern const cy_stc_gpio_pin_config_t QSPI_DATA0_config; +extern const cy_stc_gpio_pin_config_t QSPI_SPI_CLOCK_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_12_pin_6_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_12_pin_7_config; +extern const cy_stc_gpio_pin_config_t UART_RX_config; +extern const cy_stc_gpio_pin_config_t UART_TX_config; +extern const cy_stc_gpio_pin_config_t LED9_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_0_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_14_pin_1_config; +extern const cy_stc_gpio_pin_config_t CSD_TX_config; +extern const cy_stc_gpio_pin_config_t LED_GREEN_config; +extern const cy_stc_gpio_pin_config_t LED8_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT0_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT1_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT2_config; +extern const cy_stc_gpio_pin_config_t SDHC0_DAT3_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CMD_config; +extern const cy_stc_gpio_pin_config_t SDHC0_CLK_config; +extern const cy_stc_gpio_pin_config_t ENABLE_WIFI_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_TX_config; +extern const cy_stc_gpio_pin_config_t BT_UART_RTS_config; +extern const cy_stc_gpio_pin_config_t BT_UART_CTS_config; +extern const cy_stc_gpio_pin_config_t BT_POWER_config; +extern const cy_stc_gpio_pin_config_t BT_HOST_WAKE_config; +extern const cy_stc_gpio_pin_config_t BT_DEVICE_WAKE_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SCL_config; +extern const cy_stc_gpio_pin_config_t EZI2C_SDA_config; +extern const cy_stc_gpio_pin_config_t SWO_config; +extern const cy_stc_gpio_pin_config_t SWDIO_config; +extern const cy_stc_gpio_pin_config_t SWDCK_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_7_pin_0_config; +extern const cy_stc_gpio_pin_config_t CINA_config; +extern const cy_stc_gpio_pin_config_t CINB_config; +extern const cy_stc_gpio_pin_config_t CMOD_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN0_config; +extern const cy_stc_gpio_pin_config_t CSD_BTN1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD0_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD1_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD2_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD3_config; +extern const cy_stc_gpio_pin_config_t CSD_SLD4_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_0_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_1_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_2_config; +extern const cy_stc_gpio_pin_config_t ioss_0_port_9_pin_3_config; + +void init_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PINS_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.c new file mode 100644 index 00000000000..877af05d9cd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.c @@ -0,0 +1,571 @@ +/******************************************************************************* +* File Name: cycfg_platform.c +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_platform.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_ECO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF1_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_CLKHF2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 50UL +#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_CLKHF3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ 48UL +#define CY_CFG_SYSCLK_CLKHF3_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_PLL0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_CLKTIMER_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBAC_SUPPLY CY_CFG_PWR_VBAC_SUPPLY_VDD +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_1_1V +#define CY_CFG_PWR_USING_ULP 0 + +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = +{ + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 4U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; +static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig = +{ + .feedbackDiv = 30, + .referenceDiv = 1, + .outputDiv = 5, + .lfMode = false, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO, +}; + +__WEAK void cycfg_ClockStartupError(uint32_t error) +{ + (void)error; /* Suppress the compiler warning */ + while(1); +} +__STATIC_INLINE void Cy_SysClk_ClkAltSysTickInit() +{ + Cy_SysTick_SetClockSource(CY_SYSTICK_CLOCK_SOURCE_CLK_LF); +} +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_EcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT12, 6, 0x00u, 0x00u, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT12, 7, 0x00u, 0x00u, HSIOM_SEL_GPIO); + if (CY_SYSCLK_BAD_PARAM == Cy_SysClk_EcoConfigure(24000000U, 18U, 50U, 100U)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_ECO_ERROR); + } + if (CY_SYSCLK_TIMEOUT == Cy_SysClk_EcoEnable(3000u)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_ECO_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_ClkHf1Init() +{ + Cy_SysClk_ClkHfSetSource(1U, CY_CFG_SYSCLK_CLKHF1_CLKPATH); + Cy_SysClk_ClkHfSetDivider(1U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(1U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf2Init() +{ + Cy_SysClk_ClkHfSetSource(2U, CY_CFG_SYSCLK_CLKHF2_CLKPATH); + Cy_SysClk_ClkHfSetDivider(2U, CY_SYSCLK_CLKHF_DIVIDE_BY_2); + Cy_SysClk_ClkHfEnable(2U); +} +__STATIC_INLINE void Cy_SysClk_ClkHf3Init() +{ + Cy_SysClk_ClkHfSetSource(3U, CY_CFG_SYSCLK_CLKHF3_CLKPATH); + Cy_SysClk_ClkHfSetDivider(3U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkHfEnable(3U); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_Pll0Init() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllManualConfigure(1U, &srss_0_clock_0_pll_0_pllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllEnable(1U, 10000u)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_ClkTimerInit() +{ + Cy_SysClk_ClkTimerDisable(); + Cy_SysClk_ClkTimerSetSource(CY_SYSCLK_CLKTIMER_IN_IMO); + Cy_SysClk_ClkTimerSetDivider(0U); + Cy_SysClk_ClkTimerEnable(); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void)Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} + + +void init_cycfg_platform(void) +{ + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); + #if (CY_CFG_PWR_VBAC_SUPPLY == CY_CFG_PWR_VBAC_SUPPLY_VDD) + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */) + { + Cy_SysLib_ResetBackupDomain(); + Cy_SysClk_IloDisable(); + Cy_SysClk_IloInit(); + } + #endif + #ifdef CY_CFG_PWR_ENABLED + /* Configure power mode */ + #if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_CFG_PWR_LDO_VOLTAGE); + #else + Cy_SysPm_BuckEnable(CY_CFG_PWR_BUCK_VOLTAGE); + #endif + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); + #if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); + #else + Cy_SysPm_PmicDisableOutput(); + #endif + #endif + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH1); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_FllDisable(); + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); + #ifdef CY_IP_MXBLESS + (void)Cy_BLE_EcoReset(); + #endif + + #ifdef CY_CFG_SYSCLK_PLL1_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH2); + #endif + + #ifdef CY_CFG_SYSCLK_PLL2_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH3); + #endif + + #ifdef CY_CFG_SYSCLK_PLL3_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH4); + #endif + + #ifdef CY_CFG_SYSCLK_PLL4_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH5); + #endif + + #ifdef CY_CFG_SYSCLK_PLL5_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH6); + #endif + + #ifdef CY_CFG_SYSCLK_PLL6_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH7); + #endif + + #ifdef CY_CFG_SYSCLK_PLL7_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH8); + #endif + + #ifdef CY_CFG_SYSCLK_PLL8_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH9); + #endif + + #ifdef CY_CFG_SYSCLK_PLL9_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH10); + #endif + + #ifdef CY_CFG_SYSCLK_PLL10_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH11); + #endif + + #ifdef CY_CFG_SYSCLK_PLL11_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH12); + #endif + + #ifdef CY_CFG_SYSCLK_PLL12_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH13); + #endif + + #ifdef CY_CFG_SYSCLK_PLL13_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH14); + #endif + + #ifdef CY_CFG_SYSCLK_PLL14_AVAILABLE + (void)Cy_SysClk_PllDisable(CY_SYSCLK_CLKHF_IN_CLKPATH15); + #endif + + /* Enable all source clocks */ + #ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); + #endif + + #ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + Cy_SysClk_AltHfInit(); + #endif + + #ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); + #endif + + #ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); + #endif + + /* Configure CPU clock dividers */ + #ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); + #endif + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); + #else + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure Path Clocks */ + #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); + #endif + + /* Configure and enable FLL */ + #ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); + #endif + + Cy_SysClk_ClkHf0Init(); + + #if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE == CY_SYSCLK_CLKPATH_IN_WCO) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH == CY_SYSCLK_CLKHF_IN_CLKPATH0)) + #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); + #endif + #endif + + /* Configure and enable PLLs */ + #ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); + #endif + #ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); + #endif + + /* Configure HF clocks */ + #ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); + #endif + #ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); + #endif + + /* Configure miscellaneous clocks */ + #ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); + #endif + + #ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); + #endif + + /* Configure default enabled clocks */ + #ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); + #else + Cy_SysClk_IloDisable(); + #endif + + #ifndef CY_CFG_SYSCLK_IMO_ENABLED + #error the IMO must be enabled for proper chip operation + #endif + + /* Set accurate flash wait states */ + #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); + #endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.h new file mode 100644 index 00000000000..76dfbef7bc4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_platform.h @@ -0,0 +1,53 @@ +/******************************************************************************* +* File Name: cycfg_platform.h +* +* Description: +* Platform configuration +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_PLATFORM_H) +#define CYCFG_PLATFORM_H + +#include "cycfg_notices.h" +#include "cy_sysclk.h" +#include "cy_systick.h" +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +void init_cycfg_platform(void); + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_PLATFORM_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000..ce54f0f125a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.c @@ -0,0 +1,51 @@ +/******************************************************************************* +* File Name: cycfg_routing.c +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "cycfg_routing.h" + +#include "cy_trigmux.h" + +#include "stdbool.h" + +#include "cy_device_headers.h" + +void init_cycfg_routing(void) +{ + Cy_TrigMux_Connect(TRIG0_IN_TR_GROUP14_OUTPUT0, TRIG0_OUT_CPUSS_DW0_TR_IN0, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG0_IN_TR_GROUP14_OUTPUT5, TRIG0_OUT_CPUSS_DW0_TR_IN1, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB0, TRIG14_OUT_TR_GROUP1_INPUT49, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB1, TRIG14_OUT_TR_GROUP0_INPUT48, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB3, TRIG14_OUT_TR_GROUP0_INPUT43, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG14_IN_UDB_TR_UDB7, TRIG14_OUT_TR_GROUP1_INPUT45, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG1_IN_TR_GROUP14_OUTPUT2, TRIG1_OUT_CPUSS_DW1_TR_IN3, false, TRIGGER_TYPE_LEVEL); + Cy_TrigMux_Connect(TRIG1_IN_TR_GROUP14_OUTPUT6, TRIG1_OUT_CPUSS_DW1_TR_IN1, false, TRIGGER_TYPE_LEVEL); + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000..8b3a102733d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/GeneratedSource/cycfg_routing.h @@ -0,0 +1,93 @@ +/******************************************************************************* +* File Name: cycfg_routing.h +* +* Description: +* Establishes all necessary connections between hardware elements. +* This file was automatically generated and should not be modified. +* +******************************************************************************** +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" +void init_cycfg_routing(void); +#define init_cycfg_connectivity() init_cycfg_routing() +#define ioss_0_port_11_pin_2_HSIOM P11_2_SMIF_SPI_SELECT0 +#define ioss_0_port_11_pin_3_HSIOM P11_3_SMIF_SPI_DATA3 +#define ioss_0_port_11_pin_4_HSIOM P11_4_SMIF_SPI_DATA2 +#define ioss_0_port_11_pin_5_HSIOM P11_5_SMIF_SPI_DATA1 +#define ioss_0_port_11_pin_6_HSIOM P11_6_SMIF_SPI_DATA0 +#define ioss_0_port_11_pin_7_HSIOM P11_7_SMIF_SPI_CLK +#define ioss_0_port_13_pin_0_HSIOM P13_0_SCB6_UART_RX +#define ioss_0_port_13_pin_1_HSIOM P13_1_SCB6_UART_TX +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_2_pin_0_HSIOM P2_0_DSI_DSI +#define ioss_0_port_2_pin_1_HSIOM P2_1_DSI_DSI +#define ioss_0_port_2_pin_2_HSIOM P2_2_DSI_DSI +#define ioss_0_port_2_pin_3_HSIOM P2_3_DSI_DSI +#define ioss_0_port_2_pin_4_HSIOM P2_4_DSI_DSI +#define ioss_0_port_2_pin_5_HSIOM P2_5_DSI_GPIO +#define ioss_0_port_3_pin_0_HSIOM P3_0_SCB2_UART_RX +#define ioss_0_port_3_pin_1_HSIOM P3_1_SCB2_UART_TX +#define ioss_0_port_3_pin_2_HSIOM P3_2_SCB2_UART_RTS +#define ioss_0_port_3_pin_3_HSIOM P3_3_SCB2_UART_CTS +#define ioss_0_port_6_pin_0_HSIOM P6_0_SCB3_I2C_SCL +#define ioss_0_port_6_pin_1_HSIOM P6_1_SCB3_I2C_SDA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_0_HSIOM P7_0_CPUSS_TRACE_CLOCK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXB +#define ioss_0_port_9_pin_0_HSIOM P9_0_CPUSS_TRACE_DATA3 +#define ioss_0_port_9_pin_1_HSIOM P9_1_CPUSS_TRACE_DATA2 +#define ioss_0_port_9_pin_2_HSIOM P9_2_CPUSS_TRACE_DATA1 +#define ioss_0_port_9_pin_3_HSIOM P9_3_CPUSS_TRACE_DATA0 + +#define cpuss_0_dw0_0_chan_0_tr_in_0_TRIGGER_OUT TRIG0_OUT_CPUSS_DW0_TR_IN0 +#define cpuss_0_dw0_0_chan_1_tr_in_0_TRIGGER_OUT TRIG0_OUT_CPUSS_DW0_TR_IN1 +#define cpuss_0_dw1_0_chan_1_tr_in_0_TRIGGER_OUT TRIG1_OUT_CPUSS_DW1_TR_IN1 +#define cpuss_0_dw1_0_chan_3_tr_in_0_TRIGGER_OUT TRIG1_OUT_CPUSS_DW1_TR_IN3 +#define udb_0_out_p_116_TRIGGER_IN_0 TRIG14_IN_UDB_TR_UDB0 +#define udb_0_out_p_116_TRIGGER_IN_1 TRIG1_IN_TR_GROUP14_OUTPUT6 +#define udb_0_out_p_117_TRIGGER_IN_0 TRIG0_IN_TR_GROUP14_OUTPUT5 +#define udb_0_out_p_117_TRIGGER_IN_1 TRIG14_IN_UDB_TR_UDB1 +#define udb_0_out_p_119_TRIGGER_IN_0 TRIG0_IN_TR_GROUP14_OUTPUT0 +#define udb_0_out_p_119_TRIGGER_IN_1 TRIG14_IN_UDB_TR_UDB3 +#define udb_0_out_p_123_TRIGGER_IN_0 TRIG14_IN_UDB_TR_UDB7 +#define udb_0_out_p_123_TRIGGER_IN_1 TRIG1_IN_TR_GROUP14_OUTPUT2 + +#if defined(__cplusplus) +} +#endif + + +#endif /* CYCFG_ROUTING_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralNames.h new file mode 100644 index 00000000000..cbceb3a24bb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralNames.h @@ -0,0 +1,113 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)SCB0_BASE, + UART_1 = (int)SCB1_BASE, + UART_2 = (int)SCB2_BASE, + UART_3 = (int)SCB3_BASE, + UART_4 = (int)SCB4_BASE, + UART_5 = (int)SCB5_BASE, + UART_6 = (int)SCB6_BASE, + UART_7 = (int)SCB7_BASE, +} UARTName; + + +typedef enum { + SPI_0 = (int)SCB0_BASE, + SPI_1 = (int)SCB1_BASE, + SPI_2 = (int)SCB2_BASE, + SPI_3 = (int)SCB3_BASE, + SPI_4 = (int)SCB4_BASE, + SPI_5 = (int)SCB5_BASE, + SPI_6 = (int)SCB6_BASE, + SPI_7 = (int)SCB7_BASE, + SPI_8 = (int)SCB8_BASE, +} SPIName; + +typedef enum { + I2C_0 = (int)SCB0_BASE, + I2C_1 = (int)SCB1_BASE, + I2C_2 = (int)SCB2_BASE, + I2C_3 = (int)SCB3_BASE, + I2C_4 = (int)SCB4_BASE, + I2C_5 = (int)SCB5_BASE, + I2C_6 = (int)SCB6_BASE, + I2C_7 = (int)SCB7_BASE, + I2C_8 = (int)SCB8_BASE, +} I2CName; + +typedef enum { + PWM_32b_0 = TCPWM0_BASE, + PWM_32b_1, + PWM_32b_2, + PWM_32b_3, + PWM_32b_4, + PWM_32b_5, + PWM_32b_6, + PWM_32b_7, + PWM_16b_0 = TCPWM1_BASE, + PWM_16b_1, + PWM_16b_2, + PWM_16b_3, + PWM_16b_4, + PWM_16b_5, + PWM_16b_6, + PWM_16b_7, + PWM_16b_8, + PWM_16b_9, + PWM_16b_10, + PWM_16b_11, + PWM_16b_12, + PWM_16b_13, + PWM_16b_14, + PWM_16b_15, + PWM_16b_16, + PWM_16b_17, + PWM_16b_18, + PWM_16b_19, + PWM_16b_20, + PWM_16b_21, + PWM_16b_22, + PWM_16b_23, +} PWMName; + +typedef enum { + ADC_0 = (int)SAR_BASE, +} ADCName; + +typedef enum { + DAC_0 = (int)CTDAC0_BASE, +} DACName; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralPins.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralPins.c new file mode 100644 index 00000000000..e57e5c96f69 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PeripheralPins.c @@ -0,0 +1,435 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PeripheralNames.h" +#include "PeripheralPins.h" +#include "pinmap.h" + +#if DEVICE_SERIAL +//*** SERIAL *** +const PinMap PinMap_UART_RX[] = { + {P0_2, UART_0, CY_PIN_IN_FUNCTION( P0_2_SCB0_UART_RX, PCLK_SCB0_CLOCK)}, + {P1_0, UART_7, CY_PIN_IN_FUNCTION( P1_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P2_0, UART_1, CY_PIN_IN_FUNCTION( P2_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P3_0, UART_2, CY_PIN_IN_FUNCTION( P3_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P4_0, UART_7, CY_PIN_IN_FUNCTION( P4_0_SCB7_UART_RX, PCLK_SCB7_CLOCK)}, + {P5_0, UART_5, CY_PIN_IN_FUNCTION( P5_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P6_0, UART_3, CY_PIN_IN_FUNCTION( P6_0_SCB3_UART_RX, PCLK_SCB3_CLOCK)}, + {P6_4, UART_6, CY_PIN_IN_FUNCTION( P6_4_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P7_0, UART_4, CY_PIN_IN_FUNCTION( P7_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P8_0, UART_4, CY_PIN_IN_FUNCTION( P8_0_SCB4_UART_RX, PCLK_SCB4_CLOCK)}, + {P9_0, UART_2, CY_PIN_IN_FUNCTION( P9_0_SCB2_UART_RX, PCLK_SCB2_CLOCK)}, + {P10_0, UART_1, CY_PIN_IN_FUNCTION( P10_0_SCB1_UART_RX, PCLK_SCB1_CLOCK)}, + {P11_0, UART_5, CY_PIN_IN_FUNCTION( P11_0_SCB5_UART_RX, PCLK_SCB5_CLOCK)}, + {P12_0, UART_6, CY_PIN_IN_FUNCTION( P12_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {P13_0, UART_6, CY_PIN_IN_FUNCTION( P13_0_SCB6_UART_RX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_TX[] = { + {P0_3, UART_0, CY_PIN_OUT_FUNCTION( P0_3_SCB0_UART_TX, PCLK_SCB0_CLOCK)}, + {P1_1, UART_7, CY_PIN_OUT_FUNCTION( P1_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P2_1, UART_1, CY_PIN_OUT_FUNCTION( P2_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P3_1, UART_2, CY_PIN_OUT_FUNCTION( P3_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P4_1, UART_7, CY_PIN_OUT_FUNCTION( P4_1_SCB7_UART_TX, PCLK_SCB7_CLOCK)}, + {P5_1, UART_5, CY_PIN_OUT_FUNCTION( P5_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P6_1, UART_3, CY_PIN_OUT_FUNCTION( P6_1_SCB3_UART_TX, PCLK_SCB3_CLOCK)}, + {P6_5, UART_6, CY_PIN_OUT_FUNCTION( P6_5_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P7_1, UART_4, CY_PIN_OUT_FUNCTION( P7_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P8_1, UART_4, CY_PIN_OUT_FUNCTION( P8_1_SCB4_UART_TX, PCLK_SCB4_CLOCK)}, + {P9_1, UART_2, CY_PIN_OUT_FUNCTION( P9_1_SCB2_UART_TX, PCLK_SCB2_CLOCK)}, + {P10_1, UART_1, CY_PIN_OUT_FUNCTION( P10_1_SCB1_UART_TX, PCLK_SCB1_CLOCK)}, + {P11_1, UART_5, CY_PIN_OUT_FUNCTION( P11_1_SCB5_UART_TX, PCLK_SCB5_CLOCK)}, + {P12_1, UART_6, CY_PIN_OUT_FUNCTION( P12_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {P13_1, UART_6, CY_PIN_OUT_FUNCTION( P13_1_SCB6_UART_TX, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_RTS[] = { + {P0_4, UART_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_UART_RTS, PCLK_SCB0_CLOCK)}, + {P1_2, UART_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_UART_RTS, PCLK_SCB7_CLOCK)}, + {P2_2, UART_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P3_2, UART_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P5_2, UART_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P6_2, UART_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_UART_RTS, PCLK_SCB3_CLOCK)}, + {P6_6, UART_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {P7_2, UART_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P8_2, UART_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_UART_RTS, PCLK_SCB4_CLOCK)}, + {P9_2, UART_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_UART_RTS, PCLK_SCB2_CLOCK)}, + {P10_2, UART_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_UART_RTS, PCLK_SCB1_CLOCK)}, + {P11_2, UART_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_UART_RTS, PCLK_SCB5_CLOCK)}, + {P12_2, UART_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_UART_RTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_UART_CTS[] = { + {P0_5, UART_0, CY_PIN_IN_FUNCTION( P0_5_SCB0_UART_CTS, PCLK_SCB0_CLOCK)}, + {P1_3, UART_7, CY_PIN_IN_FUNCTION( P1_3_SCB7_UART_CTS, PCLK_SCB7_CLOCK)}, + {P2_3, UART_1, CY_PIN_IN_FUNCTION( P2_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P3_3, UART_2, CY_PIN_IN_FUNCTION( P3_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P5_3, UART_5, CY_PIN_IN_FUNCTION( P5_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P6_3, UART_3, CY_PIN_IN_FUNCTION( P6_3_SCB3_UART_CTS, PCLK_SCB3_CLOCK)}, + {P6_7, UART_6, CY_PIN_IN_FUNCTION( P6_7_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {P7_3, UART_4, CY_PIN_IN_FUNCTION( P7_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P8_3, UART_4, CY_PIN_IN_FUNCTION( P8_3_SCB4_UART_CTS, PCLK_SCB4_CLOCK)}, + {P9_3, UART_2, CY_PIN_IN_FUNCTION( P9_3_SCB2_UART_CTS, PCLK_SCB2_CLOCK)}, + {P10_3, UART_1, CY_PIN_IN_FUNCTION( P10_3_SCB1_UART_CTS, PCLK_SCB1_CLOCK)}, + {P11_3, UART_5, CY_PIN_IN_FUNCTION( P11_3_SCB5_UART_CTS, PCLK_SCB5_CLOCK)}, + {P12_3, UART_6, CY_PIN_IN_FUNCTION( P12_3_SCB6_UART_CTS, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SERIAL + + +#if DEVICE_I2C +//*** I2C *** +const PinMap PinMap_I2C_SCL[] = { + {P0_2, I2C_0, CY_PIN_OD_FUNCTION( P0_2_SCB0_I2C_SCL, PCLK_SCB0_CLOCK)}, + {P1_0, I2C_7, CY_PIN_OD_FUNCTION( P1_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P2_0, I2C_1, CY_PIN_OD_FUNCTION( P2_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P3_0, I2C_2, CY_PIN_OD_FUNCTION( P3_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P4_0, I2C_7, CY_PIN_OD_FUNCTION( P4_0_SCB7_I2C_SCL, PCLK_SCB7_CLOCK)}, + {P5_0, I2C_5, CY_PIN_OD_FUNCTION( P5_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P6_0, I2C_3, CY_PIN_OD_FUNCTION( P6_0_SCB3_I2C_SCL, PCLK_SCB3_CLOCK)}, + {P6_4, I2C_6, CY_PIN_OD_FUNCTION( P6_4_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P7_0, I2C_4, CY_PIN_OD_FUNCTION( P7_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P8_0, I2C_4, CY_PIN_OD_FUNCTION( P8_0_SCB4_I2C_SCL, PCLK_SCB4_CLOCK)}, + {P9_0, I2C_2, CY_PIN_OD_FUNCTION( P9_0_SCB2_I2C_SCL, PCLK_SCB2_CLOCK)}, + {P10_0, I2C_1, CY_PIN_OD_FUNCTION( P10_0_SCB1_I2C_SCL, PCLK_SCB1_CLOCK)}, + {P11_0, I2C_5, CY_PIN_OD_FUNCTION( P11_0_SCB5_I2C_SCL, PCLK_SCB5_CLOCK)}, + {P12_0, I2C_6, CY_PIN_OD_FUNCTION( P12_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {P13_0, I2C_6, CY_PIN_OD_FUNCTION( P13_0_SCB6_I2C_SCL, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_I2C_SDA[] = { + {P0_3, I2C_0, CY_PIN_OD_FUNCTION( P0_3_SCB0_I2C_SDA, PCLK_SCB0_CLOCK)}, + {P1_1, I2C_7, CY_PIN_OD_FUNCTION( P1_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P2_1, I2C_1, CY_PIN_OD_FUNCTION( P2_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P3_1, I2C_2, CY_PIN_OD_FUNCTION( P3_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P4_1, I2C_7, CY_PIN_OD_FUNCTION( P4_1_SCB7_I2C_SDA, PCLK_SCB7_CLOCK)}, + {P5_1, I2C_5, CY_PIN_OD_FUNCTION( P5_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P6_1, I2C_3, CY_PIN_OD_FUNCTION( P6_1_SCB3_I2C_SDA, PCLK_SCB3_CLOCK)}, + {P6_5, I2C_6, CY_PIN_OD_FUNCTION( P6_5_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P7_1, I2C_4, CY_PIN_OD_FUNCTION( P7_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P8_1, I2C_4, CY_PIN_OD_FUNCTION( P8_1_SCB4_I2C_SDA, PCLK_SCB4_CLOCK)}, + {P9_1, I2C_2, CY_PIN_OD_FUNCTION( P9_1_SCB2_I2C_SDA, PCLK_SCB2_CLOCK)}, + {P10_1, I2C_1, CY_PIN_OD_FUNCTION( P10_1_SCB1_I2C_SDA, PCLK_SCB1_CLOCK)}, + {P11_1, I2C_5, CY_PIN_OD_FUNCTION( P11_1_SCB5_I2C_SDA, PCLK_SCB5_CLOCK)}, + {P12_1, I2C_6, CY_PIN_OD_FUNCTION( P12_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {P13_1, I2C_6, CY_PIN_OD_FUNCTION( P13_1_SCB6_I2C_SDA, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_I2C + +#if DEVICE_SPI +//*** SPI *** +const PinMap PinMap_SPI_MOSI[] = { + {P0_2, SPI_0, CY_PIN_OUT_FUNCTION( P0_2_SCB0_SPI_MOSI, PCLK_SCB0_CLOCK)}, + {P1_0, SPI_7, CY_PIN_OUT_FUNCTION( P1_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P2_0, SPI_1, CY_PIN_OUT_FUNCTION( P2_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P3_0, SPI_2, CY_PIN_OUT_FUNCTION( P3_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P4_0, SPI_7, CY_PIN_OUT_FUNCTION( P4_0_SCB7_SPI_MOSI, PCLK_SCB7_CLOCK)}, + {P5_0, SPI_5, CY_PIN_OUT_FUNCTION( P5_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P6_0, SPI_3, CY_PIN_OUT_FUNCTION( P6_0_SCB3_SPI_MOSI, PCLK_SCB3_CLOCK)}, + {P6_4, SPI_6, CY_PIN_OUT_FUNCTION( P6_4_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P7_0, SPI_4, CY_PIN_OUT_FUNCTION( P7_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P8_0, SPI_4, CY_PIN_OUT_FUNCTION( P8_0_SCB4_SPI_MOSI, PCLK_SCB4_CLOCK)}, + {P9_0, SPI_2, CY_PIN_OUT_FUNCTION( P9_0_SCB2_SPI_MOSI, PCLK_SCB2_CLOCK)}, + {P10_0, SPI_1, CY_PIN_OUT_FUNCTION( P10_0_SCB1_SPI_MOSI, PCLK_SCB1_CLOCK)}, + {P11_0, SPI_5, CY_PIN_OUT_FUNCTION( P11_0_SCB5_SPI_MOSI, PCLK_SCB5_CLOCK)}, + {P12_0, SPI_6, CY_PIN_OUT_FUNCTION( P12_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {P13_0, SPI_6, CY_PIN_OUT_FUNCTION( P13_0_SCB6_SPI_MOSI, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_MISO[] = { + {P0_3, SPI_0, CY_PIN_IN_FUNCTION( P0_3_SCB0_SPI_MISO, PCLK_SCB0_CLOCK)}, + {P1_1, SPI_7, CY_PIN_IN_FUNCTION( P1_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P2_1, SPI_1, CY_PIN_IN_FUNCTION( P2_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P3_1, SPI_2, CY_PIN_IN_FUNCTION( P3_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P4_1, SPI_7, CY_PIN_IN_FUNCTION( P4_1_SCB7_SPI_MISO, PCLK_SCB7_CLOCK)}, + {P5_1, SPI_5, CY_PIN_IN_FUNCTION( P5_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P6_1, SPI_3, CY_PIN_IN_FUNCTION( P6_1_SCB3_SPI_MISO, PCLK_SCB3_CLOCK)}, + {P6_5, SPI_6, CY_PIN_IN_FUNCTION( P6_5_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P7_1, SPI_4, CY_PIN_IN_FUNCTION( P7_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P8_1, SPI_4, CY_PIN_IN_FUNCTION( P8_1_SCB4_SPI_MISO, PCLK_SCB4_CLOCK)}, + {P9_1, SPI_2, CY_PIN_IN_FUNCTION( P9_1_SCB2_SPI_MISO, PCLK_SCB2_CLOCK)}, + {P10_1, SPI_1, CY_PIN_IN_FUNCTION( P10_1_SCB1_SPI_MISO, PCLK_SCB1_CLOCK)}, + {P11_1, SPI_5, CY_PIN_IN_FUNCTION( P11_1_SCB5_SPI_MISO, PCLK_SCB5_CLOCK)}, + {P12_1, SPI_6, CY_PIN_IN_FUNCTION( P12_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {P13_1, SPI_6, CY_PIN_IN_FUNCTION( P13_1_SCB6_SPI_MISO, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SCLK[] = { + {P0_4, SPI_0, CY_PIN_OUT_FUNCTION( P0_4_SCB0_SPI_CLK, PCLK_SCB0_CLOCK)}, + {P1_2, SPI_7, CY_PIN_OUT_FUNCTION( P1_2_SCB7_SPI_CLK, PCLK_SCB7_CLOCK)}, + {P2_2, SPI_1, CY_PIN_OUT_FUNCTION( P2_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P3_2, SPI_2, CY_PIN_OUT_FUNCTION( P3_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P5_2, SPI_5, CY_PIN_OUT_FUNCTION( P5_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P6_2, SPI_3, CY_PIN_OUT_FUNCTION( P6_2_SCB3_SPI_CLK, PCLK_SCB3_CLOCK)}, + {P6_6, SPI_6, CY_PIN_OUT_FUNCTION( P6_6_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {P7_2, SPI_4, CY_PIN_OUT_FUNCTION( P7_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P8_2, SPI_4, CY_PIN_OUT_FUNCTION( P8_2_SCB4_SPI_CLK, PCLK_SCB4_CLOCK)}, + {P9_2, SPI_2, CY_PIN_OUT_FUNCTION( P9_2_SCB2_SPI_CLK, PCLK_SCB2_CLOCK)}, + {P10_2, SPI_1, CY_PIN_OUT_FUNCTION( P10_2_SCB1_SPI_CLK, PCLK_SCB1_CLOCK)}, + {P11_2, SPI_5, CY_PIN_OUT_FUNCTION( P11_2_SCB5_SPI_CLK, PCLK_SCB5_CLOCK)}, + {P12_2, SPI_6, CY_PIN_OUT_FUNCTION( P12_2_SCB6_SPI_CLK, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +const PinMap PinMap_SPI_SSEL[] = { + {P0_5, SPI_0, CY_PIN_OUT_FUNCTION( P0_5_SCB0_SPI_SELECT0, PCLK_SCB0_CLOCK)}, + {P1_3, SPI_7, CY_PIN_OUT_FUNCTION( P1_3_SCB7_SPI_SELECT0, PCLK_SCB7_CLOCK)}, + {P2_3, SPI_1, CY_PIN_OUT_FUNCTION( P2_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P3_3, SPI_2, CY_PIN_OUT_FUNCTION( P3_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P5_3, SPI_5, CY_PIN_OUT_FUNCTION( P5_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P6_3, SPI_3, CY_PIN_OUT_FUNCTION( P6_3_SCB3_SPI_SELECT0, PCLK_SCB3_CLOCK)}, + {P6_7, SPI_6, CY_PIN_OUT_FUNCTION( P6_7_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {P7_3, SPI_4, CY_PIN_OUT_FUNCTION( P7_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P8_3, SPI_4, CY_PIN_OUT_FUNCTION( P8_3_SCB4_SPI_SELECT0, PCLK_SCB4_CLOCK)}, + {P9_3, SPI_2, CY_PIN_OUT_FUNCTION( P9_3_SCB2_SPI_SELECT0, PCLK_SCB2_CLOCK)}, + {P10_3, SPI_1, CY_PIN_OUT_FUNCTION( P10_3_SCB1_SPI_SELECT0, PCLK_SCB1_CLOCK)}, + {P11_3, SPI_5, CY_PIN_OUT_FUNCTION( P11_3_SCB5_SPI_SELECT0, PCLK_SCB5_CLOCK)}, + {P12_3, SPI_6, CY_PIN_OUT_FUNCTION( P12_3_SCB6_SPI_SELECT0, PCLK_SCB6_CLOCK)}, + {NC, NC, 0} +}; +#endif // DEVICE_SPI + +#if DEVICE_PWMOUT +//*** PWM *** +const PinMap PinMap_PWM_OUT[] = { + // 16-bit PWM outputs + {P0_0, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P0_2, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P0_4, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P1_0, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P1_2, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_2_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P1_4, PWM_16b_13, CY_PIN_OUT_FUNCTION(P1_4_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P2_0, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_0_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P2_2, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_2_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P2_4, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_4_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P2_6, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_6_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P3_0, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_0_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P3_2, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_2_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P3_4, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_4_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P4_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P5_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P5_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P5_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P5_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P6_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P6_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P6_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P6_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + {P7_0, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_0_TCPWM1_LINE12, PCLK_TCPWM1_CLOCKS12)}, + {P7_2, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_2_TCPWM1_LINE13, PCLK_TCPWM1_CLOCKS13)}, + {P7_4, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_4_TCPWM1_LINE14, PCLK_TCPWM1_CLOCKS14)}, + {P7_6, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_6_TCPWM1_LINE15, PCLK_TCPWM1_CLOCKS15)}, + {P8_0, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_0_TCPWM1_LINE16, PCLK_TCPWM1_CLOCKS16)}, + {P8_2, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_2_TCPWM1_LINE17, PCLK_TCPWM1_CLOCKS17)}, + {P8_4, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_4_TCPWM1_LINE18, PCLK_TCPWM1_CLOCKS18)}, + {P8_6, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_6_TCPWM1_LINE19, PCLK_TCPWM1_CLOCKS19)}, + {P9_0, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_0_TCPWM1_LINE20, PCLK_TCPWM1_CLOCKS20)}, + {P9_2, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_2_TCPWM1_LINE21, PCLK_TCPWM1_CLOCKS21)}, + {P9_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P9_6, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_6_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P10_0, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_0_TCPWM1_LINE22, PCLK_TCPWM1_CLOCKS22)}, + {P10_2, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_2_TCPWM1_LINE23, PCLK_TCPWM1_CLOCKS23)}, + {P10_4, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM1_LINE0, PCLK_TCPWM1_CLOCKS0)}, + {P10_6, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_6_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_0, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM1_LINE1, PCLK_TCPWM1_CLOCKS1)}, + {P11_2, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM1_LINE2, PCLK_TCPWM1_CLOCKS2)}, + {P11_4, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM1_LINE3, PCLK_TCPWM1_CLOCKS3)}, + {P12_0, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM1_LINE4, PCLK_TCPWM1_CLOCKS4)}, + {P12_2, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM1_LINE5, PCLK_TCPWM1_CLOCKS5)}, + {P12_4, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM1_LINE6, PCLK_TCPWM1_CLOCKS6)}, + {P12_6, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM1_LINE7, PCLK_TCPWM1_CLOCKS7)}, + {P13_0, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_0_TCPWM1_LINE8, PCLK_TCPWM1_CLOCKS8)}, + {P13_2, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_2_TCPWM1_LINE9, PCLK_TCPWM1_CLOCKS9)}, + {P13_4, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_4_TCPWM1_LINE10, PCLK_TCPWM1_CLOCKS10)}, + {P13_6, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_6_TCPWM1_LINE11, PCLK_TCPWM1_CLOCKS11)}, + // 16-bit PWM inverted outputs + {P0_1, PWM_16b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P0_3, PWM_16b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P0_5, PWM_16b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P1_1, PWM_16b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P1_3, PWM_16b_12, CY_PIN_OUT_FUNCTION(P1_3_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P1_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P1_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P2_1, PWM_16b_15, CY_PIN_OUT_FUNCTION(P2_1_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P2_3, PWM_16b_16, CY_PIN_OUT_FUNCTION(P2_3_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P2_5, PWM_16b_17, CY_PIN_OUT_FUNCTION(P2_5_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P2_7, PWM_16b_18, CY_PIN_OUT_FUNCTION(P2_7_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P3_1, PWM_16b_19, CY_PIN_OUT_FUNCTION(P3_1_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P3_3, PWM_16b_20, CY_PIN_OUT_FUNCTION(P3_3_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P3_5, PWM_16b_21, CY_PIN_OUT_FUNCTION(P3_5_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P4_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P4_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P5_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P5_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P5_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P5_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P6_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P6_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P6_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P6_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P6_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P6_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P6_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P6_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + {P7_1, PWM_16b_12, CY_PIN_OUT_FUNCTION(P7_1_TCPWM1_LINE_COMPL12, PCLK_TCPWM1_CLOCKS12)}, + {P7_3, PWM_16b_13, CY_PIN_OUT_FUNCTION(P7_3_TCPWM1_LINE_COMPL13, PCLK_TCPWM1_CLOCKS13)}, + {P7_5, PWM_16b_14, CY_PIN_OUT_FUNCTION(P7_5_TCPWM1_LINE_COMPL14, PCLK_TCPWM1_CLOCKS14)}, + {P7_7, PWM_16b_15, CY_PIN_OUT_FUNCTION(P7_7_TCPWM1_LINE_COMPL15, PCLK_TCPWM1_CLOCKS15)}, + {P8_1, PWM_16b_16, CY_PIN_OUT_FUNCTION(P8_1_TCPWM1_LINE_COMPL16, PCLK_TCPWM1_CLOCKS16)}, + {P8_3, PWM_16b_17, CY_PIN_OUT_FUNCTION(P8_3_TCPWM1_LINE_COMPL17, PCLK_TCPWM1_CLOCKS17)}, + {P8_5, PWM_16b_18, CY_PIN_OUT_FUNCTION(P8_5_TCPWM1_LINE_COMPL18, PCLK_TCPWM1_CLOCKS18)}, + {P8_7, PWM_16b_19, CY_PIN_OUT_FUNCTION(P8_7_TCPWM1_LINE_COMPL19, PCLK_TCPWM1_CLOCKS19)}, + {P9_1, PWM_16b_20, CY_PIN_OUT_FUNCTION(P9_1_TCPWM1_LINE_COMPL20, PCLK_TCPWM1_CLOCKS20)}, + {P9_3, PWM_16b_21, CY_PIN_OUT_FUNCTION(P9_3_TCPWM1_LINE_COMPL21, PCLK_TCPWM1_CLOCKS21)}, + {P9_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P9_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P9_7, PWM_16b_1, CY_PIN_OUT_FUNCTION(P9_7_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P10_1, PWM_16b_22, CY_PIN_OUT_FUNCTION(P10_1_TCPWM1_LINE_COMPL22, PCLK_TCPWM1_CLOCKS22)}, + {P10_3, PWM_16b_23, CY_PIN_OUT_FUNCTION(P10_3_TCPWM1_LINE_COMPL23, PCLK_TCPWM1_CLOCKS23)}, + {P10_5, PWM_16b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM1_LINE_COMPL0, PCLK_TCPWM1_CLOCKS0)}, + {P10_7, PWM_16b_2, CY_PIN_OUT_FUNCTION(P10_7_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_1, PWM_16b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM1_LINE_COMPL1, PCLK_TCPWM1_CLOCKS1)}, + {P11_3, PWM_16b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM1_LINE_COMPL2, PCLK_TCPWM1_CLOCKS2)}, + {P11_5, PWM_16b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM1_LINE_COMPL3, PCLK_TCPWM1_CLOCKS3)}, + {P12_1, PWM_16b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM1_LINE_COMPL4, PCLK_TCPWM1_CLOCKS4)}, + {P12_3, PWM_16b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM1_LINE_COMPL5, PCLK_TCPWM1_CLOCKS5)}, + {P12_5, PWM_16b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM1_LINE_COMPL6, PCLK_TCPWM1_CLOCKS6)}, + {P12_7, PWM_16b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM1_LINE_COMPL7, PCLK_TCPWM1_CLOCKS7)}, + {P13_1, PWM_16b_8, CY_PIN_OUT_FUNCTION(P13_1_TCPWM1_LINE_COMPL8, PCLK_TCPWM1_CLOCKS8)}, + {P13_3, PWM_16b_9, CY_PIN_OUT_FUNCTION(P13_3_TCPWM1_LINE_COMPL9, PCLK_TCPWM1_CLOCKS9)}, + {P13_5, PWM_16b_10, CY_PIN_OUT_FUNCTION(P13_5_TCPWM1_LINE_COMPL10, PCLK_TCPWM1_CLOCKS10)}, + {P13_7, PWM_16b_11, CY_PIN_OUT_FUNCTION(P13_7_TCPWM1_LINE_COMPL11, PCLK_TCPWM1_CLOCKS11)}, + // 32-bit PWM outputs + {PWM32(P0_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_0), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_0_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_2), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_2_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_4), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_4_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_0), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_0_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_2), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_2_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_4), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_4_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_0), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_0_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_4), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_4_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_6), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_6_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_0), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_0_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_2), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_2_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_4), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_4_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_6), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_6_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_0), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_0_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_2), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_2_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_4), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_4_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_0), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_0_TCPWM0_LINE4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_2), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_2_TCPWM0_LINE5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_4), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_4_TCPWM0_LINE6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_6), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_6_TCPWM0_LINE7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_0), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_0_TCPWM0_LINE0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_2), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_2_TCPWM0_LINE1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_4), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_4_TCPWM0_LINE2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_6), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_6_TCPWM0_LINE3, PCLK_TCPWM0_CLOCKS3)}, + // 32-bit PWM inverted outputs + {PWM32(P0_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P0_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P0_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P0_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P0_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P0_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P1_1), PWM_32b_3, CY_PIN_OUT_FUNCTION(P1_1_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P1_3), PWM_32b_4, CY_PIN_OUT_FUNCTION(P1_3_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P1_5), PWM_32b_5, CY_PIN_OUT_FUNCTION(P1_5_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P2_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P2_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P2_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P2_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P2_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P2_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P2_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P2_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P3_1), PWM_32b_2, CY_PIN_OUT_FUNCTION(P3_1_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P3_3), PWM_32b_3, CY_PIN_OUT_FUNCTION(P3_3_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P3_5), PWM_32b_4, CY_PIN_OUT_FUNCTION(P3_5_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P4_1), PWM_32b_5, CY_PIN_OUT_FUNCTION(P4_1_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P5_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P5_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P5_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P5_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P5_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P5_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P5_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P6_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P6_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P6_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P6_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P6_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P6_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P6_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P6_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P7_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P7_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P7_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P7_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P7_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P7_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P7_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P7_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P8_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P8_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P8_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P8_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P8_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P8_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P8_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P8_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P9_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P9_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P9_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P9_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P9_5), PWM_32b_7, CY_PIN_OUT_FUNCTION(P9_5_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P9_7), PWM_32b_0, CY_PIN_OUT_FUNCTION(P9_7_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_1), PWM_32b_6, CY_PIN_OUT_FUNCTION(P10_1_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P10_3), PWM_32b_7, CY_PIN_OUT_FUNCTION(P10_3_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P10_5), PWM_32b_0, CY_PIN_OUT_FUNCTION(P10_5_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P10_7), PWM_32b_1, CY_PIN_OUT_FUNCTION(P10_7_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_1), PWM_32b_1, CY_PIN_OUT_FUNCTION(P11_1_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P11_3), PWM_32b_2, CY_PIN_OUT_FUNCTION(P11_3_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P11_5), PWM_32b_3, CY_PIN_OUT_FUNCTION(P11_5_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {PWM32(P12_1), PWM_32b_4, CY_PIN_OUT_FUNCTION(P12_1_TCPWM0_LINE_COMPL4, PCLK_TCPWM0_CLOCKS4)}, + {PWM32(P12_3), PWM_32b_5, CY_PIN_OUT_FUNCTION(P12_3_TCPWM0_LINE_COMPL5, PCLK_TCPWM0_CLOCKS5)}, + {PWM32(P12_5), PWM_32b_6, CY_PIN_OUT_FUNCTION(P12_5_TCPWM0_LINE_COMPL6, PCLK_TCPWM0_CLOCKS6)}, + {PWM32(P12_7), PWM_32b_7, CY_PIN_OUT_FUNCTION(P12_7_TCPWM0_LINE_COMPL7, PCLK_TCPWM0_CLOCKS7)}, + {PWM32(P13_1), PWM_32b_0, CY_PIN_OUT_FUNCTION(P13_1_TCPWM0_LINE_COMPL0, PCLK_TCPWM0_CLOCKS0)}, + {PWM32(P13_3), PWM_32b_1, CY_PIN_OUT_FUNCTION(P13_3_TCPWM0_LINE_COMPL1, PCLK_TCPWM0_CLOCKS1)}, + {PWM32(P13_5), PWM_32b_2, CY_PIN_OUT_FUNCTION(P13_5_TCPWM0_LINE_COMPL2, PCLK_TCPWM0_CLOCKS2)}, + {PWM32(P13_7), PWM_32b_3, CY_PIN_OUT_FUNCTION(P13_7_TCPWM0_LINE_COMPL3, PCLK_TCPWM0_CLOCKS3)}, + {NC, NC, 0} +}; +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +const PinMap PinMap_ADC[] = { + {P10_0, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_1, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_2, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_3, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_4, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_5, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_6, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {P10_7, ADC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_SAR)}, + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN + +#if DEVICE_ANALOGOUT +const PinMap PinMap_DAC[] = { + {P9_6, DAC_0, CY_PIN_ANALOG_FUNCTION(PCLK_PASS_CLOCK_CTDAC)}, + {NC, NC, 0} +}; +#endif // DEVICE_ANALOGIN diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PinNames.h new file mode 100644 index 00000000000..46ea6bebc7e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/PinNames.h @@ -0,0 +1,247 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" +#include "PortNames.h" + +// PinName[15-0] = Port[15-8] + Pin[7-0] +typedef enum { + P0_0 = (Port0 << 8) + 0x00, + P0_1 = (Port0 << 8) + 0x01, + P0_2 = (Port0 << 8) + 0x02, + P0_3 = (Port0 << 8) + 0x03, + P0_4 = (Port0 << 8) + 0x04, + P0_5 = (Port0 << 8) + 0x05, + P0_6 = (Port0 << 8) + 0x06, + P0_7 = (Port0 << 8) + 0x07, + + P1_0 = (Port1 << 8) + 0x00, + P1_1 = (Port1 << 8) + 0x01, + P1_2 = (Port1 << 8) + 0x02, + P1_3 = (Port1 << 8) + 0x03, + P1_4 = (Port1 << 8) + 0x04, + P1_5 = (Port1 << 8) + 0x05, + P1_6 = (Port1 << 8) + 0x06, + P1_7 = (Port1 << 8) + 0x07, + + P2_0 = (Port2 << 8) + 0x00, + P2_1 = (Port2 << 8) + 0x01, + P2_2 = (Port2 << 8) + 0x02, + P2_3 = (Port2 << 8) + 0x03, + P2_4 = (Port2 << 8) + 0x04, + P2_5 = (Port2 << 8) + 0x05, + P2_6 = (Port2 << 8) + 0x06, + P2_7 = (Port2 << 8) + 0x07, + + P3_0 = (Port3 << 8) + 0x00, + P3_1 = (Port3 << 8) + 0x01, + P3_2 = (Port3 << 8) + 0x02, + P3_3 = (Port3 << 8) + 0x03, + P3_4 = (Port3 << 8) + 0x04, + P3_5 = (Port3 << 8) + 0x05, + P3_6 = (Port3 << 8) + 0x06, + P3_7 = (Port3 << 8) + 0x07, + + P4_0 = (Port4 << 8) + 0x00, + P4_1 = (Port4 << 8) + 0x01, + P4_2 = (Port4 << 8) + 0x02, + P4_3 = (Port4 << 8) + 0x03, + P4_4 = (Port4 << 8) + 0x04, + P4_5 = (Port4 << 8) + 0x05, + P4_6 = (Port4 << 8) + 0x06, + P4_7 = (Port4 << 8) + 0x07, + + P5_0 = (Port5 << 8) + 0x00, + P5_1 = (Port5 << 8) + 0x01, + P5_2 = (Port5 << 8) + 0x02, + P5_3 = (Port5 << 8) + 0x03, + P5_4 = (Port5 << 8) + 0x04, + P5_5 = (Port5 << 8) + 0x05, + P5_6 = (Port5 << 8) + 0x06, + P5_7 = (Port5 << 8) + 0x07, + + P6_0 = (Port6 << 8) + 0x00, + P6_1 = (Port6 << 8) + 0x01, + P6_2 = (Port6 << 8) + 0x02, + P6_3 = (Port6 << 8) + 0x03, + P6_4 = (Port6 << 8) + 0x04, + P6_5 = (Port6 << 8) + 0x05, + P6_6 = (Port6 << 8) + 0x06, + P6_7 = (Port6 << 8) + 0x07, + + P7_0 = (Port7 << 8) + 0x00, + P7_1 = (Port7 << 8) + 0x01, + P7_2 = (Port7 << 8) + 0x02, + P7_3 = (Port7 << 8) + 0x03, + P7_4 = (Port7 << 8) + 0x04, + P7_5 = (Port7 << 8) + 0x05, + P7_6 = (Port7 << 8) + 0x06, + P7_7 = (Port7 << 8) + 0x07, + + P8_0 = (Port8 << 8) + 0x00, + P8_1 = (Port8 << 8) + 0x01, + P8_2 = (Port8 << 8) + 0x02, + P8_3 = (Port8 << 8) + 0x03, + P8_4 = (Port8 << 8) + 0x04, + P8_5 = (Port8 << 8) + 0x05, + P8_6 = (Port8 << 8) + 0x06, + P8_7 = (Port8 << 8) + 0x07, + + P9_0 = (Port9 << 8) + 0x00, + P9_1 = (Port9 << 8) + 0x01, + P9_2 = (Port9 << 8) + 0x02, + P9_3 = (Port9 << 8) + 0x03, + P9_4 = (Port9 << 8) + 0x04, + P9_5 = (Port9 << 8) + 0x05, + P9_6 = (Port9 << 8) + 0x06, + P9_7 = (Port9 << 8) + 0x07, + + P10_0 = (Port10 << 8) + 0x00, + P10_1 = (Port10 << 8) + 0x01, + P10_2 = (Port10 << 8) + 0x02, + P10_3 = (Port10 << 8) + 0x03, + P10_4 = (Port10 << 8) + 0x04, + P10_5 = (Port10 << 8) + 0x05, + P10_6 = (Port10 << 8) + 0x06, + P10_7 = (Port10 << 8) + 0x07, + + P11_0 = (Port11 << 8) + 0x00, + P11_1 = (Port11 << 8) + 0x01, + P11_2 = (Port11 << 8) + 0x02, + P11_3 = (Port11 << 8) + 0x03, + P11_4 = (Port11 << 8) + 0x04, + P11_5 = (Port11 << 8) + 0x05, + P11_6 = (Port11 << 8) + 0x06, + P11_7 = (Port11 << 8) + 0x07, + + P12_0 = (Port12 << 8) + 0x00, + P12_1 = (Port12 << 8) + 0x01, + P12_2 = (Port12 << 8) + 0x02, + P12_3 = (Port12 << 8) + 0x03, + P12_4 = (Port12 << 8) + 0x04, + P12_5 = (Port12 << 8) + 0x05, + P12_6 = (Port12 << 8) + 0x06, + P12_7 = (Port12 << 8) + 0x07, + + P13_0 = (Port13 << 8) + 0x00, + P13_1 = (Port13 << 8) + 0x01, + P13_2 = (Port13 << 8) + 0x02, + P13_3 = (Port13 << 8) + 0x03, + P13_4 = (Port13 << 8) + 0x04, + P13_5 = (Port13 << 8) + 0x05, + P13_6 = (Port13 << 8) + 0x06, + P13_7 = (Port13 << 8) + 0x07, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Generic signal names + + I2C_SCL = P6_0, + I2C_SDA = P6_1, + + SPI_MOSI = P12_0, + SPI_MISO = P12_1, + SPI_CLK = P12_2, + SPI_CS = P12_4, + + UART_RX = P13_0, + UART_TX = P13_1, + UART_RTS = P13_2, + UART_CTS = P13_3, + + BT_UART_RX = P3_0, + BT_UART_TX = P3_1, + BT_UART_CTS = P3_3, + BT_UART_RTS = P3_2, + + BT_PIN_POWER = P3_4, + BT_PIN_HOST_WAKE = P3_5, + BT_PIN_DEVICE_WAKE = P4_0, + BT_PIN_DEVICE_RESET = P4_1, + + SWITCH2 = P0_4, + LED1 = P0_3, + LED2 = P1_1, + LED3 = P10_6, + + LED_RED = LED1, + LED_BLUE = LED3, + LED_GREEN = LED2, + + USER_BUTTON = SWITCH2, + BUTTON1 = USER_BUTTON, + + QSPI_CLK = P11_7, + QSPI_IO_0 = P11_6, + QSPI_IO_1 = P11_5, + QSPI_IO_2 = P11_4, + QSPI_IO_3 = P11_3, + QSPI_SEL = P11_2, + + // Standardized interfaces names + STDIO_UART_TX = UART_TX, + STDIO_UART_RX = UART_RX, + STDIO_UART_CTS = UART_CTS, + STDIO_UART_RTS = UART_RTS, + + CY_STDIO_UART_RX = STDIO_UART_RX, + CY_STDIO_UART_TX = STDIO_UART_TX, + CY_STDIO_UART_CTS = STDIO_UART_CTS, + CY_STDIO_UART_RTS = STDIO_UART_RTS, + + CY_BT_UART_RX = BT_UART_RX, + CY_BT_UART_TX = BT_UART_TX, + CY_BT_UART_CTS = BT_UART_CTS, + CY_BT_UART_RTS = BT_UART_RTS, + + CY_BT_PIN_POWER = BT_PIN_POWER, + CY_BT_PIN_HOST_WAKE = BT_PIN_HOST_WAKE, + CY_BT_PIN_DEVICE_WAKE = BT_PIN_DEVICE_WAKE, + + USBTX = UART_TX, + USBRX = UART_RX, + + // Not connected + AOUT = (int)0xFFFFFFFF +} PinName; + +// PinName[15-0] = Port[15-8] + Pin[4-0] +static inline unsigned CY_PIN(PinName pin) +{ + return pin & 0x07; +} + +static inline unsigned CY_PORT(PinName pin) +{ + return (pin >> 8) & 0xFF; +} + +// Because MBED pin mapping API does not allow to map multiple instances of the PWM +// to be mapped to the same pin, we create special pin names to force 32-bit PWM unit +// usage instead of standard 16-bit PWM. + +#define PWM32(pin) CY_PIN_FORCE_PWM_32(pin) + + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct new file mode 100644 index 00000000000..1dcfac33dba --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/cy8c6xx7_cm4_dual.sct @@ -0,0 +1,256 @@ +#! armcc -E +; The first line specifies a preprocessor command that the linker invokes +; to pass a scatter file through a C preprocessor. + +;******************************************************************************* +;* \file cy8c6xx7_cm4_dual.scat +;* \version `$CY_MAJOR_VERSION`.`$CY_MINOR_VERSION` +;* +;* Linker file for the ARMCC. +;* +;* The main purpose of the linker script is to describe how the sections in the +;* input files should be mapped into the output file, and to control the memory +;* layout of the output file. +;* +;* \note The entry point location is fixed and starts at 0x10000000. The valid +;* application image should be placed there. +;* +;* \note The linker files included with the PDL template projects must be +;* generic and handle all common use cases. Your project may not use every +;* section defined in the linker files. In that case you may see the warnings +;* during the build process: L6314W (no section matches pattern) and/or L6329W +;* (pattern only matches removed unused sections). In your project, you can +;* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +;* the linker, simply comment out or remove the relevant code in the linker +;* file. +;* +;******************************************************************************* +;* \copyright +;* Copyright 2016-2019 Cypress Semiconductor Corporation +;* SPDX-License-Identifier: Apache-2.0 +;* +;* Licensed under the Apache License, Version 2.0 (the "License"); +;* you may not use this file except in compliance with the License. +;* You may obtain a copy of the License at +;* +;* http://www.apache.org/licenses/LICENSE-2.0 +;* +;* Unless required by applicable law or agreed to in writing, software +;* distributed under the License is distributed on an "AS IS" BASIS, +;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;* See the License for the specific language governing permissions and +;* limitations under the License. +;******************************************************************************/ + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +#define Stack_Size MBED_BOOT_STACK_SIZE + +; The defines below describe the location and size of blocks of memory in the target. +; Use these defines to specify the memory regions available for allocation. + +; The following defines control RAM and flash memory allocation for the CM4 core. +; You can change the memory allocation by editing RAM and Flash defines. +; Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. +; Using this memory region for other purposes will lead to unexpected behavior. +; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat', +; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'. +; RAM +#define RAM_START MBED_RAM_START +#define RAM_SIZE MBED_RAM_SIZE +; Flash +#define FLASH_START MBED_ROM_START +#define FLASH_SIZE MBED_ROM_SIZE + +; The following defines describe a 32K flash region used for EEPROM emulation. +; This region can also be used as the general purpose flash. +; You can assign sections to this memory region for only one of the cores. +; Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. +; Therefore, repurposing this memory region will prevent such middleware from operation. +#define EM_EEPROM_START 0x14000000 +#define EM_EEPROM_SIZE 0x8000 + +; The following defines describe device specific memory regions and must not be changed. +; Supervisory flash: User data +#define SFLASH_USER_DATA_START 0x16000800 +#define SFLASH_USER_DATA_SIZE 0x00000800 + +; Supervisory flash: Normal Access Restrictions (NAR) +#define SFLASH_NAR_START 0x16001A00 +#define SFLASH_NAR_SIZE 0x00000200 + +; Supervisory flash: Public Key +#define SFLASH_PUBLIC_KEY_START 0x16005A00 +#define SFLASH_PUBLIC_KEY_SIZE 0x00000C00 + +; Supervisory flash: Table of Content # 2 +#define SFLASH_TOC_2_START 0x16007C00 +#define SFLASH_TOC_2_SIZE 0x00000200 + +; Supervisory flash: Table of Content # 2 Copy +#define SFLASH_RTOC_2_START 0x16007E00 +#define SFLASH_RTOC_2_SIZE 0x00000200 + +; External memory +#define XIP_START 0x18000000 +#define XIP_SIZE 0x08000000 + +; eFuse +#define EFUSE_START 0x90700000 +#define EFUSE_SIZE 0x100000 + + +LR_IROM1 FLASH_START FLASH_SIZE +{ + ER_FLASH_VECTORS +0 + { + * (RESET, +FIRST) + } + + ER_FLASH_CODE +0 FIXED + { + * (InRoot$$Sections) + * (+RO) + } + + ER_RAM_VECTORS RAM_START UNINIT + { + * (RESET_RAM, +FIRST) + } + + RW_RAM_DATA +0 + { + * (.cy_ramfunc) + .ANY (+RW, +ZI) + } + + ; Place variables in the section that should not be initialized during the + ; device startup. + RW_IRAM1 +0 UNINIT + { + * (.noinit) + } + + ; Application heap area (HEAP) + ARM_LIB_HEAP +0 + { + * (HEAP) + } + + ; Stack region growing down + ARM_LIB_STACK RAM_START+RAM_SIZE -Stack_Size + { + * (STACK) + } + + ; Used for the digital signature of the secure application and the + ; Bootloader SDK application. The size of the section depends on the required + ; data size. + .cy_app_signature (FLASH_START + FLASH_SIZE - 256) 256 + { + * (.cy_app_signature) + } +} + + +; Emulated EEPROM Flash area +LR_EM_EEPROM EM_EEPROM_START EM_EEPROM_SIZE +{ + .cy_em_eeprom +0 + { + * (.cy_em_eeprom) + } +} + +; Supervisory flash: User data +LR_SFLASH_USER_DATA SFLASH_USER_DATA_START SFLASH_USER_DATA_SIZE +{ + .cy_sflash_user_data +0 + { + * (.cy_sflash_user_data) + } +} + +; Supervisory flash: Normal Access Restrictions (NAR) +LR_SFLASH_NAR SFLASH_NAR_START SFLASH_NAR_SIZE +{ + .cy_sflash_nar +0 + { + * (.cy_sflash_nar) + } +} + +; Supervisory flash: Public Key +LR_SFLASH_PUBLIC_KEY SFLASH_PUBLIC_KEY_START SFLASH_PUBLIC_KEY_SIZE +{ + .cy_sflash_public_key +0 + { + * (.cy_sflash_public_key) + } +} + +; Supervisory flash: Table of Content # 2 +LR_SFLASH_TOC_2 SFLASH_TOC_2_START SFLASH_TOC_2_SIZE +{ + .cy_toc_part2 +0 + { + * (.cy_toc_part2) + } +} + +; Supervisory flash: Table of Content # 2 Copy +LR_SFLASH_RTOC_2 SFLASH_RTOC_2_START SFLASH_RTOC_2_SIZE +{ + .cy_rtoc_part2 +0 + { + * (.cy_rtoc_part2) + } +} + + +; Places the code in the Execute in Place (XIP) section. See the smif driver documentation for details. +LR_EROM XIP_START XIP_SIZE +{ + .cy_xip +0 + { + * (.cy_xip) + } +} + + +; eFuse +LR_EFUSE EFUSE_START EFUSE_SIZE +{ + .cy_efuse +0 + { + * (.cy_efuse) + } +} + + +; The section is used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. +CYMETA 0x90500000 +{ + .cymeta +0 { * (.cymeta) } +} + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..bdbd72f8c64 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_ARM_STD/startup_psoc6_01_cm4.S @@ -0,0 +1,696 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 02. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;/* +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__STACK_SIZE +Stack_Size EQU __STACK_SIZE + ELSE +Stack_Size EQU 0x00000400 + ENDIF + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + IF :DEF:__HEAP_SIZE +Heap_Size EQU __HEAP_SIZE + ELSE +Heap_Size EQU 0x00000400 + ENDIF + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + + DCD 0x0000000D ; NMI Handler located at ROM code + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External interrupts Power Mode Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + EXPORT __ramVectors + AREA RESET_RAM, READWRITE, NOINIT +__ramVectors SPACE __Vectors_Size + + + AREA |.text|, CODE, READONLY + + +; Weak function for startup customization +; +; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +; because this function is executed as the first instruction in the ResetHandler. +; The PDL is also not initialized to use the proper register offsets. +; The user of this function is responsible for initializing the PDL and resources before using them. +; +Cy_OnResetUser PROC + EXPORT Cy_OnResetUser [WEAK] + BX LR + ENDP + + +; Reset Handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT Cy_SystemInitFpuEnable + IMPORT __main + + ; Define strong function for startup customization + BL Cy_OnResetUser + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__Vectors + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +Vectors_Copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE Vectors_Copy + + ; Update Vector Table Offset Register. */ + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb 0xF + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + LDR R0, =__main + BLX R0 + + ; Should never get here + B . + + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP + +Cy_SysLib_FaultHandler PROC + EXPORT Cy_SysLib_FaultHandler [WEAK] + B . + ENDP +HardFault_Wrapper\ + PROC + EXPORT HardFault_Wrapper [WEAK] + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + bl L_API_call +L_MSP + mrs r0, MSP +L_API_call + bl Cy_SysLib_FaultHandler + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B HardFault_Wrapper + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B HardFault_Wrapper + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT Default_Handler [WEAK] + EXPORT ioss_interrupts_gpio_0_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_1_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_2_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_3_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_4_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_5_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_6_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_7_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_8_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_9_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_10_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_11_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_12_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_13_IRQHandler [WEAK] + EXPORT ioss_interrupts_gpio_14_IRQHandler [WEAK] + EXPORT ioss_interrupt_gpio_IRQHandler [WEAK] + EXPORT ioss_interrupt_vdd_IRQHandler [WEAK] + EXPORT lpcomp_interrupt_IRQHandler [WEAK] + EXPORT scb_8_interrupt_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_0_IRQHandler [WEAK] + EXPORT srss_interrupt_mcwdt_1_IRQHandler [WEAK] + EXPORT srss_interrupt_backup_IRQHandler [WEAK] + EXPORT srss_interrupt_IRQHandler [WEAK] + EXPORT pass_interrupt_ctbs_IRQHandler [WEAK] + EXPORT bless_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_ipc_15_IRQHandler [WEAK] + EXPORT scb_0_interrupt_IRQHandler [WEAK] + EXPORT scb_1_interrupt_IRQHandler [WEAK] + EXPORT scb_2_interrupt_IRQHandler [WEAK] + EXPORT scb_3_interrupt_IRQHandler [WEAK] + EXPORT scb_4_interrupt_IRQHandler [WEAK] + EXPORT scb_5_interrupt_IRQHandler [WEAK] + EXPORT scb_6_interrupt_IRQHandler [WEAK] + EXPORT scb_7_interrupt_IRQHandler [WEAK] + EXPORT csd_interrupt_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw0_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_2_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_3_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_4_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_5_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_6_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_7_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_8_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_9_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_10_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_11_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_12_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_13_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_14_IRQHandler [WEAK] + EXPORT cpuss_interrupts_dw1_15_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_fault_1_IRQHandler [WEAK] + EXPORT cpuss_interrupt_crypto_IRQHandler [WEAK] + EXPORT cpuss_interrupt_fm_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm0_cti_1_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_0_IRQHandler [WEAK] + EXPORT cpuss_interrupts_cm4_cti_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_0_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_0_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_1_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_2_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_3_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_4_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_5_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_6_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_7_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_8_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_9_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_10_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_11_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_12_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_13_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_14_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_15_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_16_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_17_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_18_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_19_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_20_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_21_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_22_IRQHandler [WEAK] + EXPORT tcpwm_1_interrupts_23_IRQHandler [WEAK] + EXPORT udb_interrupts_0_IRQHandler [WEAK] + EXPORT udb_interrupts_1_IRQHandler [WEAK] + EXPORT udb_interrupts_2_IRQHandler [WEAK] + EXPORT udb_interrupts_3_IRQHandler [WEAK] + EXPORT udb_interrupts_4_IRQHandler [WEAK] + EXPORT udb_interrupts_5_IRQHandler [WEAK] + EXPORT udb_interrupts_6_IRQHandler [WEAK] + EXPORT udb_interrupts_7_IRQHandler [WEAK] + EXPORT udb_interrupts_8_IRQHandler [WEAK] + EXPORT udb_interrupts_9_IRQHandler [WEAK] + EXPORT udb_interrupts_10_IRQHandler [WEAK] + EXPORT udb_interrupts_11_IRQHandler [WEAK] + EXPORT udb_interrupts_12_IRQHandler [WEAK] + EXPORT udb_interrupts_13_IRQHandler [WEAK] + EXPORT udb_interrupts_14_IRQHandler [WEAK] + EXPORT udb_interrupts_15_IRQHandler [WEAK] + EXPORT pass_interrupt_sar_IRQHandler [WEAK] + EXPORT audioss_interrupt_i2s_IRQHandler [WEAK] + EXPORT audioss_interrupt_pdm_IRQHandler [WEAK] + EXPORT profile_interrupt_IRQHandler [WEAK] + EXPORT smif_interrupt_IRQHandler [WEAK] + EXPORT usb_interrupt_hi_IRQHandler [WEAK] + EXPORT usb_interrupt_med_IRQHandler [WEAK] + EXPORT usb_interrupt_lo_IRQHandler [WEAK] + EXPORT pass_interrupt_dacs_IRQHandler [WEAK] + +ioss_interrupts_gpio_0_IRQHandler +ioss_interrupts_gpio_1_IRQHandler +ioss_interrupts_gpio_2_IRQHandler +ioss_interrupts_gpio_3_IRQHandler +ioss_interrupts_gpio_4_IRQHandler +ioss_interrupts_gpio_5_IRQHandler +ioss_interrupts_gpio_6_IRQHandler +ioss_interrupts_gpio_7_IRQHandler +ioss_interrupts_gpio_8_IRQHandler +ioss_interrupts_gpio_9_IRQHandler +ioss_interrupts_gpio_10_IRQHandler +ioss_interrupts_gpio_11_IRQHandler +ioss_interrupts_gpio_12_IRQHandler +ioss_interrupts_gpio_13_IRQHandler +ioss_interrupts_gpio_14_IRQHandler +ioss_interrupt_gpio_IRQHandler +ioss_interrupt_vdd_IRQHandler +lpcomp_interrupt_IRQHandler +scb_8_interrupt_IRQHandler +srss_interrupt_mcwdt_0_IRQHandler +srss_interrupt_mcwdt_1_IRQHandler +srss_interrupt_backup_IRQHandler +srss_interrupt_IRQHandler +pass_interrupt_ctbs_IRQHandler +bless_interrupt_IRQHandler +cpuss_interrupts_ipc_0_IRQHandler +cpuss_interrupts_ipc_1_IRQHandler +cpuss_interrupts_ipc_2_IRQHandler +cpuss_interrupts_ipc_3_IRQHandler +cpuss_interrupts_ipc_4_IRQHandler +cpuss_interrupts_ipc_5_IRQHandler +cpuss_interrupts_ipc_6_IRQHandler +cpuss_interrupts_ipc_7_IRQHandler +cpuss_interrupts_ipc_8_IRQHandler +cpuss_interrupts_ipc_9_IRQHandler +cpuss_interrupts_ipc_10_IRQHandler +cpuss_interrupts_ipc_11_IRQHandler +cpuss_interrupts_ipc_12_IRQHandler +cpuss_interrupts_ipc_13_IRQHandler +cpuss_interrupts_ipc_14_IRQHandler +cpuss_interrupts_ipc_15_IRQHandler +scb_0_interrupt_IRQHandler +scb_1_interrupt_IRQHandler +scb_2_interrupt_IRQHandler +scb_3_interrupt_IRQHandler +scb_4_interrupt_IRQHandler +scb_5_interrupt_IRQHandler +scb_6_interrupt_IRQHandler +scb_7_interrupt_IRQHandler +csd_interrupt_IRQHandler +cpuss_interrupts_dw0_0_IRQHandler +cpuss_interrupts_dw0_1_IRQHandler +cpuss_interrupts_dw0_2_IRQHandler +cpuss_interrupts_dw0_3_IRQHandler +cpuss_interrupts_dw0_4_IRQHandler +cpuss_interrupts_dw0_5_IRQHandler +cpuss_interrupts_dw0_6_IRQHandler +cpuss_interrupts_dw0_7_IRQHandler +cpuss_interrupts_dw0_8_IRQHandler +cpuss_interrupts_dw0_9_IRQHandler +cpuss_interrupts_dw0_10_IRQHandler +cpuss_interrupts_dw0_11_IRQHandler +cpuss_interrupts_dw0_12_IRQHandler +cpuss_interrupts_dw0_13_IRQHandler +cpuss_interrupts_dw0_14_IRQHandler +cpuss_interrupts_dw0_15_IRQHandler +cpuss_interrupts_dw1_0_IRQHandler +cpuss_interrupts_dw1_1_IRQHandler +cpuss_interrupts_dw1_2_IRQHandler +cpuss_interrupts_dw1_3_IRQHandler +cpuss_interrupts_dw1_4_IRQHandler +cpuss_interrupts_dw1_5_IRQHandler +cpuss_interrupts_dw1_6_IRQHandler +cpuss_interrupts_dw1_7_IRQHandler +cpuss_interrupts_dw1_8_IRQHandler +cpuss_interrupts_dw1_9_IRQHandler +cpuss_interrupts_dw1_10_IRQHandler +cpuss_interrupts_dw1_11_IRQHandler +cpuss_interrupts_dw1_12_IRQHandler +cpuss_interrupts_dw1_13_IRQHandler +cpuss_interrupts_dw1_14_IRQHandler +cpuss_interrupts_dw1_15_IRQHandler +cpuss_interrupts_fault_0_IRQHandler +cpuss_interrupts_fault_1_IRQHandler +cpuss_interrupt_crypto_IRQHandler +cpuss_interrupt_fm_IRQHandler +cpuss_interrupts_cm0_cti_0_IRQHandler +cpuss_interrupts_cm0_cti_1_IRQHandler +cpuss_interrupts_cm4_cti_0_IRQHandler +cpuss_interrupts_cm4_cti_1_IRQHandler +tcpwm_0_interrupts_0_IRQHandler +tcpwm_0_interrupts_1_IRQHandler +tcpwm_0_interrupts_2_IRQHandler +tcpwm_0_interrupts_3_IRQHandler +tcpwm_0_interrupts_4_IRQHandler +tcpwm_0_interrupts_5_IRQHandler +tcpwm_0_interrupts_6_IRQHandler +tcpwm_0_interrupts_7_IRQHandler +tcpwm_1_interrupts_0_IRQHandler +tcpwm_1_interrupts_1_IRQHandler +tcpwm_1_interrupts_2_IRQHandler +tcpwm_1_interrupts_3_IRQHandler +tcpwm_1_interrupts_4_IRQHandler +tcpwm_1_interrupts_5_IRQHandler +tcpwm_1_interrupts_6_IRQHandler +tcpwm_1_interrupts_7_IRQHandler +tcpwm_1_interrupts_8_IRQHandler +tcpwm_1_interrupts_9_IRQHandler +tcpwm_1_interrupts_10_IRQHandler +tcpwm_1_interrupts_11_IRQHandler +tcpwm_1_interrupts_12_IRQHandler +tcpwm_1_interrupts_13_IRQHandler +tcpwm_1_interrupts_14_IRQHandler +tcpwm_1_interrupts_15_IRQHandler +tcpwm_1_interrupts_16_IRQHandler +tcpwm_1_interrupts_17_IRQHandler +tcpwm_1_interrupts_18_IRQHandler +tcpwm_1_interrupts_19_IRQHandler +tcpwm_1_interrupts_20_IRQHandler +tcpwm_1_interrupts_21_IRQHandler +tcpwm_1_interrupts_22_IRQHandler +tcpwm_1_interrupts_23_IRQHandler +udb_interrupts_0_IRQHandler +udb_interrupts_1_IRQHandler +udb_interrupts_2_IRQHandler +udb_interrupts_3_IRQHandler +udb_interrupts_4_IRQHandler +udb_interrupts_5_IRQHandler +udb_interrupts_6_IRQHandler +udb_interrupts_7_IRQHandler +udb_interrupts_8_IRQHandler +udb_interrupts_9_IRQHandler +udb_interrupts_10_IRQHandler +udb_interrupts_11_IRQHandler +udb_interrupts_12_IRQHandler +udb_interrupts_13_IRQHandler +udb_interrupts_14_IRQHandler +udb_interrupts_15_IRQHandler +pass_interrupt_sar_IRQHandler +audioss_interrupt_i2s_IRQHandler +audioss_interrupt_pdm_IRQHandler +profile_interrupt_IRQHandler +smif_interrupt_IRQHandler +usb_interrupt_hi_IRQHandler +usb_interrupt_med_IRQHandler +usb_interrupt_lo_IRQHandler +pass_interrupt_dacs_IRQHandler + + B . + ENDP + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld new file mode 100644 index 00000000000..fad6275f262 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/cy8c6xx7_cm4_dual.ld @@ -0,0 +1,430 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.ld +* \version 2.30 +* +* Linker file for the GNU C compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point location is fixed and starts at 0x10000000. The valid +* application image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) +ENTRY(Reset_Handler) + +#if !defined(MBED_ROM_START) + #define MBED_ROM_START 0x10002000 +#endif + +#if !defined(MBED_ROM_SIZE) + #define MBED_ROM_SIZE 0x000FE000 +#endif + +#if !defined(MBED_RAM_START) + #define MBED_RAM_START 0x08002000 +#endif + +#if !defined(MBED_RAM_SIZE) + #define MBED_RAM_SIZE 0x00045800 +#endif + +#if !defined(MBED_BOOT_STACK_SIZE) + #define MBED_BOOT_STACK_SIZE 0x400 +#endif + +STACK_SIZE = MBED_BOOT_STACK_SIZE; + +/* Force symbol to be entered in the output file as an undefined symbol. Doing +* this may, for example, trigger linking of additional modules from standard +* libraries. You may list several symbols for each EXTERN, and you may use +* EXTERN multiple times. This command has the same effect as the -u command-line +* option. +*/ +EXTERN(Reset_Handler) + +/* The MEMORY section below describes the location and size of blocks of memory in the target. +* Use this section to specify the memory regions available for allocation. +*/ +MEMORY +{ + /* The ram and flash regions control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing the 'ram' and 'flash' regions. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. + */ + ram (rwx) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE + flash (rx) : ORIGIN = MBED_ROM_START, LENGTH = MBED_ROM_SIZE + + /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ + em_eeprom (rx) : ORIGIN = 0x14000000, LENGTH = 0x8000 /* 32 KB */ + + /* The following regions define device specific memory regions and must not be changed. */ + sflash_user_data (rx) : ORIGIN = 0x16000800, LENGTH = 0x800 /* Supervisory flash: User data */ + sflash_nar (rx) : ORIGIN = 0x16001A00, LENGTH = 0x200 /* Supervisory flash: Normal Access Restrictions (NAR) */ + sflash_public_key (rx) : ORIGIN = 0x16005A00, LENGTH = 0xC00 /* Supervisory flash: Public Key */ + sflash_toc_2 (rx) : ORIGIN = 0x16007C00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 */ + sflash_rtoc_2 (rx) : ORIGIN = 0x16007E00, LENGTH = 0x200 /* Supervisory flash: Table of Content # 2 Copy */ + xip (rx) : ORIGIN = 0x18000000, LENGTH = 0x8000000 /* 128 MB */ + efuse (r) : ORIGIN = 0x90700000, LENGTH = 0x100000 /* 1 MB */ +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ + + +SECTIONS +{ + .text : + { + . = ALIGN(4); + __Vectors = . ; + KEEP(*(.vectors)) + . = ALIGN(4); + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + . = ALIGN(4); + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + /* Read-only code (constants). */ + *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*) + + KEEP(*(.eh_frame*)) + } > flash + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + __exidx_start = .; + + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_psoc6_01_cm4.S */ + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + /* Copy interrupt vectors from flash to RAM */ + LONG (__Vectors) /* From */ + LONG (__ram_vectors_start__) /* To */ + LONG (__Vectors_End - __Vectors) /* Size */ + + /* Copy data section to RAM */ + LONG (__etext) /* From */ + LONG (__data_start__) /* To */ + LONG (__data_end__ - __data_start__) /* Size */ + + __copy_table_end__ = .; + } > flash + + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_01_cm4.S */ + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + __zero_table_end__ = .; + } > flash + + __etext = . ; + + + .ramVectors (NOLOAD) : ALIGN(8) + { + __ram_vectors_start__ = .; + KEEP(*(.ram_vectors)) + __ram_vectors_end__ = .; + } > ram + + + .data __ram_vectors_end__ : AT (__etext) + { + __data_start__ = .; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + + KEEP(*(.cy_ramfunc*)) + . = ALIGN(4); + + __data_end__ = .; + + } > ram + + + /* Place variables in the section that should not be initialized during the + * device startup. + */ + .noinit (NOLOAD) : ALIGN(8) + { + KEEP(*(.noinit)) + } > ram + + + /* The uninitialized global or static variables are placed in this section. + * + * The NOLOAD attribute tells linker that .bss section does not consume + * any space in the image. The NOLOAD attribute changes the .bss type to + * NOBITS, and that makes linker to A) not allocate section in memory, and + * A) put information to clear the section with all zeros during application + * loading. + * + * Without the NOLOAD attribute, the .bss section might get PROGBITS type. + * This makes linker to A) allocate zeroed section in memory, and B) copy + * this section to RAM during application loading. + */ + .bss (NOLOAD): + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .heap (NOLOAD): + { + __HeapBase = .; + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + __HeapLimit = .; + } > ram + + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram) + LENGTH(ram); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Used for the digital signature of the secure application and the Bootloader SDK application. + * The size of the section depends on the required data size. */ + .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 : + { + KEEP(*(.cy_app_signature)) + } > flash + + + /* Emulated EEPROM Flash area */ + .cy_em_eeprom : + { + KEEP(*(.cy_em_eeprom)) + } > em_eeprom + + + /* Supervisory Flash: User data */ + .cy_sflash_user_data : + { + KEEP(*(.cy_sflash_user_data)) + } > sflash_user_data + + + /* Supervisory Flash: Normal Access Restrictions (NAR) */ + .cy_sflash_nar : + { + KEEP(*(.cy_sflash_nar)) + } > sflash_nar + + + /* Supervisory Flash: Public Key */ + .cy_sflash_public_key : + { + KEEP(*(.cy_sflash_public_key)) + } > sflash_public_key + + + /* Supervisory Flash: Table of Content # 2 */ + .cy_toc_part2 : + { + KEEP(*(.cy_toc_part2)) + } > sflash_toc_2 + + + /* Supervisory Flash: Table of Content # 2 Copy */ + .cy_rtoc_part2 : + { + KEEP(*(.cy_rtoc_part2)) + } > sflash_rtoc_2 + + + /* Places the code in the Execute in Place (XIP) section. See the smif driver + * documentation for details. + */ + .cy_xip : + { + KEEP(*(.cy_xip)) + } > xip + + + /* eFuse */ + .cy_efuse : + { + KEEP(*(.cy_efuse)) + } > efuse + + + /* These sections are used for additional metadata (silicon revision, + * Silicon/JTAG ID, etc.) storage. + */ + .cymeta 0x90500000 : { KEEP(*(.cymeta)) } :NONE +} + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +__cy_memory_0_start = 0x10000000; +__cy_memory_0_length = 0x00100000; +__cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +__cy_memory_1_start = 0x14000000; +__cy_memory_1_length = 0x8000; +__cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +__cy_memory_2_start = 0x16000000; +__cy_memory_2_length = 0x8000; +__cy_memory_2_row_size = 0x200; + +/* XIP */ +__cy_memory_3_start = 0x18000000; +__cy_memory_3_length = 0x08000000; +__cy_memory_3_row_size = 0x200; + +/* eFuse */ +__cy_memory_4_start = 0x90700000; +__cy_memory_4_length = 0x100000; +__cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..3c2f44d1e07 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_GCC_ARM/startup_psoc6_01_cm4.S @@ -0,0 +1,631 @@ +/**************************************************************************//** + * @file startup_psoc6_01_cm4.S + * @brief CMSIS Core Device Startup File for + * ARMCM4 Device Series + * @version V5.00 + * @date 02. March 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* Address of the NMI handler */ + #define CY_NMI_HANLDER_ADDR 0x0000000D + + /* The CPU VTOR register */ + #define CY_CPU_VTOR_ADDR 0xE000ED08 + + /* Copy flash vectors and data section to RAM */ + #define __STARTUP_COPY_MULTIPLE + + /* Clear single BSS section */ + #define __STARTUP_CLEAR_BSS + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00001000 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000400 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long CY_NMI_HANLDER_ADDR /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External interrupts Description */ + .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + .long pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + .long bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + .long udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + .long udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + .long udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + .long udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + .long udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + .long udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + .long udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + .long udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + .long udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + .long udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + .long udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + .long udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + .long udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + .long udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + .long udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + .long udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + .long audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + .long audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + .long usb_interrupt_hi_IRQHandler /* USB Interrupt */ + .long usb_interrupt_med_IRQHandler /* USB Interrupt */ + .long usb_interrupt_lo_IRQHandler /* USB Interrupt */ + .long pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + + .size __Vectors, . - __Vectors + .equ __VectorsSize, . - __Vectors + + .section .ram_vectors + .align 2 + .globl __ramVectors +__ramVectors: + .space __VectorsSize + .size __ramVectors, . - __ramVectors + + + .text + .thumb + .thumb_func + .align 2 + + /* + * Device startup customization + * + * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) + * because this function is executed as the first instruction in the ResetHandler. + * The PDL is also not initialized to use the proper register offsets. + * The user of this function is responsible for initializing the PDL and resources before using them. + */ + .weak Cy_OnResetUser + .func Cy_OnResetUser, Cy_OnResetUser + .type Cy_OnResetUser, %function + +Cy_OnResetUser: + bx lr + .size Cy_OnResetUser, . - Cy_OnResetUser + .endfunc + + /* Reset handler */ + .weak Reset_Handler + .type Reset_Handler, %function + +Reset_Handler: + bl Cy_OnResetUser + cpsid i + +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + + /* Update Vector Table Offset Register. */ + ldr r0, =__ramVectors + ldr r1, =CY_CPU_VTOR_ADDR + str r0, [r1] + dsb 0xF + + /* Enable the FPU if used */ + bl Cy_SystemInitFpuEnable + + bl _start + + /* Should never get here */ + b . + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function + +Default_Handler: + b . + .size Default_Handler, . - Default_Handler + + + .weak Cy_SysLib_FaultHandler + .type Cy_SysLib_FaultHandler, %function + +Cy_SysLib_FaultHandler: + b . + .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler + .type Fault_Handler, %function + +Fault_Handler: + /* Storing LR content for Creator call stack trace */ + push {LR} + movs r0, #4 + mov r1, LR + tst r0, r1 + beq .L_MSP + mrs r0, PSP + b .L_API_call +.L_MSP: + mrs r0, MSP +.L_API_call: + /* Compensation of stack pointer address due to pushing 4 bytes of LR */ + adds r0, r0, #4 + bl Cy_SysLib_FaultHandler + b . + .size Fault_Handler, . - Fault_Handler + +.macro def_fault_Handler fault_handler_name + .weak \fault_handler_name + .set \fault_handler_name, Fault_Handler + .endm + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + + def_fault_Handler HardFault_Handler + def_fault_Handler MemManage_Handler + def_fault_Handler BusFault_Handler + def_fault_Handler UsageFault_Handler + + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */ + def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */ + def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */ + def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */ + def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */ + def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */ + def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */ + def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */ + def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */ + def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */ + def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */ + def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */ + def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */ + def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */ + def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */ + def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */ + def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */ + def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */ + def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */ + def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */ + def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */ + def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + def_irq_handler pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */ + def_irq_handler bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */ + def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */ + def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */ + def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */ + def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */ + def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */ + def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */ + def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */ + def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */ + def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */ + def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */ + def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */ + def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */ + def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */ + def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */ + def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */ + def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */ + def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */ + def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */ + def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */ + def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */ + def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */ + def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */ + def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */ + def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */ + def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */ + def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */ + def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */ + def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */ + def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */ + def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */ + def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */ + def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */ + def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */ + def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */ + def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */ + def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */ + def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */ + def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */ + def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */ + def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */ + def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */ + def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */ + def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */ + def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */ + def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */ + def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */ + def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */ + def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */ + def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */ + def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */ + def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */ + def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */ + def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */ + def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */ + def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */ + def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */ + def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */ + def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */ + def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */ + def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */ + def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */ + def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */ + def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */ + def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */ + def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */ + def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */ + def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */ + def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */ + def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */ + def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */ + def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */ + def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */ + def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */ + def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */ + def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */ + def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */ + def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */ + def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */ + def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */ + def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */ + def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */ + def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */ + def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */ + def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */ + def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */ + def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */ + def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */ + def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */ + def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */ + def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */ + def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */ + def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */ + def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */ + def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */ + def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */ + def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */ + def_irq_handler udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */ + def_irq_handler udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */ + def_irq_handler udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */ + def_irq_handler udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */ + def_irq_handler udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */ + def_irq_handler udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */ + def_irq_handler udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */ + def_irq_handler udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */ + def_irq_handler udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */ + def_irq_handler udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */ + def_irq_handler udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */ + def_irq_handler udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */ + def_irq_handler udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */ + def_irq_handler udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */ + def_irq_handler udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */ + def_irq_handler udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */ + def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */ + def_irq_handler audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */ + def_irq_handler audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */ + def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */ + def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */ + def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */ + def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */ + def_irq_handler pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */ + + .end + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf new file mode 100644 index 00000000000..249452e3b59 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/cy8c6xx7_cm4_dual.icf @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cy8c6xx7_cm4_dual.icf +* \version 2.30 +* +* Linker file for the IAR compiler. +* +* The main purpose of the linker script is to describe how the sections in the +* input files should be mapped into the output file, and to control the memory +* layout of the output file. +* +* \note The entry point is fixed and starts at 0x10000000. The valid application +* image should be placed there. +* +* \note The linker files included with the PDL template projects must be generic +* and handle all common use cases. Your project may not use every section +* defined in the linker files. In that case you may see warnings during the +* build process. In your project, you can simply comment out or remove the +* relevant code in the linker file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; + +if (!isdefinedsymbol(MBED_ROM_START)) { + define symbol MBED_ROM_START = 0x10002000; +} + +if (!isdefinedsymbol(MBED_ROM_SIZE)) { + define symbol MBED_ROM_SIZE = 0x000FE000; +} + +if (!isdefinedsymbol(MBED_RAM_START)) { + define symbol MBED_RAM_START = 0x08002000; +} + +if (!isdefinedsymbol(MBED_RAM_SIZE)) { + define symbol MBED_RAM_SIZE = 0x00045800; +} + +if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { + define symbol MBED_BOOT_STACK_SIZE = 0x400; +} + +/* The symbols below define the location and size of blocks of memory in the target. + * Use these symbols to specify the memory regions available for allocation. + */ + +/* The following symbols control RAM and flash memory allocation for the CM4 core. + * You can change the memory allocation by editing RAM and Flash symbols. + * Note that 2 KB of RAM (at the end of the RAM section) are reserved for system use. + * Using this memory region for other purposes will lead to unexpected behavior. + * Your changes must be aligned with the corresponding symbols for CM0+ core in 'xx_cm0plus.icf', + * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.icf'. + */ +/* RAM */ +define symbol __ICFEDIT_region_IRAM1_start__ = MBED_RAM_START; +define symbol __ICFEDIT_region_IRAM1_end__ = (MBED_RAM_START + MBED_RAM_SIZE); +/* Flash */ +define symbol __ICFEDIT_region_IROM1_start__ = MBED_ROM_START; +define symbol __ICFEDIT_region_IROM1_end__ = (MBED_ROM_START + MBED_ROM_SIZE); + +/* The following symbols define a 32K flash region used for EEPROM emulation. + * This region can also be used as the general purpose flash. + * You can assign sections to this memory region for only one of the cores. + * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region. + * Therefore, repurposing this memory region will prevent such middleware from operation. + */ +define symbol __ICFEDIT_region_IROM2_start__ = 0x14000000; +define symbol __ICFEDIT_region_IROM2_end__ = 0x14007FFF; + +/* The following symbols define device specific memory regions and must not be changed. */ +/* Supervisory FLASH - User Data */ +define symbol __ICFEDIT_region_IROM3_start__ = 0x16000800; +define symbol __ICFEDIT_region_IROM3_end__ = 0x160007FF; + +/* Supervisory FLASH - Normal Access Restrictions (NAR) */ +define symbol __ICFEDIT_region_IROM4_start__ = 0x16001A00; +define symbol __ICFEDIT_region_IROM4_end__ = 0x16001BFF; + +/* Supervisory FLASH - Public Key */ +define symbol __ICFEDIT_region_IROM5_start__ = 0x16005A00; +define symbol __ICFEDIT_region_IROM5_end__ = 0x160065FF; + +/* Supervisory FLASH - Table of Content # 2 */ +define symbol __ICFEDIT_region_IROM6_start__ = 0x16007C00; +define symbol __ICFEDIT_region_IROM6_end__ = 0x16007DFF; + +/* Supervisory FLASH - Table of Content # 2 Copy */ +define symbol __ICFEDIT_region_IROM7_start__ = 0x16007E00; +define symbol __ICFEDIT_region_IROM7_end__ = 0x16007FFF; + +/* eFuse */ +define symbol __ICFEDIT_region_IROM8_start__ = 0x90700000; +define symbol __ICFEDIT_region_IROM8_end__ = 0x907FFFFF; + +/* XIP */ +define symbol __ICFEDIT_region_EROM1_start__ = 0x18000000; +define symbol __ICFEDIT_region_EROM1_end__ = 0x1FFFFFFF; + +define symbol __ICFEDIT_region_EROM2_start__ = 0x0; +define symbol __ICFEDIT_region_EROM2_end__ = 0x0; +define symbol __ICFEDIT_region_EROM3_start__ = 0x0; +define symbol __ICFEDIT_region_EROM3_end__ = 0x0; + + +define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; +define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; +define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; +/*-Sizes-*/ +if (!isdefinedsymbol(__STACK_SIZE)) { + define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; +} else { + define symbol __ICFEDIT_size_cstack__ = __STACK_SIZE; +} + +if (!isdefinedsymbol(__HEAP_SIZE)) { + define symbol __ICFEDIT_size_heap__ = 0x20000; +} else { + define symbol __ICFEDIT_size_heap__ = __HEAP_SIZE; +} +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region IROM1_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]; +define region IROM2_region = mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; +define region IROM3_region = mem:[from __ICFEDIT_region_IROM3_start__ to __ICFEDIT_region_IROM3_end__]; +define region IROM4_region = mem:[from __ICFEDIT_region_IROM4_start__ to __ICFEDIT_region_IROM4_end__]; +define region IROM5_region = mem:[from __ICFEDIT_region_IROM5_start__ to __ICFEDIT_region_IROM5_end__]; +define region IROM6_region = mem:[from __ICFEDIT_region_IROM6_start__ to __ICFEDIT_region_IROM6_end__]; +define region IROM7_region = mem:[from __ICFEDIT_region_IROM7_start__ to __ICFEDIT_region_IROM7_end__]; +define region IROM8_region = mem:[from __ICFEDIT_region_IROM8_start__ to __ICFEDIT_region_IROM8_end__]; +define region EROM1_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__]; +define region IRAM1_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]; + +define block RAM_DATA {readwrite section .data}; +define block RAM_OTHER {readwrite section * }; +define block RAM_NOINIT {readwrite section .noinit}; +define block RAM_BSS {readwrite section .bss}; +define block RAM with fixed order {block RAM_DATA, block RAM_OTHER, block RAM_NOINIT, block RAM_BSS}; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +define block RO {first section .intvec, readonly}; + +/*-Initializations-*/ +initialize by copy { readwrite }; +do not initialize { section .noinit, section .intvec_ram }; + +/*-Placement-*/ + +/* Flash */ +place at start of IROM1_region { block RO }; +".cy_app_signature" : place at address (__ICFEDIT_region_IROM1_end__ - 0x200) { section .cy_app_signature }; + +/* Emulated EEPROM Flash area */ +".cy_em_eeprom" : place at start of IROM2_region { section .cy_em_eeprom }; + +/* Supervisory Flash - User Data */ +".cy_sflash_user_data" : place at start of IROM3_region { section .cy_sflash_user_data }; + +/* Supervisory Flash - NAR */ +".cy_sflash_nar" : place at start of IROM4_region { section .cy_sflash_nar }; + +/* Supervisory Flash - Public Key */ +".cy_sflash_public_key" : place at start of IROM5_region { section .cy_sflash_public_key }; + +/* Supervisory Flash - TOC2 */ +".cy_toc_part2" : place at start of IROM6_region { section .cy_toc_part2 }; + +/* Supervisory Flash - RTOC2 */ +".cy_rtoc_part2" : place at start of IROM7_region { section .cy_rtoc_part2 }; + +/* eFuse */ +".cy_efuse" : place at start of IROM8_region { section .cy_efuse }; + +/* Execute in Place (XIP). See the smif driver documentation for details. */ +".cy_xip" : place at start of EROM1_region { section .cy_xip }; + +/* RAM */ +place at start of IRAM1_region { readwrite section .intvec_ram}; +place in IRAM1_region { block RAM}; +place in IRAM1_region { block HEAP}; +place at end of IRAM1_region { block CSTACK }; + +/* These sections are used for additional metadata (silicon revision, Silicon/JTAG ID, etc.) storage. */ +".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta }; + + +keep { section .cy_app_signature, + section .cy_em_eeprom, + section .cy_sflash_user_data, + section .cy_sflash_nar, + section .cy_sflash_public_key, + section .cy_toc_part2, + section .cy_rtoc_part2, + section .cy_efuse, + section .cy_xip, + section .cymeta, + }; + + +/* The following symbols used by the cymcuelftool. */ +/* Flash */ +define exported symbol __cy_memory_0_start = 0x10000000; +define exported symbol __cy_memory_0_length = 0x00100000; +define exported symbol __cy_memory_0_row_size = 0x200; + +/* Emulated EEPROM Flash area */ +define exported symbol __cy_memory_1_start = 0x14000000; +define exported symbol __cy_memory_1_length = 0x8000; +define exported symbol __cy_memory_1_row_size = 0x200; + +/* Supervisory Flash */ +define exported symbol __cy_memory_2_start = 0x16000000; +define exported symbol __cy_memory_2_length = 0x8000; +define exported symbol __cy_memory_2_row_size = 0x200; + +/* XIP */ +define exported symbol __cy_memory_3_start = 0x18000000; +define exported symbol __cy_memory_3_length = 0x08000000; +define exported symbol __cy_memory_3_row_size = 0x200; + +/* eFuse */ +define exported symbol __cy_memory_4_start = 0x90700000; +define exported symbol __cy_memory_4_length = 0x100000; +define exported symbol __cy_memory_4_row_size = 1; + +/* EOF */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S new file mode 100644 index 00000000000..6f1e869b92a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/TOOLCHAIN_IAR/startup_psoc6_01_cm4.S @@ -0,0 +1,1142 @@ +;/**************************************************************************//** +; * @file startup_psoc6_01_cm4.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM4 Device Series +; * @version V5.00 +; * @date 08. March 2016 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2016 ARM Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + SECTION .intvec_ram:DATA:NOROOT(2) + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + EXTERN Cy_SystemInitFpuEnable + EXTERN __iar_data_init3 + PUBLIC __vector_table + PUBLIC __vector_table_0x1c + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + PUBLIC __ramVectors + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + + DCD 0x0000000D ; NMI_Handler is defined in ROM code + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler +__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD DebugMon_Handler + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + + ; External interrupts Description + DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0 + DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1 + DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2 + DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3 + DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4 + DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5 + DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6 + DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7 + DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8 + DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9 + DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10 + DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11 + DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12 + DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13 + DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14 + DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports + DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt + DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt + DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable) + DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt + DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt + DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) + DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms) + DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt + DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0 + DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1 + DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2 + DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3 + DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4 + DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5 + DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6 + DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7 + DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8 + DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9 + DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10 + DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11 + DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12 + DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13 + DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14 + DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15 + DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0 + DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1 + DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2 + DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3 + DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4 + DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5 + DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6 + DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7 + DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt + DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0 + DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1 + DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2 + DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3 + DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4 + DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5 + DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6 + DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7 + DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8 + DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9 + DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10 + DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11 + DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12 + DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13 + DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14 + DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15 + DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0 + DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1 + DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2 + DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3 + DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4 + DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5 + DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6 + DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7 + DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8 + DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9 + DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10 + DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11 + DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12 + DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13 + DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14 + DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15 + DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0 + DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1 + DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt + DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt + DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0 + DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1 + DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0 + DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1 + DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0 + DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1 + DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2 + DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3 + DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4 + DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5 + DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6 + DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7 + DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0 + DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1 + DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2 + DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3 + DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4 + DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5 + DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6 + DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7 + DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8 + DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9 + DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10 + DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11 + DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12 + DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13 + DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14 + DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15 + DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16 + DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17 + DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18 + DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19 + DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20 + DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21 + DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22 + DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23 + DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0 + DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1 + DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2 + DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3 + DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4 + DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5 + DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6 + DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7 + DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8 + DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9 + DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10 + DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11 + DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12 + DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13 + DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14 + DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15 + DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt + DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt + DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt + DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt + DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt + DCD usb_interrupt_hi_IRQHandler ; USB Interrupt + DCD usb_interrupt_med_IRQHandler ; USB Interrupt + DCD usb_interrupt_lo_IRQHandler ; USB Interrupt + DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs + +__Vectors_End + +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors + + SECTION .intvec_ram:DATA:REORDER:NOROOT(2) +__ramVectors + DS32 __Vectors_Size + + + THUMB + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default handlers +;; + PUBWEAK Default_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Default_Handler + B Default_Handler + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Weak function for startup customization +;; +;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks) +;; because this function is executed as the first instruction in the ResetHandler. +;; The PDL is also not initialized to use the proper register offsets. +;; The user of this function is responsible for initializing the PDL and resources before using them. +;; + PUBWEAK Cy_OnResetUser + SECTION .text:CODE:REORDER:NOROOT(2) +Cy_OnResetUser + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Define strong version to return zero for +;; __iar_program_start to skip data sections +;; initialization. +;; + PUBLIC __low_level_init + SECTION .text:CODE:REORDER:NOROOT(2) +__low_level_init + MOVS R0, #0 + BX LR + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + + ; Define strong function for startup customization + LDR R0, =Cy_OnResetUser + BLX R0 + + ; Disable global interrupts + CPSID I + + ; Copy vectors from ROM to RAM + LDR r1, =__vector_table + LDR r0, =__ramVectors + LDR r2, =__Vectors_Size +intvec_copy + LDR r3, [r1] + STR r3, [r0] + ADDS r0, r0, #4 + ADDS r1, r1, #4 + SUBS r2, r2, #1 + CMP r2, #0 + BNE intvec_copy + + ; Update Vector Table Offset Register + LDR r0, =__ramVectors + LDR r1, =0xE000ED08 + STR r0, [r1] + dsb + + ; Enable the FPU if used + LDR R0, =Cy_SystemInitFpuEnable + BLX R0 + + ; Initialize data sections + LDR R0, =__iar_data_init3 + BLX R0 + + LDR R0, =SystemInit + BLX R0 + + LDR R0, =__iar_program_start + BLX R0 + +; Should never get here +Cy_Main_Exited + B Cy_Main_Exited + + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B NMI_Handler + + + PUBWEAK Cy_SysLib_FaultHandler + SECTION .text:CODE:REORDER:NOROOT(1) +Cy_SysLib_FaultHandler + B Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Wrapper + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Wrapper + IMPORT Cy_SysLib_FaultHandler + movs r0, #4 + mov r1, LR + tst r0, r1 + beq L_MSP + mrs r0, PSP + b L_API_call +L_MSP + mrs r0, MSP +L_API_call + ; Storing LR content for Creator call stack trace + push {LR} + bl Cy_SysLib_FaultHandler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B HardFault_Wrapper + + PUBWEAK MemManage_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +MemManage_Handler + B HardFault_Wrapper + + PUBWEAK BusFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +BusFault_Handler + B HardFault_Wrapper + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +UsageFault_Handler + B HardFault_Wrapper + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B SysTick_Handler + + + ; External interrupts + PUBWEAK ioss_interrupts_gpio_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_0_IRQHandler + B ioss_interrupts_gpio_0_IRQHandler + + PUBWEAK ioss_interrupts_gpio_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_1_IRQHandler + B ioss_interrupts_gpio_1_IRQHandler + + PUBWEAK ioss_interrupts_gpio_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_2_IRQHandler + B ioss_interrupts_gpio_2_IRQHandler + + PUBWEAK ioss_interrupts_gpio_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_3_IRQHandler + B ioss_interrupts_gpio_3_IRQHandler + + PUBWEAK ioss_interrupts_gpio_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_4_IRQHandler + B ioss_interrupts_gpio_4_IRQHandler + + PUBWEAK ioss_interrupts_gpio_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_5_IRQHandler + B ioss_interrupts_gpio_5_IRQHandler + + PUBWEAK ioss_interrupts_gpio_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_6_IRQHandler + B ioss_interrupts_gpio_6_IRQHandler + + PUBWEAK ioss_interrupts_gpio_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_7_IRQHandler + B ioss_interrupts_gpio_7_IRQHandler + + PUBWEAK ioss_interrupts_gpio_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_8_IRQHandler + B ioss_interrupts_gpio_8_IRQHandler + + PUBWEAK ioss_interrupts_gpio_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_9_IRQHandler + B ioss_interrupts_gpio_9_IRQHandler + + PUBWEAK ioss_interrupts_gpio_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_10_IRQHandler + B ioss_interrupts_gpio_10_IRQHandler + + PUBWEAK ioss_interrupts_gpio_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_11_IRQHandler + B ioss_interrupts_gpio_11_IRQHandler + + PUBWEAK ioss_interrupts_gpio_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_12_IRQHandler + B ioss_interrupts_gpio_12_IRQHandler + + PUBWEAK ioss_interrupts_gpio_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_13_IRQHandler + B ioss_interrupts_gpio_13_IRQHandler + + PUBWEAK ioss_interrupts_gpio_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupts_gpio_14_IRQHandler + B ioss_interrupts_gpio_14_IRQHandler + + PUBWEAK ioss_interrupt_gpio_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_gpio_IRQHandler + B ioss_interrupt_gpio_IRQHandler + + PUBWEAK ioss_interrupt_vdd_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ioss_interrupt_vdd_IRQHandler + B ioss_interrupt_vdd_IRQHandler + + PUBWEAK lpcomp_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +lpcomp_interrupt_IRQHandler + B lpcomp_interrupt_IRQHandler + + PUBWEAK scb_8_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_8_interrupt_IRQHandler + B scb_8_interrupt_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_0_IRQHandler + B srss_interrupt_mcwdt_0_IRQHandler + + PUBWEAK srss_interrupt_mcwdt_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_mcwdt_1_IRQHandler + B srss_interrupt_mcwdt_1_IRQHandler + + PUBWEAK srss_interrupt_backup_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_backup_IRQHandler + B srss_interrupt_backup_IRQHandler + + PUBWEAK srss_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +srss_interrupt_IRQHandler + B srss_interrupt_IRQHandler + + PUBWEAK pass_interrupt_ctbs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_ctbs_IRQHandler + B pass_interrupt_ctbs_IRQHandler + + PUBWEAK bless_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +bless_interrupt_IRQHandler + B bless_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_0_IRQHandler + B cpuss_interrupts_ipc_0_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_1_IRQHandler + B cpuss_interrupts_ipc_1_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_2_IRQHandler + B cpuss_interrupts_ipc_2_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_3_IRQHandler + B cpuss_interrupts_ipc_3_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_4_IRQHandler + B cpuss_interrupts_ipc_4_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_5_IRQHandler + B cpuss_interrupts_ipc_5_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_6_IRQHandler + B cpuss_interrupts_ipc_6_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_7_IRQHandler + B cpuss_interrupts_ipc_7_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_8_IRQHandler + B cpuss_interrupts_ipc_8_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_9_IRQHandler + B cpuss_interrupts_ipc_9_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_10_IRQHandler + B cpuss_interrupts_ipc_10_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_11_IRQHandler + B cpuss_interrupts_ipc_11_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_12_IRQHandler + B cpuss_interrupts_ipc_12_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_13_IRQHandler + B cpuss_interrupts_ipc_13_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_14_IRQHandler + B cpuss_interrupts_ipc_14_IRQHandler + + PUBWEAK cpuss_interrupts_ipc_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_ipc_15_IRQHandler + B cpuss_interrupts_ipc_15_IRQHandler + + PUBWEAK scb_0_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_0_interrupt_IRQHandler + B scb_0_interrupt_IRQHandler + + PUBWEAK scb_1_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_1_interrupt_IRQHandler + B scb_1_interrupt_IRQHandler + + PUBWEAK scb_2_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_2_interrupt_IRQHandler + B scb_2_interrupt_IRQHandler + + PUBWEAK scb_3_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_3_interrupt_IRQHandler + B scb_3_interrupt_IRQHandler + + PUBWEAK scb_4_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_4_interrupt_IRQHandler + B scb_4_interrupt_IRQHandler + + PUBWEAK scb_5_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_5_interrupt_IRQHandler + B scb_5_interrupt_IRQHandler + + PUBWEAK scb_6_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_6_interrupt_IRQHandler + B scb_6_interrupt_IRQHandler + + PUBWEAK scb_7_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +scb_7_interrupt_IRQHandler + B scb_7_interrupt_IRQHandler + + PUBWEAK csd_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +csd_interrupt_IRQHandler + B csd_interrupt_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_0_IRQHandler + B cpuss_interrupts_dw0_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_1_IRQHandler + B cpuss_interrupts_dw0_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_2_IRQHandler + B cpuss_interrupts_dw0_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_3_IRQHandler + B cpuss_interrupts_dw0_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_4_IRQHandler + B cpuss_interrupts_dw0_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_5_IRQHandler + B cpuss_interrupts_dw0_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_6_IRQHandler + B cpuss_interrupts_dw0_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_7_IRQHandler + B cpuss_interrupts_dw0_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_8_IRQHandler + B cpuss_interrupts_dw0_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_9_IRQHandler + B cpuss_interrupts_dw0_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_10_IRQHandler + B cpuss_interrupts_dw0_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_11_IRQHandler + B cpuss_interrupts_dw0_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_12_IRQHandler + B cpuss_interrupts_dw0_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_13_IRQHandler + B cpuss_interrupts_dw0_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_14_IRQHandler + B cpuss_interrupts_dw0_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw0_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw0_15_IRQHandler + B cpuss_interrupts_dw0_15_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_0_IRQHandler + B cpuss_interrupts_dw1_0_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_1_IRQHandler + B cpuss_interrupts_dw1_1_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_2_IRQHandler + B cpuss_interrupts_dw1_2_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_3_IRQHandler + B cpuss_interrupts_dw1_3_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_4_IRQHandler + B cpuss_interrupts_dw1_4_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_5_IRQHandler + B cpuss_interrupts_dw1_5_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_6_IRQHandler + B cpuss_interrupts_dw1_6_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_7_IRQHandler + B cpuss_interrupts_dw1_7_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_8_IRQHandler + B cpuss_interrupts_dw1_8_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_9_IRQHandler + B cpuss_interrupts_dw1_9_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_10_IRQHandler + B cpuss_interrupts_dw1_10_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_11_IRQHandler + B cpuss_interrupts_dw1_11_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_12_IRQHandler + B cpuss_interrupts_dw1_12_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_13_IRQHandler + B cpuss_interrupts_dw1_13_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_14_IRQHandler + B cpuss_interrupts_dw1_14_IRQHandler + + PUBWEAK cpuss_interrupts_dw1_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_dw1_15_IRQHandler + B cpuss_interrupts_dw1_15_IRQHandler + + PUBWEAK cpuss_interrupts_fault_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_0_IRQHandler + B cpuss_interrupts_fault_0_IRQHandler + + PUBWEAK cpuss_interrupts_fault_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_fault_1_IRQHandler + B cpuss_interrupts_fault_1_IRQHandler + + PUBWEAK cpuss_interrupt_crypto_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_crypto_IRQHandler + B cpuss_interrupt_crypto_IRQHandler + + PUBWEAK cpuss_interrupt_fm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupt_fm_IRQHandler + B cpuss_interrupt_fm_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_0_IRQHandler + B cpuss_interrupts_cm0_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm0_cti_1_IRQHandler + B cpuss_interrupts_cm0_cti_1_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_0_IRQHandler + B cpuss_interrupts_cm4_cti_0_IRQHandler + + PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +cpuss_interrupts_cm4_cti_1_IRQHandler + B cpuss_interrupts_cm4_cti_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_0_IRQHandler + B tcpwm_0_interrupts_0_IRQHandler + + PUBWEAK tcpwm_0_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_1_IRQHandler + B tcpwm_0_interrupts_1_IRQHandler + + PUBWEAK tcpwm_0_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_2_IRQHandler + B tcpwm_0_interrupts_2_IRQHandler + + PUBWEAK tcpwm_0_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_3_IRQHandler + B tcpwm_0_interrupts_3_IRQHandler + + PUBWEAK tcpwm_0_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_4_IRQHandler + B tcpwm_0_interrupts_4_IRQHandler + + PUBWEAK tcpwm_0_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_5_IRQHandler + B tcpwm_0_interrupts_5_IRQHandler + + PUBWEAK tcpwm_0_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_6_IRQHandler + B tcpwm_0_interrupts_6_IRQHandler + + PUBWEAK tcpwm_0_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_0_interrupts_7_IRQHandler + B tcpwm_0_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_0_IRQHandler + B tcpwm_1_interrupts_0_IRQHandler + + PUBWEAK tcpwm_1_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_1_IRQHandler + B tcpwm_1_interrupts_1_IRQHandler + + PUBWEAK tcpwm_1_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_2_IRQHandler + B tcpwm_1_interrupts_2_IRQHandler + + PUBWEAK tcpwm_1_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_3_IRQHandler + B tcpwm_1_interrupts_3_IRQHandler + + PUBWEAK tcpwm_1_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_4_IRQHandler + B tcpwm_1_interrupts_4_IRQHandler + + PUBWEAK tcpwm_1_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_5_IRQHandler + B tcpwm_1_interrupts_5_IRQHandler + + PUBWEAK tcpwm_1_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_6_IRQHandler + B tcpwm_1_interrupts_6_IRQHandler + + PUBWEAK tcpwm_1_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_7_IRQHandler + B tcpwm_1_interrupts_7_IRQHandler + + PUBWEAK tcpwm_1_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_8_IRQHandler + B tcpwm_1_interrupts_8_IRQHandler + + PUBWEAK tcpwm_1_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_9_IRQHandler + B tcpwm_1_interrupts_9_IRQHandler + + PUBWEAK tcpwm_1_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_10_IRQHandler + B tcpwm_1_interrupts_10_IRQHandler + + PUBWEAK tcpwm_1_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_11_IRQHandler + B tcpwm_1_interrupts_11_IRQHandler + + PUBWEAK tcpwm_1_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_12_IRQHandler + B tcpwm_1_interrupts_12_IRQHandler + + PUBWEAK tcpwm_1_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_13_IRQHandler + B tcpwm_1_interrupts_13_IRQHandler + + PUBWEAK tcpwm_1_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_14_IRQHandler + B tcpwm_1_interrupts_14_IRQHandler + + PUBWEAK tcpwm_1_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_15_IRQHandler + B tcpwm_1_interrupts_15_IRQHandler + + PUBWEAK tcpwm_1_interrupts_16_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_16_IRQHandler + B tcpwm_1_interrupts_16_IRQHandler + + PUBWEAK tcpwm_1_interrupts_17_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_17_IRQHandler + B tcpwm_1_interrupts_17_IRQHandler + + PUBWEAK tcpwm_1_interrupts_18_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_18_IRQHandler + B tcpwm_1_interrupts_18_IRQHandler + + PUBWEAK tcpwm_1_interrupts_19_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_19_IRQHandler + B tcpwm_1_interrupts_19_IRQHandler + + PUBWEAK tcpwm_1_interrupts_20_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_20_IRQHandler + B tcpwm_1_interrupts_20_IRQHandler + + PUBWEAK tcpwm_1_interrupts_21_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_21_IRQHandler + B tcpwm_1_interrupts_21_IRQHandler + + PUBWEAK tcpwm_1_interrupts_22_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_22_IRQHandler + B tcpwm_1_interrupts_22_IRQHandler + + PUBWEAK tcpwm_1_interrupts_23_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +tcpwm_1_interrupts_23_IRQHandler + B tcpwm_1_interrupts_23_IRQHandler + + PUBWEAK udb_interrupts_0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_0_IRQHandler + B udb_interrupts_0_IRQHandler + + PUBWEAK udb_interrupts_1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_1_IRQHandler + B udb_interrupts_1_IRQHandler + + PUBWEAK udb_interrupts_2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_2_IRQHandler + B udb_interrupts_2_IRQHandler + + PUBWEAK udb_interrupts_3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_3_IRQHandler + B udb_interrupts_3_IRQHandler + + PUBWEAK udb_interrupts_4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_4_IRQHandler + B udb_interrupts_4_IRQHandler + + PUBWEAK udb_interrupts_5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_5_IRQHandler + B udb_interrupts_5_IRQHandler + + PUBWEAK udb_interrupts_6_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_6_IRQHandler + B udb_interrupts_6_IRQHandler + + PUBWEAK udb_interrupts_7_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_7_IRQHandler + B udb_interrupts_7_IRQHandler + + PUBWEAK udb_interrupts_8_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_8_IRQHandler + B udb_interrupts_8_IRQHandler + + PUBWEAK udb_interrupts_9_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_9_IRQHandler + B udb_interrupts_9_IRQHandler + + PUBWEAK udb_interrupts_10_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_10_IRQHandler + B udb_interrupts_10_IRQHandler + + PUBWEAK udb_interrupts_11_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_11_IRQHandler + B udb_interrupts_11_IRQHandler + + PUBWEAK udb_interrupts_12_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_12_IRQHandler + B udb_interrupts_12_IRQHandler + + PUBWEAK udb_interrupts_13_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_13_IRQHandler + B udb_interrupts_13_IRQHandler + + PUBWEAK udb_interrupts_14_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_14_IRQHandler + B udb_interrupts_14_IRQHandler + + PUBWEAK udb_interrupts_15_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +udb_interrupts_15_IRQHandler + B udb_interrupts_15_IRQHandler + + PUBWEAK pass_interrupt_sar_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_sar_IRQHandler + B pass_interrupt_sar_IRQHandler + + PUBWEAK audioss_interrupt_i2s_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_i2s_IRQHandler + B audioss_interrupt_i2s_IRQHandler + + PUBWEAK audioss_interrupt_pdm_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +audioss_interrupt_pdm_IRQHandler + B audioss_interrupt_pdm_IRQHandler + + PUBWEAK profile_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +profile_interrupt_IRQHandler + B profile_interrupt_IRQHandler + + PUBWEAK smif_interrupt_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +smif_interrupt_IRQHandler + B smif_interrupt_IRQHandler + + PUBWEAK usb_interrupt_hi_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_hi_IRQHandler + B usb_interrupt_hi_IRQHandler + + PUBWEAK usb_interrupt_med_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_med_IRQHandler + B usb_interrupt_med_IRQHandler + + PUBWEAK usb_interrupt_lo_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +usb_interrupt_lo_IRQHandler + B usb_interrupt_lo_IRQHandler + + PUBWEAK pass_interrupt_dacs_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +pass_interrupt_dacs_IRQHandler + B pass_interrupt_dacs_IRQHandler + + + END + + +; [] END OF FILE diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/LICENSE.txt b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/LICENSE.txt new file mode 100644 index 00000000000..7adfadddb21 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2018-2019 Cypress Semiconductor Corporation + +Permissive Binary License + +Version 1.0, September 2015 + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +1) Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. + +2) Unless to the extent explicitly permitted by law, no reverse + engineering, decompilation, or disassembly of this software is + permitted. + +3) Redistribution as part of a software development kit must include the + accompanying file named "DEPENDENCIES" and any dependencies listed in + that file. + +4) Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +Limited patent license. The copyright holders (and contributors) grant a +worldwide, non-exclusive, no-charge, royalty-free patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer this software, where such license applies only to those patent +claims licensable by the copyright holders (and contributors) that are +necessarily infringed by this software. This patent license shall not +apply to any combinations that include this software. No hardware is +licensed hereunder. + +If you institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the software +itself infringes your patent(s), then your rights granted under this +license shall terminate as of the date such litigation is filed. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/README.md new file mode 100644 index 00000000000..c4c2c82e613 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/README.md @@ -0,0 +1,18 @@ +README for pre-compiled PSoC 6 Cortex M0+ core images +===================================================== + +This folder contains precompiled program images for the CM0+ core of the +PSoC 6 MCU suitable for use with Mbed OS applications running on CM4 core. + +* `psoc6_01_cm0p_sleep.hex` + + This image starts CM4 core at CY_CORTEX_M4_APPL_ADDR=0x10080000 + and puts CM0+ core into a deep sleep. + +The images are 'bare metal' code prepared with Cypress ModusToolbox IDE +and are toolchain agnostic, i.e. can be used with CM4 Mbed applications +build with any supported toolchain. + +**These images were prepared by Cypress Semiconductor Corporation +and are made available under the conditions of Permissive Binary Licence, +see file LICENSE.txt** diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/psoc6_01_cm0p_sleep.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/psoc6_01_cm0p_sleep.hex new file mode 100644 index 00000000000..58b7e756cbb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/hex/psoc6_01_cm0p_sleep.hex @@ -0,0 +1,106 @@ +:020000041000EA +:40000000002000080B0100100D0000006D01001000000000000000000000000000000000000000000000000000000000690100100000000000000000690100106901001083 +:4000400069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010E0 +:4000800069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010690100106901001069010010A0 +:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD6C050008000000000C150010044B10B5002B03D00349044800E000BF10BDC04600000000C9 +:40010000700500080C1500107047FFF7FDFF72B60F4C104DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E70A490B4A0020521A02DD043A8850FCDC084809495F +:400140000860BFF34F8F00F0F1F800F099F9FEE710150010281500106C0500087C0700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880B8 +:40018000043000F0DBFDFEE710B5002000F040FC10BD7047E02370B5544C9B00E2580F23D02113409A0089001219505807210840032860D0042861D0424250414C4A40426B +:4001C00010404C4A8018002B67D1B223B1220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233F4ADB00E558A158EC +:40020000E658C904C90C00F051FFAD03AD0B6843F101C90F013100F049FFE0239B00E3589B069B0FD840354B1860354B1C691969240A090E013100F039FF324BE1B2186075 +:40024000013100F033FF304B040018602F4B30491860304BC01800F029FFFA212E4B890018702E4BE01800F021FF2D4B18602D4BC003186070BD2C4A1068A4E7C021890084 +:4002800052581F210A40112A01D0132A02D18020000298E7FA20C00195E7012BBDD1C823C0220321DB00D200E558A358A6581B0F360F0B400E4204D0A258120F0A40012A7A +:4002C00001D1EA0701D4032BA7D1C022D200A358A158A5587F221F261340090A3140584300F0E4FE290C314095E7C0460000264000DC0BFF00366E0184050000C80000087F +:4003000000002140CC000008C0000008D400000840420F003F420F00DC000008E7030000D8000008D0000008C400000810B5244800F0C2F8B022E0213020224CD200A35838 +:4003400089005B005B08A35063588343635080235B04A3501C4B1D4AE250A02204339201E250FF221A4BE25000F08EFEC02201215200A3588B43A350FFF70BFFFFF70AFF17 +:40038000B0235B055A78002A02D05B78212B03D10022104BDA605A600F4A8021042000F09FFB0E4800F09EF90D4B1B6851331B78002B02D00B4800F001FA00F035F910BD3B +:4003C0005C1200100000264084050000010002008C050000E000234088050008980500087807000828120010024BD86F032318407047C0460400214010B500F056F8074927 +:40040000074ACB6F1A40074B1343CB67102306490A681A42FCD000F04CF810BD04002140FCFF00000100FA058800214070B50F4C060000F03AF8E36F0500DB439B0701D106 +:40044000FFF7DAFFB0230A4A9B00D650E36F094A09491A40094B1343E36710230A681A42FCD0280000F025F870BDC0460400214000002140FCFF0000880021400300FA059F +:4004800010B562B60348FFF7D1FF002000F066FDFBE7C046002000100230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047014B18607047C046A7 +:4004C000780700081D4B98420FD010D840282FD005D8002830D0102828D019481EE0802828D080235B009842F7D1144816E0154B984214D008D8A0231B0698421CD0124BDA +:400500009842EAD1A0200BE0104B98420AD0104B984209D00F4B9842DFD10F487047A420C003FBE70D48F9E70D48F7E70D48F5E70D48F3E70D48F1E70020EFE706005200C0 +:40054000FF005200010000F0090000A0040000F0050000F0030000F001005200020052000300520001005000020050000500520070B50A4D04002B6831331B78834204D813 +:40058000C4210748FF3100F0C9FB2B681A00B03210884443186A201870BDC046780700081413001010B50020FFF7E2FF0A4B1C682300B4331B68C0180368002B0ADB074B03 +:4005C0001868FFF77FFF012263689A609A68002AFCD110BD0248FCE77807000818070008020050000D4B10B51860002804D0FE235B42038000234380094B1B681A00503201 +:400600001278002A08D051331B78002B04D002220449002000F06EF910BDC04628070008780700084D01000810B50248FFF7DAFF10BDC0462C0700080B4B70B51B6805005A +:40064000B4331B680C00C3181B68002B09DA0B0C03D00649064800F061FB0020A4B26C6070BD0448FCE7C04678070008D50200001413001001008A00036870B505000C0060 +:40068000002B0ADAC2600B0C03D00549054800F045FB0020A4B2AC6070BD0348FCE7C046BB0200001413001001008A0070B505000C1E03D19921084800F030FB074B1B68D0 +:4006C000B4331B68EB181B68002B03DA0020EB68236070BD0248FCE77A1300107807000801008A00024B1A68002A00D11860704730070008F7B52C4D1F002B68040000915F +:400700000192002B03D1B521284800F007FB2C23FF225C432B683D001C193B0A3F0CA760234F134063603B681540256031331B789D4204D3C4211F48FF3100F0EFFA3B689A +:400740001A00B032128855431A6A3233AD1825611B7865689D4204D3E0211648FF3100F0DDFA3B6880351B6A6D01A668ED186561330C09D0FF210F4F4900380000F0CEFAB8 +:400780000D49380000F0CAFA33041A0C1343AB60019BE361009B23620023A361089B002B01D01B782373F7BD30070008DF1300107807000814130010FF010000F0B50400EE +:4007C00085B0002803D15221214800F0A7FA6368032B03D954211E4800F0A0FAE36A002B03D158211A4800F099FA236B002B03D15921174800F092FAA36802AD2B70154BE0 +:4008000022681B68E16ADB8EE0689B186B706368A26A039300952369266A676AFFF76AFF00213B000A0000913000FFF763FF216B280000F01FFA0023EB56002B06DB1F22E6 +:4008400013401E3A9A401300034A136005B0F0BDDF1300107807000800E100E0F7B504000F00151E019303D1FD211C4800F056FA1B4E3368002B03D1FE21184800F04EFA9E +:400880002C235C4332685F4314192669D719002E1FD0BB69002B1ED13368002B1BDA01226368140011009C407B6899402B6809049BB20B432B60019BF5607B62BA61230CC3 +:4008C00003D00849084800F029FA0020A4B2B460FEBD0648FCE70648FAE7C046DF13001030070008BB0200001413001004028A0007028A00F8B5114F04003B680E00150097 +:40090000002B04D1AF210E48490000F007FA2C2060433C682418236A002B04D1B1210848490000F0FBF9E369AB4204D90020236AAD00EE50F8BD0348FCE7C04630070008D6 +:40094000DF1300100A028A00002373B504000193984204D1D2212C48FF3100F0DFF92369002B04D1E9212848490000F0D7F96369002B04D1D4212448FF3100F0CFF9236A3D +:40098000002B04D1EA212048490000F0C7F96269D5682B0C22D01B04136013681B4B20691B68B4331B68C3181B68002B16DA01A9FFF77CFE0026B0420CD10198E2690368DA +:4009C0001E0CDBB29A4205D9226A9B009B58002B00D0984731002069FFF72EFEADB2002D09D063691D6000251B68636AAB4205D098476562A56163691B6873BDA36A002B6E +:400A0000F8D09847F6E7C046DF1300107807000870B5084C05002368002B04D1B2210648FF3100F07BF92C20454320684019FFF78BFF70BD30070008DF13001070B50A4DC6 +:400A400004002B6831331B78834204D8C4210748FF3100F063F92B681A00B03210884443186A201870BDC0467807000814130010F8B5174B0D001B6831331B78834225D9E5 +:400A8000002923D01F240B681C401FD1FFF7D6FF07002B680F4EDA0821003060686800F091FB21003800FFF7C7FD21002A003068FFF7E2FD041E07D101003068FFF7BCFD6A +:400AC00003002000002B00D00348F8BD0348FCE7780700083C07000801018A0003018A0010B50C00002A07D100290DD1FFF7A6FF064B1860200010BD002905D004490C60DC +:400B00004A60FFF7B5FFF6E70248F4E73C0700083407000803018A00F7B5184F04003B680191DE683368834226D90025A94202D1FFF7BBFC050038680368002B1ADA1F2252 +:400B400001232240934064097268A4001419226813420DD09A43226000240021FFF76CFD019B002B02D12800FFF7A3FC2000FEBD034CF2E7034CF3E7034CF7E73C0700084A +:400B8000020188000301880004018A000A4B1B68DB681A6882420DD959681F23420918401E3B8340920050581840431E9841034BC01870470248FCE73C07000800018800DC +:400BC00004018A0070B51A4E050033680C001A0028321278012A15D182080721100088430FD103202840C00084401B68920020339B182200FF24844019684A4014404C4093 +:400C00001C6070BD5B8FDBB28B4203D17621094800F084F80720802205408020336892011B680006A4180543A400E550E9E7C04678070008451400100A4B70B59B680A4EC2 +:400C400010300D008400B34209D1002904D138210648FF3100F062F83059355170BD044B1859FBE700ED00E0000000084514001000000010F8B506000D00002841D04368E5 +:400C8000032B03D93221204800F048F800203056002828DB7178FFF795FF0024FF2200200327944630567168C3B21F40FF006646BA4089013140D243B940002815DB134E38 +:400CC00083089B009B19C026B6009F593A40114399510F4B9A680F4B9A4202D12900FFF7ABFF2000F8BD0C4CD8E70F263340083B074E9B089B009B19DE6932401143D9613B +:400D0000E7E7054CEDE7C0464514001000E100E000ED00E0000000080100560070B50D00044C01001822200000F054FAA56101BEFEE7C04630050008FEE7000002680A4BB8 +:400D400010B5DA6142681A6282685A62C2689A620269DA6242691A6382695A63C2699A63FFF7EAFF10BDC04630050008B0235B055A782120002A01D05878C0B27047B023E6 +:400D80005B059A89002A02D0988980B2704780204000FBE710B5074C236831331B78002B04D1C4210448FF31FFF7B8FF2368186A10BDC046780700081413001030B50400B9 +:400DC00085B00D00042803D927492848FFF7A6FF6B1E012B07D9FB222B1F134203D024492248FFF79BFF234BA400E458042D01D0012D1AD100200FE0A3682B420BD1E3688C +:400E000029001A685B6802920193039302A823689847194B1C606469002C04D0174B9842EAD1012DE8D105B030BD022D06D1124B1B68181EF7D01C6903E01C006369002BE7 +:400E4000FBD10020002CEED0A3682B4209D1E36829001A685B6802920193039302A8236898472469EEE7C046DC090000A9140010DD0900004407000840070008FF004200DC +:400E800010B5041E03D111491148FFF747FFF222104BD2011B68DB689A582260F022D2019A5862600C4A9A58A2600C4A9A58E2600B4A9A5822610B4A9A5862610A4A9A5885 +:400EC000A2610A4A9B58E36110BDC046CB0A0000A91400107807000804780000087800000C78000010780000147800001878000010B5041E03D110491048FFF70FFFF022C2 +:400F00000F4B61681B68D201DB689950A1680D4A9950E1680C4A995021690C4A995061690B4A9950A1690B4A9950E1690A4A99502168E832995010BDF30A0000A914001078 +:400F40007807000804780000087800000C780000107800001478000018780000F7B50700012803D940494148FFF7D8FE404D6B68002B4AD1FFF799FA6B680190002B56D14B +:400F80003C4E33681A0043321278002A07D09B68E0331B68DB0602D53748FFF771FFFFF7EEFE80235B00984246D1380000F034F9002433681A0043321278002A17D0002885 +:400FC00015D09B68E0331B68DB0610D5FFF7CEFE294B212808D032681300B033198807234B43126A9B18DB681800FFF781FF0198FFF75FFA002C0ED16B68002B03D0082180 +:401000000120FFF7DBFE2000FEBD01210800FFF7D5FE041EAED06B68002B03D002210120FFF7CCFE154B9C42EDD0154CEBE704210120FFF7C3FEA3E7FFF7ACFE3368B433A6 +:401040001B68C0180368002B0BDB04230D4A11690B431361012F02D030BF0020A8E720BFFBE70020054CA4E7A5020000A91400104407000878070008580700080500420086 +:40108000FF00420000ED00E0C0228020064952008B58C0059B009B0803438B50802388581B0603438B50704700002640002243088B4274D303098B425FD3030A8B4244D399 +:4010C000030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241C3 +:40110000430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4289 +:4011400001D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D37E +:40118000CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D076E77047A8 +:4011C0007047C04603001218934200D1704719700133F9E730B50500002A00D130BD0C78013A6B1C2C700131002C05D19A189A42F4D01C700133FAE71D00EDE7F8B5C0468C +:40120000F8BC08BC9E467047F8B5C046F8BC08BC9E4670470000000001B40248844601BC604700BFA9020008030000000100000001000000000000000503600004000000C5 +:401240000100000000000000010000000604600008000000F8060008890100100000214000002540000001400000344000002440000031400000324000001F4100002340D5 +:4012800000001140010101010101010101101010800019005500F0000501053B04101C01010000000FC000000004000001010101011D3A5778960008200010120800000068 +:4012C000001F00000010000F002000023F06080E00080009000A000B24282C3034000000100000009000000088000000080000008000000004F0000000F00000400200005B +:401300002005A000D00100018001A0012000000010000000433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736FB1 +:40134000633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F696E636C7564652F63795F6970635F6472762E6800433A2F5573655D +:4013800072732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670B4 +:4013C000646C2F647269766572732F736F757263652F63795F6970635F6472762E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69A3 +:40140000627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263652F63795F6970635F706968 +:4014400070652E6300433A2F55736572732F766D65642F4D6F647573546F6F6C626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6EF8 +:40148000656E74732F70736F633670646C2F647269766572732F736F757263652F63795F737973696E742E6300433A2F55736572732F766D65642F4D6F647573546F6F6C17 +:4014C000626F785F312E312F6C69627261726965732F70736F633673772D312E312F636F6D706F6E656E74732F70736F633670646C2F647269766572732F736F757263654A +:401500002F63795F737973706D2E6300000000000000001000000008C000000030150010C0000008700400006C0500081002000000093D000048E80100127A0000093D0037 +:401540000000D00700093D00A00F000004000000E9000010C100001080B230B5C00020D0104B07221C682300B0331B885A43236AD31819680029FCDA3E210B4B062519606B +:401580000A4B0B491960A3210A4BC9005D500A4958505858206A1218002050605A58002AFCDA30BD7807000804012640080126401E1F0000000026401C05000010B5437807 +:4015C000FF2B11D100F0CCF90400042000F0A8F9C3685A68012311681943116011681942FCD1200000F0C4F910BDF7B500900020019100F095F93F4D06002B681A005033B1 +:40160000B43214681B780419002B5AD000F090F9070003281BD000F0A3F9374A374B0500D358002B3EDA364A0121300000F0A8F9002837D10198FFF78FFF009B002B3ED027 +:401640002368002BFCDB00F07BF904002BE0062000F066F92B68B4331B68C0180368002B02DA284C2000FEBD002000F091F9264B9842F6D00023254A19001268012000F07E +:4016800047F90025A842ECD1002000F081F91E4A1F4B904203D09D42E3D00135F4E79D42B9D1DEE7174C032F05D10121002000F04FF90028F9D1280000F05AF9D2E7154CF0 +:4016C000F1E700F04DF90E4A05000121300000F057F9002809D1009B002B08D02368002BFCDB00F02DF90400E5E7064CE3E7094CE1E7C04678070008000026401C0500008D +:4017000018070008050052000101880028070008F049020001005000F7B56E4D04002A68536800931300B033198807234B43126A9B181A68002AFCDA00F0E2F82A68130024 +:40174000B033198807234B43212800D096E0116A5B180221D8680143D960D968C9072FD508208446944460461600D968C06F01911168883608183568076849190D683902BE +:40178000FF273F040F40694689882D0A2D0639432943D960902103684F4D09012B400B430360136830681B18186805402943196013686246D26F9A18126832689B181B68F8 +:4017C000444D2A681300B033198807234B43126A9B1800225A600423404A11690B431361012C50D030BF2A681300B033198807234B43126A9B181A68002AFCDA00F080F849 +:40180000212842D1296807220B000124B0331B8800205A430B6AD318DD6825421CD0080008300D68C06F2C4E28180568DB6835401B0C1B061B0C2B4303600B0088331868DE +:401840000B6818180B6A0568D318DB682E401B0E1B023343036020000B6A0221D218D3688B43D3601B4B1A681300B033198807234B43126A9B1800225A60FEBD126A9B181E +:40188000174ADA609CE720BFADE70020009BFC331B698342E6D1A320124B1349134A144FC0000E681D5814680F6006271F503E20106010483E371F501F58002FFCDA009821 +:4018C0000D4FFC3007610E60A321C9005D5001201460C7E778070008FF00FFFF00ED00E0580700080000264008012640040126401E1F00001C050000AAAAAAAA000000000F +:4019000001B40248844601BC604700BF6D0D001001B40248844601BC604700BF5D08001001B40248844601BC604700BF7105001001B40248844601BC604700BFE903001076 +:4019400001B40248844601BC604700BFA505001001B40248844601BC604700BF190B001001B40248844601BC604700BFAB04001001B40248844601BC604700BFB304001043 +:4019800001B40248844601BC604700BF7906001001B40248844601BC604700BF8D0B0010000000000000000000000000000000000000000000000000000000000000000018 +:4019C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7 +:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6.h new file mode 100644 index 00000000000..6dcb0ce124d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6.h @@ -0,0 +1,669 @@ +/***************************************************************************//** +* \file system_psoc6.h +* \version 2.30 +* +* \brief Device system header file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#ifndef _SYSTEM_PSOC6_H_ +#define _SYSTEM_PSOC6_H_ + +/** +* \addtogroup group_system_config +* \{ +* Provides device startup, system configuration, and linker script files. +* The system startup provides the followings features: +* - See \ref group_system_config_device_initialization for the: +* * \ref group_system_config_dual_core_device_initialization +* * \ref group_system_config_single_core_device_initialization +* - \ref group_system_config_device_memory_definition +* - \ref group_system_config_heap_stack_config +* - \ref group_system_config_merge_apps +* - \ref group_system_config_default_handlers +* - \ref group_system_config_device_vector_table +* - \ref group_system_config_cm4_functions +* +* \section group_system_config_configuration Configuration Considerations +* +* \subsection group_system_config_device_memory_definition Device Memory Definition +* The flash and RAM allocation for each CPU is defined by the linker scripts. +* For dual-core devices, the physical flash and RAM memory is shared between the CPU cores. +* 2 KB of RAM (allocated at the end of RAM) are reserved for system use. +* For Single-Core devices the system reserves additional 80 bytes of RAM. +* Using the reserved memory area for other purposes will lead to unexpected behavior. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see warnings during the build process. To eliminate build +* warnings in your project, you can simply comment out or remove the relevant +* code in the linker file. +* +* ARM GCC\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.ld', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.ld' and 'cy8c6xx7_cm4_dual.ld'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10000000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00024000 +* \endcode +* - 'xx_cm4_dual.ld', where 'xx' is the device group: +* \code +* flash (rx) : ORIGIN = 0x10080000, LENGTH = 0x00080000 +* ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the rom ORIGIN's +* value in the 'xx_cm4_dual.ld' file, where 'xx' is the device group. Do this +* by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* ARM MDK\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.scat', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.scat' and 'cy8c6xx7_cm4_dual.scat'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* \note The linker files provided with the PDL are generic and handle all common +* use cases. Your project may not use every section defined in the linker files. +* In that case you may see the warnings during the build process: +* L6314W (no section matches pattern) and/or L6329W +* (pattern only matches removed unused sections). In your project, you can +* suppress the warning by passing the "--diag_suppress=L6314W,L6329W" option to +* the linker. You can also comment out or remove the relevant code in the linker +* file. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10000000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08000000 +* #define RAM_SIZE 0x00024000 +* \endcode +* - 'xx_cm4_dual.scat', where 'xx' is the device group: +* \code +* #define FLASH_START 0x10080000 +* #define FLASH_SIZE 0x00080000 +* #define RAM_START 0x08024000 +* #define RAM_SIZE 0x00023800 +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the FLASH_START +* value in the 'xx_cm4_dual.scat' file, +* where 'xx' is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* IAR\n +* The flash and RAM sections for the CPU are defined in the linker files: +* 'xx_yy.icf', where 'xx' is the device group, and 'yy' is the target CPU; for example, +* 'cy8c6xx7_cm0plus.icf' and 'cy8c6xx7_cm4_dual.icf'. +* \note If the start of the Cortex-M4 application image is changed, the value +* of the of the \ref CY_CORTEX_M4_APPL_ADDR should also be changed. The +* \ref CY_CORTEX_M4_APPL_ADDR macro should be used as the parameter for the \ref +* Cy_SysEnableCM4() function call. +* +* Change the flash and RAM sizes by editing the macros value in the +* linker files for both CPUs: +* - 'xx_cm0plus.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10000000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10080000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08000000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08024000; +* \endcode +* - 'xx_cm4_dual.icf', where 'xx' is the device group: +* \code +* define symbol __ICFEDIT_region_IROM1_start__ = 0x10080000; +* define symbol __ICFEDIT_region_IROM1_end__ = 0x10100000; +* define symbol __ICFEDIT_region_IRAM1_start__ = 0x08024000; +* define symbol __ICFEDIT_region_IRAM1_end__ = 0x08047800; +* \endcode +* +* Change the value of the \ref CY_CORTEX_M4_APPL_ADDR macro to the +* __ICFEDIT_region_IROM1_start__ value in the 'xx_cm4_dual.icf' file, where 'xx' +* is the device group. Do this by either: +* - Passing the following commands to the compiler:\n +* \code -D CY_CORTEX_M4_APPL_ADDR=0x10080000 \endcode +* - Editing the \ref CY_CORTEX_M4_APPL_ADDR value in the 'system_xx.h', where +* 'xx' is device family:\n +* \code #define CY_CORTEX_M4_APPL_ADDR (0x10080000u) \endcode +* +* \subsection group_system_config_device_initialization Device Initialization +* After a power-on-reset (POR), the boot process is handled by the boot code +* from the on-chip ROM that is always executed by the Cortex-M0+ core. The boot +* code passes the control to the Cortex-M0+ startup code located in flash. +* +* \subsubsection group_system_config_dual_core_device_initialization Dual-Core Devices +* The Cortex-M0+ startup code performs the device initialization by a call to +* SystemInit() and then calls the main() function. The Cortex-M4 core is disabled +* by default. Enable the core using the \ref Cy_SysEnableCM4() function. +* See \ref group_system_config_cm4_functions for more details. +* \note Startup code executes SystemInit() function for the both Cortex-M0+ and Cortex-M4 cores. +* The function has a separate implementation on each core. +* Both function implementations unlock and disable the WDT. +* Therefore enable the WDT after both cores have been initialized. +* +* \subsubsection group_system_config_single_core_device_initialization Single-Core Devices +* The Cortex-M0+ core is not user-accessible on these devices. In this case the +* Flash Boot handles setup of the CM0+ core and starts the Cortex-M4 core. +* +* \subsection group_system_config_heap_stack_config Heap and Stack Configuration +* There are two ways to adjust heap and stack configurations: +* -# Editing source code files +* -# Specifying via command line +* +* By default, the stack size is set to 0x00001000 and the heap size is set to 0x00000400. +* +* \subsubsection group_system_config_heap_stack_config_gcc ARM GCC +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* Change the heap and stack sizes by modifying the following lines:\n +* \code .equ Stack_Size, 0x00001000 \endcode +* \code .equ Heap_Size, 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the compiler:\n +* \code -D __STACK_SIZE=0x000000400 \endcode +* \code -D __HEAP_SIZE=0x000000100 \endcode +* +* \subsubsection group_system_config_heap_stack_config_mdk ARM MDK +* - Editing source code files\n +* The heap and stack sizes are defined in the assembler startup files +* (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the assembler:\n +* \code "--predefine=___STACK_SIZE SETA 0x000000400" \endcode +* \code "--predefine=__HEAP_SIZE SETA 0x000000100" \endcode +* +* \subsubsection group_system_config_heap_stack_config_iar IAR +* - Editing source code files\n +* The heap and stack sizes are defined in the linker scatter files: 'xx_yy.icf', +* where 'xx' is the device family, and 'yy' is the target CPU; for example, +* cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* Change the heap and stack sizes by modifying the following lines:\n +* \code Stack_Size EQU 0x00001000 \endcode +* \code Heap_Size EQU 0x00000400 \endcode +* +* - Specifying via command line\n +* Change the heap and stack sizes passing the following commands to the +* linker (including quotation marks):\n +* \code --define_symbol __STACK_SIZE=0x000000400 \endcode +* \code --define_symbol __HEAP_SIZE=0x000000100 \endcode +* +* \subsection group_system_config_merge_apps Merging CM0+ and CM4 Executables +* The CM0+ project and linker script build the CM0+ application image. Similarly, +* the CM4 linker script builds the CM4 application image. Each specifies +* locations, sizes, and contents of sections in memory. See +* \ref group_system_config_device_memory_definition for the symbols and default +* values. +* +* The cymcuelftool is invoked by a post-build command. The precise project +* setting is IDE-specific. +* +* The cymcuelftool combines the two executables. The tool examines the +* executables to ensure that memory regions either do not overlap, or contain +* identical bytes (shared). If there are no problems, it creates a new ELF file +* with the merged image, without changing any of the addresses or data. +* +* \subsection group_system_config_default_handlers Default Interrupt Handlers Definition +* The default interrupt handler functions are defined as weak functions to a dummy +* handler in the startup file. The naming convention for the interrupt handler names +* is \_IRQHandler. A default interrupt handler can be overwritten in +* user code by defining the handler function using the same name. For example: +* \code +* void scb_0_interrupt_IRQHandler(void) +*{ +* ... +*} +* \endcode +* +* \subsection group_system_config_device_vector_table Vectors Table Copy from Flash to RAM +* This process uses memory sections defined in the linker script. The startup +* code actually defines the contents of the vector table and performs the copy. +* \subsubsection group_system_config_device_vector_table_gcc ARM GCC +* The linker script file is 'xx_yy.ld', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.ld and cy8c6xx7_cm4_dual.ld. +* It defines sections and locations in memory.\n +* Copy interrupt vectors from flash to RAM: \n +* From: \code LONG (__Vectors) \endcode +* To: \code LONG (__ram_vectors_start__) \endcode +* Size: \code LONG (__Vectors_End - __Vectors) \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.S and startup_psoc6_01_cm4.S). +* The code in these files copies the vector table from Flash to RAM. +* \subsubsection group_system_config_device_vector_table_mdk ARM MDK +* The linker script file is 'xx_yy.scat', where 'xx' is the device family, +* and 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.scat and +* cy8c6xx7_cm4_dual.scat. The linker script specifies that the vector table +* (RESET_RAM) shall be first in the RAM section.\n +* RESET_RAM represents the vector table. It is defined in the assembler startup +* files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \subsubsection group_system_config_device_vector_table_iar IAR +* The linker script file is 'xx_yy.icf', where 'xx' is the device family, and +* 'yy' is the target CPU; for example, cy8c6xx7_cm0plus.icf and cy8c6xx7_cm4_dual.icf. +* This file defines the .intvec_ram section and its location. +* \code place at start of IRAM1_region { readwrite section .intvec_ram}; \endcode +* The vector table address (and the vector table itself) are defined in the +* assembler startup files (e.g. startup_psoc6_01_cm0plus.s and startup_psoc6_01_cm4.s). +* The code in these files copies the vector table from Flash to RAM. +* +* \section group_system_config_more_information More Information +* Refer to the PDL User Guide for the +* more details. +* +* \section group_system_config_MISRA MISRA Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
2.3RThe character sequence // shall not be used within a comment.The comments provide a useful WEB link to the documentation.
+* +* \section group_system_config_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.30Added assembler files, linker skripts for Mbed OS.Added Arm Mbed OS embedded operating system support.
Updated linker scripts to extend the Flash and Ram memories size available for the CM4 core.Enhanced PDL usability.
2.20Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup.Changed the IPC driver configuration method from compile time to run time.
2.10Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* uVision Debugger support.
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* Documentation improvement.
2.0Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +*
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* Linker scripts usability improvement.
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API.Reserved system resources for internal operations.
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API.To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering.
1.0Initial version
+* +* +* \defgroup group_system_config_macro Macro +* \{ +* \defgroup group_system_config_system_macro System +* \defgroup group_system_config_cm4_status_macro Cortex-M4 Status +* \defgroup group_system_config_user_settings_macro User Settings +* \} +* \defgroup group_system_config_functions Functions +* \{ +* \defgroup group_system_config_system_functions System +* \defgroup group_system_config_cm4_functions Cortex-M4 Control +* \} +* \defgroup group_system_config_globals Global Variables +* +* \} +*/ + +/** +* \addtogroup group_system_config_system_functions +* \{ +* \details +* The following system functions implement CMSIS Core functions. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* \} +*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************************* +* Include files +*******************************************************************************/ +#include + + +/******************************************************************************* +* Global preprocessor symbols/macros ('define') +*******************************************************************************/ +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined (__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3))) + #define CY_SYSTEM_CPU_CM0P 1UL +#else + #define CY_SYSTEM_CPU_CM0P 0UL +#endif + +#if defined (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) + #include "cyfitter.h" +#endif /* (CY_PSOC_CREATOR_USED) && (CY_PSOC_CREATOR_USED == 1U) */ + + + + +/******************************************************************************* +* +* START OF USER SETTINGS HERE +* =========================== +* +* All lines with '<<<' can be set by user. +* +*******************************************************************************/ + +/** +* \addtogroup group_system_config_user_settings_macro +* \{ +*/ + +#if defined (CYDEV_CLK_EXTCLK__HZ) + #define CY_CLK_EXT_FREQ_HZ (CYDEV_CLK_EXTCLK__HZ) +#else + /***************************************************************************//** + * External Clock Frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_EXT_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_EXTCLK__HZ) */ + + +#if defined (CYDEV_CLK_ECO__HZ) + #define CY_CLK_ECO_FREQ_HZ (CYDEV_CLK_ECO__HZ) +#else + /***************************************************************************//** + * \brief External crystal oscillator frequency (in Hz, [value]UL). If compiled + * within PSoC Creator and the clock is enabled in the DWR, the value from DWR + * used. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ECO_FREQ_HZ (24000000UL) /* <<< 24 MHz */ +#endif /* (CYDEV_CLK_ECO__HZ) */ + + +#if defined (CYDEV_CLK_ALTHF__HZ) + #define CY_CLK_ALTHF_FREQ_HZ (CYDEV_CLK_ALTHF__HZ) +#else + /***************************************************************************//** + * \brief Alternate high frequency (in Hz, [value]UL). If compiled within + * PSoC Creator and the clock is enabled in the DWR, the value from DWR used. + * Otherwise, edit the value below. + * (USER SETTING) + *******************************************************************************/ + #define CY_CLK_ALTHF_FREQ_HZ (32000000UL) /* <<< 32 MHz */ +#endif /* (CYDEV_CLK_ALTHF__HZ) */ + + +/***************************************************************************//** +* \brief Start address of the Cortex-M4 application ([address]UL) +* (USER SETTING) +*******************************************************************************/ +#if !defined (CY_CORTEX_M4_APPL_ADDR) + #define CY_CORTEX_M4_APPL_ADDR (CY_FLASH_BASE + 0x2000U) /* <<< 8 kB of flash is reserved for the Cortex-M0+ application */ +#endif /* (CY_CORTEX_M4_APPL_ADDR) */ + + +/***************************************************************************//** +* \brief IPC Semaphores allocation ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_SEMA_COUNT (128UL) /* <<< This will allow 128 (4*32) semaphores */ + + +/***************************************************************************//** +* \brief IPC Pipe definitions ([value]UL). +* (USER SETTING) +*******************************************************************************/ +#define CY_IPC_MAX_ENDPOINTS (8UL) /* <<< 8 endpoints */ + + +/******************************************************************************* +* +* END OF USER SETTINGS HERE +* ========================= +* +*******************************************************************************/ + +/** \} group_system_config_user_settings_macro */ + + +/** +* \addtogroup group_system_config_system_macro +* \{ +*/ + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M0+ startup driver identifier */ + #define CY_STARTUP_M0P_ID ((uint32_t)((uint32_t)((0x0EU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + +#if (CY_SYSTEM_CPU_CM0P != 1UL) || defined(CY_DOXYGEN) + /** The Cortex-M4 startup driver identifier */ + #define CY_STARTUP_M4_ID ((uint32_t)((uint32_t)((0x0FU) & 0x3FFFU) << 18U)) +#endif /* (CY_SYSTEM_CPU_CM0P != 1UL) */ + +/** \} group_system_config_system_macro */ + + +/** +* \addtogroup group_system_config_system_functions +* \{ +*/ +#if defined(__ARMCC_VERSION) + extern void SystemInit(void) __attribute__((constructor)); +#else + extern void SystemInit(void); +#endif /* (__ARMCC_VERSION) */ + +extern void SystemCoreClockUpdate(void); +/** \} group_system_config_system_functions */ + + +/** +* \addtogroup group_system_config_cm4_functions +* \{ +*/ +extern uint32_t Cy_SysGetCM4Status(void); +extern void Cy_SysEnableCM4(uint32_t vectorTableOffset); +extern void Cy_SysDisableCM4(void); +extern void Cy_SysRetainCM4(void); +extern void Cy_SysResetCM4(void); +/** \} group_system_config_cm4_functions */ + + +/** \cond */ +extern void Default_Handler (void); + +void Cy_SysIpcPipeIsrCm0(void); +void Cy_SysIpcPipeIsrCm4(void); + +extern void Cy_SystemInit(void); +extern void Cy_SystemInitFpuEnable(void); + +extern uint32_t cy_delayFreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; +/** \endcond */ + + +#if (CY_SYSTEM_CPU_CM0P == 1UL) || defined(CY_DOXYGEN) +/** +* \addtogroup group_system_config_cm4_status_macro +* \{ +*/ +#define CY_SYS_CM4_STATUS_ENABLED (3U) /**< The Cortex-M4 core is enabled: power on, clock on, no isolate, no reset and no retain. */ +#define CY_SYS_CM4_STATUS_DISABLED (0U) /**< The Cortex-M4 core is disabled: power off, clock off, isolate, reset and no retain. */ +#define CY_SYS_CM4_STATUS_RETAINED (2U) /**< The Cortex-M4 core is retained. power off, clock off, isolate, no reset and retain. */ +#define CY_SYS_CM4_STATUS_RESET (1U) /**< The Cortex-M4 core is in the Reset mode: clock off, no isolated, no retain and reset. */ +/** \} group_system_config_cm4_status_macro */ + +#endif /* (CY_SYSTEM_CPU_CM0P == 1UL) */ + + +/******************************************************************************* +* IPC Configuration +* ========================= +*******************************************************************************/ +/* IPC CY_PIPE default configuration */ +#define CY_SYS_CYPIPE_CLIENT_CNT (8UL) + +#define CY_SYS_INTR_CYPIPE_MUX_EP0 (1UL) /* IPC CYPRESS PIPE */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP0 (1UL) /* Notifier Priority */ +#define CY_SYS_INTR_CYPIPE_PRIOR_EP1 (1UL) /* Notifier Priority */ + +#define CY_SYS_CYPIPE_CHAN_MASK_EP0 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CHAN_MASK_EP1 (0x0001UL << CY_IPC_CHAN_CYPIPE_EP1) + + +/******************************************************************************/ +/* + * The System pipe configuration defines the IPC channel number, interrupt + * number, and the pipe interrupt mask for the endpoint. + * + * The format of the endPoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ + +/* System Pipe addresses */ +/* CyPipe defines */ + +#define CY_SYS_CYPIPE_INTR_MASK ( CY_SYS_CYPIPE_CHAN_MASK_EP0 | CY_SYS_CYPIPE_CHAN_MASK_EP1 ) + +#define CY_SYS_CYPIPE_CONFIG_EP0 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP0 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP0) +#define CY_SYS_CYPIPE_CONFIG_EP1 ( (CY_SYS_CYPIPE_INTR_MASK << CY_IPC_PIPE_CFG_IMASK_Pos) \ + | (CY_IPC_INTR_CYPIPE_EP1 << CY_IPC_PIPE_CFG_INTR_Pos) \ + | CY_IPC_CHAN_CYPIPE_EP1) + +/******************************************************************************/ + + +/** \addtogroup group_system_config_globals +* \{ +*/ + +extern uint32_t SystemCoreClock; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_PeriClkFreqHz; + +/** \} group_system_config_globals */ + + + +/** \cond INTERNAL */ +/******************************************************************************* +* Backward compatibility macro. The following code is DEPRECATED and must +* not be used in new projects +*******************************************************************************/ + +/* BWC defines for functions related to enter/exit critical section */ +#define Cy_SaveIRQ Cy_SysLib_EnterCriticalSection +#define Cy_RestoreIRQ Cy_SysLib_ExitCriticalSection +#define CY_SYS_INTR_CYPIPE_EP0 (CY_IPC_INTR_CYPIPE_EP0) +#define CY_SYS_INTR_CYPIPE_EP1 (CY_IPC_INTR_CYPIPE_EP1) + +/** \endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYSTEM_PSOC6_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6_cm4.c b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6_cm4.c new file mode 100644 index 00000000000..da838b41236 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/device/system_psoc6_cm4.c @@ -0,0 +1,582 @@ +/***************************************************************************//** +* \file system_psoc6_cm4.c +* \version 2.30 +* +* The device system-source file. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "device.h" +#include "system_psoc6.h" +#include "cy_device_headers.h" +#include "psoc6_utils.h" +#include "cy_syslib.h" +#include "cy_wdt.h" +#include "cycfg.h" + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + #include "cy_ipc_sema.h" + #include "cy_ipc_pipe.h" + #include "cy_ipc_drv.h" + + #if defined(CY_DEVICE_PSOC6ABLE2) + #include "cy_flash.h" + #endif /* defined(CY_DEVICE_PSOC6ABLE2) */ +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ + + +/******************************************************************************* +* SystemCoreClockUpdate() +*******************************************************************************/ + +/** Default HFClk frequency in Hz */ +#define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL) + +/** Default PeriClk frequency in Hz */ +#define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL) + +/** Default SlowClk system core frequency in Hz */ +#define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL) + +/** IMO frequency in Hz */ +#define CY_CLK_IMO_FREQ_HZ (8000000UL) + +/** HVILO frequency in Hz */ +#define CY_CLK_HVILO_FREQ_HZ (32000UL) + +/** PILO frequency in Hz */ +#define CY_CLK_PILO_FREQ_HZ (32768UL) + +/** WCO frequency in Hz */ +#define CY_CLK_WCO_FREQ_HZ (32768UL) + +/** ALTLF frequency in Hz */ +#define CY_CLK_ALTLF_FREQ_HZ (32768UL) + + +/** +* Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock, +* which is the system clock frequency supplied to the SysTick timer and the +* processor core clock. +* This variable implements CMSIS Core global variable. +* Refer to the [CMSIS documentation] +* (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration") +* for more details. +* This variable can be used by debuggers to query the frequency +* of the debug timer or to configure the trace clock speed. +* +* \attention Compilers must be configured to avoid removing this variable in case +* the application program is not using it. Debugging systems require the variable +* to be physically present in memory so that it can be examined to configure the debugger. */ +uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +/** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT; + +/** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */ +uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT; + +/** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */ +#if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) + uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ; +#endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */ + +/* SCB->CPACR */ +#define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u) + + +/******************************************************************************* +* SystemInit() +*******************************************************************************/ + +/* CLK_FLL_CONFIG default values */ +#define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u) +#define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u) +#define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u) +#define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu) + + +/******************************************************************************* +* SystemCoreClockUpdate (void) +*******************************************************************************/ + +/* Do not use these definitions directly in your application */ +#define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u) +#define CY_DELAY_1K_THRESHOLD (1000u) +#define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u) +#define CY_DELAY_1M_THRESHOLD (1000000u) +#define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u) +uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT; + +uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / + CY_DELAY_1K_THRESHOLD; + +uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) / + CY_DELAY_1M_THRESHOLD); + +uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * + ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD); + +#define CY_ROOT_PATH_SRC_IMO (0UL) +#define CY_ROOT_PATH_SRC_EXT (1UL) +#if (SRSS_ECO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ECO (2UL) +#endif /* (SRSS_ECO_PRESENT == 1U) */ +#if (SRSS_ALTHF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_ALTHF (3UL) +#endif /* (SRSS_ALTHF_PRESENT == 1U) */ +#define CY_ROOT_PATH_SRC_DSI_MUX (4UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL) +#define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL) +#if (SRSS_ALTLF_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL) +#endif /* (SRSS_ALTLF_PRESENT == 1U) */ +#if (SRSS_PILO_PRESENT == 1U) + #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL) +#endif /* (SRSS_PILO_PRESENT == 1U) */ + + +/******************************************************************************* +* Function Name: SystemInit +****************************************************************************//** +* \cond +* Initializes the system: +* - Restores FLL registers to the default state for single core devices. +* - Unlocks and disables WDT. +* - Calls Cy_PDL_Init() function to define the driver library. +* - Calls the Cy_SystemInit() function, if compiled from PSoC Creator. +* - Calls \ref SystemCoreClockUpdate(). +* \endcond +*******************************************************************************/ +void SystemInit(void) +{ + Cy_PDL_Init(CY_DEVICE_CFG); + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Restore FLL registers to the default state as they are not restored by the ROM code */ + uint32_t copy = SRSS->CLK_FLL_CONFIG; + copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk; + SRSS->CLK_FLL_CONFIG = copy; + + copy = SRSS->CLK_ROOT_SELECT[0u]; + copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/ + SRSS->CLK_ROOT_SELECT[0u] = copy; + + SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE; + SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE; + SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE; + SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE; + + /* Unlock and disable WDT */ + Cy_WDT_Unlock(); + Cy_WDT_Disable(); + #endif /* (__CM0P_PRESENT == 0) */ +#endif /* __CM0P_PRESENT */ + + Cy_SystemInit(); + SystemCoreClockUpdate(); + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) + +#ifdef __CM0P_PRESENT + #if (__CM0P_PRESENT == 0) + /* Allocate and initialize semaphores for the system operations. */ + static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD]; + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray); + #else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); + #endif /* (__CM0P_PRESENT) */ +#else + (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL); +#endif /* __CM0P_PRESENT */ + + + /******************************************************************************** + * + * Initializes the system pipes. The system pipes are used by BLE and Flash. + * + * If the default startup file is not used, or SystemInit() is not called in your + * project, call the following three functions prior to executing any flash or + * EmEEPROM write or erase operation: + * -# Cy_IPC_Sema_Init() + * -# Cy_IPC_Pipe_Config() + * -# Cy_IPC_Pipe_Init() + * -# Cy_Flash_Init() + * + *******************************************************************************/ + /* Create an array of endpoint structures */ + static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS]; + + Cy_IPC_Pipe_Config(systemIpcPipeEpArray); + + static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT]; + + static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 = + { + /* .ep0ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0, + /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0 + }, + /* .ep1ConfigData */ + { + /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1, + /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1, + /* .ipcNotifierMuxNumber */ 0u, + /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR, + /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1 + }, + /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT, + /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray, + /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4 + }; + + if (cy_device->flashPipeRequired != 0u) + { + Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4); + } + +#if defined(CY_DEVICE_PSOC6ABLE2) + Cy_Flash_Init(); +#endif /* defined(CY_DEVICE_PSOC6ABLE2) */ + +#endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */ +} + + +/******************************************************************************* +* Function Name: mbed_sdk_init +****************************************************************************//** +* +* Mbed's post-memory-initialization function. +* Used here to initialize common parts of the Cypress libraries. +* +*******************************************************************************/ +void mbed_sdk_init(void) +{ + /* Initialize shared resource manager */ + cy_srm_initialize(); + + /* Initialize system and clocks. */ + /* Placed here as it must be done after proper LIBC initialization. */ + SystemInit(); + + /* Set up the device based on configurator selections */ + init_cycfg_all(); + + /* Enable global interrupts */ + __enable_irq(); +} + + + +/******************************************************************************* +* Function Name: Cy_SystemInit +****************************************************************************//** +* +* The function is called during device startup. Once project compiled as part of +* the PSoC Creator project, the Cy_SystemInit() function is generated by the +* PSoC Creator. +* +* The function generated by PSoC Creator performs all of the necessary device +* configuration based on the design settings. This includes settings from the +* Design Wide Resources (DWR) such as Clocks and Pins as well as any component +* configuration that is necessary. +* +*******************************************************************************/ +__WEAK void Cy_SystemInit(void) +{ + /* Empty weak function. The actual implementation to be in the PSoC Creator + * generated strong function. + */ +} + + +/******************************************************************************* +* Function Name: SystemCoreClockUpdate +****************************************************************************//** +* +* Gets core clock frequency and updates \ref SystemCoreClock, \ref +* cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz. +* +* Updates global variables used by the \ref Cy_SysLib_Delay(), \ref +* Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles(). +* +*******************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t srcFreqHz; + uint32_t pathFreqHz; + uint32_t fastClkDiv; + uint32_t periClkDiv; + uint32_t rootPath; + uint32_t srcClk; + + /* Get root path clock for the high-frequency clock # 0 */ + rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]); + + /* Get source of the root path clock */ + srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]); + + /* Get frequency of the source */ + switch (srcClk) + { + case CY_ROOT_PATH_SRC_IMO: + srcFreqHz = CY_CLK_IMO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_EXT: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + + #if (SRSS_ECO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ECO: + srcFreqHz = CY_CLK_ECO_FREQ_HZ; + break; + #endif /* (SRSS_ECO_PRESENT == 1U) */ + +#if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_ALTHF: + srcFreqHz = cy_BleEcoClockFreqHz; + break; +#endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */ + + case CY_ROOT_PATH_SRC_DSI_MUX: + { + uint32_t dsi_src; + dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]); + switch (dsi_src) + { + case CY_ROOT_PATH_SRC_DSI_MUX_HVILO: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + + case CY_ROOT_PATH_SRC_DSI_MUX_WCO: + srcFreqHz = CY_CLK_WCO_FREQ_HZ; + break; + + #if (SRSS_ALTLF_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF: + srcFreqHz = CY_CLK_ALTLF_FREQ_HZ; + break; + #endif /* (SRSS_ALTLF_PRESENT == 1U) */ + + #if (SRSS_PILO_PRESENT == 1U) + case CY_ROOT_PATH_SRC_DSI_MUX_PILO: + srcFreqHz = CY_CLK_PILO_FREQ_HZ; + break; + #endif /* (SRSS_PILO_PRESENT == 1U) */ + + default: + srcFreqHz = CY_CLK_HVILO_FREQ_HZ; + break; + } + } + break; + + default: + srcFreqHz = CY_CLK_EXT_FREQ_HZ; + break; + } + + if (rootPath == 0UL) + { + /* FLL */ + bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS)); + bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)); + bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) || + (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3))); + if ((fllOutputAuto && fllLocked) || fllOutputOutput) + { + uint32_t fllMult; + uint32_t refDiv; + uint32_t outputDiv; + + fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG); + refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2); + outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL; + + pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv; + } + else + { + pathFreqHz = srcFreqHz; + } + } + else if ((rootPath == 1UL) || (rootPath == 2UL)) + { + /* PLL */ + bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL])); + bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])); + bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) || + (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]))); + if ((pllOutputAuto && pllLocked) || pllOutputOutput) + { + uint32_t feedbackDiv; + uint32_t referenceDiv; + uint32_t outputDiv; + + feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]); + + pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv; + + } + else + { + pathFreqHz = srcFreqHz; + } + } + else + { + /* Direct */ + pathFreqHz = srcFreqHz; + } + + /* Get frequency after hf_clk pre-divider */ + pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]); + cy_Hfclk0FreqHz = pathFreqHz; + + /* Fast Clock Divider */ + fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL); + + /* Peripheral Clock Divider */ + periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL); + cy_PeriClkFreqHz = pathFreqHz / periClkDiv; + + pathFreqHz = pathFreqHz / fastClkDiv; + SystemCoreClock = pathFreqHz; + + /* Sets clock frequency for Delay API */ + cy_delayFreqHz = SystemCoreClock; + cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD); + cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD; + cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz; +} + + +/******************************************************************************* +* Function Name: Cy_SystemInitFpuEnable +****************************************************************************//** +* +* Enables the FPU if it is used. The function is called from the startup file. +* +*******************************************************************************/ +void Cy_SystemInitFpuEnable(void) +{ + #if defined (__FPU_USED) && (__FPU_USED == 1U) + uint32_t interruptState; + interruptState = Cy_SysLib_EnterCriticalSection(); + SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE; + __DSB(); + __ISB(); + Cy_SysLib_ExitCriticalSection(interruptState); + #endif /* (__FPU_USED) && (__FPU_USED == 1U) */ +} + + +#if !defined(CY_IPC_DEFAULT_CFG_DISABLE) +/******************************************************************************* +* Function Name: Cy_SysIpcPipeIsrCm4 +****************************************************************************//** +* +* This is the interrupt service routine for the system pipe. +* +*******************************************************************************/ +void Cy_SysIpcPipeIsrCm4(void) +{ + Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR); +} +#endif + +/******************************************************************************* +* Function Name: Cy_MemorySymbols +****************************************************************************//** +* +* The intention of the function is to declare boundaries of the memories for the +* MDK compilers. For the rest of the supported compilers, this is done using +* linker configuration files. The following symbols used by the cymcuelftool. +* +*******************************************************************************/ +#if defined (__ARMCC_VERSION) +__asm void Cy_MemorySymbols(void) +{ + /* Flash */ + EXPORT __cy_memory_0_start + EXPORT __cy_memory_0_length + EXPORT __cy_memory_0_row_size + + /* Working Flash */ + EXPORT __cy_memory_1_start + EXPORT __cy_memory_1_length + EXPORT __cy_memory_1_row_size + + /* Supervisory Flash */ + EXPORT __cy_memory_2_start + EXPORT __cy_memory_2_length + EXPORT __cy_memory_2_row_size + + /* XIP */ + EXPORT __cy_memory_3_start + EXPORT __cy_memory_3_length + EXPORT __cy_memory_3_row_size + + /* eFuse */ + EXPORT __cy_memory_4_start + EXPORT __cy_memory_4_length + EXPORT __cy_memory_4_row_size + + /* Flash */ +__cy_memory_0_start EQU __cpp(CY_FLASH_BASE) +__cy_memory_0_length EQU __cpp(CY_FLASH_SIZE) +__cy_memory_0_row_size EQU 0x200 + + /* Flash region for EEPROM emulation */ +__cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE) +__cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE) +__cy_memory_1_row_size EQU 0x200 + + /* Supervisory Flash */ +__cy_memory_2_start EQU __cpp(CY_SFLASH_BASE) +__cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE) +__cy_memory_2_row_size EQU 0x200 + + /* XIP */ +__cy_memory_3_start EQU __cpp(CY_XIP_BASE) +__cy_memory_3_length EQU __cpp(CY_XIP_SIZE) +__cy_memory_3_row_size EQU 0x200 + + /* eFuse */ +__cy_memory_4_start EQU __cpp(0x90700000) +__cy_memory_4_length EQU __cpp(0x100000) +__cy_memory_4_row_size EQU __cpp(1) +} + +#endif /* defined (__ARMCC_VERSION) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/psoc6_static_srm.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/psoc6_static_srm.h new file mode 100644 index 00000000000..b6a11a61b87 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CYW943012P6EVB_01/psoc6_static_srm.h @@ -0,0 +1,89 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + */ + +/* + * This file defines hardware resources reserved by device-generated code. These + * resources are accessed directly by the Peripheral Driver library (PDL). + * + * There are four classes of resources that must be declared here: + * 1 CYCFG_ASSIGNED_PORTS macro defines which ports and pins are reserved. + * You define these as a colon separated list of ports and pins reserved + * using macro SRM_PORT(port_num, pins), once for each reserved port. + * SRM_PORT macro arguments are port number (in the range 0 ... 14) and + * pins, which is a hex value with a bit set for each reserved pin on a port. + * + * 2 CYCFG_ASSIGNED_DIVIDERS macro defines which clock dividers are reserved. + * You define these as a colon separated list of dividers reserved + * using macro SRM_DIVIDER(type, reservations), once for each required + * divider type. + * SRM_DIVIDER arguments are divider type (one of cy_en_divider_types_t + * values) and reservations, which is a hex mask value with a bit set for + * each reserved divider of a given type. + * + * 3 CYCFG_ASSIGNED_SCBS macro defines which SCB blocks are reserved. + * You define these as a colon separated list of SCBs reserved using + * macro SRM_SCB(n), which argument is SCB number in a range 0 ... 7. + * + * 4 CYCFG_ASSIGNED_TCPWM macro defines which TCPWM blocks are reserved. + * You define these as a colon separated list of TCPWMs reserved using + * macro SRM_TCPWM(n), which argument is TCPWM number in a range 0 ... 31. + * + * Examples: + * #define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x30), SRM_PORT(5, 0x03) + * + * #define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x01) + * + * #define CYCFG_ASSIGNED_SCBS SRM_SCB(2) + * + * #define CYCFG_ASSIGNED_TCPWMS + * + */ + +/* P0_0 and P0_1 reserved for WCO, +* P1_0 reserved for CSD TX, +* P2_0 ... P2_5 reserved for SDHC +* P6-4, P6-6 and P6_7 reserved for SWD, +* P7_0 reserved for Debug trace CLK, +* P7_1, P7_2 and P7_7 reserved for CSD Capacitors +* P8_1 ... P8_7 reserved for CSD Buttons and Slider +* P9_0 ... P9_3 reserved for Debug Trace +* P11_2 ... P11_7 reserved for QSPI +* P12_6 ... P12_7 reserved for ECO +* P14_0 ... P14_1 reserved for USB +*/ +#define CYCFG_ASSIGNED_PORTS SRM_PORT(0, 0x03), SRM_PORT(1, 0x01),\ + SRM_PORT(2, 0x3f), SRM_PORT(6, 0xd0),\ + SRM_PORT(7, 0x86), SRM_PORT(8, 0xfe),\ + SRM_PORT(9, 0x0f), SRM_PORT(11, 0xfc),\ + SRM_PORT(12, 0xc0), SRM_PORT(14, 0x03) + +/* +* 8-bit divider 0 reserved for UDB +* 8-bit divider 4 reserved for CSD +* 16-bit divider 0 reserved for USB +*/ +#define CYCFG_ASSIGNED_DIVIDERS SRM_DIVIDER(CY_SYSCLK_DIV_8_BIT, 0x11), \ + SRM_DIVIDER(CY_SYSCLK_DIV_16_BIT, 0x01) + +#define CYCFG_ASSIGNED_SCBS + +#define CYCFG_ASSIGNED_TCPWMS + +/* End of File */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c index 9e57aa551b2..93df2f04c69 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +20,7 @@ #include "device.h" #include "analogin_api.h" #include "cy_sar.h" +#include "cy_sysanalog.h" #include "psoc6_utils.h" #include "mbed_assert.h" #include "mbed_error.h" @@ -41,6 +44,7 @@ const uint32_t SAR_BASE_CLOCK_HZ = 18000000; // 18 MHz or less CY_SAR_CHAN_SAMPLE_TIME_0 \ ) +#define CY_SAR_PORT_9 (9uL) /** Global SAR configuration data, modified as channels are configured. */ @@ -106,10 +110,14 @@ static void sar_init(analogin_t *obj) } Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, sar_clock_divider, - ((CY_CLK_PERICLK_FREQ_HZ + SAR_BASE_CLOCK_HZ / 2) / SAR_BASE_CLOCK_HZ) - 1); + ((cy_PeriClkFreqHz + SAR_BASE_CLOCK_HZ / 2) / SAR_BASE_CLOCK_HZ) - 1); Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, sar_clock_divider); Cy_SysClk_PeriphAssignDivider(obj->clock, CY_SYSCLK_DIV_8_BIT, sar_clock_divider); + /* Init and Enable the Analog Reference for SAR ADC operation */ + Cy_SysAnalog_Init(&Cy_SysAnalog_Fast_Local); + Cy_SysAnalog_Enable(); + Cy_SAR_Init(obj->base, &sar_config); Cy_SAR_Enable(obj->base); } @@ -123,21 +131,24 @@ void analogin_init(analogin_t *obj, PinName pin) MBED_ASSERT(obj); MBED_ASSERT(pin != (PinName)NC); - sar = pinmap_peripheral(pin, PinMap_ADC); if (sar != (uint32_t)NC) { - if (cy_reserve_io_pin(pin)) { + + if ((0 != cy_reserve_io_pin(pin)) && !sar_initialized) { error("ANALOG IN pin reservation conflict."); } - obj->base = (SAR_Type*)CY_PERIPHERAL_BASE(sar); + + /* Initialize object */ + obj->base = (SAR_Type *) CY_PERIPHERAL_BASE(sar); obj->pin = pin; obj->channel_mask = 1 << CY_PIN(pin); - // Configure clock. + /* Configure SAR hardware */ sar_function = pinmap_function(pin, PinMap_ADC); obj->clock = CY_PIN_CLOCK(sar_function); sar_init(obj); pin_function(pin, sar_function); + } else { error("ANALOG IN pinout mismatch."); } @@ -153,16 +164,41 @@ float analogin_read(analogin_t *obj) uint16_t analogin_read_u16(analogin_t *obj) { uint32_t result = 0; + uint32_t port = CY_PORT(obj->pin); + GPIO_PRT_Type *portPrt = Cy_GPIO_PortToAddr(port); Cy_SAR_SetChanMask(obj->base, obj->channel_mask); - Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, obj->channel_mask, CY_SAR_SWITCH_CLOSE); + + /* The port 10 uses the direct connection to the pin */ + if (CY_SAR_PORT_9 != port) { + /* Connect the SAR Vplus input to the pin directly */ + Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, obj->channel_mask, CY_SAR_SWITCH_CLOSE); + } else { + /* Connect the SAR Vplus input to the AMUXA bus */ + Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VPLUS_Msk, CY_SAR_SWITCH_CLOSE); + + /* Connect the AMUXA bus to the pin */ + Cy_GPIO_SetHSIOM(portPrt, CY_PIN(obj->pin), HSIOM_SEL_AMUXA); + } + Cy_SAR_StartConvert(obj->base, CY_SAR_START_CONVERT_SINGLE_SHOT); if (Cy_SAR_IsEndConversion(obj->base, CY_SAR_WAIT_FOR_RESULT) == CY_SAR_SUCCESS) { result = Cy_SAR_GetResult32(obj->base, CY_PIN(obj->pin)); } else { error("ANALOG IN: measurement failed!"); } - Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, obj->channel_mask, CY_SAR_SWITCH_OPEN); + + if (CY_SAR_PORT_9 != port) { + /* Disconnect the SAR Vplus input from the pin */ + Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, obj->channel_mask, CY_SAR_SWITCH_OPEN); + } else { + /* Disconnect the AMUXA bus from the pin */ + Cy_GPIO_SetHSIOM(portPrt, CY_PIN(obj->pin), HSIOM_SEL_GPIO); + + /* Disconnect the SAR Vplus input from the AMUXA bus */ + Cy_SAR_SetAnalogSwitch(obj->base, CY_SAR_MUX_SWITCH0, SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VPLUS_Msk, CY_SAR_SWITCH_OPEN); + } + // We are running 16x oversampling extending results to 16 bits. return (uint16_t)(result); } diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c index 98be6545307..6778cb9d688 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,11 +68,10 @@ static void ctdac_init(dac_t *obj) dac_clock_divider = cy_clk_allocate_divider(CY_SYSCLK_DIV_8_BIT); if (dac_clock_divider == CY_INVALID_DIVIDER) { error("CTDAC clock divider allocation failed."); - return; } Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, dac_clock_divider, - ((CY_CLK_PERICLK_FREQ_HZ + CTDAC_BASE_CLOCK_HZ / 2) / CTDAC_BASE_CLOCK_HZ) - 1); + ((cy_PeriClkFreqHz + CTDAC_BASE_CLOCK_HZ / 2) / CTDAC_BASE_CLOCK_HZ) - 1); Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, dac_clock_divider); Cy_SysClk_PeriphAssignDivider(obj->clock, CY_SYSCLK_DIV_8_BIT, dac_clock_divider); @@ -90,17 +91,29 @@ void analogout_init(dac_t *obj, PinName pin) dac = pinmap_peripheral(pin, PinMap_DAC); if (dac != (uint32_t)NC) { - if (cy_reserve_io_pin(pin)) { + + if ((0 != cy_reserve_io_pin(pin)) && !ctdac_initialized) { error("ANALOG OUT pin reservation conflict."); } - obj->base = (CTDAC_Type*)CY_PERIPHERAL_BASE(dac); + + /* Initialize object */ + obj->base = (CTDAC_Type *)CY_PERIPHERAL_BASE(dac); obj->pin = pin; - // Configure clock. + /* Configure CTDAC hardware */ dac_function = pinmap_function(pin, PinMap_DAC); obj->clock = CY_PIN_CLOCK(dac_function); pin_function(pin, dac_function); + + if (AOUT != pin) { + const PinName directOutput = AOUT; + + /* Connect AOUT to the AMUXA bus to drive output */ + Cy_GPIO_SetHSIOM(Cy_GPIO_PortToAddr(CY_PORT(directOutput)), CY_PIN(directOutput), HSIOM_SEL_AMUXA); + } + ctdac_init(obj); + } else { error("ANALOG OUT pinout mismatch."); } @@ -108,7 +121,7 @@ void analogout_init(dac_t *obj, PinName pin) void analogout_free(dac_t *obj) { - // Not supported yet. + /* MBED AnalogIn driver does not call this function in destructor */ } void analogout_write(dac_t *obj, float value) diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/crc_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/crc_api.c new file mode 100644 index 00000000000..0f713984ed4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/crc_api.c @@ -0,0 +1,99 @@ +/* mbed Microcontroller Library + * Copyright (c) 2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "device.h" + +#if DEVICE_CRC + +#include "mbed_assert.h" +#include "crc_api.h" + +#include "psoc6_utils.h" + +#include "cy_crypto_core_crc.h" + +static uint32_t crcWidth = 0UL; +static uint32_t crcShift = 0UL; +static uint32_t crcXorMask; + +/* Cypress CRYPTO hardware supports any CRC algorithms from CRC-3 to CRC-32 */ +bool hal_crc_is_supported(const crc_mbed_config_t *config) +{ + return (config != NULL); +} + +void hal_crc_compute_partial_start(const crc_mbed_config_t *config) +{ + uint32_t myMask = 0UL; + + if (!hal_crc_is_supported(config) || (cy_reserve_crypto(CY_CRYPTO_CRC_HW) != 0U)) { + return; + } + + crcWidth = config->width; + + crcShift = (uint32_t)(!config->reflect_out) * (crcWidth & 7U); + if (0U != crcShift) { + crcShift = 8U - crcShift; + for (uint32_t i = 0U; i < crcShift; i++) { + myMask |= 1U << i; + } + crcXorMask = config->final_xor & myMask; + } + + Cy_Crypto_Core_Crc_CalcInit(CRYPTO, config->width, + config->polynomial, + config->reflect_in, + 0U, + config->reflect_out, + config->final_xor >> crcShift, + config->initial_xor); +} + +void hal_crc_compute_partial(const uint8_t *data, const size_t size) +{ + if ((data == NULL) || (size <= 0U) || (crcWidth == 0U)) { + return; + } + + Cy_Crypto_Core_Crc_CalcPartial(CRYPTO, data, size); +} + +uint32_t hal_crc_get_result(void) +{ + uint32_t result = 0UL; + + if (crcWidth == 0UL) { + return 0xFFFFFFFFUL; + } + + Cy_Crypto_Core_Crc_CalcFinish(CRYPTO, crcWidth, &result); + + if (crcShift) { + result = result << crcShift; + result = result ^ crcXorMask; + } + + crcWidth = 0UL; + + cy_free_crypto(CY_CRYPTO_CRC_HW); + + return result; +} + +#endif //DEVICE_CRC + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/flash_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/flash_api.c index 16452e61d23..5d7cca066c8 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/flash_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/flash_api.c @@ -16,7 +16,7 @@ #include "device.h" #include "flash_api.h" -#include "drivers/peripheral/flash/cy_flash.h" +#include "cy_flash.h" #if DEVICE_FLASH @@ -86,7 +86,7 @@ uint8_t flash_get_erase_value(const flash_t *obj) { (void)obj; - return 0xFF; + return 0x00; } #endif // DEVICE_FLASH diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_api.c index 8f3bc0b074c..173741f3e53 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,19 +62,14 @@ void gpio_init(gpio_t *obj, PinName pin) MBED_ASSERT(CY_PIN(obj->pin) < 8); // PSoC6 architecture supports 8 pins per port. - /* - * Perform i/o reservation only if this is called outside of critical section/interrupt context. - * This is a workaround for mbed_die() implementation, which configures LED1 inside critical section. - * Normally user is advised to perform all of the i/o configuration at the program beginning, - * or elsewhere in the running thread context. when we detect that we are in the wrong context here, - * we assume it's explicitly called from mbed_die() or other fault handling, so eventual forcing - * of the pin mode is deliberate and should not cause more problems. - */ + /* Ignore pin reservation result because there is not possibility to release + * reserved HW resource. The MBED does not provide proper destructors for + * doing that. + */ if (!(IsIrqMode() || IsIrqMasked())) { - if (cy_reserve_io_pin(pin)) { - error("GPIO pin reservation conflict."); - } + (void) cy_reserve_io_pin(pin); } + obj->port = Cy_GPIO_PortToAddr(CY_PORT(obj->pin)); const uint32_t outputVal = 0; diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_irq_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_irq_api.c index 54baf3e18c5..b799030f52d 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_irq_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_irq_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +50,15 @@ static void gpio_irq_dispatcher(uint32_t port_id) gpio_irq_t *obj = irq_objects[port_id][pin]; MBED_ASSERT(obj); Cy_GPIO_ClearInterrupt(port, pin); - event = (obj->mode == IRQ_FALL)? IRQ_FALL : IRQ_RISE; + /* event = (obj->mode == IRQ_FALL)? IRQ_FALL : IRQ_RISE; */ + + /* Read pin to determine the edge to support "both" mode */ + event = (0UL != Cy_GPIO_Read(port, pin)) ? IRQ_RISE : IRQ_FALL; + if (0UL == (obj->mode & event)) { + /* In case of very short pulse, actually both edges are occurred, so indicating only the supported one */ + event = obj->mode; + } /* Otherwise the determined edge is supported (0UL != (obj->mode & event)), so indicating it as is */ + obj->handler(obj->id_arg, event); } } @@ -182,10 +192,11 @@ static int gpio_irq_setup_channel(gpio_irq_t *obj) irq_config.cm0pSrc = obj->cm0p_irq_src; #endif if (Cy_SysInt_Init(&irq_config, irq_dispatcher_table[obj->port_id]) != CY_SYSINT_SUCCESS) { - return(-1); + return (-1); } irq_port_usage[obj->port_id].pin_mask |= (1 << obj->pin); + gpio_irq_enable(obj); NVIC_EnableIRQ(irqn); } @@ -204,6 +215,9 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32 } obj->handler = handler; obj->id_arg = id; + /* Save reference to current object */ + irq_objects[obj->port_id][obj->pin] = obj; + return gpio_irq_setup_channel(obj); } else { return (-1); diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_object.h b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_object.h index 2fd677f247d..dbea9d2cce7 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/gpio_object.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/gpio_object.h @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +24,7 @@ #include "PinNamesTypes.h" #include "PinNames.h" -#include "drivers/peripheral/gpio/cy_gpio.h" +#include "cy_gpio.h" #ifdef __cplusplus extern "C" { diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/i2c_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/i2c_api.c index ea8ca3102cc..acff2946977 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/i2c_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/i2c_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +25,10 @@ #include "i2c_api.h" #include "psoc6_utils.h" -#include "drivers/peripheral/sysclk/cy_sysclk.h" -#include "drivers/peripheral/gpio/cy_gpio.h" -#include "drivers/peripheral/scb/cy_scb_i2c.h" -#include "drivers/peripheral/sysint/cy_sysint.h" +#include "cy_sysclk.h" +#include "cy_gpio.h" +#include "cy_scb_i2c.h" +#include "cy_sysint.h" #define I2C_DEFAULT_SPEED 100000 #define NUM_I2C_PORTS 8 @@ -69,11 +71,12 @@ static const cy_stc_scb_i2c_config_t default_i2c_config = { static I2cDividerInfo i2c_dividers[I2C_NUM_DIVIDERS] = { - { I2C_INVALID_DIVIDER, 0, CY_SCB_I2C_SLAVE_STD_CLK_MIN }, // Low divider uses lowest possible frequency. - { I2C_INVALID_DIVIDER, 0, CY_SCB_I2C_SLAVE_FST_CLK_MIN }, - { I2C_INVALID_DIVIDER, 0, CY_SCB_I2C_SLAVE_FSTP_CLK_MIN } + { I2C_INVALID_DIVIDER, CY_SYSCLK_DIV_8_BIT, CY_SCB_I2C_SLAVE_STD_CLK_MIN }, // Low divider uses lowest possible frequency. + { I2C_INVALID_DIVIDER, CY_SYSCLK_DIV_8_BIT, CY_SCB_I2C_SLAVE_FST_CLK_MIN }, + { I2C_INVALID_DIVIDER, CY_SYSCLK_DIV_8_BIT, CY_SCB_I2C_SLAVE_FSTP_CLK_MIN } }; + typedef struct i2c_s i2c_obj_t; #if DEVICE_I2C_ASYNCH @@ -91,15 +94,8 @@ static IRQn_Type i2c_irq_allocate_channel(i2c_obj_t *obj) obj->cm0p_irq_src = scb_0_interrupt_IRQn + obj->i2c_id; return cy_m0_nvic_allocate_channel(CY_SERIAL_IRQN_ID + obj->i2c_id); #else - return (IRQn_Type)(ioss_interrupts_gpio_0_IRQn + obj->i2c_id); -#endif // M0 -} - -static void i2c_irq_release_channel(IRQn_Type channel, uint32_t i2c_id) -{ -#if defined (TARGET_MCU_PSOC6_M0) - cy_m0_nvic_release_channel(channel, CY_SERIAL_IRQN_ID + i2c_id); -#endif //M0 + return (IRQn_Type)(scb_0_interrupt_IRQn + obj->i2c_id); +#endif /* (TARGET_MCU_PSOC6_M0) */ } static int i2c_irq_setup_channel(i2c_obj_t *obj) @@ -118,7 +114,7 @@ static int i2c_irq_setup_channel(i2c_obj_t *obj) irq_config.cm0pSrc = obj->cm0p_irq_src; #endif if (Cy_SysInt_Init(&irq_config, (cy_israddress)(obj->handler)) != CY_SYSINT_SUCCESS) { - return(-1); + return (-1); } obj->irqn = irqn; @@ -147,8 +143,8 @@ static int allocate_divider(I2cDividerType divider) if (p_div->div_num != CY_INVALID_DIVIDER) { // Set up proper frequency; - uint32_t div_value = CY_CLK_PERICLK_FREQ_HZ / p_div->clk_frequency; - p_div->clk_frequency = CY_CLK_PERICLK_FREQ_HZ / div_value; + uint32_t div_value = cy_PeriClkFreqHz / p_div->clk_frequency; + p_div->clk_frequency = cy_PeriClkFreqHz / div_value; if (Cy_SysClk_PeriphSetDivider(p_div->div_type, p_div->div_num, div_value) == CY_SYSCLK_SUCCESS) { Cy_SysClk_PeriphEnableDivider(p_div->div_type, p_div->div_num); } else { @@ -156,7 +152,7 @@ static int allocate_divider(I2cDividerType divider) } } - return (p_div->div_num == CY_INVALID_DIVIDER)? -1 : 0; + return (p_div->div_num == CY_INVALID_DIVIDER) ? -1 : 0; } /* @@ -189,13 +185,11 @@ static cy_en_sysclk_status_t i2c_init_clock(i2c_obj_t *obj, uint32_t speed) I2cDividerType divider = select_divider(speed); if (divider == I2C_INVALID_DIVIDER) { - error("i2c: required speed/frequency is out of valid range."); - return CY_SYSCLK_BAD_PARAM; + error("I2C: required speed/frequency is out of valid range."); } if (allocate_divider(divider) < 0) { - error("i2c: cannot allocate clock divider."); - return CY_SYSCLK_INVALID_STATE; + error("I2C: cannot allocate clock divider."); } obj->divider = divider; @@ -203,13 +197,12 @@ static cy_en_sysclk_status_t i2c_init_clock(i2c_obj_t *obj, uint32_t speed) status = Cy_SysClk_PeriphAssignDivider(obj->clock, p_div->div_type, p_div->div_num); if (status != CY_SYSCLK_SUCCESS) { - error("i2c: cannot assign clock divider."); - return status; + error("I2C: cannot assign clock divider."); } /* Set desired speed/frequency */ obj->actual_speed = Cy_SCB_I2C_SetDataRate(obj->base, speed, p_div->clk_frequency); - return (obj->actual_speed != 0)? CY_SYSCLK_SUCCESS : CY_SYSCLK_BAD_PARAM; + return (obj->actual_speed != 0) ? CY_SYSCLK_SUCCESS : CY_SYSCLK_BAD_PARAM; } /* @@ -217,10 +210,11 @@ static cy_en_sysclk_status_t i2c_init_clock(i2c_obj_t *obj, uint32_t speed) */ static void i2c_init_pins(i2c_obj_t *obj) { - int sda_function = pinmap_function(obj->pin_sda, PinMap_I2C_SDA); - int scl_function = pinmap_function(obj->pin_scl, PinMap_I2C_SCL); - pin_function(obj->pin_sda, sda_function); - pin_function(obj->pin_scl, scl_function); + /* MBED driver reserves pins for I2C as Ditigal IO while doing I2C error + * recovery in constructor. + */ + pin_function(obj->pin_sda, pinmap_function(obj->pin_sda, PinMap_I2C_SDA)); + pin_function(obj->pin_scl, pinmap_function(obj->pin_scl, PinMap_I2C_SCL)); } @@ -233,7 +227,7 @@ static void i2c_init_peripheral(i2c_obj_t *obj) I2cDividerInfo *p_div = &i2c_dividers[obj->divider]; Cy_SCB_I2C_Init(obj->base, &i2c_config, &obj->context); - Cy_SCB_I2C_SetDataRate(obj->base,obj->actual_speed, p_div->clk_frequency); + Cy_SCB_I2C_SetDataRate(obj->base, obj->actual_speed, p_div->clk_frequency); Cy_SCB_I2C_Enable(obj->base); } @@ -264,55 +258,77 @@ static int i2c_convert_status(cy_en_scb_i2c_status_t status) /* * Callback function to handle into and out of deep sleep state transitions. */ -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER -static cy_en_syspm_status_t i2c_pm_callback(cy_stc_syspm_callback_params_t *callback_params) +#if DEVICE_SLEEP && DEVICE_LPTICKER +static cy_en_syspm_status_t i2c_pm_callback(cy_stc_syspm_callback_params_t *callback_params, cy_en_syspm_callback_mode_t mode) { cy_stc_syspm_callback_params_t params = *callback_params; i2c_obj_t *obj = (i2c_obj_t *)params.context; params.context = &obj->context; - return Cy_SCB_I2C_DeepSleepCallback(¶ms); + return Cy_SCB_I2C_DeepSleepCallback(¶ms, mode); } -#endif // DEVICE_SLEEP && DEVICE_LOWPOWERTIMER +#endif // DEVICE_SLEEP && DEVICE_LPTICKER void i2c_init(i2c_t *obj_in, PinName sda, PinName scl) { i2c_obj_t *obj = OBJ_P(obj_in); + uint32_t i2c = pinmap_peripheral(sda, PinMap_I2C_SDA); i2c = pinmap_merge(i2c, pinmap_peripheral(scl, PinMap_I2C_SCL)); - if (i2c != (uint32_t)NC) { - if (cy_reserve_io_pin(sda) || cy_reserve_io_pin(scl)) { - error("I2C pin reservation conflict."); - } - obj->base = (CySCB_Type*)i2c; - obj->i2c_id = ((I2CName)i2c - I2C_0) / (I2C_1 - I2C_0); + + if (i2c != (uint32_t) NC) { + /* Initialize configuration */ + obj->base = (CySCB_Type *) i2c; + obj->i2c_id = ((I2CName) i2c - I2C_0) / (I2C_1 - I2C_0); + obj->clock = CY_PIN_CLOCK(pinmap_function(scl, PinMap_I2C_SCL)); + obj->divider = I2C_INVALID_DIVIDER; + obj->already_reserved = (0 != cy_reserve_scb(obj->i2c_id)); obj->pin_sda = sda; obj->pin_scl = scl; - obj->clock = CY_PIN_CLOCK(pinmap_function(scl, PinMap_I2C_SCL)); - obj->divider = I2C_INVALID_DIVIDER; - obj->mode = CY_SCB_I2C_MASTER; + + obj->mode = CY_SCB_I2C_MASTER; obj->timeout = I2C_DEFAULT_TIMEOUT; + #if DEVICE_I2C_ASYNCH + obj->irqn = unconnected_IRQn; obj->pending = PENDING_NONE; - obj->events = 0; -#endif // DEVICE_I2C_ASYNCH + obj->events = 0; +#endif /* DEVICE_I2C_ASYNCH */ + + /* Check if resource severed */ + if (obj->already_reserved) { + + /* SCB pins and clocks are connected */ + + /* Disable block and get it into the default state */ + Cy_SCB_I2C_Disable(obj->base, &obj->context); + Cy_SCB_I2C_DeInit(obj->base); + + /* The proper clock will be connected by i2c_init_clock(obj, I2C_DEFAULT_SPEED) */ + obj->divider = I2C_DIVIDER_LOW; + } else { +#if DEVICE_SLEEP && DEVICE_LPTICKER + /* Register callback once */ + obj->pm_callback_handler.callback = i2c_pm_callback; + obj->pm_callback_handler.type = CY_SYSPM_DEEPSLEEP; + obj->pm_callback_handler.skipMode = 0; + obj->pm_callback_handler.callbackParams = &obj->pm_callback_params; + obj->pm_callback_params.base = obj->base; + obj->pm_callback_params.context = obj; + if (!Cy_SysPm_RegisterCallback(&obj->pm_callback_handler)) { + error("PM callback registration failed!"); + } +#endif /* DEVICE_SLEEP && DEVICE_LPTICKER */ + } + + /* Configure hardware resources */ i2c_init_clock(obj, I2C_DEFAULT_SPEED); i2c_init_pins(obj); i2c_init_peripheral(obj); -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER - obj->pm_callback_handler.callback = i2c_pm_callback; - obj->pm_callback_handler.type = CY_SYSPM_DEEPSLEEP; - obj->pm_callback_handler.skipMode = 0; - obj->pm_callback_handler.callbackParams = &obj->pm_callback_params; - obj->pm_callback_params.base = obj->base; - obj->pm_callback_params.context = obj; - if (!Cy_SysPm_RegisterCallback(&obj->pm_callback_handler)) { - error("PM callback registration failed!"); - } -#endif // DEVICE_SLEEP && DEVICE_LOWPOWERTIMER + } else { - error("I2C pinout mismatch. Requested pins Rx and Tx can't be used for the same I2C communication."); + error("I2C pinout mismatch. Requested pins SDA and SCL can't be used for the same I2C communication."); } } @@ -326,14 +342,36 @@ void i2c_frequency(i2c_t *obj_in, int hz) int i2c_start(i2c_t *obj_in) { - // Unsupported, start condition is sent automatically. - return 0; + i2c_obj_t *obj = OBJ_P(obj_in); + + if (CY_SCB_I2C_IDLE == obj->context.state) { + /* Set the read or write direction */ + obj->context.state = CY_SCB_I2C_MASTER_ADDR; + + /* Clean up the hardware before a transfer. Note RX FIFO is empty at here */ + Cy_SCB_ClearMasterInterrupt(obj->base, CY_SCB_I2C_MASTER_INTR_ALL); + Cy_SCB_ClearRxInterrupt(obj->base, CY_SCB_RX_INTR_NOT_EMPTY); + Cy_SCB_ClearTxFifo(obj->base); + + /* Generate a Start and send address byte */ + SCB_I2C_M_CMD(obj->base) = SCB_I2C_M_CMD_M_START_ON_IDLE_Msk; + + /* Wait until Start is generated */ + while (0 != (SCB_I2C_M_CMD(obj->base) & SCB_I2C_M_CMD_M_START_ON_IDLE_Msk)) { + } + + return 0; + } + + return (-1); } int i2c_stop(i2c_t *obj_in) { - // Unsupported, stop condition is sent automatically. - return 0; + i2c_obj_t *obj = OBJ_P(obj_in); + cy_en_scb_i2c_status_t status = Cy_SCB_I2C_MasterSendStop(obj->base, obj->timeout, &obj->context); + + return i2c_convert_status(status); } int i2c_read(i2c_t *obj_in, int address, char *data, int length, int stop) @@ -410,27 +448,44 @@ int i2c_write(i2c_t *obj_in, int address, const char *data, int length, int stop void i2c_reset(i2c_t *obj_in) { - i2c_stop(obj_in); + i2c_obj_t *obj = OBJ_P(obj_in); + + /* Back block into default state */ + Cy_SCB_FwBlockReset(obj->base); + obj->context.state = CY_SCB_I2C_IDLE; } int i2c_byte_read(i2c_t *obj_in, int last) { i2c_obj_t *obj = OBJ_P(obj_in); uint8_t tmp_byte = 0; - cy_en_scb_i2c_command_t ack = last? CY_SCB_I2C_NAK : CY_SCB_I2C_ACK; + cy_en_scb_i2c_command_t ack = last ? CY_SCB_I2C_NAK : CY_SCB_I2C_ACK; + + /* i2c_start and i2c_byte_write was called. Update state to receive data */ + if (CY_SCB_I2C_MASTER_TX == obj->context.state) { + obj->context.state = CY_SCB_I2C_MASTER_RX0; + } + cy_en_scb_i2c_status_t status = Cy_SCB_I2C_MasterReadByte(obj->base, ack, &tmp_byte, obj->timeout, &obj->context); if (status == CY_SCB_I2C_SUCCESS) { return tmp_byte; } else { - return 0; + return (-1); } } int i2c_byte_write(i2c_t *obj_in, int data) { i2c_obj_t *obj = OBJ_P(obj_in); + + /* i2c_start was called update state to receive data */ + if (CY_SCB_I2C_MASTER_ADDR == obj->context.state) { + obj->context.state = CY_SCB_I2C_MASTER_TX; + } + cy_en_scb_i2c_status_t status = Cy_SCB_I2C_MasterWriteByte(obj->base, (uint8_t)data, obj->timeout, &obj->context); + switch (status) { case CY_SCB_I2C_MASTER_MANUAL_TIMEOUT: return 2; @@ -440,7 +495,7 @@ int i2c_byte_write(i2c_t *obj_in, int data) case CY_SCB_I2C_SUCCESS: return 1; default: - // Error has occurred. + /* Error has occurred */ return (-1); } } @@ -477,7 +532,7 @@ void i2c_transfer_asynch(i2c_t *obj_in, obj->rx_config.bufferSize = rx_length; obj->rx_config.xferPending = !stop; - obj->tx_config.buffer = (void*)tx; + obj->tx_config.buffer = (void *)tx; obj->tx_config.bufferSize = tx_length; obj->tx_config.xferPending = rx_length || !stop; @@ -496,35 +551,66 @@ void i2c_transfer_asynch(i2c_t *obj_in, } } + +static void i2c_gen_stop(i2c_t *obj_in) +{ + i2c_obj_t *obj = OBJ_P(obj_in); + + // Enable master interrupts and generate Stop + Cy_SCB_SetMasterInterruptMask(obj->base, CY_SCB_I2C_MASTER_INTR); + SCB_I2C_M_CMD(obj->base) = (SCB_I2C_M_CMD_M_STOP_Msk | SCB_I2C_M_CMD_M_NACK_Msk); +} + + uint32_t i2c_irq_handler_asynch(i2c_t *obj_in) { i2c_obj_t *obj = OBJ_P(obj_in); uint32_t event = 0; // Process actual interrupt. Cy_SCB_I2C_Interrupt(obj->base, &obj->context); - if (obj->context.state == CY_SCB_I2C_MASTER_CMPLT) { - if (obj->context.masterStatus & CY_SCB_I2C_MASTER_ERR) { - if (obj->context.masterStatus & CY_SCB_I2C_MASTER_ADDR_NAK) { - event = I2C_EVENT_ERROR_NO_SLAVE; - } else if (obj->context.masterStatus & CY_SCB_I2C_MASTER_DATA_NAK) { - event = I2C_EVENT_TRANSFER_EARLY_NACK; + + if (false == (CY_SCB_I2C_MASTER_BUSY & obj->context.masterStatus)) { + // Transfer was completed + event = I2C_EVENT_TRANSFER_COMPLETE; + + // Parse results of single transfer + if (CY_SCB_I2C_MASTER_ERR & obj->context.masterStatus) { + if (CY_SCB_I2C_MASTER_ADDR_NAK & obj->context.masterStatus) { + event |= I2C_EVENT_ERROR_NO_SLAVE; + } else if (CY_SCB_I2C_MASTER_DATA_NAK & obj->context.masterStatus) { + event |= I2C_EVENT_TRANSFER_EARLY_NACK; } else { - event = I2C_EVENT_ERROR; + // CY_SCB_I2C_MASTER_ARB_LOST || CY_SCB_I2C_MASTER_BUS_ERR || CY_SCB_I2C_MASTER_ABORT_START + event |= I2C_EVENT_ERROR; } - } else { - // Check if a read phase is pending after write. - if (obj->pending == PENDING_TX_RX) { - obj->pending = PENDING_RX; + } + + // Check if a read phase is pending after write. + if (obj->pending == PENDING_TX_RX) { + obj->pending = PENDING_RX; + + if (event == I2C_EVENT_TRANSFER_COMPLETE) { + // Send ReStart and continue with RX transfer + event = 0; Cy_SCB_I2C_MasterRead(obj->base, &obj->rx_config, &obj->context); } else { - event = I2C_EVENT_TRANSFER_COMPLETE; + // NACK - generate Stop (do not execute RX transfer) + // Error - do not execute RX transfer and report transfer complete + if (false == (event & I2C_EVENT_ERROR)) { + // Report events after Stop generation + event = 0; + obj->context.state = CY_SCB_I2C_MASTER_WAIT_STOP; + obj->context.masterPause = false; + + i2c_gen_stop(obj_in); + } } + } else { + obj->pending = PENDING_NONE; } } - if (event) { - obj->pending = PENDING_NONE; - } - return event & obj->events; + + return (event & obj->events); } uint8_t i2c_active(i2c_t *obj_in) diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/lp_ticker.c b/targets/TARGET_Cypress/TARGET_PSOC6/lp_ticker.c index fc298529d33..b85af7be057 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/lp_ticker.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/lp_ticker.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,8 +21,8 @@ #include "device.h" #include "mbed_error.h" #include "lp_ticker_api.h" -#include "device/drivers/peripheral/mcwdt/cy_mcwdt.h" -#include "device/drivers/peripheral/sysint/cy_sysint.h" +#include "cy_mcwdt.h" +#include "cy_sysint.h" #include "psoc6_utils.h" #if DEVICE_LPTICKER @@ -40,9 +42,13 @@ #endif #define LPT_MCWDT_DELAY_WAIT 0 // Recommended value is 93, but then we fail function execution time test. +#if !defined (CY_CFG_SYSCLK_CLKLF_FREQ_HZ) +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768UL /* Default to 32K ILO */ +#endif /* CY_CFG_SYSCLK_CLKLF_FREQ_HZ */ + static const ticker_info_t lp_ticker_info = { - .frequency = CY_CLK_WCO_FREQ_HZ, - .bits = 16, + .frequency = CY_CFG_SYSCLK_CLKLF_FREQ_HZ, + .bits = 16UL, }; static bool lpt_init_done = false; @@ -154,7 +160,7 @@ void lp_ticker_fire_interrupt(void) NVIC_SetPendingIRQ(lpt_sysint_config.intrSrc); } -const ticker_info_t* lp_ticker_get_info(void) +const ticker_info_t *lp_ticker_get_info(void) { return &lp_ticker_info; } diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/mbed_rtx.h b/targets/TARGET_Cypress/TARGET_PSOC6/mbed_rtx.h index 0cef96044cc..053ca85323d 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/mbed_rtx.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/mbed_rtx.h @@ -2,6 +2,8 @@ * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics * Copyright (c) 2016 u-blox + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,22 +21,26 @@ #ifndef MBED_MBED_RTX_H #define MBED_MBED_RTX_H -#if defined(TARGET_MCU_PSOC6_M0) - +#if defined(TARGET_CY8CKIT_062_4343W) #ifndef INITIAL_SP -#define INITIAL_SP (0x08000000 + 0x00010000) // Ram origin + length +#define INITIAL_SP (0x08002000 + 0x000FD800) /* Ram origin + length */ #endif - -#elif defined(TARGET_MCU_PSOC6_M4) - +#elif defined(TARGET_CY8CKIT_062_BLE) #ifndef INITIAL_SP -#define INITIAL_SP (0x08010000 + 0x00037800) // Ram origin + length +#define INITIAL_SP (0x08002000 + 0x00045800) /* Ram origin + length */ +#endif +#elif defined(TARGET_CY8CKIT_062_WIFI_BT) +#ifndef INITIAL_SP +#define INITIAL_SP (0x08002000 + 0x00045800) /* Ram origin + length */ +#endif +#elif defined(TARGET_CY8CMOD_062_4343W) +#ifndef INITIAL_SP +#define INITIAL_SP (0x08002000 + 0x000FD800) /* Ram origin + length */ +#endif +#elif defined(TARGET_CYW943012P6EVB_01) +#ifndef INITIAL_SP +#define INITIAL_SP (0x08002000 + 0x00045800) /* Ram origin + length */ #endif - -#else - -#error "Unknown board" - #endif -#endif // MBED_MBED_RTX_H +#endif /* MBED_MBED_RTX_H */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/objects.h b/targets/TARGET_Cypress/TARGET_PSOC6/objects.h index b9fd8e7862e..ab02b9a9707 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/objects.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/objects.h @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +27,8 @@ #include "gpio_irq_api.h" #include "gpio_object.h" -#include "drivers/peripheral/sysclk/cy_sysclk.h" -#include "drivers/peripheral/syspm/cy_syspm.h" +#include "cy_sysclk.h" +#include "cy_syspm.h" #ifdef __cplusplus extern "C" { @@ -34,7 +36,7 @@ extern "C" { #if DEVICE_INTERRUPTIN struct gpio_irq_s { - GPIO_PRT_Type* port; + GPIO_PRT_Type *port; uint32_t port_id; uint32_t pin; gpio_irq_event mode; @@ -69,6 +71,7 @@ struct port_s { struct serial_s { CySCB_Type *base; uint32_t serial_id; + bool already_reserved; PinName pin_rx; PinName pin_tx; PinName pin_cts; @@ -86,7 +89,7 @@ struct serial_s { bool tx_pending; cy_israddress async_handler; #endif // DEVICE_SERIAL_ASYNCH -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER +#if DEVICE_SLEEP && DEVICE_LPTICKER cy_stc_syspm_callback_params_t pm_callback_params; cy_stc_syspm_callback_t pm_callback_handler; #endif @@ -99,6 +102,7 @@ struct serial_s { struct spi_s { CySCB_Type *base; uint32_t spi_id; + bool already_reserved; PinName pin_miso; PinName pin_mosi; PinName pin_sclk; @@ -124,7 +128,7 @@ struct spi_s { void *tx_buffer; uint32_t tx_buffer_size; #endif // DEVICE_SPI_ASYNCH -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER +#if DEVICE_SLEEP && DEVICE_LPTICKER cy_stc_syspm_callback_params_t pm_callback_params; cy_stc_syspm_callback_t pm_callback_handler; #endif @@ -137,6 +141,7 @@ struct spi_s { struct i2c_s { CySCB_Type *base; uint32_t i2c_id; + bool already_reserved; PinName pin_sda; PinName pin_scl; en_clk_dst_t clock; @@ -160,7 +165,7 @@ struct i2c_s { uint16_t events; uint32_t handler; #endif // DEVICE_I2C_ASYNCH -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER +#if DEVICE_SLEEP && DEVICE_LPTICKER cy_stc_syspm_callback_params_t pm_callback_params; cy_stc_syspm_callback_t pm_callback_handler; #endif @@ -171,42 +176,42 @@ struct i2c_s { #include "cy_tcpwm.h" struct pwmout_s { - TCPWM_Type *base; - PinName pin; - uint32_t counter_id; - uint32_t clock; - uint32_t period; - uint32_t pulse_width; - uint32_t prescaler; -#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER - cy_stc_syspm_callback_params_t pm_callback_params; - cy_stc_syspm_callback_t pm_callback_handler; + TCPWM_Type *base; + PinName pin; + uint32_t counter_id; + en_clk_dst_t clock; + uint32_t period; + uint32_t pulse_width; + uint32_t prescaler; +#if DEVICE_SLEEP && DEVICE_LPTICKER + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; #endif }; #endif // DEVICE_PWMOUT -#ifdef DEVICE_ANALOGIN +#if DEVICE_ANALOGIN #include "cy_sar.h" struct analogin_s { SAR_Type *base; PinName pin; uint32_t channel_mask; - uint32_t clock; + en_clk_dst_t clock; }; #endif // DEVICE_ANALOGIN -#ifdef DEVICE_ANALOGOUT +#if DEVICE_ANALOGOUT #include "cy_ctdac.h" struct dac_s { CTDAC_Type *base; PinName pin; - uint32_t clock; + en_clk_dst_t clock; }; #endif // DEVICE_ANALOGOUT -#ifdef DEVICE_FLASH +#if DEVICE_FLASH struct flash_s { /* nothing to be stored for now */ void *dummy; diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/port_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/port_api.c index 5e124dd5b4e..ddcc0bc5d53 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/port_api.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/port_api.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,9 +62,11 @@ void port_init(port_t *obj, PortName port, int mask, PinDirection dir) for (pin = 0; pin < 8; ++pin) { if (mask & (1 << pin)) { - if (cy_reserve_io_pin((PinName)((port << 8)+pin))) { - error("Port pin reservation conflict."); - } + /* Ignore pin reservation result because there is not possibility to release + * reserved HW resource. The MBED does not provide proper destructors for + * doing that. + */ + (void) cy_reserve_io_pin((PinName)((port << 8) + pin)); } } obj->port_id = port; @@ -105,8 +109,8 @@ void port_write(port_t *obj, int value) for (pin = 0; pin < 8; ++pin) { if (obj->mask & (1 << pin)) { Cy_GPIO_Write(obj->port, pin, value & 0x1); - value >>= 1; } + value >>= 1; } } } diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.c b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.c index fd83584931a..84af989a07f 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.c +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.c @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,6 +45,7 @@ #endif /* defined(__MBED__) */ +#include "cy_crypto_core_hw.h" #define CY_NUM_PSOC6_PORTS 14 #define CY_NUM_DIVIDER_TYPES 4 @@ -101,6 +104,7 @@ do { \ #define DEFAULT_PORT_RES 0xff #define DEFAULT_DIVIDER_RES 0xffff +#define DEFAULT_DIVIDER8_RES 0xffff #define DEFAULT_SCM_RES 1 #define DEFAULT_TCPWM_RES 1 @@ -139,7 +143,7 @@ typedef struct { } divider_alloc_t; static divider_alloc_t divider_allocations[CY_NUM_DIVIDER_TYPES] = { - { PERI_DIV_8_NR - 1, 2, DEFAULT_DIVIDER8_RES }, // CY_SYSCLK_DIV_8_BIT + { PERI_DIV_8_NR - 1, 0, DEFAULT_DIVIDER8_RES }, // CY_SYSCLK_DIV_8_BIT { PERI_DIV_16_NR - 1, 0, DEFAULT_DIVIDER_RES }, // CY_SYSCLK_DIV_16_BIT { PERI_DIV_16_5_NR - 1, 0, DEFAULT_DIVIDER_RES }, // CY_SYSCLK_DIV_16_5_BIT { PERI_DIV_24_5_NR - 1, 0, DEFAULT_DIVIDER_RES } // CY_SYSCLK_DIV_24_5_BIT @@ -245,20 +249,35 @@ uint32_t cy_clk_allocate_divider(cy_en_divider_types_t div_type) divider_alloc_t *p_alloc = ÷r_allocations[div_type]; MBED_ASSERT(div_type < CY_NUM_DIVIDER_TYPES); + MBED_ASSERT(p_alloc->current_index < p_alloc->max_index); core_util_critical_section_enter(); - MBED_ASSERT(p_alloc->current_index < p_alloc->max_index); + // Try to reserve current divider + divider = cy_clk_reserve_divider(div_type, p_alloc->current_index); + if (CY_INVALID_DIVIDER == divider) { - for ( uint32_t first_index = p_alloc->current_index; - CY_INVALID_DIVIDER == (divider = cy_clk_reserve_divider(div_type, p_alloc->current_index)); - ++p_alloc->current_index) { + // Store current index + uint32_t first_index = p_alloc->current_index; + + // Move index forward before start circular search + ++p_alloc->current_index; if (p_alloc->current_index > p_alloc->max_index) { p_alloc->current_index = 0; } - if (p_alloc->current_index == first_index) { - break; + + // Execute circular divider search + for (; (CY_INVALID_DIVIDER == (divider = cy_clk_reserve_divider(div_type, p_alloc->current_index))); + ++p_alloc->current_index) { + + if (p_alloc->current_index > p_alloc->max_index) { + p_alloc->current_index = 0; + } + + if (p_alloc->current_index == first_index) { + break; + } } } @@ -276,6 +295,7 @@ int cy_reserve_scb(uint32_t scb_num) core_util_critical_section_enter(); if (scb_reservations[scb_num] == 0) { scb_reservations[scb_num] = 1; + result = 0; } core_util_critical_section_exit(); } @@ -291,6 +311,7 @@ void cy_free_scb(uint32_t scb_num) core_util_critical_section_enter(); if (scb_reservations[scb_num] == 1) { scb_reservations[scb_num] = 0; + result = 0; } core_util_critical_section_exit(); } @@ -334,6 +355,71 @@ void cy_free_tcpwm(uint32_t tcpwm_num) } +static uint8_t crypto_reservations[NUM_CRYPTO_HW] = { 0u }; + +static int cy_crypto_reserved_status(void) +{ + return ((int)(crypto_reservations[CY_CRYPTO_TRNG_HW] | + crypto_reservations[CY_CRYPTO_CRC_HW] | + crypto_reservations[CY_CRYPTO_VU_HW] | + crypto_reservations[CY_CRYPTO_COMMON_HW])); +} + + +int cy_reserve_crypto(cy_en_crypto_submodule_t module_num) +{ + int result = (-1); + + if (module_num < NUM_CRYPTO_HW) { + core_util_critical_section_enter(); + + if (cy_crypto_reserved_status() == 0) { + /* Enable Crypto IP on demand */ + Cy_Crypto_Core_Enable(CRYPTO); + } + + if (module_num == CY_CRYPTO_COMMON_HW) { + if (crypto_reservations[module_num] != 1) { + crypto_reservations[module_num] = 1; + result = 0; + } + } else { + crypto_reservations[module_num] = 1; + result = 0; + } + + core_util_critical_section_exit(); + } + + return result; +} + + +void cy_free_crypto(cy_en_crypto_submodule_t module_num) +{ + int result = (-1); + + if (module_num < NUM_CRYPTO_HW) { + core_util_critical_section_enter(); + + if (crypto_reservations[module_num] == 1) { + crypto_reservations[module_num] = 0; + + if (cy_crypto_reserved_status() == 0) { + /* Crypto hardware is still in enabled state; to disable: + Cy_Crypto_Core_Disable(CRYPTO) */ + } + + result = 0; + } + core_util_critical_section_exit(); + } + if (result) { + error("Trying to release wrong CRYPTO hardware submodule."); + } +} + + /* * NVIC channel dynamic allocation (multiplexing) is used only on M0. * On M4 IRQs are statically pre-assigned to NVIC channels. @@ -375,7 +461,7 @@ IRQn_Type cy_m0_nvic_reserve_channel(IRQn_Type channel, uint32_t channel_id) core_util_critical_section_enter(); if (irq_channels[chn]) { - channel = (IRQn_Type)(-1); + channel = (IRQn_Type)(-1); } else { irq_channels[chn] = channel_id; } @@ -438,19 +524,35 @@ void cy_get_bd_mac_address(uint8_t *buffer) void cy_srm_initialize(void) { +#if defined(TARGET_MCU_PSOC6_M0) || PSOC6_DYNSRM_DISABLE || !defined(__MBED__) + uint32_t i; + + for (i = 0; i < CY_NUM_PSOC6_PORTS; ++i) { + port_reservations[i] = DEFAULT_PORT_RES; + } + + for (i = 0; i < NUM_SCB; ++i) { + scb_reservations[i] = DEFAULT_SCM_RES; + } + + for (i = 0; i < NUM_TCPWM; ++i) { + tcpwm_reservations[i] = DEFAULT_TCPWM_RES; + } + #if PSOC6_DYNSRM_DISABLE -#ifdef M0_ASSIGNED_PORTS - SRM_INIT_RESOURCE(uint8_t, port_reservations,, M0_ASSIGNED_PORTS); +#ifdef CYCFG_ASSIGNED_PORTS + SRM_INIT_RESOURCE(uint8_t, port_reservations,, CYCFG_ASSIGNED_PORTS); #endif -#ifdef M0_ASSIGNED_DIVIDERS - SRM_INIT_RESOURCE(uint32_t, divider_allocations, .reservations, M0_ASSIGNED_DIVIDERS); +#ifdef CYCFG_ASSIGNED_DIVIDERS + SRM_INIT_RESOURCE(uint32_t, divider_allocations, .reservations, CYCFG_ASSIGNED_DIVIDERS); #endif -#ifdef M0_ASSIGNED_SCBS - SRM_INIT_RESOURCE(uint8_t, scb_reservations,, M0_ASSIGNED_SCBS); +#ifdef CYCFG_ASSIGNED_SCBS + SRM_INIT_RESOURCE(uint8_t, scb_reservations,, CYCFG_ASSIGNED_SCBS); #endif -#ifdef M0_ASSIGNED_TCPWMS - SRM_INIT_RESOURCE(uint8_t, tcpwm_reservations,, M0_ASSIGNED_TCPWMS); +#ifdef CYCFG_ASSIGNED_TCPWMS + SRM_INIT_RESOURCE(uint8_t, tcpwm_reservations,, CYCFG_ASSIGNED_TCPWMS); #endif #endif // PSOC6_DYNSRM_DISABLE +#endif // defined(TARGET_MCU_PSOC6_M0) || PSOC6_DSRM_DISABLE || !defined(__MBED__) } diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.h index 78d5a977e74..452940542a2 100644 --- a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6_utils.h @@ -1,6 +1,8 @@ /* * mbed Microcontroller Library * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +24,8 @@ #include #include -#include "drivers/peripheral/gpio/cy_gpio.h" -#include "drivers/peripheral/sysclk/cy_sysclk.h" +#include "cy_gpio.h" +#include "cy_sysclk.h" #else @@ -163,7 +165,7 @@ void cy_srm_initialize(void); * \return void. * */ -void cy_get_bd_mac_address(uint8_t* buffer); +void cy_get_bd_mac_address(uint8_t *buffer); /** \brief Determines proper PSoC6 pin drive mode settings. @@ -213,6 +215,30 @@ static inline uint32_t gpio_get_cy_drive_mode(PinDirection dir, PinMode mode) return cymode; } +typedef enum { + CY_CRYPTO_TRNG_HW, + CY_CRYPTO_CRC_HW, + CY_CRYPTO_VU_HW, + CY_CRYPTO_COMMON_HW +} cy_en_crypto_submodule_t; + +#define NUM_CRYPTO_HW ((uint32_t)CY_CRYPTO_COMMON_HW + 1u) + +/** \brief Request allocation of CRYPTO block. + * + * \param module_num Id of the CRYPTO submodule. + * \return (0) when OK, (-1) when reservation conflict occurs. + * + */ +int cy_reserve_crypto(cy_en_crypto_submodule_t module_num); + +/** \brief Releases CRYPTO block. + * + * \param module_num Id of the CRYPTO submodule. + * \return void + * + */ +void cy_free_crypto(cy_en_crypto_submodule_t module_num); #if defined(__cplusplus) diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cmsis.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cmsis.h new file mode 100644 index 00000000000..a9c26fb654b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cmsis.h @@ -0,0 +1,33 @@ +/* mbed Microcontroller Library + * A generic CMSIS include header + * Copyright (c) 2017-2018 Future Electronics + * Copyright (c) 2018-2019 Cypress Semiconductor Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_CMSIS_H +#define MBED_CMSIS_H + +#include "cy_device_headers.h" + +/* #define BLE provided by Cypress PDL conflicts with mbed BLE class + * defined in features/FEATURE_BLE/ble/BLE.h */ +#undef BLE + +/* #define PROFILE provided by Cypress PDL conflicts with u-blox PROFILE macro + * defined in ./features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h */ +#undef PROFILE + +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6016bzi_f04.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6016bzi_f04.h new file mode 100644 index 00000000000..e3624c8657a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6016bzi_f04.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6016bzi_f04.h +* +* \brief +* CY8C6016BZI-F04 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6016BZI_F04_H_ +#define _CY8C6016BZI_F04_H_ + +/** +* \addtogroup group_device CY8C6016BZI-F04 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6016BZI-F04 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2112100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6016BZI-F04 */ + +#endif /* _CY8C6016BZI_F04_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6036bzi_f04.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6036bzi_f04.h new file mode 100644 index 00000000000..bb50dd08d07 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6036bzi_f04.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6036bzi_f04.h +* +* \brief +* CY8C6036BZI-F04 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6036BZI_F04_H_ +#define _CY8C6036BZI_F04_H_ + +/** +* \addtogroup group_device CY8C6036BZI-F04 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6036BZI-F04 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2102100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6036BZI-F04 */ + +#endif /* _CY8C6036BZI_F04_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6116bzi_f54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6116bzi_f54.h new file mode 100644 index 00000000000..8e8b3e7d67f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6116bzi_f54.h @@ -0,0 +1,1027 @@ +/***************************************************************************//** +* \file cy8c6116bzi_f54.h +* +* \brief +* CY8C6116BZI-F54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6116BZI_F54_H_ +#define _CY8C6116BZI_F54_H_ + +/** +* \addtogroup group_device CY8C6116BZI-F54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6116BZI-F54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2122100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6116BZI-F54 */ + +#endif /* _CY8C6116BZI_F54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117bzi_f34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117bzi_f34.h new file mode 100644 index 00000000000..2dc5a8b857c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117bzi_f34.h @@ -0,0 +1,1017 @@ +/***************************************************************************//** +* \file cy8c6117bzi_f34.h +* +* \brief +* CY8C6117BZI-F34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6117BZI_F34_H_ +#define _CY8C6117BZI_F34_H_ + +/** +* \addtogroup group_device CY8C6117BZI-F34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6117BZI-F34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2182100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6117BZI-F34 */ + +#endif /* _CY8C6117BZI_F34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117fdi_f02.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117fdi_f02.h new file mode 100644 index 00000000000..51f556b79c8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117fdi_f02.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6117fdi_f02.h +* +* \brief +* CY8C6117FDI-F02 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6117FDI_F02_H_ +#define _CY8C6117FDI_F02_H_ + +/** +* \addtogroup group_device CY8C6117FDI-F02 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6117FDI-F02 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2312100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6117FDI-F02 */ + +#endif /* _CY8C6117FDI_F02_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117wi_f34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117wi_f34.h new file mode 100644 index 00000000000..1bee6158685 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6117wi_f34.h @@ -0,0 +1,1017 @@ +/***************************************************************************//** +* \file cy8c6117wi_f34.h +* +* \brief +* CY8C6117WI-F34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6117WI_F34_H_ +#define _CY8C6117WI_F34_H_ + +/** +* \addtogroup group_device CY8C6117WI-F34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6117WI-F34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2182100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6117WI-F34 */ + +#endif /* _CY8C6117WI_F34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f14.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f14.h new file mode 100644 index 00000000000..2a81ecfa390 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f14.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6136bzi_f14.h +* +* \brief +* CY8C6136BZI-F14 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6136BZI_F14_H_ +#define _CY8C6136BZI_F14_H_ + +/** +* \addtogroup group_device CY8C6136BZI-F14 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6136BZI-F14 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2132100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6136BZI-F14 */ + +#endif /* _CY8C6136BZI_F14_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f34.h new file mode 100644 index 00000000000..d0a1d974c79 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136bzi_f34.h @@ -0,0 +1,1017 @@ +/***************************************************************************//** +* \file cy8c6136bzi_f34.h +* +* \brief +* CY8C6136BZI-F34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6136BZI_F34_H_ +#define _CY8C6136BZI_F34_H_ + +/** +* \addtogroup group_device CY8C6136BZI-F34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6136BZI-F34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2142100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6136BZI-F34 */ + +#endif /* _CY8C6136BZI_F34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fdi_f42.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fdi_f42.h new file mode 100644 index 00000000000..6c92e8ff678 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fdi_f42.h @@ -0,0 +1,962 @@ +/***************************************************************************//** +* \file cy8c6136fdi_f42.h +* +* \brief +* CY8C6136FDI-F42 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6136FDI_F42_H_ +#define _CY8C6136FDI_F42_H_ + +/** +* \addtogroup group_device CY8C6136FDI-F42 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6136FDI-F42 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2352100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6136FDI-F42 */ + +#endif /* _CY8C6136FDI_F42_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fti_f42.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fti_f42.h new file mode 100644 index 00000000000..4fc4cd91eab --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6136fti_f42.h @@ -0,0 +1,962 @@ +/***************************************************************************//** +* \file cy8c6136fti_f42.h +* +* \brief +* CY8C6136FTI-F42 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6136FTI_F42_H_ +#define _CY8C6136FTI_F42_H_ + +/** +* \addtogroup group_device CY8C6136FTI-F42 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6136FTI-F42 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2362100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6136FTI-F42 */ + +#endif /* _CY8C6136FTI_F42_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f14.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f14.h new file mode 100644 index 00000000000..b259aeec55c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f14.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6137bzi_f14.h +* +* \brief +* CY8C6137BZI-F14 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6137BZI_F14_H_ +#define _CY8C6137BZI_F14_H_ + +/** +* \addtogroup group_device CY8C6137BZI-F14 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6137BZI-F14 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2152100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6137BZI-F14 */ + +#endif /* _CY8C6137BZI_F14_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f34.h new file mode 100644 index 00000000000..4d0e0c77705 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f34.h @@ -0,0 +1,1017 @@ +/***************************************************************************//** +* \file cy8c6137bzi_f34.h +* +* \brief +* CY8C6137BZI-F34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6137BZI_F34_H_ +#define _CY8C6137BZI_F34_H_ + +/** +* \addtogroup group_device CY8C6137BZI-F34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6137BZI-F34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2162100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6137BZI-F34 */ + +#endif /* _CY8C6137BZI_F34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f54.h new file mode 100644 index 00000000000..b6fe4f7c1c8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137bzi_f54.h @@ -0,0 +1,1027 @@ +/***************************************************************************//** +* \file cy8c6137bzi_f54.h +* +* \brief +* CY8C6137BZI-F54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6137BZI_F54_H_ +#define _CY8C6137BZI_F54_H_ + +/** +* \addtogroup group_device CY8C6137BZI-F54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6137BZI-F54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2172100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6137BZI-F54 */ + +#endif /* _CY8C6137BZI_F54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137fdi_f02.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137fdi_f02.h new file mode 100644 index 00000000000..44fd65501bf --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137fdi_f02.h @@ -0,0 +1,952 @@ +/***************************************************************************//** +* \file cy8c6137fdi_f02.h +* +* \brief +* CY8C6137FDI-F02 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6137FDI_F02_H_ +#define _CY8C6137FDI_F02_H_ + +/** +* \addtogroup group_device CY8C6137FDI-F02 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6137FDI-F02 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2302100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6137FDI-F02 */ + +#endif /* _CY8C6137FDI_F02_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137wi_f54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137wi_f54.h new file mode 100644 index 00000000000..e8b9f652616 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6137wi_f54.h @@ -0,0 +1,1027 @@ +/***************************************************************************//** +* \file cy8c6137wi_f54.h +* +* \brief +* CY8C6137WI-F54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6137WI_F54_H_ +#define _CY8C6137WI_F54_H_ + +/** +* \addtogroup group_device CY8C6137WI-F54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6137WI-F54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2172100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6137WI-F54 */ + +#endif /* _CY8C6137WI_F54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6246bzi_d04.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6246bzi_d04.h new file mode 100644 index 00000000000..5adb12c062d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6246bzi_d04.h @@ -0,0 +1,1177 @@ +/***************************************************************************//** +* \file cy8c6246bzi_d04.h +* +* \brief +* CY8C6246BZI-D04 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6246BZI_D04_H_ +#define _CY8C6246BZI_D04_H_ + +/** +* \addtogroup group_device CY8C6246BZI-D04 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6246BZI-D04 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6246BZI-D04 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2192100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6246BZI-D04 */ + +#endif /* _CY8C6246BZI_D04_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bfi_d54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bfi_d54.h new file mode 100644 index 00000000000..96a63bffb47 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bfi_d54.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247bfi_d54.h +* +* \brief +* CY8C6247BFI-D54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247BFI_D54_H_ +#define _CY8C6247BFI_D54_H_ + +/** +* \addtogroup group_device CY8C6247BFI-D54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247BFI-D54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247BFI-D54 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE20A2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247BFI-D54 */ + +#endif /* _CY8C6247BFI_D54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_aud54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_aud54.h new file mode 100644 index 00000000000..db41cb76a8b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_aud54.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247bzi_aud54.h +* +* \brief +* CY8C6247BZI-AUD54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247BZI_AUD54_H_ +#define _CY8C6247BZI_AUD54_H_ + +/** +* \addtogroup group_device CY8C6247BZI-AUD54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247BZI-AUD54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247BZI-AUD54 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2A12100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247BZI-AUD54 */ + +#endif /* _CY8C6247BZI_AUD54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d34.h new file mode 100644 index 00000000000..c0fde284b4b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d34.h @@ -0,0 +1,1242 @@ +/***************************************************************************//** +* \file cy8c6247bzi_d34.h +* +* \brief +* CY8C6247BZI-D34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247BZI_D34_H_ +#define _CY8C6247BZI_D34_H_ + +/** +* \addtogroup group_device CY8C6247BZI-D34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247BZI-D34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247BZI-D34 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE21B2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247BZI-D34 */ + +#endif /* _CY8C6247BZI_D34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d44.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d44.h new file mode 100644 index 00000000000..322029086cf --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d44.h @@ -0,0 +1,1187 @@ +/***************************************************************************//** +* \file cy8c6247bzi_d44.h +* +* \brief +* CY8C6247BZI-D44 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247BZI_D44_H_ +#define _CY8C6247BZI_D44_H_ + +/** +* \addtogroup group_device CY8C6247BZI-D44 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247BZI-D44 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247BZI-D44 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE21A2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247BZI-D44 */ + +#endif /* _CY8C6247BZI_D44_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d54.h new file mode 100644 index 00000000000..fa636f5dfd2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247bzi_d54.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247bzi_d54.h +* +* \brief +* CY8C6247BZI-D54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247BZI_D54_H_ +#define _CY8C6247BZI_D54_H_ + +/** +* \addtogroup group_device CY8C6247BZI-D54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247BZI-D54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247BZI-D54 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2062100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247BZI-D54 */ + +#endif /* _CY8C6247BZI_D54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d02.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d02.h new file mode 100644 index 00000000000..b0e8acb7433 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d02.h @@ -0,0 +1,1177 @@ +/***************************************************************************//** +* \file cy8c6247fdi_d02.h +* +* \brief +* CY8C6247FDI-D02 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247FDI_D02_H_ +#define _CY8C6247FDI_D02_H_ + +/** +* \addtogroup group_device CY8C6247FDI-D02 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247FDI-D02 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247FDI-D02 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2322100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247FDI-D02 */ + +#endif /* _CY8C6247FDI_D02_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d32.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d32.h new file mode 100644 index 00000000000..396f5272ab8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d32.h @@ -0,0 +1,1242 @@ +/***************************************************************************//** +* \file cy8c6247fdi_d32.h +* +* \brief +* CY8C6247FDI-D32 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247FDI_D32_H_ +#define _CY8C6247FDI_D32_H_ + +/** +* \addtogroup group_device CY8C6247FDI-D32 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247FDI-D32 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247FDI-D32 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2332100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247FDI-D32 */ + +#endif /* _CY8C6247FDI_D32_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d52.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d52.h new file mode 100644 index 00000000000..c4aedb1a61d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fdi_d52.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247fdi_d52.h +* +* \brief +* CY8C6247FDI-D52 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247FDI_D52_H_ +#define _CY8C6247FDI_D52_H_ + +/** +* \addtogroup group_device CY8C6247FDI-D52 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247FDI-D52 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247FDI-D52 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2342100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247FDI-D52 */ + +#endif /* _CY8C6247FDI_D52_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fti_d52.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fti_d52.h new file mode 100644 index 00000000000..da5abaf9b6c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247fti_d52.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247fti_d52.h +* +* \brief +* CY8C6247FTI-D52 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247FTI_D52_H_ +#define _CY8C6247FTI_D52_H_ + +/** +* \addtogroup group_device CY8C6247FTI-D52 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247FTI-D52 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247FTI-D52 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_80_wlcsp.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2372100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247FTI-D52 */ + +#endif /* _CY8C6247FTI_D52_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247wi_d54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247wi_d54.h new file mode 100644 index 00000000000..dfdd946fdb2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6247wi_d54.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c6247wi_d54.h +* +* \brief +* CY8C6247WI-D54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6247WI_D54_H_ +#define _CY8C6247WI_D54_H_ + +/** +* \addtogroup group_device CY8C6247WI-D54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6247WI-D54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6247WI-D54 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2062100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6247WI-D54 */ + +#endif /* _CY8C6247WI_D54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624aazi_d44.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624aazi_d44.h new file mode 100644 index 00000000000..92bc2db07d5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624aazi_d44.h @@ -0,0 +1,1326 @@ +/***************************************************************************//** +* \file cy8c624aazi_d44.h +* +* \brief +* CY8C624AAZI-D44 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C624AAZI_D44_H_ +#define _CY8C624AAZI_D44_H_ + +/** +* \addtogroup group_device CY8C624AAZI-D44 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624AAZI-D44 User Interrupt Numbers */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CPU User Interrupt #0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CPU User Interrupt #1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CPU User Interrupt #2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CPU User Interrupt #3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CPU User Interrupt #4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CPU User Interrupt #5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CPU User Interrupt #6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CPU User Interrupt #7 */ + /* CY8C624AAZI-D44 Internal SW Interrupt Numbers */ + Internal0_IRQn = 8, /*!< 8 [Active] Internal SW Interrupt #0 */ + Internal1_IRQn = 9, /*!< 9 [Active] Internal SW Interrupt #1 */ + Internal2_IRQn = 10, /*!< 10 [Active] Internal SW Interrupt #2 */ + Internal3_IRQn = 11, /*!< 11 [Active] Internal SW Interrupt #3 */ + Internal4_IRQn = 12, /*!< 12 [Active] Internal SW Interrupt #4 */ + Internal5_IRQn = 13, /*!< 13 [Active] Internal SW Interrupt #5 */ + Internal6_IRQn = 14, /*!< 14 [Active] Internal SW Interrupt #6 */ + Internal7_IRQn = 15, /*!< 15 [Active] Internal SW Interrupt #7 */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624AAZI-D44 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C624AAZI-D44 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + disconnected_IRQn =1023 /*!< 1023 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00010000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00100000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00200000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 13u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 2u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 2u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 2u +#define CY_IP_M4CPUSS_DMAC 1u +#define CY_IP_M4CPUSS_DMAC_INSTANCES 1u +#define CY_IP_M4CPUSS_DMAC_VERSION 2u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 2u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 2u +#define CY_IP_MXSDHC 1u +#define CY_IP_MXSDHC_INSTANCES 2u +#define CY_IP_MXSDHC_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 2u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 2u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_02_config.h" +#include "gpio_psoc6_02_128_tqfp.h" + +#define CY_DEVICE_PSOC6A2M +#define CY_SILICON_ID 0xE40B1102UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40000000UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40000000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40004000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40004020 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40004040 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x40004060 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40004080 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x400040C0 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40004120 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40004140 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40008000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40008400 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40008800 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40008C00 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40009000 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40009400 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40009800 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40009C00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x4000A000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x4000A400 */ +#define PERI_TR_1TO1_GR0 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[0]) /* 0x4000C000 */ +#define PERI_TR_1TO1_GR1 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[1]) /* 0x4000C400 */ +#define PERI_TR_1TO1_GR2 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[2]) /* 0x4000C800 */ +#define PERI_TR_1TO1_GR3 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[3]) /* 0x4000CC00 */ +#define PERI_TR_1TO1_GR4 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[4]) /* 0x4000D000 */ +#define PERI_TR_1TO1_GR5 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[5]) /* 0x4000D400 */ +#define PERI_TR_1TO1_GR6 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[6]) /* 0x4000D800 */ + +/******************************************************************************* +* PERI_MS +*******************************************************************************/ + +#define PERI_MS_BASE 0x40010000UL +#define PERI_MS ((PERI_MS_Type*) PERI_MS_BASE) /* 0x40010000 */ +#define PERI_MS_PPU_PR0 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[0]) /* 0x40010000 */ +#define PERI_MS_PPU_PR1 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[1]) /* 0x40010040 */ +#define PERI_MS_PPU_PR2 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[2]) /* 0x40010080 */ +#define PERI_MS_PPU_PR3 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[3]) /* 0x400100C0 */ +#define PERI_MS_PPU_PR4 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[4]) /* 0x40010100 */ +#define PERI_MS_PPU_PR5 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[5]) /* 0x40010140 */ +#define PERI_MS_PPU_PR6 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[6]) /* 0x40010180 */ +#define PERI_MS_PPU_PR7 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[7]) /* 0x400101C0 */ +#define PERI_MS_PPU_FX_PERI_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[0]) /* 0x40010800 */ +#define PERI_MS_PPU_FX_PERI_GR0_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[1]) /* 0x40010840 */ +#define PERI_MS_PPU_FX_PERI_GR1_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[2]) /* 0x40010880 */ +#define PERI_MS_PPU_FX_PERI_GR2_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[3]) /* 0x400108C0 */ +#define PERI_MS_PPU_FX_PERI_GR3_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[4]) /* 0x40010900 */ +#define PERI_MS_PPU_FX_PERI_GR4_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[5]) /* 0x40010940 */ +#define PERI_MS_PPU_FX_PERI_GR6_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[6]) /* 0x40010980 */ +#define PERI_MS_PPU_FX_PERI_GR9_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[7]) /* 0x400109C0 */ +#define PERI_MS_PPU_FX_PERI_GR10_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[8]) /* 0x40010A00 */ +#define PERI_MS_PPU_FX_PERI_TR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[9]) /* 0x40010A40 */ +#define PERI_MS_PPU_FX_CRYPTO_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[10]) /* 0x40010A80 */ +#define PERI_MS_PPU_FX_CRYPTO_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[11]) /* 0x40010AC0 */ +#define PERI_MS_PPU_FX_CRYPTO_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[12]) /* 0x40010B00 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[13]) /* 0x40010B40 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[14]) /* 0x40010B80 */ +#define PERI_MS_PPU_FX_CRYPTO_BUF ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[15]) /* 0x40010BC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[16]) /* 0x40010C00 */ +#define PERI_MS_PPU_FX_CPUSS_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[17]) /* 0x40010C40 */ +#define PERI_MS_PPU_FX_CPUSS_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[18]) /* 0x40010C80 */ +#define PERI_MS_PPU_FX_CPUSS_CM0_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[19]) /* 0x40010CC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[20]) /* 0x40010D00 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[21]) /* 0x40010D40 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT1_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[22]) /* 0x40010D80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT0_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[23]) /* 0x40010DC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT1_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[24]) /* 0x40010E00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT2_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[25]) /* 0x40010E40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT3_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[26]) /* 0x40010E80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT4_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[27]) /* 0x40010EC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT5_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[28]) /* 0x40010F00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT6_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[29]) /* 0x40010F40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT7_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[30]) /* 0x40010F80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT8_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[31]) /* 0x40010FC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT9_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[32]) /* 0x40011000 */ +#define PERI_MS_PPU_FX_IPC_STRUCT10_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[33]) /* 0x40011040 */ +#define PERI_MS_PPU_FX_IPC_STRUCT11_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[34]) /* 0x40011080 */ +#define PERI_MS_PPU_FX_IPC_STRUCT12_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[35]) /* 0x400110C0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT13_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[36]) /* 0x40011100 */ +#define PERI_MS_PPU_FX_IPC_STRUCT14_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[37]) /* 0x40011140 */ +#define PERI_MS_PPU_FX_IPC_STRUCT15_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[38]) /* 0x40011180 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT0_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[39]) /* 0x400111C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT1_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[40]) /* 0x40011200 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT2_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[41]) /* 0x40011240 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT3_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[42]) /* 0x40011280 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT4_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[43]) /* 0x400112C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT5_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[44]) /* 0x40011300 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT6_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[45]) /* 0x40011340 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT7_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[46]) /* 0x40011380 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT8_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[47]) /* 0x400113C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT9_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[48]) /* 0x40011400 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT10_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[49]) /* 0x40011440 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT11_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[50]) /* 0x40011480 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT12_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[51]) /* 0x400114C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT13_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[52]) /* 0x40011500 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT14_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[53]) /* 0x40011540 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT15_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[54]) /* 0x40011580 */ +#define PERI_MS_PPU_FX_PROT_SMPU_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[55]) /* 0x400115C0 */ +#define PERI_MS_PPU_FX_PROT_MPU0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[56]) /* 0x40011600 */ +#define PERI_MS_PPU_FX_PROT_MPU5_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[57]) /* 0x40011640 */ +#define PERI_MS_PPU_FX_PROT_MPU6_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[58]) /* 0x40011680 */ +#define PERI_MS_PPU_FX_PROT_MPU14_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[59]) /* 0x400116C0 */ +#define PERI_MS_PPU_FX_PROT_MPU15_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[60]) /* 0x40011700 */ +#define PERI_MS_PPU_FX_FLASHC_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[61]) /* 0x40011740 */ +#define PERI_MS_PPU_FX_FLASHC_CMD ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[62]) /* 0x40011780 */ +#define PERI_MS_PPU_FX_FLASHC_DFT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[63]) /* 0x400117C0 */ +#define PERI_MS_PPU_FX_FLASHC_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[64]) /* 0x40011800 */ +#define PERI_MS_PPU_FX_FLASHC_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[65]) /* 0x40011840 */ +#define PERI_MS_PPU_FX_FLASHC_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[66]) /* 0x40011880 */ +#define PERI_MS_PPU_FX_FLASHC_DW0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[67]) /* 0x400118C0 */ +#define PERI_MS_PPU_FX_FLASHC_DW1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[68]) /* 0x40011900 */ +#define PERI_MS_PPU_FX_FLASHC_DMAC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[69]) /* 0x40011940 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[70]) /* 0x40011980 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[71]) /* 0x400119C0 */ +#define PERI_MS_PPU_FX_FLASHC_FM ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[72]) /* 0x40011A00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[73]) /* 0x40011A40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[74]) /* 0x40011A80 */ +#define PERI_MS_PPU_FX_WDT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[75]) /* 0x40011AC0 */ +#define PERI_MS_PPU_FX_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[76]) /* 0x40011B00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[77]) /* 0x40011B40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[78]) /* 0x40011B80 */ +#define PERI_MS_PPU_FX_SRSS_MAIN5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[79]) /* 0x40011BC0 */ +#define PERI_MS_PPU_FX_SRSS_MAIN6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[80]) /* 0x40011C00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[81]) /* 0x40011C40 */ +#define PERI_MS_PPU_FX_BACKUP_BACKUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[82]) /* 0x40011C80 */ +#define PERI_MS_PPU_FX_DW0_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[83]) /* 0x40011CC0 */ +#define PERI_MS_PPU_FX_DW1_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[84]) /* 0x40011D00 */ +#define PERI_MS_PPU_FX_DW0_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[85]) /* 0x40011D40 */ +#define PERI_MS_PPU_FX_DW1_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[86]) /* 0x40011D80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[87]) /* 0x40011DC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[88]) /* 0x40011E00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[89]) /* 0x40011E40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[90]) /* 0x40011E80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[91]) /* 0x40011EC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[92]) /* 0x40011F00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[93]) /* 0x40011F40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[94]) /* 0x40011F80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[95]) /* 0x40011FC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[96]) /* 0x40012000 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[97]) /* 0x40012040 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[98]) /* 0x40012080 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[99]) /* 0x400120C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[100]) /* 0x40012100 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[101]) /* 0x40012140 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[102]) /* 0x40012180 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[103]) /* 0x400121C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[104]) /* 0x40012200 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[105]) /* 0x40012240 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[106]) /* 0x40012280 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[107]) /* 0x400122C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[108]) /* 0x40012300 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[109]) /* 0x40012340 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[110]) /* 0x40012380 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[111]) /* 0x400123C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[112]) /* 0x40012400 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[113]) /* 0x40012440 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[114]) /* 0x40012480 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[115]) /* 0x400124C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[116]) /* 0x40012500 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[117]) /* 0x40012540 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[118]) /* 0x40012580 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[119]) /* 0x400125C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[120]) /* 0x40012600 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[121]) /* 0x40012640 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[122]) /* 0x40012680 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[123]) /* 0x400126C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[124]) /* 0x40012700 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[125]) /* 0x40012740 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[126]) /* 0x40012780 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[127]) /* 0x400127C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[128]) /* 0x40012800 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[129]) /* 0x40012840 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[130]) /* 0x40012880 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[131]) /* 0x400128C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[132]) /* 0x40012900 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[133]) /* 0x40012940 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[134]) /* 0x40012980 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[135]) /* 0x400129C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[136]) /* 0x40012A00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[137]) /* 0x40012A40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[138]) /* 0x40012A80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[139]) /* 0x40012AC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[140]) /* 0x40012B00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[141]) /* 0x40012B40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[142]) /* 0x40012B80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[143]) /* 0x40012BC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[144]) /* 0x40012C00 */ +#define PERI_MS_PPU_FX_DMAC_TOP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[145]) /* 0x40012C40 */ +#define PERI_MS_PPU_FX_DMAC_CH0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[146]) /* 0x40012C80 */ +#define PERI_MS_PPU_FX_DMAC_CH1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[147]) /* 0x40012CC0 */ +#define PERI_MS_PPU_FX_DMAC_CH2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[148]) /* 0x40012D00 */ +#define PERI_MS_PPU_FX_DMAC_CH3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[149]) /* 0x40012D40 */ +#define PERI_MS_PPU_FX_EFUSE_CTL ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[150]) /* 0x40012D80 */ +#define PERI_MS_PPU_FX_EFUSE_DATA ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[151]) /* 0x40012DC0 */ +#define PERI_MS_PPU_FX_PROFILE ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[152]) /* 0x40012E00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[153]) /* 0x40012E40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[154]) /* 0x40012E80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[155]) /* 0x40012EC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[156]) /* 0x40012F00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[157]) /* 0x40012F40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[158]) /* 0x40012F80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[159]) /* 0x40012FC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[160]) /* 0x40013000 */ +#define PERI_MS_PPU_FX_HSIOM_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[161]) /* 0x40013040 */ +#define PERI_MS_PPU_FX_HSIOM_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[162]) /* 0x40013080 */ +#define PERI_MS_PPU_FX_HSIOM_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[163]) /* 0x400130C0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[164]) /* 0x40013100 */ +#define PERI_MS_PPU_FX_HSIOM_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[165]) /* 0x40013140 */ +#define PERI_MS_PPU_FX_HSIOM_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[166]) /* 0x40013180 */ +#define PERI_MS_PPU_FX_HSIOM_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[167]) /* 0x400131C0 */ +#define PERI_MS_PPU_FX_HSIOM_AMUX ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[168]) /* 0x40013200 */ +#define PERI_MS_PPU_FX_HSIOM_MON ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[169]) /* 0x40013240 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[170]) /* 0x40013280 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[171]) /* 0x400132C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[172]) /* 0x40013300 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[173]) /* 0x40013340 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[174]) /* 0x40013380 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[175]) /* 0x400133C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[176]) /* 0x40013400 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[177]) /* 0x40013440 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[178]) /* 0x40013480 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[179]) /* 0x400134C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[180]) /* 0x40013500 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[181]) /* 0x40013540 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[182]) /* 0x40013580 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[183]) /* 0x400135C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[184]) /* 0x40013600 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[185]) /* 0x40013640 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[186]) /* 0x40013680 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[187]) /* 0x400136C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[188]) /* 0x40013700 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[189]) /* 0x40013740 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[190]) /* 0x40013780 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[191]) /* 0x400137C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[192]) /* 0x40013800 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[193]) /* 0x40013840 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[194]) /* 0x40013880 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[195]) /* 0x400138C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[196]) /* 0x40013900 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[197]) /* 0x40013940 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[198]) /* 0x40013980 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[199]) /* 0x400139C0 */ +#define PERI_MS_PPU_FX_GPIO_GPIO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[200]) /* 0x40013A00 */ +#define PERI_MS_PPU_FX_GPIO_TEST ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[201]) /* 0x40013A40 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[202]) /* 0x40013A80 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[203]) /* 0x40013AC0 */ +#define PERI_MS_PPU_FX_LPCOMP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[204]) /* 0x40013B00 */ +#define PERI_MS_PPU_FX_CSD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[205]) /* 0x40013B40 */ +#define PERI_MS_PPU_FX_TCPWM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[206]) /* 0x40013B80 */ +#define PERI_MS_PPU_FX_TCPWM1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[207]) /* 0x40013BC0 */ +#define PERI_MS_PPU_FX_LCD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[208]) /* 0x40013C00 */ +#define PERI_MS_PPU_FX_USBFS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[209]) /* 0x40013C40 */ +#define PERI_MS_PPU_FX_SMIF0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[210]) /* 0x40013C80 */ +#define PERI_MS_PPU_FX_SDHC0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[211]) /* 0x40013CC0 */ +#define PERI_MS_PPU_FX_SDHC1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[212]) /* 0x40013D00 */ +#define PERI_MS_PPU_FX_SCB0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[213]) /* 0x40013D40 */ +#define PERI_MS_PPU_FX_SCB1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[214]) /* 0x40013D80 */ +#define PERI_MS_PPU_FX_SCB2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[215]) /* 0x40013DC0 */ +#define PERI_MS_PPU_FX_SCB3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[216]) /* 0x40013E00 */ +#define PERI_MS_PPU_FX_SCB4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[217]) /* 0x40013E40 */ +#define PERI_MS_PPU_FX_SCB5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[218]) /* 0x40013E80 */ +#define PERI_MS_PPU_FX_SCB6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[219]) /* 0x40013EC0 */ +#define PERI_MS_PPU_FX_SCB7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[220]) /* 0x40013F00 */ +#define PERI_MS_PPU_FX_SCB8 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[221]) /* 0x40013F40 */ +#define PERI_MS_PPU_FX_SCB9 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[222]) /* 0x40013F80 */ +#define PERI_MS_PPU_FX_SCB10 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[223]) /* 0x40013FC0 */ +#define PERI_MS_PPU_FX_SCB11 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[224]) /* 0x40014000 */ +#define PERI_MS_PPU_FX_SCB12 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[225]) /* 0x40014040 */ +#define PERI_MS_PPU_FX_PDM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[226]) /* 0x40014080 */ +#define PERI_MS_PPU_FX_I2S0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[227]) /* 0x400140C0 */ +#define PERI_MS_PPU_FX_I2S1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[228]) /* 0x40014100 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40100000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40100000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40200000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40200000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40210000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40210000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40210000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40210100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40220000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40220000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40220000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40220020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40220040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40220060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40220080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402200A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402200C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402200E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40220100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40220120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40220140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40220160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40220180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402201A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402201C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402201E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40221000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40221020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40221040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40221060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40221080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402210A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402210C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402210E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40221100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40221120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40221140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40221160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40221180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402211A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402211C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402211E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40230000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40230000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40232000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40232040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40232080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402320C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40232100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40232140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40232180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402321C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40232200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40232240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40232280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402322C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40232300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40232340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40232380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402323C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40230000 */ +#define PROT_MPU5_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[0]) /* 0x40235600 */ +#define PROT_MPU5_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[1]) /* 0x40235620 */ +#define PROT_MPU5_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[2]) /* 0x40235640 */ +#define PROT_MPU5_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[3]) /* 0x40235660 */ +#define PROT_MPU5_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[4]) /* 0x40235680 */ +#define PROT_MPU5_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[5]) /* 0x402356A0 */ +#define PROT_MPU5_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[6]) /* 0x402356C0 */ +#define PROT_MPU5_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[7]) /* 0x402356E0 */ +#define PROT_MPU6_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[0]) /* 0x40235A00 */ +#define PROT_MPU6_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[1]) /* 0x40235A20 */ +#define PROT_MPU6_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[2]) /* 0x40235A40 */ +#define PROT_MPU6_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[3]) /* 0x40235A60 */ +#define PROT_MPU6_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[4]) /* 0x40235A80 */ +#define PROT_MPU6_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[5]) /* 0x40235AA0 */ +#define PROT_MPU6_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[6]) /* 0x40235AC0 */ +#define PROT_MPU6_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[7]) /* 0x40235AE0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40237E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40237E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40237E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40237E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40237E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40237EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40237EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40237EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40234000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40234400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40234800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40234C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40235000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40235400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40235800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40235C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40236000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40236400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40236800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40236C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40237000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40237400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40237800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40237C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40240000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40240000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4024F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40290000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40290000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40288000 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40288040 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40288080 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x402880C0 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40288100 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x40288140 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x40288180 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402881C0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40288200 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40288240 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40288280 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x402882C0 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40288300 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x40288340 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x40288380 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402883C0 */ +#define DW0_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[16]) /* 0x40288400 */ +#define DW0_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[17]) /* 0x40288440 */ +#define DW0_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[18]) /* 0x40288480 */ +#define DW0_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[19]) /* 0x402884C0 */ +#define DW0_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[20]) /* 0x40288500 */ +#define DW0_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[21]) /* 0x40288540 */ +#define DW0_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[22]) /* 0x40288580 */ +#define DW0_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[23]) /* 0x402885C0 */ +#define DW0_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[24]) /* 0x40288600 */ +#define DW0_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[25]) /* 0x40288640 */ +#define DW0_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[26]) /* 0x40288680 */ +#define DW0_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[27]) /* 0x402886C0 */ +#define DW0_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[28]) /* 0x40288700 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40298000 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40298040 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40298080 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x402980C0 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40298100 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x40298140 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x40298180 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402981C0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40298200 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40298240 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40298280 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x402982C0 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40298300 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x40298340 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x40298380 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402983C0 */ +#define DW1_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[16]) /* 0x40298400 */ +#define DW1_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[17]) /* 0x40298440 */ +#define DW1_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[18]) /* 0x40298480 */ +#define DW1_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[19]) /* 0x402984C0 */ +#define DW1_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[20]) /* 0x40298500 */ +#define DW1_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[21]) /* 0x40298540 */ +#define DW1_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[22]) /* 0x40298580 */ +#define DW1_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[23]) /* 0x402985C0 */ +#define DW1_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[24]) /* 0x40298600 */ +#define DW1_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[25]) /* 0x40298640 */ +#define DW1_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[26]) /* 0x40298680 */ +#define DW1_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[27]) /* 0x402986C0 */ +#define DW1_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[28]) /* 0x40298700 */ + +/******************************************************************************* +* DMAC +*******************************************************************************/ + +#define DMAC_BASE 0x402A0000UL +#define DMAC ((DMAC_Type*) DMAC_BASE) /* 0x402A0000 */ +#define DMAC_CH0 ((DMAC_CH_Type*) &DMAC->CH[0]) /* 0x402A1000 */ +#define DMAC_CH1 ((DMAC_CH_Type*) &DMAC->CH[1]) /* 0x402A1100 */ +#define DMAC_CH2 ((DMAC_CH_Type*) &DMAC->CH[2]) /* 0x402A1200 */ +#define DMAC_CH3 ((DMAC_CH_Type*) &DMAC->CH[3]) /* 0x402A1300 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40300000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40300000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40300000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40300010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40300020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40300030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40300040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40300050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40300060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40300070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40300080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40300090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403000A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403000B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403000C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403000D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403000E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40310000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40310000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40310000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40310080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40310100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40310180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40310200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40310280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40310300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40310380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40310400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40310480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40310500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40310580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40310600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40310680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40310700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40320000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40320000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40320800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40320900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SDHC +*******************************************************************************/ + +#define SDHC0_BASE 0x40460000UL +#define SDHC1_BASE 0x40470000UL +#define SDHC0 ((SDHC_Type*) SDHC0_BASE) /* 0x40460000 */ +#define SDHC1 ((SDHC_Type*) SDHC1_BASE) /* 0x40470000 */ +#define SDHC0_WRAP ((SDHC_WRAP_Type*) &SDHC0->WRAP) /* 0x40460000 */ +#define SDHC1_WRAP ((SDHC_WRAP_Type*) &SDHC1->WRAP) /* 0x40470000 */ +#define SDHC0_CORE ((SDHC_CORE_Type*) &SDHC0->CORE) /* 0x40461000 */ +#define SDHC1_CORE ((SDHC_CORE_Type*) &SDHC1->CORE) /* 0x40471000 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40600000UL +#define SCB1_BASE 0x40610000UL +#define SCB2_BASE 0x40620000UL +#define SCB3_BASE 0x40630000UL +#define SCB4_BASE 0x40640000UL +#define SCB5_BASE 0x40650000UL +#define SCB6_BASE 0x40660000UL +#define SCB7_BASE 0x40670000UL +#define SCB8_BASE 0x40680000UL +#define SCB9_BASE 0x40690000UL +#define SCB10_BASE 0x406A0000UL +#define SCB11_BASE 0x406B0000UL +#define SCB12_BASE 0x406C0000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40600000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40610000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40620000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40630000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40640000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40650000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40660000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40670000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40680000 */ +#define SCB9 ((CySCB_Type*) SCB9_BASE) /* 0x40690000 */ +#define SCB10 ((CySCB_Type*) SCB10_BASE) /* 0x406A0000 */ +#define SCB11 ((CySCB_Type*) SCB11_BASE) /* 0x406B0000 */ +#define SCB12 ((CySCB_Type*) SCB12_BASE) /* 0x406C0000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x409D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x409D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x409F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x409F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x409F0E00 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x40A00000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x40A00000 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x40A10000UL +#define I2S1_BASE 0x40A11000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x40A10000 */ +#define I2S1 ((I2S_Type*) I2S1_BASE) /* 0x40A11000 */ + +/** \} CY8C624AAZI-D44 */ + +#endif /* _CY8C624AAZI_D44_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624abzi_d44.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624abzi_d44.h new file mode 100644 index 00000000000..078a2ff1736 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624abzi_d44.h @@ -0,0 +1,1326 @@ +/***************************************************************************//** +* \file cy8c624abzi_d44.h +* +* \brief +* CY8C624ABZI-D44 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C624ABZI_D44_H_ +#define _CY8C624ABZI_D44_H_ + +/** +* \addtogroup group_device CY8C624ABZI-D44 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624ABZI-D44 User Interrupt Numbers */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CPU User Interrupt #0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CPU User Interrupt #1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CPU User Interrupt #2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CPU User Interrupt #3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CPU User Interrupt #4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CPU User Interrupt #5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CPU User Interrupt #6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CPU User Interrupt #7 */ + /* CY8C624ABZI-D44 Internal SW Interrupt Numbers */ + Internal0_IRQn = 8, /*!< 8 [Active] Internal SW Interrupt #0 */ + Internal1_IRQn = 9, /*!< 9 [Active] Internal SW Interrupt #1 */ + Internal2_IRQn = 10, /*!< 10 [Active] Internal SW Interrupt #2 */ + Internal3_IRQn = 11, /*!< 11 [Active] Internal SW Interrupt #3 */ + Internal4_IRQn = 12, /*!< 12 [Active] Internal SW Interrupt #4 */ + Internal5_IRQn = 13, /*!< 13 [Active] Internal SW Interrupt #5 */ + Internal6_IRQn = 14, /*!< 14 [Active] Internal SW Interrupt #6 */ + Internal7_IRQn = 15, /*!< 15 [Active] Internal SW Interrupt #7 */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624ABZI-D44 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C624ABZI-D44 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + disconnected_IRQn =1023 /*!< 1023 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00010000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00100000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00200000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 13u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 2u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 2u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 2u +#define CY_IP_M4CPUSS_DMAC 1u +#define CY_IP_M4CPUSS_DMAC_INSTANCES 1u +#define CY_IP_M4CPUSS_DMAC_VERSION 2u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 2u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 2u +#define CY_IP_MXSDHC 1u +#define CY_IP_MXSDHC_INSTANCES 2u +#define CY_IP_MXSDHC_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 2u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 2u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_02_config.h" +#include "gpio_psoc6_02_124_bga.h" + +#define CY_DEVICE_PSOC6A2M +#define CY_SILICON_ID 0xE4021102UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40000000UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40000000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40004000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40004020 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40004040 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x40004060 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40004080 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x400040C0 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40004120 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40004140 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40008000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40008400 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40008800 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40008C00 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40009000 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40009400 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40009800 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40009C00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x4000A000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x4000A400 */ +#define PERI_TR_1TO1_GR0 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[0]) /* 0x4000C000 */ +#define PERI_TR_1TO1_GR1 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[1]) /* 0x4000C400 */ +#define PERI_TR_1TO1_GR2 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[2]) /* 0x4000C800 */ +#define PERI_TR_1TO1_GR3 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[3]) /* 0x4000CC00 */ +#define PERI_TR_1TO1_GR4 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[4]) /* 0x4000D000 */ +#define PERI_TR_1TO1_GR5 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[5]) /* 0x4000D400 */ +#define PERI_TR_1TO1_GR6 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[6]) /* 0x4000D800 */ + +/******************************************************************************* +* PERI_MS +*******************************************************************************/ + +#define PERI_MS_BASE 0x40010000UL +#define PERI_MS ((PERI_MS_Type*) PERI_MS_BASE) /* 0x40010000 */ +#define PERI_MS_PPU_PR0 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[0]) /* 0x40010000 */ +#define PERI_MS_PPU_PR1 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[1]) /* 0x40010040 */ +#define PERI_MS_PPU_PR2 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[2]) /* 0x40010080 */ +#define PERI_MS_PPU_PR3 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[3]) /* 0x400100C0 */ +#define PERI_MS_PPU_PR4 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[4]) /* 0x40010100 */ +#define PERI_MS_PPU_PR5 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[5]) /* 0x40010140 */ +#define PERI_MS_PPU_PR6 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[6]) /* 0x40010180 */ +#define PERI_MS_PPU_PR7 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[7]) /* 0x400101C0 */ +#define PERI_MS_PPU_FX_PERI_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[0]) /* 0x40010800 */ +#define PERI_MS_PPU_FX_PERI_GR0_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[1]) /* 0x40010840 */ +#define PERI_MS_PPU_FX_PERI_GR1_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[2]) /* 0x40010880 */ +#define PERI_MS_PPU_FX_PERI_GR2_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[3]) /* 0x400108C0 */ +#define PERI_MS_PPU_FX_PERI_GR3_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[4]) /* 0x40010900 */ +#define PERI_MS_PPU_FX_PERI_GR4_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[5]) /* 0x40010940 */ +#define PERI_MS_PPU_FX_PERI_GR6_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[6]) /* 0x40010980 */ +#define PERI_MS_PPU_FX_PERI_GR9_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[7]) /* 0x400109C0 */ +#define PERI_MS_PPU_FX_PERI_GR10_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[8]) /* 0x40010A00 */ +#define PERI_MS_PPU_FX_PERI_TR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[9]) /* 0x40010A40 */ +#define PERI_MS_PPU_FX_CRYPTO_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[10]) /* 0x40010A80 */ +#define PERI_MS_PPU_FX_CRYPTO_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[11]) /* 0x40010AC0 */ +#define PERI_MS_PPU_FX_CRYPTO_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[12]) /* 0x40010B00 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[13]) /* 0x40010B40 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[14]) /* 0x40010B80 */ +#define PERI_MS_PPU_FX_CRYPTO_BUF ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[15]) /* 0x40010BC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[16]) /* 0x40010C00 */ +#define PERI_MS_PPU_FX_CPUSS_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[17]) /* 0x40010C40 */ +#define PERI_MS_PPU_FX_CPUSS_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[18]) /* 0x40010C80 */ +#define PERI_MS_PPU_FX_CPUSS_CM0_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[19]) /* 0x40010CC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[20]) /* 0x40010D00 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[21]) /* 0x40010D40 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT1_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[22]) /* 0x40010D80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT0_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[23]) /* 0x40010DC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT1_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[24]) /* 0x40010E00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT2_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[25]) /* 0x40010E40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT3_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[26]) /* 0x40010E80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT4_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[27]) /* 0x40010EC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT5_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[28]) /* 0x40010F00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT6_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[29]) /* 0x40010F40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT7_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[30]) /* 0x40010F80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT8_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[31]) /* 0x40010FC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT9_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[32]) /* 0x40011000 */ +#define PERI_MS_PPU_FX_IPC_STRUCT10_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[33]) /* 0x40011040 */ +#define PERI_MS_PPU_FX_IPC_STRUCT11_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[34]) /* 0x40011080 */ +#define PERI_MS_PPU_FX_IPC_STRUCT12_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[35]) /* 0x400110C0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT13_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[36]) /* 0x40011100 */ +#define PERI_MS_PPU_FX_IPC_STRUCT14_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[37]) /* 0x40011140 */ +#define PERI_MS_PPU_FX_IPC_STRUCT15_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[38]) /* 0x40011180 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT0_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[39]) /* 0x400111C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT1_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[40]) /* 0x40011200 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT2_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[41]) /* 0x40011240 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT3_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[42]) /* 0x40011280 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT4_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[43]) /* 0x400112C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT5_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[44]) /* 0x40011300 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT6_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[45]) /* 0x40011340 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT7_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[46]) /* 0x40011380 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT8_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[47]) /* 0x400113C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT9_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[48]) /* 0x40011400 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT10_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[49]) /* 0x40011440 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT11_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[50]) /* 0x40011480 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT12_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[51]) /* 0x400114C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT13_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[52]) /* 0x40011500 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT14_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[53]) /* 0x40011540 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT15_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[54]) /* 0x40011580 */ +#define PERI_MS_PPU_FX_PROT_SMPU_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[55]) /* 0x400115C0 */ +#define PERI_MS_PPU_FX_PROT_MPU0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[56]) /* 0x40011600 */ +#define PERI_MS_PPU_FX_PROT_MPU5_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[57]) /* 0x40011640 */ +#define PERI_MS_PPU_FX_PROT_MPU6_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[58]) /* 0x40011680 */ +#define PERI_MS_PPU_FX_PROT_MPU14_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[59]) /* 0x400116C0 */ +#define PERI_MS_PPU_FX_PROT_MPU15_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[60]) /* 0x40011700 */ +#define PERI_MS_PPU_FX_FLASHC_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[61]) /* 0x40011740 */ +#define PERI_MS_PPU_FX_FLASHC_CMD ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[62]) /* 0x40011780 */ +#define PERI_MS_PPU_FX_FLASHC_DFT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[63]) /* 0x400117C0 */ +#define PERI_MS_PPU_FX_FLASHC_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[64]) /* 0x40011800 */ +#define PERI_MS_PPU_FX_FLASHC_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[65]) /* 0x40011840 */ +#define PERI_MS_PPU_FX_FLASHC_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[66]) /* 0x40011880 */ +#define PERI_MS_PPU_FX_FLASHC_DW0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[67]) /* 0x400118C0 */ +#define PERI_MS_PPU_FX_FLASHC_DW1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[68]) /* 0x40011900 */ +#define PERI_MS_PPU_FX_FLASHC_DMAC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[69]) /* 0x40011940 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[70]) /* 0x40011980 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[71]) /* 0x400119C0 */ +#define PERI_MS_PPU_FX_FLASHC_FM ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[72]) /* 0x40011A00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[73]) /* 0x40011A40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[74]) /* 0x40011A80 */ +#define PERI_MS_PPU_FX_WDT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[75]) /* 0x40011AC0 */ +#define PERI_MS_PPU_FX_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[76]) /* 0x40011B00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[77]) /* 0x40011B40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[78]) /* 0x40011B80 */ +#define PERI_MS_PPU_FX_SRSS_MAIN5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[79]) /* 0x40011BC0 */ +#define PERI_MS_PPU_FX_SRSS_MAIN6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[80]) /* 0x40011C00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[81]) /* 0x40011C40 */ +#define PERI_MS_PPU_FX_BACKUP_BACKUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[82]) /* 0x40011C80 */ +#define PERI_MS_PPU_FX_DW0_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[83]) /* 0x40011CC0 */ +#define PERI_MS_PPU_FX_DW1_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[84]) /* 0x40011D00 */ +#define PERI_MS_PPU_FX_DW0_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[85]) /* 0x40011D40 */ +#define PERI_MS_PPU_FX_DW1_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[86]) /* 0x40011D80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[87]) /* 0x40011DC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[88]) /* 0x40011E00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[89]) /* 0x40011E40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[90]) /* 0x40011E80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[91]) /* 0x40011EC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[92]) /* 0x40011F00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[93]) /* 0x40011F40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[94]) /* 0x40011F80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[95]) /* 0x40011FC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[96]) /* 0x40012000 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[97]) /* 0x40012040 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[98]) /* 0x40012080 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[99]) /* 0x400120C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[100]) /* 0x40012100 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[101]) /* 0x40012140 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[102]) /* 0x40012180 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[103]) /* 0x400121C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[104]) /* 0x40012200 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[105]) /* 0x40012240 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[106]) /* 0x40012280 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[107]) /* 0x400122C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[108]) /* 0x40012300 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[109]) /* 0x40012340 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[110]) /* 0x40012380 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[111]) /* 0x400123C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[112]) /* 0x40012400 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[113]) /* 0x40012440 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[114]) /* 0x40012480 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[115]) /* 0x400124C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[116]) /* 0x40012500 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[117]) /* 0x40012540 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[118]) /* 0x40012580 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[119]) /* 0x400125C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[120]) /* 0x40012600 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[121]) /* 0x40012640 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[122]) /* 0x40012680 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[123]) /* 0x400126C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[124]) /* 0x40012700 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[125]) /* 0x40012740 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[126]) /* 0x40012780 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[127]) /* 0x400127C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[128]) /* 0x40012800 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[129]) /* 0x40012840 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[130]) /* 0x40012880 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[131]) /* 0x400128C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[132]) /* 0x40012900 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[133]) /* 0x40012940 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[134]) /* 0x40012980 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[135]) /* 0x400129C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[136]) /* 0x40012A00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[137]) /* 0x40012A40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[138]) /* 0x40012A80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[139]) /* 0x40012AC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[140]) /* 0x40012B00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[141]) /* 0x40012B40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[142]) /* 0x40012B80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[143]) /* 0x40012BC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[144]) /* 0x40012C00 */ +#define PERI_MS_PPU_FX_DMAC_TOP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[145]) /* 0x40012C40 */ +#define PERI_MS_PPU_FX_DMAC_CH0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[146]) /* 0x40012C80 */ +#define PERI_MS_PPU_FX_DMAC_CH1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[147]) /* 0x40012CC0 */ +#define PERI_MS_PPU_FX_DMAC_CH2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[148]) /* 0x40012D00 */ +#define PERI_MS_PPU_FX_DMAC_CH3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[149]) /* 0x40012D40 */ +#define PERI_MS_PPU_FX_EFUSE_CTL ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[150]) /* 0x40012D80 */ +#define PERI_MS_PPU_FX_EFUSE_DATA ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[151]) /* 0x40012DC0 */ +#define PERI_MS_PPU_FX_PROFILE ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[152]) /* 0x40012E00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[153]) /* 0x40012E40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[154]) /* 0x40012E80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[155]) /* 0x40012EC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[156]) /* 0x40012F00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[157]) /* 0x40012F40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[158]) /* 0x40012F80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[159]) /* 0x40012FC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[160]) /* 0x40013000 */ +#define PERI_MS_PPU_FX_HSIOM_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[161]) /* 0x40013040 */ +#define PERI_MS_PPU_FX_HSIOM_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[162]) /* 0x40013080 */ +#define PERI_MS_PPU_FX_HSIOM_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[163]) /* 0x400130C0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[164]) /* 0x40013100 */ +#define PERI_MS_PPU_FX_HSIOM_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[165]) /* 0x40013140 */ +#define PERI_MS_PPU_FX_HSIOM_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[166]) /* 0x40013180 */ +#define PERI_MS_PPU_FX_HSIOM_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[167]) /* 0x400131C0 */ +#define PERI_MS_PPU_FX_HSIOM_AMUX ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[168]) /* 0x40013200 */ +#define PERI_MS_PPU_FX_HSIOM_MON ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[169]) /* 0x40013240 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[170]) /* 0x40013280 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[171]) /* 0x400132C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[172]) /* 0x40013300 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[173]) /* 0x40013340 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[174]) /* 0x40013380 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[175]) /* 0x400133C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[176]) /* 0x40013400 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[177]) /* 0x40013440 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[178]) /* 0x40013480 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[179]) /* 0x400134C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[180]) /* 0x40013500 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[181]) /* 0x40013540 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[182]) /* 0x40013580 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[183]) /* 0x400135C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[184]) /* 0x40013600 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[185]) /* 0x40013640 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[186]) /* 0x40013680 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[187]) /* 0x400136C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[188]) /* 0x40013700 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[189]) /* 0x40013740 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[190]) /* 0x40013780 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[191]) /* 0x400137C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[192]) /* 0x40013800 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[193]) /* 0x40013840 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[194]) /* 0x40013880 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[195]) /* 0x400138C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[196]) /* 0x40013900 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[197]) /* 0x40013940 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[198]) /* 0x40013980 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[199]) /* 0x400139C0 */ +#define PERI_MS_PPU_FX_GPIO_GPIO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[200]) /* 0x40013A00 */ +#define PERI_MS_PPU_FX_GPIO_TEST ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[201]) /* 0x40013A40 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[202]) /* 0x40013A80 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[203]) /* 0x40013AC0 */ +#define PERI_MS_PPU_FX_LPCOMP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[204]) /* 0x40013B00 */ +#define PERI_MS_PPU_FX_CSD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[205]) /* 0x40013B40 */ +#define PERI_MS_PPU_FX_TCPWM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[206]) /* 0x40013B80 */ +#define PERI_MS_PPU_FX_TCPWM1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[207]) /* 0x40013BC0 */ +#define PERI_MS_PPU_FX_LCD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[208]) /* 0x40013C00 */ +#define PERI_MS_PPU_FX_USBFS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[209]) /* 0x40013C40 */ +#define PERI_MS_PPU_FX_SMIF0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[210]) /* 0x40013C80 */ +#define PERI_MS_PPU_FX_SDHC0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[211]) /* 0x40013CC0 */ +#define PERI_MS_PPU_FX_SDHC1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[212]) /* 0x40013D00 */ +#define PERI_MS_PPU_FX_SCB0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[213]) /* 0x40013D40 */ +#define PERI_MS_PPU_FX_SCB1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[214]) /* 0x40013D80 */ +#define PERI_MS_PPU_FX_SCB2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[215]) /* 0x40013DC0 */ +#define PERI_MS_PPU_FX_SCB3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[216]) /* 0x40013E00 */ +#define PERI_MS_PPU_FX_SCB4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[217]) /* 0x40013E40 */ +#define PERI_MS_PPU_FX_SCB5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[218]) /* 0x40013E80 */ +#define PERI_MS_PPU_FX_SCB6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[219]) /* 0x40013EC0 */ +#define PERI_MS_PPU_FX_SCB7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[220]) /* 0x40013F00 */ +#define PERI_MS_PPU_FX_SCB8 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[221]) /* 0x40013F40 */ +#define PERI_MS_PPU_FX_SCB9 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[222]) /* 0x40013F80 */ +#define PERI_MS_PPU_FX_SCB10 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[223]) /* 0x40013FC0 */ +#define PERI_MS_PPU_FX_SCB11 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[224]) /* 0x40014000 */ +#define PERI_MS_PPU_FX_SCB12 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[225]) /* 0x40014040 */ +#define PERI_MS_PPU_FX_PDM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[226]) /* 0x40014080 */ +#define PERI_MS_PPU_FX_I2S0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[227]) /* 0x400140C0 */ +#define PERI_MS_PPU_FX_I2S1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[228]) /* 0x40014100 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40100000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40100000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40200000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40200000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40210000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40210000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40210000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40210100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40220000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40220000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40220000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40220020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40220040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40220060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40220080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402200A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402200C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402200E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40220100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40220120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40220140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40220160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40220180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402201A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402201C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402201E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40221000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40221020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40221040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40221060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40221080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402210A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402210C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402210E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40221100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40221120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40221140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40221160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40221180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402211A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402211C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402211E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40230000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40230000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40232000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40232040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40232080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402320C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40232100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40232140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40232180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402321C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40232200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40232240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40232280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402322C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40232300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40232340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40232380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402323C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40230000 */ +#define PROT_MPU5_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[0]) /* 0x40235600 */ +#define PROT_MPU5_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[1]) /* 0x40235620 */ +#define PROT_MPU5_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[2]) /* 0x40235640 */ +#define PROT_MPU5_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[3]) /* 0x40235660 */ +#define PROT_MPU5_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[4]) /* 0x40235680 */ +#define PROT_MPU5_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[5]) /* 0x402356A0 */ +#define PROT_MPU5_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[6]) /* 0x402356C0 */ +#define PROT_MPU5_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[7]) /* 0x402356E0 */ +#define PROT_MPU6_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[0]) /* 0x40235A00 */ +#define PROT_MPU6_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[1]) /* 0x40235A20 */ +#define PROT_MPU6_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[2]) /* 0x40235A40 */ +#define PROT_MPU6_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[3]) /* 0x40235A60 */ +#define PROT_MPU6_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[4]) /* 0x40235A80 */ +#define PROT_MPU6_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[5]) /* 0x40235AA0 */ +#define PROT_MPU6_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[6]) /* 0x40235AC0 */ +#define PROT_MPU6_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[7]) /* 0x40235AE0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40237E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40237E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40237E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40237E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40237E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40237EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40237EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40237EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40234000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40234400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40234800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40234C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40235000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40235400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40235800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40235C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40236000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40236400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40236800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40236C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40237000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40237400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40237800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40237C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40240000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40240000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4024F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40290000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40290000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40288000 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40288040 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40288080 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x402880C0 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40288100 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x40288140 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x40288180 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402881C0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40288200 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40288240 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40288280 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x402882C0 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40288300 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x40288340 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x40288380 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402883C0 */ +#define DW0_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[16]) /* 0x40288400 */ +#define DW0_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[17]) /* 0x40288440 */ +#define DW0_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[18]) /* 0x40288480 */ +#define DW0_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[19]) /* 0x402884C0 */ +#define DW0_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[20]) /* 0x40288500 */ +#define DW0_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[21]) /* 0x40288540 */ +#define DW0_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[22]) /* 0x40288580 */ +#define DW0_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[23]) /* 0x402885C0 */ +#define DW0_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[24]) /* 0x40288600 */ +#define DW0_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[25]) /* 0x40288640 */ +#define DW0_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[26]) /* 0x40288680 */ +#define DW0_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[27]) /* 0x402886C0 */ +#define DW0_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[28]) /* 0x40288700 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40298000 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40298040 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40298080 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x402980C0 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40298100 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x40298140 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x40298180 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402981C0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40298200 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40298240 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40298280 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x402982C0 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40298300 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x40298340 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x40298380 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402983C0 */ +#define DW1_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[16]) /* 0x40298400 */ +#define DW1_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[17]) /* 0x40298440 */ +#define DW1_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[18]) /* 0x40298480 */ +#define DW1_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[19]) /* 0x402984C0 */ +#define DW1_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[20]) /* 0x40298500 */ +#define DW1_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[21]) /* 0x40298540 */ +#define DW1_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[22]) /* 0x40298580 */ +#define DW1_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[23]) /* 0x402985C0 */ +#define DW1_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[24]) /* 0x40298600 */ +#define DW1_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[25]) /* 0x40298640 */ +#define DW1_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[26]) /* 0x40298680 */ +#define DW1_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[27]) /* 0x402986C0 */ +#define DW1_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[28]) /* 0x40298700 */ + +/******************************************************************************* +* DMAC +*******************************************************************************/ + +#define DMAC_BASE 0x402A0000UL +#define DMAC ((DMAC_Type*) DMAC_BASE) /* 0x402A0000 */ +#define DMAC_CH0 ((DMAC_CH_Type*) &DMAC->CH[0]) /* 0x402A1000 */ +#define DMAC_CH1 ((DMAC_CH_Type*) &DMAC->CH[1]) /* 0x402A1100 */ +#define DMAC_CH2 ((DMAC_CH_Type*) &DMAC->CH[2]) /* 0x402A1200 */ +#define DMAC_CH3 ((DMAC_CH_Type*) &DMAC->CH[3]) /* 0x402A1300 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40300000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40300000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40300000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40300010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40300020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40300030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40300040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40300050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40300060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40300070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40300080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40300090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403000A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403000B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403000C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403000D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403000E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40310000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40310000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40310000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40310080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40310100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40310180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40310200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40310280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40310300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40310380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40310400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40310480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40310500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40310580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40310600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40310680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40310700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40320000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40320000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40320800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40320900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SDHC +*******************************************************************************/ + +#define SDHC0_BASE 0x40460000UL +#define SDHC1_BASE 0x40470000UL +#define SDHC0 ((SDHC_Type*) SDHC0_BASE) /* 0x40460000 */ +#define SDHC1 ((SDHC_Type*) SDHC1_BASE) /* 0x40470000 */ +#define SDHC0_WRAP ((SDHC_WRAP_Type*) &SDHC0->WRAP) /* 0x40460000 */ +#define SDHC1_WRAP ((SDHC_WRAP_Type*) &SDHC1->WRAP) /* 0x40470000 */ +#define SDHC0_CORE ((SDHC_CORE_Type*) &SDHC0->CORE) /* 0x40461000 */ +#define SDHC1_CORE ((SDHC_CORE_Type*) &SDHC1->CORE) /* 0x40471000 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40600000UL +#define SCB1_BASE 0x40610000UL +#define SCB2_BASE 0x40620000UL +#define SCB3_BASE 0x40630000UL +#define SCB4_BASE 0x40640000UL +#define SCB5_BASE 0x40650000UL +#define SCB6_BASE 0x40660000UL +#define SCB7_BASE 0x40670000UL +#define SCB8_BASE 0x40680000UL +#define SCB9_BASE 0x40690000UL +#define SCB10_BASE 0x406A0000UL +#define SCB11_BASE 0x406B0000UL +#define SCB12_BASE 0x406C0000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40600000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40610000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40620000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40630000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40640000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40650000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40660000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40670000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40680000 */ +#define SCB9 ((CySCB_Type*) SCB9_BASE) /* 0x40690000 */ +#define SCB10 ((CySCB_Type*) SCB10_BASE) /* 0x406A0000 */ +#define SCB11 ((CySCB_Type*) SCB11_BASE) /* 0x406B0000 */ +#define SCB12 ((CySCB_Type*) SCB12_BASE) /* 0x406C0000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x409D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x409D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x409F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x409F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x409F0E00 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x40A00000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x40A00000 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x40A10000UL +#define I2S1_BASE 0x40A11000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x40A10000 */ +#define I2S1 ((I2S_Type*) I2S1_BASE) /* 0x40A11000 */ + +/** \} CY8C624ABZI-D44 */ + +#endif /* _CY8C624ABZI_D44_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624afni_d43.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624afni_d43.h new file mode 100644 index 00000000000..dc2f540d5e5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c624afni_d43.h @@ -0,0 +1,1326 @@ +/***************************************************************************//** +* \file cy8c624afni_d43.h +* +* \brief +* CY8C624AFNI-D43 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C624AFNI_D43_H_ +#define _CY8C624AFNI_D43_H_ + +/** +* \addtogroup group_device CY8C624AFNI-D43 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624AFNI-D43 User Interrupt Numbers */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CPU User Interrupt #0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CPU User Interrupt #1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CPU User Interrupt #2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CPU User Interrupt #3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CPU User Interrupt #4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CPU User Interrupt #5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CPU User Interrupt #6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CPU User Interrupt #7 */ + /* CY8C624AFNI-D43 Internal SW Interrupt Numbers */ + Internal0_IRQn = 8, /*!< 8 [Active] Internal SW Interrupt #0 */ + Internal1_IRQn = 9, /*!< 9 [Active] Internal SW Interrupt #1 */ + Internal2_IRQn = 10, /*!< 10 [Active] Internal SW Interrupt #2 */ + Internal3_IRQn = 11, /*!< 11 [Active] Internal SW Interrupt #3 */ + Internal4_IRQn = 12, /*!< 12 [Active] Internal SW Interrupt #4 */ + Internal5_IRQn = 13, /*!< 13 [Active] Internal SW Interrupt #5 */ + Internal6_IRQn = 14, /*!< 14 [Active] Internal SW Interrupt #6 */ + Internal7_IRQn = 15, /*!< 15 [Active] Internal SW Interrupt #7 */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C624AFNI-D43 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + unconnected_IRQn =1023 /*!< 1023 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C624AFNI-D43 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + cpuss_interrupts_ipc_0_IRQn = 23, /*!< 23 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 24, /*!< 24 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 39, /*!< 39 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 40, /*!< 40 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #7 */ + scb_9_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #9 */ + scb_10_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #10 */ + scb_11_interrupt_IRQn = 49, /*!< 49 [Active] Serial Communication Block #11 */ + scb_12_interrupt_IRQn = 50, /*!< 50 [Active] Serial Communication Block #12 */ + csd_interrupt_IRQn = 51, /*!< 51 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dmac_0_IRQn = 52, /*!< 52 [Active] CPUSS DMAC, Channel #0 */ + cpuss_interrupts_dmac_1_IRQn = 53, /*!< 53 [Active] CPUSS DMAC, Channel #1 */ + cpuss_interrupts_dmac_2_IRQn = 54, /*!< 54 [Active] CPUSS DMAC, Channel #2 */ + cpuss_interrupts_dmac_3_IRQn = 55, /*!< 55 [Active] CPUSS DMAC, Channel #3 */ + cpuss_interrupts_dw0_0_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw0_16_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #0, Channel #16 */ + cpuss_interrupts_dw0_17_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #0, Channel #17 */ + cpuss_interrupts_dw0_18_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #0, Channel #18 */ + cpuss_interrupts_dw0_19_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #0, Channel #19 */ + cpuss_interrupts_dw0_20_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #0, Channel #20 */ + cpuss_interrupts_dw0_21_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #0, Channel #21 */ + cpuss_interrupts_dw0_22_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #0, Channel #22 */ + cpuss_interrupts_dw0_23_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #0, Channel #23 */ + cpuss_interrupts_dw0_24_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #0, Channel #24 */ + cpuss_interrupts_dw0_25_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #0, Channel #25 */ + cpuss_interrupts_dw0_26_IRQn = 82, /*!< 82 [Active] CPUSS DataWire #0, Channel #26 */ + cpuss_interrupts_dw0_27_IRQn = 83, /*!< 83 [Active] CPUSS DataWire #0, Channel #27 */ + cpuss_interrupts_dw0_28_IRQn = 84, /*!< 84 [Active] CPUSS DataWire #0, Channel #28 */ + cpuss_interrupts_dw1_0_IRQn = 85, /*!< 85 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 86, /*!< 86 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 87, /*!< 87 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 88, /*!< 88 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 89, /*!< 89 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 90, /*!< 90 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 91, /*!< 91 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 92, /*!< 92 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 93, /*!< 93 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 94, /*!< 94 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 95, /*!< 95 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 96, /*!< 96 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 97, /*!< 97 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 98, /*!< 98 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 99, /*!< 99 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 100, /*!< 100 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_dw1_16_IRQn = 101, /*!< 101 [Active] CPUSS DataWire #1, Channel #16 */ + cpuss_interrupts_dw1_17_IRQn = 102, /*!< 102 [Active] CPUSS DataWire #1, Channel #17 */ + cpuss_interrupts_dw1_18_IRQn = 103, /*!< 103 [Active] CPUSS DataWire #1, Channel #18 */ + cpuss_interrupts_dw1_19_IRQn = 104, /*!< 104 [Active] CPUSS DataWire #1, Channel #19 */ + cpuss_interrupts_dw1_20_IRQn = 105, /*!< 105 [Active] CPUSS DataWire #1, Channel #20 */ + cpuss_interrupts_dw1_21_IRQn = 106, /*!< 106 [Active] CPUSS DataWire #1, Channel #21 */ + cpuss_interrupts_dw1_22_IRQn = 107, /*!< 107 [Active] CPUSS DataWire #1, Channel #22 */ + cpuss_interrupts_dw1_23_IRQn = 108, /*!< 108 [Active] CPUSS DataWire #1, Channel #23 */ + cpuss_interrupts_dw1_24_IRQn = 109, /*!< 109 [Active] CPUSS DataWire #1, Channel #24 */ + cpuss_interrupts_dw1_25_IRQn = 110, /*!< 110 [Active] CPUSS DataWire #1, Channel #25 */ + cpuss_interrupts_dw1_26_IRQn = 111, /*!< 111 [Active] CPUSS DataWire #1, Channel #26 */ + cpuss_interrupts_dw1_27_IRQn = 112, /*!< 112 [Active] CPUSS DataWire #1, Channel #27 */ + cpuss_interrupts_dw1_28_IRQn = 113, /*!< 113 [Active] CPUSS DataWire #1, Channel #28 */ + cpuss_interrupts_fault_0_IRQn = 114, /*!< 114 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 115, /*!< 115 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 116, /*!< 116 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 117, /*!< 117 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm4_fp_IRQn = 118, /*!< 118 [Active] Floating Point operation fault */ + cpuss_interrupts_cm0_cti_0_IRQn = 119, /*!< 119 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 120, /*!< 120 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 121, /*!< 121 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 122, /*!< 122 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 123, /*!< 123 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 124, /*!< 124 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 125, /*!< 125 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 126, /*!< 126 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 127, /*!< 127 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 128, /*!< 128 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 129, /*!< 129 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 130, /*!< 130 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 131, /*!< 131 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 132, /*!< 132 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 133, /*!< 133 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 134, /*!< 134 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 135, /*!< 135 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 136, /*!< 136 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 137, /*!< 137 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 138, /*!< 138 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 139, /*!< 139 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 140, /*!< 140 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 141, /*!< 141 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 142, /*!< 142 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 143, /*!< 143 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 144, /*!< 144 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 145, /*!< 145 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 146, /*!< 146 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 147, /*!< 147 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 148, /*!< 148 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 149, /*!< 149 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 150, /*!< 150 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 151, /*!< 151 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 152, /*!< 152 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 153, /*!< 153 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 154, /*!< 154 [Active] TCPWM #1, Counter #23 */ + pass_interrupt_sar_IRQn = 155, /*!< 155 [Active] SAR ADC interrupt */ + audioss_0_interrupt_i2s_IRQn = 156, /*!< 156 [Active] I2S0 Audio interrupt */ + audioss_0_interrupt_pdm_IRQn = 157, /*!< 157 [Active] PDM0/PCM0 Audio interrupt */ + audioss_1_interrupt_i2s_IRQn = 158, /*!< 158 [Active] I2S1 Audio interrupt */ + profile_interrupt_IRQn = 159, /*!< 159 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 160, /*!< 160 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 161, /*!< 161 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 162, /*!< 162 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 163, /*!< 163 [Active] USB Interrupt */ + sdhc_0_interrupt_wakeup_IRQn = 164, /*!< 164 [Active] SDIO wakeup interrupt for mxsdhc */ + sdhc_0_interrupt_general_IRQn = 165, /*!< 165 [Active] Consolidated interrupt for mxsdhc for everything else */ + sdhc_1_interrupt_wakeup_IRQn = 166, /*!< 166 [Active] EEMC wakeup interrupt for mxsdhc, not used */ + sdhc_1_interrupt_general_IRQn = 167, /*!< 167 [Active] Consolidated interrupt for mxsdhc for everything else */ + disconnected_IRQn =1023 /*!< 1023 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00010000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00100000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00200000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 13u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 2u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 2u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 2u +#define CY_IP_M4CPUSS_DMAC 1u +#define CY_IP_M4CPUSS_DMAC_INSTANCES 1u +#define CY_IP_M4CPUSS_DMAC_VERSION 2u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 2u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 2u +#define CY_IP_MXSDHC 1u +#define CY_IP_MXSDHC_INSTANCES 2u +#define CY_IP_MXSDHC_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 2u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 2u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_02_config.h" +#include "gpio_psoc6_02_100_wlcsp.h" + +#define CY_DEVICE_PSOC6A2M +#define CY_SILICON_ID 0xE4141102UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40000000UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40000000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40004000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40004020 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40004040 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x40004060 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40004080 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x400040C0 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40004120 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40004140 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40008000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40008400 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40008800 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40008C00 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40009000 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40009400 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40009800 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40009C00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x4000A000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x4000A400 */ +#define PERI_TR_1TO1_GR0 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[0]) /* 0x4000C000 */ +#define PERI_TR_1TO1_GR1 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[1]) /* 0x4000C400 */ +#define PERI_TR_1TO1_GR2 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[2]) /* 0x4000C800 */ +#define PERI_TR_1TO1_GR3 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[3]) /* 0x4000CC00 */ +#define PERI_TR_1TO1_GR4 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[4]) /* 0x4000D000 */ +#define PERI_TR_1TO1_GR5 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[5]) /* 0x4000D400 */ +#define PERI_TR_1TO1_GR6 ((PERI_TR_1TO1_GR_Type*) &PERI->TR_1TO1_GR[6]) /* 0x4000D800 */ + +/******************************************************************************* +* PERI_MS +*******************************************************************************/ + +#define PERI_MS_BASE 0x40010000UL +#define PERI_MS ((PERI_MS_Type*) PERI_MS_BASE) /* 0x40010000 */ +#define PERI_MS_PPU_PR0 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[0]) /* 0x40010000 */ +#define PERI_MS_PPU_PR1 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[1]) /* 0x40010040 */ +#define PERI_MS_PPU_PR2 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[2]) /* 0x40010080 */ +#define PERI_MS_PPU_PR3 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[3]) /* 0x400100C0 */ +#define PERI_MS_PPU_PR4 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[4]) /* 0x40010100 */ +#define PERI_MS_PPU_PR5 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[5]) /* 0x40010140 */ +#define PERI_MS_PPU_PR6 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[6]) /* 0x40010180 */ +#define PERI_MS_PPU_PR7 ((PERI_MS_PPU_PR_Type*) &PERI_MS->PPU_PR[7]) /* 0x400101C0 */ +#define PERI_MS_PPU_FX_PERI_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[0]) /* 0x40010800 */ +#define PERI_MS_PPU_FX_PERI_GR0_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[1]) /* 0x40010840 */ +#define PERI_MS_PPU_FX_PERI_GR1_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[2]) /* 0x40010880 */ +#define PERI_MS_PPU_FX_PERI_GR2_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[3]) /* 0x400108C0 */ +#define PERI_MS_PPU_FX_PERI_GR3_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[4]) /* 0x40010900 */ +#define PERI_MS_PPU_FX_PERI_GR4_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[5]) /* 0x40010940 */ +#define PERI_MS_PPU_FX_PERI_GR6_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[6]) /* 0x40010980 */ +#define PERI_MS_PPU_FX_PERI_GR9_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[7]) /* 0x400109C0 */ +#define PERI_MS_PPU_FX_PERI_GR10_GROUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[8]) /* 0x40010A00 */ +#define PERI_MS_PPU_FX_PERI_TR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[9]) /* 0x40010A40 */ +#define PERI_MS_PPU_FX_CRYPTO_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[10]) /* 0x40010A80 */ +#define PERI_MS_PPU_FX_CRYPTO_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[11]) /* 0x40010AC0 */ +#define PERI_MS_PPU_FX_CRYPTO_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[12]) /* 0x40010B00 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[13]) /* 0x40010B40 */ +#define PERI_MS_PPU_FX_CRYPTO_KEY1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[14]) /* 0x40010B80 */ +#define PERI_MS_PPU_FX_CRYPTO_BUF ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[15]) /* 0x40010BC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[16]) /* 0x40010C00 */ +#define PERI_MS_PPU_FX_CPUSS_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[17]) /* 0x40010C40 */ +#define PERI_MS_PPU_FX_CPUSS_BOOT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[18]) /* 0x40010C80 */ +#define PERI_MS_PPU_FX_CPUSS_CM0_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[19]) /* 0x40010CC0 */ +#define PERI_MS_PPU_FX_CPUSS_CM4_INT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[20]) /* 0x40010D00 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[21]) /* 0x40010D40 */ +#define PERI_MS_PPU_FX_FAULT_STRUCT1_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[22]) /* 0x40010D80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT0_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[23]) /* 0x40010DC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT1_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[24]) /* 0x40010E00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT2_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[25]) /* 0x40010E40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT3_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[26]) /* 0x40010E80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT4_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[27]) /* 0x40010EC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT5_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[28]) /* 0x40010F00 */ +#define PERI_MS_PPU_FX_IPC_STRUCT6_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[29]) /* 0x40010F40 */ +#define PERI_MS_PPU_FX_IPC_STRUCT7_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[30]) /* 0x40010F80 */ +#define PERI_MS_PPU_FX_IPC_STRUCT8_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[31]) /* 0x40010FC0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT9_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[32]) /* 0x40011000 */ +#define PERI_MS_PPU_FX_IPC_STRUCT10_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[33]) /* 0x40011040 */ +#define PERI_MS_PPU_FX_IPC_STRUCT11_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[34]) /* 0x40011080 */ +#define PERI_MS_PPU_FX_IPC_STRUCT12_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[35]) /* 0x400110C0 */ +#define PERI_MS_PPU_FX_IPC_STRUCT13_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[36]) /* 0x40011100 */ +#define PERI_MS_PPU_FX_IPC_STRUCT14_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[37]) /* 0x40011140 */ +#define PERI_MS_PPU_FX_IPC_STRUCT15_IPC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[38]) /* 0x40011180 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT0_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[39]) /* 0x400111C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT1_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[40]) /* 0x40011200 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT2_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[41]) /* 0x40011240 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT3_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[42]) /* 0x40011280 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT4_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[43]) /* 0x400112C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT5_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[44]) /* 0x40011300 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT6_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[45]) /* 0x40011340 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT7_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[46]) /* 0x40011380 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT8_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[47]) /* 0x400113C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT9_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[48]) /* 0x40011400 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT10_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[49]) /* 0x40011440 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT11_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[50]) /* 0x40011480 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT12_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[51]) /* 0x400114C0 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT13_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[52]) /* 0x40011500 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT14_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[53]) /* 0x40011540 */ +#define PERI_MS_PPU_FX_IPC_INTR_STRUCT15_INTR ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[54]) /* 0x40011580 */ +#define PERI_MS_PPU_FX_PROT_SMPU_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[55]) /* 0x400115C0 */ +#define PERI_MS_PPU_FX_PROT_MPU0_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[56]) /* 0x40011600 */ +#define PERI_MS_PPU_FX_PROT_MPU5_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[57]) /* 0x40011640 */ +#define PERI_MS_PPU_FX_PROT_MPU6_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[58]) /* 0x40011680 */ +#define PERI_MS_PPU_FX_PROT_MPU14_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[59]) /* 0x400116C0 */ +#define PERI_MS_PPU_FX_PROT_MPU15_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[60]) /* 0x40011700 */ +#define PERI_MS_PPU_FX_FLASHC_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[61]) /* 0x40011740 */ +#define PERI_MS_PPU_FX_FLASHC_CMD ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[62]) /* 0x40011780 */ +#define PERI_MS_PPU_FX_FLASHC_DFT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[63]) /* 0x400117C0 */ +#define PERI_MS_PPU_FX_FLASHC_CM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[64]) /* 0x40011800 */ +#define PERI_MS_PPU_FX_FLASHC_CM4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[65]) /* 0x40011840 */ +#define PERI_MS_PPU_FX_FLASHC_CRYPTO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[66]) /* 0x40011880 */ +#define PERI_MS_PPU_FX_FLASHC_DW0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[67]) /* 0x400118C0 */ +#define PERI_MS_PPU_FX_FLASHC_DW1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[68]) /* 0x40011900 */ +#define PERI_MS_PPU_FX_FLASHC_DMAC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[69]) /* 0x40011940 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[70]) /* 0x40011980 */ +#define PERI_MS_PPU_FX_FLASHC_EXT_MS1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[71]) /* 0x400119C0 */ +#define PERI_MS_PPU_FX_FLASHC_FM ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[72]) /* 0x40011A00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[73]) /* 0x40011A40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[74]) /* 0x40011A80 */ +#define PERI_MS_PPU_FX_WDT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[75]) /* 0x40011AC0 */ +#define PERI_MS_PPU_FX_MAIN ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[76]) /* 0x40011B00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[77]) /* 0x40011B40 */ +#define PERI_MS_PPU_FX_SRSS_MAIN4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[78]) /* 0x40011B80 */ +#define PERI_MS_PPU_FX_SRSS_MAIN5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[79]) /* 0x40011BC0 */ +#define PERI_MS_PPU_FX_SRSS_MAIN6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[80]) /* 0x40011C00 */ +#define PERI_MS_PPU_FX_SRSS_MAIN7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[81]) /* 0x40011C40 */ +#define PERI_MS_PPU_FX_BACKUP_BACKUP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[82]) /* 0x40011C80 */ +#define PERI_MS_PPU_FX_DW0_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[83]) /* 0x40011CC0 */ +#define PERI_MS_PPU_FX_DW1_DW ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[84]) /* 0x40011D00 */ +#define PERI_MS_PPU_FX_DW0_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[85]) /* 0x40011D40 */ +#define PERI_MS_PPU_FX_DW1_DW_CRC ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[86]) /* 0x40011D80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[87]) /* 0x40011DC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[88]) /* 0x40011E00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[89]) /* 0x40011E40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[90]) /* 0x40011E80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[91]) /* 0x40011EC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[92]) /* 0x40011F00 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[93]) /* 0x40011F40 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[94]) /* 0x40011F80 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[95]) /* 0x40011FC0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[96]) /* 0x40012000 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[97]) /* 0x40012040 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[98]) /* 0x40012080 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[99]) /* 0x400120C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[100]) /* 0x40012100 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[101]) /* 0x40012140 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[102]) /* 0x40012180 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[103]) /* 0x400121C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[104]) /* 0x40012200 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[105]) /* 0x40012240 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[106]) /* 0x40012280 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[107]) /* 0x400122C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[108]) /* 0x40012300 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[109]) /* 0x40012340 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[110]) /* 0x40012380 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[111]) /* 0x400123C0 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[112]) /* 0x40012400 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[113]) /* 0x40012440 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[114]) /* 0x40012480 */ +#define PERI_MS_PPU_FX_DW0_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[115]) /* 0x400124C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[116]) /* 0x40012500 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[117]) /* 0x40012540 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[118]) /* 0x40012580 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[119]) /* 0x400125C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT4_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[120]) /* 0x40012600 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT5_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[121]) /* 0x40012640 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT6_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[122]) /* 0x40012680 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT7_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[123]) /* 0x400126C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT8_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[124]) /* 0x40012700 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT9_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[125]) /* 0x40012740 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT10_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[126]) /* 0x40012780 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT11_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[127]) /* 0x400127C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT12_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[128]) /* 0x40012800 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT13_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[129]) /* 0x40012840 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT14_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[130]) /* 0x40012880 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT15_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[131]) /* 0x400128C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT16_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[132]) /* 0x40012900 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT17_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[133]) /* 0x40012940 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT18_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[134]) /* 0x40012980 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT19_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[135]) /* 0x400129C0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT20_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[136]) /* 0x40012A00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT21_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[137]) /* 0x40012A40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT22_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[138]) /* 0x40012A80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT23_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[139]) /* 0x40012AC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT24_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[140]) /* 0x40012B00 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT25_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[141]) /* 0x40012B40 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT26_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[142]) /* 0x40012B80 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT27_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[143]) /* 0x40012BC0 */ +#define PERI_MS_PPU_FX_DW1_CH_STRUCT28_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[144]) /* 0x40012C00 */ +#define PERI_MS_PPU_FX_DMAC_TOP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[145]) /* 0x40012C40 */ +#define PERI_MS_PPU_FX_DMAC_CH0_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[146]) /* 0x40012C80 */ +#define PERI_MS_PPU_FX_DMAC_CH1_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[147]) /* 0x40012CC0 */ +#define PERI_MS_PPU_FX_DMAC_CH2_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[148]) /* 0x40012D00 */ +#define PERI_MS_PPU_FX_DMAC_CH3_CH ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[149]) /* 0x40012D40 */ +#define PERI_MS_PPU_FX_EFUSE_CTL ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[150]) /* 0x40012D80 */ +#define PERI_MS_PPU_FX_EFUSE_DATA ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[151]) /* 0x40012DC0 */ +#define PERI_MS_PPU_FX_PROFILE ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[152]) /* 0x40012E00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[153]) /* 0x40012E40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[154]) /* 0x40012E80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[155]) /* 0x40012EC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[156]) /* 0x40012F00 */ +#define PERI_MS_PPU_FX_HSIOM_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[157]) /* 0x40012F40 */ +#define PERI_MS_PPU_FX_HSIOM_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[158]) /* 0x40012F80 */ +#define PERI_MS_PPU_FX_HSIOM_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[159]) /* 0x40012FC0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[160]) /* 0x40013000 */ +#define PERI_MS_PPU_FX_HSIOM_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[161]) /* 0x40013040 */ +#define PERI_MS_PPU_FX_HSIOM_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[162]) /* 0x40013080 */ +#define PERI_MS_PPU_FX_HSIOM_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[163]) /* 0x400130C0 */ +#define PERI_MS_PPU_FX_HSIOM_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[164]) /* 0x40013100 */ +#define PERI_MS_PPU_FX_HSIOM_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[165]) /* 0x40013140 */ +#define PERI_MS_PPU_FX_HSIOM_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[166]) /* 0x40013180 */ +#define PERI_MS_PPU_FX_HSIOM_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[167]) /* 0x400131C0 */ +#define PERI_MS_PPU_FX_HSIOM_AMUX ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[168]) /* 0x40013200 */ +#define PERI_MS_PPU_FX_HSIOM_MON ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[169]) /* 0x40013240 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[170]) /* 0x40013280 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[171]) /* 0x400132C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[172]) /* 0x40013300 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[173]) /* 0x40013340 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[174]) /* 0x40013380 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[175]) /* 0x400133C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[176]) /* 0x40013400 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[177]) /* 0x40013440 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[178]) /* 0x40013480 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[179]) /* 0x400134C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[180]) /* 0x40013500 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[181]) /* 0x40013540 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[182]) /* 0x40013580 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[183]) /* 0x400135C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[184]) /* 0x40013600 */ +#define PERI_MS_PPU_FX_GPIO_PRT0_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[185]) /* 0x40013640 */ +#define PERI_MS_PPU_FX_GPIO_PRT1_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[186]) /* 0x40013680 */ +#define PERI_MS_PPU_FX_GPIO_PRT2_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[187]) /* 0x400136C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT3_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[188]) /* 0x40013700 */ +#define PERI_MS_PPU_FX_GPIO_PRT4_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[189]) /* 0x40013740 */ +#define PERI_MS_PPU_FX_GPIO_PRT5_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[190]) /* 0x40013780 */ +#define PERI_MS_PPU_FX_GPIO_PRT6_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[191]) /* 0x400137C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT7_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[192]) /* 0x40013800 */ +#define PERI_MS_PPU_FX_GPIO_PRT8_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[193]) /* 0x40013840 */ +#define PERI_MS_PPU_FX_GPIO_PRT9_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[194]) /* 0x40013880 */ +#define PERI_MS_PPU_FX_GPIO_PRT10_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[195]) /* 0x400138C0 */ +#define PERI_MS_PPU_FX_GPIO_PRT11_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[196]) /* 0x40013900 */ +#define PERI_MS_PPU_FX_GPIO_PRT12_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[197]) /* 0x40013940 */ +#define PERI_MS_PPU_FX_GPIO_PRT13_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[198]) /* 0x40013980 */ +#define PERI_MS_PPU_FX_GPIO_PRT14_CFG ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[199]) /* 0x400139C0 */ +#define PERI_MS_PPU_FX_GPIO_GPIO ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[200]) /* 0x40013A00 */ +#define PERI_MS_PPU_FX_GPIO_TEST ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[201]) /* 0x40013A40 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT8_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[202]) /* 0x40013A80 */ +#define PERI_MS_PPU_FX_SMARTIO_PRT9_PRT ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[203]) /* 0x40013AC0 */ +#define PERI_MS_PPU_FX_LPCOMP ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[204]) /* 0x40013B00 */ +#define PERI_MS_PPU_FX_CSD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[205]) /* 0x40013B40 */ +#define PERI_MS_PPU_FX_TCPWM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[206]) /* 0x40013B80 */ +#define PERI_MS_PPU_FX_TCPWM1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[207]) /* 0x40013BC0 */ +#define PERI_MS_PPU_FX_LCD0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[208]) /* 0x40013C00 */ +#define PERI_MS_PPU_FX_USBFS0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[209]) /* 0x40013C40 */ +#define PERI_MS_PPU_FX_SMIF0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[210]) /* 0x40013C80 */ +#define PERI_MS_PPU_FX_SDHC0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[211]) /* 0x40013CC0 */ +#define PERI_MS_PPU_FX_SDHC1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[212]) /* 0x40013D00 */ +#define PERI_MS_PPU_FX_SCB0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[213]) /* 0x40013D40 */ +#define PERI_MS_PPU_FX_SCB1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[214]) /* 0x40013D80 */ +#define PERI_MS_PPU_FX_SCB2 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[215]) /* 0x40013DC0 */ +#define PERI_MS_PPU_FX_SCB3 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[216]) /* 0x40013E00 */ +#define PERI_MS_PPU_FX_SCB4 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[217]) /* 0x40013E40 */ +#define PERI_MS_PPU_FX_SCB5 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[218]) /* 0x40013E80 */ +#define PERI_MS_PPU_FX_SCB6 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[219]) /* 0x40013EC0 */ +#define PERI_MS_PPU_FX_SCB7 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[220]) /* 0x40013F00 */ +#define PERI_MS_PPU_FX_SCB8 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[221]) /* 0x40013F40 */ +#define PERI_MS_PPU_FX_SCB9 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[222]) /* 0x40013F80 */ +#define PERI_MS_PPU_FX_SCB10 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[223]) /* 0x40013FC0 */ +#define PERI_MS_PPU_FX_SCB11 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[224]) /* 0x40014000 */ +#define PERI_MS_PPU_FX_SCB12 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[225]) /* 0x40014040 */ +#define PERI_MS_PPU_FX_PDM0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[226]) /* 0x40014080 */ +#define PERI_MS_PPU_FX_I2S0 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[227]) /* 0x400140C0 */ +#define PERI_MS_PPU_FX_I2S1 ((PERI_MS_PPU_FX_Type*) &PERI_MS->PPU_FX[228]) /* 0x40014100 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40100000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40100000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40200000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40200000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40210000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40210000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40210000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40210100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40220000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40220000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40220000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40220020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40220040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40220060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40220080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402200A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402200C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402200E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40220100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40220120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40220140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40220160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40220180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402201A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402201C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402201E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40221000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40221020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40221040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40221060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40221080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402210A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402210C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402210E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40221100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40221120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40221140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40221160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40221180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402211A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402211C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402211E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40230000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40230000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40232000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40232040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40232080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402320C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40232100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40232140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40232180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402321C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40232200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40232240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40232280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402322C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40232300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40232340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40232380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402323C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40230000 */ +#define PROT_MPU5_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[0]) /* 0x40235600 */ +#define PROT_MPU5_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[1]) /* 0x40235620 */ +#define PROT_MPU5_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[2]) /* 0x40235640 */ +#define PROT_MPU5_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[3]) /* 0x40235660 */ +#define PROT_MPU5_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[4]) /* 0x40235680 */ +#define PROT_MPU5_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[5]) /* 0x402356A0 */ +#define PROT_MPU5_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[6]) /* 0x402356C0 */ +#define PROT_MPU5_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[5].MPU_STRUCT[7]) /* 0x402356E0 */ +#define PROT_MPU6_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[0]) /* 0x40235A00 */ +#define PROT_MPU6_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[1]) /* 0x40235A20 */ +#define PROT_MPU6_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[2]) /* 0x40235A40 */ +#define PROT_MPU6_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[3]) /* 0x40235A60 */ +#define PROT_MPU6_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[4]) /* 0x40235A80 */ +#define PROT_MPU6_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[5]) /* 0x40235AA0 */ +#define PROT_MPU6_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[6]) /* 0x40235AC0 */ +#define PROT_MPU6_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[6].MPU_STRUCT[7]) /* 0x40235AE0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40237E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40237E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40237E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40237E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40237E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40237EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40237EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40237EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40234000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40234400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40234800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40234C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40235000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40235400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40235800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40235C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40236000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40236400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40236800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40236C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40237000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40237400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40237800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40237C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40240000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40240000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4024F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40290000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40290000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40288000 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40288040 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40288080 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x402880C0 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40288100 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x40288140 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x40288180 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402881C0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40288200 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40288240 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40288280 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x402882C0 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40288300 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x40288340 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x40288380 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402883C0 */ +#define DW0_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[16]) /* 0x40288400 */ +#define DW0_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[17]) /* 0x40288440 */ +#define DW0_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[18]) /* 0x40288480 */ +#define DW0_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[19]) /* 0x402884C0 */ +#define DW0_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[20]) /* 0x40288500 */ +#define DW0_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[21]) /* 0x40288540 */ +#define DW0_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[22]) /* 0x40288580 */ +#define DW0_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[23]) /* 0x402885C0 */ +#define DW0_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[24]) /* 0x40288600 */ +#define DW0_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[25]) /* 0x40288640 */ +#define DW0_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[26]) /* 0x40288680 */ +#define DW0_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[27]) /* 0x402886C0 */ +#define DW0_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[28]) /* 0x40288700 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40298000 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40298040 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40298080 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x402980C0 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40298100 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x40298140 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x40298180 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402981C0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40298200 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40298240 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40298280 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x402982C0 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40298300 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x40298340 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x40298380 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402983C0 */ +#define DW1_CH_STRUCT16 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[16]) /* 0x40298400 */ +#define DW1_CH_STRUCT17 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[17]) /* 0x40298440 */ +#define DW1_CH_STRUCT18 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[18]) /* 0x40298480 */ +#define DW1_CH_STRUCT19 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[19]) /* 0x402984C0 */ +#define DW1_CH_STRUCT20 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[20]) /* 0x40298500 */ +#define DW1_CH_STRUCT21 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[21]) /* 0x40298540 */ +#define DW1_CH_STRUCT22 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[22]) /* 0x40298580 */ +#define DW1_CH_STRUCT23 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[23]) /* 0x402985C0 */ +#define DW1_CH_STRUCT24 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[24]) /* 0x40298600 */ +#define DW1_CH_STRUCT25 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[25]) /* 0x40298640 */ +#define DW1_CH_STRUCT26 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[26]) /* 0x40298680 */ +#define DW1_CH_STRUCT27 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[27]) /* 0x402986C0 */ +#define DW1_CH_STRUCT28 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[28]) /* 0x40298700 */ + +/******************************************************************************* +* DMAC +*******************************************************************************/ + +#define DMAC_BASE 0x402A0000UL +#define DMAC ((DMAC_Type*) DMAC_BASE) /* 0x402A0000 */ +#define DMAC_CH0 ((DMAC_CH_Type*) &DMAC->CH[0]) /* 0x402A1000 */ +#define DMAC_CH1 ((DMAC_CH_Type*) &DMAC->CH[1]) /* 0x402A1100 */ +#define DMAC_CH2 ((DMAC_CH_Type*) &DMAC->CH[2]) /* 0x402A1200 */ +#define DMAC_CH3 ((DMAC_CH_Type*) &DMAC->CH[3]) /* 0x402A1300 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40300000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40300000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40300000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40300010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40300020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40300030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40300040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40300050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40300060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40300070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40300080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40300090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403000A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403000B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403000C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403000D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403000E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40310000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40310000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40310000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40310080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40310100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40310180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40310200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40310280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40310300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40310380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40310400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40310480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40310500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40310580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40310600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40310680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40310700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40320000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40320000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40320800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40320900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SDHC +*******************************************************************************/ + +#define SDHC0_BASE 0x40460000UL +#define SDHC1_BASE 0x40470000UL +#define SDHC0 ((SDHC_Type*) SDHC0_BASE) /* 0x40460000 */ +#define SDHC1 ((SDHC_Type*) SDHC1_BASE) /* 0x40470000 */ +#define SDHC0_WRAP ((SDHC_WRAP_Type*) &SDHC0->WRAP) /* 0x40460000 */ +#define SDHC1_WRAP ((SDHC_WRAP_Type*) &SDHC1->WRAP) /* 0x40470000 */ +#define SDHC0_CORE ((SDHC_CORE_Type*) &SDHC0->CORE) /* 0x40461000 */ +#define SDHC1_CORE ((SDHC_CORE_Type*) &SDHC1->CORE) /* 0x40471000 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40600000UL +#define SCB1_BASE 0x40610000UL +#define SCB2_BASE 0x40620000UL +#define SCB3_BASE 0x40630000UL +#define SCB4_BASE 0x40640000UL +#define SCB5_BASE 0x40650000UL +#define SCB6_BASE 0x40660000UL +#define SCB7_BASE 0x40670000UL +#define SCB8_BASE 0x40680000UL +#define SCB9_BASE 0x40690000UL +#define SCB10_BASE 0x406A0000UL +#define SCB11_BASE 0x406B0000UL +#define SCB12_BASE 0x406C0000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40600000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40610000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40620000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40630000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40640000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40650000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40660000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40670000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40680000 */ +#define SCB9 ((CySCB_Type*) SCB9_BASE) /* 0x40690000 */ +#define SCB10 ((CySCB_Type*) SCB10_BASE) /* 0x406A0000 */ +#define SCB11 ((CySCB_Type*) SCB11_BASE) /* 0x406B0000 */ +#define SCB12 ((CySCB_Type*) SCB12_BASE) /* 0x406C0000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x409D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x409D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x409F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x409F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x409F0E00 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x40A00000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x40A00000 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x40A10000UL +#define I2S1_BASE 0x40A11000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x40A10000 */ +#define I2S1 ((I2S_Type*) I2S1_BASE) /* 0x40A11000 */ + +/** \} CY8C624AFNI-D43 */ + +#endif /* _CY8C624AFNI_D43_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf03.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf03.h new file mode 100644 index 00000000000..e9d42cb7735 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf03.h @@ -0,0 +1,953 @@ +/***************************************************************************//** +* \file cy8c6316bzi_blf03.h +* +* \brief +* CY8C6316BZI-BLF03 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6316BZI_BLF03_H_ +#define _CY8C6316BZI_BLF03_H_ + +/** +* \addtogroup group_device CY8C6316BZI-BLF03 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6316BZI-BLF03 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2212100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6316BZI-BLF03 */ + +#endif /* _CY8C6316BZI_BLF03_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf04.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf04.h new file mode 100644 index 00000000000..4a97b84f85d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf04.h @@ -0,0 +1,966 @@ +/***************************************************************************//** +* \file cy8c6316bzi_blf04.h +* +* \brief +* CY8C6316BZI-BLF04 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6316BZI_BLF04_H_ +#define _CY8C6316BZI_BLF04_H_ + +/** +* \addtogroup group_device CY8C6316BZI-BLF04 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6316BZI-BLF04 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22B2100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6316BZI-BLF04 */ + +#endif /* _CY8C6316BZI_BLF04_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf53.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf53.h new file mode 100644 index 00000000000..24324dcb388 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf53.h @@ -0,0 +1,1028 @@ +/***************************************************************************//** +* \file cy8c6316bzi_blf53.h +* +* \brief +* CY8C6316BZI-BLF53 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6316BZI_BLF53_H_ +#define _CY8C6316BZI_BLF53_H_ + +/** +* \addtogroup group_device CY8C6316BZI-BLF53 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6316BZI-BLF53 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2222100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6316BZI-BLF53 */ + +#endif /* _CY8C6316BZI_BLF53_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf54.h new file mode 100644 index 00000000000..73f5f529583 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6316bzi_blf54.h @@ -0,0 +1,1041 @@ +/***************************************************************************//** +* \file cy8c6316bzi_blf54.h +* +* \brief +* CY8C6316BZI-BLF54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6316BZI_BLF54_H_ +#define _CY8C6316BZI_BLF54_H_ + +/** +* \addtogroup group_device CY8C6316BZI-BLF54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6316BZI-BLF54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22C2100UL +#define CY_HF_CLK_MAX_FREQ 50000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6316BZI-BLF54 */ + +#endif /* _CY8C6316BZI_BLF54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld13.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld13.h new file mode 100644 index 00000000000..890ed2d77c9 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld13.h @@ -0,0 +1,1178 @@ +/***************************************************************************//** +* \file cy8c6336bzi_bld13.h +* +* \brief +* CY8C6336BZI-BLD13 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6336BZI_BLD13_H_ +#define _CY8C6336BZI_BLD13_H_ + +/** +* \addtogroup group_device CY8C6336BZI-BLD13 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6336BZI-BLD13 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6336BZI-BLD13 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2232100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6336BZI-BLD13 */ + +#endif /* _CY8C6336BZI_BLD13_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld14.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld14.h new file mode 100644 index 00000000000..b141aa2e46f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bld14.h @@ -0,0 +1,1191 @@ +/***************************************************************************//** +* \file cy8c6336bzi_bld14.h +* +* \brief +* CY8C6336BZI-BLD14 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6336BZI_BLD14_H_ +#define _CY8C6336BZI_BLD14_H_ + +/** +* \addtogroup group_device CY8C6336BZI-BLD14 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6336BZI-BLD14 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6336BZI-BLD14 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22D2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6336BZI-BLD14 */ + +#endif /* _CY8C6336BZI_BLD14_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf03.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf03.h new file mode 100644 index 00000000000..9243e8b172e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf03.h @@ -0,0 +1,953 @@ +/***************************************************************************//** +* \file cy8c6336bzi_blf03.h +* +* \brief +* CY8C6336BZI-BLF03 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6336BZI_BLF03_H_ +#define _CY8C6336BZI_BLF03_H_ + +/** +* \addtogroup group_device CY8C6336BZI-BLF03 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6336BZI-BLF03 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2202100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6336BZI-BLF03 */ + +#endif /* _CY8C6336BZI_BLF03_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf04.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf04.h new file mode 100644 index 00000000000..18d9f68951a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_blf04.h @@ -0,0 +1,966 @@ +/***************************************************************************//** +* \file cy8c6336bzi_blf04.h +* +* \brief +* CY8C6336BZI-BLF04 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6336BZI_BLF04_H_ +#define _CY8C6336BZI_BLF04_H_ + +/** +* \addtogroup group_device CY8C6336BZI-BLF04 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6336BZI-BLF04 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22A2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6336BZI-BLF04 */ + +#endif /* _CY8C6336BZI_BLF04_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bud13.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bud13.h new file mode 100644 index 00000000000..239fe087e2b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6336bzi_bud13.h @@ -0,0 +1,1191 @@ +/***************************************************************************//** +* \file cy8c6336bzi_bud13.h +* +* \brief +* CY8C6336BZI-BUD13 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6336BZI_BUD13_H_ +#define _CY8C6336BZI_BUD13_H_ + +/** +* \addtogroup group_device CY8C6336BZI-BUD13 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6336BZI-BUD13 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6336BZI-BUD13 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00020000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00080000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2402100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6336BZI-BUD13 */ + +#endif /* _CY8C6336BZI_BUD13_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6337bzi_blf13.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6337bzi_blf13.h new file mode 100644 index 00000000000..8e3b4c9fb65 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6337bzi_blf13.h @@ -0,0 +1,953 @@ +/***************************************************************************//** +* \file cy8c6337bzi_blf13.h +* +* \brief +* CY8C6337BZI-BLF13 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6337BZI_BLF13_H_ +#define _CY8C6337BZI_BLF13_H_ + +/** +* \addtogroup group_device CY8C6337BZI-BLF13 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6337BZI-BLF13 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +} IRQn_Type; + + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 0 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2292100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6337BZI-BLF13 */ + +#endif /* _CY8C6337BZI_BLF13_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld33.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld33.h new file mode 100644 index 00000000000..ff9ced021a9 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld33.h @@ -0,0 +1,1243 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld33.h +* +* \brief +* CY8C6347BZI-BLD33 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD33_H_ +#define _CY8C6347BZI_BLD33_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD33 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD33 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD33 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2252100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD33 */ + +#endif /* _CY8C6347BZI_BLD33_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld34.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld34.h new file mode 100644 index 00000000000..c619ce9eb64 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld34.h @@ -0,0 +1,1256 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld34.h +* +* \brief +* CY8C6347BZI-BLD34 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD34_H_ +#define _CY8C6347BZI_BLD34_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD34 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD34 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD34 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22F2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD34 */ + +#endif /* _CY8C6347BZI_BLD34_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld43.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld43.h new file mode 100644 index 00000000000..838ba636d8f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld43.h @@ -0,0 +1,1188 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld43.h +* +* \brief +* CY8C6347BZI-BLD43 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD43_H_ +#define _CY8C6347BZI_BLD43_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD43 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD43 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD43 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2242100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD43 */ + +#endif /* _CY8C6347BZI_BLD43_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld44.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld44.h new file mode 100644 index 00000000000..4b44246045f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld44.h @@ -0,0 +1,1201 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld44.h +* +* \brief +* CY8C6347BZI-BLD44 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD44_H_ +#define _CY8C6347BZI_BLD44_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD44 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD44 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD44 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE22E2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD44 */ + +#endif /* _CY8C6347BZI_BLD44_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld53.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld53.h new file mode 100644 index 00000000000..7e4248730fb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld53.h @@ -0,0 +1,1253 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld53.h +* +* \brief +* CY8C6347BZI-BLD53 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD53_H_ +#define _CY8C6347BZI_BLD53_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD53 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD53 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD53 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2072100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD53 */ + +#endif /* _CY8C6347BZI_BLD53_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld54.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld54.h new file mode 100644 index 00000000000..d1e16aa087f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bld54.h @@ -0,0 +1,1266 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bld54.h +* +* \brief +* CY8C6347BZI-BLD54 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BLD54_H_ +#define _CY8C6347BZI_BLD54_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BLD54 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BLD54 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BLD54 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga_sip.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE20B2100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BLD54 */ + +#endif /* _CY8C6347BZI_BLD54_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud33.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud33.h new file mode 100644 index 00000000000..d69c15e95f6 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud33.h @@ -0,0 +1,1256 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bud33.h +* +* \brief +* CY8C6347BZI-BUD33 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BUD33_H_ +#define _CY8C6347BZI_BUD33_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BUD33 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BUD33 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BUD33 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2422100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BUD33 */ + +#endif /* _CY8C6347BZI_BUD33_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud43.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud43.h new file mode 100644 index 00000000000..845e6cc3de7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud43.h @@ -0,0 +1,1201 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bud43.h +* +* \brief +* CY8C6347BZI-BUD43 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BUD43_H_ +#define _CY8C6347BZI_BUD43_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BUD43 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BUD43 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BUD43 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2412100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BUD43 */ + +#endif /* _CY8C6347BZI_BUD43_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud53.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud53.h new file mode 100644 index 00000000000..38e7a237725 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347bzi_bud53.h @@ -0,0 +1,1266 @@ +/***************************************************************************//** +* \file cy8c6347bzi_bud53.h +* +* \brief +* CY8C6347BZI-BUD53 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347BZI_BUD53_H_ +#define _CY8C6347BZI_BUD53_H_ + +/** +* \addtogroup group_device CY8C6347BZI-BUD53 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347BZI-BUD53 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347BZI-BUD53 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2432100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347BZI-BUD53 */ + +#endif /* _CY8C6347BZI_BUD53_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld13.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld13.h new file mode 100644 index 00000000000..947999e0668 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld13.h @@ -0,0 +1,1178 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bld13.h +* +* \brief +* CY8C6347FMI-BLD13 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BLD13_H_ +#define _CY8C6347FMI_BLD13_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BLD13 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BLD13 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BLD13 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2262100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BLD13 */ + +#endif /* _CY8C6347FMI_BLD13_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld33.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld33.h new file mode 100644 index 00000000000..b1d3f107652 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld33.h @@ -0,0 +1,1243 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bld33.h +* +* \brief +* CY8C6347FMI-BLD33 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BLD33_H_ +#define _CY8C6347FMI_BLD33_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BLD33 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BLD33 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BLD33 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2282100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BLD33 */ + +#endif /* _CY8C6347FMI_BLD33_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld43.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld43.h new file mode 100644 index 00000000000..49a9afa36d8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld43.h @@ -0,0 +1,1188 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bld43.h +* +* \brief +* CY8C6347FMI-BLD43 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BLD43_H_ +#define _CY8C6347FMI_BLD43_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BLD43 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BLD43 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BLD43 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2272100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BLD43 */ + +#endif /* _CY8C6347FMI_BLD43_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld53.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld53.h new file mode 100644 index 00000000000..f28ddf79e41 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bld53.h @@ -0,0 +1,1253 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bld53.h +* +* \brief +* CY8C6347FMI-BLD53 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BLD53_H_ +#define _CY8C6347FMI_BLD53_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BLD53 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BLD53 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BLD53 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2082100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BLD53 */ + +#endif /* _CY8C6347FMI_BLD53_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud13.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud13.h new file mode 100644 index 00000000000..3ecbfb0b8d4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud13.h @@ -0,0 +1,1191 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bud13.h +* +* \brief +* CY8C6347FMI-BUD13 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BUD13_H_ +#define _CY8C6347FMI_BUD13_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BUD13 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BUD13 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BUD13 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2452100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BUD13 */ + +#endif /* _CY8C6347FMI_BUD13_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud33.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud33.h new file mode 100644 index 00000000000..27177094b03 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud33.h @@ -0,0 +1,1256 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bud33.h +* +* \brief +* CY8C6347FMI-BUD33 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BUD33_H_ +#define _CY8C6347FMI_BUD33_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BUD33 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BUD33 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BUD33 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2472100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BUD33 */ + +#endif /* _CY8C6347FMI_BUD33_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud43.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud43.h new file mode 100644 index 00000000000..54953019dfd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud43.h @@ -0,0 +1,1201 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bud43.h +* +* \brief +* CY8C6347FMI-BUD43 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BUD43_H_ +#define _CY8C6347FMI_BUD43_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BUD43 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BUD43 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BUD43 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2462100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BUD43 */ + +#endif /* _CY8C6347FMI_BUD43_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud53.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud53.h new file mode 100644 index 00000000000..98ca94ef9de --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c6347fmi_bud53.h @@ -0,0 +1,1266 @@ +/***************************************************************************//** +* \file cy8c6347fmi_bud53.h +* +* \brief +* CY8C6347FMI-BUD53 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C6347FMI_BUD53_H_ +#define _CY8C6347FMI_BUD53_H_ + +/** +* \addtogroup group_device CY8C6347FMI-BUD53 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C6347FMI-BUD53 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C6347FMI-BUD53 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble_usb.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2442100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C6347FMI-BUD53 */ + +#endif /* _CY8C6347FMI_BUD53_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_bld74.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_bld74.h new file mode 100644 index 00000000000..d2d7bb64cfc --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_bld74.h @@ -0,0 +1,1253 @@ +/***************************************************************************//** +* \file cy8c637bzi_bld74.h +* +* \brief +* CY8C637BZI-BLD74 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C637BZI_BLD74_H_ +#define _CY8C637BZI_BLD74_H_ + +/** +* \addtogroup group_device CY8C637BZI-BLD74 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C637BZI-BLD74 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C637BZI-BLD74 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2011100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C637BZI-BLD74 */ + +#endif /* _CY8C637BZI_BLD74_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_md76.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_md76.h new file mode 100644 index 00000000000..6ca822bcdad --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637bzi_md76.h @@ -0,0 +1,1252 @@ +/***************************************************************************//** +* \file cy8c637bzi_md76.h +* +* \brief +* CY8C637BZI-MD76 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C637BZI_MD76_H_ +#define _CY8C637BZI_MD76_H_ + +/** +* \addtogroup group_device CY8C637BZI-MD76 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C637BZI-MD76 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C637BZI-MD76 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXUSBFS_INSTANCES 1u +#define CY_IP_MXUSBFS_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_124_bga.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2001100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS0_BASE 0x403F0000UL +#define USBFS0 ((USBFS_Type*) USBFS0_BASE) /* 0x403F0000 */ +#define USBFS0_USBDEV ((USBFS_USBDEV_Type*) &USBFS0->USBDEV) /* 0x403F0000 */ +#define USBFS0_USBLPM ((USBFS_USBLPM_Type*) &USBFS0->USBLPM) /* 0x403F2000 */ +#define USBFS0_USBHOST ((USBFS_USBHOST_Type*) &USBFS0->USBHOST) /* 0x403F4000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C637BZI-MD76 */ + +#endif /* _CY8C637BZI_MD76_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637fmi_bld73.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637fmi_bld73.h new file mode 100644 index 00000000000..bf35befe39c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c637fmi_bld73.h @@ -0,0 +1,1253 @@ +/***************************************************************************//** +* \file cy8c637fmi_bld73.h +* +* \brief +* CY8C637FMI-BLD73 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C637FMI_BLD73_H_ +#define _CY8C637FMI_BLD73_H_ + +/** +* \addtogroup group_device CY8C637FMI-BLD73 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C637FMI-BLD73 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C637FMI-BLD73 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2021100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C637FMI-BLD73 */ + +#endif /* _CY8C637FMI_BLD73_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237bz_ble.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237bz_ble.h new file mode 100644 index 00000000000..0f78d1181e1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237bz_ble.h @@ -0,0 +1,1168 @@ +/***************************************************************************//** +* \file cy8c68237bz_ble.h +* +* \brief +* CY8C68237BZ-BLE device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C68237BZ_BLE_H_ +#define _CY8C68237BZ_BLE_H_ + +/** +* \addtogroup group_device CY8C68237BZ-BLE +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C68237BZ-BLE Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C68237BZ-BLE interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_116_bga_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2052100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C68237BZ-BLE */ + +#endif /* _CY8C68237BZ_BLE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237fm_ble.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237fm_ble.h new file mode 100644 index 00000000000..f0039b2e253 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy8c68237fm_ble.h @@ -0,0 +1,1168 @@ +/***************************************************************************//** +* \file cy8c68237fm_ble.h +* +* \brief +* CY8C68237FM-BLE device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY8C68237FM_BLE_H_ +#define _CY8C68237FM_BLE_H_ + +/** +* \addtogroup group_device CY8C68237FM-BLE +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CY8C68237FM-BLE Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CY8C68237FM-BLE interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_104_m_csp_ble.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2042100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CY8C68237FM-BLE */ + +#endif /* _CY8C68237FM_BLE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_common.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_common.h new file mode 100644 index 00000000000..d91a9c67113 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_common.h @@ -0,0 +1,410 @@ +/***************************************************************************//** +* \file cy_device_common.h +* \version 2.30 +* +* \brief +* This file provides types and IP block definitions common for all PSoC 6 +* devices. +* +******************************************************************************** +* \copyright +* Copyright 2018-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY_DEVICE_COMMON_H_ +#define _CY_DEVICE_COMMON_H_ + +#include + +/******************************************************************************* +* CPU Core Interrupts +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + unconnected_IRQn = 240 +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + unconnected_IRQn = 240 +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +typedef enum { + disconnected_IRQn = 1023 /*!< 1023 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/******************************************************************************* +* Product-Specific Enumeration Types +*******************************************************************************/ +/* For the target device these enums are defined in product-specific +* configuration files. +* For the library these enums define the max value or a set of values used by +* the library that are common across all target devices, so the compiler can +* determine the enum width to hold the biggest number in the enum. +*/ + +typedef enum +{ + PCLK_PASS_CLOCK_CTDAC = 55, + PCLK_CLOCK_NR_MINUS_ONE = 255 +} en_clk_dst_t; + +typedef enum +{ + PRFL_MONITOR_NR_MINUS_ONE = 127 +} en_ep_mon_sel_t; + +typedef enum +{ + AMUX_SPLIT_NR_MINUS_ONE = 63 +} cy_en_amux_split_t; + +typedef enum +{ + TRIGGER_TYPE_LEVEL = 0u, + TRIGGER_TYPE_EDGE = 1u +} en_trig_type_t; + +typedef enum +{ + CPUSS_MS_ID_CM0 = 0, + CPUSS_MS_ID_CM4 = 14, +} en_prot_master_t; + +typedef enum +{ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ +} en_hsiom_sel_t; + +/******************************************************************************* +* Platform and Peripheral Definitions +*******************************************************************************/ + +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_DMAC 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXSDHC 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXUSBFS 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXPROFILE 1u + +/******************************************************************************* +* Include IP Block Definitions +*******************************************************************************/ +#include "ip/cyip_sflash.h" +#include "ip/cyip_peri.h" +#include "ip/cyip_peri_v2.h" +#include "ip/cyip_peri_ms_v2.h" +#include "ip/cyip_crypto.h" +#include "ip/cyip_crypto_v2.h" +#include "ip/cyip_cpuss.h" +#include "ip/cyip_cpuss_v2.h" +#include "ip/cyip_fault.h" +#include "ip/cyip_fault_v2.h" +#include "ip/cyip_ipc.h" +#include "ip/cyip_ipc_v2.h" +#include "ip/cyip_prot.h" +#include "ip/cyip_prot_v2.h" +#include "ip/cyip_flashc.h" +#include "ip/cyip_flashc_v2.h" +#include "ip/cyip_srss.h" +#include "ip/cyip_backup.h" +#include "ip/cyip_dw.h" +#include "ip/cyip_dw_v2.h" +#include "ip/cyip_dmac_v2.h" +#include "ip/cyip_efuse.h" +#include "ip/cyip_profile.h" +#include "ip/cyip_hsiom.h" +#include "ip/cyip_hsiom_v2.h" +#include "ip/cyip_gpio.h" +#include "ip/cyip_gpio_v2.h" +#include "ip/cyip_smartio.h" +#include "ip/cyip_smartio_v2.h" +#include "ip/cyip_udb.h" +#include "ip/cyip_lpcomp.h" +#include "ip/cyip_csd.h" +#include "ip/cyip_tcpwm.h" +#include "ip/cyip_lcd.h" +#include "ip/cyip_ble.h" +#include "ip/cyip_usbfs.h" +#include "ip/cyip_smif.h" +#include "ip/cyip_sdhc.h" +#include "ip/cyip_scb.h" +#include "ip/cyip_ctbm.h" +#include "ip/cyip_ctdac.h" +#include "ip/cyip_sar.h" +#include "ip/cyip_pass.h" +#include "ip/cyip_i2s.h" +#include "ip/cyip_pdm.h" + +/******************************************************************************* +* IP Type Definitions +*******************************************************************************/ +typedef SFLASH_V1_Type SFLASH_Type; +typedef PERI_GR_V2_Type PERI_GR_Type; +typedef PERI_TR_GR_V2_Type PERI_TR_GR_Type; +typedef PERI_TR_1TO1_GR_V2_Type PERI_TR_1TO1_GR_Type; +typedef PERI_PPU_PR_V1_Type PERI_PPU_PR_Type; +typedef PERI_PPU_GR_V1_Type PERI_PPU_GR_Type; +typedef PERI_GR_PPU_SL_V1_Type PERI_GR_PPU_SL_Type; +typedef PERI_GR_PPU_RG_V1_Type PERI_GR_PPU_RG_Type; +typedef PERI_V2_Type PERI_Type; +typedef PERI_MS_PPU_PR_V2_Type PERI_MS_PPU_PR_Type; +typedef PERI_MS_PPU_FX_V2_Type PERI_MS_PPU_FX_Type; +typedef PERI_MS_V2_Type PERI_MS_Type; +typedef CRYPTO_V2_Type CRYPTO_Type; +typedef CPUSS_V2_Type CPUSS_Type; +typedef FAULT_STRUCT_V2_Type FAULT_STRUCT_Type; +typedef FAULT_V2_Type FAULT_Type; +typedef IPC_STRUCT_V2_Type IPC_STRUCT_Type; +typedef IPC_INTR_STRUCT_V2_Type IPC_INTR_STRUCT_Type; +typedef IPC_V2_Type IPC_Type; +typedef PROT_SMPU_SMPU_STRUCT_V2_Type PROT_SMPU_SMPU_STRUCT_Type; +typedef PROT_SMPU_V2_Type PROT_SMPU_Type; +typedef PROT_MPU_MPU_STRUCT_V2_Type PROT_MPU_MPU_STRUCT_Type; +typedef PROT_MPU_V2_Type PROT_MPU_Type; +typedef PROT_V2_Type PROT_Type; +typedef FLASHC_FM_CTL_V2_Type FLASHC_FM_CTL_Type; +typedef FLASHC_V2_Type FLASHC_Type; +typedef MCWDT_STRUCT_V1_Type MCWDT_STRUCT_Type; +typedef SRSS_V1_Type SRSS_Type; +typedef BACKUP_V1_Type BACKUP_Type; +typedef DW_CH_STRUCT_V2_Type DW_CH_STRUCT_Type; +typedef DW_V2_Type DW_Type; +typedef DMAC_CH_V2_Type DMAC_CH_Type; +typedef DMAC_V2_Type DMAC_Type; +typedef EFUSE_V1_Type EFUSE_Type; +typedef PROFILE_CNT_STRUCT_V1_Type PROFILE_CNT_STRUCT_Type; +typedef PROFILE_V1_Type PROFILE_Type; +typedef HSIOM_PRT_V2_Type HSIOM_PRT_Type; +typedef HSIOM_V2_Type HSIOM_Type; +typedef GPIO_PRT_V2_Type GPIO_PRT_Type; +typedef GPIO_V2_Type GPIO_Type; +typedef SMARTIO_PRT_V2_Type SMARTIO_PRT_Type; +typedef SMARTIO_V2_Type SMARTIO_Type; +typedef UDB_WRKONE_V1_Type UDB_WRKONE_Type; +typedef UDB_WRKMULT_V1_Type UDB_WRKMULT_Type; +typedef UDB_UDBPAIR_UDBSNG_V1_Type UDB_UDBPAIR_UDBSNG_Type; +typedef UDB_UDBPAIR_ROUTE_V1_Type UDB_UDBPAIR_ROUTE_Type; +typedef UDB_UDBPAIR_V1_Type UDB_UDBPAIR_Type; +typedef UDB_DSI_V1_Type UDB_DSI_Type; +typedef UDB_PA_V1_Type UDB_PA_Type; +typedef UDB_BCTL_V1_Type UDB_BCTL_Type; +typedef UDB_UDBIF_V1_Type UDB_UDBIF_Type; +typedef UDB_V1_Type UDB_Type; +typedef LPCOMP_V1_Type LPCOMP_Type; +typedef CSD_V1_Type CSD_Type; +typedef TCPWM_CNT_V1_Type TCPWM_CNT_Type; +typedef TCPWM_V1_Type TCPWM_Type; +typedef LCD_V1_Type LCD_Type; +typedef BLE_RCB_RCBLL_V1_Type BLE_RCB_RCBLL_Type; +typedef BLE_RCB_V1_Type BLE_RCB_Type; +typedef BLE_BLELL_V1_Type BLE_BLELL_Type; +typedef BLE_BLESS_V1_Type BLE_BLESS_Type; +typedef BLE_V1_Type BLE_Type; +typedef USBFS_USBDEV_V1_Type USBFS_USBDEV_Type; +typedef USBFS_USBLPM_V1_Type USBFS_USBLPM_Type; +typedef USBFS_USBHOST_V1_Type USBFS_USBHOST_Type; +typedef USBFS_V1_Type USBFS_Type; +typedef SMIF_DEVICE_V1_Type SMIF_DEVICE_Type; +typedef SMIF_V1_Type SMIF_Type; +typedef SDHC_WRAP_V1_Type SDHC_WRAP_Type; +typedef SDHC_CORE_V1_Type SDHC_CORE_Type; +typedef SDHC_V1_Type SDHC_Type; +typedef CySCB_V1_Type CySCB_Type; +typedef CTBM_V1_Type CTBM_Type; +typedef CTDAC_V1_Type CTDAC_Type; +typedef SAR_V1_Type SAR_Type; +typedef PASS_AREF_V1_Type PASS_AREF_Type; +typedef PASS_V1_Type PASS_Type; +typedef PDM_V1_Type PDM_Type; +typedef I2S_V1_Type I2S_Type; + +/******************************************************************************* +* Symbols with External Linkage +*******************************************************************************/ + +extern uint32_t cy_PeriClkFreqHz; +extern uint32_t cy_BleEcoClockFreqHz; +extern uint32_t cy_Hfclk0FreqHz; +extern uint32_t cy_delayFreqKhz; +extern uint8_t cy_delayFreqMhz; +extern uint32_t cy_delay32kMs; + +extern void SystemCoreClockUpdate(void); +extern uint32_t Cy_SysGetCM4Status(void); + +/******************************************************************************* +* Platform and Peripheral Parameters +*******************************************************************************/ + +/* Flash Start Address and Size */ +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +/* Page size in # of 32-bit words (1: 4 bytes, 2: 8 bytes, ... */ +#define CPUSS_FLASHC_PA_SIZE 128u +/* EEPROM Start Address and Size */ +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +/* Number of 8.0 dividers */ +#define PERI_DIV_8_NR 8u +/* Number of 16.0 dividers */ +#define PERI_DIV_16_NR 16u +/* Number of 16.5 (fractional) dividers */ +#define PERI_DIV_16_5_NR 4u +/* Number of 24.5 (fractional) dividers */ +#define PERI_DIV_24_5_NR 1u +/* Number of external devices supported ([1,4]) */ +#define SMIF_DEVICE_NR 4u +/* Number of ports in device */ +#define IOSS_GPIO_GPIO_PORT_NR 15u +/* Number of SAR channels */ +#define PASS_SAR_SAR_CHANNELS 16u +/* CM4 Enabled State */ +#define CY_SYS_CM4_STATUS_ENABLED 3U +/* Cryptography IP present or not (0=No, 1=Yes) */ +#define CPUSS_CRYPTO_PRESENT 1u +/* AES cipher support (0 = no support, 1 = support */ +#define CPUSS_CRYPTO_AES 1u +/* (Tripple) DES cipher support (0 = no support, 1 = support */ +#define CPUSS_CRYPTO_DES 1u +/* Pseudo random number generation support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_PR 1u +/* SHA support included */ +#define CPUSS_CRYPTO_SHA 1u +/* SHA1 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA1 1u +/* SHA256 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA256 1u +/* SHA512 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA512 1u +/* Cyclic Redundancy Check support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_CRC 1u +/* Vector unit support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_VU 1u +/* True random number generation support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_TR 1u +/* String support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_STR 1u + +/******************************************************************************* +* Access Definitions for IP Blocks +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) + +#endif /* _CY_DEVICE_COMMON_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_headers.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_headers.h new file mode 100644 index 00000000000..2f73431430b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cy_device_headers.h @@ -0,0 +1,164 @@ +/***************************************************************************//** +* \file cy_device_headers.h +* +* \brief +* Common header file to be included by the drivers. +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CY_DEVICE_HEADERS_H_ +#define _CY_DEVICE_HEADERS_H_ + +#if defined (CY_DEVICE_COMMON) + #include "cy_device_common.h" +#elif defined (CY8C6036BZI_F04) + #include "cy8c6036bzi_f04.h" +#elif defined (CY8C6016BZI_F04) + #include "cy8c6016bzi_f04.h" +#elif defined (CY8C6116BZI_F54) + #include "cy8c6116bzi_f54.h" +#elif defined (CY8C6136BZI_F14) + #include "cy8c6136bzi_f14.h" +#elif defined (CY8C6136BZI_F34) + #include "cy8c6136bzi_f34.h" +#elif defined (CY8C6137BZI_F14) + #include "cy8c6137bzi_f14.h" +#elif defined (CY8C6137BZI_F34) + #include "cy8c6137bzi_f34.h" +#elif defined (CY8C6137BZI_F54) + #include "cy8c6137bzi_f54.h" +#elif defined (CY8C6117BZI_F34) + #include "cy8c6117bzi_f34.h" +#elif defined (CY8C6246BZI_D04) + #include "cy8c6246bzi_d04.h" +#elif defined (CY8C6247BZI_D44) + #include "cy8c6247bzi_d44.h" +#elif defined (CY8C6247BZI_D34) + #include "cy8c6247bzi_d34.h" +#elif defined (CY8C6247BZI_D54) + #include "cy8c6247bzi_d54.h" +#elif defined (CY8C6336BZI_BLF03) + #include "cy8c6336bzi_blf03.h" +#elif defined (CY8C6316BZI_BLF03) + #include "cy8c6316bzi_blf03.h" +#elif defined (CY8C6316BZI_BLF53) + #include "cy8c6316bzi_blf53.h" +#elif defined (CY8C6336BZI_BLD13) + #include "cy8c6336bzi_bld13.h" +#elif defined (CY8C6347BZI_BLD43) + #include "cy8c6347bzi_bld43.h" +#elif defined (CY8C6347BZI_BLD33) + #include "cy8c6347bzi_bld33.h" +#elif defined (CY8C6347BZI_BLD53) + #include "cy8c6347bzi_bld53.h" +#elif defined (CY8C6347FMI_BLD13) + #include "cy8c6347fmi_bld13.h" +#elif defined (CY8C6347FMI_BLD43) + #include "cy8c6347fmi_bld43.h" +#elif defined (CY8C6347FMI_BLD33) + #include "cy8c6347fmi_bld33.h" +#elif defined (CY8C6347FMI_BLD53) + #include "cy8c6347fmi_bld53.h" +#elif defined (CY8C637BZI_MD76) + #include "cy8c637bzi_md76.h" +#elif defined (CY8C637BZI_BLD74) + #include "cy8c637bzi_bld74.h" +#elif defined (CY8C637FMI_BLD73) + #include "cy8c637fmi_bld73.h" +#elif defined (CY8C68237BZ_BLE) + #include "cy8c68237bz_ble.h" +#elif defined (CY8C68237FM_BLE) + #include "cy8c68237fm_ble.h" +#elif defined (CY8C6137FDI_F02) + #include "cy8c6137fdi_f02.h" +#elif defined (CY8C6117FDI_F02) + #include "cy8c6117fdi_f02.h" +#elif defined (CY8C6247FDI_D02) + #include "cy8c6247fdi_d02.h" +#elif defined (CY8C6247FDI_D32) + #include "cy8c6247fdi_d32.h" +#elif defined (CY8C6336BZI_BUD13) + #include "cy8c6336bzi_bud13.h" +#elif defined (CY8C6347BZI_BUD43) + #include "cy8c6347bzi_bud43.h" +#elif defined (CY8C6347BZI_BUD33) + #include "cy8c6347bzi_bud33.h" +#elif defined (CY8C6347BZI_BUD53) + #include "cy8c6347bzi_bud53.h" +#elif defined (CY8C6337BZI_BLF13) + #include "cy8c6337bzi_blf13.h" +#elif defined (CY8C6136FDI_F42) + #include "cy8c6136fdi_f42.h" +#elif defined (CY8C6247FDI_D52) + #include "cy8c6247fdi_d52.h" +#elif defined (CY8C6136FTI_F42) + #include "cy8c6136fti_f42.h" +#elif defined (CY8C6247FTI_D52) + #include "cy8c6247fti_d52.h" +#elif defined (CY8C6247BZI_AUD54) + #include "cy8c6247bzi_aud54.h" +#elif defined (CY8C6336BZI_BLF04) + #include "cy8c6336bzi_blf04.h" +#elif defined (CY8C6316BZI_BLF04) + #include "cy8c6316bzi_blf04.h" +#elif defined (CY8C6316BZI_BLF54) + #include "cy8c6316bzi_blf54.h" +#elif defined (CY8C6336BZI_BLD14) + #include "cy8c6336bzi_bld14.h" +#elif defined (CY8C6347BZI_BLD44) + #include "cy8c6347bzi_bld44.h" +#elif defined (CY8C6347BZI_BLD34) + #include "cy8c6347bzi_bld34.h" +#elif defined (CY8C6347BZI_BLD54) + #include "cy8c6347bzi_bld54.h" +#elif defined (CY8C6247BFI_D54) + #include "cy8c6247bfi_d54.h" +#elif defined (CYBLE_416045_02) + #include "cyble_416045_02.h" +#elif defined (CY8C6347FMI_BUD53) + #include "cy8c6347fmi_bud53.h" +#elif defined (CY8C6347FMI_BUD13) + #include "cy8c6347fmi_bud13.h" +#elif defined (CY8C6347FMI_BUD43) + #include "cy8c6347fmi_bud43.h" +#elif defined (CY8C6347FMI_BUD33) + #include "cy8c6347fmi_bud33.h" +#elif defined (CY8C6137WI_F54) + #include "cy8c6137wi_f54.h" +#elif defined (CY8C6117WI_F34) + #include "cy8c6117wi_f34.h" +#elif defined (CY8C6247WI_D54) + #include "cy8c6247wi_d54.h" +#elif defined (CY8C624ABZI_D44) + #include "cy8c624abzi_d44.h" +#elif defined (CY8C624AAZI_D44) + #include "cy8c624aazi_d44.h" +#elif defined (CY8C624AFNI_D43) + #include "cy8c624afni_d43.h" +#else + #include "cy_device_common.h" +#endif + +#endif /* _CY_DEVICE_HEADERS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cyble_416045_02.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cyble_416045_02.h new file mode 100644 index 00000000000..6331481cc15 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/cyble_416045_02.h @@ -0,0 +1,1253 @@ +/***************************************************************************//** +* \file cyble_416045_02.h +* +* \brief +* CYBLE-416045-02 device header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYBLE_416045_02_H_ +#define _CYBLE_416045_02_H_ + +/** +* \addtogroup group_device CYBLE-416045-02 +* \{ +*/ + +/** +* \addtogroup Configuration_of_CMSIS +* \{ +*/ + +/******************************************************************************* +* Interrupt Number Definition +*******************************************************************************/ + +typedef enum { +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + /* ARM Cortex-M0+ Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* ARM Cortex-M0+ NVIC Mux inputs. Allow routing of device interrupts to the CM0+ NVIC */ + NvicMux0_IRQn = 0, /*!< 0 [DeepSleep] CM0+ NVIC Mux input 0 */ + NvicMux1_IRQn = 1, /*!< 1 [DeepSleep] CM0+ NVIC Mux input 1 */ + NvicMux2_IRQn = 2, /*!< 2 [DeepSleep] CM0+ NVIC Mux input 2 */ + NvicMux3_IRQn = 3, /*!< 3 [DeepSleep] CM0+ NVIC Mux input 3 */ + NvicMux4_IRQn = 4, /*!< 4 [DeepSleep] CM0+ NVIC Mux input 4 */ + NvicMux5_IRQn = 5, /*!< 5 [DeepSleep] CM0+ NVIC Mux input 5 */ + NvicMux6_IRQn = 6, /*!< 6 [DeepSleep] CM0+ NVIC Mux input 6 */ + NvicMux7_IRQn = 7, /*!< 7 [DeepSleep] CM0+ NVIC Mux input 7 */ + NvicMux8_IRQn = 8, /*!< 8 [Active] CM0+ NVIC Mux input 8 */ + NvicMux9_IRQn = 9, /*!< 9 [Active] CM0+ NVIC Mux input 9 */ + NvicMux10_IRQn = 10, /*!< 10 [Active] CM0+ NVIC Mux input 10 */ + NvicMux11_IRQn = 11, /*!< 11 [Active] CM0+ NVIC Mux input 11 */ + NvicMux12_IRQn = 12, /*!< 12 [Active] CM0+ NVIC Mux input 12 */ + NvicMux13_IRQn = 13, /*!< 13 [Active] CM0+ NVIC Mux input 13 */ + NvicMux14_IRQn = 14, /*!< 14 [Active] CM0+ NVIC Mux input 14 */ + NvicMux15_IRQn = 15, /*!< 15 [Active] CM0+ NVIC Mux input 15 */ + NvicMux16_IRQn = 16, /*!< 16 [Active] CM0+ NVIC Mux input 16 */ + NvicMux17_IRQn = 17, /*!< 17 [Active] CM0+ NVIC Mux input 17 */ + NvicMux18_IRQn = 18, /*!< 18 [Active] CM0+ NVIC Mux input 18 */ + NvicMux19_IRQn = 19, /*!< 19 [Active] CM0+ NVIC Mux input 19 */ + NvicMux20_IRQn = 20, /*!< 20 [Active] CM0+ NVIC Mux input 20 */ + NvicMux21_IRQn = 21, /*!< 21 [Active] CM0+ NVIC Mux input 21 */ + NvicMux22_IRQn = 22, /*!< 22 [Active] CM0+ NVIC Mux input 22 */ + NvicMux23_IRQn = 23, /*!< 23 [Active] CM0+ NVIC Mux input 23 */ + NvicMux24_IRQn = 24, /*!< 24 [Active] CM0+ NVIC Mux input 24 */ + NvicMux25_IRQn = 25, /*!< 25 [Active] CM0+ NVIC Mux input 25 */ + NvicMux26_IRQn = 26, /*!< 26 [Active] CM0+ NVIC Mux input 26 */ + NvicMux27_IRQn = 27, /*!< 27 [Active] CM0+ NVIC Mux input 27 */ + NvicMux28_IRQn = 28, /*!< 28 [Active] CM0+ NVIC Mux input 28 */ + NvicMux29_IRQn = 29, /*!< 29 [Active] CM0+ NVIC Mux input 29 */ + NvicMux30_IRQn = 30, /*!< 30 [Active] CM0+ NVIC Mux input 30 */ + NvicMux31_IRQn = 31, /*!< 31 [Active] CM0+ NVIC Mux input 31 */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#else + /* ARM Cortex-M4 Core Interrupt Numbers */ + Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ + HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ + MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ + UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ + SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ + PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ + SysTick_IRQn = -1, /*!< -1 System Tick Timer */ + /* CYBLE-416045-02 Peripheral Interrupt Numbers */ + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + unconnected_IRQn = 240 /*!< 240 Unconnected */ +#endif +} IRQn_Type; + + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* CYBLE-416045-02 interrupts that can be routed to the CM0+ NVIC */ +typedef enum { + ioss_interrupts_gpio_0_IRQn = 0, /*!< 0 [DeepSleep] GPIO Port Interrupt #0 */ + ioss_interrupts_gpio_1_IRQn = 1, /*!< 1 [DeepSleep] GPIO Port Interrupt #1 */ + ioss_interrupts_gpio_2_IRQn = 2, /*!< 2 [DeepSleep] GPIO Port Interrupt #2 */ + ioss_interrupts_gpio_3_IRQn = 3, /*!< 3 [DeepSleep] GPIO Port Interrupt #3 */ + ioss_interrupts_gpio_4_IRQn = 4, /*!< 4 [DeepSleep] GPIO Port Interrupt #4 */ + ioss_interrupts_gpio_5_IRQn = 5, /*!< 5 [DeepSleep] GPIO Port Interrupt #5 */ + ioss_interrupts_gpio_6_IRQn = 6, /*!< 6 [DeepSleep] GPIO Port Interrupt #6 */ + ioss_interrupts_gpio_7_IRQn = 7, /*!< 7 [DeepSleep] GPIO Port Interrupt #7 */ + ioss_interrupts_gpio_8_IRQn = 8, /*!< 8 [DeepSleep] GPIO Port Interrupt #8 */ + ioss_interrupts_gpio_9_IRQn = 9, /*!< 9 [DeepSleep] GPIO Port Interrupt #9 */ + ioss_interrupts_gpio_10_IRQn = 10, /*!< 10 [DeepSleep] GPIO Port Interrupt #10 */ + ioss_interrupts_gpio_11_IRQn = 11, /*!< 11 [DeepSleep] GPIO Port Interrupt #11 */ + ioss_interrupts_gpio_12_IRQn = 12, /*!< 12 [DeepSleep] GPIO Port Interrupt #12 */ + ioss_interrupts_gpio_13_IRQn = 13, /*!< 13 [DeepSleep] GPIO Port Interrupt #13 */ + ioss_interrupts_gpio_14_IRQn = 14, /*!< 14 [DeepSleep] GPIO Port Interrupt #14 */ + ioss_interrupt_gpio_IRQn = 15, /*!< 15 [DeepSleep] GPIO All Ports */ + ioss_interrupt_vdd_IRQn = 16, /*!< 16 [DeepSleep] GPIO Supply Detect Interrupt */ + lpcomp_interrupt_IRQn = 17, /*!< 17 [DeepSleep] Low Power Comparator Interrupt */ + scb_8_interrupt_IRQn = 18, /*!< 18 [DeepSleep] Serial Communication Block #8 (DeepSleep capable) */ + srss_interrupt_mcwdt_0_IRQn = 19, /*!< 19 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_mcwdt_1_IRQn = 20, /*!< 20 [DeepSleep] Multi Counter Watchdog Timer interrupt */ + srss_interrupt_backup_IRQn = 21, /*!< 21 [DeepSleep] Backup domain interrupt */ + srss_interrupt_IRQn = 22, /*!< 22 [DeepSleep] Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */ + pass_interrupt_ctbs_IRQn = 23, /*!< 23 [DeepSleep] CTBm Interrupt (all CTBms) */ + bless_interrupt_IRQn = 24, /*!< 24 [DeepSleep] Bluetooth Radio interrupt */ + cpuss_interrupts_ipc_0_IRQn = 25, /*!< 25 [DeepSleep] CPUSS Inter Process Communication Interrupt #0 */ + cpuss_interrupts_ipc_1_IRQn = 26, /*!< 26 [DeepSleep] CPUSS Inter Process Communication Interrupt #1 */ + cpuss_interrupts_ipc_2_IRQn = 27, /*!< 27 [DeepSleep] CPUSS Inter Process Communication Interrupt #2 */ + cpuss_interrupts_ipc_3_IRQn = 28, /*!< 28 [DeepSleep] CPUSS Inter Process Communication Interrupt #3 */ + cpuss_interrupts_ipc_4_IRQn = 29, /*!< 29 [DeepSleep] CPUSS Inter Process Communication Interrupt #4 */ + cpuss_interrupts_ipc_5_IRQn = 30, /*!< 30 [DeepSleep] CPUSS Inter Process Communication Interrupt #5 */ + cpuss_interrupts_ipc_6_IRQn = 31, /*!< 31 [DeepSleep] CPUSS Inter Process Communication Interrupt #6 */ + cpuss_interrupts_ipc_7_IRQn = 32, /*!< 32 [DeepSleep] CPUSS Inter Process Communication Interrupt #7 */ + cpuss_interrupts_ipc_8_IRQn = 33, /*!< 33 [DeepSleep] CPUSS Inter Process Communication Interrupt #8 */ + cpuss_interrupts_ipc_9_IRQn = 34, /*!< 34 [DeepSleep] CPUSS Inter Process Communication Interrupt #9 */ + cpuss_interrupts_ipc_10_IRQn = 35, /*!< 35 [DeepSleep] CPUSS Inter Process Communication Interrupt #10 */ + cpuss_interrupts_ipc_11_IRQn = 36, /*!< 36 [DeepSleep] CPUSS Inter Process Communication Interrupt #11 */ + cpuss_interrupts_ipc_12_IRQn = 37, /*!< 37 [DeepSleep] CPUSS Inter Process Communication Interrupt #12 */ + cpuss_interrupts_ipc_13_IRQn = 38, /*!< 38 [DeepSleep] CPUSS Inter Process Communication Interrupt #13 */ + cpuss_interrupts_ipc_14_IRQn = 39, /*!< 39 [DeepSleep] CPUSS Inter Process Communication Interrupt #14 */ + cpuss_interrupts_ipc_15_IRQn = 40, /*!< 40 [DeepSleep] CPUSS Inter Process Communication Interrupt #15 */ + scb_0_interrupt_IRQn = 41, /*!< 41 [Active] Serial Communication Block #0 */ + scb_1_interrupt_IRQn = 42, /*!< 42 [Active] Serial Communication Block #1 */ + scb_2_interrupt_IRQn = 43, /*!< 43 [Active] Serial Communication Block #2 */ + scb_3_interrupt_IRQn = 44, /*!< 44 [Active] Serial Communication Block #3 */ + scb_4_interrupt_IRQn = 45, /*!< 45 [Active] Serial Communication Block #4 */ + scb_5_interrupt_IRQn = 46, /*!< 46 [Active] Serial Communication Block #5 */ + scb_6_interrupt_IRQn = 47, /*!< 47 [Active] Serial Communication Block #6 */ + scb_7_interrupt_IRQn = 48, /*!< 48 [Active] Serial Communication Block #7 */ + csd_interrupt_IRQn = 49, /*!< 49 [Active] CSD (Capsense) interrupt */ + cpuss_interrupts_dw0_0_IRQn = 50, /*!< 50 [Active] CPUSS DataWire #0, Channel #0 */ + cpuss_interrupts_dw0_1_IRQn = 51, /*!< 51 [Active] CPUSS DataWire #0, Channel #1 */ + cpuss_interrupts_dw0_2_IRQn = 52, /*!< 52 [Active] CPUSS DataWire #0, Channel #2 */ + cpuss_interrupts_dw0_3_IRQn = 53, /*!< 53 [Active] CPUSS DataWire #0, Channel #3 */ + cpuss_interrupts_dw0_4_IRQn = 54, /*!< 54 [Active] CPUSS DataWire #0, Channel #4 */ + cpuss_interrupts_dw0_5_IRQn = 55, /*!< 55 [Active] CPUSS DataWire #0, Channel #5 */ + cpuss_interrupts_dw0_6_IRQn = 56, /*!< 56 [Active] CPUSS DataWire #0, Channel #6 */ + cpuss_interrupts_dw0_7_IRQn = 57, /*!< 57 [Active] CPUSS DataWire #0, Channel #7 */ + cpuss_interrupts_dw0_8_IRQn = 58, /*!< 58 [Active] CPUSS DataWire #0, Channel #8 */ + cpuss_interrupts_dw0_9_IRQn = 59, /*!< 59 [Active] CPUSS DataWire #0, Channel #9 */ + cpuss_interrupts_dw0_10_IRQn = 60, /*!< 60 [Active] CPUSS DataWire #0, Channel #10 */ + cpuss_interrupts_dw0_11_IRQn = 61, /*!< 61 [Active] CPUSS DataWire #0, Channel #11 */ + cpuss_interrupts_dw0_12_IRQn = 62, /*!< 62 [Active] CPUSS DataWire #0, Channel #12 */ + cpuss_interrupts_dw0_13_IRQn = 63, /*!< 63 [Active] CPUSS DataWire #0, Channel #13 */ + cpuss_interrupts_dw0_14_IRQn = 64, /*!< 64 [Active] CPUSS DataWire #0, Channel #14 */ + cpuss_interrupts_dw0_15_IRQn = 65, /*!< 65 [Active] CPUSS DataWire #0, Channel #15 */ + cpuss_interrupts_dw1_0_IRQn = 66, /*!< 66 [Active] CPUSS DataWire #1, Channel #0 */ + cpuss_interrupts_dw1_1_IRQn = 67, /*!< 67 [Active] CPUSS DataWire #1, Channel #1 */ + cpuss_interrupts_dw1_2_IRQn = 68, /*!< 68 [Active] CPUSS DataWire #1, Channel #2 */ + cpuss_interrupts_dw1_3_IRQn = 69, /*!< 69 [Active] CPUSS DataWire #1, Channel #3 */ + cpuss_interrupts_dw1_4_IRQn = 70, /*!< 70 [Active] CPUSS DataWire #1, Channel #4 */ + cpuss_interrupts_dw1_5_IRQn = 71, /*!< 71 [Active] CPUSS DataWire #1, Channel #5 */ + cpuss_interrupts_dw1_6_IRQn = 72, /*!< 72 [Active] CPUSS DataWire #1, Channel #6 */ + cpuss_interrupts_dw1_7_IRQn = 73, /*!< 73 [Active] CPUSS DataWire #1, Channel #7 */ + cpuss_interrupts_dw1_8_IRQn = 74, /*!< 74 [Active] CPUSS DataWire #1, Channel #8 */ + cpuss_interrupts_dw1_9_IRQn = 75, /*!< 75 [Active] CPUSS DataWire #1, Channel #9 */ + cpuss_interrupts_dw1_10_IRQn = 76, /*!< 76 [Active] CPUSS DataWire #1, Channel #10 */ + cpuss_interrupts_dw1_11_IRQn = 77, /*!< 77 [Active] CPUSS DataWire #1, Channel #11 */ + cpuss_interrupts_dw1_12_IRQn = 78, /*!< 78 [Active] CPUSS DataWire #1, Channel #12 */ + cpuss_interrupts_dw1_13_IRQn = 79, /*!< 79 [Active] CPUSS DataWire #1, Channel #13 */ + cpuss_interrupts_dw1_14_IRQn = 80, /*!< 80 [Active] CPUSS DataWire #1, Channel #14 */ + cpuss_interrupts_dw1_15_IRQn = 81, /*!< 81 [Active] CPUSS DataWire #1, Channel #15 */ + cpuss_interrupts_fault_0_IRQn = 82, /*!< 82 [Active] CPUSS Fault Structure Interrupt #0 */ + cpuss_interrupts_fault_1_IRQn = 83, /*!< 83 [Active] CPUSS Fault Structure Interrupt #1 */ + cpuss_interrupt_crypto_IRQn = 84, /*!< 84 [Active] CRYPTO Accelerator Interrupt */ + cpuss_interrupt_fm_IRQn = 85, /*!< 85 [Active] FLASH Macro Interrupt */ + cpuss_interrupts_cm0_cti_0_IRQn = 86, /*!< 86 [Active] CM0+ CTI #0 */ + cpuss_interrupts_cm0_cti_1_IRQn = 87, /*!< 87 [Active] CM0+ CTI #1 */ + cpuss_interrupts_cm4_cti_0_IRQn = 88, /*!< 88 [Active] CM4 CTI #0 */ + cpuss_interrupts_cm4_cti_1_IRQn = 89, /*!< 89 [Active] CM4 CTI #1 */ + tcpwm_0_interrupts_0_IRQn = 90, /*!< 90 [Active] TCPWM #0, Counter #0 */ + tcpwm_0_interrupts_1_IRQn = 91, /*!< 91 [Active] TCPWM #0, Counter #1 */ + tcpwm_0_interrupts_2_IRQn = 92, /*!< 92 [Active] TCPWM #0, Counter #2 */ + tcpwm_0_interrupts_3_IRQn = 93, /*!< 93 [Active] TCPWM #0, Counter #3 */ + tcpwm_0_interrupts_4_IRQn = 94, /*!< 94 [Active] TCPWM #0, Counter #4 */ + tcpwm_0_interrupts_5_IRQn = 95, /*!< 95 [Active] TCPWM #0, Counter #5 */ + tcpwm_0_interrupts_6_IRQn = 96, /*!< 96 [Active] TCPWM #0, Counter #6 */ + tcpwm_0_interrupts_7_IRQn = 97, /*!< 97 [Active] TCPWM #0, Counter #7 */ + tcpwm_1_interrupts_0_IRQn = 98, /*!< 98 [Active] TCPWM #1, Counter #0 */ + tcpwm_1_interrupts_1_IRQn = 99, /*!< 99 [Active] TCPWM #1, Counter #1 */ + tcpwm_1_interrupts_2_IRQn = 100, /*!< 100 [Active] TCPWM #1, Counter #2 */ + tcpwm_1_interrupts_3_IRQn = 101, /*!< 101 [Active] TCPWM #1, Counter #3 */ + tcpwm_1_interrupts_4_IRQn = 102, /*!< 102 [Active] TCPWM #1, Counter #4 */ + tcpwm_1_interrupts_5_IRQn = 103, /*!< 103 [Active] TCPWM #1, Counter #5 */ + tcpwm_1_interrupts_6_IRQn = 104, /*!< 104 [Active] TCPWM #1, Counter #6 */ + tcpwm_1_interrupts_7_IRQn = 105, /*!< 105 [Active] TCPWM #1, Counter #7 */ + tcpwm_1_interrupts_8_IRQn = 106, /*!< 106 [Active] TCPWM #1, Counter #8 */ + tcpwm_1_interrupts_9_IRQn = 107, /*!< 107 [Active] TCPWM #1, Counter #9 */ + tcpwm_1_interrupts_10_IRQn = 108, /*!< 108 [Active] TCPWM #1, Counter #10 */ + tcpwm_1_interrupts_11_IRQn = 109, /*!< 109 [Active] TCPWM #1, Counter #11 */ + tcpwm_1_interrupts_12_IRQn = 110, /*!< 110 [Active] TCPWM #1, Counter #12 */ + tcpwm_1_interrupts_13_IRQn = 111, /*!< 111 [Active] TCPWM #1, Counter #13 */ + tcpwm_1_interrupts_14_IRQn = 112, /*!< 112 [Active] TCPWM #1, Counter #14 */ + tcpwm_1_interrupts_15_IRQn = 113, /*!< 113 [Active] TCPWM #1, Counter #15 */ + tcpwm_1_interrupts_16_IRQn = 114, /*!< 114 [Active] TCPWM #1, Counter #16 */ + tcpwm_1_interrupts_17_IRQn = 115, /*!< 115 [Active] TCPWM #1, Counter #17 */ + tcpwm_1_interrupts_18_IRQn = 116, /*!< 116 [Active] TCPWM #1, Counter #18 */ + tcpwm_1_interrupts_19_IRQn = 117, /*!< 117 [Active] TCPWM #1, Counter #19 */ + tcpwm_1_interrupts_20_IRQn = 118, /*!< 118 [Active] TCPWM #1, Counter #20 */ + tcpwm_1_interrupts_21_IRQn = 119, /*!< 119 [Active] TCPWM #1, Counter #21 */ + tcpwm_1_interrupts_22_IRQn = 120, /*!< 120 [Active] TCPWM #1, Counter #22 */ + tcpwm_1_interrupts_23_IRQn = 121, /*!< 121 [Active] TCPWM #1, Counter #23 */ + udb_interrupts_0_IRQn = 122, /*!< 122 [Active] UDB Interrupt #0 */ + udb_interrupts_1_IRQn = 123, /*!< 123 [Active] UDB Interrupt #1 */ + udb_interrupts_2_IRQn = 124, /*!< 124 [Active] UDB Interrupt #2 */ + udb_interrupts_3_IRQn = 125, /*!< 125 [Active] UDB Interrupt #3 */ + udb_interrupts_4_IRQn = 126, /*!< 126 [Active] UDB Interrupt #4 */ + udb_interrupts_5_IRQn = 127, /*!< 127 [Active] UDB Interrupt #5 */ + udb_interrupts_6_IRQn = 128, /*!< 128 [Active] UDB Interrupt #6 */ + udb_interrupts_7_IRQn = 129, /*!< 129 [Active] UDB Interrupt #7 */ + udb_interrupts_8_IRQn = 130, /*!< 130 [Active] UDB Interrupt #8 */ + udb_interrupts_9_IRQn = 131, /*!< 131 [Active] UDB Interrupt #9 */ + udb_interrupts_10_IRQn = 132, /*!< 132 [Active] UDB Interrupt #10 */ + udb_interrupts_11_IRQn = 133, /*!< 133 [Active] UDB Interrupt #11 */ + udb_interrupts_12_IRQn = 134, /*!< 134 [Active] UDB Interrupt #12 */ + udb_interrupts_13_IRQn = 135, /*!< 135 [Active] UDB Interrupt #13 */ + udb_interrupts_14_IRQn = 136, /*!< 136 [Active] UDB Interrupt #14 */ + udb_interrupts_15_IRQn = 137, /*!< 137 [Active] UDB Interrupt #15 */ + pass_interrupt_sar_IRQn = 138, /*!< 138 [Active] SAR ADC interrupt */ + audioss_interrupt_i2s_IRQn = 139, /*!< 139 [Active] I2S Audio interrupt */ + audioss_interrupt_pdm_IRQn = 140, /*!< 140 [Active] PDM/PCM Audio interrupt */ + profile_interrupt_IRQn = 141, /*!< 141 [Active] Energy Profiler interrupt */ + smif_interrupt_IRQn = 142, /*!< 142 [Active] Serial Memory Interface interrupt */ + usb_interrupt_hi_IRQn = 143, /*!< 143 [Active] USB Interrupt */ + usb_interrupt_med_IRQn = 144, /*!< 144 [Active] USB Interrupt */ + usb_interrupt_lo_IRQn = 145, /*!< 145 [Active] USB Interrupt */ + pass_interrupt_dacs_IRQn = 146, /*!< 146 [Active] Consolidated interrrupt for all DACs */ + disconnected_IRQn = 240 /*!< 240 Disconnected */ +} cy_en_intr_t; + +#endif + +/******************************************************************************* +* Processor and Core Peripheral Section +*******************************************************************************/ + +#if ((defined(__GNUC__) && (__ARM_ARCH == 6) && (__ARM_ARCH_6M__ == 1)) || \ + (defined(__ICCARM__) && (__CORE__ == __ARM6M__)) || \ + (defined(__ARMCC_VERSION) && (__TARGET_ARCH_THUMB == 3)) || \ + (defined(__ghs__) && defined(__CORE_CORTEXM0PLUS__))) + +/* Configuration of the ARM Cortex-M0+ Processor and Core Peripherals */ +#define __CM0PLUS_REV 0x0001U /*!< CM0PLUS Core Revision */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm0plus.h" /*!< ARM Cortex-M0+ processor and core peripherals */ + +#else + +/* Configuration of the ARM Cortex-M4 Processor and Core Peripherals */ +#define __CM4_REV 0x0001U /*!< CM4 Core Revision */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __FPU_PRESENT 1 /*!< FPU present or not */ +#define __CM0P_PRESENT 1 /*!< CM0P present or not */ + +/** \} Configuration_of_CMSIS */ + +#include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ + +#endif + +/* Memory Blocks */ +#define CY_ROM_BASE 0x00000000UL +#define CY_ROM_SIZE 0x00020000UL +#define CY_SRAM_BASE 0x08000000UL +#define CY_SRAM_SIZE 0x00048000UL +#define CY_FLASH_BASE 0x10000000UL +#define CY_FLASH_SIZE 0x00100000UL +#define CY_EM_EEPROM_BASE 0x14000000UL +#define CY_EM_EEPROM_SIZE 0x00008000UL +#define CY_XIP_BASE 0x18000000UL +#define CY_XIP_SIZE 0x08000000UL +#define CY_SFLASH_BASE 0x16000000UL +#define CY_SFLASH_SIZE 0x00008000UL +#define CY_EFUSE_BASE 0x402C0800UL +#define CY_EFUSE_SIZE 0x00000200UL + +#include "system_psoc6.h" /*!< PSoC 6 System */ + +/* IP List */ +#define CY_IP_MXTCPWM 1u +#define CY_IP_MXTCPWM_INSTANCES 2u +#define CY_IP_MXTCPWM_VERSION 1u +#define CY_IP_MXCSDV2 1u +#define CY_IP_MXCSDV2_INSTANCES 1u +#define CY_IP_MXCSDV2_VERSION 1u +#define CY_IP_MXLCD 1u +#define CY_IP_MXLCD_INSTANCES 1u +#define CY_IP_MXLCD_VERSION 1u +#define CY_IP_MXS40SRSS 1u +#define CY_IP_MXS40SRSS_INSTANCES 1u +#define CY_IP_MXS40SRSS_VERSION 1u +#define CY_IP_MXS40SRSS_RTC 1u +#define CY_IP_MXS40SRSS_RTC_INSTANCES 1u +#define CY_IP_MXS40SRSS_RTC_VERSION 1u +#define CY_IP_MXS40SRSS_MCWDT 1u +#define CY_IP_MXS40SRSS_MCWDT_INSTANCES 2u +#define CY_IP_MXS40SRSS_MCWDT_VERSION 1u +#define CY_IP_MXSCB 1u +#define CY_IP_MXSCB_INSTANCES 9u +#define CY_IP_MXSCB_VERSION 1u +#define CY_IP_MXPERI 1u +#define CY_IP_MXPERI_INSTANCES 1u +#define CY_IP_MXPERI_VERSION 1u +#define CY_IP_MXPERI_TR 1u +#define CY_IP_MXPERI_TR_INSTANCES 1u +#define CY_IP_MXPERI_TR_VERSION 1u +#define CY_IP_M4CPUSS 1u +#define CY_IP_M4CPUSS_INSTANCES 1u +#define CY_IP_M4CPUSS_VERSION 1u +#define CY_IP_M4CPUSS_DMA 1u +#define CY_IP_M4CPUSS_DMA_INSTANCES 2u +#define CY_IP_M4CPUSS_DMA_VERSION 1u +#define CY_IP_MXCRYPTO 1u +#define CY_IP_MXCRYPTO_INSTANCES 1u +#define CY_IP_MXCRYPTO_VERSION 1u +#define CY_IP_MXBLESS 1u +#define CY_IP_MXBLESS_INSTANCES 1u +#define CY_IP_MXBLESS_VERSION 1u +#define CY_IP_MXAUDIOSS 1u +#define CY_IP_MXAUDIOSS_INSTANCES 1u +#define CY_IP_MXAUDIOSS_VERSION 1u +#define CY_IP_MXLPCOMP 1u +#define CY_IP_MXLPCOMP_INSTANCES 1u +#define CY_IP_MXLPCOMP_VERSION 1u +#define CY_IP_MXS40PASS 1u +#define CY_IP_MXS40PASS_INSTANCES 1u +#define CY_IP_MXS40PASS_VERSION 1u +#define CY_IP_MXS40PASS_SAR 1u +#define CY_IP_MXS40PASS_SAR_INSTANCES 16u +#define CY_IP_MXS40PASS_SAR_VERSION 1u +#define CY_IP_MXS40PASS_CTDAC 1u +#define CY_IP_MXS40PASS_CTDAC_INSTANCES 1u +#define CY_IP_MXS40PASS_CTDAC_VERSION 1u +#define CY_IP_MXS40PASS_CTB 1u +#define CY_IP_MXS40PASS_CTB_INSTANCES 1u +#define CY_IP_MXS40PASS_CTB_VERSION 1u +#define CY_IP_MXSMIF 1u +#define CY_IP_MXSMIF_INSTANCES 1u +#define CY_IP_MXSMIF_VERSION 1u +#define CY_IP_MXS40IOSS 1u +#define CY_IP_MXS40IOSS_INSTANCES 1u +#define CY_IP_MXS40IOSS_VERSION 1u +#define CY_IP_MXEFUSE 1u +#define CY_IP_MXEFUSE_INSTANCES 1u +#define CY_IP_MXEFUSE_VERSION 1u +#define CY_IP_MXUDB 1u +#define CY_IP_MXUDB_INSTANCES 1u +#define CY_IP_MXUDB_VERSION 1u +#define CY_IP_MXPROFILE 1u +#define CY_IP_MXPROFILE_INSTANCES 1u +#define CY_IP_MXPROFILE_VERSION 1u + +#include "psoc6_01_config.h" +#include "gpio_psoc6_01_43_smt.h" + +#define CY_DEVICE_PSOC6ABLE2 +#define CY_SILICON_ID 0xE2F02100UL +#define CY_HF_CLK_MAX_FREQ 150000000UL + +#define CPUSS_FLASHC_PA_SIZE_LOG2 0x7UL + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_BASE 0x16000000UL +#define SFLASH ((SFLASH_Type*) SFLASH_BASE) /* 0x16000000 */ + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_BASE 0x40010000UL +#define PERI_PPU_GR_MMIO0_BASE 0x40015000UL +#define PERI_PPU_GR_MMIO1_BASE 0x40015040UL +#define PERI_PPU_GR_MMIO2_BASE 0x40015080UL +#define PERI_PPU_GR_MMIO3_BASE 0x400150C0UL +#define PERI_PPU_GR_MMIO4_BASE 0x40015100UL +#define PERI_PPU_GR_MMIO6_BASE 0x40015180UL +#define PERI_PPU_GR_MMIO9_BASE 0x40015240UL +#define PERI_PPU_GR_MMIO10_BASE 0x40015280UL +#define PERI_GR_PPU_SL_PERI_GR1_BASE 0x40100000UL +#define PERI_GR_PPU_SL_CRYPTO_BASE 0x40100040UL +#define PERI_GR_PPU_SL_PERI_GR2_BASE 0x40200000UL +#define PERI_GR_PPU_SL_CPUSS_BASE 0x40200040UL +#define PERI_GR_PPU_SL_FAULT_BASE 0x40200080UL +#define PERI_GR_PPU_SL_IPC_BASE 0x402000C0UL +#define PERI_GR_PPU_SL_PROT_BASE 0x40200100UL +#define PERI_GR_PPU_SL_FLASHC_BASE 0x40200140UL +#define PERI_GR_PPU_SL_SRSS_BASE 0x40200180UL +#define PERI_GR_PPU_SL_BACKUP_BASE 0x402001C0UL +#define PERI_GR_PPU_SL_DW0_BASE 0x40200200UL +#define PERI_GR_PPU_SL_DW1_BASE 0x40200240UL +#define PERI_GR_PPU_SL_EFUSE_BASE 0x40200300UL +#define PERI_GR_PPU_SL_PROFILE_BASE 0x40200340UL +#define PERI_GR_PPU_RG_IPC_STRUCT0_BASE 0x40201000UL +#define PERI_GR_PPU_RG_IPC_STRUCT1_BASE 0x40201040UL +#define PERI_GR_PPU_RG_IPC_STRUCT2_BASE 0x40201080UL +#define PERI_GR_PPU_RG_IPC_STRUCT3_BASE 0x402010C0UL +#define PERI_GR_PPU_RG_IPC_STRUCT4_BASE 0x40201100UL +#define PERI_GR_PPU_RG_IPC_STRUCT5_BASE 0x40201140UL +#define PERI_GR_PPU_RG_IPC_STRUCT6_BASE 0x40201180UL +#define PERI_GR_PPU_RG_IPC_STRUCT7_BASE 0x402011C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE 0x40201200UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE 0x40201240UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE 0x40201280UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE 0x402012C0UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE 0x40201300UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE 0x40201340UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE 0x40201380UL +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE 0x402013C0UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE 0x40201400UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE 0x40201440UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE 0x40201480UL +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE 0x402014C0UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE 0x40201500UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE 0x40201540UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE 0x40201580UL +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE 0x402015C0UL +#define PERI_GR_PPU_RG_SMPU_BASE 0x40201600UL +#define PERI_GR_PPU_RG_MPU_CM0P_BASE 0x40201640UL +#define PERI_GR_PPU_RG_MPU_CRYPTO_BASE 0x40201680UL +#define PERI_GR_PPU_RG_MPU_CM4_BASE 0x402016C0UL +#define PERI_GR_PPU_RG_MPU_TC_BASE 0x40201700UL +#define PERI_GR_PPU_SL_PERI_GR3_BASE 0x40300000UL +#define PERI_GR_PPU_SL_HSIOM_BASE 0x40300040UL +#define PERI_GR_PPU_SL_GPIO_BASE 0x40300080UL +#define PERI_GR_PPU_SL_SMARTIO_BASE 0x403000C0UL +#define PERI_GR_PPU_SL_UDB_BASE 0x40300100UL +#define PERI_GR_PPU_SL_LPCOMP_BASE 0x40300140UL +#define PERI_GR_PPU_SL_CSD_BASE 0x40300180UL +#define PERI_GR_PPU_SL_TCPWM0_BASE 0x40300200UL +#define PERI_GR_PPU_SL_TCPWM1_BASE 0x40300240UL +#define PERI_GR_PPU_SL_LCD_BASE 0x40300280UL +#define PERI_GR_PPU_SL_BLE_BASE 0x403002C0UL +#define PERI_GR_PPU_SL_USBFS_BASE 0x40300300UL +#define PERI_GR_PPU_SL_PERI_GR4_BASE 0x40400000UL +#define PERI_GR_PPU_SL_SMIF_BASE 0x40400080UL +#define PERI_GR_PPU_SL_PERI_GR6_BASE 0x40600000UL +#define PERI_GR_PPU_SL_SCB0_BASE 0x40600040UL +#define PERI_GR_PPU_SL_SCB1_BASE 0x40600080UL +#define PERI_GR_PPU_SL_SCB2_BASE 0x406000C0UL +#define PERI_GR_PPU_SL_SCB3_BASE 0x40600100UL +#define PERI_GR_PPU_SL_SCB4_BASE 0x40600140UL +#define PERI_GR_PPU_SL_SCB5_BASE 0x40600180UL +#define PERI_GR_PPU_SL_SCB6_BASE 0x406001C0UL +#define PERI_GR_PPU_SL_SCB7_BASE 0x40600200UL +#define PERI_GR_PPU_SL_SCB8_BASE 0x40600240UL +#define PERI_GR_PPU_SL_PERI_GR9_BASE 0x41000000UL +#define PERI_GR_PPU_SL_PASS_BASE 0x41000040UL +#define PERI_GR_PPU_SL_PERI_GR10_BASE 0x42A00000UL +#define PERI_GR_PPU_SL_I2S_BASE 0x42A00040UL +#define PERI_GR_PPU_SL_PDM_BASE 0x42A00080UL +#define PERI ((PERI_Type*) PERI_BASE) /* 0x40010000 */ +#define PERI_GR0 ((PERI_GR_Type*) &PERI->GR[0]) /* 0x40010000 */ +#define PERI_GR1 ((PERI_GR_Type*) &PERI->GR[1]) /* 0x40010040 */ +#define PERI_GR2 ((PERI_GR_Type*) &PERI->GR[2]) /* 0x40010080 */ +#define PERI_GR3 ((PERI_GR_Type*) &PERI->GR[3]) /* 0x400100C0 */ +#define PERI_GR4 ((PERI_GR_Type*) &PERI->GR[4]) /* 0x40010100 */ +#define PERI_GR6 ((PERI_GR_Type*) &PERI->GR[6]) /* 0x40010180 */ +#define PERI_GR9 ((PERI_GR_Type*) &PERI->GR[9]) /* 0x40010240 */ +#define PERI_GR10 ((PERI_GR_Type*) &PERI->GR[10]) /* 0x40010280 */ +#define PERI_TR_GR0 ((PERI_TR_GR_Type*) &PERI->TR_GR[0]) /* 0x40012000 */ +#define PERI_TR_GR1 ((PERI_TR_GR_Type*) &PERI->TR_GR[1]) /* 0x40012200 */ +#define PERI_TR_GR2 ((PERI_TR_GR_Type*) &PERI->TR_GR[2]) /* 0x40012400 */ +#define PERI_TR_GR3 ((PERI_TR_GR_Type*) &PERI->TR_GR[3]) /* 0x40012600 */ +#define PERI_TR_GR4 ((PERI_TR_GR_Type*) &PERI->TR_GR[4]) /* 0x40012800 */ +#define PERI_TR_GR5 ((PERI_TR_GR_Type*) &PERI->TR_GR[5]) /* 0x40012A00 */ +#define PERI_TR_GR6 ((PERI_TR_GR_Type*) &PERI->TR_GR[6]) /* 0x40012C00 */ +#define PERI_TR_GR7 ((PERI_TR_GR_Type*) &PERI->TR_GR[7]) /* 0x40012E00 */ +#define PERI_TR_GR8 ((PERI_TR_GR_Type*) &PERI->TR_GR[8]) /* 0x40013000 */ +#define PERI_TR_GR9 ((PERI_TR_GR_Type*) &PERI->TR_GR[9]) /* 0x40013200 */ +#define PERI_TR_GR10 ((PERI_TR_GR_Type*) &PERI->TR_GR[10]) /* 0x40013400 */ +#define PERI_TR_GR11 ((PERI_TR_GR_Type*) &PERI->TR_GR[11]) /* 0x40013600 */ +#define PERI_TR_GR12 ((PERI_TR_GR_Type*) &PERI->TR_GR[12]) /* 0x40013800 */ +#define PERI_TR_GR13 ((PERI_TR_GR_Type*) &PERI->TR_GR[13]) /* 0x40013A00 */ +#define PERI_TR_GR14 ((PERI_TR_GR_Type*) &PERI->TR_GR[14]) /* 0x40013C00 */ +#define PERI_PPU_PR0 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[0]) /* 0x40014000 */ +#define PERI_PPU_PR1 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[1]) /* 0x40014040 */ +#define PERI_PPU_PR2 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[2]) /* 0x40014080 */ +#define PERI_PPU_PR3 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[3]) /* 0x400140C0 */ +#define PERI_PPU_PR4 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[4]) /* 0x40014100 */ +#define PERI_PPU_PR5 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[5]) /* 0x40014140 */ +#define PERI_PPU_PR6 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[6]) /* 0x40014180 */ +#define PERI_PPU_PR7 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[7]) /* 0x400141C0 */ +#define PERI_PPU_PR8 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[8]) /* 0x40014200 */ +#define PERI_PPU_PR9 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[9]) /* 0x40014240 */ +#define PERI_PPU_PR10 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[10]) /* 0x40014280 */ +#define PERI_PPU_PR11 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[11]) /* 0x400142C0 */ +#define PERI_PPU_PR12 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[12]) /* 0x40014300 */ +#define PERI_PPU_PR13 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[13]) /* 0x40014340 */ +#define PERI_PPU_PR14 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[14]) /* 0x40014380 */ +#define PERI_PPU_PR15 ((PERI_PPU_PR_Type*) &PERI->PPU_PR[15]) /* 0x400143C0 */ +#define PERI_PPU_GR0 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[0]) /* 0x40015000 */ +#define PERI_PPU_GR1 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[1]) /* 0x40015040 */ +#define PERI_PPU_GR2 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[2]) /* 0x40015080 */ +#define PERI_PPU_GR3 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[3]) /* 0x400150C0 */ +#define PERI_PPU_GR4 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[4]) /* 0x40015100 */ +#define PERI_PPU_GR6 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[6]) /* 0x40015180 */ +#define PERI_PPU_GR9 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[9]) /* 0x40015240 */ +#define PERI_PPU_GR10 ((PERI_PPU_GR_Type*) &PERI->PPU_GR[10]) /* 0x40015280 */ +#define PERI_PPU_GR_MMIO0 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO0_BASE) /* 0x40015000 */ +#define PERI_PPU_GR_MMIO1 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO1_BASE) /* 0x40015040 */ +#define PERI_PPU_GR_MMIO2 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO2_BASE) /* 0x40015080 */ +#define PERI_PPU_GR_MMIO3 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO3_BASE) /* 0x400150C0 */ +#define PERI_PPU_GR_MMIO4 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO4_BASE) /* 0x40015100 */ +#define PERI_PPU_GR_MMIO6 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO6_BASE) /* 0x40015180 */ +#define PERI_PPU_GR_MMIO9 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO9_BASE) /* 0x40015240 */ +#define PERI_PPU_GR_MMIO10 ((PERI_PPU_GR_Type*) PERI_PPU_GR_MMIO10_BASE) /* 0x40015280 */ +#define PERI_GR_PPU_SL_PERI_GR1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR1_BASE) /* 0x40100000 */ +#define PERI_GR_PPU_SL_CRYPTO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CRYPTO_BASE) /* 0x40100040 */ +#define PERI_GR_PPU_SL_PERI_GR2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR2_BASE) /* 0x40200000 */ +#define PERI_GR_PPU_SL_CPUSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CPUSS_BASE) /* 0x40200040 */ +#define PERI_GR_PPU_SL_FAULT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FAULT_BASE) /* 0x40200080 */ +#define PERI_GR_PPU_SL_IPC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_IPC_BASE) /* 0x402000C0 */ +#define PERI_GR_PPU_SL_PROT ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROT_BASE) /* 0x40200100 */ +#define PERI_GR_PPU_SL_FLASHC ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_FLASHC_BASE) /* 0x40200140 */ +#define PERI_GR_PPU_SL_SRSS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SRSS_BASE) /* 0x40200180 */ +#define PERI_GR_PPU_SL_BACKUP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BACKUP_BASE) /* 0x402001C0 */ +#define PERI_GR_PPU_SL_DW0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW0_BASE) /* 0x40200200 */ +#define PERI_GR_PPU_SL_DW1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_DW1_BASE) /* 0x40200240 */ +#define PERI_GR_PPU_SL_EFUSE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_EFUSE_BASE) /* 0x40200300 */ +#define PERI_GR_PPU_SL_PROFILE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PROFILE_BASE) /* 0x40200340 */ +#define PERI_GR_PPU_RG_IPC_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT0_BASE) /* 0x40201000 */ +#define PERI_GR_PPU_RG_IPC_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT1_BASE) /* 0x40201040 */ +#define PERI_GR_PPU_RG_IPC_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT2_BASE) /* 0x40201080 */ +#define PERI_GR_PPU_RG_IPC_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT3_BASE) /* 0x402010C0 */ +#define PERI_GR_PPU_RG_IPC_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT4_BASE) /* 0x40201100 */ +#define PERI_GR_PPU_RG_IPC_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT5_BASE) /* 0x40201140 */ +#define PERI_GR_PPU_RG_IPC_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT6_BASE) /* 0x40201180 */ +#define PERI_GR_PPU_RG_IPC_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_STRUCT7_BASE) /* 0x402011C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT0_BASE) /* 0x40201200 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT1_BASE) /* 0x40201240 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT2_BASE) /* 0x40201280 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT3_BASE) /* 0x402012C0 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT4_BASE) /* 0x40201300 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT5 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT5_BASE) /* 0x40201340 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT6 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT6_BASE) /* 0x40201380 */ +#define PERI_GR_PPU_RG_IPC_INTR_STRUCT7 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_IPC_INTR_STRUCT7_BASE) /* 0x402013C0 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT0_BASE) /* 0x40201400 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT1_BASE) /* 0x40201440 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT2_BASE) /* 0x40201480 */ +#define PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW0_DW_CH_STRUCT3_BASE) /* 0x402014C0 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT0_BASE) /* 0x40201500 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT1_BASE) /* 0x40201540 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT2_BASE) /* 0x40201580 */ +#define PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_DW1_DW_CH_STRUCT3_BASE) /* 0x402015C0 */ +#define PERI_GR_PPU_RG_SMPU ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_SMPU_BASE) /* 0x40201600 */ +#define PERI_GR_PPU_RG_MPU_CM0P ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM0P_BASE) /* 0x40201640 */ +#define PERI_GR_PPU_RG_MPU_CRYPTO ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CRYPTO_BASE) /* 0x40201680 */ +#define PERI_GR_PPU_RG_MPU_CM4 ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_CM4_BASE) /* 0x402016C0 */ +#define PERI_GR_PPU_RG_MPU_TC ((PERI_GR_PPU_RG_Type*) PERI_GR_PPU_RG_MPU_TC_BASE) /* 0x40201700 */ +#define PERI_GR_PPU_SL_PERI_GR3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR3_BASE) /* 0x40300000 */ +#define PERI_GR_PPU_SL_HSIOM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_HSIOM_BASE) /* 0x40300040 */ +#define PERI_GR_PPU_SL_GPIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_GPIO_BASE) /* 0x40300080 */ +#define PERI_GR_PPU_SL_SMARTIO ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMARTIO_BASE) /* 0x403000C0 */ +#define PERI_GR_PPU_SL_UDB ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_UDB_BASE) /* 0x40300100 */ +#define PERI_GR_PPU_SL_LPCOMP ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LPCOMP_BASE) /* 0x40300140 */ +#define PERI_GR_PPU_SL_CSD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_CSD_BASE) /* 0x40300180 */ +#define PERI_GR_PPU_SL_TCPWM0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM0_BASE) /* 0x40300200 */ +#define PERI_GR_PPU_SL_TCPWM1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_TCPWM1_BASE) /* 0x40300240 */ +#define PERI_GR_PPU_SL_LCD ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_LCD_BASE) /* 0x40300280 */ +#define PERI_GR_PPU_SL_BLE ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_BLE_BASE) /* 0x403002C0 */ +#define PERI_GR_PPU_SL_USBFS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_USBFS_BASE) /* 0x40300300 */ +#define PERI_GR_PPU_SL_PERI_GR4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR4_BASE) /* 0x40400000 */ +#define PERI_GR_PPU_SL_SMIF ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SMIF_BASE) /* 0x40400080 */ +#define PERI_GR_PPU_SL_PERI_GR6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR6_BASE) /* 0x40600000 */ +#define PERI_GR_PPU_SL_SCB0 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB0_BASE) /* 0x40600040 */ +#define PERI_GR_PPU_SL_SCB1 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB1_BASE) /* 0x40600080 */ +#define PERI_GR_PPU_SL_SCB2 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB2_BASE) /* 0x406000C0 */ +#define PERI_GR_PPU_SL_SCB3 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB3_BASE) /* 0x40600100 */ +#define PERI_GR_PPU_SL_SCB4 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB4_BASE) /* 0x40600140 */ +#define PERI_GR_PPU_SL_SCB5 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB5_BASE) /* 0x40600180 */ +#define PERI_GR_PPU_SL_SCB6 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB6_BASE) /* 0x406001C0 */ +#define PERI_GR_PPU_SL_SCB7 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB7_BASE) /* 0x40600200 */ +#define PERI_GR_PPU_SL_SCB8 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_SCB8_BASE) /* 0x40600240 */ +#define PERI_GR_PPU_SL_PERI_GR9 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR9_BASE) /* 0x41000000 */ +#define PERI_GR_PPU_SL_PASS ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PASS_BASE) /* 0x41000040 */ +#define PERI_GR_PPU_SL_PERI_GR10 ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PERI_GR10_BASE) /* 0x42A00000 */ +#define PERI_GR_PPU_SL_I2S ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_I2S_BASE) /* 0x42A00040 */ +#define PERI_GR_PPU_SL_PDM ((PERI_GR_PPU_SL_Type*) PERI_GR_PPU_SL_PDM_BASE) /* 0x42A00080 */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_BASE 0x40110000UL +#define CRYPTO ((CRYPTO_Type*) CRYPTO_BASE) /* 0x40110000 */ + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_BASE 0x40210000UL +#define CPUSS ((CPUSS_Type*) CPUSS_BASE) /* 0x40210000 */ + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_BASE 0x40220000UL +#define FAULT ((FAULT_Type*) FAULT_BASE) /* 0x40220000 */ +#define FAULT_STRUCT0 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[0]) /* 0x40220000 */ +#define FAULT_STRUCT1 ((FAULT_STRUCT_Type*) &FAULT->STRUCT[1]) /* 0x40220100 */ + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_BASE 0x40230000UL +#define IPC ((IPC_Type*) IPC_BASE) /* 0x40230000 */ +#define IPC_STRUCT0 ((IPC_STRUCT_Type*) &IPC->STRUCT[0]) /* 0x40230000 */ +#define IPC_STRUCT1 ((IPC_STRUCT_Type*) &IPC->STRUCT[1]) /* 0x40230020 */ +#define IPC_STRUCT2 ((IPC_STRUCT_Type*) &IPC->STRUCT[2]) /* 0x40230040 */ +#define IPC_STRUCT3 ((IPC_STRUCT_Type*) &IPC->STRUCT[3]) /* 0x40230060 */ +#define IPC_STRUCT4 ((IPC_STRUCT_Type*) &IPC->STRUCT[4]) /* 0x40230080 */ +#define IPC_STRUCT5 ((IPC_STRUCT_Type*) &IPC->STRUCT[5]) /* 0x402300A0 */ +#define IPC_STRUCT6 ((IPC_STRUCT_Type*) &IPC->STRUCT[6]) /* 0x402300C0 */ +#define IPC_STRUCT7 ((IPC_STRUCT_Type*) &IPC->STRUCT[7]) /* 0x402300E0 */ +#define IPC_STRUCT8 ((IPC_STRUCT_Type*) &IPC->STRUCT[8]) /* 0x40230100 */ +#define IPC_STRUCT9 ((IPC_STRUCT_Type*) &IPC->STRUCT[9]) /* 0x40230120 */ +#define IPC_STRUCT10 ((IPC_STRUCT_Type*) &IPC->STRUCT[10]) /* 0x40230140 */ +#define IPC_STRUCT11 ((IPC_STRUCT_Type*) &IPC->STRUCT[11]) /* 0x40230160 */ +#define IPC_STRUCT12 ((IPC_STRUCT_Type*) &IPC->STRUCT[12]) /* 0x40230180 */ +#define IPC_STRUCT13 ((IPC_STRUCT_Type*) &IPC->STRUCT[13]) /* 0x402301A0 */ +#define IPC_STRUCT14 ((IPC_STRUCT_Type*) &IPC->STRUCT[14]) /* 0x402301C0 */ +#define IPC_STRUCT15 ((IPC_STRUCT_Type*) &IPC->STRUCT[15]) /* 0x402301E0 */ +#define IPC_INTR_STRUCT0 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[0]) /* 0x40231000 */ +#define IPC_INTR_STRUCT1 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[1]) /* 0x40231020 */ +#define IPC_INTR_STRUCT2 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[2]) /* 0x40231040 */ +#define IPC_INTR_STRUCT3 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[3]) /* 0x40231060 */ +#define IPC_INTR_STRUCT4 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[4]) /* 0x40231080 */ +#define IPC_INTR_STRUCT5 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[5]) /* 0x402310A0 */ +#define IPC_INTR_STRUCT6 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[6]) /* 0x402310C0 */ +#define IPC_INTR_STRUCT7 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[7]) /* 0x402310E0 */ +#define IPC_INTR_STRUCT8 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[8]) /* 0x40231100 */ +#define IPC_INTR_STRUCT9 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[9]) /* 0x40231120 */ +#define IPC_INTR_STRUCT10 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[10]) /* 0x40231140 */ +#define IPC_INTR_STRUCT11 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[11]) /* 0x40231160 */ +#define IPC_INTR_STRUCT12 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[12]) /* 0x40231180 */ +#define IPC_INTR_STRUCT13 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[13]) /* 0x402311A0 */ +#define IPC_INTR_STRUCT14 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[14]) /* 0x402311C0 */ +#define IPC_INTR_STRUCT15 ((IPC_INTR_STRUCT_Type*) &IPC->INTR_STRUCT[15]) /* 0x402311E0 */ + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_BASE 0x40240000UL +#define PROT ((PROT_Type*) PROT_BASE) /* 0x40240000 */ +#define PROT_SMPU_SMPU_STRUCT0 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[0]) /* 0x40242000 */ +#define PROT_SMPU_SMPU_STRUCT1 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[1]) /* 0x40242040 */ +#define PROT_SMPU_SMPU_STRUCT2 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[2]) /* 0x40242080 */ +#define PROT_SMPU_SMPU_STRUCT3 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[3]) /* 0x402420C0 */ +#define PROT_SMPU_SMPU_STRUCT4 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[4]) /* 0x40242100 */ +#define PROT_SMPU_SMPU_STRUCT5 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[5]) /* 0x40242140 */ +#define PROT_SMPU_SMPU_STRUCT6 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[6]) /* 0x40242180 */ +#define PROT_SMPU_SMPU_STRUCT7 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[7]) /* 0x402421C0 */ +#define PROT_SMPU_SMPU_STRUCT8 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[8]) /* 0x40242200 */ +#define PROT_SMPU_SMPU_STRUCT9 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[9]) /* 0x40242240 */ +#define PROT_SMPU_SMPU_STRUCT10 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[10]) /* 0x40242280 */ +#define PROT_SMPU_SMPU_STRUCT11 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[11]) /* 0x402422C0 */ +#define PROT_SMPU_SMPU_STRUCT12 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[12]) /* 0x40242300 */ +#define PROT_SMPU_SMPU_STRUCT13 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[13]) /* 0x40242340 */ +#define PROT_SMPU_SMPU_STRUCT14 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[14]) /* 0x40242380 */ +#define PROT_SMPU_SMPU_STRUCT15 ((PROT_SMPU_SMPU_STRUCT_Type*) &PROT->SMPU.SMPU_STRUCT[15]) /* 0x402423C0 */ +#define PROT_SMPU ((PROT_SMPU_Type*) &PROT->SMPU) /* 0x40240000 */ +#define PROT_MPU1_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[0]) /* 0x40244600 */ +#define PROT_MPU1_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[1]) /* 0x40244620 */ +#define PROT_MPU1_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[2]) /* 0x40244640 */ +#define PROT_MPU1_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[3]) /* 0x40244660 */ +#define PROT_MPU1_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[4]) /* 0x40244680 */ +#define PROT_MPU1_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[5]) /* 0x402446A0 */ +#define PROT_MPU1_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[6]) /* 0x402446C0 */ +#define PROT_MPU1_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[1].MPU_STRUCT[7]) /* 0x402446E0 */ +#define PROT_MPU15_MPU_STRUCT0 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[0]) /* 0x40247E00 */ +#define PROT_MPU15_MPU_STRUCT1 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[1]) /* 0x40247E20 */ +#define PROT_MPU15_MPU_STRUCT2 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[2]) /* 0x40247E40 */ +#define PROT_MPU15_MPU_STRUCT3 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[3]) /* 0x40247E60 */ +#define PROT_MPU15_MPU_STRUCT4 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[4]) /* 0x40247E80 */ +#define PROT_MPU15_MPU_STRUCT5 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[5]) /* 0x40247EA0 */ +#define PROT_MPU15_MPU_STRUCT6 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[6]) /* 0x40247EC0 */ +#define PROT_MPU15_MPU_STRUCT7 ((PROT_MPU_MPU_STRUCT_Type*) &PROT->CYMPU[15].MPU_STRUCT[7]) /* 0x40247EE0 */ +#define PROT_MPU0 ((PROT_MPU_Type*) &PROT->CYMPU[0]) /* 0x40244000 */ +#define PROT_MPU1 ((PROT_MPU_Type*) &PROT->CYMPU[1]) /* 0x40244400 */ +#define PROT_MPU2 ((PROT_MPU_Type*) &PROT->CYMPU[2]) /* 0x40244800 */ +#define PROT_MPU3 ((PROT_MPU_Type*) &PROT->CYMPU[3]) /* 0x40244C00 */ +#define PROT_MPU4 ((PROT_MPU_Type*) &PROT->CYMPU[4]) /* 0x40245000 */ +#define PROT_MPU5 ((PROT_MPU_Type*) &PROT->CYMPU[5]) /* 0x40245400 */ +#define PROT_MPU6 ((PROT_MPU_Type*) &PROT->CYMPU[6]) /* 0x40245800 */ +#define PROT_MPU7 ((PROT_MPU_Type*) &PROT->CYMPU[7]) /* 0x40245C00 */ +#define PROT_MPU8 ((PROT_MPU_Type*) &PROT->CYMPU[8]) /* 0x40246000 */ +#define PROT_MPU9 ((PROT_MPU_Type*) &PROT->CYMPU[9]) /* 0x40246400 */ +#define PROT_MPU10 ((PROT_MPU_Type*) &PROT->CYMPU[10]) /* 0x40246800 */ +#define PROT_MPU11 ((PROT_MPU_Type*) &PROT->CYMPU[11]) /* 0x40246C00 */ +#define PROT_MPU12 ((PROT_MPU_Type*) &PROT->CYMPU[12]) /* 0x40247000 */ +#define PROT_MPU13 ((PROT_MPU_Type*) &PROT->CYMPU[13]) /* 0x40247400 */ +#define PROT_MPU14 ((PROT_MPU_Type*) &PROT->CYMPU[14]) /* 0x40247800 */ +#define PROT_MPU15 ((PROT_MPU_Type*) &PROT->CYMPU[15]) /* 0x40247C00 */ + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_BASE 0x40250000UL +#define FLASHC ((FLASHC_Type*) FLASHC_BASE) /* 0x40250000 */ +#define FLASHC_FM_CTL ((FLASHC_FM_CTL_Type*) &FLASHC->FM_CTL) /* 0x4025F000 */ + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define SRSS_BASE 0x40260000UL +#define SRSS ((SRSS_Type*) SRSS_BASE) /* 0x40260000 */ +#define MCWDT_STRUCT0 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[0]) /* 0x40260200 */ +#define MCWDT_STRUCT1 ((MCWDT_STRUCT_Type*) &SRSS->MCWDT_STRUCT[1]) /* 0x40260240 */ + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_BASE 0x40270000UL +#define BACKUP ((BACKUP_Type*) BACKUP_BASE) /* 0x40270000 */ + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW0_BASE 0x40280000UL +#define DW1_BASE 0x40281000UL +#define DW0 ((DW_Type*) DW0_BASE) /* 0x40280000 */ +#define DW1 ((DW_Type*) DW1_BASE) /* 0x40281000 */ +#define DW0_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[0]) /* 0x40280800 */ +#define DW0_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[1]) /* 0x40280820 */ +#define DW0_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[2]) /* 0x40280840 */ +#define DW0_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[3]) /* 0x40280860 */ +#define DW0_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[4]) /* 0x40280880 */ +#define DW0_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[5]) /* 0x402808A0 */ +#define DW0_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[6]) /* 0x402808C0 */ +#define DW0_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[7]) /* 0x402808E0 */ +#define DW0_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[8]) /* 0x40280900 */ +#define DW0_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[9]) /* 0x40280920 */ +#define DW0_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[10]) /* 0x40280940 */ +#define DW0_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[11]) /* 0x40280960 */ +#define DW0_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[12]) /* 0x40280980 */ +#define DW0_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[13]) /* 0x402809A0 */ +#define DW0_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[14]) /* 0x402809C0 */ +#define DW0_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW0->CH_STRUCT[15]) /* 0x402809E0 */ +#define DW1_CH_STRUCT0 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[0]) /* 0x40281800 */ +#define DW1_CH_STRUCT1 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[1]) /* 0x40281820 */ +#define DW1_CH_STRUCT2 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[2]) /* 0x40281840 */ +#define DW1_CH_STRUCT3 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[3]) /* 0x40281860 */ +#define DW1_CH_STRUCT4 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[4]) /* 0x40281880 */ +#define DW1_CH_STRUCT5 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[5]) /* 0x402818A0 */ +#define DW1_CH_STRUCT6 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[6]) /* 0x402818C0 */ +#define DW1_CH_STRUCT7 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[7]) /* 0x402818E0 */ +#define DW1_CH_STRUCT8 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[8]) /* 0x40281900 */ +#define DW1_CH_STRUCT9 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[9]) /* 0x40281920 */ +#define DW1_CH_STRUCT10 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[10]) /* 0x40281940 */ +#define DW1_CH_STRUCT11 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[11]) /* 0x40281960 */ +#define DW1_CH_STRUCT12 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[12]) /* 0x40281980 */ +#define DW1_CH_STRUCT13 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[13]) /* 0x402819A0 */ +#define DW1_CH_STRUCT14 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[14]) /* 0x402819C0 */ +#define DW1_CH_STRUCT15 ((DW_CH_STRUCT_Type*) &DW1->CH_STRUCT[15]) /* 0x402819E0 */ + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_BASE 0x402C0000UL +#define EFUSE ((EFUSE_Type*) EFUSE_BASE) /* 0x402C0000 */ + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_BASE 0x402D0000UL +#define PROFILE ((PROFILE_Type*) PROFILE_BASE) /* 0x402D0000 */ +#define PROFILE_CNT_STRUCT0 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[0]) /* 0x402D0800 */ +#define PROFILE_CNT_STRUCT1 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[1]) /* 0x402D0810 */ +#define PROFILE_CNT_STRUCT2 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[2]) /* 0x402D0820 */ +#define PROFILE_CNT_STRUCT3 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[3]) /* 0x402D0830 */ +#define PROFILE_CNT_STRUCT4 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[4]) /* 0x402D0840 */ +#define PROFILE_CNT_STRUCT5 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[5]) /* 0x402D0850 */ +#define PROFILE_CNT_STRUCT6 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[6]) /* 0x402D0860 */ +#define PROFILE_CNT_STRUCT7 ((PROFILE_CNT_STRUCT_Type*) &PROFILE->CNT_STRUCT[7]) /* 0x402D0870 */ + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_BASE 0x40310000UL +#define HSIOM ((HSIOM_Type*) HSIOM_BASE) /* 0x40310000 */ +#define HSIOM_PRT0 ((HSIOM_PRT_Type*) &HSIOM->PRT[0]) /* 0x40310000 */ +#define HSIOM_PRT1 ((HSIOM_PRT_Type*) &HSIOM->PRT[1]) /* 0x40310010 */ +#define HSIOM_PRT2 ((HSIOM_PRT_Type*) &HSIOM->PRT[2]) /* 0x40310020 */ +#define HSIOM_PRT3 ((HSIOM_PRT_Type*) &HSIOM->PRT[3]) /* 0x40310030 */ +#define HSIOM_PRT4 ((HSIOM_PRT_Type*) &HSIOM->PRT[4]) /* 0x40310040 */ +#define HSIOM_PRT5 ((HSIOM_PRT_Type*) &HSIOM->PRT[5]) /* 0x40310050 */ +#define HSIOM_PRT6 ((HSIOM_PRT_Type*) &HSIOM->PRT[6]) /* 0x40310060 */ +#define HSIOM_PRT7 ((HSIOM_PRT_Type*) &HSIOM->PRT[7]) /* 0x40310070 */ +#define HSIOM_PRT8 ((HSIOM_PRT_Type*) &HSIOM->PRT[8]) /* 0x40310080 */ +#define HSIOM_PRT9 ((HSIOM_PRT_Type*) &HSIOM->PRT[9]) /* 0x40310090 */ +#define HSIOM_PRT10 ((HSIOM_PRT_Type*) &HSIOM->PRT[10]) /* 0x403100A0 */ +#define HSIOM_PRT11 ((HSIOM_PRT_Type*) &HSIOM->PRT[11]) /* 0x403100B0 */ +#define HSIOM_PRT12 ((HSIOM_PRT_Type*) &HSIOM->PRT[12]) /* 0x403100C0 */ +#define HSIOM_PRT13 ((HSIOM_PRT_Type*) &HSIOM->PRT[13]) /* 0x403100D0 */ +#define HSIOM_PRT14 ((HSIOM_PRT_Type*) &HSIOM->PRT[14]) /* 0x403100E0 */ + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_BASE 0x40320000UL +#define GPIO ((GPIO_Type*) GPIO_BASE) /* 0x40320000 */ +#define GPIO_PRT0 ((GPIO_PRT_Type*) &GPIO->PRT[0]) /* 0x40320000 */ +#define GPIO_PRT1 ((GPIO_PRT_Type*) &GPIO->PRT[1]) /* 0x40320080 */ +#define GPIO_PRT2 ((GPIO_PRT_Type*) &GPIO->PRT[2]) /* 0x40320100 */ +#define GPIO_PRT3 ((GPIO_PRT_Type*) &GPIO->PRT[3]) /* 0x40320180 */ +#define GPIO_PRT4 ((GPIO_PRT_Type*) &GPIO->PRT[4]) /* 0x40320200 */ +#define GPIO_PRT5 ((GPIO_PRT_Type*) &GPIO->PRT[5]) /* 0x40320280 */ +#define GPIO_PRT6 ((GPIO_PRT_Type*) &GPIO->PRT[6]) /* 0x40320300 */ +#define GPIO_PRT7 ((GPIO_PRT_Type*) &GPIO->PRT[7]) /* 0x40320380 */ +#define GPIO_PRT8 ((GPIO_PRT_Type*) &GPIO->PRT[8]) /* 0x40320400 */ +#define GPIO_PRT9 ((GPIO_PRT_Type*) &GPIO->PRT[9]) /* 0x40320480 */ +#define GPIO_PRT10 ((GPIO_PRT_Type*) &GPIO->PRT[10]) /* 0x40320500 */ +#define GPIO_PRT11 ((GPIO_PRT_Type*) &GPIO->PRT[11]) /* 0x40320580 */ +#define GPIO_PRT12 ((GPIO_PRT_Type*) &GPIO->PRT[12]) /* 0x40320600 */ +#define GPIO_PRT13 ((GPIO_PRT_Type*) &GPIO->PRT[13]) /* 0x40320680 */ +#define GPIO_PRT14 ((GPIO_PRT_Type*) &GPIO->PRT[14]) /* 0x40320700 */ + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_BASE 0x40330000UL +#define SMARTIO ((SMARTIO_Type*) SMARTIO_BASE) /* 0x40330000 */ +#define SMARTIO_PRT8 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[8]) /* 0x40330800 */ +#define SMARTIO_PRT9 ((SMARTIO_PRT_Type*) &SMARTIO->PRT[9]) /* 0x40330900 */ + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_BASE 0x40340000UL +#define UDB ((UDB_Type*) UDB_BASE) /* 0x40340000 */ +#define UDB_WRKONE ((UDB_WRKONE_Type*) &UDB->WRKONE) /* 0x40340000 */ +#define UDB_WRKMULT ((UDB_WRKMULT_Type*) &UDB->WRKMULT) /* 0x40341000 */ +#define UDB_UDBPAIR0_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[0]) /* 0x40342000 */ +#define UDB_UDBPAIR0_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[0].UDBSNG[1]) /* 0x40342080 */ +#define UDB_UDBPAIR1_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[0]) /* 0x40342200 */ +#define UDB_UDBPAIR1_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[1].UDBSNG[1]) /* 0x40342280 */ +#define UDB_UDBPAIR2_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[0]) /* 0x40342400 */ +#define UDB_UDBPAIR2_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[2].UDBSNG[1]) /* 0x40342480 */ +#define UDB_UDBPAIR3_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[0]) /* 0x40342600 */ +#define UDB_UDBPAIR3_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[3].UDBSNG[1]) /* 0x40342680 */ +#define UDB_UDBPAIR4_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[0]) /* 0x40342800 */ +#define UDB_UDBPAIR4_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[4].UDBSNG[1]) /* 0x40342880 */ +#define UDB_UDBPAIR5_UDBSNG0 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[0]) /* 0x40342A00 */ +#define UDB_UDBPAIR5_UDBSNG1 ((UDB_UDBPAIR_UDBSNG_Type*) &UDB->UDBPAIR[5].UDBSNG[1]) /* 0x40342A80 */ +#define UDB_UDBPAIR0_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[0].ROUTE) /* 0x40342100 */ +#define UDB_UDBPAIR1_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[1].ROUTE) /* 0x40342300 */ +#define UDB_UDBPAIR2_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[2].ROUTE) /* 0x40342500 */ +#define UDB_UDBPAIR3_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[3].ROUTE) /* 0x40342700 */ +#define UDB_UDBPAIR4_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[4].ROUTE) /* 0x40342900 */ +#define UDB_UDBPAIR5_ROUTE ((UDB_UDBPAIR_ROUTE_Type*) &UDB->UDBPAIR[5].ROUTE) /* 0x40342B00 */ +#define UDB_UDBPAIR0 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[0]) /* 0x40342000 */ +#define UDB_UDBPAIR1 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[1]) /* 0x40342200 */ +#define UDB_UDBPAIR2 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[2]) /* 0x40342400 */ +#define UDB_UDBPAIR3 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[3]) /* 0x40342600 */ +#define UDB_UDBPAIR4 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[4]) /* 0x40342800 */ +#define UDB_UDBPAIR5 ((UDB_UDBPAIR_Type*) &UDB->UDBPAIR[5]) /* 0x40342A00 */ +#define UDB_DSI0 ((UDB_DSI_Type*) &UDB->DSI[0]) /* 0x40346000 */ +#define UDB_DSI1 ((UDB_DSI_Type*) &UDB->DSI[1]) /* 0x40346080 */ +#define UDB_DSI2 ((UDB_DSI_Type*) &UDB->DSI[2]) /* 0x40346100 */ +#define UDB_DSI3 ((UDB_DSI_Type*) &UDB->DSI[3]) /* 0x40346180 */ +#define UDB_DSI4 ((UDB_DSI_Type*) &UDB->DSI[4]) /* 0x40346200 */ +#define UDB_DSI5 ((UDB_DSI_Type*) &UDB->DSI[5]) /* 0x40346280 */ +#define UDB_DSI6 ((UDB_DSI_Type*) &UDB->DSI[6]) /* 0x40346300 */ +#define UDB_DSI7 ((UDB_DSI_Type*) &UDB->DSI[7]) /* 0x40346380 */ +#define UDB_DSI8 ((UDB_DSI_Type*) &UDB->DSI[8]) /* 0x40346400 */ +#define UDB_DSI9 ((UDB_DSI_Type*) &UDB->DSI[9]) /* 0x40346480 */ +#define UDB_DSI10 ((UDB_DSI_Type*) &UDB->DSI[10]) /* 0x40346500 */ +#define UDB_DSI11 ((UDB_DSI_Type*) &UDB->DSI[11]) /* 0x40346580 */ +#define UDB_PA0 ((UDB_PA_Type*) &UDB->PA[0]) /* 0x40347000 */ +#define UDB_PA1 ((UDB_PA_Type*) &UDB->PA[1]) /* 0x40347040 */ +#define UDB_PA2 ((UDB_PA_Type*) &UDB->PA[2]) /* 0x40347080 */ +#define UDB_PA3 ((UDB_PA_Type*) &UDB->PA[3]) /* 0x403470C0 */ +#define UDB_PA4 ((UDB_PA_Type*) &UDB->PA[4]) /* 0x40347100 */ +#define UDB_PA5 ((UDB_PA_Type*) &UDB->PA[5]) /* 0x40347140 */ +#define UDB_PA6 ((UDB_PA_Type*) &UDB->PA[6]) /* 0x40347180 */ +#define UDB_PA7 ((UDB_PA_Type*) &UDB->PA[7]) /* 0x403471C0 */ +#define UDB_PA8 ((UDB_PA_Type*) &UDB->PA[8]) /* 0x40347200 */ +#define UDB_PA9 ((UDB_PA_Type*) &UDB->PA[9]) /* 0x40347240 */ +#define UDB_PA10 ((UDB_PA_Type*) &UDB->PA[10]) /* 0x40347280 */ +#define UDB_PA11 ((UDB_PA_Type*) &UDB->PA[11]) /* 0x403472C0 */ +#define UDB_BCTL ((UDB_BCTL_Type*) &UDB->BCTL) /* 0x40347800 */ +#define UDB_UDBIF ((UDB_UDBIF_Type*) &UDB->UDBIF) /* 0x40347900 */ + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_BASE 0x40350000UL +#define LPCOMP ((LPCOMP_Type*) LPCOMP_BASE) /* 0x40350000 */ + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD0_BASE 0x40360000UL +#define CSD0 ((CSD_Type*) CSD0_BASE) /* 0x40360000 */ + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM0_BASE 0x40380000UL +#define TCPWM1_BASE 0x40390000UL +#define TCPWM0 ((TCPWM_Type*) TCPWM0_BASE) /* 0x40380000 */ +#define TCPWM1 ((TCPWM_Type*) TCPWM1_BASE) /* 0x40390000 */ +#define TCPWM0_CNT0 ((TCPWM_CNT_Type*) &TCPWM0->CNT[0]) /* 0x40380100 */ +#define TCPWM0_CNT1 ((TCPWM_CNT_Type*) &TCPWM0->CNT[1]) /* 0x40380140 */ +#define TCPWM0_CNT2 ((TCPWM_CNT_Type*) &TCPWM0->CNT[2]) /* 0x40380180 */ +#define TCPWM0_CNT3 ((TCPWM_CNT_Type*) &TCPWM0->CNT[3]) /* 0x403801C0 */ +#define TCPWM0_CNT4 ((TCPWM_CNT_Type*) &TCPWM0->CNT[4]) /* 0x40380200 */ +#define TCPWM0_CNT5 ((TCPWM_CNT_Type*) &TCPWM0->CNT[5]) /* 0x40380240 */ +#define TCPWM0_CNT6 ((TCPWM_CNT_Type*) &TCPWM0->CNT[6]) /* 0x40380280 */ +#define TCPWM0_CNT7 ((TCPWM_CNT_Type*) &TCPWM0->CNT[7]) /* 0x403802C0 */ +#define TCPWM1_CNT0 ((TCPWM_CNT_Type*) &TCPWM1->CNT[0]) /* 0x40390100 */ +#define TCPWM1_CNT1 ((TCPWM_CNT_Type*) &TCPWM1->CNT[1]) /* 0x40390140 */ +#define TCPWM1_CNT2 ((TCPWM_CNT_Type*) &TCPWM1->CNT[2]) /* 0x40390180 */ +#define TCPWM1_CNT3 ((TCPWM_CNT_Type*) &TCPWM1->CNT[3]) /* 0x403901C0 */ +#define TCPWM1_CNT4 ((TCPWM_CNT_Type*) &TCPWM1->CNT[4]) /* 0x40390200 */ +#define TCPWM1_CNT5 ((TCPWM_CNT_Type*) &TCPWM1->CNT[5]) /* 0x40390240 */ +#define TCPWM1_CNT6 ((TCPWM_CNT_Type*) &TCPWM1->CNT[6]) /* 0x40390280 */ +#define TCPWM1_CNT7 ((TCPWM_CNT_Type*) &TCPWM1->CNT[7]) /* 0x403902C0 */ +#define TCPWM1_CNT8 ((TCPWM_CNT_Type*) &TCPWM1->CNT[8]) /* 0x40390300 */ +#define TCPWM1_CNT9 ((TCPWM_CNT_Type*) &TCPWM1->CNT[9]) /* 0x40390340 */ +#define TCPWM1_CNT10 ((TCPWM_CNT_Type*) &TCPWM1->CNT[10]) /* 0x40390380 */ +#define TCPWM1_CNT11 ((TCPWM_CNT_Type*) &TCPWM1->CNT[11]) /* 0x403903C0 */ +#define TCPWM1_CNT12 ((TCPWM_CNT_Type*) &TCPWM1->CNT[12]) /* 0x40390400 */ +#define TCPWM1_CNT13 ((TCPWM_CNT_Type*) &TCPWM1->CNT[13]) /* 0x40390440 */ +#define TCPWM1_CNT14 ((TCPWM_CNT_Type*) &TCPWM1->CNT[14]) /* 0x40390480 */ +#define TCPWM1_CNT15 ((TCPWM_CNT_Type*) &TCPWM1->CNT[15]) /* 0x403904C0 */ +#define TCPWM1_CNT16 ((TCPWM_CNT_Type*) &TCPWM1->CNT[16]) /* 0x40390500 */ +#define TCPWM1_CNT17 ((TCPWM_CNT_Type*) &TCPWM1->CNT[17]) /* 0x40390540 */ +#define TCPWM1_CNT18 ((TCPWM_CNT_Type*) &TCPWM1->CNT[18]) /* 0x40390580 */ +#define TCPWM1_CNT19 ((TCPWM_CNT_Type*) &TCPWM1->CNT[19]) /* 0x403905C0 */ +#define TCPWM1_CNT20 ((TCPWM_CNT_Type*) &TCPWM1->CNT[20]) /* 0x40390600 */ +#define TCPWM1_CNT21 ((TCPWM_CNT_Type*) &TCPWM1->CNT[21]) /* 0x40390640 */ +#define TCPWM1_CNT22 ((TCPWM_CNT_Type*) &TCPWM1->CNT[22]) /* 0x40390680 */ +#define TCPWM1_CNT23 ((TCPWM_CNT_Type*) &TCPWM1->CNT[23]) /* 0x403906C0 */ + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD0_BASE 0x403B0000UL +#define LCD0 ((LCD_Type*) LCD0_BASE) /* 0x403B0000 */ + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_BASE 0x403C0000UL +#define BLE ((BLE_Type*) BLE_BASE) /* 0x403C0000 */ +#define BLE_RCB_RCBLL ((BLE_RCB_RCBLL_Type*) &BLE->RCB.RCBLL) /* 0x403C0100 */ +#define BLE_RCB ((BLE_RCB_Type*) &BLE->RCB) /* 0x403C0000 */ +#define BLE_BLELL ((BLE_BLELL_Type*) &BLE->BLELL) /* 0x403C1000 */ +#define BLE_BLESS ((BLE_BLESS_Type*) &BLE->BLESS) /* 0x403DF000 */ + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF0_BASE 0x40420000UL +#define SMIF0 ((SMIF_Type*) SMIF0_BASE) /* 0x40420000 */ +#define SMIF0_DEVICE0 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[0]) /* 0x40420800 */ +#define SMIF0_DEVICE1 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[1]) /* 0x40420880 */ +#define SMIF0_DEVICE2 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[2]) /* 0x40420900 */ +#define SMIF0_DEVICE3 ((SMIF_DEVICE_Type*) &SMIF0->DEVICE[3]) /* 0x40420980 */ + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB0_BASE 0x40610000UL +#define SCB1_BASE 0x40620000UL +#define SCB2_BASE 0x40630000UL +#define SCB3_BASE 0x40640000UL +#define SCB4_BASE 0x40650000UL +#define SCB5_BASE 0x40660000UL +#define SCB6_BASE 0x40670000UL +#define SCB7_BASE 0x40680000UL +#define SCB8_BASE 0x40690000UL +#define SCB0 ((CySCB_Type*) SCB0_BASE) /* 0x40610000 */ +#define SCB1 ((CySCB_Type*) SCB1_BASE) /* 0x40620000 */ +#define SCB2 ((CySCB_Type*) SCB2_BASE) /* 0x40630000 */ +#define SCB3 ((CySCB_Type*) SCB3_BASE) /* 0x40640000 */ +#define SCB4 ((CySCB_Type*) SCB4_BASE) /* 0x40650000 */ +#define SCB5 ((CySCB_Type*) SCB5_BASE) /* 0x40660000 */ +#define SCB6 ((CySCB_Type*) SCB6_BASE) /* 0x40670000 */ +#define SCB7 ((CySCB_Type*) SCB7_BASE) /* 0x40680000 */ +#define SCB8 ((CySCB_Type*) SCB8_BASE) /* 0x40690000 */ + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM0_BASE 0x41100000UL +#define CTBM0 ((CTBM_Type*) CTBM0_BASE) /* 0x41100000 */ + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC0_BASE 0x41140000UL +#define CTDAC0 ((CTDAC_Type*) CTDAC0_BASE) /* 0x41140000 */ + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_BASE 0x411D0000UL +#define SAR ((SAR_Type*) SAR_BASE) /* 0x411D0000 */ + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_BASE 0x411F0000UL +#define PASS ((PASS_Type*) PASS_BASE) /* 0x411F0000 */ +#define PASS_AREF ((PASS_AREF_Type*) &PASS->AREF) /* 0x411F0E00 */ + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S0_BASE 0x42A10000UL +#define I2S0 ((I2S_Type*) I2S0_BASE) /* 0x42A10000 */ + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM0_BASE 0x42A20000UL +#define PDM0 ((PDM_Type*) PDM0_BASE) /* 0x42A20000 */ + + +/* Backward compatibility definitions */ +#define CY_SRAM0_BASE CY_SRAM_BASE +#define CY_SRAM0_SIZE CY_SRAM_SIZE +#define I2S I2S0 +#define PDM PDM0 + +/** \} CYBLE-416045-02 */ + +#endif /* _CYBLE_416045_02_H_ */ + + +/* [] END OF FILE */ diff --git a/TESTS/mbed_hal/qspi/flash_configs/STM/DISCO_F413ZH/flash_config.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h similarity index 73% rename from TESTS/mbed_hal/qspi/flash_configs/STM/DISCO_F413ZH/flash_config.h rename to targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h index 67d8c317d60..684220204d0 100644 --- a/TESTS/mbed_hal/qspi/flash_configs/STM/DISCO_F413ZH/flash_config.h +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h @@ -1,5 +1,6 @@ -/* mbed Microcontroller Library - * Copyright (c) 2018-2018 ARM Limited +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,10 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#ifndef MBED_QSPI_FLASH_CONFIG_H -#define MBED_QSPI_FLASH_CONFIG_H -#include "../../N25Q128A_config.h" +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H +#include "cmsis.h" +#include "objects.h" -#endif // MBED_QSPI_FLASH_CONFIG_H +#endif diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble.h new file mode 100644 index 00000000000..4ca546e1119 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble.h @@ -0,0 +1,1837 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_104_m_csp_ble.h +* +* \brief +* PSoC6_01 device GPIO header for 104-M-CSP-BLE package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_104_M_CSP_BLE_H_ +#define _GPIO_PSOC6_01_104_M_CSP_BLE_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_CSP +#define CY_GPIO_PIN_COUNT 104u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24 /* Digital Active - peri.tr_io_input[27]:0 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_104_M_CSP_BLE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble_usb.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble_usb.h new file mode 100644 index 00000000000..2bdb72c85ea --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_104_m_csp_ble_usb.h @@ -0,0 +1,1831 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_104_m_csp_ble_usb.h +* +* \brief +* PSoC6_01 device GPIO header for 104-M-CSP-BLE-USB package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_104_M_CSP_BLE_USB_H_ +#define _GPIO_PSOC6_01_104_M_CSP_BLE_USB_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_CSP +#define CY_GPIO_PIN_COUNT 104u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24 /* Digital Active - peri.tr_io_input[27]:0 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_104_M_CSP_BLE_USB_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_ble.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_ble.h new file mode 100644 index 00000000000..504225d23f2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_ble.h @@ -0,0 +1,2016 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_116_bga_ble.h +* +* \brief +* PSoC6_01 device GPIO header for 116-BGA-BLE package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_116_BGA_BLE_H_ +#define _GPIO_PSOC6_01_116_BGA_BLE_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_BGA +#define CY_GPIO_PIN_COUNT 116u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS5_PORT 9u +#define PASS_CTB_PADS5_PIN 5u +#define PASS_CTB_PADS6_PORT 9u +#define PASS_CTB_PADS6_PIN 6u +#define PASS_CTB_PADS7_PORT 9u +#define PASS_CTB_PADS7_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:1 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1:0 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13 /* Digital Deep Sleep - lcd.seg[38]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_116_BGA_BLE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_usb.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_usb.h new file mode 100644 index 00000000000..6637ecb238e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_116_bga_usb.h @@ -0,0 +1,1968 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_116_bga_usb.h +* +* \brief +* PSoC6_01 device GPIO header for 116-BGA-USB package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_116_BGA_USB_H_ +#define _GPIO_PSOC6_01_116_BGA_USB_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_BGA +#define CY_GPIO_PIN_COUNT 116u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS5_PORT 9u +#define PASS_CTB_PADS5_PIN 5u +#define PASS_CTB_PADS6_PORT 9u +#define PASS_CTB_PADS6_PIN 6u +#define PASS_CTB_PADS7_PORT 9u +#define PASS_CTB_PADS7_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:1 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1:0 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13 /* Digital Deep Sleep - lcd.seg[38]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_116_BGA_USB_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga.h new file mode 100644 index 00000000000..779816a7160 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga.h @@ -0,0 +1,2542 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_124_bga.h +* +* \brief +* PSoC6_01 device GPIO header for 124-BGA package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_124_BGA_H_ +#define _GPIO_PSOC6_01_124_BGA_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_BGA +#define CY_GPIO_PIN_COUNT 124u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 2 (GPIO) */ +#define P2_0_PORT GPIO_PRT2 +#define P2_0_PIN 0u +#define P2_0_NUM 0u +#define P2_0_AMUXSEGMENT AMUXBUS_NOISY +#define P2_1_PORT GPIO_PRT2 +#define P2_1_PIN 1u +#define P2_1_NUM 1u +#define P2_1_AMUXSEGMENT AMUXBUS_NOISY +#define P2_2_PORT GPIO_PRT2 +#define P2_2_PIN 2u +#define P2_2_NUM 2u +#define P2_2_AMUXSEGMENT AMUXBUS_NOISY +#define P2_3_PORT GPIO_PRT2 +#define P2_3_PIN 3u +#define P2_3_NUM 3u +#define P2_3_AMUXSEGMENT AMUXBUS_NOISY +#define P2_4_PORT GPIO_PRT2 +#define P2_4_PIN 4u +#define P2_4_NUM 4u +#define P2_4_AMUXSEGMENT AMUXBUS_NOISY +#define P2_5_PORT GPIO_PRT2 +#define P2_5_PIN 5u +#define P2_5_NUM 5u +#define P2_5_AMUXSEGMENT AMUXBUS_NOISY +#define P2_6_PORT GPIO_PRT2 +#define P2_6_PIN 6u +#define P2_6_NUM 6u +#define P2_6_AMUXSEGMENT AMUXBUS_NOISY +#define P2_7_PORT GPIO_PRT2 +#define P2_7_PIN 7u +#define P2_7_NUM 7u +#define P2_7_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 3 (GPIO) */ +#define P3_0_PORT GPIO_PRT3 +#define P3_0_PIN 0u +#define P3_0_NUM 0u +#define P3_0_AMUXSEGMENT AMUXBUS_NOISY +#define P3_1_PORT GPIO_PRT3 +#define P3_1_PIN 1u +#define P3_1_NUM 1u +#define P3_1_AMUXSEGMENT AMUXBUS_NOISY +#define P3_2_PORT GPIO_PRT3 +#define P3_2_PIN 2u +#define P3_2_NUM 2u +#define P3_2_AMUXSEGMENT AMUXBUS_NOISY +#define P3_3_PORT GPIO_PRT3 +#define P3_3_PIN 3u +#define P3_3_NUM 3u +#define P3_3_AMUXSEGMENT AMUXBUS_NOISY +#define P3_4_PORT GPIO_PRT3 +#define P3_4_PIN 4u +#define P3_4_NUM 4u +#define P3_4_AMUXSEGMENT AMUXBUS_NOISY +#define P3_5_PORT GPIO_PRT3 +#define P3_5_PIN 5u +#define P3_5_NUM 5u +#define P3_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 4 (GPIO) */ +#define P4_0_PORT GPIO_PRT4 +#define P4_0_PIN 0u +#define P4_0_NUM 0u +#define P4_0_AMUXSEGMENT AMUXBUS_NOISY +#define P4_1_PORT GPIO_PRT4 +#define P4_1_PIN 1u +#define P4_1_NUM 1u +#define P4_1_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_2_PORT GPIO_PRT13 +#define P13_2_PIN 2u +#define P13_2_NUM 2u +#define P13_2_AMUXSEGMENT AMUXBUS_MAIN +#define P13_3_PORT GPIO_PRT13 +#define P13_3_PIN 3u +#define P13_3_NUM 3u +#define P13_3_AMUXSEGMENT AMUXBUS_MAIN +#define P13_4_PORT GPIO_PRT13 +#define P13_4_PIN 4u +#define P13_4_NUM 4u +#define P13_4_AMUXSEGMENT AMUXBUS_MAIN +#define P13_5_PORT GPIO_PRT13 +#define P13_5_PIN 5u +#define P13_5_NUM 5u +#define P13_5_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS5_PORT 9u +#define PASS_CTB_PADS5_PIN 5u +#define PASS_CTB_PADS6_PORT 9u +#define PASS_CTB_PADS6_PIN 6u +#define PASS_CTB_PADS7_PORT 9u +#define PASS_CTB_PADS7_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P2.0 */ + P2_0_GPIO = 0, /* GPIO controls 'out' */ + P2_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_0_AMUXA = 4, /* Analog mux bus A */ + P2_0_AMUXB = 5, /* Analog mux bus B */ + P2_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:4 */ + P2_0_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:1 */ + P2_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:12 */ + P2_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:12 */ + P2_0_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:0 */ + P2_0_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:0 */ + P2_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:0 */ + P2_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:0 */ + P2_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:0 */ + P2_0_PERI_TR_IO_INPUT4 = 24, /* Digital Active - peri.tr_io_input[4]:0 */ + P2_0_BLESS_MXD_DPSLP_RET_SWITCH_HV = 28, /* Digital Deep Sleep - bless.mxd_dpslp_ret_switch_hv */ + + /* P2.1 */ + P2_1_GPIO = 0, /* GPIO controls 'out' */ + P2_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_1_AMUXA = 4, /* Analog mux bus A */ + P2_1_AMUXB = 5, /* Analog mux bus B */ + P2_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:4 */ + P2_1_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:1 */ + P2_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:13 */ + P2_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:13 */ + P2_1_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:0 */ + P2_1_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:0 */ + P2_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:0 */ + P2_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:0 */ + P2_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:0 */ + P2_1_PERI_TR_IO_INPUT5 = 24, /* Digital Active - peri.tr_io_input[5]:0 */ + P2_1_BLESS_MXD_DPSLP_RET_LDO_OL_HV = 28, /* Digital Deep Sleep - bless.mxd_dpslp_ret_ldo_ol_hv */ + + /* P2.2 */ + P2_2_GPIO = 0, /* GPIO controls 'out' */ + P2_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_2_AMUXA = 4, /* Analog mux bus A */ + P2_2_AMUXB = 5, /* Analog mux bus B */ + P2_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:4 */ + P2_2_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:1 */ + P2_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:14 */ + P2_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:14 */ + P2_2_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:0 */ + P2_2_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:0 */ + P2_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:0 */ + P2_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:0 */ + P2_2_BLESS_MXD_DPSLP_BUCK_EN = 28, /* Digital Deep Sleep - bless.mxd_dpslp_buck_en */ + + /* P2.3 */ + P2_3_GPIO = 0, /* GPIO controls 'out' */ + P2_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_3_AMUXA = 4, /* Analog mux bus A */ + P2_3_AMUXB = 5, /* Analog mux bus B */ + P2_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:4 */ + P2_3_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:1 */ + P2_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:15 */ + P2_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:15 */ + P2_3_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:0 */ + P2_3_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:0 */ + P2_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:0 */ + P2_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:0 */ + P2_3_BLESS_MXD_DPSLP_RESET_N = 28, /* Digital Deep Sleep - bless.mxd_dpslp_reset_n */ + + /* P2.4 */ + P2_4_GPIO = 0, /* GPIO controls 'out' */ + P2_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_4_AMUXA = 4, /* Analog mux bus A */ + P2_4_AMUXB = 5, /* Analog mux bus B */ + P2_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:5 */ + P2_4_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:1 */ + P2_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:16 */ + P2_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:16 */ + P2_4_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:0 */ + P2_4_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:0 */ + P2_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:0 */ + P2_4_BLESS_MXD_DPSLP_CLK_EN = 28, /* Digital Deep Sleep - bless.mxd_dpslp_clk_en */ + + /* P2.5 */ + P2_5_GPIO = 0, /* GPIO controls 'out' */ + P2_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_5_AMUXA = 4, /* Analog mux bus A */ + P2_5_AMUXB = 5, /* Analog mux bus B */ + P2_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:5 */ + P2_5_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:1 */ + P2_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:17 */ + P2_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:17 */ + P2_5_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:0 */ + P2_5_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:0 */ + P2_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:0 */ + P2_5_BLESS_MXD_DPSLP_ISOLATE_N = 28, /* Digital Deep Sleep - bless.mxd_dpslp_isolate_n */ + + /* P2.6 */ + P2_6_GPIO = 0, /* GPIO controls 'out' */ + P2_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_6_AMUXA = 4, /* Analog mux bus A */ + P2_6_AMUXB = 5, /* Analog mux bus B */ + P2_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:5 */ + P2_6_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:1 */ + P2_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:18 */ + P2_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:18 */ + P2_6_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:0 */ + P2_6_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:0 */ + P2_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:0 */ + P2_6_BLESS_MXD_DPSLP_ACT_LDO_EN = 28, /* Digital Deep Sleep - bless.mxd_dpslp_act_ldo_en */ + + /* P2.7 */ + P2_7_GPIO = 0, /* GPIO controls 'out' */ + P2_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P2_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P2_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P2_7_AMUXA = 4, /* Analog mux bus A */ + P2_7_AMUXB = 5, /* Analog mux bus B */ + P2_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:5 */ + P2_7_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:1 */ + P2_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:19 */ + P2_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:19 */ + P2_7_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:0 */ + P2_7_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:0 */ + P2_7_BLESS_MXD_DPSLP_XTAL_EN = 28, /* Digital Deep Sleep - bless.mxd_dpslp_xtal_en */ + + /* P3.0 */ + P3_0_GPIO = 0, /* GPIO controls 'out' */ + P3_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_0_AMUXA = 4, /* Analog mux bus A */ + P3_0_AMUXB = 5, /* Analog mux bus B */ + P3_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_0_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:5 */ + P3_0_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:1 */ + P3_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:20 */ + P3_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:20 */ + P3_0_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:0 */ + P3_0_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:0 */ + P3_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:1 */ + P3_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:1 */ + P3_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:1 */ + P3_0_PERI_TR_IO_INPUT6 = 24, /* Digital Active - peri.tr_io_input[6]:0 */ + P3_0_BLESS_MXD_DPSLP_DIG_LDO_EN = 28, /* Digital Deep Sleep - bless.mxd_dpslp_dig_ldo_en */ + + /* P3.1 */ + P3_1_GPIO = 0, /* GPIO controls 'out' */ + P3_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_1_AMUXA = 4, /* Analog mux bus A */ + P3_1_AMUXB = 5, /* Analog mux bus B */ + P3_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_1_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:5 */ + P3_1_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:1 */ + P3_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:21 */ + P3_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:21 */ + P3_1_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:0 */ + P3_1_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:0 */ + P3_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:1 */ + P3_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:1 */ + P3_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:1 */ + P3_1_PERI_TR_IO_INPUT7 = 24, /* Digital Active - peri.tr_io_input[7]:0 */ + P3_1_BLESS_MXD_ACT_DBUS_RX_EN = 26, /* Digital Active - bless.mxd_act_dbus_rx_en */ + + /* P3.2 */ + P3_2_GPIO = 0, /* GPIO controls 'out' */ + P3_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_2_AMUXA = 4, /* Analog mux bus A */ + P3_2_AMUXB = 5, /* Analog mux bus B */ + P3_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_2_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:5 */ + P3_2_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:1 */ + P3_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:22 */ + P3_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:22 */ + P3_2_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:0 */ + P3_2_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:0 */ + P3_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:1 */ + P3_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:1 */ + P3_2_BLESS_MXD_ACT_DBUS_TX_EN = 26, /* Digital Active - bless.mxd_act_dbus_tx_en */ + + /* P3.3 */ + P3_3_GPIO = 0, /* GPIO controls 'out' */ + P3_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_3_AMUXA = 4, /* Analog mux bus A */ + P3_3_AMUXB = 5, /* Analog mux bus B */ + P3_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_3_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:5 */ + P3_3_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:1 */ + P3_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:23 */ + P3_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:23 */ + P3_3_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:0 */ + P3_3_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:0 */ + P3_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:1 */ + P3_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:1 */ + P3_3_BLESS_MXD_ACT_BPKTCTL = 26, /* Digital Active - bless.mxd_act_bpktctl */ + + /* P3.4 */ + P3_4_GPIO = 0, /* GPIO controls 'out' */ + P3_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_4_AMUXA = 4, /* Analog mux bus A */ + P3_4_AMUXB = 5, /* Analog mux bus B */ + P3_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_4_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:5 */ + P3_4_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:1 */ + P3_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:24 */ + P3_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:24 */ + P3_4_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:0 */ + P3_4_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:0 */ + P3_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:1 */ + P3_4_BLESS_MXD_ACT_TXD_RXD = 26, /* Digital Active - bless.mxd_act_txd_rxd */ + + /* P3.5 */ + P3_5_GPIO = 0, /* GPIO controls 'out' */ + P3_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P3_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P3_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P3_5_AMUXA = 4, /* Analog mux bus A */ + P3_5_AMUXB = 5, /* Analog mux bus B */ + P3_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_5_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:5 */ + P3_5_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:1 */ + P3_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:25 */ + P3_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:25 */ + P3_5_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:0 */ + P3_5_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:0 */ + P3_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:1 */ + P3_5_BLESS_MXD_DPSLP_RCB_DATA = 26, /* Digital Active - bless.mxd_dpslp_rcb_data */ + + /* P4.0 */ + P4_0_GPIO = 0, /* GPIO controls 'out' */ + P4_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P4_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P4_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P4_0_AMUXA = 4, /* Analog mux bus A */ + P4_0_AMUXB = 5, /* Analog mux bus B */ + P4_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_0_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:5 */ + P4_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:1 */ + P4_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:26 */ + P4_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:26 */ + P4_0_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:0 */ + P4_0_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:0 */ + P4_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:1 */ + P4_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:1 */ + P4_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:1 */ + P4_0_PERI_TR_IO_INPUT8 = 24, /* Digital Active - peri.tr_io_input[8]:0 */ + P4_0_BLESS_MXD_DPSLP_RCB_CLK = 26, /* Digital Active - bless.mxd_dpslp_rcb_clk */ + + /* P4.1 */ + P4_1_GPIO = 0, /* GPIO controls 'out' */ + P4_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P4_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P4_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P4_1_AMUXA = 4, /* Analog mux bus A */ + P4_1_AMUXB = 5, /* Analog mux bus B */ + P4_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_1_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:5 */ + P4_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:1 */ + P4_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:27 */ + P4_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:27 */ + P4_1_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:0 */ + P4_1_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:0 */ + P4_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:1 */ + P4_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:1 */ + P4_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:1 */ + P4_1_PERI_TR_IO_INPUT9 = 24, /* Digital Active - peri.tr_io_input[9]:0 */ + P4_1_BLESS_MXD_DPSLP_RCB_LE = 26, /* Digital Active - bless.mxd_dpslp_rcb_le */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:1 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1:0 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + + /* P13.2 */ + P13_2_GPIO = 0, /* GPIO controls 'out' */ + P13_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_2_AMUXA = 4, /* Analog mux bus A */ + P13_2_AMUXB = 5, /* Analog mux bus B */ + P13_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:4 */ + P13_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:1 */ + P13_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:95 */ + P13_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:95 */ + P13_2_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:1 */ + P13_2_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:1 */ + P13_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:1 */ + P13_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:1 */ + + /* P13.3 */ + P13_3_GPIO = 0, /* GPIO controls 'out' */ + P13_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_3_AMUXA = 4, /* Analog mux bus A */ + P13_3_AMUXB = 5, /* Analog mux bus B */ + P13_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:4 */ + P13_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:1 */ + P13_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:96 */ + P13_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:96 */ + P13_3_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:1 */ + P13_3_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:1 */ + P13_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:1 */ + P13_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:1 */ + + /* P13.4 */ + P13_4_GPIO = 0, /* GPIO controls 'out' */ + P13_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_4_AMUXA = 4, /* Analog mux bus A */ + P13_4_AMUXB = 5, /* Analog mux bus B */ + P13_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:4 */ + P13_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:1 */ + P13_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:97 */ + P13_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:97 */ + P13_4_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:1 */ + P13_4_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:1 */ + P13_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:1 */ + + /* P13.5 */ + P13_5_GPIO = 0, /* GPIO controls 'out' */ + P13_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_5_AMUXA = 4, /* Analog mux bus A */ + P13_5_AMUXB = 5, /* Analog mux bus B */ + P13_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:4 */ + P13_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:1 */ + P13_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:98 */ + P13_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:98 */ + P13_5_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:1 */ + P13_5_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:1 */ + P13_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:1 */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13 /* Digital Deep Sleep - lcd.seg[38]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_124_BGA_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga_sip.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga_sip.h new file mode 100644 index 00000000000..23094ac5216 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_124_bga_sip.h @@ -0,0 +1,2163 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_124_bga_sip.h +* +* \brief +* PSoC6_01 device GPIO header for 124-BGA-SIP package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_124_BGA_SIP_H_ +#define _GPIO_PSOC6_01_124_BGA_SIP_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_BGA +#define CY_GPIO_PIN_COUNT 124u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_2_PORT GPIO_PRT13 +#define P13_2_PIN 2u +#define P13_2_NUM 2u +#define P13_2_AMUXSEGMENT AMUXBUS_MAIN +#define P13_3_PORT GPIO_PRT13 +#define P13_3_PIN 3u +#define P13_3_NUM 3u +#define P13_3_AMUXSEGMENT AMUXBUS_MAIN +#define P13_4_PORT GPIO_PRT13 +#define P13_4_PIN 4u +#define P13_4_NUM 4u +#define P13_4_AMUXSEGMENT AMUXBUS_MAIN +#define P13_5_PORT GPIO_PRT13 +#define P13_5_PIN 5u +#define P13_5_NUM 5u +#define P13_5_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS5_PORT 9u +#define PASS_CTB_PADS5_PIN 5u +#define PASS_CTB_PADS6_PORT 9u +#define PASS_CTB_PADS6_PIN 6u +#define PASS_CTB_PADS7_PORT 9u +#define PASS_CTB_PADS7_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_BLESS_EXT_LNA_RX_CTL_OUT = 26, /* Digital Active - bless.ext_lna_rx_ctl_out */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_BLESS_EXT_PA_TX_CTL_OUT = 26, /* Digital Active - bless.ext_pa_tx_ctl_out */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_BLESS_EXT_PA_LNA_CHIP_EN_OUT = 26, /* Digital Active - bless.ext_pa_lna_chip_en_out */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:1 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1:0 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + + /* P13.2 */ + P13_2_GPIO = 0, /* GPIO controls 'out' */ + P13_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_2_AMUXA = 4, /* Analog mux bus A */ + P13_2_AMUXB = 5, /* Analog mux bus B */ + P13_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:4 */ + P13_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:1 */ + P13_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:95 */ + P13_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:95 */ + P13_2_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:1 */ + P13_2_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:1 */ + P13_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:1 */ + P13_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:1 */ + + /* P13.3 */ + P13_3_GPIO = 0, /* GPIO controls 'out' */ + P13_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_3_AMUXA = 4, /* Analog mux bus A */ + P13_3_AMUXB = 5, /* Analog mux bus B */ + P13_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:4 */ + P13_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:1 */ + P13_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:96 */ + P13_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:96 */ + P13_3_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:1 */ + P13_3_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:1 */ + P13_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:1 */ + P13_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:1 */ + + /* P13.4 */ + P13_4_GPIO = 0, /* GPIO controls 'out' */ + P13_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_4_AMUXA = 4, /* Analog mux bus A */ + P13_4_AMUXB = 5, /* Analog mux bus B */ + P13_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:4 */ + P13_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:1 */ + P13_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:97 */ + P13_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:97 */ + P13_4_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:1 */ + P13_4_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:1 */ + P13_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:1 */ + + /* P13.5 */ + P13_5_GPIO = 0, /* GPIO controls 'out' */ + P13_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_5_AMUXA = 4, /* Analog mux bus A */ + P13_5_AMUXB = 5, /* Analog mux bus B */ + P13_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:4 */ + P13_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:1 */ + P13_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:98 */ + P13_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:98 */ + P13_5_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:1 */ + P13_5_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:1 */ + P13_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:1 */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P13_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P13_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13 /* Digital Deep Sleep - lcd.seg[38]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_124_BGA_SIP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_43_smt.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_43_smt.h new file mode 100644 index 00000000000..1ce7d207791 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_43_smt.h @@ -0,0 +1,1047 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_43_smt.h +* +* \brief +* PSoC6_01 device GPIO header for 43-SMT package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_43_SMT_H_ +#define _GPIO_PSOC6_01_43_SMT_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_SMT +#define CY_GPIO_PIN_COUNT 43u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 12 (GPIO) */ +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS5_PORT 9u +#define PASS_CTB_PADS5_PIN 5u +#define PASS_CTB_PADS6_PORT 9u +#define PASS_CTB_PADS6_PIN 6u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13 /* Digital Deep Sleep - lcd.seg[30]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_43_SMT_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_80_wlcsp.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_80_wlcsp.h new file mode 100644 index 00000000000..563d18a3b97 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_01_80_wlcsp.h @@ -0,0 +1,1669 @@ +/***************************************************************************//** +* \file gpio_psoc6_01_80_wlcsp.h +* +* \brief +* PSoC6_01 device GPIO header for 80-WLCSP package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_01_80_WLCSP_H_ +#define _GPIO_PSOC6_01_80_WLCSP_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_WLCSP +#define CY_GPIO_PIN_COUNT 80u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_ADFT1_VDDD, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_7 = 0x0007u, /* Left = AMUXBUS_ADFT1_VDDD; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_CSD0; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_8 = 0x0008u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_CTB_OA0_OUT_10X_PORT 9u +#define PASS_CTB_OA0_OUT_10X_PIN 2u +#define PASS_CTB_OA1_OUT_10X_PORT 9u +#define PASS_CTB_OA1_OUT_10X_PIN 3u +#define PASS_CTB_PADS0_PORT 9u +#define PASS_CTB_PADS0_PIN 0u +#define PASS_CTB_PADS1_PORT 9u +#define PASS_CTB_PADS1_PIN 1u +#define PASS_CTB_PADS2_PORT 9u +#define PASS_CTB_PADS2_PIN 2u +#define PASS_CTB_PADS3_PORT 9u +#define PASS_CTB_PADS3_PIN 3u +#define PASS_CTB_PADS4_PORT 9u +#define PASS_CTB_PADS4_PIN 4u +#define PASS_CTB_PADS7_PORT 9u +#define PASS_CTB_PADS7_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P0_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P0_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P1_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P1_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS_CLK_I2S_IF = 22, /* Digital Active - audioss.clk_i2s_if */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS_TX_SCK = 22, /* Digital Active - audioss.tx_sck */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS_TX_WS = 22, /* Digital Active - audioss.tx_ws */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS_TX_SDO = 22, /* Digital Active - audioss.tx_sdo */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS_RX_SCK = 22, /* Digital Active - audioss.rx_sck */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS_RX_WS = 22, /* Digital Active - audioss.rx_ws */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS_RX_SDI = 22, /* Digital Active - audioss.rx_sdi */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P5_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P5_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P6_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P6_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P7_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P7_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P8_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P8_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_PASS_DSI_CTB_CMP0 = 22, /* Digital Active - pass.dsi_ctb_cmp0:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_PASS_DSI_CTB_CMP1 = 22, /* Digital Active - pass.dsi_ctb_cmp1:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P9_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P9_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:0 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P10_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P10_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:0 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0:0 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P11_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P11_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_0_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_0_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_1_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_1_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_2_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_2_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_3_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_3_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_4_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_4_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS_PDM_CLK = 21, /* Digital Active - audioss.pdm_clk:1 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1:0 */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_5_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_5_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS_PDM_DATA = 21, /* Digital Active - audioss.pdm_data:1 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1:0 */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_6_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_6_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + P12_7_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + P12_7_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13 /* Digital Deep Sleep - lcd.seg[30]:1 */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_01_80_WLCSP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_100_wlcsp.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_100_wlcsp.h new file mode 100644 index 00000000000..ddec3419fe3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_100_wlcsp.h @@ -0,0 +1,1904 @@ +/***************************************************************************//** +* \file gpio_psoc6_02_100_wlcsp.h +* +* \brief +* PSoC6_02 device GPIO header for 100-WLCSP package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_02_100_WLCSP_H_ +#define _GPIO_PSOC6_02_100_WLCSP_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_WLCSP +#define CY_GPIO_PIN_COUNT 100u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_NOISY; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_7 = 0x0007u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 2 (GPIO) */ +#define P2_0_PORT GPIO_PRT2 +#define P2_0_PIN 0u +#define P2_0_NUM 0u +#define P2_0_AMUXSEGMENT AMUXBUS_NOISY +#define P2_1_PORT GPIO_PRT2 +#define P2_1_PIN 1u +#define P2_1_NUM 1u +#define P2_1_AMUXSEGMENT AMUXBUS_NOISY +#define P2_2_PORT GPIO_PRT2 +#define P2_2_PIN 2u +#define P2_2_NUM 2u +#define P2_2_AMUXSEGMENT AMUXBUS_NOISY +#define P2_3_PORT GPIO_PRT2 +#define P2_3_PIN 3u +#define P2_3_NUM 3u +#define P2_3_AMUXSEGMENT AMUXBUS_NOISY +#define P2_4_PORT GPIO_PRT2 +#define P2_4_PIN 4u +#define P2_4_NUM 4u +#define P2_4_AMUXSEGMENT AMUXBUS_NOISY +#define P2_5_PORT GPIO_PRT2 +#define P2_5_PIN 5u +#define P2_5_NUM 5u +#define P2_5_AMUXSEGMENT AMUXBUS_NOISY +#define P2_6_PORT GPIO_PRT2 +#define P2_6_PIN 6u +#define P2_6_NUM 6u +#define P2_6_AMUXSEGMENT AMUXBUS_NOISY +#define P2_7_PORT GPIO_PRT2 +#define P2_7_PIN 7u +#define P2_7_NUM 7u +#define P2_7_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_2_PORT GPIO_PRT13 +#define P13_2_PIN 2u +#define P13_2_NUM 2u +#define P13_2_AMUXSEGMENT AMUXBUS_MAIN +#define P13_3_PORT GPIO_PRT13 +#define P13_3_PIN 3u +#define P13_3_NUM 3u +#define P13_3_AMUXSEGMENT AMUXBUS_MAIN +#define P13_4_PORT GPIO_PRT13 +#define P13_4_PIN 4u +#define P13_4_NUM 4u +#define P13_4_AMUXSEGMENT AMUXBUS_MAIN +#define P13_5_PORT GPIO_PRT13 +#define P13_5_PIN 5u +#define P13_5_NUM 5u +#define P13_5_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P2.0 */ + P2_0_GPIO = 0, /* GPIO controls 'out' */ + P2_0_AMUXA = 4, /* Analog mux bus A */ + P2_0_AMUXB = 5, /* Analog mux bus B */ + P2_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:4 */ + P2_0_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:1 */ + P2_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:12 */ + P2_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:12 */ + P2_0_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:0 */ + P2_0_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:0 */ + P2_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:0 */ + P2_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:0 */ + P2_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:0 */ + P2_0_PERI_TR_IO_INPUT4 = 24, /* Digital Active - peri.tr_io_input[4]:0 */ + P2_0_SDHC0_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[0].card_dat_3to0[0] */ + + /* P2.1 */ + P2_1_GPIO = 0, /* GPIO controls 'out' */ + P2_1_AMUXA = 4, /* Analog mux bus A */ + P2_1_AMUXB = 5, /* Analog mux bus B */ + P2_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:4 */ + P2_1_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:1 */ + P2_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:13 */ + P2_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:13 */ + P2_1_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:0 */ + P2_1_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:0 */ + P2_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:0 */ + P2_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:0 */ + P2_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:0 */ + P2_1_PERI_TR_IO_INPUT5 = 24, /* Digital Active - peri.tr_io_input[5]:0 */ + P2_1_SDHC0_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[0].card_dat_3to0[1] */ + + /* P2.2 */ + P2_2_GPIO = 0, /* GPIO controls 'out' */ + P2_2_AMUXA = 4, /* Analog mux bus A */ + P2_2_AMUXB = 5, /* Analog mux bus B */ + P2_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:4 */ + P2_2_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:1 */ + P2_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:14 */ + P2_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:14 */ + P2_2_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:0 */ + P2_2_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:0 */ + P2_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:0 */ + P2_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:0 */ + P2_2_SDHC0_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[0].card_dat_3to0[2] */ + + /* P2.3 */ + P2_3_GPIO = 0, /* GPIO controls 'out' */ + P2_3_AMUXA = 4, /* Analog mux bus A */ + P2_3_AMUXB = 5, /* Analog mux bus B */ + P2_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:4 */ + P2_3_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:1 */ + P2_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:15 */ + P2_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:15 */ + P2_3_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:0 */ + P2_3_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:0 */ + P2_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:0 */ + P2_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:0 */ + P2_3_SDHC0_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[0].card_dat_3to0[3] */ + + /* P2.4 */ + P2_4_GPIO = 0, /* GPIO controls 'out' */ + P2_4_AMUXA = 4, /* Analog mux bus A */ + P2_4_AMUXB = 5, /* Analog mux bus B */ + P2_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:5 */ + P2_4_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:1 */ + P2_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:16 */ + P2_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:16 */ + P2_4_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:0 */ + P2_4_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:0 */ + P2_4_SCB9_UART_RX = 18, /* Digital Active - scb[9].uart_rx:0 */ + P2_4_SCB9_I2C_SCL = 19, /* Digital Active - scb[9].i2c_scl:0 */ + P2_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:0 */ + P2_4_SDHC0_CARD_CMD = 26, /* Digital Active - sdhc[0].card_cmd */ + + /* P2.5 */ + P2_5_GPIO = 0, /* GPIO controls 'out' */ + P2_5_AMUXA = 4, /* Analog mux bus A */ + P2_5_AMUXB = 5, /* Analog mux bus B */ + P2_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:5 */ + P2_5_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:1 */ + P2_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:17 */ + P2_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:17 */ + P2_5_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:0 */ + P2_5_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:0 */ + P2_5_SCB9_UART_TX = 18, /* Digital Active - scb[9].uart_tx:0 */ + P2_5_SCB9_I2C_SDA = 19, /* Digital Active - scb[9].i2c_sda:0 */ + P2_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:0 */ + P2_5_SDHC0_CLK_CARD = 26, /* Digital Active - sdhc[0].clk_card */ + + /* P2.6 */ + P2_6_GPIO = 0, /* GPIO controls 'out' */ + P2_6_AMUXA = 4, /* Analog mux bus A */ + P2_6_AMUXB = 5, /* Analog mux bus B */ + P2_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:5 */ + P2_6_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:1 */ + P2_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:18 */ + P2_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:18 */ + P2_6_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:0 */ + P2_6_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:0 */ + P2_6_SCB9_UART_RTS = 18, /* Digital Active - scb[9].uart_rts:0 */ + P2_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:0 */ + P2_6_SDHC0_CARD_DETECT_N = 26, /* Digital Active - sdhc[0].card_detect_n */ + + /* P2.7 */ + P2_7_GPIO = 0, /* GPIO controls 'out' */ + P2_7_AMUXA = 4, /* Analog mux bus A */ + P2_7_AMUXB = 5, /* Analog mux bus B */ + P2_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:5 */ + P2_7_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:1 */ + P2_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:19 */ + P2_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:19 */ + P2_7_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:0 */ + P2_7_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:0 */ + P2_7_SCB9_UART_CTS = 18, /* Digital Active - scb[9].uart_cts:0 */ + P2_7_SDHC0_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[0].card_mech_write_prot */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB10_UART_RX = 18, /* Digital Active - scb[10].uart_rx:0 */ + P5_4_SCB10_I2C_SCL = 19, /* Digital Active - scb[10].i2c_scl:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB10_UART_TX = 18, /* Digital Active - scb[10].uart_tx:0 */ + P5_5_SCB10_I2C_SDA = 19, /* Digital Active - scb[10].i2c_sda:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB10_UART_RTS = 18, /* Digital Active - scb[10].uart_rts:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB10_UART_CTS = 18, /* Digital Active - scb[10].uart_cts:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB11_UART_RX = 18, /* Digital Active - scb[11].uart_rx:0 */ + P8_4_SCB11_I2C_SCL = 19, /* Digital Active - scb[11].i2c_scl:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:1 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:1 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + P9_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:1 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + P11_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + P11_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + P11_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + P12_0_SDHC1_CARD_EMMC_RESET_N = 26, /* Digital Active - sdhc[1].card_emmc_reset_n */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + P12_1_SDHC1_CARD_DETECT_N = 26, /* Digital Active - sdhc[1].card_detect_n */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + P12_2_SDHC1_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[1].card_mech_write_prot */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + P12_3_SDHC1_LED_CTRL = 26, /* Digital Active - sdhc[1].led_ctrl */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1 */ + P12_4_SDHC1_CARD_CMD = 26, /* Digital Active - sdhc[1].card_cmd */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1 */ + P12_5_SDHC1_CLK_CARD = 26, /* Digital Active - sdhc[1].clk_card */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + P12_6_SDHC1_CARD_IF_PWR_EN = 26, /* Digital Active - sdhc[1].card_if_pwr_en */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + P12_7_SDHC1_IO_VOLT_SEL = 26, /* Digital Active - sdhc[1].io_volt_sel */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:0 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + P13_0_SDHC1_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[1].card_dat_3to0[0] */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:0 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + P13_1_SDHC1_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[1].card_dat_3to0[1] */ + + /* P13.2 */ + P13_2_GPIO = 0, /* GPIO controls 'out' */ + P13_2_AMUXA = 4, /* Analog mux bus A */ + P13_2_AMUXB = 5, /* Analog mux bus B */ + P13_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:4 */ + P13_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:1 */ + P13_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:95 */ + P13_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:95 */ + P13_2_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:1 */ + P13_2_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:1 */ + P13_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:1 */ + P13_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:1 */ + P13_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:0 */ + P13_2_SDHC1_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[1].card_dat_3to0[2] */ + + /* P13.3 */ + P13_3_GPIO = 0, /* GPIO controls 'out' */ + P13_3_AMUXA = 4, /* Analog mux bus A */ + P13_3_AMUXB = 5, /* Analog mux bus B */ + P13_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:4 */ + P13_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:1 */ + P13_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:96 */ + P13_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:96 */ + P13_3_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:1 */ + P13_3_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:1 */ + P13_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:1 */ + P13_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:1 */ + P13_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:0 */ + P13_3_SDHC1_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[1].card_dat_3to0[3] */ + + /* P13.4 */ + P13_4_GPIO = 0, /* GPIO controls 'out' */ + P13_4_AMUXA = 4, /* Analog mux bus A */ + P13_4_AMUXB = 5, /* Analog mux bus B */ + P13_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:4 */ + P13_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:1 */ + P13_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:97 */ + P13_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:97 */ + P13_4_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:1 */ + P13_4_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:1 */ + P13_4_SCB12_UART_RX = 18, /* Digital Active - scb[12].uart_rx:0 */ + P13_4_SCB12_I2C_SCL = 19, /* Digital Active - scb[12].i2c_scl:0 */ + P13_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:1 */ + P13_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:0 */ + P13_4_SDHC1_CARD_DAT_7TO40 = 26, /* Digital Active - sdhc[1].card_dat_7to4[0] */ + + /* P13.5 */ + P13_5_GPIO = 0, /* GPIO controls 'out' */ + P13_5_AMUXA = 4, /* Analog mux bus A */ + P13_5_AMUXB = 5, /* Analog mux bus B */ + P13_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:4 */ + P13_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:1 */ + P13_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:98 */ + P13_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:98 */ + P13_5_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:1 */ + P13_5_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:1 */ + P13_5_SCB12_UART_TX = 18, /* Digital Active - scb[12].uart_tx:0 */ + P13_5_SCB12_I2C_SDA = 19, /* Digital Active - scb[12].i2c_sda:0 */ + P13_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:1 */ + P13_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:0 */ + P13_5_SDHC1_CARD_DAT_7TO41 = 26, /* Digital Active - sdhc[1].card_dat_7to4[1] */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB12_UART_RTS = 18, /* Digital Active - scb[12].uart_rts:0 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + P13_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:0 */ + P13_6_SDHC1_CARD_DAT_7TO42 = 26, /* Digital Active - sdhc[1].card_dat_7to4[2] */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:1 */ + P13_7_SCB12_UART_CTS = 18, /* Digital Active - scb[12].uart_cts:0 */ + P13_7_SDHC1_CARD_DAT_7TO43 = 26 /* Digital Active - sdhc[1].card_dat_7to4[3] */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_02_100_WLCSP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_124_bga.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_124_bga.h new file mode 100644 index 00000000000..959d8dfc897 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_124_bga.h @@ -0,0 +1,2259 @@ +/***************************************************************************//** +* \file gpio_psoc6_02_124_bga.h +* +* \brief +* PSoC6_02 device GPIO header for 124-BGA package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_02_124_BGA_H_ +#define _GPIO_PSOC6_02_124_BGA_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_BGA +#define CY_GPIO_PIN_COUNT 124u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_NOISY; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_7 = 0x0007u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 2 (GPIO) */ +#define P2_0_PORT GPIO_PRT2 +#define P2_0_PIN 0u +#define P2_0_NUM 0u +#define P2_0_AMUXSEGMENT AMUXBUS_NOISY +#define P2_1_PORT GPIO_PRT2 +#define P2_1_PIN 1u +#define P2_1_NUM 1u +#define P2_1_AMUXSEGMENT AMUXBUS_NOISY +#define P2_2_PORT GPIO_PRT2 +#define P2_2_PIN 2u +#define P2_2_NUM 2u +#define P2_2_AMUXSEGMENT AMUXBUS_NOISY +#define P2_3_PORT GPIO_PRT2 +#define P2_3_PIN 3u +#define P2_3_NUM 3u +#define P2_3_AMUXSEGMENT AMUXBUS_NOISY +#define P2_4_PORT GPIO_PRT2 +#define P2_4_PIN 4u +#define P2_4_NUM 4u +#define P2_4_AMUXSEGMENT AMUXBUS_NOISY +#define P2_5_PORT GPIO_PRT2 +#define P2_5_PIN 5u +#define P2_5_NUM 5u +#define P2_5_AMUXSEGMENT AMUXBUS_NOISY +#define P2_6_PORT GPIO_PRT2 +#define P2_6_PIN 6u +#define P2_6_NUM 6u +#define P2_6_AMUXSEGMENT AMUXBUS_NOISY +#define P2_7_PORT GPIO_PRT2 +#define P2_7_PIN 7u +#define P2_7_NUM 7u +#define P2_7_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 3 (GPIO) */ +#define P3_0_PORT GPIO_PRT3 +#define P3_0_PIN 0u +#define P3_0_NUM 0u +#define P3_0_AMUXSEGMENT AMUXBUS_NOISY +#define P3_1_PORT GPIO_PRT3 +#define P3_1_PIN 1u +#define P3_1_NUM 1u +#define P3_1_AMUXSEGMENT AMUXBUS_NOISY +#define P3_2_PORT GPIO_PRT3 +#define P3_2_PIN 2u +#define P3_2_NUM 2u +#define P3_2_AMUXSEGMENT AMUXBUS_NOISY +#define P3_3_PORT GPIO_PRT3 +#define P3_3_PIN 3u +#define P3_3_NUM 3u +#define P3_3_AMUXSEGMENT AMUXBUS_NOISY +#define P3_4_PORT GPIO_PRT3 +#define P3_4_PIN 4u +#define P3_4_NUM 4u +#define P3_4_AMUXSEGMENT AMUXBUS_NOISY +#define P3_5_PORT GPIO_PRT3 +#define P3_5_PIN 5u +#define P3_5_NUM 5u +#define P3_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 4 (GPIO) */ +#define P4_0_PORT GPIO_PRT4 +#define P4_0_PIN 0u +#define P4_0_NUM 0u +#define P4_0_AMUXSEGMENT AMUXBUS_NOISY +#define P4_1_PORT GPIO_PRT4 +#define P4_1_PIN 1u +#define P4_1_NUM 1u +#define P4_1_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_2_PORT GPIO_PRT13 +#define P13_2_PIN 2u +#define P13_2_NUM 2u +#define P13_2_AMUXSEGMENT AMUXBUS_MAIN +#define P13_3_PORT GPIO_PRT13 +#define P13_3_PIN 3u +#define P13_3_NUM 3u +#define P13_3_AMUXSEGMENT AMUXBUS_MAIN +#define P13_4_PORT GPIO_PRT13 +#define P13_4_PIN 4u +#define P13_4_NUM 4u +#define P13_4_AMUXSEGMENT AMUXBUS_MAIN +#define P13_5_PORT GPIO_PRT13 +#define P13_5_PIN 5u +#define P13_5_NUM 5u +#define P13_5_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P2.0 */ + P2_0_GPIO = 0, /* GPIO controls 'out' */ + P2_0_AMUXA = 4, /* Analog mux bus A */ + P2_0_AMUXB = 5, /* Analog mux bus B */ + P2_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:4 */ + P2_0_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:1 */ + P2_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:12 */ + P2_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:12 */ + P2_0_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:0 */ + P2_0_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:0 */ + P2_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:0 */ + P2_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:0 */ + P2_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:0 */ + P2_0_PERI_TR_IO_INPUT4 = 24, /* Digital Active - peri.tr_io_input[4]:0 */ + P2_0_SDHC0_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[0].card_dat_3to0[0] */ + + /* P2.1 */ + P2_1_GPIO = 0, /* GPIO controls 'out' */ + P2_1_AMUXA = 4, /* Analog mux bus A */ + P2_1_AMUXB = 5, /* Analog mux bus B */ + P2_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:4 */ + P2_1_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:1 */ + P2_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:13 */ + P2_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:13 */ + P2_1_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:0 */ + P2_1_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:0 */ + P2_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:0 */ + P2_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:0 */ + P2_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:0 */ + P2_1_PERI_TR_IO_INPUT5 = 24, /* Digital Active - peri.tr_io_input[5]:0 */ + P2_1_SDHC0_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[0].card_dat_3to0[1] */ + + /* P2.2 */ + P2_2_GPIO = 0, /* GPIO controls 'out' */ + P2_2_AMUXA = 4, /* Analog mux bus A */ + P2_2_AMUXB = 5, /* Analog mux bus B */ + P2_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:4 */ + P2_2_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:1 */ + P2_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:14 */ + P2_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:14 */ + P2_2_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:0 */ + P2_2_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:0 */ + P2_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:0 */ + P2_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:0 */ + P2_2_SDHC0_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[0].card_dat_3to0[2] */ + + /* P2.3 */ + P2_3_GPIO = 0, /* GPIO controls 'out' */ + P2_3_AMUXA = 4, /* Analog mux bus A */ + P2_3_AMUXB = 5, /* Analog mux bus B */ + P2_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:4 */ + P2_3_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:1 */ + P2_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:15 */ + P2_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:15 */ + P2_3_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:0 */ + P2_3_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:0 */ + P2_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:0 */ + P2_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:0 */ + P2_3_SDHC0_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[0].card_dat_3to0[3] */ + + /* P2.4 */ + P2_4_GPIO = 0, /* GPIO controls 'out' */ + P2_4_AMUXA = 4, /* Analog mux bus A */ + P2_4_AMUXB = 5, /* Analog mux bus B */ + P2_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:5 */ + P2_4_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:1 */ + P2_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:16 */ + P2_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:16 */ + P2_4_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:0 */ + P2_4_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:0 */ + P2_4_SCB9_UART_RX = 18, /* Digital Active - scb[9].uart_rx:0 */ + P2_4_SCB9_I2C_SCL = 19, /* Digital Active - scb[9].i2c_scl:0 */ + P2_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:0 */ + P2_4_SDHC0_CARD_CMD = 26, /* Digital Active - sdhc[0].card_cmd */ + + /* P2.5 */ + P2_5_GPIO = 0, /* GPIO controls 'out' */ + P2_5_AMUXA = 4, /* Analog mux bus A */ + P2_5_AMUXB = 5, /* Analog mux bus B */ + P2_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:5 */ + P2_5_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:1 */ + P2_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:17 */ + P2_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:17 */ + P2_5_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:0 */ + P2_5_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:0 */ + P2_5_SCB9_UART_TX = 18, /* Digital Active - scb[9].uart_tx:0 */ + P2_5_SCB9_I2C_SDA = 19, /* Digital Active - scb[9].i2c_sda:0 */ + P2_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:0 */ + P2_5_SDHC0_CLK_CARD = 26, /* Digital Active - sdhc[0].clk_card */ + + /* P2.6 */ + P2_6_GPIO = 0, /* GPIO controls 'out' */ + P2_6_AMUXA = 4, /* Analog mux bus A */ + P2_6_AMUXB = 5, /* Analog mux bus B */ + P2_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:5 */ + P2_6_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:1 */ + P2_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:18 */ + P2_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:18 */ + P2_6_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:0 */ + P2_6_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:0 */ + P2_6_SCB9_UART_RTS = 18, /* Digital Active - scb[9].uart_rts:0 */ + P2_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:0 */ + P2_6_SDHC0_CARD_DETECT_N = 26, /* Digital Active - sdhc[0].card_detect_n */ + + /* P2.7 */ + P2_7_GPIO = 0, /* GPIO controls 'out' */ + P2_7_AMUXA = 4, /* Analog mux bus A */ + P2_7_AMUXB = 5, /* Analog mux bus B */ + P2_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:5 */ + P2_7_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:1 */ + P2_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:19 */ + P2_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:19 */ + P2_7_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:0 */ + P2_7_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:0 */ + P2_7_SCB9_UART_CTS = 18, /* Digital Active - scb[9].uart_cts:0 */ + P2_7_SDHC0_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[0].card_mech_write_prot */ + + /* P3.0 */ + P3_0_GPIO = 0, /* GPIO controls 'out' */ + P3_0_AMUXA = 4, /* Analog mux bus A */ + P3_0_AMUXB = 5, /* Analog mux bus B */ + P3_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_0_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:5 */ + P3_0_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:1 */ + P3_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:20 */ + P3_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:20 */ + P3_0_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:0 */ + P3_0_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:0 */ + P3_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:1 */ + P3_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:1 */ + P3_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:1 */ + P3_0_PERI_TR_IO_INPUT6 = 24, /* Digital Active - peri.tr_io_input[6]:0 */ + P3_0_SDHC0_IO_VOLT_SEL = 26, /* Digital Active - sdhc[0].io_volt_sel */ + + /* P3.1 */ + P3_1_GPIO = 0, /* GPIO controls 'out' */ + P3_1_AMUXA = 4, /* Analog mux bus A */ + P3_1_AMUXB = 5, /* Analog mux bus B */ + P3_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_1_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:5 */ + P3_1_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:1 */ + P3_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:21 */ + P3_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:21 */ + P3_1_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:0 */ + P3_1_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:0 */ + P3_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:1 */ + P3_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:1 */ + P3_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:1 */ + P3_1_PERI_TR_IO_INPUT7 = 24, /* Digital Active - peri.tr_io_input[7]:0 */ + P3_1_SDHC0_CARD_IF_PWR_EN = 26, /* Digital Active - sdhc[0].card_if_pwr_en */ + + /* P3.2 */ + P3_2_GPIO = 0, /* GPIO controls 'out' */ + P3_2_AMUXA = 4, /* Analog mux bus A */ + P3_2_AMUXB = 5, /* Analog mux bus B */ + P3_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_2_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:5 */ + P3_2_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:1 */ + P3_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:22 */ + P3_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:22 */ + P3_2_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:0 */ + P3_2_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:0 */ + P3_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:1 */ + P3_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:1 */ + + /* P3.3 */ + P3_3_GPIO = 0, /* GPIO controls 'out' */ + P3_3_AMUXA = 4, /* Analog mux bus A */ + P3_3_AMUXB = 5, /* Analog mux bus B */ + P3_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_3_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:5 */ + P3_3_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:1 */ + P3_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:23 */ + P3_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:23 */ + P3_3_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:0 */ + P3_3_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:0 */ + P3_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:1 */ + P3_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:1 */ + + /* P3.4 */ + P3_4_GPIO = 0, /* GPIO controls 'out' */ + P3_4_AMUXA = 4, /* Analog mux bus A */ + P3_4_AMUXB = 5, /* Analog mux bus B */ + P3_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_4_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:5 */ + P3_4_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:1 */ + P3_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:24 */ + P3_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:24 */ + P3_4_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:0 */ + P3_4_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:0 */ + P3_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:1 */ + + /* P3.5 */ + P3_5_GPIO = 0, /* GPIO controls 'out' */ + P3_5_AMUXA = 4, /* Analog mux bus A */ + P3_5_AMUXB = 5, /* Analog mux bus B */ + P3_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_5_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:5 */ + P3_5_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:1 */ + P3_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:25 */ + P3_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:25 */ + P3_5_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:0 */ + P3_5_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:0 */ + P3_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:1 */ + + /* P4.0 */ + P4_0_GPIO = 0, /* GPIO controls 'out' */ + P4_0_AMUXA = 4, /* Analog mux bus A */ + P4_0_AMUXB = 5, /* Analog mux bus B */ + P4_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_0_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:5 */ + P4_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:1 */ + P4_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:26 */ + P4_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:26 */ + P4_0_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:0 */ + P4_0_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:0 */ + P4_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:1 */ + P4_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:1 */ + P4_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:1 */ + P4_0_PERI_TR_IO_INPUT8 = 24, /* Digital Active - peri.tr_io_input[8]:0 */ + + /* P4.1 */ + P4_1_GPIO = 0, /* GPIO controls 'out' */ + P4_1_AMUXA = 4, /* Analog mux bus A */ + P4_1_AMUXB = 5, /* Analog mux bus B */ + P4_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_1_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:5 */ + P4_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:1 */ + P4_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:27 */ + P4_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:27 */ + P4_1_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:0 */ + P4_1_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:0 */ + P4_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:1 */ + P4_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:1 */ + P4_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:1 */ + P4_1_PERI_TR_IO_INPUT9 = 24, /* Digital Active - peri.tr_io_input[9]:0 */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB10_UART_RX = 18, /* Digital Active - scb[10].uart_rx:0 */ + P5_4_SCB10_I2C_SCL = 19, /* Digital Active - scb[10].i2c_scl:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB10_UART_TX = 18, /* Digital Active - scb[10].uart_tx:0 */ + P5_5_SCB10_I2C_SDA = 19, /* Digital Active - scb[10].i2c_sda:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB10_UART_RTS = 18, /* Digital Active - scb[10].uart_rts:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB10_UART_CTS = 18, /* Digital Active - scb[10].uart_cts:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB11_UART_RX = 18, /* Digital Active - scb[11].uart_rx:0 */ + P8_4_SCB11_I2C_SCL = 19, /* Digital Active - scb[11].i2c_scl:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB11_UART_TX = 18, /* Digital Active - scb[11].uart_tx:0 */ + P8_5_SCB11_I2C_SDA = 19, /* Digital Active - scb[11].i2c_sda:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB11_UART_RTS = 18, /* Digital Active - scb[11].uart_rts:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB11_UART_CTS = 18, /* Digital Active - scb[11].uart_cts:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:1 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:1 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + P9_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:1 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + P9_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:1 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + P9_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:1 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + P11_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + P11_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + P11_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + P12_0_SDHC1_CARD_EMMC_RESET_N = 26, /* Digital Active - sdhc[1].card_emmc_reset_n */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + P12_1_SDHC1_CARD_DETECT_N = 26, /* Digital Active - sdhc[1].card_detect_n */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + P12_2_SDHC1_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[1].card_mech_write_prot */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + P12_3_SDHC1_LED_CTRL = 26, /* Digital Active - sdhc[1].led_ctrl */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1 */ + P12_4_SDHC1_CARD_CMD = 26, /* Digital Active - sdhc[1].card_cmd */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1 */ + P12_5_SDHC1_CLK_CARD = 26, /* Digital Active - sdhc[1].clk_card */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + P12_6_SDHC1_CARD_IF_PWR_EN = 26, /* Digital Active - sdhc[1].card_if_pwr_en */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + P12_7_SDHC1_IO_VOLT_SEL = 26, /* Digital Active - sdhc[1].io_volt_sel */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:0 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + P13_0_SDHC1_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[1].card_dat_3to0[0] */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:0 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + P13_1_SDHC1_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[1].card_dat_3to0[1] */ + + /* P13.2 */ + P13_2_GPIO = 0, /* GPIO controls 'out' */ + P13_2_AMUXA = 4, /* Analog mux bus A */ + P13_2_AMUXB = 5, /* Analog mux bus B */ + P13_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:4 */ + P13_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:1 */ + P13_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:95 */ + P13_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:95 */ + P13_2_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:1 */ + P13_2_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:1 */ + P13_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:1 */ + P13_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:1 */ + P13_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:0 */ + P13_2_SDHC1_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[1].card_dat_3to0[2] */ + + /* P13.3 */ + P13_3_GPIO = 0, /* GPIO controls 'out' */ + P13_3_AMUXA = 4, /* Analog mux bus A */ + P13_3_AMUXB = 5, /* Analog mux bus B */ + P13_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:4 */ + P13_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:1 */ + P13_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:96 */ + P13_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:96 */ + P13_3_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:1 */ + P13_3_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:1 */ + P13_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:1 */ + P13_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:1 */ + P13_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:0 */ + P13_3_SDHC1_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[1].card_dat_3to0[3] */ + + /* P13.4 */ + P13_4_GPIO = 0, /* GPIO controls 'out' */ + P13_4_AMUXA = 4, /* Analog mux bus A */ + P13_4_AMUXB = 5, /* Analog mux bus B */ + P13_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:4 */ + P13_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:1 */ + P13_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:97 */ + P13_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:97 */ + P13_4_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:1 */ + P13_4_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:1 */ + P13_4_SCB12_UART_RX = 18, /* Digital Active - scb[12].uart_rx:0 */ + P13_4_SCB12_I2C_SCL = 19, /* Digital Active - scb[12].i2c_scl:0 */ + P13_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:1 */ + P13_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:0 */ + P13_4_SDHC1_CARD_DAT_7TO40 = 26, /* Digital Active - sdhc[1].card_dat_7to4[0] */ + + /* P13.5 */ + P13_5_GPIO = 0, /* GPIO controls 'out' */ + P13_5_AMUXA = 4, /* Analog mux bus A */ + P13_5_AMUXB = 5, /* Analog mux bus B */ + P13_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:4 */ + P13_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:1 */ + P13_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:98 */ + P13_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:98 */ + P13_5_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:1 */ + P13_5_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:1 */ + P13_5_SCB12_UART_TX = 18, /* Digital Active - scb[12].uart_tx:0 */ + P13_5_SCB12_I2C_SDA = 19, /* Digital Active - scb[12].i2c_sda:0 */ + P13_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:1 */ + P13_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:0 */ + P13_5_SDHC1_CARD_DAT_7TO41 = 26, /* Digital Active - sdhc[1].card_dat_7to4[1] */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB12_UART_RTS = 18, /* Digital Active - scb[12].uart_rts:0 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + P13_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:0 */ + P13_6_SDHC1_CARD_DAT_7TO42 = 26, /* Digital Active - sdhc[1].card_dat_7to4[2] */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:1 */ + P13_7_SCB12_UART_CTS = 18, /* Digital Active - scb[12].uart_cts:0 */ + P13_7_SDHC1_CARD_DAT_7TO43 = 26 /* Digital Active - sdhc[1].card_dat_7to4[3] */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_02_124_BGA_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_128_tqfp.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_128_tqfp.h new file mode 100644 index 00000000000..e9b12697445 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/gpio_psoc6_02_128_tqfp.h @@ -0,0 +1,2297 @@ +/***************************************************************************//** +* \file gpio_psoc6_02_128_tqfp.h +* +* \brief +* PSoC6_02 device GPIO header for 128-TQFP package +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _GPIO_PSOC6_02_128_TQFP_H_ +#define _GPIO_PSOC6_02_128_TQFP_H_ + +/* Package type */ +enum +{ + CY_GPIO_PACKAGE_QFN, + CY_GPIO_PACKAGE_BGA, + CY_GPIO_PACKAGE_CSP, + CY_GPIO_PACKAGE_WLCSP, + CY_GPIO_PACKAGE_LQFP, + CY_GPIO_PACKAGE_TQFP, + CY_GPIO_PACKAGE_SMT, +}; + +#define CY_GPIO_PACKAGE_TYPE CY_GPIO_PACKAGE_TQFP +#define CY_GPIO_PIN_COUNT 128u + +/* AMUXBUS Segments */ +enum +{ + AMUXBUS_MAIN, + AMUXBUS_ADFT0_VDDD, + AMUXBUS_NOISY, + AMUXBUS_CSD0, + AMUXBUS_VDDIO_1, + AMUXBUS_CSD1, + AMUXBUS_SAR, + AMUXBUS_ANALOG_VDDD, + AMUXBUS_ANALOG_VDDA, +}; + +/* AMUX Splitter Controls */ +typedef enum +{ + AMUX_SPLIT_CTL_0 = 0x0000u, /* Left = AMUXBUS_ADFT0_VDDD; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_1 = 0x0001u, /* Left = AMUXBUS_MAIN; Right = AMUXBUS_NOISY */ + AMUX_SPLIT_CTL_2 = 0x0002u, /* Left = AMUXBUS_NOISY; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_3 = 0x0003u, /* Left = AMUXBUS_VDDIO_1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_4 = 0x0004u, /* Left = AMUXBUS_CSD1; Right = AMUXBUS_CSD0 */ + AMUX_SPLIT_CTL_5 = 0x0005u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_CSD1 */ + AMUX_SPLIT_CTL_6 = 0x0006u, /* Left = AMUXBUS_SAR; Right = AMUXBUS_MAIN */ + AMUX_SPLIT_CTL_7 = 0x0007u /* Left = AMUXBUS_ANALOG_VDDD; Right = AMUXBUS_ANALOG_VDDA */ +} cy_en_amux_split_t; + +/* Port List */ +/* PORT 0 (GPIO) */ +#define P0_0_PORT GPIO_PRT0 +#define P0_0_PIN 0u +#define P0_0_NUM 0u +#define P0_0_AMUXSEGMENT AMUXBUS_MAIN +#define P0_1_PORT GPIO_PRT0 +#define P0_1_PIN 1u +#define P0_1_NUM 1u +#define P0_1_AMUXSEGMENT AMUXBUS_MAIN +#define P0_2_PORT GPIO_PRT0 +#define P0_2_PIN 2u +#define P0_2_NUM 2u +#define P0_2_AMUXSEGMENT AMUXBUS_MAIN +#define P0_3_PORT GPIO_PRT0 +#define P0_3_PIN 3u +#define P0_3_NUM 3u +#define P0_3_AMUXSEGMENT AMUXBUS_MAIN +#define P0_4_PORT GPIO_PRT0 +#define P0_4_PIN 4u +#define P0_4_NUM 4u +#define P0_4_AMUXSEGMENT AMUXBUS_MAIN +#define P0_5_PORT GPIO_PRT0 +#define P0_5_PIN 5u +#define P0_5_NUM 5u +#define P0_5_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 1 (GPIO_OVT) */ +#define P1_0_PORT GPIO_PRT1 +#define P1_0_PIN 0u +#define P1_0_NUM 0u +#define P1_0_AMUXSEGMENT AMUXBUS_NOISY +#define P1_1_PORT GPIO_PRT1 +#define P1_1_PIN 1u +#define P1_1_NUM 1u +#define P1_1_AMUXSEGMENT AMUXBUS_NOISY +#define P1_2_PORT GPIO_PRT1 +#define P1_2_PIN 2u +#define P1_2_NUM 2u +#define P1_2_AMUXSEGMENT AMUXBUS_NOISY +#define P1_3_PORT GPIO_PRT1 +#define P1_3_PIN 3u +#define P1_3_NUM 3u +#define P1_3_AMUXSEGMENT AMUXBUS_NOISY +#define P1_4_PORT GPIO_PRT1 +#define P1_4_PIN 4u +#define P1_4_NUM 4u +#define P1_4_AMUXSEGMENT AMUXBUS_NOISY +#define P1_5_PORT GPIO_PRT1 +#define P1_5_PIN 5u +#define P1_5_NUM 5u +#define P1_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 2 (GPIO) */ +#define P2_0_PORT GPIO_PRT2 +#define P2_0_PIN 0u +#define P2_0_NUM 0u +#define P2_0_AMUXSEGMENT AMUXBUS_NOISY +#define P2_1_PORT GPIO_PRT2 +#define P2_1_PIN 1u +#define P2_1_NUM 1u +#define P2_1_AMUXSEGMENT AMUXBUS_NOISY +#define P2_2_PORT GPIO_PRT2 +#define P2_2_PIN 2u +#define P2_2_NUM 2u +#define P2_2_AMUXSEGMENT AMUXBUS_NOISY +#define P2_3_PORT GPIO_PRT2 +#define P2_3_PIN 3u +#define P2_3_NUM 3u +#define P2_3_AMUXSEGMENT AMUXBUS_NOISY +#define P2_4_PORT GPIO_PRT2 +#define P2_4_PIN 4u +#define P2_4_NUM 4u +#define P2_4_AMUXSEGMENT AMUXBUS_NOISY +#define P2_5_PORT GPIO_PRT2 +#define P2_5_PIN 5u +#define P2_5_NUM 5u +#define P2_5_AMUXSEGMENT AMUXBUS_NOISY +#define P2_6_PORT GPIO_PRT2 +#define P2_6_PIN 6u +#define P2_6_NUM 6u +#define P2_6_AMUXSEGMENT AMUXBUS_NOISY +#define P2_7_PORT GPIO_PRT2 +#define P2_7_PIN 7u +#define P2_7_NUM 7u +#define P2_7_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 3 (GPIO) */ +#define P3_0_PORT GPIO_PRT3 +#define P3_0_PIN 0u +#define P3_0_NUM 0u +#define P3_0_AMUXSEGMENT AMUXBUS_NOISY +#define P3_1_PORT GPIO_PRT3 +#define P3_1_PIN 1u +#define P3_1_NUM 1u +#define P3_1_AMUXSEGMENT AMUXBUS_NOISY +#define P3_2_PORT GPIO_PRT3 +#define P3_2_PIN 2u +#define P3_2_NUM 2u +#define P3_2_AMUXSEGMENT AMUXBUS_NOISY +#define P3_3_PORT GPIO_PRT3 +#define P3_3_PIN 3u +#define P3_3_NUM 3u +#define P3_3_AMUXSEGMENT AMUXBUS_NOISY +#define P3_4_PORT GPIO_PRT3 +#define P3_4_PIN 4u +#define P3_4_NUM 4u +#define P3_4_AMUXSEGMENT AMUXBUS_NOISY +#define P3_5_PORT GPIO_PRT3 +#define P3_5_PIN 5u +#define P3_5_NUM 5u +#define P3_5_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 4 (GPIO) */ +#define P4_0_PORT GPIO_PRT4 +#define P4_0_PIN 0u +#define P4_0_NUM 0u +#define P4_0_AMUXSEGMENT AMUXBUS_NOISY +#define P4_1_PORT GPIO_PRT4 +#define P4_1_PIN 1u +#define P4_1_NUM 1u +#define P4_1_AMUXSEGMENT AMUXBUS_NOISY +#define P4_2_PORT GPIO_PRT4 +#define P4_2_PIN 2u +#define P4_2_NUM 2u +#define P4_2_AMUXSEGMENT AMUXBUS_NOISY +#define P4_3_PORT GPIO_PRT4 +#define P4_3_PIN 3u +#define P4_3_NUM 3u +#define P4_3_AMUXSEGMENT AMUXBUS_NOISY + +/* PORT 5 (GPIO) */ +#define P5_0_PORT GPIO_PRT5 +#define P5_0_PIN 0u +#define P5_0_NUM 0u +#define P5_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_1_PORT GPIO_PRT5 +#define P5_1_PIN 1u +#define P5_1_NUM 1u +#define P5_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_2_PORT GPIO_PRT5 +#define P5_2_PIN 2u +#define P5_2_NUM 2u +#define P5_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_3_PORT GPIO_PRT5 +#define P5_3_PIN 3u +#define P5_3_NUM 3u +#define P5_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_4_PORT GPIO_PRT5 +#define P5_4_PIN 4u +#define P5_4_NUM 4u +#define P5_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_5_PORT GPIO_PRT5 +#define P5_5_PIN 5u +#define P5_5_NUM 5u +#define P5_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_6_PORT GPIO_PRT5 +#define P5_6_PIN 6u +#define P5_6_NUM 6u +#define P5_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P5_7_PORT GPIO_PRT5 +#define P5_7_PIN 7u +#define P5_7_NUM 7u +#define P5_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 6 (GPIO) */ +#define P6_0_PORT GPIO_PRT6 +#define P6_0_PIN 0u +#define P6_0_NUM 0u +#define P6_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_1_PORT GPIO_PRT6 +#define P6_1_PIN 1u +#define P6_1_NUM 1u +#define P6_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_2_PORT GPIO_PRT6 +#define P6_2_PIN 2u +#define P6_2_NUM 2u +#define P6_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_3_PORT GPIO_PRT6 +#define P6_3_PIN 3u +#define P6_3_NUM 3u +#define P6_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_4_PORT GPIO_PRT6 +#define P6_4_PIN 4u +#define P6_4_NUM 4u +#define P6_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_5_PORT GPIO_PRT6 +#define P6_5_PIN 5u +#define P6_5_NUM 5u +#define P6_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_6_PORT GPIO_PRT6 +#define P6_6_PIN 6u +#define P6_6_NUM 6u +#define P6_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P6_7_PORT GPIO_PRT6 +#define P6_7_PIN 7u +#define P6_7_NUM 7u +#define P6_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 7 (GPIO) */ +#define P7_0_PORT GPIO_PRT7 +#define P7_0_PIN 0u +#define P7_0_NUM 0u +#define P7_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_1_PORT GPIO_PRT7 +#define P7_1_PIN 1u +#define P7_1_NUM 1u +#define P7_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_2_PORT GPIO_PRT7 +#define P7_2_PIN 2u +#define P7_2_NUM 2u +#define P7_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_3_PORT GPIO_PRT7 +#define P7_3_PIN 3u +#define P7_3_NUM 3u +#define P7_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_4_PORT GPIO_PRT7 +#define P7_4_PIN 4u +#define P7_4_NUM 4u +#define P7_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_5_PORT GPIO_PRT7 +#define P7_5_PIN 5u +#define P7_5_NUM 5u +#define P7_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_6_PORT GPIO_PRT7 +#define P7_6_PIN 6u +#define P7_6_NUM 6u +#define P7_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P7_7_PORT GPIO_PRT7 +#define P7_7_PIN 7u +#define P7_7_NUM 7u +#define P7_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 8 (GPIO) */ +#define P8_0_PORT GPIO_PRT8 +#define P8_0_PIN 0u +#define P8_0_NUM 0u +#define P8_0_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_1_PORT GPIO_PRT8 +#define P8_1_PIN 1u +#define P8_1_NUM 1u +#define P8_1_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_2_PORT GPIO_PRT8 +#define P8_2_PIN 2u +#define P8_2_NUM 2u +#define P8_2_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_3_PORT GPIO_PRT8 +#define P8_3_PIN 3u +#define P8_3_NUM 3u +#define P8_3_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_4_PORT GPIO_PRT8 +#define P8_4_PIN 4u +#define P8_4_NUM 4u +#define P8_4_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_5_PORT GPIO_PRT8 +#define P8_5_PIN 5u +#define P8_5_NUM 5u +#define P8_5_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_6_PORT GPIO_PRT8 +#define P8_6_PIN 6u +#define P8_6_NUM 6u +#define P8_6_AMUXSEGMENT AMUXBUS_CSD0 +#define P8_7_PORT GPIO_PRT8 +#define P8_7_PIN 7u +#define P8_7_NUM 7u +#define P8_7_AMUXSEGMENT AMUXBUS_CSD0 + +/* PORT 9 (GPIO) */ +#define P9_0_PORT GPIO_PRT9 +#define P9_0_PIN 0u +#define P9_0_NUM 0u +#define P9_0_AMUXSEGMENT AMUXBUS_SAR +#define P9_1_PORT GPIO_PRT9 +#define P9_1_PIN 1u +#define P9_1_NUM 1u +#define P9_1_AMUXSEGMENT AMUXBUS_SAR +#define P9_2_PORT GPIO_PRT9 +#define P9_2_PIN 2u +#define P9_2_NUM 2u +#define P9_2_AMUXSEGMENT AMUXBUS_SAR +#define P9_3_PORT GPIO_PRT9 +#define P9_3_PIN 3u +#define P9_3_NUM 3u +#define P9_3_AMUXSEGMENT AMUXBUS_SAR +#define P9_4_PORT GPIO_PRT9 +#define P9_4_PIN 4u +#define P9_4_NUM 4u +#define P9_4_AMUXSEGMENT AMUXBUS_SAR +#define P9_5_PORT GPIO_PRT9 +#define P9_5_PIN 5u +#define P9_5_NUM 5u +#define P9_5_AMUXSEGMENT AMUXBUS_SAR +#define P9_6_PORT GPIO_PRT9 +#define P9_6_PIN 6u +#define P9_6_NUM 6u +#define P9_6_AMUXSEGMENT AMUXBUS_SAR +#define P9_7_PORT GPIO_PRT9 +#define P9_7_PIN 7u +#define P9_7_NUM 7u +#define P9_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 10 (GPIO) */ +#define P10_0_PORT GPIO_PRT10 +#define P10_0_PIN 0u +#define P10_0_NUM 0u +#define P10_0_AMUXSEGMENT AMUXBUS_SAR +#define P10_1_PORT GPIO_PRT10 +#define P10_1_PIN 1u +#define P10_1_NUM 1u +#define P10_1_AMUXSEGMENT AMUXBUS_SAR +#define P10_2_PORT GPIO_PRT10 +#define P10_2_PIN 2u +#define P10_2_NUM 2u +#define P10_2_AMUXSEGMENT AMUXBUS_SAR +#define P10_3_PORT GPIO_PRT10 +#define P10_3_PIN 3u +#define P10_3_NUM 3u +#define P10_3_AMUXSEGMENT AMUXBUS_SAR +#define P10_4_PORT GPIO_PRT10 +#define P10_4_PIN 4u +#define P10_4_NUM 4u +#define P10_4_AMUXSEGMENT AMUXBUS_SAR +#define P10_5_PORT GPIO_PRT10 +#define P10_5_PIN 5u +#define P10_5_NUM 5u +#define P10_5_AMUXSEGMENT AMUXBUS_SAR +#define P10_6_PORT GPIO_PRT10 +#define P10_6_PIN 6u +#define P10_6_NUM 6u +#define P10_6_AMUXSEGMENT AMUXBUS_SAR +#define P10_7_PORT GPIO_PRT10 +#define P10_7_PIN 7u +#define P10_7_NUM 7u +#define P10_7_AMUXSEGMENT AMUXBUS_SAR + +/* PORT 11 (GPIO) */ +#define P11_0_PORT GPIO_PRT11 +#define P11_0_PIN 0u +#define P11_0_NUM 0u +#define P11_0_AMUXSEGMENT AMUXBUS_MAIN +#define P11_1_PORT GPIO_PRT11 +#define P11_1_PIN 1u +#define P11_1_NUM 1u +#define P11_1_AMUXSEGMENT AMUXBUS_MAIN +#define P11_2_PORT GPIO_PRT11 +#define P11_2_PIN 2u +#define P11_2_NUM 2u +#define P11_2_AMUXSEGMENT AMUXBUS_MAIN +#define P11_3_PORT GPIO_PRT11 +#define P11_3_PIN 3u +#define P11_3_NUM 3u +#define P11_3_AMUXSEGMENT AMUXBUS_MAIN +#define P11_4_PORT GPIO_PRT11 +#define P11_4_PIN 4u +#define P11_4_NUM 4u +#define P11_4_AMUXSEGMENT AMUXBUS_MAIN +#define P11_5_PORT GPIO_PRT11 +#define P11_5_PIN 5u +#define P11_5_NUM 5u +#define P11_5_AMUXSEGMENT AMUXBUS_MAIN +#define P11_6_PORT GPIO_PRT11 +#define P11_6_PIN 6u +#define P11_6_NUM 6u +#define P11_6_AMUXSEGMENT AMUXBUS_MAIN +#define P11_7_PORT GPIO_PRT11 +#define P11_7_PIN 7u +#define P11_7_NUM 7u +#define P11_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 12 (GPIO) */ +#define P12_0_PORT GPIO_PRT12 +#define P12_0_PIN 0u +#define P12_0_NUM 0u +#define P12_0_AMUXSEGMENT AMUXBUS_MAIN +#define P12_1_PORT GPIO_PRT12 +#define P12_1_PIN 1u +#define P12_1_NUM 1u +#define P12_1_AMUXSEGMENT AMUXBUS_MAIN +#define P12_2_PORT GPIO_PRT12 +#define P12_2_PIN 2u +#define P12_2_NUM 2u +#define P12_2_AMUXSEGMENT AMUXBUS_MAIN +#define P12_3_PORT GPIO_PRT12 +#define P12_3_PIN 3u +#define P12_3_NUM 3u +#define P12_3_AMUXSEGMENT AMUXBUS_MAIN +#define P12_4_PORT GPIO_PRT12 +#define P12_4_PIN 4u +#define P12_4_NUM 4u +#define P12_4_AMUXSEGMENT AMUXBUS_MAIN +#define P12_5_PORT GPIO_PRT12 +#define P12_5_PIN 5u +#define P12_5_NUM 5u +#define P12_5_AMUXSEGMENT AMUXBUS_MAIN +#define P12_6_PORT GPIO_PRT12 +#define P12_6_PIN 6u +#define P12_6_NUM 6u +#define P12_6_AMUXSEGMENT AMUXBUS_MAIN +#define P12_7_PORT GPIO_PRT12 +#define P12_7_PIN 7u +#define P12_7_NUM 7u +#define P12_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 13 (GPIO) */ +#define P13_0_PORT GPIO_PRT13 +#define P13_0_PIN 0u +#define P13_0_NUM 0u +#define P13_0_AMUXSEGMENT AMUXBUS_MAIN +#define P13_1_PORT GPIO_PRT13 +#define P13_1_PIN 1u +#define P13_1_NUM 1u +#define P13_1_AMUXSEGMENT AMUXBUS_MAIN +#define P13_2_PORT GPIO_PRT13 +#define P13_2_PIN 2u +#define P13_2_NUM 2u +#define P13_2_AMUXSEGMENT AMUXBUS_MAIN +#define P13_3_PORT GPIO_PRT13 +#define P13_3_PIN 3u +#define P13_3_NUM 3u +#define P13_3_AMUXSEGMENT AMUXBUS_MAIN +#define P13_4_PORT GPIO_PRT13 +#define P13_4_PIN 4u +#define P13_4_NUM 4u +#define P13_4_AMUXSEGMENT AMUXBUS_MAIN +#define P13_5_PORT GPIO_PRT13 +#define P13_5_PIN 5u +#define P13_5_NUM 5u +#define P13_5_AMUXSEGMENT AMUXBUS_MAIN +#define P13_6_PORT GPIO_PRT13 +#define P13_6_PIN 6u +#define P13_6_NUM 6u +#define P13_6_AMUXSEGMENT AMUXBUS_MAIN +#define P13_7_PORT GPIO_PRT13 +#define P13_7_PIN 7u +#define P13_7_NUM 7u +#define P13_7_AMUXSEGMENT AMUXBUS_MAIN + +/* PORT 14 (AUX) */ +#define USBDP_PORT GPIO_PRT14 +#define USBDP_PIN 0u +#define USBDP_NUM 0u +#define USBDP_AMUXSEGMENT AMUXBUS_NOISY +#define USBDM_PORT GPIO_PRT14 +#define USBDM_PIN 1u +#define USBDM_NUM 1u +#define USBDM_AMUXSEGMENT AMUXBUS_NOISY + +/* Analog Connections */ +#define CSD_CMODPADD_PORT 7u +#define CSD_CMODPADD_PIN 1u +#define CSD_CMODPADS_PORT 7u +#define CSD_CMODPADS_PIN 1u +#define CSD_CSH_TANKPADD_PORT 7u +#define CSD_CSH_TANKPADD_PIN 2u +#define CSD_CSH_TANKPADS_PORT 7u +#define CSD_CSH_TANKPADS_PIN 2u +#define CSD_CSHIELDPADS_PORT 7u +#define CSD_CSHIELDPADS_PIN 7u +#define CSD_VREF_EXT_PORT 7u +#define CSD_VREF_EXT_PIN 3u +#define IOSS_ADFT0_NET_PORT 10u +#define IOSS_ADFT0_NET_PIN 0u +#define IOSS_ADFT1_NET_PORT 10u +#define IOSS_ADFT1_NET_PIN 1u +#define LPCOMP_INN_COMP0_PORT 5u +#define LPCOMP_INN_COMP0_PIN 7u +#define LPCOMP_INN_COMP1_PORT 6u +#define LPCOMP_INN_COMP1_PIN 3u +#define LPCOMP_INP_COMP0_PORT 5u +#define LPCOMP_INP_COMP0_PIN 6u +#define LPCOMP_INP_COMP1_PORT 6u +#define LPCOMP_INP_COMP1_PIN 2u +#define PASS_AREF_EXT_VREF_PORT 9u +#define PASS_AREF_EXT_VREF_PIN 7u +#define PASS_SARMUX_PADS0_PORT 10u +#define PASS_SARMUX_PADS0_PIN 0u +#define PASS_SARMUX_PADS1_PORT 10u +#define PASS_SARMUX_PADS1_PIN 1u +#define PASS_SARMUX_PADS2_PORT 10u +#define PASS_SARMUX_PADS2_PIN 2u +#define PASS_SARMUX_PADS3_PORT 10u +#define PASS_SARMUX_PADS3_PIN 3u +#define PASS_SARMUX_PADS4_PORT 10u +#define PASS_SARMUX_PADS4_PIN 4u +#define PASS_SARMUX_PADS5_PORT 10u +#define PASS_SARMUX_PADS5_PIN 5u +#define PASS_SARMUX_PADS6_PORT 10u +#define PASS_SARMUX_PADS6_PIN 6u +#define PASS_SARMUX_PADS7_PORT 10u +#define PASS_SARMUX_PADS7_PIN 7u +#define SRSS_ADFT_PIN0_PORT 10u +#define SRSS_ADFT_PIN0_PIN 0u +#define SRSS_ADFT_PIN1_PORT 10u +#define SRSS_ADFT_PIN1_PIN 1u +#define SRSS_ECO_IN_PORT 12u +#define SRSS_ECO_IN_PIN 6u +#define SRSS_ECO_OUT_PORT 12u +#define SRSS_ECO_OUT_PIN 7u +#define SRSS_WCO_IN_PORT 0u +#define SRSS_WCO_IN_PIN 0u +#define SRSS_WCO_OUT_PORT 0u +#define SRSS_WCO_OUT_PIN 1u + +/* HSIOM Connections */ +typedef enum +{ + /* Generic HSIOM connections */ + HSIOM_SEL_GPIO = 0, /* GPIO controls 'out' */ + HSIOM_SEL_GPIO_DSI = 1, /* GPIO controls 'out', DSI controls 'output enable' */ + HSIOM_SEL_DSI_DSI = 2, /* DSI controls 'out' and 'output enable' */ + HSIOM_SEL_DSI_GPIO = 3, /* DSI controls 'out', GPIO controls 'output enable' */ + HSIOM_SEL_AMUXA = 4, /* Analog mux bus A */ + HSIOM_SEL_AMUXB = 5, /* Analog mux bus B */ + HSIOM_SEL_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + HSIOM_SEL_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + HSIOM_SEL_ACT_0 = 8, /* Active functionality 0 */ + HSIOM_SEL_ACT_1 = 9, /* Active functionality 1 */ + HSIOM_SEL_ACT_2 = 10, /* Active functionality 2 */ + HSIOM_SEL_ACT_3 = 11, /* Active functionality 3 */ + HSIOM_SEL_DS_0 = 12, /* DeepSleep functionality 0 */ + HSIOM_SEL_DS_1 = 13, /* DeepSleep functionality 1 */ + HSIOM_SEL_DS_2 = 14, /* DeepSleep functionality 2 */ + HSIOM_SEL_DS_3 = 15, /* DeepSleep functionality 3 */ + HSIOM_SEL_ACT_4 = 16, /* Active functionality 4 */ + HSIOM_SEL_ACT_5 = 17, /* Active functionality 5 */ + HSIOM_SEL_ACT_6 = 18, /* Active functionality 6 */ + HSIOM_SEL_ACT_7 = 19, /* Active functionality 7 */ + HSIOM_SEL_ACT_8 = 20, /* Active functionality 8 */ + HSIOM_SEL_ACT_9 = 21, /* Active functionality 9 */ + HSIOM_SEL_ACT_10 = 22, /* Active functionality 10 */ + HSIOM_SEL_ACT_11 = 23, /* Active functionality 11 */ + HSIOM_SEL_ACT_12 = 24, /* Active functionality 12 */ + HSIOM_SEL_ACT_13 = 25, /* Active functionality 13 */ + HSIOM_SEL_ACT_14 = 26, /* Active functionality 14 */ + HSIOM_SEL_ACT_15 = 27, /* Active functionality 15 */ + HSIOM_SEL_DS_4 = 28, /* DeepSleep functionality 4 */ + HSIOM_SEL_DS_5 = 29, /* DeepSleep functionality 5 */ + HSIOM_SEL_DS_6 = 30, /* DeepSleep functionality 6 */ + HSIOM_SEL_DS_7 = 31, /* DeepSleep functionality 7 */ + + /* P0.0 */ + P0_0_GPIO = 0, /* GPIO controls 'out' */ + P0_0_AMUXA = 4, /* Analog mux bus A */ + P0_0_AMUXB = 5, /* Analog mux bus B */ + P0_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:0 */ + P0_0_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:0 */ + P0_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:0 */ + P0_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:0 */ + P0_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:0 */ + P0_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:0 */ + P0_0_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:0 */ + P0_0_SCB0_SPI_SELECT1 = 20, /* Digital Active - scb[0].spi_select1:0 */ + P0_0_PERI_TR_IO_INPUT0 = 24, /* Digital Active - peri.tr_io_input[0]:0 */ + + /* P0.1 */ + P0_1_GPIO = 0, /* GPIO controls 'out' */ + P0_1_AMUXA = 4, /* Analog mux bus A */ + P0_1_AMUXB = 5, /* Analog mux bus B */ + P0_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:0 */ + P0_1_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:0 */ + P0_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:1 */ + P0_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:1 */ + P0_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:0 */ + P0_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:0 */ + P0_1_SCB0_SPI_SELECT2 = 20, /* Digital Active - scb[0].spi_select2:0 */ + P0_1_PERI_TR_IO_INPUT1 = 24, /* Digital Active - peri.tr_io_input[1]:0 */ + P0_1_CPUSS_SWJ_TRSTN = 29, /* Digital Deep Sleep - cpuss.swj_trstn */ + + /* P0.2 */ + P0_2_GPIO = 0, /* GPIO controls 'out' */ + P0_2_AMUXA = 4, /* Analog mux bus A */ + P0_2_AMUXB = 5, /* Analog mux bus B */ + P0_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:0 */ + P0_2_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:0 */ + P0_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:2 */ + P0_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:2 */ + P0_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:0 */ + P0_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:0 */ + P0_2_SCB0_UART_RX = 18, /* Digital Active - scb[0].uart_rx:0 */ + P0_2_SCB0_I2C_SCL = 19, /* Digital Active - scb[0].i2c_scl:0 */ + P0_2_SCB0_SPI_MOSI = 20, /* Digital Active - scb[0].spi_mosi:0 */ + + /* P0.3 */ + P0_3_GPIO = 0, /* GPIO controls 'out' */ + P0_3_AMUXA = 4, /* Analog mux bus A */ + P0_3_AMUXB = 5, /* Analog mux bus B */ + P0_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:0 */ + P0_3_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:0 */ + P0_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:3 */ + P0_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:3 */ + P0_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:0 */ + P0_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:0 */ + P0_3_SCB0_UART_TX = 18, /* Digital Active - scb[0].uart_tx:0 */ + P0_3_SCB0_I2C_SDA = 19, /* Digital Active - scb[0].i2c_sda:0 */ + P0_3_SCB0_SPI_MISO = 20, /* Digital Active - scb[0].spi_miso:0 */ + + /* P0.4 */ + P0_4_GPIO = 0, /* GPIO controls 'out' */ + P0_4_AMUXA = 4, /* Analog mux bus A */ + P0_4_AMUXB = 5, /* Analog mux bus B */ + P0_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:0 */ + P0_4_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:0 */ + P0_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:4 */ + P0_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:4 */ + P0_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:0 */ + P0_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:0 */ + P0_4_SCB0_UART_RTS = 18, /* Digital Active - scb[0].uart_rts:0 */ + P0_4_SCB0_SPI_CLK = 20, /* Digital Active - scb[0].spi_clk:0 */ + P0_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:2 */ + + /* P0.5 */ + P0_5_GPIO = 0, /* GPIO controls 'out' */ + P0_5_AMUXA = 4, /* Analog mux bus A */ + P0_5_AMUXB = 5, /* Analog mux bus B */ + P0_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P0_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P0_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:0 */ + P0_5_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:0 */ + P0_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:5 */ + P0_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:5 */ + P0_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:0 */ + P0_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:0 */ + P0_5_SRSS_EXT_CLK = 16, /* Digital Active - srss.ext_clk:1 */ + P0_5_SCB0_UART_CTS = 18, /* Digital Active - scb[0].uart_cts:0 */ + P0_5_SCB0_SPI_SELECT0 = 20, /* Digital Active - scb[0].spi_select0:0 */ + P0_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:2 */ + + /* P1.0 */ + P1_0_GPIO = 0, /* GPIO controls 'out' */ + P1_0_AMUXA = 4, /* Analog mux bus A */ + P1_0_AMUXB = 5, /* Analog mux bus B */ + P1_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_0_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:0 */ + P1_0_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:0 */ + P1_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:6 */ + P1_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:6 */ + P1_0_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:0 */ + P1_0_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:0 */ + P1_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:0 */ + P1_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:0 */ + P1_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:0 */ + P1_0_PERI_TR_IO_INPUT2 = 24, /* Digital Active - peri.tr_io_input[2]:0 */ + + /* P1.1 */ + P1_1_GPIO = 0, /* GPIO controls 'out' */ + P1_1_AMUXA = 4, /* Analog mux bus A */ + P1_1_AMUXB = 5, /* Analog mux bus B */ + P1_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_1_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:0 */ + P1_1_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:0 */ + P1_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:7 */ + P1_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:7 */ + P1_1_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:0 */ + P1_1_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:0 */ + P1_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:0 */ + P1_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:0 */ + P1_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:0 */ + P1_1_PERI_TR_IO_INPUT3 = 24, /* Digital Active - peri.tr_io_input[3]:0 */ + + /* P1.2 */ + P1_2_GPIO = 0, /* GPIO controls 'out' */ + P1_2_AMUXA = 4, /* Analog mux bus A */ + P1_2_AMUXB = 5, /* Analog mux bus B */ + P1_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_2_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:4 */ + P1_2_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:1 */ + P1_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:8 */ + P1_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:8 */ + P1_2_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:0 */ + P1_2_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:0 */ + P1_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:0 */ + P1_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:0 */ + + /* P1.3 */ + P1_3_GPIO = 0, /* GPIO controls 'out' */ + P1_3_AMUXA = 4, /* Analog mux bus A */ + P1_3_AMUXB = 5, /* Analog mux bus B */ + P1_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_3_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:4 */ + P1_3_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:1 */ + P1_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:9 */ + P1_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:9 */ + P1_3_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:0 */ + P1_3_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:0 */ + P1_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:0 */ + P1_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:0 */ + + /* P1.4 */ + P1_4_GPIO = 0, /* GPIO controls 'out' */ + P1_4_AMUXA = 4, /* Analog mux bus A */ + P1_4_AMUXB = 5, /* Analog mux bus B */ + P1_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_4_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:4 */ + P1_4_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:1 */ + P1_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:10 */ + P1_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:10 */ + P1_4_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:0 */ + P1_4_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:0 */ + P1_4_SCB7_SPI_SELECT1 = 20, /* Digital Active - scb[7].spi_select1:0 */ + + /* P1.5 */ + P1_5_GPIO = 0, /* GPIO controls 'out' */ + P1_5_AMUXA = 4, /* Analog mux bus A */ + P1_5_AMUXB = 5, /* Analog mux bus B */ + P1_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P1_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P1_5_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:4 */ + P1_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:1 */ + P1_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:11 */ + P1_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:11 */ + P1_5_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:0 */ + P1_5_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:0 */ + P1_5_SCB7_SPI_SELECT2 = 20, /* Digital Active - scb[7].spi_select2:0 */ + + /* USBDM */ + USBDM_GPIO = 0, /* GPIO controls 'out' */ + + /* USBDP */ + USBDP_GPIO = 0, /* GPIO controls 'out' */ + + /* P2.0 */ + P2_0_GPIO = 0, /* GPIO controls 'out' */ + P2_0_AMUXA = 4, /* Analog mux bus A */ + P2_0_AMUXB = 5, /* Analog mux bus B */ + P2_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:4 */ + P2_0_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:1 */ + P2_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:12 */ + P2_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:12 */ + P2_0_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:0 */ + P2_0_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:0 */ + P2_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:0 */ + P2_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:0 */ + P2_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:0 */ + P2_0_PERI_TR_IO_INPUT4 = 24, /* Digital Active - peri.tr_io_input[4]:0 */ + P2_0_SDHC0_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[0].card_dat_3to0[0] */ + + /* P2.1 */ + P2_1_GPIO = 0, /* GPIO controls 'out' */ + P2_1_AMUXA = 4, /* Analog mux bus A */ + P2_1_AMUXB = 5, /* Analog mux bus B */ + P2_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:4 */ + P2_1_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:1 */ + P2_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:13 */ + P2_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:13 */ + P2_1_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:0 */ + P2_1_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:0 */ + P2_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:0 */ + P2_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:0 */ + P2_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:0 */ + P2_1_PERI_TR_IO_INPUT5 = 24, /* Digital Active - peri.tr_io_input[5]:0 */ + P2_1_SDHC0_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[0].card_dat_3to0[1] */ + + /* P2.2 */ + P2_2_GPIO = 0, /* GPIO controls 'out' */ + P2_2_AMUXA = 4, /* Analog mux bus A */ + P2_2_AMUXB = 5, /* Analog mux bus B */ + P2_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:4 */ + P2_2_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:1 */ + P2_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:14 */ + P2_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:14 */ + P2_2_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:0 */ + P2_2_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:0 */ + P2_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:0 */ + P2_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:0 */ + P2_2_SDHC0_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[0].card_dat_3to0[2] */ + + /* P2.3 */ + P2_3_GPIO = 0, /* GPIO controls 'out' */ + P2_3_AMUXA = 4, /* Analog mux bus A */ + P2_3_AMUXB = 5, /* Analog mux bus B */ + P2_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:4 */ + P2_3_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:1 */ + P2_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:15 */ + P2_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:15 */ + P2_3_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:0 */ + P2_3_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:0 */ + P2_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:0 */ + P2_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:0 */ + P2_3_SDHC0_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[0].card_dat_3to0[3] */ + + /* P2.4 */ + P2_4_GPIO = 0, /* GPIO controls 'out' */ + P2_4_AMUXA = 4, /* Analog mux bus A */ + P2_4_AMUXB = 5, /* Analog mux bus B */ + P2_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:5 */ + P2_4_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:1 */ + P2_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:16 */ + P2_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:16 */ + P2_4_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:0 */ + P2_4_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:0 */ + P2_4_SCB9_UART_RX = 18, /* Digital Active - scb[9].uart_rx:0 */ + P2_4_SCB9_I2C_SCL = 19, /* Digital Active - scb[9].i2c_scl:0 */ + P2_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:0 */ + P2_4_SDHC0_CARD_CMD = 26, /* Digital Active - sdhc[0].card_cmd */ + + /* P2.5 */ + P2_5_GPIO = 0, /* GPIO controls 'out' */ + P2_5_AMUXA = 4, /* Analog mux bus A */ + P2_5_AMUXB = 5, /* Analog mux bus B */ + P2_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:5 */ + P2_5_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:1 */ + P2_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:17 */ + P2_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:17 */ + P2_5_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:0 */ + P2_5_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:0 */ + P2_5_SCB9_UART_TX = 18, /* Digital Active - scb[9].uart_tx:0 */ + P2_5_SCB9_I2C_SDA = 19, /* Digital Active - scb[9].i2c_sda:0 */ + P2_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:0 */ + P2_5_SDHC0_CLK_CARD = 26, /* Digital Active - sdhc[0].clk_card */ + + /* P2.6 */ + P2_6_GPIO = 0, /* GPIO controls 'out' */ + P2_6_AMUXA = 4, /* Analog mux bus A */ + P2_6_AMUXB = 5, /* Analog mux bus B */ + P2_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:5 */ + P2_6_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:1 */ + P2_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:18 */ + P2_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:18 */ + P2_6_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:0 */ + P2_6_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:0 */ + P2_6_SCB9_UART_RTS = 18, /* Digital Active - scb[9].uart_rts:0 */ + P2_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:0 */ + P2_6_SDHC0_CARD_DETECT_N = 26, /* Digital Active - sdhc[0].card_detect_n */ + + /* P2.7 */ + P2_7_GPIO = 0, /* GPIO controls 'out' */ + P2_7_AMUXA = 4, /* Analog mux bus A */ + P2_7_AMUXB = 5, /* Analog mux bus B */ + P2_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P2_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P2_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:5 */ + P2_7_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:1 */ + P2_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:19 */ + P2_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:19 */ + P2_7_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:0 */ + P2_7_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:0 */ + P2_7_SCB9_UART_CTS = 18, /* Digital Active - scb[9].uart_cts:0 */ + P2_7_SDHC0_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[0].card_mech_write_prot */ + + /* P3.0 */ + P3_0_GPIO = 0, /* GPIO controls 'out' */ + P3_0_AMUXA = 4, /* Analog mux bus A */ + P3_0_AMUXB = 5, /* Analog mux bus B */ + P3_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_0_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:5 */ + P3_0_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:1 */ + P3_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:20 */ + P3_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:20 */ + P3_0_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:0 */ + P3_0_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:0 */ + P3_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:1 */ + P3_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:1 */ + P3_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:1 */ + P3_0_PERI_TR_IO_INPUT6 = 24, /* Digital Active - peri.tr_io_input[6]:0 */ + P3_0_SDHC0_IO_VOLT_SEL = 26, /* Digital Active - sdhc[0].io_volt_sel */ + + /* P3.1 */ + P3_1_GPIO = 0, /* GPIO controls 'out' */ + P3_1_AMUXA = 4, /* Analog mux bus A */ + P3_1_AMUXB = 5, /* Analog mux bus B */ + P3_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_1_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:5 */ + P3_1_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:1 */ + P3_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:21 */ + P3_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:21 */ + P3_1_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:0 */ + P3_1_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:0 */ + P3_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:1 */ + P3_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:1 */ + P3_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:1 */ + P3_1_PERI_TR_IO_INPUT7 = 24, /* Digital Active - peri.tr_io_input[7]:0 */ + P3_1_SDHC0_CARD_IF_PWR_EN = 26, /* Digital Active - sdhc[0].card_if_pwr_en */ + + /* P3.2 */ + P3_2_GPIO = 0, /* GPIO controls 'out' */ + P3_2_AMUXA = 4, /* Analog mux bus A */ + P3_2_AMUXB = 5, /* Analog mux bus B */ + P3_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_2_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:5 */ + P3_2_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:1 */ + P3_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:22 */ + P3_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:22 */ + P3_2_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:0 */ + P3_2_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:0 */ + P3_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:1 */ + P3_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:1 */ + + /* P3.3 */ + P3_3_GPIO = 0, /* GPIO controls 'out' */ + P3_3_AMUXA = 4, /* Analog mux bus A */ + P3_3_AMUXB = 5, /* Analog mux bus B */ + P3_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_3_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:5 */ + P3_3_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:1 */ + P3_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:23 */ + P3_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:23 */ + P3_3_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:0 */ + P3_3_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:0 */ + P3_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:1 */ + P3_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:1 */ + + /* P3.4 */ + P3_4_GPIO = 0, /* GPIO controls 'out' */ + P3_4_AMUXA = 4, /* Analog mux bus A */ + P3_4_AMUXB = 5, /* Analog mux bus B */ + P3_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_4_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:5 */ + P3_4_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:1 */ + P3_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:24 */ + P3_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:24 */ + P3_4_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:0 */ + P3_4_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:0 */ + P3_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:1 */ + + /* P3.5 */ + P3_5_GPIO = 0, /* GPIO controls 'out' */ + P3_5_AMUXA = 4, /* Analog mux bus A */ + P3_5_AMUXB = 5, /* Analog mux bus B */ + P3_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P3_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P3_5_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:5 */ + P3_5_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:1 */ + P3_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:25 */ + P3_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:25 */ + P3_5_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:0 */ + P3_5_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:0 */ + P3_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:1 */ + + /* P4.0 */ + P4_0_GPIO = 0, /* GPIO controls 'out' */ + P4_0_AMUXA = 4, /* Analog mux bus A */ + P4_0_AMUXB = 5, /* Analog mux bus B */ + P4_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_0_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:5 */ + P4_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:1 */ + P4_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:26 */ + P4_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:26 */ + P4_0_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:0 */ + P4_0_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:0 */ + P4_0_SCB7_UART_RX = 18, /* Digital Active - scb[7].uart_rx:1 */ + P4_0_SCB7_I2C_SCL = 19, /* Digital Active - scb[7].i2c_scl:1 */ + P4_0_SCB7_SPI_MOSI = 20, /* Digital Active - scb[7].spi_mosi:1 */ + P4_0_PERI_TR_IO_INPUT8 = 24, /* Digital Active - peri.tr_io_input[8]:0 */ + + /* P4.1 */ + P4_1_GPIO = 0, /* GPIO controls 'out' */ + P4_1_AMUXA = 4, /* Analog mux bus A */ + P4_1_AMUXB = 5, /* Analog mux bus B */ + P4_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_1_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:5 */ + P4_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:1 */ + P4_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:27 */ + P4_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:27 */ + P4_1_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:0 */ + P4_1_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:0 */ + P4_1_SCB7_UART_TX = 18, /* Digital Active - scb[7].uart_tx:1 */ + P4_1_SCB7_I2C_SDA = 19, /* Digital Active - scb[7].i2c_sda:1 */ + P4_1_SCB7_SPI_MISO = 20, /* Digital Active - scb[7].spi_miso:1 */ + P4_1_PERI_TR_IO_INPUT9 = 24, /* Digital Active - peri.tr_io_input[9]:0 */ + + /* P4.2 */ + P4_2_GPIO = 0, /* GPIO controls 'out' */ + P4_2_AMUXA = 4, /* Analog mux bus A */ + P4_2_AMUXB = 5, /* Analog mux bus B */ + P4_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_2_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:5 */ + P4_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:1 */ + P4_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:28 */ + P4_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:28 */ + P4_2_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:0 */ + P4_2_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:0 */ + P4_2_SCB7_UART_RTS = 18, /* Digital Active - scb[7].uart_rts:1 */ + P4_2_SCB7_SPI_CLK = 20, /* Digital Active - scb[7].spi_clk:1 */ + + /* P4.3 */ + P4_3_GPIO = 0, /* GPIO controls 'out' */ + P4_3_AMUXA = 4, /* Analog mux bus A */ + P4_3_AMUXB = 5, /* Analog mux bus B */ + P4_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P4_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P4_3_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:5 */ + P4_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:1 */ + P4_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:29 */ + P4_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:29 */ + P4_3_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:0 */ + P4_3_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:0 */ + P4_3_SCB7_UART_CTS = 18, /* Digital Active - scb[7].uart_cts:1 */ + P4_3_SCB7_SPI_SELECT0 = 20, /* Digital Active - scb[7].spi_select0:1 */ + + /* P5.0 */ + P5_0_GPIO = 0, /* GPIO controls 'out' */ + P5_0_AMUXA = 4, /* Analog mux bus A */ + P5_0_AMUXB = 5, /* Analog mux bus B */ + P5_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:0 */ + P5_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:0 */ + P5_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:30 */ + P5_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:30 */ + P5_0_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:0 */ + P5_0_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:0 */ + P5_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:0 */ + P5_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:0 */ + P5_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:0 */ + P5_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:0 */ + P5_0_PERI_TR_IO_INPUT10 = 24, /* Digital Active - peri.tr_io_input[10]:0 */ + + /* P5.1 */ + P5_1_GPIO = 0, /* GPIO controls 'out' */ + P5_1_AMUXA = 4, /* Analog mux bus A */ + P5_1_AMUXB = 5, /* Analog mux bus B */ + P5_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:0 */ + P5_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:0 */ + P5_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:31 */ + P5_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:31 */ + P5_1_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:0 */ + P5_1_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:0 */ + P5_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:0 */ + P5_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:0 */ + P5_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:0 */ + P5_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:0 */ + P5_1_PERI_TR_IO_INPUT11 = 24, /* Digital Active - peri.tr_io_input[11]:0 */ + + /* P5.2 */ + P5_2_GPIO = 0, /* GPIO controls 'out' */ + P5_2_AMUXA = 4, /* Analog mux bus A */ + P5_2_AMUXB = 5, /* Analog mux bus B */ + P5_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:0 */ + P5_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:0 */ + P5_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:32 */ + P5_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:32 */ + P5_2_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:0 */ + P5_2_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:0 */ + P5_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:0 */ + P5_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:0 */ + P5_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:0 */ + + /* P5.3 */ + P5_3_GPIO = 0, /* GPIO controls 'out' */ + P5_3_AMUXA = 4, /* Analog mux bus A */ + P5_3_AMUXB = 5, /* Analog mux bus B */ + P5_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:0 */ + P5_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:0 */ + P5_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:33 */ + P5_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:33 */ + P5_3_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:0 */ + P5_3_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:0 */ + P5_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:0 */ + P5_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:0 */ + P5_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:0 */ + + /* P5.4 */ + P5_4_GPIO = 0, /* GPIO controls 'out' */ + P5_4_AMUXA = 4, /* Analog mux bus A */ + P5_4_AMUXB = 5, /* Analog mux bus B */ + P5_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:0 */ + P5_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:0 */ + P5_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:34 */ + P5_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:34 */ + P5_4_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:0 */ + P5_4_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:0 */ + P5_4_SCB10_UART_RX = 18, /* Digital Active - scb[10].uart_rx:0 */ + P5_4_SCB10_I2C_SCL = 19, /* Digital Active - scb[10].i2c_scl:0 */ + P5_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:0 */ + P5_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:0 */ + + /* P5.5 */ + P5_5_GPIO = 0, /* GPIO controls 'out' */ + P5_5_AMUXA = 4, /* Analog mux bus A */ + P5_5_AMUXB = 5, /* Analog mux bus B */ + P5_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:0 */ + P5_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:0 */ + P5_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:35 */ + P5_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:35 */ + P5_5_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:0 */ + P5_5_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:0 */ + P5_5_SCB10_UART_TX = 18, /* Digital Active - scb[10].uart_tx:0 */ + P5_5_SCB10_I2C_SDA = 19, /* Digital Active - scb[10].i2c_sda:0 */ + P5_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:0 */ + P5_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:0 */ + + /* P5.6 */ + P5_6_GPIO = 0, /* GPIO controls 'out' */ + P5_6_AMUXA = 4, /* Analog mux bus A */ + P5_6_AMUXB = 5, /* Analog mux bus B */ + P5_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:0 */ + P5_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:0 */ + P5_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:36 */ + P5_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:36 */ + P5_6_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:0 */ + P5_6_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:0 */ + P5_6_SCB10_UART_RTS = 18, /* Digital Active - scb[10].uart_rts:0 */ + P5_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:0 */ + P5_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:0 */ + + /* P5.7 */ + P5_7_GPIO = 0, /* GPIO controls 'out' */ + P5_7_AMUXA = 4, /* Analog mux bus A */ + P5_7_AMUXB = 5, /* Analog mux bus B */ + P5_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P5_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P5_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:0 */ + P5_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:0 */ + P5_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:37 */ + P5_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:37 */ + P5_7_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:0 */ + P5_7_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:0 */ + P5_7_SCB10_UART_CTS = 18, /* Digital Active - scb[10].uart_cts:0 */ + P5_7_SCB3_SPI_SELECT3 = 20, /* Digital Active - scb[3].spi_select3:0 */ + + /* P6.0 */ + P6_0_GPIO = 0, /* GPIO controls 'out' */ + P6_0_AMUXA = 4, /* Analog mux bus A */ + P6_0_AMUXB = 5, /* Analog mux bus B */ + P6_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:1 */ + P6_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:0 */ + P6_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:38 */ + P6_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:38 */ + P6_0_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:0 */ + P6_0_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:0 */ + P6_0_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:0 */ + P6_0_SCB3_UART_RX = 18, /* Digital Active - scb[3].uart_rx:0 */ + P6_0_SCB3_I2C_SCL = 19, /* Digital Active - scb[3].i2c_scl:0 */ + P6_0_SCB3_SPI_MOSI = 20, /* Digital Active - scb[3].spi_mosi:0 */ + P6_0_CPUSS_FAULT_OUT0 = 25, /* Digital Active - cpuss.fault_out[0] */ + P6_0_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:0 */ + + /* P6.1 */ + P6_1_GPIO = 0, /* GPIO controls 'out' */ + P6_1_AMUXA = 4, /* Analog mux bus A */ + P6_1_AMUXB = 5, /* Analog mux bus B */ + P6_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:1 */ + P6_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:0 */ + P6_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:39 */ + P6_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:39 */ + P6_1_LCD_COM39 = 12, /* Digital Deep Sleep - lcd.com[39]:0 */ + P6_1_LCD_SEG39 = 13, /* Digital Deep Sleep - lcd.seg[39]:0 */ + P6_1_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:0 */ + P6_1_SCB3_UART_TX = 18, /* Digital Active - scb[3].uart_tx:0 */ + P6_1_SCB3_I2C_SDA = 19, /* Digital Active - scb[3].i2c_sda:0 */ + P6_1_SCB3_SPI_MISO = 20, /* Digital Active - scb[3].spi_miso:0 */ + P6_1_CPUSS_FAULT_OUT1 = 25, /* Digital Active - cpuss.fault_out[1] */ + P6_1_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:0 */ + + /* P6.2 */ + P6_2_GPIO = 0, /* GPIO controls 'out' */ + P6_2_AMUXA = 4, /* Analog mux bus A */ + P6_2_AMUXB = 5, /* Analog mux bus B */ + P6_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:1 */ + P6_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:0 */ + P6_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:40 */ + P6_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:40 */ + P6_2_LCD_COM40 = 12, /* Digital Deep Sleep - lcd.com[40]:0 */ + P6_2_LCD_SEG40 = 13, /* Digital Deep Sleep - lcd.seg[40]:0 */ + P6_2_SCB3_UART_RTS = 18, /* Digital Active - scb[3].uart_rts:0 */ + P6_2_SCB3_SPI_CLK = 20, /* Digital Active - scb[3].spi_clk:0 */ + P6_2_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:0 */ + + /* P6.3 */ + P6_3_GPIO = 0, /* GPIO controls 'out' */ + P6_3_AMUXA = 4, /* Analog mux bus A */ + P6_3_AMUXB = 5, /* Analog mux bus B */ + P6_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:1 */ + P6_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:0 */ + P6_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:41 */ + P6_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:41 */ + P6_3_LCD_COM41 = 12, /* Digital Deep Sleep - lcd.com[41]:0 */ + P6_3_LCD_SEG41 = 13, /* Digital Deep Sleep - lcd.seg[41]:0 */ + P6_3_SCB3_UART_CTS = 18, /* Digital Active - scb[3].uart_cts:0 */ + P6_3_SCB3_SPI_SELECT0 = 20, /* Digital Active - scb[3].spi_select0:0 */ + P6_3_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:0 */ + + /* P6.4 */ + P6_4_GPIO = 0, /* GPIO controls 'out' */ + P6_4_AMUXA = 4, /* Analog mux bus A */ + P6_4_AMUXB = 5, /* Analog mux bus B */ + P6_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:1 */ + P6_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:0 */ + P6_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:42 */ + P6_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:42 */ + P6_4_LCD_COM42 = 12, /* Digital Deep Sleep - lcd.com[42]:0 */ + P6_4_LCD_SEG42 = 13, /* Digital Deep Sleep - lcd.seg[42]:0 */ + P6_4_SCB8_I2C_SCL = 14, /* Digital Deep Sleep - scb[8].i2c_scl:1 */ + P6_4_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:2 */ + P6_4_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:2 */ + P6_4_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:2 */ + P6_4_PERI_TR_IO_INPUT12 = 24, /* Digital Active - peri.tr_io_input[12]:0 */ + P6_4_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:1 */ + P6_4_CPUSS_SWJ_SWO_TDO = 29, /* Digital Deep Sleep - cpuss.swj_swo_tdo */ + P6_4_SCB8_SPI_MOSI = 30, /* Digital Deep Sleep - scb[8].spi_mosi:1 */ + P6_4_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:0 */ + + /* P6.5 */ + P6_5_GPIO = 0, /* GPIO controls 'out' */ + P6_5_AMUXA = 4, /* Analog mux bus A */ + P6_5_AMUXB = 5, /* Analog mux bus B */ + P6_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:1 */ + P6_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:0 */ + P6_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:43 */ + P6_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:43 */ + P6_5_LCD_COM43 = 12, /* Digital Deep Sleep - lcd.com[43]:0 */ + P6_5_LCD_SEG43 = 13, /* Digital Deep Sleep - lcd.seg[43]:0 */ + P6_5_SCB8_I2C_SDA = 14, /* Digital Deep Sleep - scb[8].i2c_sda:1 */ + P6_5_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:2 */ + P6_5_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:2 */ + P6_5_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:2 */ + P6_5_PERI_TR_IO_INPUT13 = 24, /* Digital Active - peri.tr_io_input[13]:0 */ + P6_5_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:1 */ + P6_5_CPUSS_SWJ_SWDOE_TDI = 29, /* Digital Deep Sleep - cpuss.swj_swdoe_tdi */ + P6_5_SCB8_SPI_MISO = 30, /* Digital Deep Sleep - scb[8].spi_miso:1 */ + P6_5_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:0 */ + + /* P6.6 */ + P6_6_GPIO = 0, /* GPIO controls 'out' */ + P6_6_AMUXA = 4, /* Analog mux bus A */ + P6_6_AMUXB = 5, /* Analog mux bus B */ + P6_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:1 */ + P6_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:0 */ + P6_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:44 */ + P6_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:44 */ + P6_6_LCD_COM44 = 12, /* Digital Deep Sleep - lcd.com[44]:0 */ + P6_6_LCD_SEG44 = 13, /* Digital Deep Sleep - lcd.seg[44]:0 */ + P6_6_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:2 */ + P6_6_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:2 */ + P6_6_CPUSS_SWJ_SWDIO_TMS = 29, /* Digital Deep Sleep - cpuss.swj_swdio_tms */ + P6_6_SCB8_SPI_CLK = 30, /* Digital Deep Sleep - scb[8].spi_clk:1 */ + + /* P6.7 */ + P6_7_GPIO = 0, /* GPIO controls 'out' */ + P6_7_AMUXA = 4, /* Analog mux bus A */ + P6_7_AMUXB = 5, /* Analog mux bus B */ + P6_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P6_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P6_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:1 */ + P6_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:0 */ + P6_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:45 */ + P6_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:45 */ + P6_7_LCD_COM45 = 12, /* Digital Deep Sleep - lcd.com[45]:0 */ + P6_7_LCD_SEG45 = 13, /* Digital Deep Sleep - lcd.seg[45]:0 */ + P6_7_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:2 */ + P6_7_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:2 */ + P6_7_CPUSS_SWJ_SWCLK_TCLK = 29, /* Digital Deep Sleep - cpuss.swj_swclk_tclk */ + P6_7_SCB8_SPI_SELECT0 = 30, /* Digital Deep Sleep - scb[8].spi_select0:1 */ + + /* P7.0 */ + P7_0_GPIO = 0, /* GPIO controls 'out' */ + P7_0_AMUXA = 4, /* Analog mux bus A */ + P7_0_AMUXB = 5, /* Analog mux bus B */ + P7_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:1 */ + P7_0_TCPWM1_LINE12 = 9, /* Digital Active - tcpwm[1].line[12]:0 */ + P7_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:46 */ + P7_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:46 */ + P7_0_LCD_COM46 = 12, /* Digital Deep Sleep - lcd.com[46]:0 */ + P7_0_LCD_SEG46 = 13, /* Digital Deep Sleep - lcd.seg[46]:0 */ + P7_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:1 */ + P7_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:1 */ + P7_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:1 */ + P7_0_PERI_TR_IO_INPUT14 = 24, /* Digital Active - peri.tr_io_input[14]:0 */ + P7_0_CPUSS_TRACE_CLOCK = 26, /* Digital Active - cpuss.trace_clock */ + + /* P7.1 */ + P7_1_GPIO = 0, /* GPIO controls 'out' */ + P7_1_AMUXA = 4, /* Analog mux bus A */ + P7_1_AMUXB = 5, /* Analog mux bus B */ + P7_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:1 */ + P7_1_TCPWM1_LINE_COMPL12 = 9, /* Digital Active - tcpwm[1].line_compl[12]:0 */ + P7_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:47 */ + P7_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:47 */ + P7_1_LCD_COM47 = 12, /* Digital Deep Sleep - lcd.com[47]:0 */ + P7_1_LCD_SEG47 = 13, /* Digital Deep Sleep - lcd.seg[47]:0 */ + P7_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:1 */ + P7_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:1 */ + P7_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:1 */ + P7_1_PERI_TR_IO_INPUT15 = 24, /* Digital Active - peri.tr_io_input[15]:0 */ + + /* P7.2 */ + P7_2_GPIO = 0, /* GPIO controls 'out' */ + P7_2_AMUXA = 4, /* Analog mux bus A */ + P7_2_AMUXB = 5, /* Analog mux bus B */ + P7_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:1 */ + P7_2_TCPWM1_LINE13 = 9, /* Digital Active - tcpwm[1].line[13]:0 */ + P7_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:48 */ + P7_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:48 */ + P7_2_LCD_COM48 = 12, /* Digital Deep Sleep - lcd.com[48]:0 */ + P7_2_LCD_SEG48 = 13, /* Digital Deep Sleep - lcd.seg[48]:0 */ + P7_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:1 */ + P7_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:1 */ + + /* P7.3 */ + P7_3_GPIO = 0, /* GPIO controls 'out' */ + P7_3_AMUXA = 4, /* Analog mux bus A */ + P7_3_AMUXB = 5, /* Analog mux bus B */ + P7_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:1 */ + P7_3_TCPWM1_LINE_COMPL13 = 9, /* Digital Active - tcpwm[1].line_compl[13]:0 */ + P7_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:49 */ + P7_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:49 */ + P7_3_LCD_COM49 = 12, /* Digital Deep Sleep - lcd.com[49]:0 */ + P7_3_LCD_SEG49 = 13, /* Digital Deep Sleep - lcd.seg[49]:0 */ + P7_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:1 */ + P7_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:1 */ + + /* P7.4 */ + P7_4_GPIO = 0, /* GPIO controls 'out' */ + P7_4_AMUXA = 4, /* Analog mux bus A */ + P7_4_AMUXB = 5, /* Analog mux bus B */ + P7_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:1 */ + P7_4_TCPWM1_LINE14 = 9, /* Digital Active - tcpwm[1].line[14]:0 */ + P7_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:50 */ + P7_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:50 */ + P7_4_LCD_COM50 = 12, /* Digital Deep Sleep - lcd.com[50]:0 */ + P7_4_LCD_SEG50 = 13, /* Digital Deep Sleep - lcd.seg[50]:0 */ + P7_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:1 */ + P7_4_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:2 */ + + /* P7.5 */ + P7_5_GPIO = 0, /* GPIO controls 'out' */ + P7_5_AMUXA = 4, /* Analog mux bus A */ + P7_5_AMUXB = 5, /* Analog mux bus B */ + P7_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:1 */ + P7_5_TCPWM1_LINE_COMPL14 = 9, /* Digital Active - tcpwm[1].line_compl[14]:0 */ + P7_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:51 */ + P7_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:51 */ + P7_5_LCD_COM51 = 12, /* Digital Deep Sleep - lcd.com[51]:0 */ + P7_5_LCD_SEG51 = 13, /* Digital Deep Sleep - lcd.seg[51]:0 */ + P7_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:1 */ + P7_5_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:2 */ + + /* P7.6 */ + P7_6_GPIO = 0, /* GPIO controls 'out' */ + P7_6_AMUXA = 4, /* Analog mux bus A */ + P7_6_AMUXB = 5, /* Analog mux bus B */ + P7_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:1 */ + P7_6_TCPWM1_LINE15 = 9, /* Digital Active - tcpwm[1].line[15]:0 */ + P7_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:52 */ + P7_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:52 */ + P7_6_LCD_COM52 = 12, /* Digital Deep Sleep - lcd.com[52]:0 */ + P7_6_LCD_SEG52 = 13, /* Digital Deep Sleep - lcd.seg[52]:0 */ + P7_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:1 */ + P7_6_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:2 */ + + /* P7.7 */ + P7_7_GPIO = 0, /* GPIO controls 'out' */ + P7_7_AMUXA = 4, /* Analog mux bus A */ + P7_7_AMUXB = 5, /* Analog mux bus B */ + P7_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P7_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P7_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:1 */ + P7_7_TCPWM1_LINE_COMPL15 = 9, /* Digital Active - tcpwm[1].line_compl[15]:0 */ + P7_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:53 */ + P7_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:53 */ + P7_7_LCD_COM53 = 12, /* Digital Deep Sleep - lcd.com[53]:0 */ + P7_7_LCD_SEG53 = 13, /* Digital Deep Sleep - lcd.seg[53]:0 */ + P7_7_SCB3_SPI_SELECT1 = 20, /* Digital Active - scb[3].spi_select1:0 */ + P7_7_CPUSS_CLK_FM_PUMP = 21, /* Digital Active - cpuss.clk_fm_pump */ + P7_7_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:2 */ + + /* P8.0 */ + P8_0_GPIO = 0, /* GPIO controls 'out' */ + P8_0_AMUXA = 4, /* Analog mux bus A */ + P8_0_AMUXB = 5, /* Analog mux bus B */ + P8_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:2 */ + P8_0_TCPWM1_LINE16 = 9, /* Digital Active - tcpwm[1].line[16]:0 */ + P8_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:54 */ + P8_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:54 */ + P8_0_LCD_COM54 = 12, /* Digital Deep Sleep - lcd.com[54]:0 */ + P8_0_LCD_SEG54 = 13, /* Digital Deep Sleep - lcd.seg[54]:0 */ + P8_0_SCB4_UART_RX = 18, /* Digital Active - scb[4].uart_rx:0 */ + P8_0_SCB4_I2C_SCL = 19, /* Digital Active - scb[4].i2c_scl:0 */ + P8_0_SCB4_SPI_MOSI = 20, /* Digital Active - scb[4].spi_mosi:0 */ + P8_0_PERI_TR_IO_INPUT16 = 24, /* Digital Active - peri.tr_io_input[16]:0 */ + + /* P8.1 */ + P8_1_GPIO = 0, /* GPIO controls 'out' */ + P8_1_AMUXA = 4, /* Analog mux bus A */ + P8_1_AMUXB = 5, /* Analog mux bus B */ + P8_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:2 */ + P8_1_TCPWM1_LINE_COMPL16 = 9, /* Digital Active - tcpwm[1].line_compl[16]:0 */ + P8_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:55 */ + P8_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:55 */ + P8_1_LCD_COM55 = 12, /* Digital Deep Sleep - lcd.com[55]:0 */ + P8_1_LCD_SEG55 = 13, /* Digital Deep Sleep - lcd.seg[55]:0 */ + P8_1_SCB4_UART_TX = 18, /* Digital Active - scb[4].uart_tx:0 */ + P8_1_SCB4_I2C_SDA = 19, /* Digital Active - scb[4].i2c_sda:0 */ + P8_1_SCB4_SPI_MISO = 20, /* Digital Active - scb[4].spi_miso:0 */ + P8_1_PERI_TR_IO_INPUT17 = 24, /* Digital Active - peri.tr_io_input[17]:0 */ + + /* P8.2 */ + P8_2_GPIO = 0, /* GPIO controls 'out' */ + P8_2_AMUXA = 4, /* Analog mux bus A */ + P8_2_AMUXB = 5, /* Analog mux bus B */ + P8_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:2 */ + P8_2_TCPWM1_LINE17 = 9, /* Digital Active - tcpwm[1].line[17]:0 */ + P8_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:56 */ + P8_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:56 */ + P8_2_LCD_COM56 = 12, /* Digital Deep Sleep - lcd.com[56]:0 */ + P8_2_LCD_SEG56 = 13, /* Digital Deep Sleep - lcd.seg[56]:0 */ + P8_2_LPCOMP_DSI_COMP0 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp0:0 */ + P8_2_SCB4_UART_RTS = 18, /* Digital Active - scb[4].uart_rts:0 */ + P8_2_SCB4_SPI_CLK = 20, /* Digital Active - scb[4].spi_clk:0 */ + + /* P8.3 */ + P8_3_GPIO = 0, /* GPIO controls 'out' */ + P8_3_AMUXA = 4, /* Analog mux bus A */ + P8_3_AMUXB = 5, /* Analog mux bus B */ + P8_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:2 */ + P8_3_TCPWM1_LINE_COMPL17 = 9, /* Digital Active - tcpwm[1].line_compl[17]:0 */ + P8_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:57 */ + P8_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:57 */ + P8_3_LCD_COM57 = 12, /* Digital Deep Sleep - lcd.com[57]:0 */ + P8_3_LCD_SEG57 = 13, /* Digital Deep Sleep - lcd.seg[57]:0 */ + P8_3_LPCOMP_DSI_COMP1 = 15, /* Digital Deep Sleep - lpcomp.dsi_comp1:0 */ + P8_3_SCB4_UART_CTS = 18, /* Digital Active - scb[4].uart_cts:0 */ + P8_3_SCB4_SPI_SELECT0 = 20, /* Digital Active - scb[4].spi_select0:0 */ + + /* P8.4 */ + P8_4_GPIO = 0, /* GPIO controls 'out' */ + P8_4_AMUXA = 4, /* Analog mux bus A */ + P8_4_AMUXB = 5, /* Analog mux bus B */ + P8_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:2 */ + P8_4_TCPWM1_LINE18 = 9, /* Digital Active - tcpwm[1].line[18]:0 */ + P8_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:58 */ + P8_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:58 */ + P8_4_LCD_COM58 = 12, /* Digital Deep Sleep - lcd.com[58]:0 */ + P8_4_LCD_SEG58 = 13, /* Digital Deep Sleep - lcd.seg[58]:0 */ + P8_4_SCB11_UART_RX = 18, /* Digital Active - scb[11].uart_rx:0 */ + P8_4_SCB11_I2C_SCL = 19, /* Digital Active - scb[11].i2c_scl:0 */ + P8_4_SCB4_SPI_SELECT1 = 20, /* Digital Active - scb[4].spi_select1:0 */ + + /* P8.5 */ + P8_5_GPIO = 0, /* GPIO controls 'out' */ + P8_5_AMUXA = 4, /* Analog mux bus A */ + P8_5_AMUXB = 5, /* Analog mux bus B */ + P8_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:2 */ + P8_5_TCPWM1_LINE_COMPL18 = 9, /* Digital Active - tcpwm[1].line_compl[18]:0 */ + P8_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:59 */ + P8_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:59 */ + P8_5_LCD_COM59 = 12, /* Digital Deep Sleep - lcd.com[59]:0 */ + P8_5_LCD_SEG59 = 13, /* Digital Deep Sleep - lcd.seg[59]:0 */ + P8_5_SCB11_UART_TX = 18, /* Digital Active - scb[11].uart_tx:0 */ + P8_5_SCB11_I2C_SDA = 19, /* Digital Active - scb[11].i2c_sda:0 */ + P8_5_SCB4_SPI_SELECT2 = 20, /* Digital Active - scb[4].spi_select2:0 */ + + /* P8.6 */ + P8_6_GPIO = 0, /* GPIO controls 'out' */ + P8_6_AMUXA = 4, /* Analog mux bus A */ + P8_6_AMUXB = 5, /* Analog mux bus B */ + P8_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:2 */ + P8_6_TCPWM1_LINE19 = 9, /* Digital Active - tcpwm[1].line[19]:0 */ + P8_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:60 */ + P8_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:60 */ + P8_6_LCD_COM60 = 12, /* Digital Deep Sleep - lcd.com[60]:0 */ + P8_6_LCD_SEG60 = 13, /* Digital Deep Sleep - lcd.seg[60]:0 */ + P8_6_SCB11_UART_RTS = 18, /* Digital Active - scb[11].uart_rts:0 */ + P8_6_SCB4_SPI_SELECT3 = 20, /* Digital Active - scb[4].spi_select3:0 */ + + /* P8.7 */ + P8_7_GPIO = 0, /* GPIO controls 'out' */ + P8_7_AMUXA = 4, /* Analog mux bus A */ + P8_7_AMUXB = 5, /* Analog mux bus B */ + P8_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P8_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P8_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:2 */ + P8_7_TCPWM1_LINE_COMPL19 = 9, /* Digital Active - tcpwm[1].line_compl[19]:0 */ + P8_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:61 */ + P8_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:61 */ + P8_7_LCD_COM61 = 12, /* Digital Deep Sleep - lcd.com[61]:0 */ + P8_7_LCD_SEG61 = 13, /* Digital Deep Sleep - lcd.seg[61]:0 */ + P8_7_SCB11_UART_CTS = 18, /* Digital Active - scb[11].uart_cts:0 */ + P8_7_SCB3_SPI_SELECT2 = 20, /* Digital Active - scb[3].spi_select2:0 */ + + /* P9.0 */ + P9_0_GPIO = 0, /* GPIO controls 'out' */ + P9_0_AMUXA = 4, /* Analog mux bus A */ + P9_0_AMUXB = 5, /* Analog mux bus B */ + P9_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:2 */ + P9_0_TCPWM1_LINE20 = 9, /* Digital Active - tcpwm[1].line[20]:0 */ + P9_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:62 */ + P9_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:62 */ + P9_0_LCD_COM0 = 12, /* Digital Deep Sleep - lcd.com[0]:1 */ + P9_0_LCD_SEG0 = 13, /* Digital Deep Sleep - lcd.seg[0]:1 */ + P9_0_SCB2_UART_RX = 18, /* Digital Active - scb[2].uart_rx:0 */ + P9_0_SCB2_I2C_SCL = 19, /* Digital Active - scb[2].i2c_scl:0 */ + P9_0_SCB2_SPI_MOSI = 20, /* Digital Active - scb[2].spi_mosi:0 */ + P9_0_AUDIOSS0_CLK_I2S_IF = 22, /* Digital Active - audioss[0].clk_i2s_if:1 */ + P9_0_PERI_TR_IO_INPUT18 = 24, /* Digital Active - peri.tr_io_input[18]:0 */ + P9_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:0 */ + + /* P9.1 */ + P9_1_GPIO = 0, /* GPIO controls 'out' */ + P9_1_AMUXA = 4, /* Analog mux bus A */ + P9_1_AMUXB = 5, /* Analog mux bus B */ + P9_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:2 */ + P9_1_TCPWM1_LINE_COMPL20 = 9, /* Digital Active - tcpwm[1].line_compl[20]:0 */ + P9_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:63 */ + P9_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:63 */ + P9_1_LCD_COM1 = 12, /* Digital Deep Sleep - lcd.com[1]:1 */ + P9_1_LCD_SEG1 = 13, /* Digital Deep Sleep - lcd.seg[1]:1 */ + P9_1_SCB2_UART_TX = 18, /* Digital Active - scb[2].uart_tx:0 */ + P9_1_SCB2_I2C_SDA = 19, /* Digital Active - scb[2].i2c_sda:0 */ + P9_1_SCB2_SPI_MISO = 20, /* Digital Active - scb[2].spi_miso:0 */ + P9_1_AUDIOSS0_TX_SCK = 22, /* Digital Active - audioss[0].tx_sck:1 */ + P9_1_PERI_TR_IO_INPUT19 = 24, /* Digital Active - peri.tr_io_input[19]:0 */ + P9_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:0 */ + P9_1_SRSS_DDFT_PIN_IN0 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[0]:1 */ + + /* P9.2 */ + P9_2_GPIO = 0, /* GPIO controls 'out' */ + P9_2_AMUXA = 4, /* Analog mux bus A */ + P9_2_AMUXB = 5, /* Analog mux bus B */ + P9_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:2 */ + P9_2_TCPWM1_LINE21 = 9, /* Digital Active - tcpwm[1].line[21]:0 */ + P9_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:64 */ + P9_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:64 */ + P9_2_LCD_COM2 = 12, /* Digital Deep Sleep - lcd.com[2]:1 */ + P9_2_LCD_SEG2 = 13, /* Digital Deep Sleep - lcd.seg[2]:1 */ + P9_2_SCB2_UART_RTS = 18, /* Digital Active - scb[2].uart_rts:0 */ + P9_2_SCB2_SPI_CLK = 20, /* Digital Active - scb[2].spi_clk:0 */ + P9_2_AUDIOSS0_TX_WS = 22, /* Digital Active - audioss[0].tx_ws:1 */ + P9_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:0 */ + + /* P9.3 */ + P9_3_GPIO = 0, /* GPIO controls 'out' */ + P9_3_AMUXA = 4, /* Analog mux bus A */ + P9_3_AMUXB = 5, /* Analog mux bus B */ + P9_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:2 */ + P9_3_TCPWM1_LINE_COMPL21 = 9, /* Digital Active - tcpwm[1].line_compl[21]:0 */ + P9_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:65 */ + P9_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:65 */ + P9_3_LCD_COM3 = 12, /* Digital Deep Sleep - lcd.com[3]:1 */ + P9_3_LCD_SEG3 = 13, /* Digital Deep Sleep - lcd.seg[3]:1 */ + P9_3_SCB2_UART_CTS = 18, /* Digital Active - scb[2].uart_cts:0 */ + P9_3_SCB2_SPI_SELECT0 = 20, /* Digital Active - scb[2].spi_select0:0 */ + P9_3_AUDIOSS0_TX_SDO = 22, /* Digital Active - audioss[0].tx_sdo:1 */ + P9_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:0 */ + P9_3_SRSS_DDFT_PIN_IN1 = 31, /* Digital Deep Sleep - srss.ddft_pin_in[1]:1 */ + + /* P9.4 */ + P9_4_GPIO = 0, /* GPIO controls 'out' */ + P9_4_AMUXA = 4, /* Analog mux bus A */ + P9_4_AMUXB = 5, /* Analog mux bus B */ + P9_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_4_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:5 */ + P9_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:2 */ + P9_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:66 */ + P9_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:66 */ + P9_4_LCD_COM4 = 12, /* Digital Deep Sleep - lcd.com[4]:1 */ + P9_4_LCD_SEG4 = 13, /* Digital Deep Sleep - lcd.seg[4]:1 */ + P9_4_SCB2_SPI_SELECT1 = 20, /* Digital Active - scb[2].spi_select1:0 */ + P9_4_AUDIOSS0_RX_SCK = 22, /* Digital Active - audioss[0].rx_sck:1 */ + + /* P9.5 */ + P9_5_GPIO = 0, /* GPIO controls 'out' */ + P9_5_AMUXA = 4, /* Analog mux bus A */ + P9_5_AMUXB = 5, /* Analog mux bus B */ + P9_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_5_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:5 */ + P9_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:2 */ + P9_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:67 */ + P9_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:67 */ + P9_5_LCD_COM5 = 12, /* Digital Deep Sleep - lcd.com[5]:1 */ + P9_5_LCD_SEG5 = 13, /* Digital Deep Sleep - lcd.seg[5]:1 */ + P9_5_SCB2_SPI_SELECT2 = 20, /* Digital Active - scb[2].spi_select2:0 */ + P9_5_AUDIOSS0_RX_WS = 22, /* Digital Active - audioss[0].rx_ws:1 */ + + /* P9.6 */ + P9_6_GPIO = 0, /* GPIO controls 'out' */ + P9_6_AMUXA = 4, /* Analog mux bus A */ + P9_6_AMUXB = 5, /* Analog mux bus B */ + P9_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_6_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:6 */ + P9_6_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:2 */ + P9_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:68 */ + P9_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:68 */ + P9_6_LCD_COM6 = 12, /* Digital Deep Sleep - lcd.com[6]:1 */ + P9_6_LCD_SEG6 = 13, /* Digital Deep Sleep - lcd.seg[6]:1 */ + P9_6_SCB2_SPI_SELECT3 = 20, /* Digital Active - scb[2].spi_select3:0 */ + P9_6_AUDIOSS0_RX_SDI = 22, /* Digital Active - audioss[0].rx_sdi:1 */ + + /* P9.7 */ + P9_7_GPIO = 0, /* GPIO controls 'out' */ + P9_7_AMUXA = 4, /* Analog mux bus A */ + P9_7_AMUXB = 5, /* Analog mux bus B */ + P9_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P9_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P9_7_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:6 */ + P9_7_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:2 */ + P9_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:69 */ + P9_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:69 */ + P9_7_LCD_COM7 = 12, /* Digital Deep Sleep - lcd.com[7]:1 */ + P9_7_LCD_SEG7 = 13, /* Digital Deep Sleep - lcd.seg[7]:1 */ + + /* P10.0 */ + P10_0_GPIO = 0, /* GPIO controls 'out' */ + P10_0_AMUXA = 4, /* Analog mux bus A */ + P10_0_AMUXB = 5, /* Analog mux bus B */ + P10_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_0_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:2 */ + P10_0_TCPWM1_LINE22 = 9, /* Digital Active - tcpwm[1].line[22]:0 */ + P10_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:70 */ + P10_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:70 */ + P10_0_LCD_COM8 = 12, /* Digital Deep Sleep - lcd.com[8]:1 */ + P10_0_LCD_SEG8 = 13, /* Digital Deep Sleep - lcd.seg[8]:1 */ + P10_0_SCB1_UART_RX = 18, /* Digital Active - scb[1].uart_rx:1 */ + P10_0_SCB1_I2C_SCL = 19, /* Digital Active - scb[1].i2c_scl:1 */ + P10_0_SCB1_SPI_MOSI = 20, /* Digital Active - scb[1].spi_mosi:1 */ + P10_0_PERI_TR_IO_INPUT20 = 24, /* Digital Active - peri.tr_io_input[20]:0 */ + P10_0_CPUSS_TRACE_DATA3 = 27, /* Digital Active - cpuss.trace_data[3]:1 */ + + /* P10.1 */ + P10_1_GPIO = 0, /* GPIO controls 'out' */ + P10_1_AMUXA = 4, /* Analog mux bus A */ + P10_1_AMUXB = 5, /* Analog mux bus B */ + P10_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_1_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:2 */ + P10_1_TCPWM1_LINE_COMPL22 = 9, /* Digital Active - tcpwm[1].line_compl[22]:0 */ + P10_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:71 */ + P10_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:71 */ + P10_1_LCD_COM9 = 12, /* Digital Deep Sleep - lcd.com[9]:1 */ + P10_1_LCD_SEG9 = 13, /* Digital Deep Sleep - lcd.seg[9]:1 */ + P10_1_SCB1_UART_TX = 18, /* Digital Active - scb[1].uart_tx:1 */ + P10_1_SCB1_I2C_SDA = 19, /* Digital Active - scb[1].i2c_sda:1 */ + P10_1_SCB1_SPI_MISO = 20, /* Digital Active - scb[1].spi_miso:1 */ + P10_1_PERI_TR_IO_INPUT21 = 24, /* Digital Active - peri.tr_io_input[21]:0 */ + P10_1_CPUSS_TRACE_DATA2 = 27, /* Digital Active - cpuss.trace_data[2]:1 */ + + /* P10.2 */ + P10_2_GPIO = 0, /* GPIO controls 'out' */ + P10_2_AMUXA = 4, /* Analog mux bus A */ + P10_2_AMUXB = 5, /* Analog mux bus B */ + P10_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_2_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:2 */ + P10_2_TCPWM1_LINE23 = 9, /* Digital Active - tcpwm[1].line[23]:0 */ + P10_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:72 */ + P10_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:72 */ + P10_2_LCD_COM10 = 12, /* Digital Deep Sleep - lcd.com[10]:1 */ + P10_2_LCD_SEG10 = 13, /* Digital Deep Sleep - lcd.seg[10]:1 */ + P10_2_SCB1_UART_RTS = 18, /* Digital Active - scb[1].uart_rts:1 */ + P10_2_SCB1_SPI_CLK = 20, /* Digital Active - scb[1].spi_clk:1 */ + P10_2_CPUSS_TRACE_DATA1 = 27, /* Digital Active - cpuss.trace_data[1]:1 */ + + /* P10.3 */ + P10_3_GPIO = 0, /* GPIO controls 'out' */ + P10_3_AMUXA = 4, /* Analog mux bus A */ + P10_3_AMUXB = 5, /* Analog mux bus B */ + P10_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_3_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:2 */ + P10_3_TCPWM1_LINE_COMPL23 = 9, /* Digital Active - tcpwm[1].line_compl[23]:0 */ + P10_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:73 */ + P10_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:73 */ + P10_3_LCD_COM11 = 12, /* Digital Deep Sleep - lcd.com[11]:1 */ + P10_3_LCD_SEG11 = 13, /* Digital Deep Sleep - lcd.seg[11]:1 */ + P10_3_SCB1_UART_CTS = 18, /* Digital Active - scb[1].uart_cts:1 */ + P10_3_SCB1_SPI_SELECT0 = 20, /* Digital Active - scb[1].spi_select0:1 */ + P10_3_CPUSS_TRACE_DATA0 = 27, /* Digital Active - cpuss.trace_data[0]:1 */ + + /* P10.4 */ + P10_4_GPIO = 0, /* GPIO controls 'out' */ + P10_4_AMUXA = 4, /* Analog mux bus A */ + P10_4_AMUXB = 5, /* Analog mux bus B */ + P10_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_4_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:3 */ + P10_4_TCPWM1_LINE0 = 9, /* Digital Active - tcpwm[1].line[0]:1 */ + P10_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:74 */ + P10_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:74 */ + P10_4_LCD_COM12 = 12, /* Digital Deep Sleep - lcd.com[12]:1 */ + P10_4_LCD_SEG12 = 13, /* Digital Deep Sleep - lcd.seg[12]:1 */ + P10_4_SCB1_SPI_SELECT1 = 20, /* Digital Active - scb[1].spi_select1:1 */ + P10_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:0 */ + + /* P10.5 */ + P10_5_GPIO = 0, /* GPIO controls 'out' */ + P10_5_AMUXA = 4, /* Analog mux bus A */ + P10_5_AMUXB = 5, /* Analog mux bus B */ + P10_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_5_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:3 */ + P10_5_TCPWM1_LINE_COMPL0 = 9, /* Digital Active - tcpwm[1].line_compl[0]:1 */ + P10_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:75 */ + P10_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:75 */ + P10_5_LCD_COM13 = 12, /* Digital Deep Sleep - lcd.com[13]:1 */ + P10_5_LCD_SEG13 = 13, /* Digital Deep Sleep - lcd.seg[13]:1 */ + P10_5_SCB1_SPI_SELECT2 = 20, /* Digital Active - scb[1].spi_select2:1 */ + P10_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:0 */ + + /* P10.6 */ + P10_6_GPIO = 0, /* GPIO controls 'out' */ + P10_6_AMUXA = 4, /* Analog mux bus A */ + P10_6_AMUXB = 5, /* Analog mux bus B */ + P10_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_6_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:6 */ + P10_6_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:2 */ + P10_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:76 */ + P10_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:76 */ + P10_6_LCD_COM14 = 12, /* Digital Deep Sleep - lcd.com[14]:1 */ + P10_6_LCD_SEG14 = 13, /* Digital Deep Sleep - lcd.seg[14]:1 */ + P10_6_SCB1_SPI_SELECT3 = 20, /* Digital Active - scb[1].spi_select3:1 */ + + /* P10.7 */ + P10_7_GPIO = 0, /* GPIO controls 'out' */ + P10_7_AMUXA = 4, /* Analog mux bus A */ + P10_7_AMUXB = 5, /* Analog mux bus B */ + P10_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P10_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P10_7_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:6 */ + P10_7_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:2 */ + P10_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:77 */ + P10_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:77 */ + P10_7_LCD_COM15 = 12, /* Digital Deep Sleep - lcd.com[15]:1 */ + P10_7_LCD_SEG15 = 13, /* Digital Deep Sleep - lcd.seg[15]:1 */ + + /* P11.0 */ + P11_0_GPIO = 0, /* GPIO controls 'out' */ + P11_0_AMUXA = 4, /* Analog mux bus A */ + P11_0_AMUXB = 5, /* Analog mux bus B */ + P11_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_0_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:3 */ + P11_0_TCPWM1_LINE1 = 9, /* Digital Active - tcpwm[1].line[1]:1 */ + P11_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:78 */ + P11_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:78 */ + P11_0_LCD_COM16 = 12, /* Digital Deep Sleep - lcd.com[16]:1 */ + P11_0_LCD_SEG16 = 13, /* Digital Deep Sleep - lcd.seg[16]:1 */ + P11_0_SMIF_SPI_SELECT2 = 17, /* Digital Active - smif.spi_select2 */ + P11_0_SCB5_UART_RX = 18, /* Digital Active - scb[5].uart_rx:1 */ + P11_0_SCB5_I2C_SCL = 19, /* Digital Active - scb[5].i2c_scl:1 */ + P11_0_SCB5_SPI_MOSI = 20, /* Digital Active - scb[5].spi_mosi:1 */ + P11_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:1 */ + P11_0_PERI_TR_IO_INPUT22 = 24, /* Digital Active - peri.tr_io_input[22]:0 */ + + /* P11.1 */ + P11_1_GPIO = 0, /* GPIO controls 'out' */ + P11_1_AMUXA = 4, /* Analog mux bus A */ + P11_1_AMUXB = 5, /* Analog mux bus B */ + P11_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_1_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:3 */ + P11_1_TCPWM1_LINE_COMPL1 = 9, /* Digital Active - tcpwm[1].line_compl[1]:1 */ + P11_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:79 */ + P11_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:79 */ + P11_1_LCD_COM17 = 12, /* Digital Deep Sleep - lcd.com[17]:1 */ + P11_1_LCD_SEG17 = 13, /* Digital Deep Sleep - lcd.seg[17]:1 */ + P11_1_SMIF_SPI_SELECT1 = 17, /* Digital Active - smif.spi_select1 */ + P11_1_SCB5_UART_TX = 18, /* Digital Active - scb[5].uart_tx:1 */ + P11_1_SCB5_I2C_SDA = 19, /* Digital Active - scb[5].i2c_sda:1 */ + P11_1_SCB5_SPI_MISO = 20, /* Digital Active - scb[5].spi_miso:1 */ + P11_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:1 */ + P11_1_PERI_TR_IO_INPUT23 = 24, /* Digital Active - peri.tr_io_input[23]:0 */ + + /* P11.2 */ + P11_2_GPIO = 0, /* GPIO controls 'out' */ + P11_2_AMUXA = 4, /* Analog mux bus A */ + P11_2_AMUXB = 5, /* Analog mux bus B */ + P11_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_2_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:3 */ + P11_2_TCPWM1_LINE2 = 9, /* Digital Active - tcpwm[1].line[2]:1 */ + P11_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:80 */ + P11_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:80 */ + P11_2_LCD_COM18 = 12, /* Digital Deep Sleep - lcd.com[18]:1 */ + P11_2_LCD_SEG18 = 13, /* Digital Deep Sleep - lcd.seg[18]:1 */ + P11_2_SMIF_SPI_SELECT0 = 17, /* Digital Active - smif.spi_select0 */ + P11_2_SCB5_UART_RTS = 18, /* Digital Active - scb[5].uart_rts:1 */ + P11_2_SCB5_SPI_CLK = 20, /* Digital Active - scb[5].spi_clk:1 */ + P11_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:1 */ + + /* P11.3 */ + P11_3_GPIO = 0, /* GPIO controls 'out' */ + P11_3_AMUXA = 4, /* Analog mux bus A */ + P11_3_AMUXB = 5, /* Analog mux bus B */ + P11_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_3_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:3 */ + P11_3_TCPWM1_LINE_COMPL2 = 9, /* Digital Active - tcpwm[1].line_compl[2]:1 */ + P11_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:81 */ + P11_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:81 */ + P11_3_LCD_COM19 = 12, /* Digital Deep Sleep - lcd.com[19]:1 */ + P11_3_LCD_SEG19 = 13, /* Digital Deep Sleep - lcd.seg[19]:1 */ + P11_3_SMIF_SPI_DATA3 = 17, /* Digital Active - smif.spi_data3 */ + P11_3_SCB5_UART_CTS = 18, /* Digital Active - scb[5].uart_cts:1 */ + P11_3_SCB5_SPI_SELECT0 = 20, /* Digital Active - scb[5].spi_select0:1 */ + P11_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:1 */ + P11_3_PERI_TR_IO_OUTPUT0 = 25, /* Digital Active - peri.tr_io_output[0]:0 */ + + /* P11.4 */ + P11_4_GPIO = 0, /* GPIO controls 'out' */ + P11_4_AMUXA = 4, /* Analog mux bus A */ + P11_4_AMUXB = 5, /* Analog mux bus B */ + P11_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_4_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:3 */ + P11_4_TCPWM1_LINE3 = 9, /* Digital Active - tcpwm[1].line[3]:1 */ + P11_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:82 */ + P11_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:82 */ + P11_4_LCD_COM20 = 12, /* Digital Deep Sleep - lcd.com[20]:1 */ + P11_4_LCD_SEG20 = 13, /* Digital Deep Sleep - lcd.seg[20]:1 */ + P11_4_SMIF_SPI_DATA2 = 17, /* Digital Active - smif.spi_data2 */ + P11_4_SCB5_SPI_SELECT1 = 20, /* Digital Active - scb[5].spi_select1:1 */ + P11_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:1 */ + P11_4_PERI_TR_IO_OUTPUT1 = 25, /* Digital Active - peri.tr_io_output[1]:0 */ + + /* P11.5 */ + P11_5_GPIO = 0, /* GPIO controls 'out' */ + P11_5_AMUXA = 4, /* Analog mux bus A */ + P11_5_AMUXB = 5, /* Analog mux bus B */ + P11_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_5_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:3 */ + P11_5_TCPWM1_LINE_COMPL3 = 9, /* Digital Active - tcpwm[1].line_compl[3]:1 */ + P11_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:83 */ + P11_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:83 */ + P11_5_LCD_COM21 = 12, /* Digital Deep Sleep - lcd.com[21]:1 */ + P11_5_LCD_SEG21 = 13, /* Digital Deep Sleep - lcd.seg[21]:1 */ + P11_5_SMIF_SPI_DATA1 = 17, /* Digital Active - smif.spi_data1 */ + P11_5_SCB5_SPI_SELECT2 = 20, /* Digital Active - scb[5].spi_select2:1 */ + P11_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:1 */ + + /* P11.6 */ + P11_6_GPIO = 0, /* GPIO controls 'out' */ + P11_6_AMUXA = 4, /* Analog mux bus A */ + P11_6_AMUXB = 5, /* Analog mux bus B */ + P11_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:84 */ + P11_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:84 */ + P11_6_LCD_COM22 = 12, /* Digital Deep Sleep - lcd.com[22]:1 */ + P11_6_LCD_SEG22 = 13, /* Digital Deep Sleep - lcd.seg[22]:1 */ + P11_6_SMIF_SPI_DATA0 = 17, /* Digital Active - smif.spi_data0 */ + P11_6_SCB5_SPI_SELECT3 = 20, /* Digital Active - scb[5].spi_select3:1 */ + P11_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:1 */ + + /* P11.7 */ + P11_7_GPIO = 0, /* GPIO controls 'out' */ + P11_7_AMUXA = 4, /* Analog mux bus A */ + P11_7_AMUXB = 5, /* Analog mux bus B */ + P11_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P11_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P11_7_SMIF_SPI_CLK = 17, /* Digital Active - smif.spi_clk */ + + /* P12.0 */ + P12_0_GPIO = 0, /* GPIO controls 'out' */ + P12_0_AMUXA = 4, /* Analog mux bus A */ + P12_0_AMUXB = 5, /* Analog mux bus B */ + P12_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_0_TCPWM0_LINE4 = 8, /* Digital Active - tcpwm[0].line[4]:3 */ + P12_0_TCPWM1_LINE4 = 9, /* Digital Active - tcpwm[1].line[4]:1 */ + P12_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:85 */ + P12_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:85 */ + P12_0_LCD_COM23 = 12, /* Digital Deep Sleep - lcd.com[23]:1 */ + P12_0_LCD_SEG23 = 13, /* Digital Deep Sleep - lcd.seg[23]:1 */ + P12_0_SMIF_SPI_DATA4 = 17, /* Digital Active - smif.spi_data4 */ + P12_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:0 */ + P12_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:0 */ + P12_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:0 */ + P12_0_PERI_TR_IO_INPUT24 = 24, /* Digital Active - peri.tr_io_input[24]:0 */ + P12_0_SDHC1_CARD_EMMC_RESET_N = 26, /* Digital Active - sdhc[1].card_emmc_reset_n */ + + /* P12.1 */ + P12_1_GPIO = 0, /* GPIO controls 'out' */ + P12_1_AMUXA = 4, /* Analog mux bus A */ + P12_1_AMUXB = 5, /* Analog mux bus B */ + P12_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_1_TCPWM0_LINE_COMPL4 = 8, /* Digital Active - tcpwm[0].line_compl[4]:3 */ + P12_1_TCPWM1_LINE_COMPL4 = 9, /* Digital Active - tcpwm[1].line_compl[4]:1 */ + P12_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:86 */ + P12_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:86 */ + P12_1_LCD_COM24 = 12, /* Digital Deep Sleep - lcd.com[24]:1 */ + P12_1_LCD_SEG24 = 13, /* Digital Deep Sleep - lcd.seg[24]:1 */ + P12_1_SMIF_SPI_DATA5 = 17, /* Digital Active - smif.spi_data5 */ + P12_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:0 */ + P12_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:0 */ + P12_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:0 */ + P12_1_PERI_TR_IO_INPUT25 = 24, /* Digital Active - peri.tr_io_input[25]:0 */ + P12_1_SDHC1_CARD_DETECT_N = 26, /* Digital Active - sdhc[1].card_detect_n */ + + /* P12.2 */ + P12_2_GPIO = 0, /* GPIO controls 'out' */ + P12_2_AMUXA = 4, /* Analog mux bus A */ + P12_2_AMUXB = 5, /* Analog mux bus B */ + P12_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_2_TCPWM0_LINE5 = 8, /* Digital Active - tcpwm[0].line[5]:3 */ + P12_2_TCPWM1_LINE5 = 9, /* Digital Active - tcpwm[1].line[5]:1 */ + P12_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:87 */ + P12_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:87 */ + P12_2_LCD_COM25 = 12, /* Digital Deep Sleep - lcd.com[25]:1 */ + P12_2_LCD_SEG25 = 13, /* Digital Deep Sleep - lcd.seg[25]:1 */ + P12_2_SMIF_SPI_DATA6 = 17, /* Digital Active - smif.spi_data6 */ + P12_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:0 */ + P12_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:0 */ + P12_2_SDHC1_CARD_MECH_WRITE_PROT = 26, /* Digital Active - sdhc[1].card_mech_write_prot */ + + /* P12.3 */ + P12_3_GPIO = 0, /* GPIO controls 'out' */ + P12_3_AMUXA = 4, /* Analog mux bus A */ + P12_3_AMUXB = 5, /* Analog mux bus B */ + P12_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_3_TCPWM0_LINE_COMPL5 = 8, /* Digital Active - tcpwm[0].line_compl[5]:3 */ + P12_3_TCPWM1_LINE_COMPL5 = 9, /* Digital Active - tcpwm[1].line_compl[5]:1 */ + P12_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:88 */ + P12_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:88 */ + P12_3_LCD_COM26 = 12, /* Digital Deep Sleep - lcd.com[26]:1 */ + P12_3_LCD_SEG26 = 13, /* Digital Deep Sleep - lcd.seg[26]:1 */ + P12_3_SMIF_SPI_DATA7 = 17, /* Digital Active - smif.spi_data7 */ + P12_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:0 */ + P12_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:0 */ + P12_3_SDHC1_LED_CTRL = 26, /* Digital Active - sdhc[1].led_ctrl */ + + /* P12.4 */ + P12_4_GPIO = 0, /* GPIO controls 'out' */ + P12_4_AMUXA = 4, /* Analog mux bus A */ + P12_4_AMUXB = 5, /* Analog mux bus B */ + P12_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_4_TCPWM0_LINE6 = 8, /* Digital Active - tcpwm[0].line[6]:3 */ + P12_4_TCPWM1_LINE6 = 9, /* Digital Active - tcpwm[1].line[6]:1 */ + P12_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:89 */ + P12_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:89 */ + P12_4_LCD_COM27 = 12, /* Digital Deep Sleep - lcd.com[27]:1 */ + P12_4_LCD_SEG27 = 13, /* Digital Deep Sleep - lcd.seg[27]:1 */ + P12_4_SMIF_SPI_SELECT3 = 17, /* Digital Active - smif.spi_select3 */ + P12_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:0 */ + P12_4_AUDIOSS0_PDM_CLK = 21, /* Digital Active - audioss[0].pdm_clk:1 */ + P12_4_SDHC1_CARD_CMD = 26, /* Digital Active - sdhc[1].card_cmd */ + + /* P12.5 */ + P12_5_GPIO = 0, /* GPIO controls 'out' */ + P12_5_AMUXA = 4, /* Analog mux bus A */ + P12_5_AMUXB = 5, /* Analog mux bus B */ + P12_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_5_TCPWM0_LINE_COMPL6 = 8, /* Digital Active - tcpwm[0].line_compl[6]:3 */ + P12_5_TCPWM1_LINE_COMPL6 = 9, /* Digital Active - tcpwm[1].line_compl[6]:1 */ + P12_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:90 */ + P12_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:90 */ + P12_5_LCD_COM28 = 12, /* Digital Deep Sleep - lcd.com[28]:1 */ + P12_5_LCD_SEG28 = 13, /* Digital Deep Sleep - lcd.seg[28]:1 */ + P12_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:0 */ + P12_5_AUDIOSS0_PDM_DATA = 21, /* Digital Active - audioss[0].pdm_data:1 */ + P12_5_SDHC1_CLK_CARD = 26, /* Digital Active - sdhc[1].clk_card */ + + /* P12.6 */ + P12_6_GPIO = 0, /* GPIO controls 'out' */ + P12_6_AMUXA = 4, /* Analog mux bus A */ + P12_6_AMUXB = 5, /* Analog mux bus B */ + P12_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_6_TCPWM0_LINE7 = 8, /* Digital Active - tcpwm[0].line[7]:3 */ + P12_6_TCPWM1_LINE7 = 9, /* Digital Active - tcpwm[1].line[7]:1 */ + P12_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:91 */ + P12_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:91 */ + P12_6_LCD_COM29 = 12, /* Digital Deep Sleep - lcd.com[29]:1 */ + P12_6_LCD_SEG29 = 13, /* Digital Deep Sleep - lcd.seg[29]:1 */ + P12_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:0 */ + P12_6_SDHC1_CARD_IF_PWR_EN = 26, /* Digital Active - sdhc[1].card_if_pwr_en */ + + /* P12.7 */ + P12_7_GPIO = 0, /* GPIO controls 'out' */ + P12_7_AMUXA = 4, /* Analog mux bus A */ + P12_7_AMUXB = 5, /* Analog mux bus B */ + P12_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P12_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P12_7_TCPWM0_LINE_COMPL7 = 8, /* Digital Active - tcpwm[0].line_compl[7]:3 */ + P12_7_TCPWM1_LINE_COMPL7 = 9, /* Digital Active - tcpwm[1].line_compl[7]:1 */ + P12_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:92 */ + P12_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:92 */ + P12_7_LCD_COM30 = 12, /* Digital Deep Sleep - lcd.com[30]:1 */ + P12_7_LCD_SEG30 = 13, /* Digital Deep Sleep - lcd.seg[30]:1 */ + P12_7_SDHC1_IO_VOLT_SEL = 26, /* Digital Active - sdhc[1].io_volt_sel */ + + /* P13.0 */ + P13_0_GPIO = 0, /* GPIO controls 'out' */ + P13_0_AMUXA = 4, /* Analog mux bus A */ + P13_0_AMUXB = 5, /* Analog mux bus B */ + P13_0_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_0_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_0_TCPWM0_LINE0 = 8, /* Digital Active - tcpwm[0].line[0]:4 */ + P13_0_TCPWM1_LINE8 = 9, /* Digital Active - tcpwm[1].line[8]:1 */ + P13_0_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:93 */ + P13_0_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:93 */ + P13_0_LCD_COM31 = 12, /* Digital Deep Sleep - lcd.com[31]:1 */ + P13_0_LCD_SEG31 = 13, /* Digital Deep Sleep - lcd.seg[31]:1 */ + P13_0_SCB6_UART_RX = 18, /* Digital Active - scb[6].uart_rx:1 */ + P13_0_SCB6_I2C_SCL = 19, /* Digital Active - scb[6].i2c_scl:1 */ + P13_0_SCB6_SPI_MOSI = 20, /* Digital Active - scb[6].spi_mosi:1 */ + P13_0_AUDIOSS1_CLK_I2S_IF = 22, /* Digital Active - audioss[1].clk_i2s_if:0 */ + P13_0_PERI_TR_IO_INPUT26 = 24, /* Digital Active - peri.tr_io_input[26]:0 */ + P13_0_SDHC1_CARD_DAT_3TO00 = 26, /* Digital Active - sdhc[1].card_dat_3to0[0] */ + + /* P13.1 */ + P13_1_GPIO = 0, /* GPIO controls 'out' */ + P13_1_AMUXA = 4, /* Analog mux bus A */ + P13_1_AMUXB = 5, /* Analog mux bus B */ + P13_1_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_1_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_1_TCPWM0_LINE_COMPL0 = 8, /* Digital Active - tcpwm[0].line_compl[0]:4 */ + P13_1_TCPWM1_LINE_COMPL8 = 9, /* Digital Active - tcpwm[1].line_compl[8]:1 */ + P13_1_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:94 */ + P13_1_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:94 */ + P13_1_LCD_COM32 = 12, /* Digital Deep Sleep - lcd.com[32]:1 */ + P13_1_LCD_SEG32 = 13, /* Digital Deep Sleep - lcd.seg[32]:1 */ + P13_1_SCB6_UART_TX = 18, /* Digital Active - scb[6].uart_tx:1 */ + P13_1_SCB6_I2C_SDA = 19, /* Digital Active - scb[6].i2c_sda:1 */ + P13_1_SCB6_SPI_MISO = 20, /* Digital Active - scb[6].spi_miso:1 */ + P13_1_AUDIOSS1_TX_SCK = 22, /* Digital Active - audioss[1].tx_sck:0 */ + P13_1_PERI_TR_IO_INPUT27 = 24, /* Digital Active - peri.tr_io_input[27]:0 */ + P13_1_SDHC1_CARD_DAT_3TO01 = 26, /* Digital Active - sdhc[1].card_dat_3to0[1] */ + + /* P13.2 */ + P13_2_GPIO = 0, /* GPIO controls 'out' */ + P13_2_AMUXA = 4, /* Analog mux bus A */ + P13_2_AMUXB = 5, /* Analog mux bus B */ + P13_2_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_2_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_2_TCPWM0_LINE1 = 8, /* Digital Active - tcpwm[0].line[1]:4 */ + P13_2_TCPWM1_LINE9 = 9, /* Digital Active - tcpwm[1].line[9]:1 */ + P13_2_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:95 */ + P13_2_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:95 */ + P13_2_LCD_COM33 = 12, /* Digital Deep Sleep - lcd.com[33]:1 */ + P13_2_LCD_SEG33 = 13, /* Digital Deep Sleep - lcd.seg[33]:1 */ + P13_2_SCB6_UART_RTS = 18, /* Digital Active - scb[6].uart_rts:1 */ + P13_2_SCB6_SPI_CLK = 20, /* Digital Active - scb[6].spi_clk:1 */ + P13_2_AUDIOSS1_TX_WS = 22, /* Digital Active - audioss[1].tx_ws:0 */ + P13_2_SDHC1_CARD_DAT_3TO02 = 26, /* Digital Active - sdhc[1].card_dat_3to0[2] */ + + /* P13.3 */ + P13_3_GPIO = 0, /* GPIO controls 'out' */ + P13_3_AMUXA = 4, /* Analog mux bus A */ + P13_3_AMUXB = 5, /* Analog mux bus B */ + P13_3_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_3_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_3_TCPWM0_LINE_COMPL1 = 8, /* Digital Active - tcpwm[0].line_compl[1]:4 */ + P13_3_TCPWM1_LINE_COMPL9 = 9, /* Digital Active - tcpwm[1].line_compl[9]:1 */ + P13_3_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:96 */ + P13_3_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:96 */ + P13_3_LCD_COM34 = 12, /* Digital Deep Sleep - lcd.com[34]:1 */ + P13_3_LCD_SEG34 = 13, /* Digital Deep Sleep - lcd.seg[34]:1 */ + P13_3_SCB6_UART_CTS = 18, /* Digital Active - scb[6].uart_cts:1 */ + P13_3_SCB6_SPI_SELECT0 = 20, /* Digital Active - scb[6].spi_select0:1 */ + P13_3_AUDIOSS1_TX_SDO = 22, /* Digital Active - audioss[1].tx_sdo:0 */ + P13_3_SDHC1_CARD_DAT_3TO03 = 26, /* Digital Active - sdhc[1].card_dat_3to0[3] */ + + /* P13.4 */ + P13_4_GPIO = 0, /* GPIO controls 'out' */ + P13_4_AMUXA = 4, /* Analog mux bus A */ + P13_4_AMUXB = 5, /* Analog mux bus B */ + P13_4_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_4_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_4_TCPWM0_LINE2 = 8, /* Digital Active - tcpwm[0].line[2]:4 */ + P13_4_TCPWM1_LINE10 = 9, /* Digital Active - tcpwm[1].line[10]:1 */ + P13_4_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:97 */ + P13_4_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:97 */ + P13_4_LCD_COM35 = 12, /* Digital Deep Sleep - lcd.com[35]:1 */ + P13_4_LCD_SEG35 = 13, /* Digital Deep Sleep - lcd.seg[35]:1 */ + P13_4_SCB12_UART_RX = 18, /* Digital Active - scb[12].uart_rx:0 */ + P13_4_SCB12_I2C_SCL = 19, /* Digital Active - scb[12].i2c_scl:0 */ + P13_4_SCB6_SPI_SELECT1 = 20, /* Digital Active - scb[6].spi_select1:1 */ + P13_4_AUDIOSS1_RX_SCK = 22, /* Digital Active - audioss[1].rx_sck:0 */ + P13_4_SDHC1_CARD_DAT_7TO40 = 26, /* Digital Active - sdhc[1].card_dat_7to4[0] */ + + /* P13.5 */ + P13_5_GPIO = 0, /* GPIO controls 'out' */ + P13_5_AMUXA = 4, /* Analog mux bus A */ + P13_5_AMUXB = 5, /* Analog mux bus B */ + P13_5_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_5_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_5_TCPWM0_LINE_COMPL2 = 8, /* Digital Active - tcpwm[0].line_compl[2]:4 */ + P13_5_TCPWM1_LINE_COMPL10 = 9, /* Digital Active - tcpwm[1].line_compl[10]:1 */ + P13_5_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:98 */ + P13_5_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:98 */ + P13_5_LCD_COM36 = 12, /* Digital Deep Sleep - lcd.com[36]:1 */ + P13_5_LCD_SEG36 = 13, /* Digital Deep Sleep - lcd.seg[36]:1 */ + P13_5_SCB12_UART_TX = 18, /* Digital Active - scb[12].uart_tx:0 */ + P13_5_SCB12_I2C_SDA = 19, /* Digital Active - scb[12].i2c_sda:0 */ + P13_5_SCB6_SPI_SELECT2 = 20, /* Digital Active - scb[6].spi_select2:1 */ + P13_5_AUDIOSS1_RX_WS = 22, /* Digital Active - audioss[1].rx_ws:0 */ + P13_5_SDHC1_CARD_DAT_7TO41 = 26, /* Digital Active - sdhc[1].card_dat_7to4[1] */ + + /* P13.6 */ + P13_6_GPIO = 0, /* GPIO controls 'out' */ + P13_6_AMUXA = 4, /* Analog mux bus A */ + P13_6_AMUXB = 5, /* Analog mux bus B */ + P13_6_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_6_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_6_TCPWM0_LINE3 = 8, /* Digital Active - tcpwm[0].line[3]:4 */ + P13_6_TCPWM1_LINE11 = 9, /* Digital Active - tcpwm[1].line[11]:1 */ + P13_6_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:99 */ + P13_6_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:99 */ + P13_6_LCD_COM37 = 12, /* Digital Deep Sleep - lcd.com[37]:1 */ + P13_6_LCD_SEG37 = 13, /* Digital Deep Sleep - lcd.seg[37]:1 */ + P13_6_SCB12_UART_RTS = 18, /* Digital Active - scb[12].uart_rts:0 */ + P13_6_SCB6_SPI_SELECT3 = 20, /* Digital Active - scb[6].spi_select3:1 */ + P13_6_AUDIOSS1_RX_SDI = 22, /* Digital Active - audioss[1].rx_sdi:0 */ + P13_6_SDHC1_CARD_DAT_7TO42 = 26, /* Digital Active - sdhc[1].card_dat_7to4[2] */ + + /* P13.7 */ + P13_7_GPIO = 0, /* GPIO controls 'out' */ + P13_7_AMUXA = 4, /* Analog mux bus A */ + P13_7_AMUXB = 5, /* Analog mux bus B */ + P13_7_AMUXA_DSI = 6, /* Analog mux bus A, DSI control */ + P13_7_AMUXB_DSI = 7, /* Analog mux bus B, DSI control */ + P13_7_TCPWM0_LINE_COMPL3 = 8, /* Digital Active - tcpwm[0].line_compl[3]:4 */ + P13_7_TCPWM1_LINE_COMPL11 = 9, /* Digital Active - tcpwm[1].line_compl[11]:1 */ + P13_7_CSD_CSD_TX = 10, /* Digital Active - csd.csd_tx:100 */ + P13_7_CSD_CSD_TX_N = 11, /* Digital Active - csd.csd_tx_n:100 */ + P13_7_LCD_COM38 = 12, /* Digital Deep Sleep - lcd.com[38]:1 */ + P13_7_LCD_SEG38 = 13, /* Digital Deep Sleep - lcd.seg[38]:1 */ + P13_7_SCB12_UART_CTS = 18, /* Digital Active - scb[12].uart_cts:0 */ + P13_7_SDHC1_CARD_DAT_7TO43 = 26 /* Digital Active - sdhc[1].card_dat_7to4[3] */ +} en_hsiom_sel_t; + +#endif /* _GPIO_PSOC6_02_128_TQFP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_backup.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_backup.h new file mode 100644 index 00000000000..c7d661f17c4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_backup.h @@ -0,0 +1,234 @@ +/***************************************************************************//** +* \file cyip_backup.h +* +* \brief +* BACKUP IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_BACKUP_H_ +#define _CYIP_BACKUP_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_SECTION_SIZE 0x00010000UL + +/** + * \brief SRSS Backup Domain (BACKUP) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED; + __IOM uint32_t RTC_RW; /*!< 0x00000008 RTC Read Write register */ + __IOM uint32_t CAL_CTL; /*!< 0x0000000C Oscillator calibration for absolute frequency */ + __IM uint32_t STATUS; /*!< 0x00000010 Status */ + __IOM uint32_t RTC_TIME; /*!< 0x00000014 Calendar Seconds, Minutes, Hours, Day of Week */ + __IOM uint32_t RTC_DATE; /*!< 0x00000018 Calendar Day of Month, Month, Year */ + __IOM uint32_t ALM1_TIME; /*!< 0x0000001C Alarm 1 Seconds, Minute, Hours, Day of Week */ + __IOM uint32_t ALM1_DATE; /*!< 0x00000020 Alarm 1 Day of Month, Month */ + __IOM uint32_t ALM2_TIME; /*!< 0x00000024 Alarm 2 Seconds, Minute, Hours, Day of Week */ + __IOM uint32_t ALM2_DATE; /*!< 0x00000028 Alarm 2 Day of Month, Month */ + __IOM uint32_t INTR; /*!< 0x0000002C Interrupt request register */ + __IOM uint32_t INTR_SET; /*!< 0x00000030 Interrupt set request register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000034 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x00000038 Interrupt masked request register */ + __IM uint32_t OSCCNT; /*!< 0x0000003C 32kHz oscillator counter */ + __IM uint32_t TICKS; /*!< 0x00000040 128Hz tick counter */ + __IOM uint32_t PMIC_CTL; /*!< 0x00000044 PMIC control register */ + __IOM uint32_t RESET; /*!< 0x00000048 Backup reset register */ + __IM uint32_t RESERVED1[1005]; + __IOM uint32_t BREG[64]; /*!< 0x00001000 Backup register region */ + __IM uint32_t RESERVED2[15232]; + __IOM uint32_t TRIM; /*!< 0x0000FF00 Trim Register */ +} BACKUP_V1_Type; /*!< Size = 65284 (0xFF04) */ + + +/* BACKUP.CTL */ +#define BACKUP_CTL_WCO_EN_Pos 3UL +#define BACKUP_CTL_WCO_EN_Msk 0x8UL +#define BACKUP_CTL_CLK_SEL_Pos 8UL +#define BACKUP_CTL_CLK_SEL_Msk 0x300UL +#define BACKUP_CTL_PRESCALER_Pos 12UL +#define BACKUP_CTL_PRESCALER_Msk 0x3000UL +#define BACKUP_CTL_WCO_BYPASS_Pos 16UL +#define BACKUP_CTL_WCO_BYPASS_Msk 0x10000UL +#define BACKUP_CTL_VDDBAK_CTL_Pos 17UL +#define BACKUP_CTL_VDDBAK_CTL_Msk 0x60000UL +#define BACKUP_CTL_VBACKUP_MEAS_Pos 19UL +#define BACKUP_CTL_VBACKUP_MEAS_Msk 0x80000UL +#define BACKUP_CTL_EN_CHARGE_KEY_Pos 24UL +#define BACKUP_CTL_EN_CHARGE_KEY_Msk 0xFF000000UL +/* BACKUP.RTC_RW */ +#define BACKUP_RTC_RW_READ_Pos 0UL +#define BACKUP_RTC_RW_READ_Msk 0x1UL +#define BACKUP_RTC_RW_WRITE_Pos 1UL +#define BACKUP_RTC_RW_WRITE_Msk 0x2UL +/* BACKUP.CAL_CTL */ +#define BACKUP_CAL_CTL_CALIB_VAL_Pos 0UL +#define BACKUP_CAL_CTL_CALIB_VAL_Msk 0x3FUL +#define BACKUP_CAL_CTL_CALIB_SIGN_Pos 6UL +#define BACKUP_CAL_CTL_CALIB_SIGN_Msk 0x40UL +#define BACKUP_CAL_CTL_CAL_OUT_Pos 31UL +#define BACKUP_CAL_CTL_CAL_OUT_Msk 0x80000000UL +/* BACKUP.STATUS */ +#define BACKUP_STATUS_RTC_BUSY_Pos 0UL +#define BACKUP_STATUS_RTC_BUSY_Msk 0x1UL +#define BACKUP_STATUS_WCO_OK_Pos 2UL +#define BACKUP_STATUS_WCO_OK_Msk 0x4UL +/* BACKUP.RTC_TIME */ +#define BACKUP_RTC_TIME_RTC_SEC_Pos 0UL +#define BACKUP_RTC_TIME_RTC_SEC_Msk 0x7FUL +#define BACKUP_RTC_TIME_RTC_MIN_Pos 8UL +#define BACKUP_RTC_TIME_RTC_MIN_Msk 0x7F00UL +#define BACKUP_RTC_TIME_RTC_HOUR_Pos 16UL +#define BACKUP_RTC_TIME_RTC_HOUR_Msk 0x3F0000UL +#define BACKUP_RTC_TIME_CTRL_12HR_Pos 22UL +#define BACKUP_RTC_TIME_CTRL_12HR_Msk 0x400000UL +#define BACKUP_RTC_TIME_RTC_DAY_Pos 24UL +#define BACKUP_RTC_TIME_RTC_DAY_Msk 0x7000000UL +/* BACKUP.RTC_DATE */ +#define BACKUP_RTC_DATE_RTC_DATE_Pos 0UL +#define BACKUP_RTC_DATE_RTC_DATE_Msk 0x3FUL +#define BACKUP_RTC_DATE_RTC_MON_Pos 8UL +#define BACKUP_RTC_DATE_RTC_MON_Msk 0x1F00UL +#define BACKUP_RTC_DATE_RTC_YEAR_Pos 16UL +#define BACKUP_RTC_DATE_RTC_YEAR_Msk 0xFF0000UL +/* BACKUP.ALM1_TIME */ +#define BACKUP_ALM1_TIME_ALM_SEC_Pos 0UL +#define BACKUP_ALM1_TIME_ALM_SEC_Msk 0x7FUL +#define BACKUP_ALM1_TIME_ALM_SEC_EN_Pos 7UL +#define BACKUP_ALM1_TIME_ALM_SEC_EN_Msk 0x80UL +#define BACKUP_ALM1_TIME_ALM_MIN_Pos 8UL +#define BACKUP_ALM1_TIME_ALM_MIN_Msk 0x7F00UL +#define BACKUP_ALM1_TIME_ALM_MIN_EN_Pos 15UL +#define BACKUP_ALM1_TIME_ALM_MIN_EN_Msk 0x8000UL +#define BACKUP_ALM1_TIME_ALM_HOUR_Pos 16UL +#define BACKUP_ALM1_TIME_ALM_HOUR_Msk 0x3F0000UL +#define BACKUP_ALM1_TIME_ALM_HOUR_EN_Pos 23UL +#define BACKUP_ALM1_TIME_ALM_HOUR_EN_Msk 0x800000UL +#define BACKUP_ALM1_TIME_ALM_DAY_Pos 24UL +#define BACKUP_ALM1_TIME_ALM_DAY_Msk 0x7000000UL +#define BACKUP_ALM1_TIME_ALM_DAY_EN_Pos 31UL +#define BACKUP_ALM1_TIME_ALM_DAY_EN_Msk 0x80000000UL +/* BACKUP.ALM1_DATE */ +#define BACKUP_ALM1_DATE_ALM_DATE_Pos 0UL +#define BACKUP_ALM1_DATE_ALM_DATE_Msk 0x3FUL +#define BACKUP_ALM1_DATE_ALM_DATE_EN_Pos 7UL +#define BACKUP_ALM1_DATE_ALM_DATE_EN_Msk 0x80UL +#define BACKUP_ALM1_DATE_ALM_MON_Pos 8UL +#define BACKUP_ALM1_DATE_ALM_MON_Msk 0x1F00UL +#define BACKUP_ALM1_DATE_ALM_MON_EN_Pos 15UL +#define BACKUP_ALM1_DATE_ALM_MON_EN_Msk 0x8000UL +#define BACKUP_ALM1_DATE_ALM_EN_Pos 31UL +#define BACKUP_ALM1_DATE_ALM_EN_Msk 0x80000000UL +/* BACKUP.ALM2_TIME */ +#define BACKUP_ALM2_TIME_ALM_SEC_Pos 0UL +#define BACKUP_ALM2_TIME_ALM_SEC_Msk 0x7FUL +#define BACKUP_ALM2_TIME_ALM_SEC_EN_Pos 7UL +#define BACKUP_ALM2_TIME_ALM_SEC_EN_Msk 0x80UL +#define BACKUP_ALM2_TIME_ALM_MIN_Pos 8UL +#define BACKUP_ALM2_TIME_ALM_MIN_Msk 0x7F00UL +#define BACKUP_ALM2_TIME_ALM_MIN_EN_Pos 15UL +#define BACKUP_ALM2_TIME_ALM_MIN_EN_Msk 0x8000UL +#define BACKUP_ALM2_TIME_ALM_HOUR_Pos 16UL +#define BACKUP_ALM2_TIME_ALM_HOUR_Msk 0x3F0000UL +#define BACKUP_ALM2_TIME_ALM_HOUR_EN_Pos 23UL +#define BACKUP_ALM2_TIME_ALM_HOUR_EN_Msk 0x800000UL +#define BACKUP_ALM2_TIME_ALM_DAY_Pos 24UL +#define BACKUP_ALM2_TIME_ALM_DAY_Msk 0x7000000UL +#define BACKUP_ALM2_TIME_ALM_DAY_EN_Pos 31UL +#define BACKUP_ALM2_TIME_ALM_DAY_EN_Msk 0x80000000UL +/* BACKUP.ALM2_DATE */ +#define BACKUP_ALM2_DATE_ALM_DATE_Pos 0UL +#define BACKUP_ALM2_DATE_ALM_DATE_Msk 0x3FUL +#define BACKUP_ALM2_DATE_ALM_DATE_EN_Pos 7UL +#define BACKUP_ALM2_DATE_ALM_DATE_EN_Msk 0x80UL +#define BACKUP_ALM2_DATE_ALM_MON_Pos 8UL +#define BACKUP_ALM2_DATE_ALM_MON_Msk 0x1F00UL +#define BACKUP_ALM2_DATE_ALM_MON_EN_Pos 15UL +#define BACKUP_ALM2_DATE_ALM_MON_EN_Msk 0x8000UL +#define BACKUP_ALM2_DATE_ALM_EN_Pos 31UL +#define BACKUP_ALM2_DATE_ALM_EN_Msk 0x80000000UL +/* BACKUP.INTR */ +#define BACKUP_INTR_ALARM1_Pos 0UL +#define BACKUP_INTR_ALARM1_Msk 0x1UL +#define BACKUP_INTR_ALARM2_Pos 1UL +#define BACKUP_INTR_ALARM2_Msk 0x2UL +#define BACKUP_INTR_CENTURY_Pos 2UL +#define BACKUP_INTR_CENTURY_Msk 0x4UL +/* BACKUP.INTR_SET */ +#define BACKUP_INTR_SET_ALARM1_Pos 0UL +#define BACKUP_INTR_SET_ALARM1_Msk 0x1UL +#define BACKUP_INTR_SET_ALARM2_Pos 1UL +#define BACKUP_INTR_SET_ALARM2_Msk 0x2UL +#define BACKUP_INTR_SET_CENTURY_Pos 2UL +#define BACKUP_INTR_SET_CENTURY_Msk 0x4UL +/* BACKUP.INTR_MASK */ +#define BACKUP_INTR_MASK_ALARM1_Pos 0UL +#define BACKUP_INTR_MASK_ALARM1_Msk 0x1UL +#define BACKUP_INTR_MASK_ALARM2_Pos 1UL +#define BACKUP_INTR_MASK_ALARM2_Msk 0x2UL +#define BACKUP_INTR_MASK_CENTURY_Pos 2UL +#define BACKUP_INTR_MASK_CENTURY_Msk 0x4UL +/* BACKUP.INTR_MASKED */ +#define BACKUP_INTR_MASKED_ALARM1_Pos 0UL +#define BACKUP_INTR_MASKED_ALARM1_Msk 0x1UL +#define BACKUP_INTR_MASKED_ALARM2_Pos 1UL +#define BACKUP_INTR_MASKED_ALARM2_Msk 0x2UL +#define BACKUP_INTR_MASKED_CENTURY_Pos 2UL +#define BACKUP_INTR_MASKED_CENTURY_Msk 0x4UL +/* BACKUP.OSCCNT */ +#define BACKUP_OSCCNT_CNT32KHZ_Pos 0UL +#define BACKUP_OSCCNT_CNT32KHZ_Msk 0xFFUL +/* BACKUP.TICKS */ +#define BACKUP_TICKS_CNT128HZ_Pos 0UL +#define BACKUP_TICKS_CNT128HZ_Msk 0x3FUL +/* BACKUP.PMIC_CTL */ +#define BACKUP_PMIC_CTL_UNLOCK_Pos 8UL +#define BACKUP_PMIC_CTL_UNLOCK_Msk 0xFF00UL +#define BACKUP_PMIC_CTL_POLARITY_Pos 16UL +#define BACKUP_PMIC_CTL_POLARITY_Msk 0x10000UL +#define BACKUP_PMIC_CTL_PMIC_EN_OUTEN_Pos 29UL +#define BACKUP_PMIC_CTL_PMIC_EN_OUTEN_Msk 0x20000000UL +#define BACKUP_PMIC_CTL_PMIC_ALWAYSEN_Pos 30UL +#define BACKUP_PMIC_CTL_PMIC_ALWAYSEN_Msk 0x40000000UL +#define BACKUP_PMIC_CTL_PMIC_EN_Pos 31UL +#define BACKUP_PMIC_CTL_PMIC_EN_Msk 0x80000000UL +/* BACKUP.RESET */ +#define BACKUP_RESET_RESET_Pos 31UL +#define BACKUP_RESET_RESET_Msk 0x80000000UL +/* BACKUP.BREG */ +#define BACKUP_BREG_BREG_Pos 0UL +#define BACKUP_BREG_BREG_Msk 0xFFFFFFFFUL +/* BACKUP.TRIM */ +#define BACKUP_TRIM_TRIM_Pos 0UL +#define BACKUP_TRIM_TRIM_Msk 0x3FUL + + +#endif /* _CYIP_BACKUP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ble.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ble.h new file mode 100644 index 00000000000..f43b6e0a1e3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ble.h @@ -0,0 +1,2255 @@ +/***************************************************************************//** +* \file cyip_ble.h +* +* \brief +* BLE IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_BLE_H_ +#define _CYIP_BLE_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_RCB_RCBLL_SECTION_SIZE 0x00000100UL +#define BLE_RCB_SECTION_SIZE 0x00000200UL +#define BLE_BLELL_SECTION_SIZE 0x0001E000UL +#define BLE_BLESS_SECTION_SIZE 0x00001000UL +#define BLE_SECTION_SIZE 0x00020000UL + +/** + * \brief Radio Control Bus (RCB) & Link Layer controller (BLE_RCB_RCBLL) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 RCB LL control register. */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t INTR; /*!< 0x00000010 Master interrupt request register. */ + __IOM uint32_t INTR_SET; /*!< 0x00000014 Master interrupt set request register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 Master interrupt mask register. */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C Master interrupt masked request register */ + __IOM uint32_t RADIO_REG1_ADDR; /*!< 0x00000020 Address of Register#1 in Radio (MDON) */ + __IOM uint32_t RADIO_REG2_ADDR; /*!< 0x00000024 Address of Register#2 in Radio (RSSI) */ + __IOM uint32_t RADIO_REG3_ADDR; /*!< 0x00000028 Address of Register#3 in Radio (ACCL) */ + __IOM uint32_t RADIO_REG4_ADDR; /*!< 0x0000002C Address of Register#4 in Radio (ACCH) */ + __IOM uint32_t RADIO_REG5_ADDR; /*!< 0x00000030 Address of Register#5 in Radio (RSSI ENERGY) */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t CPU_WRITE_REG; /*!< 0x00000040 N/A */ + __IOM uint32_t CPU_READ_REG; /*!< 0x00000044 N/A */ + __IM uint32_t RESERVED2[46]; +} BLE_RCB_RCBLL_V1_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief Radio Control Bus (RCB) controller (BLE_RCB) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 RCB control register. */ + __IM uint32_t STATUS; /*!< 0x00000004 RCB status register. */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t TX_CTRL; /*!< 0x00000010 Transmitter control register. */ + __IOM uint32_t TX_FIFO_CTRL; /*!< 0x00000014 Transmitter FIFO control register. */ + __IM uint32_t TX_FIFO_STATUS; /*!< 0x00000018 Transmitter FIFO status register. */ + __OM uint32_t TX_FIFO_WR; /*!< 0x0000001C Transmitter FIFO write register. */ + __IOM uint32_t RX_CTRL; /*!< 0x00000020 Receiver control register. */ + __IOM uint32_t RX_FIFO_CTRL; /*!< 0x00000024 Receiver FIFO control register. */ + __IM uint32_t RX_FIFO_STATUS; /*!< 0x00000028 Receiver FIFO status register. */ + __IM uint32_t RX_FIFO_RD; /*!< 0x0000002C Receiver FIFO read register. */ + __IM uint32_t RX_FIFO_RD_SILENT; /*!< 0x00000030 Receiver FIFO read register. */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t INTR; /*!< 0x00000040 Master interrupt request register. */ + __IOM uint32_t INTR_SET; /*!< 0x00000044 Master interrupt set request register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000048 Master interrupt mask register. */ + __IM uint32_t INTR_MASKED; /*!< 0x0000004C Master interrupt masked request register */ + __IM uint32_t RESERVED2[44]; + BLE_RCB_RCBLL_V1_Type RCBLL; /*!< 0x00000100 Radio Control Bus (RCB) & Link Layer controller */ +} BLE_RCB_V1_Type; /*!< Size = 512 (0x200) */ + +/** + * \brief Bluetooth Low Energy Link Layer (BLE_BLELL) + */ +typedef struct { + __OM uint32_t COMMAND_REGISTER; /*!< 0x00000000 Instruction Register */ + __IM uint32_t RESERVED; + __IOM uint32_t EVENT_INTR; /*!< 0x00000008 Event(Interrupt) status and Clear register */ + __IM uint32_t RESERVED1; + __IOM uint32_t EVENT_ENABLE; /*!< 0x00000010 Event indications enable. */ + __IM uint32_t RESERVED2; + __IOM uint32_t ADV_PARAMS; /*!< 0x00000018 Advertising parameters register. */ + __IOM uint32_t ADV_INTERVAL_TIMEOUT; /*!< 0x0000001C Advertising interval register. */ + __IOM uint32_t ADV_INTR; /*!< 0x00000020 Advertising interrupt status and Clear register */ + __IM uint32_t ADV_NEXT_INSTANT; /*!< 0x00000024 Advertising next instant. */ + __IOM uint32_t SCAN_INTERVAL; /*!< 0x00000028 Scan Interval Register */ + __IOM uint32_t SCAN_WINDOW; /*!< 0x0000002C Scan window Register */ + __IOM uint32_t SCAN_PARAM; /*!< 0x00000030 Scanning parameters register */ + __IM uint32_t RESERVED3; + __IOM uint32_t SCAN_INTR; /*!< 0x00000038 Scan interrupt status and Clear register */ + __IM uint32_t SCAN_NEXT_INSTANT; /*!< 0x0000003C Advertising next instant. */ + __IOM uint32_t INIT_INTERVAL; /*!< 0x00000040 Initiator Interval Register */ + __IOM uint32_t INIT_WINDOW; /*!< 0x00000044 Initiator window Register */ + __IOM uint32_t INIT_PARAM; /*!< 0x00000048 Initiator parameters register */ + __IM uint32_t RESERVED4; + __IOM uint32_t INIT_INTR; /*!< 0x00000050 Scan interrupt status and Clear register */ + __IM uint32_t INIT_NEXT_INSTANT; /*!< 0x00000054 Initiator next instant. */ + __IOM uint32_t DEVICE_RAND_ADDR_L; /*!< 0x00000058 Lower 16 bit random address of the device. */ + __IOM uint32_t DEVICE_RAND_ADDR_M; /*!< 0x0000005C Middle 16 bit random address of the device. */ + __IOM uint32_t DEVICE_RAND_ADDR_H; /*!< 0x00000060 Higher 16 bit random address of the device. */ + __IM uint32_t RESERVED5; + __IOM uint32_t PEER_ADDR_L; /*!< 0x00000068 Lower 16 bit address of the peer device. */ + __IOM uint32_t PEER_ADDR_M; /*!< 0x0000006C Middle 16 bit address of the peer device. */ + __IOM uint32_t PEER_ADDR_H; /*!< 0x00000070 Higher 16 bit address of the peer device. */ + __IM uint32_t RESERVED6; + __IOM uint32_t WL_ADDR_TYPE; /*!< 0x00000078 whitelist address type */ + __IOM uint32_t WL_ENABLE; /*!< 0x0000007C whitelist valid entry bit */ + __IOM uint32_t TRANSMIT_WINDOW_OFFSET; /*!< 0x00000080 Transmit window offset */ + __IOM uint32_t TRANSMIT_WINDOW_SIZE; /*!< 0x00000084 Transmit window size */ + __IOM uint32_t DATA_CHANNELS_L0; /*!< 0x00000088 Data channel map 0 (lower word) */ + __IOM uint32_t DATA_CHANNELS_M0; /*!< 0x0000008C Data channel map 0 (middle word) */ + __IOM uint32_t DATA_CHANNELS_H0; /*!< 0x00000090 Data channel map 0 (upper word) */ + __IM uint32_t RESERVED7; + __IOM uint32_t DATA_CHANNELS_L1; /*!< 0x00000098 Data channel map 1 (lower word) */ + __IOM uint32_t DATA_CHANNELS_M1; /*!< 0x0000009C Data channel map 1 (middle word) */ + __IOM uint32_t DATA_CHANNELS_H1; /*!< 0x000000A0 Data channel map 1 (upper word) */ + __IM uint32_t RESERVED8; + __IOM uint32_t CONN_INTR; /*!< 0x000000A8 Connection interrupt status and Clear register */ + __IM uint32_t CONN_STATUS; /*!< 0x000000AC Connection channel status */ + __IOM uint32_t CONN_INDEX; /*!< 0x000000B0 Connection Index register */ + __IM uint32_t RESERVED9; + __IOM uint32_t WAKEUP_CONFIG; /*!< 0x000000B8 Wakeup configuration */ + __IM uint32_t RESERVED10; + __IOM uint32_t WAKEUP_CONTROL; /*!< 0x000000C0 Wakeup control */ + __IOM uint32_t CLOCK_CONFIG; /*!< 0x000000C4 Clock control */ + __IM uint32_t TIM_COUNTER_L; /*!< 0x000000C8 Reference Clock */ + __IOM uint32_t WAKEUP_CONFIG_EXTD; /*!< 0x000000CC Wakeup configuration extended */ + __IM uint32_t RESERVED11[2]; + __IOM uint32_t POC_REG__TIM_CONTROL; /*!< 0x000000D8 BLE Time Control */ + __IM uint32_t RESERVED12; + __IOM uint32_t ADV_TX_DATA_FIFO; /*!< 0x000000E0 Advertising data transmit FIFO. Access ADVCH_TX_FIFO. */ + __IM uint32_t RESERVED13; + __IOM uint32_t ADV_SCN_RSP_TX_FIFO; /*!< 0x000000E8 Advertising scan response data transmit FIFO. Access + ADVCH_TX_FIFO. */ + __IM uint32_t RESERVED14[3]; + __IM uint32_t INIT_SCN_ADV_RX_FIFO; /*!< 0x000000F8 advertising scan response data receive data FIFO. Access + ADVRX_FIFO. */ + __IM uint32_t RESERVED15; + __IOM uint32_t CONN_INTERVAL; /*!< 0x00000100 Connection Interval */ + __IOM uint32_t SUP_TIMEOUT; /*!< 0x00000104 Supervision timeout */ + __IOM uint32_t SLAVE_LATENCY; /*!< 0x00000108 Slave Latency */ + __IOM uint32_t CE_LENGTH; /*!< 0x0000010C Connection event length */ + __IOM uint32_t PDU_ACCESS_ADDR_L_REGISTER; /*!< 0x00000110 Access address (lower) */ + __IOM uint32_t PDU_ACCESS_ADDR_H_REGISTER; /*!< 0x00000114 Access address (upper) */ + __IOM uint32_t CONN_CE_INSTANT; /*!< 0x00000118 Connection event instant */ + __IOM uint32_t CE_CNFG_STS_REGISTER; /*!< 0x0000011C connection configuration & status register */ + __IM uint32_t NEXT_CE_INSTANT; /*!< 0x00000120 Next connection event instant */ + __IM uint32_t CONN_CE_COUNTER; /*!< 0x00000124 connection event counter */ + __IOM uint32_t DATA_LIST_SENT_UPDATE__STATUS; /*!< 0x00000128 data list sent update and status */ + __IOM uint32_t DATA_LIST_ACK_UPDATE__STATUS; /*!< 0x0000012C data list ack update and status */ + __IOM uint32_t CE_CNFG_STS_REGISTER_EXT; /*!< 0x00000130 connection configuration & status register */ + __IOM uint32_t CONN_EXT_INTR; /*!< 0x00000134 Connection extended interrupt status and Clear register */ + __IOM uint32_t CONN_EXT_INTR_MASK; /*!< 0x00000138 Connection Extended Interrupt mask */ + __IM uint32_t RESERVED16; + __IOM uint32_t DATA_MEM_DESCRIPTOR[5]; /*!< 0x00000140 Data buffer descriptor 0 to 4 */ + __IM uint32_t RESERVED17[3]; + __IOM uint32_t WINDOW_WIDEN_INTVL; /*!< 0x00000160 Window widen for interval */ + __IOM uint32_t WINDOW_WIDEN_WINOFF; /*!< 0x00000164 Window widen for offset */ + __IM uint32_t RESERVED18[2]; + __IOM uint32_t LE_RF_TEST_MODE; /*!< 0x00000170 Direct Test Mode control */ + __IM uint32_t DTM_RX_PKT_COUNT; /*!< 0x00000174 Direct Test Mode receive packet count */ + __IOM uint32_t LE_RF_TEST_MODE_EXT; /*!< 0x00000178 Direct Test Mode control */ + __IM uint32_t RESERVED19[3]; + __IM uint32_t TXRX_HOP; /*!< 0x00000188 Channel Address register */ + __IM uint32_t RESERVED20; + __IOM uint32_t TX_RX_ON_DELAY; /*!< 0x00000190 Transmit/Receive data delay */ + __IM uint32_t RESERVED21[5]; + __IOM uint32_t ADV_ACCADDR_L; /*!< 0x000001A8 ADV packet access code low word */ + __IOM uint32_t ADV_ACCADDR_H; /*!< 0x000001AC ADV packet access code high word */ + __IOM uint32_t ADV_CH_TX_POWER_LVL_LS; /*!< 0x000001B0 Advertising channel transmit power setting */ + __IOM uint32_t ADV_CH_TX_POWER_LVL_MS; /*!< 0x000001B4 Advertising channel transmit power setting extension */ + __IOM uint32_t CONN_CH_TX_POWER_LVL_LS; /*!< 0x000001B8 Connection channel transmit power setting */ + __IOM uint32_t CONN_CH_TX_POWER_LVL_MS; /*!< 0x000001BC Connection channel transmit power setting extension */ + __IOM uint32_t DEV_PUB_ADDR_L; /*!< 0x000001C0 Device public address lower register */ + __IOM uint32_t DEV_PUB_ADDR_M; /*!< 0x000001C4 Device public address middle register */ + __IOM uint32_t DEV_PUB_ADDR_H; /*!< 0x000001C8 Device public address higher register */ + __IM uint32_t RESERVED22; + __IOM uint32_t OFFSET_TO_FIRST_INSTANT; /*!< 0x000001D0 Offset to first instant */ + __IOM uint32_t ADV_CONFIG; /*!< 0x000001D4 Advertiser configuration register */ + __IOM uint32_t SCAN_CONFIG; /*!< 0x000001D8 Scan configuration register */ + __IOM uint32_t INIT_CONFIG; /*!< 0x000001DC Initiator configuration register */ + __IOM uint32_t CONN_CONFIG; /*!< 0x000001E0 Connection configuration register */ + __IM uint32_t RESERVED23; + __IOM uint32_t CONN_PARAM1; /*!< 0x000001E8 Connection parameter 1 */ + __IOM uint32_t CONN_PARAM2; /*!< 0x000001EC Connection parameter 2 */ + __IOM uint32_t CONN_INTR_MASK; /*!< 0x000001F0 Connection Interrupt mask */ + __IOM uint32_t SLAVE_TIMING_CONTROL; /*!< 0x000001F4 slave timing control */ + __IOM uint32_t RECEIVE_TRIG_CTRL; /*!< 0x000001F8 Receive trigger control */ + __IM uint32_t RESERVED24; + __IM uint32_t LL_DBG_1; /*!< 0x00000200 LL debug register 1 */ + __IM uint32_t LL_DBG_2; /*!< 0x00000204 LL debug register 2 */ + __IM uint32_t LL_DBG_3; /*!< 0x00000208 LL debug register 3 */ + __IM uint32_t LL_DBG_4; /*!< 0x0000020C LL debug register 4 */ + __IM uint32_t LL_DBG_5; /*!< 0x00000210 LL debug register 5 */ + __IM uint32_t LL_DBG_6; /*!< 0x00000214 LL debug register 6 */ + __IM uint32_t LL_DBG_7; /*!< 0x00000218 LL debug register 7 */ + __IM uint32_t LL_DBG_8; /*!< 0x0000021C LL debug register 8 */ + __IM uint32_t LL_DBG_9; /*!< 0x00000220 LL debug register 9 */ + __IM uint32_t LL_DBG_10; /*!< 0x00000224 LL debug register 10 */ + __IM uint32_t RESERVED25[2]; + __IOM uint32_t PEER_ADDR_INIT_L; /*!< 0x00000230 Lower 16 bit address of the peer device for INIT. */ + __IOM uint32_t PEER_ADDR_INIT_M; /*!< 0x00000234 Middle 16 bit address of the peer device for INIT. */ + __IOM uint32_t PEER_ADDR_INIT_H; /*!< 0x00000238 Higher 16 bit address of the peer device for INIT. */ + __IOM uint32_t PEER_SEC_ADDR_ADV_L; /*!< 0x0000023C Lower 16 bits of the secondary address of the peer device for + ADV_DIR. */ + __IOM uint32_t PEER_SEC_ADDR_ADV_M; /*!< 0x00000240 Middle 16 bits of the secondary address of the peer device for + ADV_DIR. */ + __IOM uint32_t PEER_SEC_ADDR_ADV_H; /*!< 0x00000244 Higher 16 bits of the secondary address of the peer device for + ADV_DIR. */ + __IOM uint32_t INIT_WINDOW_TIMER_CTRL; /*!< 0x00000248 Initiator Window NI timer control */ + __IOM uint32_t CONN_CONFIG_EXT; /*!< 0x0000024C Connection extended configuration register */ + __IM uint32_t RESERVED26[2]; + __IOM uint32_t DPLL_CONFIG; /*!< 0x00000258 DPLL & CY Correlator configuration register */ + __IM uint32_t RESERVED27; + __IOM uint32_t INIT_NI_VAL; /*!< 0x00000260 Initiator Window NI instant */ + __IM uint32_t INIT_WINDOW_OFFSET; /*!< 0x00000264 Initiator Window offset captured at conn request */ + __IM uint32_t INIT_WINDOW_NI_ANCHOR_PT; /*!< 0x00000268 Initiator Window NI anchor point captured at conn request */ + __IM uint32_t RESERVED28[78]; + __IOM uint32_t CONN_UPDATE_NEW_INTERVAL; /*!< 0x000003A4 Connection update new interval */ + __IOM uint32_t CONN_UPDATE_NEW_LATENCY; /*!< 0x000003A8 Connection update new latency */ + __IOM uint32_t CONN_UPDATE_NEW_SUP_TO; /*!< 0x000003AC Connection update new supervision timeout */ + __IOM uint32_t CONN_UPDATE_NEW_SL_INTERVAL; /*!< 0x000003B0 Connection update new Slave Latency X Conn interval Value */ + __IM uint32_t RESERVED29[3]; + __IOM uint32_t CONN_REQ_WORD0; /*!< 0x000003C0 Connection request address word 0 */ + __IOM uint32_t CONN_REQ_WORD1; /*!< 0x000003C4 Connection request address word 1 */ + __IOM uint32_t CONN_REQ_WORD2; /*!< 0x000003C8 Connection request address word 2 */ + __IOM uint32_t CONN_REQ_WORD3; /*!< 0x000003CC Connection request address word 3 */ + __IOM uint32_t CONN_REQ_WORD4; /*!< 0x000003D0 Connection request address word 4 */ + __IOM uint32_t CONN_REQ_WORD5; /*!< 0x000003D4 Connection request address word 5 */ + __IOM uint32_t CONN_REQ_WORD6; /*!< 0x000003D8 Connection request address word 6 */ + __IOM uint32_t CONN_REQ_WORD7; /*!< 0x000003DC Connection request address word 7 */ + __IOM uint32_t CONN_REQ_WORD8; /*!< 0x000003E0 Connection request address word 8 */ + __IOM uint32_t CONN_REQ_WORD9; /*!< 0x000003E4 Connection request address word 9 */ + __IOM uint32_t CONN_REQ_WORD10; /*!< 0x000003E8 Connection request address word 10 */ + __IOM uint32_t CONN_REQ_WORD11; /*!< 0x000003EC Connection request address word 11 */ + __IM uint32_t RESERVED30[389]; + __IOM uint32_t PDU_RESP_TIMER; /*!< 0x00000A04 PDU response timer/Generic Timer (MMMS mode) */ + __IM uint32_t NEXT_RESP_TIMER_EXP; /*!< 0x00000A08 Next response timeout instant */ + __IM uint32_t NEXT_SUP_TO; /*!< 0x00000A0C Next supervision timeout instant */ + __IOM uint32_t LLH_FEATURE_CONFIG; /*!< 0x00000A10 Feature enable */ + __IOM uint32_t WIN_MIN_STEP_SIZE; /*!< 0x00000A14 Window minimum step size */ + __IOM uint32_t SLV_WIN_ADJ; /*!< 0x00000A18 Slave window adjustment */ + __IOM uint32_t SL_CONN_INTERVAL; /*!< 0x00000A1C Slave Latency X Conn Interval Value */ + __IOM uint32_t LE_PING_TIMER_ADDR; /*!< 0x00000A20 LE Ping connection timer address */ + __IOM uint32_t LE_PING_TIMER_OFFSET; /*!< 0x00000A24 LE Ping connection timer offset */ + __IM uint32_t LE_PING_TIMER_NEXT_EXP; /*!< 0x00000A28 LE Ping timer next expiry instant */ + __IM uint32_t LE_PING_TIMER_WRAP_COUNT; /*!< 0x00000A2C LE Ping Timer wrap count */ + __IM uint32_t RESERVED31[244]; + __IOM uint32_t TX_EN_EXT_DELAY; /*!< 0x00000E00 Transmit enable extension delay */ + __IOM uint32_t TX_RX_SYNTH_DELAY; /*!< 0x00000E04 Transmit/Receive enable delay */ + __IOM uint32_t EXT_PA_LNA_DLY_CNFG; /*!< 0x00000E08 External TX PA and RX LNA delay configuration */ + __IM uint32_t RESERVED32; + __IOM uint32_t LL_CONFIG; /*!< 0x00000E10 Link Layer additional configuration */ + __IM uint32_t RESERVED33[59]; + __IOM uint32_t LL_CONTROL; /*!< 0x00000F00 LL Backward compatibility */ + __IOM uint32_t DEV_PA_ADDR_L; /*!< 0x00000F04 Device Resolvable/Non-Resolvable Private address lower register */ + __IOM uint32_t DEV_PA_ADDR_M; /*!< 0x00000F08 Device Resolvable/Non-Resolvable Private address middle + register */ + __IOM uint32_t DEV_PA_ADDR_H; /*!< 0x00000F0C Device Resolvable/Non-Resolvable Private address higher + register */ + __IOM uint32_t RSLV_LIST_ENABLE[16]; /*!< 0x00000F10 Resolving list entry control bit */ + __IM uint32_t RESERVED34[20]; + __IOM uint32_t WL_CONNECTION_STATUS; /*!< 0x00000FA0 whitelist valid entry bit */ + __IM uint32_t RESERVED35[535]; + __IOM uint32_t CONN_RXMEM_BASE_ADDR_DLE; /*!< 0x00001800 DLE Connection RX memory base address */ + __IM uint32_t RESERVED36[1023]; + __IOM uint32_t CONN_TXMEM_BASE_ADDR_DLE; /*!< 0x00002800 DLE Connection TX memory base address */ + __IM uint32_t RESERVED37[16383]; + __IOM uint32_t CONN_1_PARAM_MEM_BASE_ADDR; /*!< 0x00012800 Connection Parameter memory base address for connection 1 */ + __IM uint32_t RESERVED38[31]; + __IOM uint32_t CONN_2_PARAM_MEM_BASE_ADDR; /*!< 0x00012880 Connection Parameter memory base address for connection 2 */ + __IM uint32_t RESERVED39[31]; + __IOM uint32_t CONN_3_PARAM_MEM_BASE_ADDR; /*!< 0x00012900 Connection Parameter memory base address for connection 3 */ + __IM uint32_t RESERVED40[31]; + __IOM uint32_t CONN_4_PARAM_MEM_BASE_ADDR; /*!< 0x00012980 Connection Parameter memory base address for connection 4 */ + __IM uint32_t RESERVED41[1439]; + __IOM uint32_t NI_TIMER; /*!< 0x00014000 Next Instant Timer */ + __IOM uint32_t US_OFFSET; /*!< 0x00014004 Micro-second Offset */ + __IOM uint32_t NEXT_CONN; /*!< 0x00014008 Next Connection */ + __IOM uint32_t NI_ABORT; /*!< 0x0001400C Abort next scheduled connection */ + __IM uint32_t RESERVED42[4]; + __IM uint32_t CONN_NI_STATUS; /*!< 0x00014020 Connection NI Status */ + __IM uint32_t NEXT_SUP_TO_STATUS; /*!< 0x00014024 Next Supervision timeout Status */ + __IM uint32_t MMMS_CONN_STATUS; /*!< 0x00014028 Connection Status */ + __IM uint32_t BT_SLOT_CAPT_STATUS; /*!< 0x0001402C BT Slot Captured Status */ + __IM uint32_t US_CAPT_STATUS; /*!< 0x00014030 Micro-second Capture Status */ + __IM uint32_t US_OFFSET_STATUS; /*!< 0x00014034 Micro-second Offset Status */ + __IM uint32_t ACCU_WINDOW_WIDEN_STATUS; /*!< 0x00014038 Accumulated Window Widen Status */ + __IM uint32_t EARLY_INTR_STATUS; /*!< 0x0001403C Status when early interrupt is raised */ + __IOM uint32_t MMMS_CONFIG; /*!< 0x00014040 Multi-Master Multi-Slave Config */ + __IM uint32_t US_COUNTER; /*!< 0x00014044 Running US of the current BT Slot */ + __IOM uint32_t US_CAPT_PREV; /*!< 0x00014048 Previous captured US of the BT Slot */ + __IM uint32_t EARLY_INTR_NI; /*!< 0x0001404C NI at early interrupt */ + __IM uint32_t RESERVED43[12]; + __IM uint32_t MMMS_MASTER_CREATE_BT_CAPT; /*!< 0x00014080 BT slot capture for master connection creation */ + __IM uint32_t MMMS_SLAVE_CREATE_BT_CAPT; /*!< 0x00014084 BT slot capture for slave connection creation */ + __IM uint32_t MMMS_SLAVE_CREATE_US_CAPT; /*!< 0x00014088 Micro second capture for slave connection creation */ + __IM uint32_t RESERVED44[29]; + __IOM uint32_t MMMS_DATA_MEM_DESCRIPTOR[16]; /*!< 0x00014100 Data buffer descriptor 0 to 15 */ + __IM uint32_t RESERVED45[48]; + __IOM uint32_t CONN_1_DATA_LIST_SENT; /*!< 0x00014200 data list sent update and status for connection 1 */ + __IOM uint32_t CONN_1_DATA_LIST_ACK; /*!< 0x00014204 data list ack update and status for connection 1 */ + __IOM uint32_t CONN_1_CE_DATA_LIST_CFG; /*!< 0x00014208 Connection specific pause resume for connection 1 */ + __IM uint32_t RESERVED46; + __IOM uint32_t CONN_2_DATA_LIST_SENT; /*!< 0x00014210 data list sent update and status for connection 2 */ + __IOM uint32_t CONN_2_DATA_LIST_ACK; /*!< 0x00014214 data list ack update and status for connection 2 */ + __IOM uint32_t CONN_2_CE_DATA_LIST_CFG; /*!< 0x00014218 Connection specific pause resume for connection 2 */ + __IM uint32_t RESERVED47; + __IOM uint32_t CONN_3_DATA_LIST_SENT; /*!< 0x00014220 data list sent update and status for connection 3 */ + __IOM uint32_t CONN_3_DATA_LIST_ACK; /*!< 0x00014224 data list ack update and status for connection 3 */ + __IOM uint32_t CONN_3_CE_DATA_LIST_CFG; /*!< 0x00014228 Connection specific pause resume for connection 3 */ + __IM uint32_t RESERVED48; + __IOM uint32_t CONN_4_DATA_LIST_SENT; /*!< 0x00014230 data list sent update and status for connection 4 */ + __IOM uint32_t CONN_4_DATA_LIST_ACK; /*!< 0x00014234 data list ack update and status for connection 4 */ + __IOM uint32_t CONN_4_CE_DATA_LIST_CFG; /*!< 0x00014238 Connection specific pause resume for connection 4 */ + __IM uint32_t RESERVED49[113]; + __IOM uint32_t MMMS_ADVCH_NI_ENABLE; /*!< 0x00014400 Enable bits for ADV_NI, SCAN_NI and INIT_NI */ + __IOM uint32_t MMMS_ADVCH_NI_VALID; /*!< 0x00014404 Next instant valid for ADV, SCAN, INIT */ + __IOM uint32_t MMMS_ADVCH_NI_ABORT; /*!< 0x00014408 Abort the next instant of ADV, SCAN, INIT */ + __IM uint32_t RESERVED50; + __IOM uint32_t CONN_PARAM_NEXT_SUP_TO; /*!< 0x00014410 Register to configure the supervision timeout for next + scheduled connection */ + __IOM uint32_t CONN_PARAM_ACC_WIN_WIDEN; /*!< 0x00014414 Register to configure Accumulated window widening for next + scheduled connection */ + __IM uint32_t RESERVED51[2]; + __IOM uint32_t HW_LOAD_OFFSET; /*!< 0x00014420 Register to configure offset from connection anchor point at + which connection parameter memory should be read */ + __IM uint32_t ADV_RAND; /*!< 0x00014424 Random number generated by Hardware for ADV NI calculation */ + __IM uint32_t MMMS_RX_PKT_CNTR; /*!< 0x00014428 Packet Counter of packets in RX FIFO in MMMS mode */ + __IM uint32_t RESERVED52; + __IM uint32_t CONN_RX_PKT_CNTR[8]; /*!< 0x00014430 Packet Counter for Individual connection index */ + __IM uint32_t RESERVED53[236]; + __IOM uint32_t WHITELIST_BASE_ADDR; /*!< 0x00014800 Whitelist base address */ + __IM uint32_t RESERVED54[47]; + __IOM uint32_t RSLV_LIST_PEER_IDNTT_BASE_ADDR; /*!< 0x000148C0 Resolving list base address for storing Peer Identity address */ + __IM uint32_t RESERVED55[47]; + __IOM uint32_t RSLV_LIST_PEER_RPA_BASE_ADDR; /*!< 0x00014980 Resolving list base address for storing resolved Peer RPA + address */ + __IM uint32_t RESERVED56[47]; + __IOM uint32_t RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR; /*!< 0x00014A40 Resolving list base address for storing Resolved received INITA + RPA */ + __IM uint32_t RESERVED57[47]; + __IOM uint32_t RSLV_LIST_TX_INIT_RPA_BASE_ADDR; /*!< 0x00014B00 Resolving list base address for storing generated TX INITA RPA */ + __IM uint32_t RESERVED58[9535]; +} BLE_BLELL_V1_Type; /*!< Size = 122880 (0x1E000) */ + +/** + * \brief Bluetooth Low Energy Subsystem Miscellaneous (BLE_BLESS) + */ +typedef struct { + __IM uint32_t RESERVED[24]; + __IOM uint32_t DDFT_CONFIG; /*!< 0x00000060 BLESS DDFT configuration register */ + __IOM uint32_t XTAL_CLK_DIV_CONFIG; /*!< 0x00000064 Crystal clock divider configuration register */ + __IOM uint32_t INTR_STAT; /*!< 0x00000068 Link Layer interrupt status register */ + __IOM uint32_t INTR_MASK; /*!< 0x0000006C Link Layer interrupt mask register */ + __IOM uint32_t LL_CLK_EN; /*!< 0x00000070 Link Layer primary clock enable */ + __IOM uint32_t LF_CLK_CTRL; /*!< 0x00000074 BLESS LF clock control and BLESS revision ID indicator */ + __IOM uint32_t EXT_PA_LNA_CTRL; /*!< 0x00000078 External TX PA and RX LNA control */ + __IM uint32_t RESERVED1; + __IM uint32_t LL_PKT_RSSI_CH_ENERGY; /*!< 0x00000080 Link Layer Last Received packet RSSI/Channel energy and channel + number */ + __IM uint32_t BT_CLOCK_CAPT; /*!< 0x00000084 BT clock captured on an LL DSM exit */ + __IM uint32_t RESERVED2[6]; + __IOM uint32_t MT_CFG; /*!< 0x000000A0 MT Configuration Register */ + __IOM uint32_t MT_DELAY_CFG; /*!< 0x000000A4 MT Delay configuration for state transitions */ + __IOM uint32_t MT_DELAY_CFG2; /*!< 0x000000A8 MT Delay configuration for state transitions */ + __IOM uint32_t MT_DELAY_CFG3; /*!< 0x000000AC MT Delay configuration for state transitions */ + __IOM uint32_t MT_VIO_CTRL; /*!< 0x000000B0 MT Configuration Register to control VIO switches */ + __IM uint32_t MT_STATUS; /*!< 0x000000B4 MT Status Register */ + __IM uint32_t PWR_CTRL_SM_ST; /*!< 0x000000B8 Link Layer Power Control FSM Status Register */ + __IM uint32_t RESERVED3; + __IOM uint32_t HVLDO_CTRL; /*!< 0x000000C0 HVLDO Configuration register */ + __IOM uint32_t MISC_EN_CTRL; /*!< 0x000000C4 Radio Buck and Active regulator enable control */ + __IM uint32_t RESERVED4[2]; + __IOM uint32_t EFUSE_CONFIG; /*!< 0x000000D0 EFUSE mode configuration register */ + __IOM uint32_t EFUSE_TIM_CTRL1; /*!< 0x000000D4 EFUSE timing control register (common for Program and Read + modes) */ + __IOM uint32_t EFUSE_TIM_CTRL2; /*!< 0x000000D8 EFUSE timing control Register (for Read) */ + __IOM uint32_t EFUSE_TIM_CTRL3; /*!< 0x000000DC EFUSE timing control Register (for Program) */ + __IM uint32_t EFUSE_RDATA_L; /*!< 0x000000E0 EFUSE Lower read data */ + __IM uint32_t EFUSE_RDATA_H; /*!< 0x000000E4 EFUSE higher read data */ + __IOM uint32_t EFUSE_WDATA_L; /*!< 0x000000E8 EFUSE lower write word */ + __IOM uint32_t EFUSE_WDATA_H; /*!< 0x000000EC EFUSE higher write word */ + __IOM uint32_t DIV_BY_625_CFG; /*!< 0x000000F0 Divide by 625 for FW Use */ + __IM uint32_t DIV_BY_625_STS; /*!< 0x000000F4 Output of divide by 625 divider */ + __IM uint32_t RESERVED5[2]; + __IOM uint32_t PACKET_COUNTER0; /*!< 0x00000100 Packet counter 0 */ + __IOM uint32_t PACKET_COUNTER2; /*!< 0x00000104 Packet counter 2 */ + __IOM uint32_t IV_MASTER0; /*!< 0x00000108 Master Initialization Vector 0 */ + __IOM uint32_t IV_SLAVE0; /*!< 0x0000010C Slave Initialization Vector 0 */ + __OM uint32_t ENC_KEY[4]; /*!< 0x00000110 Encryption Key register 0-3 */ + __IOM uint32_t MIC_IN0; /*!< 0x00000120 MIC input register */ + __IM uint32_t MIC_OUT0; /*!< 0x00000124 MIC output register */ + __IOM uint32_t ENC_PARAMS; /*!< 0x00000128 Encryption Parameter register */ + __IOM uint32_t ENC_CONFIG; /*!< 0x0000012C Encryption Configuration */ + __IOM uint32_t ENC_INTR_EN; /*!< 0x00000130 Encryption Interrupt enable */ + __IOM uint32_t ENC_INTR; /*!< 0x00000134 Encryption Interrupt status and clear register */ + __IM uint32_t RESERVED6[2]; + __IOM uint32_t B1_DATA_REG[4]; /*!< 0x00000140 Programmable B1 Data register (0-3) */ + __IOM uint32_t ENC_MEM_BASE_ADDR; /*!< 0x00000150 Encryption memory base address */ + __IM uint32_t RESERVED7[875]; + __IOM uint32_t TRIM_LDO_0; /*!< 0x00000F00 LDO Trim register 0 */ + __IOM uint32_t TRIM_LDO_1; /*!< 0x00000F04 LDO Trim register 1 */ + __IOM uint32_t TRIM_LDO_2; /*!< 0x00000F08 LDO Trim register 2 */ + __IOM uint32_t TRIM_LDO_3; /*!< 0x00000F0C LDO Trim register 3 */ + __IOM uint32_t TRIM_MXD[4]; /*!< 0x00000F10 MXD die Trim registers */ + __IM uint32_t RESERVED8[4]; + __IOM uint32_t TRIM_LDO_4; /*!< 0x00000F30 LDO Trim register 4 */ + __IOM uint32_t TRIM_LDO_5; /*!< 0x00000F34 LDO Trim register 5 */ + __IM uint32_t RESERVED9[50]; +} BLE_BLESS_V1_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief Bluetooth Low Energy Subsystem (BLE) + */ +typedef struct { + BLE_RCB_V1_Type RCB; /*!< 0x00000000 Radio Control Bus (RCB) controller */ + __IM uint32_t RESERVED[896]; + BLE_BLELL_V1_Type BLELL; /*!< 0x00001000 Bluetooth Low Energy Link Layer */ + BLE_BLESS_V1_Type BLESS; /*!< 0x0001F000 Bluetooth Low Energy Subsystem Miscellaneous */ +} BLE_V1_Type; /*!< Size = 131072 (0x20000) */ + + +/* BLE_RCB_RCBLL.CTRL */ +#define BLE_RCB_RCBLL_CTRL_RCBLL_CTRL_Pos 0UL +#define BLE_RCB_RCBLL_CTRL_RCBLL_CTRL_Msk 0x1UL +#define BLE_RCB_RCBLL_CTRL_RCBLL_CPU_REQ_Pos 1UL +#define BLE_RCB_RCBLL_CTRL_RCBLL_CPU_REQ_Msk 0x2UL +#define BLE_RCB_RCBLL_CTRL_CPU_SINGLE_WRITE_Pos 2UL +#define BLE_RCB_RCBLL_CTRL_CPU_SINGLE_WRITE_Msk 0x4UL +#define BLE_RCB_RCBLL_CTRL_CPU_SINGLE_READ_Pos 3UL +#define BLE_RCB_RCBLL_CTRL_CPU_SINGLE_READ_Msk 0x8UL +#define BLE_RCB_RCBLL_CTRL_ALLOW_CPU_ACCESS_TX_RX_Pos 4UL +#define BLE_RCB_RCBLL_CTRL_ALLOW_CPU_ACCESS_TX_RX_Msk 0x10UL +#define BLE_RCB_RCBLL_CTRL_ENABLE_RADIO_BOD_Pos 5UL +#define BLE_RCB_RCBLL_CTRL_ENABLE_RADIO_BOD_Msk 0x20UL +/* BLE_RCB_RCBLL.INTR */ +#define BLE_RCB_RCBLL_INTR_RCB_LL_DONE_Pos 0UL +#define BLE_RCB_RCBLL_INTR_RCB_LL_DONE_Msk 0x1UL +#define BLE_RCB_RCBLL_INTR_SINGLE_WRITE_DONE_Pos 2UL +#define BLE_RCB_RCBLL_INTR_SINGLE_WRITE_DONE_Msk 0x4UL +#define BLE_RCB_RCBLL_INTR_SINGLE_READ_DONE_Pos 3UL +#define BLE_RCB_RCBLL_INTR_SINGLE_READ_DONE_Msk 0x8UL +/* BLE_RCB_RCBLL.INTR_SET */ +#define BLE_RCB_RCBLL_INTR_SET_RCB_LL_DONE_Pos 0UL +#define BLE_RCB_RCBLL_INTR_SET_RCB_LL_DONE_Msk 0x1UL +#define BLE_RCB_RCBLL_INTR_SET_SINGLE_WRITE_DONE_Pos 2UL +#define BLE_RCB_RCBLL_INTR_SET_SINGLE_WRITE_DONE_Msk 0x4UL +#define BLE_RCB_RCBLL_INTR_SET_SINGLE_READ_DONE_Pos 3UL +#define BLE_RCB_RCBLL_INTR_SET_SINGLE_READ_DONE_Msk 0x8UL +/* BLE_RCB_RCBLL.INTR_MASK */ +#define BLE_RCB_RCBLL_INTR_MASK_RCB_LL_DONE_Pos 0UL +#define BLE_RCB_RCBLL_INTR_MASK_RCB_LL_DONE_Msk 0x1UL +#define BLE_RCB_RCBLL_INTR_MASK_SINGLE_WRITE_DONE_Pos 2UL +#define BLE_RCB_RCBLL_INTR_MASK_SINGLE_WRITE_DONE_Msk 0x4UL +#define BLE_RCB_RCBLL_INTR_MASK_SINGLE_READ_DONE_Pos 3UL +#define BLE_RCB_RCBLL_INTR_MASK_SINGLE_READ_DONE_Msk 0x8UL +/* BLE_RCB_RCBLL.INTR_MASKED */ +#define BLE_RCB_RCBLL_INTR_MASKED_RCB_LL_DONE_Pos 0UL +#define BLE_RCB_RCBLL_INTR_MASKED_RCB_LL_DONE_Msk 0x1UL +#define BLE_RCB_RCBLL_INTR_MASKED_SINGLE_WRITE_DONE_Pos 2UL +#define BLE_RCB_RCBLL_INTR_MASKED_SINGLE_WRITE_DONE_Msk 0x4UL +#define BLE_RCB_RCBLL_INTR_MASKED_SINGLE_READ_DONE_Pos 3UL +#define BLE_RCB_RCBLL_INTR_MASKED_SINGLE_READ_DONE_Msk 0x8UL +/* BLE_RCB_RCBLL.RADIO_REG1_ADDR */ +#define BLE_RCB_RCBLL_RADIO_REG1_ADDR_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_RADIO_REG1_ADDR_REG_ADDR_Msk 0xFFFFUL +/* BLE_RCB_RCBLL.RADIO_REG2_ADDR */ +#define BLE_RCB_RCBLL_RADIO_REG2_ADDR_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_RADIO_REG2_ADDR_REG_ADDR_Msk 0xFFFFUL +/* BLE_RCB_RCBLL.RADIO_REG3_ADDR */ +#define BLE_RCB_RCBLL_RADIO_REG3_ADDR_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_RADIO_REG3_ADDR_REG_ADDR_Msk 0xFFFFUL +/* BLE_RCB_RCBLL.RADIO_REG4_ADDR */ +#define BLE_RCB_RCBLL_RADIO_REG4_ADDR_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_RADIO_REG4_ADDR_REG_ADDR_Msk 0xFFFFUL +/* BLE_RCB_RCBLL.RADIO_REG5_ADDR */ +#define BLE_RCB_RCBLL_RADIO_REG5_ADDR_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_RADIO_REG5_ADDR_REG_ADDR_Msk 0xFFFFUL +/* BLE_RCB_RCBLL.CPU_WRITE_REG */ +#define BLE_RCB_RCBLL_CPU_WRITE_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_CPU_WRITE_REG_ADDR_Msk 0xFFFFUL +#define BLE_RCB_RCBLL_CPU_WRITE_REG_WRITE_DATA_Pos 16UL +#define BLE_RCB_RCBLL_CPU_WRITE_REG_WRITE_DATA_Msk 0xFFFF0000UL +/* BLE_RCB_RCBLL.CPU_READ_REG */ +#define BLE_RCB_RCBLL_CPU_READ_REG_ADDR_Pos 0UL +#define BLE_RCB_RCBLL_CPU_READ_REG_ADDR_Msk 0xFFFFUL +#define BLE_RCB_RCBLL_CPU_READ_REG_READ_DATA_Pos 16UL +#define BLE_RCB_RCBLL_CPU_READ_REG_READ_DATA_Msk 0xFFFF0000UL + + +/* BLE_RCB.CTRL */ +#define BLE_RCB_CTRL_TX_CLK_EDGE_Pos 1UL +#define BLE_RCB_CTRL_TX_CLK_EDGE_Msk 0x2UL +#define BLE_RCB_CTRL_RX_CLK_EDGE_Pos 2UL +#define BLE_RCB_CTRL_RX_CLK_EDGE_Msk 0x4UL +#define BLE_RCB_CTRL_RX_CLK_SRC_Pos 3UL +#define BLE_RCB_CTRL_RX_CLK_SRC_Msk 0x8UL +#define BLE_RCB_CTRL_SCLK_CONTINUOUS_Pos 4UL +#define BLE_RCB_CTRL_SCLK_CONTINUOUS_Msk 0x10UL +#define BLE_RCB_CTRL_SSEL_POLARITY_Pos 5UL +#define BLE_RCB_CTRL_SSEL_POLARITY_Msk 0x20UL +#define BLE_RCB_CTRL_LEAD_Pos 8UL +#define BLE_RCB_CTRL_LEAD_Msk 0x300UL +#define BLE_RCB_CTRL_LAG_Pos 10UL +#define BLE_RCB_CTRL_LAG_Msk 0xC00UL +#define BLE_RCB_CTRL_DIV_ENABLED_Pos 12UL +#define BLE_RCB_CTRL_DIV_ENABLED_Msk 0x1000UL +#define BLE_RCB_CTRL_DIV_Pos 13UL +#define BLE_RCB_CTRL_DIV_Msk 0x7E000UL +#define BLE_RCB_CTRL_ADDR_WIDTH_Pos 19UL +#define BLE_RCB_CTRL_ADDR_WIDTH_Msk 0x780000UL +#define BLE_RCB_CTRL_DATA_WIDTH_Pos 23UL +#define BLE_RCB_CTRL_DATA_WIDTH_Msk 0x800000UL +#define BLE_RCB_CTRL_ENABLED_Pos 31UL +#define BLE_RCB_CTRL_ENABLED_Msk 0x80000000UL +/* BLE_RCB.STATUS */ +#define BLE_RCB_STATUS_BUS_BUSY_Pos 0UL +#define BLE_RCB_STATUS_BUS_BUSY_Msk 0x1UL +/* BLE_RCB.TX_CTRL */ +#define BLE_RCB_TX_CTRL_MSB_FIRST_Pos 0UL +#define BLE_RCB_TX_CTRL_MSB_FIRST_Msk 0x1UL +#define BLE_RCB_TX_CTRL_FIFO_RECONFIG_Pos 1UL +#define BLE_RCB_TX_CTRL_FIFO_RECONFIG_Msk 0x2UL +#define BLE_RCB_TX_CTRL_TX_ENTRIES_Pos 2UL +#define BLE_RCB_TX_CTRL_TX_ENTRIES_Msk 0x7CUL +/* BLE_RCB.TX_FIFO_CTRL */ +#define BLE_RCB_TX_FIFO_CTRL_TX_TRIGGER_LEVEL_Pos 0UL +#define BLE_RCB_TX_FIFO_CTRL_TX_TRIGGER_LEVEL_Msk 0x1FUL +#define BLE_RCB_TX_FIFO_CTRL_CLEAR_Pos 16UL +#define BLE_RCB_TX_FIFO_CTRL_CLEAR_Msk 0x10000UL +/* BLE_RCB.TX_FIFO_STATUS */ +#define BLE_RCB_TX_FIFO_STATUS_USED_Pos 0UL +#define BLE_RCB_TX_FIFO_STATUS_USED_Msk 0x1FUL +#define BLE_RCB_TX_FIFO_STATUS_SR_VALID_Pos 15UL +#define BLE_RCB_TX_FIFO_STATUS_SR_VALID_Msk 0x8000UL +#define BLE_RCB_TX_FIFO_STATUS_RD_PTR_Pos 16UL +#define BLE_RCB_TX_FIFO_STATUS_RD_PTR_Msk 0xF0000UL +#define BLE_RCB_TX_FIFO_STATUS_WR_PTR_Pos 24UL +#define BLE_RCB_TX_FIFO_STATUS_WR_PTR_Msk 0xF000000UL +/* BLE_RCB.TX_FIFO_WR */ +#define BLE_RCB_TX_FIFO_WR_DATA_Pos 0UL +#define BLE_RCB_TX_FIFO_WR_DATA_Msk 0xFFFFFFFFUL +/* BLE_RCB.RX_CTRL */ +#define BLE_RCB_RX_CTRL_MSB_FIRST_Pos 0UL +#define BLE_RCB_RX_CTRL_MSB_FIRST_Msk 0x1UL +/* BLE_RCB.RX_FIFO_CTRL */ +#define BLE_RCB_RX_FIFO_CTRL_TRIGGER_LEVEL_Pos 0UL +#define BLE_RCB_RX_FIFO_CTRL_TRIGGER_LEVEL_Msk 0xFUL +#define BLE_RCB_RX_FIFO_CTRL_CLEAR_Pos 16UL +#define BLE_RCB_RX_FIFO_CTRL_CLEAR_Msk 0x10000UL +/* BLE_RCB.RX_FIFO_STATUS */ +#define BLE_RCB_RX_FIFO_STATUS_USED_Pos 0UL +#define BLE_RCB_RX_FIFO_STATUS_USED_Msk 0x1FUL +#define BLE_RCB_RX_FIFO_STATUS_SR_VALID_Pos 15UL +#define BLE_RCB_RX_FIFO_STATUS_SR_VALID_Msk 0x8000UL +#define BLE_RCB_RX_FIFO_STATUS_RD_PTR_Pos 16UL +#define BLE_RCB_RX_FIFO_STATUS_RD_PTR_Msk 0xF0000UL +#define BLE_RCB_RX_FIFO_STATUS_WR_PTR_Pos 24UL +#define BLE_RCB_RX_FIFO_STATUS_WR_PTR_Msk 0xF000000UL +/* BLE_RCB.RX_FIFO_RD */ +#define BLE_RCB_RX_FIFO_RD_DATA_Pos 0UL +#define BLE_RCB_RX_FIFO_RD_DATA_Msk 0xFFFFFFFFUL +/* BLE_RCB.RX_FIFO_RD_SILENT */ +#define BLE_RCB_RX_FIFO_RD_SILENT_DATA_Pos 0UL +#define BLE_RCB_RX_FIFO_RD_SILENT_DATA_Msk 0xFFFFFFFFUL +/* BLE_RCB.INTR */ +#define BLE_RCB_INTR_RCB_DONE_Pos 0UL +#define BLE_RCB_INTR_RCB_DONE_Msk 0x1UL +#define BLE_RCB_INTR_TX_FIFO_TRIGGER_Pos 8UL +#define BLE_RCB_INTR_TX_FIFO_TRIGGER_Msk 0x100UL +#define BLE_RCB_INTR_TX_FIFO_NOT_FULL_Pos 9UL +#define BLE_RCB_INTR_TX_FIFO_NOT_FULL_Msk 0x200UL +#define BLE_RCB_INTR_TX_FIFO_EMPTY_Pos 10UL +#define BLE_RCB_INTR_TX_FIFO_EMPTY_Msk 0x400UL +#define BLE_RCB_INTR_TX_FIFO_OVERFLOW_Pos 11UL +#define BLE_RCB_INTR_TX_FIFO_OVERFLOW_Msk 0x800UL +#define BLE_RCB_INTR_TX_FIFO_UNDERFLOW_Pos 12UL +#define BLE_RCB_INTR_TX_FIFO_UNDERFLOW_Msk 0x1000UL +#define BLE_RCB_INTR_RX_FIFO_TRIGGER_Pos 16UL +#define BLE_RCB_INTR_RX_FIFO_TRIGGER_Msk 0x10000UL +#define BLE_RCB_INTR_RX_FIFO_NOT_EMPTY_Pos 17UL +#define BLE_RCB_INTR_RX_FIFO_NOT_EMPTY_Msk 0x20000UL +#define BLE_RCB_INTR_RX_FIFO_FULL_Pos 18UL +#define BLE_RCB_INTR_RX_FIFO_FULL_Msk 0x40000UL +#define BLE_RCB_INTR_RX_FIFO_OVERFLOW_Pos 19UL +#define BLE_RCB_INTR_RX_FIFO_OVERFLOW_Msk 0x80000UL +#define BLE_RCB_INTR_RX_FIFO_UNDERFLOW_Pos 20UL +#define BLE_RCB_INTR_RX_FIFO_UNDERFLOW_Msk 0x100000UL +/* BLE_RCB.INTR_SET */ +#define BLE_RCB_INTR_SET_RCB_DONE_Pos 0UL +#define BLE_RCB_INTR_SET_RCB_DONE_Msk 0x1UL +#define BLE_RCB_INTR_SET_TX_FIFO_TRIGGER_Pos 8UL +#define BLE_RCB_INTR_SET_TX_FIFO_TRIGGER_Msk 0x100UL +#define BLE_RCB_INTR_SET_TX_FIFO_NOT_FULL_Pos 9UL +#define BLE_RCB_INTR_SET_TX_FIFO_NOT_FULL_Msk 0x200UL +#define BLE_RCB_INTR_SET_TX_FIFO_EMPTY_Pos 10UL +#define BLE_RCB_INTR_SET_TX_FIFO_EMPTY_Msk 0x400UL +#define BLE_RCB_INTR_SET_TX_FIFO_OVERFLOW_Pos 11UL +#define BLE_RCB_INTR_SET_TX_FIFO_OVERFLOW_Msk 0x800UL +#define BLE_RCB_INTR_SET_TX_FIFO_UNDERFLOW_Pos 12UL +#define BLE_RCB_INTR_SET_TX_FIFO_UNDERFLOW_Msk 0x1000UL +#define BLE_RCB_INTR_SET_RX_FIFO_TRIGGER_Pos 16UL +#define BLE_RCB_INTR_SET_RX_FIFO_TRIGGER_Msk 0x10000UL +#define BLE_RCB_INTR_SET_RX_FIFO_NOT_EMPTY_Pos 17UL +#define BLE_RCB_INTR_SET_RX_FIFO_NOT_EMPTY_Msk 0x20000UL +#define BLE_RCB_INTR_SET_RX_FIFO_FULL_Pos 18UL +#define BLE_RCB_INTR_SET_RX_FIFO_FULL_Msk 0x40000UL +#define BLE_RCB_INTR_SET_RX_FIFO_OVERFLOW_Pos 19UL +#define BLE_RCB_INTR_SET_RX_FIFO_OVERFLOW_Msk 0x80000UL +#define BLE_RCB_INTR_SET_RX_FIFO_UNDERFLOW_Pos 20UL +#define BLE_RCB_INTR_SET_RX_FIFO_UNDERFLOW_Msk 0x100000UL +/* BLE_RCB.INTR_MASK */ +#define BLE_RCB_INTR_MASK_RCB_DONE_Pos 0UL +#define BLE_RCB_INTR_MASK_RCB_DONE_Msk 0x1UL +#define BLE_RCB_INTR_MASK_TX_FIFO_TRIGGER_Pos 8UL +#define BLE_RCB_INTR_MASK_TX_FIFO_TRIGGER_Msk 0x100UL +#define BLE_RCB_INTR_MASK_TX_FIFO_NOT_FULL_Pos 9UL +#define BLE_RCB_INTR_MASK_TX_FIFO_NOT_FULL_Msk 0x200UL +#define BLE_RCB_INTR_MASK_TX_FIFO_EMPTY_Pos 10UL +#define BLE_RCB_INTR_MASK_TX_FIFO_EMPTY_Msk 0x400UL +#define BLE_RCB_INTR_MASK_TX_FIFO_OVERFLOW_Pos 11UL +#define BLE_RCB_INTR_MASK_TX_FIFO_OVERFLOW_Msk 0x800UL +#define BLE_RCB_INTR_MASK_TX_FIFO_UNDERFLOW_Pos 12UL +#define BLE_RCB_INTR_MASK_TX_FIFO_UNDERFLOW_Msk 0x1000UL +#define BLE_RCB_INTR_MASK_RX_FIFO_TRIGGER_Pos 16UL +#define BLE_RCB_INTR_MASK_RX_FIFO_TRIGGER_Msk 0x10000UL +#define BLE_RCB_INTR_MASK_RX_FIFO_NOT_EMPTY_Pos 17UL +#define BLE_RCB_INTR_MASK_RX_FIFO_NOT_EMPTY_Msk 0x20000UL +#define BLE_RCB_INTR_MASK_RX_FIFO_FULL_Pos 18UL +#define BLE_RCB_INTR_MASK_RX_FIFO_FULL_Msk 0x40000UL +#define BLE_RCB_INTR_MASK_RX_FIFO_OVERFLOW_Pos 19UL +#define BLE_RCB_INTR_MASK_RX_FIFO_OVERFLOW_Msk 0x80000UL +#define BLE_RCB_INTR_MASK_RX_FIFO_UNDERFLOW_Pos 20UL +#define BLE_RCB_INTR_MASK_RX_FIFO_UNDERFLOW_Msk 0x100000UL +/* BLE_RCB.INTR_MASKED */ +#define BLE_RCB_INTR_MASKED_RCB_DONE_Pos 0UL +#define BLE_RCB_INTR_MASKED_RCB_DONE_Msk 0x1UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_TRIGGER_Pos 8UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_TRIGGER_Msk 0x100UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_NOT_FULL_Pos 9UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_NOT_FULL_Msk 0x200UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_EMPTY_Pos 10UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_EMPTY_Msk 0x400UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_OVERFLOW_Pos 11UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_OVERFLOW_Msk 0x800UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_UNDERFLOW_Pos 12UL +#define BLE_RCB_INTR_MASKED_TX_FIFO_UNDERFLOW_Msk 0x1000UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_TRIGGER_Pos 16UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_TRIGGER_Msk 0x10000UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_NOT_EMPTY_Pos 17UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_NOT_EMPTY_Msk 0x20000UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_FULL_Pos 18UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_FULL_Msk 0x40000UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_OVERFLOW_Pos 19UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_OVERFLOW_Msk 0x80000UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_UNDERFLOW_Pos 20UL +#define BLE_RCB_INTR_MASKED_RX_FIFO_UNDERFLOW_Msk 0x100000UL + + +/* BLE_BLELL.COMMAND_REGISTER */ +#define BLE_BLELL_COMMAND_REGISTER_COMMAND_Pos 0UL +#define BLE_BLELL_COMMAND_REGISTER_COMMAND_Msk 0xFFUL +/* BLE_BLELL.EVENT_INTR */ +#define BLE_BLELL_EVENT_INTR_ADV_INTR_Pos 0UL +#define BLE_BLELL_EVENT_INTR_ADV_INTR_Msk 0x1UL +#define BLE_BLELL_EVENT_INTR_SCAN_INTR_Pos 1UL +#define BLE_BLELL_EVENT_INTR_SCAN_INTR_Msk 0x2UL +#define BLE_BLELL_EVENT_INTR_INIT_INTR_Pos 2UL +#define BLE_BLELL_EVENT_INTR_INIT_INTR_Msk 0x4UL +#define BLE_BLELL_EVENT_INTR_CONN_INTR_Pos 3UL +#define BLE_BLELL_EVENT_INTR_CONN_INTR_Msk 0x8UL +#define BLE_BLELL_EVENT_INTR_SM_INTR_Pos 4UL +#define BLE_BLELL_EVENT_INTR_SM_INTR_Msk 0x10UL +#define BLE_BLELL_EVENT_INTR_DSM_INTR_Pos 5UL +#define BLE_BLELL_EVENT_INTR_DSM_INTR_Msk 0x20UL +#define BLE_BLELL_EVENT_INTR_ENC_INTR_Pos 6UL +#define BLE_BLELL_EVENT_INTR_ENC_INTR_Msk 0x40UL +#define BLE_BLELL_EVENT_INTR_RSSI_RX_DONE_INTR_Pos 7UL +#define BLE_BLELL_EVENT_INTR_RSSI_RX_DONE_INTR_Msk 0x80UL +/* BLE_BLELL.EVENT_ENABLE */ +#define BLE_BLELL_EVENT_ENABLE_ADV_INT_EN_Pos 0UL +#define BLE_BLELL_EVENT_ENABLE_ADV_INT_EN_Msk 0x1UL +#define BLE_BLELL_EVENT_ENABLE_SCN_INT_EN_Pos 1UL +#define BLE_BLELL_EVENT_ENABLE_SCN_INT_EN_Msk 0x2UL +#define BLE_BLELL_EVENT_ENABLE_INIT_INT_EN_Pos 2UL +#define BLE_BLELL_EVENT_ENABLE_INIT_INT_EN_Msk 0x4UL +#define BLE_BLELL_EVENT_ENABLE_CONN_INT_EN_Pos 3UL +#define BLE_BLELL_EVENT_ENABLE_CONN_INT_EN_Msk 0x8UL +#define BLE_BLELL_EVENT_ENABLE_SM_INT_EN_Pos 4UL +#define BLE_BLELL_EVENT_ENABLE_SM_INT_EN_Msk 0x10UL +#define BLE_BLELL_EVENT_ENABLE_DSM_INT_EN_Pos 5UL +#define BLE_BLELL_EVENT_ENABLE_DSM_INT_EN_Msk 0x20UL +#define BLE_BLELL_EVENT_ENABLE_ENC_INT_EN_Pos 6UL +#define BLE_BLELL_EVENT_ENABLE_ENC_INT_EN_Msk 0x40UL +#define BLE_BLELL_EVENT_ENABLE_RSSI_RX_DONE_INT_EN_Pos 7UL +#define BLE_BLELL_EVENT_ENABLE_RSSI_RX_DONE_INT_EN_Msk 0x80UL +/* BLE_BLELL.ADV_PARAMS */ +#define BLE_BLELL_ADV_PARAMS_TX_ADDR_Pos 0UL +#define BLE_BLELL_ADV_PARAMS_TX_ADDR_Msk 0x1UL +#define BLE_BLELL_ADV_PARAMS_ADV_TYPE_Pos 1UL +#define BLE_BLELL_ADV_PARAMS_ADV_TYPE_Msk 0x6UL +#define BLE_BLELL_ADV_PARAMS_ADV_FILT_POLICY_Pos 3UL +#define BLE_BLELL_ADV_PARAMS_ADV_FILT_POLICY_Msk 0x18UL +#define BLE_BLELL_ADV_PARAMS_ADV_CHANNEL_MAP_Pos 5UL +#define BLE_BLELL_ADV_PARAMS_ADV_CHANNEL_MAP_Msk 0xE0UL +#define BLE_BLELL_ADV_PARAMS_RX_ADDR_Pos 8UL +#define BLE_BLELL_ADV_PARAMS_RX_ADDR_Msk 0x100UL +#define BLE_BLELL_ADV_PARAMS_RX_SEC_ADDR_Pos 9UL +#define BLE_BLELL_ADV_PARAMS_RX_SEC_ADDR_Msk 0x200UL +#define BLE_BLELL_ADV_PARAMS_ADV_LOW_DUTY_CYCLE_Pos 10UL +#define BLE_BLELL_ADV_PARAMS_ADV_LOW_DUTY_CYCLE_Msk 0x400UL +#define BLE_BLELL_ADV_PARAMS_INITA_RPA_CHECK_Pos 11UL +#define BLE_BLELL_ADV_PARAMS_INITA_RPA_CHECK_Msk 0x800UL +#define BLE_BLELL_ADV_PARAMS_TX_ADDR_PRIV_Pos 12UL +#define BLE_BLELL_ADV_PARAMS_TX_ADDR_PRIV_Msk 0x1000UL +#define BLE_BLELL_ADV_PARAMS_ADV_RCV_IA_IN_PRIV_Pos 13UL +#define BLE_BLELL_ADV_PARAMS_ADV_RCV_IA_IN_PRIV_Msk 0x2000UL +#define BLE_BLELL_ADV_PARAMS_ADV_RPT_PEER_NRPA_ADDR_IN_PRIV_Pos 14UL +#define BLE_BLELL_ADV_PARAMS_ADV_RPT_PEER_NRPA_ADDR_IN_PRIV_Msk 0x4000UL +#define BLE_BLELL_ADV_PARAMS_RCV_TX_ADDR_Pos 15UL +#define BLE_BLELL_ADV_PARAMS_RCV_TX_ADDR_Msk 0x8000UL +/* BLE_BLELL.ADV_INTERVAL_TIMEOUT */ +#define BLE_BLELL_ADV_INTERVAL_TIMEOUT_ADV_INTERVAL_Pos 0UL +#define BLE_BLELL_ADV_INTERVAL_TIMEOUT_ADV_INTERVAL_Msk 0x7FFFUL +/* BLE_BLELL.ADV_INTR */ +#define BLE_BLELL_ADV_INTR_ADV_STRT_INTR_Pos 0UL +#define BLE_BLELL_ADV_INTR_ADV_STRT_INTR_Msk 0x1UL +#define BLE_BLELL_ADV_INTR_ADV_CLOSE_INTR_Pos 1UL +#define BLE_BLELL_ADV_INTR_ADV_CLOSE_INTR_Msk 0x2UL +#define BLE_BLELL_ADV_INTR_ADV_TX_INTR_Pos 2UL +#define BLE_BLELL_ADV_INTR_ADV_TX_INTR_Msk 0x4UL +#define BLE_BLELL_ADV_INTR_SCAN_RSP_TX_INTR_Pos 3UL +#define BLE_BLELL_ADV_INTR_SCAN_RSP_TX_INTR_Msk 0x8UL +#define BLE_BLELL_ADV_INTR_SCAN_REQ_RX_INTR_Pos 4UL +#define BLE_BLELL_ADV_INTR_SCAN_REQ_RX_INTR_Msk 0x10UL +#define BLE_BLELL_ADV_INTR_CONN_REQ_RX_INTR_Pos 5UL +#define BLE_BLELL_ADV_INTR_CONN_REQ_RX_INTR_Msk 0x20UL +#define BLE_BLELL_ADV_INTR_SLV_CONNECTED_Pos 6UL +#define BLE_BLELL_ADV_INTR_SLV_CONNECTED_Msk 0x40UL +#define BLE_BLELL_ADV_INTR_ADV_TIMEOUT_Pos 7UL +#define BLE_BLELL_ADV_INTR_ADV_TIMEOUT_Msk 0x80UL +#define BLE_BLELL_ADV_INTR_ADV_ON_Pos 8UL +#define BLE_BLELL_ADV_INTR_ADV_ON_Msk 0x100UL +#define BLE_BLELL_ADV_INTR_SLV_CONN_PEER_RPA_UNMCH_INTR_Pos 9UL +#define BLE_BLELL_ADV_INTR_SLV_CONN_PEER_RPA_UNMCH_INTR_Msk 0x200UL +#define BLE_BLELL_ADV_INTR_SCAN_REQ_RX_PEER_RPA_UNMCH_INTR_Pos 10UL +#define BLE_BLELL_ADV_INTR_SCAN_REQ_RX_PEER_RPA_UNMCH_INTR_Msk 0x400UL +#define BLE_BLELL_ADV_INTR_INIT_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 11UL +#define BLE_BLELL_ADV_INTR_INIT_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x800UL +#define BLE_BLELL_ADV_INTR_SCAN_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 12UL +#define BLE_BLELL_ADV_INTR_SCAN_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x1000UL +/* BLE_BLELL.ADV_NEXT_INSTANT */ +#define BLE_BLELL_ADV_NEXT_INSTANT_ADV_NEXT_INSTANT_Pos 0UL +#define BLE_BLELL_ADV_NEXT_INSTANT_ADV_NEXT_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.SCAN_INTERVAL */ +#define BLE_BLELL_SCAN_INTERVAL_SCAN_INTERVAL_Pos 0UL +#define BLE_BLELL_SCAN_INTERVAL_SCAN_INTERVAL_Msk 0xFFFFUL +/* BLE_BLELL.SCAN_WINDOW */ +#define BLE_BLELL_SCAN_WINDOW_SCAN_WINDOW_Pos 0UL +#define BLE_BLELL_SCAN_WINDOW_SCAN_WINDOW_Msk 0xFFFFUL +/* BLE_BLELL.SCAN_PARAM */ +#define BLE_BLELL_SCAN_PARAM_TX_ADDR_Pos 0UL +#define BLE_BLELL_SCAN_PARAM_TX_ADDR_Msk 0x1UL +#define BLE_BLELL_SCAN_PARAM_SCAN_TYPE_Pos 1UL +#define BLE_BLELL_SCAN_PARAM_SCAN_TYPE_Msk 0x6UL +#define BLE_BLELL_SCAN_PARAM_SCAN_FILT_POLICY_Pos 3UL +#define BLE_BLELL_SCAN_PARAM_SCAN_FILT_POLICY_Msk 0x18UL +#define BLE_BLELL_SCAN_PARAM_DUP_FILT_EN_Pos 5UL +#define BLE_BLELL_SCAN_PARAM_DUP_FILT_EN_Msk 0x20UL +#define BLE_BLELL_SCAN_PARAM_DUP_FILT_CHK_ADV_DIR_Pos 6UL +#define BLE_BLELL_SCAN_PARAM_DUP_FILT_CHK_ADV_DIR_Msk 0x40UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RSP_ADVA_CHECK_Pos 7UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RSP_ADVA_CHECK_Msk 0x80UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RCV_IA_IN_PRIV_Pos 8UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RCV_IA_IN_PRIV_Msk 0x100UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RPT_PEER_NRPA_ADDR_IN_PRIV_Pos 9UL +#define BLE_BLELL_SCAN_PARAM_SCAN_RPT_PEER_NRPA_ADDR_IN_PRIV_Msk 0x200UL +/* BLE_BLELL.SCAN_INTR */ +#define BLE_BLELL_SCAN_INTR_SCAN_STRT_INTR_Pos 0UL +#define BLE_BLELL_SCAN_INTR_SCAN_STRT_INTR_Msk 0x1UL +#define BLE_BLELL_SCAN_INTR_SCAN_CLOSE_INTR_Pos 1UL +#define BLE_BLELL_SCAN_INTR_SCAN_CLOSE_INTR_Msk 0x2UL +#define BLE_BLELL_SCAN_INTR_SCAN_TX_INTR_Pos 2UL +#define BLE_BLELL_SCAN_INTR_SCAN_TX_INTR_Msk 0x4UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_INTR_Pos 3UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_INTR_Msk 0x8UL +#define BLE_BLELL_SCAN_INTR_SCAN_RSP_RX_INTR_Pos 4UL +#define BLE_BLELL_SCAN_INTR_SCAN_RSP_RX_INTR_Msk 0x10UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_PEER_RPA_UNMCH_INTR_Pos 5UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_PEER_RPA_UNMCH_INTR_Msk 0x20UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_SELF_RPA_UNMCH_INTR_Pos 6UL +#define BLE_BLELL_SCAN_INTR_ADV_RX_SELF_RPA_UNMCH_INTR_Msk 0x40UL +#define BLE_BLELL_SCAN_INTR_SCANA_TX_ADDR_NOT_SET_INTR_Pos 7UL +#define BLE_BLELL_SCAN_INTR_SCANA_TX_ADDR_NOT_SET_INTR_Msk 0x80UL +#define BLE_BLELL_SCAN_INTR_SCAN_ON_Pos 8UL +#define BLE_BLELL_SCAN_INTR_SCAN_ON_Msk 0x100UL +#define BLE_BLELL_SCAN_INTR_PEER_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 9UL +#define BLE_BLELL_SCAN_INTR_PEER_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x200UL +#define BLE_BLELL_SCAN_INTR_SELF_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 10UL +#define BLE_BLELL_SCAN_INTR_SELF_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x400UL +/* BLE_BLELL.SCAN_NEXT_INSTANT */ +#define BLE_BLELL_SCAN_NEXT_INSTANT_NEXT_SCAN_INSTANT_Pos 0UL +#define BLE_BLELL_SCAN_NEXT_INSTANT_NEXT_SCAN_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.INIT_INTERVAL */ +#define BLE_BLELL_INIT_INTERVAL_INIT_SCAN_INTERVAL_Pos 0UL +#define BLE_BLELL_INIT_INTERVAL_INIT_SCAN_INTERVAL_Msk 0xFFFFUL +/* BLE_BLELL.INIT_WINDOW */ +#define BLE_BLELL_INIT_WINDOW_INIT_SCAN_WINDOW_Pos 0UL +#define BLE_BLELL_INIT_WINDOW_INIT_SCAN_WINDOW_Msk 0xFFFFUL +/* BLE_BLELL.INIT_PARAM */ +#define BLE_BLELL_INIT_PARAM_TX_ADDR_Pos 0UL +#define BLE_BLELL_INIT_PARAM_TX_ADDR_Msk 0x1UL +#define BLE_BLELL_INIT_PARAM_RX_ADDR__RX_TX_ADDR_Pos 1UL +#define BLE_BLELL_INIT_PARAM_RX_ADDR__RX_TX_ADDR_Msk 0x2UL +#define BLE_BLELL_INIT_PARAM_INIT_FILT_POLICY_Pos 3UL +#define BLE_BLELL_INIT_PARAM_INIT_FILT_POLICY_Msk 0x8UL +#define BLE_BLELL_INIT_PARAM_INIT_RCV_IA_IN_PRIV_Pos 4UL +#define BLE_BLELL_INIT_PARAM_INIT_RCV_IA_IN_PRIV_Msk 0x10UL +/* BLE_BLELL.INIT_INTR */ +#define BLE_BLELL_INIT_INTR_INIT_INTERVAL_EXPIRE_INTR_Pos 0UL +#define BLE_BLELL_INIT_INTR_INIT_INTERVAL_EXPIRE_INTR_Msk 0x1UL +#define BLE_BLELL_INIT_INTR_INIT_CLOSE_WINDOW_INR_Pos 1UL +#define BLE_BLELL_INIT_INTR_INIT_CLOSE_WINDOW_INR_Msk 0x2UL +#define BLE_BLELL_INIT_INTR_INIT_TX_START_INTR_Pos 2UL +#define BLE_BLELL_INIT_INTR_INIT_TX_START_INTR_Msk 0x4UL +#define BLE_BLELL_INIT_INTR_MASTER_CONN_CREATED_Pos 4UL +#define BLE_BLELL_INIT_INTR_MASTER_CONN_CREATED_Msk 0x10UL +#define BLE_BLELL_INIT_INTR_ADV_RX_SELF_ADDR_UNMCH_INTR_Pos 5UL +#define BLE_BLELL_INIT_INTR_ADV_RX_SELF_ADDR_UNMCH_INTR_Msk 0x20UL +#define BLE_BLELL_INIT_INTR_ADV_RX_PEER_ADDR_UNMCH_INTR_Pos 6UL +#define BLE_BLELL_INIT_INTR_ADV_RX_PEER_ADDR_UNMCH_INTR_Msk 0x40UL +#define BLE_BLELL_INIT_INTR_INITA_TX_ADDR_NOT_SET_INTR_Pos 7UL +#define BLE_BLELL_INIT_INTR_INITA_TX_ADDR_NOT_SET_INTR_Msk 0x80UL +#define BLE_BLELL_INIT_INTR_INI_PEER_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 8UL +#define BLE_BLELL_INIT_INTR_INI_PEER_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x100UL +#define BLE_BLELL_INIT_INTR_INI_SELF_ADDR_MATCH_PRIV_MISMATCH_INTR_Pos 9UL +#define BLE_BLELL_INIT_INTR_INI_SELF_ADDR_MATCH_PRIV_MISMATCH_INTR_Msk 0x200UL +/* BLE_BLELL.INIT_NEXT_INSTANT */ +#define BLE_BLELL_INIT_NEXT_INSTANT_INIT_NEXT_INSTANT_Pos 0UL +#define BLE_BLELL_INIT_NEXT_INSTANT_INIT_NEXT_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.DEVICE_RAND_ADDR_L */ +#define BLE_BLELL_DEVICE_RAND_ADDR_L_DEVICE_RAND_ADDR_L_Pos 0UL +#define BLE_BLELL_DEVICE_RAND_ADDR_L_DEVICE_RAND_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.DEVICE_RAND_ADDR_M */ +#define BLE_BLELL_DEVICE_RAND_ADDR_M_DEVICE_RAND_ADDR_M_Pos 0UL +#define BLE_BLELL_DEVICE_RAND_ADDR_M_DEVICE_RAND_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.DEVICE_RAND_ADDR_H */ +#define BLE_BLELL_DEVICE_RAND_ADDR_H_DEVICE_RAND_ADDR_H_Pos 0UL +#define BLE_BLELL_DEVICE_RAND_ADDR_H_DEVICE_RAND_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.PEER_ADDR_L */ +#define BLE_BLELL_PEER_ADDR_L_PEER_ADDR_L_Pos 0UL +#define BLE_BLELL_PEER_ADDR_L_PEER_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.PEER_ADDR_M */ +#define BLE_BLELL_PEER_ADDR_M_PEER_ADDR_M_Pos 0UL +#define BLE_BLELL_PEER_ADDR_M_PEER_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.PEER_ADDR_H */ +#define BLE_BLELL_PEER_ADDR_H_PEER_ADDR_H_Pos 0UL +#define BLE_BLELL_PEER_ADDR_H_PEER_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.WL_ADDR_TYPE */ +#define BLE_BLELL_WL_ADDR_TYPE_WL_ADDR_TYPE_Pos 0UL +#define BLE_BLELL_WL_ADDR_TYPE_WL_ADDR_TYPE_Msk 0xFFFFUL +/* BLE_BLELL.WL_ENABLE */ +#define BLE_BLELL_WL_ENABLE_WL_ENABLE_Pos 0UL +#define BLE_BLELL_WL_ENABLE_WL_ENABLE_Msk 0xFFFFUL +/* BLE_BLELL.TRANSMIT_WINDOW_OFFSET */ +#define BLE_BLELL_TRANSMIT_WINDOW_OFFSET_TX_WINDOW_OFFSET_Pos 0UL +#define BLE_BLELL_TRANSMIT_WINDOW_OFFSET_TX_WINDOW_OFFSET_Msk 0xFFFFUL +/* BLE_BLELL.TRANSMIT_WINDOW_SIZE */ +#define BLE_BLELL_TRANSMIT_WINDOW_SIZE_TX_WINDOW_SIZE_Pos 0UL +#define BLE_BLELL_TRANSMIT_WINDOW_SIZE_TX_WINDOW_SIZE_Msk 0xFFUL +/* BLE_BLELL.DATA_CHANNELS_L0 */ +#define BLE_BLELL_DATA_CHANNELS_L0_DATA_CHANNELS_L0_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_L0_DATA_CHANNELS_L0_Msk 0xFFFFUL +/* BLE_BLELL.DATA_CHANNELS_M0 */ +#define BLE_BLELL_DATA_CHANNELS_M0_DATA_CHANNELS_M0_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_M0_DATA_CHANNELS_M0_Msk 0xFFFFUL +/* BLE_BLELL.DATA_CHANNELS_H0 */ +#define BLE_BLELL_DATA_CHANNELS_H0_DATA_CHANNELS_H0_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_H0_DATA_CHANNELS_H0_Msk 0x1FUL +/* BLE_BLELL.DATA_CHANNELS_L1 */ +#define BLE_BLELL_DATA_CHANNELS_L1_DATA_CHANNELS_L1_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_L1_DATA_CHANNELS_L1_Msk 0xFFFFUL +/* BLE_BLELL.DATA_CHANNELS_M1 */ +#define BLE_BLELL_DATA_CHANNELS_M1_DATA_CHANNELS_M1_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_M1_DATA_CHANNELS_M1_Msk 0xFFFFUL +/* BLE_BLELL.DATA_CHANNELS_H1 */ +#define BLE_BLELL_DATA_CHANNELS_H1_DATA_CHANNELS_H1_Pos 0UL +#define BLE_BLELL_DATA_CHANNELS_H1_DATA_CHANNELS_H1_Msk 0x1FUL +/* BLE_BLELL.CONN_INTR */ +#define BLE_BLELL_CONN_INTR_CONN_CLOSED_Pos 0UL +#define BLE_BLELL_CONN_INTR_CONN_CLOSED_Msk 0x1UL +#define BLE_BLELL_CONN_INTR_CONN_ESTB_Pos 1UL +#define BLE_BLELL_CONN_INTR_CONN_ESTB_Msk 0x2UL +#define BLE_BLELL_CONN_INTR_MAP_UPDT_DONE_Pos 2UL +#define BLE_BLELL_CONN_INTR_MAP_UPDT_DONE_Msk 0x4UL +#define BLE_BLELL_CONN_INTR_START_CE_Pos 3UL +#define BLE_BLELL_CONN_INTR_START_CE_Msk 0x8UL +#define BLE_BLELL_CONN_INTR_CLOSE_CE_Pos 4UL +#define BLE_BLELL_CONN_INTR_CLOSE_CE_Msk 0x10UL +#define BLE_BLELL_CONN_INTR_CE_TX_ACK_Pos 5UL +#define BLE_BLELL_CONN_INTR_CE_TX_ACK_Msk 0x20UL +#define BLE_BLELL_CONN_INTR_CE_RX_Pos 6UL +#define BLE_BLELL_CONN_INTR_CE_RX_Msk 0x40UL +#define BLE_BLELL_CONN_INTR_CON_UPDT_DONE_Pos 7UL +#define BLE_BLELL_CONN_INTR_CON_UPDT_DONE_Msk 0x80UL +#define BLE_BLELL_CONN_INTR_DISCON_STATUS_Pos 8UL +#define BLE_BLELL_CONN_INTR_DISCON_STATUS_Msk 0x700UL +#define BLE_BLELL_CONN_INTR_RX_PDU_STATUS_Pos 11UL +#define BLE_BLELL_CONN_INTR_RX_PDU_STATUS_Msk 0x3800UL +#define BLE_BLELL_CONN_INTR_PING_TIMER_EXPIRD_INTR_Pos 14UL +#define BLE_BLELL_CONN_INTR_PING_TIMER_EXPIRD_INTR_Msk 0x4000UL +#define BLE_BLELL_CONN_INTR_PING_NEARLY_EXPIRD_INTR_Pos 15UL +#define BLE_BLELL_CONN_INTR_PING_NEARLY_EXPIRD_INTR_Msk 0x8000UL +/* BLE_BLELL.CONN_STATUS */ +#define BLE_BLELL_CONN_STATUS_RECEIVE_PACKET_COUNT_Pos 12UL +#define BLE_BLELL_CONN_STATUS_RECEIVE_PACKET_COUNT_Msk 0xF000UL +/* BLE_BLELL.CONN_INDEX */ +#define BLE_BLELL_CONN_INDEX_CONN_INDEX_Pos 0UL +#define BLE_BLELL_CONN_INDEX_CONN_INDEX_Msk 0xFFFFUL +/* BLE_BLELL.WAKEUP_CONFIG */ +#define BLE_BLELL_WAKEUP_CONFIG_OSC_STARTUP_DELAY_Pos 0UL +#define BLE_BLELL_WAKEUP_CONFIG_OSC_STARTUP_DELAY_Msk 0xFFUL +#define BLE_BLELL_WAKEUP_CONFIG_DSM_OFFSET_TO_WAKEUP_INSTANT_Pos 10UL +#define BLE_BLELL_WAKEUP_CONFIG_DSM_OFFSET_TO_WAKEUP_INSTANT_Msk 0xFC00UL +/* BLE_BLELL.WAKEUP_CONTROL */ +#define BLE_BLELL_WAKEUP_CONTROL_WAKEUP_INSTANT_Pos 0UL +#define BLE_BLELL_WAKEUP_CONTROL_WAKEUP_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.CLOCK_CONFIG */ +#define BLE_BLELL_CLOCK_CONFIG_ADV_CLK_GATE_EN_Pos 0UL +#define BLE_BLELL_CLOCK_CONFIG_ADV_CLK_GATE_EN_Msk 0x1UL +#define BLE_BLELL_CLOCK_CONFIG_SCAN_CLK_GATE_EN_Pos 1UL +#define BLE_BLELL_CLOCK_CONFIG_SCAN_CLK_GATE_EN_Msk 0x2UL +#define BLE_BLELL_CLOCK_CONFIG_INIT_CLK_GATE_EN_Pos 2UL +#define BLE_BLELL_CLOCK_CONFIG_INIT_CLK_GATE_EN_Msk 0x4UL +#define BLE_BLELL_CLOCK_CONFIG_CONN_CLK_GATE_EN_Pos 3UL +#define BLE_BLELL_CLOCK_CONFIG_CONN_CLK_GATE_EN_Msk 0x8UL +#define BLE_BLELL_CLOCK_CONFIG_CORECLK_GATE_EN_Pos 4UL +#define BLE_BLELL_CLOCK_CONFIG_CORECLK_GATE_EN_Msk 0x10UL +#define BLE_BLELL_CLOCK_CONFIG_SYSCLK_GATE_EN_Pos 5UL +#define BLE_BLELL_CLOCK_CONFIG_SYSCLK_GATE_EN_Msk 0x20UL +#define BLE_BLELL_CLOCK_CONFIG_PHY_CLK_GATE_EN_Pos 6UL +#define BLE_BLELL_CLOCK_CONFIG_PHY_CLK_GATE_EN_Msk 0x40UL +#define BLE_BLELL_CLOCK_CONFIG_LLH_IDLE_Pos 7UL +#define BLE_BLELL_CLOCK_CONFIG_LLH_IDLE_Msk 0x80UL +#define BLE_BLELL_CLOCK_CONFIG_LPO_CLK_FREQ_SEL_Pos 8UL +#define BLE_BLELL_CLOCK_CONFIG_LPO_CLK_FREQ_SEL_Msk 0x100UL +#define BLE_BLELL_CLOCK_CONFIG_LPO_SEL_EXTERNAL_Pos 9UL +#define BLE_BLELL_CLOCK_CONFIG_LPO_SEL_EXTERNAL_Msk 0x200UL +#define BLE_BLELL_CLOCK_CONFIG_SM_AUTO_WKUP_EN_Pos 10UL +#define BLE_BLELL_CLOCK_CONFIG_SM_AUTO_WKUP_EN_Msk 0x400UL +#define BLE_BLELL_CLOCK_CONFIG_SM_INTR_EN_Pos 12UL +#define BLE_BLELL_CLOCK_CONFIG_SM_INTR_EN_Msk 0x1000UL +#define BLE_BLELL_CLOCK_CONFIG_DEEP_SLEEP_AUTO_WKUP_DISABLE_Pos 13UL +#define BLE_BLELL_CLOCK_CONFIG_DEEP_SLEEP_AUTO_WKUP_DISABLE_Msk 0x2000UL +#define BLE_BLELL_CLOCK_CONFIG_SLEEP_MODE_EN_Pos 14UL +#define BLE_BLELL_CLOCK_CONFIG_SLEEP_MODE_EN_Msk 0x4000UL +#define BLE_BLELL_CLOCK_CONFIG_DEEP_SLEEP_MODE_EN_Pos 15UL +#define BLE_BLELL_CLOCK_CONFIG_DEEP_SLEEP_MODE_EN_Msk 0x8000UL +/* BLE_BLELL.TIM_COUNTER_L */ +#define BLE_BLELL_TIM_COUNTER_L_TIM_REF_CLOCK_Pos 0UL +#define BLE_BLELL_TIM_COUNTER_L_TIM_REF_CLOCK_Msk 0xFFFFUL +/* BLE_BLELL.WAKEUP_CONFIG_EXTD */ +#define BLE_BLELL_WAKEUP_CONFIG_EXTD_DSM_LF_OFFSET_Pos 0UL +#define BLE_BLELL_WAKEUP_CONFIG_EXTD_DSM_LF_OFFSET_Msk 0x1FUL +/* BLE_BLELL.POC_REG__TIM_CONTROL */ +#define BLE_BLELL_POC_REG__TIM_CONTROL_BB_CLK_FREQ_MINUS_1_Pos 3UL +#define BLE_BLELL_POC_REG__TIM_CONTROL_BB_CLK_FREQ_MINUS_1_Msk 0xF8UL +#define BLE_BLELL_POC_REG__TIM_CONTROL_START_SLOT_OFFSET_Pos 8UL +#define BLE_BLELL_POC_REG__TIM_CONTROL_START_SLOT_OFFSET_Msk 0xF00UL +/* BLE_BLELL.ADV_TX_DATA_FIFO */ +#define BLE_BLELL_ADV_TX_DATA_FIFO_ADV_TX_DATA_Pos 0UL +#define BLE_BLELL_ADV_TX_DATA_FIFO_ADV_TX_DATA_Msk 0xFFFFUL +/* BLE_BLELL.ADV_SCN_RSP_TX_FIFO */ +#define BLE_BLELL_ADV_SCN_RSP_TX_FIFO_SCAN_RSP_DATA_Pos 0UL +#define BLE_BLELL_ADV_SCN_RSP_TX_FIFO_SCAN_RSP_DATA_Msk 0xFFFFUL +/* BLE_BLELL.INIT_SCN_ADV_RX_FIFO */ +#define BLE_BLELL_INIT_SCN_ADV_RX_FIFO_ADV_SCAN_RSP_RX_DATA_Pos 0UL +#define BLE_BLELL_INIT_SCN_ADV_RX_FIFO_ADV_SCAN_RSP_RX_DATA_Msk 0xFFFFUL +/* BLE_BLELL.CONN_INTERVAL */ +#define BLE_BLELL_CONN_INTERVAL_CONNECTION_INTERVAL_Pos 0UL +#define BLE_BLELL_CONN_INTERVAL_CONNECTION_INTERVAL_Msk 0xFFFFUL +/* BLE_BLELL.SUP_TIMEOUT */ +#define BLE_BLELL_SUP_TIMEOUT_SUPERVISION_TIMEOUT_Pos 0UL +#define BLE_BLELL_SUP_TIMEOUT_SUPERVISION_TIMEOUT_Msk 0xFFFFUL +/* BLE_BLELL.SLAVE_LATENCY */ +#define BLE_BLELL_SLAVE_LATENCY_SLAVE_LATENCY_Pos 0UL +#define BLE_BLELL_SLAVE_LATENCY_SLAVE_LATENCY_Msk 0xFFFFUL +/* BLE_BLELL.CE_LENGTH */ +#define BLE_BLELL_CE_LENGTH_CONNECTION_EVENT_LENGTH_Pos 0UL +#define BLE_BLELL_CE_LENGTH_CONNECTION_EVENT_LENGTH_Msk 0xFFFFUL +/* BLE_BLELL.PDU_ACCESS_ADDR_L_REGISTER */ +#define BLE_BLELL_PDU_ACCESS_ADDR_L_REGISTER_PDU_ACCESS_ADDRESS_LOWER_BITS_Pos 0UL +#define BLE_BLELL_PDU_ACCESS_ADDR_L_REGISTER_PDU_ACCESS_ADDRESS_LOWER_BITS_Msk 0xFFFFUL +/* BLE_BLELL.PDU_ACCESS_ADDR_H_REGISTER */ +#define BLE_BLELL_PDU_ACCESS_ADDR_H_REGISTER_PDU_ACCESS_ADDRESS_HIGHER_BITS_Pos 0UL +#define BLE_BLELL_PDU_ACCESS_ADDR_H_REGISTER_PDU_ACCESS_ADDRESS_HIGHER_BITS_Msk 0xFFFFUL +/* BLE_BLELL.CONN_CE_INSTANT */ +#define BLE_BLELL_CONN_CE_INSTANT_CE_INSTANT_Pos 0UL +#define BLE_BLELL_CONN_CE_INSTANT_CE_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.CE_CNFG_STS_REGISTER */ +#define BLE_BLELL_CE_CNFG_STS_REGISTER_DATA_LIST_INDEX_LAST_ACK_INDEX_Pos 0UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_DATA_LIST_INDEX_LAST_ACK_INDEX_Msk 0xFUL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_DATA_LIST_HEAD_UP_Pos 4UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_DATA_LIST_HEAD_UP_Msk 0x10UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_SPARE_Pos 5UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_SPARE_Msk 0x20UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_MD_Pos 6UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_MD_Msk 0x40UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_MAP_INDEX__CURR_INDEX_Pos 7UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_MAP_INDEX__CURR_INDEX_Msk 0x80UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_PAUSE_DATA_Pos 8UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_PAUSE_DATA_Msk 0x100UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_CONN_ACTIVE_Pos 10UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_CONN_ACTIVE_Msk 0x400UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_CURRENT_PDU_INDEX_Pos 12UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_CURRENT_PDU_INDEX_Msk 0xF000UL +/* BLE_BLELL.NEXT_CE_INSTANT */ +#define BLE_BLELL_NEXT_CE_INSTANT_NEXT_CE_INSTANT_Pos 0UL +#define BLE_BLELL_NEXT_CE_INSTANT_NEXT_CE_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.CONN_CE_COUNTER */ +#define BLE_BLELL_CONN_CE_COUNTER_CONNECTION_EVENT_COUNTER_Pos 0UL +#define BLE_BLELL_CONN_CE_COUNTER_CONNECTION_EVENT_COUNTER_Msk 0xFFFFUL +/* BLE_BLELL.DATA_LIST_SENT_UPDATE__STATUS */ +#define BLE_BLELL_DATA_LIST_SENT_UPDATE__STATUS_LIST_INDEX__TX_SENT_3_0_Pos 0UL +#define BLE_BLELL_DATA_LIST_SENT_UPDATE__STATUS_LIST_INDEX__TX_SENT_3_0_Msk 0xFUL +#define BLE_BLELL_DATA_LIST_SENT_UPDATE__STATUS_SET_CLEAR_Pos 7UL +#define BLE_BLELL_DATA_LIST_SENT_UPDATE__STATUS_SET_CLEAR_Msk 0x80UL +/* BLE_BLELL.DATA_LIST_ACK_UPDATE__STATUS */ +#define BLE_BLELL_DATA_LIST_ACK_UPDATE__STATUS_LIST_INDEX__TX_ACK_3_0_Pos 0UL +#define BLE_BLELL_DATA_LIST_ACK_UPDATE__STATUS_LIST_INDEX__TX_ACK_3_0_Msk 0xFUL +#define BLE_BLELL_DATA_LIST_ACK_UPDATE__STATUS_SET_CLEAR_Pos 7UL +#define BLE_BLELL_DATA_LIST_ACK_UPDATE__STATUS_SET_CLEAR_Msk 0x80UL +/* BLE_BLELL.CE_CNFG_STS_REGISTER_EXT */ +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_TX_2M_Pos 0UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_TX_2M_Msk 0x1UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_RX_2M_Pos 1UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_RX_2M_Msk 0x2UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_SN_Pos 2UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_SN_Msk 0x4UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_NESN_Pos 3UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_NESN_Msk 0x8UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_LAST_UNMAPPED_CHANNEL_Pos 8UL +#define BLE_BLELL_CE_CNFG_STS_REGISTER_EXT_LAST_UNMAPPED_CHANNEL_Msk 0x3F00UL +/* BLE_BLELL.CONN_EXT_INTR */ +#define BLE_BLELL_CONN_EXT_INTR_DATARATE_UPDATE_Pos 0UL +#define BLE_BLELL_CONN_EXT_INTR_DATARATE_UPDATE_Msk 0x1UL +#define BLE_BLELL_CONN_EXT_INTR_EARLY_INTR_Pos 1UL +#define BLE_BLELL_CONN_EXT_INTR_EARLY_INTR_Msk 0x2UL +#define BLE_BLELL_CONN_EXT_INTR_GEN_TIMER_INTR_Pos 2UL +#define BLE_BLELL_CONN_EXT_INTR_GEN_TIMER_INTR_Msk 0x4UL +/* BLE_BLELL.CONN_EXT_INTR_MASK */ +#define BLE_BLELL_CONN_EXT_INTR_MASK_DATARATE_UPDATE_Pos 0UL +#define BLE_BLELL_CONN_EXT_INTR_MASK_DATARATE_UPDATE_Msk 0x1UL +#define BLE_BLELL_CONN_EXT_INTR_MASK_EARLY_INTR_Pos 1UL +#define BLE_BLELL_CONN_EXT_INTR_MASK_EARLY_INTR_Msk 0x2UL +#define BLE_BLELL_CONN_EXT_INTR_MASK_GEN_TIMER_INTR_Pos 2UL +#define BLE_BLELL_CONN_EXT_INTR_MASK_GEN_TIMER_INTR_Msk 0x4UL +/* BLE_BLELL.DATA_MEM_DESCRIPTOR */ +#define BLE_BLELL_DATA_MEM_DESCRIPTOR_LLID_Pos 0UL +#define BLE_BLELL_DATA_MEM_DESCRIPTOR_LLID_Msk 0x3UL +#define BLE_BLELL_DATA_MEM_DESCRIPTOR_DATA_LENGTH_Pos 2UL +#define BLE_BLELL_DATA_MEM_DESCRIPTOR_DATA_LENGTH_Msk 0x3FCUL +/* BLE_BLELL.WINDOW_WIDEN_INTVL */ +#define BLE_BLELL_WINDOW_WIDEN_INTVL_WINDOW_WIDEN_INTVL_Pos 0UL +#define BLE_BLELL_WINDOW_WIDEN_INTVL_WINDOW_WIDEN_INTVL_Msk 0xFFFUL +/* BLE_BLELL.WINDOW_WIDEN_WINOFF */ +#define BLE_BLELL_WINDOW_WIDEN_WINOFF_WINDOW_WIDEN_WINOFF_Pos 0UL +#define BLE_BLELL_WINDOW_WIDEN_WINOFF_WINDOW_WIDEN_WINOFF_Msk 0xFFFUL +/* BLE_BLELL.LE_RF_TEST_MODE */ +#define BLE_BLELL_LE_RF_TEST_MODE_TEST_FREQUENCY_Pos 0UL +#define BLE_BLELL_LE_RF_TEST_MODE_TEST_FREQUENCY_Msk 0x3FUL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_STATUS__DTM_CONT_RXEN_Pos 6UL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_STATUS__DTM_CONT_RXEN_Msk 0x40UL +#define BLE_BLELL_LE_RF_TEST_MODE_PKT_PAYLOAD_Pos 7UL +#define BLE_BLELL_LE_RF_TEST_MODE_PKT_PAYLOAD_Msk 0x380UL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_CONT_TXEN_Pos 13UL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_CONT_TXEN_Msk 0x2000UL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_DATA_2MBPS_Pos 15UL +#define BLE_BLELL_LE_RF_TEST_MODE_DTM_DATA_2MBPS_Msk 0x8000UL +/* BLE_BLELL.DTM_RX_PKT_COUNT */ +#define BLE_BLELL_DTM_RX_PKT_COUNT_RX_PACKET_COUNT_Pos 0UL +#define BLE_BLELL_DTM_RX_PKT_COUNT_RX_PACKET_COUNT_Msk 0xFFFFUL +/* BLE_BLELL.LE_RF_TEST_MODE_EXT */ +#define BLE_BLELL_LE_RF_TEST_MODE_EXT_DTM_PACKET_LENGTH_Pos 0UL +#define BLE_BLELL_LE_RF_TEST_MODE_EXT_DTM_PACKET_LENGTH_Msk 0xFFUL +/* BLE_BLELL.TXRX_HOP */ +#define BLE_BLELL_TXRX_HOP_HOP_CH_TX_Pos 0UL +#define BLE_BLELL_TXRX_HOP_HOP_CH_TX_Msk 0x7FUL +#define BLE_BLELL_TXRX_HOP_HOP_CH_RX_Pos 8UL +#define BLE_BLELL_TXRX_HOP_HOP_CH_RX_Msk 0x7F00UL +/* BLE_BLELL.TX_RX_ON_DELAY */ +#define BLE_BLELL_TX_RX_ON_DELAY_RXON_DELAY_Pos 0UL +#define BLE_BLELL_TX_RX_ON_DELAY_RXON_DELAY_Msk 0xFFUL +#define BLE_BLELL_TX_RX_ON_DELAY_TXON_DELAY_Pos 8UL +#define BLE_BLELL_TX_RX_ON_DELAY_TXON_DELAY_Msk 0xFF00UL +/* BLE_BLELL.ADV_ACCADDR_L */ +#define BLE_BLELL_ADV_ACCADDR_L_ADV_ACCADDR_L_Pos 0UL +#define BLE_BLELL_ADV_ACCADDR_L_ADV_ACCADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.ADV_ACCADDR_H */ +#define BLE_BLELL_ADV_ACCADDR_H_ADV_ACCADDR_H_Pos 0UL +#define BLE_BLELL_ADV_ACCADDR_H_ADV_ACCADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.ADV_CH_TX_POWER_LVL_LS */ +#define BLE_BLELL_ADV_CH_TX_POWER_LVL_LS_ADV_TRANSMIT_POWER_LVL_LS_Pos 0UL +#define BLE_BLELL_ADV_CH_TX_POWER_LVL_LS_ADV_TRANSMIT_POWER_LVL_LS_Msk 0xFFFFUL +/* BLE_BLELL.ADV_CH_TX_POWER_LVL_MS */ +#define BLE_BLELL_ADV_CH_TX_POWER_LVL_MS_ADV_TRANSMIT_POWER_LVL_MS_Pos 0UL +#define BLE_BLELL_ADV_CH_TX_POWER_LVL_MS_ADV_TRANSMIT_POWER_LVL_MS_Msk 0x3UL +/* BLE_BLELL.CONN_CH_TX_POWER_LVL_LS */ +#define BLE_BLELL_CONN_CH_TX_POWER_LVL_LS_CONNCH_TRANSMIT_POWER_LVL_LS_Pos 0UL +#define BLE_BLELL_CONN_CH_TX_POWER_LVL_LS_CONNCH_TRANSMIT_POWER_LVL_LS_Msk 0xFFFFUL +/* BLE_BLELL.CONN_CH_TX_POWER_LVL_MS */ +#define BLE_BLELL_CONN_CH_TX_POWER_LVL_MS_CONNCH_TRANSMIT_POWER_LVL_MS_Pos 0UL +#define BLE_BLELL_CONN_CH_TX_POWER_LVL_MS_CONNCH_TRANSMIT_POWER_LVL_MS_Msk 0x3UL +/* BLE_BLELL.DEV_PUB_ADDR_L */ +#define BLE_BLELL_DEV_PUB_ADDR_L_DEV_PUB_ADDR_L_Pos 0UL +#define BLE_BLELL_DEV_PUB_ADDR_L_DEV_PUB_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.DEV_PUB_ADDR_M */ +#define BLE_BLELL_DEV_PUB_ADDR_M_DEV_PUB_ADDR_M_Pos 0UL +#define BLE_BLELL_DEV_PUB_ADDR_M_DEV_PUB_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.DEV_PUB_ADDR_H */ +#define BLE_BLELL_DEV_PUB_ADDR_H_DEV_PUB_ADDR_H_Pos 0UL +#define BLE_BLELL_DEV_PUB_ADDR_H_DEV_PUB_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.OFFSET_TO_FIRST_INSTANT */ +#define BLE_BLELL_OFFSET_TO_FIRST_INSTANT_OFFSET_TO_FIRST_EVENT_Pos 0UL +#define BLE_BLELL_OFFSET_TO_FIRST_INSTANT_OFFSET_TO_FIRST_EVENT_Msk 0xFFFFUL +/* BLE_BLELL.ADV_CONFIG */ +#define BLE_BLELL_ADV_CONFIG_ADV_STRT_EN_Pos 0UL +#define BLE_BLELL_ADV_CONFIG_ADV_STRT_EN_Msk 0x1UL +#define BLE_BLELL_ADV_CONFIG_ADV_CLS_EN_Pos 1UL +#define BLE_BLELL_ADV_CONFIG_ADV_CLS_EN_Msk 0x2UL +#define BLE_BLELL_ADV_CONFIG_ADV_TX_EN_Pos 2UL +#define BLE_BLELL_ADV_CONFIG_ADV_TX_EN_Msk 0x4UL +#define BLE_BLELL_ADV_CONFIG_SCN_RSP_TX_EN_Pos 3UL +#define BLE_BLELL_ADV_CONFIG_SCN_RSP_TX_EN_Msk 0x8UL +#define BLE_BLELL_ADV_CONFIG_ADV_SCN_REQ_RX_EN_Pos 4UL +#define BLE_BLELL_ADV_CONFIG_ADV_SCN_REQ_RX_EN_Msk 0x10UL +#define BLE_BLELL_ADV_CONFIG_ADV_CONN_REQ_RX_EN_Pos 5UL +#define BLE_BLELL_ADV_CONFIG_ADV_CONN_REQ_RX_EN_Msk 0x20UL +#define BLE_BLELL_ADV_CONFIG_SLV_CONNECTED_EN_Pos 6UL +#define BLE_BLELL_ADV_CONFIG_SLV_CONNECTED_EN_Msk 0x40UL +#define BLE_BLELL_ADV_CONFIG_ADV_TIMEOUT_EN_Pos 7UL +#define BLE_BLELL_ADV_CONFIG_ADV_TIMEOUT_EN_Msk 0x80UL +#define BLE_BLELL_ADV_CONFIG_ADV_RAND_DISABLE_Pos 8UL +#define BLE_BLELL_ADV_CONFIG_ADV_RAND_DISABLE_Msk 0x100UL +#define BLE_BLELL_ADV_CONFIG_ADV_SCN_PEER_RPA_UNMCH_EN_Pos 9UL +#define BLE_BLELL_ADV_CONFIG_ADV_SCN_PEER_RPA_UNMCH_EN_Msk 0x200UL +#define BLE_BLELL_ADV_CONFIG_ADV_CONN_PEER_RPA_UNMCH_EN_Pos 10UL +#define BLE_BLELL_ADV_CONFIG_ADV_CONN_PEER_RPA_UNMCH_EN_Msk 0x400UL +#define BLE_BLELL_ADV_CONFIG_ADV_PKT_INTERVAL_Pos 11UL +#define BLE_BLELL_ADV_CONFIG_ADV_PKT_INTERVAL_Msk 0xF800UL +/* BLE_BLELL.SCAN_CONFIG */ +#define BLE_BLELL_SCAN_CONFIG_SCN_STRT_EN_Pos 0UL +#define BLE_BLELL_SCAN_CONFIG_SCN_STRT_EN_Msk 0x1UL +#define BLE_BLELL_SCAN_CONFIG_SCN_CLOSE_EN_Pos 1UL +#define BLE_BLELL_SCAN_CONFIG_SCN_CLOSE_EN_Msk 0x2UL +#define BLE_BLELL_SCAN_CONFIG_SCN_TX_EN_Pos 2UL +#define BLE_BLELL_SCAN_CONFIG_SCN_TX_EN_Msk 0x4UL +#define BLE_BLELL_SCAN_CONFIG_ADV_RX_EN_Pos 3UL +#define BLE_BLELL_SCAN_CONFIG_ADV_RX_EN_Msk 0x8UL +#define BLE_BLELL_SCAN_CONFIG_SCN_RSP_RX_EN_Pos 4UL +#define BLE_BLELL_SCAN_CONFIG_SCN_RSP_RX_EN_Msk 0x10UL +#define BLE_BLELL_SCAN_CONFIG_SCN_ADV_RX_INTR_PEER_RPA_UNMCH_EN_Pos 5UL +#define BLE_BLELL_SCAN_CONFIG_SCN_ADV_RX_INTR_PEER_RPA_UNMCH_EN_Msk 0x20UL +#define BLE_BLELL_SCAN_CONFIG_SCN_ADV_RX_INTR_SELF_RPA_UNMCH_EN_Pos 6UL +#define BLE_BLELL_SCAN_CONFIG_SCN_ADV_RX_INTR_SELF_RPA_UNMCH_EN_Msk 0x40UL +#define BLE_BLELL_SCAN_CONFIG_SCANA_TX_ADDR_NOT_SET_INTR_EN_Pos 7UL +#define BLE_BLELL_SCAN_CONFIG_SCANA_TX_ADDR_NOT_SET_INTR_EN_Msk 0x80UL +#define BLE_BLELL_SCAN_CONFIG_RPT_SELF_ADDR_MATCH_PRIV_MISMATCH_SCN_Pos 8UL +#define BLE_BLELL_SCAN_CONFIG_RPT_SELF_ADDR_MATCH_PRIV_MISMATCH_SCN_Msk 0x100UL +#define BLE_BLELL_SCAN_CONFIG_BACKOFF_ENABLE_Pos 11UL +#define BLE_BLELL_SCAN_CONFIG_BACKOFF_ENABLE_Msk 0x800UL +#define BLE_BLELL_SCAN_CONFIG_SCAN_CHANNEL_MAP_Pos 13UL +#define BLE_BLELL_SCAN_CONFIG_SCAN_CHANNEL_MAP_Msk 0xE000UL +/* BLE_BLELL.INIT_CONFIG */ +#define BLE_BLELL_INIT_CONFIG_INIT_STRT_EN_Pos 0UL +#define BLE_BLELL_INIT_CONFIG_INIT_STRT_EN_Msk 0x1UL +#define BLE_BLELL_INIT_CONFIG_INIT_CLOSE_EN_Pos 1UL +#define BLE_BLELL_INIT_CONFIG_INIT_CLOSE_EN_Msk 0x2UL +#define BLE_BLELL_INIT_CONFIG_CONN_REQ_TX_EN_Pos 2UL +#define BLE_BLELL_INIT_CONFIG_CONN_REQ_TX_EN_Msk 0x4UL +#define BLE_BLELL_INIT_CONFIG_CONN_CREATED_Pos 4UL +#define BLE_BLELL_INIT_CONFIG_CONN_CREATED_Msk 0x10UL +#define BLE_BLELL_INIT_CONFIG_INIT_ADV_RX_INTR_SELF_RPA_UNRES_EN_Pos 5UL +#define BLE_BLELL_INIT_CONFIG_INIT_ADV_RX_INTR_SELF_RPA_UNRES_EN_Msk 0x20UL +#define BLE_BLELL_INIT_CONFIG_INIT_ADV_RX_INTR_PEER_RPA_UNRES_EN_Pos 6UL +#define BLE_BLELL_INIT_CONFIG_INIT_ADV_RX_INTR_PEER_RPA_UNRES_EN_Msk 0x40UL +#define BLE_BLELL_INIT_CONFIG_INITA_TX_ADDR_NOT_SET_INTR_EN_Pos 7UL +#define BLE_BLELL_INIT_CONFIG_INITA_TX_ADDR_NOT_SET_INTR_EN_Msk 0x80UL +#define BLE_BLELL_INIT_CONFIG_INIT_CHANNEL_MAP_Pos 13UL +#define BLE_BLELL_INIT_CONFIG_INIT_CHANNEL_MAP_Msk 0xE000UL +/* BLE_BLELL.CONN_CONFIG */ +#define BLE_BLELL_CONN_CONFIG_RX_PKT_LIMIT_Pos 0UL +#define BLE_BLELL_CONN_CONFIG_RX_PKT_LIMIT_Msk 0xFUL +#define BLE_BLELL_CONN_CONFIG_RX_INTR_THRESHOLD_Pos 4UL +#define BLE_BLELL_CONN_CONFIG_RX_INTR_THRESHOLD_Msk 0xF0UL +#define BLE_BLELL_CONN_CONFIG_MD_BIT_CLEAR_Pos 8UL +#define BLE_BLELL_CONN_CONFIG_MD_BIT_CLEAR_Msk 0x100UL +#define BLE_BLELL_CONN_CONFIG_DSM_SLOT_VARIANCE_Pos 11UL +#define BLE_BLELL_CONN_CONFIG_DSM_SLOT_VARIANCE_Msk 0x800UL +#define BLE_BLELL_CONN_CONFIG_SLV_MD_CONFIG_Pos 12UL +#define BLE_BLELL_CONN_CONFIG_SLV_MD_CONFIG_Msk 0x1000UL +#define BLE_BLELL_CONN_CONFIG_EXTEND_CU_TX_WIN_Pos 13UL +#define BLE_BLELL_CONN_CONFIG_EXTEND_CU_TX_WIN_Msk 0x2000UL +#define BLE_BLELL_CONN_CONFIG_MASK_SUTO_AT_UPDT_Pos 14UL +#define BLE_BLELL_CONN_CONFIG_MASK_SUTO_AT_UPDT_Msk 0x4000UL +#define BLE_BLELL_CONN_CONFIG_CONN_REQ_1SLOT_EARLY_Pos 15UL +#define BLE_BLELL_CONN_CONFIG_CONN_REQ_1SLOT_EARLY_Msk 0x8000UL +/* BLE_BLELL.CONN_PARAM1 */ +#define BLE_BLELL_CONN_PARAM1_SCA_PARAM_Pos 0UL +#define BLE_BLELL_CONN_PARAM1_SCA_PARAM_Msk 0x7UL +#define BLE_BLELL_CONN_PARAM1_HOP_INCREMENT_PARAM_Pos 3UL +#define BLE_BLELL_CONN_PARAM1_HOP_INCREMENT_PARAM_Msk 0xF8UL +#define BLE_BLELL_CONN_PARAM1_CRC_INIT_L_Pos 8UL +#define BLE_BLELL_CONN_PARAM1_CRC_INIT_L_Msk 0xFF00UL +/* BLE_BLELL.CONN_PARAM2 */ +#define BLE_BLELL_CONN_PARAM2_CRC_INIT_H_Pos 0UL +#define BLE_BLELL_CONN_PARAM2_CRC_INIT_H_Msk 0xFFFFUL +/* BLE_BLELL.CONN_INTR_MASK */ +#define BLE_BLELL_CONN_INTR_MASK_CONN_CL_INT_EN_Pos 0UL +#define BLE_BLELL_CONN_INTR_MASK_CONN_CL_INT_EN_Msk 0x1UL +#define BLE_BLELL_CONN_INTR_MASK_CONN_ESTB_INT_EN_Pos 1UL +#define BLE_BLELL_CONN_INTR_MASK_CONN_ESTB_INT_EN_Msk 0x2UL +#define BLE_BLELL_CONN_INTR_MASK_MAP_UPDT_INT_EN_Pos 2UL +#define BLE_BLELL_CONN_INTR_MASK_MAP_UPDT_INT_EN_Msk 0x4UL +#define BLE_BLELL_CONN_INTR_MASK_START_CE_INT_EN_Pos 3UL +#define BLE_BLELL_CONN_INTR_MASK_START_CE_INT_EN_Msk 0x8UL +#define BLE_BLELL_CONN_INTR_MASK_CLOSE_CE_INT_EN_Pos 4UL +#define BLE_BLELL_CONN_INTR_MASK_CLOSE_CE_INT_EN_Msk 0x10UL +#define BLE_BLELL_CONN_INTR_MASK_CE_TX_ACK_INT_EN_Pos 5UL +#define BLE_BLELL_CONN_INTR_MASK_CE_TX_ACK_INT_EN_Msk 0x20UL +#define BLE_BLELL_CONN_INTR_MASK_CE_RX_INT_EN_Pos 6UL +#define BLE_BLELL_CONN_INTR_MASK_CE_RX_INT_EN_Msk 0x40UL +#define BLE_BLELL_CONN_INTR_MASK_CONN_UPDATE_INTR_EN_Pos 7UL +#define BLE_BLELL_CONN_INTR_MASK_CONN_UPDATE_INTR_EN_Msk 0x80UL +#define BLE_BLELL_CONN_INTR_MASK_RX_GOOD_PDU_INT_EN_Pos 8UL +#define BLE_BLELL_CONN_INTR_MASK_RX_GOOD_PDU_INT_EN_Msk 0x100UL +#define BLE_BLELL_CONN_INTR_MASK_RX_BAD_PDU_INT_EN_Pos 9UL +#define BLE_BLELL_CONN_INTR_MASK_RX_BAD_PDU_INT_EN_Msk 0x200UL +#define BLE_BLELL_CONN_INTR_MASK_CE_CLOSE_NULL_RX_INT_EN_Pos 13UL +#define BLE_BLELL_CONN_INTR_MASK_CE_CLOSE_NULL_RX_INT_EN_Msk 0x2000UL +#define BLE_BLELL_CONN_INTR_MASK_PING_TIMER_EXPIRD_INTR_Pos 14UL +#define BLE_BLELL_CONN_INTR_MASK_PING_TIMER_EXPIRD_INTR_Msk 0x4000UL +#define BLE_BLELL_CONN_INTR_MASK_PING_NEARLY_EXPIRD_INTR_Pos 15UL +#define BLE_BLELL_CONN_INTR_MASK_PING_NEARLY_EXPIRD_INTR_Msk 0x8000UL +/* BLE_BLELL.SLAVE_TIMING_CONTROL */ +#define BLE_BLELL_SLAVE_TIMING_CONTROL_SLAVE_TIME_SET_VAL_Pos 0UL +#define BLE_BLELL_SLAVE_TIMING_CONTROL_SLAVE_TIME_SET_VAL_Msk 0xFFUL +#define BLE_BLELL_SLAVE_TIMING_CONTROL_SLAVE_TIME_ADJ_VAL_Pos 8UL +#define BLE_BLELL_SLAVE_TIMING_CONTROL_SLAVE_TIME_ADJ_VAL_Msk 0xFF00UL +/* BLE_BLELL.RECEIVE_TRIG_CTRL */ +#define BLE_BLELL_RECEIVE_TRIG_CTRL_ACC_TRIGGER_THRESHOLD_Pos 0UL +#define BLE_BLELL_RECEIVE_TRIG_CTRL_ACC_TRIGGER_THRESHOLD_Msk 0x3FUL +#define BLE_BLELL_RECEIVE_TRIG_CTRL_ACC_TRIGGER_TIMEOUT_Pos 8UL +#define BLE_BLELL_RECEIVE_TRIG_CTRL_ACC_TRIGGER_TIMEOUT_Msk 0xFF00UL +/* BLE_BLELL.LL_DBG_1 */ +#define BLE_BLELL_LL_DBG_1_CONN_RX_WR_PTR_Pos 0UL +#define BLE_BLELL_LL_DBG_1_CONN_RX_WR_PTR_Msk 0x3FFUL +/* BLE_BLELL.LL_DBG_2 */ +#define BLE_BLELL_LL_DBG_2_CONN_RX_RD_PTR_Pos 0UL +#define BLE_BLELL_LL_DBG_2_CONN_RX_RD_PTR_Msk 0x3FFUL +/* BLE_BLELL.LL_DBG_3 */ +#define BLE_BLELL_LL_DBG_3_CONN_RX_WR_PTR_STORE_Pos 0UL +#define BLE_BLELL_LL_DBG_3_CONN_RX_WR_PTR_STORE_Msk 0x3FFUL +/* BLE_BLELL.LL_DBG_4 */ +#define BLE_BLELL_LL_DBG_4_CONNECTION_FSM_STATE_Pos 0UL +#define BLE_BLELL_LL_DBG_4_CONNECTION_FSM_STATE_Msk 0xFUL +#define BLE_BLELL_LL_DBG_4_SLAVE_LATENCY_FSM_STATE_Pos 4UL +#define BLE_BLELL_LL_DBG_4_SLAVE_LATENCY_FSM_STATE_Msk 0x30UL +#define BLE_BLELL_LL_DBG_4_ADVERTISER_FSM_STATE_Pos 6UL +#define BLE_BLELL_LL_DBG_4_ADVERTISER_FSM_STATE_Msk 0x7C0UL +/* BLE_BLELL.LL_DBG_5 */ +#define BLE_BLELL_LL_DBG_5_INIT_FSM_STATE_Pos 0UL +#define BLE_BLELL_LL_DBG_5_INIT_FSM_STATE_Msk 0x1FUL +#define BLE_BLELL_LL_DBG_5_SCAN_FSM_STATE_Pos 5UL +#define BLE_BLELL_LL_DBG_5_SCAN_FSM_STATE_Msk 0x3E0UL +/* BLE_BLELL.LL_DBG_6 */ +#define BLE_BLELL_LL_DBG_6_ADV_TX_WR_PTR_Pos 0UL +#define BLE_BLELL_LL_DBG_6_ADV_TX_WR_PTR_Msk 0xFUL +#define BLE_BLELL_LL_DBG_6_SCAN_RSP_TX_WR_PTR_Pos 4UL +#define BLE_BLELL_LL_DBG_6_SCAN_RSP_TX_WR_PTR_Msk 0xF0UL +#define BLE_BLELL_LL_DBG_6_ADV_TX_RD_PTR_Pos 8UL +#define BLE_BLELL_LL_DBG_6_ADV_TX_RD_PTR_Msk 0x3F00UL +/* BLE_BLELL.LL_DBG_7 */ +#define BLE_BLELL_LL_DBG_7_ADV_RX_WR_PTR_Pos 0UL +#define BLE_BLELL_LL_DBG_7_ADV_RX_WR_PTR_Msk 0x7FUL +#define BLE_BLELL_LL_DBG_7_ADV_RX_RD_PTR_Pos 7UL +#define BLE_BLELL_LL_DBG_7_ADV_RX_RD_PTR_Msk 0x3F80UL +/* BLE_BLELL.LL_DBG_8 */ +#define BLE_BLELL_LL_DBG_8_ADV_RX_WR_PTR_STORE_Pos 0UL +#define BLE_BLELL_LL_DBG_8_ADV_RX_WR_PTR_STORE_Msk 0x7FUL +#define BLE_BLELL_LL_DBG_8_WLF_PTR_Pos 7UL +#define BLE_BLELL_LL_DBG_8_WLF_PTR_Msk 0x3F80UL +/* BLE_BLELL.LL_DBG_9 */ +#define BLE_BLELL_LL_DBG_9_WINDOW_WIDEN_Pos 0UL +#define BLE_BLELL_LL_DBG_9_WINDOW_WIDEN_Msk 0xFFFFUL +/* BLE_BLELL.LL_DBG_10 */ +#define BLE_BLELL_LL_DBG_10_RF_CHANNEL_NUM_Pos 0UL +#define BLE_BLELL_LL_DBG_10_RF_CHANNEL_NUM_Msk 0x3FUL +/* BLE_BLELL.PEER_ADDR_INIT_L */ +#define BLE_BLELL_PEER_ADDR_INIT_L_PEER_ADDR_L_Pos 0UL +#define BLE_BLELL_PEER_ADDR_INIT_L_PEER_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.PEER_ADDR_INIT_M */ +#define BLE_BLELL_PEER_ADDR_INIT_M_PEER_ADDR_M_Pos 0UL +#define BLE_BLELL_PEER_ADDR_INIT_M_PEER_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.PEER_ADDR_INIT_H */ +#define BLE_BLELL_PEER_ADDR_INIT_H_PEER_ADDR_H_Pos 0UL +#define BLE_BLELL_PEER_ADDR_INIT_H_PEER_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.PEER_SEC_ADDR_ADV_L */ +#define BLE_BLELL_PEER_SEC_ADDR_ADV_L_PEER_SEC_ADDR_L_Pos 0UL +#define BLE_BLELL_PEER_SEC_ADDR_ADV_L_PEER_SEC_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.PEER_SEC_ADDR_ADV_M */ +#define BLE_BLELL_PEER_SEC_ADDR_ADV_M_PEER_SEC_ADDR_M_Pos 0UL +#define BLE_BLELL_PEER_SEC_ADDR_ADV_M_PEER_SEC_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.PEER_SEC_ADDR_ADV_H */ +#define BLE_BLELL_PEER_SEC_ADDR_ADV_H_PEER_SEC_ADDR_H_Pos 0UL +#define BLE_BLELL_PEER_SEC_ADDR_ADV_H_PEER_SEC_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.INIT_WINDOW_TIMER_CTRL */ +#define BLE_BLELL_INIT_WINDOW_TIMER_CTRL_INIT_WINDOW_OFFSET_SEL_Pos 0UL +#define BLE_BLELL_INIT_WINDOW_TIMER_CTRL_INIT_WINDOW_OFFSET_SEL_Msk 0x1UL +/* BLE_BLELL.CONN_CONFIG_EXT */ +#define BLE_BLELL_CONN_CONFIG_EXT_CONN_REQ_2SLOT_EARLY_Pos 0UL +#define BLE_BLELL_CONN_CONFIG_EXT_CONN_REQ_2SLOT_EARLY_Msk 0x1UL +#define BLE_BLELL_CONN_CONFIG_EXT_CONN_REQ_3SLOT_EARLY_Pos 1UL +#define BLE_BLELL_CONN_CONFIG_EXT_CONN_REQ_3SLOT_EARLY_Msk 0x2UL +#define BLE_BLELL_CONN_CONFIG_EXT_FW_PKT_RCV_CONN_INDEX_Pos 2UL +#define BLE_BLELL_CONN_CONFIG_EXT_FW_PKT_RCV_CONN_INDEX_Msk 0x7CUL +#define BLE_BLELL_CONN_CONFIG_EXT_MMMS_RX_PKT_LIMIT_Pos 8UL +#define BLE_BLELL_CONN_CONFIG_EXT_MMMS_RX_PKT_LIMIT_Msk 0x3F00UL +#define BLE_BLELL_CONN_CONFIG_EXT_DEBUG_CE_EXPIRE_Pos 14UL +#define BLE_BLELL_CONN_CONFIG_EXT_DEBUG_CE_EXPIRE_Msk 0x4000UL +#define BLE_BLELL_CONN_CONFIG_EXT_MT_PDU_CE_EXPIRE_Pos 15UL +#define BLE_BLELL_CONN_CONFIG_EXT_MT_PDU_CE_EXPIRE_Msk 0x8000UL +/* BLE_BLELL.DPLL_CONFIG */ +#define BLE_BLELL_DPLL_CONFIG_DPLL_CORREL_CONFIG_Pos 0UL +#define BLE_BLELL_DPLL_CONFIG_DPLL_CORREL_CONFIG_Msk 0xFFFFUL +/* BLE_BLELL.INIT_NI_VAL */ +#define BLE_BLELL_INIT_NI_VAL_INIT_NI_VAL_Pos 0UL +#define BLE_BLELL_INIT_NI_VAL_INIT_NI_VAL_Msk 0xFFFFUL +/* BLE_BLELL.INIT_WINDOW_OFFSET */ +#define BLE_BLELL_INIT_WINDOW_OFFSET_INIT_WINDOW_NI_Pos 0UL +#define BLE_BLELL_INIT_WINDOW_OFFSET_INIT_WINDOW_NI_Msk 0xFFFFUL +/* BLE_BLELL.INIT_WINDOW_NI_ANCHOR_PT */ +#define BLE_BLELL_INIT_WINDOW_NI_ANCHOR_PT_INIT_INT_OFF_CAPT_Pos 0UL +#define BLE_BLELL_INIT_WINDOW_NI_ANCHOR_PT_INIT_INT_OFF_CAPT_Msk 0xFFFFUL +/* BLE_BLELL.CONN_UPDATE_NEW_INTERVAL */ +#define BLE_BLELL_CONN_UPDATE_NEW_INTERVAL_CONN_UPDT_INTERVAL_Pos 0UL +#define BLE_BLELL_CONN_UPDATE_NEW_INTERVAL_CONN_UPDT_INTERVAL_Msk 0xFFFFUL +/* BLE_BLELL.CONN_UPDATE_NEW_LATENCY */ +#define BLE_BLELL_CONN_UPDATE_NEW_LATENCY_CONN_UPDT_SLV_LATENCY_Pos 0UL +#define BLE_BLELL_CONN_UPDATE_NEW_LATENCY_CONN_UPDT_SLV_LATENCY_Msk 0xFFFFUL +/* BLE_BLELL.CONN_UPDATE_NEW_SUP_TO */ +#define BLE_BLELL_CONN_UPDATE_NEW_SUP_TO_CONN_UPDT_SUP_TO_Pos 0UL +#define BLE_BLELL_CONN_UPDATE_NEW_SUP_TO_CONN_UPDT_SUP_TO_Msk 0xFFFFUL +/* BLE_BLELL.CONN_UPDATE_NEW_SL_INTERVAL */ +#define BLE_BLELL_CONN_UPDATE_NEW_SL_INTERVAL_SL_CONN_INTERVAL_VAL_Pos 0UL +#define BLE_BLELL_CONN_UPDATE_NEW_SL_INTERVAL_SL_CONN_INTERVAL_VAL_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD0 */ +#define BLE_BLELL_CONN_REQ_WORD0_ACCESS_ADDR_LOWER_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD0_ACCESS_ADDR_LOWER_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD1 */ +#define BLE_BLELL_CONN_REQ_WORD1_ACCESS_ADDR_UPPER_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD1_ACCESS_ADDR_UPPER_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD2 */ +#define BLE_BLELL_CONN_REQ_WORD2_TX_WINDOW_SIZE_VAL_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD2_TX_WINDOW_SIZE_VAL_Msk 0xFFUL +#define BLE_BLELL_CONN_REQ_WORD2_CRC_INIT_LOWER_Pos 8UL +#define BLE_BLELL_CONN_REQ_WORD2_CRC_INIT_LOWER_Msk 0xFF00UL +/* BLE_BLELL.CONN_REQ_WORD3 */ +#define BLE_BLELL_CONN_REQ_WORD3_CRC_INIT_UPPER_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD3_CRC_INIT_UPPER_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD4 */ +#define BLE_BLELL_CONN_REQ_WORD4_TX_WINDOW_OFFSET_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD4_TX_WINDOW_OFFSET_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD5 */ +#define BLE_BLELL_CONN_REQ_WORD5_CONNECTION_INTERVAL_VAL_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD5_CONNECTION_INTERVAL_VAL_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD6 */ +#define BLE_BLELL_CONN_REQ_WORD6_SLAVE_LATENCY_VAL_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD6_SLAVE_LATENCY_VAL_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD7 */ +#define BLE_BLELL_CONN_REQ_WORD7_SUPERVISION_TIMEOUT_VAL_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD7_SUPERVISION_TIMEOUT_VAL_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD8 */ +#define BLE_BLELL_CONN_REQ_WORD8_DATA_CHANNELS_LOWER_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD8_DATA_CHANNELS_LOWER_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD9 */ +#define BLE_BLELL_CONN_REQ_WORD9_DATA_CHANNELS_MID_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD9_DATA_CHANNELS_MID_Msk 0xFFFFUL +/* BLE_BLELL.CONN_REQ_WORD10 */ +#define BLE_BLELL_CONN_REQ_WORD10_DATA_CHANNELS_UPPER_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD10_DATA_CHANNELS_UPPER_Msk 0x1FUL +/* BLE_BLELL.CONN_REQ_WORD11 */ +#define BLE_BLELL_CONN_REQ_WORD11_HOP_INCREMENT_2_Pos 0UL +#define BLE_BLELL_CONN_REQ_WORD11_HOP_INCREMENT_2_Msk 0x1FUL +#define BLE_BLELL_CONN_REQ_WORD11_SCA_2_Pos 5UL +#define BLE_BLELL_CONN_REQ_WORD11_SCA_2_Msk 0xE0UL +/* BLE_BLELL.PDU_RESP_TIMER */ +#define BLE_BLELL_PDU_RESP_TIMER_PDU_RESP_TIME_VAL_Pos 0UL +#define BLE_BLELL_PDU_RESP_TIMER_PDU_RESP_TIME_VAL_Msk 0xFFFFUL +/* BLE_BLELL.NEXT_RESP_TIMER_EXP */ +#define BLE_BLELL_NEXT_RESP_TIMER_EXP_NEXT_RESPONSE_INSTANT_Pos 0UL +#define BLE_BLELL_NEXT_RESP_TIMER_EXP_NEXT_RESPONSE_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.NEXT_SUP_TO */ +#define BLE_BLELL_NEXT_SUP_TO_NEXT_TIMEOUT_INSTANT_Pos 0UL +#define BLE_BLELL_NEXT_SUP_TO_NEXT_TIMEOUT_INSTANT_Msk 0xFFFFUL +/* BLE_BLELL.LLH_FEATURE_CONFIG */ +#define BLE_BLELL_LLH_FEATURE_CONFIG_QUICK_TRANSMIT_Pos 0UL +#define BLE_BLELL_LLH_FEATURE_CONFIG_QUICK_TRANSMIT_Msk 0x1UL +#define BLE_BLELL_LLH_FEATURE_CONFIG_SL_DSM_EN_Pos 1UL +#define BLE_BLELL_LLH_FEATURE_CONFIG_SL_DSM_EN_Msk 0x2UL +#define BLE_BLELL_LLH_FEATURE_CONFIG_US_COUNTER_OFFSET_ADJ_Pos 2UL +#define BLE_BLELL_LLH_FEATURE_CONFIG_US_COUNTER_OFFSET_ADJ_Msk 0x4UL +/* BLE_BLELL.WIN_MIN_STEP_SIZE */ +#define BLE_BLELL_WIN_MIN_STEP_SIZE_STEPDN_Pos 0UL +#define BLE_BLELL_WIN_MIN_STEP_SIZE_STEPDN_Msk 0xFUL +#define BLE_BLELL_WIN_MIN_STEP_SIZE_STEPUP_Pos 4UL +#define BLE_BLELL_WIN_MIN_STEP_SIZE_STEPUP_Msk 0xF0UL +#define BLE_BLELL_WIN_MIN_STEP_SIZE_WINDOW_MIN_FW_Pos 8UL +#define BLE_BLELL_WIN_MIN_STEP_SIZE_WINDOW_MIN_FW_Msk 0xFF00UL +/* BLE_BLELL.SLV_WIN_ADJ */ +#define BLE_BLELL_SLV_WIN_ADJ_SLV_WIN_ADJ_Pos 0UL +#define BLE_BLELL_SLV_WIN_ADJ_SLV_WIN_ADJ_Msk 0x7FFUL +/* BLE_BLELL.SL_CONN_INTERVAL */ +#define BLE_BLELL_SL_CONN_INTERVAL_SL_CONN_INTERVAL_VAL_Pos 0UL +#define BLE_BLELL_SL_CONN_INTERVAL_SL_CONN_INTERVAL_VAL_Msk 0xFFFFUL +/* BLE_BLELL.LE_PING_TIMER_ADDR */ +#define BLE_BLELL_LE_PING_TIMER_ADDR_CONN_PING_TIMER_ADDR_Pos 0UL +#define BLE_BLELL_LE_PING_TIMER_ADDR_CONN_PING_TIMER_ADDR_Msk 0xFFFFUL +/* BLE_BLELL.LE_PING_TIMER_OFFSET */ +#define BLE_BLELL_LE_PING_TIMER_OFFSET_CONN_PING_TIMER_OFFSET_Pos 0UL +#define BLE_BLELL_LE_PING_TIMER_OFFSET_CONN_PING_TIMER_OFFSET_Msk 0xFFFFUL +/* BLE_BLELL.LE_PING_TIMER_NEXT_EXP */ +#define BLE_BLELL_LE_PING_TIMER_NEXT_EXP_CONN_PING_TIMER_NEXT_EXP_Pos 0UL +#define BLE_BLELL_LE_PING_TIMER_NEXT_EXP_CONN_PING_TIMER_NEXT_EXP_Msk 0xFFFFUL +/* BLE_BLELL.LE_PING_TIMER_WRAP_COUNT */ +#define BLE_BLELL_LE_PING_TIMER_WRAP_COUNT_CONN_SEC_CURRENT_WRAP_Pos 0UL +#define BLE_BLELL_LE_PING_TIMER_WRAP_COUNT_CONN_SEC_CURRENT_WRAP_Msk 0xFFFFUL +/* BLE_BLELL.TX_EN_EXT_DELAY */ +#define BLE_BLELL_TX_EN_EXT_DELAY_TXEN_EXT_DELAY_Pos 0UL +#define BLE_BLELL_TX_EN_EXT_DELAY_TXEN_EXT_DELAY_Msk 0xFUL +#define BLE_BLELL_TX_EN_EXT_DELAY_RXEN_EXT_DELAY_Pos 4UL +#define BLE_BLELL_TX_EN_EXT_DELAY_RXEN_EXT_DELAY_Msk 0xF0UL +#define BLE_BLELL_TX_EN_EXT_DELAY_DEMOD_2M_COMP_DLY_Pos 8UL +#define BLE_BLELL_TX_EN_EXT_DELAY_DEMOD_2M_COMP_DLY_Msk 0xF00UL +#define BLE_BLELL_TX_EN_EXT_DELAY_MOD_2M_COMP_DLY_Pos 12UL +#define BLE_BLELL_TX_EN_EXT_DELAY_MOD_2M_COMP_DLY_Msk 0xF000UL +/* BLE_BLELL.TX_RX_SYNTH_DELAY */ +#define BLE_BLELL_TX_RX_SYNTH_DELAY_RX_EN_DELAY_Pos 0UL +#define BLE_BLELL_TX_RX_SYNTH_DELAY_RX_EN_DELAY_Msk 0xFFUL +#define BLE_BLELL_TX_RX_SYNTH_DELAY_TX_EN_DELAY_Pos 8UL +#define BLE_BLELL_TX_RX_SYNTH_DELAY_TX_EN_DELAY_Msk 0xFF00UL +/* BLE_BLELL.EXT_PA_LNA_DLY_CNFG */ +#define BLE_BLELL_EXT_PA_LNA_DLY_CNFG_LNA_CTL_DELAY_Pos 0UL +#define BLE_BLELL_EXT_PA_LNA_DLY_CNFG_LNA_CTL_DELAY_Msk 0xFFUL +#define BLE_BLELL_EXT_PA_LNA_DLY_CNFG_PA_CTL_DELAY_Pos 8UL +#define BLE_BLELL_EXT_PA_LNA_DLY_CNFG_PA_CTL_DELAY_Msk 0xFF00UL +/* BLE_BLELL.LL_CONFIG */ +#define BLE_BLELL_LL_CONFIG_RSSI_SEL_Pos 0UL +#define BLE_BLELL_LL_CONFIG_RSSI_SEL_Msk 0x1UL +#define BLE_BLELL_LL_CONFIG_TX_RX_CTRL_SEL_Pos 1UL +#define BLE_BLELL_LL_CONFIG_TX_RX_CTRL_SEL_Msk 0x2UL +#define BLE_BLELL_LL_CONFIG_TIFS_ENABLE_Pos 2UL +#define BLE_BLELL_LL_CONFIG_TIFS_ENABLE_Msk 0x4UL +#define BLE_BLELL_LL_CONFIG_TIMER_LF_SLOT_ENABLE_Pos 3UL +#define BLE_BLELL_LL_CONFIG_TIMER_LF_SLOT_ENABLE_Msk 0x8UL +#define BLE_BLELL_LL_CONFIG_RSSI_INTR_SEL_Pos 5UL +#define BLE_BLELL_LL_CONFIG_RSSI_INTR_SEL_Msk 0x20UL +#define BLE_BLELL_LL_CONFIG_RSSI_EARLY_CNFG_Pos 6UL +#define BLE_BLELL_LL_CONFIG_RSSI_EARLY_CNFG_Msk 0x40UL +#define BLE_BLELL_LL_CONFIG_TX_RX_PIN_DLY_Pos 7UL +#define BLE_BLELL_LL_CONFIG_TX_RX_PIN_DLY_Msk 0x80UL +#define BLE_BLELL_LL_CONFIG_TX_PA_PWR_LVL_TYPE_Pos 8UL +#define BLE_BLELL_LL_CONFIG_TX_PA_PWR_LVL_TYPE_Msk 0x100UL +#define BLE_BLELL_LL_CONFIG_RSSI_ENERGY_RD_Pos 9UL +#define BLE_BLELL_LL_CONFIG_RSSI_ENERGY_RD_Msk 0x200UL +#define BLE_BLELL_LL_CONFIG_RSSI_EACH_PKT_Pos 10UL +#define BLE_BLELL_LL_CONFIG_RSSI_EACH_PKT_Msk 0x400UL +#define BLE_BLELL_LL_CONFIG_FORCE_TRIG_RCB_UPDATE_Pos 11UL +#define BLE_BLELL_LL_CONFIG_FORCE_TRIG_RCB_UPDATE_Msk 0x800UL +#define BLE_BLELL_LL_CONFIG_CHECK_DUP_CONN_Pos 12UL +#define BLE_BLELL_LL_CONFIG_CHECK_DUP_CONN_Msk 0x1000UL +#define BLE_BLELL_LL_CONFIG_MULTI_ENGINE_LPM_Pos 13UL +#define BLE_BLELL_LL_CONFIG_MULTI_ENGINE_LPM_Msk 0x2000UL +#define BLE_BLELL_LL_CONFIG_ADV_DIR_DEVICE_PRIV_EN_Pos 14UL +#define BLE_BLELL_LL_CONFIG_ADV_DIR_DEVICE_PRIV_EN_Msk 0x4000UL +/* BLE_BLELL.LL_CONTROL */ +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_Pos 0UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_Msk 0x1UL +#define BLE_BLELL_LL_CONTROL_DLE_Pos 1UL +#define BLE_BLELL_LL_CONTROL_DLE_Msk 0x2UL +#define BLE_BLELL_LL_CONTROL_WL_READ_AS_MEM_Pos 2UL +#define BLE_BLELL_LL_CONTROL_WL_READ_AS_MEM_Msk 0x4UL +#define BLE_BLELL_LL_CONTROL_ADVCH_FIFO_PRIV_1_2_FLUSH_CTRL_Pos 3UL +#define BLE_BLELL_LL_CONTROL_ADVCH_FIFO_PRIV_1_2_FLUSH_CTRL_Msk 0x8UL +#define BLE_BLELL_LL_CONTROL_HW_RSLV_LIST_FULL_Pos 4UL +#define BLE_BLELL_LL_CONTROL_HW_RSLV_LIST_FULL_Msk 0x10UL +#define BLE_BLELL_LL_CONTROL_RPT_INIT_ADDR_MATCH_PRIV_MISMATCH_ADV_Pos 5UL +#define BLE_BLELL_LL_CONTROL_RPT_INIT_ADDR_MATCH_PRIV_MISMATCH_ADV_Msk 0x20UL +#define BLE_BLELL_LL_CONTROL_RPT_SCAN_ADDR_MATCH_PRIV_MISMATCH_ADV_Pos 6UL +#define BLE_BLELL_LL_CONTROL_RPT_SCAN_ADDR_MATCH_PRIV_MISMATCH_ADV_Msk 0x40UL +#define BLE_BLELL_LL_CONTROL_RPT_PEER_ADDR_MATCH_PRIV_MISMATCH_SCN_Pos 7UL +#define BLE_BLELL_LL_CONTROL_RPT_PEER_ADDR_MATCH_PRIV_MISMATCH_SCN_Msk 0x80UL +#define BLE_BLELL_LL_CONTROL_RPT_PEER_ADDR_MATCH_PRIV_MISMATCH_INI_Pos 8UL +#define BLE_BLELL_LL_CONTROL_RPT_PEER_ADDR_MATCH_PRIV_MISMATCH_INI_Msk 0x100UL +#define BLE_BLELL_LL_CONTROL_RPT_SELF_ADDR_MATCH_PRIV_MISMATCH_INI_Pos 9UL +#define BLE_BLELL_LL_CONTROL_RPT_SELF_ADDR_MATCH_PRIV_MISMATCH_INI_Msk 0x200UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_ADV_Pos 10UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_ADV_Msk 0x400UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_SCAN_Pos 11UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_SCAN_Msk 0x800UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_INIT_Pos 12UL +#define BLE_BLELL_LL_CONTROL_PRIV_1_2_INIT_Msk 0x1000UL +#define BLE_BLELL_LL_CONTROL_EN_CONN_RX_EN_MOD_Pos 13UL +#define BLE_BLELL_LL_CONTROL_EN_CONN_RX_EN_MOD_Msk 0x2000UL +#define BLE_BLELL_LL_CONTROL_SLV_CONN_PEER_RPA_NOT_RSLVD_Pos 14UL +#define BLE_BLELL_LL_CONTROL_SLV_CONN_PEER_RPA_NOT_RSLVD_Msk 0x4000UL +#define BLE_BLELL_LL_CONTROL_ADVCH_FIFO_FLUSH_Pos 15UL +#define BLE_BLELL_LL_CONTROL_ADVCH_FIFO_FLUSH_Msk 0x8000UL +/* BLE_BLELL.DEV_PA_ADDR_L */ +#define BLE_BLELL_DEV_PA_ADDR_L_DEV_PA_ADDR_L_Pos 0UL +#define BLE_BLELL_DEV_PA_ADDR_L_DEV_PA_ADDR_L_Msk 0xFFFFUL +/* BLE_BLELL.DEV_PA_ADDR_M */ +#define BLE_BLELL_DEV_PA_ADDR_M_DEV_PA_ADDR_M_Pos 0UL +#define BLE_BLELL_DEV_PA_ADDR_M_DEV_PA_ADDR_M_Msk 0xFFFFUL +/* BLE_BLELL.DEV_PA_ADDR_H */ +#define BLE_BLELL_DEV_PA_ADDR_H_DEV_PA_ADDR_H_Pos 0UL +#define BLE_BLELL_DEV_PA_ADDR_H_DEV_PA_ADDR_H_Msk 0xFFFFUL +/* BLE_BLELL.RSLV_LIST_ENABLE */ +#define BLE_BLELL_RSLV_LIST_ENABLE_VALID_ENTRY_Pos 0UL +#define BLE_BLELL_RSLV_LIST_ENABLE_VALID_ENTRY_Msk 0x1UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_IRK_SET_Pos 1UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_IRK_SET_Msk 0x2UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_IRK_SET_RX_Pos 2UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_IRK_SET_RX_Msk 0x4UL +#define BLE_BLELL_RSLV_LIST_ENABLE_WHITELISTED_PEER_Pos 3UL +#define BLE_BLELL_RSLV_LIST_ENABLE_WHITELISTED_PEER_Msk 0x8UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_TYPE_Pos 4UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_TYPE_Msk 0x10UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_RPA_VAL_Pos 5UL +#define BLE_BLELL_RSLV_LIST_ENABLE_PEER_ADDR_RPA_VAL_Msk 0x20UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_RXD_RPA_VAL_Pos 6UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_RXD_RPA_VAL_Msk 0x40UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_TX_RPA_VAL_Pos 7UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_TX_RPA_VAL_Msk 0x80UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_INIT_RPA_SEL_Pos 8UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_INIT_RPA_SEL_Msk 0x100UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_TYPE_TX_Pos 9UL +#define BLE_BLELL_RSLV_LIST_ENABLE_SELF_ADDR_TYPE_TX_Msk 0x200UL +#define BLE_BLELL_RSLV_LIST_ENABLE_ENTRY_CONNECTED_Pos 10UL +#define BLE_BLELL_RSLV_LIST_ENABLE_ENTRY_CONNECTED_Msk 0x400UL +/* BLE_BLELL.WL_CONNECTION_STATUS */ +#define BLE_BLELL_WL_CONNECTION_STATUS_WL_ENTRY_CONNECTED_Pos 0UL +#define BLE_BLELL_WL_CONNECTION_STATUS_WL_ENTRY_CONNECTED_Msk 0xFFFFUL +/* BLE_BLELL.CONN_RXMEM_BASE_ADDR_DLE */ +#define BLE_BLELL_CONN_RXMEM_BASE_ADDR_DLE_CONN_RX_MEM_BASE_ADDR_DLE_Pos 0UL +#define BLE_BLELL_CONN_RXMEM_BASE_ADDR_DLE_CONN_RX_MEM_BASE_ADDR_DLE_Msk 0xFFFFFFFFUL +/* BLE_BLELL.CONN_TXMEM_BASE_ADDR_DLE */ +#define BLE_BLELL_CONN_TXMEM_BASE_ADDR_DLE_CONN_TX_MEM_BASE_ADDR_DLE_Pos 0UL +#define BLE_BLELL_CONN_TXMEM_BASE_ADDR_DLE_CONN_TX_MEM_BASE_ADDR_DLE_Msk 0xFFFFFFFFUL +/* BLE_BLELL.CONN_1_PARAM_MEM_BASE_ADDR */ +#define BLE_BLELL_CONN_1_PARAM_MEM_BASE_ADDR_CONN_1_PARAM_Pos 0UL +#define BLE_BLELL_CONN_1_PARAM_MEM_BASE_ADDR_CONN_1_PARAM_Msk 0xFFFFUL +/* BLE_BLELL.CONN_2_PARAM_MEM_BASE_ADDR */ +#define BLE_BLELL_CONN_2_PARAM_MEM_BASE_ADDR_CONN_2_PARAM_Pos 0UL +#define BLE_BLELL_CONN_2_PARAM_MEM_BASE_ADDR_CONN_2_PARAM_Msk 0xFFFFUL +/* BLE_BLELL.CONN_3_PARAM_MEM_BASE_ADDR */ +#define BLE_BLELL_CONN_3_PARAM_MEM_BASE_ADDR_CONN_3_PARAM_Pos 0UL +#define BLE_BLELL_CONN_3_PARAM_MEM_BASE_ADDR_CONN_3_PARAM_Msk 0xFFFFUL +/* BLE_BLELL.CONN_4_PARAM_MEM_BASE_ADDR */ +#define BLE_BLELL_CONN_4_PARAM_MEM_BASE_ADDR_CONN_4_PARAM_Pos 0UL +#define BLE_BLELL_CONN_4_PARAM_MEM_BASE_ADDR_CONN_4_PARAM_Msk 0xFFFFUL +/* BLE_BLELL.NI_TIMER */ +#define BLE_BLELL_NI_TIMER_NI_TIMER_Pos 0UL +#define BLE_BLELL_NI_TIMER_NI_TIMER_Msk 0xFFFFUL +/* BLE_BLELL.US_OFFSET */ +#define BLE_BLELL_US_OFFSET_US_OFFSET_SLOT_BOUNDARY_Pos 0UL +#define BLE_BLELL_US_OFFSET_US_OFFSET_SLOT_BOUNDARY_Msk 0x3FFUL +/* BLE_BLELL.NEXT_CONN */ +#define BLE_BLELL_NEXT_CONN_NEXT_CONN_INDEX_Pos 0UL +#define BLE_BLELL_NEXT_CONN_NEXT_CONN_INDEX_Msk 0x1FUL +#define BLE_BLELL_NEXT_CONN_NEXT_CONN_TYPE_Pos 5UL +#define BLE_BLELL_NEXT_CONN_NEXT_CONN_TYPE_Msk 0x20UL +#define BLE_BLELL_NEXT_CONN_NI_VALID_Pos 6UL +#define BLE_BLELL_NEXT_CONN_NI_VALID_Msk 0x40UL +/* BLE_BLELL.NI_ABORT */ +#define BLE_BLELL_NI_ABORT_NI_ABORT_Pos 0UL +#define BLE_BLELL_NI_ABORT_NI_ABORT_Msk 0x1UL +#define BLE_BLELL_NI_ABORT_ABORT_ACK_Pos 1UL +#define BLE_BLELL_NI_ABORT_ABORT_ACK_Msk 0x2UL +/* BLE_BLELL.CONN_NI_STATUS */ +#define BLE_BLELL_CONN_NI_STATUS_CONN_NI_Pos 0UL +#define BLE_BLELL_CONN_NI_STATUS_CONN_NI_Msk 0xFFFFUL +/* BLE_BLELL.NEXT_SUP_TO_STATUS */ +#define BLE_BLELL_NEXT_SUP_TO_STATUS_NEXT_SUP_TO_Pos 0UL +#define BLE_BLELL_NEXT_SUP_TO_STATUS_NEXT_SUP_TO_Msk 0xFFFFUL +/* BLE_BLELL.MMMS_CONN_STATUS */ +#define BLE_BLELL_MMMS_CONN_STATUS_CURR_CONN_INDEX_Pos 0UL +#define BLE_BLELL_MMMS_CONN_STATUS_CURR_CONN_INDEX_Msk 0x1FUL +#define BLE_BLELL_MMMS_CONN_STATUS_CURR_CONN_TYPE_Pos 5UL +#define BLE_BLELL_MMMS_CONN_STATUS_CURR_CONN_TYPE_Msk 0x20UL +#define BLE_BLELL_MMMS_CONN_STATUS_SN_CURR_Pos 6UL +#define BLE_BLELL_MMMS_CONN_STATUS_SN_CURR_Msk 0x40UL +#define BLE_BLELL_MMMS_CONN_STATUS_NESN_CURR_Pos 7UL +#define BLE_BLELL_MMMS_CONN_STATUS_NESN_CURR_Msk 0x80UL +#define BLE_BLELL_MMMS_CONN_STATUS_LAST_UNMAPPED_CHANNEL_Pos 8UL +#define BLE_BLELL_MMMS_CONN_STATUS_LAST_UNMAPPED_CHANNEL_Msk 0x3F00UL +#define BLE_BLELL_MMMS_CONN_STATUS_PKT_MISS_Pos 14UL +#define BLE_BLELL_MMMS_CONN_STATUS_PKT_MISS_Msk 0x4000UL +#define BLE_BLELL_MMMS_CONN_STATUS_ANCHOR_PT_STATE_Pos 15UL +#define BLE_BLELL_MMMS_CONN_STATUS_ANCHOR_PT_STATE_Msk 0x8000UL +/* BLE_BLELL.BT_SLOT_CAPT_STATUS */ +#define BLE_BLELL_BT_SLOT_CAPT_STATUS_BT_SLOT_Pos 0UL +#define BLE_BLELL_BT_SLOT_CAPT_STATUS_BT_SLOT_Msk 0xFFFFUL +/* BLE_BLELL.US_CAPT_STATUS */ +#define BLE_BLELL_US_CAPT_STATUS_US_CAPT_Pos 0UL +#define BLE_BLELL_US_CAPT_STATUS_US_CAPT_Msk 0x3FFUL +/* BLE_BLELL.US_OFFSET_STATUS */ +#define BLE_BLELL_US_OFFSET_STATUS_US_OFFSET_Pos 0UL +#define BLE_BLELL_US_OFFSET_STATUS_US_OFFSET_Msk 0xFFFFUL +/* BLE_BLELL.ACCU_WINDOW_WIDEN_STATUS */ +#define BLE_BLELL_ACCU_WINDOW_WIDEN_STATUS_ACCU_WINDOW_WIDEN_Pos 0UL +#define BLE_BLELL_ACCU_WINDOW_WIDEN_STATUS_ACCU_WINDOW_WIDEN_Msk 0xFFFFUL +/* BLE_BLELL.EARLY_INTR_STATUS */ +#define BLE_BLELL_EARLY_INTR_STATUS_CONN_INDEX_FOR_EARLY_INTR_Pos 0UL +#define BLE_BLELL_EARLY_INTR_STATUS_CONN_INDEX_FOR_EARLY_INTR_Msk 0x1FUL +#define BLE_BLELL_EARLY_INTR_STATUS_CONN_TYPE_FOR_EARLY_INTR_Pos 5UL +#define BLE_BLELL_EARLY_INTR_STATUS_CONN_TYPE_FOR_EARLY_INTR_Msk 0x20UL +#define BLE_BLELL_EARLY_INTR_STATUS_US_FOR_EARLY_INTR_Pos 6UL +#define BLE_BLELL_EARLY_INTR_STATUS_US_FOR_EARLY_INTR_Msk 0xFFC0UL +/* BLE_BLELL.MMMS_CONFIG */ +#define BLE_BLELL_MMMS_CONFIG_MMMS_ENABLE_Pos 0UL +#define BLE_BLELL_MMMS_CONFIG_MMMS_ENABLE_Msk 0x1UL +#define BLE_BLELL_MMMS_CONFIG_DISABLE_CONN_REQ_PARAM_IN_MEM_Pos 1UL +#define BLE_BLELL_MMMS_CONFIG_DISABLE_CONN_REQ_PARAM_IN_MEM_Msk 0x2UL +#define BLE_BLELL_MMMS_CONFIG_DISABLE_CONN_PARAM_MEM_WR_Pos 2UL +#define BLE_BLELL_MMMS_CONFIG_DISABLE_CONN_PARAM_MEM_WR_Msk 0x4UL +#define BLE_BLELL_MMMS_CONFIG_CONN_PARAM_FROM_REG_Pos 3UL +#define BLE_BLELL_MMMS_CONFIG_CONN_PARAM_FROM_REG_Msk 0x8UL +#define BLE_BLELL_MMMS_CONFIG_ADV_CONN_INDEX_Pos 4UL +#define BLE_BLELL_MMMS_CONFIG_ADV_CONN_INDEX_Msk 0x1F0UL +#define BLE_BLELL_MMMS_CONFIG_CE_LEN_IMMEDIATE_EXPIRE_Pos 9UL +#define BLE_BLELL_MMMS_CONFIG_CE_LEN_IMMEDIATE_EXPIRE_Msk 0x200UL +#define BLE_BLELL_MMMS_CONFIG_RESET_RX_FIFO_PTR_Pos 10UL +#define BLE_BLELL_MMMS_CONFIG_RESET_RX_FIFO_PTR_Msk 0x400UL +/* BLE_BLELL.US_COUNTER */ +#define BLE_BLELL_US_COUNTER_US_COUNTER_Pos 0UL +#define BLE_BLELL_US_COUNTER_US_COUNTER_Msk 0x3FFUL +/* BLE_BLELL.US_CAPT_PREV */ +#define BLE_BLELL_US_CAPT_PREV_US_CAPT_LOAD_Pos 0UL +#define BLE_BLELL_US_CAPT_PREV_US_CAPT_LOAD_Msk 0x3FFUL +/* BLE_BLELL.EARLY_INTR_NI */ +#define BLE_BLELL_EARLY_INTR_NI_EARLY_INTR_NI_Pos 0UL +#define BLE_BLELL_EARLY_INTR_NI_EARLY_INTR_NI_Msk 0xFFFFUL +/* BLE_BLELL.MMMS_MASTER_CREATE_BT_CAPT */ +#define BLE_BLELL_MMMS_MASTER_CREATE_BT_CAPT_BT_SLOT_Pos 0UL +#define BLE_BLELL_MMMS_MASTER_CREATE_BT_CAPT_BT_SLOT_Msk 0xFFFFUL +/* BLE_BLELL.MMMS_SLAVE_CREATE_BT_CAPT */ +#define BLE_BLELL_MMMS_SLAVE_CREATE_BT_CAPT_US_CAPT_Pos 0UL +#define BLE_BLELL_MMMS_SLAVE_CREATE_BT_CAPT_US_CAPT_Msk 0x3FFUL +/* BLE_BLELL.MMMS_SLAVE_CREATE_US_CAPT */ +#define BLE_BLELL_MMMS_SLAVE_CREATE_US_CAPT_US_OFFSET_SLAVE_CREATED_Pos 0UL +#define BLE_BLELL_MMMS_SLAVE_CREATE_US_CAPT_US_OFFSET_SLAVE_CREATED_Msk 0xFFFFUL +/* BLE_BLELL.MMMS_DATA_MEM_DESCRIPTOR */ +#define BLE_BLELL_MMMS_DATA_MEM_DESCRIPTOR_LLID_C1_Pos 0UL +#define BLE_BLELL_MMMS_DATA_MEM_DESCRIPTOR_LLID_C1_Msk 0x3UL +#define BLE_BLELL_MMMS_DATA_MEM_DESCRIPTOR_DATA_LENGTH_C1_Pos 2UL +#define BLE_BLELL_MMMS_DATA_MEM_DESCRIPTOR_DATA_LENGTH_C1_Msk 0x3FCUL +/* BLE_BLELL.CONN_1_DATA_LIST_SENT */ +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_SET_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Pos 8UL +#define BLE_BLELL_CONN_1_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Msk 0xF00UL +/* BLE_BLELL.CONN_1_DATA_LIST_ACK */ +#define BLE_BLELL_CONN_1_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_1_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_1_DATA_LIST_ACK_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_1_DATA_LIST_ACK_SET_CLEAR_C1_Msk 0x80UL +/* BLE_BLELL.CONN_1_CE_DATA_LIST_CFG */ +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Pos 0UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Msk 0xFUL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Pos 4UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Msk 0x10UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Pos 5UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Msk 0x20UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_MD_C1_Pos 6UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_MD_C1_Msk 0x40UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Pos 8UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Msk 0x100UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_KILL_CONN_Pos 9UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_KILL_CONN_Msk 0x200UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Pos 10UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Msk 0x400UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Pos 11UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Msk 0x800UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Pos 12UL +#define BLE_BLELL_CONN_1_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Msk 0xF000UL +/* BLE_BLELL.CONN_2_DATA_LIST_SENT */ +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_SET_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Pos 8UL +#define BLE_BLELL_CONN_2_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Msk 0xF00UL +/* BLE_BLELL.CONN_2_DATA_LIST_ACK */ +#define BLE_BLELL_CONN_2_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_2_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_2_DATA_LIST_ACK_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_2_DATA_LIST_ACK_SET_CLEAR_C1_Msk 0x80UL +/* BLE_BLELL.CONN_2_CE_DATA_LIST_CFG */ +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Pos 0UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Msk 0xFUL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Pos 4UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Msk 0x10UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Pos 5UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Msk 0x20UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_MD_C1_Pos 6UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_MD_C1_Msk 0x40UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Pos 8UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Msk 0x100UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_KILL_CONN_Pos 9UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_KILL_CONN_Msk 0x200UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Pos 10UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Msk 0x400UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Pos 11UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Msk 0x800UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Pos 12UL +#define BLE_BLELL_CONN_2_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Msk 0xF000UL +/* BLE_BLELL.CONN_3_DATA_LIST_SENT */ +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_SET_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Pos 8UL +#define BLE_BLELL_CONN_3_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Msk 0xF00UL +/* BLE_BLELL.CONN_3_DATA_LIST_ACK */ +#define BLE_BLELL_CONN_3_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_3_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_3_DATA_LIST_ACK_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_3_DATA_LIST_ACK_SET_CLEAR_C1_Msk 0x80UL +/* BLE_BLELL.CONN_3_CE_DATA_LIST_CFG */ +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Pos 0UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Msk 0xFUL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Pos 4UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Msk 0x10UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Pos 5UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Msk 0x20UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_MD_C1_Pos 6UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_MD_C1_Msk 0x40UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Pos 8UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Msk 0x100UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_KILL_CONN_Pos 9UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_KILL_CONN_Msk 0x200UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Pos 10UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Msk 0x400UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Pos 11UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Msk 0x800UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Pos 12UL +#define BLE_BLELL_CONN_3_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Msk 0xF000UL +/* BLE_BLELL.CONN_4_DATA_LIST_SENT */ +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_LIST_INDEX__TX_SENT_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_SET_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Pos 8UL +#define BLE_BLELL_CONN_4_DATA_LIST_SENT_BUFFER_NUM_TX_SENT_3_0_C1_Msk 0xF00UL +/* BLE_BLELL.CONN_4_DATA_LIST_ACK */ +#define BLE_BLELL_CONN_4_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Pos 0UL +#define BLE_BLELL_CONN_4_DATA_LIST_ACK_LIST_INDEX__TX_ACK_3_0_C1_Msk 0xFUL +#define BLE_BLELL_CONN_4_DATA_LIST_ACK_SET_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_4_DATA_LIST_ACK_SET_CLEAR_C1_Msk 0x80UL +/* BLE_BLELL.CONN_4_CE_DATA_LIST_CFG */ +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Pos 0UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_DATA_LIST_INDEX_LAST_ACK_INDEX_C1_Msk 0xFUL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Pos 4UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_DATA_LIST_HEAD_UP_C1_Msk 0x10UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Pos 5UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_SLV_MD_CONFIG_C1_Msk 0x20UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_MD_C1_Pos 6UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_MD_C1_Msk 0x40UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Pos 7UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_MD_BIT_CLEAR_C1_Msk 0x80UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Pos 8UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_PAUSE_DATA_C1_Msk 0x100UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_KILL_CONN_Pos 9UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_KILL_CONN_Msk 0x200UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Pos 10UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_KILL_CONN_AFTER_TX_Msk 0x400UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Pos 11UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_EMPTYPDU_SENT_Msk 0x800UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Pos 12UL +#define BLE_BLELL_CONN_4_CE_DATA_LIST_CFG_CURRENT_PDU_INDEX_C1_Msk 0xF000UL +/* BLE_BLELL.MMMS_ADVCH_NI_ENABLE */ +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_ADV_NI_ENABLE_Pos 0UL +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_ADV_NI_ENABLE_Msk 0x1UL +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_SCAN_NI_ENABLE_Pos 1UL +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_SCAN_NI_ENABLE_Msk 0x2UL +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_INIT_NI_ENABLE_Pos 2UL +#define BLE_BLELL_MMMS_ADVCH_NI_ENABLE_INIT_NI_ENABLE_Msk 0x4UL +/* BLE_BLELL.MMMS_ADVCH_NI_VALID */ +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_ADV_NI_VALID_Pos 0UL +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_ADV_NI_VALID_Msk 0x1UL +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_SCAN_NI_VALID_Pos 1UL +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_SCAN_NI_VALID_Msk 0x2UL +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_INIT_NI_VALID_Pos 2UL +#define BLE_BLELL_MMMS_ADVCH_NI_VALID_INIT_NI_VALID_Msk 0x4UL +/* BLE_BLELL.MMMS_ADVCH_NI_ABORT */ +#define BLE_BLELL_MMMS_ADVCH_NI_ABORT_ADVCH_NI_ABORT_Pos 0UL +#define BLE_BLELL_MMMS_ADVCH_NI_ABORT_ADVCH_NI_ABORT_Msk 0x1UL +#define BLE_BLELL_MMMS_ADVCH_NI_ABORT_ADVCH_ABORT_STATUS_Pos 1UL +#define BLE_BLELL_MMMS_ADVCH_NI_ABORT_ADVCH_ABORT_STATUS_Msk 0x2UL +/* BLE_BLELL.CONN_PARAM_NEXT_SUP_TO */ +#define BLE_BLELL_CONN_PARAM_NEXT_SUP_TO_NEXT_SUP_TO_LOAD_Pos 0UL +#define BLE_BLELL_CONN_PARAM_NEXT_SUP_TO_NEXT_SUP_TO_LOAD_Msk 0xFFFFUL +/* BLE_BLELL.CONN_PARAM_ACC_WIN_WIDEN */ +#define BLE_BLELL_CONN_PARAM_ACC_WIN_WIDEN_ACC_WINDOW_WIDEN_Pos 0UL +#define BLE_BLELL_CONN_PARAM_ACC_WIN_WIDEN_ACC_WINDOW_WIDEN_Msk 0x3FFUL +/* BLE_BLELL.HW_LOAD_OFFSET */ +#define BLE_BLELL_HW_LOAD_OFFSET_LOAD_OFFSET_Pos 0UL +#define BLE_BLELL_HW_LOAD_OFFSET_LOAD_OFFSET_Msk 0x1FUL +/* BLE_BLELL.ADV_RAND */ +#define BLE_BLELL_ADV_RAND_ADV_RAND_Pos 0UL +#define BLE_BLELL_ADV_RAND_ADV_RAND_Msk 0xFUL +/* BLE_BLELL.MMMS_RX_PKT_CNTR */ +#define BLE_BLELL_MMMS_RX_PKT_CNTR_MMMS_RX_PKT_CNT_Pos 0UL +#define BLE_BLELL_MMMS_RX_PKT_CNTR_MMMS_RX_PKT_CNT_Msk 0x3FUL +/* BLE_BLELL.CONN_RX_PKT_CNTR */ +#define BLE_BLELL_CONN_RX_PKT_CNTR_RX_PKT_CNT_Pos 0UL +#define BLE_BLELL_CONN_RX_PKT_CNTR_RX_PKT_CNT_Msk 0x3FUL +/* BLE_BLELL.WHITELIST_BASE_ADDR */ +#define BLE_BLELL_WHITELIST_BASE_ADDR_WL_BASE_ADDR_Pos 0UL +#define BLE_BLELL_WHITELIST_BASE_ADDR_WL_BASE_ADDR_Msk 0xFFFFUL +/* BLE_BLELL.RSLV_LIST_PEER_IDNTT_BASE_ADDR */ +#define BLE_BLELL_RSLV_LIST_PEER_IDNTT_BASE_ADDR_RSLV_LIST_PEER_IDNTT_BASE_ADDR_Pos 0UL +#define BLE_BLELL_RSLV_LIST_PEER_IDNTT_BASE_ADDR_RSLV_LIST_PEER_IDNTT_BASE_ADDR_Msk 0xFFFFUL +/* BLE_BLELL.RSLV_LIST_PEER_RPA_BASE_ADDR */ +#define BLE_BLELL_RSLV_LIST_PEER_RPA_BASE_ADDR_RSLV_LIST_PEER_RPA_BASE_ADDR_Pos 0UL +#define BLE_BLELL_RSLV_LIST_PEER_RPA_BASE_ADDR_RSLV_LIST_PEER_RPA_BASE_ADDR_Msk 0xFFFFUL +/* BLE_BLELL.RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR */ +#define BLE_BLELL_RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR_RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR_Pos 0UL +#define BLE_BLELL_RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR_RSLV_LIST_RCVD_INIT_RPA_BASE_ADDR_Msk 0xFFFFUL +/* BLE_BLELL.RSLV_LIST_TX_INIT_RPA_BASE_ADDR */ +#define BLE_BLELL_RSLV_LIST_TX_INIT_RPA_BASE_ADDR_RSLV_LIST_TX_INIT_RPA_BASE_ADDR_Pos 0UL +#define BLE_BLELL_RSLV_LIST_TX_INIT_RPA_BASE_ADDR_RSLV_LIST_TX_INIT_RPA_BASE_ADDR_Msk 0xFFFFUL + + +/* BLE_BLESS.DDFT_CONFIG */ +#define BLE_BLESS_DDFT_CONFIG_DDFT_ENABLE_Pos 0UL +#define BLE_BLESS_DDFT_CONFIG_DDFT_ENABLE_Msk 0x1UL +#define BLE_BLESS_DDFT_CONFIG_BLERD_DDFT_EN_Pos 1UL +#define BLE_BLESS_DDFT_CONFIG_BLERD_DDFT_EN_Msk 0x2UL +#define BLE_BLESS_DDFT_CONFIG_DDFT_MUX_CFG1_Pos 8UL +#define BLE_BLESS_DDFT_CONFIG_DDFT_MUX_CFG1_Msk 0x1F00UL +#define BLE_BLESS_DDFT_CONFIG_DDFT_MUX_CFG2_Pos 16UL +#define BLE_BLESS_DDFT_CONFIG_DDFT_MUX_CFG2_Msk 0x1F0000UL +/* BLE_BLESS.XTAL_CLK_DIV_CONFIG */ +#define BLE_BLESS_XTAL_CLK_DIV_CONFIG_SYSCLK_DIV_Pos 0UL +#define BLE_BLESS_XTAL_CLK_DIV_CONFIG_SYSCLK_DIV_Msk 0x3UL +#define BLE_BLESS_XTAL_CLK_DIV_CONFIG_LLCLK_DIV_Pos 2UL +#define BLE_BLESS_XTAL_CLK_DIV_CONFIG_LLCLK_DIV_Msk 0xCUL +/* BLE_BLESS.INTR_STAT */ +#define BLE_BLESS_INTR_STAT_DSM_ENTERED_INTR_Pos 0UL +#define BLE_BLESS_INTR_STAT_DSM_ENTERED_INTR_Msk 0x1UL +#define BLE_BLESS_INTR_STAT_DSM_EXITED_INTR_Pos 1UL +#define BLE_BLESS_INTR_STAT_DSM_EXITED_INTR_Msk 0x2UL +#define BLE_BLESS_INTR_STAT_RCBLL_DONE_INTR_Pos 2UL +#define BLE_BLESS_INTR_STAT_RCBLL_DONE_INTR_Msk 0x4UL +#define BLE_BLESS_INTR_STAT_BLERD_ACTIVE_INTR_Pos 3UL +#define BLE_BLESS_INTR_STAT_BLERD_ACTIVE_INTR_Msk 0x8UL +#define BLE_BLESS_INTR_STAT_RCB_INTR_Pos 4UL +#define BLE_BLESS_INTR_STAT_RCB_INTR_Msk 0x10UL +#define BLE_BLESS_INTR_STAT_LL_INTR_Pos 5UL +#define BLE_BLESS_INTR_STAT_LL_INTR_Msk 0x20UL +#define BLE_BLESS_INTR_STAT_GPIO_INTR_Pos 6UL +#define BLE_BLESS_INTR_STAT_GPIO_INTR_Msk 0x40UL +#define BLE_BLESS_INTR_STAT_EFUSE_INTR_Pos 7UL +#define BLE_BLESS_INTR_STAT_EFUSE_INTR_Msk 0x80UL +#define BLE_BLESS_INTR_STAT_XTAL_ON_INTR_Pos 8UL +#define BLE_BLESS_INTR_STAT_XTAL_ON_INTR_Msk 0x100UL +#define BLE_BLESS_INTR_STAT_ENC_INTR_Pos 9UL +#define BLE_BLESS_INTR_STAT_ENC_INTR_Msk 0x200UL +#define BLE_BLESS_INTR_STAT_HVLDO_LV_DETECT_POS_Pos 10UL +#define BLE_BLESS_INTR_STAT_HVLDO_LV_DETECT_POS_Msk 0x400UL +#define BLE_BLESS_INTR_STAT_HVLDO_LV_DETECT_NEG_Pos 11UL +#define BLE_BLESS_INTR_STAT_HVLDO_LV_DETECT_NEG_Msk 0x800UL +/* BLE_BLESS.INTR_MASK */ +#define BLE_BLESS_INTR_MASK_DSM_EXIT_Pos 0UL +#define BLE_BLESS_INTR_MASK_DSM_EXIT_Msk 0x1UL +#define BLE_BLESS_INTR_MASK_DSM_ENTERED_INTR_MASK_Pos 1UL +#define BLE_BLESS_INTR_MASK_DSM_ENTERED_INTR_MASK_Msk 0x2UL +#define BLE_BLESS_INTR_MASK_DSM_EXITED_INTR_MASK_Pos 2UL +#define BLE_BLESS_INTR_MASK_DSM_EXITED_INTR_MASK_Msk 0x4UL +#define BLE_BLESS_INTR_MASK_XTAL_ON_INTR_MASK_Pos 3UL +#define BLE_BLESS_INTR_MASK_XTAL_ON_INTR_MASK_Msk 0x8UL +#define BLE_BLESS_INTR_MASK_RCBLL_INTR_MASK_Pos 4UL +#define BLE_BLESS_INTR_MASK_RCBLL_INTR_MASK_Msk 0x10UL +#define BLE_BLESS_INTR_MASK_BLERD_ACTIVE_INTR_MASK_Pos 5UL +#define BLE_BLESS_INTR_MASK_BLERD_ACTIVE_INTR_MASK_Msk 0x20UL +#define BLE_BLESS_INTR_MASK_RCB_INTR_MASK_Pos 6UL +#define BLE_BLESS_INTR_MASK_RCB_INTR_MASK_Msk 0x40UL +#define BLE_BLESS_INTR_MASK_LL_INTR_MASK_Pos 7UL +#define BLE_BLESS_INTR_MASK_LL_INTR_MASK_Msk 0x80UL +#define BLE_BLESS_INTR_MASK_GPIO_INTR_MASK_Pos 8UL +#define BLE_BLESS_INTR_MASK_GPIO_INTR_MASK_Msk 0x100UL +#define BLE_BLESS_INTR_MASK_EFUSE_INTR_MASK_Pos 9UL +#define BLE_BLESS_INTR_MASK_EFUSE_INTR_MASK_Msk 0x200UL +#define BLE_BLESS_INTR_MASK_ENC_INTR_MASK_Pos 10UL +#define BLE_BLESS_INTR_MASK_ENC_INTR_MASK_Msk 0x400UL +#define BLE_BLESS_INTR_MASK_HVLDO_LV_DETECT_POS_MASK_Pos 11UL +#define BLE_BLESS_INTR_MASK_HVLDO_LV_DETECT_POS_MASK_Msk 0x800UL +#define BLE_BLESS_INTR_MASK_HVLDO_LV_DETECT_NEG_MASK_Pos 12UL +#define BLE_BLESS_INTR_MASK_HVLDO_LV_DETECT_NEG_MASK_Msk 0x1000UL +/* BLE_BLESS.LL_CLK_EN */ +#define BLE_BLESS_LL_CLK_EN_CLK_EN_Pos 0UL +#define BLE_BLESS_LL_CLK_EN_CLK_EN_Msk 0x1UL +#define BLE_BLESS_LL_CLK_EN_CY_CORREL_EN_Pos 1UL +#define BLE_BLESS_LL_CLK_EN_CY_CORREL_EN_Msk 0x2UL +#define BLE_BLESS_LL_CLK_EN_MXD_IF_OPTION_Pos 2UL +#define BLE_BLESS_LL_CLK_EN_MXD_IF_OPTION_Msk 0x4UL +#define BLE_BLESS_LL_CLK_EN_SEL_RCB_CLK_Pos 3UL +#define BLE_BLESS_LL_CLK_EN_SEL_RCB_CLK_Msk 0x8UL +#define BLE_BLESS_LL_CLK_EN_BLESS_RESET_Pos 4UL +#define BLE_BLESS_LL_CLK_EN_BLESS_RESET_Msk 0x10UL +#define BLE_BLESS_LL_CLK_EN_DPSLP_HWRCB_EN_Pos 5UL +#define BLE_BLESS_LL_CLK_EN_DPSLP_HWRCB_EN_Msk 0x20UL +/* BLE_BLESS.LF_CLK_CTRL */ +#define BLE_BLESS_LF_CLK_CTRL_DISABLE_LF_CLK_Pos 0UL +#define BLE_BLESS_LF_CLK_CTRL_DISABLE_LF_CLK_Msk 0x1UL +#define BLE_BLESS_LF_CLK_CTRL_ENABLE_ENC_CLK_Pos 1UL +#define BLE_BLESS_LF_CLK_CTRL_ENABLE_ENC_CLK_Msk 0x2UL +#define BLE_BLESS_LF_CLK_CTRL_M0S8BLESS_REV_ID_Pos 29UL +#define BLE_BLESS_LF_CLK_CTRL_M0S8BLESS_REV_ID_Msk 0xE0000000UL +/* BLE_BLESS.EXT_PA_LNA_CTRL */ +#define BLE_BLESS_EXT_PA_LNA_CTRL_ENABLE_EXT_PA_LNA_Pos 1UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_ENABLE_EXT_PA_LNA_Msk 0x2UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_CHIP_EN_POL_Pos 2UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_CHIP_EN_POL_Msk 0x4UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_PA_CTRL_POL_Pos 3UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_PA_CTRL_POL_Msk 0x8UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_LNA_CTRL_POL_Pos 4UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_LNA_CTRL_POL_Msk 0x10UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_OUT_EN_DRIVE_VAL_Pos 5UL +#define BLE_BLESS_EXT_PA_LNA_CTRL_OUT_EN_DRIVE_VAL_Msk 0x20UL +/* BLE_BLESS.LL_PKT_RSSI_CH_ENERGY */ +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_RSSI_Pos 0UL +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_RSSI_Msk 0xFFFFUL +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_RX_CHANNEL_Pos 16UL +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_RX_CHANNEL_Msk 0x3F0000UL +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_PKT_RSSI_OR_CH_ENERGY_Pos 22UL +#define BLE_BLESS_LL_PKT_RSSI_CH_ENERGY_PKT_RSSI_OR_CH_ENERGY_Msk 0x400000UL +/* BLE_BLESS.BT_CLOCK_CAPT */ +#define BLE_BLESS_BT_CLOCK_CAPT_BT_CLOCK_Pos 0UL +#define BLE_BLESS_BT_CLOCK_CAPT_BT_CLOCK_Msk 0xFFFFUL +/* BLE_BLESS.MT_CFG */ +#define BLE_BLESS_MT_CFG_ENABLE_BLERD_Pos 0UL +#define BLE_BLESS_MT_CFG_ENABLE_BLERD_Msk 0x1UL +#define BLE_BLESS_MT_CFG_DEEPSLEEP_EXIT_CFG_Pos 1UL +#define BLE_BLESS_MT_CFG_DEEPSLEEP_EXIT_CFG_Msk 0x2UL +#define BLE_BLESS_MT_CFG_DEEPSLEEP_EXITED_Pos 2UL +#define BLE_BLESS_MT_CFG_DEEPSLEEP_EXITED_Msk 0x4UL +#define BLE_BLESS_MT_CFG_ACT_LDO_NOT_BUCK_Pos 3UL +#define BLE_BLESS_MT_CFG_ACT_LDO_NOT_BUCK_Msk 0x8UL +#define BLE_BLESS_MT_CFG_OVERRIDE_HVLDO_BYPASS_Pos 4UL +#define BLE_BLESS_MT_CFG_OVERRIDE_HVLDO_BYPASS_Msk 0x10UL +#define BLE_BLESS_MT_CFG_HVLDO_BYPASS_Pos 5UL +#define BLE_BLESS_MT_CFG_HVLDO_BYPASS_Msk 0x20UL +#define BLE_BLESS_MT_CFG_OVERRIDE_ACT_REGULATOR_Pos 6UL +#define BLE_BLESS_MT_CFG_OVERRIDE_ACT_REGULATOR_Msk 0x40UL +#define BLE_BLESS_MT_CFG_ACT_REGULATOR_EN_Pos 7UL +#define BLE_BLESS_MT_CFG_ACT_REGULATOR_EN_Msk 0x80UL +#define BLE_BLESS_MT_CFG_OVERRIDE_DIG_REGULATOR_Pos 8UL +#define BLE_BLESS_MT_CFG_OVERRIDE_DIG_REGULATOR_Msk 0x100UL +#define BLE_BLESS_MT_CFG_DIG_REGULATOR_EN_Pos 9UL +#define BLE_BLESS_MT_CFG_DIG_REGULATOR_EN_Msk 0x200UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RET_SWITCH_Pos 10UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RET_SWITCH_Msk 0x400UL +#define BLE_BLESS_MT_CFG_RET_SWITCH_Pos 11UL +#define BLE_BLESS_MT_CFG_RET_SWITCH_Msk 0x800UL +#define BLE_BLESS_MT_CFG_OVERRIDE_ISOLATE_Pos 12UL +#define BLE_BLESS_MT_CFG_OVERRIDE_ISOLATE_Msk 0x1000UL +#define BLE_BLESS_MT_CFG_ISOLATE_N_Pos 13UL +#define BLE_BLESS_MT_CFG_ISOLATE_N_Msk 0x2000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_LL_CLK_EN_Pos 14UL +#define BLE_BLESS_MT_CFG_OVERRIDE_LL_CLK_EN_Msk 0x4000UL +#define BLE_BLESS_MT_CFG_LL_CLK_EN_Pos 15UL +#define BLE_BLESS_MT_CFG_LL_CLK_EN_Msk 0x8000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_HVLDO_EN_Pos 16UL +#define BLE_BLESS_MT_CFG_OVERRIDE_HVLDO_EN_Msk 0x10000UL +#define BLE_BLESS_MT_CFG_HVLDO_EN_Pos 17UL +#define BLE_BLESS_MT_CFG_HVLDO_EN_Msk 0x20000UL +#define BLE_BLESS_MT_CFG_DPSLP_ECO_ON_Pos 18UL +#define BLE_BLESS_MT_CFG_DPSLP_ECO_ON_Msk 0x40000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RESET_N_Pos 19UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RESET_N_Msk 0x80000UL +#define BLE_BLESS_MT_CFG_RESET_N_Pos 20UL +#define BLE_BLESS_MT_CFG_RESET_N_Msk 0x100000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_XTAL_EN_Pos 21UL +#define BLE_BLESS_MT_CFG_OVERRIDE_XTAL_EN_Msk 0x200000UL +#define BLE_BLESS_MT_CFG_XTAL_EN_Pos 22UL +#define BLE_BLESS_MT_CFG_XTAL_EN_Msk 0x400000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_CLK_EN_Pos 23UL +#define BLE_BLESS_MT_CFG_OVERRIDE_CLK_EN_Msk 0x800000UL +#define BLE_BLESS_MT_CFG_BLERD_CLK_EN_Pos 24UL +#define BLE_BLESS_MT_CFG_BLERD_CLK_EN_Msk 0x1000000UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RET_LDO_OL_Pos 25UL +#define BLE_BLESS_MT_CFG_OVERRIDE_RET_LDO_OL_Msk 0x2000000UL +#define BLE_BLESS_MT_CFG_RET_LDO_OL_Pos 26UL +#define BLE_BLESS_MT_CFG_RET_LDO_OL_Msk 0x4000000UL +#define BLE_BLESS_MT_CFG_HVLDO_POR_HV_Pos 27UL +#define BLE_BLESS_MT_CFG_HVLDO_POR_HV_Msk 0x8000000UL +/* BLE_BLESS.MT_DELAY_CFG */ +#define BLE_BLESS_MT_DELAY_CFG_HVLDO_STARTUP_DELAY_Pos 0UL +#define BLE_BLESS_MT_DELAY_CFG_HVLDO_STARTUP_DELAY_Msk 0xFFUL +#define BLE_BLESS_MT_DELAY_CFG_ISOLATE_DEASSERT_DELAY_Pos 8UL +#define BLE_BLESS_MT_DELAY_CFG_ISOLATE_DEASSERT_DELAY_Msk 0xFF00UL +#define BLE_BLESS_MT_DELAY_CFG_ACT_TO_SWITCH_DELAY_Pos 16UL +#define BLE_BLESS_MT_DELAY_CFG_ACT_TO_SWITCH_DELAY_Msk 0xFF0000UL +#define BLE_BLESS_MT_DELAY_CFG_HVLDO_DISABLE_DELAY_Pos 24UL +#define BLE_BLESS_MT_DELAY_CFG_HVLDO_DISABLE_DELAY_Msk 0xFF000000UL +/* BLE_BLESS.MT_DELAY_CFG2 */ +#define BLE_BLESS_MT_DELAY_CFG2_OSC_STARTUP_DELAY_LF_Pos 0UL +#define BLE_BLESS_MT_DELAY_CFG2_OSC_STARTUP_DELAY_LF_Msk 0xFFUL +#define BLE_BLESS_MT_DELAY_CFG2_DSM_OFFSET_TO_WAKEUP_INSTANT_LF_Pos 8UL +#define BLE_BLESS_MT_DELAY_CFG2_DSM_OFFSET_TO_WAKEUP_INSTANT_LF_Msk 0xFF00UL +#define BLE_BLESS_MT_DELAY_CFG2_ACT_STARTUP_DELAY_Pos 16UL +#define BLE_BLESS_MT_DELAY_CFG2_ACT_STARTUP_DELAY_Msk 0xFF0000UL +#define BLE_BLESS_MT_DELAY_CFG2_DIG_LDO_STARTUP_DELAY_Pos 24UL +#define BLE_BLESS_MT_DELAY_CFG2_DIG_LDO_STARTUP_DELAY_Msk 0xFF000000UL +/* BLE_BLESS.MT_DELAY_CFG3 */ +#define BLE_BLESS_MT_DELAY_CFG3_XTAL_DISABLE_DELAY_Pos 0UL +#define BLE_BLESS_MT_DELAY_CFG3_XTAL_DISABLE_DELAY_Msk 0xFFUL +#define BLE_BLESS_MT_DELAY_CFG3_DIG_LDO_DISABLE_DELAY_Pos 8UL +#define BLE_BLESS_MT_DELAY_CFG3_DIG_LDO_DISABLE_DELAY_Msk 0xFF00UL +#define BLE_BLESS_MT_DELAY_CFG3_VDDR_STABLE_DELAY_Pos 16UL +#define BLE_BLESS_MT_DELAY_CFG3_VDDR_STABLE_DELAY_Msk 0xFF0000UL +/* BLE_BLESS.MT_VIO_CTRL */ +#define BLE_BLESS_MT_VIO_CTRL_SRSS_SWITCH_EN_Pos 0UL +#define BLE_BLESS_MT_VIO_CTRL_SRSS_SWITCH_EN_Msk 0x1UL +#define BLE_BLESS_MT_VIO_CTRL_SRSS_SWITCH_EN_DLY_Pos 1UL +#define BLE_BLESS_MT_VIO_CTRL_SRSS_SWITCH_EN_DLY_Msk 0x2UL +/* BLE_BLESS.MT_STATUS */ +#define BLE_BLESS_MT_STATUS_BLESS_STATE_Pos 0UL +#define BLE_BLESS_MT_STATUS_BLESS_STATE_Msk 0x1UL +#define BLE_BLESS_MT_STATUS_MT_CURR_STATE_Pos 1UL +#define BLE_BLESS_MT_STATUS_MT_CURR_STATE_Msk 0x1EUL +#define BLE_BLESS_MT_STATUS_HVLDO_STARTUP_CURR_STATE_Pos 5UL +#define BLE_BLESS_MT_STATUS_HVLDO_STARTUP_CURR_STATE_Msk 0xE0UL +#define BLE_BLESS_MT_STATUS_LL_CLK_STATE_Pos 8UL +#define BLE_BLESS_MT_STATUS_LL_CLK_STATE_Msk 0x100UL +/* BLE_BLESS.PWR_CTRL_SM_ST */ +#define BLE_BLESS_PWR_CTRL_SM_ST_PWR_CTRL_SM_CURR_STATE_Pos 0UL +#define BLE_BLESS_PWR_CTRL_SM_ST_PWR_CTRL_SM_CURR_STATE_Msk 0xFUL +/* BLE_BLESS.HVLDO_CTRL */ +#define BLE_BLESS_HVLDO_CTRL_ADFT_EN_Pos 0UL +#define BLE_BLESS_HVLDO_CTRL_ADFT_EN_Msk 0x1UL +#define BLE_BLESS_HVLDO_CTRL_ADFT_CTRL_Pos 1UL +#define BLE_BLESS_HVLDO_CTRL_ADFT_CTRL_Msk 0x1EUL +#define BLE_BLESS_HVLDO_CTRL_VREF_EXT_EN_Pos 6UL +#define BLE_BLESS_HVLDO_CTRL_VREF_EXT_EN_Msk 0x40UL +#define BLE_BLESS_HVLDO_CTRL_STATUS_Pos 31UL +#define BLE_BLESS_HVLDO_CTRL_STATUS_Msk 0x80000000UL +/* BLE_BLESS.MISC_EN_CTRL */ +#define BLE_BLESS_MISC_EN_CTRL_BUCK_EN_CTRL_Pos 0UL +#define BLE_BLESS_MISC_EN_CTRL_BUCK_EN_CTRL_Msk 0x1UL +#define BLE_BLESS_MISC_EN_CTRL_ACT_REG_EN_CTRL_Pos 1UL +#define BLE_BLESS_MISC_EN_CTRL_ACT_REG_EN_CTRL_Msk 0x2UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_DRIFT_EN_Pos 2UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_DRIFT_EN_Msk 0x4UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_DRIFT_MULTI_Pos 3UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_DRIFT_MULTI_Msk 0x8UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_ENTRY_CTRL_MODE_Pos 4UL +#define BLE_BLESS_MISC_EN_CTRL_LPM_ENTRY_CTRL_MODE_Msk 0x10UL +/* BLE_BLESS.EFUSE_CONFIG */ +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_MODE_Pos 0UL +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_MODE_Msk 0x1UL +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_READ_Pos 1UL +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_READ_Msk 0x2UL +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_WRITE_Pos 2UL +#define BLE_BLESS_EFUSE_CONFIG_EFUSE_WRITE_Msk 0x4UL +/* BLE_BLESS.EFUSE_TIM_CTRL1 */ +#define BLE_BLESS_EFUSE_TIM_CTRL1_SCLK_HIGH_Pos 0UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_SCLK_HIGH_Msk 0xFFUL +#define BLE_BLESS_EFUSE_TIM_CTRL1_SCLK_LOW_Pos 8UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_SCLK_LOW_Msk 0xFF00UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_CS_SCLK_SETUP_TIME_Pos 16UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_CS_SCLK_SETUP_TIME_Msk 0xF0000UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_CS_SCLK_HOLD_TIME_Pos 20UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_CS_SCLK_HOLD_TIME_Msk 0xF00000UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_RW_CS_SETUP_TIME_Pos 24UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_RW_CS_SETUP_TIME_Msk 0xF000000UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_RW_CS_HOLD_TIME_Pos 28UL +#define BLE_BLESS_EFUSE_TIM_CTRL1_RW_CS_HOLD_TIME_Msk 0xF0000000UL +/* BLE_BLESS.EFUSE_TIM_CTRL2 */ +#define BLE_BLESS_EFUSE_TIM_CTRL2_DATA_SAMPLE_TIME_Pos 0UL +#define BLE_BLESS_EFUSE_TIM_CTRL2_DATA_SAMPLE_TIME_Msk 0xFFUL +#define BLE_BLESS_EFUSE_TIM_CTRL2_DOUT_CS_HOLD_TIME_Pos 8UL +#define BLE_BLESS_EFUSE_TIM_CTRL2_DOUT_CS_HOLD_TIME_Msk 0xF00UL +/* BLE_BLESS.EFUSE_TIM_CTRL3 */ +#define BLE_BLESS_EFUSE_TIM_CTRL3_PGM_SCLK_SETUP_TIME_Pos 0UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_PGM_SCLK_SETUP_TIME_Msk 0xFUL +#define BLE_BLESS_EFUSE_TIM_CTRL3_PGM_SCLK_HOLD_TIME_Pos 4UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_PGM_SCLK_HOLD_TIME_Msk 0xF0UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_AVDD_CS_SETUP_TIME_Pos 8UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_AVDD_CS_SETUP_TIME_Msk 0xFF00UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_AVDD_CS_HOLD_TIME_Pos 16UL +#define BLE_BLESS_EFUSE_TIM_CTRL3_AVDD_CS_HOLD_TIME_Msk 0xFF0000UL +/* BLE_BLESS.EFUSE_RDATA_L */ +#define BLE_BLESS_EFUSE_RDATA_L_DATA_Pos 0UL +#define BLE_BLESS_EFUSE_RDATA_L_DATA_Msk 0xFFFFFFFFUL +/* BLE_BLESS.EFUSE_RDATA_H */ +#define BLE_BLESS_EFUSE_RDATA_H_DATA_Pos 0UL +#define BLE_BLESS_EFUSE_RDATA_H_DATA_Msk 0xFFFFFFFFUL +/* BLE_BLESS.EFUSE_WDATA_L */ +#define BLE_BLESS_EFUSE_WDATA_L_DATA_Pos 0UL +#define BLE_BLESS_EFUSE_WDATA_L_DATA_Msk 0xFFFFFFFFUL +/* BLE_BLESS.EFUSE_WDATA_H */ +#define BLE_BLESS_EFUSE_WDATA_H_DATA_Pos 0UL +#define BLE_BLESS_EFUSE_WDATA_H_DATA_Msk 0xFFFFFFFFUL +/* BLE_BLESS.DIV_BY_625_CFG */ +#define BLE_BLESS_DIV_BY_625_CFG_ENABLE_Pos 1UL +#define BLE_BLESS_DIV_BY_625_CFG_ENABLE_Msk 0x2UL +#define BLE_BLESS_DIV_BY_625_CFG_DIVIDEND_Pos 8UL +#define BLE_BLESS_DIV_BY_625_CFG_DIVIDEND_Msk 0xFFFF00UL +/* BLE_BLESS.DIV_BY_625_STS */ +#define BLE_BLESS_DIV_BY_625_STS_QUOTIENT_Pos 0UL +#define BLE_BLESS_DIV_BY_625_STS_QUOTIENT_Msk 0x3FUL +#define BLE_BLESS_DIV_BY_625_STS_REMAINDER_Pos 8UL +#define BLE_BLESS_DIV_BY_625_STS_REMAINDER_Msk 0x3FF00UL +/* BLE_BLESS.PACKET_COUNTER0 */ +#define BLE_BLESS_PACKET_COUNTER0_PACKET_COUNTER_LOWER_Pos 0UL +#define BLE_BLESS_PACKET_COUNTER0_PACKET_COUNTER_LOWER_Msk 0xFFFFFFFFUL +/* BLE_BLESS.PACKET_COUNTER2 */ +#define BLE_BLESS_PACKET_COUNTER2_PACKET_COUNTER_UPPER_Pos 0UL +#define BLE_BLESS_PACKET_COUNTER2_PACKET_COUNTER_UPPER_Msk 0xFFUL +/* BLE_BLESS.IV_MASTER0 */ +#define BLE_BLESS_IV_MASTER0_IV_MASTER_Pos 0UL +#define BLE_BLESS_IV_MASTER0_IV_MASTER_Msk 0xFFFFFFFFUL +/* BLE_BLESS.IV_SLAVE0 */ +#define BLE_BLESS_IV_SLAVE0_IV_SLAVE_Pos 0UL +#define BLE_BLESS_IV_SLAVE0_IV_SLAVE_Msk 0xFFFFFFFFUL +/* BLE_BLESS.ENC_KEY */ +#define BLE_BLESS_ENC_KEY_ENC_KEY_Pos 0UL +#define BLE_BLESS_ENC_KEY_ENC_KEY_Msk 0xFFFFFFFFUL +/* BLE_BLESS.MIC_IN0 */ +#define BLE_BLESS_MIC_IN0_MIC_IN_Pos 0UL +#define BLE_BLESS_MIC_IN0_MIC_IN_Msk 0xFFFFFFFFUL +/* BLE_BLESS.MIC_OUT0 */ +#define BLE_BLESS_MIC_OUT0_MIC_OUT_Pos 0UL +#define BLE_BLESS_MIC_OUT0_MIC_OUT_Msk 0xFFFFFFFFUL +/* BLE_BLESS.ENC_PARAMS */ +#define BLE_BLESS_ENC_PARAMS_DATA_PDU_HEADER_Pos 0UL +#define BLE_BLESS_ENC_PARAMS_DATA_PDU_HEADER_Msk 0x3UL +#define BLE_BLESS_ENC_PARAMS_PAYLOAD_LENGTH_LSB_Pos 2UL +#define BLE_BLESS_ENC_PARAMS_PAYLOAD_LENGTH_LSB_Msk 0x7CUL +#define BLE_BLESS_ENC_PARAMS_DIRECTION_Pos 7UL +#define BLE_BLESS_ENC_PARAMS_DIRECTION_Msk 0x80UL +#define BLE_BLESS_ENC_PARAMS_PAYLOAD_LENGTH_LSB_EXT_Pos 8UL +#define BLE_BLESS_ENC_PARAMS_PAYLOAD_LENGTH_LSB_EXT_Msk 0x700UL +#define BLE_BLESS_ENC_PARAMS_MEM_LATENCY_HIDE_Pos 11UL +#define BLE_BLESS_ENC_PARAMS_MEM_LATENCY_HIDE_Msk 0x800UL +/* BLE_BLESS.ENC_CONFIG */ +#define BLE_BLESS_ENC_CONFIG_START_PROC_Pos 0UL +#define BLE_BLESS_ENC_CONFIG_START_PROC_Msk 0x1UL +#define BLE_BLESS_ENC_CONFIG_ECB_CCM_Pos 1UL +#define BLE_BLESS_ENC_CONFIG_ECB_CCM_Msk 0x2UL +#define BLE_BLESS_ENC_CONFIG_DEC_ENC_Pos 2UL +#define BLE_BLESS_ENC_CONFIG_DEC_ENC_Msk 0x4UL +#define BLE_BLESS_ENC_CONFIG_PAYLOAD_LENGTH_MSB_Pos 8UL +#define BLE_BLESS_ENC_CONFIG_PAYLOAD_LENGTH_MSB_Msk 0xFF00UL +#define BLE_BLESS_ENC_CONFIG_B0_FLAGS_Pos 16UL +#define BLE_BLESS_ENC_CONFIG_B0_FLAGS_Msk 0xFF0000UL +#define BLE_BLESS_ENC_CONFIG_AES_B0_DATA_OVERRIDE_Pos 24UL +#define BLE_BLESS_ENC_CONFIG_AES_B0_DATA_OVERRIDE_Msk 0x1000000UL +/* BLE_BLESS.ENC_INTR_EN */ +#define BLE_BLESS_ENC_INTR_EN_AUTH_PASS_INTR_EN_Pos 0UL +#define BLE_BLESS_ENC_INTR_EN_AUTH_PASS_INTR_EN_Msk 0x1UL +#define BLE_BLESS_ENC_INTR_EN_ECB_PROC_INTR_EN_Pos 1UL +#define BLE_BLESS_ENC_INTR_EN_ECB_PROC_INTR_EN_Msk 0x2UL +#define BLE_BLESS_ENC_INTR_EN_CCM_PROC_INTR_EN_Pos 2UL +#define BLE_BLESS_ENC_INTR_EN_CCM_PROC_INTR_EN_Msk 0x4UL +/* BLE_BLESS.ENC_INTR */ +#define BLE_BLESS_ENC_INTR_AUTH_PASS_INTR_Pos 0UL +#define BLE_BLESS_ENC_INTR_AUTH_PASS_INTR_Msk 0x1UL +#define BLE_BLESS_ENC_INTR_ECB_PROC_INTR_Pos 1UL +#define BLE_BLESS_ENC_INTR_ECB_PROC_INTR_Msk 0x2UL +#define BLE_BLESS_ENC_INTR_CCM_PROC_INTR_Pos 2UL +#define BLE_BLESS_ENC_INTR_CCM_PROC_INTR_Msk 0x4UL +#define BLE_BLESS_ENC_INTR_IN_DATA_CLEAR_Pos 3UL +#define BLE_BLESS_ENC_INTR_IN_DATA_CLEAR_Msk 0x8UL +/* BLE_BLESS.B1_DATA_REG */ +#define BLE_BLESS_B1_DATA_REG_B1_DATA_Pos 0UL +#define BLE_BLESS_B1_DATA_REG_B1_DATA_Msk 0xFFFFFFFFUL +/* BLE_BLESS.ENC_MEM_BASE_ADDR */ +#define BLE_BLESS_ENC_MEM_BASE_ADDR_ENC_MEM_Pos 0UL +#define BLE_BLESS_ENC_MEM_BASE_ADDR_ENC_MEM_Msk 0xFFFFFFFFUL +/* BLE_BLESS.TRIM_LDO_0 */ +#define BLE_BLESS_TRIM_LDO_0_ACT_LDO_VREG_Pos 0UL +#define BLE_BLESS_TRIM_LDO_0_ACT_LDO_VREG_Msk 0xFUL +#define BLE_BLESS_TRIM_LDO_0_ACT_LDO_ITAIL_Pos 4UL +#define BLE_BLESS_TRIM_LDO_0_ACT_LDO_ITAIL_Msk 0xF0UL +/* BLE_BLESS.TRIM_LDO_1 */ +#define BLE_BLESS_TRIM_LDO_1_ACT_REF_BGR_Pos 0UL +#define BLE_BLESS_TRIM_LDO_1_ACT_REF_BGR_Msk 0xFUL +#define BLE_BLESS_TRIM_LDO_1_SB_BGRES_Pos 4UL +#define BLE_BLESS_TRIM_LDO_1_SB_BGRES_Msk 0xF0UL +/* BLE_BLESS.TRIM_LDO_2 */ +#define BLE_BLESS_TRIM_LDO_2_SB_BMULT_RES_Pos 0UL +#define BLE_BLESS_TRIM_LDO_2_SB_BMULT_RES_Msk 0x1FUL +#define BLE_BLESS_TRIM_LDO_2_SB_BMULT_NBIAS_Pos 5UL +#define BLE_BLESS_TRIM_LDO_2_SB_BMULT_NBIAS_Msk 0x60UL +/* BLE_BLESS.TRIM_LDO_3 */ +#define BLE_BLESS_TRIM_LDO_3_LVDET_Pos 0UL +#define BLE_BLESS_TRIM_LDO_3_LVDET_Msk 0x1FUL +#define BLE_BLESS_TRIM_LDO_3_SLOPE_SB_BMULT_Pos 5UL +#define BLE_BLESS_TRIM_LDO_3_SLOPE_SB_BMULT_Msk 0x60UL +/* BLE_BLESS.TRIM_MXD */ +#define BLE_BLESS_TRIM_MXD_MXD_TRIM_BITS_Pos 0UL +#define BLE_BLESS_TRIM_MXD_MXD_TRIM_BITS_Msk 0xFFUL +/* BLE_BLESS.TRIM_LDO_4 */ +#define BLE_BLESS_TRIM_LDO_4_T_LDO_Pos 0UL +#define BLE_BLESS_TRIM_LDO_4_T_LDO_Msk 0xFFUL +/* BLE_BLESS.TRIM_LDO_5 */ +#define BLE_BLESS_TRIM_LDO_5_RESERVED_Pos 0UL +#define BLE_BLESS_TRIM_LDO_5_RESERVED_Msk 0xFFUL + + +#endif /* _CYIP_BLE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss.h new file mode 100644 index 00000000000..39104ec286c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss.h @@ -0,0 +1,341 @@ +/***************************************************************************//** +* \file cyip_cpuss.h +* +* \brief +* CPUSS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CPUSS_H_ +#define _CYIP_CPUSS_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_SECTION_SIZE 0x00010000UL + +/** + * \brief CPU subsystem (CPUSS) (CPUSS) + */ +typedef struct { + __IOM uint32_t CM0_CTL; /*!< 0x00000000 CM0+ control */ + __IM uint32_t RESERVED; + __IM uint32_t CM0_STATUS; /*!< 0x00000008 CM0+ status */ + __IM uint32_t RESERVED1; + __IOM uint32_t CM0_CLOCK_CTL; /*!< 0x00000010 CM0+ clock control */ + __IM uint32_t RESERVED2[3]; + __IOM uint32_t CM0_INT_CTL0; /*!< 0x00000020 CM0+ interrupt control 0 */ + __IOM uint32_t CM0_INT_CTL1; /*!< 0x00000024 CM0+ interrupt control 1 */ + __IOM uint32_t CM0_INT_CTL2; /*!< 0x00000028 CM0+ interrupt control 2 */ + __IOM uint32_t CM0_INT_CTL3; /*!< 0x0000002C CM0+ interrupt control 3 */ + __IOM uint32_t CM0_INT_CTL4; /*!< 0x00000030 CM0+ interrupt control 4 */ + __IOM uint32_t CM0_INT_CTL5; /*!< 0x00000034 CM0+ interrupt control 5 */ + __IOM uint32_t CM0_INT_CTL6; /*!< 0x00000038 CM0+ interrupt control 6 */ + __IOM uint32_t CM0_INT_CTL7; /*!< 0x0000003C CM0+ interrupt control 7 */ + __IM uint32_t RESERVED3[16]; + __IOM uint32_t CM4_PWR_CTL; /*!< 0x00000080 CM4 power control */ + __IOM uint32_t CM4_PWR_DELAY_CTL; /*!< 0x00000084 CM4 power control */ + __IM uint32_t CM4_STATUS; /*!< 0x00000088 CM4 status */ + __IM uint32_t RESERVED4; + __IOM uint32_t CM4_CLOCK_CTL; /*!< 0x00000090 CM4 clock control */ + __IM uint32_t RESERVED5[3]; + __IOM uint32_t CM4_NMI_CTL; /*!< 0x000000A0 CM4 NMI control */ + __IM uint32_t RESERVED6[23]; + __IOM uint32_t RAM0_CTL0; /*!< 0x00000100 RAM 0 control 0 */ + __IM uint32_t RESERVED7[15]; + __IOM uint32_t RAM0_PWR_MACRO_CTL[16]; /*!< 0x00000140 RAM 0 power control */ + __IOM uint32_t RAM1_CTL0; /*!< 0x00000180 RAM 1 control 0 */ + __IM uint32_t RESERVED8[3]; + __IOM uint32_t RAM1_PWR_CTL; /*!< 0x00000190 RAM1 power control */ + __IM uint32_t RESERVED9[3]; + __IOM uint32_t RAM2_CTL0; /*!< 0x000001A0 RAM 2 control 0 */ + __IM uint32_t RESERVED10[3]; + __IOM uint32_t RAM2_PWR_CTL; /*!< 0x000001B0 RAM2 power control */ + __IM uint32_t RESERVED11[3]; + __IOM uint32_t RAM_PWR_DELAY_CTL; /*!< 0x000001C0 Power up delay used for all SRAM power domains */ + __IM uint32_t RESERVED12[3]; + __IOM uint32_t ROM_CTL; /*!< 0x000001D0 ROM control */ + __IM uint32_t RESERVED13[7]; + __IOM uint32_t UDB_PWR_CTL; /*!< 0x000001F0 UDB power control */ + __IOM uint32_t UDB_PWR_DELAY_CTL; /*!< 0x000001F4 UDB power control */ + __IM uint32_t RESERVED14[4]; + __IM uint32_t DP_STATUS; /*!< 0x00000208 Debug port status */ + __IM uint32_t RESERVED15[5]; + __IOM uint32_t BUFF_CTL; /*!< 0x00000220 Buffer control */ + __IM uint32_t RESERVED16[3]; + __IOM uint32_t DDFT_CTL; /*!< 0x00000230 DDFT control */ + __IM uint32_t RESERVED17[3]; + __IOM uint32_t SYSTICK_CTL; /*!< 0x00000240 SysTick timer control */ + __IM uint32_t RESERVED18[27]; + __IOM uint32_t CM0_VECTOR_TABLE_BASE; /*!< 0x000002B0 CM0+ vector table base */ + __IM uint32_t RESERVED19[3]; + __IOM uint32_t CM4_VECTOR_TABLE_BASE; /*!< 0x000002C0 CM4 vector table base */ + __IM uint32_t RESERVED20[23]; + __IOM uint32_t CM0_PC0_HANDLER; /*!< 0x00000320 CM0+ protection context 0 handler */ + __IM uint32_t RESERVED21[55]; + __IM uint32_t IDENTITY; /*!< 0x00000400 Identity */ + __IM uint32_t RESERVED22[63]; + __IOM uint32_t PROTECTION; /*!< 0x00000500 Protection status */ + __IM uint32_t RESERVED23[7]; + __IOM uint32_t CM0_NMI_CTL; /*!< 0x00000520 CM0+ NMI control */ + __IM uint32_t RESERVED24[31]; + __IM uint32_t MBIST_STAT; /*!< 0x000005A0 Memory BIST status */ + __IM uint32_t RESERVED25[14999]; + __IOM uint32_t TRIM_ROM_CTL; /*!< 0x0000F000 ROM trim control */ + __IOM uint32_t TRIM_RAM_CTL; /*!< 0x0000F004 RAM trim control */ +} CPUSS_V1_Type; /*!< Size = 61448 (0xF008) */ + + +/* CPUSS.CM0_CTL */ +#define CPUSS_CM0_CTL_SLV_STALL_Pos 0UL +#define CPUSS_CM0_CTL_SLV_STALL_Msk 0x1UL +#define CPUSS_CM0_CTL_ENABLED_Pos 1UL +#define CPUSS_CM0_CTL_ENABLED_Msk 0x2UL +#define CPUSS_CM0_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_CM0_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.CM0_STATUS */ +#define CPUSS_CM0_STATUS_SLEEPING_Pos 0UL +#define CPUSS_CM0_STATUS_SLEEPING_Msk 0x1UL +#define CPUSS_CM0_STATUS_SLEEPDEEP_Pos 1UL +#define CPUSS_CM0_STATUS_SLEEPDEEP_Msk 0x2UL +/* CPUSS.CM0_CLOCK_CTL */ +#define CPUSS_CM0_CLOCK_CTL_SLOW_INT_DIV_Pos 8UL +#define CPUSS_CM0_CLOCK_CTL_SLOW_INT_DIV_Msk 0xFF00UL +#define CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV_Pos 24UL +#define CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL0 */ +#define CPUSS_CM0_INT_CTL0_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL0_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL0_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL0_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL0_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL0_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL0_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL0_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL1 */ +#define CPUSS_CM0_INT_CTL1_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL1_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL1_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL1_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL1_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL1_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL1_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL1_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL2 */ +#define CPUSS_CM0_INT_CTL2_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL2_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL2_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL2_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL2_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL2_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL2_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL2_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL3 */ +#define CPUSS_CM0_INT_CTL3_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL3_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL3_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL3_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL3_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL3_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL3_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL3_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL4 */ +#define CPUSS_CM0_INT_CTL4_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL4_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL4_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL4_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL4_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL4_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL4_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL4_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL5 */ +#define CPUSS_CM0_INT_CTL5_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL5_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL5_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL5_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL5_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL5_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL5_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL5_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL6 */ +#define CPUSS_CM0_INT_CTL6_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL6_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL6_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL6_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL6_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL6_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL6_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL6_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM0_INT_CTL7 */ +#define CPUSS_CM0_INT_CTL7_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_INT_CTL7_MUX0_SEL_Msk 0xFFUL +#define CPUSS_CM0_INT_CTL7_MUX1_SEL_Pos 8UL +#define CPUSS_CM0_INT_CTL7_MUX1_SEL_Msk 0xFF00UL +#define CPUSS_CM0_INT_CTL7_MUX2_SEL_Pos 16UL +#define CPUSS_CM0_INT_CTL7_MUX2_SEL_Msk 0xFF0000UL +#define CPUSS_CM0_INT_CTL7_MUX3_SEL_Pos 24UL +#define CPUSS_CM0_INT_CTL7_MUX3_SEL_Msk 0xFF000000UL +/* CPUSS.CM4_PWR_CTL */ +#define CPUSS_CM4_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_CM4_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_CM4_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_CM4_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.CM4_PWR_DELAY_CTL */ +#define CPUSS_CM4_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_CM4_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.CM4_STATUS */ +#define CPUSS_CM4_STATUS_SLEEPING_Pos 0UL +#define CPUSS_CM4_STATUS_SLEEPING_Msk 0x1UL +#define CPUSS_CM4_STATUS_SLEEPDEEP_Pos 1UL +#define CPUSS_CM4_STATUS_SLEEPDEEP_Msk 0x2UL +#define CPUSS_CM4_STATUS_PWR_DONE_Pos 4UL +#define CPUSS_CM4_STATUS_PWR_DONE_Msk 0x10UL +/* CPUSS.CM4_CLOCK_CTL */ +#define CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV_Pos 8UL +#define CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV_Msk 0xFF00UL +/* CPUSS.CM4_NMI_CTL */ +#define CPUSS_CM4_NMI_CTL_MUX0_SEL_Pos 0UL +#define CPUSS_CM4_NMI_CTL_MUX0_SEL_Msk 0xFFUL +/* CPUSS.RAM0_CTL0 */ +#define CPUSS_RAM0_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_RAM0_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_RAM0_CTL0_FAST_WS_Pos 8UL +#define CPUSS_RAM0_CTL0_FAST_WS_Msk 0x300UL +/* CPUSS.RAM0_PWR_MACRO_CTL */ +#define CPUSS_RAM0_PWR_MACRO_CTL_PWR_MODE_Pos 0UL +#define CPUSS_RAM0_PWR_MACRO_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_RAM0_PWR_MACRO_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_RAM0_PWR_MACRO_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM1_CTL0 */ +#define CPUSS_RAM1_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_RAM1_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_RAM1_CTL0_FAST_WS_Pos 8UL +#define CPUSS_RAM1_CTL0_FAST_WS_Msk 0x300UL +/* CPUSS.RAM1_PWR_CTL */ +#define CPUSS_RAM1_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_RAM1_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_RAM1_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_RAM1_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM2_CTL0 */ +#define CPUSS_RAM2_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_RAM2_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_RAM2_CTL0_FAST_WS_Pos 8UL +#define CPUSS_RAM2_CTL0_FAST_WS_Msk 0x300UL +/* CPUSS.RAM2_PWR_CTL */ +#define CPUSS_RAM2_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_RAM2_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_RAM2_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_RAM2_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM_PWR_DELAY_CTL */ +#define CPUSS_RAM_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_RAM_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.ROM_CTL */ +#define CPUSS_ROM_CTL_SLOW_WS_Pos 0UL +#define CPUSS_ROM_CTL_SLOW_WS_Msk 0x3UL +#define CPUSS_ROM_CTL_FAST_WS_Pos 8UL +#define CPUSS_ROM_CTL_FAST_WS_Msk 0x300UL +/* CPUSS.UDB_PWR_CTL */ +#define CPUSS_UDB_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_UDB_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_UDB_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_UDB_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.UDB_PWR_DELAY_CTL */ +#define CPUSS_UDB_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_UDB_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.DP_STATUS */ +#define CPUSS_DP_STATUS_SWJ_CONNECTED_Pos 0UL +#define CPUSS_DP_STATUS_SWJ_CONNECTED_Msk 0x1UL +#define CPUSS_DP_STATUS_SWJ_DEBUG_EN_Pos 1UL +#define CPUSS_DP_STATUS_SWJ_DEBUG_EN_Msk 0x2UL +#define CPUSS_DP_STATUS_SWJ_JTAG_SEL_Pos 2UL +#define CPUSS_DP_STATUS_SWJ_JTAG_SEL_Msk 0x4UL +/* CPUSS.BUFF_CTL */ +#define CPUSS_BUFF_CTL_WRITE_BUFF_Pos 0UL +#define CPUSS_BUFF_CTL_WRITE_BUFF_Msk 0x1UL +/* CPUSS.DDFT_CTL */ +#define CPUSS_DDFT_CTL_DDFT_OUT0_SEL_Pos 0UL +#define CPUSS_DDFT_CTL_DDFT_OUT0_SEL_Msk 0x1FUL +#define CPUSS_DDFT_CTL_DDFT_OUT1_SEL_Pos 8UL +#define CPUSS_DDFT_CTL_DDFT_OUT1_SEL_Msk 0x1F00UL +/* CPUSS.SYSTICK_CTL */ +#define CPUSS_SYSTICK_CTL_TENMS_Pos 0UL +#define CPUSS_SYSTICK_CTL_TENMS_Msk 0xFFFFFFUL +#define CPUSS_SYSTICK_CTL_CLOCK_SOURCE_Pos 24UL +#define CPUSS_SYSTICK_CTL_CLOCK_SOURCE_Msk 0x3000000UL +#define CPUSS_SYSTICK_CTL_SKEW_Pos 30UL +#define CPUSS_SYSTICK_CTL_SKEW_Msk 0x40000000UL +#define CPUSS_SYSTICK_CTL_NOREF_Pos 31UL +#define CPUSS_SYSTICK_CTL_NOREF_Msk 0x80000000UL +/* CPUSS.CM0_VECTOR_TABLE_BASE */ +#define CPUSS_CM0_VECTOR_TABLE_BASE_ADDR24_Pos 8UL +#define CPUSS_CM0_VECTOR_TABLE_BASE_ADDR24_Msk 0xFFFFFF00UL +/* CPUSS.CM4_VECTOR_TABLE_BASE */ +#define CPUSS_CM4_VECTOR_TABLE_BASE_ADDR22_Pos 10UL +#define CPUSS_CM4_VECTOR_TABLE_BASE_ADDR22_Msk 0xFFFFFC00UL +/* CPUSS.CM0_PC0_HANDLER */ +#define CPUSS_CM0_PC0_HANDLER_ADDR_Pos 0UL +#define CPUSS_CM0_PC0_HANDLER_ADDR_Msk 0xFFFFFFFFUL +/* CPUSS.IDENTITY */ +#define CPUSS_IDENTITY_P_Pos 0UL +#define CPUSS_IDENTITY_P_Msk 0x1UL +#define CPUSS_IDENTITY_NS_Pos 1UL +#define CPUSS_IDENTITY_NS_Msk 0x2UL +#define CPUSS_IDENTITY_PC_Pos 4UL +#define CPUSS_IDENTITY_PC_Msk 0xF0UL +#define CPUSS_IDENTITY_MS_Pos 8UL +#define CPUSS_IDENTITY_MS_Msk 0xF00UL +/* CPUSS.PROTECTION */ +#define CPUSS_PROTECTION_STATE_Pos 0UL +#define CPUSS_PROTECTION_STATE_Msk 0x7UL +/* CPUSS.CM0_NMI_CTL */ +#define CPUSS_CM0_NMI_CTL_MUX0_SEL_Pos 0UL +#define CPUSS_CM0_NMI_CTL_MUX0_SEL_Msk 0xFFUL +/* CPUSS.MBIST_STAT */ +#define CPUSS_MBIST_STAT_SFP_READY_Pos 0UL +#define CPUSS_MBIST_STAT_SFP_READY_Msk 0x1UL +#define CPUSS_MBIST_STAT_SFP_FAIL_Pos 1UL +#define CPUSS_MBIST_STAT_SFP_FAIL_Msk 0x2UL +/* CPUSS.TRIM_ROM_CTL */ +#define CPUSS_TRIM_ROM_CTL_RM_Pos 0UL +#define CPUSS_TRIM_ROM_CTL_RM_Msk 0xFUL +#define CPUSS_TRIM_ROM_CTL_RME_Pos 4UL +#define CPUSS_TRIM_ROM_CTL_RME_Msk 0x10UL +/* CPUSS.TRIM_RAM_CTL */ +#define CPUSS_TRIM_RAM_CTL_RM_Pos 0UL +#define CPUSS_TRIM_RAM_CTL_RM_Msk 0xFUL +#define CPUSS_TRIM_RAM_CTL_RME_Pos 4UL +#define CPUSS_TRIM_RAM_CTL_RME_Msk 0x10UL +#define CPUSS_TRIM_RAM_CTL_WPULSE_Pos 5UL +#define CPUSS_TRIM_RAM_CTL_WPULSE_Msk 0xE0UL +#define CPUSS_TRIM_RAM_CTL_RA_Pos 8UL +#define CPUSS_TRIM_RAM_CTL_RA_Msk 0x300UL +#define CPUSS_TRIM_RAM_CTL_WA_Pos 12UL +#define CPUSS_TRIM_RAM_CTL_WA_Msk 0x7000UL + + +#endif /* _CYIP_CPUSS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss_v2.h new file mode 100644 index 00000000000..f2e0ff5ad00 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_cpuss_v2.h @@ -0,0 +1,447 @@ +/***************************************************************************//** +* \file cyip_cpuss_v2.h +* +* \brief +* CPUSS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CPUSS_V2_H_ +#define _CYIP_CPUSS_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CPUSS_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief CPU subsystem (CPUSS) (CPUSS) + */ +typedef struct { + __IM uint32_t IDENTITY; /*!< 0x00000000 Identity */ + __IM uint32_t CM4_STATUS; /*!< 0x00000004 CM4 status */ + __IOM uint32_t CM4_CLOCK_CTL; /*!< 0x00000008 CM4 clock control */ + __IOM uint32_t CM4_CTL; /*!< 0x0000000C CM4 control */ + __IM uint32_t RESERVED[60]; + __IM uint32_t CM4_INT0_STATUS; /*!< 0x00000100 CM4 interrupt 0 status */ + __IM uint32_t CM4_INT1_STATUS; /*!< 0x00000104 CM4 interrupt 1 status */ + __IM uint32_t CM4_INT2_STATUS; /*!< 0x00000108 CM4 interrupt 2 status */ + __IM uint32_t CM4_INT3_STATUS; /*!< 0x0000010C CM4 interrupt 3 status */ + __IM uint32_t CM4_INT4_STATUS; /*!< 0x00000110 CM4 interrupt 4 status */ + __IM uint32_t CM4_INT5_STATUS; /*!< 0x00000114 CM4 interrupt 5 status */ + __IM uint32_t CM4_INT6_STATUS; /*!< 0x00000118 CM4 interrupt 6 status */ + __IM uint32_t CM4_INT7_STATUS; /*!< 0x0000011C CM4 interrupt 7 status */ + __IM uint32_t RESERVED1[56]; + __IOM uint32_t CM4_VECTOR_TABLE_BASE; /*!< 0x00000200 CM4 vector table base */ + __IM uint32_t RESERVED2[15]; + __IOM uint32_t CM4_NMI_CTL[4]; /*!< 0x00000240 CM4 NMI control */ + __IM uint32_t RESERVED3[44]; + __IOM uint32_t UDB_PWR_CTL; /*!< 0x00000300 UDB power control */ + __IOM uint32_t UDB_PWR_DELAY_CTL; /*!< 0x00000304 UDB power control */ + __IM uint32_t RESERVED4[830]; + __IOM uint32_t CM0_CTL; /*!< 0x00001000 CM0+ control */ + __IM uint32_t CM0_STATUS; /*!< 0x00001004 CM0+ status */ + __IOM uint32_t CM0_CLOCK_CTL; /*!< 0x00001008 CM0+ clock control */ + __IM uint32_t RESERVED5[61]; + __IM uint32_t CM0_INT0_STATUS; /*!< 0x00001100 CM0+ interrupt 0 status */ + __IM uint32_t CM0_INT1_STATUS; /*!< 0x00001104 CM0+ interrupt 1 status */ + __IM uint32_t CM0_INT2_STATUS; /*!< 0x00001108 CM0+ interrupt 2 status */ + __IM uint32_t CM0_INT3_STATUS; /*!< 0x0000110C CM0+ interrupt 3 status */ + __IM uint32_t CM0_INT4_STATUS; /*!< 0x00001110 CM0+ interrupt 4 status */ + __IM uint32_t CM0_INT5_STATUS; /*!< 0x00001114 CM0+ interrupt 5 status */ + __IM uint32_t CM0_INT6_STATUS; /*!< 0x00001118 CM0+ interrupt 6 status */ + __IM uint32_t CM0_INT7_STATUS; /*!< 0x0000111C CM0+ interrupt 7 status */ + __IOM uint32_t CM0_VECTOR_TABLE_BASE; /*!< 0x00001120 CM0+ vector table base */ + __IM uint32_t RESERVED6[7]; + __IOM uint32_t CM0_NMI_CTL[4]; /*!< 0x00001140 CM0+ NMI control */ + __IM uint32_t RESERVED7[44]; + __IOM uint32_t CM4_PWR_CTL; /*!< 0x00001200 CM4 power control */ + __IOM uint32_t CM4_PWR_DELAY_CTL; /*!< 0x00001204 CM4 power control */ + __IM uint32_t RESERVED8[62]; + __IOM uint32_t RAM0_CTL0; /*!< 0x00001300 RAM 0 control */ + __IM uint32_t RAM0_STATUS; /*!< 0x00001304 RAM 0 status */ + __IM uint32_t RESERVED9[14]; + __IOM uint32_t RAM0_PWR_MACRO_CTL[16]; /*!< 0x00001340 RAM 0 power control */ + __IOM uint32_t RAM1_CTL0; /*!< 0x00001380 RAM 1 control */ + __IM uint32_t RAM1_STATUS; /*!< 0x00001384 RAM 1 status */ + __IOM uint32_t RAM1_PWR_CTL; /*!< 0x00001388 RAM 1 power control */ + __IM uint32_t RESERVED10[5]; + __IOM uint32_t RAM2_CTL0; /*!< 0x000013A0 RAM 2 control */ + __IM uint32_t RAM2_STATUS; /*!< 0x000013A4 RAM 2 status */ + __IOM uint32_t RAM2_PWR_CTL; /*!< 0x000013A8 RAM 2 power control */ + __IM uint32_t RESERVED11[5]; + __IOM uint32_t RAM_PWR_DELAY_CTL; /*!< 0x000013C0 Power up delay used for all SRAM power domains */ + __IOM uint32_t ROM_CTL; /*!< 0x000013C4 ROM control */ + __IOM uint32_t ECC_CTL; /*!< 0x000013C8 ECC control */ + __IM uint32_t RESERVED12[13]; + __IM uint32_t PRODUCT_ID; /*!< 0x00001400 Product identifier and version (same as CoreSight RomTables) */ + __IM uint32_t RESERVED13[3]; + __IM uint32_t DP_STATUS; /*!< 0x00001410 Debug port status */ + __IOM uint32_t AP_CTL; /*!< 0x00001414 Access port control */ + __IM uint32_t RESERVED14[58]; + __IOM uint32_t BUFF_CTL; /*!< 0x00001500 Buffer control */ + __IM uint32_t RESERVED15[63]; + __IOM uint32_t SYSTICK_CTL; /*!< 0x00001600 SysTick timer control */ + __IM uint32_t RESERVED16[64]; + __IM uint32_t MBIST_STAT; /*!< 0x00001704 Memory BIST status */ + __IM uint32_t RESERVED17[62]; + __IOM uint32_t CAL_SUP_SET; /*!< 0x00001800 Calibration support set and read */ + __IOM uint32_t CAL_SUP_CLR; /*!< 0x00001804 Calibration support clear and reset */ + __IM uint32_t RESERVED18[510]; + __IOM uint32_t CM0_PC_CTL; /*!< 0x00002000 CM0+ protection context control */ + __IM uint32_t RESERVED19[15]; + __IOM uint32_t CM0_PC0_HANDLER; /*!< 0x00002040 CM0+ protection context 0 handler */ + __IOM uint32_t CM0_PC1_HANDLER; /*!< 0x00002044 CM0+ protection context 1 handler */ + __IOM uint32_t CM0_PC2_HANDLER; /*!< 0x00002048 CM0+ protection context 2 handler */ + __IOM uint32_t CM0_PC3_HANDLER; /*!< 0x0000204C CM0+ protection context 3 handler */ + __IM uint32_t RESERVED20[29]; + __IOM uint32_t PROTECTION; /*!< 0x000020C4 Protection status */ + __IM uint32_t RESERVED21[14]; + __IOM uint32_t TRIM_ROM_CTL; /*!< 0x00002100 ROM trim control */ + __IOM uint32_t TRIM_RAM_CTL; /*!< 0x00002104 RAM trim control */ + __IM uint32_t RESERVED22[6078]; + __IOM uint32_t CM0_SYSTEM_INT_CTL[1023]; /*!< 0x00008000 CM0+ system interrupt control */ + __IM uint32_t RESERVED23[1025]; + __IOM uint32_t CM4_SYSTEM_INT_CTL[1023]; /*!< 0x0000A000 CM4 system interrupt control */ +} CPUSS_V2_Type; /*!< Size = 45052 (0xAFFC) */ + + +/* CPUSS.IDENTITY */ +#define CPUSS_V2_IDENTITY_P_Pos 0UL +#define CPUSS_V2_IDENTITY_P_Msk 0x1UL +#define CPUSS_V2_IDENTITY_NS_Pos 1UL +#define CPUSS_V2_IDENTITY_NS_Msk 0x2UL +#define CPUSS_V2_IDENTITY_PC_Pos 4UL +#define CPUSS_V2_IDENTITY_PC_Msk 0xF0UL +#define CPUSS_V2_IDENTITY_MS_Pos 8UL +#define CPUSS_V2_IDENTITY_MS_Msk 0xF00UL +/* CPUSS.CM4_STATUS */ +#define CPUSS_V2_CM4_STATUS_SLEEPING_Pos 0UL +#define CPUSS_V2_CM4_STATUS_SLEEPING_Msk 0x1UL +#define CPUSS_V2_CM4_STATUS_SLEEPDEEP_Pos 1UL +#define CPUSS_V2_CM4_STATUS_SLEEPDEEP_Msk 0x2UL +#define CPUSS_V2_CM4_STATUS_PWR_DONE_Pos 4UL +#define CPUSS_V2_CM4_STATUS_PWR_DONE_Msk 0x10UL +/* CPUSS.CM4_CLOCK_CTL */ +#define CPUSS_V2_CM4_CLOCK_CTL_FAST_INT_DIV_Pos 8UL +#define CPUSS_V2_CM4_CLOCK_CTL_FAST_INT_DIV_Msk 0xFF00UL +/* CPUSS.CM4_CTL */ +#define CPUSS_V2_CM4_CTL_IOC_MASK_Pos 24UL +#define CPUSS_V2_CM4_CTL_IOC_MASK_Msk 0x1000000UL +#define CPUSS_V2_CM4_CTL_DZC_MASK_Pos 25UL +#define CPUSS_V2_CM4_CTL_DZC_MASK_Msk 0x2000000UL +#define CPUSS_V2_CM4_CTL_OFC_MASK_Pos 26UL +#define CPUSS_V2_CM4_CTL_OFC_MASK_Msk 0x4000000UL +#define CPUSS_V2_CM4_CTL_UFC_MASK_Pos 27UL +#define CPUSS_V2_CM4_CTL_UFC_MASK_Msk 0x8000000UL +#define CPUSS_V2_CM4_CTL_IXC_MASK_Pos 28UL +#define CPUSS_V2_CM4_CTL_IXC_MASK_Msk 0x10000000UL +#define CPUSS_V2_CM4_CTL_IDC_MASK_Pos 31UL +#define CPUSS_V2_CM4_CTL_IDC_MASK_Msk 0x80000000UL +/* CPUSS.CM4_INT0_STATUS */ +#define CPUSS_V2_CM4_INT0_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT0_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT0_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT0_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT1_STATUS */ +#define CPUSS_V2_CM4_INT1_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT1_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT1_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT1_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT2_STATUS */ +#define CPUSS_V2_CM4_INT2_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT2_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT2_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT2_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT3_STATUS */ +#define CPUSS_V2_CM4_INT3_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT3_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT3_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT3_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT4_STATUS */ +#define CPUSS_V2_CM4_INT4_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT4_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT4_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT4_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT5_STATUS */ +#define CPUSS_V2_CM4_INT5_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT5_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT5_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT5_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT6_STATUS */ +#define CPUSS_V2_CM4_INT6_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT6_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT6_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT6_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_INT7_STATUS */ +#define CPUSS_V2_CM4_INT7_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_INT7_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM4_INT7_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_INT7_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_VECTOR_TABLE_BASE */ +#define CPUSS_V2_CM4_VECTOR_TABLE_BASE_ADDR22_Pos 10UL +#define CPUSS_V2_CM4_VECTOR_TABLE_BASE_ADDR22_Msk 0xFFFFFC00UL +/* CPUSS.CM4_NMI_CTL */ +#define CPUSS_V2_CM4_NMI_CTL_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_NMI_CTL_SYSTEM_INT_IDX_Msk 0x3FFUL +/* CPUSS.UDB_PWR_CTL */ +#define CPUSS_V2_UDB_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_V2_UDB_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_V2_UDB_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_UDB_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.UDB_PWR_DELAY_CTL */ +#define CPUSS_V2_UDB_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_V2_UDB_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.CM0_CTL */ +#define CPUSS_V2_CM0_CTL_SLV_STALL_Pos 0UL +#define CPUSS_V2_CM0_CTL_SLV_STALL_Msk 0x1UL +#define CPUSS_V2_CM0_CTL_ENABLED_Pos 1UL +#define CPUSS_V2_CM0_CTL_ENABLED_Msk 0x2UL +#define CPUSS_V2_CM0_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_CM0_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.CM0_STATUS */ +#define CPUSS_V2_CM0_STATUS_SLEEPING_Pos 0UL +#define CPUSS_V2_CM0_STATUS_SLEEPING_Msk 0x1UL +#define CPUSS_V2_CM0_STATUS_SLEEPDEEP_Pos 1UL +#define CPUSS_V2_CM0_STATUS_SLEEPDEEP_Msk 0x2UL +/* CPUSS.CM0_CLOCK_CTL */ +#define CPUSS_V2_CM0_CLOCK_CTL_SLOW_INT_DIV_Pos 8UL +#define CPUSS_V2_CM0_CLOCK_CTL_SLOW_INT_DIV_Msk 0xFF00UL +#define CPUSS_V2_CM0_CLOCK_CTL_PERI_INT_DIV_Pos 24UL +#define CPUSS_V2_CM0_CLOCK_CTL_PERI_INT_DIV_Msk 0xFF000000UL +/* CPUSS.CM0_INT0_STATUS */ +#define CPUSS_V2_CM0_INT0_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT0_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT0_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT0_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT1_STATUS */ +#define CPUSS_V2_CM0_INT1_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT1_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT1_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT1_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT2_STATUS */ +#define CPUSS_V2_CM0_INT2_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT2_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT2_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT2_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT3_STATUS */ +#define CPUSS_V2_CM0_INT3_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT3_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT3_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT3_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT4_STATUS */ +#define CPUSS_V2_CM0_INT4_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT4_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT4_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT4_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT5_STATUS */ +#define CPUSS_V2_CM0_INT5_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT5_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT5_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT5_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT6_STATUS */ +#define CPUSS_V2_CM0_INT6_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT6_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT6_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT6_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_INT7_STATUS */ +#define CPUSS_V2_CM0_INT7_STATUS_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_INT7_STATUS_SYSTEM_INT_IDX_Msk 0x3FFUL +#define CPUSS_V2_CM0_INT7_STATUS_SYSTEM_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_INT7_STATUS_SYSTEM_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM0_VECTOR_TABLE_BASE */ +#define CPUSS_V2_CM0_VECTOR_TABLE_BASE_ADDR24_Pos 8UL +#define CPUSS_V2_CM0_VECTOR_TABLE_BASE_ADDR24_Msk 0xFFFFFF00UL +/* CPUSS.CM0_NMI_CTL */ +#define CPUSS_V2_CM0_NMI_CTL_SYSTEM_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_NMI_CTL_SYSTEM_INT_IDX_Msk 0x3FFUL +/* CPUSS.CM4_PWR_CTL */ +#define CPUSS_V2_CM4_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_V2_CM4_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_V2_CM4_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_CM4_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.CM4_PWR_DELAY_CTL */ +#define CPUSS_V2_CM4_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_V2_CM4_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.RAM0_CTL0 */ +#define CPUSS_V2_RAM0_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_V2_RAM0_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_V2_RAM0_CTL0_FAST_WS_Pos 8UL +#define CPUSS_V2_RAM0_CTL0_FAST_WS_Msk 0x300UL +#define CPUSS_V2_RAM0_CTL0_ECC_EN_Pos 16UL +#define CPUSS_V2_RAM0_CTL0_ECC_EN_Msk 0x10000UL +#define CPUSS_V2_RAM0_CTL0_ECC_AUTO_CORRECT_Pos 17UL +#define CPUSS_V2_RAM0_CTL0_ECC_AUTO_CORRECT_Msk 0x20000UL +#define CPUSS_V2_RAM0_CTL0_ECC_INJ_EN_Pos 18UL +#define CPUSS_V2_RAM0_CTL0_ECC_INJ_EN_Msk 0x40000UL +/* CPUSS.RAM0_STATUS */ +#define CPUSS_V2_RAM0_STATUS_WB_EMPTY_Pos 0UL +#define CPUSS_V2_RAM0_STATUS_WB_EMPTY_Msk 0x1UL +/* CPUSS.RAM0_PWR_MACRO_CTL */ +#define CPUSS_V2_RAM0_PWR_MACRO_CTL_PWR_MODE_Pos 0UL +#define CPUSS_V2_RAM0_PWR_MACRO_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_V2_RAM0_PWR_MACRO_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_RAM0_PWR_MACRO_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM1_CTL0 */ +#define CPUSS_V2_RAM1_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_V2_RAM1_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_V2_RAM1_CTL0_FAST_WS_Pos 8UL +#define CPUSS_V2_RAM1_CTL0_FAST_WS_Msk 0x300UL +#define CPUSS_V2_RAM1_CTL0_ECC_EN_Pos 16UL +#define CPUSS_V2_RAM1_CTL0_ECC_EN_Msk 0x10000UL +#define CPUSS_V2_RAM1_CTL0_ECC_AUTO_CORRECT_Pos 17UL +#define CPUSS_V2_RAM1_CTL0_ECC_AUTO_CORRECT_Msk 0x20000UL +#define CPUSS_V2_RAM1_CTL0_ECC_INJ_EN_Pos 18UL +#define CPUSS_V2_RAM1_CTL0_ECC_INJ_EN_Msk 0x40000UL +/* CPUSS.RAM1_STATUS */ +#define CPUSS_V2_RAM1_STATUS_WB_EMPTY_Pos 0UL +#define CPUSS_V2_RAM1_STATUS_WB_EMPTY_Msk 0x1UL +/* CPUSS.RAM1_PWR_CTL */ +#define CPUSS_V2_RAM1_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_V2_RAM1_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_V2_RAM1_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_RAM1_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM2_CTL0 */ +#define CPUSS_V2_RAM2_CTL0_SLOW_WS_Pos 0UL +#define CPUSS_V2_RAM2_CTL0_SLOW_WS_Msk 0x3UL +#define CPUSS_V2_RAM2_CTL0_FAST_WS_Pos 8UL +#define CPUSS_V2_RAM2_CTL0_FAST_WS_Msk 0x300UL +#define CPUSS_V2_RAM2_CTL0_ECC_EN_Pos 16UL +#define CPUSS_V2_RAM2_CTL0_ECC_EN_Msk 0x10000UL +#define CPUSS_V2_RAM2_CTL0_ECC_AUTO_CORRECT_Pos 17UL +#define CPUSS_V2_RAM2_CTL0_ECC_AUTO_CORRECT_Msk 0x20000UL +#define CPUSS_V2_RAM2_CTL0_ECC_INJ_EN_Pos 18UL +#define CPUSS_V2_RAM2_CTL0_ECC_INJ_EN_Msk 0x40000UL +/* CPUSS.RAM2_STATUS */ +#define CPUSS_V2_RAM2_STATUS_WB_EMPTY_Pos 0UL +#define CPUSS_V2_RAM2_STATUS_WB_EMPTY_Msk 0x1UL +/* CPUSS.RAM2_PWR_CTL */ +#define CPUSS_V2_RAM2_PWR_CTL_PWR_MODE_Pos 0UL +#define CPUSS_V2_RAM2_PWR_CTL_PWR_MODE_Msk 0x3UL +#define CPUSS_V2_RAM2_PWR_CTL_VECTKEYSTAT_Pos 16UL +#define CPUSS_V2_RAM2_PWR_CTL_VECTKEYSTAT_Msk 0xFFFF0000UL +/* CPUSS.RAM_PWR_DELAY_CTL */ +#define CPUSS_V2_RAM_PWR_DELAY_CTL_UP_Pos 0UL +#define CPUSS_V2_RAM_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CPUSS.ROM_CTL */ +#define CPUSS_V2_ROM_CTL_SLOW_WS_Pos 0UL +#define CPUSS_V2_ROM_CTL_SLOW_WS_Msk 0x3UL +#define CPUSS_V2_ROM_CTL_FAST_WS_Pos 8UL +#define CPUSS_V2_ROM_CTL_FAST_WS_Msk 0x300UL +/* CPUSS.ECC_CTL */ +#define CPUSS_V2_ECC_CTL_WORD_ADDR_Pos 0UL +#define CPUSS_V2_ECC_CTL_WORD_ADDR_Msk 0x1FFFFFFUL +#define CPUSS_V2_ECC_CTL_PARITY_Pos 25UL +#define CPUSS_V2_ECC_CTL_PARITY_Msk 0xFE000000UL +/* CPUSS.PRODUCT_ID */ +#define CPUSS_V2_PRODUCT_ID_FAMILY_ID_Pos 0UL +#define CPUSS_V2_PRODUCT_ID_FAMILY_ID_Msk 0xFFFUL +#define CPUSS_V2_PRODUCT_ID_MAJOR_REV_Pos 16UL +#define CPUSS_V2_PRODUCT_ID_MAJOR_REV_Msk 0xF0000UL +#define CPUSS_V2_PRODUCT_ID_MINOR_REV_Pos 20UL +#define CPUSS_V2_PRODUCT_ID_MINOR_REV_Msk 0xF00000UL +/* CPUSS.DP_STATUS */ +#define CPUSS_V2_DP_STATUS_SWJ_CONNECTED_Pos 0UL +#define CPUSS_V2_DP_STATUS_SWJ_CONNECTED_Msk 0x1UL +#define CPUSS_V2_DP_STATUS_SWJ_DEBUG_EN_Pos 1UL +#define CPUSS_V2_DP_STATUS_SWJ_DEBUG_EN_Msk 0x2UL +#define CPUSS_V2_DP_STATUS_SWJ_JTAG_SEL_Pos 2UL +#define CPUSS_V2_DP_STATUS_SWJ_JTAG_SEL_Msk 0x4UL +/* CPUSS.AP_CTL */ +#define CPUSS_V2_AP_CTL_CM0_ENABLE_Pos 0UL +#define CPUSS_V2_AP_CTL_CM0_ENABLE_Msk 0x1UL +#define CPUSS_V2_AP_CTL_CM4_ENABLE_Pos 1UL +#define CPUSS_V2_AP_CTL_CM4_ENABLE_Msk 0x2UL +#define CPUSS_V2_AP_CTL_SYS_ENABLE_Pos 2UL +#define CPUSS_V2_AP_CTL_SYS_ENABLE_Msk 0x4UL +#define CPUSS_V2_AP_CTL_CM0_DISABLE_Pos 16UL +#define CPUSS_V2_AP_CTL_CM0_DISABLE_Msk 0x10000UL +#define CPUSS_V2_AP_CTL_CM4_DISABLE_Pos 17UL +#define CPUSS_V2_AP_CTL_CM4_DISABLE_Msk 0x20000UL +#define CPUSS_V2_AP_CTL_SYS_DISABLE_Pos 18UL +#define CPUSS_V2_AP_CTL_SYS_DISABLE_Msk 0x40000UL +/* CPUSS.BUFF_CTL */ +#define CPUSS_V2_BUFF_CTL_WRITE_BUFF_Pos 0UL +#define CPUSS_V2_BUFF_CTL_WRITE_BUFF_Msk 0x1UL +/* CPUSS.SYSTICK_CTL */ +#define CPUSS_V2_SYSTICK_CTL_TENMS_Pos 0UL +#define CPUSS_V2_SYSTICK_CTL_TENMS_Msk 0xFFFFFFUL +#define CPUSS_V2_SYSTICK_CTL_CLOCK_SOURCE_Pos 24UL +#define CPUSS_V2_SYSTICK_CTL_CLOCK_SOURCE_Msk 0x3000000UL +#define CPUSS_V2_SYSTICK_CTL_SKEW_Pos 30UL +#define CPUSS_V2_SYSTICK_CTL_SKEW_Msk 0x40000000UL +#define CPUSS_V2_SYSTICK_CTL_NOREF_Pos 31UL +#define CPUSS_V2_SYSTICK_CTL_NOREF_Msk 0x80000000UL +/* CPUSS.MBIST_STAT */ +#define CPUSS_V2_MBIST_STAT_SFP_READY_Pos 0UL +#define CPUSS_V2_MBIST_STAT_SFP_READY_Msk 0x1UL +#define CPUSS_V2_MBIST_STAT_SFP_FAIL_Pos 1UL +#define CPUSS_V2_MBIST_STAT_SFP_FAIL_Msk 0x2UL +/* CPUSS.CAL_SUP_SET */ +#define CPUSS_V2_CAL_SUP_SET_DATA_Pos 0UL +#define CPUSS_V2_CAL_SUP_SET_DATA_Msk 0xFFFFFFFFUL +/* CPUSS.CAL_SUP_CLR */ +#define CPUSS_V2_CAL_SUP_CLR_DATA_Pos 0UL +#define CPUSS_V2_CAL_SUP_CLR_DATA_Msk 0xFFFFFFFFUL +/* CPUSS.CM0_PC_CTL */ +#define CPUSS_V2_CM0_PC_CTL_VALID_Pos 0UL +#define CPUSS_V2_CM0_PC_CTL_VALID_Msk 0xFUL +/* CPUSS.CM0_PC0_HANDLER */ +#define CPUSS_V2_CM0_PC0_HANDLER_ADDR_Pos 0UL +#define CPUSS_V2_CM0_PC0_HANDLER_ADDR_Msk 0xFFFFFFFFUL +/* CPUSS.CM0_PC1_HANDLER */ +#define CPUSS_V2_CM0_PC1_HANDLER_ADDR_Pos 0UL +#define CPUSS_V2_CM0_PC1_HANDLER_ADDR_Msk 0xFFFFFFFFUL +/* CPUSS.CM0_PC2_HANDLER */ +#define CPUSS_V2_CM0_PC2_HANDLER_ADDR_Pos 0UL +#define CPUSS_V2_CM0_PC2_HANDLER_ADDR_Msk 0xFFFFFFFFUL +/* CPUSS.CM0_PC3_HANDLER */ +#define CPUSS_V2_CM0_PC3_HANDLER_ADDR_Pos 0UL +#define CPUSS_V2_CM0_PC3_HANDLER_ADDR_Msk 0xFFFFFFFFUL +/* CPUSS.PROTECTION */ +#define CPUSS_V2_PROTECTION_STATE_Pos 0UL +#define CPUSS_V2_PROTECTION_STATE_Msk 0x7UL +/* CPUSS.TRIM_ROM_CTL */ +#define CPUSS_V2_TRIM_ROM_CTL_TRIM_Pos 0UL +#define CPUSS_V2_TRIM_ROM_CTL_TRIM_Msk 0xFFFFFFFFUL +/* CPUSS.TRIM_RAM_CTL */ +#define CPUSS_V2_TRIM_RAM_CTL_TRIM_Pos 0UL +#define CPUSS_V2_TRIM_RAM_CTL_TRIM_Msk 0xFFFFFFFFUL +/* CPUSS.CM0_SYSTEM_INT_CTL */ +#define CPUSS_V2_CM0_SYSTEM_INT_CTL_CPU_INT_IDX_Pos 0UL +#define CPUSS_V2_CM0_SYSTEM_INT_CTL_CPU_INT_IDX_Msk 0x7UL +#define CPUSS_V2_CM0_SYSTEM_INT_CTL_CPU_INT_VALID_Pos 31UL +#define CPUSS_V2_CM0_SYSTEM_INT_CTL_CPU_INT_VALID_Msk 0x80000000UL +/* CPUSS.CM4_SYSTEM_INT_CTL */ +#define CPUSS_V2_CM4_SYSTEM_INT_CTL_CPU_INT_IDX_Pos 0UL +#define CPUSS_V2_CM4_SYSTEM_INT_CTL_CPU_INT_IDX_Msk 0x7UL +#define CPUSS_V2_CM4_SYSTEM_INT_CTL_CPU_INT_VALID_Pos 31UL +#define CPUSS_V2_CM4_SYSTEM_INT_CTL_CPU_INT_VALID_Msk 0x80000000UL + + +#endif /* _CYIP_CPUSS_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto.h new file mode 100644 index 00000000000..770a051ce47 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto.h @@ -0,0 +1,384 @@ +/***************************************************************************//** +* \file cyip_crypto.h +* +* \brief +* CRYPTO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CRYPTO_H_ +#define _CYIP_CRYPTO_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_SECTION_SIZE 0x00010000UL + +/** + * \brief Cryptography component (CRYPTO) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IOM uint32_t RAM_PWRUP_DELAY; /*!< 0x00000008 Power up delay used for SRAM power domain */ + __IM uint32_t RESERVED[5]; + __IM uint32_t ERROR_STATUS0; /*!< 0x00000020 Error status 0 */ + __IOM uint32_t ERROR_STATUS1; /*!< 0x00000024 Error status 1 */ + __IM uint32_t RESERVED1[6]; + __IOM uint32_t INSTR_FF_CTL; /*!< 0x00000040 Instruction FIFO control */ + __IM uint32_t INSTR_FF_STATUS; /*!< 0x00000044 Instruction FIFO status */ + __OM uint32_t INSTR_FF_WR; /*!< 0x00000048 Instruction FIFO write */ + __IM uint32_t RESERVED2[13]; + __IM uint32_t RF_DATA[16]; /*!< 0x00000080 Register-file */ + __IM uint32_t RESERVED3[16]; + __IOM uint32_t AES_CTL; /*!< 0x00000100 AES control */ + __IM uint32_t RESERVED4[31]; + __IM uint32_t STR_RESULT; /*!< 0x00000180 String result */ + __IM uint32_t RESERVED5[31]; + __IOM uint32_t PR_LFSR_CTL0; /*!< 0x00000200 Pseudo random LFSR control 0 */ + __IOM uint32_t PR_LFSR_CTL1; /*!< 0x00000204 Pseudo random LFSR control 1 */ + __IOM uint32_t PR_LFSR_CTL2; /*!< 0x00000208 Pseudo random LFSR control 2 */ + __IM uint32_t RESERVED6; + __IOM uint32_t PR_RESULT; /*!< 0x00000210 Pseudo random result */ + __IM uint32_t RESERVED7[27]; + __IOM uint32_t TR_CTL0; /*!< 0x00000280 True random control 0 */ + __IOM uint32_t TR_CTL1; /*!< 0x00000284 True random control 1 */ + __IOM uint32_t TR_RESULT; /*!< 0x00000288 True random result */ + __IM uint32_t RESERVED8[5]; + __IOM uint32_t TR_GARO_CTL; /*!< 0x000002A0 True random GARO control */ + __IOM uint32_t TR_FIRO_CTL; /*!< 0x000002A4 True random FIRO control */ + __IM uint32_t RESERVED9[6]; + __IOM uint32_t TR_MON_CTL; /*!< 0x000002C0 True random monitor control */ + __IM uint32_t RESERVED10; + __IOM uint32_t TR_MON_CMD; /*!< 0x000002C8 True random monitor command */ + __IM uint32_t RESERVED11; + __IOM uint32_t TR_MON_RC_CTL; /*!< 0x000002D0 True random monitor RC control */ + __IM uint32_t RESERVED12; + __IM uint32_t TR_MON_RC_STATUS0; /*!< 0x000002D8 True random monitor RC status 0 */ + __IM uint32_t TR_MON_RC_STATUS1; /*!< 0x000002DC True random monitor RC status 1 */ + __IOM uint32_t TR_MON_AP_CTL; /*!< 0x000002E0 True random monitor AP control */ + __IM uint32_t RESERVED13; + __IM uint32_t TR_MON_AP_STATUS0; /*!< 0x000002E8 True random monitor AP status 0 */ + __IM uint32_t TR_MON_AP_STATUS1; /*!< 0x000002EC True random monitor AP status 1 */ + __IM uint32_t RESERVED14[4]; + __IOM uint32_t SHA_CTL; /*!< 0x00000300 SHA control */ + __IM uint32_t RESERVED15[63]; + __IOM uint32_t CRC_CTL; /*!< 0x00000400 CRC control */ + __IM uint32_t RESERVED16[3]; + __IOM uint32_t CRC_DATA_CTL; /*!< 0x00000410 CRC data control */ + __IM uint32_t RESERVED17[3]; + __IOM uint32_t CRC_POL_CTL; /*!< 0x00000420 CRC polynomial control */ + __IM uint32_t RESERVED18[3]; + __IOM uint32_t CRC_LFSR_CTL; /*!< 0x00000430 CRC LFSR control */ + __IM uint32_t RESERVED19[3]; + __IOM uint32_t CRC_REM_CTL; /*!< 0x00000440 CRC remainder control */ + __IM uint32_t RESERVED20; + __IM uint32_t CRC_REM_RESULT; /*!< 0x00000448 CRC remainder result */ + __IM uint32_t RESERVED21[13]; + __IOM uint32_t VU_CTL0; /*!< 0x00000480 Vector unit control 0 */ + __IOM uint32_t VU_CTL1; /*!< 0x00000484 Vector unit control 1 */ + __IM uint32_t RESERVED22[2]; + __IM uint32_t VU_STATUS; /*!< 0x00000490 Vector unit status */ + __IM uint32_t RESERVED23[203]; + __IOM uint32_t INTR; /*!< 0x000007C0 Interrupt register */ + __IOM uint32_t INTR_SET; /*!< 0x000007C4 Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x000007C8 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x000007CC Interrupt masked register */ + __IM uint32_t RESERVED24[3596]; + __IOM uint32_t MEM_BUFF[4096]; /*!< 0x00004000 Memory buffer */ +} CRYPTO_V1_Type; /*!< Size = 32768 (0x8000) */ + + +/* CRYPTO.CTL */ +#define CRYPTO_CTL_PWR_MODE_Pos 0UL +#define CRYPTO_CTL_PWR_MODE_Msk 0x3UL +#define CRYPTO_CTL_ENABLED_Pos 31UL +#define CRYPTO_CTL_ENABLED_Msk 0x80000000UL +/* CRYPTO.STATUS */ +#define CRYPTO_STATUS_AES_BUSY_Pos 0UL +#define CRYPTO_STATUS_AES_BUSY_Msk 0x1UL +#define CRYPTO_STATUS_DES_BUSY_Pos 1UL +#define CRYPTO_STATUS_DES_BUSY_Msk 0x2UL +#define CRYPTO_STATUS_SHA_BUSY_Pos 2UL +#define CRYPTO_STATUS_SHA_BUSY_Msk 0x4UL +#define CRYPTO_STATUS_CRC_BUSY_Pos 3UL +#define CRYPTO_STATUS_CRC_BUSY_Msk 0x8UL +#define CRYPTO_STATUS_STR_BUSY_Pos 4UL +#define CRYPTO_STATUS_STR_BUSY_Msk 0x10UL +#define CRYPTO_STATUS_PR_BUSY_Pos 5UL +#define CRYPTO_STATUS_PR_BUSY_Msk 0x20UL +#define CRYPTO_STATUS_TR_BUSY_Pos 6UL +#define CRYPTO_STATUS_TR_BUSY_Msk 0x40UL +#define CRYPTO_STATUS_VU_BUSY_Pos 7UL +#define CRYPTO_STATUS_VU_BUSY_Msk 0x80UL +#define CRYPTO_STATUS_CMD_FF_BUSY_Pos 31UL +#define CRYPTO_STATUS_CMD_FF_BUSY_Msk 0x80000000UL +/* CRYPTO.RAM_PWRUP_DELAY */ +#define CRYPTO_RAM_PWRUP_DELAY_PWRUP_DELAY_Pos 0UL +#define CRYPTO_RAM_PWRUP_DELAY_PWRUP_DELAY_Msk 0x3FFUL +/* CRYPTO.ERROR_STATUS0 */ +#define CRYPTO_ERROR_STATUS0_DATA32_Pos 0UL +#define CRYPTO_ERROR_STATUS0_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.ERROR_STATUS1 */ +#define CRYPTO_ERROR_STATUS1_DATA23_Pos 0UL +#define CRYPTO_ERROR_STATUS1_DATA23_Msk 0xFFFFFFUL +#define CRYPTO_ERROR_STATUS1_IDX_Pos 24UL +#define CRYPTO_ERROR_STATUS1_IDX_Msk 0x7000000UL +#define CRYPTO_ERROR_STATUS1_VALID_Pos 31UL +#define CRYPTO_ERROR_STATUS1_VALID_Msk 0x80000000UL +/* CRYPTO.INSTR_FF_CTL */ +#define CRYPTO_INSTR_FF_CTL_EVENT_LEVEL_Pos 0UL +#define CRYPTO_INSTR_FF_CTL_EVENT_LEVEL_Msk 0x7UL +#define CRYPTO_INSTR_FF_CTL_CLEAR_Pos 16UL +#define CRYPTO_INSTR_FF_CTL_CLEAR_Msk 0x10000UL +#define CRYPTO_INSTR_FF_CTL_BLOCK_Pos 17UL +#define CRYPTO_INSTR_FF_CTL_BLOCK_Msk 0x20000UL +/* CRYPTO.INSTR_FF_STATUS */ +#define CRYPTO_INSTR_FF_STATUS_USED_Pos 0UL +#define CRYPTO_INSTR_FF_STATUS_USED_Msk 0xFUL +#define CRYPTO_INSTR_FF_STATUS_EVENT_Pos 16UL +#define CRYPTO_INSTR_FF_STATUS_EVENT_Msk 0x10000UL +#define CRYPTO_INSTR_FF_STATUS_BUSY_Pos 31UL +#define CRYPTO_INSTR_FF_STATUS_BUSY_Msk 0x80000000UL +/* CRYPTO.INSTR_FF_WR */ +#define CRYPTO_INSTR_FF_WR_DATA32_Pos 0UL +#define CRYPTO_INSTR_FF_WR_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.RF_DATA */ +#define CRYPTO_RF_DATA_DATA32_Pos 0UL +#define CRYPTO_RF_DATA_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.AES_CTL */ +#define CRYPTO_AES_CTL_KEY_SIZE_Pos 0UL +#define CRYPTO_AES_CTL_KEY_SIZE_Msk 0x3UL +/* CRYPTO.STR_RESULT */ +#define CRYPTO_STR_RESULT_MEMCMP_Pos 0UL +#define CRYPTO_STR_RESULT_MEMCMP_Msk 0x1UL +/* CRYPTO.PR_LFSR_CTL0 */ +#define CRYPTO_PR_LFSR_CTL0_LFSR32_Pos 0UL +#define CRYPTO_PR_LFSR_CTL0_LFSR32_Msk 0xFFFFFFFFUL +/* CRYPTO.PR_LFSR_CTL1 */ +#define CRYPTO_PR_LFSR_CTL1_LFSR31_Pos 0UL +#define CRYPTO_PR_LFSR_CTL1_LFSR31_Msk 0x7FFFFFFFUL +/* CRYPTO.PR_LFSR_CTL2 */ +#define CRYPTO_PR_LFSR_CTL2_LFSR29_Pos 0UL +#define CRYPTO_PR_LFSR_CTL2_LFSR29_Msk 0x1FFFFFFFUL +/* CRYPTO.PR_RESULT */ +#define CRYPTO_PR_RESULT_DATA32_Pos 0UL +#define CRYPTO_PR_RESULT_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.TR_CTL0 */ +#define CRYPTO_TR_CTL0_SAMPLE_CLOCK_DIV_Pos 0UL +#define CRYPTO_TR_CTL0_SAMPLE_CLOCK_DIV_Msk 0xFFUL +#define CRYPTO_TR_CTL0_RED_CLOCK_DIV_Pos 8UL +#define CRYPTO_TR_CTL0_RED_CLOCK_DIV_Msk 0xFF00UL +#define CRYPTO_TR_CTL0_INIT_DELAY_Pos 16UL +#define CRYPTO_TR_CTL0_INIT_DELAY_Msk 0xFF0000UL +#define CRYPTO_TR_CTL0_VON_NEUMANN_CORR_Pos 24UL +#define CRYPTO_TR_CTL0_VON_NEUMANN_CORR_Msk 0x1000000UL +#define CRYPTO_TR_CTL0_STOP_ON_AP_DETECT_Pos 28UL +#define CRYPTO_TR_CTL0_STOP_ON_AP_DETECT_Msk 0x10000000UL +#define CRYPTO_TR_CTL0_STOP_ON_RC_DETECT_Pos 29UL +#define CRYPTO_TR_CTL0_STOP_ON_RC_DETECT_Msk 0x20000000UL +/* CRYPTO.TR_CTL1 */ +#define CRYPTO_TR_CTL1_RO11_EN_Pos 0UL +#define CRYPTO_TR_CTL1_RO11_EN_Msk 0x1UL +#define CRYPTO_TR_CTL1_RO15_EN_Pos 1UL +#define CRYPTO_TR_CTL1_RO15_EN_Msk 0x2UL +#define CRYPTO_TR_CTL1_GARO15_EN_Pos 2UL +#define CRYPTO_TR_CTL1_GARO15_EN_Msk 0x4UL +#define CRYPTO_TR_CTL1_GARO31_EN_Pos 3UL +#define CRYPTO_TR_CTL1_GARO31_EN_Msk 0x8UL +#define CRYPTO_TR_CTL1_FIRO15_EN_Pos 4UL +#define CRYPTO_TR_CTL1_FIRO15_EN_Msk 0x10UL +#define CRYPTO_TR_CTL1_FIRO31_EN_Pos 5UL +#define CRYPTO_TR_CTL1_FIRO31_EN_Msk 0x20UL +/* CRYPTO.TR_RESULT */ +#define CRYPTO_TR_RESULT_DATA32_Pos 0UL +#define CRYPTO_TR_RESULT_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.TR_GARO_CTL */ +#define CRYPTO_TR_GARO_CTL_POLYNOMIAL31_Pos 0UL +#define CRYPTO_TR_GARO_CTL_POLYNOMIAL31_Msk 0x7FFFFFFFUL +/* CRYPTO.TR_FIRO_CTL */ +#define CRYPTO_TR_FIRO_CTL_POLYNOMIAL31_Pos 0UL +#define CRYPTO_TR_FIRO_CTL_POLYNOMIAL31_Msk 0x7FFFFFFFUL +/* CRYPTO.TR_MON_CTL */ +#define CRYPTO_TR_MON_CTL_BITSTREAM_SEL_Pos 0UL +#define CRYPTO_TR_MON_CTL_BITSTREAM_SEL_Msk 0x3UL +/* CRYPTO.TR_MON_CMD */ +#define CRYPTO_TR_MON_CMD_START_AP_Pos 0UL +#define CRYPTO_TR_MON_CMD_START_AP_Msk 0x1UL +#define CRYPTO_TR_MON_CMD_START_RC_Pos 1UL +#define CRYPTO_TR_MON_CMD_START_RC_Msk 0x2UL +/* CRYPTO.TR_MON_RC_CTL */ +#define CRYPTO_TR_MON_RC_CTL_CUTOFF_COUNT8_Pos 0UL +#define CRYPTO_TR_MON_RC_CTL_CUTOFF_COUNT8_Msk 0xFFUL +/* CRYPTO.TR_MON_RC_STATUS0 */ +#define CRYPTO_TR_MON_RC_STATUS0_BIT_Pos 0UL +#define CRYPTO_TR_MON_RC_STATUS0_BIT_Msk 0x1UL +/* CRYPTO.TR_MON_RC_STATUS1 */ +#define CRYPTO_TR_MON_RC_STATUS1_REP_COUNT_Pos 0UL +#define CRYPTO_TR_MON_RC_STATUS1_REP_COUNT_Msk 0xFFUL +/* CRYPTO.TR_MON_AP_CTL */ +#define CRYPTO_TR_MON_AP_CTL_CUTOFF_COUNT16_Pos 0UL +#define CRYPTO_TR_MON_AP_CTL_CUTOFF_COUNT16_Msk 0xFFFFUL +#define CRYPTO_TR_MON_AP_CTL_WINDOW_SIZE_Pos 16UL +#define CRYPTO_TR_MON_AP_CTL_WINDOW_SIZE_Msk 0xFFFF0000UL +/* CRYPTO.TR_MON_AP_STATUS0 */ +#define CRYPTO_TR_MON_AP_STATUS0_BIT_Pos 0UL +#define CRYPTO_TR_MON_AP_STATUS0_BIT_Msk 0x1UL +/* CRYPTO.TR_MON_AP_STATUS1 */ +#define CRYPTO_TR_MON_AP_STATUS1_OCC_COUNT_Pos 0UL +#define CRYPTO_TR_MON_AP_STATUS1_OCC_COUNT_Msk 0xFFFFUL +#define CRYPTO_TR_MON_AP_STATUS1_WINDOW_INDEX_Pos 16UL +#define CRYPTO_TR_MON_AP_STATUS1_WINDOW_INDEX_Msk 0xFFFF0000UL +/* CRYPTO.SHA_CTL */ +#define CRYPTO_SHA_CTL_MODE_Pos 0UL +#define CRYPTO_SHA_CTL_MODE_Msk 0x7UL +/* CRYPTO.CRC_CTL */ +#define CRYPTO_CRC_CTL_DATA_REVERSE_Pos 0UL +#define CRYPTO_CRC_CTL_DATA_REVERSE_Msk 0x1UL +#define CRYPTO_CRC_CTL_REM_REVERSE_Pos 8UL +#define CRYPTO_CRC_CTL_REM_REVERSE_Msk 0x100UL +/* CRYPTO.CRC_DATA_CTL */ +#define CRYPTO_CRC_DATA_CTL_DATA_XOR_Pos 0UL +#define CRYPTO_CRC_DATA_CTL_DATA_XOR_Msk 0xFFUL +/* CRYPTO.CRC_POL_CTL */ +#define CRYPTO_CRC_POL_CTL_POLYNOMIAL_Pos 0UL +#define CRYPTO_CRC_POL_CTL_POLYNOMIAL_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_LFSR_CTL */ +#define CRYPTO_CRC_LFSR_CTL_LFSR32_Pos 0UL +#define CRYPTO_CRC_LFSR_CTL_LFSR32_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_REM_CTL */ +#define CRYPTO_CRC_REM_CTL_REM_XOR_Pos 0UL +#define CRYPTO_CRC_REM_CTL_REM_XOR_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_REM_RESULT */ +#define CRYPTO_CRC_REM_RESULT_REM_Pos 0UL +#define CRYPTO_CRC_REM_RESULT_REM_Msk 0xFFFFFFFFUL +/* CRYPTO.VU_CTL0 */ +#define CRYPTO_VU_CTL0_ALWAYS_EXECUTE_Pos 0UL +#define CRYPTO_VU_CTL0_ALWAYS_EXECUTE_Msk 0x1UL +/* CRYPTO.VU_CTL1 */ +#define CRYPTO_VU_CTL1_ADDR_Pos 14UL +#define CRYPTO_VU_CTL1_ADDR_Msk 0xFFFFC000UL +/* CRYPTO.VU_STATUS */ +#define CRYPTO_VU_STATUS_CARRY_Pos 0UL +#define CRYPTO_VU_STATUS_CARRY_Msk 0x1UL +#define CRYPTO_VU_STATUS_EVEN_Pos 1UL +#define CRYPTO_VU_STATUS_EVEN_Msk 0x2UL +#define CRYPTO_VU_STATUS_ZERO_Pos 2UL +#define CRYPTO_VU_STATUS_ZERO_Msk 0x4UL +#define CRYPTO_VU_STATUS_ONE_Pos 3UL +#define CRYPTO_VU_STATUS_ONE_Msk 0x8UL +/* CRYPTO.INTR */ +#define CRYPTO_INTR_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_INTR_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_INTR_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_INTR_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_INTR_TR_INITIALIZED_Pos 2UL +#define CRYPTO_INTR_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_INTR_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_INTR_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_INTR_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_INTR_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_INTR_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_INTR_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_INTR_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_INTR_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_INTR_BUS_ERROR_Pos 18UL +#define CRYPTO_INTR_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_INTR_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_INTR_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_INTR_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_INTR_TR_RC_DETECT_ERROR_Msk 0x100000UL +/* CRYPTO.INTR_SET */ +#define CRYPTO_INTR_SET_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_INTR_SET_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_INTR_SET_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_INTR_SET_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_INTR_SET_TR_INITIALIZED_Pos 2UL +#define CRYPTO_INTR_SET_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_INTR_SET_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_INTR_SET_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_INTR_SET_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_INTR_SET_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_INTR_SET_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_INTR_SET_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_INTR_SET_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_INTR_SET_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_INTR_SET_BUS_ERROR_Pos 18UL +#define CRYPTO_INTR_SET_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_INTR_SET_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_INTR_SET_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_INTR_SET_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_INTR_SET_TR_RC_DETECT_ERROR_Msk 0x100000UL +/* CRYPTO.INTR_MASK */ +#define CRYPTO_INTR_MASK_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_INTR_MASK_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_INTR_MASK_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_INTR_MASK_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_INTR_MASK_TR_INITIALIZED_Pos 2UL +#define CRYPTO_INTR_MASK_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_INTR_MASK_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_INTR_MASK_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_INTR_MASK_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_INTR_MASK_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_INTR_MASK_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_INTR_MASK_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_INTR_MASK_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_INTR_MASK_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_INTR_MASK_BUS_ERROR_Pos 18UL +#define CRYPTO_INTR_MASK_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_INTR_MASK_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_INTR_MASK_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_INTR_MASK_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_INTR_MASK_TR_RC_DETECT_ERROR_Msk 0x100000UL +/* CRYPTO.INTR_MASKED */ +#define CRYPTO_INTR_MASKED_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_INTR_MASKED_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_INTR_MASKED_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_INTR_MASKED_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_INTR_MASKED_TR_INITIALIZED_Pos 2UL +#define CRYPTO_INTR_MASKED_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_INTR_MASKED_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_INTR_MASKED_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_INTR_MASKED_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_INTR_MASKED_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_INTR_MASKED_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_INTR_MASKED_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_INTR_MASKED_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_INTR_MASKED_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_INTR_MASKED_BUS_ERROR_Pos 18UL +#define CRYPTO_INTR_MASKED_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_INTR_MASKED_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_INTR_MASKED_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_INTR_MASKED_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_INTR_MASKED_TR_RC_DETECT_ERROR_Msk 0x100000UL +/* CRYPTO.MEM_BUFF */ +#define CRYPTO_MEM_BUFF_DATA32_Pos 0UL +#define CRYPTO_MEM_BUFF_DATA32_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_CRYPTO_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto_v2.h new file mode 100644 index 00000000000..36ba2ff95a5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_crypto_v2.h @@ -0,0 +1,463 @@ +/***************************************************************************//** +* \file cyip_crypto_v2.h +* +* \brief +* CRYPTO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CRYPTO_V2_H_ +#define _CYIP_CRYPTO_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ + +#define CRYPTO_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Cryptography component (CRYPTO) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED; + __IOM uint32_t RAM_PWR_CTL; /*!< 0x00000008 SRAM power control */ + __IOM uint32_t RAM_PWR_DELAY_CTL; /*!< 0x0000000C SRAM power delay control */ + __IOM uint32_t ECC_CTL; /*!< 0x00000010 ECC control */ + __IM uint32_t RESERVED1[3]; + __IM uint32_t ERROR_STATUS0; /*!< 0x00000020 Error status 0 */ + __IOM uint32_t ERROR_STATUS1; /*!< 0x00000024 Error status 1 */ + __IM uint32_t RESERVED2[54]; + __IOM uint32_t INTR; /*!< 0x00000100 Interrupt register */ + __IOM uint32_t INTR_SET; /*!< 0x00000104 Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000108 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x0000010C Interrupt masked register */ + __IM uint32_t RESERVED3[60]; + __IOM uint32_t PR_LFSR_CTL0; /*!< 0x00000200 Pseudo random LFSR control 0 */ + __IOM uint32_t PR_LFSR_CTL1; /*!< 0x00000204 Pseudo random LFSR control 1 */ + __IOM uint32_t PR_LFSR_CTL2; /*!< 0x00000208 Pseudo random LFSR control 2 */ + __IOM uint32_t PR_MAX_CTL; /*!< 0x0000020C Pseudo random maximum control */ + __IOM uint32_t PR_CMD; /*!< 0x00000210 Pseudo random command */ + __IM uint32_t RESERVED4; + __IOM uint32_t PR_RESULT; /*!< 0x00000218 Pseudo random result */ + __IM uint32_t RESERVED5[25]; + __IOM uint32_t TR_CTL0; /*!< 0x00000280 True random control 0 */ + __IOM uint32_t TR_CTL1; /*!< 0x00000284 True random control 1 */ + __IOM uint32_t TR_CTL2; /*!< 0x00000288 True random control 2 */ + __IM uint32_t TR_STATUS; /*!< 0x0000028C True random status */ + __IOM uint32_t TR_CMD; /*!< 0x00000290 True random command */ + __IM uint32_t RESERVED6; + __IOM uint32_t TR_RESULT; /*!< 0x00000298 True random result */ + __IM uint32_t RESERVED7; + __IOM uint32_t TR_GARO_CTL; /*!< 0x000002A0 True random GARO control */ + __IOM uint32_t TR_FIRO_CTL; /*!< 0x000002A4 True random FIRO control */ + __IM uint32_t RESERVED8[6]; + __IOM uint32_t TR_MON_CTL; /*!< 0x000002C0 True random monitor control */ + __IM uint32_t RESERVED9; + __IOM uint32_t TR_MON_CMD; /*!< 0x000002C8 True random monitor command */ + __IM uint32_t RESERVED10; + __IOM uint32_t TR_MON_RC_CTL; /*!< 0x000002D0 True random monitor RC control */ + __IM uint32_t RESERVED11; + __IM uint32_t TR_MON_RC_STATUS0; /*!< 0x000002D8 True random monitor RC status 0 */ + __IM uint32_t TR_MON_RC_STATUS1; /*!< 0x000002DC True random monitor RC status 1 */ + __IOM uint32_t TR_MON_AP_CTL; /*!< 0x000002E0 True random monitor AP control */ + __IM uint32_t RESERVED12; + __IM uint32_t TR_MON_AP_STATUS0; /*!< 0x000002E8 True random monitor AP status 0 */ + __IM uint32_t TR_MON_AP_STATUS1; /*!< 0x000002EC True random monitor AP status 1 */ + __IM uint32_t RESERVED13[837]; + __IM uint32_t STATUS; /*!< 0x00001004 Status */ + __IM uint32_t RESERVED14[14]; + __IOM uint32_t INSTR_FF_CTL; /*!< 0x00001040 Instruction FIFO control */ + __IM uint32_t INSTR_FF_STATUS; /*!< 0x00001044 Instruction FIFO status */ + __OM uint32_t INSTR_FF_WR; /*!< 0x00001048 Instruction FIFO write */ + __IM uint32_t RESERVED15[29]; + __IM uint32_t LOAD0_FF_STATUS; /*!< 0x000010C0 Load 0 FIFO status */ + __IM uint32_t RESERVED16[3]; + __IM uint32_t LOAD1_FF_STATUS; /*!< 0x000010D0 Load 1 FIFO status */ + __IM uint32_t RESERVED17[7]; + __IM uint32_t STORE_FF_STATUS; /*!< 0x000010F0 Store FIFO status */ + __IM uint32_t RESERVED18[3]; + __IOM uint32_t AES_CTL; /*!< 0x00001100 AES control */ + __IM uint32_t RESERVED19[31]; + __IOM uint32_t RESULT; /*!< 0x00001180 Result */ + __IM uint32_t RESERVED20[159]; + __IOM uint32_t CRC_CTL; /*!< 0x00001400 CRC control */ + __IM uint32_t RESERVED21[3]; + __IOM uint32_t CRC_DATA_CTL; /*!< 0x00001410 CRC data control */ + __IM uint32_t RESERVED22[3]; + __IOM uint32_t CRC_POL_CTL; /*!< 0x00001420 CRC polynomial control */ + __IM uint32_t RESERVED23[7]; + __IOM uint32_t CRC_REM_CTL; /*!< 0x00001440 CRC remainder control */ + __IM uint32_t RESERVED24; + __IM uint32_t CRC_REM_RESULT; /*!< 0x00001448 CRC remainder result */ + __IM uint32_t RESERVED25[13]; + __IOM uint32_t VU_CTL0; /*!< 0x00001480 Vector unit control 0 */ + __IOM uint32_t VU_CTL1; /*!< 0x00001484 Vector unit control 1 */ + __IOM uint32_t VU_CTL2; /*!< 0x00001488 Vector unit control 2 */ + __IM uint32_t RESERVED26; + __IM uint32_t VU_STATUS; /*!< 0x00001490 Vector unit status */ + __IM uint32_t RESERVED27[11]; + __IM uint32_t VU_RF_DATA[16]; /*!< 0x000014C0 Vector unit register-file */ + __IM uint32_t RESERVED28[704]; + __IOM uint32_t DEV_KEY_ADDR0_CTL; /*!< 0x00002000 Device key address 0 control */ + __IOM uint32_t DEV_KEY_ADDR0; /*!< 0x00002004 Device key address 0 */ + __IM uint32_t RESERVED29[6]; + __IOM uint32_t DEV_KEY_ADDR1_CTL; /*!< 0x00002020 Device key address 1 control */ + __IOM uint32_t DEV_KEY_ADDR1; /*!< 0x00002024 Device key address 1 control */ + __IM uint32_t RESERVED30[22]; + __IM uint32_t DEV_KEY_STATUS; /*!< 0x00002080 Device key status */ + __IM uint32_t RESERVED31[31]; + __IOM uint32_t DEV_KEY_CTL0; /*!< 0x00002100 Device key control 0 */ + __IM uint32_t RESERVED32[7]; + __IOM uint32_t DEV_KEY_CTL1; /*!< 0x00002120 Device key control 1 */ + __IM uint32_t RESERVED33[6071]; + __IOM uint32_t MEM_BUFF[8192]; /*!< 0x00008000 Memory buffer */ +} CRYPTO_V2_Type; /*!< Size = 65536 (0x10000) */ + + +/* CRYPTO.CTL */ +#define CRYPTO_V2_CTL_P_Pos 0UL +#define CRYPTO_V2_CTL_P_Msk 0x1UL +#define CRYPTO_V2_CTL_NS_Pos 1UL +#define CRYPTO_V2_CTL_NS_Msk 0x2UL +#define CRYPTO_V2_CTL_PC_Pos 4UL +#define CRYPTO_V2_CTL_PC_Msk 0xF0UL +#define CRYPTO_V2_CTL_ECC_EN_Pos 16UL +#define CRYPTO_V2_CTL_ECC_EN_Msk 0x10000UL +#define CRYPTO_V2_CTL_ECC_INJ_EN_Pos 17UL +#define CRYPTO_V2_CTL_ECC_INJ_EN_Msk 0x20000UL +#define CRYPTO_V2_CTL_ENABLED_Pos 31UL +#define CRYPTO_V2_CTL_ENABLED_Msk 0x80000000UL +/* CRYPTO.RAM_PWR_CTL */ +#define CRYPTO_V2_RAM_PWR_CTL_PWR_MODE_Pos 0UL +#define CRYPTO_V2_RAM_PWR_CTL_PWR_MODE_Msk 0x3UL +/* CRYPTO.RAM_PWR_DELAY_CTL */ +#define CRYPTO_V2_RAM_PWR_DELAY_CTL_UP_Pos 0UL +#define CRYPTO_V2_RAM_PWR_DELAY_CTL_UP_Msk 0x3FFUL +/* CRYPTO.ECC_CTL */ +#define CRYPTO_V2_ECC_CTL_WORD_ADDR_Pos 0UL +#define CRYPTO_V2_ECC_CTL_WORD_ADDR_Msk 0x1FFFUL +#define CRYPTO_V2_ECC_CTL_PARITY_Pos 25UL +#define CRYPTO_V2_ECC_CTL_PARITY_Msk 0xFE000000UL +/* CRYPTO.ERROR_STATUS0 */ +#define CRYPTO_V2_ERROR_STATUS0_DATA32_Pos 0UL +#define CRYPTO_V2_ERROR_STATUS0_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.ERROR_STATUS1 */ +#define CRYPTO_V2_ERROR_STATUS1_DATA24_Pos 0UL +#define CRYPTO_V2_ERROR_STATUS1_DATA24_Msk 0xFFFFFFUL +#define CRYPTO_V2_ERROR_STATUS1_IDX_Pos 24UL +#define CRYPTO_V2_ERROR_STATUS1_IDX_Msk 0x7000000UL +#define CRYPTO_V2_ERROR_STATUS1_VALID_Pos 31UL +#define CRYPTO_V2_ERROR_STATUS1_VALID_Msk 0x80000000UL +/* CRYPTO.INTR */ +#define CRYPTO_V2_INTR_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_V2_INTR_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_V2_INTR_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_V2_INTR_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_V2_INTR_TR_INITIALIZED_Pos 2UL +#define CRYPTO_V2_INTR_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_V2_INTR_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_V2_INTR_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_V2_INTR_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_V2_INTR_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_V2_INTR_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_V2_INTR_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_V2_INTR_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_V2_INTR_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_V2_INTR_BUS_ERROR_Pos 18UL +#define CRYPTO_V2_INTR_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_V2_INTR_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_V2_INTR_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_V2_INTR_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_V2_INTR_TR_RC_DETECT_ERROR_Msk 0x100000UL +#define CRYPTO_V2_INTR_INSTR_DEV_KEY_ERROR_Pos 21UL +#define CRYPTO_V2_INTR_INSTR_DEV_KEY_ERROR_Msk 0x200000UL +/* CRYPTO.INTR_SET */ +#define CRYPTO_V2_INTR_SET_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_V2_INTR_SET_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_V2_INTR_SET_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_V2_INTR_SET_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_V2_INTR_SET_TR_INITIALIZED_Pos 2UL +#define CRYPTO_V2_INTR_SET_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_V2_INTR_SET_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_V2_INTR_SET_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_V2_INTR_SET_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_V2_INTR_SET_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_V2_INTR_SET_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_V2_INTR_SET_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_V2_INTR_SET_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_V2_INTR_SET_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_V2_INTR_SET_BUS_ERROR_Pos 18UL +#define CRYPTO_V2_INTR_SET_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_V2_INTR_SET_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_V2_INTR_SET_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_V2_INTR_SET_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_V2_INTR_SET_TR_RC_DETECT_ERROR_Msk 0x100000UL +#define CRYPTO_V2_INTR_SET_INSTR_DEV_KEY_ERROR_Pos 21UL +#define CRYPTO_V2_INTR_SET_INSTR_DEV_KEY_ERROR_Msk 0x200000UL +/* CRYPTO.INTR_MASK */ +#define CRYPTO_V2_INTR_MASK_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_V2_INTR_MASK_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_V2_INTR_MASK_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_V2_INTR_MASK_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_V2_INTR_MASK_TR_INITIALIZED_Pos 2UL +#define CRYPTO_V2_INTR_MASK_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_V2_INTR_MASK_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_V2_INTR_MASK_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_V2_INTR_MASK_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_V2_INTR_MASK_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_V2_INTR_MASK_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_V2_INTR_MASK_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_V2_INTR_MASK_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_V2_INTR_MASK_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_V2_INTR_MASK_BUS_ERROR_Pos 18UL +#define CRYPTO_V2_INTR_MASK_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_V2_INTR_MASK_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_V2_INTR_MASK_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_V2_INTR_MASK_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_V2_INTR_MASK_TR_RC_DETECT_ERROR_Msk 0x100000UL +#define CRYPTO_V2_INTR_MASK_INSTR_DEV_KEY_ERROR_Pos 21UL +#define CRYPTO_V2_INTR_MASK_INSTR_DEV_KEY_ERROR_Msk 0x200000UL +/* CRYPTO.INTR_MASKED */ +#define CRYPTO_V2_INTR_MASKED_INSTR_FF_LEVEL_Pos 0UL +#define CRYPTO_V2_INTR_MASKED_INSTR_FF_LEVEL_Msk 0x1UL +#define CRYPTO_V2_INTR_MASKED_INSTR_FF_OVERFLOW_Pos 1UL +#define CRYPTO_V2_INTR_MASKED_INSTR_FF_OVERFLOW_Msk 0x2UL +#define CRYPTO_V2_INTR_MASKED_TR_INITIALIZED_Pos 2UL +#define CRYPTO_V2_INTR_MASKED_TR_INITIALIZED_Msk 0x4UL +#define CRYPTO_V2_INTR_MASKED_TR_DATA_AVAILABLE_Pos 3UL +#define CRYPTO_V2_INTR_MASKED_TR_DATA_AVAILABLE_Msk 0x8UL +#define CRYPTO_V2_INTR_MASKED_PR_DATA_AVAILABLE_Pos 4UL +#define CRYPTO_V2_INTR_MASKED_PR_DATA_AVAILABLE_Msk 0x10UL +#define CRYPTO_V2_INTR_MASKED_INSTR_OPC_ERROR_Pos 16UL +#define CRYPTO_V2_INTR_MASKED_INSTR_OPC_ERROR_Msk 0x10000UL +#define CRYPTO_V2_INTR_MASKED_INSTR_CC_ERROR_Pos 17UL +#define CRYPTO_V2_INTR_MASKED_INSTR_CC_ERROR_Msk 0x20000UL +#define CRYPTO_V2_INTR_MASKED_BUS_ERROR_Pos 18UL +#define CRYPTO_V2_INTR_MASKED_BUS_ERROR_Msk 0x40000UL +#define CRYPTO_V2_INTR_MASKED_TR_AP_DETECT_ERROR_Pos 19UL +#define CRYPTO_V2_INTR_MASKED_TR_AP_DETECT_ERROR_Msk 0x80000UL +#define CRYPTO_V2_INTR_MASKED_TR_RC_DETECT_ERROR_Pos 20UL +#define CRYPTO_V2_INTR_MASKED_TR_RC_DETECT_ERROR_Msk 0x100000UL +#define CRYPTO_V2_INTR_MASKED_INSTR_DEV_KEY_ERROR_Pos 21UL +#define CRYPTO_V2_INTR_MASKED_INSTR_DEV_KEY_ERROR_Msk 0x200000UL +/* CRYPTO.PR_LFSR_CTL0 */ +#define CRYPTO_V2_PR_LFSR_CTL0_LFSR32_Pos 0UL +#define CRYPTO_V2_PR_LFSR_CTL0_LFSR32_Msk 0xFFFFFFFFUL +/* CRYPTO.PR_LFSR_CTL1 */ +#define CRYPTO_V2_PR_LFSR_CTL1_LFSR31_Pos 0UL +#define CRYPTO_V2_PR_LFSR_CTL1_LFSR31_Msk 0x7FFFFFFFUL +/* CRYPTO.PR_LFSR_CTL2 */ +#define CRYPTO_V2_PR_LFSR_CTL2_LFSR29_Pos 0UL +#define CRYPTO_V2_PR_LFSR_CTL2_LFSR29_Msk 0x1FFFFFFFUL +/* CRYPTO.PR_MAX_CTL */ +#define CRYPTO_V2_PR_MAX_CTL_DATA32_Pos 0UL +#define CRYPTO_V2_PR_MAX_CTL_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.PR_CMD */ +#define CRYPTO_V2_PR_CMD_START_Pos 0UL +#define CRYPTO_V2_PR_CMD_START_Msk 0x1UL +/* CRYPTO.PR_RESULT */ +#define CRYPTO_V2_PR_RESULT_DATA32_Pos 0UL +#define CRYPTO_V2_PR_RESULT_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.TR_CTL0 */ +#define CRYPTO_V2_TR_CTL0_SAMPLE_CLOCK_DIV_Pos 0UL +#define CRYPTO_V2_TR_CTL0_SAMPLE_CLOCK_DIV_Msk 0xFFUL +#define CRYPTO_V2_TR_CTL0_RED_CLOCK_DIV_Pos 8UL +#define CRYPTO_V2_TR_CTL0_RED_CLOCK_DIV_Msk 0xFF00UL +#define CRYPTO_V2_TR_CTL0_INIT_DELAY_Pos 16UL +#define CRYPTO_V2_TR_CTL0_INIT_DELAY_Msk 0xFF0000UL +#define CRYPTO_V2_TR_CTL0_VON_NEUMANN_CORR_Pos 24UL +#define CRYPTO_V2_TR_CTL0_VON_NEUMANN_CORR_Msk 0x1000000UL +#define CRYPTO_V2_TR_CTL0_STOP_ON_AP_DETECT_Pos 28UL +#define CRYPTO_V2_TR_CTL0_STOP_ON_AP_DETECT_Msk 0x10000000UL +#define CRYPTO_V2_TR_CTL0_STOP_ON_RC_DETECT_Pos 29UL +#define CRYPTO_V2_TR_CTL0_STOP_ON_RC_DETECT_Msk 0x20000000UL +/* CRYPTO.TR_CTL1 */ +#define CRYPTO_V2_TR_CTL1_RO11_EN_Pos 0UL +#define CRYPTO_V2_TR_CTL1_RO11_EN_Msk 0x1UL +#define CRYPTO_V2_TR_CTL1_RO15_EN_Pos 1UL +#define CRYPTO_V2_TR_CTL1_RO15_EN_Msk 0x2UL +#define CRYPTO_V2_TR_CTL1_GARO15_EN_Pos 2UL +#define CRYPTO_V2_TR_CTL1_GARO15_EN_Msk 0x4UL +#define CRYPTO_V2_TR_CTL1_GARO31_EN_Pos 3UL +#define CRYPTO_V2_TR_CTL1_GARO31_EN_Msk 0x8UL +#define CRYPTO_V2_TR_CTL1_FIRO15_EN_Pos 4UL +#define CRYPTO_V2_TR_CTL1_FIRO15_EN_Msk 0x10UL +#define CRYPTO_V2_TR_CTL1_FIRO31_EN_Pos 5UL +#define CRYPTO_V2_TR_CTL1_FIRO31_EN_Msk 0x20UL +/* CRYPTO.TR_CTL2 */ +#define CRYPTO_V2_TR_CTL2_SIZE_Pos 0UL +#define CRYPTO_V2_TR_CTL2_SIZE_Msk 0x3FUL +/* CRYPTO.TR_STATUS */ +#define CRYPTO_V2_TR_STATUS_INITIALIZED_Pos 0UL +#define CRYPTO_V2_TR_STATUS_INITIALIZED_Msk 0x1UL +/* CRYPTO.TR_CMD */ +#define CRYPTO_V2_TR_CMD_START_Pos 0UL +#define CRYPTO_V2_TR_CMD_START_Msk 0x1UL +/* CRYPTO.TR_RESULT */ +#define CRYPTO_V2_TR_RESULT_DATA32_Pos 0UL +#define CRYPTO_V2_TR_RESULT_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.TR_GARO_CTL */ +#define CRYPTO_V2_TR_GARO_CTL_POLYNOMIAL31_Pos 0UL +#define CRYPTO_V2_TR_GARO_CTL_POLYNOMIAL31_Msk 0x7FFFFFFFUL +/* CRYPTO.TR_FIRO_CTL */ +#define CRYPTO_V2_TR_FIRO_CTL_POLYNOMIAL31_Pos 0UL +#define CRYPTO_V2_TR_FIRO_CTL_POLYNOMIAL31_Msk 0x7FFFFFFFUL +/* CRYPTO.TR_MON_CTL */ +#define CRYPTO_V2_TR_MON_CTL_BITSTREAM_SEL_Pos 0UL +#define CRYPTO_V2_TR_MON_CTL_BITSTREAM_SEL_Msk 0x3UL +/* CRYPTO.TR_MON_CMD */ +#define CRYPTO_V2_TR_MON_CMD_START_AP_Pos 0UL +#define CRYPTO_V2_TR_MON_CMD_START_AP_Msk 0x1UL +#define CRYPTO_V2_TR_MON_CMD_START_RC_Pos 1UL +#define CRYPTO_V2_TR_MON_CMD_START_RC_Msk 0x2UL +/* CRYPTO.TR_MON_RC_CTL */ +#define CRYPTO_V2_TR_MON_RC_CTL_CUTOFF_COUNT8_Pos 0UL +#define CRYPTO_V2_TR_MON_RC_CTL_CUTOFF_COUNT8_Msk 0xFFUL +/* CRYPTO.TR_MON_RC_STATUS0 */ +#define CRYPTO_V2_TR_MON_RC_STATUS0_BIT_Pos 0UL +#define CRYPTO_V2_TR_MON_RC_STATUS0_BIT_Msk 0x1UL +/* CRYPTO.TR_MON_RC_STATUS1 */ +#define CRYPTO_V2_TR_MON_RC_STATUS1_REP_COUNT_Pos 0UL +#define CRYPTO_V2_TR_MON_RC_STATUS1_REP_COUNT_Msk 0xFFUL +/* CRYPTO.TR_MON_AP_CTL */ +#define CRYPTO_V2_TR_MON_AP_CTL_CUTOFF_COUNT16_Pos 0UL +#define CRYPTO_V2_TR_MON_AP_CTL_CUTOFF_COUNT16_Msk 0xFFFFUL +#define CRYPTO_V2_TR_MON_AP_CTL_WINDOW_SIZE_Pos 16UL +#define CRYPTO_V2_TR_MON_AP_CTL_WINDOW_SIZE_Msk 0xFFFF0000UL +/* CRYPTO.TR_MON_AP_STATUS0 */ +#define CRYPTO_V2_TR_MON_AP_STATUS0_BIT_Pos 0UL +#define CRYPTO_V2_TR_MON_AP_STATUS0_BIT_Msk 0x1UL +/* CRYPTO.TR_MON_AP_STATUS1 */ +#define CRYPTO_V2_TR_MON_AP_STATUS1_OCC_COUNT_Pos 0UL +#define CRYPTO_V2_TR_MON_AP_STATUS1_OCC_COUNT_Msk 0xFFFFUL +#define CRYPTO_V2_TR_MON_AP_STATUS1_WINDOW_INDEX_Pos 16UL +#define CRYPTO_V2_TR_MON_AP_STATUS1_WINDOW_INDEX_Msk 0xFFFF0000UL +/* CRYPTO.STATUS */ +#define CRYPTO_V2_STATUS_BUSY_Pos 31UL +#define CRYPTO_V2_STATUS_BUSY_Msk 0x80000000UL +/* CRYPTO.INSTR_FF_CTL */ +#define CRYPTO_V2_INSTR_FF_CTL_EVENT_LEVEL_Pos 0UL +#define CRYPTO_V2_INSTR_FF_CTL_EVENT_LEVEL_Msk 0x7UL +#define CRYPTO_V2_INSTR_FF_CTL_CLEAR_Pos 16UL +#define CRYPTO_V2_INSTR_FF_CTL_CLEAR_Msk 0x10000UL +#define CRYPTO_V2_INSTR_FF_CTL_BLOCK_Pos 17UL +#define CRYPTO_V2_INSTR_FF_CTL_BLOCK_Msk 0x20000UL +/* CRYPTO.INSTR_FF_STATUS */ +#define CRYPTO_V2_INSTR_FF_STATUS_USED_Pos 0UL +#define CRYPTO_V2_INSTR_FF_STATUS_USED_Msk 0xFUL +#define CRYPTO_V2_INSTR_FF_STATUS_EVENT_Pos 16UL +#define CRYPTO_V2_INSTR_FF_STATUS_EVENT_Msk 0x10000UL +/* CRYPTO.INSTR_FF_WR */ +#define CRYPTO_V2_INSTR_FF_WR_DATA32_Pos 0UL +#define CRYPTO_V2_INSTR_FF_WR_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.LOAD0_FF_STATUS */ +#define CRYPTO_V2_LOAD0_FF_STATUS_USED5_Pos 0UL +#define CRYPTO_V2_LOAD0_FF_STATUS_USED5_Msk 0x1FUL +#define CRYPTO_V2_LOAD0_FF_STATUS_BUSY_Pos 31UL +#define CRYPTO_V2_LOAD0_FF_STATUS_BUSY_Msk 0x80000000UL +/* CRYPTO.LOAD1_FF_STATUS */ +#define CRYPTO_V2_LOAD1_FF_STATUS_USED5_Pos 0UL +#define CRYPTO_V2_LOAD1_FF_STATUS_USED5_Msk 0x1FUL +#define CRYPTO_V2_LOAD1_FF_STATUS_BUSY_Pos 31UL +#define CRYPTO_V2_LOAD1_FF_STATUS_BUSY_Msk 0x80000000UL +/* CRYPTO.STORE_FF_STATUS */ +#define CRYPTO_V2_STORE_FF_STATUS_USED5_Pos 0UL +#define CRYPTO_V2_STORE_FF_STATUS_USED5_Msk 0x1FUL +#define CRYPTO_V2_STORE_FF_STATUS_BUSY_Pos 31UL +#define CRYPTO_V2_STORE_FF_STATUS_BUSY_Msk 0x80000000UL +/* CRYPTO.AES_CTL */ +#define CRYPTO_V2_AES_CTL_KEY_SIZE_Pos 0UL +#define CRYPTO_V2_AES_CTL_KEY_SIZE_Msk 0x3UL +/* CRYPTO.RESULT */ +#define CRYPTO_V2_RESULT_DATA_Pos 0UL +#define CRYPTO_V2_RESULT_DATA_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_CTL */ +#define CRYPTO_V2_CRC_CTL_DATA_REVERSE_Pos 0UL +#define CRYPTO_V2_CRC_CTL_DATA_REVERSE_Msk 0x1UL +#define CRYPTO_V2_CRC_CTL_REM_REVERSE_Pos 8UL +#define CRYPTO_V2_CRC_CTL_REM_REVERSE_Msk 0x100UL +/* CRYPTO.CRC_DATA_CTL */ +#define CRYPTO_V2_CRC_DATA_CTL_DATA_XOR_Pos 0UL +#define CRYPTO_V2_CRC_DATA_CTL_DATA_XOR_Msk 0xFFUL +/* CRYPTO.CRC_POL_CTL */ +#define CRYPTO_V2_CRC_POL_CTL_POLYNOMIAL_Pos 0UL +#define CRYPTO_V2_CRC_POL_CTL_POLYNOMIAL_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_REM_CTL */ +#define CRYPTO_V2_CRC_REM_CTL_REM_XOR_Pos 0UL +#define CRYPTO_V2_CRC_REM_CTL_REM_XOR_Msk 0xFFFFFFFFUL +/* CRYPTO.CRC_REM_RESULT */ +#define CRYPTO_V2_CRC_REM_RESULT_REM_Pos 0UL +#define CRYPTO_V2_CRC_REM_RESULT_REM_Msk 0xFFFFFFFFUL +/* CRYPTO.VU_CTL0 */ +#define CRYPTO_V2_VU_CTL0_ALWAYS_EXECUTE_Pos 0UL +#define CRYPTO_V2_VU_CTL0_ALWAYS_EXECUTE_Msk 0x1UL +/* CRYPTO.VU_CTL1 */ +#define CRYPTO_V2_VU_CTL1_ADDR24_Pos 8UL +#define CRYPTO_V2_VU_CTL1_ADDR24_Msk 0xFFFFFF00UL +/* CRYPTO.VU_CTL2 */ +#define CRYPTO_V2_VU_CTL2_MASK_Pos 8UL +#define CRYPTO_V2_VU_CTL2_MASK_Msk 0x7F00UL +/* CRYPTO.VU_STATUS */ +#define CRYPTO_V2_VU_STATUS_CARRY_Pos 0UL +#define CRYPTO_V2_VU_STATUS_CARRY_Msk 0x1UL +#define CRYPTO_V2_VU_STATUS_EVEN_Pos 1UL +#define CRYPTO_V2_VU_STATUS_EVEN_Msk 0x2UL +#define CRYPTO_V2_VU_STATUS_ZERO_Pos 2UL +#define CRYPTO_V2_VU_STATUS_ZERO_Msk 0x4UL +#define CRYPTO_V2_VU_STATUS_ONE_Pos 3UL +#define CRYPTO_V2_VU_STATUS_ONE_Msk 0x8UL +/* CRYPTO.VU_RF_DATA */ +#define CRYPTO_V2_VU_RF_DATA_DATA32_Pos 0UL +#define CRYPTO_V2_VU_RF_DATA_DATA32_Msk 0xFFFFFFFFUL +/* CRYPTO.DEV_KEY_ADDR0_CTL */ +#define CRYPTO_V2_DEV_KEY_ADDR0_CTL_VALID_Pos 31UL +#define CRYPTO_V2_DEV_KEY_ADDR0_CTL_VALID_Msk 0x80000000UL +/* CRYPTO.DEV_KEY_ADDR0 */ +#define CRYPTO_V2_DEV_KEY_ADDR0_ADDR32_Pos 0UL +#define CRYPTO_V2_DEV_KEY_ADDR0_ADDR32_Msk 0xFFFFFFFFUL +/* CRYPTO.DEV_KEY_ADDR1_CTL */ +#define CRYPTO_V2_DEV_KEY_ADDR1_CTL_VALID_Pos 31UL +#define CRYPTO_V2_DEV_KEY_ADDR1_CTL_VALID_Msk 0x80000000UL +/* CRYPTO.DEV_KEY_ADDR1 */ +#define CRYPTO_V2_DEV_KEY_ADDR1_ADDR32_Pos 0UL +#define CRYPTO_V2_DEV_KEY_ADDR1_ADDR32_Msk 0xFFFFFFFFUL +/* CRYPTO.DEV_KEY_STATUS */ +#define CRYPTO_V2_DEV_KEY_STATUS_LOADED_Pos 0UL +#define CRYPTO_V2_DEV_KEY_STATUS_LOADED_Msk 0x1UL +/* CRYPTO.DEV_KEY_CTL0 */ +#define CRYPTO_V2_DEV_KEY_CTL0_ALLOWED_Pos 0UL +#define CRYPTO_V2_DEV_KEY_CTL0_ALLOWED_Msk 0x1UL +/* CRYPTO.DEV_KEY_CTL1 */ +#define CRYPTO_V2_DEV_KEY_CTL1_ALLOWED_Pos 0UL +#define CRYPTO_V2_DEV_KEY_CTL1_ALLOWED_Msk 0x1UL +/* CRYPTO.MEM_BUFF */ +#define CRYPTO_V2_MEM_BUFF_DATA32_Pos 0UL +#define CRYPTO_V2_MEM_BUFF_DATA32_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_CRYPTO_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_csd.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_csd.h new file mode 100644 index 00000000000..2d065364fc5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_csd.h @@ -0,0 +1,486 @@ +/***************************************************************************//** +* \file cyip_csd.h +* +* \brief +* CSD IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CSD_H_ +#define _CYIP_CSD_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CSD +*******************************************************************************/ + +#define CSD_SECTION_SIZE 0x00001000UL + +/** + * \brief Capsense Controller (CSD) + */ +typedef struct { + __IOM uint32_t CONFIG; /*!< 0x00000000 Configuration and Control */ + __IOM uint32_t SPARE; /*!< 0x00000004 Spare MMIO */ + __IM uint32_t RESERVED[30]; + __IM uint32_t STATUS; /*!< 0x00000080 Status Register */ + __IM uint32_t STAT_SEQ; /*!< 0x00000084 Current Sequencer status */ + __IM uint32_t STAT_CNTS; /*!< 0x00000088 Current status counts */ + __IM uint32_t STAT_HCNT; /*!< 0x0000008C Current count of the HSCMP counter */ + __IM uint32_t RESERVED1[16]; + __IM uint32_t RESULT_VAL1; /*!< 0x000000D0 Result CSD/CSX accumulation counter value 1 */ + __IM uint32_t RESULT_VAL2; /*!< 0x000000D4 Result CSX accumulation counter value 2 */ + __IM uint32_t RESERVED2[2]; + __IM uint32_t ADC_RES; /*!< 0x000000E0 ADC measurement */ + __IM uint32_t RESERVED3[3]; + __IOM uint32_t INTR; /*!< 0x000000F0 CSD Interrupt Request Register */ + __IOM uint32_t INTR_SET; /*!< 0x000000F4 CSD Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x000000F8 CSD Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x000000FC CSD Interrupt masked register */ + __IM uint32_t RESERVED4[32]; + __IOM uint32_t HSCMP; /*!< 0x00000180 High Speed Comparator configuration */ + __IOM uint32_t AMBUF; /*!< 0x00000184 Reference Generator configuration */ + __IOM uint32_t REFGEN; /*!< 0x00000188 Reference Generator configuration */ + __IOM uint32_t CSDCMP; /*!< 0x0000018C CSD Comparator configuration */ + __IM uint32_t RESERVED5[24]; + __IOM uint32_t SW_RES; /*!< 0x000001F0 Switch Resistance configuration */ + __IM uint32_t RESERVED6[3]; + __IOM uint32_t SENSE_PERIOD; /*!< 0x00000200 Sense clock period */ + __IOM uint32_t SENSE_DUTY; /*!< 0x00000204 Sense clock duty cycle */ + __IM uint32_t RESERVED7[30]; + __IOM uint32_t SW_HS_P_SEL; /*!< 0x00000280 HSCMP Pos input switch Waveform selection */ + __IOM uint32_t SW_HS_N_SEL; /*!< 0x00000284 HSCMP Neg input switch Waveform selection */ + __IOM uint32_t SW_SHIELD_SEL; /*!< 0x00000288 Shielding switches Waveform selection */ + __IM uint32_t RESERVED8; + __IOM uint32_t SW_AMUXBUF_SEL; /*!< 0x00000290 Amuxbuffer switches Waveform selection */ + __IOM uint32_t SW_BYP_SEL; /*!< 0x00000294 AMUXBUS bypass switches Waveform selection */ + __IM uint32_t RESERVED9[2]; + __IOM uint32_t SW_CMP_P_SEL; /*!< 0x000002A0 CSDCMP Pos Switch Waveform selection */ + __IOM uint32_t SW_CMP_N_SEL; /*!< 0x000002A4 CSDCMP Neg Switch Waveform selection */ + __IOM uint32_t SW_REFGEN_SEL; /*!< 0x000002A8 Reference Generator Switch Waveform selection */ + __IM uint32_t RESERVED10; + __IOM uint32_t SW_FW_MOD_SEL; /*!< 0x000002B0 Full Wave Cmod Switch Waveform selection */ + __IOM uint32_t SW_FW_TANK_SEL; /*!< 0x000002B4 Full Wave Csh_tank Switch Waveform selection */ + __IM uint32_t RESERVED11[2]; + __IOM uint32_t SW_DSI_SEL; /*!< 0x000002C0 DSI output switch control Waveform selection */ + __IM uint32_t RESERVED12[3]; + __IOM uint32_t IO_SEL; /*!< 0x000002D0 IO output control Waveform selection */ + __IM uint32_t RESERVED13[11]; + __IOM uint32_t SEQ_TIME; /*!< 0x00000300 Sequencer Timing */ + __IM uint32_t RESERVED14[3]; + __IOM uint32_t SEQ_INIT_CNT; /*!< 0x00000310 Sequencer Initial conversion and sample counts */ + __IOM uint32_t SEQ_NORM_CNT; /*!< 0x00000314 Sequencer Normal conversion and sample counts */ + __IM uint32_t RESERVED15[2]; + __IOM uint32_t ADC_CTL; /*!< 0x00000320 ADC Control */ + __IM uint32_t RESERVED16[7]; + __IOM uint32_t SEQ_START; /*!< 0x00000340 Sequencer start */ + __IM uint32_t RESERVED17[47]; + __IOM uint32_t IDACA; /*!< 0x00000400 IDACA Configuration */ + __IM uint32_t RESERVED18[63]; + __IOM uint32_t IDACB; /*!< 0x00000500 IDACB Configuration */ +} CSD_V1_Type; /*!< Size = 1284 (0x504) */ + + +/* CSD.CONFIG */ +#define CSD_CONFIG_IREF_SEL_Pos 0UL +#define CSD_CONFIG_IREF_SEL_Msk 0x1UL +#define CSD_CONFIG_FILTER_DELAY_Pos 4UL +#define CSD_CONFIG_FILTER_DELAY_Msk 0x1F0UL +#define CSD_CONFIG_SHIELD_DELAY_Pos 10UL +#define CSD_CONFIG_SHIELD_DELAY_Msk 0xC00UL +#define CSD_CONFIG_SENSE_EN_Pos 12UL +#define CSD_CONFIG_SENSE_EN_Msk 0x1000UL +#define CSD_CONFIG_FULL_WAVE_Pos 17UL +#define CSD_CONFIG_FULL_WAVE_Msk 0x20000UL +#define CSD_CONFIG_MUTUAL_CAP_Pos 18UL +#define CSD_CONFIG_MUTUAL_CAP_Msk 0x40000UL +#define CSD_CONFIG_CSX_DUAL_CNT_Pos 19UL +#define CSD_CONFIG_CSX_DUAL_CNT_Msk 0x80000UL +#define CSD_CONFIG_DSI_COUNT_SEL_Pos 24UL +#define CSD_CONFIG_DSI_COUNT_SEL_Msk 0x1000000UL +#define CSD_CONFIG_DSI_SAMPLE_EN_Pos 25UL +#define CSD_CONFIG_DSI_SAMPLE_EN_Msk 0x2000000UL +#define CSD_CONFIG_SAMPLE_SYNC_Pos 26UL +#define CSD_CONFIG_SAMPLE_SYNC_Msk 0x4000000UL +#define CSD_CONFIG_DSI_SENSE_EN_Pos 27UL +#define CSD_CONFIG_DSI_SENSE_EN_Msk 0x8000000UL +#define CSD_CONFIG_LP_MODE_Pos 30UL +#define CSD_CONFIG_LP_MODE_Msk 0x40000000UL +#define CSD_CONFIG_ENABLE_Pos 31UL +#define CSD_CONFIG_ENABLE_Msk 0x80000000UL +/* CSD.SPARE */ +#define CSD_SPARE_SPARE_Pos 0UL +#define CSD_SPARE_SPARE_Msk 0xFUL +/* CSD.STATUS */ +#define CSD_STATUS_CSD_SENSE_Pos 1UL +#define CSD_STATUS_CSD_SENSE_Msk 0x2UL +#define CSD_STATUS_HSCMP_OUT_Pos 2UL +#define CSD_STATUS_HSCMP_OUT_Msk 0x4UL +#define CSD_STATUS_CSDCMP_OUT_Pos 3UL +#define CSD_STATUS_CSDCMP_OUT_Msk 0x8UL +/* CSD.STAT_SEQ */ +#define CSD_STAT_SEQ_SEQ_STATE_Pos 0UL +#define CSD_STAT_SEQ_SEQ_STATE_Msk 0x7UL +#define CSD_STAT_SEQ_ADC_STATE_Pos 16UL +#define CSD_STAT_SEQ_ADC_STATE_Msk 0x70000UL +/* CSD.STAT_CNTS */ +#define CSD_STAT_CNTS_NUM_CONV_Pos 0UL +#define CSD_STAT_CNTS_NUM_CONV_Msk 0xFFFFUL +/* CSD.STAT_HCNT */ +#define CSD_STAT_HCNT_CNT_Pos 0UL +#define CSD_STAT_HCNT_CNT_Msk 0xFFFFUL +/* CSD.RESULT_VAL1 */ +#define CSD_RESULT_VAL1_VALUE_Pos 0UL +#define CSD_RESULT_VAL1_VALUE_Msk 0xFFFFUL +#define CSD_RESULT_VAL1_BAD_CONVS_Pos 16UL +#define CSD_RESULT_VAL1_BAD_CONVS_Msk 0xFF0000UL +/* CSD.RESULT_VAL2 */ +#define CSD_RESULT_VAL2_VALUE_Pos 0UL +#define CSD_RESULT_VAL2_VALUE_Msk 0xFFFFUL +/* CSD.ADC_RES */ +#define CSD_ADC_RES_VIN_CNT_Pos 0UL +#define CSD_ADC_RES_VIN_CNT_Msk 0xFFFFUL +#define CSD_ADC_RES_HSCMP_POL_Pos 16UL +#define CSD_ADC_RES_HSCMP_POL_Msk 0x10000UL +#define CSD_ADC_RES_ADC_OVERFLOW_Pos 30UL +#define CSD_ADC_RES_ADC_OVERFLOW_Msk 0x40000000UL +#define CSD_ADC_RES_ADC_ABORT_Pos 31UL +#define CSD_ADC_RES_ADC_ABORT_Msk 0x80000000UL +/* CSD.INTR */ +#define CSD_INTR_SAMPLE_Pos 1UL +#define CSD_INTR_SAMPLE_Msk 0x2UL +#define CSD_INTR_INIT_Pos 2UL +#define CSD_INTR_INIT_Msk 0x4UL +#define CSD_INTR_ADC_RES_Pos 8UL +#define CSD_INTR_ADC_RES_Msk 0x100UL +/* CSD.INTR_SET */ +#define CSD_INTR_SET_SAMPLE_Pos 1UL +#define CSD_INTR_SET_SAMPLE_Msk 0x2UL +#define CSD_INTR_SET_INIT_Pos 2UL +#define CSD_INTR_SET_INIT_Msk 0x4UL +#define CSD_INTR_SET_ADC_RES_Pos 8UL +#define CSD_INTR_SET_ADC_RES_Msk 0x100UL +/* CSD.INTR_MASK */ +#define CSD_INTR_MASK_SAMPLE_Pos 1UL +#define CSD_INTR_MASK_SAMPLE_Msk 0x2UL +#define CSD_INTR_MASK_INIT_Pos 2UL +#define CSD_INTR_MASK_INIT_Msk 0x4UL +#define CSD_INTR_MASK_ADC_RES_Pos 8UL +#define CSD_INTR_MASK_ADC_RES_Msk 0x100UL +/* CSD.INTR_MASKED */ +#define CSD_INTR_MASKED_SAMPLE_Pos 1UL +#define CSD_INTR_MASKED_SAMPLE_Msk 0x2UL +#define CSD_INTR_MASKED_INIT_Pos 2UL +#define CSD_INTR_MASKED_INIT_Msk 0x4UL +#define CSD_INTR_MASKED_ADC_RES_Pos 8UL +#define CSD_INTR_MASKED_ADC_RES_Msk 0x100UL +/* CSD.HSCMP */ +#define CSD_HSCMP_HSCMP_EN_Pos 0UL +#define CSD_HSCMP_HSCMP_EN_Msk 0x1UL +#define CSD_HSCMP_HSCMP_INVERT_Pos 4UL +#define CSD_HSCMP_HSCMP_INVERT_Msk 0x10UL +#define CSD_HSCMP_AZ_EN_Pos 31UL +#define CSD_HSCMP_AZ_EN_Msk 0x80000000UL +/* CSD.AMBUF */ +#define CSD_AMBUF_PWR_MODE_Pos 0UL +#define CSD_AMBUF_PWR_MODE_Msk 0x3UL +/* CSD.REFGEN */ +#define CSD_REFGEN_REFGEN_EN_Pos 0UL +#define CSD_REFGEN_REFGEN_EN_Msk 0x1UL +#define CSD_REFGEN_BYPASS_Pos 4UL +#define CSD_REFGEN_BYPASS_Msk 0x10UL +#define CSD_REFGEN_VDDA_EN_Pos 5UL +#define CSD_REFGEN_VDDA_EN_Msk 0x20UL +#define CSD_REFGEN_RES_EN_Pos 6UL +#define CSD_REFGEN_RES_EN_Msk 0x40UL +#define CSD_REFGEN_GAIN_Pos 8UL +#define CSD_REFGEN_GAIN_Msk 0x1F00UL +#define CSD_REFGEN_VREFLO_SEL_Pos 16UL +#define CSD_REFGEN_VREFLO_SEL_Msk 0x1F0000UL +#define CSD_REFGEN_VREFLO_INT_Pos 23UL +#define CSD_REFGEN_VREFLO_INT_Msk 0x800000UL +/* CSD.CSDCMP */ +#define CSD_CSDCMP_CSDCMP_EN_Pos 0UL +#define CSD_CSDCMP_CSDCMP_EN_Msk 0x1UL +#define CSD_CSDCMP_POLARITY_SEL_Pos 4UL +#define CSD_CSDCMP_POLARITY_SEL_Msk 0x30UL +#define CSD_CSDCMP_CMP_PHASE_Pos 8UL +#define CSD_CSDCMP_CMP_PHASE_Msk 0x300UL +#define CSD_CSDCMP_CMP_MODE_Pos 28UL +#define CSD_CSDCMP_CMP_MODE_Msk 0x10000000UL +#define CSD_CSDCMP_FEEDBACK_MODE_Pos 29UL +#define CSD_CSDCMP_FEEDBACK_MODE_Msk 0x20000000UL +#define CSD_CSDCMP_AZ_EN_Pos 31UL +#define CSD_CSDCMP_AZ_EN_Msk 0x80000000UL +/* CSD.SW_RES */ +#define CSD_SW_RES_RES_HCAV_Pos 0UL +#define CSD_SW_RES_RES_HCAV_Msk 0x3UL +#define CSD_SW_RES_RES_HCAG_Pos 2UL +#define CSD_SW_RES_RES_HCAG_Msk 0xCUL +#define CSD_SW_RES_RES_HCBV_Pos 4UL +#define CSD_SW_RES_RES_HCBV_Msk 0x30UL +#define CSD_SW_RES_RES_HCBG_Pos 6UL +#define CSD_SW_RES_RES_HCBG_Msk 0xC0UL +#define CSD_SW_RES_RES_F1PM_Pos 16UL +#define CSD_SW_RES_RES_F1PM_Msk 0x30000UL +#define CSD_SW_RES_RES_F2PT_Pos 18UL +#define CSD_SW_RES_RES_F2PT_Msk 0xC0000UL +/* CSD.SENSE_PERIOD */ +#define CSD_SENSE_PERIOD_SENSE_DIV_Pos 0UL +#define CSD_SENSE_PERIOD_SENSE_DIV_Msk 0xFFFUL +#define CSD_SENSE_PERIOD_LFSR_SIZE_Pos 16UL +#define CSD_SENSE_PERIOD_LFSR_SIZE_Msk 0x70000UL +#define CSD_SENSE_PERIOD_LFSR_SCALE_Pos 20UL +#define CSD_SENSE_PERIOD_LFSR_SCALE_Msk 0xF00000UL +#define CSD_SENSE_PERIOD_LFSR_CLEAR_Pos 24UL +#define CSD_SENSE_PERIOD_LFSR_CLEAR_Msk 0x1000000UL +#define CSD_SENSE_PERIOD_SEL_LFSR_MSB_Pos 25UL +#define CSD_SENSE_PERIOD_SEL_LFSR_MSB_Msk 0x2000000UL +#define CSD_SENSE_PERIOD_LFSR_BITS_Pos 26UL +#define CSD_SENSE_PERIOD_LFSR_BITS_Msk 0xC000000UL +/* CSD.SENSE_DUTY */ +#define CSD_SENSE_DUTY_SENSE_WIDTH_Pos 0UL +#define CSD_SENSE_DUTY_SENSE_WIDTH_Msk 0xFFFUL +#define CSD_SENSE_DUTY_SENSE_POL_Pos 16UL +#define CSD_SENSE_DUTY_SENSE_POL_Msk 0x10000UL +#define CSD_SENSE_DUTY_OVERLAP_PHI1_Pos 18UL +#define CSD_SENSE_DUTY_OVERLAP_PHI1_Msk 0x40000UL +#define CSD_SENSE_DUTY_OVERLAP_PHI2_Pos 19UL +#define CSD_SENSE_DUTY_OVERLAP_PHI2_Msk 0x80000UL +/* CSD.SW_HS_P_SEL */ +#define CSD_SW_HS_P_SEL_SW_HMPM_Pos 0UL +#define CSD_SW_HS_P_SEL_SW_HMPM_Msk 0x1UL +#define CSD_SW_HS_P_SEL_SW_HMPT_Pos 4UL +#define CSD_SW_HS_P_SEL_SW_HMPT_Msk 0x10UL +#define CSD_SW_HS_P_SEL_SW_HMPS_Pos 8UL +#define CSD_SW_HS_P_SEL_SW_HMPS_Msk 0x100UL +#define CSD_SW_HS_P_SEL_SW_HMMA_Pos 12UL +#define CSD_SW_HS_P_SEL_SW_HMMA_Msk 0x1000UL +#define CSD_SW_HS_P_SEL_SW_HMMB_Pos 16UL +#define CSD_SW_HS_P_SEL_SW_HMMB_Msk 0x10000UL +#define CSD_SW_HS_P_SEL_SW_HMCA_Pos 20UL +#define CSD_SW_HS_P_SEL_SW_HMCA_Msk 0x100000UL +#define CSD_SW_HS_P_SEL_SW_HMCB_Pos 24UL +#define CSD_SW_HS_P_SEL_SW_HMCB_Msk 0x1000000UL +#define CSD_SW_HS_P_SEL_SW_HMRH_Pos 28UL +#define CSD_SW_HS_P_SEL_SW_HMRH_Msk 0x10000000UL +/* CSD.SW_HS_N_SEL */ +#define CSD_SW_HS_N_SEL_SW_HCCC_Pos 16UL +#define CSD_SW_HS_N_SEL_SW_HCCC_Msk 0x10000UL +#define CSD_SW_HS_N_SEL_SW_HCCD_Pos 20UL +#define CSD_SW_HS_N_SEL_SW_HCCD_Msk 0x100000UL +#define CSD_SW_HS_N_SEL_SW_HCRH_Pos 24UL +#define CSD_SW_HS_N_SEL_SW_HCRH_Msk 0x7000000UL +#define CSD_SW_HS_N_SEL_SW_HCRL_Pos 28UL +#define CSD_SW_HS_N_SEL_SW_HCRL_Msk 0x70000000UL +/* CSD.SW_SHIELD_SEL */ +#define CSD_SW_SHIELD_SEL_SW_HCAV_Pos 0UL +#define CSD_SW_SHIELD_SEL_SW_HCAV_Msk 0x7UL +#define CSD_SW_SHIELD_SEL_SW_HCAG_Pos 4UL +#define CSD_SW_SHIELD_SEL_SW_HCAG_Msk 0x70UL +#define CSD_SW_SHIELD_SEL_SW_HCBV_Pos 8UL +#define CSD_SW_SHIELD_SEL_SW_HCBV_Msk 0x700UL +#define CSD_SW_SHIELD_SEL_SW_HCBG_Pos 12UL +#define CSD_SW_SHIELD_SEL_SW_HCBG_Msk 0x7000UL +#define CSD_SW_SHIELD_SEL_SW_HCCV_Pos 16UL +#define CSD_SW_SHIELD_SEL_SW_HCCV_Msk 0x10000UL +#define CSD_SW_SHIELD_SEL_SW_HCCG_Pos 20UL +#define CSD_SW_SHIELD_SEL_SW_HCCG_Msk 0x100000UL +/* CSD.SW_AMUXBUF_SEL */ +#define CSD_SW_AMUXBUF_SEL_SW_IRBY_Pos 4UL +#define CSD_SW_AMUXBUF_SEL_SW_IRBY_Msk 0x10UL +#define CSD_SW_AMUXBUF_SEL_SW_IRLB_Pos 8UL +#define CSD_SW_AMUXBUF_SEL_SW_IRLB_Msk 0x100UL +#define CSD_SW_AMUXBUF_SEL_SW_ICA_Pos 12UL +#define CSD_SW_AMUXBUF_SEL_SW_ICA_Msk 0x1000UL +#define CSD_SW_AMUXBUF_SEL_SW_ICB_Pos 16UL +#define CSD_SW_AMUXBUF_SEL_SW_ICB_Msk 0x70000UL +#define CSD_SW_AMUXBUF_SEL_SW_IRLI_Pos 20UL +#define CSD_SW_AMUXBUF_SEL_SW_IRLI_Msk 0x100000UL +#define CSD_SW_AMUXBUF_SEL_SW_IRH_Pos 24UL +#define CSD_SW_AMUXBUF_SEL_SW_IRH_Msk 0x1000000UL +#define CSD_SW_AMUXBUF_SEL_SW_IRL_Pos 28UL +#define CSD_SW_AMUXBUF_SEL_SW_IRL_Msk 0x10000000UL +/* CSD.SW_BYP_SEL */ +#define CSD_SW_BYP_SEL_SW_BYA_Pos 12UL +#define CSD_SW_BYP_SEL_SW_BYA_Msk 0x1000UL +#define CSD_SW_BYP_SEL_SW_BYB_Pos 16UL +#define CSD_SW_BYP_SEL_SW_BYB_Msk 0x10000UL +#define CSD_SW_BYP_SEL_SW_CBCC_Pos 20UL +#define CSD_SW_BYP_SEL_SW_CBCC_Msk 0x100000UL +/* CSD.SW_CMP_P_SEL */ +#define CSD_SW_CMP_P_SEL_SW_SFPM_Pos 0UL +#define CSD_SW_CMP_P_SEL_SW_SFPM_Msk 0x7UL +#define CSD_SW_CMP_P_SEL_SW_SFPT_Pos 4UL +#define CSD_SW_CMP_P_SEL_SW_SFPT_Msk 0x70UL +#define CSD_SW_CMP_P_SEL_SW_SFPS_Pos 8UL +#define CSD_SW_CMP_P_SEL_SW_SFPS_Msk 0x700UL +#define CSD_SW_CMP_P_SEL_SW_SFMA_Pos 12UL +#define CSD_SW_CMP_P_SEL_SW_SFMA_Msk 0x1000UL +#define CSD_SW_CMP_P_SEL_SW_SFMB_Pos 16UL +#define CSD_SW_CMP_P_SEL_SW_SFMB_Msk 0x10000UL +#define CSD_SW_CMP_P_SEL_SW_SFCA_Pos 20UL +#define CSD_SW_CMP_P_SEL_SW_SFCA_Msk 0x100000UL +#define CSD_SW_CMP_P_SEL_SW_SFCB_Pos 24UL +#define CSD_SW_CMP_P_SEL_SW_SFCB_Msk 0x1000000UL +/* CSD.SW_CMP_N_SEL */ +#define CSD_SW_CMP_N_SEL_SW_SCRH_Pos 24UL +#define CSD_SW_CMP_N_SEL_SW_SCRH_Msk 0x7000000UL +#define CSD_SW_CMP_N_SEL_SW_SCRL_Pos 28UL +#define CSD_SW_CMP_N_SEL_SW_SCRL_Msk 0x70000000UL +/* CSD.SW_REFGEN_SEL */ +#define CSD_SW_REFGEN_SEL_SW_IAIB_Pos 0UL +#define CSD_SW_REFGEN_SEL_SW_IAIB_Msk 0x1UL +#define CSD_SW_REFGEN_SEL_SW_IBCB_Pos 4UL +#define CSD_SW_REFGEN_SEL_SW_IBCB_Msk 0x10UL +#define CSD_SW_REFGEN_SEL_SW_SGMB_Pos 16UL +#define CSD_SW_REFGEN_SEL_SW_SGMB_Msk 0x10000UL +#define CSD_SW_REFGEN_SEL_SW_SGRP_Pos 20UL +#define CSD_SW_REFGEN_SEL_SW_SGRP_Msk 0x100000UL +#define CSD_SW_REFGEN_SEL_SW_SGRE_Pos 24UL +#define CSD_SW_REFGEN_SEL_SW_SGRE_Msk 0x1000000UL +#define CSD_SW_REFGEN_SEL_SW_SGR_Pos 28UL +#define CSD_SW_REFGEN_SEL_SW_SGR_Msk 0x10000000UL +/* CSD.SW_FW_MOD_SEL */ +#define CSD_SW_FW_MOD_SEL_SW_F1PM_Pos 0UL +#define CSD_SW_FW_MOD_SEL_SW_F1PM_Msk 0x1UL +#define CSD_SW_FW_MOD_SEL_SW_F1MA_Pos 8UL +#define CSD_SW_FW_MOD_SEL_SW_F1MA_Msk 0x700UL +#define CSD_SW_FW_MOD_SEL_SW_F1CA_Pos 16UL +#define CSD_SW_FW_MOD_SEL_SW_F1CA_Msk 0x70000UL +#define CSD_SW_FW_MOD_SEL_SW_C1CC_Pos 20UL +#define CSD_SW_FW_MOD_SEL_SW_C1CC_Msk 0x100000UL +#define CSD_SW_FW_MOD_SEL_SW_C1CD_Pos 24UL +#define CSD_SW_FW_MOD_SEL_SW_C1CD_Msk 0x1000000UL +#define CSD_SW_FW_MOD_SEL_SW_C1F1_Pos 28UL +#define CSD_SW_FW_MOD_SEL_SW_C1F1_Msk 0x10000000UL +/* CSD.SW_FW_TANK_SEL */ +#define CSD_SW_FW_TANK_SEL_SW_F2PT_Pos 4UL +#define CSD_SW_FW_TANK_SEL_SW_F2PT_Msk 0x10UL +#define CSD_SW_FW_TANK_SEL_SW_F2MA_Pos 8UL +#define CSD_SW_FW_TANK_SEL_SW_F2MA_Msk 0x700UL +#define CSD_SW_FW_TANK_SEL_SW_F2CA_Pos 12UL +#define CSD_SW_FW_TANK_SEL_SW_F2CA_Msk 0x7000UL +#define CSD_SW_FW_TANK_SEL_SW_F2CB_Pos 16UL +#define CSD_SW_FW_TANK_SEL_SW_F2CB_Msk 0x70000UL +#define CSD_SW_FW_TANK_SEL_SW_C2CC_Pos 20UL +#define CSD_SW_FW_TANK_SEL_SW_C2CC_Msk 0x100000UL +#define CSD_SW_FW_TANK_SEL_SW_C2CD_Pos 24UL +#define CSD_SW_FW_TANK_SEL_SW_C2CD_Msk 0x1000000UL +#define CSD_SW_FW_TANK_SEL_SW_C2F2_Pos 28UL +#define CSD_SW_FW_TANK_SEL_SW_C2F2_Msk 0x10000000UL +/* CSD.SW_DSI_SEL */ +#define CSD_SW_DSI_SEL_DSI_CSH_TANK_Pos 0UL +#define CSD_SW_DSI_SEL_DSI_CSH_TANK_Msk 0xFUL +#define CSD_SW_DSI_SEL_DSI_CMOD_Pos 4UL +#define CSD_SW_DSI_SEL_DSI_CMOD_Msk 0xF0UL +/* CSD.IO_SEL */ +#define CSD_IO_SEL_CSD_TX_OUT_Pos 0UL +#define CSD_IO_SEL_CSD_TX_OUT_Msk 0xFUL +#define CSD_IO_SEL_CSD_TX_OUT_EN_Pos 4UL +#define CSD_IO_SEL_CSD_TX_OUT_EN_Msk 0xF0UL +#define CSD_IO_SEL_CSD_TX_AMUXB_EN_Pos 12UL +#define CSD_IO_SEL_CSD_TX_AMUXB_EN_Msk 0xF000UL +#define CSD_IO_SEL_CSD_TX_N_OUT_Pos 16UL +#define CSD_IO_SEL_CSD_TX_N_OUT_Msk 0xF0000UL +#define CSD_IO_SEL_CSD_TX_N_OUT_EN_Pos 20UL +#define CSD_IO_SEL_CSD_TX_N_OUT_EN_Msk 0xF00000UL +#define CSD_IO_SEL_CSD_TX_N_AMUXA_EN_Pos 24UL +#define CSD_IO_SEL_CSD_TX_N_AMUXA_EN_Msk 0xF000000UL +/* CSD.SEQ_TIME */ +#define CSD_SEQ_TIME_AZ_TIME_Pos 0UL +#define CSD_SEQ_TIME_AZ_TIME_Msk 0xFFUL +/* CSD.SEQ_INIT_CNT */ +#define CSD_SEQ_INIT_CNT_CONV_CNT_Pos 0UL +#define CSD_SEQ_INIT_CNT_CONV_CNT_Msk 0xFFFFUL +/* CSD.SEQ_NORM_CNT */ +#define CSD_SEQ_NORM_CNT_CONV_CNT_Pos 0UL +#define CSD_SEQ_NORM_CNT_CONV_CNT_Msk 0xFFFFUL +/* CSD.ADC_CTL */ +#define CSD_ADC_CTL_ADC_TIME_Pos 0UL +#define CSD_ADC_CTL_ADC_TIME_Msk 0xFFUL +#define CSD_ADC_CTL_ADC_MODE_Pos 16UL +#define CSD_ADC_CTL_ADC_MODE_Msk 0x30000UL +/* CSD.SEQ_START */ +#define CSD_SEQ_START_START_Pos 0UL +#define CSD_SEQ_START_START_Msk 0x1UL +#define CSD_SEQ_START_SEQ_MODE_Pos 1UL +#define CSD_SEQ_START_SEQ_MODE_Msk 0x2UL +#define CSD_SEQ_START_ABORT_Pos 3UL +#define CSD_SEQ_START_ABORT_Msk 0x8UL +#define CSD_SEQ_START_DSI_START_EN_Pos 4UL +#define CSD_SEQ_START_DSI_START_EN_Msk 0x10UL +#define CSD_SEQ_START_AZ0_SKIP_Pos 8UL +#define CSD_SEQ_START_AZ0_SKIP_Msk 0x100UL +#define CSD_SEQ_START_AZ1_SKIP_Pos 9UL +#define CSD_SEQ_START_AZ1_SKIP_Msk 0x200UL +/* CSD.IDACA */ +#define CSD_IDACA_VAL_Pos 0UL +#define CSD_IDACA_VAL_Msk 0x7FUL +#define CSD_IDACA_POL_DYN_Pos 7UL +#define CSD_IDACA_POL_DYN_Msk 0x80UL +#define CSD_IDACA_POLARITY_Pos 8UL +#define CSD_IDACA_POLARITY_Msk 0x300UL +#define CSD_IDACA_BAL_MODE_Pos 10UL +#define CSD_IDACA_BAL_MODE_Msk 0xC00UL +#define CSD_IDACA_LEG1_MODE_Pos 16UL +#define CSD_IDACA_LEG1_MODE_Msk 0x30000UL +#define CSD_IDACA_LEG2_MODE_Pos 18UL +#define CSD_IDACA_LEG2_MODE_Msk 0xC0000UL +#define CSD_IDACA_DSI_CTRL_EN_Pos 21UL +#define CSD_IDACA_DSI_CTRL_EN_Msk 0x200000UL +#define CSD_IDACA_RANGE_Pos 22UL +#define CSD_IDACA_RANGE_Msk 0xC00000UL +#define CSD_IDACA_LEG1_EN_Pos 24UL +#define CSD_IDACA_LEG1_EN_Msk 0x1000000UL +#define CSD_IDACA_LEG2_EN_Pos 25UL +#define CSD_IDACA_LEG2_EN_Msk 0x2000000UL +/* CSD.IDACB */ +#define CSD_IDACB_VAL_Pos 0UL +#define CSD_IDACB_VAL_Msk 0x7FUL +#define CSD_IDACB_POL_DYN_Pos 7UL +#define CSD_IDACB_POL_DYN_Msk 0x80UL +#define CSD_IDACB_POLARITY_Pos 8UL +#define CSD_IDACB_POLARITY_Msk 0x300UL +#define CSD_IDACB_BAL_MODE_Pos 10UL +#define CSD_IDACB_BAL_MODE_Msk 0xC00UL +#define CSD_IDACB_LEG1_MODE_Pos 16UL +#define CSD_IDACB_LEG1_MODE_Msk 0x30000UL +#define CSD_IDACB_LEG2_MODE_Pos 18UL +#define CSD_IDACB_LEG2_MODE_Msk 0xC0000UL +#define CSD_IDACB_DSI_CTRL_EN_Pos 21UL +#define CSD_IDACB_DSI_CTRL_EN_Msk 0x200000UL +#define CSD_IDACB_RANGE_Pos 22UL +#define CSD_IDACB_RANGE_Msk 0xC00000UL +#define CSD_IDACB_LEG1_EN_Pos 24UL +#define CSD_IDACB_LEG1_EN_Msk 0x1000000UL +#define CSD_IDACB_LEG2_EN_Pos 25UL +#define CSD_IDACB_LEG2_EN_Msk 0x2000000UL +#define CSD_IDACB_LEG3_EN_Pos 26UL +#define CSD_IDACB_LEG3_EN_Msk 0x4000000UL + + +#endif /* _CYIP_CSD_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctbm.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctbm.h new file mode 100644 index 00000000000..44a089958f0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctbm.h @@ -0,0 +1,296 @@ +/***************************************************************************//** +* \file cyip_ctbm.h +* +* \brief +* CTBM IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CTBM_H_ +#define _CYIP_CTBM_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CTBM +*******************************************************************************/ + +#define CTBM_SECTION_SIZE 0x00010000UL + +/** + * \brief Continuous Time Block Mini (CTBM) + */ +typedef struct { + __IOM uint32_t CTB_CTRL; /*!< 0x00000000 global CTB and power control */ + __IOM uint32_t OA_RES0_CTRL; /*!< 0x00000004 Opamp0 and resistor0 control */ + __IOM uint32_t OA_RES1_CTRL; /*!< 0x00000008 Opamp1 and resistor1 control */ + __IM uint32_t COMP_STAT; /*!< 0x0000000C Comparator status */ + __IM uint32_t RESERVED[4]; + __IOM uint32_t INTR; /*!< 0x00000020 Interrupt request register */ + __IOM uint32_t INTR_SET; /*!< 0x00000024 Interrupt request set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000028 Interrupt request mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000002C Interrupt request masked */ + __IM uint32_t RESERVED1[20]; + __IOM uint32_t OA0_SW; /*!< 0x00000080 Opamp0 switch control */ + __IOM uint32_t OA0_SW_CLEAR; /*!< 0x00000084 Opamp0 switch control clear */ + __IOM uint32_t OA1_SW; /*!< 0x00000088 Opamp1 switch control */ + __IOM uint32_t OA1_SW_CLEAR; /*!< 0x0000008C Opamp1 switch control clear */ + __IM uint32_t RESERVED2[4]; + __IOM uint32_t CTD_SW; /*!< 0x000000A0 CTDAC connection switch control */ + __IOM uint32_t CTD_SW_CLEAR; /*!< 0x000000A4 CTDAC connection switch control clear */ + __IM uint32_t RESERVED3[6]; + __IOM uint32_t CTB_SW_DS_CTRL; /*!< 0x000000C0 CTB bus switch control */ + __IOM uint32_t CTB_SW_SQ_CTRL; /*!< 0x000000C4 CTB bus switch Sar Sequencer control */ + __IM uint32_t CTB_SW_STATUS; /*!< 0x000000C8 CTB bus switch control status */ + __IM uint32_t RESERVED4[909]; + __IOM uint32_t OA0_OFFSET_TRIM; /*!< 0x00000F00 Opamp0 trim control */ + __IOM uint32_t OA0_SLOPE_OFFSET_TRIM; /*!< 0x00000F04 Opamp0 trim control */ + __IOM uint32_t OA0_COMP_TRIM; /*!< 0x00000F08 Opamp0 trim control */ + __IOM uint32_t OA1_OFFSET_TRIM; /*!< 0x00000F0C Opamp1 trim control */ + __IOM uint32_t OA1_SLOPE_OFFSET_TRIM; /*!< 0x00000F10 Opamp1 trim control */ + __IOM uint32_t OA1_COMP_TRIM; /*!< 0x00000F14 Opamp1 trim control */ +} CTBM_V1_Type; /*!< Size = 3864 (0xF18) */ + + +/* CTBM.CTB_CTRL */ +#define CTBM_CTB_CTRL_DEEPSLEEP_ON_Pos 30UL +#define CTBM_CTB_CTRL_DEEPSLEEP_ON_Msk 0x40000000UL +#define CTBM_CTB_CTRL_ENABLED_Pos 31UL +#define CTBM_CTB_CTRL_ENABLED_Msk 0x80000000UL +/* CTBM.OA_RES0_CTRL */ +#define CTBM_OA_RES0_CTRL_OA0_PWR_MODE_Pos 0UL +#define CTBM_OA_RES0_CTRL_OA0_PWR_MODE_Msk 0x7UL +#define CTBM_OA_RES0_CTRL_OA0_DRIVE_STR_SEL_Pos 3UL +#define CTBM_OA_RES0_CTRL_OA0_DRIVE_STR_SEL_Msk 0x8UL +#define CTBM_OA_RES0_CTRL_OA0_COMP_EN_Pos 4UL +#define CTBM_OA_RES0_CTRL_OA0_COMP_EN_Msk 0x10UL +#define CTBM_OA_RES0_CTRL_OA0_HYST_EN_Pos 5UL +#define CTBM_OA_RES0_CTRL_OA0_HYST_EN_Msk 0x20UL +#define CTBM_OA_RES0_CTRL_OA0_BYPASS_DSI_SYNC_Pos 6UL +#define CTBM_OA_RES0_CTRL_OA0_BYPASS_DSI_SYNC_Msk 0x40UL +#define CTBM_OA_RES0_CTRL_OA0_DSI_LEVEL_Pos 7UL +#define CTBM_OA_RES0_CTRL_OA0_DSI_LEVEL_Msk 0x80UL +#define CTBM_OA_RES0_CTRL_OA0_COMPINT_Pos 8UL +#define CTBM_OA_RES0_CTRL_OA0_COMPINT_Msk 0x300UL +#define CTBM_OA_RES0_CTRL_OA0_PUMP_EN_Pos 11UL +#define CTBM_OA_RES0_CTRL_OA0_PUMP_EN_Msk 0x800UL +#define CTBM_OA_RES0_CTRL_OA0_BOOST_EN_Pos 12UL +#define CTBM_OA_RES0_CTRL_OA0_BOOST_EN_Msk 0x1000UL +/* CTBM.OA_RES1_CTRL */ +#define CTBM_OA_RES1_CTRL_OA1_PWR_MODE_Pos 0UL +#define CTBM_OA_RES1_CTRL_OA1_PWR_MODE_Msk 0x7UL +#define CTBM_OA_RES1_CTRL_OA1_DRIVE_STR_SEL_Pos 3UL +#define CTBM_OA_RES1_CTRL_OA1_DRIVE_STR_SEL_Msk 0x8UL +#define CTBM_OA_RES1_CTRL_OA1_COMP_EN_Pos 4UL +#define CTBM_OA_RES1_CTRL_OA1_COMP_EN_Msk 0x10UL +#define CTBM_OA_RES1_CTRL_OA1_HYST_EN_Pos 5UL +#define CTBM_OA_RES1_CTRL_OA1_HYST_EN_Msk 0x20UL +#define CTBM_OA_RES1_CTRL_OA1_BYPASS_DSI_SYNC_Pos 6UL +#define CTBM_OA_RES1_CTRL_OA1_BYPASS_DSI_SYNC_Msk 0x40UL +#define CTBM_OA_RES1_CTRL_OA1_DSI_LEVEL_Pos 7UL +#define CTBM_OA_RES1_CTRL_OA1_DSI_LEVEL_Msk 0x80UL +#define CTBM_OA_RES1_CTRL_OA1_COMPINT_Pos 8UL +#define CTBM_OA_RES1_CTRL_OA1_COMPINT_Msk 0x300UL +#define CTBM_OA_RES1_CTRL_OA1_PUMP_EN_Pos 11UL +#define CTBM_OA_RES1_CTRL_OA1_PUMP_EN_Msk 0x800UL +#define CTBM_OA_RES1_CTRL_OA1_BOOST_EN_Pos 12UL +#define CTBM_OA_RES1_CTRL_OA1_BOOST_EN_Msk 0x1000UL +/* CTBM.COMP_STAT */ +#define CTBM_COMP_STAT_OA0_COMP_Pos 0UL +#define CTBM_COMP_STAT_OA0_COMP_Msk 0x1UL +#define CTBM_COMP_STAT_OA1_COMP_Pos 16UL +#define CTBM_COMP_STAT_OA1_COMP_Msk 0x10000UL +/* CTBM.INTR */ +#define CTBM_INTR_COMP0_Pos 0UL +#define CTBM_INTR_COMP0_Msk 0x1UL +#define CTBM_INTR_COMP1_Pos 1UL +#define CTBM_INTR_COMP1_Msk 0x2UL +/* CTBM.INTR_SET */ +#define CTBM_INTR_SET_COMP0_SET_Pos 0UL +#define CTBM_INTR_SET_COMP0_SET_Msk 0x1UL +#define CTBM_INTR_SET_COMP1_SET_Pos 1UL +#define CTBM_INTR_SET_COMP1_SET_Msk 0x2UL +/* CTBM.INTR_MASK */ +#define CTBM_INTR_MASK_COMP0_MASK_Pos 0UL +#define CTBM_INTR_MASK_COMP0_MASK_Msk 0x1UL +#define CTBM_INTR_MASK_COMP1_MASK_Pos 1UL +#define CTBM_INTR_MASK_COMP1_MASK_Msk 0x2UL +/* CTBM.INTR_MASKED */ +#define CTBM_INTR_MASKED_COMP0_MASKED_Pos 0UL +#define CTBM_INTR_MASKED_COMP0_MASKED_Msk 0x1UL +#define CTBM_INTR_MASKED_COMP1_MASKED_Pos 1UL +#define CTBM_INTR_MASKED_COMP1_MASKED_Msk 0x2UL +/* CTBM.OA0_SW */ +#define CTBM_OA0_SW_OA0P_A00_Pos 0UL +#define CTBM_OA0_SW_OA0P_A00_Msk 0x1UL +#define CTBM_OA0_SW_OA0P_A20_Pos 2UL +#define CTBM_OA0_SW_OA0P_A20_Msk 0x4UL +#define CTBM_OA0_SW_OA0P_A30_Pos 3UL +#define CTBM_OA0_SW_OA0P_A30_Msk 0x8UL +#define CTBM_OA0_SW_OA0M_A11_Pos 8UL +#define CTBM_OA0_SW_OA0M_A11_Msk 0x100UL +#define CTBM_OA0_SW_OA0M_A81_Pos 14UL +#define CTBM_OA0_SW_OA0M_A81_Msk 0x4000UL +#define CTBM_OA0_SW_OA0O_D51_Pos 18UL +#define CTBM_OA0_SW_OA0O_D51_Msk 0x40000UL +#define CTBM_OA0_SW_OA0O_D81_Pos 21UL +#define CTBM_OA0_SW_OA0O_D81_Msk 0x200000UL +/* CTBM.OA0_SW_CLEAR */ +#define CTBM_OA0_SW_CLEAR_OA0P_A00_Pos 0UL +#define CTBM_OA0_SW_CLEAR_OA0P_A00_Msk 0x1UL +#define CTBM_OA0_SW_CLEAR_OA0P_A20_Pos 2UL +#define CTBM_OA0_SW_CLEAR_OA0P_A20_Msk 0x4UL +#define CTBM_OA0_SW_CLEAR_OA0P_A30_Pos 3UL +#define CTBM_OA0_SW_CLEAR_OA0P_A30_Msk 0x8UL +#define CTBM_OA0_SW_CLEAR_OA0M_A11_Pos 8UL +#define CTBM_OA0_SW_CLEAR_OA0M_A11_Msk 0x100UL +#define CTBM_OA0_SW_CLEAR_OA0M_A81_Pos 14UL +#define CTBM_OA0_SW_CLEAR_OA0M_A81_Msk 0x4000UL +#define CTBM_OA0_SW_CLEAR_OA0O_D51_Pos 18UL +#define CTBM_OA0_SW_CLEAR_OA0O_D51_Msk 0x40000UL +#define CTBM_OA0_SW_CLEAR_OA0O_D81_Pos 21UL +#define CTBM_OA0_SW_CLEAR_OA0O_D81_Msk 0x200000UL +/* CTBM.OA1_SW */ +#define CTBM_OA1_SW_OA1P_A03_Pos 0UL +#define CTBM_OA1_SW_OA1P_A03_Msk 0x1UL +#define CTBM_OA1_SW_OA1P_A13_Pos 1UL +#define CTBM_OA1_SW_OA1P_A13_Msk 0x2UL +#define CTBM_OA1_SW_OA1P_A43_Pos 4UL +#define CTBM_OA1_SW_OA1P_A43_Msk 0x10UL +#define CTBM_OA1_SW_OA1P_A73_Pos 7UL +#define CTBM_OA1_SW_OA1P_A73_Msk 0x80UL +#define CTBM_OA1_SW_OA1M_A22_Pos 8UL +#define CTBM_OA1_SW_OA1M_A22_Msk 0x100UL +#define CTBM_OA1_SW_OA1M_A82_Pos 14UL +#define CTBM_OA1_SW_OA1M_A82_Msk 0x4000UL +#define CTBM_OA1_SW_OA1O_D52_Pos 18UL +#define CTBM_OA1_SW_OA1O_D52_Msk 0x40000UL +#define CTBM_OA1_SW_OA1O_D62_Pos 19UL +#define CTBM_OA1_SW_OA1O_D62_Msk 0x80000UL +#define CTBM_OA1_SW_OA1O_D82_Pos 21UL +#define CTBM_OA1_SW_OA1O_D82_Msk 0x200000UL +/* CTBM.OA1_SW_CLEAR */ +#define CTBM_OA1_SW_CLEAR_OA1P_A03_Pos 0UL +#define CTBM_OA1_SW_CLEAR_OA1P_A03_Msk 0x1UL +#define CTBM_OA1_SW_CLEAR_OA1P_A13_Pos 1UL +#define CTBM_OA1_SW_CLEAR_OA1P_A13_Msk 0x2UL +#define CTBM_OA1_SW_CLEAR_OA1P_A43_Pos 4UL +#define CTBM_OA1_SW_CLEAR_OA1P_A43_Msk 0x10UL +#define CTBM_OA1_SW_CLEAR_OA1P_A73_Pos 7UL +#define CTBM_OA1_SW_CLEAR_OA1P_A73_Msk 0x80UL +#define CTBM_OA1_SW_CLEAR_OA1M_A22_Pos 8UL +#define CTBM_OA1_SW_CLEAR_OA1M_A22_Msk 0x100UL +#define CTBM_OA1_SW_CLEAR_OA1M_A82_Pos 14UL +#define CTBM_OA1_SW_CLEAR_OA1M_A82_Msk 0x4000UL +#define CTBM_OA1_SW_CLEAR_OA1O_D52_Pos 18UL +#define CTBM_OA1_SW_CLEAR_OA1O_D52_Msk 0x40000UL +#define CTBM_OA1_SW_CLEAR_OA1O_D62_Pos 19UL +#define CTBM_OA1_SW_CLEAR_OA1O_D62_Msk 0x80000UL +#define CTBM_OA1_SW_CLEAR_OA1O_D82_Pos 21UL +#define CTBM_OA1_SW_CLEAR_OA1O_D82_Msk 0x200000UL +/* CTBM.CTD_SW */ +#define CTBM_CTD_SW_CTDD_CRD_Pos 1UL +#define CTBM_CTD_SW_CTDD_CRD_Msk 0x2UL +#define CTBM_CTD_SW_CTDS_CRS_Pos 4UL +#define CTBM_CTD_SW_CTDS_CRS_Msk 0x10UL +#define CTBM_CTD_SW_CTDS_COR_Pos 5UL +#define CTBM_CTD_SW_CTDS_COR_Msk 0x20UL +#define CTBM_CTD_SW_CTDO_C6H_Pos 8UL +#define CTBM_CTD_SW_CTDO_C6H_Msk 0x100UL +#define CTBM_CTD_SW_CTDO_COS_Pos 9UL +#define CTBM_CTD_SW_CTDO_COS_Msk 0x200UL +#define CTBM_CTD_SW_CTDH_COB_Pos 10UL +#define CTBM_CTD_SW_CTDH_COB_Msk 0x400UL +#define CTBM_CTD_SW_CTDH_CHD_Pos 12UL +#define CTBM_CTD_SW_CTDH_CHD_Msk 0x1000UL +#define CTBM_CTD_SW_CTDH_CA0_Pos 13UL +#define CTBM_CTD_SW_CTDH_CA0_Msk 0x2000UL +#define CTBM_CTD_SW_CTDH_CIS_Pos 14UL +#define CTBM_CTD_SW_CTDH_CIS_Msk 0x4000UL +#define CTBM_CTD_SW_CTDH_ILR_Pos 15UL +#define CTBM_CTD_SW_CTDH_ILR_Msk 0x8000UL +/* CTBM.CTD_SW_CLEAR */ +#define CTBM_CTD_SW_CLEAR_CTDD_CRD_Pos 1UL +#define CTBM_CTD_SW_CLEAR_CTDD_CRD_Msk 0x2UL +#define CTBM_CTD_SW_CLEAR_CTDS_CRS_Pos 4UL +#define CTBM_CTD_SW_CLEAR_CTDS_CRS_Msk 0x10UL +#define CTBM_CTD_SW_CLEAR_CTDS_COR_Pos 5UL +#define CTBM_CTD_SW_CLEAR_CTDS_COR_Msk 0x20UL +#define CTBM_CTD_SW_CLEAR_CTDO_C6H_Pos 8UL +#define CTBM_CTD_SW_CLEAR_CTDO_C6H_Msk 0x100UL +#define CTBM_CTD_SW_CLEAR_CTDO_COS_Pos 9UL +#define CTBM_CTD_SW_CLEAR_CTDO_COS_Msk 0x200UL +#define CTBM_CTD_SW_CLEAR_CTDH_COB_Pos 10UL +#define CTBM_CTD_SW_CLEAR_CTDH_COB_Msk 0x400UL +#define CTBM_CTD_SW_CLEAR_CTDH_CHD_Pos 12UL +#define CTBM_CTD_SW_CLEAR_CTDH_CHD_Msk 0x1000UL +#define CTBM_CTD_SW_CLEAR_CTDH_CA0_Pos 13UL +#define CTBM_CTD_SW_CLEAR_CTDH_CA0_Msk 0x2000UL +#define CTBM_CTD_SW_CLEAR_CTDH_CIS_Pos 14UL +#define CTBM_CTD_SW_CLEAR_CTDH_CIS_Msk 0x4000UL +#define CTBM_CTD_SW_CLEAR_CTDH_ILR_Pos 15UL +#define CTBM_CTD_SW_CLEAR_CTDH_ILR_Msk 0x8000UL +/* CTBM.CTB_SW_DS_CTRL */ +#define CTBM_CTB_SW_DS_CTRL_P2_DS_CTRL23_Pos 10UL +#define CTBM_CTB_SW_DS_CTRL_P2_DS_CTRL23_Msk 0x400UL +#define CTBM_CTB_SW_DS_CTRL_P3_DS_CTRL23_Pos 11UL +#define CTBM_CTB_SW_DS_CTRL_P3_DS_CTRL23_Msk 0x800UL +#define CTBM_CTB_SW_DS_CTRL_CTD_COS_DS_CTRL_Pos 31UL +#define CTBM_CTB_SW_DS_CTRL_CTD_COS_DS_CTRL_Msk 0x80000000UL +/* CTBM.CTB_SW_SQ_CTRL */ +#define CTBM_CTB_SW_SQ_CTRL_P2_SQ_CTRL23_Pos 10UL +#define CTBM_CTB_SW_SQ_CTRL_P2_SQ_CTRL23_Msk 0x400UL +#define CTBM_CTB_SW_SQ_CTRL_P3_SQ_CTRL23_Pos 11UL +#define CTBM_CTB_SW_SQ_CTRL_P3_SQ_CTRL23_Msk 0x800UL +/* CTBM.CTB_SW_STATUS */ +#define CTBM_CTB_SW_STATUS_OA0O_D51_STAT_Pos 28UL +#define CTBM_CTB_SW_STATUS_OA0O_D51_STAT_Msk 0x10000000UL +#define CTBM_CTB_SW_STATUS_OA1O_D52_STAT_Pos 29UL +#define CTBM_CTB_SW_STATUS_OA1O_D52_STAT_Msk 0x20000000UL +#define CTBM_CTB_SW_STATUS_OA1O_D62_STAT_Pos 30UL +#define CTBM_CTB_SW_STATUS_OA1O_D62_STAT_Msk 0x40000000UL +#define CTBM_CTB_SW_STATUS_CTD_COS_STAT_Pos 31UL +#define CTBM_CTB_SW_STATUS_CTD_COS_STAT_Msk 0x80000000UL +/* CTBM.OA0_OFFSET_TRIM */ +#define CTBM_OA0_OFFSET_TRIM_OA0_OFFSET_TRIM_Pos 0UL +#define CTBM_OA0_OFFSET_TRIM_OA0_OFFSET_TRIM_Msk 0x3FUL +/* CTBM.OA0_SLOPE_OFFSET_TRIM */ +#define CTBM_OA0_SLOPE_OFFSET_TRIM_OA0_SLOPE_OFFSET_TRIM_Pos 0UL +#define CTBM_OA0_SLOPE_OFFSET_TRIM_OA0_SLOPE_OFFSET_TRIM_Msk 0x3FUL +/* CTBM.OA0_COMP_TRIM */ +#define CTBM_OA0_COMP_TRIM_OA0_COMP_TRIM_Pos 0UL +#define CTBM_OA0_COMP_TRIM_OA0_COMP_TRIM_Msk 0x3UL +/* CTBM.OA1_OFFSET_TRIM */ +#define CTBM_OA1_OFFSET_TRIM_OA1_OFFSET_TRIM_Pos 0UL +#define CTBM_OA1_OFFSET_TRIM_OA1_OFFSET_TRIM_Msk 0x3FUL +/* CTBM.OA1_SLOPE_OFFSET_TRIM */ +#define CTBM_OA1_SLOPE_OFFSET_TRIM_OA1_SLOPE_OFFSET_TRIM_Pos 0UL +#define CTBM_OA1_SLOPE_OFFSET_TRIM_OA1_SLOPE_OFFSET_TRIM_Msk 0x3FUL +/* CTBM.OA1_COMP_TRIM */ +#define CTBM_OA1_COMP_TRIM_OA1_COMP_TRIM_Pos 0UL +#define CTBM_OA1_COMP_TRIM_OA1_COMP_TRIM_Msk 0x3UL + + +#endif /* _CYIP_CTBM_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctdac.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctdac.h new file mode 100644 index 00000000000..99a8c1461c2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ctdac.h @@ -0,0 +1,114 @@ +/***************************************************************************//** +* \file cyip_ctdac.h +* +* \brief +* CTDAC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_CTDAC_H_ +#define _CYIP_CTDAC_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC_SECTION_SIZE 0x00010000UL + +/** + * \brief Continuous Time DAC (CTDAC) + */ +typedef struct { + __IOM uint32_t CTDAC_CTRL; /*!< 0x00000000 Global CTDAC control */ + __IM uint32_t RESERVED[7]; + __IOM uint32_t INTR; /*!< 0x00000020 Interrupt request register */ + __IOM uint32_t INTR_SET; /*!< 0x00000024 Interrupt request set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000028 Interrupt request mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000002C Interrupt request masked */ + __IM uint32_t RESERVED1[32]; + __IOM uint32_t CTDAC_SW; /*!< 0x000000B0 CTDAC switch control */ + __IOM uint32_t CTDAC_SW_CLEAR; /*!< 0x000000B4 CTDAC switch control clear */ + __IM uint32_t RESERVED2[18]; + __IOM uint32_t CTDAC_VAL; /*!< 0x00000100 DAC Value */ + __IOM uint32_t CTDAC_VAL_NXT; /*!< 0x00000104 Next DAC value (double buffering) */ +} CTDAC_V1_Type; /*!< Size = 264 (0x108) */ + + +/* CTDAC.CTDAC_CTRL */ +#define CTDAC_CTDAC_CTRL_DEGLITCH_CNT_Pos 0UL +#define CTDAC_CTDAC_CTRL_DEGLITCH_CNT_Msk 0x3FUL +#define CTDAC_CTDAC_CTRL_DEGLITCH_CO6_Pos 8UL +#define CTDAC_CTDAC_CTRL_DEGLITCH_CO6_Msk 0x100UL +#define CTDAC_CTDAC_CTRL_DEGLITCH_COS_Pos 9UL +#define CTDAC_CTDAC_CTRL_DEGLITCH_COS_Msk 0x200UL +#define CTDAC_CTDAC_CTRL_OUT_EN_Pos 22UL +#define CTDAC_CTDAC_CTRL_OUT_EN_Msk 0x400000UL +#define CTDAC_CTDAC_CTRL_CTDAC_RANGE_Pos 23UL +#define CTDAC_CTDAC_CTRL_CTDAC_RANGE_Msk 0x800000UL +#define CTDAC_CTDAC_CTRL_CTDAC_MODE_Pos 24UL +#define CTDAC_CTDAC_CTRL_CTDAC_MODE_Msk 0x3000000UL +#define CTDAC_CTDAC_CTRL_DISABLED_MODE_Pos 27UL +#define CTDAC_CTDAC_CTRL_DISABLED_MODE_Msk 0x8000000UL +#define CTDAC_CTDAC_CTRL_DSI_STROBE_EN_Pos 28UL +#define CTDAC_CTDAC_CTRL_DSI_STROBE_EN_Msk 0x10000000UL +#define CTDAC_CTDAC_CTRL_DSI_STROBE_LEVEL_Pos 29UL +#define CTDAC_CTDAC_CTRL_DSI_STROBE_LEVEL_Msk 0x20000000UL +#define CTDAC_CTDAC_CTRL_DEEPSLEEP_ON_Pos 30UL +#define CTDAC_CTDAC_CTRL_DEEPSLEEP_ON_Msk 0x40000000UL +#define CTDAC_CTDAC_CTRL_ENABLED_Pos 31UL +#define CTDAC_CTDAC_CTRL_ENABLED_Msk 0x80000000UL +/* CTDAC.INTR */ +#define CTDAC_INTR_VDAC_EMPTY_Pos 0UL +#define CTDAC_INTR_VDAC_EMPTY_Msk 0x1UL +/* CTDAC.INTR_SET */ +#define CTDAC_INTR_SET_VDAC_EMPTY_SET_Pos 0UL +#define CTDAC_INTR_SET_VDAC_EMPTY_SET_Msk 0x1UL +/* CTDAC.INTR_MASK */ +#define CTDAC_INTR_MASK_VDAC_EMPTY_MASK_Pos 0UL +#define CTDAC_INTR_MASK_VDAC_EMPTY_MASK_Msk 0x1UL +/* CTDAC.INTR_MASKED */ +#define CTDAC_INTR_MASKED_VDAC_EMPTY_MASKED_Pos 0UL +#define CTDAC_INTR_MASKED_VDAC_EMPTY_MASKED_Msk 0x1UL +/* CTDAC.CTDAC_SW */ +#define CTDAC_CTDAC_SW_CTDD_CVD_Pos 0UL +#define CTDAC_CTDAC_SW_CTDD_CVD_Msk 0x1UL +#define CTDAC_CTDAC_SW_CTDO_CO6_Pos 8UL +#define CTDAC_CTDAC_SW_CTDO_CO6_Msk 0x100UL +/* CTDAC.CTDAC_SW_CLEAR */ +#define CTDAC_CTDAC_SW_CLEAR_CTDD_CVD_Pos 0UL +#define CTDAC_CTDAC_SW_CLEAR_CTDD_CVD_Msk 0x1UL +#define CTDAC_CTDAC_SW_CLEAR_CTDO_CO6_Pos 8UL +#define CTDAC_CTDAC_SW_CLEAR_CTDO_CO6_Msk 0x100UL +/* CTDAC.CTDAC_VAL */ +#define CTDAC_CTDAC_VAL_VALUE_Pos 0UL +#define CTDAC_CTDAC_VAL_VALUE_Msk 0xFFFUL +/* CTDAC.CTDAC_VAL_NXT */ +#define CTDAC_CTDAC_VAL_NXT_VALUE_Pos 0UL +#define CTDAC_CTDAC_VAL_NXT_VALUE_Msk 0xFFFUL + + +#endif /* _CYIP_CTDAC_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dmac_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dmac_v2.h new file mode 100644 index 00000000000..23cfb7e710f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dmac_v2.h @@ -0,0 +1,243 @@ +/***************************************************************************//** +* \file cyip_dmac_v2.h +* +* \brief +* DMAC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_DMAC_V2_H_ +#define _CYIP_DMAC_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* DMAC +*******************************************************************************/ + +#define DMAC_CH_V2_SECTION_SIZE 0x00000100UL +#define DMAC_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief DMA controller channel (DMAC_CH) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Channel control */ + __IM uint32_t RESERVED[3]; + __IM uint32_t IDX; /*!< 0x00000010 Channel current indices */ + __IM uint32_t SRC; /*!< 0x00000014 Channel current source address */ + __IM uint32_t DST; /*!< 0x00000018 Channel current destination address */ + __IM uint32_t RESERVED1; + __IOM uint32_t CURR; /*!< 0x00000020 Channel current descriptor pointer */ + __IM uint32_t RESERVED2; + __IOM uint32_t TR_CMD; /*!< 0x00000028 Channle software trigger */ + __IM uint32_t RESERVED3[5]; + __IM uint32_t DESCR_STATUS; /*!< 0x00000040 Channel descriptor status */ + __IM uint32_t RESERVED4[7]; + __IM uint32_t DESCR_CTL; /*!< 0x00000060 Channel descriptor control */ + __IM uint32_t DESCR_SRC; /*!< 0x00000064 Channel descriptor source */ + __IM uint32_t DESCR_DST; /*!< 0x00000068 Channel descriptor destination */ + __IM uint32_t DESCR_X_SIZE; /*!< 0x0000006C Channel descriptor X size */ + __IM uint32_t DESCR_X_INCR; /*!< 0x00000070 Channel descriptor X increment */ + __IM uint32_t DESCR_Y_SIZE; /*!< 0x00000074 Channel descriptor Y size */ + __IM uint32_t DESCR_Y_INCR; /*!< 0x00000078 Channel descriptor Y increment */ + __IM uint32_t DESCR_NEXT; /*!< 0x0000007C Channel descriptor next pointer */ + __IOM uint32_t INTR; /*!< 0x00000080 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000084 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000088 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000008C Interrupt masked */ + __IM uint32_t RESERVED5[28]; +} DMAC_CH_V2_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief DMAC (DMAC) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED; + __IM uint32_t ACTIVE; /*!< 0x00000008 Active channels */ + __IM uint32_t RESERVED1[1021]; + DMAC_CH_V2_Type CH[8]; /*!< 0x00001000 DMA controller channel */ +} DMAC_V2_Type; /*!< Size = 6144 (0x1800) */ + + +/* DMAC_CH.CTL */ +#define DMAC_CH_V2_CTL_P_Pos 0UL +#define DMAC_CH_V2_CTL_P_Msk 0x1UL +#define DMAC_CH_V2_CTL_NS_Pos 1UL +#define DMAC_CH_V2_CTL_NS_Msk 0x2UL +#define DMAC_CH_V2_CTL_B_Pos 2UL +#define DMAC_CH_V2_CTL_B_Msk 0x4UL +#define DMAC_CH_V2_CTL_PC_Pos 4UL +#define DMAC_CH_V2_CTL_PC_Msk 0xF0UL +#define DMAC_CH_V2_CTL_PRIO_Pos 8UL +#define DMAC_CH_V2_CTL_PRIO_Msk 0x300UL +#define DMAC_CH_V2_CTL_ENABLED_Pos 31UL +#define DMAC_CH_V2_CTL_ENABLED_Msk 0x80000000UL +/* DMAC_CH.IDX */ +#define DMAC_CH_V2_IDX_X_Pos 0UL +#define DMAC_CH_V2_IDX_X_Msk 0xFFFFUL +#define DMAC_CH_V2_IDX_Y_Pos 16UL +#define DMAC_CH_V2_IDX_Y_Msk 0xFFFF0000UL +/* DMAC_CH.SRC */ +#define DMAC_CH_V2_SRC_ADDR_Pos 0UL +#define DMAC_CH_V2_SRC_ADDR_Msk 0xFFFFFFFFUL +/* DMAC_CH.DST */ +#define DMAC_CH_V2_DST_ADDR_Pos 0UL +#define DMAC_CH_V2_DST_ADDR_Msk 0xFFFFFFFFUL +/* DMAC_CH.CURR */ +#define DMAC_CH_V2_CURR_PTR_Pos 2UL +#define DMAC_CH_V2_CURR_PTR_Msk 0xFFFFFFFCUL +/* DMAC_CH.TR_CMD */ +#define DMAC_CH_V2_TR_CMD_ACTIVATE_Pos 0UL +#define DMAC_CH_V2_TR_CMD_ACTIVATE_Msk 0x1UL +/* DMAC_CH.DESCR_STATUS */ +#define DMAC_CH_V2_DESCR_STATUS_VALID_Pos 31UL +#define DMAC_CH_V2_DESCR_STATUS_VALID_Msk 0x80000000UL +/* DMAC_CH.DESCR_CTL */ +#define DMAC_CH_V2_DESCR_CTL_WAIT_FOR_DEACT_Pos 0UL +#define DMAC_CH_V2_DESCR_CTL_WAIT_FOR_DEACT_Msk 0x3UL +#define DMAC_CH_V2_DESCR_CTL_INTR_TYPE_Pos 2UL +#define DMAC_CH_V2_DESCR_CTL_INTR_TYPE_Msk 0xCUL +#define DMAC_CH_V2_DESCR_CTL_TR_OUT_TYPE_Pos 4UL +#define DMAC_CH_V2_DESCR_CTL_TR_OUT_TYPE_Msk 0x30UL +#define DMAC_CH_V2_DESCR_CTL_TR_IN_TYPE_Pos 6UL +#define DMAC_CH_V2_DESCR_CTL_TR_IN_TYPE_Msk 0xC0UL +#define DMAC_CH_V2_DESCR_CTL_DATA_PREFETCH_Pos 8UL +#define DMAC_CH_V2_DESCR_CTL_DATA_PREFETCH_Msk 0x100UL +#define DMAC_CH_V2_DESCR_CTL_DATA_SIZE_Pos 16UL +#define DMAC_CH_V2_DESCR_CTL_DATA_SIZE_Msk 0x30000UL +#define DMAC_CH_V2_DESCR_CTL_CH_DISABLE_Pos 24UL +#define DMAC_CH_V2_DESCR_CTL_CH_DISABLE_Msk 0x1000000UL +#define DMAC_CH_V2_DESCR_CTL_SRC_TRANSFER_SIZE_Pos 26UL +#define DMAC_CH_V2_DESCR_CTL_SRC_TRANSFER_SIZE_Msk 0x4000000UL +#define DMAC_CH_V2_DESCR_CTL_DST_TRANSFER_SIZE_Pos 27UL +#define DMAC_CH_V2_DESCR_CTL_DST_TRANSFER_SIZE_Msk 0x8000000UL +#define DMAC_CH_V2_DESCR_CTL_DESCR_TYPE_Pos 28UL +#define DMAC_CH_V2_DESCR_CTL_DESCR_TYPE_Msk 0x70000000UL +/* DMAC_CH.DESCR_SRC */ +#define DMAC_CH_V2_DESCR_SRC_ADDR_Pos 0UL +#define DMAC_CH_V2_DESCR_SRC_ADDR_Msk 0xFFFFFFFFUL +/* DMAC_CH.DESCR_DST */ +#define DMAC_CH_V2_DESCR_DST_ADDR_Pos 0UL +#define DMAC_CH_V2_DESCR_DST_ADDR_Msk 0xFFFFFFFFUL +/* DMAC_CH.DESCR_X_SIZE */ +#define DMAC_CH_V2_DESCR_X_SIZE_X_COUNT_Pos 0UL +#define DMAC_CH_V2_DESCR_X_SIZE_X_COUNT_Msk 0xFFFFUL +/* DMAC_CH.DESCR_X_INCR */ +#define DMAC_CH_V2_DESCR_X_INCR_SRC_X_Pos 0UL +#define DMAC_CH_V2_DESCR_X_INCR_SRC_X_Msk 0xFFFFUL +#define DMAC_CH_V2_DESCR_X_INCR_DST_X_Pos 16UL +#define DMAC_CH_V2_DESCR_X_INCR_DST_X_Msk 0xFFFF0000UL +/* DMAC_CH.DESCR_Y_SIZE */ +#define DMAC_CH_V2_DESCR_Y_SIZE_Y_COUNT_Pos 0UL +#define DMAC_CH_V2_DESCR_Y_SIZE_Y_COUNT_Msk 0xFFFFUL +/* DMAC_CH.DESCR_Y_INCR */ +#define DMAC_CH_V2_DESCR_Y_INCR_SRC_Y_Pos 0UL +#define DMAC_CH_V2_DESCR_Y_INCR_SRC_Y_Msk 0xFFFFUL +#define DMAC_CH_V2_DESCR_Y_INCR_DST_Y_Pos 16UL +#define DMAC_CH_V2_DESCR_Y_INCR_DST_Y_Msk 0xFFFF0000UL +/* DMAC_CH.DESCR_NEXT */ +#define DMAC_CH_V2_DESCR_NEXT_PTR_Pos 2UL +#define DMAC_CH_V2_DESCR_NEXT_PTR_Msk 0xFFFFFFFCUL +/* DMAC_CH.INTR */ +#define DMAC_CH_V2_INTR_COMPLETION_Pos 0UL +#define DMAC_CH_V2_INTR_COMPLETION_Msk 0x1UL +#define DMAC_CH_V2_INTR_SRC_BUS_ERROR_Pos 1UL +#define DMAC_CH_V2_INTR_SRC_BUS_ERROR_Msk 0x2UL +#define DMAC_CH_V2_INTR_DST_BUS_ERROR_Pos 2UL +#define DMAC_CH_V2_INTR_DST_BUS_ERROR_Msk 0x4UL +#define DMAC_CH_V2_INTR_SRC_MISAL_Pos 3UL +#define DMAC_CH_V2_INTR_SRC_MISAL_Msk 0x8UL +#define DMAC_CH_V2_INTR_DST_MISAL_Pos 4UL +#define DMAC_CH_V2_INTR_DST_MISAL_Msk 0x10UL +#define DMAC_CH_V2_INTR_CURR_PTR_NULL_Pos 5UL +#define DMAC_CH_V2_INTR_CURR_PTR_NULL_Msk 0x20UL +#define DMAC_CH_V2_INTR_ACTIVE_CH_DISABLED_Pos 6UL +#define DMAC_CH_V2_INTR_ACTIVE_CH_DISABLED_Msk 0x40UL +#define DMAC_CH_V2_INTR_DESCR_BUS_ERROR_Pos 7UL +#define DMAC_CH_V2_INTR_DESCR_BUS_ERROR_Msk 0x80UL +/* DMAC_CH.INTR_SET */ +#define DMAC_CH_V2_INTR_SET_COMPLETION_Pos 0UL +#define DMAC_CH_V2_INTR_SET_COMPLETION_Msk 0x1UL +#define DMAC_CH_V2_INTR_SET_SRC_BUS_ERROR_Pos 1UL +#define DMAC_CH_V2_INTR_SET_SRC_BUS_ERROR_Msk 0x2UL +#define DMAC_CH_V2_INTR_SET_DST_BUS_ERROR_Pos 2UL +#define DMAC_CH_V2_INTR_SET_DST_BUS_ERROR_Msk 0x4UL +#define DMAC_CH_V2_INTR_SET_SRC_MISAL_Pos 3UL +#define DMAC_CH_V2_INTR_SET_SRC_MISAL_Msk 0x8UL +#define DMAC_CH_V2_INTR_SET_DST_MISAL_Pos 4UL +#define DMAC_CH_V2_INTR_SET_DST_MISAL_Msk 0x10UL +#define DMAC_CH_V2_INTR_SET_CURR_PTR_NULL_Pos 5UL +#define DMAC_CH_V2_INTR_SET_CURR_PTR_NULL_Msk 0x20UL +#define DMAC_CH_V2_INTR_SET_ACTIVE_CH_DISABLED_Pos 6UL +#define DMAC_CH_V2_INTR_SET_ACTIVE_CH_DISABLED_Msk 0x40UL +#define DMAC_CH_V2_INTR_SET_DESCR_BUS_ERROR_Pos 7UL +#define DMAC_CH_V2_INTR_SET_DESCR_BUS_ERROR_Msk 0x80UL +/* DMAC_CH.INTR_MASK */ +#define DMAC_CH_V2_INTR_MASK_COMPLETION_Pos 0UL +#define DMAC_CH_V2_INTR_MASK_COMPLETION_Msk 0x1UL +#define DMAC_CH_V2_INTR_MASK_SRC_BUS_ERROR_Pos 1UL +#define DMAC_CH_V2_INTR_MASK_SRC_BUS_ERROR_Msk 0x2UL +#define DMAC_CH_V2_INTR_MASK_DST_BUS_ERROR_Pos 2UL +#define DMAC_CH_V2_INTR_MASK_DST_BUS_ERROR_Msk 0x4UL +#define DMAC_CH_V2_INTR_MASK_SRC_MISAL_Pos 3UL +#define DMAC_CH_V2_INTR_MASK_SRC_MISAL_Msk 0x8UL +#define DMAC_CH_V2_INTR_MASK_DST_MISAL_Pos 4UL +#define DMAC_CH_V2_INTR_MASK_DST_MISAL_Msk 0x10UL +#define DMAC_CH_V2_INTR_MASK_CURR_PTR_NULL_Pos 5UL +#define DMAC_CH_V2_INTR_MASK_CURR_PTR_NULL_Msk 0x20UL +#define DMAC_CH_V2_INTR_MASK_ACTIVE_CH_DISABLED_Pos 6UL +#define DMAC_CH_V2_INTR_MASK_ACTIVE_CH_DISABLED_Msk 0x40UL +#define DMAC_CH_V2_INTR_MASK_DESCR_BUS_ERROR_Pos 7UL +#define DMAC_CH_V2_INTR_MASK_DESCR_BUS_ERROR_Msk 0x80UL +/* DMAC_CH.INTR_MASKED */ +#define DMAC_CH_V2_INTR_MASKED_COMPLETION_Pos 0UL +#define DMAC_CH_V2_INTR_MASKED_COMPLETION_Msk 0x1UL +#define DMAC_CH_V2_INTR_MASKED_SRC_BUS_ERROR_Pos 1UL +#define DMAC_CH_V2_INTR_MASKED_SRC_BUS_ERROR_Msk 0x2UL +#define DMAC_CH_V2_INTR_MASKED_DST_BUS_ERROR_Pos 2UL +#define DMAC_CH_V2_INTR_MASKED_DST_BUS_ERROR_Msk 0x4UL +#define DMAC_CH_V2_INTR_MASKED_SRC_MISAL_Pos 3UL +#define DMAC_CH_V2_INTR_MASKED_SRC_MISAL_Msk 0x8UL +#define DMAC_CH_V2_INTR_MASKED_DST_MISAL_Pos 4UL +#define DMAC_CH_V2_INTR_MASKED_DST_MISAL_Msk 0x10UL +#define DMAC_CH_V2_INTR_MASKED_CURR_PTR_NULL_Pos 5UL +#define DMAC_CH_V2_INTR_MASKED_CURR_PTR_NULL_Msk 0x20UL +#define DMAC_CH_V2_INTR_MASKED_ACTIVE_CH_DISABLED_Pos 6UL +#define DMAC_CH_V2_INTR_MASKED_ACTIVE_CH_DISABLED_Msk 0x40UL +#define DMAC_CH_V2_INTR_MASKED_DESCR_BUS_ERROR_Pos 7UL +#define DMAC_CH_V2_INTR_MASKED_DESCR_BUS_ERROR_Msk 0x80UL + + +/* DMAC.CTL */ +#define DMAC_V2_CTL_ENABLED_Pos 31UL +#define DMAC_V2_CTL_ENABLED_Msk 0x80000000UL +/* DMAC.ACTIVE */ +#define DMAC_V2_ACTIVE_ACTIVE_Pos 0UL +#define DMAC_V2_ACTIVE_ACTIVE_Msk 0xFFUL + + +#endif /* _CYIP_DMAC_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw.h new file mode 100644 index 00000000000..d3764fd4749 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw.h @@ -0,0 +1,180 @@ +/***************************************************************************//** +* \file cyip_dw.h +* +* \brief +* DW IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_DW_H_ +#define _CYIP_DW_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW_CH_STRUCT_SECTION_SIZE 0x00000020UL +#define DW_SECTION_SIZE 0x00001000UL + +/** + * \brief DW channel structure (DW_CH_STRUCT) + */ +typedef struct { + __IOM uint32_t CH_CTL; /*!< 0x00000000 Channel control */ + __IM uint32_t CH_STATUS; /*!< 0x00000004 Channel status */ + __IOM uint32_t CH_IDX; /*!< 0x00000008 Channel current indices */ + __IOM uint32_t CH_CURR_PTR; /*!< 0x0000000C Channel current descriptor pointer */ + __IOM uint32_t INTR; /*!< 0x00000010 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000014 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C Interrupt masked */ +} DW_CH_STRUCT_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief Datawire Controller (DW) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IM uint32_t PENDING; /*!< 0x00000008 Pending channels */ + __IM uint32_t RESERVED; + __IM uint32_t STATUS_INTR; /*!< 0x00000010 System interrupt control */ + __IM uint32_t STATUS_INTR_MASKED; /*!< 0x00000014 Status of interrupts masked */ + __IM uint32_t RESERVED1[2]; + __IM uint32_t ACT_DESCR_CTL; /*!< 0x00000020 Active descriptor control */ + __IM uint32_t ACT_DESCR_SRC; /*!< 0x00000024 Active descriptor source */ + __IM uint32_t ACT_DESCR_DST; /*!< 0x00000028 Active descriptor destination */ + __IM uint32_t RESERVED2; + __IM uint32_t ACT_DESCR_X_CTL; /*!< 0x00000030 Active descriptor X loop control */ + __IM uint32_t ACT_DESCR_Y_CTL; /*!< 0x00000034 Active descriptor Y loop control */ + __IM uint32_t ACT_DESCR_NEXT_PTR; /*!< 0x00000038 Active descriptor next pointer */ + __IM uint32_t RESERVED3; + __IM uint32_t ACT_SRC; /*!< 0x00000040 Active source */ + __IM uint32_t ACT_DST; /*!< 0x00000044 Active destination */ + __IM uint32_t RESERVED4[494]; + DW_CH_STRUCT_V1_Type CH_STRUCT[32]; /*!< 0x00000800 DW channel structure */ +} DW_V1_Type; /*!< Size = 3072 (0xC00) */ + + +/* DW_CH_STRUCT.CH_CTL */ +#define DW_CH_STRUCT_CH_CTL_P_Pos 0UL +#define DW_CH_STRUCT_CH_CTL_P_Msk 0x1UL +#define DW_CH_STRUCT_CH_CTL_NS_Pos 1UL +#define DW_CH_STRUCT_CH_CTL_NS_Msk 0x2UL +#define DW_CH_STRUCT_CH_CTL_B_Pos 2UL +#define DW_CH_STRUCT_CH_CTL_B_Msk 0x4UL +#define DW_CH_STRUCT_CH_CTL_PC_Pos 4UL +#define DW_CH_STRUCT_CH_CTL_PC_Msk 0xF0UL +#define DW_CH_STRUCT_CH_CTL_PRIO_Pos 16UL +#define DW_CH_STRUCT_CH_CTL_PRIO_Msk 0x30000UL +#define DW_CH_STRUCT_CH_CTL_PREEMPTABLE_Pos 18UL +#define DW_CH_STRUCT_CH_CTL_PREEMPTABLE_Msk 0x40000UL +#define DW_CH_STRUCT_CH_CTL_ENABLED_Pos 31UL +#define DW_CH_STRUCT_CH_CTL_ENABLED_Msk 0x80000000UL +/* DW_CH_STRUCT.CH_STATUS */ +#define DW_CH_STRUCT_CH_STATUS_INTR_CAUSE_Pos 0UL +#define DW_CH_STRUCT_CH_STATUS_INTR_CAUSE_Msk 0xFUL +/* DW_CH_STRUCT.CH_IDX */ +#define DW_CH_STRUCT_CH_IDX_X_IDX_Pos 0UL +#define DW_CH_STRUCT_CH_IDX_X_IDX_Msk 0xFFUL +#define DW_CH_STRUCT_CH_IDX_Y_IDX_Pos 8UL +#define DW_CH_STRUCT_CH_IDX_Y_IDX_Msk 0xFF00UL +/* DW_CH_STRUCT.CH_CURR_PTR */ +#define DW_CH_STRUCT_CH_CURR_PTR_ADDR_Pos 2UL +#define DW_CH_STRUCT_CH_CURR_PTR_ADDR_Msk 0xFFFFFFFCUL +/* DW_CH_STRUCT.INTR */ +#define DW_CH_STRUCT_INTR_CH_Pos 0UL +#define DW_CH_STRUCT_INTR_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_SET */ +#define DW_CH_STRUCT_INTR_SET_CH_Pos 0UL +#define DW_CH_STRUCT_INTR_SET_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_MASK */ +#define DW_CH_STRUCT_INTR_MASK_CH_Pos 0UL +#define DW_CH_STRUCT_INTR_MASK_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_MASKED */ +#define DW_CH_STRUCT_INTR_MASKED_CH_Pos 0UL +#define DW_CH_STRUCT_INTR_MASKED_CH_Msk 0x1UL + + +/* DW.CTL */ +#define DW_CTL_ENABLED_Pos 31UL +#define DW_CTL_ENABLED_Msk 0x80000000UL +/* DW.STATUS */ +#define DW_STATUS_P_Pos 0UL +#define DW_STATUS_P_Msk 0x1UL +#define DW_STATUS_NS_Pos 1UL +#define DW_STATUS_NS_Msk 0x2UL +#define DW_STATUS_B_Pos 2UL +#define DW_STATUS_B_Msk 0x4UL +#define DW_STATUS_PC_Pos 4UL +#define DW_STATUS_PC_Msk 0xF0UL +#define DW_STATUS_CH_IDX_Pos 8UL +#define DW_STATUS_CH_IDX_Msk 0x1F00UL +#define DW_STATUS_PRIO_Pos 16UL +#define DW_STATUS_PRIO_Msk 0x30000UL +#define DW_STATUS_PREEMPTABLE_Pos 18UL +#define DW_STATUS_PREEMPTABLE_Msk 0x40000UL +#define DW_STATUS_STATE_Pos 20UL +#define DW_STATUS_STATE_Msk 0x700000UL +#define DW_STATUS_ACTIVE_Pos 31UL +#define DW_STATUS_ACTIVE_Msk 0x80000000UL +/* DW.PENDING */ +#define DW_PENDING_CH_PENDING_Pos 0UL +#define DW_PENDING_CH_PENDING_Msk 0xFFFFFFFFUL +/* DW.STATUS_INTR */ +#define DW_STATUS_INTR_CH_Pos 0UL +#define DW_STATUS_INTR_CH_Msk 0xFFFFFFFFUL +/* DW.STATUS_INTR_MASKED */ +#define DW_STATUS_INTR_MASKED_CH_Pos 0UL +#define DW_STATUS_INTR_MASKED_CH_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_CTL */ +#define DW_ACT_DESCR_CTL_DATA_Pos 0UL +#define DW_ACT_DESCR_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_SRC */ +#define DW_ACT_DESCR_SRC_DATA_Pos 0UL +#define DW_ACT_DESCR_SRC_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_DST */ +#define DW_ACT_DESCR_DST_DATA_Pos 0UL +#define DW_ACT_DESCR_DST_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_X_CTL */ +#define DW_ACT_DESCR_X_CTL_DATA_Pos 0UL +#define DW_ACT_DESCR_X_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_Y_CTL */ +#define DW_ACT_DESCR_Y_CTL_DATA_Pos 0UL +#define DW_ACT_DESCR_Y_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_NEXT_PTR */ +#define DW_ACT_DESCR_NEXT_PTR_ADDR_Pos 2UL +#define DW_ACT_DESCR_NEXT_PTR_ADDR_Msk 0xFFFFFFFCUL +/* DW.ACT_SRC */ +#define DW_ACT_SRC_SRC_ADDR_Pos 0UL +#define DW_ACT_SRC_SRC_ADDR_Msk 0xFFFFFFFFUL +/* DW.ACT_DST */ +#define DW_ACT_DST_DST_ADDR_Pos 0UL +#define DW_ACT_DST_DST_ADDR_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_DW_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw_v2.h new file mode 100644 index 00000000000..ae73aaa8380 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_dw_v2.h @@ -0,0 +1,225 @@ +/***************************************************************************//** +* \file cyip_dw_v2.h +* +* \brief +* DW IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_DW_V2_H_ +#define _CYIP_DW_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define DW_CH_STRUCT_V2_SECTION_SIZE 0x00000040UL +#define DW_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief DW channel structure (DW_CH_STRUCT) + */ +typedef struct { + __IOM uint32_t CH_CTL; /*!< 0x00000000 Channel control */ + __IM uint32_t CH_STATUS; /*!< 0x00000004 Channel status */ + __IOM uint32_t CH_IDX; /*!< 0x00000008 Channel current indices */ + __IOM uint32_t CH_CURR_PTR; /*!< 0x0000000C Channel current descriptor pointer */ + __IOM uint32_t INTR; /*!< 0x00000010 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000014 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C Interrupt masked */ + __IOM uint32_t SRAM_DATA0; /*!< 0x00000020 SRAM data 0 */ + __IOM uint32_t SRAM_DATA1; /*!< 0x00000024 SRAM data 1 */ + __IOM uint32_t TR_CMD; /*!< 0x00000028 Channel software trigger */ + __IM uint32_t RESERVED[5]; +} DW_CH_STRUCT_V2_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Datawire Controller (DW) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ACT_DESCR_CTL; /*!< 0x00000020 Active descriptor control */ + __IM uint32_t ACT_DESCR_SRC; /*!< 0x00000024 Active descriptor source */ + __IM uint32_t ACT_DESCR_DST; /*!< 0x00000028 Active descriptor destination */ + __IM uint32_t RESERVED1; + __IM uint32_t ACT_DESCR_X_CTL; /*!< 0x00000030 Active descriptor X loop control */ + __IM uint32_t ACT_DESCR_Y_CTL; /*!< 0x00000034 Active descriptor Y loop control */ + __IM uint32_t ACT_DESCR_NEXT_PTR; /*!< 0x00000038 Active descriptor next pointer */ + __IM uint32_t RESERVED2; + __IM uint32_t ACT_SRC; /*!< 0x00000040 Active source */ + __IM uint32_t ACT_DST; /*!< 0x00000044 Active destination */ + __IM uint32_t RESERVED3[14]; + __IOM uint32_t ECC_CTL; /*!< 0x00000080 ECC control */ + __IM uint32_t RESERVED4[31]; + __IOM uint32_t CRC_CTL; /*!< 0x00000100 CRC control */ + __IM uint32_t RESERVED5[3]; + __IOM uint32_t CRC_DATA_CTL; /*!< 0x00000110 CRC data control */ + __IM uint32_t RESERVED6[3]; + __IOM uint32_t CRC_POL_CTL; /*!< 0x00000120 CRC polynomial control */ + __IM uint32_t RESERVED7[3]; + __IOM uint32_t CRC_LFSR_CTL; /*!< 0x00000130 CRC LFSR control */ + __IM uint32_t RESERVED8[3]; + __IOM uint32_t CRC_REM_CTL; /*!< 0x00000140 CRC remainder control */ + __IM uint32_t RESERVED9; + __IM uint32_t CRC_REM_RESULT; /*!< 0x00000148 CRC remainder result */ + __IM uint32_t RESERVED10[8109]; + DW_CH_STRUCT_V2_Type CH_STRUCT[512]; /*!< 0x00008000 DW channel structure */ +} DW_V2_Type; /*!< Size = 65536 (0x10000) */ + + +/* DW_CH_STRUCT.CH_CTL */ +#define DW_CH_STRUCT_V2_CH_CTL_P_Pos 0UL +#define DW_CH_STRUCT_V2_CH_CTL_P_Msk 0x1UL +#define DW_CH_STRUCT_V2_CH_CTL_NS_Pos 1UL +#define DW_CH_STRUCT_V2_CH_CTL_NS_Msk 0x2UL +#define DW_CH_STRUCT_V2_CH_CTL_B_Pos 2UL +#define DW_CH_STRUCT_V2_CH_CTL_B_Msk 0x4UL +#define DW_CH_STRUCT_V2_CH_CTL_PC_Pos 4UL +#define DW_CH_STRUCT_V2_CH_CTL_PC_Msk 0xF0UL +#define DW_CH_STRUCT_V2_CH_CTL_PRIO_Pos 8UL +#define DW_CH_STRUCT_V2_CH_CTL_PRIO_Msk 0x300UL +#define DW_CH_STRUCT_V2_CH_CTL_PREEMPTABLE_Pos 11UL +#define DW_CH_STRUCT_V2_CH_CTL_PREEMPTABLE_Msk 0x800UL +#define DW_CH_STRUCT_V2_CH_CTL_ENABLED_Pos 31UL +#define DW_CH_STRUCT_V2_CH_CTL_ENABLED_Msk 0x80000000UL +/* DW_CH_STRUCT.CH_STATUS */ +#define DW_CH_STRUCT_V2_CH_STATUS_INTR_CAUSE_Pos 0UL +#define DW_CH_STRUCT_V2_CH_STATUS_INTR_CAUSE_Msk 0xFUL +#define DW_CH_STRUCT_V2_CH_STATUS_PENDING_Pos 31UL +#define DW_CH_STRUCT_V2_CH_STATUS_PENDING_Msk 0x80000000UL +/* DW_CH_STRUCT.CH_IDX */ +#define DW_CH_STRUCT_V2_CH_IDX_X_IDX_Pos 0UL +#define DW_CH_STRUCT_V2_CH_IDX_X_IDX_Msk 0xFFUL +#define DW_CH_STRUCT_V2_CH_IDX_Y_IDX_Pos 8UL +#define DW_CH_STRUCT_V2_CH_IDX_Y_IDX_Msk 0xFF00UL +/* DW_CH_STRUCT.CH_CURR_PTR */ +#define DW_CH_STRUCT_V2_CH_CURR_PTR_ADDR_Pos 2UL +#define DW_CH_STRUCT_V2_CH_CURR_PTR_ADDR_Msk 0xFFFFFFFCUL +/* DW_CH_STRUCT.INTR */ +#define DW_CH_STRUCT_V2_INTR_CH_Pos 0UL +#define DW_CH_STRUCT_V2_INTR_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_SET */ +#define DW_CH_STRUCT_V2_INTR_SET_CH_Pos 0UL +#define DW_CH_STRUCT_V2_INTR_SET_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_MASK */ +#define DW_CH_STRUCT_V2_INTR_MASK_CH_Pos 0UL +#define DW_CH_STRUCT_V2_INTR_MASK_CH_Msk 0x1UL +/* DW_CH_STRUCT.INTR_MASKED */ +#define DW_CH_STRUCT_V2_INTR_MASKED_CH_Pos 0UL +#define DW_CH_STRUCT_V2_INTR_MASKED_CH_Msk 0x1UL +/* DW_CH_STRUCT.SRAM_DATA0 */ +#define DW_CH_STRUCT_V2_SRAM_DATA0_DATA_Pos 0UL +#define DW_CH_STRUCT_V2_SRAM_DATA0_DATA_Msk 0xFFFFFFFFUL +/* DW_CH_STRUCT.SRAM_DATA1 */ +#define DW_CH_STRUCT_V2_SRAM_DATA1_DATA_Pos 0UL +#define DW_CH_STRUCT_V2_SRAM_DATA1_DATA_Msk 0xFFFFFFFFUL +/* DW_CH_STRUCT.TR_CMD */ +#define DW_CH_STRUCT_V2_TR_CMD_ACTIVATE_Pos 0UL +#define DW_CH_STRUCT_V2_TR_CMD_ACTIVATE_Msk 0x1UL + + +/* DW.CTL */ +#define DW_V2_CTL_ECC_EN_Pos 0UL +#define DW_V2_CTL_ECC_EN_Msk 0x1UL +#define DW_V2_CTL_ECC_INJ_EN_Pos 1UL +#define DW_V2_CTL_ECC_INJ_EN_Msk 0x2UL +#define DW_V2_CTL_ENABLED_Pos 31UL +#define DW_V2_CTL_ENABLED_Msk 0x80000000UL +/* DW.STATUS */ +#define DW_V2_STATUS_P_Pos 0UL +#define DW_V2_STATUS_P_Msk 0x1UL +#define DW_V2_STATUS_NS_Pos 1UL +#define DW_V2_STATUS_NS_Msk 0x2UL +#define DW_V2_STATUS_B_Pos 2UL +#define DW_V2_STATUS_B_Msk 0x4UL +#define DW_V2_STATUS_PC_Pos 4UL +#define DW_V2_STATUS_PC_Msk 0xF0UL +#define DW_V2_STATUS_PRIO_Pos 8UL +#define DW_V2_STATUS_PRIO_Msk 0x300UL +#define DW_V2_STATUS_PREEMPTABLE_Pos 11UL +#define DW_V2_STATUS_PREEMPTABLE_Msk 0x800UL +#define DW_V2_STATUS_CH_IDX_Pos 16UL +#define DW_V2_STATUS_CH_IDX_Msk 0x1FF0000UL +#define DW_V2_STATUS_STATE_Pos 28UL +#define DW_V2_STATUS_STATE_Msk 0x70000000UL +#define DW_V2_STATUS_ACTIVE_Pos 31UL +#define DW_V2_STATUS_ACTIVE_Msk 0x80000000UL +/* DW.ACT_DESCR_CTL */ +#define DW_V2_ACT_DESCR_CTL_DATA_Pos 0UL +#define DW_V2_ACT_DESCR_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_SRC */ +#define DW_V2_ACT_DESCR_SRC_DATA_Pos 0UL +#define DW_V2_ACT_DESCR_SRC_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_DST */ +#define DW_V2_ACT_DESCR_DST_DATA_Pos 0UL +#define DW_V2_ACT_DESCR_DST_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_X_CTL */ +#define DW_V2_ACT_DESCR_X_CTL_DATA_Pos 0UL +#define DW_V2_ACT_DESCR_X_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_Y_CTL */ +#define DW_V2_ACT_DESCR_Y_CTL_DATA_Pos 0UL +#define DW_V2_ACT_DESCR_Y_CTL_DATA_Msk 0xFFFFFFFFUL +/* DW.ACT_DESCR_NEXT_PTR */ +#define DW_V2_ACT_DESCR_NEXT_PTR_ADDR_Pos 2UL +#define DW_V2_ACT_DESCR_NEXT_PTR_ADDR_Msk 0xFFFFFFFCUL +/* DW.ACT_SRC */ +#define DW_V2_ACT_SRC_SRC_ADDR_Pos 0UL +#define DW_V2_ACT_SRC_SRC_ADDR_Msk 0xFFFFFFFFUL +/* DW.ACT_DST */ +#define DW_V2_ACT_DST_DST_ADDR_Pos 0UL +#define DW_V2_ACT_DST_DST_ADDR_Msk 0xFFFFFFFFUL +/* DW.ECC_CTL */ +#define DW_V2_ECC_CTL_WORD_ADDR_Pos 0UL +#define DW_V2_ECC_CTL_WORD_ADDR_Msk 0x3FFUL +#define DW_V2_ECC_CTL_PARITY_Pos 25UL +#define DW_V2_ECC_CTL_PARITY_Msk 0xFE000000UL +/* DW.CRC_CTL */ +#define DW_V2_CRC_CTL_DATA_REVERSE_Pos 0UL +#define DW_V2_CRC_CTL_DATA_REVERSE_Msk 0x1UL +#define DW_V2_CRC_CTL_REM_REVERSE_Pos 8UL +#define DW_V2_CRC_CTL_REM_REVERSE_Msk 0x100UL +/* DW.CRC_DATA_CTL */ +#define DW_V2_CRC_DATA_CTL_DATA_XOR_Pos 0UL +#define DW_V2_CRC_DATA_CTL_DATA_XOR_Msk 0xFFUL +/* DW.CRC_POL_CTL */ +#define DW_V2_CRC_POL_CTL_POLYNOMIAL_Pos 0UL +#define DW_V2_CRC_POL_CTL_POLYNOMIAL_Msk 0xFFFFFFFFUL +/* DW.CRC_LFSR_CTL */ +#define DW_V2_CRC_LFSR_CTL_LFSR32_Pos 0UL +#define DW_V2_CRC_LFSR_CTL_LFSR32_Msk 0xFFFFFFFFUL +/* DW.CRC_REM_CTL */ +#define DW_V2_CRC_REM_CTL_REM_XOR_Pos 0UL +#define DW_V2_CRC_REM_CTL_REM_XOR_Msk 0xFFFFFFFFUL +/* DW.CRC_REM_RESULT */ +#define DW_V2_CRC_REM_RESULT_REM_Pos 0UL +#define DW_V2_CRC_REM_RESULT_REM_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_DW_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse.h new file mode 100644 index 00000000000..f2d599df178 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse.h @@ -0,0 +1,327 @@ +/***************************************************************************//** +* \file cyip_efuse.h +* +* \brief +* EFUSE IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_EFUSE_H_ +#define _CYIP_EFUSE_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* EFUSE +*******************************************************************************/ + +#define EFUSE_SECTION_SIZE 0x00000080UL + +/** + * \brief EFUSE MXS40 registers (EFUSE) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t CMD; /*!< 0x00000010 Command */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t SEQ_DEFAULT; /*!< 0x00000020 Sequencer Default value */ + __IM uint32_t RESERVED2[7]; + __IOM uint32_t SEQ_READ_CTL_0; /*!< 0x00000040 Sequencer read control 0 */ + __IOM uint32_t SEQ_READ_CTL_1; /*!< 0x00000044 Sequencer read control 1 */ + __IOM uint32_t SEQ_READ_CTL_2; /*!< 0x00000048 Sequencer read control 2 */ + __IOM uint32_t SEQ_READ_CTL_3; /*!< 0x0000004C Sequencer read control 3 */ + __IOM uint32_t SEQ_READ_CTL_4; /*!< 0x00000050 Sequencer read control 4 */ + __IOM uint32_t SEQ_READ_CTL_5; /*!< 0x00000054 Sequencer read control 5 */ + __IM uint32_t RESERVED3[2]; + __IOM uint32_t SEQ_PROGRAM_CTL_0; /*!< 0x00000060 Sequencer program control 0 */ + __IOM uint32_t SEQ_PROGRAM_CTL_1; /*!< 0x00000064 Sequencer program control 1 */ + __IOM uint32_t SEQ_PROGRAM_CTL_2; /*!< 0x00000068 Sequencer program control 2 */ + __IOM uint32_t SEQ_PROGRAM_CTL_3; /*!< 0x0000006C Sequencer program control 3 */ + __IOM uint32_t SEQ_PROGRAM_CTL_4; /*!< 0x00000070 Sequencer program control 4 */ + __IOM uint32_t SEQ_PROGRAM_CTL_5; /*!< 0x00000074 Sequencer program control 5 */ +} EFUSE_V1_Type; /*!< Size = 120 (0x78) */ + + +/* EFUSE.CTL */ +#define EFUSE_CTL_ENABLED_Pos 31UL +#define EFUSE_CTL_ENABLED_Msk 0x80000000UL +/* EFUSE.CMD */ +#define EFUSE_CMD_BIT_DATA_Pos 0UL +#define EFUSE_CMD_BIT_DATA_Msk 0x1UL +#define EFUSE_CMD_BIT_ADDR_Pos 4UL +#define EFUSE_CMD_BIT_ADDR_Msk 0x70UL +#define EFUSE_CMD_BYTE_ADDR_Pos 8UL +#define EFUSE_CMD_BYTE_ADDR_Msk 0x1F00UL +#define EFUSE_CMD_MACRO_ADDR_Pos 16UL +#define EFUSE_CMD_MACRO_ADDR_Msk 0xF0000UL +#define EFUSE_CMD_START_Pos 31UL +#define EFUSE_CMD_START_Msk 0x80000000UL +/* EFUSE.SEQ_DEFAULT */ +#define EFUSE_SEQ_DEFAULT_STROBE_A_Pos 16UL +#define EFUSE_SEQ_DEFAULT_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_DEFAULT_STROBE_B_Pos 17UL +#define EFUSE_SEQ_DEFAULT_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_DEFAULT_STROBE_C_Pos 18UL +#define EFUSE_SEQ_DEFAULT_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_DEFAULT_STROBE_D_Pos 19UL +#define EFUSE_SEQ_DEFAULT_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_DEFAULT_STROBE_E_Pos 20UL +#define EFUSE_SEQ_DEFAULT_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_DEFAULT_STROBE_F_Pos 21UL +#define EFUSE_SEQ_DEFAULT_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_DEFAULT_STROBE_G_Pos 22UL +#define EFUSE_SEQ_DEFAULT_STROBE_G_Msk 0x400000UL +/* EFUSE.SEQ_READ_CTL_0 */ +#define EFUSE_SEQ_READ_CTL_0_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_0_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_0_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_0_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_0_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_0_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_READ_CTL_1 */ +#define EFUSE_SEQ_READ_CTL_1_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_1_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_1_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_1_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_1_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_1_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_READ_CTL_2 */ +#define EFUSE_SEQ_READ_CTL_2_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_2_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_2_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_2_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_2_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_2_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_READ_CTL_3 */ +#define EFUSE_SEQ_READ_CTL_3_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_3_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_3_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_3_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_3_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_3_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_READ_CTL_4 */ +#define EFUSE_SEQ_READ_CTL_4_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_4_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_4_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_4_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_4_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_4_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_READ_CTL_5 */ +#define EFUSE_SEQ_READ_CTL_5_CYCLES_Pos 0UL +#define EFUSE_SEQ_READ_CTL_5_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_READ_CTL_5_STROBE_A_Pos 16UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_B_Pos 17UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_C_Pos 18UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_D_Pos 19UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_E_Pos 20UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_F_Pos 21UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_G_Pos 22UL +#define EFUSE_SEQ_READ_CTL_5_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_READ_CTL_5_DONE_Pos 31UL +#define EFUSE_SEQ_READ_CTL_5_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_0 */ +#define EFUSE_SEQ_PROGRAM_CTL_0_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_0_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_0_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_0_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_0_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_1 */ +#define EFUSE_SEQ_PROGRAM_CTL_1_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_1_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_1_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_1_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_1_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_2 */ +#define EFUSE_SEQ_PROGRAM_CTL_2_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_2_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_2_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_2_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_2_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_3 */ +#define EFUSE_SEQ_PROGRAM_CTL_3_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_3_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_3_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_3_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_3_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_4 */ +#define EFUSE_SEQ_PROGRAM_CTL_4_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_4_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_4_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_4_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_4_DONE_Msk 0x80000000UL +/* EFUSE.SEQ_PROGRAM_CTL_5 */ +#define EFUSE_SEQ_PROGRAM_CTL_5_CYCLES_Pos 0UL +#define EFUSE_SEQ_PROGRAM_CTL_5_CYCLES_Msk 0x3FFUL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_A_Pos 16UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_A_Msk 0x10000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_B_Pos 17UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_B_Msk 0x20000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_C_Pos 18UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_C_Msk 0x40000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_D_Pos 19UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_D_Msk 0x80000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_E_Pos 20UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_E_Msk 0x100000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_F_Pos 21UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_F_Msk 0x200000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_G_Pos 22UL +#define EFUSE_SEQ_PROGRAM_CTL_5_STROBE_G_Msk 0x400000UL +#define EFUSE_SEQ_PROGRAM_CTL_5_DONE_Pos 31UL +#define EFUSE_SEQ_PROGRAM_CTL_5_DONE_Msk 0x80000000UL + + +#endif /* _CYIP_EFUSE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_01.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_01.h new file mode 100644 index 00000000000..580f43b39e8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_01.h @@ -0,0 +1,114 @@ +/***************************************************************************//** +* \file cyip_efuse_data_psoc6_01.h +* +* \brief +* EFUSE_DATA IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_EFUSE_DATA_PSOC6_01_H_ +#define _CYIP_EFUSE_DATA_PSOC6_01_H_ + +#include "cyip_headers.h" + +/** + * \brief DEAD access restrictions (DEAD_ACCESS_RESTRICT0) + */ +typedef struct { + uint8_t CM0_DISABLE; + uint8_t CM4_DISABLE; + uint8_t SYS_DISABLE; + uint8_t SYS_AP_MPU_ENABLE; + uint8_t SFLASH_ALLOWED[2]; + uint8_t MMIO_ALLOWED[2]; +} cy_stc_dead_access_restrict0_t; + +/** + * \brief DEAD access restrictions (DEAD_ACCESS_RESTRICT1) + */ +typedef struct { + uint8_t FLASH_ALLOWED[3]; + uint8_t SRAM_ALLOWED[3]; + uint8_t UNUSED; + uint8_t DIRECT_EXECUTE_DISABLE; +} cy_stc_dead_access_restrict1_t; + +/** + * \brief SECURE access restrictions (SECURE_ACCESS_RESTRICT0) + */ +typedef struct { + uint8_t CM0_DISABLE; + uint8_t CM4_DISABLE; + uint8_t SYS_DISABLE; + uint8_t SYS_AP_MPU_ENABLE; + uint8_t SFLASH_ALLOWED[2]; + uint8_t MMIO_ALLOWED[2]; +} cy_stc_secure_access_restrict0_t; + +/** + * \brief SECURE access restrictions (SECURE_ACCESS_RESTRICT1) + */ +typedef struct { + uint8_t FLASH_ALLOWED[3]; + uint8_t SRAM_ALLOWED[3]; + uint8_t SMIF_XIP_ALLOWED; + uint8_t DIRECT_EXECUTE_DISABLE; +} cy_stc_secure_access_restrict1_t; + +/** + * \brief NORMAL, SECURE_WITH_DEBUG, and SECURE fuse bits (LIFECYCLE_STAGE) + */ +typedef struct { + uint8_t NORMAL; + uint8_t SECURE_WITH_DEBUG; + uint8_t SECURE; + uint8_t RMA; + uint8_t RESERVED[4]; +} cy_stc_lifecycle_stage_t; + +/** + * \brief Customer data (CUSTOMER_DATA) + */ +typedef struct { + uint8_t CUSTOMER_USE[8]; +} cy_stc_customer_data_t; + + +/** + * \brief eFUSE memory (EFUSE_DATA) + */ +typedef struct { + uint8_t RESERVED[312]; + cy_stc_dead_access_restrict0_t DEAD_ACCESS_RESTRICT0; + cy_stc_dead_access_restrict1_t DEAD_ACCESS_RESTRICT1; + cy_stc_secure_access_restrict0_t SECURE_ACCESS_RESTRICT0; + cy_stc_secure_access_restrict1_t SECURE_ACCESS_RESTRICT1; + cy_stc_lifecycle_stage_t LIFECYCLE_STAGE; + uint8_t RESERVED1[160]; + cy_stc_customer_data_t CUSTOMER_DATA[64]; +} cy_stc_efuse_data_t; + + +#endif /* _CYIP_EFUSE_DATA_PSOC6_01_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_02.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_02.h new file mode 100644 index 00000000000..e735b9fa80b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_efuse_data_psoc6_02.h @@ -0,0 +1,114 @@ +/***************************************************************************//** +* \file cyip_efuse_data_psoc6_02.h +* +* \brief +* EFUSE_DATA IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_EFUSE_DATA_PSOC6_02_H_ +#define _CYIP_EFUSE_DATA_PSOC6_02_H_ + +#include "cyip_headers.h" + +/** + * \brief Access restrictions for DEAD life cycle stage (DEAD_ACCESS_RESTRICT0) + */ +typedef struct { + uint8_t CM0_DISABLE; + uint8_t CM4_DISABLE; + uint8_t SYS_DISABLE; + uint8_t SYS_AP_MPU_ENABLE; + uint8_t SFLASH_ALLOWED[2]; + uint8_t MMIO_ALLOWED[2]; +} cy_stc_dead_access_restrict0_t; + +/** + * \brief Access restrictions for DEAD life cycle stage (DEAD_ACCESS_RESTRICT1) + */ +typedef struct { + uint8_t FLASH_ALLOWED[3]; + uint8_t SRAM_ALLOWED[3]; + uint8_t UNUSED; + uint8_t DIRECT_EXECUTE_DISABLE; +} cy_stc_dead_access_restrict1_t; + +/** + * \brief Access restrictions for SECURE life cycle stage (SECURE_ACCESS_RESTRICT0) + */ +typedef struct { + uint8_t CM0_DISABLE; + uint8_t CM4_DISABLE; + uint8_t SYS_DISABLE; + uint8_t SYS_AP_MPU_ENABLE; + uint8_t SFLASH_ALLOWED[2]; + uint8_t MMIO_ALLOWED[2]; +} cy_stc_secure_access_restrict0_t; + +/** + * \brief Access restrictions for SECURE life cycle stage (SECURE_ACCESS_RESTRICT1) + */ +typedef struct { + uint8_t FLASH_ALLOWED[3]; + uint8_t SRAM_ALLOWED[3]; + uint8_t UNUSED; + uint8_t DIRECT_EXECUTE_DISABLE; +} cy_stc_secure_access_restrict1_t; + +/** + * \brief NORMAL, SECURE_WITH_DEBUG, SECURE, and RMA fuse bits (LIFECYCLE_STAGE) + */ +typedef struct { + uint8_t NORMAL; + uint8_t SECURE_WITH_DEBUG; + uint8_t SECURE; + uint8_t RMA; + uint8_t RESERVED[4]; +} cy_stc_lifecycle_stage_t; + +/** + * \brief Customer data (CUSTOMER_DATA) + */ +typedef struct { + uint8_t CUSTOMER_USE[8]; +} cy_stc_customer_data_t; + + +/** + * \brief eFUSE memory (EFUSE_DATA) + */ +typedef struct { + uint8_t RESERVED[312]; + cy_stc_dead_access_restrict0_t DEAD_ACCESS_RESTRICT0; + cy_stc_dead_access_restrict1_t DEAD_ACCESS_RESTRICT1; + cy_stc_secure_access_restrict0_t SECURE_ACCESS_RESTRICT0; + cy_stc_secure_access_restrict1_t SECURE_ACCESS_RESTRICT1; + cy_stc_lifecycle_stage_t LIFECYCLE_STAGE; + uint8_t RESERVED1[160]; + cy_stc_customer_data_t CUSTOMER_DATA[64]; +} cy_stc_efuse_data_t; + + +#endif /* _CYIP_EFUSE_DATA_PSOC6_02_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault.h new file mode 100644 index 00000000000..1bc284d4fb2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault.h @@ -0,0 +1,122 @@ +/***************************************************************************//** +* \file cyip_fault.h +* +* \brief +* FAULT IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_FAULT_H_ +#define _CYIP_FAULT_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_STRUCT_SECTION_SIZE 0x00000100UL +#define FAULT_SECTION_SIZE 0x00010000UL + +/** + * \brief Fault structure (FAULT_STRUCT) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Fault control */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t STATUS; /*!< 0x0000000C Fault status */ + __IM uint32_t DATA[4]; /*!< 0x00000010 Fault data */ + __IM uint32_t RESERVED1[8]; + __IM uint32_t PENDING0; /*!< 0x00000040 Fault pending 0 */ + __IM uint32_t PENDING1; /*!< 0x00000044 Fault pending 1 */ + __IM uint32_t PENDING2; /*!< 0x00000048 Fault pending 2 */ + __IM uint32_t RESERVED2; + __IOM uint32_t MASK0; /*!< 0x00000050 Fault mask 0 */ + __IOM uint32_t MASK1; /*!< 0x00000054 Fault mask 1 */ + __IOM uint32_t MASK2; /*!< 0x00000058 Fault mask 2 */ + __IM uint32_t RESERVED3[25]; + __IOM uint32_t INTR; /*!< 0x000000C0 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x000000C4 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x000000C8 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x000000CC Interrupt masked */ + __IM uint32_t RESERVED4[12]; +} FAULT_STRUCT_V1_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief Fault structures (FAULT) + */ +typedef struct { + FAULT_STRUCT_V1_Type STRUCT[4]; /*!< 0x00000000 Fault structure */ +} FAULT_V1_Type; /*!< Size = 1024 (0x400) */ + + +/* FAULT_STRUCT.CTL */ +#define FAULT_STRUCT_CTL_TR_EN_Pos 0UL +#define FAULT_STRUCT_CTL_TR_EN_Msk 0x1UL +#define FAULT_STRUCT_CTL_OUT_EN_Pos 1UL +#define FAULT_STRUCT_CTL_OUT_EN_Msk 0x2UL +#define FAULT_STRUCT_CTL_RESET_REQ_EN_Pos 2UL +#define FAULT_STRUCT_CTL_RESET_REQ_EN_Msk 0x4UL +/* FAULT_STRUCT.STATUS */ +#define FAULT_STRUCT_STATUS_IDX_Pos 0UL +#define FAULT_STRUCT_STATUS_IDX_Msk 0x7FUL +#define FAULT_STRUCT_STATUS_VALID_Pos 31UL +#define FAULT_STRUCT_STATUS_VALID_Msk 0x80000000UL +/* FAULT_STRUCT.DATA */ +#define FAULT_STRUCT_DATA_DATA_Pos 0UL +#define FAULT_STRUCT_DATA_DATA_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING0 */ +#define FAULT_STRUCT_PENDING0_SOURCE_Pos 0UL +#define FAULT_STRUCT_PENDING0_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING1 */ +#define FAULT_STRUCT_PENDING1_SOURCE_Pos 0UL +#define FAULT_STRUCT_PENDING1_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING2 */ +#define FAULT_STRUCT_PENDING2_SOURCE_Pos 0UL +#define FAULT_STRUCT_PENDING2_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK0 */ +#define FAULT_STRUCT_MASK0_SOURCE_Pos 0UL +#define FAULT_STRUCT_MASK0_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK1 */ +#define FAULT_STRUCT_MASK1_SOURCE_Pos 0UL +#define FAULT_STRUCT_MASK1_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK2 */ +#define FAULT_STRUCT_MASK2_SOURCE_Pos 0UL +#define FAULT_STRUCT_MASK2_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.INTR */ +#define FAULT_STRUCT_INTR_FAULT_Pos 0UL +#define FAULT_STRUCT_INTR_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_SET */ +#define FAULT_STRUCT_INTR_SET_FAULT_Pos 0UL +#define FAULT_STRUCT_INTR_SET_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_MASK */ +#define FAULT_STRUCT_INTR_MASK_FAULT_Pos 0UL +#define FAULT_STRUCT_INTR_MASK_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_MASKED */ +#define FAULT_STRUCT_INTR_MASKED_FAULT_Pos 0UL +#define FAULT_STRUCT_INTR_MASKED_FAULT_Msk 0x1UL + + +#endif /* _CYIP_FAULT_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault_v2.h new file mode 100644 index 00000000000..df3434a2377 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_fault_v2.h @@ -0,0 +1,122 @@ +/***************************************************************************//** +* \file cyip_fault_v2.h +* +* \brief +* FAULT IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_FAULT_V2_H_ +#define _CYIP_FAULT_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* FAULT +*******************************************************************************/ + +#define FAULT_STRUCT_V2_SECTION_SIZE 0x00000100UL +#define FAULT_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Fault structure (FAULT_STRUCT) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Fault control */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t STATUS; /*!< 0x0000000C Fault status */ + __IOM uint32_t DATA[4]; /*!< 0x00000010 Fault data */ + __IM uint32_t RESERVED1[8]; + __IM uint32_t PENDING0; /*!< 0x00000040 Fault pending 0 */ + __IM uint32_t PENDING1; /*!< 0x00000044 Fault pending 1 */ + __IM uint32_t PENDING2; /*!< 0x00000048 Fault pending 2 */ + __IM uint32_t RESERVED2; + __IOM uint32_t MASK0; /*!< 0x00000050 Fault mask 0 */ + __IOM uint32_t MASK1; /*!< 0x00000054 Fault mask 1 */ + __IOM uint32_t MASK2; /*!< 0x00000058 Fault mask 2 */ + __IM uint32_t RESERVED3[25]; + __IOM uint32_t INTR; /*!< 0x000000C0 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x000000C4 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x000000C8 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x000000CC Interrupt masked */ + __IM uint32_t RESERVED4[12]; +} FAULT_STRUCT_V2_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief Fault structures (FAULT) + */ +typedef struct { + FAULT_STRUCT_V2_Type STRUCT[4]; /*!< 0x00000000 Fault structure */ +} FAULT_V2_Type; /*!< Size = 1024 (0x400) */ + + +/* FAULT_STRUCT.CTL */ +#define FAULT_STRUCT_V2_CTL_TR_EN_Pos 0UL +#define FAULT_STRUCT_V2_CTL_TR_EN_Msk 0x1UL +#define FAULT_STRUCT_V2_CTL_OUT_EN_Pos 1UL +#define FAULT_STRUCT_V2_CTL_OUT_EN_Msk 0x2UL +#define FAULT_STRUCT_V2_CTL_RESET_REQ_EN_Pos 2UL +#define FAULT_STRUCT_V2_CTL_RESET_REQ_EN_Msk 0x4UL +/* FAULT_STRUCT.STATUS */ +#define FAULT_STRUCT_V2_STATUS_IDX_Pos 0UL +#define FAULT_STRUCT_V2_STATUS_IDX_Msk 0x7FUL +#define FAULT_STRUCT_V2_STATUS_VALID_Pos 31UL +#define FAULT_STRUCT_V2_STATUS_VALID_Msk 0x80000000UL +/* FAULT_STRUCT.DATA */ +#define FAULT_STRUCT_V2_DATA_DATA_Pos 0UL +#define FAULT_STRUCT_V2_DATA_DATA_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING0 */ +#define FAULT_STRUCT_V2_PENDING0_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_PENDING0_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING1 */ +#define FAULT_STRUCT_V2_PENDING1_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_PENDING1_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.PENDING2 */ +#define FAULT_STRUCT_V2_PENDING2_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_PENDING2_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK0 */ +#define FAULT_STRUCT_V2_MASK0_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_MASK0_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK1 */ +#define FAULT_STRUCT_V2_MASK1_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_MASK1_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.MASK2 */ +#define FAULT_STRUCT_V2_MASK2_SOURCE_Pos 0UL +#define FAULT_STRUCT_V2_MASK2_SOURCE_Msk 0xFFFFFFFFUL +/* FAULT_STRUCT.INTR */ +#define FAULT_STRUCT_V2_INTR_FAULT_Pos 0UL +#define FAULT_STRUCT_V2_INTR_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_SET */ +#define FAULT_STRUCT_V2_INTR_SET_FAULT_Pos 0UL +#define FAULT_STRUCT_V2_INTR_SET_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_MASK */ +#define FAULT_STRUCT_V2_INTR_MASK_FAULT_Pos 0UL +#define FAULT_STRUCT_V2_INTR_MASK_FAULT_Msk 0x1UL +/* FAULT_STRUCT.INTR_MASKED */ +#define FAULT_STRUCT_V2_INTR_MASKED_FAULT_Pos 0UL +#define FAULT_STRUCT_V2_INTR_MASKED_FAULT_Msk 0x1UL + + +#endif /* _CYIP_FAULT_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc.h new file mode 100644 index 00000000000..a1716ff4132 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc.h @@ -0,0 +1,603 @@ +/***************************************************************************//** +* \file cyip_flashc.h +* +* \brief +* FLASHC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_FLASHC_H_ +#define _CYIP_FLASHC_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_FM_CTL_SECTION_SIZE 0x00001000UL +#define FLASHC_SECTION_SIZE 0x00010000UL + +/** + * \brief Flash Macro Registers (FLASHC_FM_CTL) + */ +typedef struct { + __IOM uint32_t FM_CTL; /*!< 0x00000000 Flash macro control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IOM uint32_t FM_ADDR; /*!< 0x00000008 Flash macro address */ + __IM uint32_t GEOMETRY; /*!< 0x0000000C Regular flash geometry */ + __IM uint32_t GEOMETRY_SUPERVISORY; /*!< 0x00000010 Supervisory flash geometry */ + __IOM uint32_t TIMER_CTL; /*!< 0x00000014 Timer control */ + __IOM uint32_t ANA_CTL0; /*!< 0x00000018 Analog control 0 */ + __IOM uint32_t ANA_CTL1; /*!< 0x0000001C Analog control 1 */ + __IM uint32_t GEOMETRY_GEN; /*!< 0x00000020 N/A, DNU */ + __IOM uint32_t TEST_CTL; /*!< 0x00000024 Test mode control */ + __IOM uint32_t WAIT_CTL; /*!< 0x00000028 Wiat State control */ + __IM uint32_t MONITOR_STATUS; /*!< 0x0000002C Monitor Status */ + __IOM uint32_t SCRATCH_CTL; /*!< 0x00000030 Scratch Control */ + __IOM uint32_t HV_CTL; /*!< 0x00000034 High voltage control */ + __OM uint32_t ACLK_CTL; /*!< 0x00000038 Aclk control */ + __IOM uint32_t INTR; /*!< 0x0000003C Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000040 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000044 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x00000048 Interrupt masked */ + __OM uint32_t FM_HV_DATA_ALL; /*!< 0x0000004C Flash macro high Voltage page latches data (for all page + latches) */ + __IOM uint32_t CAL_CTL0; /*!< 0x00000050 Cal control BG LO trim bits */ + __IOM uint32_t CAL_CTL1; /*!< 0x00000054 Cal control BG HI trim bits */ + __IOM uint32_t CAL_CTL2; /*!< 0x00000058 Cal control BG LO&HI ipref trim, ref sel, fm_active, turbo_ext */ + __IOM uint32_t CAL_CTL3; /*!< 0x0000005C Cal control osc trim bits, idac, sdac, itim, bdac. */ + __OM uint32_t BOOKMARK; /*!< 0x00000060 Bookmark register - keeps the current FW HV seq */ + __IM uint32_t RESERVED[7]; + __IOM uint32_t RED_CTL01; /*!< 0x00000080 Redundancy Control normal sectors 0,1 */ + __IOM uint32_t RED_CTL23; /*!< 0x00000084 Redundancy Controll normal sectors 2,3 */ + __IOM uint32_t RED_CTL45; /*!< 0x00000088 Redundancy Controll normal sectors 4,5 */ + __IOM uint32_t RED_CTL67; /*!< 0x0000008C Redundancy Controll normal sectors 6,7 */ + __IOM uint32_t RED_CTL_SM01; /*!< 0x00000090 Redundancy Controll special sectors 0,1 */ + __IM uint32_t RESERVED1[27]; + __IM uint32_t TM_CMPR[32]; /*!< 0x00000100 Do Not Use */ + __IM uint32_t RESERVED2[416]; + __IOM uint32_t FM_HV_DATA[256]; /*!< 0x00000800 Flash macro high Voltage page latches data */ + __IM uint32_t FM_MEM_DATA[256]; /*!< 0x00000C00 Flash macro memory sense amplifier and column decoder data */ +} FLASHC_FM_CTL_V1_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief Flash controller (FLASHC) + */ +typedef struct { + __IOM uint32_t FLASH_CTL; /*!< 0x00000000 Control */ + __IOM uint32_t FLASH_PWR_CTL; /*!< 0x00000004 Flash power control */ + __IOM uint32_t FLASH_CMD; /*!< 0x00000008 Command */ + __IM uint32_t RESERVED[61]; + __IOM uint32_t BIST_CTL; /*!< 0x00000100 BIST control */ + __IOM uint32_t BIST_CMD; /*!< 0x00000104 BIST command */ + __IOM uint32_t BIST_ADDR_START; /*!< 0x00000108 BIST address start register */ + __IOM uint32_t BIST_DATA[8]; /*!< 0x0000010C BIST data register(s) */ + __IM uint32_t BIST_DATA_ACT[8]; /*!< 0x0000012C BIST data actual register(s) */ + __IM uint32_t BIST_DATA_EXP[8]; /*!< 0x0000014C BIST data expected register(s) */ + __IM uint32_t BIST_ADDR; /*!< 0x0000016C BIST address register */ + __IOM uint32_t BIST_STATUS; /*!< 0x00000170 BIST status register */ + __IM uint32_t RESERVED1[163]; + __IOM uint32_t CM0_CA_CTL0; /*!< 0x00000400 CM0+ cache control */ + __IOM uint32_t CM0_CA_CTL1; /*!< 0x00000404 CM0+ cache control */ + __IOM uint32_t CM0_CA_CTL2; /*!< 0x00000408 CM0+ cache control */ + __IOM uint32_t CM0_CA_CMD; /*!< 0x0000040C CM0+ cache command */ + __IM uint32_t RESERVED2[12]; + __IM uint32_t CM0_CA_STATUS0; /*!< 0x00000440 CM0+ cache status 0 */ + __IM uint32_t CM0_CA_STATUS1; /*!< 0x00000444 CM0+ cache status 1 */ + __IM uint32_t CM0_CA_STATUS2; /*!< 0x00000448 CM0+ cache status 2 */ + __IM uint32_t RESERVED3[13]; + __IOM uint32_t CM4_CA_CTL0; /*!< 0x00000480 CM4 cache control */ + __IOM uint32_t CM4_CA_CTL1; /*!< 0x00000484 CM4 cache control */ + __IOM uint32_t CM4_CA_CTL2; /*!< 0x00000488 CM4 cache control */ + __IOM uint32_t CM4_CA_CMD; /*!< 0x0000048C CM4 cache command */ + __IM uint32_t RESERVED4[12]; + __IM uint32_t CM4_CA_STATUS0; /*!< 0x000004C0 CM4 cache status 0 */ + __IM uint32_t CM4_CA_STATUS1; /*!< 0x000004C4 CM4 cache status 1 */ + __IM uint32_t CM4_CA_STATUS2; /*!< 0x000004C8 CM4 cache status 2 */ + __IM uint32_t RESERVED5[13]; + __IOM uint32_t CRYPTO_BUFF_CTL; /*!< 0x00000500 Cryptography buffer control */ + __IM uint32_t RESERVED6; + __IOM uint32_t CRYPTO_BUFF_CMD; /*!< 0x00000508 Cryptography buffer command */ + __IM uint32_t RESERVED7[29]; + __IOM uint32_t DW0_BUFF_CTL; /*!< 0x00000580 Datawire 0 buffer control */ + __IM uint32_t RESERVED8; + __IOM uint32_t DW0_BUFF_CMD; /*!< 0x00000588 Datawire 0 buffer command */ + __IM uint32_t RESERVED9[29]; + __IOM uint32_t DW1_BUFF_CTL; /*!< 0x00000600 Datawire 1 buffer control */ + __IM uint32_t RESERVED10; + __IOM uint32_t DW1_BUFF_CMD; /*!< 0x00000608 Datawire 1 buffer command */ + __IM uint32_t RESERVED11[29]; + __IOM uint32_t DAP_BUFF_CTL; /*!< 0x00000680 Debug access port buffer control */ + __IM uint32_t RESERVED12; + __IOM uint32_t DAP_BUFF_CMD; /*!< 0x00000688 Debug access port buffer command */ + __IM uint32_t RESERVED13[29]; + __IOM uint32_t EXT_MS0_BUFF_CTL; /*!< 0x00000700 External master 0 buffer control */ + __IM uint32_t RESERVED14; + __IOM uint32_t EXT_MS0_BUFF_CMD; /*!< 0x00000708 External master 0 buffer command */ + __IM uint32_t RESERVED15[29]; + __IOM uint32_t EXT_MS1_BUFF_CTL; /*!< 0x00000780 External master 1 buffer control */ + __IM uint32_t RESERVED16; + __IOM uint32_t EXT_MS1_BUFF_CMD; /*!< 0x00000788 External master 1 buffer command */ + __IM uint32_t RESERVED17[14877]; + FLASHC_FM_CTL_V1_Type FM_CTL; /*!< 0x0000F000 Flash Macro Registers */ +} FLASHC_V1_Type; /*!< Size = 65536 (0x10000) */ + + +/* FLASHC_FM_CTL.FM_CTL */ +#define FLASHC_FM_CTL_FM_CTL_FM_MODE_Pos 0UL +#define FLASHC_FM_CTL_FM_CTL_FM_MODE_Msk 0xFUL +#define FLASHC_FM_CTL_FM_CTL_FM_SEQ_Pos 8UL +#define FLASHC_FM_CTL_FM_CTL_FM_SEQ_Msk 0x300UL +#define FLASHC_FM_CTL_FM_CTL_DAA_MUX_SEL_Pos 16UL +#define FLASHC_FM_CTL_FM_CTL_DAA_MUX_SEL_Msk 0x7F0000UL +#define FLASHC_FM_CTL_FM_CTL_IF_SEL_Pos 24UL +#define FLASHC_FM_CTL_FM_CTL_IF_SEL_Msk 0x1000000UL +#define FLASHC_FM_CTL_FM_CTL_WR_EN_Pos 25UL +#define FLASHC_FM_CTL_FM_CTL_WR_EN_Msk 0x2000000UL +/* FLASHC_FM_CTL.STATUS */ +#define FLASHC_FM_CTL_STATUS_HV_TIMER_RUNNING_Pos 0UL +#define FLASHC_FM_CTL_STATUS_HV_TIMER_RUNNING_Msk 0x1UL +#define FLASHC_FM_CTL_STATUS_HV_REGS_ISOLATED_Pos 1UL +#define FLASHC_FM_CTL_STATUS_HV_REGS_ISOLATED_Msk 0x2UL +#define FLASHC_FM_CTL_STATUS_ILLEGAL_HVOP_Pos 2UL +#define FLASHC_FM_CTL_STATUS_ILLEGAL_HVOP_Msk 0x4UL +#define FLASHC_FM_CTL_STATUS_TURBO_N_Pos 3UL +#define FLASHC_FM_CTL_STATUS_TURBO_N_Msk 0x8UL +#define FLASHC_FM_CTL_STATUS_WR_EN_MON_Pos 4UL +#define FLASHC_FM_CTL_STATUS_WR_EN_MON_Msk 0x10UL +#define FLASHC_FM_CTL_STATUS_IF_SEL_MON_Pos 5UL +#define FLASHC_FM_CTL_STATUS_IF_SEL_MON_Msk 0x20UL +/* FLASHC_FM_CTL.FM_ADDR */ +#define FLASHC_FM_CTL_FM_ADDR_RA_Pos 0UL +#define FLASHC_FM_CTL_FM_ADDR_RA_Msk 0xFFFFUL +#define FLASHC_FM_CTL_FM_ADDR_BA_Pos 16UL +#define FLASHC_FM_CTL_FM_ADDR_BA_Msk 0xFF0000UL +#define FLASHC_FM_CTL_FM_ADDR_AXA_Pos 24UL +#define FLASHC_FM_CTL_FM_ADDR_AXA_Msk 0x1000000UL +/* FLASHC_FM_CTL.GEOMETRY */ +#define FLASHC_FM_CTL_GEOMETRY_WORD_SIZE_LOG2_Pos 0UL +#define FLASHC_FM_CTL_GEOMETRY_WORD_SIZE_LOG2_Msk 0xFUL +#define FLASHC_FM_CTL_GEOMETRY_PAGE_SIZE_LOG2_Pos 4UL +#define FLASHC_FM_CTL_GEOMETRY_PAGE_SIZE_LOG2_Msk 0xF0UL +#define FLASHC_FM_CTL_GEOMETRY_ROW_COUNT_Pos 8UL +#define FLASHC_FM_CTL_GEOMETRY_ROW_COUNT_Msk 0xFFFF00UL +#define FLASHC_FM_CTL_GEOMETRY_BANK_COUNT_Pos 24UL +#define FLASHC_FM_CTL_GEOMETRY_BANK_COUNT_Msk 0xFF000000UL +/* FLASHC_FM_CTL.GEOMETRY_SUPERVISORY */ +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_WORD_SIZE_LOG2_Pos 0UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_WORD_SIZE_LOG2_Msk 0xFUL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_PAGE_SIZE_LOG2_Pos 4UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_PAGE_SIZE_LOG2_Msk 0xF0UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_ROW_COUNT_Pos 8UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_ROW_COUNT_Msk 0xFFFF00UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_BANK_COUNT_Pos 24UL +#define FLASHC_FM_CTL_GEOMETRY_SUPERVISORY_BANK_COUNT_Msk 0xFF000000UL +/* FLASHC_FM_CTL.TIMER_CTL */ +#define FLASHC_FM_CTL_TIMER_CTL_PERIOD_Pos 0UL +#define FLASHC_FM_CTL_TIMER_CTL_PERIOD_Msk 0xFFFFUL +#define FLASHC_FM_CTL_TIMER_CTL_SCALE_Pos 16UL +#define FLASHC_FM_CTL_TIMER_CTL_SCALE_Msk 0x10000UL +#define FLASHC_FM_CTL_TIMER_CTL_PUMP_CLOCK_SEL_Pos 24UL +#define FLASHC_FM_CTL_TIMER_CTL_PUMP_CLOCK_SEL_Msk 0x1000000UL +#define FLASHC_FM_CTL_TIMER_CTL_PRE_PROG_Pos 25UL +#define FLASHC_FM_CTL_TIMER_CTL_PRE_PROG_Msk 0x2000000UL +#define FLASHC_FM_CTL_TIMER_CTL_PRE_PROG_CSL_Pos 26UL +#define FLASHC_FM_CTL_TIMER_CTL_PRE_PROG_CSL_Msk 0x4000000UL +#define FLASHC_FM_CTL_TIMER_CTL_PUMP_EN_Pos 29UL +#define FLASHC_FM_CTL_TIMER_CTL_PUMP_EN_Msk 0x20000000UL +#define FLASHC_FM_CTL_TIMER_CTL_ACLK_EN_Pos 30UL +#define FLASHC_FM_CTL_TIMER_CTL_ACLK_EN_Msk 0x40000000UL +#define FLASHC_FM_CTL_TIMER_CTL_TIMER_EN_Pos 31UL +#define FLASHC_FM_CTL_TIMER_CTL_TIMER_EN_Msk 0x80000000UL +/* FLASHC_FM_CTL.ANA_CTL0 */ +#define FLASHC_FM_CTL_ANA_CTL0_CSLDAC_Pos 8UL +#define FLASHC_FM_CTL_ANA_CTL0_CSLDAC_Msk 0x700UL +#define FLASHC_FM_CTL_ANA_CTL0_VCC_SEL_Pos 24UL +#define FLASHC_FM_CTL_ANA_CTL0_VCC_SEL_Msk 0x1000000UL +#define FLASHC_FM_CTL_ANA_CTL0_FLIP_AMUXBUS_AB_Pos 27UL +#define FLASHC_FM_CTL_ANA_CTL0_FLIP_AMUXBUS_AB_Msk 0x8000000UL +/* FLASHC_FM_CTL.ANA_CTL1 */ +#define FLASHC_FM_CTL_ANA_CTL1_MDAC_Pos 0UL +#define FLASHC_FM_CTL_ANA_CTL1_MDAC_Msk 0xFFUL +#define FLASHC_FM_CTL_ANA_CTL1_PDAC_Pos 16UL +#define FLASHC_FM_CTL_ANA_CTL1_PDAC_Msk 0xF0000UL +#define FLASHC_FM_CTL_ANA_CTL1_NDAC_Pos 24UL +#define FLASHC_FM_CTL_ANA_CTL1_NDAC_Msk 0xF000000UL +#define FLASHC_FM_CTL_ANA_CTL1_VPROT_OVERRIDE_Pos 28UL +#define FLASHC_FM_CTL_ANA_CTL1_VPROT_OVERRIDE_Msk 0x10000000UL +#define FLASHC_FM_CTL_ANA_CTL1_R_GRANT_CTL_Pos 29UL +#define FLASHC_FM_CTL_ANA_CTL1_R_GRANT_CTL_Msk 0x20000000UL +#define FLASHC_FM_CTL_ANA_CTL1_RST_SFT_HVPL_Pos 30UL +#define FLASHC_FM_CTL_ANA_CTL1_RST_SFT_HVPL_Msk 0x40000000UL +/* FLASHC_FM_CTL.GEOMETRY_GEN */ +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_1_Pos 1UL +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_1_Msk 0x2UL +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_2_Pos 2UL +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_2_Msk 0x4UL +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_3_Pos 3UL +#define FLASHC_FM_CTL_GEOMETRY_GEN_DNU_0X20_3_Msk 0x8UL +/* FLASHC_FM_CTL.TEST_CTL */ +#define FLASHC_FM_CTL_TEST_CTL_TEST_MODE_Pos 0UL +#define FLASHC_FM_CTL_TEST_CTL_TEST_MODE_Msk 0x1FUL +#define FLASHC_FM_CTL_TEST_CTL_PN_CTL_Pos 8UL +#define FLASHC_FM_CTL_TEST_CTL_PN_CTL_Msk 0x100UL +#define FLASHC_FM_CTL_TEST_CTL_TM_PE_Pos 9UL +#define FLASHC_FM_CTL_TEST_CTL_TM_PE_Msk 0x200UL +#define FLASHC_FM_CTL_TEST_CTL_TM_DISPOS_Pos 10UL +#define FLASHC_FM_CTL_TEST_CTL_TM_DISPOS_Msk 0x400UL +#define FLASHC_FM_CTL_TEST_CTL_TM_DISNEG_Pos 11UL +#define FLASHC_FM_CTL_TEST_CTL_TM_DISNEG_Msk 0x800UL +#define FLASHC_FM_CTL_TEST_CTL_EN_CLK_MON_Pos 16UL +#define FLASHC_FM_CTL_TEST_CTL_EN_CLK_MON_Msk 0x10000UL +#define FLASHC_FM_CTL_TEST_CTL_CSL_DEBUG_Pos 17UL +#define FLASHC_FM_CTL_TEST_CTL_CSL_DEBUG_Msk 0x20000UL +#define FLASHC_FM_CTL_TEST_CTL_ENABLE_OSC_Pos 18UL +#define FLASHC_FM_CTL_TEST_CTL_ENABLE_OSC_Msk 0x40000UL +#define FLASHC_FM_CTL_TEST_CTL_UNSCRAMBLE_WA_Pos 31UL +#define FLASHC_FM_CTL_TEST_CTL_UNSCRAMBLE_WA_Msk 0x80000000UL +/* FLASHC_FM_CTL.WAIT_CTL */ +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_MEM_RD_Pos 0UL +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_MEM_RD_Msk 0xFUL +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_HV_RD_Pos 8UL +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_HV_RD_Msk 0xF00UL +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_HV_WR_Pos 16UL +#define FLASHC_FM_CTL_WAIT_CTL_WAIT_FM_HV_WR_Msk 0x70000UL +/* FLASHC_FM_CTL.MONITOR_STATUS */ +#define FLASHC_FM_CTL_MONITOR_STATUS_POS_PUMP_VLO_Pos 1UL +#define FLASHC_FM_CTL_MONITOR_STATUS_POS_PUMP_VLO_Msk 0x2UL +#define FLASHC_FM_CTL_MONITOR_STATUS_NEG_PUMP_VHI_Pos 2UL +#define FLASHC_FM_CTL_MONITOR_STATUS_NEG_PUMP_VHI_Msk 0x4UL +/* FLASHC_FM_CTL.SCRATCH_CTL */ +#define FLASHC_FM_CTL_SCRATCH_CTL_DUMMY32_Pos 0UL +#define FLASHC_FM_CTL_SCRATCH_CTL_DUMMY32_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.HV_CTL */ +#define FLASHC_FM_CTL_HV_CTL_TIMER_CLOCK_FREQ_Pos 0UL +#define FLASHC_FM_CTL_HV_CTL_TIMER_CLOCK_FREQ_Msk 0xFFUL +/* FLASHC_FM_CTL.ACLK_CTL */ +#define FLASHC_FM_CTL_ACLK_CTL_ACLK_GEN_Pos 0UL +#define FLASHC_FM_CTL_ACLK_CTL_ACLK_GEN_Msk 0x1UL +/* FLASHC_FM_CTL.INTR */ +#define FLASHC_FM_CTL_INTR_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_INTR_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_SET */ +#define FLASHC_FM_CTL_INTR_SET_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_INTR_SET_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_MASK */ +#define FLASHC_FM_CTL_INTR_MASK_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_INTR_MASK_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_MASKED */ +#define FLASHC_FM_CTL_INTR_MASKED_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_INTR_MASKED_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.FM_HV_DATA_ALL */ +#define FLASHC_FM_CTL_FM_HV_DATA_ALL_DATA32_Pos 0UL +#define FLASHC_FM_CTL_FM_HV_DATA_ALL_DATA32_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.CAL_CTL0 */ +#define FLASHC_FM_CTL_CAL_CTL0_VCT_TRIM_LO_HV_Pos 0UL +#define FLASHC_FM_CTL_CAL_CTL0_VCT_TRIM_LO_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_CAL_CTL0_CDAC_LO_HV_Pos 5UL +#define FLASHC_FM_CTL_CAL_CTL0_CDAC_LO_HV_Msk 0xE0UL +#define FLASHC_FM_CTL_CAL_CTL0_VBG_TRIM_LO_HV_Pos 8UL +#define FLASHC_FM_CTL_CAL_CTL0_VBG_TRIM_LO_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_CAL_CTL0_VBG_TC_TRIM_LO_HV_Pos 13UL +#define FLASHC_FM_CTL_CAL_CTL0_VBG_TC_TRIM_LO_HV_Msk 0xE000UL +#define FLASHC_FM_CTL_CAL_CTL0_IPREF_TRIM_LO_HV_Pos 16UL +#define FLASHC_FM_CTL_CAL_CTL0_IPREF_TRIM_LO_HV_Msk 0xF0000UL +/* FLASHC_FM_CTL.CAL_CTL1 */ +#define FLASHC_FM_CTL_CAL_CTL1_VCT_TRIM_HI_HV_Pos 0UL +#define FLASHC_FM_CTL_CAL_CTL1_VCT_TRIM_HI_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_CAL_CTL1_CDAC_HI_HV_Pos 5UL +#define FLASHC_FM_CTL_CAL_CTL1_CDAC_HI_HV_Msk 0xE0UL +#define FLASHC_FM_CTL_CAL_CTL1_VBG_TRIM_HI_HV_Pos 8UL +#define FLASHC_FM_CTL_CAL_CTL1_VBG_TRIM_HI_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_CAL_CTL1_VBG_TC_TRIM_HI_HV_Pos 13UL +#define FLASHC_FM_CTL_CAL_CTL1_VBG_TC_TRIM_HI_HV_Msk 0xE000UL +#define FLASHC_FM_CTL_CAL_CTL1_IPREF_TRIM_HI_HV_Pos 16UL +#define FLASHC_FM_CTL_CAL_CTL1_IPREF_TRIM_HI_HV_Msk 0xF0000UL +/* FLASHC_FM_CTL.CAL_CTL2 */ +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TRIM_LO_HV_Pos 0UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TRIM_LO_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TC_TRIM_LO_HV_Pos 5UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TC_TRIM_LO_HV_Msk 0xE0UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TRIM_HI_HV_Pos 8UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TRIM_HI_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TC_TRIM_HI_HV_Pos 13UL +#define FLASHC_FM_CTL_CAL_CTL2_ICREF_TC_TRIM_HI_HV_Msk 0xE000UL +#define FLASHC_FM_CTL_CAL_CTL2_VREF_SEL_HV_Pos 16UL +#define FLASHC_FM_CTL_CAL_CTL2_VREF_SEL_HV_Msk 0x10000UL +#define FLASHC_FM_CTL_CAL_CTL2_IREF_SEL_HV_Pos 17UL +#define FLASHC_FM_CTL_CAL_CTL2_IREF_SEL_HV_Msk 0x20000UL +#define FLASHC_FM_CTL_CAL_CTL2_FM_ACTIVE_HV_Pos 18UL +#define FLASHC_FM_CTL_CAL_CTL2_FM_ACTIVE_HV_Msk 0x40000UL +#define FLASHC_FM_CTL_CAL_CTL2_TURBO_EXT_HV_Pos 19UL +#define FLASHC_FM_CTL_CAL_CTL2_TURBO_EXT_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL3 */ +#define FLASHC_FM_CTL_CAL_CTL3_OSC_TRIM_HV_Pos 0UL +#define FLASHC_FM_CTL_CAL_CTL3_OSC_TRIM_HV_Msk 0xFUL +#define FLASHC_FM_CTL_CAL_CTL3_OSC_RANGE_TRIM_HV_Pos 4UL +#define FLASHC_FM_CTL_CAL_CTL3_OSC_RANGE_TRIM_HV_Msk 0x10UL +#define FLASHC_FM_CTL_CAL_CTL3_IDAC_HV_Pos 5UL +#define FLASHC_FM_CTL_CAL_CTL3_IDAC_HV_Msk 0x1E0UL +#define FLASHC_FM_CTL_CAL_CTL3_SDAC_HV_Pos 9UL +#define FLASHC_FM_CTL_CAL_CTL3_SDAC_HV_Msk 0x600UL +#define FLASHC_FM_CTL_CAL_CTL3_ITIM_HV_Pos 11UL +#define FLASHC_FM_CTL_CAL_CTL3_ITIM_HV_Msk 0x7800UL +#define FLASHC_FM_CTL_CAL_CTL3_VDDHI_HV_Pos 15UL +#define FLASHC_FM_CTL_CAL_CTL3_VDDHI_HV_Msk 0x8000UL +#define FLASHC_FM_CTL_CAL_CTL3_TURBO_PULSEW_HV_Pos 16UL +#define FLASHC_FM_CTL_CAL_CTL3_TURBO_PULSEW_HV_Msk 0x30000UL +#define FLASHC_FM_CTL_CAL_CTL3_BGLO_EN_HV_Pos 18UL +#define FLASHC_FM_CTL_CAL_CTL3_BGLO_EN_HV_Msk 0x40000UL +#define FLASHC_FM_CTL_CAL_CTL3_BGHI_EN_HV_Pos 19UL +#define FLASHC_FM_CTL_CAL_CTL3_BGHI_EN_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.BOOKMARK */ +#define FLASHC_FM_CTL_BOOKMARK_BOOKMARK_Pos 0UL +#define FLASHC_FM_CTL_BOOKMARK_BOOKMARK_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.RED_CTL01 */ +#define FLASHC_FM_CTL_RED_CTL01_RED_ADDR_0_Pos 0UL +#define FLASHC_FM_CTL_RED_CTL01_RED_ADDR_0_Msk 0xFFUL +#define FLASHC_FM_CTL_RED_CTL01_RED_EN_0_Pos 8UL +#define FLASHC_FM_CTL_RED_CTL01_RED_EN_0_Msk 0x100UL +#define FLASHC_FM_CTL_RED_CTL01_RED_ADDR_1_Pos 16UL +#define FLASHC_FM_CTL_RED_CTL01_RED_ADDR_1_Msk 0xFF0000UL +#define FLASHC_FM_CTL_RED_CTL01_RED_EN_1_Pos 24UL +#define FLASHC_FM_CTL_RED_CTL01_RED_EN_1_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL23 */ +#define FLASHC_FM_CTL_RED_CTL23_RED_ADDR_2_Pos 0UL +#define FLASHC_FM_CTL_RED_CTL23_RED_ADDR_2_Msk 0xFFUL +#define FLASHC_FM_CTL_RED_CTL23_RED_EN_2_Pos 8UL +#define FLASHC_FM_CTL_RED_CTL23_RED_EN_2_Msk 0x100UL +#define FLASHC_FM_CTL_RED_CTL23_RED_ADDR_3_Pos 16UL +#define FLASHC_FM_CTL_RED_CTL23_RED_ADDR_3_Msk 0xFF0000UL +#define FLASHC_FM_CTL_RED_CTL23_RED_EN_3_Pos 24UL +#define FLASHC_FM_CTL_RED_CTL23_RED_EN_3_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL45 */ +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_1_Pos 0UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_1_Msk 0x1UL +#define FLASHC_FM_CTL_RED_CTL45_REG_ACT_HV_Pos 1UL +#define FLASHC_FM_CTL_RED_CTL45_REG_ACT_HV_Msk 0x2UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_3_Pos 2UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_3_Msk 0x4UL +#define FLASHC_FM_CTL_RED_CTL45_FDIV_TRIM_HV_0_Pos 3UL +#define FLASHC_FM_CTL_RED_CTL45_FDIV_TRIM_HV_0_Msk 0x8UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_5_Pos 4UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_5_Msk 0x10UL +#define FLASHC_FM_CTL_RED_CTL45_FDIV_TRIM_HV_1_Pos 5UL +#define FLASHC_FM_CTL_RED_CTL45_FDIV_TRIM_HV_1_Msk 0x20UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_6_Pos 6UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_6_Msk 0x40UL +#define FLASHC_FM_CTL_RED_CTL45_VLIM_TRIM_HV_0_Pos 7UL +#define FLASHC_FM_CTL_RED_CTL45_VLIM_TRIM_HV_0_Msk 0x80UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_8_Pos 8UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_8_Msk 0x100UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_23_16_Pos 16UL +#define FLASHC_FM_CTL_RED_CTL45_DNU_45_23_16_Msk 0xFF0000UL +/* FLASHC_FM_CTL.RED_CTL67 */ +#define FLASHC_FM_CTL_RED_CTL67_VLIM_TRIM_HV_1_Pos 0UL +#define FLASHC_FM_CTL_RED_CTL67_VLIM_TRIM_HV_1_Msk 0x1UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_1_Pos 1UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_1_Msk 0x2UL +#define FLASHC_FM_CTL_RED_CTL67_VPROT_ACT_HV_Pos 2UL +#define FLASHC_FM_CTL_RED_CTL67_VPROT_ACT_HV_Msk 0x4UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_3_Pos 3UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_3_Msk 0x8UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TC_HV_Pos 4UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TC_HV_Msk 0x10UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_5_Pos 5UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_5_Msk 0x20UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TRIMA_HI_HV_Pos 6UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TRIMA_HI_HV_Msk 0x40UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_7_Pos 7UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_7_Msk 0x80UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TRIMA_LO_HV_Pos 8UL +#define FLASHC_FM_CTL_RED_CTL67_IPREF_TRIMA_LO_HV_Msk 0x100UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_23_16_Pos 16UL +#define FLASHC_FM_CTL_RED_CTL67_DNU_67_23_16_Msk 0xFF0000UL +/* FLASHC_FM_CTL.RED_CTL_SM01 */ +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_ADDR_SM0_Pos 0UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_ADDR_SM0_Msk 0xFFUL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_EN_SM0_Pos 8UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_EN_SM0_Msk 0x100UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_ADDR_SM1_Pos 16UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_ADDR_SM1_Msk 0xFF0000UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_EN_SM1_Pos 24UL +#define FLASHC_FM_CTL_RED_CTL_SM01_RED_EN_SM1_Msk 0x1000000UL +#define FLASHC_FM_CTL_RED_CTL_SM01_TRKD_Pos 30UL +#define FLASHC_FM_CTL_RED_CTL_SM01_TRKD_Msk 0x40000000UL +#define FLASHC_FM_CTL_RED_CTL_SM01_R_GRANT_EN_Pos 31UL +#define FLASHC_FM_CTL_RED_CTL_SM01_R_GRANT_EN_Msk 0x80000000UL +/* FLASHC_FM_CTL.TM_CMPR */ +#define FLASHC_FM_CTL_TM_CMPR_DATA_COMP_RESULT_Pos 0UL +#define FLASHC_FM_CTL_TM_CMPR_DATA_COMP_RESULT_Msk 0x1UL +/* FLASHC_FM_CTL.FM_HV_DATA */ +#define FLASHC_FM_CTL_FM_HV_DATA_DATA32_Pos 0UL +#define FLASHC_FM_CTL_FM_HV_DATA_DATA32_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.FM_MEM_DATA */ +#define FLASHC_FM_CTL_FM_MEM_DATA_DATA32_Pos 0UL +#define FLASHC_FM_CTL_FM_MEM_DATA_DATA32_Msk 0xFFFFFFFFUL + + +/* FLASHC.FLASH_CTL */ +#define FLASHC_FLASH_CTL_MAIN_WS_Pos 0UL +#define FLASHC_FLASH_CTL_MAIN_WS_Msk 0xFUL +#define FLASHC_FLASH_CTL_REMAP_Pos 8UL +#define FLASHC_FLASH_CTL_REMAP_Msk 0x100UL +/* FLASHC.FLASH_PWR_CTL */ +#define FLASHC_FLASH_PWR_CTL_ENABLE_Pos 0UL +#define FLASHC_FLASH_PWR_CTL_ENABLE_Msk 0x1UL +#define FLASHC_FLASH_PWR_CTL_ENABLE_HV_Pos 1UL +#define FLASHC_FLASH_PWR_CTL_ENABLE_HV_Msk 0x2UL +/* FLASHC.FLASH_CMD */ +#define FLASHC_FLASH_CMD_INV_Pos 0UL +#define FLASHC_FLASH_CMD_INV_Msk 0x1UL +/* FLASHC.BIST_CTL */ +#define FLASHC_BIST_CTL_OPCODE_Pos 0UL +#define FLASHC_BIST_CTL_OPCODE_Msk 0x3UL +#define FLASHC_BIST_CTL_UP_Pos 2UL +#define FLASHC_BIST_CTL_UP_Msk 0x4UL +#define FLASHC_BIST_CTL_ROW_FIRST_Pos 3UL +#define FLASHC_BIST_CTL_ROW_FIRST_Msk 0x8UL +#define FLASHC_BIST_CTL_ADDR_START_ENABLED_Pos 4UL +#define FLASHC_BIST_CTL_ADDR_START_ENABLED_Msk 0x10UL +#define FLASHC_BIST_CTL_ADDR_COMPLIMENT_ENABLED_Pos 5UL +#define FLASHC_BIST_CTL_ADDR_COMPLIMENT_ENABLED_Msk 0x20UL +#define FLASHC_BIST_CTL_INCR_DECR_BOTH_Pos 6UL +#define FLASHC_BIST_CTL_INCR_DECR_BOTH_Msk 0x40UL +#define FLASHC_BIST_CTL_STOP_ON_ERROR_Pos 7UL +#define FLASHC_BIST_CTL_STOP_ON_ERROR_Msk 0x80UL +/* FLASHC.BIST_CMD */ +#define FLASHC_BIST_CMD_START_Pos 0UL +#define FLASHC_BIST_CMD_START_Msk 0x1UL +/* FLASHC.BIST_ADDR_START */ +#define FLASHC_BIST_ADDR_START_COL_ADDR_START_Pos 0UL +#define FLASHC_BIST_ADDR_START_COL_ADDR_START_Msk 0xFFFFUL +#define FLASHC_BIST_ADDR_START_ROW_ADDR_START_Pos 16UL +#define FLASHC_BIST_ADDR_START_ROW_ADDR_START_Msk 0xFFFF0000UL +/* FLASHC.BIST_DATA */ +#define FLASHC_BIST_DATA_DATA_Pos 0UL +#define FLASHC_BIST_DATA_DATA_Msk 0xFFFFFFFFUL +/* FLASHC.BIST_DATA_ACT */ +#define FLASHC_BIST_DATA_ACT_DATA_Pos 0UL +#define FLASHC_BIST_DATA_ACT_DATA_Msk 0xFFFFFFFFUL +/* FLASHC.BIST_DATA_EXP */ +#define FLASHC_BIST_DATA_EXP_DATA_Pos 0UL +#define FLASHC_BIST_DATA_EXP_DATA_Msk 0xFFFFFFFFUL +/* FLASHC.BIST_ADDR */ +#define FLASHC_BIST_ADDR_COL_ADDR_Pos 0UL +#define FLASHC_BIST_ADDR_COL_ADDR_Msk 0xFFFFUL +#define FLASHC_BIST_ADDR_ROW_ADDR_Pos 16UL +#define FLASHC_BIST_ADDR_ROW_ADDR_Msk 0xFFFF0000UL +/* FLASHC.BIST_STATUS */ +#define FLASHC_BIST_STATUS_FAIL_Pos 0UL +#define FLASHC_BIST_STATUS_FAIL_Msk 0x1UL +/* FLASHC.CM0_CA_CTL0 */ +#define FLASHC_CM0_CA_CTL0_WAY_Pos 16UL +#define FLASHC_CM0_CA_CTL0_WAY_Msk 0x30000UL +#define FLASHC_CM0_CA_CTL0_SET_ADDR_Pos 24UL +#define FLASHC_CM0_CA_CTL0_SET_ADDR_Msk 0x7000000UL +#define FLASHC_CM0_CA_CTL0_PREF_EN_Pos 30UL +#define FLASHC_CM0_CA_CTL0_PREF_EN_Msk 0x40000000UL +#define FLASHC_CM0_CA_CTL0_ENABLED_Pos 31UL +#define FLASHC_CM0_CA_CTL0_ENABLED_Msk 0x80000000UL +/* FLASHC.CM0_CA_CTL1 */ +#define FLASHC_CM0_CA_CTL1_PWR_MODE_Pos 0UL +#define FLASHC_CM0_CA_CTL1_PWR_MODE_Msk 0x3UL +#define FLASHC_CM0_CA_CTL1_VECTKEYSTAT_Pos 16UL +#define FLASHC_CM0_CA_CTL1_VECTKEYSTAT_Msk 0xFFFF0000UL +/* FLASHC.CM0_CA_CTL2 */ +#define FLASHC_CM0_CA_CTL2_PWRUP_DELAY_Pos 0UL +#define FLASHC_CM0_CA_CTL2_PWRUP_DELAY_Msk 0x3FFUL +/* FLASHC.CM0_CA_CMD */ +#define FLASHC_CM0_CA_CMD_INV_Pos 0UL +#define FLASHC_CM0_CA_CMD_INV_Msk 0x1UL +/* FLASHC.CM0_CA_STATUS0 */ +#define FLASHC_CM0_CA_STATUS0_VALID16_Pos 0UL +#define FLASHC_CM0_CA_STATUS0_VALID16_Msk 0xFFFFUL +/* FLASHC.CM0_CA_STATUS1 */ +#define FLASHC_CM0_CA_STATUS1_TAG_Pos 0UL +#define FLASHC_CM0_CA_STATUS1_TAG_Msk 0xFFFFFFFFUL +/* FLASHC.CM0_CA_STATUS2 */ +#define FLASHC_CM0_CA_STATUS2_LRU_Pos 0UL +#define FLASHC_CM0_CA_STATUS2_LRU_Msk 0x3FUL +/* FLASHC.CM4_CA_CTL0 */ +#define FLASHC_CM4_CA_CTL0_WAY_Pos 16UL +#define FLASHC_CM4_CA_CTL0_WAY_Msk 0x30000UL +#define FLASHC_CM4_CA_CTL0_SET_ADDR_Pos 24UL +#define FLASHC_CM4_CA_CTL0_SET_ADDR_Msk 0x7000000UL +#define FLASHC_CM4_CA_CTL0_PREF_EN_Pos 30UL +#define FLASHC_CM4_CA_CTL0_PREF_EN_Msk 0x40000000UL +#define FLASHC_CM4_CA_CTL0_ENABLED_Pos 31UL +#define FLASHC_CM4_CA_CTL0_ENABLED_Msk 0x80000000UL +/* FLASHC.CM4_CA_CTL1 */ +#define FLASHC_CM4_CA_CTL1_PWR_MODE_Pos 0UL +#define FLASHC_CM4_CA_CTL1_PWR_MODE_Msk 0x3UL +#define FLASHC_CM4_CA_CTL1_VECTKEYSTAT_Pos 16UL +#define FLASHC_CM4_CA_CTL1_VECTKEYSTAT_Msk 0xFFFF0000UL +/* FLASHC.CM4_CA_CTL2 */ +#define FLASHC_CM4_CA_CTL2_PWRUP_DELAY_Pos 0UL +#define FLASHC_CM4_CA_CTL2_PWRUP_DELAY_Msk 0x3FFUL +/* FLASHC.CM4_CA_CMD */ +#define FLASHC_CM4_CA_CMD_INV_Pos 0UL +#define FLASHC_CM4_CA_CMD_INV_Msk 0x1UL +/* FLASHC.CM4_CA_STATUS0 */ +#define FLASHC_CM4_CA_STATUS0_VALID16_Pos 0UL +#define FLASHC_CM4_CA_STATUS0_VALID16_Msk 0xFFFFUL +/* FLASHC.CM4_CA_STATUS1 */ +#define FLASHC_CM4_CA_STATUS1_TAG_Pos 0UL +#define FLASHC_CM4_CA_STATUS1_TAG_Msk 0xFFFFFFFFUL +/* FLASHC.CM4_CA_STATUS2 */ +#define FLASHC_CM4_CA_STATUS2_LRU_Pos 0UL +#define FLASHC_CM4_CA_STATUS2_LRU_Msk 0x3FUL +/* FLASHC.CRYPTO_BUFF_CTL */ +#define FLASHC_CRYPTO_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_CRYPTO_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_CRYPTO_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_CRYPTO_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.CRYPTO_BUFF_CMD */ +#define FLASHC_CRYPTO_BUFF_CMD_INV_Pos 0UL +#define FLASHC_CRYPTO_BUFF_CMD_INV_Msk 0x1UL +/* FLASHC.DW0_BUFF_CTL */ +#define FLASHC_DW0_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_DW0_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_DW0_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_DW0_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.DW0_BUFF_CMD */ +#define FLASHC_DW0_BUFF_CMD_INV_Pos 0UL +#define FLASHC_DW0_BUFF_CMD_INV_Msk 0x1UL +/* FLASHC.DW1_BUFF_CTL */ +#define FLASHC_DW1_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_DW1_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_DW1_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_DW1_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.DW1_BUFF_CMD */ +#define FLASHC_DW1_BUFF_CMD_INV_Pos 0UL +#define FLASHC_DW1_BUFF_CMD_INV_Msk 0x1UL +/* FLASHC.DAP_BUFF_CTL */ +#define FLASHC_DAP_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_DAP_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_DAP_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_DAP_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.DAP_BUFF_CMD */ +#define FLASHC_DAP_BUFF_CMD_INV_Pos 0UL +#define FLASHC_DAP_BUFF_CMD_INV_Msk 0x1UL +/* FLASHC.EXT_MS0_BUFF_CTL */ +#define FLASHC_EXT_MS0_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_EXT_MS0_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_EXT_MS0_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_EXT_MS0_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.EXT_MS0_BUFF_CMD */ +#define FLASHC_EXT_MS0_BUFF_CMD_INV_Pos 0UL +#define FLASHC_EXT_MS0_BUFF_CMD_INV_Msk 0x1UL +/* FLASHC.EXT_MS1_BUFF_CTL */ +#define FLASHC_EXT_MS1_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_EXT_MS1_BUFF_CTL_PREF_EN_Msk 0x40000000UL +#define FLASHC_EXT_MS1_BUFF_CTL_ENABLED_Pos 31UL +#define FLASHC_EXT_MS1_BUFF_CTL_ENABLED_Msk 0x80000000UL +/* FLASHC.EXT_MS1_BUFF_CMD */ +#define FLASHC_EXT_MS1_BUFF_CMD_INV_Pos 0UL +#define FLASHC_EXT_MS1_BUFF_CMD_INV_Msk 0x1UL + + +#endif /* _CYIP_FLASHC_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc_v2.h new file mode 100644 index 00000000000..86399879882 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_flashc_v2.h @@ -0,0 +1,718 @@ +/***************************************************************************//** +* \file cyip_flashc_v2.h +* +* \brief +* FLASHC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_FLASHC_V2_H_ +#define _CYIP_FLASHC_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_FM_CTL_V2_SECTION_SIZE 0x00001000UL +#define FLASHC_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Flash Macro Registers (FLASHC_FM_CTL) + */ +typedef struct { + __IOM uint32_t FM_CTL; /*!< 0x00000000 Flash macro control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IOM uint32_t FM_ADDR; /*!< 0x00000008 Flash macro address */ + __IOM uint32_t BOOKMARK; /*!< 0x0000000C Bookmark register - keeps the current FW HV seq */ + __IM uint32_t GEOMETRY; /*!< 0x00000010 Regular flash geometry */ + __IM uint32_t GEOMETRY_SUPERVISORY; /*!< 0x00000014 Supervisory flash geometry */ + __IOM uint32_t ANA_CTL0; /*!< 0x00000018 Analog control 0 */ + __IOM uint32_t ANA_CTL1; /*!< 0x0000001C Analog control 1 */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t WAIT_CTL; /*!< 0x00000028 Wait State control */ + __IM uint32_t RESERVED1[2]; + __IOM uint32_t TIMER_CLK_CTL; /*!< 0x00000034 Timer prescaler (clk_t to timer clock frequency divider) */ + __IOM uint32_t TIMER_CTL; /*!< 0x00000038 Timer control */ + __OM uint32_t ACLK_CTL; /*!< 0x0000003C MPCON clock */ + __IOM uint32_t INTR; /*!< 0x00000040 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000044 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000048 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000004C Interrupt masked */ + __IOM uint32_t CAL_CTL0; /*!< 0x00000050 Cal control BG LO trim bits */ + __IOM uint32_t CAL_CTL1; /*!< 0x00000054 Cal control BG HI trim bits */ + __IOM uint32_t CAL_CTL2; /*!< 0x00000058 Cal control BG LO&HI trim bits */ + __IOM uint32_t CAL_CTL3; /*!< 0x0000005C Cal control osc trim bits, idac, sdac, itim */ + __IOM uint32_t CAL_CTL4; /*!< 0x00000060 Cal Control Vlim, SA, fdiv, reg_act */ + __IOM uint32_t CAL_CTL5; /*!< 0x00000064 Cal control */ + __IOM uint32_t CAL_CTL6; /*!< 0x00000068 SA trim LP/ULP */ + __IOM uint32_t CAL_CTL7; /*!< 0x0000006C Cal control */ + __IM uint32_t RESERVED2[4]; + __IOM uint32_t RED_CTL01; /*!< 0x00000080 Redundancy Control normal sectors 0,1 */ + __IOM uint32_t RED_CTL23; /*!< 0x00000084 Redundancy Control normal sectors 2,3 */ + __IOM uint32_t RED_CTL45; /*!< 0x00000088 Redundancy Control normal sectors 4,5 */ + __IOM uint32_t RED_CTL67; /*!< 0x0000008C Redundancy Control normal sectors 6,7 */ + __IOM uint32_t RED_CTL_SM01; /*!< 0x00000090 Redundancy Control special sectors 0,1 */ + __IM uint32_t RESERVED3; + __IOM uint32_t RGRANT_DELAY_PRG; /*!< 0x00000098 R-grant delay for program */ + __IM uint32_t RESERVED4; + __IOM uint32_t PW_SEQ12; /*!< 0x000000A0 HV Pulse Delay for seq 1&2 pre */ + __IOM uint32_t PW_SEQ23; /*!< 0x000000A4 HV Pulse Delay for seq2 post & seq3 */ + __IOM uint32_t RGRANT_SCALE_ERS; /*!< 0x000000A8 R-grant delay scale for erase */ + __IOM uint32_t RGRANT_DELAY_ERS; /*!< 0x000000AC R-grant delay for erase */ + __IM uint32_t RESERVED5[467]; + __IOM uint32_t FM_PL_WRDATA_ALL; /*!< 0x000007FC Flash macro write page latches all */ + __IOM uint32_t FM_PL_DATA[256]; /*!< 0x00000800 Flash macro Page Latches data */ + __IM uint32_t FM_MEM_DATA[256]; /*!< 0x00000C00 Flash macro memory sense amplifier and column decoder data */ +} FLASHC_FM_CTL_V2_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief Flash controller (FLASHC) + */ +typedef struct { + __IOM uint32_t FLASH_CTL; /*!< 0x00000000 Control */ + __IOM uint32_t FLASH_PWR_CTL; /*!< 0x00000004 Flash power control */ + __IOM uint32_t FLASH_CMD; /*!< 0x00000008 Command */ + __IM uint32_t RESERVED[165]; + __IOM uint32_t ECC_CTL; /*!< 0x000002A0 ECC control */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t FM_SRAM_ECC_CTL0; /*!< 0x000002B0 eCT Flash SRAM ECC control 0 */ + __IOM uint32_t FM_SRAM_ECC_CTL1; /*!< 0x000002B4 eCT Flash SRAM ECC control 1 */ + __IM uint32_t FM_SRAM_ECC_CTL2; /*!< 0x000002B8 eCT Flash SRAM ECC control 2 */ + __IOM uint32_t FM_SRAM_ECC_CTL3; /*!< 0x000002BC eCT Flash SRAM ECC control 3 */ + __IM uint32_t RESERVED2[80]; + __IOM uint32_t CM0_CA_CTL0; /*!< 0x00000400 CM0+ cache control */ + __IOM uint32_t CM0_CA_CTL1; /*!< 0x00000404 CM0+ cache control */ + __IOM uint32_t CM0_CA_CTL2; /*!< 0x00000408 CM0+ cache control */ + __IM uint32_t RESERVED3[13]; + __IM uint32_t CM0_CA_STATUS0; /*!< 0x00000440 CM0+ cache status 0 */ + __IM uint32_t CM0_CA_STATUS1; /*!< 0x00000444 CM0+ cache status 1 */ + __IM uint32_t CM0_CA_STATUS2; /*!< 0x00000448 CM0+ cache status 2 */ + __IM uint32_t RESERVED4[5]; + __IOM uint32_t CM0_STATUS; /*!< 0x00000460 CM0+ interface status */ + __IM uint32_t RESERVED5[7]; + __IOM uint32_t CM4_CA_CTL0; /*!< 0x00000480 CM4 cache control */ + __IOM uint32_t CM4_CA_CTL1; /*!< 0x00000484 CM4 cache control */ + __IOM uint32_t CM4_CA_CTL2; /*!< 0x00000488 CM4 cache control */ + __IM uint32_t RESERVED6[13]; + __IM uint32_t CM4_CA_STATUS0; /*!< 0x000004C0 CM4 cache status 0 */ + __IM uint32_t CM4_CA_STATUS1; /*!< 0x000004C4 CM4 cache status 1 */ + __IM uint32_t CM4_CA_STATUS2; /*!< 0x000004C8 CM4 cache status 2 */ + __IM uint32_t RESERVED7[5]; + __IOM uint32_t CM4_STATUS; /*!< 0x000004E0 CM4 interface status */ + __IM uint32_t RESERVED8[7]; + __IOM uint32_t CRYPTO_BUFF_CTL; /*!< 0x00000500 Cryptography buffer control */ + __IM uint32_t RESERVED9[31]; + __IOM uint32_t DW0_BUFF_CTL; /*!< 0x00000580 Datawire 0 buffer control */ + __IM uint32_t RESERVED10[31]; + __IOM uint32_t DW1_BUFF_CTL; /*!< 0x00000600 Datawire 1 buffer control */ + __IM uint32_t RESERVED11[31]; + __IOM uint32_t DMAC_BUFF_CTL; /*!< 0x00000680 DMA controller buffer control */ + __IM uint32_t RESERVED12[31]; + __IOM uint32_t EXT_MS0_BUFF_CTL; /*!< 0x00000700 External master 0 buffer control */ + __IM uint32_t RESERVED13[31]; + __IOM uint32_t EXT_MS1_BUFF_CTL; /*!< 0x00000780 External master 1 buffer control */ + __IM uint32_t RESERVED14[14879]; + FLASHC_FM_CTL_V2_Type FM_CTL; /*!< 0x0000F000 Flash Macro Registers */ +} FLASHC_V2_Type; /*!< Size = 65536 (0x10000) */ + + +/* FLASHC_FM_CTL.FM_CTL */ +#define FLASHC_FM_CTL_V2_FM_CTL_FM_MODE_Pos 0UL +#define FLASHC_FM_CTL_V2_FM_CTL_FM_MODE_Msk 0xFUL +#define FLASHC_FM_CTL_V2_FM_CTL_FM_SEQ_Pos 8UL +#define FLASHC_FM_CTL_V2_FM_CTL_FM_SEQ_Msk 0x300UL +#define FLASHC_FM_CTL_V2_FM_CTL_DAA_MUX_SEL_Pos 16UL +#define FLASHC_FM_CTL_V2_FM_CTL_DAA_MUX_SEL_Msk 0x7F0000UL +#define FLASHC_FM_CTL_V2_FM_CTL_IF_SEL_Pos 24UL +#define FLASHC_FM_CTL_V2_FM_CTL_IF_SEL_Msk 0x1000000UL +#define FLASHC_FM_CTL_V2_FM_CTL_WR_EN_Pos 25UL +#define FLASHC_FM_CTL_V2_FM_CTL_WR_EN_Msk 0x2000000UL +/* FLASHC_FM_CTL.STATUS */ +#define FLASHC_FM_CTL_V2_STATUS_TIMER_ENABLED_Pos 0UL +#define FLASHC_FM_CTL_V2_STATUS_TIMER_ENABLED_Msk 0x1UL +#define FLASHC_FM_CTL_V2_STATUS_HV_REGS_ISOLATED_Pos 1UL +#define FLASHC_FM_CTL_V2_STATUS_HV_REGS_ISOLATED_Msk 0x2UL +#define FLASHC_FM_CTL_V2_STATUS_ILLEGAL_HVOP_Pos 2UL +#define FLASHC_FM_CTL_V2_STATUS_ILLEGAL_HVOP_Msk 0x4UL +#define FLASHC_FM_CTL_V2_STATUS_TURBO_N_Pos 3UL +#define FLASHC_FM_CTL_V2_STATUS_TURBO_N_Msk 0x8UL +#define FLASHC_FM_CTL_V2_STATUS_WR_EN_MON_Pos 4UL +#define FLASHC_FM_CTL_V2_STATUS_WR_EN_MON_Msk 0x10UL +#define FLASHC_FM_CTL_V2_STATUS_IF_SEL_MON_Pos 5UL +#define FLASHC_FM_CTL_V2_STATUS_IF_SEL_MON_Msk 0x20UL +#define FLASHC_FM_CTL_V2_STATUS_TIMER_STATUS_Pos 6UL +#define FLASHC_FM_CTL_V2_STATUS_TIMER_STATUS_Msk 0x40UL +#define FLASHC_FM_CTL_V2_STATUS_R_GRANT_DELAY_STATUS_Pos 7UL +#define FLASHC_FM_CTL_V2_STATUS_R_GRANT_DELAY_STATUS_Msk 0x80UL +#define FLASHC_FM_CTL_V2_STATUS_FM_BUSY_Pos 8UL +#define FLASHC_FM_CTL_V2_STATUS_FM_BUSY_Msk 0x100UL +#define FLASHC_FM_CTL_V2_STATUS_FM_READY_Pos 9UL +#define FLASHC_FM_CTL_V2_STATUS_FM_READY_Msk 0x200UL +#define FLASHC_FM_CTL_V2_STATUS_POS_PUMP_VLO_Pos 10UL +#define FLASHC_FM_CTL_V2_STATUS_POS_PUMP_VLO_Msk 0x400UL +#define FLASHC_FM_CTL_V2_STATUS_NEG_PUMP_VHI_Pos 11UL +#define FLASHC_FM_CTL_V2_STATUS_NEG_PUMP_VHI_Msk 0x800UL +#define FLASHC_FM_CTL_V2_STATUS_RWW_Pos 12UL +#define FLASHC_FM_CTL_V2_STATUS_RWW_Msk 0x1000UL +#define FLASHC_FM_CTL_V2_STATUS_MAX_DOUT_WIDTH_Pos 13UL +#define FLASHC_FM_CTL_V2_STATUS_MAX_DOUT_WIDTH_Msk 0x2000UL +#define FLASHC_FM_CTL_V2_STATUS_SECTOR0_SR_Pos 14UL +#define FLASHC_FM_CTL_V2_STATUS_SECTOR0_SR_Msk 0x4000UL +#define FLASHC_FM_CTL_V2_STATUS_RESET_MM_Pos 15UL +#define FLASHC_FM_CTL_V2_STATUS_RESET_MM_Msk 0x8000UL +#define FLASHC_FM_CTL_V2_STATUS_ROW_ODD_Pos 16UL +#define FLASHC_FM_CTL_V2_STATUS_ROW_ODD_Msk 0x10000UL +#define FLASHC_FM_CTL_V2_STATUS_ROW_EVEN_Pos 17UL +#define FLASHC_FM_CTL_V2_STATUS_ROW_EVEN_Msk 0x20000UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_SUB_SECTOR_N_Pos 18UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_SUB_SECTOR_N_Msk 0x40000UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_SECTOR_Pos 19UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_SECTOR_Msk 0x80000UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_BULK_ALL_Pos 20UL +#define FLASHC_FM_CTL_V2_STATUS_HVOP_BULK_ALL_Msk 0x100000UL +#define FLASHC_FM_CTL_V2_STATUS_CBUS_RA_MATCH_Pos 21UL +#define FLASHC_FM_CTL_V2_STATUS_CBUS_RA_MATCH_Msk 0x200000UL +#define FLASHC_FM_CTL_V2_STATUS_CBUS_RED_ROW_EN_Pos 22UL +#define FLASHC_FM_CTL_V2_STATUS_CBUS_RED_ROW_EN_Msk 0x400000UL +#define FLASHC_FM_CTL_V2_STATUS_RQ_ERROR_Pos 23UL +#define FLASHC_FM_CTL_V2_STATUS_RQ_ERROR_Msk 0x800000UL +#define FLASHC_FM_CTL_V2_STATUS_PUMP_PDAC_Pos 24UL +#define FLASHC_FM_CTL_V2_STATUS_PUMP_PDAC_Msk 0xF000000UL +#define FLASHC_FM_CTL_V2_STATUS_PUMP_NDAC_Pos 28UL +#define FLASHC_FM_CTL_V2_STATUS_PUMP_NDAC_Msk 0xF0000000UL +/* FLASHC_FM_CTL.FM_ADDR */ +#define FLASHC_FM_CTL_V2_FM_ADDR_RA_Pos 0UL +#define FLASHC_FM_CTL_V2_FM_ADDR_RA_Msk 0xFFFFUL +#define FLASHC_FM_CTL_V2_FM_ADDR_BA_Pos 16UL +#define FLASHC_FM_CTL_V2_FM_ADDR_BA_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_FM_ADDR_AXA_Pos 24UL +#define FLASHC_FM_CTL_V2_FM_ADDR_AXA_Msk 0x1000000UL +/* FLASHC_FM_CTL.BOOKMARK */ +#define FLASHC_FM_CTL_V2_BOOKMARK_BOOKMARK_Pos 0UL +#define FLASHC_FM_CTL_V2_BOOKMARK_BOOKMARK_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.GEOMETRY */ +#define FLASHC_FM_CTL_V2_GEOMETRY_ROW_COUNT_Pos 0UL +#define FLASHC_FM_CTL_V2_GEOMETRY_ROW_COUNT_Msk 0xFFFFUL +#define FLASHC_FM_CTL_V2_GEOMETRY_BANK_COUNT_Pos 16UL +#define FLASHC_FM_CTL_V2_GEOMETRY_BANK_COUNT_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_GEOMETRY_WORD_SIZE_LOG2_Pos 24UL +#define FLASHC_FM_CTL_V2_GEOMETRY_WORD_SIZE_LOG2_Msk 0xF000000UL +#define FLASHC_FM_CTL_V2_GEOMETRY_PAGE_SIZE_LOG2_Pos 28UL +#define FLASHC_FM_CTL_V2_GEOMETRY_PAGE_SIZE_LOG2_Msk 0xF0000000UL +/* FLASHC_FM_CTL.GEOMETRY_SUPERVISORY */ +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_ROW_COUNT_Pos 0UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_ROW_COUNT_Msk 0xFFFFUL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_BANK_COUNT_Pos 16UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_BANK_COUNT_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_WORD_SIZE_LOG2_Pos 24UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_WORD_SIZE_LOG2_Msk 0xF000000UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_PAGE_SIZE_LOG2_Pos 28UL +#define FLASHC_FM_CTL_V2_GEOMETRY_SUPERVISORY_PAGE_SIZE_LOG2_Msk 0xF0000000UL +/* FLASHC_FM_CTL.ANA_CTL0 */ +#define FLASHC_FM_CTL_V2_ANA_CTL0_MDAC_Pos 0UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_MDAC_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_ANA_CTL0_CSLDAC_Pos 8UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_CSLDAC_Msk 0x700UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_FLIP_AMUXBUS_AB_Pos 11UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_FLIP_AMUXBUS_AB_Msk 0x800UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_NDAC_MIN_Pos 12UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_NDAC_MIN_Msk 0xF000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_PDAC_MIN_Pos 16UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_PDAC_MIN_Msk 0xF0000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ01_Pos 20UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ01_Msk 0x300000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ12_Pos 22UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ12_Msk 0xC00000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ23_Pos 24UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_SEQ23_Msk 0x3000000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_SEQ30_Pos 26UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_SEQ30_Msk 0xC000000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_PEON_Pos 28UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_PEON_Msk 0x30000000UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_PEOFF_Pos 30UL +#define FLASHC_FM_CTL_V2_ANA_CTL0_SCALE_PRG_PEOFF_Msk 0xC0000000UL +/* FLASHC_FM_CTL.ANA_CTL1 */ +#define FLASHC_FM_CTL_V2_ANA_CTL1_NDAC_MAX_Pos 0UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NDAC_MAX_Msk 0xFUL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NDAC_STEP_Pos 4UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NDAC_STEP_Msk 0xF0UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_PDAC_MAX_Pos 8UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_PDAC_MAX_Msk 0xF00UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_PDAC_STEP_Pos 12UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_PDAC_STEP_Msk 0xF000UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NPDAC_STEP_TIME_Pos 16UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NPDAC_STEP_TIME_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NPDAC_ZERO_TIME_Pos 24UL +#define FLASHC_FM_CTL_V2_ANA_CTL1_NPDAC_ZERO_TIME_Msk 0xFF000000UL +/* FLASHC_FM_CTL.WAIT_CTL */ +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_MEM_RD_Pos 0UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_MEM_RD_Msk 0xFUL +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_HV_RD_Pos 8UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_HV_RD_Msk 0xF00UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_HV_WR_Pos 16UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_WAIT_FM_HV_WR_Msk 0x70000UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_FM_RWW_MODE_Pos 24UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_FM_RWW_MODE_Msk 0x3000000UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_LV_SPARE_1_Pos 26UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_LV_SPARE_1_Msk 0x4000000UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_DRMM_Pos 27UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_DRMM_Msk 0x8000000UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_MBA_Pos 28UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_MBA_Msk 0x10000000UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_PL_SOFT_SET_EN_Pos 29UL +#define FLASHC_FM_CTL_V2_WAIT_CTL_PL_SOFT_SET_EN_Msk 0x20000000UL +/* FLASHC_FM_CTL.TIMER_CLK_CTL */ +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_TIMER_CLOCK_FREQ_Pos 0UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_TIMER_CLOCK_FREQ_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_PEON_Pos 8UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_PEON_Msk 0xFF00UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_PEOFF_Pos 16UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_PEOFF_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_SEQ01_Pos 24UL +#define FLASHC_FM_CTL_V2_TIMER_CLK_CTL_RGRANT_DELAY_PRG_SEQ01_Msk 0xFF000000UL +/* FLASHC_FM_CTL.TIMER_CTL */ +#define FLASHC_FM_CTL_V2_TIMER_CTL_PERIOD_Pos 0UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PERIOD_Msk 0x7FFFUL +#define FLASHC_FM_CTL_V2_TIMER_CTL_SCALE_Pos 15UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_SCALE_Msk 0x8000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_AUTO_SEQUENCE_Pos 24UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_AUTO_SEQUENCE_Msk 0x1000000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PRE_PROG_Pos 25UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PRE_PROG_Msk 0x2000000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PRE_PROG_CSL_Pos 26UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PRE_PROG_CSL_Msk 0x4000000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PUMP_EN_Pos 29UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_PUMP_EN_Msk 0x20000000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_ACLK_EN_Pos 30UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_ACLK_EN_Msk 0x40000000UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_TIMER_EN_Pos 31UL +#define FLASHC_FM_CTL_V2_TIMER_CTL_TIMER_EN_Msk 0x80000000UL +/* FLASHC_FM_CTL.ACLK_CTL */ +#define FLASHC_FM_CTL_V2_ACLK_CTL_ACLK_GEN_Pos 0UL +#define FLASHC_FM_CTL_V2_ACLK_CTL_ACLK_GEN_Msk 0x1UL +/* FLASHC_FM_CTL.INTR */ +#define FLASHC_FM_CTL_V2_INTR_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_V2_INTR_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_SET */ +#define FLASHC_FM_CTL_V2_INTR_SET_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_V2_INTR_SET_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_MASK */ +#define FLASHC_FM_CTL_V2_INTR_MASK_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_V2_INTR_MASK_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.INTR_MASKED */ +#define FLASHC_FM_CTL_V2_INTR_MASKED_TIMER_EXPIRED_Pos 0UL +#define FLASHC_FM_CTL_V2_INTR_MASKED_TIMER_EXPIRED_Msk 0x1UL +/* FLASHC_FM_CTL.CAL_CTL0 */ +#define FLASHC_FM_CTL_V2_CAL_CTL0_VCT_TRIM_LO_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_VCT_TRIM_LO_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_V2_CAL_CTL0_CDAC_LO_HV_Pos 5UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_CDAC_LO_HV_Msk 0xE0UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_VBG_TRIM_LO_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_VBG_TRIM_LO_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_VBG_TC_TRIM_LO_HV_Pos 13UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_VBG_TC_TRIM_LO_HV_Msk 0xE000UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_ICREF_TC_TRIM_LO_HV_Pos 16UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_ICREF_TC_TRIM_LO_HV_Msk 0x70000UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_IPREF_TRIMA_LO_HV_Pos 19UL +#define FLASHC_FM_CTL_V2_CAL_CTL0_IPREF_TRIMA_LO_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL1 */ +#define FLASHC_FM_CTL_V2_CAL_CTL1_VCT_TRIM_HI_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_VCT_TRIM_HI_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_V2_CAL_CTL1_CDAC_HI_HV_Pos 5UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_CDAC_HI_HV_Msk 0xE0UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_VBG_TRIM_HI_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_VBG_TRIM_HI_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_VBG_TC_TRIM_HI_HV_Pos 13UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_VBG_TC_TRIM_HI_HV_Msk 0xE000UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_ICREF_TC_TRIM_HI_HV_Pos 16UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_ICREF_TC_TRIM_HI_HV_Msk 0x70000UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_IPREF_TRIMA_HI_HV_Pos 19UL +#define FLASHC_FM_CTL_V2_CAL_CTL1_IPREF_TRIMA_HI_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL2 */ +#define FLASHC_FM_CTL_V2_CAL_CTL2_ICREF_TRIM_LO_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_ICREF_TRIM_LO_HV_Msk 0x1FUL +#define FLASHC_FM_CTL_V2_CAL_CTL2_ICREF_TRIM_HI_HV_Pos 5UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_ICREF_TRIM_HI_HV_Msk 0x3E0UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_IPREF_TRIM_LO_HV_Pos 10UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_IPREF_TRIM_LO_HV_Msk 0x7C00UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_IPREF_TRIM_HI_HV_Pos 15UL +#define FLASHC_FM_CTL_V2_CAL_CTL2_IPREF_TRIM_HI_HV_Msk 0xF8000UL +/* FLASHC_FM_CTL.CAL_CTL3 */ +#define FLASHC_FM_CTL_V2_CAL_CTL3_OSC_TRIM_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_OSC_TRIM_HV_Msk 0xFUL +#define FLASHC_FM_CTL_V2_CAL_CTL3_OSC_RANGE_TRIM_HV_Pos 4UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_OSC_RANGE_TRIM_HV_Msk 0x10UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VPROT_ACT_HV_Pos 5UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VPROT_ACT_HV_Msk 0x20UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_IPREF_TC_HV_Pos 6UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_IPREF_TC_HV_Msk 0x40UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VREF_SEL_HV_Pos 7UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VREF_SEL_HV_Msk 0x80UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_IREF_SEL_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_IREF_SEL_HV_Msk 0x100UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_REG_ACT_HV_Pos 9UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_REG_ACT_HV_Msk 0x200UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_FDIV_TRIM_HV_Pos 10UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_FDIV_TRIM_HV_Msk 0xC00UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VDDHI_HV_Pos 12UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_VDDHI_HV_Msk 0x1000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_TURBO_PULSEW_HV_Pos 13UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_TURBO_PULSEW_HV_Msk 0x6000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_BGLO_EN_HV_Pos 15UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_BGLO_EN_HV_Msk 0x8000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_BGHI_EN_HV_Pos 16UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_BGHI_EN_HV_Msk 0x10000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_CL_ISO_DIS_HV_Pos 17UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_CL_ISO_DIS_HV_Msk 0x20000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_R_GRANT_EN_HV_Pos 18UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_R_GRANT_EN_HV_Msk 0x40000UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_LP_ULP_SW_HV_Pos 19UL +#define FLASHC_FM_CTL_V2_CAL_CTL3_LP_ULP_SW_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL4 */ +#define FLASHC_FM_CTL_V2_CAL_CTL4_VLIM_TRIM_ULP_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_VLIM_TRIM_ULP_HV_Msk 0x3UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_IDAC_ULP_HV_Pos 2UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_IDAC_ULP_HV_Msk 0x3CUL +#define FLASHC_FM_CTL_V2_CAL_CTL4_SDAC_ULP_HV_Pos 6UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_SDAC_ULP_HV_Msk 0xC0UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_ITIM_ULP_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_ITIM_ULP_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_FM_READY_DEL_ULP_HV_Pos 13UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_FM_READY_DEL_ULP_HV_Msk 0x6000UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_SPARE451_ULP_HV_Pos 15UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_SPARE451_ULP_HV_Msk 0x8000UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_READY_RESTART_N_HV_Pos 16UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_READY_RESTART_N_HV_Msk 0x10000UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_VBST_S_DIS_HV_Pos 17UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_VBST_S_DIS_HV_Msk 0x20000UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_AUTO_HVPULSE_HV_Pos 18UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_AUTO_HVPULSE_HV_Msk 0x40000UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_UGB_EN_HV_Pos 19UL +#define FLASHC_FM_CTL_V2_CAL_CTL4_UGB_EN_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL5 */ +#define FLASHC_FM_CTL_V2_CAL_CTL5_VLIM_TRIM_LP_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_VLIM_TRIM_LP_HV_Msk 0x3UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_IDAC_LP_HV_Pos 2UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_IDAC_LP_HV_Msk 0x3CUL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SDAC_LP_HV_Pos 6UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SDAC_LP_HV_Msk 0xC0UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_ITIM_LP_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_ITIM_LP_HV_Msk 0x1F00UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_FM_READY_DEL_LP_HV_Pos 13UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_FM_READY_DEL_LP_HV_Msk 0x6000UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SPARE451_LP_HV_Pos 15UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SPARE451_LP_HV_Msk 0x8000UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SPARE52_HV_Pos 16UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_SPARE52_HV_Msk 0x30000UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_AMUX_SEL_HV_Pos 18UL +#define FLASHC_FM_CTL_V2_CAL_CTL5_AMUX_SEL_HV_Msk 0xC0000UL +/* FLASHC_FM_CTL.CAL_CTL6 */ +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T1_ULP_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T1_ULP_HV_Msk 0x1UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T4_ULP_HV_Pos 1UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T4_ULP_HV_Msk 0xEUL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T5_ULP_HV_Pos 4UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T5_ULP_HV_Msk 0x70UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T6_ULP_HV_Pos 7UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T6_ULP_HV_Msk 0x180UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T8_ULP_HV_Pos 9UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T8_ULP_HV_Msk 0x200UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T1_LP_HV_Pos 10UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T1_LP_HV_Msk 0x400UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T4_LP_HV_Pos 11UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T4_LP_HV_Msk 0x3800UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T5_LP_HV_Pos 14UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T5_LP_HV_Msk 0x1C000UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T6_LP_HV_Pos 17UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T6_LP_HV_Msk 0x60000UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T8_LP_HV_Pos 19UL +#define FLASHC_FM_CTL_V2_CAL_CTL6_SA_CTL_TRIM_T8_LP_HV_Msk 0x80000UL +/* FLASHC_FM_CTL.CAL_CTL7 */ +#define FLASHC_FM_CTL_V2_CAL_CTL7_ERSX8_CLK_SEL_HV_Pos 0UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_ERSX8_CLK_SEL_HV_Msk 0x3UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_FM_ACTIVE_HV_Pos 2UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_FM_ACTIVE_HV_Msk 0x4UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_TURBO_EXT_HV_Pos 3UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_TURBO_EXT_HV_Msk 0x8UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_NPDAC_HWCTL_DIS_HV_Pos 4UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_NPDAC_HWCTL_DIS_HV_Msk 0x10UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_FM_READY_DIS_HV_Pos 5UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_FM_READY_DIS_HV_Msk 0x20UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_ERSX8_EN_ALL_HV_Pos 6UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_ERSX8_EN_ALL_HV_Msk 0x40UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_DISABLE_LOAD_ONCE_HV_Pos 7UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_DISABLE_LOAD_ONCE_HV_Msk 0x80UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_HV_Pos 8UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_HV_Msk 0x300UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_ULP_HV_Pos 10UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_ULP_HV_Msk 0x7C00UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_LP_HV_Pos 15UL +#define FLASHC_FM_CTL_V2_CAL_CTL7_SPARE7_LP_HV_Msk 0xF8000UL +/* FLASHC_FM_CTL.RED_CTL01 */ +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_ADDR_0_Pos 0UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_ADDR_0_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_EN_0_Pos 8UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_EN_0_Msk 0x100UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_ADDR_1_Pos 16UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_ADDR_1_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_EN_1_Pos 24UL +#define FLASHC_FM_CTL_V2_RED_CTL01_RED_EN_1_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL23 */ +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_ADDR_2_Pos 0UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_ADDR_2_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_EN_2_Pos 8UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_EN_2_Msk 0x100UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_ADDR_3_Pos 16UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_ADDR_3_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_EN_3_Pos 24UL +#define FLASHC_FM_CTL_V2_RED_CTL23_RED_EN_3_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL45 */ +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_ADDR_4_Pos 0UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_ADDR_4_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_EN_4_Pos 8UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_EN_4_Msk 0x100UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_ADDR_5_Pos 16UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_ADDR_5_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_EN_5_Pos 24UL +#define FLASHC_FM_CTL_V2_RED_CTL45_RED_EN_5_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL67 */ +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_ADDR_6_Pos 0UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_ADDR_6_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_EN_6_Pos 8UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_EN_6_Msk 0x100UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_ADDR_7_Pos 16UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_ADDR_7_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_EN_7_Pos 24UL +#define FLASHC_FM_CTL_V2_RED_CTL67_RED_EN_7_Msk 0x1000000UL +/* FLASHC_FM_CTL.RED_CTL_SM01 */ +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_ADDR_SM0_Pos 0UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_ADDR_SM0_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_EN_SM0_Pos 8UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_EN_SM0_Msk 0x100UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_ADDR_SM1_Pos 16UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_ADDR_SM1_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_EN_SM1_Pos 24UL +#define FLASHC_FM_CTL_V2_RED_CTL_SM01_RED_EN_SM1_Msk 0x1000000UL +/* FLASHC_FM_CTL.RGRANT_DELAY_PRG */ +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_PRG_SEQ12_Pos 0UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_PRG_SEQ12_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_PRG_SEQ23_Pos 8UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_PRG_SEQ23_Msk 0xFF00UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_SEQ30_Pos 16UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_SEQ30_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_CLK_Pos 24UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_RGRANT_DELAY_CLK_Msk 0xF000000UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_HV_PARAMS_LOADED_Pos 31UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_PRG_HV_PARAMS_LOADED_Msk 0x80000000UL +/* FLASHC_FM_CTL.PW_SEQ12 */ +#define FLASHC_FM_CTL_V2_PW_SEQ12_PW_SEQ1_Pos 0UL +#define FLASHC_FM_CTL_V2_PW_SEQ12_PW_SEQ1_Msk 0xFFFFUL +#define FLASHC_FM_CTL_V2_PW_SEQ12_PW_SEQ2_PRE_Pos 16UL +#define FLASHC_FM_CTL_V2_PW_SEQ12_PW_SEQ2_PRE_Msk 0xFFFF0000UL +/* FLASHC_FM_CTL.PW_SEQ23 */ +#define FLASHC_FM_CTL_V2_PW_SEQ23_PW_SEQ2_POST_Pos 0UL +#define FLASHC_FM_CTL_V2_PW_SEQ23_PW_SEQ2_POST_Msk 0xFFFFUL +#define FLASHC_FM_CTL_V2_PW_SEQ23_PW_SEQ3_Pos 16UL +#define FLASHC_FM_CTL_V2_PW_SEQ23_PW_SEQ3_Msk 0xFFFF0000UL +/* FLASHC_FM_CTL.RGRANT_SCALE_ERS */ +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ01_Pos 0UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ01_Msk 0x3UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ12_Pos 2UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ12_Msk 0xCUL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ23_Pos 4UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_SEQ23_Msk 0x30UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_PEON_Pos 6UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_PEON_Msk 0xC0UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_PEOFF_Pos 8UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_SCALE_ERS_PEOFF_Msk 0x300UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_RGRANT_DELAY_ERS_PEON_Pos 16UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_RGRANT_DELAY_ERS_PEON_Msk 0xFF0000UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_RGRANT_DELAY_ERS_PEOFF_Pos 24UL +#define FLASHC_FM_CTL_V2_RGRANT_SCALE_ERS_RGRANT_DELAY_ERS_PEOFF_Msk 0xFF000000UL +/* FLASHC_FM_CTL.RGRANT_DELAY_ERS */ +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ01_Pos 0UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ01_Msk 0xFFUL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ12_Pos 8UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ12_Msk 0xFF00UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ23_Pos 16UL +#define FLASHC_FM_CTL_V2_RGRANT_DELAY_ERS_RGRANT_DELAY_ERS_SEQ23_Msk 0xFF0000UL +/* FLASHC_FM_CTL.FM_PL_WRDATA_ALL */ +#define FLASHC_FM_CTL_V2_FM_PL_WRDATA_ALL_DATA32_Pos 0UL +#define FLASHC_FM_CTL_V2_FM_PL_WRDATA_ALL_DATA32_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.FM_PL_DATA */ +#define FLASHC_FM_CTL_V2_FM_PL_DATA_DATA32_Pos 0UL +#define FLASHC_FM_CTL_V2_FM_PL_DATA_DATA32_Msk 0xFFFFFFFFUL +/* FLASHC_FM_CTL.FM_MEM_DATA */ +#define FLASHC_FM_CTL_V2_FM_MEM_DATA_DATA32_Pos 0UL +#define FLASHC_FM_CTL_V2_FM_MEM_DATA_DATA32_Msk 0xFFFFFFFFUL + + +/* FLASHC.FLASH_CTL */ +#define FLASHC_V2_FLASH_CTL_MAIN_WS_Pos 0UL +#define FLASHC_V2_FLASH_CTL_MAIN_WS_Msk 0xFUL +#define FLASHC_V2_FLASH_CTL_MAIN_MAP_Pos 8UL +#define FLASHC_V2_FLASH_CTL_MAIN_MAP_Msk 0x100UL +#define FLASHC_V2_FLASH_CTL_WORK_MAP_Pos 9UL +#define FLASHC_V2_FLASH_CTL_WORK_MAP_Msk 0x200UL +#define FLASHC_V2_FLASH_CTL_MAIN_BANK_MODE_Pos 12UL +#define FLASHC_V2_FLASH_CTL_MAIN_BANK_MODE_Msk 0x1000UL +#define FLASHC_V2_FLASH_CTL_WORK_BANK_MODE_Pos 13UL +#define FLASHC_V2_FLASH_CTL_WORK_BANK_MODE_Msk 0x2000UL +#define FLASHC_V2_FLASH_CTL_MAIN_ECC_EN_Pos 16UL +#define FLASHC_V2_FLASH_CTL_MAIN_ECC_EN_Msk 0x10000UL +#define FLASHC_V2_FLASH_CTL_MAIN_ECC_INJ_EN_Pos 17UL +#define FLASHC_V2_FLASH_CTL_MAIN_ECC_INJ_EN_Msk 0x20000UL +#define FLASHC_V2_FLASH_CTL_MAIN_ERR_SILENT_Pos 18UL +#define FLASHC_V2_FLASH_CTL_MAIN_ERR_SILENT_Msk 0x40000UL +#define FLASHC_V2_FLASH_CTL_WORK_ECC_EN_Pos 20UL +#define FLASHC_V2_FLASH_CTL_WORK_ECC_EN_Msk 0x100000UL +#define FLASHC_V2_FLASH_CTL_WORK_ECC_INJ_EN_Pos 21UL +#define FLASHC_V2_FLASH_CTL_WORK_ECC_INJ_EN_Msk 0x200000UL +#define FLASHC_V2_FLASH_CTL_WORK_ERR_SILENT_Pos 22UL +#define FLASHC_V2_FLASH_CTL_WORK_ERR_SILENT_Msk 0x400000UL +/* FLASHC.FLASH_PWR_CTL */ +#define FLASHC_V2_FLASH_PWR_CTL_ENABLE_Pos 0UL +#define FLASHC_V2_FLASH_PWR_CTL_ENABLE_Msk 0x1UL +#define FLASHC_V2_FLASH_PWR_CTL_ENABLE_HV_Pos 1UL +#define FLASHC_V2_FLASH_PWR_CTL_ENABLE_HV_Msk 0x2UL +/* FLASHC.FLASH_CMD */ +#define FLASHC_V2_FLASH_CMD_INV_Pos 0UL +#define FLASHC_V2_FLASH_CMD_INV_Msk 0x1UL +#define FLASHC_V2_FLASH_CMD_BUFF_INV_Pos 1UL +#define FLASHC_V2_FLASH_CMD_BUFF_INV_Msk 0x2UL +/* FLASHC.ECC_CTL */ +#define FLASHC_V2_ECC_CTL_WORD_ADDR_Pos 0UL +#define FLASHC_V2_ECC_CTL_WORD_ADDR_Msk 0xFFFFFFUL +#define FLASHC_V2_ECC_CTL_PARITY_Pos 24UL +#define FLASHC_V2_ECC_CTL_PARITY_Msk 0xFF000000UL +/* FLASHC.FM_SRAM_ECC_CTL0 */ +#define FLASHC_V2_FM_SRAM_ECC_CTL0_ECC_INJ_DATA_Pos 0UL +#define FLASHC_V2_FM_SRAM_ECC_CTL0_ECC_INJ_DATA_Msk 0xFFFFFFFFUL +/* FLASHC.FM_SRAM_ECC_CTL1 */ +#define FLASHC_V2_FM_SRAM_ECC_CTL1_ECC_INJ_PARITY_Pos 0UL +#define FLASHC_V2_FM_SRAM_ECC_CTL1_ECC_INJ_PARITY_Msk 0x7FUL +/* FLASHC.FM_SRAM_ECC_CTL2 */ +#define FLASHC_V2_FM_SRAM_ECC_CTL2_CORRECTED_DATA_Pos 0UL +#define FLASHC_V2_FM_SRAM_ECC_CTL2_CORRECTED_DATA_Msk 0xFFFFFFFFUL +/* FLASHC.FM_SRAM_ECC_CTL3 */ +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_ENABLE_Pos 0UL +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_ENABLE_Msk 0x1UL +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_INJ_EN_Pos 4UL +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_INJ_EN_Msk 0x10UL +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_TEST_FAIL_Pos 8UL +#define FLASHC_V2_FM_SRAM_ECC_CTL3_ECC_TEST_FAIL_Msk 0x100UL +/* FLASHC.CM0_CA_CTL0 */ +#define FLASHC_V2_CM0_CA_CTL0_RAM_ECC_EN_Pos 0UL +#define FLASHC_V2_CM0_CA_CTL0_RAM_ECC_EN_Msk 0x1UL +#define FLASHC_V2_CM0_CA_CTL0_RAM_ECC_INJ_EN_Pos 1UL +#define FLASHC_V2_CM0_CA_CTL0_RAM_ECC_INJ_EN_Msk 0x2UL +#define FLASHC_V2_CM0_CA_CTL0_WAY_Pos 16UL +#define FLASHC_V2_CM0_CA_CTL0_WAY_Msk 0x30000UL +#define FLASHC_V2_CM0_CA_CTL0_SET_ADDR_Pos 24UL +#define FLASHC_V2_CM0_CA_CTL0_SET_ADDR_Msk 0x7000000UL +#define FLASHC_V2_CM0_CA_CTL0_PREF_EN_Pos 30UL +#define FLASHC_V2_CM0_CA_CTL0_PREF_EN_Msk 0x40000000UL +#define FLASHC_V2_CM0_CA_CTL0_CA_EN_Pos 31UL +#define FLASHC_V2_CM0_CA_CTL0_CA_EN_Msk 0x80000000UL +/* FLASHC.CM0_CA_CTL1 */ +#define FLASHC_V2_CM0_CA_CTL1_PWR_MODE_Pos 0UL +#define FLASHC_V2_CM0_CA_CTL1_PWR_MODE_Msk 0x3UL +#define FLASHC_V2_CM0_CA_CTL1_VECTKEYSTAT_Pos 16UL +#define FLASHC_V2_CM0_CA_CTL1_VECTKEYSTAT_Msk 0xFFFF0000UL +/* FLASHC.CM0_CA_CTL2 */ +#define FLASHC_V2_CM0_CA_CTL2_PWRUP_DELAY_Pos 0UL +#define FLASHC_V2_CM0_CA_CTL2_PWRUP_DELAY_Msk 0x3FFUL +/* FLASHC.CM0_CA_STATUS0 */ +#define FLASHC_V2_CM0_CA_STATUS0_VALID32_Pos 0UL +#define FLASHC_V2_CM0_CA_STATUS0_VALID32_Msk 0xFFFFFFFFUL +/* FLASHC.CM0_CA_STATUS1 */ +#define FLASHC_V2_CM0_CA_STATUS1_TAG_Pos 0UL +#define FLASHC_V2_CM0_CA_STATUS1_TAG_Msk 0xFFFFFFFFUL +/* FLASHC.CM0_CA_STATUS2 */ +#define FLASHC_V2_CM0_CA_STATUS2_LRU_Pos 0UL +#define FLASHC_V2_CM0_CA_STATUS2_LRU_Msk 0x3FUL +/* FLASHC.CM0_STATUS */ +#define FLASHC_V2_CM0_STATUS_MAIN_INTERNAL_ERR_Pos 0UL +#define FLASHC_V2_CM0_STATUS_MAIN_INTERNAL_ERR_Msk 0x1UL +#define FLASHC_V2_CM0_STATUS_WORK_INTERNAL_ERR_Pos 1UL +#define FLASHC_V2_CM0_STATUS_WORK_INTERNAL_ERR_Msk 0x2UL +/* FLASHC.CM4_CA_CTL0 */ +#define FLASHC_V2_CM4_CA_CTL0_RAM_ECC_EN_Pos 0UL +#define FLASHC_V2_CM4_CA_CTL0_RAM_ECC_EN_Msk 0x1UL +#define FLASHC_V2_CM4_CA_CTL0_RAM_ECC_INJ_EN_Pos 1UL +#define FLASHC_V2_CM4_CA_CTL0_RAM_ECC_INJ_EN_Msk 0x2UL +#define FLASHC_V2_CM4_CA_CTL0_WAY_Pos 16UL +#define FLASHC_V2_CM4_CA_CTL0_WAY_Msk 0x30000UL +#define FLASHC_V2_CM4_CA_CTL0_SET_ADDR_Pos 24UL +#define FLASHC_V2_CM4_CA_CTL0_SET_ADDR_Msk 0x7000000UL +#define FLASHC_V2_CM4_CA_CTL0_PREF_EN_Pos 30UL +#define FLASHC_V2_CM4_CA_CTL0_PREF_EN_Msk 0x40000000UL +#define FLASHC_V2_CM4_CA_CTL0_CA_EN_Pos 31UL +#define FLASHC_V2_CM4_CA_CTL0_CA_EN_Msk 0x80000000UL +/* FLASHC.CM4_CA_CTL1 */ +#define FLASHC_V2_CM4_CA_CTL1_PWR_MODE_Pos 0UL +#define FLASHC_V2_CM4_CA_CTL1_PWR_MODE_Msk 0x3UL +#define FLASHC_V2_CM4_CA_CTL1_VECTKEYSTAT_Pos 16UL +#define FLASHC_V2_CM4_CA_CTL1_VECTKEYSTAT_Msk 0xFFFF0000UL +/* FLASHC.CM4_CA_CTL2 */ +#define FLASHC_V2_CM4_CA_CTL2_PWRUP_DELAY_Pos 0UL +#define FLASHC_V2_CM4_CA_CTL2_PWRUP_DELAY_Msk 0x3FFUL +/* FLASHC.CM4_CA_STATUS0 */ +#define FLASHC_V2_CM4_CA_STATUS0_VALID32_Pos 0UL +#define FLASHC_V2_CM4_CA_STATUS0_VALID32_Msk 0xFFFFFFFFUL +/* FLASHC.CM4_CA_STATUS1 */ +#define FLASHC_V2_CM4_CA_STATUS1_TAG_Pos 0UL +#define FLASHC_V2_CM4_CA_STATUS1_TAG_Msk 0xFFFFFFFFUL +/* FLASHC.CM4_CA_STATUS2 */ +#define FLASHC_V2_CM4_CA_STATUS2_LRU_Pos 0UL +#define FLASHC_V2_CM4_CA_STATUS2_LRU_Msk 0x3FUL +/* FLASHC.CM4_STATUS */ +#define FLASHC_V2_CM4_STATUS_MAIN_INTERNAL_ERR_Pos 0UL +#define FLASHC_V2_CM4_STATUS_MAIN_INTERNAL_ERR_Msk 0x1UL +#define FLASHC_V2_CM4_STATUS_WORK_INTERNAL_ERR_Pos 1UL +#define FLASHC_V2_CM4_STATUS_WORK_INTERNAL_ERR_Msk 0x2UL +/* FLASHC.CRYPTO_BUFF_CTL */ +#define FLASHC_V2_CRYPTO_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_CRYPTO_BUFF_CTL_PREF_EN_Msk 0x40000000UL +/* FLASHC.DW0_BUFF_CTL */ +#define FLASHC_V2_DW0_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_DW0_BUFF_CTL_PREF_EN_Msk 0x40000000UL +/* FLASHC.DW1_BUFF_CTL */ +#define FLASHC_V2_DW1_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_DW1_BUFF_CTL_PREF_EN_Msk 0x40000000UL +/* FLASHC.DMAC_BUFF_CTL */ +#define FLASHC_V2_DMAC_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_DMAC_BUFF_CTL_PREF_EN_Msk 0x40000000UL +/* FLASHC.EXT_MS0_BUFF_CTL */ +#define FLASHC_V2_EXT_MS0_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_EXT_MS0_BUFF_CTL_PREF_EN_Msk 0x40000000UL +/* FLASHC.EXT_MS1_BUFF_CTL */ +#define FLASHC_V2_EXT_MS1_BUFF_CTL_PREF_EN_Pos 30UL +#define FLASHC_V2_EXT_MS1_BUFF_CTL_PREF_EN_Msk 0x40000000UL + + +#endif /* _CYIP_FLASHC_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio.h new file mode 100644 index 00000000000..1f701ad6623 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio.h @@ -0,0 +1,477 @@ +/***************************************************************************//** +* \file cyip_gpio.h +* +* \brief +* GPIO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_GPIO_H_ +#define _CYIP_GPIO_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_PRT_SECTION_SIZE 0x00000080UL +#define GPIO_SECTION_SIZE 0x00010000UL + +/** + * \brief GPIO port registers (GPIO_PRT) + */ +typedef struct { + __IOM uint32_t OUT; /*!< 0x00000000 Port output data register */ + __IOM uint32_t OUT_CLR; /*!< 0x00000004 Port output data clear register */ + __IOM uint32_t OUT_SET; /*!< 0x00000008 Port output data set register */ + __IOM uint32_t OUT_INV; /*!< 0x0000000C Port output data invert register */ + __IM uint32_t IN; /*!< 0x00000010 Port input state register */ + __IOM uint32_t INTR; /*!< 0x00000014 Port interrupt status register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 Port interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C Port interrupt masked status register */ + __IOM uint32_t INTR_SET; /*!< 0x00000020 Port interrupt set register */ + __IOM uint32_t INTR_CFG; /*!< 0x00000024 Port interrupt configuration register */ + __IOM uint32_t CFG; /*!< 0x00000028 Port configuration register */ + __IOM uint32_t CFG_IN; /*!< 0x0000002C Port input buffer configuration register */ + __IOM uint32_t CFG_OUT; /*!< 0x00000030 Port output buffer configuration register */ + __IOM uint32_t CFG_SIO; /*!< 0x00000034 Port SIO configuration register */ + __IM uint32_t RESERVED; + __IOM uint32_t CFG_IN_GPIO5V; /*!< 0x0000003C Port GPIO5V input buffer configuration register */ + __IM uint32_t RESERVED1[16]; +} GPIO_PRT_V1_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief GPIO port control/configuration (GPIO) + */ +typedef struct { + GPIO_PRT_V1_Type PRT[128]; /*!< 0x00000000 GPIO port registers */ + __IM uint32_t INTR_CAUSE0; /*!< 0x00004000 Interrupt port cause register 0 */ + __IM uint32_t INTR_CAUSE1; /*!< 0x00004004 Interrupt port cause register 1 */ + __IM uint32_t INTR_CAUSE2; /*!< 0x00004008 Interrupt port cause register 2 */ + __IM uint32_t INTR_CAUSE3; /*!< 0x0000400C Interrupt port cause register 3 */ + __IM uint32_t VDD_ACTIVE; /*!< 0x00004010 Extern power supply detection register */ + __IOM uint32_t VDD_INTR; /*!< 0x00004014 Supply detection interrupt register */ + __IOM uint32_t VDD_INTR_MASK; /*!< 0x00004018 Supply detection interrupt mask register */ + __IM uint32_t VDD_INTR_MASKED; /*!< 0x0000401C Supply detection interrupt masked register */ + __IOM uint32_t VDD_INTR_SET; /*!< 0x00004020 Supply detection interrupt set register */ +} GPIO_V1_Type; /*!< Size = 16420 (0x4024) */ + + +/* GPIO_PRT.OUT */ +#define GPIO_PRT_OUT_OUT0_Pos 0UL +#define GPIO_PRT_OUT_OUT0_Msk 0x1UL +#define GPIO_PRT_OUT_OUT1_Pos 1UL +#define GPIO_PRT_OUT_OUT1_Msk 0x2UL +#define GPIO_PRT_OUT_OUT2_Pos 2UL +#define GPIO_PRT_OUT_OUT2_Msk 0x4UL +#define GPIO_PRT_OUT_OUT3_Pos 3UL +#define GPIO_PRT_OUT_OUT3_Msk 0x8UL +#define GPIO_PRT_OUT_OUT4_Pos 4UL +#define GPIO_PRT_OUT_OUT4_Msk 0x10UL +#define GPIO_PRT_OUT_OUT5_Pos 5UL +#define GPIO_PRT_OUT_OUT5_Msk 0x20UL +#define GPIO_PRT_OUT_OUT6_Pos 6UL +#define GPIO_PRT_OUT_OUT6_Msk 0x40UL +#define GPIO_PRT_OUT_OUT7_Pos 7UL +#define GPIO_PRT_OUT_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_CLR */ +#define GPIO_PRT_OUT_CLR_OUT0_Pos 0UL +#define GPIO_PRT_OUT_CLR_OUT0_Msk 0x1UL +#define GPIO_PRT_OUT_CLR_OUT1_Pos 1UL +#define GPIO_PRT_OUT_CLR_OUT1_Msk 0x2UL +#define GPIO_PRT_OUT_CLR_OUT2_Pos 2UL +#define GPIO_PRT_OUT_CLR_OUT2_Msk 0x4UL +#define GPIO_PRT_OUT_CLR_OUT3_Pos 3UL +#define GPIO_PRT_OUT_CLR_OUT3_Msk 0x8UL +#define GPIO_PRT_OUT_CLR_OUT4_Pos 4UL +#define GPIO_PRT_OUT_CLR_OUT4_Msk 0x10UL +#define GPIO_PRT_OUT_CLR_OUT5_Pos 5UL +#define GPIO_PRT_OUT_CLR_OUT5_Msk 0x20UL +#define GPIO_PRT_OUT_CLR_OUT6_Pos 6UL +#define GPIO_PRT_OUT_CLR_OUT6_Msk 0x40UL +#define GPIO_PRT_OUT_CLR_OUT7_Pos 7UL +#define GPIO_PRT_OUT_CLR_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_SET */ +#define GPIO_PRT_OUT_SET_OUT0_Pos 0UL +#define GPIO_PRT_OUT_SET_OUT0_Msk 0x1UL +#define GPIO_PRT_OUT_SET_OUT1_Pos 1UL +#define GPIO_PRT_OUT_SET_OUT1_Msk 0x2UL +#define GPIO_PRT_OUT_SET_OUT2_Pos 2UL +#define GPIO_PRT_OUT_SET_OUT2_Msk 0x4UL +#define GPIO_PRT_OUT_SET_OUT3_Pos 3UL +#define GPIO_PRT_OUT_SET_OUT3_Msk 0x8UL +#define GPIO_PRT_OUT_SET_OUT4_Pos 4UL +#define GPIO_PRT_OUT_SET_OUT4_Msk 0x10UL +#define GPIO_PRT_OUT_SET_OUT5_Pos 5UL +#define GPIO_PRT_OUT_SET_OUT5_Msk 0x20UL +#define GPIO_PRT_OUT_SET_OUT6_Pos 6UL +#define GPIO_PRT_OUT_SET_OUT6_Msk 0x40UL +#define GPIO_PRT_OUT_SET_OUT7_Pos 7UL +#define GPIO_PRT_OUT_SET_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_INV */ +#define GPIO_PRT_OUT_INV_OUT0_Pos 0UL +#define GPIO_PRT_OUT_INV_OUT0_Msk 0x1UL +#define GPIO_PRT_OUT_INV_OUT1_Pos 1UL +#define GPIO_PRT_OUT_INV_OUT1_Msk 0x2UL +#define GPIO_PRT_OUT_INV_OUT2_Pos 2UL +#define GPIO_PRT_OUT_INV_OUT2_Msk 0x4UL +#define GPIO_PRT_OUT_INV_OUT3_Pos 3UL +#define GPIO_PRT_OUT_INV_OUT3_Msk 0x8UL +#define GPIO_PRT_OUT_INV_OUT4_Pos 4UL +#define GPIO_PRT_OUT_INV_OUT4_Msk 0x10UL +#define GPIO_PRT_OUT_INV_OUT5_Pos 5UL +#define GPIO_PRT_OUT_INV_OUT5_Msk 0x20UL +#define GPIO_PRT_OUT_INV_OUT6_Pos 6UL +#define GPIO_PRT_OUT_INV_OUT6_Msk 0x40UL +#define GPIO_PRT_OUT_INV_OUT7_Pos 7UL +#define GPIO_PRT_OUT_INV_OUT7_Msk 0x80UL +/* GPIO_PRT.IN */ +#define GPIO_PRT_IN_IN0_Pos 0UL +#define GPIO_PRT_IN_IN0_Msk 0x1UL +#define GPIO_PRT_IN_IN1_Pos 1UL +#define GPIO_PRT_IN_IN1_Msk 0x2UL +#define GPIO_PRT_IN_IN2_Pos 2UL +#define GPIO_PRT_IN_IN2_Msk 0x4UL +#define GPIO_PRT_IN_IN3_Pos 3UL +#define GPIO_PRT_IN_IN3_Msk 0x8UL +#define GPIO_PRT_IN_IN4_Pos 4UL +#define GPIO_PRT_IN_IN4_Msk 0x10UL +#define GPIO_PRT_IN_IN5_Pos 5UL +#define GPIO_PRT_IN_IN5_Msk 0x20UL +#define GPIO_PRT_IN_IN6_Pos 6UL +#define GPIO_PRT_IN_IN6_Msk 0x40UL +#define GPIO_PRT_IN_IN7_Pos 7UL +#define GPIO_PRT_IN_IN7_Msk 0x80UL +#define GPIO_PRT_IN_FLT_IN_Pos 8UL +#define GPIO_PRT_IN_FLT_IN_Msk 0x100UL +/* GPIO_PRT.INTR */ +#define GPIO_PRT_INTR_EDGE0_Pos 0UL +#define GPIO_PRT_INTR_EDGE0_Msk 0x1UL +#define GPIO_PRT_INTR_EDGE1_Pos 1UL +#define GPIO_PRT_INTR_EDGE1_Msk 0x2UL +#define GPIO_PRT_INTR_EDGE2_Pos 2UL +#define GPIO_PRT_INTR_EDGE2_Msk 0x4UL +#define GPIO_PRT_INTR_EDGE3_Pos 3UL +#define GPIO_PRT_INTR_EDGE3_Msk 0x8UL +#define GPIO_PRT_INTR_EDGE4_Pos 4UL +#define GPIO_PRT_INTR_EDGE4_Msk 0x10UL +#define GPIO_PRT_INTR_EDGE5_Pos 5UL +#define GPIO_PRT_INTR_EDGE5_Msk 0x20UL +#define GPIO_PRT_INTR_EDGE6_Pos 6UL +#define GPIO_PRT_INTR_EDGE6_Msk 0x40UL +#define GPIO_PRT_INTR_EDGE7_Pos 7UL +#define GPIO_PRT_INTR_EDGE7_Msk 0x80UL +#define GPIO_PRT_INTR_FLT_EDGE_Pos 8UL +#define GPIO_PRT_INTR_FLT_EDGE_Msk 0x100UL +#define GPIO_PRT_INTR_IN_IN0_Pos 16UL +#define GPIO_PRT_INTR_IN_IN0_Msk 0x10000UL +#define GPIO_PRT_INTR_IN_IN1_Pos 17UL +#define GPIO_PRT_INTR_IN_IN1_Msk 0x20000UL +#define GPIO_PRT_INTR_IN_IN2_Pos 18UL +#define GPIO_PRT_INTR_IN_IN2_Msk 0x40000UL +#define GPIO_PRT_INTR_IN_IN3_Pos 19UL +#define GPIO_PRT_INTR_IN_IN3_Msk 0x80000UL +#define GPIO_PRT_INTR_IN_IN4_Pos 20UL +#define GPIO_PRT_INTR_IN_IN4_Msk 0x100000UL +#define GPIO_PRT_INTR_IN_IN5_Pos 21UL +#define GPIO_PRT_INTR_IN_IN5_Msk 0x200000UL +#define GPIO_PRT_INTR_IN_IN6_Pos 22UL +#define GPIO_PRT_INTR_IN_IN6_Msk 0x400000UL +#define GPIO_PRT_INTR_IN_IN7_Pos 23UL +#define GPIO_PRT_INTR_IN_IN7_Msk 0x800000UL +#define GPIO_PRT_INTR_FLT_IN_IN_Pos 24UL +#define GPIO_PRT_INTR_FLT_IN_IN_Msk 0x1000000UL +/* GPIO_PRT.INTR_MASK */ +#define GPIO_PRT_INTR_MASK_EDGE0_Pos 0UL +#define GPIO_PRT_INTR_MASK_EDGE0_Msk 0x1UL +#define GPIO_PRT_INTR_MASK_EDGE1_Pos 1UL +#define GPIO_PRT_INTR_MASK_EDGE1_Msk 0x2UL +#define GPIO_PRT_INTR_MASK_EDGE2_Pos 2UL +#define GPIO_PRT_INTR_MASK_EDGE2_Msk 0x4UL +#define GPIO_PRT_INTR_MASK_EDGE3_Pos 3UL +#define GPIO_PRT_INTR_MASK_EDGE3_Msk 0x8UL +#define GPIO_PRT_INTR_MASK_EDGE4_Pos 4UL +#define GPIO_PRT_INTR_MASK_EDGE4_Msk 0x10UL +#define GPIO_PRT_INTR_MASK_EDGE5_Pos 5UL +#define GPIO_PRT_INTR_MASK_EDGE5_Msk 0x20UL +#define GPIO_PRT_INTR_MASK_EDGE6_Pos 6UL +#define GPIO_PRT_INTR_MASK_EDGE6_Msk 0x40UL +#define GPIO_PRT_INTR_MASK_EDGE7_Pos 7UL +#define GPIO_PRT_INTR_MASK_EDGE7_Msk 0x80UL +#define GPIO_PRT_INTR_MASK_FLT_EDGE_Pos 8UL +#define GPIO_PRT_INTR_MASK_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_MASKED */ +#define GPIO_PRT_INTR_MASKED_EDGE0_Pos 0UL +#define GPIO_PRT_INTR_MASKED_EDGE0_Msk 0x1UL +#define GPIO_PRT_INTR_MASKED_EDGE1_Pos 1UL +#define GPIO_PRT_INTR_MASKED_EDGE1_Msk 0x2UL +#define GPIO_PRT_INTR_MASKED_EDGE2_Pos 2UL +#define GPIO_PRT_INTR_MASKED_EDGE2_Msk 0x4UL +#define GPIO_PRT_INTR_MASKED_EDGE3_Pos 3UL +#define GPIO_PRT_INTR_MASKED_EDGE3_Msk 0x8UL +#define GPIO_PRT_INTR_MASKED_EDGE4_Pos 4UL +#define GPIO_PRT_INTR_MASKED_EDGE4_Msk 0x10UL +#define GPIO_PRT_INTR_MASKED_EDGE5_Pos 5UL +#define GPIO_PRT_INTR_MASKED_EDGE5_Msk 0x20UL +#define GPIO_PRT_INTR_MASKED_EDGE6_Pos 6UL +#define GPIO_PRT_INTR_MASKED_EDGE6_Msk 0x40UL +#define GPIO_PRT_INTR_MASKED_EDGE7_Pos 7UL +#define GPIO_PRT_INTR_MASKED_EDGE7_Msk 0x80UL +#define GPIO_PRT_INTR_MASKED_FLT_EDGE_Pos 8UL +#define GPIO_PRT_INTR_MASKED_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_SET */ +#define GPIO_PRT_INTR_SET_EDGE0_Pos 0UL +#define GPIO_PRT_INTR_SET_EDGE0_Msk 0x1UL +#define GPIO_PRT_INTR_SET_EDGE1_Pos 1UL +#define GPIO_PRT_INTR_SET_EDGE1_Msk 0x2UL +#define GPIO_PRT_INTR_SET_EDGE2_Pos 2UL +#define GPIO_PRT_INTR_SET_EDGE2_Msk 0x4UL +#define GPIO_PRT_INTR_SET_EDGE3_Pos 3UL +#define GPIO_PRT_INTR_SET_EDGE3_Msk 0x8UL +#define GPIO_PRT_INTR_SET_EDGE4_Pos 4UL +#define GPIO_PRT_INTR_SET_EDGE4_Msk 0x10UL +#define GPIO_PRT_INTR_SET_EDGE5_Pos 5UL +#define GPIO_PRT_INTR_SET_EDGE5_Msk 0x20UL +#define GPIO_PRT_INTR_SET_EDGE6_Pos 6UL +#define GPIO_PRT_INTR_SET_EDGE6_Msk 0x40UL +#define GPIO_PRT_INTR_SET_EDGE7_Pos 7UL +#define GPIO_PRT_INTR_SET_EDGE7_Msk 0x80UL +#define GPIO_PRT_INTR_SET_FLT_EDGE_Pos 8UL +#define GPIO_PRT_INTR_SET_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_CFG */ +#define GPIO_PRT_INTR_CFG_EDGE0_SEL_Pos 0UL +#define GPIO_PRT_INTR_CFG_EDGE0_SEL_Msk 0x3UL +#define GPIO_PRT_INTR_CFG_EDGE1_SEL_Pos 2UL +#define GPIO_PRT_INTR_CFG_EDGE1_SEL_Msk 0xCUL +#define GPIO_PRT_INTR_CFG_EDGE2_SEL_Pos 4UL +#define GPIO_PRT_INTR_CFG_EDGE2_SEL_Msk 0x30UL +#define GPIO_PRT_INTR_CFG_EDGE3_SEL_Pos 6UL +#define GPIO_PRT_INTR_CFG_EDGE3_SEL_Msk 0xC0UL +#define GPIO_PRT_INTR_CFG_EDGE4_SEL_Pos 8UL +#define GPIO_PRT_INTR_CFG_EDGE4_SEL_Msk 0x300UL +#define GPIO_PRT_INTR_CFG_EDGE5_SEL_Pos 10UL +#define GPIO_PRT_INTR_CFG_EDGE5_SEL_Msk 0xC00UL +#define GPIO_PRT_INTR_CFG_EDGE6_SEL_Pos 12UL +#define GPIO_PRT_INTR_CFG_EDGE6_SEL_Msk 0x3000UL +#define GPIO_PRT_INTR_CFG_EDGE7_SEL_Pos 14UL +#define GPIO_PRT_INTR_CFG_EDGE7_SEL_Msk 0xC000UL +#define GPIO_PRT_INTR_CFG_FLT_EDGE_SEL_Pos 16UL +#define GPIO_PRT_INTR_CFG_FLT_EDGE_SEL_Msk 0x30000UL +#define GPIO_PRT_INTR_CFG_FLT_SEL_Pos 18UL +#define GPIO_PRT_INTR_CFG_FLT_SEL_Msk 0x1C0000UL +/* GPIO_PRT.CFG */ +#define GPIO_PRT_CFG_DRIVE_MODE0_Pos 0UL +#define GPIO_PRT_CFG_DRIVE_MODE0_Msk 0x7UL +#define GPIO_PRT_CFG_IN_EN0_Pos 3UL +#define GPIO_PRT_CFG_IN_EN0_Msk 0x8UL +#define GPIO_PRT_CFG_DRIVE_MODE1_Pos 4UL +#define GPIO_PRT_CFG_DRIVE_MODE1_Msk 0x70UL +#define GPIO_PRT_CFG_IN_EN1_Pos 7UL +#define GPIO_PRT_CFG_IN_EN1_Msk 0x80UL +#define GPIO_PRT_CFG_DRIVE_MODE2_Pos 8UL +#define GPIO_PRT_CFG_DRIVE_MODE2_Msk 0x700UL +#define GPIO_PRT_CFG_IN_EN2_Pos 11UL +#define GPIO_PRT_CFG_IN_EN2_Msk 0x800UL +#define GPIO_PRT_CFG_DRIVE_MODE3_Pos 12UL +#define GPIO_PRT_CFG_DRIVE_MODE3_Msk 0x7000UL +#define GPIO_PRT_CFG_IN_EN3_Pos 15UL +#define GPIO_PRT_CFG_IN_EN3_Msk 0x8000UL +#define GPIO_PRT_CFG_DRIVE_MODE4_Pos 16UL +#define GPIO_PRT_CFG_DRIVE_MODE4_Msk 0x70000UL +#define GPIO_PRT_CFG_IN_EN4_Pos 19UL +#define GPIO_PRT_CFG_IN_EN4_Msk 0x80000UL +#define GPIO_PRT_CFG_DRIVE_MODE5_Pos 20UL +#define GPIO_PRT_CFG_DRIVE_MODE5_Msk 0x700000UL +#define GPIO_PRT_CFG_IN_EN5_Pos 23UL +#define GPIO_PRT_CFG_IN_EN5_Msk 0x800000UL +#define GPIO_PRT_CFG_DRIVE_MODE6_Pos 24UL +#define GPIO_PRT_CFG_DRIVE_MODE6_Msk 0x7000000UL +#define GPIO_PRT_CFG_IN_EN6_Pos 27UL +#define GPIO_PRT_CFG_IN_EN6_Msk 0x8000000UL +#define GPIO_PRT_CFG_DRIVE_MODE7_Pos 28UL +#define GPIO_PRT_CFG_DRIVE_MODE7_Msk 0x70000000UL +#define GPIO_PRT_CFG_IN_EN7_Pos 31UL +#define GPIO_PRT_CFG_IN_EN7_Msk 0x80000000UL +/* GPIO_PRT.CFG_IN */ +#define GPIO_PRT_CFG_IN_VTRIP_SEL0_0_Pos 0UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL0_0_Msk 0x1UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL1_0_Pos 1UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL1_0_Msk 0x2UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL2_0_Pos 2UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL2_0_Msk 0x4UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL3_0_Pos 3UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL3_0_Msk 0x8UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL4_0_Pos 4UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL4_0_Msk 0x10UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL5_0_Pos 5UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL5_0_Msk 0x20UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL6_0_Pos 6UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL6_0_Msk 0x40UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL7_0_Pos 7UL +#define GPIO_PRT_CFG_IN_VTRIP_SEL7_0_Msk 0x80UL +/* GPIO_PRT.CFG_OUT */ +#define GPIO_PRT_CFG_OUT_SLOW0_Pos 0UL +#define GPIO_PRT_CFG_OUT_SLOW0_Msk 0x1UL +#define GPIO_PRT_CFG_OUT_SLOW1_Pos 1UL +#define GPIO_PRT_CFG_OUT_SLOW1_Msk 0x2UL +#define GPIO_PRT_CFG_OUT_SLOW2_Pos 2UL +#define GPIO_PRT_CFG_OUT_SLOW2_Msk 0x4UL +#define GPIO_PRT_CFG_OUT_SLOW3_Pos 3UL +#define GPIO_PRT_CFG_OUT_SLOW3_Msk 0x8UL +#define GPIO_PRT_CFG_OUT_SLOW4_Pos 4UL +#define GPIO_PRT_CFG_OUT_SLOW4_Msk 0x10UL +#define GPIO_PRT_CFG_OUT_SLOW5_Pos 5UL +#define GPIO_PRT_CFG_OUT_SLOW5_Msk 0x20UL +#define GPIO_PRT_CFG_OUT_SLOW6_Pos 6UL +#define GPIO_PRT_CFG_OUT_SLOW6_Msk 0x40UL +#define GPIO_PRT_CFG_OUT_SLOW7_Pos 7UL +#define GPIO_PRT_CFG_OUT_SLOW7_Msk 0x80UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL0_Pos 16UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL0_Msk 0x30000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL1_Pos 18UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL1_Msk 0xC0000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL2_Pos 20UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL2_Msk 0x300000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL3_Pos 22UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL3_Msk 0xC00000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL4_Pos 24UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL4_Msk 0x3000000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL5_Pos 26UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL5_Msk 0xC000000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL6_Pos 28UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL6_Msk 0x30000000UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL7_Pos 30UL +#define GPIO_PRT_CFG_OUT_DRIVE_SEL7_Msk 0xC0000000UL +/* GPIO_PRT.CFG_SIO */ +#define GPIO_PRT_CFG_SIO_VREG_EN01_Pos 0UL +#define GPIO_PRT_CFG_SIO_VREG_EN01_Msk 0x1UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL01_Pos 1UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL01_Msk 0x2UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL01_Pos 2UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL01_Msk 0x4UL +#define GPIO_PRT_CFG_SIO_VREF_SEL01_Pos 3UL +#define GPIO_PRT_CFG_SIO_VREF_SEL01_Msk 0x18UL +#define GPIO_PRT_CFG_SIO_VOH_SEL01_Pos 5UL +#define GPIO_PRT_CFG_SIO_VOH_SEL01_Msk 0xE0UL +#define GPIO_PRT_CFG_SIO_VREG_EN23_Pos 8UL +#define GPIO_PRT_CFG_SIO_VREG_EN23_Msk 0x100UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL23_Pos 9UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL23_Msk 0x200UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL23_Pos 10UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL23_Msk 0x400UL +#define GPIO_PRT_CFG_SIO_VREF_SEL23_Pos 11UL +#define GPIO_PRT_CFG_SIO_VREF_SEL23_Msk 0x1800UL +#define GPIO_PRT_CFG_SIO_VOH_SEL23_Pos 13UL +#define GPIO_PRT_CFG_SIO_VOH_SEL23_Msk 0xE000UL +#define GPIO_PRT_CFG_SIO_VREG_EN45_Pos 16UL +#define GPIO_PRT_CFG_SIO_VREG_EN45_Msk 0x10000UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL45_Pos 17UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL45_Msk 0x20000UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL45_Pos 18UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL45_Msk 0x40000UL +#define GPIO_PRT_CFG_SIO_VREF_SEL45_Pos 19UL +#define GPIO_PRT_CFG_SIO_VREF_SEL45_Msk 0x180000UL +#define GPIO_PRT_CFG_SIO_VOH_SEL45_Pos 21UL +#define GPIO_PRT_CFG_SIO_VOH_SEL45_Msk 0xE00000UL +#define GPIO_PRT_CFG_SIO_VREG_EN67_Pos 24UL +#define GPIO_PRT_CFG_SIO_VREG_EN67_Msk 0x1000000UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL67_Pos 25UL +#define GPIO_PRT_CFG_SIO_IBUF_SEL67_Msk 0x2000000UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL67_Pos 26UL +#define GPIO_PRT_CFG_SIO_VTRIP_SEL67_Msk 0x4000000UL +#define GPIO_PRT_CFG_SIO_VREF_SEL67_Pos 27UL +#define GPIO_PRT_CFG_SIO_VREF_SEL67_Msk 0x18000000UL +#define GPIO_PRT_CFG_SIO_VOH_SEL67_Pos 29UL +#define GPIO_PRT_CFG_SIO_VOH_SEL67_Msk 0xE0000000UL +/* GPIO_PRT.CFG_IN_GPIO5V */ +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL0_1_Pos 0UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL0_1_Msk 0x1UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL1_1_Pos 1UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL1_1_Msk 0x2UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL2_1_Pos 2UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL2_1_Msk 0x4UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL3_1_Pos 3UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL3_1_Msk 0x8UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL4_1_Pos 4UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL4_1_Msk 0x10UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL5_1_Pos 5UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL5_1_Msk 0x20UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL6_1_Pos 6UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL6_1_Msk 0x40UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL7_1_Pos 7UL +#define GPIO_PRT_CFG_IN_GPIO5V_VTRIP_SEL7_1_Msk 0x80UL + + +/* GPIO.INTR_CAUSE0 */ +#define GPIO_INTR_CAUSE0_PORT_INT_Pos 0UL +#define GPIO_INTR_CAUSE0_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE1 */ +#define GPIO_INTR_CAUSE1_PORT_INT_Pos 0UL +#define GPIO_INTR_CAUSE1_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE2 */ +#define GPIO_INTR_CAUSE2_PORT_INT_Pos 0UL +#define GPIO_INTR_CAUSE2_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE3 */ +#define GPIO_INTR_CAUSE3_PORT_INT_Pos 0UL +#define GPIO_INTR_CAUSE3_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.VDD_ACTIVE */ +#define GPIO_VDD_ACTIVE_VDDIO_ACTIVE_Pos 0UL +#define GPIO_VDD_ACTIVE_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_VDD_ACTIVE_VDDA_ACTIVE_Pos 30UL +#define GPIO_VDD_ACTIVE_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_VDD_ACTIVE_VDDD_ACTIVE_Pos 31UL +#define GPIO_VDD_ACTIVE_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR */ +#define GPIO_VDD_INTR_VDDIO_ACTIVE_Pos 0UL +#define GPIO_VDD_INTR_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_VDD_INTR_VDDA_ACTIVE_Pos 30UL +#define GPIO_VDD_INTR_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_VDD_INTR_VDDD_ACTIVE_Pos 31UL +#define GPIO_VDD_INTR_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_MASK */ +#define GPIO_VDD_INTR_MASK_VDDIO_ACTIVE_Pos 0UL +#define GPIO_VDD_INTR_MASK_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_VDD_INTR_MASK_VDDA_ACTIVE_Pos 30UL +#define GPIO_VDD_INTR_MASK_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_VDD_INTR_MASK_VDDD_ACTIVE_Pos 31UL +#define GPIO_VDD_INTR_MASK_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_MASKED */ +#define GPIO_VDD_INTR_MASKED_VDDIO_ACTIVE_Pos 0UL +#define GPIO_VDD_INTR_MASKED_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_VDD_INTR_MASKED_VDDA_ACTIVE_Pos 30UL +#define GPIO_VDD_INTR_MASKED_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_VDD_INTR_MASKED_VDDD_ACTIVE_Pos 31UL +#define GPIO_VDD_INTR_MASKED_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_SET */ +#define GPIO_VDD_INTR_SET_VDDIO_ACTIVE_Pos 0UL +#define GPIO_VDD_INTR_SET_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_VDD_INTR_SET_VDDA_ACTIVE_Pos 30UL +#define GPIO_VDD_INTR_SET_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_VDD_INTR_SET_VDDD_ACTIVE_Pos 31UL +#define GPIO_VDD_INTR_SET_VDDD_ACTIVE_Msk 0x80000000UL + + +#endif /* _CYIP_GPIO_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio_v2.h new file mode 100644 index 00000000000..79b52438f6c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_gpio_v2.h @@ -0,0 +1,478 @@ +/***************************************************************************//** +* \file cyip_gpio_v2.h +* +* \brief +* GPIO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_GPIO_V2_H_ +#define _CYIP_GPIO_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* GPIO +*******************************************************************************/ + +#define GPIO_PRT_V2_SECTION_SIZE 0x00000080UL +#define GPIO_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief GPIO port registers (GPIO_PRT) + */ +typedef struct { + __IOM uint32_t OUT; /*!< 0x00000000 Port output data register */ + __IOM uint32_t OUT_CLR; /*!< 0x00000004 Port output data clear register */ + __IOM uint32_t OUT_SET; /*!< 0x00000008 Port output data set register */ + __IOM uint32_t OUT_INV; /*!< 0x0000000C Port output data invert register */ + __IM uint32_t IN; /*!< 0x00000010 Port input state register */ + __IOM uint32_t INTR; /*!< 0x00000014 Port interrupt status register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 Port interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C Port interrupt masked status register */ + __IOM uint32_t INTR_SET; /*!< 0x00000020 Port interrupt set register */ + __IM uint32_t RESERVED[7]; + __IOM uint32_t INTR_CFG; /*!< 0x00000040 Port interrupt configuration register */ + __IOM uint32_t CFG; /*!< 0x00000044 Port configuration register */ + __IOM uint32_t CFG_IN; /*!< 0x00000048 Port input buffer configuration register */ + __IOM uint32_t CFG_OUT; /*!< 0x0000004C Port output buffer configuration register */ + __IOM uint32_t CFG_SIO; /*!< 0x00000050 Port SIO configuration register */ + __IM uint32_t RESERVED1; + __IOM uint32_t CFG_IN_AUTOLVL; /*!< 0x00000058 Port input buffer AUTOLVL configuration register for S40E GPIO */ + __IM uint32_t RESERVED2[9]; +} GPIO_PRT_V2_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief GPIO port control/configuration (GPIO) + */ +typedef struct { + GPIO_PRT_V2_Type PRT[128]; /*!< 0x00000000 GPIO port registers */ + __IM uint32_t INTR_CAUSE0; /*!< 0x00004000 Interrupt port cause register 0 */ + __IM uint32_t INTR_CAUSE1; /*!< 0x00004004 Interrupt port cause register 1 */ + __IM uint32_t INTR_CAUSE2; /*!< 0x00004008 Interrupt port cause register 2 */ + __IM uint32_t INTR_CAUSE3; /*!< 0x0000400C Interrupt port cause register 3 */ + __IM uint32_t VDD_ACTIVE; /*!< 0x00004010 Extern power supply detection register */ + __IOM uint32_t VDD_INTR; /*!< 0x00004014 Supply detection interrupt register */ + __IOM uint32_t VDD_INTR_MASK; /*!< 0x00004018 Supply detection interrupt mask register */ + __IM uint32_t VDD_INTR_MASKED; /*!< 0x0000401C Supply detection interrupt masked register */ + __IOM uint32_t VDD_INTR_SET; /*!< 0x00004020 Supply detection interrupt set register */ +} GPIO_V2_Type; /*!< Size = 16420 (0x4024) */ + + +/* GPIO_PRT.OUT */ +#define GPIO_PRT_V2_OUT_OUT0_Pos 0UL +#define GPIO_PRT_V2_OUT_OUT0_Msk 0x1UL +#define GPIO_PRT_V2_OUT_OUT1_Pos 1UL +#define GPIO_PRT_V2_OUT_OUT1_Msk 0x2UL +#define GPIO_PRT_V2_OUT_OUT2_Pos 2UL +#define GPIO_PRT_V2_OUT_OUT2_Msk 0x4UL +#define GPIO_PRT_V2_OUT_OUT3_Pos 3UL +#define GPIO_PRT_V2_OUT_OUT3_Msk 0x8UL +#define GPIO_PRT_V2_OUT_OUT4_Pos 4UL +#define GPIO_PRT_V2_OUT_OUT4_Msk 0x10UL +#define GPIO_PRT_V2_OUT_OUT5_Pos 5UL +#define GPIO_PRT_V2_OUT_OUT5_Msk 0x20UL +#define GPIO_PRT_V2_OUT_OUT6_Pos 6UL +#define GPIO_PRT_V2_OUT_OUT6_Msk 0x40UL +#define GPIO_PRT_V2_OUT_OUT7_Pos 7UL +#define GPIO_PRT_V2_OUT_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_CLR */ +#define GPIO_PRT_V2_OUT_CLR_OUT0_Pos 0UL +#define GPIO_PRT_V2_OUT_CLR_OUT0_Msk 0x1UL +#define GPIO_PRT_V2_OUT_CLR_OUT1_Pos 1UL +#define GPIO_PRT_V2_OUT_CLR_OUT1_Msk 0x2UL +#define GPIO_PRT_V2_OUT_CLR_OUT2_Pos 2UL +#define GPIO_PRT_V2_OUT_CLR_OUT2_Msk 0x4UL +#define GPIO_PRT_V2_OUT_CLR_OUT3_Pos 3UL +#define GPIO_PRT_V2_OUT_CLR_OUT3_Msk 0x8UL +#define GPIO_PRT_V2_OUT_CLR_OUT4_Pos 4UL +#define GPIO_PRT_V2_OUT_CLR_OUT4_Msk 0x10UL +#define GPIO_PRT_V2_OUT_CLR_OUT5_Pos 5UL +#define GPIO_PRT_V2_OUT_CLR_OUT5_Msk 0x20UL +#define GPIO_PRT_V2_OUT_CLR_OUT6_Pos 6UL +#define GPIO_PRT_V2_OUT_CLR_OUT6_Msk 0x40UL +#define GPIO_PRT_V2_OUT_CLR_OUT7_Pos 7UL +#define GPIO_PRT_V2_OUT_CLR_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_SET */ +#define GPIO_PRT_V2_OUT_SET_OUT0_Pos 0UL +#define GPIO_PRT_V2_OUT_SET_OUT0_Msk 0x1UL +#define GPIO_PRT_V2_OUT_SET_OUT1_Pos 1UL +#define GPIO_PRT_V2_OUT_SET_OUT1_Msk 0x2UL +#define GPIO_PRT_V2_OUT_SET_OUT2_Pos 2UL +#define GPIO_PRT_V2_OUT_SET_OUT2_Msk 0x4UL +#define GPIO_PRT_V2_OUT_SET_OUT3_Pos 3UL +#define GPIO_PRT_V2_OUT_SET_OUT3_Msk 0x8UL +#define GPIO_PRT_V2_OUT_SET_OUT4_Pos 4UL +#define GPIO_PRT_V2_OUT_SET_OUT4_Msk 0x10UL +#define GPIO_PRT_V2_OUT_SET_OUT5_Pos 5UL +#define GPIO_PRT_V2_OUT_SET_OUT5_Msk 0x20UL +#define GPIO_PRT_V2_OUT_SET_OUT6_Pos 6UL +#define GPIO_PRT_V2_OUT_SET_OUT6_Msk 0x40UL +#define GPIO_PRT_V2_OUT_SET_OUT7_Pos 7UL +#define GPIO_PRT_V2_OUT_SET_OUT7_Msk 0x80UL +/* GPIO_PRT.OUT_INV */ +#define GPIO_PRT_V2_OUT_INV_OUT0_Pos 0UL +#define GPIO_PRT_V2_OUT_INV_OUT0_Msk 0x1UL +#define GPIO_PRT_V2_OUT_INV_OUT1_Pos 1UL +#define GPIO_PRT_V2_OUT_INV_OUT1_Msk 0x2UL +#define GPIO_PRT_V2_OUT_INV_OUT2_Pos 2UL +#define GPIO_PRT_V2_OUT_INV_OUT2_Msk 0x4UL +#define GPIO_PRT_V2_OUT_INV_OUT3_Pos 3UL +#define GPIO_PRT_V2_OUT_INV_OUT3_Msk 0x8UL +#define GPIO_PRT_V2_OUT_INV_OUT4_Pos 4UL +#define GPIO_PRT_V2_OUT_INV_OUT4_Msk 0x10UL +#define GPIO_PRT_V2_OUT_INV_OUT5_Pos 5UL +#define GPIO_PRT_V2_OUT_INV_OUT5_Msk 0x20UL +#define GPIO_PRT_V2_OUT_INV_OUT6_Pos 6UL +#define GPIO_PRT_V2_OUT_INV_OUT6_Msk 0x40UL +#define GPIO_PRT_V2_OUT_INV_OUT7_Pos 7UL +#define GPIO_PRT_V2_OUT_INV_OUT7_Msk 0x80UL +/* GPIO_PRT.IN */ +#define GPIO_PRT_V2_IN_IN0_Pos 0UL +#define GPIO_PRT_V2_IN_IN0_Msk 0x1UL +#define GPIO_PRT_V2_IN_IN1_Pos 1UL +#define GPIO_PRT_V2_IN_IN1_Msk 0x2UL +#define GPIO_PRT_V2_IN_IN2_Pos 2UL +#define GPIO_PRT_V2_IN_IN2_Msk 0x4UL +#define GPIO_PRT_V2_IN_IN3_Pos 3UL +#define GPIO_PRT_V2_IN_IN3_Msk 0x8UL +#define GPIO_PRT_V2_IN_IN4_Pos 4UL +#define GPIO_PRT_V2_IN_IN4_Msk 0x10UL +#define GPIO_PRT_V2_IN_IN5_Pos 5UL +#define GPIO_PRT_V2_IN_IN5_Msk 0x20UL +#define GPIO_PRT_V2_IN_IN6_Pos 6UL +#define GPIO_PRT_V2_IN_IN6_Msk 0x40UL +#define GPIO_PRT_V2_IN_IN7_Pos 7UL +#define GPIO_PRT_V2_IN_IN7_Msk 0x80UL +#define GPIO_PRT_V2_IN_FLT_IN_Pos 8UL +#define GPIO_PRT_V2_IN_FLT_IN_Msk 0x100UL +/* GPIO_PRT.INTR */ +#define GPIO_PRT_V2_INTR_EDGE0_Pos 0UL +#define GPIO_PRT_V2_INTR_EDGE0_Msk 0x1UL +#define GPIO_PRT_V2_INTR_EDGE1_Pos 1UL +#define GPIO_PRT_V2_INTR_EDGE1_Msk 0x2UL +#define GPIO_PRT_V2_INTR_EDGE2_Pos 2UL +#define GPIO_PRT_V2_INTR_EDGE2_Msk 0x4UL +#define GPIO_PRT_V2_INTR_EDGE3_Pos 3UL +#define GPIO_PRT_V2_INTR_EDGE3_Msk 0x8UL +#define GPIO_PRT_V2_INTR_EDGE4_Pos 4UL +#define GPIO_PRT_V2_INTR_EDGE4_Msk 0x10UL +#define GPIO_PRT_V2_INTR_EDGE5_Pos 5UL +#define GPIO_PRT_V2_INTR_EDGE5_Msk 0x20UL +#define GPIO_PRT_V2_INTR_EDGE6_Pos 6UL +#define GPIO_PRT_V2_INTR_EDGE6_Msk 0x40UL +#define GPIO_PRT_V2_INTR_EDGE7_Pos 7UL +#define GPIO_PRT_V2_INTR_EDGE7_Msk 0x80UL +#define GPIO_PRT_V2_INTR_FLT_EDGE_Pos 8UL +#define GPIO_PRT_V2_INTR_FLT_EDGE_Msk 0x100UL +#define GPIO_PRT_V2_INTR_IN_IN0_Pos 16UL +#define GPIO_PRT_V2_INTR_IN_IN0_Msk 0x10000UL +#define GPIO_PRT_V2_INTR_IN_IN1_Pos 17UL +#define GPIO_PRT_V2_INTR_IN_IN1_Msk 0x20000UL +#define GPIO_PRT_V2_INTR_IN_IN2_Pos 18UL +#define GPIO_PRT_V2_INTR_IN_IN2_Msk 0x40000UL +#define GPIO_PRT_V2_INTR_IN_IN3_Pos 19UL +#define GPIO_PRT_V2_INTR_IN_IN3_Msk 0x80000UL +#define GPIO_PRT_V2_INTR_IN_IN4_Pos 20UL +#define GPIO_PRT_V2_INTR_IN_IN4_Msk 0x100000UL +#define GPIO_PRT_V2_INTR_IN_IN5_Pos 21UL +#define GPIO_PRT_V2_INTR_IN_IN5_Msk 0x200000UL +#define GPIO_PRT_V2_INTR_IN_IN6_Pos 22UL +#define GPIO_PRT_V2_INTR_IN_IN6_Msk 0x400000UL +#define GPIO_PRT_V2_INTR_IN_IN7_Pos 23UL +#define GPIO_PRT_V2_INTR_IN_IN7_Msk 0x800000UL +#define GPIO_PRT_V2_INTR_FLT_IN_IN_Pos 24UL +#define GPIO_PRT_V2_INTR_FLT_IN_IN_Msk 0x1000000UL +/* GPIO_PRT.INTR_MASK */ +#define GPIO_PRT_V2_INTR_MASK_EDGE0_Pos 0UL +#define GPIO_PRT_V2_INTR_MASK_EDGE0_Msk 0x1UL +#define GPIO_PRT_V2_INTR_MASK_EDGE1_Pos 1UL +#define GPIO_PRT_V2_INTR_MASK_EDGE1_Msk 0x2UL +#define GPIO_PRT_V2_INTR_MASK_EDGE2_Pos 2UL +#define GPIO_PRT_V2_INTR_MASK_EDGE2_Msk 0x4UL +#define GPIO_PRT_V2_INTR_MASK_EDGE3_Pos 3UL +#define GPIO_PRT_V2_INTR_MASK_EDGE3_Msk 0x8UL +#define GPIO_PRT_V2_INTR_MASK_EDGE4_Pos 4UL +#define GPIO_PRT_V2_INTR_MASK_EDGE4_Msk 0x10UL +#define GPIO_PRT_V2_INTR_MASK_EDGE5_Pos 5UL +#define GPIO_PRT_V2_INTR_MASK_EDGE5_Msk 0x20UL +#define GPIO_PRT_V2_INTR_MASK_EDGE6_Pos 6UL +#define GPIO_PRT_V2_INTR_MASK_EDGE6_Msk 0x40UL +#define GPIO_PRT_V2_INTR_MASK_EDGE7_Pos 7UL +#define GPIO_PRT_V2_INTR_MASK_EDGE7_Msk 0x80UL +#define GPIO_PRT_V2_INTR_MASK_FLT_EDGE_Pos 8UL +#define GPIO_PRT_V2_INTR_MASK_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_MASKED */ +#define GPIO_PRT_V2_INTR_MASKED_EDGE0_Pos 0UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE0_Msk 0x1UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE1_Pos 1UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE1_Msk 0x2UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE2_Pos 2UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE2_Msk 0x4UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE3_Pos 3UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE3_Msk 0x8UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE4_Pos 4UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE4_Msk 0x10UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE5_Pos 5UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE5_Msk 0x20UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE6_Pos 6UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE6_Msk 0x40UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE7_Pos 7UL +#define GPIO_PRT_V2_INTR_MASKED_EDGE7_Msk 0x80UL +#define GPIO_PRT_V2_INTR_MASKED_FLT_EDGE_Pos 8UL +#define GPIO_PRT_V2_INTR_MASKED_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_SET */ +#define GPIO_PRT_V2_INTR_SET_EDGE0_Pos 0UL +#define GPIO_PRT_V2_INTR_SET_EDGE0_Msk 0x1UL +#define GPIO_PRT_V2_INTR_SET_EDGE1_Pos 1UL +#define GPIO_PRT_V2_INTR_SET_EDGE1_Msk 0x2UL +#define GPIO_PRT_V2_INTR_SET_EDGE2_Pos 2UL +#define GPIO_PRT_V2_INTR_SET_EDGE2_Msk 0x4UL +#define GPIO_PRT_V2_INTR_SET_EDGE3_Pos 3UL +#define GPIO_PRT_V2_INTR_SET_EDGE3_Msk 0x8UL +#define GPIO_PRT_V2_INTR_SET_EDGE4_Pos 4UL +#define GPIO_PRT_V2_INTR_SET_EDGE4_Msk 0x10UL +#define GPIO_PRT_V2_INTR_SET_EDGE5_Pos 5UL +#define GPIO_PRT_V2_INTR_SET_EDGE5_Msk 0x20UL +#define GPIO_PRT_V2_INTR_SET_EDGE6_Pos 6UL +#define GPIO_PRT_V2_INTR_SET_EDGE6_Msk 0x40UL +#define GPIO_PRT_V2_INTR_SET_EDGE7_Pos 7UL +#define GPIO_PRT_V2_INTR_SET_EDGE7_Msk 0x80UL +#define GPIO_PRT_V2_INTR_SET_FLT_EDGE_Pos 8UL +#define GPIO_PRT_V2_INTR_SET_FLT_EDGE_Msk 0x100UL +/* GPIO_PRT.INTR_CFG */ +#define GPIO_PRT_V2_INTR_CFG_EDGE0_SEL_Pos 0UL +#define GPIO_PRT_V2_INTR_CFG_EDGE0_SEL_Msk 0x3UL +#define GPIO_PRT_V2_INTR_CFG_EDGE1_SEL_Pos 2UL +#define GPIO_PRT_V2_INTR_CFG_EDGE1_SEL_Msk 0xCUL +#define GPIO_PRT_V2_INTR_CFG_EDGE2_SEL_Pos 4UL +#define GPIO_PRT_V2_INTR_CFG_EDGE2_SEL_Msk 0x30UL +#define GPIO_PRT_V2_INTR_CFG_EDGE3_SEL_Pos 6UL +#define GPIO_PRT_V2_INTR_CFG_EDGE3_SEL_Msk 0xC0UL +#define GPIO_PRT_V2_INTR_CFG_EDGE4_SEL_Pos 8UL +#define GPIO_PRT_V2_INTR_CFG_EDGE4_SEL_Msk 0x300UL +#define GPIO_PRT_V2_INTR_CFG_EDGE5_SEL_Pos 10UL +#define GPIO_PRT_V2_INTR_CFG_EDGE5_SEL_Msk 0xC00UL +#define GPIO_PRT_V2_INTR_CFG_EDGE6_SEL_Pos 12UL +#define GPIO_PRT_V2_INTR_CFG_EDGE6_SEL_Msk 0x3000UL +#define GPIO_PRT_V2_INTR_CFG_EDGE7_SEL_Pos 14UL +#define GPIO_PRT_V2_INTR_CFG_EDGE7_SEL_Msk 0xC000UL +#define GPIO_PRT_V2_INTR_CFG_FLT_EDGE_SEL_Pos 16UL +#define GPIO_PRT_V2_INTR_CFG_FLT_EDGE_SEL_Msk 0x30000UL +#define GPIO_PRT_V2_INTR_CFG_FLT_SEL_Pos 18UL +#define GPIO_PRT_V2_INTR_CFG_FLT_SEL_Msk 0x1C0000UL +/* GPIO_PRT.CFG */ +#define GPIO_PRT_V2_CFG_DRIVE_MODE0_Pos 0UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE0_Msk 0x7UL +#define GPIO_PRT_V2_CFG_IN_EN0_Pos 3UL +#define GPIO_PRT_V2_CFG_IN_EN0_Msk 0x8UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE1_Pos 4UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE1_Msk 0x70UL +#define GPIO_PRT_V2_CFG_IN_EN1_Pos 7UL +#define GPIO_PRT_V2_CFG_IN_EN1_Msk 0x80UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE2_Pos 8UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE2_Msk 0x700UL +#define GPIO_PRT_V2_CFG_IN_EN2_Pos 11UL +#define GPIO_PRT_V2_CFG_IN_EN2_Msk 0x800UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE3_Pos 12UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE3_Msk 0x7000UL +#define GPIO_PRT_V2_CFG_IN_EN3_Pos 15UL +#define GPIO_PRT_V2_CFG_IN_EN3_Msk 0x8000UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE4_Pos 16UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE4_Msk 0x70000UL +#define GPIO_PRT_V2_CFG_IN_EN4_Pos 19UL +#define GPIO_PRT_V2_CFG_IN_EN4_Msk 0x80000UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE5_Pos 20UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE5_Msk 0x700000UL +#define GPIO_PRT_V2_CFG_IN_EN5_Pos 23UL +#define GPIO_PRT_V2_CFG_IN_EN5_Msk 0x800000UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE6_Pos 24UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE6_Msk 0x7000000UL +#define GPIO_PRT_V2_CFG_IN_EN6_Pos 27UL +#define GPIO_PRT_V2_CFG_IN_EN6_Msk 0x8000000UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE7_Pos 28UL +#define GPIO_PRT_V2_CFG_DRIVE_MODE7_Msk 0x70000000UL +#define GPIO_PRT_V2_CFG_IN_EN7_Pos 31UL +#define GPIO_PRT_V2_CFG_IN_EN7_Msk 0x80000000UL +/* GPIO_PRT.CFG_IN */ +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL0_0_Pos 0UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL0_0_Msk 0x1UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL1_0_Pos 1UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL1_0_Msk 0x2UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL2_0_Pos 2UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL2_0_Msk 0x4UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL3_0_Pos 3UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL3_0_Msk 0x8UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL4_0_Pos 4UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL4_0_Msk 0x10UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL5_0_Pos 5UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL5_0_Msk 0x20UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL6_0_Pos 6UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL6_0_Msk 0x40UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL7_0_Pos 7UL +#define GPIO_PRT_V2_CFG_IN_VTRIP_SEL7_0_Msk 0x80UL +/* GPIO_PRT.CFG_OUT */ +#define GPIO_PRT_V2_CFG_OUT_SLOW0_Pos 0UL +#define GPIO_PRT_V2_CFG_OUT_SLOW0_Msk 0x1UL +#define GPIO_PRT_V2_CFG_OUT_SLOW1_Pos 1UL +#define GPIO_PRT_V2_CFG_OUT_SLOW1_Msk 0x2UL +#define GPIO_PRT_V2_CFG_OUT_SLOW2_Pos 2UL +#define GPIO_PRT_V2_CFG_OUT_SLOW2_Msk 0x4UL +#define GPIO_PRT_V2_CFG_OUT_SLOW3_Pos 3UL +#define GPIO_PRT_V2_CFG_OUT_SLOW3_Msk 0x8UL +#define GPIO_PRT_V2_CFG_OUT_SLOW4_Pos 4UL +#define GPIO_PRT_V2_CFG_OUT_SLOW4_Msk 0x10UL +#define GPIO_PRT_V2_CFG_OUT_SLOW5_Pos 5UL +#define GPIO_PRT_V2_CFG_OUT_SLOW5_Msk 0x20UL +#define GPIO_PRT_V2_CFG_OUT_SLOW6_Pos 6UL +#define GPIO_PRT_V2_CFG_OUT_SLOW6_Msk 0x40UL +#define GPIO_PRT_V2_CFG_OUT_SLOW7_Pos 7UL +#define GPIO_PRT_V2_CFG_OUT_SLOW7_Msk 0x80UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL0_Pos 16UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL0_Msk 0x30000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL1_Pos 18UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL1_Msk 0xC0000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL2_Pos 20UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL2_Msk 0x300000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL3_Pos 22UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL3_Msk 0xC00000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL4_Pos 24UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL4_Msk 0x3000000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL5_Pos 26UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL5_Msk 0xC000000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL6_Pos 28UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL6_Msk 0x30000000UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL7_Pos 30UL +#define GPIO_PRT_V2_CFG_OUT_DRIVE_SEL7_Msk 0xC0000000UL +/* GPIO_PRT.CFG_SIO */ +#define GPIO_PRT_V2_CFG_SIO_VREG_EN01_Pos 0UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN01_Msk 0x1UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL01_Pos 1UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL01_Msk 0x2UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL01_Pos 2UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL01_Msk 0x4UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL01_Pos 3UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL01_Msk 0x18UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL01_Pos 5UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL01_Msk 0xE0UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN23_Pos 8UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN23_Msk 0x100UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL23_Pos 9UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL23_Msk 0x200UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL23_Pos 10UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL23_Msk 0x400UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL23_Pos 11UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL23_Msk 0x1800UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL23_Pos 13UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL23_Msk 0xE000UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN45_Pos 16UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN45_Msk 0x10000UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL45_Pos 17UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL45_Msk 0x20000UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL45_Pos 18UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL45_Msk 0x40000UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL45_Pos 19UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL45_Msk 0x180000UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL45_Pos 21UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL45_Msk 0xE00000UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN67_Pos 24UL +#define GPIO_PRT_V2_CFG_SIO_VREG_EN67_Msk 0x1000000UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL67_Pos 25UL +#define GPIO_PRT_V2_CFG_SIO_IBUF_SEL67_Msk 0x2000000UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL67_Pos 26UL +#define GPIO_PRT_V2_CFG_SIO_VTRIP_SEL67_Msk 0x4000000UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL67_Pos 27UL +#define GPIO_PRT_V2_CFG_SIO_VREF_SEL67_Msk 0x18000000UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL67_Pos 29UL +#define GPIO_PRT_V2_CFG_SIO_VOH_SEL67_Msk 0xE0000000UL +/* GPIO_PRT.CFG_IN_AUTOLVL */ +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL0_1_Pos 0UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL0_1_Msk 0x1UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL1_1_Pos 1UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL1_1_Msk 0x2UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL2_1_Pos 2UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL2_1_Msk 0x4UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL3_1_Pos 3UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL3_1_Msk 0x8UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL4_1_Pos 4UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL4_1_Msk 0x10UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL5_1_Pos 5UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL5_1_Msk 0x20UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL6_1_Pos 6UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL6_1_Msk 0x40UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL7_1_Pos 7UL +#define GPIO_PRT_V2_CFG_IN_AUTOLVL_VTRIP_SEL7_1_Msk 0x80UL + + +/* GPIO.INTR_CAUSE0 */ +#define GPIO_V2_INTR_CAUSE0_PORT_INT_Pos 0UL +#define GPIO_V2_INTR_CAUSE0_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE1 */ +#define GPIO_V2_INTR_CAUSE1_PORT_INT_Pos 0UL +#define GPIO_V2_INTR_CAUSE1_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE2 */ +#define GPIO_V2_INTR_CAUSE2_PORT_INT_Pos 0UL +#define GPIO_V2_INTR_CAUSE2_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.INTR_CAUSE3 */ +#define GPIO_V2_INTR_CAUSE3_PORT_INT_Pos 0UL +#define GPIO_V2_INTR_CAUSE3_PORT_INT_Msk 0xFFFFFFFFUL +/* GPIO.VDD_ACTIVE */ +#define GPIO_V2_VDD_ACTIVE_VDDIO_ACTIVE_Pos 0UL +#define GPIO_V2_VDD_ACTIVE_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_V2_VDD_ACTIVE_VDDA_ACTIVE_Pos 30UL +#define GPIO_V2_VDD_ACTIVE_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_V2_VDD_ACTIVE_VDDD_ACTIVE_Pos 31UL +#define GPIO_V2_VDD_ACTIVE_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR */ +#define GPIO_V2_VDD_INTR_VDDIO_ACTIVE_Pos 0UL +#define GPIO_V2_VDD_INTR_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_V2_VDD_INTR_VDDA_ACTIVE_Pos 30UL +#define GPIO_V2_VDD_INTR_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_V2_VDD_INTR_VDDD_ACTIVE_Pos 31UL +#define GPIO_V2_VDD_INTR_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_MASK */ +#define GPIO_V2_VDD_INTR_MASK_VDDIO_ACTIVE_Pos 0UL +#define GPIO_V2_VDD_INTR_MASK_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_V2_VDD_INTR_MASK_VDDA_ACTIVE_Pos 30UL +#define GPIO_V2_VDD_INTR_MASK_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_V2_VDD_INTR_MASK_VDDD_ACTIVE_Pos 31UL +#define GPIO_V2_VDD_INTR_MASK_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_MASKED */ +#define GPIO_V2_VDD_INTR_MASKED_VDDIO_ACTIVE_Pos 0UL +#define GPIO_V2_VDD_INTR_MASKED_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_V2_VDD_INTR_MASKED_VDDA_ACTIVE_Pos 30UL +#define GPIO_V2_VDD_INTR_MASKED_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_V2_VDD_INTR_MASKED_VDDD_ACTIVE_Pos 31UL +#define GPIO_V2_VDD_INTR_MASKED_VDDD_ACTIVE_Msk 0x80000000UL +/* GPIO.VDD_INTR_SET */ +#define GPIO_V2_VDD_INTR_SET_VDDIO_ACTIVE_Pos 0UL +#define GPIO_V2_VDD_INTR_SET_VDDIO_ACTIVE_Msk 0xFFFFUL +#define GPIO_V2_VDD_INTR_SET_VDDA_ACTIVE_Pos 30UL +#define GPIO_V2_VDD_INTR_SET_VDDA_ACTIVE_Msk 0x40000000UL +#define GPIO_V2_VDD_INTR_SET_VDDD_ACTIVE_Pos 31UL +#define GPIO_V2_VDD_INTR_SET_VDDD_ACTIVE_Msk 0x80000000UL + + +#endif /* _CYIP_GPIO_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_headers.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_headers.h new file mode 100644 index 00000000000..788f18fd763 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_headers.h @@ -0,0 +1,44 @@ +/***************************************************************************//** +* \file cyip_headers.h +* +* \brief +* Common header file to be included by all IP definition headers +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_HEADERS_H_ +#define _CYIP_HEADERS_H_ + +#include + +/* These are CMSIS-CORE defines used for structure members definitions */ +#ifndef __IM +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#endif +#ifndef __OM +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#endif +#ifndef __IOM +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ +#endif + +#endif /* _CYIP_HEADERS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom.h new file mode 100644 index 00000000000..8f6cbcc99ac --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom.h @@ -0,0 +1,97 @@ +/***************************************************************************//** +* \file cyip_hsiom.h +* +* \brief +* HSIOM IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_HSIOM_H_ +#define _CYIP_HSIOM_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_PRT_SECTION_SIZE 0x00000010UL +#define HSIOM_SECTION_SIZE 0x00004000UL + +/** + * \brief HSIOM port registers (HSIOM_PRT) + */ +typedef struct { + __IOM uint32_t PORT_SEL0; /*!< 0x00000000 Port selection 0 */ + __IOM uint32_t PORT_SEL1; /*!< 0x00000004 Port selection 1 */ + __IM uint32_t RESERVED[2]; +} HSIOM_PRT_V1_Type; /*!< Size = 16 (0x10) */ + +/** + * \brief High Speed IO Matrix (HSIOM) (HSIOM) + */ +typedef struct { + HSIOM_PRT_V1_Type PRT[128]; /*!< 0x00000000 HSIOM port registers */ + __IM uint32_t RESERVED[1536]; + __IOM uint32_t AMUX_SPLIT_CTL[64]; /*!< 0x00002000 AMUX splitter cell control */ +} HSIOM_V1_Type; /*!< Size = 8448 (0x2100) */ + + +/* HSIOM_PRT.PORT_SEL0 */ +#define HSIOM_PRT_PORT_SEL0_IO0_SEL_Pos 0UL +#define HSIOM_PRT_PORT_SEL0_IO0_SEL_Msk 0x1FUL +#define HSIOM_PRT_PORT_SEL0_IO1_SEL_Pos 8UL +#define HSIOM_PRT_PORT_SEL0_IO1_SEL_Msk 0x1F00UL +#define HSIOM_PRT_PORT_SEL0_IO2_SEL_Pos 16UL +#define HSIOM_PRT_PORT_SEL0_IO2_SEL_Msk 0x1F0000UL +#define HSIOM_PRT_PORT_SEL0_IO3_SEL_Pos 24UL +#define HSIOM_PRT_PORT_SEL0_IO3_SEL_Msk 0x1F000000UL +/* HSIOM_PRT.PORT_SEL1 */ +#define HSIOM_PRT_PORT_SEL1_IO4_SEL_Pos 0UL +#define HSIOM_PRT_PORT_SEL1_IO4_SEL_Msk 0x1FUL +#define HSIOM_PRT_PORT_SEL1_IO5_SEL_Pos 8UL +#define HSIOM_PRT_PORT_SEL1_IO5_SEL_Msk 0x1F00UL +#define HSIOM_PRT_PORT_SEL1_IO6_SEL_Pos 16UL +#define HSIOM_PRT_PORT_SEL1_IO6_SEL_Msk 0x1F0000UL +#define HSIOM_PRT_PORT_SEL1_IO7_SEL_Pos 24UL +#define HSIOM_PRT_PORT_SEL1_IO7_SEL_Msk 0x1F000000UL + + +/* HSIOM.AMUX_SPLIT_CTL */ +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Pos 0UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk 0x1UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Pos 1UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk 0x2UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_S0_Pos 2UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_S0_Msk 0x4UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Pos 4UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk 0x10UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Pos 5UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk 0x20UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_S0_Pos 6UL +#define HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_S0_Msk 0x40UL + + +#endif /* _CYIP_HSIOM_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom_v2.h new file mode 100644 index 00000000000..69f373e29ab --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_hsiom_v2.h @@ -0,0 +1,119 @@ +/***************************************************************************//** +* \file cyip_hsiom_v2.h +* +* \brief +* HSIOM IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_HSIOM_V2_H_ +#define _CYIP_HSIOM_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* HSIOM +*******************************************************************************/ + +#define HSIOM_PRT_V2_SECTION_SIZE 0x00000010UL +#define HSIOM_V2_SECTION_SIZE 0x00004000UL + +/** + * \brief HSIOM port registers (HSIOM_PRT) + */ +typedef struct { + __IOM uint32_t PORT_SEL0; /*!< 0x00000000 Port selection 0 */ + __IOM uint32_t PORT_SEL1; /*!< 0x00000004 Port selection 1 */ + __IM uint32_t RESERVED[2]; +} HSIOM_PRT_V2_Type; /*!< Size = 16 (0x10) */ + +/** + * \brief High Speed IO Matrix (HSIOM) (HSIOM) + */ +typedef struct { + HSIOM_PRT_V2_Type PRT[128]; /*!< 0x00000000 HSIOM port registers */ + __IM uint32_t RESERVED[1536]; + __IOM uint32_t AMUX_SPLIT_CTL[64]; /*!< 0x00002000 AMUX splitter cell control */ + __IM uint32_t RESERVED1[64]; + __IOM uint32_t MONITOR_CTL_0; /*!< 0x00002200 Power/Ground Monitor cell control 0 */ + __IOM uint32_t MONITOR_CTL_1; /*!< 0x00002204 Power/Ground Monitor cell control 1 */ + __IOM uint32_t MONITOR_CTL_2; /*!< 0x00002208 Power/Ground Monitor cell control 2 */ + __IOM uint32_t MONITOR_CTL_3; /*!< 0x0000220C Power/Ground Monitor cell control 3 */ + __IM uint32_t RESERVED2[12]; + __IOM uint32_t ALT_JTAG_EN; /*!< 0x00002240 Alternate JTAG IF selection register */ +} HSIOM_V2_Type; /*!< Size = 8772 (0x2244) */ + + +/* HSIOM_PRT.PORT_SEL0 */ +#define HSIOM_PRT_V2_PORT_SEL0_IO0_SEL_Pos 0UL +#define HSIOM_PRT_V2_PORT_SEL0_IO0_SEL_Msk 0x1FUL +#define HSIOM_PRT_V2_PORT_SEL0_IO1_SEL_Pos 8UL +#define HSIOM_PRT_V2_PORT_SEL0_IO1_SEL_Msk 0x1F00UL +#define HSIOM_PRT_V2_PORT_SEL0_IO2_SEL_Pos 16UL +#define HSIOM_PRT_V2_PORT_SEL0_IO2_SEL_Msk 0x1F0000UL +#define HSIOM_PRT_V2_PORT_SEL0_IO3_SEL_Pos 24UL +#define HSIOM_PRT_V2_PORT_SEL0_IO3_SEL_Msk 0x1F000000UL +/* HSIOM_PRT.PORT_SEL1 */ +#define HSIOM_PRT_V2_PORT_SEL1_IO4_SEL_Pos 0UL +#define HSIOM_PRT_V2_PORT_SEL1_IO4_SEL_Msk 0x1FUL +#define HSIOM_PRT_V2_PORT_SEL1_IO5_SEL_Pos 8UL +#define HSIOM_PRT_V2_PORT_SEL1_IO5_SEL_Msk 0x1F00UL +#define HSIOM_PRT_V2_PORT_SEL1_IO6_SEL_Pos 16UL +#define HSIOM_PRT_V2_PORT_SEL1_IO6_SEL_Msk 0x1F0000UL +#define HSIOM_PRT_V2_PORT_SEL1_IO7_SEL_Pos 24UL +#define HSIOM_PRT_V2_PORT_SEL1_IO7_SEL_Msk 0x1F000000UL + + +/* HSIOM.AMUX_SPLIT_CTL */ +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Pos 0UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk 0x1UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Pos 1UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk 0x2UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_S0_Pos 2UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_S0_Msk 0x4UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Pos 4UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk 0x10UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Pos 5UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk 0x20UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_S0_Pos 6UL +#define HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_S0_Msk 0x40UL +/* HSIOM.MONITOR_CTL_0 */ +#define HSIOM_V2_MONITOR_CTL_0_MONITOR_EN_Pos 0UL +#define HSIOM_V2_MONITOR_CTL_0_MONITOR_EN_Msk 0xFFFFFFFFUL +/* HSIOM.MONITOR_CTL_1 */ +#define HSIOM_V2_MONITOR_CTL_1_MONITOR_EN_Pos 0UL +#define HSIOM_V2_MONITOR_CTL_1_MONITOR_EN_Msk 0xFFFFFFFFUL +/* HSIOM.MONITOR_CTL_2 */ +#define HSIOM_V2_MONITOR_CTL_2_MONITOR_EN_Pos 0UL +#define HSIOM_V2_MONITOR_CTL_2_MONITOR_EN_Msk 0xFFFFFFFFUL +/* HSIOM.MONITOR_CTL_3 */ +#define HSIOM_V2_MONITOR_CTL_3_MONITOR_EN_Pos 0UL +#define HSIOM_V2_MONITOR_CTL_3_MONITOR_EN_Msk 0xFFFFFFFFUL +/* HSIOM.ALT_JTAG_EN */ +#define HSIOM_V2_ALT_JTAG_EN_ENABLE_Pos 31UL +#define HSIOM_V2_ALT_JTAG_EN_ENABLE_Msk 0x80000000UL + + +#endif /* _CYIP_HSIOM_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_i2s.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_i2s.h new file mode 100644 index 00000000000..220de6a4269 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_i2s.h @@ -0,0 +1,289 @@ +/***************************************************************************//** +* \file cyip_i2s.h +* +* \brief +* I2S IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_I2S_H_ +#define _CYIP_I2S_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define I2S_SECTION_SIZE 0x00001000UL + +/** + * \brief I2S registers (I2S) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t CLOCK_CTL; /*!< 0x00000010 Clock control */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t CMD; /*!< 0x00000020 Command */ + __IM uint32_t RESERVED2[7]; + __IOM uint32_t TR_CTL; /*!< 0x00000040 Trigger control */ + __IM uint32_t RESERVED3[15]; + __IOM uint32_t TX_CTL; /*!< 0x00000080 Transmitter control */ + __IOM uint32_t TX_WATCHDOG; /*!< 0x00000084 Transmitter watchdog */ + __IM uint32_t RESERVED4[6]; + __IOM uint32_t RX_CTL; /*!< 0x000000A0 Receiver control */ + __IOM uint32_t RX_WATCHDOG; /*!< 0x000000A4 Receiver watchdog */ + __IM uint32_t RESERVED5[86]; + __IOM uint32_t TX_FIFO_CTL; /*!< 0x00000200 TX FIFO control */ + __IM uint32_t TX_FIFO_STATUS; /*!< 0x00000204 TX FIFO status */ + __OM uint32_t TX_FIFO_WR; /*!< 0x00000208 TX FIFO write */ + __IM uint32_t RESERVED6[61]; + __IOM uint32_t RX_FIFO_CTL; /*!< 0x00000300 RX FIFO control */ + __IM uint32_t RX_FIFO_STATUS; /*!< 0x00000304 RX FIFO status */ + __IM uint32_t RX_FIFO_RD; /*!< 0x00000308 RX FIFO read */ + __IM uint32_t RX_FIFO_RD_SILENT; /*!< 0x0000030C RX FIFO silent read */ + __IM uint32_t RESERVED7[764]; + __IOM uint32_t INTR; /*!< 0x00000F00 Interrupt register */ + __IOM uint32_t INTR_SET; /*!< 0x00000F04 Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000F08 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x00000F0C Interrupt masked register */ +} I2S_V1_Type; /*!< Size = 3856 (0xF10) */ + + +/* I2S.CTL */ +#define I2S_CTL_TX_ENABLED_Pos 30UL +#define I2S_CTL_TX_ENABLED_Msk 0x40000000UL +#define I2S_CTL_RX_ENABLED_Pos 31UL +#define I2S_CTL_RX_ENABLED_Msk 0x80000000UL +/* I2S.CLOCK_CTL */ +#define I2S_CLOCK_CTL_CLOCK_DIV_Pos 0UL +#define I2S_CLOCK_CTL_CLOCK_DIV_Msk 0x3FUL +#define I2S_CLOCK_CTL_CLOCK_SEL_Pos 8UL +#define I2S_CLOCK_CTL_CLOCK_SEL_Msk 0x100UL +/* I2S.CMD */ +#define I2S_CMD_TX_START_Pos 0UL +#define I2S_CMD_TX_START_Msk 0x1UL +#define I2S_CMD_TX_PAUSE_Pos 8UL +#define I2S_CMD_TX_PAUSE_Msk 0x100UL +#define I2S_CMD_RX_START_Pos 16UL +#define I2S_CMD_RX_START_Msk 0x10000UL +/* I2S.TR_CTL */ +#define I2S_TR_CTL_TX_REQ_EN_Pos 0UL +#define I2S_TR_CTL_TX_REQ_EN_Msk 0x1UL +#define I2S_TR_CTL_RX_REQ_EN_Pos 16UL +#define I2S_TR_CTL_RX_REQ_EN_Msk 0x10000UL +/* I2S.TX_CTL */ +#define I2S_TX_CTL_B_CLOCK_INV_Pos 3UL +#define I2S_TX_CTL_B_CLOCK_INV_Msk 0x8UL +#define I2S_TX_CTL_CH_NR_Pos 4UL +#define I2S_TX_CTL_CH_NR_Msk 0x70UL +#define I2S_TX_CTL_MS_Pos 7UL +#define I2S_TX_CTL_MS_Msk 0x80UL +#define I2S_TX_CTL_I2S_MODE_Pos 8UL +#define I2S_TX_CTL_I2S_MODE_Msk 0x300UL +#define I2S_TX_CTL_WS_PULSE_Pos 10UL +#define I2S_TX_CTL_WS_PULSE_Msk 0x400UL +#define I2S_TX_CTL_OVHDATA_Pos 12UL +#define I2S_TX_CTL_OVHDATA_Msk 0x1000UL +#define I2S_TX_CTL_WD_EN_Pos 13UL +#define I2S_TX_CTL_WD_EN_Msk 0x2000UL +#define I2S_TX_CTL_CH_LEN_Pos 16UL +#define I2S_TX_CTL_CH_LEN_Msk 0x70000UL +#define I2S_TX_CTL_WORD_LEN_Pos 20UL +#define I2S_TX_CTL_WORD_LEN_Msk 0x700000UL +#define I2S_TX_CTL_SCKO_POL_Pos 24UL +#define I2S_TX_CTL_SCKO_POL_Msk 0x1000000UL +#define I2S_TX_CTL_SCKI_POL_Pos 25UL +#define I2S_TX_CTL_SCKI_POL_Msk 0x2000000UL +/* I2S.TX_WATCHDOG */ +#define I2S_TX_WATCHDOG_WD_COUNTER_Pos 0UL +#define I2S_TX_WATCHDOG_WD_COUNTER_Msk 0xFFFFFFFFUL +/* I2S.RX_CTL */ +#define I2S_RX_CTL_B_CLOCK_INV_Pos 3UL +#define I2S_RX_CTL_B_CLOCK_INV_Msk 0x8UL +#define I2S_RX_CTL_CH_NR_Pos 4UL +#define I2S_RX_CTL_CH_NR_Msk 0x70UL +#define I2S_RX_CTL_MS_Pos 7UL +#define I2S_RX_CTL_MS_Msk 0x80UL +#define I2S_RX_CTL_I2S_MODE_Pos 8UL +#define I2S_RX_CTL_I2S_MODE_Msk 0x300UL +#define I2S_RX_CTL_WS_PULSE_Pos 10UL +#define I2S_RX_CTL_WS_PULSE_Msk 0x400UL +#define I2S_RX_CTL_WD_EN_Pos 13UL +#define I2S_RX_CTL_WD_EN_Msk 0x2000UL +#define I2S_RX_CTL_CH_LEN_Pos 16UL +#define I2S_RX_CTL_CH_LEN_Msk 0x70000UL +#define I2S_RX_CTL_WORD_LEN_Pos 20UL +#define I2S_RX_CTL_WORD_LEN_Msk 0x700000UL +#define I2S_RX_CTL_BIT_EXTENSION_Pos 23UL +#define I2S_RX_CTL_BIT_EXTENSION_Msk 0x800000UL +#define I2S_RX_CTL_SCKO_POL_Pos 24UL +#define I2S_RX_CTL_SCKO_POL_Msk 0x1000000UL +#define I2S_RX_CTL_SCKI_POL_Pos 25UL +#define I2S_RX_CTL_SCKI_POL_Msk 0x2000000UL +/* I2S.RX_WATCHDOG */ +#define I2S_RX_WATCHDOG_WD_COUNTER_Pos 0UL +#define I2S_RX_WATCHDOG_WD_COUNTER_Msk 0xFFFFFFFFUL +/* I2S.TX_FIFO_CTL */ +#define I2S_TX_FIFO_CTL_TRIGGER_LEVEL_Pos 0UL +#define I2S_TX_FIFO_CTL_TRIGGER_LEVEL_Msk 0xFFUL +#define I2S_TX_FIFO_CTL_CLEAR_Pos 16UL +#define I2S_TX_FIFO_CTL_CLEAR_Msk 0x10000UL +#define I2S_TX_FIFO_CTL_FREEZE_Pos 17UL +#define I2S_TX_FIFO_CTL_FREEZE_Msk 0x20000UL +/* I2S.TX_FIFO_STATUS */ +#define I2S_TX_FIFO_STATUS_USED_Pos 0UL +#define I2S_TX_FIFO_STATUS_USED_Msk 0x1FFUL +#define I2S_TX_FIFO_STATUS_RD_PTR_Pos 16UL +#define I2S_TX_FIFO_STATUS_RD_PTR_Msk 0xFF0000UL +#define I2S_TX_FIFO_STATUS_WR_PTR_Pos 24UL +#define I2S_TX_FIFO_STATUS_WR_PTR_Msk 0xFF000000UL +/* I2S.TX_FIFO_WR */ +#define I2S_TX_FIFO_WR_DATA_Pos 0UL +#define I2S_TX_FIFO_WR_DATA_Msk 0xFFFFFFFFUL +/* I2S.RX_FIFO_CTL */ +#define I2S_RX_FIFO_CTL_TRIGGER_LEVEL_Pos 0UL +#define I2S_RX_FIFO_CTL_TRIGGER_LEVEL_Msk 0xFFUL +#define I2S_RX_FIFO_CTL_CLEAR_Pos 16UL +#define I2S_RX_FIFO_CTL_CLEAR_Msk 0x10000UL +#define I2S_RX_FIFO_CTL_FREEZE_Pos 17UL +#define I2S_RX_FIFO_CTL_FREEZE_Msk 0x20000UL +/* I2S.RX_FIFO_STATUS */ +#define I2S_RX_FIFO_STATUS_USED_Pos 0UL +#define I2S_RX_FIFO_STATUS_USED_Msk 0x1FFUL +#define I2S_RX_FIFO_STATUS_RD_PTR_Pos 16UL +#define I2S_RX_FIFO_STATUS_RD_PTR_Msk 0xFF0000UL +#define I2S_RX_FIFO_STATUS_WR_PTR_Pos 24UL +#define I2S_RX_FIFO_STATUS_WR_PTR_Msk 0xFF000000UL +/* I2S.RX_FIFO_RD */ +#define I2S_RX_FIFO_RD_DATA_Pos 0UL +#define I2S_RX_FIFO_RD_DATA_Msk 0xFFFFFFFFUL +/* I2S.RX_FIFO_RD_SILENT */ +#define I2S_RX_FIFO_RD_SILENT_DATA_Pos 0UL +#define I2S_RX_FIFO_RD_SILENT_DATA_Msk 0xFFFFFFFFUL +/* I2S.INTR */ +#define I2S_INTR_TX_TRIGGER_Pos 0UL +#define I2S_INTR_TX_TRIGGER_Msk 0x1UL +#define I2S_INTR_TX_NOT_FULL_Pos 1UL +#define I2S_INTR_TX_NOT_FULL_Msk 0x2UL +#define I2S_INTR_TX_EMPTY_Pos 4UL +#define I2S_INTR_TX_EMPTY_Msk 0x10UL +#define I2S_INTR_TX_OVERFLOW_Pos 5UL +#define I2S_INTR_TX_OVERFLOW_Msk 0x20UL +#define I2S_INTR_TX_UNDERFLOW_Pos 6UL +#define I2S_INTR_TX_UNDERFLOW_Msk 0x40UL +#define I2S_INTR_TX_WD_Pos 8UL +#define I2S_INTR_TX_WD_Msk 0x100UL +#define I2S_INTR_RX_TRIGGER_Pos 16UL +#define I2S_INTR_RX_TRIGGER_Msk 0x10000UL +#define I2S_INTR_RX_NOT_EMPTY_Pos 18UL +#define I2S_INTR_RX_NOT_EMPTY_Msk 0x40000UL +#define I2S_INTR_RX_FULL_Pos 19UL +#define I2S_INTR_RX_FULL_Msk 0x80000UL +#define I2S_INTR_RX_OVERFLOW_Pos 21UL +#define I2S_INTR_RX_OVERFLOW_Msk 0x200000UL +#define I2S_INTR_RX_UNDERFLOW_Pos 22UL +#define I2S_INTR_RX_UNDERFLOW_Msk 0x400000UL +#define I2S_INTR_RX_WD_Pos 24UL +#define I2S_INTR_RX_WD_Msk 0x1000000UL +/* I2S.INTR_SET */ +#define I2S_INTR_SET_TX_TRIGGER_Pos 0UL +#define I2S_INTR_SET_TX_TRIGGER_Msk 0x1UL +#define I2S_INTR_SET_TX_NOT_FULL_Pos 1UL +#define I2S_INTR_SET_TX_NOT_FULL_Msk 0x2UL +#define I2S_INTR_SET_TX_EMPTY_Pos 4UL +#define I2S_INTR_SET_TX_EMPTY_Msk 0x10UL +#define I2S_INTR_SET_TX_OVERFLOW_Pos 5UL +#define I2S_INTR_SET_TX_OVERFLOW_Msk 0x20UL +#define I2S_INTR_SET_TX_UNDERFLOW_Pos 6UL +#define I2S_INTR_SET_TX_UNDERFLOW_Msk 0x40UL +#define I2S_INTR_SET_TX_WD_Pos 8UL +#define I2S_INTR_SET_TX_WD_Msk 0x100UL +#define I2S_INTR_SET_RX_TRIGGER_Pos 16UL +#define I2S_INTR_SET_RX_TRIGGER_Msk 0x10000UL +#define I2S_INTR_SET_RX_NOT_EMPTY_Pos 18UL +#define I2S_INTR_SET_RX_NOT_EMPTY_Msk 0x40000UL +#define I2S_INTR_SET_RX_FULL_Pos 19UL +#define I2S_INTR_SET_RX_FULL_Msk 0x80000UL +#define I2S_INTR_SET_RX_OVERFLOW_Pos 21UL +#define I2S_INTR_SET_RX_OVERFLOW_Msk 0x200000UL +#define I2S_INTR_SET_RX_UNDERFLOW_Pos 22UL +#define I2S_INTR_SET_RX_UNDERFLOW_Msk 0x400000UL +#define I2S_INTR_SET_RX_WD_Pos 24UL +#define I2S_INTR_SET_RX_WD_Msk 0x1000000UL +/* I2S.INTR_MASK */ +#define I2S_INTR_MASK_TX_TRIGGER_Pos 0UL +#define I2S_INTR_MASK_TX_TRIGGER_Msk 0x1UL +#define I2S_INTR_MASK_TX_NOT_FULL_Pos 1UL +#define I2S_INTR_MASK_TX_NOT_FULL_Msk 0x2UL +#define I2S_INTR_MASK_TX_EMPTY_Pos 4UL +#define I2S_INTR_MASK_TX_EMPTY_Msk 0x10UL +#define I2S_INTR_MASK_TX_OVERFLOW_Pos 5UL +#define I2S_INTR_MASK_TX_OVERFLOW_Msk 0x20UL +#define I2S_INTR_MASK_TX_UNDERFLOW_Pos 6UL +#define I2S_INTR_MASK_TX_UNDERFLOW_Msk 0x40UL +#define I2S_INTR_MASK_TX_WD_Pos 8UL +#define I2S_INTR_MASK_TX_WD_Msk 0x100UL +#define I2S_INTR_MASK_RX_TRIGGER_Pos 16UL +#define I2S_INTR_MASK_RX_TRIGGER_Msk 0x10000UL +#define I2S_INTR_MASK_RX_NOT_EMPTY_Pos 18UL +#define I2S_INTR_MASK_RX_NOT_EMPTY_Msk 0x40000UL +#define I2S_INTR_MASK_RX_FULL_Pos 19UL +#define I2S_INTR_MASK_RX_FULL_Msk 0x80000UL +#define I2S_INTR_MASK_RX_OVERFLOW_Pos 21UL +#define I2S_INTR_MASK_RX_OVERFLOW_Msk 0x200000UL +#define I2S_INTR_MASK_RX_UNDERFLOW_Pos 22UL +#define I2S_INTR_MASK_RX_UNDERFLOW_Msk 0x400000UL +#define I2S_INTR_MASK_RX_WD_Pos 24UL +#define I2S_INTR_MASK_RX_WD_Msk 0x1000000UL +/* I2S.INTR_MASKED */ +#define I2S_INTR_MASKED_TX_TRIGGER_Pos 0UL +#define I2S_INTR_MASKED_TX_TRIGGER_Msk 0x1UL +#define I2S_INTR_MASKED_TX_NOT_FULL_Pos 1UL +#define I2S_INTR_MASKED_TX_NOT_FULL_Msk 0x2UL +#define I2S_INTR_MASKED_TX_EMPTY_Pos 4UL +#define I2S_INTR_MASKED_TX_EMPTY_Msk 0x10UL +#define I2S_INTR_MASKED_TX_OVERFLOW_Pos 5UL +#define I2S_INTR_MASKED_TX_OVERFLOW_Msk 0x20UL +#define I2S_INTR_MASKED_TX_UNDERFLOW_Pos 6UL +#define I2S_INTR_MASKED_TX_UNDERFLOW_Msk 0x40UL +#define I2S_INTR_MASKED_TX_WD_Pos 8UL +#define I2S_INTR_MASKED_TX_WD_Msk 0x100UL +#define I2S_INTR_MASKED_RX_TRIGGER_Pos 16UL +#define I2S_INTR_MASKED_RX_TRIGGER_Msk 0x10000UL +#define I2S_INTR_MASKED_RX_NOT_EMPTY_Pos 18UL +#define I2S_INTR_MASKED_RX_NOT_EMPTY_Msk 0x40000UL +#define I2S_INTR_MASKED_RX_FULL_Pos 19UL +#define I2S_INTR_MASKED_RX_FULL_Msk 0x80000UL +#define I2S_INTR_MASKED_RX_OVERFLOW_Pos 21UL +#define I2S_INTR_MASKED_RX_OVERFLOW_Msk 0x200000UL +#define I2S_INTR_MASKED_RX_UNDERFLOW_Pos 22UL +#define I2S_INTR_MASKED_RX_UNDERFLOW_Msk 0x400000UL +#define I2S_INTR_MASKED_RX_WD_Pos 24UL +#define I2S_INTR_MASKED_RX_WD_Msk 0x1000000UL + + +#endif /* _CYIP_I2S_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc.h new file mode 100644 index 00000000000..3c9de860ede --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc.h @@ -0,0 +1,132 @@ +/***************************************************************************//** +* \file cyip_ipc.h +* +* \brief +* IPC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_IPC_H_ +#define _CYIP_IPC_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_STRUCT_SECTION_SIZE 0x00000020UL +#define IPC_INTR_STRUCT_SECTION_SIZE 0x00000020UL +#define IPC_SECTION_SIZE 0x00010000UL + +/** + * \brief IPC structure (IPC_STRUCT) + */ +typedef struct { + __IM uint32_t ACQUIRE; /*!< 0x00000000 IPC acquire */ + __OM uint32_t RELEASE; /*!< 0x00000004 IPC release */ + __OM uint32_t NOTIFY; /*!< 0x00000008 IPC notification */ + __IOM uint32_t DATA; /*!< 0x0000000C IPC data */ + __IM uint32_t LOCK_STATUS; /*!< 0x00000010 IPC lock status */ + __IM uint32_t RESERVED[3]; +} IPC_STRUCT_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief IPC interrupt structure (IPC_INTR_STRUCT) + */ +typedef struct { + __IOM uint32_t INTR; /*!< 0x00000000 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000004 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000008 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000000C Interrupt masked */ + __IM uint32_t RESERVED[4]; +} IPC_INTR_STRUCT_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief IPC (IPC) + */ +typedef struct { + IPC_STRUCT_V1_Type STRUCT[16]; /*!< 0x00000000 IPC structure */ + __IM uint32_t RESERVED[896]; + IPC_INTR_STRUCT_V1_Type INTR_STRUCT[16]; /*!< 0x00001000 IPC interrupt structure */ +} IPC_V1_Type; /*!< Size = 4608 (0x1200) */ + + +/* IPC_STRUCT.ACQUIRE */ +#define IPC_STRUCT_ACQUIRE_P_Pos 0UL +#define IPC_STRUCT_ACQUIRE_P_Msk 0x1UL +#define IPC_STRUCT_ACQUIRE_NS_Pos 1UL +#define IPC_STRUCT_ACQUIRE_NS_Msk 0x2UL +#define IPC_STRUCT_ACQUIRE_PC_Pos 4UL +#define IPC_STRUCT_ACQUIRE_PC_Msk 0xF0UL +#define IPC_STRUCT_ACQUIRE_MS_Pos 8UL +#define IPC_STRUCT_ACQUIRE_MS_Msk 0xF00UL +#define IPC_STRUCT_ACQUIRE_SUCCESS_Pos 31UL +#define IPC_STRUCT_ACQUIRE_SUCCESS_Msk 0x80000000UL +/* IPC_STRUCT.RELEASE */ +#define IPC_STRUCT_RELEASE_INTR_RELEASE_Pos 0UL +#define IPC_STRUCT_RELEASE_INTR_RELEASE_Msk 0xFFFFUL +/* IPC_STRUCT.NOTIFY */ +#define IPC_STRUCT_NOTIFY_INTR_NOTIFY_Pos 0UL +#define IPC_STRUCT_NOTIFY_INTR_NOTIFY_Msk 0xFFFFUL +/* IPC_STRUCT.DATA */ +#define IPC_STRUCT_DATA_DATA_Pos 0UL +#define IPC_STRUCT_DATA_DATA_Msk 0xFFFFFFFFUL +/* IPC_STRUCT.LOCK_STATUS */ +#define IPC_STRUCT_LOCK_STATUS_P_Pos 0UL +#define IPC_STRUCT_LOCK_STATUS_P_Msk 0x1UL +#define IPC_STRUCT_LOCK_STATUS_NS_Pos 1UL +#define IPC_STRUCT_LOCK_STATUS_NS_Msk 0x2UL +#define IPC_STRUCT_LOCK_STATUS_PC_Pos 4UL +#define IPC_STRUCT_LOCK_STATUS_PC_Msk 0xF0UL +#define IPC_STRUCT_LOCK_STATUS_MS_Pos 8UL +#define IPC_STRUCT_LOCK_STATUS_MS_Msk 0xF00UL +#define IPC_STRUCT_LOCK_STATUS_ACQUIRED_Pos 31UL +#define IPC_STRUCT_LOCK_STATUS_ACQUIRED_Msk 0x80000000UL + + +/* IPC_INTR_STRUCT.INTR */ +#define IPC_INTR_STRUCT_INTR_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_INTR_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_INTR_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_INTR_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_SET */ +#define IPC_INTR_STRUCT_INTR_SET_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_INTR_SET_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_INTR_SET_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_INTR_SET_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_MASK */ +#define IPC_INTR_STRUCT_INTR_MASK_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_INTR_MASK_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_INTR_MASK_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_INTR_MASK_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_MASKED */ +#define IPC_INTR_STRUCT_INTR_MASKED_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_INTR_MASKED_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_INTR_MASKED_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_INTR_MASKED_NOTIFY_Msk 0xFFFF0000UL + + +#endif /* _CYIP_IPC_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc_v2.h new file mode 100644 index 00000000000..6d97a7dd2e1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_ipc_v2.h @@ -0,0 +1,136 @@ +/***************************************************************************//** +* \file cyip_ipc_v2.h +* +* \brief +* IPC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_IPC_V2_H_ +#define _CYIP_IPC_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define IPC_STRUCT_V2_SECTION_SIZE 0x00000020UL +#define IPC_INTR_STRUCT_V2_SECTION_SIZE 0x00000020UL +#define IPC_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief IPC structure (IPC_STRUCT) + */ +typedef struct { + __IM uint32_t ACQUIRE; /*!< 0x00000000 IPC acquire */ + __OM uint32_t RELEASE; /*!< 0x00000004 IPC release */ + __OM uint32_t NOTIFY; /*!< 0x00000008 IPC notification */ + __IOM uint32_t DATA0; /*!< 0x0000000C IPC data 0 */ + __IOM uint32_t DATA1; /*!< 0x00000010 IPC data 1 */ + __IM uint32_t RESERVED[2]; + __IM uint32_t LOCK_STATUS; /*!< 0x0000001C IPC lock status */ +} IPC_STRUCT_V2_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief IPC interrupt structure (IPC_INTR_STRUCT) + */ +typedef struct { + __IOM uint32_t INTR; /*!< 0x00000000 Interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x00000004 Interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x00000008 Interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000000C Interrupt masked */ + __IM uint32_t RESERVED[4]; +} IPC_INTR_STRUCT_V2_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief IPC (IPC) + */ +typedef struct { + IPC_STRUCT_V2_Type STRUCT[16]; /*!< 0x00000000 IPC structure */ + __IM uint32_t RESERVED[896]; + IPC_INTR_STRUCT_V2_Type INTR_STRUCT[16]; /*!< 0x00001000 IPC interrupt structure */ +} IPC_V2_Type; /*!< Size = 4608 (0x1200) */ + + +/* IPC_STRUCT.ACQUIRE */ +#define IPC_STRUCT_V2_ACQUIRE_P_Pos 0UL +#define IPC_STRUCT_V2_ACQUIRE_P_Msk 0x1UL +#define IPC_STRUCT_V2_ACQUIRE_NS_Pos 1UL +#define IPC_STRUCT_V2_ACQUIRE_NS_Msk 0x2UL +#define IPC_STRUCT_V2_ACQUIRE_PC_Pos 4UL +#define IPC_STRUCT_V2_ACQUIRE_PC_Msk 0xF0UL +#define IPC_STRUCT_V2_ACQUIRE_MS_Pos 8UL +#define IPC_STRUCT_V2_ACQUIRE_MS_Msk 0xF00UL +#define IPC_STRUCT_V2_ACQUIRE_SUCCESS_Pos 31UL +#define IPC_STRUCT_V2_ACQUIRE_SUCCESS_Msk 0x80000000UL +/* IPC_STRUCT.RELEASE */ +#define IPC_STRUCT_V2_RELEASE_INTR_RELEASE_Pos 0UL +#define IPC_STRUCT_V2_RELEASE_INTR_RELEASE_Msk 0xFFFFUL +/* IPC_STRUCT.NOTIFY */ +#define IPC_STRUCT_V2_NOTIFY_INTR_NOTIFY_Pos 0UL +#define IPC_STRUCT_V2_NOTIFY_INTR_NOTIFY_Msk 0xFFFFUL +/* IPC_STRUCT.DATA0 */ +#define IPC_STRUCT_V2_DATA0_DATA_Pos 0UL +#define IPC_STRUCT_V2_DATA0_DATA_Msk 0xFFFFFFFFUL +/* IPC_STRUCT.DATA1 */ +#define IPC_STRUCT_V2_DATA1_DATA_Pos 0UL +#define IPC_STRUCT_V2_DATA1_DATA_Msk 0xFFFFFFFFUL +/* IPC_STRUCT.LOCK_STATUS */ +#define IPC_STRUCT_V2_LOCK_STATUS_P_Pos 0UL +#define IPC_STRUCT_V2_LOCK_STATUS_P_Msk 0x1UL +#define IPC_STRUCT_V2_LOCK_STATUS_NS_Pos 1UL +#define IPC_STRUCT_V2_LOCK_STATUS_NS_Msk 0x2UL +#define IPC_STRUCT_V2_LOCK_STATUS_PC_Pos 4UL +#define IPC_STRUCT_V2_LOCK_STATUS_PC_Msk 0xF0UL +#define IPC_STRUCT_V2_LOCK_STATUS_MS_Pos 8UL +#define IPC_STRUCT_V2_LOCK_STATUS_MS_Msk 0xF00UL +#define IPC_STRUCT_V2_LOCK_STATUS_ACQUIRED_Pos 31UL +#define IPC_STRUCT_V2_LOCK_STATUS_ACQUIRED_Msk 0x80000000UL + + +/* IPC_INTR_STRUCT.INTR */ +#define IPC_INTR_STRUCT_V2_INTR_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_V2_INTR_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_V2_INTR_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_V2_INTR_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_SET */ +#define IPC_INTR_STRUCT_V2_INTR_SET_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_V2_INTR_SET_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_V2_INTR_SET_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_V2_INTR_SET_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_MASK */ +#define IPC_INTR_STRUCT_V2_INTR_MASK_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_V2_INTR_MASK_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_V2_INTR_MASK_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_V2_INTR_MASK_NOTIFY_Msk 0xFFFF0000UL +/* IPC_INTR_STRUCT.INTR_MASKED */ +#define IPC_INTR_STRUCT_V2_INTR_MASKED_RELEASE_Pos 0UL +#define IPC_INTR_STRUCT_V2_INTR_MASKED_RELEASE_Msk 0xFFFFUL +#define IPC_INTR_STRUCT_V2_INTR_MASKED_NOTIFY_Pos 16UL +#define IPC_INTR_STRUCT_V2_INTR_MASKED_NOTIFY_Msk 0xFFFF0000UL + + +#endif /* _CYIP_IPC_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lcd.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lcd.h new file mode 100644 index 00000000000..57ffce75a45 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lcd.h @@ -0,0 +1,101 @@ +/***************************************************************************//** +* \file cyip_lcd.h +* +* \brief +* LCD IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_LCD_H_ +#define _CYIP_LCD_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD_SECTION_SIZE 0x00010000UL + +/** + * \brief LCD Controller Block (LCD) + */ +typedef struct { + __IM uint32_t ID; /*!< 0x00000000 ID & Revision */ + __IOM uint32_t DIVIDER; /*!< 0x00000004 LCD Divider Register */ + __IOM uint32_t CONTROL; /*!< 0x00000008 LCD Configuration Register */ + __IM uint32_t RESERVED[61]; + __IOM uint32_t DATA0[8]; /*!< 0x00000100 LCD Pin Data Registers */ + __IM uint32_t RESERVED1[56]; + __IOM uint32_t DATA1[8]; /*!< 0x00000200 LCD Pin Data Registers */ + __IM uint32_t RESERVED2[56]; + __IOM uint32_t DATA2[8]; /*!< 0x00000300 LCD Pin Data Registers */ + __IM uint32_t RESERVED3[56]; + __IOM uint32_t DATA3[8]; /*!< 0x00000400 LCD Pin Data Registers */ +} LCD_V1_Type; /*!< Size = 1056 (0x420) */ + + +/* LCD.ID */ +#define LCD_ID_ID_Pos 0UL +#define LCD_ID_ID_Msk 0xFFFFUL +#define LCD_ID_REVISION_Pos 16UL +#define LCD_ID_REVISION_Msk 0xFFFF0000UL +/* LCD.DIVIDER */ +#define LCD_DIVIDER_SUBFR_DIV_Pos 0UL +#define LCD_DIVIDER_SUBFR_DIV_Msk 0xFFFFUL +#define LCD_DIVIDER_DEAD_DIV_Pos 16UL +#define LCD_DIVIDER_DEAD_DIV_Msk 0xFFFF0000UL +/* LCD.CONTROL */ +#define LCD_CONTROL_LS_EN_Pos 0UL +#define LCD_CONTROL_LS_EN_Msk 0x1UL +#define LCD_CONTROL_HS_EN_Pos 1UL +#define LCD_CONTROL_HS_EN_Msk 0x2UL +#define LCD_CONTROL_LCD_MODE_Pos 2UL +#define LCD_CONTROL_LCD_MODE_Msk 0x4UL +#define LCD_CONTROL_TYPE_Pos 3UL +#define LCD_CONTROL_TYPE_Msk 0x8UL +#define LCD_CONTROL_OP_MODE_Pos 4UL +#define LCD_CONTROL_OP_MODE_Msk 0x10UL +#define LCD_CONTROL_BIAS_Pos 5UL +#define LCD_CONTROL_BIAS_Msk 0x60UL +#define LCD_CONTROL_COM_NUM_Pos 8UL +#define LCD_CONTROL_COM_NUM_Msk 0xF00UL +#define LCD_CONTROL_LS_EN_STAT_Pos 31UL +#define LCD_CONTROL_LS_EN_STAT_Msk 0x80000000UL +/* LCD.DATA0 */ +#define LCD_DATA0_DATA_Pos 0UL +#define LCD_DATA0_DATA_Msk 0xFFFFFFFFUL +/* LCD.DATA1 */ +#define LCD_DATA1_DATA_Pos 0UL +#define LCD_DATA1_DATA_Msk 0xFFFFFFFFUL +/* LCD.DATA2 */ +#define LCD_DATA2_DATA_Pos 0UL +#define LCD_DATA2_DATA_Msk 0xFFFFFFFFUL +/* LCD.DATA3 */ +#define LCD_DATA3_DATA_Pos 0UL +#define LCD_DATA3_DATA_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_LCD_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lpcomp.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lpcomp.h new file mode 100644 index 00000000000..48710051c8a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_lpcomp.h @@ -0,0 +1,180 @@ +/***************************************************************************//** +* \file cyip_lpcomp.h +* +* \brief +* LPCOMP IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_LPCOMP_H_ +#define _CYIP_LPCOMP_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_SECTION_SIZE 0x00010000UL + +/** + * \brief Low Power Comparators (LPCOMP) + */ +typedef struct { + __IOM uint32_t CONFIG; /*!< 0x00000000 LPCOMP Configuration Register */ + __IM uint32_t STATUS; /*!< 0x00000004 LPCOMP Status Register */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t INTR; /*!< 0x00000010 LPCOMP Interrupt request register */ + __IOM uint32_t INTR_SET; /*!< 0x00000014 LPCOMP Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000018 LPCOMP Interrupt request mask */ + __IM uint32_t INTR_MASKED; /*!< 0x0000001C LPCOMP Interrupt request masked */ + __IM uint32_t RESERVED1[8]; + __IOM uint32_t CMP0_CTRL; /*!< 0x00000040 Comparator 0 control Register */ + __IM uint32_t RESERVED2[3]; + __IOM uint32_t CMP0_SW; /*!< 0x00000050 Comparator 0 switch control */ + __IOM uint32_t CMP0_SW_CLEAR; /*!< 0x00000054 Comparator 0 switch control clear */ + __IM uint32_t RESERVED3[10]; + __IOM uint32_t CMP1_CTRL; /*!< 0x00000080 Comparator 1 control Register */ + __IM uint32_t RESERVED4[3]; + __IOM uint32_t CMP1_SW; /*!< 0x00000090 Comparator 1 switch control */ + __IOM uint32_t CMP1_SW_CLEAR; /*!< 0x00000094 Comparator 1 switch control clear */ +} LPCOMP_V1_Type; /*!< Size = 152 (0x98) */ + + +/* LPCOMP.CONFIG */ +#define LPCOMP_CONFIG_LPREF_EN_Pos 30UL +#define LPCOMP_CONFIG_LPREF_EN_Msk 0x40000000UL +#define LPCOMP_CONFIG_ENABLED_Pos 31UL +#define LPCOMP_CONFIG_ENABLED_Msk 0x80000000UL +/* LPCOMP.STATUS */ +#define LPCOMP_STATUS_OUT0_Pos 0UL +#define LPCOMP_STATUS_OUT0_Msk 0x1UL +#define LPCOMP_STATUS_OUT1_Pos 16UL +#define LPCOMP_STATUS_OUT1_Msk 0x10000UL +/* LPCOMP.INTR */ +#define LPCOMP_INTR_COMP0_Pos 0UL +#define LPCOMP_INTR_COMP0_Msk 0x1UL +#define LPCOMP_INTR_COMP1_Pos 1UL +#define LPCOMP_INTR_COMP1_Msk 0x2UL +/* LPCOMP.INTR_SET */ +#define LPCOMP_INTR_SET_COMP0_Pos 0UL +#define LPCOMP_INTR_SET_COMP0_Msk 0x1UL +#define LPCOMP_INTR_SET_COMP1_Pos 1UL +#define LPCOMP_INTR_SET_COMP1_Msk 0x2UL +/* LPCOMP.INTR_MASK */ +#define LPCOMP_INTR_MASK_COMP0_MASK_Pos 0UL +#define LPCOMP_INTR_MASK_COMP0_MASK_Msk 0x1UL +#define LPCOMP_INTR_MASK_COMP1_MASK_Pos 1UL +#define LPCOMP_INTR_MASK_COMP1_MASK_Msk 0x2UL +/* LPCOMP.INTR_MASKED */ +#define LPCOMP_INTR_MASKED_COMP0_MASKED_Pos 0UL +#define LPCOMP_INTR_MASKED_COMP0_MASKED_Msk 0x1UL +#define LPCOMP_INTR_MASKED_COMP1_MASKED_Pos 1UL +#define LPCOMP_INTR_MASKED_COMP1_MASKED_Msk 0x2UL +/* LPCOMP.CMP0_CTRL */ +#define LPCOMP_CMP0_CTRL_MODE0_Pos 0UL +#define LPCOMP_CMP0_CTRL_MODE0_Msk 0x3UL +#define LPCOMP_CMP0_CTRL_HYST0_Pos 5UL +#define LPCOMP_CMP0_CTRL_HYST0_Msk 0x20UL +#define LPCOMP_CMP0_CTRL_INTTYPE0_Pos 6UL +#define LPCOMP_CMP0_CTRL_INTTYPE0_Msk 0xC0UL +#define LPCOMP_CMP0_CTRL_DSI_BYPASS0_Pos 10UL +#define LPCOMP_CMP0_CTRL_DSI_BYPASS0_Msk 0x400UL +#define LPCOMP_CMP0_CTRL_DSI_LEVEL0_Pos 11UL +#define LPCOMP_CMP0_CTRL_DSI_LEVEL0_Msk 0x800UL +/* LPCOMP.CMP0_SW */ +#define LPCOMP_CMP0_SW_CMP0_IP0_Pos 0UL +#define LPCOMP_CMP0_SW_CMP0_IP0_Msk 0x1UL +#define LPCOMP_CMP0_SW_CMP0_AP0_Pos 1UL +#define LPCOMP_CMP0_SW_CMP0_AP0_Msk 0x2UL +#define LPCOMP_CMP0_SW_CMP0_BP0_Pos 2UL +#define LPCOMP_CMP0_SW_CMP0_BP0_Msk 0x4UL +#define LPCOMP_CMP0_SW_CMP0_IN0_Pos 4UL +#define LPCOMP_CMP0_SW_CMP0_IN0_Msk 0x10UL +#define LPCOMP_CMP0_SW_CMP0_AN0_Pos 5UL +#define LPCOMP_CMP0_SW_CMP0_AN0_Msk 0x20UL +#define LPCOMP_CMP0_SW_CMP0_BN0_Pos 6UL +#define LPCOMP_CMP0_SW_CMP0_BN0_Msk 0x40UL +#define LPCOMP_CMP0_SW_CMP0_VN0_Pos 7UL +#define LPCOMP_CMP0_SW_CMP0_VN0_Msk 0x80UL +/* LPCOMP.CMP0_SW_CLEAR */ +#define LPCOMP_CMP0_SW_CLEAR_CMP0_IP0_Pos 0UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_IP0_Msk 0x1UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_AP0_Pos 1UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_AP0_Msk 0x2UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_BP0_Pos 2UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_BP0_Msk 0x4UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_IN0_Pos 4UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_IN0_Msk 0x10UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_AN0_Pos 5UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_AN0_Msk 0x20UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_BN0_Pos 6UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_BN0_Msk 0x40UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_VN0_Pos 7UL +#define LPCOMP_CMP0_SW_CLEAR_CMP0_VN0_Msk 0x80UL +/* LPCOMP.CMP1_CTRL */ +#define LPCOMP_CMP1_CTRL_MODE1_Pos 0UL +#define LPCOMP_CMP1_CTRL_MODE1_Msk 0x3UL +#define LPCOMP_CMP1_CTRL_HYST1_Pos 5UL +#define LPCOMP_CMP1_CTRL_HYST1_Msk 0x20UL +#define LPCOMP_CMP1_CTRL_INTTYPE1_Pos 6UL +#define LPCOMP_CMP1_CTRL_INTTYPE1_Msk 0xC0UL +#define LPCOMP_CMP1_CTRL_DSI_BYPASS1_Pos 10UL +#define LPCOMP_CMP1_CTRL_DSI_BYPASS1_Msk 0x400UL +#define LPCOMP_CMP1_CTRL_DSI_LEVEL1_Pos 11UL +#define LPCOMP_CMP1_CTRL_DSI_LEVEL1_Msk 0x800UL +/* LPCOMP.CMP1_SW */ +#define LPCOMP_CMP1_SW_CMP1_IP1_Pos 0UL +#define LPCOMP_CMP1_SW_CMP1_IP1_Msk 0x1UL +#define LPCOMP_CMP1_SW_CMP1_AP1_Pos 1UL +#define LPCOMP_CMP1_SW_CMP1_AP1_Msk 0x2UL +#define LPCOMP_CMP1_SW_CMP1_BP1_Pos 2UL +#define LPCOMP_CMP1_SW_CMP1_BP1_Msk 0x4UL +#define LPCOMP_CMP1_SW_CMP1_IN1_Pos 4UL +#define LPCOMP_CMP1_SW_CMP1_IN1_Msk 0x10UL +#define LPCOMP_CMP1_SW_CMP1_AN1_Pos 5UL +#define LPCOMP_CMP1_SW_CMP1_AN1_Msk 0x20UL +#define LPCOMP_CMP1_SW_CMP1_BN1_Pos 6UL +#define LPCOMP_CMP1_SW_CMP1_BN1_Msk 0x40UL +#define LPCOMP_CMP1_SW_CMP1_VN1_Pos 7UL +#define LPCOMP_CMP1_SW_CMP1_VN1_Msk 0x80UL +/* LPCOMP.CMP1_SW_CLEAR */ +#define LPCOMP_CMP1_SW_CLEAR_CMP1_IP1_Pos 0UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_IP1_Msk 0x1UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_AP1_Pos 1UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_AP1_Msk 0x2UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_BP1_Pos 2UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_BP1_Msk 0x4UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_IN1_Pos 4UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_IN1_Msk 0x10UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_AN1_Pos 5UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_AN1_Msk 0x20UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_BN1_Pos 6UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_BN1_Msk 0x40UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_VN1_Pos 7UL +#define LPCOMP_CMP1_SW_CLEAR_CMP1_VN1_Msk 0x80UL + + +#endif /* _CYIP_LPCOMP_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pass.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pass.h new file mode 100644 index 00000000000..000206db2bd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pass.h @@ -0,0 +1,139 @@ +/***************************************************************************//** +* \file cyip_pass.h +* +* \brief +* PASS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PASS_H_ +#define _CYIP_PASS_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PASS +*******************************************************************************/ + +#define PASS_AREF_SECTION_SIZE 0x00000100UL +#define PASS_SECTION_SIZE 0x00010000UL + +/** + * \brief AREF configuration (PASS_AREF) + */ +typedef struct { + __IOM uint32_t AREF_CTRL; /*!< 0x00000000 global AREF control */ + __IM uint32_t RESERVED[63]; +} PASS_AREF_V1_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief PASS top-level MMIO (DSABv2, INTR) (PASS) + */ +typedef struct { + __IM uint32_t INTR_CAUSE; /*!< 0x00000000 Interrupt cause register */ + __IM uint32_t RESERVED[895]; + PASS_AREF_V1_Type AREF; /*!< 0x00000E00 AREF configuration */ + __IOM uint32_t VREF_TRIM0; /*!< 0x00000F00 VREF Trim bits */ + __IOM uint32_t VREF_TRIM1; /*!< 0x00000F04 VREF Trim bits */ + __IOM uint32_t VREF_TRIM2; /*!< 0x00000F08 VREF Trim bits */ + __IOM uint32_t VREF_TRIM3; /*!< 0x00000F0C VREF Trim bits */ + __IOM uint32_t IZTAT_TRIM0; /*!< 0x00000F10 IZTAT Trim bits */ + __IOM uint32_t IZTAT_TRIM1; /*!< 0x00000F14 IZTAT Trim bits */ + __IOM uint32_t IPTAT_TRIM0; /*!< 0x00000F18 IPTAT Trim bits */ + __IOM uint32_t ICTAT_TRIM0; /*!< 0x00000F1C ICTAT Trim bits */ +} PASS_V1_Type; /*!< Size = 3872 (0xF20) */ + + +/* PASS_AREF.AREF_CTRL */ +#define PASS_AREF_AREF_CTRL_AREF_MODE_Pos 0UL +#define PASS_AREF_AREF_CTRL_AREF_MODE_Msk 0x1UL +#define PASS_AREF_AREF_CTRL_AREF_BIAS_SCALE_Pos 2UL +#define PASS_AREF_AREF_CTRL_AREF_BIAS_SCALE_Msk 0xCUL +#define PASS_AREF_AREF_CTRL_AREF_RMB_Pos 4UL +#define PASS_AREF_AREF_CTRL_AREF_RMB_Msk 0x70UL +#define PASS_AREF_AREF_CTRL_CTB_IPTAT_SCALE_Pos 7UL +#define PASS_AREF_AREF_CTRL_CTB_IPTAT_SCALE_Msk 0x80UL +#define PASS_AREF_AREF_CTRL_CTB_IPTAT_REDIRECT_Pos 8UL +#define PASS_AREF_AREF_CTRL_CTB_IPTAT_REDIRECT_Msk 0xFF00UL +#define PASS_AREF_AREF_CTRL_IZTAT_SEL_Pos 16UL +#define PASS_AREF_AREF_CTRL_IZTAT_SEL_Msk 0x10000UL +#define PASS_AREF_AREF_CTRL_CLOCK_PUMP_PERI_SEL_Pos 19UL +#define PASS_AREF_AREF_CTRL_CLOCK_PUMP_PERI_SEL_Msk 0x80000UL +#define PASS_AREF_AREF_CTRL_VREF_SEL_Pos 20UL +#define PASS_AREF_AREF_CTRL_VREF_SEL_Msk 0x300000UL +#define PASS_AREF_AREF_CTRL_DEEPSLEEP_MODE_Pos 28UL +#define PASS_AREF_AREF_CTRL_DEEPSLEEP_MODE_Msk 0x30000000UL +#define PASS_AREF_AREF_CTRL_DEEPSLEEP_ON_Pos 30UL +#define PASS_AREF_AREF_CTRL_DEEPSLEEP_ON_Msk 0x40000000UL +#define PASS_AREF_AREF_CTRL_ENABLED_Pos 31UL +#define PASS_AREF_AREF_CTRL_ENABLED_Msk 0x80000000UL + + +/* PASS.INTR_CAUSE */ +#define PASS_INTR_CAUSE_CTB0_INT_Pos 0UL +#define PASS_INTR_CAUSE_CTB0_INT_Msk 0x1UL +#define PASS_INTR_CAUSE_CTB1_INT_Pos 1UL +#define PASS_INTR_CAUSE_CTB1_INT_Msk 0x2UL +#define PASS_INTR_CAUSE_CTB2_INT_Pos 2UL +#define PASS_INTR_CAUSE_CTB2_INT_Msk 0x4UL +#define PASS_INTR_CAUSE_CTB3_INT_Pos 3UL +#define PASS_INTR_CAUSE_CTB3_INT_Msk 0x8UL +#define PASS_INTR_CAUSE_CTDAC0_INT_Pos 4UL +#define PASS_INTR_CAUSE_CTDAC0_INT_Msk 0x10UL +#define PASS_INTR_CAUSE_CTDAC1_INT_Pos 5UL +#define PASS_INTR_CAUSE_CTDAC1_INT_Msk 0x20UL +#define PASS_INTR_CAUSE_CTDAC2_INT_Pos 6UL +#define PASS_INTR_CAUSE_CTDAC2_INT_Msk 0x40UL +#define PASS_INTR_CAUSE_CTDAC3_INT_Pos 7UL +#define PASS_INTR_CAUSE_CTDAC3_INT_Msk 0x80UL +/* PASS.VREF_TRIM0 */ +#define PASS_VREF_TRIM0_VREF_ABS_TRIM_Pos 0UL +#define PASS_VREF_TRIM0_VREF_ABS_TRIM_Msk 0xFFUL +/* PASS.VREF_TRIM1 */ +#define PASS_VREF_TRIM1_VREF_TEMPCO_TRIM_Pos 0UL +#define PASS_VREF_TRIM1_VREF_TEMPCO_TRIM_Msk 0xFFUL +/* PASS.VREF_TRIM2 */ +#define PASS_VREF_TRIM2_VREF_CURV_TRIM_Pos 0UL +#define PASS_VREF_TRIM2_VREF_CURV_TRIM_Msk 0xFFUL +/* PASS.VREF_TRIM3 */ +#define PASS_VREF_TRIM3_VREF_ATTEN_TRIM_Pos 0UL +#define PASS_VREF_TRIM3_VREF_ATTEN_TRIM_Msk 0xFUL +/* PASS.IZTAT_TRIM0 */ +#define PASS_IZTAT_TRIM0_IZTAT_ABS_TRIM_Pos 0UL +#define PASS_IZTAT_TRIM0_IZTAT_ABS_TRIM_Msk 0xFFUL +/* PASS.IZTAT_TRIM1 */ +#define PASS_IZTAT_TRIM1_IZTAT_TC_TRIM_Pos 0UL +#define PASS_IZTAT_TRIM1_IZTAT_TC_TRIM_Msk 0xFFUL +/* PASS.IPTAT_TRIM0 */ +#define PASS_IPTAT_TRIM0_IPTAT_CORE_TRIM_Pos 0UL +#define PASS_IPTAT_TRIM0_IPTAT_CORE_TRIM_Msk 0xFUL +#define PASS_IPTAT_TRIM0_IPTAT_CTBM_TRIM_Pos 4UL +#define PASS_IPTAT_TRIM0_IPTAT_CTBM_TRIM_Msk 0xF0UL +/* PASS.ICTAT_TRIM0 */ +#define PASS_ICTAT_TRIM0_ICTAT_TRIM_Pos 0UL +#define PASS_ICTAT_TRIM0_ICTAT_TRIM_Msk 0xFUL + + +#endif /* _CYIP_PASS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pdm.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pdm.h new file mode 100644 index 00000000000..45bff05e83f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_pdm.h @@ -0,0 +1,170 @@ +/***************************************************************************//** +* \file cyip_pdm.h +* +* \brief +* PDM IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PDM_H_ +#define _CYIP_PDM_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM_SECTION_SIZE 0x00001000UL + +/** + * \brief PDM registers (PDM) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t CLOCK_CTL; /*!< 0x00000010 Clock control */ + __IOM uint32_t MODE_CTL; /*!< 0x00000014 Mode control */ + __IOM uint32_t DATA_CTL; /*!< 0x00000018 Data control */ + __IM uint32_t RESERVED1; + __IOM uint32_t CMD; /*!< 0x00000020 Command */ + __IM uint32_t RESERVED2[7]; + __IOM uint32_t TR_CTL; /*!< 0x00000040 Trigger control */ + __IM uint32_t RESERVED3[175]; + __IOM uint32_t RX_FIFO_CTL; /*!< 0x00000300 RX FIFO control */ + __IM uint32_t RX_FIFO_STATUS; /*!< 0x00000304 RX FIFO status */ + __IM uint32_t RX_FIFO_RD; /*!< 0x00000308 RX FIFO read */ + __IM uint32_t RX_FIFO_RD_SILENT; /*!< 0x0000030C RX FIFO silent read */ + __IM uint32_t RESERVED4[764]; + __IOM uint32_t INTR; /*!< 0x00000F00 Interrupt register */ + __IOM uint32_t INTR_SET; /*!< 0x00000F04 Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000F08 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x00000F0C Interrupt masked register */ +} PDM_V1_Type; /*!< Size = 3856 (0xF10) */ + + +/* PDM.CTL */ +#define PDM_CTL_PGA_R_Pos 0UL +#define PDM_CTL_PGA_R_Msk 0xFUL +#define PDM_CTL_PGA_L_Pos 8UL +#define PDM_CTL_PGA_L_Msk 0xF00UL +#define PDM_CTL_SOFT_MUTE_Pos 16UL +#define PDM_CTL_SOFT_MUTE_Msk 0x10000UL +#define PDM_CTL_STEP_SEL_Pos 17UL +#define PDM_CTL_STEP_SEL_Msk 0x20000UL +#define PDM_CTL_ENABLED_Pos 31UL +#define PDM_CTL_ENABLED_Msk 0x80000000UL +/* PDM.CLOCK_CTL */ +#define PDM_CLOCK_CTL_CLK_CLOCK_DIV_Pos 0UL +#define PDM_CLOCK_CTL_CLK_CLOCK_DIV_Msk 0x3UL +#define PDM_CLOCK_CTL_MCLKQ_CLOCK_DIV_Pos 4UL +#define PDM_CLOCK_CTL_MCLKQ_CLOCK_DIV_Msk 0x30UL +#define PDM_CLOCK_CTL_CKO_CLOCK_DIV_Pos 8UL +#define PDM_CLOCK_CTL_CKO_CLOCK_DIV_Msk 0xF00UL +#define PDM_CLOCK_CTL_SINC_RATE_Pos 16UL +#define PDM_CLOCK_CTL_SINC_RATE_Msk 0x7F0000UL +/* PDM.MODE_CTL */ +#define PDM_MODE_CTL_PCM_CH_SET_Pos 0UL +#define PDM_MODE_CTL_PCM_CH_SET_Msk 0x3UL +#define PDM_MODE_CTL_SWAP_LR_Pos 2UL +#define PDM_MODE_CTL_SWAP_LR_Msk 0x4UL +#define PDM_MODE_CTL_S_CYCLES_Pos 8UL +#define PDM_MODE_CTL_S_CYCLES_Msk 0x700UL +#define PDM_MODE_CTL_CKO_DELAY_Pos 16UL +#define PDM_MODE_CTL_CKO_DELAY_Msk 0x70000UL +#define PDM_MODE_CTL_HPF_GAIN_Pos 24UL +#define PDM_MODE_CTL_HPF_GAIN_Msk 0xF000000UL +#define PDM_MODE_CTL_HPF_EN_N_Pos 28UL +#define PDM_MODE_CTL_HPF_EN_N_Msk 0x10000000UL +/* PDM.DATA_CTL */ +#define PDM_DATA_CTL_WORD_LEN_Pos 0UL +#define PDM_DATA_CTL_WORD_LEN_Msk 0x3UL +#define PDM_DATA_CTL_BIT_EXTENSION_Pos 8UL +#define PDM_DATA_CTL_BIT_EXTENSION_Msk 0x100UL +/* PDM.CMD */ +#define PDM_CMD_STREAM_EN_Pos 0UL +#define PDM_CMD_STREAM_EN_Msk 0x1UL +/* PDM.TR_CTL */ +#define PDM_TR_CTL_RX_REQ_EN_Pos 16UL +#define PDM_TR_CTL_RX_REQ_EN_Msk 0x10000UL +/* PDM.RX_FIFO_CTL */ +#define PDM_RX_FIFO_CTL_TRIGGER_LEVEL_Pos 0UL +#define PDM_RX_FIFO_CTL_TRIGGER_LEVEL_Msk 0xFFUL +#define PDM_RX_FIFO_CTL_CLEAR_Pos 16UL +#define PDM_RX_FIFO_CTL_CLEAR_Msk 0x10000UL +#define PDM_RX_FIFO_CTL_FREEZE_Pos 17UL +#define PDM_RX_FIFO_CTL_FREEZE_Msk 0x20000UL +/* PDM.RX_FIFO_STATUS */ +#define PDM_RX_FIFO_STATUS_USED_Pos 0UL +#define PDM_RX_FIFO_STATUS_USED_Msk 0xFFUL +#define PDM_RX_FIFO_STATUS_RD_PTR_Pos 16UL +#define PDM_RX_FIFO_STATUS_RD_PTR_Msk 0xFF0000UL +#define PDM_RX_FIFO_STATUS_WR_PTR_Pos 24UL +#define PDM_RX_FIFO_STATUS_WR_PTR_Msk 0xFF000000UL +/* PDM.RX_FIFO_RD */ +#define PDM_RX_FIFO_RD_DATA_Pos 0UL +#define PDM_RX_FIFO_RD_DATA_Msk 0xFFFFFFFFUL +/* PDM.RX_FIFO_RD_SILENT */ +#define PDM_RX_FIFO_RD_SILENT_DATA_Pos 0UL +#define PDM_RX_FIFO_RD_SILENT_DATA_Msk 0xFFFFFFFFUL +/* PDM.INTR */ +#define PDM_INTR_RX_TRIGGER_Pos 16UL +#define PDM_INTR_RX_TRIGGER_Msk 0x10000UL +#define PDM_INTR_RX_NOT_EMPTY_Pos 18UL +#define PDM_INTR_RX_NOT_EMPTY_Msk 0x40000UL +#define PDM_INTR_RX_OVERFLOW_Pos 21UL +#define PDM_INTR_RX_OVERFLOW_Msk 0x200000UL +#define PDM_INTR_RX_UNDERFLOW_Pos 22UL +#define PDM_INTR_RX_UNDERFLOW_Msk 0x400000UL +/* PDM.INTR_SET */ +#define PDM_INTR_SET_RX_TRIGGER_Pos 16UL +#define PDM_INTR_SET_RX_TRIGGER_Msk 0x10000UL +#define PDM_INTR_SET_RX_NOT_EMPTY_Pos 18UL +#define PDM_INTR_SET_RX_NOT_EMPTY_Msk 0x40000UL +#define PDM_INTR_SET_RX_OVERFLOW_Pos 21UL +#define PDM_INTR_SET_RX_OVERFLOW_Msk 0x200000UL +#define PDM_INTR_SET_RX_UNDERFLOW_Pos 22UL +#define PDM_INTR_SET_RX_UNDERFLOW_Msk 0x400000UL +/* PDM.INTR_MASK */ +#define PDM_INTR_MASK_RX_TRIGGER_Pos 16UL +#define PDM_INTR_MASK_RX_TRIGGER_Msk 0x10000UL +#define PDM_INTR_MASK_RX_NOT_EMPTY_Pos 18UL +#define PDM_INTR_MASK_RX_NOT_EMPTY_Msk 0x40000UL +#define PDM_INTR_MASK_RX_OVERFLOW_Pos 21UL +#define PDM_INTR_MASK_RX_OVERFLOW_Msk 0x200000UL +#define PDM_INTR_MASK_RX_UNDERFLOW_Pos 22UL +#define PDM_INTR_MASK_RX_UNDERFLOW_Msk 0x400000UL +/* PDM.INTR_MASKED */ +#define PDM_INTR_MASKED_RX_TRIGGER_Pos 16UL +#define PDM_INTR_MASKED_RX_TRIGGER_Msk 0x10000UL +#define PDM_INTR_MASKED_RX_NOT_EMPTY_Pos 18UL +#define PDM_INTR_MASKED_RX_NOT_EMPTY_Msk 0x40000UL +#define PDM_INTR_MASKED_RX_OVERFLOW_Pos 21UL +#define PDM_INTR_MASKED_RX_OVERFLOW_Msk 0x200000UL +#define PDM_INTR_MASKED_RX_UNDERFLOW_Pos 22UL +#define PDM_INTR_MASKED_RX_UNDERFLOW_Msk 0x400000UL + + +#endif /* _CYIP_PDM_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri.h new file mode 100644 index 00000000000..41678c4b25d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri.h @@ -0,0 +1,491 @@ +/***************************************************************************//** +* \file cyip_peri.h +* +* \brief +* PERI IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PERI_H_ +#define _CYIP_PERI_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_GR_SECTION_SIZE 0x00000040UL +#define PERI_TR_GR_SECTION_SIZE 0x00000200UL +#define PERI_PPU_PR_SECTION_SIZE 0x00000040UL +#define PERI_PPU_GR_SECTION_SIZE 0x00000040UL +#define PERI_GR_PPU_SL_SECTION_SIZE 0x00000040UL +#define PERI_GR_PPU_RG_SECTION_SIZE 0x00000040UL +#define PERI_SECTION_SIZE 0x00010000UL + +/** + * \brief Peripheral group structure (PERI_GR) + */ +typedef struct { + __IOM uint32_t CLOCK_CTL; /*!< 0x00000000 Clock control */ + __IM uint32_t RESERVED[7]; + __IOM uint32_t SL_CTL; /*!< 0x00000020 Slave control */ + __IOM uint32_t TIMEOUT_CTL; /*!< 0x00000024 Timeout control */ + __IM uint32_t RESERVED1[6]; +} PERI_GR_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Trigger group (PERI_TR_GR) + */ +typedef struct { + __IOM uint32_t TR_OUT_CTL[128]; /*!< 0x00000000 Trigger control register */ +} PERI_TR_GR_V1_Type; /*!< Size = 512 (0x200) */ + +/** + * \brief PPU structure with programmable address (PERI_PPU_PR) + */ +typedef struct { + __IOM uint32_t ADDR0; /*!< 0x00000000 PPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 PPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 PPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 PPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PERI_PPU_PR_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief PPU structure with fixed/constant address for a peripheral group (PERI_PPU_GR) + */ +typedef struct { + __IM uint32_t ADDR0; /*!< 0x00000000 PPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 PPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 PPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 PPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PERI_PPU_GR_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief PPU structure with fixed/constant address for a specific slave (PERI_GR_PPU_SL) + */ +typedef struct { + __IM uint32_t ADDR0; /*!< 0x00000000 PPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 PPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 PPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 PPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PERI_GR_PPU_SL_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief PPU structure with fixed/constant address for a specific region (PERI_GR_PPU_RG) + */ +typedef struct { + __IM uint32_t ADDR0; /*!< 0x00000000 PPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 PPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 PPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 PPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PERI_GR_PPU_RG_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Peripheral interconnect (PERI) + */ +typedef struct { + PERI_GR_V1_Type GR[16]; /*!< 0x00000000 Peripheral group structure */ + __IOM uint32_t DIV_CMD; /*!< 0x00000400 Divider command register */ + __IM uint32_t RESERVED[255]; + __IOM uint32_t DIV_8_CTL[64]; /*!< 0x00000800 Divider control register (for 8.0 divider) */ + __IOM uint32_t DIV_16_CTL[64]; /*!< 0x00000900 Divider control register (for 16.0 divider) */ + __IOM uint32_t DIV_16_5_CTL[64]; /*!< 0x00000A00 Divider control register (for 16.5 divider) */ + __IOM uint32_t DIV_24_5_CTL[63]; /*!< 0x00000B00 Divider control register (for 24.5 divider) */ + __IM uint32_t RESERVED1; + __IOM uint32_t CLOCK_CTL[128]; /*!< 0x00000C00 Clock control register */ + __IM uint32_t RESERVED2[128]; + __IOM uint32_t TR_CMD; /*!< 0x00001000 Trigger command register */ + __IM uint32_t RESERVED3[1023]; + PERI_TR_GR_V1_Type TR_GR[16]; /*!< 0x00002000 Trigger group */ + PERI_PPU_PR_V1_Type PPU_PR[32]; /*!< 0x00004000 PPU structure with programmable address */ + __IM uint32_t RESERVED4[512]; + PERI_PPU_GR_V1_Type PPU_GR[16]; /*!< 0x00005000 PPU structure with fixed/constant address for a peripheral + group */ +} PERI_V1_Type; /*!< Size = 21504 (0x5400) */ + + +/* PERI_GR.CLOCK_CTL */ +#define PERI_GR_CLOCK_CTL_INT8_DIV_Pos 8UL +#define PERI_GR_CLOCK_CTL_INT8_DIV_Msk 0xFF00UL +/* PERI_GR.SL_CTL */ +#define PERI_GR_SL_CTL_ENABLED_0_Pos 0UL +#define PERI_GR_SL_CTL_ENABLED_0_Msk 0x1UL +#define PERI_GR_SL_CTL_ENABLED_1_Pos 1UL +#define PERI_GR_SL_CTL_ENABLED_1_Msk 0x2UL +#define PERI_GR_SL_CTL_ENABLED_2_Pos 2UL +#define PERI_GR_SL_CTL_ENABLED_2_Msk 0x4UL +#define PERI_GR_SL_CTL_ENABLED_3_Pos 3UL +#define PERI_GR_SL_CTL_ENABLED_3_Msk 0x8UL +#define PERI_GR_SL_CTL_ENABLED_4_Pos 4UL +#define PERI_GR_SL_CTL_ENABLED_4_Msk 0x10UL +#define PERI_GR_SL_CTL_ENABLED_5_Pos 5UL +#define PERI_GR_SL_CTL_ENABLED_5_Msk 0x20UL +#define PERI_GR_SL_CTL_ENABLED_6_Pos 6UL +#define PERI_GR_SL_CTL_ENABLED_6_Msk 0x40UL +#define PERI_GR_SL_CTL_ENABLED_7_Pos 7UL +#define PERI_GR_SL_CTL_ENABLED_7_Msk 0x80UL +#define PERI_GR_SL_CTL_ENABLED_8_Pos 8UL +#define PERI_GR_SL_CTL_ENABLED_8_Msk 0x100UL +#define PERI_GR_SL_CTL_ENABLED_9_Pos 9UL +#define PERI_GR_SL_CTL_ENABLED_9_Msk 0x200UL +#define PERI_GR_SL_CTL_ENABLED_10_Pos 10UL +#define PERI_GR_SL_CTL_ENABLED_10_Msk 0x400UL +#define PERI_GR_SL_CTL_ENABLED_11_Pos 11UL +#define PERI_GR_SL_CTL_ENABLED_11_Msk 0x800UL +#define PERI_GR_SL_CTL_ENABLED_12_Pos 12UL +#define PERI_GR_SL_CTL_ENABLED_12_Msk 0x1000UL +#define PERI_GR_SL_CTL_ENABLED_13_Pos 13UL +#define PERI_GR_SL_CTL_ENABLED_13_Msk 0x2000UL +#define PERI_GR_SL_CTL_ENABLED_14_Pos 14UL +#define PERI_GR_SL_CTL_ENABLED_14_Msk 0x4000UL +#define PERI_GR_SL_CTL_ENABLED_15_Pos 15UL +#define PERI_GR_SL_CTL_ENABLED_15_Msk 0x8000UL +/* PERI_GR.TIMEOUT_CTL */ +#define PERI_GR_TIMEOUT_CTL_TIMEOUT_Pos 0UL +#define PERI_GR_TIMEOUT_CTL_TIMEOUT_Msk 0xFFFFUL + + +/* PERI_TR_GR.TR_OUT_CTL */ +#define PERI_TR_GR_TR_OUT_CTL_TR_SEL_Pos 0UL +#define PERI_TR_GR_TR_OUT_CTL_TR_SEL_Msk 0xFFUL +#define PERI_TR_GR_TR_OUT_CTL_TR_INV_Pos 8UL +#define PERI_TR_GR_TR_OUT_CTL_TR_INV_Msk 0x100UL +#define PERI_TR_GR_TR_OUT_CTL_TR_EDGE_Pos 9UL +#define PERI_TR_GR_TR_OUT_CTL_TR_EDGE_Msk 0x200UL + + +/* PERI_PPU_PR.ADDR0 */ +#define PERI_PPU_PR_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PERI_PPU_PR_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_PPU_PR_ADDR0_ADDR24_Pos 8UL +#define PERI_PPU_PR_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PERI_PPU_PR.ATT0 */ +#define PERI_PPU_PR_ATT0_UR_Pos 0UL +#define PERI_PPU_PR_ATT0_UR_Msk 0x1UL +#define PERI_PPU_PR_ATT0_UW_Pos 1UL +#define PERI_PPU_PR_ATT0_UW_Msk 0x2UL +#define PERI_PPU_PR_ATT0_UX_Pos 2UL +#define PERI_PPU_PR_ATT0_UX_Msk 0x4UL +#define PERI_PPU_PR_ATT0_PR_Pos 3UL +#define PERI_PPU_PR_ATT0_PR_Msk 0x8UL +#define PERI_PPU_PR_ATT0_PW_Pos 4UL +#define PERI_PPU_PR_ATT0_PW_Msk 0x10UL +#define PERI_PPU_PR_ATT0_PX_Pos 5UL +#define PERI_PPU_PR_ATT0_PX_Msk 0x20UL +#define PERI_PPU_PR_ATT0_NS_Pos 6UL +#define PERI_PPU_PR_ATT0_NS_Msk 0x40UL +#define PERI_PPU_PR_ATT0_PC_MASK_0_Pos 8UL +#define PERI_PPU_PR_ATT0_PC_MASK_0_Msk 0x100UL +#define PERI_PPU_PR_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PERI_PPU_PR_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_PPU_PR_ATT0_REGION_SIZE_Pos 24UL +#define PERI_PPU_PR_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PERI_PPU_PR_ATT0_PC_MATCH_Pos 30UL +#define PERI_PPU_PR_ATT0_PC_MATCH_Msk 0x40000000UL +#define PERI_PPU_PR_ATT0_ENABLED_Pos 31UL +#define PERI_PPU_PR_ATT0_ENABLED_Msk 0x80000000UL +/* PERI_PPU_PR.ADDR1 */ +#define PERI_PPU_PR_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PERI_PPU_PR_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_PPU_PR_ADDR1_ADDR24_Pos 8UL +#define PERI_PPU_PR_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PERI_PPU_PR.ATT1 */ +#define PERI_PPU_PR_ATT1_UR_Pos 0UL +#define PERI_PPU_PR_ATT1_UR_Msk 0x1UL +#define PERI_PPU_PR_ATT1_UW_Pos 1UL +#define PERI_PPU_PR_ATT1_UW_Msk 0x2UL +#define PERI_PPU_PR_ATT1_UX_Pos 2UL +#define PERI_PPU_PR_ATT1_UX_Msk 0x4UL +#define PERI_PPU_PR_ATT1_PR_Pos 3UL +#define PERI_PPU_PR_ATT1_PR_Msk 0x8UL +#define PERI_PPU_PR_ATT1_PW_Pos 4UL +#define PERI_PPU_PR_ATT1_PW_Msk 0x10UL +#define PERI_PPU_PR_ATT1_PX_Pos 5UL +#define PERI_PPU_PR_ATT1_PX_Msk 0x20UL +#define PERI_PPU_PR_ATT1_NS_Pos 6UL +#define PERI_PPU_PR_ATT1_NS_Msk 0x40UL +#define PERI_PPU_PR_ATT1_PC_MASK_0_Pos 8UL +#define PERI_PPU_PR_ATT1_PC_MASK_0_Msk 0x100UL +#define PERI_PPU_PR_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PERI_PPU_PR_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_PPU_PR_ATT1_REGION_SIZE_Pos 24UL +#define PERI_PPU_PR_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PERI_PPU_PR_ATT1_PC_MATCH_Pos 30UL +#define PERI_PPU_PR_ATT1_PC_MATCH_Msk 0x40000000UL +#define PERI_PPU_PR_ATT1_ENABLED_Pos 31UL +#define PERI_PPU_PR_ATT1_ENABLED_Msk 0x80000000UL + + +/* PERI_PPU_GR.ADDR0 */ +#define PERI_PPU_GR_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PERI_PPU_GR_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_PPU_GR_ADDR0_ADDR24_Pos 8UL +#define PERI_PPU_GR_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PERI_PPU_GR.ATT0 */ +#define PERI_PPU_GR_ATT0_UR_Pos 0UL +#define PERI_PPU_GR_ATT0_UR_Msk 0x1UL +#define PERI_PPU_GR_ATT0_UW_Pos 1UL +#define PERI_PPU_GR_ATT0_UW_Msk 0x2UL +#define PERI_PPU_GR_ATT0_UX_Pos 2UL +#define PERI_PPU_GR_ATT0_UX_Msk 0x4UL +#define PERI_PPU_GR_ATT0_PR_Pos 3UL +#define PERI_PPU_GR_ATT0_PR_Msk 0x8UL +#define PERI_PPU_GR_ATT0_PW_Pos 4UL +#define PERI_PPU_GR_ATT0_PW_Msk 0x10UL +#define PERI_PPU_GR_ATT0_PX_Pos 5UL +#define PERI_PPU_GR_ATT0_PX_Msk 0x20UL +#define PERI_PPU_GR_ATT0_NS_Pos 6UL +#define PERI_PPU_GR_ATT0_NS_Msk 0x40UL +#define PERI_PPU_GR_ATT0_PC_MASK_0_Pos 8UL +#define PERI_PPU_GR_ATT0_PC_MASK_0_Msk 0x100UL +#define PERI_PPU_GR_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PERI_PPU_GR_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_PPU_GR_ATT0_REGION_SIZE_Pos 24UL +#define PERI_PPU_GR_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PERI_PPU_GR_ATT0_PC_MATCH_Pos 30UL +#define PERI_PPU_GR_ATT0_PC_MATCH_Msk 0x40000000UL +#define PERI_PPU_GR_ATT0_ENABLED_Pos 31UL +#define PERI_PPU_GR_ATT0_ENABLED_Msk 0x80000000UL +/* PERI_PPU_GR.ADDR1 */ +#define PERI_PPU_GR_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PERI_PPU_GR_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_PPU_GR_ADDR1_ADDR24_Pos 8UL +#define PERI_PPU_GR_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PERI_PPU_GR.ATT1 */ +#define PERI_PPU_GR_ATT1_UR_Pos 0UL +#define PERI_PPU_GR_ATT1_UR_Msk 0x1UL +#define PERI_PPU_GR_ATT1_UW_Pos 1UL +#define PERI_PPU_GR_ATT1_UW_Msk 0x2UL +#define PERI_PPU_GR_ATT1_UX_Pos 2UL +#define PERI_PPU_GR_ATT1_UX_Msk 0x4UL +#define PERI_PPU_GR_ATT1_PR_Pos 3UL +#define PERI_PPU_GR_ATT1_PR_Msk 0x8UL +#define PERI_PPU_GR_ATT1_PW_Pos 4UL +#define PERI_PPU_GR_ATT1_PW_Msk 0x10UL +#define PERI_PPU_GR_ATT1_PX_Pos 5UL +#define PERI_PPU_GR_ATT1_PX_Msk 0x20UL +#define PERI_PPU_GR_ATT1_NS_Pos 6UL +#define PERI_PPU_GR_ATT1_NS_Msk 0x40UL +#define PERI_PPU_GR_ATT1_PC_MASK_0_Pos 8UL +#define PERI_PPU_GR_ATT1_PC_MASK_0_Msk 0x100UL +#define PERI_PPU_GR_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PERI_PPU_GR_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_PPU_GR_ATT1_REGION_SIZE_Pos 24UL +#define PERI_PPU_GR_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PERI_PPU_GR_ATT1_PC_MATCH_Pos 30UL +#define PERI_PPU_GR_ATT1_PC_MATCH_Msk 0x40000000UL +#define PERI_PPU_GR_ATT1_ENABLED_Pos 31UL +#define PERI_PPU_GR_ATT1_ENABLED_Msk 0x80000000UL + + +/* PERI_GR_PPU_SL.ADDR0 */ +#define PERI_GR_PPU_SL_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PERI_GR_PPU_SL_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_GR_PPU_SL_ADDR0_ADDR24_Pos 8UL +#define PERI_GR_PPU_SL_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PERI_GR_PPU_SL.ATT0 */ +#define PERI_GR_PPU_SL_ATT0_UR_Pos 0UL +#define PERI_GR_PPU_SL_ATT0_UR_Msk 0x1UL +#define PERI_GR_PPU_SL_ATT0_UW_Pos 1UL +#define PERI_GR_PPU_SL_ATT0_UW_Msk 0x2UL +#define PERI_GR_PPU_SL_ATT0_UX_Pos 2UL +#define PERI_GR_PPU_SL_ATT0_UX_Msk 0x4UL +#define PERI_GR_PPU_SL_ATT0_PR_Pos 3UL +#define PERI_GR_PPU_SL_ATT0_PR_Msk 0x8UL +#define PERI_GR_PPU_SL_ATT0_PW_Pos 4UL +#define PERI_GR_PPU_SL_ATT0_PW_Msk 0x10UL +#define PERI_GR_PPU_SL_ATT0_PX_Pos 5UL +#define PERI_GR_PPU_SL_ATT0_PX_Msk 0x20UL +#define PERI_GR_PPU_SL_ATT0_NS_Pos 6UL +#define PERI_GR_PPU_SL_ATT0_NS_Msk 0x40UL +#define PERI_GR_PPU_SL_ATT0_PC_MASK_0_Pos 8UL +#define PERI_GR_PPU_SL_ATT0_PC_MASK_0_Msk 0x100UL +#define PERI_GR_PPU_SL_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PERI_GR_PPU_SL_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_GR_PPU_SL_ATT0_REGION_SIZE_Pos 24UL +#define PERI_GR_PPU_SL_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PERI_GR_PPU_SL_ATT0_PC_MATCH_Pos 30UL +#define PERI_GR_PPU_SL_ATT0_PC_MATCH_Msk 0x40000000UL +#define PERI_GR_PPU_SL_ATT0_ENABLED_Pos 31UL +#define PERI_GR_PPU_SL_ATT0_ENABLED_Msk 0x80000000UL +/* PERI_GR_PPU_SL.ADDR1 */ +#define PERI_GR_PPU_SL_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PERI_GR_PPU_SL_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_GR_PPU_SL_ADDR1_ADDR24_Pos 8UL +#define PERI_GR_PPU_SL_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PERI_GR_PPU_SL.ATT1 */ +#define PERI_GR_PPU_SL_ATT1_UR_Pos 0UL +#define PERI_GR_PPU_SL_ATT1_UR_Msk 0x1UL +#define PERI_GR_PPU_SL_ATT1_UW_Pos 1UL +#define PERI_GR_PPU_SL_ATT1_UW_Msk 0x2UL +#define PERI_GR_PPU_SL_ATT1_UX_Pos 2UL +#define PERI_GR_PPU_SL_ATT1_UX_Msk 0x4UL +#define PERI_GR_PPU_SL_ATT1_PR_Pos 3UL +#define PERI_GR_PPU_SL_ATT1_PR_Msk 0x8UL +#define PERI_GR_PPU_SL_ATT1_PW_Pos 4UL +#define PERI_GR_PPU_SL_ATT1_PW_Msk 0x10UL +#define PERI_GR_PPU_SL_ATT1_PX_Pos 5UL +#define PERI_GR_PPU_SL_ATT1_PX_Msk 0x20UL +#define PERI_GR_PPU_SL_ATT1_NS_Pos 6UL +#define PERI_GR_PPU_SL_ATT1_NS_Msk 0x40UL +#define PERI_GR_PPU_SL_ATT1_PC_MASK_0_Pos 8UL +#define PERI_GR_PPU_SL_ATT1_PC_MASK_0_Msk 0x100UL +#define PERI_GR_PPU_SL_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PERI_GR_PPU_SL_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_GR_PPU_SL_ATT1_REGION_SIZE_Pos 24UL +#define PERI_GR_PPU_SL_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PERI_GR_PPU_SL_ATT1_PC_MATCH_Pos 30UL +#define PERI_GR_PPU_SL_ATT1_PC_MATCH_Msk 0x40000000UL +#define PERI_GR_PPU_SL_ATT1_ENABLED_Pos 31UL +#define PERI_GR_PPU_SL_ATT1_ENABLED_Msk 0x80000000UL + + +/* PERI_GR_PPU_RG.ADDR0 */ +#define PERI_GR_PPU_RG_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PERI_GR_PPU_RG_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_GR_PPU_RG_ADDR0_ADDR24_Pos 8UL +#define PERI_GR_PPU_RG_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PERI_GR_PPU_RG.ATT0 */ +#define PERI_GR_PPU_RG_ATT0_UR_Pos 0UL +#define PERI_GR_PPU_RG_ATT0_UR_Msk 0x1UL +#define PERI_GR_PPU_RG_ATT0_UW_Pos 1UL +#define PERI_GR_PPU_RG_ATT0_UW_Msk 0x2UL +#define PERI_GR_PPU_RG_ATT0_UX_Pos 2UL +#define PERI_GR_PPU_RG_ATT0_UX_Msk 0x4UL +#define PERI_GR_PPU_RG_ATT0_PR_Pos 3UL +#define PERI_GR_PPU_RG_ATT0_PR_Msk 0x8UL +#define PERI_GR_PPU_RG_ATT0_PW_Pos 4UL +#define PERI_GR_PPU_RG_ATT0_PW_Msk 0x10UL +#define PERI_GR_PPU_RG_ATT0_PX_Pos 5UL +#define PERI_GR_PPU_RG_ATT0_PX_Msk 0x20UL +#define PERI_GR_PPU_RG_ATT0_NS_Pos 6UL +#define PERI_GR_PPU_RG_ATT0_NS_Msk 0x40UL +#define PERI_GR_PPU_RG_ATT0_PC_MASK_0_Pos 8UL +#define PERI_GR_PPU_RG_ATT0_PC_MASK_0_Msk 0x100UL +#define PERI_GR_PPU_RG_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PERI_GR_PPU_RG_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_GR_PPU_RG_ATT0_REGION_SIZE_Pos 24UL +#define PERI_GR_PPU_RG_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PERI_GR_PPU_RG_ATT0_PC_MATCH_Pos 30UL +#define PERI_GR_PPU_RG_ATT0_PC_MATCH_Msk 0x40000000UL +#define PERI_GR_PPU_RG_ATT0_ENABLED_Pos 31UL +#define PERI_GR_PPU_RG_ATT0_ENABLED_Msk 0x80000000UL +/* PERI_GR_PPU_RG.ADDR1 */ +#define PERI_GR_PPU_RG_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PERI_GR_PPU_RG_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PERI_GR_PPU_RG_ADDR1_ADDR24_Pos 8UL +#define PERI_GR_PPU_RG_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PERI_GR_PPU_RG.ATT1 */ +#define PERI_GR_PPU_RG_ATT1_UR_Pos 0UL +#define PERI_GR_PPU_RG_ATT1_UR_Msk 0x1UL +#define PERI_GR_PPU_RG_ATT1_UW_Pos 1UL +#define PERI_GR_PPU_RG_ATT1_UW_Msk 0x2UL +#define PERI_GR_PPU_RG_ATT1_UX_Pos 2UL +#define PERI_GR_PPU_RG_ATT1_UX_Msk 0x4UL +#define PERI_GR_PPU_RG_ATT1_PR_Pos 3UL +#define PERI_GR_PPU_RG_ATT1_PR_Msk 0x8UL +#define PERI_GR_PPU_RG_ATT1_PW_Pos 4UL +#define PERI_GR_PPU_RG_ATT1_PW_Msk 0x10UL +#define PERI_GR_PPU_RG_ATT1_PX_Pos 5UL +#define PERI_GR_PPU_RG_ATT1_PX_Msk 0x20UL +#define PERI_GR_PPU_RG_ATT1_NS_Pos 6UL +#define PERI_GR_PPU_RG_ATT1_NS_Msk 0x40UL +#define PERI_GR_PPU_RG_ATT1_PC_MASK_0_Pos 8UL +#define PERI_GR_PPU_RG_ATT1_PC_MASK_0_Msk 0x100UL +#define PERI_GR_PPU_RG_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PERI_GR_PPU_RG_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PERI_GR_PPU_RG_ATT1_REGION_SIZE_Pos 24UL +#define PERI_GR_PPU_RG_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PERI_GR_PPU_RG_ATT1_PC_MATCH_Pos 30UL +#define PERI_GR_PPU_RG_ATT1_PC_MATCH_Msk 0x40000000UL +#define PERI_GR_PPU_RG_ATT1_ENABLED_Pos 31UL +#define PERI_GR_PPU_RG_ATT1_ENABLED_Msk 0x80000000UL + + +/* PERI.DIV_CMD */ +#define PERI_DIV_CMD_DIV_SEL_Pos 0UL +#define PERI_DIV_CMD_DIV_SEL_Msk 0x3FUL +#define PERI_DIV_CMD_TYPE_SEL_Pos 6UL +#define PERI_DIV_CMD_TYPE_SEL_Msk 0xC0UL +#define PERI_DIV_CMD_PA_DIV_SEL_Pos 8UL +#define PERI_DIV_CMD_PA_DIV_SEL_Msk 0x3F00UL +#define PERI_DIV_CMD_PA_TYPE_SEL_Pos 14UL +#define PERI_DIV_CMD_PA_TYPE_SEL_Msk 0xC000UL +#define PERI_DIV_CMD_DISABLE_Pos 30UL +#define PERI_DIV_CMD_DISABLE_Msk 0x40000000UL +#define PERI_DIV_CMD_ENABLE_Pos 31UL +#define PERI_DIV_CMD_ENABLE_Msk 0x80000000UL +/* PERI.DIV_8_CTL */ +#define PERI_DIV_8_CTL_EN_Pos 0UL +#define PERI_DIV_8_CTL_EN_Msk 0x1UL +#define PERI_DIV_8_CTL_INT8_DIV_Pos 8UL +#define PERI_DIV_8_CTL_INT8_DIV_Msk 0xFF00UL +/* PERI.DIV_16_CTL */ +#define PERI_DIV_16_CTL_EN_Pos 0UL +#define PERI_DIV_16_CTL_EN_Msk 0x1UL +#define PERI_DIV_16_CTL_INT16_DIV_Pos 8UL +#define PERI_DIV_16_CTL_INT16_DIV_Msk 0xFFFF00UL +/* PERI.DIV_16_5_CTL */ +#define PERI_DIV_16_5_CTL_EN_Pos 0UL +#define PERI_DIV_16_5_CTL_EN_Msk 0x1UL +#define PERI_DIV_16_5_CTL_FRAC5_DIV_Pos 3UL +#define PERI_DIV_16_5_CTL_FRAC5_DIV_Msk 0xF8UL +#define PERI_DIV_16_5_CTL_INT16_DIV_Pos 8UL +#define PERI_DIV_16_5_CTL_INT16_DIV_Msk 0xFFFF00UL +/* PERI.DIV_24_5_CTL */ +#define PERI_DIV_24_5_CTL_EN_Pos 0UL +#define PERI_DIV_24_5_CTL_EN_Msk 0x1UL +#define PERI_DIV_24_5_CTL_FRAC5_DIV_Pos 3UL +#define PERI_DIV_24_5_CTL_FRAC5_DIV_Msk 0xF8UL +#define PERI_DIV_24_5_CTL_INT24_DIV_Pos 8UL +#define PERI_DIV_24_5_CTL_INT24_DIV_Msk 0xFFFFFF00UL +/* PERI.CLOCK_CTL */ +#define PERI_CLOCK_CTL_DIV_SEL_Pos 0UL +#define PERI_CLOCK_CTL_DIV_SEL_Msk 0x3FUL +#define PERI_CLOCK_CTL_TYPE_SEL_Pos 6UL +#define PERI_CLOCK_CTL_TYPE_SEL_Msk 0xC0UL +/* PERI.TR_CMD */ +#define PERI_TR_CMD_TR_SEL_Pos 0UL +#define PERI_TR_CMD_TR_SEL_Msk 0xFFUL +#define PERI_TR_CMD_GROUP_SEL_Pos 8UL +#define PERI_TR_CMD_GROUP_SEL_Msk 0xF00UL +#define PERI_TR_CMD_COUNT_Pos 16UL +#define PERI_TR_CMD_COUNT_Msk 0xFF0000UL +#define PERI_TR_CMD_OUT_SEL_Pos 30UL +#define PERI_TR_CMD_OUT_SEL_Msk 0x40000000UL +#define PERI_TR_CMD_ACTIVATE_Pos 31UL +#define PERI_TR_CMD_ACTIVATE_Msk 0x80000000UL + + +#endif /* _CYIP_PERI_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_ms_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_ms_v2.h new file mode 100644 index 00000000000..3390ba4e4e7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_ms_v2.h @@ -0,0 +1,785 @@ +/***************************************************************************//** +* \file cyip_peri_ms_v2.h +* +* \brief +* PERI_MS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PERI_MS_V2_H_ +#define _CYIP_PERI_MS_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PERI_MS +*******************************************************************************/ + +#define PERI_MS_PPU_PR_V2_SECTION_SIZE 0x00000040UL +#define PERI_MS_PPU_FX_V2_SECTION_SIZE 0x00000040UL +#define PERI_MS_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Programmable protection structure pair (PERI_MS_PPU_PR) + */ +typedef struct { + __IOM uint32_t SL_ADDR; /*!< 0x00000000 Slave region, base address */ + __IOM uint32_t SL_SIZE; /*!< 0x00000004 Slave region, size */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t SL_ATT0; /*!< 0x00000010 Slave attributes 0 */ + __IOM uint32_t SL_ATT1; /*!< 0x00000014 Slave attributes 1 */ + __IOM uint32_t SL_ATT2; /*!< 0x00000018 Slave attributes 2 */ + __IOM uint32_t SL_ATT3; /*!< 0x0000001C Slave attributes 3 */ + __IM uint32_t MS_ADDR; /*!< 0x00000020 Master region, base address */ + __IM uint32_t MS_SIZE; /*!< 0x00000024 Master region, size */ + __IM uint32_t RESERVED1[2]; + __IOM uint32_t MS_ATT0; /*!< 0x00000030 Master attributes 0 */ + __IOM uint32_t MS_ATT1; /*!< 0x00000034 Master attributes 1 */ + __IOM uint32_t MS_ATT2; /*!< 0x00000038 Master attributes 2 */ + __IOM uint32_t MS_ATT3; /*!< 0x0000003C Master attributes 3 */ +} PERI_MS_PPU_PR_V2_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Fixed protection structure pair (PERI_MS_PPU_FX) + */ +typedef struct { + __IM uint32_t SL_ADDR; /*!< 0x00000000 Slave region, base address */ + __IM uint32_t SL_SIZE; /*!< 0x00000004 Slave region, size */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t SL_ATT0; /*!< 0x00000010 Slave attributes 0 */ + __IOM uint32_t SL_ATT1; /*!< 0x00000014 Slave attributes 1 */ + __IOM uint32_t SL_ATT2; /*!< 0x00000018 Slave attributes 2 */ + __IOM uint32_t SL_ATT3; /*!< 0x0000001C Slave attributes 3 */ + __IM uint32_t MS_ADDR; /*!< 0x00000020 Master region, base address */ + __IM uint32_t MS_SIZE; /*!< 0x00000024 Master region, size */ + __IM uint32_t RESERVED1[2]; + __IOM uint32_t MS_ATT0; /*!< 0x00000030 Master attributes 0 */ + __IOM uint32_t MS_ATT1; /*!< 0x00000034 Master attributes 1 */ + __IOM uint32_t MS_ATT2; /*!< 0x00000038 Master attributes 2 */ + __IOM uint32_t MS_ATT3; /*!< 0x0000003C Master attributes 3 */ +} PERI_MS_PPU_FX_V2_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Peripheral interconnect, master interface (PERI_MS) + */ +typedef struct { + PERI_MS_PPU_PR_V2_Type PPU_PR[32]; /*!< 0x00000000 Programmable protection structure pair */ + PERI_MS_PPU_FX_V2_Type PPU_FX[992]; /*!< 0x00000800 Fixed protection structure pair */ +} PERI_MS_V2_Type; /*!< Size = 65536 (0x10000) */ + + +/* PERI_MS_PPU_PR.SL_ADDR */ +#define PERI_MS_PPU_PR_V2_SL_ADDR_ADDR30_Pos 2UL +#define PERI_MS_PPU_PR_V2_SL_ADDR_ADDR30_Msk 0xFFFFFFFCUL +/* PERI_MS_PPU_PR.SL_SIZE */ +#define PERI_MS_PPU_PR_V2_SL_SIZE_REGION_SIZE_Pos 24UL +#define PERI_MS_PPU_PR_V2_SL_SIZE_REGION_SIZE_Msk 0x1F000000UL +#define PERI_MS_PPU_PR_V2_SL_SIZE_VALID_Pos 31UL +#define PERI_MS_PPU_PR_V2_SL_SIZE_VALID_Msk 0x80000000UL +/* PERI_MS_PPU_PR.SL_ATT0 */ +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC0_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC1_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC2_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_SL_ATT0_PC3_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.SL_ATT1 */ +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC4_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC5_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC6_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_SL_ATT1_PC7_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.SL_ATT2 */ +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC8_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC9_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC10_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_SL_ATT2_PC11_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.SL_ATT3 */ +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC12_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC13_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC14_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_SL_ATT3_PC15_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.MS_ADDR */ +#define PERI_MS_PPU_PR_V2_MS_ADDR_ADDR26_Pos 6UL +#define PERI_MS_PPU_PR_V2_MS_ADDR_ADDR26_Msk 0xFFFFFFC0UL +/* PERI_MS_PPU_PR.MS_SIZE */ +#define PERI_MS_PPU_PR_V2_MS_SIZE_REGION_SIZE_Pos 24UL +#define PERI_MS_PPU_PR_V2_MS_SIZE_REGION_SIZE_Msk 0x1F000000UL +#define PERI_MS_PPU_PR_V2_MS_SIZE_VALID_Pos 31UL +#define PERI_MS_PPU_PR_V2_MS_SIZE_VALID_Msk 0x80000000UL +/* PERI_MS_PPU_PR.MS_ATT0 */ +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC0_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC1_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC2_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_MS_ATT0_PC3_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.MS_ATT1 */ +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC4_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC5_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC6_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_MS_ATT1_PC7_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.MS_ATT2 */ +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC8_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC9_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC10_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_MS_ATT2_PC11_NS_Msk 0x10000000UL +/* PERI_MS_PPU_PR.MS_ATT3 */ +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_UR_Pos 0UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_UR_Msk 0x1UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_UW_Pos 1UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_UW_Msk 0x2UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_PR_Pos 2UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_PR_Msk 0x4UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_PW_Pos 3UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_PW_Msk 0x8UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_NS_Pos 4UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC12_NS_Msk 0x10UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_UR_Pos 8UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_UR_Msk 0x100UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_UW_Pos 9UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_UW_Msk 0x200UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_PR_Pos 10UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_PR_Msk 0x400UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_PW_Pos 11UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_PW_Msk 0x800UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_NS_Pos 12UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC13_NS_Msk 0x1000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_UR_Pos 16UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_UR_Msk 0x10000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_UW_Pos 17UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_UW_Msk 0x20000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_PR_Pos 18UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_PR_Msk 0x40000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_PW_Pos 19UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_PW_Msk 0x80000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_NS_Pos 20UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC14_NS_Msk 0x100000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_UR_Pos 24UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_UR_Msk 0x1000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_UW_Pos 25UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_UW_Msk 0x2000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_PR_Pos 26UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_PR_Msk 0x4000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_PW_Pos 27UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_PW_Msk 0x8000000UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_NS_Pos 28UL +#define PERI_MS_PPU_PR_V2_MS_ATT3_PC15_NS_Msk 0x10000000UL + + +/* PERI_MS_PPU_FX.SL_ADDR */ +#define PERI_MS_PPU_FX_V2_SL_ADDR_ADDR30_Pos 2UL +#define PERI_MS_PPU_FX_V2_SL_ADDR_ADDR30_Msk 0xFFFFFFFCUL +/* PERI_MS_PPU_FX.SL_SIZE */ +#define PERI_MS_PPU_FX_V2_SL_SIZE_REGION_SIZE_Pos 24UL +#define PERI_MS_PPU_FX_V2_SL_SIZE_REGION_SIZE_Msk 0x1F000000UL +#define PERI_MS_PPU_FX_V2_SL_SIZE_VALID_Pos 31UL +#define PERI_MS_PPU_FX_V2_SL_SIZE_VALID_Msk 0x80000000UL +/* PERI_MS_PPU_FX.SL_ATT0 */ +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC0_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC1_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC2_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_SL_ATT0_PC3_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.SL_ATT1 */ +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC4_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC5_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC6_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_SL_ATT1_PC7_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.SL_ATT2 */ +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC8_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC9_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC10_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_SL_ATT2_PC11_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.SL_ATT3 */ +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC12_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC13_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC14_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_SL_ATT3_PC15_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.MS_ADDR */ +#define PERI_MS_PPU_FX_V2_MS_ADDR_ADDR26_Pos 6UL +#define PERI_MS_PPU_FX_V2_MS_ADDR_ADDR26_Msk 0xFFFFFFC0UL +/* PERI_MS_PPU_FX.MS_SIZE */ +#define PERI_MS_PPU_FX_V2_MS_SIZE_REGION_SIZE_Pos 24UL +#define PERI_MS_PPU_FX_V2_MS_SIZE_REGION_SIZE_Msk 0x1F000000UL +#define PERI_MS_PPU_FX_V2_MS_SIZE_VALID_Pos 31UL +#define PERI_MS_PPU_FX_V2_MS_SIZE_VALID_Msk 0x80000000UL +/* PERI_MS_PPU_FX.MS_ATT0 */ +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC0_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC1_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC2_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_MS_ATT0_PC3_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.MS_ATT1 */ +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC4_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC5_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC6_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_MS_ATT1_PC7_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.MS_ATT2 */ +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC8_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC9_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC10_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_MS_ATT2_PC11_NS_Msk 0x10000000UL +/* PERI_MS_PPU_FX.MS_ATT3 */ +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_UR_Pos 0UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_UR_Msk 0x1UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_UW_Pos 1UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_UW_Msk 0x2UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_PR_Pos 2UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_PR_Msk 0x4UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_PW_Pos 3UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_PW_Msk 0x8UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_NS_Pos 4UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC12_NS_Msk 0x10UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_UR_Pos 8UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_UR_Msk 0x100UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_UW_Pos 9UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_UW_Msk 0x200UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_PR_Pos 10UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_PR_Msk 0x400UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_PW_Pos 11UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_PW_Msk 0x800UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_NS_Pos 12UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC13_NS_Msk 0x1000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_UR_Pos 16UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_UR_Msk 0x10000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_UW_Pos 17UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_UW_Msk 0x20000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_PR_Pos 18UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_PR_Msk 0x40000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_PW_Pos 19UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_PW_Msk 0x80000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_NS_Pos 20UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC14_NS_Msk 0x100000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_UR_Pos 24UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_UR_Msk 0x1000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_UW_Pos 25UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_UW_Msk 0x2000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_PR_Pos 26UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_PR_Msk 0x4000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_PW_Pos 27UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_PW_Msk 0x8000000UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_NS_Pos 28UL +#define PERI_MS_PPU_FX_V2_MS_ATT3_PC15_NS_Msk 0x10000000UL + + +#endif /* _CYIP_PERI_MS_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_v2.h new file mode 100644 index 00000000000..c0786e80474 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_peri_v2.h @@ -0,0 +1,254 @@ +/***************************************************************************//** +* \file cyip_peri_v2.h +* +* \brief +* PERI IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PERI_V2_H_ +#define _CYIP_PERI_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PERI +*******************************************************************************/ + +#define PERI_GR_V2_SECTION_SIZE 0x00000020UL +#define PERI_TR_GR_V2_SECTION_SIZE 0x00000400UL +#define PERI_TR_1TO1_GR_V2_SECTION_SIZE 0x00000400UL +#define PERI_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Peripheral group structure (PERI_GR) + */ +typedef struct { + __IOM uint32_t CLOCK_CTL; /*!< 0x00000000 Clock control */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t SL_CTL; /*!< 0x00000010 Slave control */ + __IM uint32_t RESERVED1[3]; +} PERI_GR_V2_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief Trigger group (PERI_TR_GR) + */ +typedef struct { + __IOM uint32_t TR_CTL[256]; /*!< 0x00000000 Trigger control register */ +} PERI_TR_GR_V2_Type; /*!< Size = 1024 (0x400) */ + +/** + * \brief Trigger 1-to-1 group (PERI_TR_1TO1_GR) + */ +typedef struct { + __IOM uint32_t TR_CTL[256]; /*!< 0x00000000 Trigger control register */ +} PERI_TR_1TO1_GR_V2_Type; /*!< Size = 1024 (0x400) */ + +/** + * \brief Peripheral interconnect (PERI) + */ +typedef struct { + __IM uint32_t RESERVED[128]; + __IOM uint32_t TIMEOUT_CTL; /*!< 0x00000200 Timeout control */ + __IM uint32_t RESERVED1[7]; + __IOM uint32_t TR_CMD; /*!< 0x00000220 Trigger command */ + __IM uint32_t RESERVED2[119]; + __IOM uint32_t DIV_CMD; /*!< 0x00000400 Divider command */ + __IM uint32_t RESERVED3[511]; + __IOM uint32_t CLOCK_CTL[256]; /*!< 0x00000C00 Clock control */ + __IOM uint32_t DIV_8_CTL[256]; /*!< 0x00001000 Divider control (for 8.0 divider) */ + __IOM uint32_t DIV_16_CTL[256]; /*!< 0x00001400 Divider control (for 16.0 divider) */ + __IOM uint32_t DIV_16_5_CTL[256]; /*!< 0x00001800 Divider control (for 16.5 divider) */ + __IOM uint32_t DIV_24_5_CTL[255]; /*!< 0x00001C00 Divider control (for 24.5 divider) */ + __IM uint32_t RESERVED4; + __IOM uint32_t ECC_CTL; /*!< 0x00002000 ECC control */ + __IM uint32_t RESERVED5[2047]; + PERI_GR_V2_Type GR[16]; /*!< 0x00004000 Peripheral group structure */ + __IM uint32_t RESERVED6[3968]; + PERI_TR_GR_V2_Type TR_GR[16]; /*!< 0x00008000 Trigger group */ + PERI_TR_1TO1_GR_V2_Type TR_1TO1_GR[16]; /*!< 0x0000C000 Trigger 1-to-1 group */ +} PERI_V2_Type; /*!< Size = 65536 (0x10000) */ + + +/* PERI_GR.CLOCK_CTL */ +#define PERI_GR_V2_CLOCK_CTL_INT8_DIV_Pos 8UL +#define PERI_GR_V2_CLOCK_CTL_INT8_DIV_Msk 0xFF00UL +/* PERI_GR.SL_CTL */ +#define PERI_GR_V2_SL_CTL_ENABLED_0_Pos 0UL +#define PERI_GR_V2_SL_CTL_ENABLED_0_Msk 0x1UL +#define PERI_GR_V2_SL_CTL_ENABLED_1_Pos 1UL +#define PERI_GR_V2_SL_CTL_ENABLED_1_Msk 0x2UL +#define PERI_GR_V2_SL_CTL_ENABLED_2_Pos 2UL +#define PERI_GR_V2_SL_CTL_ENABLED_2_Msk 0x4UL +#define PERI_GR_V2_SL_CTL_ENABLED_3_Pos 3UL +#define PERI_GR_V2_SL_CTL_ENABLED_3_Msk 0x8UL +#define PERI_GR_V2_SL_CTL_ENABLED_4_Pos 4UL +#define PERI_GR_V2_SL_CTL_ENABLED_4_Msk 0x10UL +#define PERI_GR_V2_SL_CTL_ENABLED_5_Pos 5UL +#define PERI_GR_V2_SL_CTL_ENABLED_5_Msk 0x20UL +#define PERI_GR_V2_SL_CTL_ENABLED_6_Pos 6UL +#define PERI_GR_V2_SL_CTL_ENABLED_6_Msk 0x40UL +#define PERI_GR_V2_SL_CTL_ENABLED_7_Pos 7UL +#define PERI_GR_V2_SL_CTL_ENABLED_7_Msk 0x80UL +#define PERI_GR_V2_SL_CTL_ENABLED_8_Pos 8UL +#define PERI_GR_V2_SL_CTL_ENABLED_8_Msk 0x100UL +#define PERI_GR_V2_SL_CTL_ENABLED_9_Pos 9UL +#define PERI_GR_V2_SL_CTL_ENABLED_9_Msk 0x200UL +#define PERI_GR_V2_SL_CTL_ENABLED_10_Pos 10UL +#define PERI_GR_V2_SL_CTL_ENABLED_10_Msk 0x400UL +#define PERI_GR_V2_SL_CTL_ENABLED_11_Pos 11UL +#define PERI_GR_V2_SL_CTL_ENABLED_11_Msk 0x800UL +#define PERI_GR_V2_SL_CTL_ENABLED_12_Pos 12UL +#define PERI_GR_V2_SL_CTL_ENABLED_12_Msk 0x1000UL +#define PERI_GR_V2_SL_CTL_ENABLED_13_Pos 13UL +#define PERI_GR_V2_SL_CTL_ENABLED_13_Msk 0x2000UL +#define PERI_GR_V2_SL_CTL_ENABLED_14_Pos 14UL +#define PERI_GR_V2_SL_CTL_ENABLED_14_Msk 0x4000UL +#define PERI_GR_V2_SL_CTL_ENABLED_15_Pos 15UL +#define PERI_GR_V2_SL_CTL_ENABLED_15_Msk 0x8000UL +#define PERI_GR_V2_SL_CTL_DISABLED_0_Pos 16UL +#define PERI_GR_V2_SL_CTL_DISABLED_0_Msk 0x10000UL +#define PERI_GR_V2_SL_CTL_DISABLED_1_Pos 17UL +#define PERI_GR_V2_SL_CTL_DISABLED_1_Msk 0x20000UL +#define PERI_GR_V2_SL_CTL_DISABLED_2_Pos 18UL +#define PERI_GR_V2_SL_CTL_DISABLED_2_Msk 0x40000UL +#define PERI_GR_V2_SL_CTL_DISABLED_3_Pos 19UL +#define PERI_GR_V2_SL_CTL_DISABLED_3_Msk 0x80000UL +#define PERI_GR_V2_SL_CTL_DISABLED_4_Pos 20UL +#define PERI_GR_V2_SL_CTL_DISABLED_4_Msk 0x100000UL +#define PERI_GR_V2_SL_CTL_DISABLED_5_Pos 21UL +#define PERI_GR_V2_SL_CTL_DISABLED_5_Msk 0x200000UL +#define PERI_GR_V2_SL_CTL_DISABLED_6_Pos 22UL +#define PERI_GR_V2_SL_CTL_DISABLED_6_Msk 0x400000UL +#define PERI_GR_V2_SL_CTL_DISABLED_7_Pos 23UL +#define PERI_GR_V2_SL_CTL_DISABLED_7_Msk 0x800000UL +#define PERI_GR_V2_SL_CTL_DISABLED_8_Pos 24UL +#define PERI_GR_V2_SL_CTL_DISABLED_8_Msk 0x1000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_9_Pos 25UL +#define PERI_GR_V2_SL_CTL_DISABLED_9_Msk 0x2000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_10_Pos 26UL +#define PERI_GR_V2_SL_CTL_DISABLED_10_Msk 0x4000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_11_Pos 27UL +#define PERI_GR_V2_SL_CTL_DISABLED_11_Msk 0x8000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_12_Pos 28UL +#define PERI_GR_V2_SL_CTL_DISABLED_12_Msk 0x10000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_13_Pos 29UL +#define PERI_GR_V2_SL_CTL_DISABLED_13_Msk 0x20000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_14_Pos 30UL +#define PERI_GR_V2_SL_CTL_DISABLED_14_Msk 0x40000000UL +#define PERI_GR_V2_SL_CTL_DISABLED_15_Pos 31UL +#define PERI_GR_V2_SL_CTL_DISABLED_15_Msk 0x80000000UL + + +/* PERI_TR_GR.TR_CTL */ +#define PERI_TR_GR_V2_TR_CTL_TR_SEL_Pos 0UL +#define PERI_TR_GR_V2_TR_CTL_TR_SEL_Msk 0xFFUL +#define PERI_TR_GR_V2_TR_CTL_TR_INV_Pos 8UL +#define PERI_TR_GR_V2_TR_CTL_TR_INV_Msk 0x100UL +#define PERI_TR_GR_V2_TR_CTL_TR_EDGE_Pos 9UL +#define PERI_TR_GR_V2_TR_CTL_TR_EDGE_Msk 0x200UL +#define PERI_TR_GR_V2_TR_CTL_DBG_FREEZE_EN_Pos 12UL +#define PERI_TR_GR_V2_TR_CTL_DBG_FREEZE_EN_Msk 0x1000UL + + +/* PERI_TR_1TO1_GR.TR_CTL */ +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_SEL_Pos 0UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_SEL_Msk 0x1UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_INV_Pos 8UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_INV_Msk 0x100UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_EDGE_Pos 9UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_TR_EDGE_Msk 0x200UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_DBG_FREEZE_EN_Pos 12UL +#define PERI_TR_1TO1_GR_V2_TR_CTL_DBG_FREEZE_EN_Msk 0x1000UL + + +/* PERI.TIMEOUT_CTL */ +#define PERI_V2_TIMEOUT_CTL_TIMEOUT_Pos 0UL +#define PERI_V2_TIMEOUT_CTL_TIMEOUT_Msk 0xFFFFUL +/* PERI.TR_CMD */ +#define PERI_V2_TR_CMD_TR_SEL_Pos 0UL +#define PERI_V2_TR_CMD_TR_SEL_Msk 0xFFUL +#define PERI_V2_TR_CMD_GROUP_SEL_Pos 8UL +#define PERI_V2_TR_CMD_GROUP_SEL_Msk 0x1F00UL +#define PERI_V2_TR_CMD_TR_EDGE_Pos 29UL +#define PERI_V2_TR_CMD_TR_EDGE_Msk 0x20000000UL +#define PERI_V2_TR_CMD_OUT_SEL_Pos 30UL +#define PERI_V2_TR_CMD_OUT_SEL_Msk 0x40000000UL +#define PERI_V2_TR_CMD_ACTIVATE_Pos 31UL +#define PERI_V2_TR_CMD_ACTIVATE_Msk 0x80000000UL +/* PERI.DIV_CMD */ +#define PERI_V2_DIV_CMD_DIV_SEL_Pos 0UL +#define PERI_V2_DIV_CMD_DIV_SEL_Msk 0xFFUL +#define PERI_V2_DIV_CMD_TYPE_SEL_Pos 8UL +#define PERI_V2_DIV_CMD_TYPE_SEL_Msk 0x300UL +#define PERI_V2_DIV_CMD_PA_DIV_SEL_Pos 16UL +#define PERI_V2_DIV_CMD_PA_DIV_SEL_Msk 0xFF0000UL +#define PERI_V2_DIV_CMD_PA_TYPE_SEL_Pos 24UL +#define PERI_V2_DIV_CMD_PA_TYPE_SEL_Msk 0x3000000UL +#define PERI_V2_DIV_CMD_DISABLE_Pos 30UL +#define PERI_V2_DIV_CMD_DISABLE_Msk 0x40000000UL +#define PERI_V2_DIV_CMD_ENABLE_Pos 31UL +#define PERI_V2_DIV_CMD_ENABLE_Msk 0x80000000UL +/* PERI.CLOCK_CTL */ +#define PERI_V2_CLOCK_CTL_DIV_SEL_Pos 0UL +#define PERI_V2_CLOCK_CTL_DIV_SEL_Msk 0xFFUL +#define PERI_V2_CLOCK_CTL_TYPE_SEL_Pos 8UL +#define PERI_V2_CLOCK_CTL_TYPE_SEL_Msk 0x300UL +/* PERI.DIV_8_CTL */ +#define PERI_V2_DIV_8_CTL_EN_Pos 0UL +#define PERI_V2_DIV_8_CTL_EN_Msk 0x1UL +#define PERI_V2_DIV_8_CTL_INT8_DIV_Pos 8UL +#define PERI_V2_DIV_8_CTL_INT8_DIV_Msk 0xFF00UL +/* PERI.DIV_16_CTL */ +#define PERI_V2_DIV_16_CTL_EN_Pos 0UL +#define PERI_V2_DIV_16_CTL_EN_Msk 0x1UL +#define PERI_V2_DIV_16_CTL_INT16_DIV_Pos 8UL +#define PERI_V2_DIV_16_CTL_INT16_DIV_Msk 0xFFFF00UL +/* PERI.DIV_16_5_CTL */ +#define PERI_V2_DIV_16_5_CTL_EN_Pos 0UL +#define PERI_V2_DIV_16_5_CTL_EN_Msk 0x1UL +#define PERI_V2_DIV_16_5_CTL_FRAC5_DIV_Pos 3UL +#define PERI_V2_DIV_16_5_CTL_FRAC5_DIV_Msk 0xF8UL +#define PERI_V2_DIV_16_5_CTL_INT16_DIV_Pos 8UL +#define PERI_V2_DIV_16_5_CTL_INT16_DIV_Msk 0xFFFF00UL +/* PERI.DIV_24_5_CTL */ +#define PERI_V2_DIV_24_5_CTL_EN_Pos 0UL +#define PERI_V2_DIV_24_5_CTL_EN_Msk 0x1UL +#define PERI_V2_DIV_24_5_CTL_FRAC5_DIV_Pos 3UL +#define PERI_V2_DIV_24_5_CTL_FRAC5_DIV_Msk 0xF8UL +#define PERI_V2_DIV_24_5_CTL_INT24_DIV_Pos 8UL +#define PERI_V2_DIV_24_5_CTL_INT24_DIV_Msk 0xFFFFFF00UL +/* PERI.ECC_CTL */ +#define PERI_V2_ECC_CTL_WORD_ADDR_Pos 0UL +#define PERI_V2_ECC_CTL_WORD_ADDR_Msk 0x7FFUL +#define PERI_V2_ECC_CTL_ECC_EN_Pos 16UL +#define PERI_V2_ECC_CTL_ECC_EN_Msk 0x10000UL +#define PERI_V2_ECC_CTL_ECC_INJ_EN_Pos 18UL +#define PERI_V2_ECC_CTL_ECC_INJ_EN_Msk 0x40000UL +#define PERI_V2_ECC_CTL_PARITY_Pos 24UL +#define PERI_V2_ECC_CTL_PARITY_Msk 0xFF000000UL + + +#endif /* _CYIP_PERI_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_profile.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_profile.h new file mode 100644 index 00000000000..00125d90436 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_profile.h @@ -0,0 +1,114 @@ +/***************************************************************************//** +* \file cyip_profile.h +* +* \brief +* PROFILE IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PROFILE_H_ +#define _CYIP_PROFILE_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define PROFILE_CNT_STRUCT_SECTION_SIZE 0x00000010UL +#define PROFILE_SECTION_SIZE 0x00010000UL + +/** + * \brief Profile counter structure (PROFILE_CNT_STRUCT) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Profile counter configuration */ + __IM uint32_t RESERVED; + __IOM uint32_t CNT; /*!< 0x00000008 Profile counter value */ + __IM uint32_t RESERVED1; +} PROFILE_CNT_STRUCT_V1_Type; /*!< Size = 16 (0x10) */ + +/** + * \brief Energy Profiler IP (PROFILE) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Profile control */ + __IM uint32_t STATUS; /*!< 0x00000004 Profile status */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t CMD; /*!< 0x00000010 Profile command */ + __IM uint32_t RESERVED1[491]; + __IOM uint32_t INTR; /*!< 0x000007C0 Profile interrupt */ + __IOM uint32_t INTR_SET; /*!< 0x000007C4 Profile interrupt set */ + __IOM uint32_t INTR_MASK; /*!< 0x000007C8 Profile interrupt mask */ + __IM uint32_t INTR_MASKED; /*!< 0x000007CC Profile interrupt masked */ + __IM uint32_t RESERVED2[12]; + PROFILE_CNT_STRUCT_V1_Type CNT_STRUCT[16]; /*!< 0x00000800 Profile counter structure */ +} PROFILE_V1_Type; /*!< Size = 2304 (0x900) */ + + +/* PROFILE_CNT_STRUCT.CTL */ +#define PROFILE_CNT_STRUCT_CTL_CNT_DURATION_Pos 0UL +#define PROFILE_CNT_STRUCT_CTL_CNT_DURATION_Msk 0x1UL +#define PROFILE_CNT_STRUCT_CTL_REF_CLK_SEL_Pos 4UL +#define PROFILE_CNT_STRUCT_CTL_REF_CLK_SEL_Msk 0x70UL +#define PROFILE_CNT_STRUCT_CTL_MON_SEL_Pos 16UL +#define PROFILE_CNT_STRUCT_CTL_MON_SEL_Msk 0x7F0000UL +#define PROFILE_CNT_STRUCT_CTL_ENABLED_Pos 31UL +#define PROFILE_CNT_STRUCT_CTL_ENABLED_Msk 0x80000000UL +/* PROFILE_CNT_STRUCT.CNT */ +#define PROFILE_CNT_STRUCT_CNT_CNT_Pos 0UL +#define PROFILE_CNT_STRUCT_CNT_CNT_Msk 0xFFFFFFFFUL + + +/* PROFILE.CTL */ +#define PROFILE_CTL_WIN_MODE_Pos 0UL +#define PROFILE_CTL_WIN_MODE_Msk 0x1UL +#define PROFILE_CTL_ENABLED_Pos 31UL +#define PROFILE_CTL_ENABLED_Msk 0x80000000UL +/* PROFILE.STATUS */ +#define PROFILE_STATUS_WIN_ACTIVE_Pos 0UL +#define PROFILE_STATUS_WIN_ACTIVE_Msk 0x1UL +/* PROFILE.CMD */ +#define PROFILE_CMD_START_TR_Pos 0UL +#define PROFILE_CMD_START_TR_Msk 0x1UL +#define PROFILE_CMD_STOP_TR_Pos 1UL +#define PROFILE_CMD_STOP_TR_Msk 0x2UL +#define PROFILE_CMD_CLR_ALL_CNT_Pos 8UL +#define PROFILE_CMD_CLR_ALL_CNT_Msk 0x100UL +/* PROFILE.INTR */ +#define PROFILE_INTR_CNT_OVFLW_Pos 0UL +#define PROFILE_INTR_CNT_OVFLW_Msk 0xFFFFFFFFUL +/* PROFILE.INTR_SET */ +#define PROFILE_INTR_SET_CNT_OVFLW_Pos 0UL +#define PROFILE_INTR_SET_CNT_OVFLW_Msk 0xFFFFFFFFUL +/* PROFILE.INTR_MASK */ +#define PROFILE_INTR_MASK_CNT_OVFLW_Pos 0UL +#define PROFILE_INTR_MASK_CNT_OVFLW_Msk 0xFFFFFFFFUL +/* PROFILE.INTR_MASKED */ +#define PROFILE_INTR_MASKED_CNT_OVFLW_Pos 0UL +#define PROFILE_INTR_MASKED_CNT_OVFLW_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_PROFILE_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot.h new file mode 100644 index 00000000000..dd4e1d578a0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot.h @@ -0,0 +1,383 @@ +/***************************************************************************//** +* \file cyip_prot.h +* +* \brief +* PROT IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PROT_H_ +#define _CYIP_PROT_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_SMPU_SMPU_STRUCT_SECTION_SIZE 0x00000040UL +#define PROT_SMPU_SECTION_SIZE 0x00004000UL +#define PROT_MPU_MPU_STRUCT_SECTION_SIZE 0x00000020UL +#define PROT_MPU_SECTION_SIZE 0x00000400UL +#define PROT_SECTION_SIZE 0x00010000UL + +/** + * \brief SMPU structure (PROT_SMPU_SMPU_STRUCT) + */ +typedef struct { + __IOM uint32_t ADDR0; /*!< 0x00000000 SMPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 SMPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 SMPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 SMPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PROT_SMPU_SMPU_STRUCT_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief SMPU (PROT_SMPU) + */ +typedef struct { + __IOM uint32_t MS0_CTL; /*!< 0x00000000 Master 0 protection context control */ + __IOM uint32_t MS1_CTL; /*!< 0x00000004 Master 1 protection context control */ + __IOM uint32_t MS2_CTL; /*!< 0x00000008 Master 2 protection context control */ + __IOM uint32_t MS3_CTL; /*!< 0x0000000C Master 3 protection context control */ + __IOM uint32_t MS4_CTL; /*!< 0x00000010 Master 4 protection context control */ + __IOM uint32_t MS5_CTL; /*!< 0x00000014 Master 5 protection context control */ + __IOM uint32_t MS6_CTL; /*!< 0x00000018 Master 6 protection context control */ + __IOM uint32_t MS7_CTL; /*!< 0x0000001C Master 7 protection context control */ + __IOM uint32_t MS8_CTL; /*!< 0x00000020 Master 8 protection context control */ + __IOM uint32_t MS9_CTL; /*!< 0x00000024 Master 9 protection context control */ + __IOM uint32_t MS10_CTL; /*!< 0x00000028 Master 10 protection context control */ + __IOM uint32_t MS11_CTL; /*!< 0x0000002C Master 11 protection context control */ + __IOM uint32_t MS12_CTL; /*!< 0x00000030 Master 12 protection context control */ + __IOM uint32_t MS13_CTL; /*!< 0x00000034 Master 13 protection context control */ + __IOM uint32_t MS14_CTL; /*!< 0x00000038 Master 14 protection context control */ + __IOM uint32_t MS15_CTL; /*!< 0x0000003C Master 15 protection context control */ + __IM uint32_t RESERVED[2032]; + PROT_SMPU_SMPU_STRUCT_V1_Type SMPU_STRUCT[32]; /*!< 0x00002000 SMPU structure */ + __IM uint32_t RESERVED1[1536]; +} PROT_SMPU_V1_Type; /*!< Size = 16384 (0x4000) */ + +/** + * \brief MPU structure (PROT_MPU_MPU_STRUCT) + */ +typedef struct { + __IOM uint32_t ADDR; /*!< 0x00000000 MPU region address */ + __IOM uint32_t ATT; /*!< 0x00000004 MPU region attrributes */ + __IM uint32_t RESERVED[6]; +} PROT_MPU_MPU_STRUCT_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief MPU (PROT_MPU) + */ +typedef struct { + __IOM uint32_t MS_CTL; /*!< 0x00000000 Master control */ + __IM uint32_t RESERVED[127]; + PROT_MPU_MPU_STRUCT_V1_Type MPU_STRUCT[16]; /*!< 0x00000200 MPU structure */ +} PROT_MPU_V1_Type; /*!< Size = 1024 (0x400) */ + +/** + * \brief Protection (PROT) + */ +typedef struct { + PROT_SMPU_V1_Type SMPU; /*!< 0x00000000 SMPU */ + PROT_MPU_V1_Type CYMPU[16]; /*!< 0x00004000 MPU */ +} PROT_V1_Type; /*!< Size = 32768 (0x8000) */ + + +/* PROT_SMPU_SMPU_STRUCT.ADDR0 */ +#define PROT_SMPU_SMPU_STRUCT_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_SMPU_SMPU_STRUCT_ADDR0_ADDR24_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PROT_SMPU_SMPU_STRUCT.ATT0 */ +#define PROT_SMPU_SMPU_STRUCT_ATT0_UR_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_UR_Msk 0x1UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_UW_Pos 1UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_UW_Msk 0x2UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_UX_Pos 2UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_UX_Msk 0x4UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PR_Pos 3UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PR_Msk 0x8UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PW_Pos 4UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PW_Msk 0x10UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PX_Pos 5UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PX_Msk 0x20UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_NS_Pos 6UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_NS_Msk 0x40UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MASK_0_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MASK_0_Msk 0x100UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_REGION_SIZE_Pos 24UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MATCH_Pos 30UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_PC_MATCH_Msk 0x40000000UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_ENABLED_Pos 31UL +#define PROT_SMPU_SMPU_STRUCT_ATT0_ENABLED_Msk 0x80000000UL +/* PROT_SMPU_SMPU_STRUCT.ADDR1 */ +#define PROT_SMPU_SMPU_STRUCT_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_SMPU_SMPU_STRUCT_ADDR1_ADDR24_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PROT_SMPU_SMPU_STRUCT.ATT1 */ +#define PROT_SMPU_SMPU_STRUCT_ATT1_UR_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_UR_Msk 0x1UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_UW_Pos 1UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_UW_Msk 0x2UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_UX_Pos 2UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_UX_Msk 0x4UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PR_Pos 3UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PR_Msk 0x8UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PW_Pos 4UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PW_Msk 0x10UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PX_Pos 5UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PX_Msk 0x20UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_NS_Pos 6UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_NS_Msk 0x40UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MASK_0_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MASK_0_Msk 0x100UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_REGION_SIZE_Pos 24UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MATCH_Pos 30UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_PC_MATCH_Msk 0x40000000UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_ENABLED_Pos 31UL +#define PROT_SMPU_SMPU_STRUCT_ATT1_ENABLED_Msk 0x80000000UL + + +/* PROT_SMPU.MS0_CTL */ +#define PROT_SMPU_MS0_CTL_P_Pos 0UL +#define PROT_SMPU_MS0_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS0_CTL_NS_Pos 1UL +#define PROT_SMPU_MS0_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS0_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS0_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS0_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS0_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS0_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS0_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS1_CTL */ +#define PROT_SMPU_MS1_CTL_P_Pos 0UL +#define PROT_SMPU_MS1_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS1_CTL_NS_Pos 1UL +#define PROT_SMPU_MS1_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS1_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS1_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS1_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS1_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS1_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS1_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS2_CTL */ +#define PROT_SMPU_MS2_CTL_P_Pos 0UL +#define PROT_SMPU_MS2_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS2_CTL_NS_Pos 1UL +#define PROT_SMPU_MS2_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS2_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS2_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS2_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS2_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS2_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS2_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS3_CTL */ +#define PROT_SMPU_MS3_CTL_P_Pos 0UL +#define PROT_SMPU_MS3_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS3_CTL_NS_Pos 1UL +#define PROT_SMPU_MS3_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS3_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS3_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS3_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS3_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS3_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS3_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS4_CTL */ +#define PROT_SMPU_MS4_CTL_P_Pos 0UL +#define PROT_SMPU_MS4_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS4_CTL_NS_Pos 1UL +#define PROT_SMPU_MS4_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS4_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS4_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS4_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS4_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS4_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS4_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS5_CTL */ +#define PROT_SMPU_MS5_CTL_P_Pos 0UL +#define PROT_SMPU_MS5_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS5_CTL_NS_Pos 1UL +#define PROT_SMPU_MS5_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS5_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS5_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS5_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS5_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS5_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS5_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS6_CTL */ +#define PROT_SMPU_MS6_CTL_P_Pos 0UL +#define PROT_SMPU_MS6_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS6_CTL_NS_Pos 1UL +#define PROT_SMPU_MS6_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS6_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS6_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS6_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS6_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS6_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS6_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS7_CTL */ +#define PROT_SMPU_MS7_CTL_P_Pos 0UL +#define PROT_SMPU_MS7_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS7_CTL_NS_Pos 1UL +#define PROT_SMPU_MS7_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS7_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS7_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS7_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS7_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS7_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS7_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS8_CTL */ +#define PROT_SMPU_MS8_CTL_P_Pos 0UL +#define PROT_SMPU_MS8_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS8_CTL_NS_Pos 1UL +#define PROT_SMPU_MS8_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS8_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS8_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS8_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS8_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS8_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS8_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS9_CTL */ +#define PROT_SMPU_MS9_CTL_P_Pos 0UL +#define PROT_SMPU_MS9_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS9_CTL_NS_Pos 1UL +#define PROT_SMPU_MS9_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS9_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS9_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS9_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS9_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS9_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS9_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS10_CTL */ +#define PROT_SMPU_MS10_CTL_P_Pos 0UL +#define PROT_SMPU_MS10_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS10_CTL_NS_Pos 1UL +#define PROT_SMPU_MS10_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS10_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS10_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS10_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS10_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS10_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS10_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS11_CTL */ +#define PROT_SMPU_MS11_CTL_P_Pos 0UL +#define PROT_SMPU_MS11_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS11_CTL_NS_Pos 1UL +#define PROT_SMPU_MS11_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS11_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS11_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS11_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS11_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS11_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS11_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS12_CTL */ +#define PROT_SMPU_MS12_CTL_P_Pos 0UL +#define PROT_SMPU_MS12_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS12_CTL_NS_Pos 1UL +#define PROT_SMPU_MS12_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS12_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS12_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS12_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS12_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS12_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS12_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS13_CTL */ +#define PROT_SMPU_MS13_CTL_P_Pos 0UL +#define PROT_SMPU_MS13_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS13_CTL_NS_Pos 1UL +#define PROT_SMPU_MS13_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS13_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS13_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS13_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS13_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS13_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS13_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS14_CTL */ +#define PROT_SMPU_MS14_CTL_P_Pos 0UL +#define PROT_SMPU_MS14_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS14_CTL_NS_Pos 1UL +#define PROT_SMPU_MS14_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS14_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS14_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS14_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS14_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS14_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS14_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS15_CTL */ +#define PROT_SMPU_MS15_CTL_P_Pos 0UL +#define PROT_SMPU_MS15_CTL_P_Msk 0x1UL +#define PROT_SMPU_MS15_CTL_NS_Pos 1UL +#define PROT_SMPU_MS15_CTL_NS_Msk 0x2UL +#define PROT_SMPU_MS15_CTL_PRIO_Pos 8UL +#define PROT_SMPU_MS15_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_MS15_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_MS15_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_MS15_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_MS15_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL + + +/* PROT_MPU_MPU_STRUCT.ADDR */ +#define PROT_MPU_MPU_STRUCT_ADDR_SUBREGION_DISABLE_Pos 0UL +#define PROT_MPU_MPU_STRUCT_ADDR_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_MPU_MPU_STRUCT_ADDR_ADDR24_Pos 8UL +#define PROT_MPU_MPU_STRUCT_ADDR_ADDR24_Msk 0xFFFFFF00UL +/* PROT_MPU_MPU_STRUCT.ATT */ +#define PROT_MPU_MPU_STRUCT_ATT_UR_Pos 0UL +#define PROT_MPU_MPU_STRUCT_ATT_UR_Msk 0x1UL +#define PROT_MPU_MPU_STRUCT_ATT_UW_Pos 1UL +#define PROT_MPU_MPU_STRUCT_ATT_UW_Msk 0x2UL +#define PROT_MPU_MPU_STRUCT_ATT_UX_Pos 2UL +#define PROT_MPU_MPU_STRUCT_ATT_UX_Msk 0x4UL +#define PROT_MPU_MPU_STRUCT_ATT_PR_Pos 3UL +#define PROT_MPU_MPU_STRUCT_ATT_PR_Msk 0x8UL +#define PROT_MPU_MPU_STRUCT_ATT_PW_Pos 4UL +#define PROT_MPU_MPU_STRUCT_ATT_PW_Msk 0x10UL +#define PROT_MPU_MPU_STRUCT_ATT_PX_Pos 5UL +#define PROT_MPU_MPU_STRUCT_ATT_PX_Msk 0x20UL +#define PROT_MPU_MPU_STRUCT_ATT_NS_Pos 6UL +#define PROT_MPU_MPU_STRUCT_ATT_NS_Msk 0x40UL +#define PROT_MPU_MPU_STRUCT_ATT_REGION_SIZE_Pos 24UL +#define PROT_MPU_MPU_STRUCT_ATT_REGION_SIZE_Msk 0x1F000000UL +#define PROT_MPU_MPU_STRUCT_ATT_ENABLED_Pos 31UL +#define PROT_MPU_MPU_STRUCT_ATT_ENABLED_Msk 0x80000000UL + + +/* PROT_MPU.MS_CTL */ +#define PROT_MPU_MS_CTL_PC_Pos 0UL +#define PROT_MPU_MS_CTL_PC_Msk 0xFUL +#define PROT_MPU_MS_CTL_PC_SAVED_Pos 16UL +#define PROT_MPU_MS_CTL_PC_SAVED_Msk 0xF0000UL + + +#endif /* _CYIP_PROT_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot_v2.h new file mode 100644 index 00000000000..068081bb9e7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_prot_v2.h @@ -0,0 +1,383 @@ +/***************************************************************************//** +* \file cyip_prot_v2.h +* +* \brief +* PROT IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_PROT_V2_H_ +#define _CYIP_PROT_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* PROT +*******************************************************************************/ + +#define PROT_SMPU_SMPU_STRUCT_V2_SECTION_SIZE 0x00000040UL +#define PROT_SMPU_V2_SECTION_SIZE 0x00004000UL +#define PROT_MPU_MPU_STRUCT_V2_SECTION_SIZE 0x00000020UL +#define PROT_MPU_V2_SECTION_SIZE 0x00000400UL +#define PROT_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief SMPU structure (PROT_SMPU_SMPU_STRUCT) + */ +typedef struct { + __IOM uint32_t ADDR0; /*!< 0x00000000 SMPU region address 0 (slave structure) */ + __IOM uint32_t ATT0; /*!< 0x00000004 SMPU region attributes 0 (slave structure) */ + __IM uint32_t RESERVED[6]; + __IM uint32_t ADDR1; /*!< 0x00000020 SMPU region address 1 (master structure) */ + __IOM uint32_t ATT1; /*!< 0x00000024 SMPU region attributes 1 (master structure) */ + __IM uint32_t RESERVED1[6]; +} PROT_SMPU_SMPU_STRUCT_V2_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief SMPU (PROT_SMPU) + */ +typedef struct { + __IOM uint32_t MS0_CTL; /*!< 0x00000000 Master 0 protection context control */ + __IOM uint32_t MS1_CTL; /*!< 0x00000004 Master 1 protection context control */ + __IOM uint32_t MS2_CTL; /*!< 0x00000008 Master 2 protection context control */ + __IOM uint32_t MS3_CTL; /*!< 0x0000000C Master 3 protection context control */ + __IOM uint32_t MS4_CTL; /*!< 0x00000010 Master 4 protection context control */ + __IOM uint32_t MS5_CTL; /*!< 0x00000014 Master 5 protection context control */ + __IOM uint32_t MS6_CTL; /*!< 0x00000018 Master 6 protection context control */ + __IOM uint32_t MS7_CTL; /*!< 0x0000001C Master 7 protection context control */ + __IOM uint32_t MS8_CTL; /*!< 0x00000020 Master 8 protection context control */ + __IOM uint32_t MS9_CTL; /*!< 0x00000024 Master 9 protection context control */ + __IOM uint32_t MS10_CTL; /*!< 0x00000028 Master 10 protection context control */ + __IOM uint32_t MS11_CTL; /*!< 0x0000002C Master 11 protection context control */ + __IOM uint32_t MS12_CTL; /*!< 0x00000030 Master 12 protection context control */ + __IOM uint32_t MS13_CTL; /*!< 0x00000034 Master 13 protection context control */ + __IOM uint32_t MS14_CTL; /*!< 0x00000038 Master 14 protection context control */ + __IOM uint32_t MS15_CTL; /*!< 0x0000003C Master 15 protection context control */ + __IM uint32_t RESERVED[2032]; + PROT_SMPU_SMPU_STRUCT_V2_Type SMPU_STRUCT[32]; /*!< 0x00002000 SMPU structure */ + __IM uint32_t RESERVED1[1536]; +} PROT_SMPU_V2_Type; /*!< Size = 16384 (0x4000) */ + +/** + * \brief MPU structure (PROT_MPU_MPU_STRUCT) + */ +typedef struct { + __IOM uint32_t ADDR; /*!< 0x00000000 MPU region address */ + __IOM uint32_t ATT; /*!< 0x00000004 MPU region attrributes */ + __IM uint32_t RESERVED[6]; +} PROT_MPU_MPU_STRUCT_V2_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief MPU (PROT_MPU) + */ +typedef struct { + __IOM uint32_t MS_CTL; /*!< 0x00000000 Master control */ + __IM uint32_t RESERVED[127]; + PROT_MPU_MPU_STRUCT_V2_Type MPU_STRUCT[16]; /*!< 0x00000200 MPU structure */ +} PROT_MPU_V2_Type; /*!< Size = 1024 (0x400) */ + +/** + * \brief Protection (PROT) + */ +typedef struct { + PROT_SMPU_V2_Type SMPU; /*!< 0x00000000 SMPU */ + PROT_MPU_V2_Type CYMPU[16]; /*!< 0x00004000 MPU */ +} PROT_V2_Type; /*!< Size = 32768 (0x8000) */ + + +/* PROT_SMPU_SMPU_STRUCT.ADDR0 */ +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR0_SUBREGION_DISABLE_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR0_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR0_ADDR24_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR0_ADDR24_Msk 0xFFFFFF00UL +/* PROT_SMPU_SMPU_STRUCT.ATT0 */ +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UR_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UR_Msk 0x1UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UW_Pos 1UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UW_Msk 0x2UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UX_Pos 2UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_UX_Msk 0x4UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PR_Pos 3UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PR_Msk 0x8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PW_Pos 4UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PW_Msk 0x10UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PX_Pos 5UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PX_Msk 0x20UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_NS_Pos 6UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_NS_Msk 0x40UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MASK_0_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MASK_0_Msk 0x100UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MASK_15_TO_1_Pos 9UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_REGION_SIZE_Pos 24UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_REGION_SIZE_Msk 0x1F000000UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MATCH_Pos 30UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_PC_MATCH_Msk 0x40000000UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_ENABLED_Pos 31UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT0_ENABLED_Msk 0x80000000UL +/* PROT_SMPU_SMPU_STRUCT.ADDR1 */ +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR1_SUBREGION_DISABLE_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR1_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR1_ADDR24_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ADDR1_ADDR24_Msk 0xFFFFFF00UL +/* PROT_SMPU_SMPU_STRUCT.ATT1 */ +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UR_Pos 0UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UR_Msk 0x1UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UW_Pos 1UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UW_Msk 0x2UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UX_Pos 2UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_UX_Msk 0x4UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PR_Pos 3UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PR_Msk 0x8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PW_Pos 4UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PW_Msk 0x10UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PX_Pos 5UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PX_Msk 0x20UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_NS_Pos 6UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_NS_Msk 0x40UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MASK_0_Pos 8UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MASK_0_Msk 0x100UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MASK_15_TO_1_Pos 9UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MASK_15_TO_1_Msk 0xFFFE00UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_REGION_SIZE_Pos 24UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_REGION_SIZE_Msk 0x1F000000UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MATCH_Pos 30UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_PC_MATCH_Msk 0x40000000UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_ENABLED_Pos 31UL +#define PROT_SMPU_SMPU_STRUCT_V2_ATT1_ENABLED_Msk 0x80000000UL + + +/* PROT_SMPU.MS0_CTL */ +#define PROT_SMPU_V2_MS0_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS0_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS0_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS0_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS0_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS0_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS0_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS0_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS0_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS0_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS1_CTL */ +#define PROT_SMPU_V2_MS1_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS1_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS1_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS1_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS1_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS1_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS1_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS1_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS1_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS1_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS2_CTL */ +#define PROT_SMPU_V2_MS2_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS2_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS2_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS2_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS2_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS2_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS2_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS2_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS2_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS2_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS3_CTL */ +#define PROT_SMPU_V2_MS3_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS3_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS3_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS3_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS3_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS3_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS3_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS3_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS3_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS3_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS4_CTL */ +#define PROT_SMPU_V2_MS4_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS4_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS4_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS4_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS4_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS4_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS4_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS4_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS4_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS4_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS5_CTL */ +#define PROT_SMPU_V2_MS5_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS5_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS5_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS5_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS5_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS5_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS5_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS5_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS5_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS5_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS6_CTL */ +#define PROT_SMPU_V2_MS6_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS6_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS6_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS6_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS6_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS6_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS6_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS6_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS6_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS6_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS7_CTL */ +#define PROT_SMPU_V2_MS7_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS7_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS7_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS7_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS7_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS7_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS7_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS7_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS7_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS7_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS8_CTL */ +#define PROT_SMPU_V2_MS8_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS8_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS8_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS8_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS8_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS8_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS8_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS8_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS8_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS8_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS9_CTL */ +#define PROT_SMPU_V2_MS9_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS9_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS9_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS9_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS9_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS9_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS9_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS9_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS9_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS9_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS10_CTL */ +#define PROT_SMPU_V2_MS10_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS10_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS10_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS10_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS10_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS10_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS10_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS10_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS10_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS10_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS11_CTL */ +#define PROT_SMPU_V2_MS11_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS11_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS11_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS11_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS11_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS11_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS11_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS11_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS11_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS11_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS12_CTL */ +#define PROT_SMPU_V2_MS12_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS12_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS12_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS12_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS12_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS12_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS12_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS12_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS12_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS12_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS13_CTL */ +#define PROT_SMPU_V2_MS13_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS13_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS13_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS13_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS13_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS13_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS13_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS13_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS13_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS13_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS14_CTL */ +#define PROT_SMPU_V2_MS14_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS14_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS14_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS14_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS14_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS14_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS14_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS14_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS14_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS14_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL +/* PROT_SMPU.MS15_CTL */ +#define PROT_SMPU_V2_MS15_CTL_P_Pos 0UL +#define PROT_SMPU_V2_MS15_CTL_P_Msk 0x1UL +#define PROT_SMPU_V2_MS15_CTL_NS_Pos 1UL +#define PROT_SMPU_V2_MS15_CTL_NS_Msk 0x2UL +#define PROT_SMPU_V2_MS15_CTL_PRIO_Pos 8UL +#define PROT_SMPU_V2_MS15_CTL_PRIO_Msk 0x300UL +#define PROT_SMPU_V2_MS15_CTL_PC_MASK_0_Pos 16UL +#define PROT_SMPU_V2_MS15_CTL_PC_MASK_0_Msk 0x10000UL +#define PROT_SMPU_V2_MS15_CTL_PC_MASK_15_TO_1_Pos 17UL +#define PROT_SMPU_V2_MS15_CTL_PC_MASK_15_TO_1_Msk 0xFFFE0000UL + + +/* PROT_MPU_MPU_STRUCT.ADDR */ +#define PROT_MPU_MPU_STRUCT_V2_ADDR_SUBREGION_DISABLE_Pos 0UL +#define PROT_MPU_MPU_STRUCT_V2_ADDR_SUBREGION_DISABLE_Msk 0xFFUL +#define PROT_MPU_MPU_STRUCT_V2_ADDR_ADDR24_Pos 8UL +#define PROT_MPU_MPU_STRUCT_V2_ADDR_ADDR24_Msk 0xFFFFFF00UL +/* PROT_MPU_MPU_STRUCT.ATT */ +#define PROT_MPU_MPU_STRUCT_V2_ATT_UR_Pos 0UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_UR_Msk 0x1UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_UW_Pos 1UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_UW_Msk 0x2UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_UX_Pos 2UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_UX_Msk 0x4UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PR_Pos 3UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PR_Msk 0x8UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PW_Pos 4UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PW_Msk 0x10UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PX_Pos 5UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_PX_Msk 0x20UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_NS_Pos 6UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_NS_Msk 0x40UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_REGION_SIZE_Pos 24UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_REGION_SIZE_Msk 0x1F000000UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_ENABLED_Pos 31UL +#define PROT_MPU_MPU_STRUCT_V2_ATT_ENABLED_Msk 0x80000000UL + + +/* PROT_MPU.MS_CTL */ +#define PROT_MPU_V2_MS_CTL_PC_Pos 0UL +#define PROT_MPU_V2_MS_CTL_PC_Msk 0xFUL +#define PROT_MPU_V2_MS_CTL_PC_SAVED_Pos 16UL +#define PROT_MPU_V2_MS_CTL_PC_SAVED_Msk 0xF0000UL + + +#endif /* _CYIP_PROT_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sar.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sar.h new file mode 100644 index 00000000000..82f85ee007c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sar.h @@ -0,0 +1,636 @@ +/***************************************************************************//** +* \file cyip_sar.h +* +* \brief +* SAR IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SAR_H_ +#define _CYIP_SAR_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_SECTION_SIZE 0x00010000UL + +/** + * \brief SAR ADC with Sequencer (SAR) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 Analog control register. */ + __IOM uint32_t SAMPLE_CTRL; /*!< 0x00000004 Sample control register. */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t SAMPLE_TIME01; /*!< 0x00000010 Sample time specification ST0 and ST1 */ + __IOM uint32_t SAMPLE_TIME23; /*!< 0x00000014 Sample time specification ST2 and ST3 */ + __IOM uint32_t RANGE_THRES; /*!< 0x00000018 Global range detect threshold register. */ + __IOM uint32_t RANGE_COND; /*!< 0x0000001C Global range detect mode register. */ + __IOM uint32_t CHAN_EN; /*!< 0x00000020 Enable bits for the channels */ + __IOM uint32_t START_CTRL; /*!< 0x00000024 Start control register (firmware trigger). */ + __IM uint32_t RESERVED1[22]; + __IOM uint32_t CHAN_CONFIG[16]; /*!< 0x00000080 Channel configuration register. */ + __IM uint32_t RESERVED2[16]; + __IM uint32_t CHAN_WORK[16]; /*!< 0x00000100 Channel working data register */ + __IM uint32_t RESERVED3[16]; + __IM uint32_t CHAN_RESULT[16]; /*!< 0x00000180 Channel result data register */ + __IM uint32_t RESERVED4[16]; + __IM uint32_t CHAN_WORK_UPDATED; /*!< 0x00000200 Channel working data register 'updated' bits */ + __IM uint32_t CHAN_RESULT_UPDATED; /*!< 0x00000204 Channel result data register 'updated' bits */ + __IM uint32_t CHAN_WORK_NEWVALUE; /*!< 0x00000208 Channel working data register 'new value' bits */ + __IM uint32_t CHAN_RESULT_NEWVALUE; /*!< 0x0000020C Channel result data register 'new value' bits */ + __IOM uint32_t INTR; /*!< 0x00000210 Interrupt request register. */ + __IOM uint32_t INTR_SET; /*!< 0x00000214 Interrupt set request register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000218 Interrupt mask register. */ + __IM uint32_t INTR_MASKED; /*!< 0x0000021C Interrupt masked request register */ + __IOM uint32_t SATURATE_INTR; /*!< 0x00000220 Saturate interrupt request register. */ + __IOM uint32_t SATURATE_INTR_SET; /*!< 0x00000224 Saturate interrupt set request register */ + __IOM uint32_t SATURATE_INTR_MASK; /*!< 0x00000228 Saturate interrupt mask register. */ + __IM uint32_t SATURATE_INTR_MASKED; /*!< 0x0000022C Saturate interrupt masked request register */ + __IOM uint32_t RANGE_INTR; /*!< 0x00000230 Range detect interrupt request register. */ + __IOM uint32_t RANGE_INTR_SET; /*!< 0x00000234 Range detect interrupt set request register */ + __IOM uint32_t RANGE_INTR_MASK; /*!< 0x00000238 Range detect interrupt mask register. */ + __IM uint32_t RANGE_INTR_MASKED; /*!< 0x0000023C Range interrupt masked request register */ + __IM uint32_t INTR_CAUSE; /*!< 0x00000240 Interrupt cause register */ + __IM uint32_t RESERVED5[15]; + __IOM uint32_t INJ_CHAN_CONFIG; /*!< 0x00000280 Injection channel configuration register. */ + __IM uint32_t RESERVED6[3]; + __IM uint32_t INJ_RESULT; /*!< 0x00000290 Injection channel result register */ + __IM uint32_t RESERVED7[3]; + __IM uint32_t STATUS; /*!< 0x000002A0 Current status of internal SAR registers (mostly for debug) */ + __IM uint32_t AVG_STAT; /*!< 0x000002A4 Current averaging status (for debug) */ + __IM uint32_t RESERVED8[22]; + __IOM uint32_t MUX_SWITCH0; /*!< 0x00000300 SARMUX Firmware switch controls */ + __IOM uint32_t MUX_SWITCH_CLEAR0; /*!< 0x00000304 SARMUX Firmware switch control clear */ + __IM uint32_t RESERVED9[14]; + __IOM uint32_t MUX_SWITCH_DS_CTRL; /*!< 0x00000340 SARMUX switch DSI control */ + __IOM uint32_t MUX_SWITCH_SQ_CTRL; /*!< 0x00000344 SARMUX switch Sar Sequencer control */ + __IM uint32_t MUX_SWITCH_STATUS; /*!< 0x00000348 SARMUX switch status */ + __IM uint32_t RESERVED10[749]; + __IOM uint32_t ANA_TRIM0; /*!< 0x00000F00 Analog trim register. */ + __IOM uint32_t ANA_TRIM1; /*!< 0x00000F04 Analog trim register. */ +} SAR_V1_Type; /*!< Size = 3848 (0xF08) */ + + +/* SAR.CTRL */ +#define SAR_CTRL_PWR_CTRL_VREF_Pos 0UL +#define SAR_CTRL_PWR_CTRL_VREF_Msk 0x7UL +#define SAR_CTRL_VREF_SEL_Pos 4UL +#define SAR_CTRL_VREF_SEL_Msk 0x70UL +#define SAR_CTRL_VREF_BYP_CAP_EN_Pos 7UL +#define SAR_CTRL_VREF_BYP_CAP_EN_Msk 0x80UL +#define SAR_CTRL_NEG_SEL_Pos 9UL +#define SAR_CTRL_NEG_SEL_Msk 0xE00UL +#define SAR_CTRL_SAR_HW_CTRL_NEGVREF_Pos 13UL +#define SAR_CTRL_SAR_HW_CTRL_NEGVREF_Msk 0x2000UL +#define SAR_CTRL_COMP_DLY_Pos 14UL +#define SAR_CTRL_COMP_DLY_Msk 0xC000UL +#define SAR_CTRL_SPARE_Pos 16UL +#define SAR_CTRL_SPARE_Msk 0xF0000UL +#define SAR_CTRL_BOOSTPUMP_EN_Pos 20UL +#define SAR_CTRL_BOOSTPUMP_EN_Msk 0x100000UL +#define SAR_CTRL_REFBUF_EN_Pos 21UL +#define SAR_CTRL_REFBUF_EN_Msk 0x200000UL +#define SAR_CTRL_COMP_PWR_Pos 24UL +#define SAR_CTRL_COMP_PWR_Msk 0x7000000UL +#define SAR_CTRL_DEEPSLEEP_ON_Pos 27UL +#define SAR_CTRL_DEEPSLEEP_ON_Msk 0x8000000UL +#define SAR_CTRL_DSI_SYNC_CONFIG_Pos 28UL +#define SAR_CTRL_DSI_SYNC_CONFIG_Msk 0x10000000UL +#define SAR_CTRL_DSI_MODE_Pos 29UL +#define SAR_CTRL_DSI_MODE_Msk 0x20000000UL +#define SAR_CTRL_SWITCH_DISABLE_Pos 30UL +#define SAR_CTRL_SWITCH_DISABLE_Msk 0x40000000UL +#define SAR_CTRL_ENABLED_Pos 31UL +#define SAR_CTRL_ENABLED_Msk 0x80000000UL +/* SAR.SAMPLE_CTRL */ +#define SAR_SAMPLE_CTRL_LEFT_ALIGN_Pos 1UL +#define SAR_SAMPLE_CTRL_LEFT_ALIGN_Msk 0x2UL +#define SAR_SAMPLE_CTRL_SINGLE_ENDED_SIGNED_Pos 2UL +#define SAR_SAMPLE_CTRL_SINGLE_ENDED_SIGNED_Msk 0x4UL +#define SAR_SAMPLE_CTRL_DIFFERENTIAL_SIGNED_Pos 3UL +#define SAR_SAMPLE_CTRL_DIFFERENTIAL_SIGNED_Msk 0x8UL +#define SAR_SAMPLE_CTRL_AVG_CNT_Pos 4UL +#define SAR_SAMPLE_CTRL_AVG_CNT_Msk 0x70UL +#define SAR_SAMPLE_CTRL_AVG_SHIFT_Pos 7UL +#define SAR_SAMPLE_CTRL_AVG_SHIFT_Msk 0x80UL +#define SAR_SAMPLE_CTRL_AVG_MODE_Pos 8UL +#define SAR_SAMPLE_CTRL_AVG_MODE_Msk 0x100UL +#define SAR_SAMPLE_CTRL_CONTINUOUS_Pos 16UL +#define SAR_SAMPLE_CTRL_CONTINUOUS_Msk 0x10000UL +#define SAR_SAMPLE_CTRL_DSI_TRIGGER_EN_Pos 17UL +#define SAR_SAMPLE_CTRL_DSI_TRIGGER_EN_Msk 0x20000UL +#define SAR_SAMPLE_CTRL_DSI_TRIGGER_LEVEL_Pos 18UL +#define SAR_SAMPLE_CTRL_DSI_TRIGGER_LEVEL_Msk 0x40000UL +#define SAR_SAMPLE_CTRL_DSI_SYNC_TRIGGER_Pos 19UL +#define SAR_SAMPLE_CTRL_DSI_SYNC_TRIGGER_Msk 0x80000UL +#define SAR_SAMPLE_CTRL_UAB_SCAN_MODE_Pos 22UL +#define SAR_SAMPLE_CTRL_UAB_SCAN_MODE_Msk 0x400000UL +#define SAR_SAMPLE_CTRL_REPEAT_INVALID_Pos 23UL +#define SAR_SAMPLE_CTRL_REPEAT_INVALID_Msk 0x800000UL +#define SAR_SAMPLE_CTRL_VALID_SEL_Pos 24UL +#define SAR_SAMPLE_CTRL_VALID_SEL_Msk 0x7000000UL +#define SAR_SAMPLE_CTRL_VALID_SEL_EN_Pos 27UL +#define SAR_SAMPLE_CTRL_VALID_SEL_EN_Msk 0x8000000UL +#define SAR_SAMPLE_CTRL_VALID_IGNORE_Pos 28UL +#define SAR_SAMPLE_CTRL_VALID_IGNORE_Msk 0x10000000UL +#define SAR_SAMPLE_CTRL_TRIGGER_OUT_EN_Pos 30UL +#define SAR_SAMPLE_CTRL_TRIGGER_OUT_EN_Msk 0x40000000UL +#define SAR_SAMPLE_CTRL_EOS_DSI_OUT_EN_Pos 31UL +#define SAR_SAMPLE_CTRL_EOS_DSI_OUT_EN_Msk 0x80000000UL +/* SAR.SAMPLE_TIME01 */ +#define SAR_SAMPLE_TIME01_SAMPLE_TIME0_Pos 0UL +#define SAR_SAMPLE_TIME01_SAMPLE_TIME0_Msk 0x3FFUL +#define SAR_SAMPLE_TIME01_SAMPLE_TIME1_Pos 16UL +#define SAR_SAMPLE_TIME01_SAMPLE_TIME1_Msk 0x3FF0000UL +/* SAR.SAMPLE_TIME23 */ +#define SAR_SAMPLE_TIME23_SAMPLE_TIME2_Pos 0UL +#define SAR_SAMPLE_TIME23_SAMPLE_TIME2_Msk 0x3FFUL +#define SAR_SAMPLE_TIME23_SAMPLE_TIME3_Pos 16UL +#define SAR_SAMPLE_TIME23_SAMPLE_TIME3_Msk 0x3FF0000UL +/* SAR.RANGE_THRES */ +#define SAR_RANGE_THRES_RANGE_LOW_Pos 0UL +#define SAR_RANGE_THRES_RANGE_LOW_Msk 0xFFFFUL +#define SAR_RANGE_THRES_RANGE_HIGH_Pos 16UL +#define SAR_RANGE_THRES_RANGE_HIGH_Msk 0xFFFF0000UL +/* SAR.RANGE_COND */ +#define SAR_RANGE_COND_RANGE_COND_Pos 30UL +#define SAR_RANGE_COND_RANGE_COND_Msk 0xC0000000UL +/* SAR.CHAN_EN */ +#define SAR_CHAN_EN_CHAN_EN_Pos 0UL +#define SAR_CHAN_EN_CHAN_EN_Msk 0xFFFFUL +/* SAR.START_CTRL */ +#define SAR_START_CTRL_FW_TRIGGER_Pos 0UL +#define SAR_START_CTRL_FW_TRIGGER_Msk 0x1UL +/* SAR.CHAN_CONFIG */ +#define SAR_CHAN_CONFIG_POS_PIN_ADDR_Pos 0UL +#define SAR_CHAN_CONFIG_POS_PIN_ADDR_Msk 0x7UL +#define SAR_CHAN_CONFIG_POS_PORT_ADDR_Pos 4UL +#define SAR_CHAN_CONFIG_POS_PORT_ADDR_Msk 0x70UL +#define SAR_CHAN_CONFIG_DIFFERENTIAL_EN_Pos 8UL +#define SAR_CHAN_CONFIG_DIFFERENTIAL_EN_Msk 0x100UL +#define SAR_CHAN_CONFIG_AVG_EN_Pos 10UL +#define SAR_CHAN_CONFIG_AVG_EN_Msk 0x400UL +#define SAR_CHAN_CONFIG_SAMPLE_TIME_SEL_Pos 12UL +#define SAR_CHAN_CONFIG_SAMPLE_TIME_SEL_Msk 0x3000UL +#define SAR_CHAN_CONFIG_NEG_PIN_ADDR_Pos 16UL +#define SAR_CHAN_CONFIG_NEG_PIN_ADDR_Msk 0x70000UL +#define SAR_CHAN_CONFIG_NEG_PORT_ADDR_Pos 20UL +#define SAR_CHAN_CONFIG_NEG_PORT_ADDR_Msk 0x700000UL +#define SAR_CHAN_CONFIG_NEG_ADDR_EN_Pos 24UL +#define SAR_CHAN_CONFIG_NEG_ADDR_EN_Msk 0x1000000UL +#define SAR_CHAN_CONFIG_DSI_OUT_EN_Pos 31UL +#define SAR_CHAN_CONFIG_DSI_OUT_EN_Msk 0x80000000UL +/* SAR.CHAN_WORK */ +#define SAR_CHAN_WORK_WORK_Pos 0UL +#define SAR_CHAN_WORK_WORK_Msk 0xFFFFUL +#define SAR_CHAN_WORK_CHAN_WORK_NEWVALUE_MIR_Pos 27UL +#define SAR_CHAN_WORK_CHAN_WORK_NEWVALUE_MIR_Msk 0x8000000UL +#define SAR_CHAN_WORK_CHAN_WORK_UPDATED_MIR_Pos 31UL +#define SAR_CHAN_WORK_CHAN_WORK_UPDATED_MIR_Msk 0x80000000UL +/* SAR.CHAN_RESULT */ +#define SAR_CHAN_RESULT_RESULT_Pos 0UL +#define SAR_CHAN_RESULT_RESULT_Msk 0xFFFFUL +#define SAR_CHAN_RESULT_CHAN_RESULT_NEWVALUE_MIR_Pos 27UL +#define SAR_CHAN_RESULT_CHAN_RESULT_NEWVALUE_MIR_Msk 0x8000000UL +#define SAR_CHAN_RESULT_SATURATE_INTR_MIR_Pos 29UL +#define SAR_CHAN_RESULT_SATURATE_INTR_MIR_Msk 0x20000000UL +#define SAR_CHAN_RESULT_RANGE_INTR_MIR_Pos 30UL +#define SAR_CHAN_RESULT_RANGE_INTR_MIR_Msk 0x40000000UL +#define SAR_CHAN_RESULT_CHAN_RESULT_UPDATED_MIR_Pos 31UL +#define SAR_CHAN_RESULT_CHAN_RESULT_UPDATED_MIR_Msk 0x80000000UL +/* SAR.CHAN_WORK_UPDATED */ +#define SAR_CHAN_WORK_UPDATED_CHAN_WORK_UPDATED_Pos 0UL +#define SAR_CHAN_WORK_UPDATED_CHAN_WORK_UPDATED_Msk 0xFFFFUL +/* SAR.CHAN_RESULT_UPDATED */ +#define SAR_CHAN_RESULT_UPDATED_CHAN_RESULT_UPDATED_Pos 0UL +#define SAR_CHAN_RESULT_UPDATED_CHAN_RESULT_UPDATED_Msk 0xFFFFUL +/* SAR.CHAN_WORK_NEWVALUE */ +#define SAR_CHAN_WORK_NEWVALUE_CHAN_WORK_NEWVALUE_Pos 0UL +#define SAR_CHAN_WORK_NEWVALUE_CHAN_WORK_NEWVALUE_Msk 0xFFFFUL +/* SAR.CHAN_RESULT_NEWVALUE */ +#define SAR_CHAN_RESULT_NEWVALUE_CHAN_RESULT_NEWVALUE_Pos 0UL +#define SAR_CHAN_RESULT_NEWVALUE_CHAN_RESULT_NEWVALUE_Msk 0xFFFFUL +/* SAR.INTR */ +#define SAR_INTR_EOS_INTR_Pos 0UL +#define SAR_INTR_EOS_INTR_Msk 0x1UL +#define SAR_INTR_OVERFLOW_INTR_Pos 1UL +#define SAR_INTR_OVERFLOW_INTR_Msk 0x2UL +#define SAR_INTR_FW_COLLISION_INTR_Pos 2UL +#define SAR_INTR_FW_COLLISION_INTR_Msk 0x4UL +#define SAR_INTR_DSI_COLLISION_INTR_Pos 3UL +#define SAR_INTR_DSI_COLLISION_INTR_Msk 0x8UL +#define SAR_INTR_INJ_EOC_INTR_Pos 4UL +#define SAR_INTR_INJ_EOC_INTR_Msk 0x10UL +#define SAR_INTR_INJ_SATURATE_INTR_Pos 5UL +#define SAR_INTR_INJ_SATURATE_INTR_Msk 0x20UL +#define SAR_INTR_INJ_RANGE_INTR_Pos 6UL +#define SAR_INTR_INJ_RANGE_INTR_Msk 0x40UL +#define SAR_INTR_INJ_COLLISION_INTR_Pos 7UL +#define SAR_INTR_INJ_COLLISION_INTR_Msk 0x80UL +/* SAR.INTR_SET */ +#define SAR_INTR_SET_EOS_SET_Pos 0UL +#define SAR_INTR_SET_EOS_SET_Msk 0x1UL +#define SAR_INTR_SET_OVERFLOW_SET_Pos 1UL +#define SAR_INTR_SET_OVERFLOW_SET_Msk 0x2UL +#define SAR_INTR_SET_FW_COLLISION_SET_Pos 2UL +#define SAR_INTR_SET_FW_COLLISION_SET_Msk 0x4UL +#define SAR_INTR_SET_DSI_COLLISION_SET_Pos 3UL +#define SAR_INTR_SET_DSI_COLLISION_SET_Msk 0x8UL +#define SAR_INTR_SET_INJ_EOC_SET_Pos 4UL +#define SAR_INTR_SET_INJ_EOC_SET_Msk 0x10UL +#define SAR_INTR_SET_INJ_SATURATE_SET_Pos 5UL +#define SAR_INTR_SET_INJ_SATURATE_SET_Msk 0x20UL +#define SAR_INTR_SET_INJ_RANGE_SET_Pos 6UL +#define SAR_INTR_SET_INJ_RANGE_SET_Msk 0x40UL +#define SAR_INTR_SET_INJ_COLLISION_SET_Pos 7UL +#define SAR_INTR_SET_INJ_COLLISION_SET_Msk 0x80UL +/* SAR.INTR_MASK */ +#define SAR_INTR_MASK_EOS_MASK_Pos 0UL +#define SAR_INTR_MASK_EOS_MASK_Msk 0x1UL +#define SAR_INTR_MASK_OVERFLOW_MASK_Pos 1UL +#define SAR_INTR_MASK_OVERFLOW_MASK_Msk 0x2UL +#define SAR_INTR_MASK_FW_COLLISION_MASK_Pos 2UL +#define SAR_INTR_MASK_FW_COLLISION_MASK_Msk 0x4UL +#define SAR_INTR_MASK_DSI_COLLISION_MASK_Pos 3UL +#define SAR_INTR_MASK_DSI_COLLISION_MASK_Msk 0x8UL +#define SAR_INTR_MASK_INJ_EOC_MASK_Pos 4UL +#define SAR_INTR_MASK_INJ_EOC_MASK_Msk 0x10UL +#define SAR_INTR_MASK_INJ_SATURATE_MASK_Pos 5UL +#define SAR_INTR_MASK_INJ_SATURATE_MASK_Msk 0x20UL +#define SAR_INTR_MASK_INJ_RANGE_MASK_Pos 6UL +#define SAR_INTR_MASK_INJ_RANGE_MASK_Msk 0x40UL +#define SAR_INTR_MASK_INJ_COLLISION_MASK_Pos 7UL +#define SAR_INTR_MASK_INJ_COLLISION_MASK_Msk 0x80UL +/* SAR.INTR_MASKED */ +#define SAR_INTR_MASKED_EOS_MASKED_Pos 0UL +#define SAR_INTR_MASKED_EOS_MASKED_Msk 0x1UL +#define SAR_INTR_MASKED_OVERFLOW_MASKED_Pos 1UL +#define SAR_INTR_MASKED_OVERFLOW_MASKED_Msk 0x2UL +#define SAR_INTR_MASKED_FW_COLLISION_MASKED_Pos 2UL +#define SAR_INTR_MASKED_FW_COLLISION_MASKED_Msk 0x4UL +#define SAR_INTR_MASKED_DSI_COLLISION_MASKED_Pos 3UL +#define SAR_INTR_MASKED_DSI_COLLISION_MASKED_Msk 0x8UL +#define SAR_INTR_MASKED_INJ_EOC_MASKED_Pos 4UL +#define SAR_INTR_MASKED_INJ_EOC_MASKED_Msk 0x10UL +#define SAR_INTR_MASKED_INJ_SATURATE_MASKED_Pos 5UL +#define SAR_INTR_MASKED_INJ_SATURATE_MASKED_Msk 0x20UL +#define SAR_INTR_MASKED_INJ_RANGE_MASKED_Pos 6UL +#define SAR_INTR_MASKED_INJ_RANGE_MASKED_Msk 0x40UL +#define SAR_INTR_MASKED_INJ_COLLISION_MASKED_Pos 7UL +#define SAR_INTR_MASKED_INJ_COLLISION_MASKED_Msk 0x80UL +/* SAR.SATURATE_INTR */ +#define SAR_SATURATE_INTR_SATURATE_INTR_Pos 0UL +#define SAR_SATURATE_INTR_SATURATE_INTR_Msk 0xFFFFUL +/* SAR.SATURATE_INTR_SET */ +#define SAR_SATURATE_INTR_SET_SATURATE_SET_Pos 0UL +#define SAR_SATURATE_INTR_SET_SATURATE_SET_Msk 0xFFFFUL +/* SAR.SATURATE_INTR_MASK */ +#define SAR_SATURATE_INTR_MASK_SATURATE_MASK_Pos 0UL +#define SAR_SATURATE_INTR_MASK_SATURATE_MASK_Msk 0xFFFFUL +/* SAR.SATURATE_INTR_MASKED */ +#define SAR_SATURATE_INTR_MASKED_SATURATE_MASKED_Pos 0UL +#define SAR_SATURATE_INTR_MASKED_SATURATE_MASKED_Msk 0xFFFFUL +/* SAR.RANGE_INTR */ +#define SAR_RANGE_INTR_RANGE_INTR_Pos 0UL +#define SAR_RANGE_INTR_RANGE_INTR_Msk 0xFFFFUL +/* SAR.RANGE_INTR_SET */ +#define SAR_RANGE_INTR_SET_RANGE_SET_Pos 0UL +#define SAR_RANGE_INTR_SET_RANGE_SET_Msk 0xFFFFUL +/* SAR.RANGE_INTR_MASK */ +#define SAR_RANGE_INTR_MASK_RANGE_MASK_Pos 0UL +#define SAR_RANGE_INTR_MASK_RANGE_MASK_Msk 0xFFFFUL +/* SAR.RANGE_INTR_MASKED */ +#define SAR_RANGE_INTR_MASKED_RANGE_MASKED_Pos 0UL +#define SAR_RANGE_INTR_MASKED_RANGE_MASKED_Msk 0xFFFFUL +/* SAR.INTR_CAUSE */ +#define SAR_INTR_CAUSE_EOS_MASKED_MIR_Pos 0UL +#define SAR_INTR_CAUSE_EOS_MASKED_MIR_Msk 0x1UL +#define SAR_INTR_CAUSE_OVERFLOW_MASKED_MIR_Pos 1UL +#define SAR_INTR_CAUSE_OVERFLOW_MASKED_MIR_Msk 0x2UL +#define SAR_INTR_CAUSE_FW_COLLISION_MASKED_MIR_Pos 2UL +#define SAR_INTR_CAUSE_FW_COLLISION_MASKED_MIR_Msk 0x4UL +#define SAR_INTR_CAUSE_DSI_COLLISION_MASKED_MIR_Pos 3UL +#define SAR_INTR_CAUSE_DSI_COLLISION_MASKED_MIR_Msk 0x8UL +#define SAR_INTR_CAUSE_INJ_EOC_MASKED_MIR_Pos 4UL +#define SAR_INTR_CAUSE_INJ_EOC_MASKED_MIR_Msk 0x10UL +#define SAR_INTR_CAUSE_INJ_SATURATE_MASKED_MIR_Pos 5UL +#define SAR_INTR_CAUSE_INJ_SATURATE_MASKED_MIR_Msk 0x20UL +#define SAR_INTR_CAUSE_INJ_RANGE_MASKED_MIR_Pos 6UL +#define SAR_INTR_CAUSE_INJ_RANGE_MASKED_MIR_Msk 0x40UL +#define SAR_INTR_CAUSE_INJ_COLLISION_MASKED_MIR_Pos 7UL +#define SAR_INTR_CAUSE_INJ_COLLISION_MASKED_MIR_Msk 0x80UL +#define SAR_INTR_CAUSE_SATURATE_MASKED_RED_Pos 30UL +#define SAR_INTR_CAUSE_SATURATE_MASKED_RED_Msk 0x40000000UL +#define SAR_INTR_CAUSE_RANGE_MASKED_RED_Pos 31UL +#define SAR_INTR_CAUSE_RANGE_MASKED_RED_Msk 0x80000000UL +/* SAR.INJ_CHAN_CONFIG */ +#define SAR_INJ_CHAN_CONFIG_INJ_PIN_ADDR_Pos 0UL +#define SAR_INJ_CHAN_CONFIG_INJ_PIN_ADDR_Msk 0x7UL +#define SAR_INJ_CHAN_CONFIG_INJ_PORT_ADDR_Pos 4UL +#define SAR_INJ_CHAN_CONFIG_INJ_PORT_ADDR_Msk 0x70UL +#define SAR_INJ_CHAN_CONFIG_INJ_DIFFERENTIAL_EN_Pos 8UL +#define SAR_INJ_CHAN_CONFIG_INJ_DIFFERENTIAL_EN_Msk 0x100UL +#define SAR_INJ_CHAN_CONFIG_INJ_AVG_EN_Pos 10UL +#define SAR_INJ_CHAN_CONFIG_INJ_AVG_EN_Msk 0x400UL +#define SAR_INJ_CHAN_CONFIG_INJ_SAMPLE_TIME_SEL_Pos 12UL +#define SAR_INJ_CHAN_CONFIG_INJ_SAMPLE_TIME_SEL_Msk 0x3000UL +#define SAR_INJ_CHAN_CONFIG_INJ_TAILGATING_Pos 30UL +#define SAR_INJ_CHAN_CONFIG_INJ_TAILGATING_Msk 0x40000000UL +#define SAR_INJ_CHAN_CONFIG_INJ_START_EN_Pos 31UL +#define SAR_INJ_CHAN_CONFIG_INJ_START_EN_Msk 0x80000000UL +/* SAR.INJ_RESULT */ +#define SAR_INJ_RESULT_INJ_RESULT_Pos 0UL +#define SAR_INJ_RESULT_INJ_RESULT_Msk 0xFFFFUL +#define SAR_INJ_RESULT_INJ_NEWVALUE_Pos 27UL +#define SAR_INJ_RESULT_INJ_NEWVALUE_Msk 0x8000000UL +#define SAR_INJ_RESULT_INJ_COLLISION_INTR_MIR_Pos 28UL +#define SAR_INJ_RESULT_INJ_COLLISION_INTR_MIR_Msk 0x10000000UL +#define SAR_INJ_RESULT_INJ_SATURATE_INTR_MIR_Pos 29UL +#define SAR_INJ_RESULT_INJ_SATURATE_INTR_MIR_Msk 0x20000000UL +#define SAR_INJ_RESULT_INJ_RANGE_INTR_MIR_Pos 30UL +#define SAR_INJ_RESULT_INJ_RANGE_INTR_MIR_Msk 0x40000000UL +#define SAR_INJ_RESULT_INJ_EOC_INTR_MIR_Pos 31UL +#define SAR_INJ_RESULT_INJ_EOC_INTR_MIR_Msk 0x80000000UL +/* SAR.STATUS */ +#define SAR_STATUS_CUR_CHAN_Pos 0UL +#define SAR_STATUS_CUR_CHAN_Msk 0x1FUL +#define SAR_STATUS_SW_VREF_NEG_Pos 30UL +#define SAR_STATUS_SW_VREF_NEG_Msk 0x40000000UL +#define SAR_STATUS_BUSY_Pos 31UL +#define SAR_STATUS_BUSY_Msk 0x80000000UL +/* SAR.AVG_STAT */ +#define SAR_AVG_STAT_CUR_AVG_ACCU_Pos 0UL +#define SAR_AVG_STAT_CUR_AVG_ACCU_Msk 0xFFFFFUL +#define SAR_AVG_STAT_INTRLV_BUSY_Pos 23UL +#define SAR_AVG_STAT_INTRLV_BUSY_Msk 0x800000UL +#define SAR_AVG_STAT_CUR_AVG_CNT_Pos 24UL +#define SAR_AVG_STAT_CUR_AVG_CNT_Msk 0xFF000000UL +/* SAR.MUX_SWITCH0 */ +#define SAR_MUX_SWITCH0_MUX_FW_P0_VPLUS_Pos 0UL +#define SAR_MUX_SWITCH0_MUX_FW_P0_VPLUS_Msk 0x1UL +#define SAR_MUX_SWITCH0_MUX_FW_P1_VPLUS_Pos 1UL +#define SAR_MUX_SWITCH0_MUX_FW_P1_VPLUS_Msk 0x2UL +#define SAR_MUX_SWITCH0_MUX_FW_P2_VPLUS_Pos 2UL +#define SAR_MUX_SWITCH0_MUX_FW_P2_VPLUS_Msk 0x4UL +#define SAR_MUX_SWITCH0_MUX_FW_P3_VPLUS_Pos 3UL +#define SAR_MUX_SWITCH0_MUX_FW_P3_VPLUS_Msk 0x8UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_VPLUS_Pos 4UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_VPLUS_Msk 0x10UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_VPLUS_Pos 5UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_VPLUS_Msk 0x20UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_VPLUS_Pos 6UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_VPLUS_Msk 0x40UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_VPLUS_Pos 7UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_VPLUS_Msk 0x80UL +#define SAR_MUX_SWITCH0_MUX_FW_P0_VMINUS_Pos 8UL +#define SAR_MUX_SWITCH0_MUX_FW_P0_VMINUS_Msk 0x100UL +#define SAR_MUX_SWITCH0_MUX_FW_P1_VMINUS_Pos 9UL +#define SAR_MUX_SWITCH0_MUX_FW_P1_VMINUS_Msk 0x200UL +#define SAR_MUX_SWITCH0_MUX_FW_P2_VMINUS_Pos 10UL +#define SAR_MUX_SWITCH0_MUX_FW_P2_VMINUS_Msk 0x400UL +#define SAR_MUX_SWITCH0_MUX_FW_P3_VMINUS_Pos 11UL +#define SAR_MUX_SWITCH0_MUX_FW_P3_VMINUS_Msk 0x800UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_VMINUS_Pos 12UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_VMINUS_Msk 0x1000UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_VMINUS_Pos 13UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_VMINUS_Msk 0x2000UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_VMINUS_Pos 14UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_VMINUS_Msk 0x4000UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_VMINUS_Pos 15UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_VMINUS_Msk 0x8000UL +#define SAR_MUX_SWITCH0_MUX_FW_VSSA_VMINUS_Pos 16UL +#define SAR_MUX_SWITCH0_MUX_FW_VSSA_VMINUS_Msk 0x10000UL +#define SAR_MUX_SWITCH0_MUX_FW_TEMP_VPLUS_Pos 17UL +#define SAR_MUX_SWITCH0_MUX_FW_TEMP_VPLUS_Msk 0x20000UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VPLUS_Pos 18UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VPLUS_Msk 0x40000UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSB_VPLUS_Pos 19UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSB_VPLUS_Msk 0x80000UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VMINUS_Pos 20UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSA_VMINUS_Msk 0x100000UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSB_VMINUS_Pos 21UL +#define SAR_MUX_SWITCH0_MUX_FW_AMUXBUSB_VMINUS_Msk 0x200000UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS0_VPLUS_Pos 22UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS0_VPLUS_Msk 0x400000UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS1_VPLUS_Pos 23UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS1_VPLUS_Msk 0x800000UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS0_VMINUS_Pos 24UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS0_VMINUS_Msk 0x1000000UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS1_VMINUS_Pos 25UL +#define SAR_MUX_SWITCH0_MUX_FW_SARBUS1_VMINUS_Msk 0x2000000UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_COREIO0_Pos 26UL +#define SAR_MUX_SWITCH0_MUX_FW_P4_COREIO0_Msk 0x4000000UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_COREIO1_Pos 27UL +#define SAR_MUX_SWITCH0_MUX_FW_P5_COREIO1_Msk 0x8000000UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_COREIO2_Pos 28UL +#define SAR_MUX_SWITCH0_MUX_FW_P6_COREIO2_Msk 0x10000000UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_COREIO3_Pos 29UL +#define SAR_MUX_SWITCH0_MUX_FW_P7_COREIO3_Msk 0x20000000UL +/* SAR.MUX_SWITCH_CLEAR0 */ +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P0_VPLUS_Pos 0UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P0_VPLUS_Msk 0x1UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P1_VPLUS_Pos 1UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P1_VPLUS_Msk 0x2UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P2_VPLUS_Pos 2UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P2_VPLUS_Msk 0x4UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P3_VPLUS_Pos 3UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P3_VPLUS_Msk 0x8UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_VPLUS_Pos 4UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_VPLUS_Msk 0x10UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_VPLUS_Pos 5UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_VPLUS_Msk 0x20UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_VPLUS_Pos 6UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_VPLUS_Msk 0x40UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_VPLUS_Pos 7UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_VPLUS_Msk 0x80UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P0_VMINUS_Pos 8UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P0_VMINUS_Msk 0x100UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P1_VMINUS_Pos 9UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P1_VMINUS_Msk 0x200UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P2_VMINUS_Pos 10UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P2_VMINUS_Msk 0x400UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P3_VMINUS_Pos 11UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P3_VMINUS_Msk 0x800UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_VMINUS_Pos 12UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_VMINUS_Msk 0x1000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_VMINUS_Pos 13UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_VMINUS_Msk 0x2000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_VMINUS_Pos 14UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_VMINUS_Msk 0x4000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_VMINUS_Pos 15UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_VMINUS_Msk 0x8000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_VSSA_VMINUS_Pos 16UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_VSSA_VMINUS_Msk 0x10000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_TEMP_VPLUS_Pos 17UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_TEMP_VPLUS_Msk 0x20000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSA_VPLUS_Pos 18UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSA_VPLUS_Msk 0x40000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSB_VPLUS_Pos 19UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSB_VPLUS_Msk 0x80000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSA_VMINUS_Pos 20UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSA_VMINUS_Msk 0x100000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSB_VMINUS_Pos 21UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_AMUXBUSB_VMINUS_Msk 0x200000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS0_VPLUS_Pos 22UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS0_VPLUS_Msk 0x400000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS1_VPLUS_Pos 23UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS1_VPLUS_Msk 0x800000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS0_VMINUS_Pos 24UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS0_VMINUS_Msk 0x1000000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS1_VMINUS_Pos 25UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_SARBUS1_VMINUS_Msk 0x2000000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_COREIO0_Pos 26UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P4_COREIO0_Msk 0x4000000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_COREIO1_Pos 27UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P5_COREIO1_Msk 0x8000000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_COREIO2_Pos 28UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P6_COREIO2_Msk 0x10000000UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_COREIO3_Pos 29UL +#define SAR_MUX_SWITCH_CLEAR0_MUX_FW_P7_COREIO3_Msk 0x20000000UL +/* SAR.MUX_SWITCH_DS_CTRL */ +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P0_Pos 0UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P0_Msk 0x1UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P1_Pos 1UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P1_Msk 0x2UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P2_Pos 2UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P2_Msk 0x4UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P3_Pos 3UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P3_Msk 0x8UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P4_Pos 4UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P4_Msk 0x10UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P5_Pos 5UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P5_Msk 0x20UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P6_Pos 6UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P6_Msk 0x40UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P7_Pos 7UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_P7_Msk 0x80UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_VSSA_Pos 16UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_VSSA_Msk 0x10000UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_TEMP_Pos 17UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_TEMP_Msk 0x20000UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_AMUXBUSA_Pos 18UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_AMUXBUSA_Msk 0x40000UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_AMUXBUSB_Pos 19UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_AMUXBUSB_Msk 0x80000UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_SARBUS0_Pos 22UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_SARBUS0_Msk 0x400000UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_SARBUS1_Pos 23UL +#define SAR_MUX_SWITCH_DS_CTRL_MUX_DS_CTRL_SARBUS1_Msk 0x800000UL +/* SAR.MUX_SWITCH_SQ_CTRL */ +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P0_Pos 0UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P0_Msk 0x1UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P1_Pos 1UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P1_Msk 0x2UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P2_Pos 2UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P2_Msk 0x4UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P3_Pos 3UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P3_Msk 0x8UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P4_Pos 4UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P4_Msk 0x10UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P5_Pos 5UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P5_Msk 0x20UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P6_Pos 6UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P6_Msk 0x40UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P7_Pos 7UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_P7_Msk 0x80UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_VSSA_Pos 16UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_VSSA_Msk 0x10000UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_TEMP_Pos 17UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_TEMP_Msk 0x20000UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_AMUXBUSA_Pos 18UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_AMUXBUSA_Msk 0x40000UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_AMUXBUSB_Pos 19UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_AMUXBUSB_Msk 0x80000UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_SARBUS0_Pos 22UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_SARBUS0_Msk 0x400000UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_SARBUS1_Pos 23UL +#define SAR_MUX_SWITCH_SQ_CTRL_MUX_SQ_CTRL_SARBUS1_Msk 0x800000UL +/* SAR.MUX_SWITCH_STATUS */ +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P0_VPLUS_Pos 0UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P0_VPLUS_Msk 0x1UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P1_VPLUS_Pos 1UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P1_VPLUS_Msk 0x2UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P2_VPLUS_Pos 2UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P2_VPLUS_Msk 0x4UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P3_VPLUS_Pos 3UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P3_VPLUS_Msk 0x8UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P4_VPLUS_Pos 4UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P4_VPLUS_Msk 0x10UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P5_VPLUS_Pos 5UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P5_VPLUS_Msk 0x20UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P6_VPLUS_Pos 6UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P6_VPLUS_Msk 0x40UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P7_VPLUS_Pos 7UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P7_VPLUS_Msk 0x80UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P0_VMINUS_Pos 8UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P0_VMINUS_Msk 0x100UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P1_VMINUS_Pos 9UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P1_VMINUS_Msk 0x200UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P2_VMINUS_Pos 10UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P2_VMINUS_Msk 0x400UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P3_VMINUS_Pos 11UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P3_VMINUS_Msk 0x800UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P4_VMINUS_Pos 12UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P4_VMINUS_Msk 0x1000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P5_VMINUS_Pos 13UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P5_VMINUS_Msk 0x2000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P6_VMINUS_Pos 14UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P6_VMINUS_Msk 0x4000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P7_VMINUS_Pos 15UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_P7_VMINUS_Msk 0x8000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_VSSA_VMINUS_Pos 16UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_VSSA_VMINUS_Msk 0x10000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_TEMP_VPLUS_Pos 17UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_TEMP_VPLUS_Msk 0x20000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSA_VPLUS_Pos 18UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSA_VPLUS_Msk 0x40000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSB_VPLUS_Pos 19UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSB_VPLUS_Msk 0x80000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSA_VMINUS_Pos 20UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSA_VMINUS_Msk 0x100000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSB_VMINUS_Pos 21UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_AMUXBUSB_VMINUS_Msk 0x200000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS0_VPLUS_Pos 22UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS0_VPLUS_Msk 0x400000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS1_VPLUS_Pos 23UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS1_VPLUS_Msk 0x800000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS0_VMINUS_Pos 24UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS0_VMINUS_Msk 0x1000000UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS1_VMINUS_Pos 25UL +#define SAR_MUX_SWITCH_STATUS_MUX_FW_SARBUS1_VMINUS_Msk 0x2000000UL +/* SAR.ANA_TRIM0 */ +#define SAR_ANA_TRIM0_CAP_TRIM_Pos 0UL +#define SAR_ANA_TRIM0_CAP_TRIM_Msk 0x1FUL +#define SAR_ANA_TRIM0_TRIMUNIT_Pos 5UL +#define SAR_ANA_TRIM0_TRIMUNIT_Msk 0x20UL +/* SAR.ANA_TRIM1 */ +#define SAR_ANA_TRIM1_SAR_REF_BUF_TRIM_Pos 0UL +#define SAR_ANA_TRIM1_SAR_REF_BUF_TRIM_Msk 0x3FUL + + +#endif /* _CYIP_SAR_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_scb.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_scb.h new file mode 100644 index 00000000000..cf796869d0b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_scb.h @@ -0,0 +1,766 @@ +/***************************************************************************//** +* \file cyip_scb.h +* +* \brief +* SCB IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SCB_H_ +#define _CYIP_SCB_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB_SECTION_SIZE 0x00010000UL + +/** + * \brief Serial Communications Block (SPI/UART/I2C) (CySCB) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 Generic control */ + __IM uint32_t STATUS; /*!< 0x00000004 Generic status */ + __IOM uint32_t CMD_RESP_CTRL; /*!< 0x00000008 Command/response control */ + __IM uint32_t CMD_RESP_STATUS; /*!< 0x0000000C Command/response status */ + __IM uint32_t RESERVED[4]; + __IOM uint32_t SPI_CTRL; /*!< 0x00000020 SPI control */ + __IM uint32_t SPI_STATUS; /*!< 0x00000024 SPI status */ + __IM uint32_t RESERVED1[6]; + __IOM uint32_t UART_CTRL; /*!< 0x00000040 UART control */ + __IOM uint32_t UART_TX_CTRL; /*!< 0x00000044 UART transmitter control */ + __IOM uint32_t UART_RX_CTRL; /*!< 0x00000048 UART receiver control */ + __IM uint32_t UART_RX_STATUS; /*!< 0x0000004C UART receiver status */ + __IOM uint32_t UART_FLOW_CTRL; /*!< 0x00000050 UART flow control */ + __IM uint32_t RESERVED2[3]; + __IOM uint32_t I2C_CTRL; /*!< 0x00000060 I2C control */ + __IM uint32_t I2C_STATUS; /*!< 0x00000064 I2C status */ + __IOM uint32_t I2C_M_CMD; /*!< 0x00000068 I2C master command */ + __IOM uint32_t I2C_S_CMD; /*!< 0x0000006C I2C slave command */ + __IOM uint32_t I2C_CFG; /*!< 0x00000070 I2C configuration */ + __IM uint32_t RESERVED3[35]; + __IOM uint32_t DDFT_CTRL; /*!< 0x00000100 Digital DfT control */ + __IM uint32_t RESERVED4[63]; + __IOM uint32_t TX_CTRL; /*!< 0x00000200 Transmitter control */ + __IOM uint32_t TX_FIFO_CTRL; /*!< 0x00000204 Transmitter FIFO control */ + __IM uint32_t TX_FIFO_STATUS; /*!< 0x00000208 Transmitter FIFO status */ + __IM uint32_t RESERVED5[13]; + __OM uint32_t TX_FIFO_WR; /*!< 0x00000240 Transmitter FIFO write */ + __IM uint32_t RESERVED6[47]; + __IOM uint32_t RX_CTRL; /*!< 0x00000300 Receiver control */ + __IOM uint32_t RX_FIFO_CTRL; /*!< 0x00000304 Receiver FIFO control */ + __IM uint32_t RX_FIFO_STATUS; /*!< 0x00000308 Receiver FIFO status */ + __IM uint32_t RESERVED7; + __IOM uint32_t RX_MATCH; /*!< 0x00000310 Slave address and mask */ + __IM uint32_t RESERVED8[11]; + __IM uint32_t RX_FIFO_RD; /*!< 0x00000340 Receiver FIFO read */ + __IM uint32_t RX_FIFO_RD_SILENT; /*!< 0x00000344 Receiver FIFO read silent */ + __IM uint32_t RESERVED9[46]; + __IOM uint32_t EZ_DATA[512]; /*!< 0x00000400 Memory buffer */ + __IM uint32_t RESERVED10[128]; + __IM uint32_t INTR_CAUSE; /*!< 0x00000E00 Active clocked interrupt signal */ + __IM uint32_t RESERVED11[31]; + __IOM uint32_t INTR_I2C_EC; /*!< 0x00000E80 Externally clocked I2C interrupt request */ + __IM uint32_t RESERVED12; + __IOM uint32_t INTR_I2C_EC_MASK; /*!< 0x00000E88 Externally clocked I2C interrupt mask */ + __IM uint32_t INTR_I2C_EC_MASKED; /*!< 0x00000E8C Externally clocked I2C interrupt masked */ + __IM uint32_t RESERVED13[12]; + __IOM uint32_t INTR_SPI_EC; /*!< 0x00000EC0 Externally clocked SPI interrupt request */ + __IM uint32_t RESERVED14; + __IOM uint32_t INTR_SPI_EC_MASK; /*!< 0x00000EC8 Externally clocked SPI interrupt mask */ + __IM uint32_t INTR_SPI_EC_MASKED; /*!< 0x00000ECC Externally clocked SPI interrupt masked */ + __IM uint32_t RESERVED15[12]; + __IOM uint32_t INTR_M; /*!< 0x00000F00 Master interrupt request */ + __IOM uint32_t INTR_M_SET; /*!< 0x00000F04 Master interrupt set request */ + __IOM uint32_t INTR_M_MASK; /*!< 0x00000F08 Master interrupt mask */ + __IM uint32_t INTR_M_MASKED; /*!< 0x00000F0C Master interrupt masked request */ + __IM uint32_t RESERVED16[12]; + __IOM uint32_t INTR_S; /*!< 0x00000F40 Slave interrupt request */ + __IOM uint32_t INTR_S_SET; /*!< 0x00000F44 Slave interrupt set request */ + __IOM uint32_t INTR_S_MASK; /*!< 0x00000F48 Slave interrupt mask */ + __IM uint32_t INTR_S_MASKED; /*!< 0x00000F4C Slave interrupt masked request */ + __IM uint32_t RESERVED17[12]; + __IOM uint32_t INTR_TX; /*!< 0x00000F80 Transmitter interrupt request */ + __IOM uint32_t INTR_TX_SET; /*!< 0x00000F84 Transmitter interrupt set request */ + __IOM uint32_t INTR_TX_MASK; /*!< 0x00000F88 Transmitter interrupt mask */ + __IM uint32_t INTR_TX_MASKED; /*!< 0x00000F8C Transmitter interrupt masked request */ + __IM uint32_t RESERVED18[12]; + __IOM uint32_t INTR_RX; /*!< 0x00000FC0 Receiver interrupt request */ + __IOM uint32_t INTR_RX_SET; /*!< 0x00000FC4 Receiver interrupt set request */ + __IOM uint32_t INTR_RX_MASK; /*!< 0x00000FC8 Receiver interrupt mask */ + __IM uint32_t INTR_RX_MASKED; /*!< 0x00000FCC Receiver interrupt masked request */ +} CySCB_V1_Type; /*!< Size = 4048 (0xFD0) */ + + +/* SCB.CTRL */ +#define SCB_CTRL_OVS_Pos 0UL +#define SCB_CTRL_OVS_Msk 0xFUL +#define SCB_CTRL_EC_AM_MODE_Pos 8UL +#define SCB_CTRL_EC_AM_MODE_Msk 0x100UL +#define SCB_CTRL_EC_OP_MODE_Pos 9UL +#define SCB_CTRL_EC_OP_MODE_Msk 0x200UL +#define SCB_CTRL_EZ_MODE_Pos 10UL +#define SCB_CTRL_EZ_MODE_Msk 0x400UL +#define SCB_CTRL_BYTE_MODE_Pos 11UL +#define SCB_CTRL_BYTE_MODE_Msk 0x800UL +#define SCB_CTRL_CMD_RESP_MODE_Pos 12UL +#define SCB_CTRL_CMD_RESP_MODE_Msk 0x1000UL +#define SCB_CTRL_ADDR_ACCEPT_Pos 16UL +#define SCB_CTRL_ADDR_ACCEPT_Msk 0x10000UL +#define SCB_CTRL_BLOCK_Pos 17UL +#define SCB_CTRL_BLOCK_Msk 0x20000UL +#define SCB_CTRL_MODE_Pos 24UL +#define SCB_CTRL_MODE_Msk 0x3000000UL +#define SCB_CTRL_ENABLED_Pos 31UL +#define SCB_CTRL_ENABLED_Msk 0x80000000UL +/* SCB.STATUS */ +#define SCB_STATUS_EC_BUSY_Pos 0UL +#define SCB_STATUS_EC_BUSY_Msk 0x1UL +/* SCB.CMD_RESP_CTRL */ +#define SCB_CMD_RESP_CTRL_BASE_RD_ADDR_Pos 0UL +#define SCB_CMD_RESP_CTRL_BASE_RD_ADDR_Msk 0x1FFUL +#define SCB_CMD_RESP_CTRL_BASE_WR_ADDR_Pos 16UL +#define SCB_CMD_RESP_CTRL_BASE_WR_ADDR_Msk 0x1FF0000UL +/* SCB.CMD_RESP_STATUS */ +#define SCB_CMD_RESP_STATUS_CURR_RD_ADDR_Pos 0UL +#define SCB_CMD_RESP_STATUS_CURR_RD_ADDR_Msk 0x1FFUL +#define SCB_CMD_RESP_STATUS_CURR_WR_ADDR_Pos 16UL +#define SCB_CMD_RESP_STATUS_CURR_WR_ADDR_Msk 0x1FF0000UL +#define SCB_CMD_RESP_STATUS_CMD_RESP_EC_BUS_BUSY_Pos 30UL +#define SCB_CMD_RESP_STATUS_CMD_RESP_EC_BUS_BUSY_Msk 0x40000000UL +#define SCB_CMD_RESP_STATUS_CMD_RESP_EC_BUSY_Pos 31UL +#define SCB_CMD_RESP_STATUS_CMD_RESP_EC_BUSY_Msk 0x80000000UL +/* SCB.SPI_CTRL */ +#define SCB_SPI_CTRL_SSEL_CONTINUOUS_Pos 0UL +#define SCB_SPI_CTRL_SSEL_CONTINUOUS_Msk 0x1UL +#define SCB_SPI_CTRL_SELECT_PRECEDE_Pos 1UL +#define SCB_SPI_CTRL_SELECT_PRECEDE_Msk 0x2UL +#define SCB_SPI_CTRL_CPHA_Pos 2UL +#define SCB_SPI_CTRL_CPHA_Msk 0x4UL +#define SCB_SPI_CTRL_CPOL_Pos 3UL +#define SCB_SPI_CTRL_CPOL_Msk 0x8UL +#define SCB_SPI_CTRL_LATE_MISO_SAMPLE_Pos 4UL +#define SCB_SPI_CTRL_LATE_MISO_SAMPLE_Msk 0x10UL +#define SCB_SPI_CTRL_SCLK_CONTINUOUS_Pos 5UL +#define SCB_SPI_CTRL_SCLK_CONTINUOUS_Msk 0x20UL +#define SCB_SPI_CTRL_SSEL_POLARITY0_Pos 8UL +#define SCB_SPI_CTRL_SSEL_POLARITY0_Msk 0x100UL +#define SCB_SPI_CTRL_SSEL_POLARITY1_Pos 9UL +#define SCB_SPI_CTRL_SSEL_POLARITY1_Msk 0x200UL +#define SCB_SPI_CTRL_SSEL_POLARITY2_Pos 10UL +#define SCB_SPI_CTRL_SSEL_POLARITY2_Msk 0x400UL +#define SCB_SPI_CTRL_SSEL_POLARITY3_Pos 11UL +#define SCB_SPI_CTRL_SSEL_POLARITY3_Msk 0x800UL +#define SCB_SPI_CTRL_LOOPBACK_Pos 16UL +#define SCB_SPI_CTRL_LOOPBACK_Msk 0x10000UL +#define SCB_SPI_CTRL_MODE_Pos 24UL +#define SCB_SPI_CTRL_MODE_Msk 0x3000000UL +#define SCB_SPI_CTRL_SSEL_Pos 26UL +#define SCB_SPI_CTRL_SSEL_Msk 0xC000000UL +#define SCB_SPI_CTRL_MASTER_MODE_Pos 31UL +#define SCB_SPI_CTRL_MASTER_MODE_Msk 0x80000000UL +/* SCB.SPI_STATUS */ +#define SCB_SPI_STATUS_BUS_BUSY_Pos 0UL +#define SCB_SPI_STATUS_BUS_BUSY_Msk 0x1UL +#define SCB_SPI_STATUS_SPI_EC_BUSY_Pos 1UL +#define SCB_SPI_STATUS_SPI_EC_BUSY_Msk 0x2UL +#define SCB_SPI_STATUS_CURR_EZ_ADDR_Pos 8UL +#define SCB_SPI_STATUS_CURR_EZ_ADDR_Msk 0xFF00UL +#define SCB_SPI_STATUS_BASE_EZ_ADDR_Pos 16UL +#define SCB_SPI_STATUS_BASE_EZ_ADDR_Msk 0xFF0000UL +/* SCB.UART_CTRL */ +#define SCB_UART_CTRL_LOOPBACK_Pos 16UL +#define SCB_UART_CTRL_LOOPBACK_Msk 0x10000UL +#define SCB_UART_CTRL_MODE_Pos 24UL +#define SCB_UART_CTRL_MODE_Msk 0x3000000UL +/* SCB.UART_TX_CTRL */ +#define SCB_UART_TX_CTRL_STOP_BITS_Pos 0UL +#define SCB_UART_TX_CTRL_STOP_BITS_Msk 0x7UL +#define SCB_UART_TX_CTRL_PARITY_Pos 4UL +#define SCB_UART_TX_CTRL_PARITY_Msk 0x10UL +#define SCB_UART_TX_CTRL_PARITY_ENABLED_Pos 5UL +#define SCB_UART_TX_CTRL_PARITY_ENABLED_Msk 0x20UL +#define SCB_UART_TX_CTRL_RETRY_ON_NACK_Pos 8UL +#define SCB_UART_TX_CTRL_RETRY_ON_NACK_Msk 0x100UL +/* SCB.UART_RX_CTRL */ +#define SCB_UART_RX_CTRL_STOP_BITS_Pos 0UL +#define SCB_UART_RX_CTRL_STOP_BITS_Msk 0x7UL +#define SCB_UART_RX_CTRL_PARITY_Pos 4UL +#define SCB_UART_RX_CTRL_PARITY_Msk 0x10UL +#define SCB_UART_RX_CTRL_PARITY_ENABLED_Pos 5UL +#define SCB_UART_RX_CTRL_PARITY_ENABLED_Msk 0x20UL +#define SCB_UART_RX_CTRL_POLARITY_Pos 6UL +#define SCB_UART_RX_CTRL_POLARITY_Msk 0x40UL +#define SCB_UART_RX_CTRL_DROP_ON_PARITY_ERROR_Pos 8UL +#define SCB_UART_RX_CTRL_DROP_ON_PARITY_ERROR_Msk 0x100UL +#define SCB_UART_RX_CTRL_DROP_ON_FRAME_ERROR_Pos 9UL +#define SCB_UART_RX_CTRL_DROP_ON_FRAME_ERROR_Msk 0x200UL +#define SCB_UART_RX_CTRL_MP_MODE_Pos 10UL +#define SCB_UART_RX_CTRL_MP_MODE_Msk 0x400UL +#define SCB_UART_RX_CTRL_LIN_MODE_Pos 12UL +#define SCB_UART_RX_CTRL_LIN_MODE_Msk 0x1000UL +#define SCB_UART_RX_CTRL_SKIP_START_Pos 13UL +#define SCB_UART_RX_CTRL_SKIP_START_Msk 0x2000UL +#define SCB_UART_RX_CTRL_BREAK_WIDTH_Pos 16UL +#define SCB_UART_RX_CTRL_BREAK_WIDTH_Msk 0xF0000UL +/* SCB.UART_RX_STATUS */ +#define SCB_UART_RX_STATUS_BR_COUNTER_Pos 0UL +#define SCB_UART_RX_STATUS_BR_COUNTER_Msk 0xFFFUL +/* SCB.UART_FLOW_CTRL */ +#define SCB_UART_FLOW_CTRL_TRIGGER_LEVEL_Pos 0UL +#define SCB_UART_FLOW_CTRL_TRIGGER_LEVEL_Msk 0xFFUL +#define SCB_UART_FLOW_CTRL_RTS_POLARITY_Pos 16UL +#define SCB_UART_FLOW_CTRL_RTS_POLARITY_Msk 0x10000UL +#define SCB_UART_FLOW_CTRL_CTS_POLARITY_Pos 24UL +#define SCB_UART_FLOW_CTRL_CTS_POLARITY_Msk 0x1000000UL +#define SCB_UART_FLOW_CTRL_CTS_ENABLED_Pos 25UL +#define SCB_UART_FLOW_CTRL_CTS_ENABLED_Msk 0x2000000UL +/* SCB.I2C_CTRL */ +#define SCB_I2C_CTRL_HIGH_PHASE_OVS_Pos 0UL +#define SCB_I2C_CTRL_HIGH_PHASE_OVS_Msk 0xFUL +#define SCB_I2C_CTRL_LOW_PHASE_OVS_Pos 4UL +#define SCB_I2C_CTRL_LOW_PHASE_OVS_Msk 0xF0UL +#define SCB_I2C_CTRL_M_READY_DATA_ACK_Pos 8UL +#define SCB_I2C_CTRL_M_READY_DATA_ACK_Msk 0x100UL +#define SCB_I2C_CTRL_M_NOT_READY_DATA_NACK_Pos 9UL +#define SCB_I2C_CTRL_M_NOT_READY_DATA_NACK_Msk 0x200UL +#define SCB_I2C_CTRL_S_GENERAL_IGNORE_Pos 11UL +#define SCB_I2C_CTRL_S_GENERAL_IGNORE_Msk 0x800UL +#define SCB_I2C_CTRL_S_READY_ADDR_ACK_Pos 12UL +#define SCB_I2C_CTRL_S_READY_ADDR_ACK_Msk 0x1000UL +#define SCB_I2C_CTRL_S_READY_DATA_ACK_Pos 13UL +#define SCB_I2C_CTRL_S_READY_DATA_ACK_Msk 0x2000UL +#define SCB_I2C_CTRL_S_NOT_READY_ADDR_NACK_Pos 14UL +#define SCB_I2C_CTRL_S_NOT_READY_ADDR_NACK_Msk 0x4000UL +#define SCB_I2C_CTRL_S_NOT_READY_DATA_NACK_Pos 15UL +#define SCB_I2C_CTRL_S_NOT_READY_DATA_NACK_Msk 0x8000UL +#define SCB_I2C_CTRL_LOOPBACK_Pos 16UL +#define SCB_I2C_CTRL_LOOPBACK_Msk 0x10000UL +#define SCB_I2C_CTRL_SLAVE_MODE_Pos 30UL +#define SCB_I2C_CTRL_SLAVE_MODE_Msk 0x40000000UL +#define SCB_I2C_CTRL_MASTER_MODE_Pos 31UL +#define SCB_I2C_CTRL_MASTER_MODE_Msk 0x80000000UL +/* SCB.I2C_STATUS */ +#define SCB_I2C_STATUS_BUS_BUSY_Pos 0UL +#define SCB_I2C_STATUS_BUS_BUSY_Msk 0x1UL +#define SCB_I2C_STATUS_I2C_EC_BUSY_Pos 1UL +#define SCB_I2C_STATUS_I2C_EC_BUSY_Msk 0x2UL +#define SCB_I2C_STATUS_S_READ_Pos 4UL +#define SCB_I2C_STATUS_S_READ_Msk 0x10UL +#define SCB_I2C_STATUS_M_READ_Pos 5UL +#define SCB_I2C_STATUS_M_READ_Msk 0x20UL +#define SCB_I2C_STATUS_CURR_EZ_ADDR_Pos 8UL +#define SCB_I2C_STATUS_CURR_EZ_ADDR_Msk 0xFF00UL +#define SCB_I2C_STATUS_BASE_EZ_ADDR_Pos 16UL +#define SCB_I2C_STATUS_BASE_EZ_ADDR_Msk 0xFF0000UL +/* SCB.I2C_M_CMD */ +#define SCB_I2C_M_CMD_M_START_Pos 0UL +#define SCB_I2C_M_CMD_M_START_Msk 0x1UL +#define SCB_I2C_M_CMD_M_START_ON_IDLE_Pos 1UL +#define SCB_I2C_M_CMD_M_START_ON_IDLE_Msk 0x2UL +#define SCB_I2C_M_CMD_M_ACK_Pos 2UL +#define SCB_I2C_M_CMD_M_ACK_Msk 0x4UL +#define SCB_I2C_M_CMD_M_NACK_Pos 3UL +#define SCB_I2C_M_CMD_M_NACK_Msk 0x8UL +#define SCB_I2C_M_CMD_M_STOP_Pos 4UL +#define SCB_I2C_M_CMD_M_STOP_Msk 0x10UL +/* SCB.I2C_S_CMD */ +#define SCB_I2C_S_CMD_S_ACK_Pos 0UL +#define SCB_I2C_S_CMD_S_ACK_Msk 0x1UL +#define SCB_I2C_S_CMD_S_NACK_Pos 1UL +#define SCB_I2C_S_CMD_S_NACK_Msk 0x2UL +/* SCB.I2C_CFG */ +#define SCB_I2C_CFG_SDA_IN_FILT_TRIM_Pos 0UL +#define SCB_I2C_CFG_SDA_IN_FILT_TRIM_Msk 0x3UL +#define SCB_I2C_CFG_SDA_IN_FILT_SEL_Pos 4UL +#define SCB_I2C_CFG_SDA_IN_FILT_SEL_Msk 0x10UL +#define SCB_I2C_CFG_SCL_IN_FILT_TRIM_Pos 8UL +#define SCB_I2C_CFG_SCL_IN_FILT_TRIM_Msk 0x300UL +#define SCB_I2C_CFG_SCL_IN_FILT_SEL_Pos 12UL +#define SCB_I2C_CFG_SCL_IN_FILT_SEL_Msk 0x1000UL +#define SCB_I2C_CFG_SDA_OUT_FILT0_TRIM_Pos 16UL +#define SCB_I2C_CFG_SDA_OUT_FILT0_TRIM_Msk 0x30000UL +#define SCB_I2C_CFG_SDA_OUT_FILT1_TRIM_Pos 18UL +#define SCB_I2C_CFG_SDA_OUT_FILT1_TRIM_Msk 0xC0000UL +#define SCB_I2C_CFG_SDA_OUT_FILT2_TRIM_Pos 20UL +#define SCB_I2C_CFG_SDA_OUT_FILT2_TRIM_Msk 0x300000UL +#define SCB_I2C_CFG_SDA_OUT_FILT_SEL_Pos 28UL +#define SCB_I2C_CFG_SDA_OUT_FILT_SEL_Msk 0x30000000UL +/* SCB.DDFT_CTRL */ +#define SCB_DDFT_CTRL_DDFT_IN0_SEL_Pos 0UL +#define SCB_DDFT_CTRL_DDFT_IN0_SEL_Msk 0x1UL +#define SCB_DDFT_CTRL_DDFT_IN1_SEL_Pos 4UL +#define SCB_DDFT_CTRL_DDFT_IN1_SEL_Msk 0x10UL +#define SCB_DDFT_CTRL_DDFT_OUT0_SEL_Pos 16UL +#define SCB_DDFT_CTRL_DDFT_OUT0_SEL_Msk 0x70000UL +#define SCB_DDFT_CTRL_DDFT_OUT1_SEL_Pos 20UL +#define SCB_DDFT_CTRL_DDFT_OUT1_SEL_Msk 0x700000UL +/* SCB.TX_CTRL */ +#define SCB_TX_CTRL_DATA_WIDTH_Pos 0UL +#define SCB_TX_CTRL_DATA_WIDTH_Msk 0xFUL +#define SCB_TX_CTRL_MSB_FIRST_Pos 8UL +#define SCB_TX_CTRL_MSB_FIRST_Msk 0x100UL +#define SCB_TX_CTRL_OPEN_DRAIN_Pos 16UL +#define SCB_TX_CTRL_OPEN_DRAIN_Msk 0x10000UL +/* SCB.TX_FIFO_CTRL */ +#define SCB_TX_FIFO_CTRL_TRIGGER_LEVEL_Pos 0UL +#define SCB_TX_FIFO_CTRL_TRIGGER_LEVEL_Msk 0xFFUL +#define SCB_TX_FIFO_CTRL_CLEAR_Pos 16UL +#define SCB_TX_FIFO_CTRL_CLEAR_Msk 0x10000UL +#define SCB_TX_FIFO_CTRL_FREEZE_Pos 17UL +#define SCB_TX_FIFO_CTRL_FREEZE_Msk 0x20000UL +/* SCB.TX_FIFO_STATUS */ +#define SCB_TX_FIFO_STATUS_USED_Pos 0UL +#define SCB_TX_FIFO_STATUS_USED_Msk 0x1FFUL +#define SCB_TX_FIFO_STATUS_SR_VALID_Pos 15UL +#define SCB_TX_FIFO_STATUS_SR_VALID_Msk 0x8000UL +#define SCB_TX_FIFO_STATUS_RD_PTR_Pos 16UL +#define SCB_TX_FIFO_STATUS_RD_PTR_Msk 0xFF0000UL +#define SCB_TX_FIFO_STATUS_WR_PTR_Pos 24UL +#define SCB_TX_FIFO_STATUS_WR_PTR_Msk 0xFF000000UL +/* SCB.TX_FIFO_WR */ +#define SCB_TX_FIFO_WR_DATA_Pos 0UL +#define SCB_TX_FIFO_WR_DATA_Msk 0xFFFFUL +/* SCB.RX_CTRL */ +#define SCB_RX_CTRL_DATA_WIDTH_Pos 0UL +#define SCB_RX_CTRL_DATA_WIDTH_Msk 0xFUL +#define SCB_RX_CTRL_MSB_FIRST_Pos 8UL +#define SCB_RX_CTRL_MSB_FIRST_Msk 0x100UL +#define SCB_RX_CTRL_MEDIAN_Pos 9UL +#define SCB_RX_CTRL_MEDIAN_Msk 0x200UL +/* SCB.RX_FIFO_CTRL */ +#define SCB_RX_FIFO_CTRL_TRIGGER_LEVEL_Pos 0UL +#define SCB_RX_FIFO_CTRL_TRIGGER_LEVEL_Msk 0xFFUL +#define SCB_RX_FIFO_CTRL_CLEAR_Pos 16UL +#define SCB_RX_FIFO_CTRL_CLEAR_Msk 0x10000UL +#define SCB_RX_FIFO_CTRL_FREEZE_Pos 17UL +#define SCB_RX_FIFO_CTRL_FREEZE_Msk 0x20000UL +/* SCB.RX_FIFO_STATUS */ +#define SCB_RX_FIFO_STATUS_USED_Pos 0UL +#define SCB_RX_FIFO_STATUS_USED_Msk 0x1FFUL +#define SCB_RX_FIFO_STATUS_SR_VALID_Pos 15UL +#define SCB_RX_FIFO_STATUS_SR_VALID_Msk 0x8000UL +#define SCB_RX_FIFO_STATUS_RD_PTR_Pos 16UL +#define SCB_RX_FIFO_STATUS_RD_PTR_Msk 0xFF0000UL +#define SCB_RX_FIFO_STATUS_WR_PTR_Pos 24UL +#define SCB_RX_FIFO_STATUS_WR_PTR_Msk 0xFF000000UL +/* SCB.RX_MATCH */ +#define SCB_RX_MATCH_ADDR_Pos 0UL +#define SCB_RX_MATCH_ADDR_Msk 0xFFUL +#define SCB_RX_MATCH_MASK_Pos 16UL +#define SCB_RX_MATCH_MASK_Msk 0xFF0000UL +/* SCB.RX_FIFO_RD */ +#define SCB_RX_FIFO_RD_DATA_Pos 0UL +#define SCB_RX_FIFO_RD_DATA_Msk 0xFFFFUL +/* SCB.RX_FIFO_RD_SILENT */ +#define SCB_RX_FIFO_RD_SILENT_DATA_Pos 0UL +#define SCB_RX_FIFO_RD_SILENT_DATA_Msk 0xFFFFUL +/* SCB.EZ_DATA */ +#define SCB_EZ_DATA_EZ_DATA_Pos 0UL +#define SCB_EZ_DATA_EZ_DATA_Msk 0xFFUL +/* SCB.INTR_CAUSE */ +#define SCB_INTR_CAUSE_M_Pos 0UL +#define SCB_INTR_CAUSE_M_Msk 0x1UL +#define SCB_INTR_CAUSE_S_Pos 1UL +#define SCB_INTR_CAUSE_S_Msk 0x2UL +#define SCB_INTR_CAUSE_TX_Pos 2UL +#define SCB_INTR_CAUSE_TX_Msk 0x4UL +#define SCB_INTR_CAUSE_RX_Pos 3UL +#define SCB_INTR_CAUSE_RX_Msk 0x8UL +#define SCB_INTR_CAUSE_I2C_EC_Pos 4UL +#define SCB_INTR_CAUSE_I2C_EC_Msk 0x10UL +#define SCB_INTR_CAUSE_SPI_EC_Pos 5UL +#define SCB_INTR_CAUSE_SPI_EC_Msk 0x20UL +/* SCB.INTR_I2C_EC */ +#define SCB_INTR_I2C_EC_WAKE_UP_Pos 0UL +#define SCB_INTR_I2C_EC_WAKE_UP_Msk 0x1UL +#define SCB_INTR_I2C_EC_EZ_STOP_Pos 1UL +#define SCB_INTR_I2C_EC_EZ_STOP_Msk 0x2UL +#define SCB_INTR_I2C_EC_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_I2C_EC_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_I2C_EC_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_I2C_EC_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_I2C_EC_MASK */ +#define SCB_INTR_I2C_EC_MASK_WAKE_UP_Pos 0UL +#define SCB_INTR_I2C_EC_MASK_WAKE_UP_Msk 0x1UL +#define SCB_INTR_I2C_EC_MASK_EZ_STOP_Pos 1UL +#define SCB_INTR_I2C_EC_MASK_EZ_STOP_Msk 0x2UL +#define SCB_INTR_I2C_EC_MASK_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_I2C_EC_MASK_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_I2C_EC_MASK_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_I2C_EC_MASK_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_I2C_EC_MASKED */ +#define SCB_INTR_I2C_EC_MASKED_WAKE_UP_Pos 0UL +#define SCB_INTR_I2C_EC_MASKED_WAKE_UP_Msk 0x1UL +#define SCB_INTR_I2C_EC_MASKED_EZ_STOP_Pos 1UL +#define SCB_INTR_I2C_EC_MASKED_EZ_STOP_Msk 0x2UL +#define SCB_INTR_I2C_EC_MASKED_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_I2C_EC_MASKED_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_I2C_EC_MASKED_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_I2C_EC_MASKED_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_SPI_EC */ +#define SCB_INTR_SPI_EC_WAKE_UP_Pos 0UL +#define SCB_INTR_SPI_EC_WAKE_UP_Msk 0x1UL +#define SCB_INTR_SPI_EC_EZ_STOP_Pos 1UL +#define SCB_INTR_SPI_EC_EZ_STOP_Msk 0x2UL +#define SCB_INTR_SPI_EC_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_SPI_EC_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_SPI_EC_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_SPI_EC_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_SPI_EC_MASK */ +#define SCB_INTR_SPI_EC_MASK_WAKE_UP_Pos 0UL +#define SCB_INTR_SPI_EC_MASK_WAKE_UP_Msk 0x1UL +#define SCB_INTR_SPI_EC_MASK_EZ_STOP_Pos 1UL +#define SCB_INTR_SPI_EC_MASK_EZ_STOP_Msk 0x2UL +#define SCB_INTR_SPI_EC_MASK_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_SPI_EC_MASK_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_SPI_EC_MASK_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_SPI_EC_MASK_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_SPI_EC_MASKED */ +#define SCB_INTR_SPI_EC_MASKED_WAKE_UP_Pos 0UL +#define SCB_INTR_SPI_EC_MASKED_WAKE_UP_Msk 0x1UL +#define SCB_INTR_SPI_EC_MASKED_EZ_STOP_Pos 1UL +#define SCB_INTR_SPI_EC_MASKED_EZ_STOP_Msk 0x2UL +#define SCB_INTR_SPI_EC_MASKED_EZ_WRITE_STOP_Pos 2UL +#define SCB_INTR_SPI_EC_MASKED_EZ_WRITE_STOP_Msk 0x4UL +#define SCB_INTR_SPI_EC_MASKED_EZ_READ_STOP_Pos 3UL +#define SCB_INTR_SPI_EC_MASKED_EZ_READ_STOP_Msk 0x8UL +/* SCB.INTR_M */ +#define SCB_INTR_M_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_M_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_M_I2C_NACK_Pos 1UL +#define SCB_INTR_M_I2C_NACK_Msk 0x2UL +#define SCB_INTR_M_I2C_ACK_Pos 2UL +#define SCB_INTR_M_I2C_ACK_Msk 0x4UL +#define SCB_INTR_M_I2C_STOP_Pos 4UL +#define SCB_INTR_M_I2C_STOP_Msk 0x10UL +#define SCB_INTR_M_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_M_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_M_SPI_DONE_Pos 9UL +#define SCB_INTR_M_SPI_DONE_Msk 0x200UL +/* SCB.INTR_M_SET */ +#define SCB_INTR_M_SET_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_M_SET_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_M_SET_I2C_NACK_Pos 1UL +#define SCB_INTR_M_SET_I2C_NACK_Msk 0x2UL +#define SCB_INTR_M_SET_I2C_ACK_Pos 2UL +#define SCB_INTR_M_SET_I2C_ACK_Msk 0x4UL +#define SCB_INTR_M_SET_I2C_STOP_Pos 4UL +#define SCB_INTR_M_SET_I2C_STOP_Msk 0x10UL +#define SCB_INTR_M_SET_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_M_SET_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_M_SET_SPI_DONE_Pos 9UL +#define SCB_INTR_M_SET_SPI_DONE_Msk 0x200UL +/* SCB.INTR_M_MASK */ +#define SCB_INTR_M_MASK_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_M_MASK_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_M_MASK_I2C_NACK_Pos 1UL +#define SCB_INTR_M_MASK_I2C_NACK_Msk 0x2UL +#define SCB_INTR_M_MASK_I2C_ACK_Pos 2UL +#define SCB_INTR_M_MASK_I2C_ACK_Msk 0x4UL +#define SCB_INTR_M_MASK_I2C_STOP_Pos 4UL +#define SCB_INTR_M_MASK_I2C_STOP_Msk 0x10UL +#define SCB_INTR_M_MASK_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_M_MASK_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_M_MASK_SPI_DONE_Pos 9UL +#define SCB_INTR_M_MASK_SPI_DONE_Msk 0x200UL +/* SCB.INTR_M_MASKED */ +#define SCB_INTR_M_MASKED_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_M_MASKED_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_M_MASKED_I2C_NACK_Pos 1UL +#define SCB_INTR_M_MASKED_I2C_NACK_Msk 0x2UL +#define SCB_INTR_M_MASKED_I2C_ACK_Pos 2UL +#define SCB_INTR_M_MASKED_I2C_ACK_Msk 0x4UL +#define SCB_INTR_M_MASKED_I2C_STOP_Pos 4UL +#define SCB_INTR_M_MASKED_I2C_STOP_Msk 0x10UL +#define SCB_INTR_M_MASKED_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_M_MASKED_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_M_MASKED_SPI_DONE_Pos 9UL +#define SCB_INTR_M_MASKED_SPI_DONE_Msk 0x200UL +/* SCB.INTR_S */ +#define SCB_INTR_S_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_S_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_S_I2C_NACK_Pos 1UL +#define SCB_INTR_S_I2C_NACK_Msk 0x2UL +#define SCB_INTR_S_I2C_ACK_Pos 2UL +#define SCB_INTR_S_I2C_ACK_Msk 0x4UL +#define SCB_INTR_S_I2C_WRITE_STOP_Pos 3UL +#define SCB_INTR_S_I2C_WRITE_STOP_Msk 0x8UL +#define SCB_INTR_S_I2C_STOP_Pos 4UL +#define SCB_INTR_S_I2C_STOP_Msk 0x10UL +#define SCB_INTR_S_I2C_START_Pos 5UL +#define SCB_INTR_S_I2C_START_Msk 0x20UL +#define SCB_INTR_S_I2C_ADDR_MATCH_Pos 6UL +#define SCB_INTR_S_I2C_ADDR_MATCH_Msk 0x40UL +#define SCB_INTR_S_I2C_GENERAL_Pos 7UL +#define SCB_INTR_S_I2C_GENERAL_Msk 0x80UL +#define SCB_INTR_S_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_S_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_S_SPI_EZ_WRITE_STOP_Pos 9UL +#define SCB_INTR_S_SPI_EZ_WRITE_STOP_Msk 0x200UL +#define SCB_INTR_S_SPI_EZ_STOP_Pos 10UL +#define SCB_INTR_S_SPI_EZ_STOP_Msk 0x400UL +#define SCB_INTR_S_SPI_BUS_ERROR_Pos 11UL +#define SCB_INTR_S_SPI_BUS_ERROR_Msk 0x800UL +/* SCB.INTR_S_SET */ +#define SCB_INTR_S_SET_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_S_SET_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_S_SET_I2C_NACK_Pos 1UL +#define SCB_INTR_S_SET_I2C_NACK_Msk 0x2UL +#define SCB_INTR_S_SET_I2C_ACK_Pos 2UL +#define SCB_INTR_S_SET_I2C_ACK_Msk 0x4UL +#define SCB_INTR_S_SET_I2C_WRITE_STOP_Pos 3UL +#define SCB_INTR_S_SET_I2C_WRITE_STOP_Msk 0x8UL +#define SCB_INTR_S_SET_I2C_STOP_Pos 4UL +#define SCB_INTR_S_SET_I2C_STOP_Msk 0x10UL +#define SCB_INTR_S_SET_I2C_START_Pos 5UL +#define SCB_INTR_S_SET_I2C_START_Msk 0x20UL +#define SCB_INTR_S_SET_I2C_ADDR_MATCH_Pos 6UL +#define SCB_INTR_S_SET_I2C_ADDR_MATCH_Msk 0x40UL +#define SCB_INTR_S_SET_I2C_GENERAL_Pos 7UL +#define SCB_INTR_S_SET_I2C_GENERAL_Msk 0x80UL +#define SCB_INTR_S_SET_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_S_SET_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_S_SET_SPI_EZ_WRITE_STOP_Pos 9UL +#define SCB_INTR_S_SET_SPI_EZ_WRITE_STOP_Msk 0x200UL +#define SCB_INTR_S_SET_SPI_EZ_STOP_Pos 10UL +#define SCB_INTR_S_SET_SPI_EZ_STOP_Msk 0x400UL +#define SCB_INTR_S_SET_SPI_BUS_ERROR_Pos 11UL +#define SCB_INTR_S_SET_SPI_BUS_ERROR_Msk 0x800UL +/* SCB.INTR_S_MASK */ +#define SCB_INTR_S_MASK_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_S_MASK_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_S_MASK_I2C_NACK_Pos 1UL +#define SCB_INTR_S_MASK_I2C_NACK_Msk 0x2UL +#define SCB_INTR_S_MASK_I2C_ACK_Pos 2UL +#define SCB_INTR_S_MASK_I2C_ACK_Msk 0x4UL +#define SCB_INTR_S_MASK_I2C_WRITE_STOP_Pos 3UL +#define SCB_INTR_S_MASK_I2C_WRITE_STOP_Msk 0x8UL +#define SCB_INTR_S_MASK_I2C_STOP_Pos 4UL +#define SCB_INTR_S_MASK_I2C_STOP_Msk 0x10UL +#define SCB_INTR_S_MASK_I2C_START_Pos 5UL +#define SCB_INTR_S_MASK_I2C_START_Msk 0x20UL +#define SCB_INTR_S_MASK_I2C_ADDR_MATCH_Pos 6UL +#define SCB_INTR_S_MASK_I2C_ADDR_MATCH_Msk 0x40UL +#define SCB_INTR_S_MASK_I2C_GENERAL_Pos 7UL +#define SCB_INTR_S_MASK_I2C_GENERAL_Msk 0x80UL +#define SCB_INTR_S_MASK_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_S_MASK_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_S_MASK_SPI_EZ_WRITE_STOP_Pos 9UL +#define SCB_INTR_S_MASK_SPI_EZ_WRITE_STOP_Msk 0x200UL +#define SCB_INTR_S_MASK_SPI_EZ_STOP_Pos 10UL +#define SCB_INTR_S_MASK_SPI_EZ_STOP_Msk 0x400UL +#define SCB_INTR_S_MASK_SPI_BUS_ERROR_Pos 11UL +#define SCB_INTR_S_MASK_SPI_BUS_ERROR_Msk 0x800UL +/* SCB.INTR_S_MASKED */ +#define SCB_INTR_S_MASKED_I2C_ARB_LOST_Pos 0UL +#define SCB_INTR_S_MASKED_I2C_ARB_LOST_Msk 0x1UL +#define SCB_INTR_S_MASKED_I2C_NACK_Pos 1UL +#define SCB_INTR_S_MASKED_I2C_NACK_Msk 0x2UL +#define SCB_INTR_S_MASKED_I2C_ACK_Pos 2UL +#define SCB_INTR_S_MASKED_I2C_ACK_Msk 0x4UL +#define SCB_INTR_S_MASKED_I2C_WRITE_STOP_Pos 3UL +#define SCB_INTR_S_MASKED_I2C_WRITE_STOP_Msk 0x8UL +#define SCB_INTR_S_MASKED_I2C_STOP_Pos 4UL +#define SCB_INTR_S_MASKED_I2C_STOP_Msk 0x10UL +#define SCB_INTR_S_MASKED_I2C_START_Pos 5UL +#define SCB_INTR_S_MASKED_I2C_START_Msk 0x20UL +#define SCB_INTR_S_MASKED_I2C_ADDR_MATCH_Pos 6UL +#define SCB_INTR_S_MASKED_I2C_ADDR_MATCH_Msk 0x40UL +#define SCB_INTR_S_MASKED_I2C_GENERAL_Pos 7UL +#define SCB_INTR_S_MASKED_I2C_GENERAL_Msk 0x80UL +#define SCB_INTR_S_MASKED_I2C_BUS_ERROR_Pos 8UL +#define SCB_INTR_S_MASKED_I2C_BUS_ERROR_Msk 0x100UL +#define SCB_INTR_S_MASKED_SPI_EZ_WRITE_STOP_Pos 9UL +#define SCB_INTR_S_MASKED_SPI_EZ_WRITE_STOP_Msk 0x200UL +#define SCB_INTR_S_MASKED_SPI_EZ_STOP_Pos 10UL +#define SCB_INTR_S_MASKED_SPI_EZ_STOP_Msk 0x400UL +#define SCB_INTR_S_MASKED_SPI_BUS_ERROR_Pos 11UL +#define SCB_INTR_S_MASKED_SPI_BUS_ERROR_Msk 0x800UL +/* SCB.INTR_TX */ +#define SCB_INTR_TX_TRIGGER_Pos 0UL +#define SCB_INTR_TX_TRIGGER_Msk 0x1UL +#define SCB_INTR_TX_NOT_FULL_Pos 1UL +#define SCB_INTR_TX_NOT_FULL_Msk 0x2UL +#define SCB_INTR_TX_EMPTY_Pos 4UL +#define SCB_INTR_TX_EMPTY_Msk 0x10UL +#define SCB_INTR_TX_OVERFLOW_Pos 5UL +#define SCB_INTR_TX_OVERFLOW_Msk 0x20UL +#define SCB_INTR_TX_UNDERFLOW_Pos 6UL +#define SCB_INTR_TX_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_TX_BLOCKED_Pos 7UL +#define SCB_INTR_TX_BLOCKED_Msk 0x80UL +#define SCB_INTR_TX_UART_NACK_Pos 8UL +#define SCB_INTR_TX_UART_NACK_Msk 0x100UL +#define SCB_INTR_TX_UART_DONE_Pos 9UL +#define SCB_INTR_TX_UART_DONE_Msk 0x200UL +#define SCB_INTR_TX_UART_ARB_LOST_Pos 10UL +#define SCB_INTR_TX_UART_ARB_LOST_Msk 0x400UL +/* SCB.INTR_TX_SET */ +#define SCB_INTR_TX_SET_TRIGGER_Pos 0UL +#define SCB_INTR_TX_SET_TRIGGER_Msk 0x1UL +#define SCB_INTR_TX_SET_NOT_FULL_Pos 1UL +#define SCB_INTR_TX_SET_NOT_FULL_Msk 0x2UL +#define SCB_INTR_TX_SET_EMPTY_Pos 4UL +#define SCB_INTR_TX_SET_EMPTY_Msk 0x10UL +#define SCB_INTR_TX_SET_OVERFLOW_Pos 5UL +#define SCB_INTR_TX_SET_OVERFLOW_Msk 0x20UL +#define SCB_INTR_TX_SET_UNDERFLOW_Pos 6UL +#define SCB_INTR_TX_SET_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_TX_SET_BLOCKED_Pos 7UL +#define SCB_INTR_TX_SET_BLOCKED_Msk 0x80UL +#define SCB_INTR_TX_SET_UART_NACK_Pos 8UL +#define SCB_INTR_TX_SET_UART_NACK_Msk 0x100UL +#define SCB_INTR_TX_SET_UART_DONE_Pos 9UL +#define SCB_INTR_TX_SET_UART_DONE_Msk 0x200UL +#define SCB_INTR_TX_SET_UART_ARB_LOST_Pos 10UL +#define SCB_INTR_TX_SET_UART_ARB_LOST_Msk 0x400UL +/* SCB.INTR_TX_MASK */ +#define SCB_INTR_TX_MASK_TRIGGER_Pos 0UL +#define SCB_INTR_TX_MASK_TRIGGER_Msk 0x1UL +#define SCB_INTR_TX_MASK_NOT_FULL_Pos 1UL +#define SCB_INTR_TX_MASK_NOT_FULL_Msk 0x2UL +#define SCB_INTR_TX_MASK_EMPTY_Pos 4UL +#define SCB_INTR_TX_MASK_EMPTY_Msk 0x10UL +#define SCB_INTR_TX_MASK_OVERFLOW_Pos 5UL +#define SCB_INTR_TX_MASK_OVERFLOW_Msk 0x20UL +#define SCB_INTR_TX_MASK_UNDERFLOW_Pos 6UL +#define SCB_INTR_TX_MASK_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_TX_MASK_BLOCKED_Pos 7UL +#define SCB_INTR_TX_MASK_BLOCKED_Msk 0x80UL +#define SCB_INTR_TX_MASK_UART_NACK_Pos 8UL +#define SCB_INTR_TX_MASK_UART_NACK_Msk 0x100UL +#define SCB_INTR_TX_MASK_UART_DONE_Pos 9UL +#define SCB_INTR_TX_MASK_UART_DONE_Msk 0x200UL +#define SCB_INTR_TX_MASK_UART_ARB_LOST_Pos 10UL +#define SCB_INTR_TX_MASK_UART_ARB_LOST_Msk 0x400UL +/* SCB.INTR_TX_MASKED */ +#define SCB_INTR_TX_MASKED_TRIGGER_Pos 0UL +#define SCB_INTR_TX_MASKED_TRIGGER_Msk 0x1UL +#define SCB_INTR_TX_MASKED_NOT_FULL_Pos 1UL +#define SCB_INTR_TX_MASKED_NOT_FULL_Msk 0x2UL +#define SCB_INTR_TX_MASKED_EMPTY_Pos 4UL +#define SCB_INTR_TX_MASKED_EMPTY_Msk 0x10UL +#define SCB_INTR_TX_MASKED_OVERFLOW_Pos 5UL +#define SCB_INTR_TX_MASKED_OVERFLOW_Msk 0x20UL +#define SCB_INTR_TX_MASKED_UNDERFLOW_Pos 6UL +#define SCB_INTR_TX_MASKED_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_TX_MASKED_BLOCKED_Pos 7UL +#define SCB_INTR_TX_MASKED_BLOCKED_Msk 0x80UL +#define SCB_INTR_TX_MASKED_UART_NACK_Pos 8UL +#define SCB_INTR_TX_MASKED_UART_NACK_Msk 0x100UL +#define SCB_INTR_TX_MASKED_UART_DONE_Pos 9UL +#define SCB_INTR_TX_MASKED_UART_DONE_Msk 0x200UL +#define SCB_INTR_TX_MASKED_UART_ARB_LOST_Pos 10UL +#define SCB_INTR_TX_MASKED_UART_ARB_LOST_Msk 0x400UL +/* SCB.INTR_RX */ +#define SCB_INTR_RX_TRIGGER_Pos 0UL +#define SCB_INTR_RX_TRIGGER_Msk 0x1UL +#define SCB_INTR_RX_NOT_EMPTY_Pos 2UL +#define SCB_INTR_RX_NOT_EMPTY_Msk 0x4UL +#define SCB_INTR_RX_FULL_Pos 3UL +#define SCB_INTR_RX_FULL_Msk 0x8UL +#define SCB_INTR_RX_OVERFLOW_Pos 5UL +#define SCB_INTR_RX_OVERFLOW_Msk 0x20UL +#define SCB_INTR_RX_UNDERFLOW_Pos 6UL +#define SCB_INTR_RX_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_RX_BLOCKED_Pos 7UL +#define SCB_INTR_RX_BLOCKED_Msk 0x80UL +#define SCB_INTR_RX_FRAME_ERROR_Pos 8UL +#define SCB_INTR_RX_FRAME_ERROR_Msk 0x100UL +#define SCB_INTR_RX_PARITY_ERROR_Pos 9UL +#define SCB_INTR_RX_PARITY_ERROR_Msk 0x200UL +#define SCB_INTR_RX_BAUD_DETECT_Pos 10UL +#define SCB_INTR_RX_BAUD_DETECT_Msk 0x400UL +#define SCB_INTR_RX_BREAK_DETECT_Pos 11UL +#define SCB_INTR_RX_BREAK_DETECT_Msk 0x800UL +/* SCB.INTR_RX_SET */ +#define SCB_INTR_RX_SET_TRIGGER_Pos 0UL +#define SCB_INTR_RX_SET_TRIGGER_Msk 0x1UL +#define SCB_INTR_RX_SET_NOT_EMPTY_Pos 2UL +#define SCB_INTR_RX_SET_NOT_EMPTY_Msk 0x4UL +#define SCB_INTR_RX_SET_FULL_Pos 3UL +#define SCB_INTR_RX_SET_FULL_Msk 0x8UL +#define SCB_INTR_RX_SET_OVERFLOW_Pos 5UL +#define SCB_INTR_RX_SET_OVERFLOW_Msk 0x20UL +#define SCB_INTR_RX_SET_UNDERFLOW_Pos 6UL +#define SCB_INTR_RX_SET_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_RX_SET_BLOCKED_Pos 7UL +#define SCB_INTR_RX_SET_BLOCKED_Msk 0x80UL +#define SCB_INTR_RX_SET_FRAME_ERROR_Pos 8UL +#define SCB_INTR_RX_SET_FRAME_ERROR_Msk 0x100UL +#define SCB_INTR_RX_SET_PARITY_ERROR_Pos 9UL +#define SCB_INTR_RX_SET_PARITY_ERROR_Msk 0x200UL +#define SCB_INTR_RX_SET_BAUD_DETECT_Pos 10UL +#define SCB_INTR_RX_SET_BAUD_DETECT_Msk 0x400UL +#define SCB_INTR_RX_SET_BREAK_DETECT_Pos 11UL +#define SCB_INTR_RX_SET_BREAK_DETECT_Msk 0x800UL +/* SCB.INTR_RX_MASK */ +#define SCB_INTR_RX_MASK_TRIGGER_Pos 0UL +#define SCB_INTR_RX_MASK_TRIGGER_Msk 0x1UL +#define SCB_INTR_RX_MASK_NOT_EMPTY_Pos 2UL +#define SCB_INTR_RX_MASK_NOT_EMPTY_Msk 0x4UL +#define SCB_INTR_RX_MASK_FULL_Pos 3UL +#define SCB_INTR_RX_MASK_FULL_Msk 0x8UL +#define SCB_INTR_RX_MASK_OVERFLOW_Pos 5UL +#define SCB_INTR_RX_MASK_OVERFLOW_Msk 0x20UL +#define SCB_INTR_RX_MASK_UNDERFLOW_Pos 6UL +#define SCB_INTR_RX_MASK_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_RX_MASK_BLOCKED_Pos 7UL +#define SCB_INTR_RX_MASK_BLOCKED_Msk 0x80UL +#define SCB_INTR_RX_MASK_FRAME_ERROR_Pos 8UL +#define SCB_INTR_RX_MASK_FRAME_ERROR_Msk 0x100UL +#define SCB_INTR_RX_MASK_PARITY_ERROR_Pos 9UL +#define SCB_INTR_RX_MASK_PARITY_ERROR_Msk 0x200UL +#define SCB_INTR_RX_MASK_BAUD_DETECT_Pos 10UL +#define SCB_INTR_RX_MASK_BAUD_DETECT_Msk 0x400UL +#define SCB_INTR_RX_MASK_BREAK_DETECT_Pos 11UL +#define SCB_INTR_RX_MASK_BREAK_DETECT_Msk 0x800UL +/* SCB.INTR_RX_MASKED */ +#define SCB_INTR_RX_MASKED_TRIGGER_Pos 0UL +#define SCB_INTR_RX_MASKED_TRIGGER_Msk 0x1UL +#define SCB_INTR_RX_MASKED_NOT_EMPTY_Pos 2UL +#define SCB_INTR_RX_MASKED_NOT_EMPTY_Msk 0x4UL +#define SCB_INTR_RX_MASKED_FULL_Pos 3UL +#define SCB_INTR_RX_MASKED_FULL_Msk 0x8UL +#define SCB_INTR_RX_MASKED_OVERFLOW_Pos 5UL +#define SCB_INTR_RX_MASKED_OVERFLOW_Msk 0x20UL +#define SCB_INTR_RX_MASKED_UNDERFLOW_Pos 6UL +#define SCB_INTR_RX_MASKED_UNDERFLOW_Msk 0x40UL +#define SCB_INTR_RX_MASKED_BLOCKED_Pos 7UL +#define SCB_INTR_RX_MASKED_BLOCKED_Msk 0x80UL +#define SCB_INTR_RX_MASKED_FRAME_ERROR_Pos 8UL +#define SCB_INTR_RX_MASKED_FRAME_ERROR_Msk 0x100UL +#define SCB_INTR_RX_MASKED_PARITY_ERROR_Pos 9UL +#define SCB_INTR_RX_MASKED_PARITY_ERROR_Msk 0x200UL +#define SCB_INTR_RX_MASKED_BAUD_DETECT_Pos 10UL +#define SCB_INTR_RX_MASKED_BAUD_DETECT_Msk 0x400UL +#define SCB_INTR_RX_MASKED_BREAK_DETECT_Pos 11UL +#define SCB_INTR_RX_MASKED_BREAK_DETECT_Msk 0x800UL + + +#endif /* _CYIP_SCB_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sdhc.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sdhc.h new file mode 100644 index 00000000000..d16d4839c29 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sdhc.h @@ -0,0 +1,858 @@ +/***************************************************************************//** +* \file cyip_sdhc.h +* +* \brief +* SDHC IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SDHC_H_ +#define _CYIP_SDHC_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SDHC +*******************************************************************************/ + +#define SDHC_WRAP_SECTION_SIZE 0x00000020UL +#define SDHC_CORE_SECTION_SIZE 0x00001000UL +#define SDHC_SECTION_SIZE 0x00010000UL + +/** + * \brief MMIO at SDHC wrapper level (SDHC_WRAP) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Top level wrapper control */ + __IM uint32_t RESERVED[7]; +} SDHC_WRAP_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief MMIO for Synopsys Mobile Storage Host Controller IP (SDHC_CORE) + */ +typedef struct { + __IOM uint32_t SDMASA_R; /*!< 0x00000000 SDMA System Address register */ + __IOM uint16_t BLOCKSIZE_R; /*!< 0x00000004 Block Size register */ + __IOM uint16_t BLOCKCOUNT_R; /*!< 0x00000006 16-bit Block Count register */ + __IOM uint32_t ARGUMENT_R; /*!< 0x00000008 Argument register */ + __IOM uint16_t XFER_MODE_R; /*!< 0x0000000C Transfer Mode register */ + __IOM uint16_t CMD_R; /*!< 0x0000000E Command register */ + __IM uint32_t RESP01_R; /*!< 0x00000010 Response Register 0/1 */ + __IM uint32_t RESP23_R; /*!< 0x00000014 Response Register 2/3 */ + __IM uint32_t RESP45_R; /*!< 0x00000018 Response Register 4/5 */ + __IM uint32_t RESP67_R; /*!< 0x0000001C Response Register 6/7 */ + __IOM uint32_t BUF_DATA_R; /*!< 0x00000020 Buffer Data Port Register */ + __IM uint32_t PSTATE_REG; /*!< 0x00000024 Present State Register */ + __IOM uint8_t HOST_CTRL1_R; /*!< 0x00000028 Host Control 1 Register */ + __IOM uint8_t PWR_CTRL_R; /*!< 0x00000029 Power Control Register */ + __IOM uint8_t BGAP_CTRL_R; /*!< 0x0000002A Block Gap Control Register */ + __IOM uint8_t WUP_CTRL_R; /*!< 0x0000002B Wakeup Control Register */ + __IOM uint16_t CLK_CTRL_R; /*!< 0x0000002C Clock Control Register */ + __IOM uint8_t TOUT_CTRL_R; /*!< 0x0000002E Timeout Control Register */ + __IOM uint8_t SW_RST_R; /*!< 0x0000002F Software Reset Register */ + __IOM uint16_t NORMAL_INT_STAT_R; /*!< 0x00000030 Normal Interrupt Status Register */ + __IOM uint16_t ERROR_INT_STAT_R; /*!< 0x00000032 Error Interrupt Status Register */ + __IOM uint16_t NORMAL_INT_STAT_EN_R; /*!< 0x00000034 Normal Interrupt Status Enable Register */ + __IOM uint16_t ERROR_INT_STAT_EN_R; /*!< 0x00000036 Error Interrupt Status Enable Register */ + __IOM uint16_t NORMAL_INT_SIGNAL_EN_R; /*!< 0x00000038 Normal Interrupt Signal Enable Register */ + __IOM uint16_t ERROR_INT_SIGNAL_EN_R; /*!< 0x0000003A Error Interrupt Signal Enable Register */ + __IM uint16_t AUTO_CMD_STAT_R; /*!< 0x0000003C Auto CMD Status Register */ + __IOM uint16_t HOST_CTRL2_R; /*!< 0x0000003E Host Control 2 Register */ + __IM uint32_t CAPABILITIES1_R; /*!< 0x00000040 Capabilities 1 Register - 0 to 31 */ + __IM uint32_t CAPABILITIES2_R; /*!< 0x00000044 Capabilities Register - 32 to 63 */ + __IM uint32_t CURR_CAPABILITIES1_R; /*!< 0x00000048 Current Capabilities Register - 0 to 31 */ + __IM uint32_t CURR_CAPABILITIES2_R; /*!< 0x0000004C Maximum Current Capabilities Register - 32 to 63 */ + __OM uint16_t FORCE_AUTO_CMD_STAT_R; /*!< 0x00000050 Force Event Register for Auto CMD Error Status register */ + __IOM uint16_t FORCE_ERROR_INT_STAT_R; /*!< 0x00000052 Force Event Register for Error Interrupt Status */ + __IM uint8_t ADMA_ERR_STAT_R; /*!< 0x00000054 ADMA Error Status Register */ + __IM uint8_t RESERVED[3]; + __IOM uint32_t ADMA_SA_LOW_R; /*!< 0x00000058 ADMA System Address Register - Low */ + __IM uint32_t RESERVED1[7]; + __IOM uint32_t ADMA_ID_LOW_R; /*!< 0x00000078 ADMA3 Integrated Descriptor Address Register - Low */ + __IM uint16_t RESERVED2[65]; + __IM uint16_t HOST_CNTRL_VERS_R; /*!< 0x000000FE Host Controller Version */ + __IM uint32_t RESERVED3[32]; + __IM uint32_t CQVER; /*!< 0x00000180 Command Queuing Version register */ + __IM uint32_t CQCAP; /*!< 0x00000184 Command Queuing Capabilities register */ + __IOM uint32_t CQCFG; /*!< 0x00000188 Command Queuing Configuration register */ + __IOM uint32_t CQCTL; /*!< 0x0000018C Command Queuing Control register */ + __IOM uint32_t CQIS; /*!< 0x00000190 Command Queuing Interrupt Status register */ + __IOM uint32_t CQISE; /*!< 0x00000194 Command Queuing Interrupt Status Enable register */ + __IOM uint32_t CQISGE; /*!< 0x00000198 Command Queuing Interrupt signal enable register */ + __IOM uint32_t CQIC; /*!< 0x0000019C Command Queuing Interrupt Coalescing register */ + __IOM uint32_t CQTDLBA; /*!< 0x000001A0 Command Queuing Task Descriptor List Base Address register */ + __IM uint32_t RESERVED4; + __IOM uint32_t CQTDBR; /*!< 0x000001A8 Command Queuing DoorBell register */ + __IOM uint32_t CQTCN; /*!< 0x000001AC Command Queuing TaskClear Notification register */ + __IM uint32_t CQDQS; /*!< 0x000001B0 Device queue status register */ + __IM uint32_t CQDPT; /*!< 0x000001B4 Device pending tasks register */ + __IOM uint32_t CQTCLR; /*!< 0x000001B8 Command Queuing DoorBell register */ + __IM uint32_t RESERVED5; + __IOM uint32_t CQSSC1; /*!< 0x000001C0 CQ Send Status Configuration 1 register */ + __IOM uint32_t CQSSC2; /*!< 0x000001C4 CQ Send Status Configuration 2 register */ + __IM uint32_t CQCRDCT; /*!< 0x000001C8 Command response for direct command register */ + __IM uint32_t RESERVED6; + __IOM uint32_t CQRMEM; /*!< 0x000001D0 Command response mode error mask register */ + __IM uint32_t CQTERRI; /*!< 0x000001D4 CQ Task Error Information register */ + __IM uint32_t CQCRI; /*!< 0x000001D8 CQ Command response index */ + __IM uint32_t CQCRA; /*!< 0x000001DC CQ Command response argument register */ + __IM uint32_t RESERVED7[200]; + __IM uint32_t MSHC_VER_ID_R; /*!< 0x00000500 MSHC version */ + __IM uint32_t MSHC_VER_TYPE_R; /*!< 0x00000504 MSHC version type */ + __IOM uint8_t MSHC_CTRL_R; /*!< 0x00000508 MSHC Control register */ + __IM uint8_t RESERVED8[7]; + __IOM uint8_t MBIU_CTRL_R; /*!< 0x00000510 MBIU Control register */ + __IM uint8_t RESERVED9[27]; + __IOM uint16_t EMMC_CTRL_R; /*!< 0x0000052C eMMC Control register */ + __IOM uint16_t BOOT_CTRL_R; /*!< 0x0000052E eMMC Boot Control register */ + __IM uint32_t GP_IN_R; /*!< 0x00000530 General Purpose Input register */ + __IOM uint32_t GP_OUT_R; /*!< 0x00000534 General Purpose Output register */ + __IM uint32_t RESERVED10[690]; +} SDHC_CORE_V1_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief SD/eMMC Host Controller (SDHC) + */ +typedef struct { + SDHC_WRAP_V1_Type WRAP; /*!< 0x00000000 MMIO at SDHC wrapper level */ + __IM uint32_t RESERVED[1016]; + SDHC_CORE_V1_Type CORE; /*!< 0x00001000 MMIO for Synopsys Mobile Storage Host Controller IP */ +} SDHC_V1_Type; /*!< Size = 8192 (0x2000) */ + + +/* SDHC_WRAP.CTL */ +#define SDHC_WRAP_CTL_ENABLE_Pos 31UL +#define SDHC_WRAP_CTL_ENABLE_Msk 0x80000000UL + + +/* SDHC_CORE.SDMASA_R */ +#define SDHC_CORE_SDMASA_R_BLOCKCNT_SDMASA_Pos 0UL +#define SDHC_CORE_SDMASA_R_BLOCKCNT_SDMASA_Msk 0xFFFFFFFFUL +/* SDHC_CORE.BLOCKSIZE_R */ +#define SDHC_CORE_BLOCKSIZE_R_XFER_BLOCK_SIZE_Pos 0UL +#define SDHC_CORE_BLOCKSIZE_R_XFER_BLOCK_SIZE_Msk 0xFFFUL +#define SDHC_CORE_BLOCKSIZE_R_SDMA_BUF_BDARY_Pos 12UL +#define SDHC_CORE_BLOCKSIZE_R_SDMA_BUF_BDARY_Msk 0x7000UL +/* SDHC_CORE.BLOCKCOUNT_R */ +#define SDHC_CORE_BLOCKCOUNT_R_BLOCK_CNT_Pos 0UL +#define SDHC_CORE_BLOCKCOUNT_R_BLOCK_CNT_Msk 0xFFFFUL +/* SDHC_CORE.ARGUMENT_R */ +#define SDHC_CORE_ARGUMENT_R_ARGUMENT_Pos 0UL +#define SDHC_CORE_ARGUMENT_R_ARGUMENT_Msk 0xFFFFFFFFUL +/* SDHC_CORE.XFER_MODE_R */ +#define SDHC_CORE_XFER_MODE_R_DMA_ENABLE_Pos 0UL +#define SDHC_CORE_XFER_MODE_R_DMA_ENABLE_Msk 0x1UL +#define SDHC_CORE_XFER_MODE_R_BLOCK_COUNT_ENABLE_Pos 1UL +#define SDHC_CORE_XFER_MODE_R_BLOCK_COUNT_ENABLE_Msk 0x2UL +#define SDHC_CORE_XFER_MODE_R_AUTO_CMD_ENABLE_Pos 2UL +#define SDHC_CORE_XFER_MODE_R_AUTO_CMD_ENABLE_Msk 0xCUL +#define SDHC_CORE_XFER_MODE_R_DATA_XFER_DIR_Pos 4UL +#define SDHC_CORE_XFER_MODE_R_DATA_XFER_DIR_Msk 0x10UL +#define SDHC_CORE_XFER_MODE_R_MULTI_BLK_SEL_Pos 5UL +#define SDHC_CORE_XFER_MODE_R_MULTI_BLK_SEL_Msk 0x20UL +#define SDHC_CORE_XFER_MODE_R_RESP_TYPE_Pos 6UL +#define SDHC_CORE_XFER_MODE_R_RESP_TYPE_Msk 0x40UL +#define SDHC_CORE_XFER_MODE_R_RESP_ERR_CHK_ENABLE_Pos 7UL +#define SDHC_CORE_XFER_MODE_R_RESP_ERR_CHK_ENABLE_Msk 0x80UL +#define SDHC_CORE_XFER_MODE_R_RESP_INT_DISABLE_Pos 8UL +#define SDHC_CORE_XFER_MODE_R_RESP_INT_DISABLE_Msk 0x100UL +/* SDHC_CORE.CMD_R */ +#define SDHC_CORE_CMD_R_RESP_TYPE_SELECT_Pos 0UL +#define SDHC_CORE_CMD_R_RESP_TYPE_SELECT_Msk 0x3UL +#define SDHC_CORE_CMD_R_SUB_CMD_FLAG_Pos 2UL +#define SDHC_CORE_CMD_R_SUB_CMD_FLAG_Msk 0x4UL +#define SDHC_CORE_CMD_R_CMD_CRC_CHK_ENABLE_Pos 3UL +#define SDHC_CORE_CMD_R_CMD_CRC_CHK_ENABLE_Msk 0x8UL +#define SDHC_CORE_CMD_R_CMD_IDX_CHK_ENABLE_Pos 4UL +#define SDHC_CORE_CMD_R_CMD_IDX_CHK_ENABLE_Msk 0x10UL +#define SDHC_CORE_CMD_R_DATA_PRESENT_SEL_Pos 5UL +#define SDHC_CORE_CMD_R_DATA_PRESENT_SEL_Msk 0x20UL +#define SDHC_CORE_CMD_R_CMD_TYPE_Pos 6UL +#define SDHC_CORE_CMD_R_CMD_TYPE_Msk 0xC0UL +#define SDHC_CORE_CMD_R_CMD_INDEX_Pos 8UL +#define SDHC_CORE_CMD_R_CMD_INDEX_Msk 0x3F00UL +/* SDHC_CORE.RESP01_R */ +#define SDHC_CORE_RESP01_R_RESP01_Pos 0UL +#define SDHC_CORE_RESP01_R_RESP01_Msk 0xFFFFFFFFUL +/* SDHC_CORE.RESP23_R */ +#define SDHC_CORE_RESP23_R_RESP23_Pos 0UL +#define SDHC_CORE_RESP23_R_RESP23_Msk 0xFFFFFFFFUL +/* SDHC_CORE.RESP45_R */ +#define SDHC_CORE_RESP45_R_RESP45_Pos 0UL +#define SDHC_CORE_RESP45_R_RESP45_Msk 0xFFFFFFFFUL +/* SDHC_CORE.RESP67_R */ +#define SDHC_CORE_RESP67_R_RESP67_Pos 0UL +#define SDHC_CORE_RESP67_R_RESP67_Msk 0xFFFFFFFFUL +/* SDHC_CORE.BUF_DATA_R */ +#define SDHC_CORE_BUF_DATA_R_BUF_DATA_Pos 0UL +#define SDHC_CORE_BUF_DATA_R_BUF_DATA_Msk 0xFFFFFFFFUL +/* SDHC_CORE.PSTATE_REG */ +#define SDHC_CORE_PSTATE_REG_CMD_INHIBIT_Pos 0UL +#define SDHC_CORE_PSTATE_REG_CMD_INHIBIT_Msk 0x1UL +#define SDHC_CORE_PSTATE_REG_CMD_INHIBIT_DAT_Pos 1UL +#define SDHC_CORE_PSTATE_REG_CMD_INHIBIT_DAT_Msk 0x2UL +#define SDHC_CORE_PSTATE_REG_DAT_LINE_ACTIVE_Pos 2UL +#define SDHC_CORE_PSTATE_REG_DAT_LINE_ACTIVE_Msk 0x4UL +#define SDHC_CORE_PSTATE_REG_DAT_7_4_Pos 4UL +#define SDHC_CORE_PSTATE_REG_DAT_7_4_Msk 0xF0UL +#define SDHC_CORE_PSTATE_REG_WR_XFER_ACTIVE_Pos 8UL +#define SDHC_CORE_PSTATE_REG_WR_XFER_ACTIVE_Msk 0x100UL +#define SDHC_CORE_PSTATE_REG_RD_XFER_ACTIVE_Pos 9UL +#define SDHC_CORE_PSTATE_REG_RD_XFER_ACTIVE_Msk 0x200UL +#define SDHC_CORE_PSTATE_REG_BUF_WR_ENABLE_Pos 10UL +#define SDHC_CORE_PSTATE_REG_BUF_WR_ENABLE_Msk 0x400UL +#define SDHC_CORE_PSTATE_REG_BUF_RD_ENABLE_Pos 11UL +#define SDHC_CORE_PSTATE_REG_BUF_RD_ENABLE_Msk 0x800UL +#define SDHC_CORE_PSTATE_REG_CARD_INSERTED_Pos 16UL +#define SDHC_CORE_PSTATE_REG_CARD_INSERTED_Msk 0x10000UL +#define SDHC_CORE_PSTATE_REG_CARD_STABLE_Pos 17UL +#define SDHC_CORE_PSTATE_REG_CARD_STABLE_Msk 0x20000UL +#define SDHC_CORE_PSTATE_REG_CARD_DETECT_PIN_LEVEL_Pos 18UL +#define SDHC_CORE_PSTATE_REG_CARD_DETECT_PIN_LEVEL_Msk 0x40000UL +#define SDHC_CORE_PSTATE_REG_WR_PROTECT_SW_LVL_Pos 19UL +#define SDHC_CORE_PSTATE_REG_WR_PROTECT_SW_LVL_Msk 0x80000UL +#define SDHC_CORE_PSTATE_REG_DAT_3_0_Pos 20UL +#define SDHC_CORE_PSTATE_REG_DAT_3_0_Msk 0xF00000UL +#define SDHC_CORE_PSTATE_REG_CMD_LINE_LVL_Pos 24UL +#define SDHC_CORE_PSTATE_REG_CMD_LINE_LVL_Msk 0x1000000UL +#define SDHC_CORE_PSTATE_REG_HOST_REG_VOL_Pos 25UL +#define SDHC_CORE_PSTATE_REG_HOST_REG_VOL_Msk 0x2000000UL +#define SDHC_CORE_PSTATE_REG_CMD_ISSU_ERR_Pos 27UL +#define SDHC_CORE_PSTATE_REG_CMD_ISSU_ERR_Msk 0x8000000UL +#define SDHC_CORE_PSTATE_REG_SUB_CMD_STAT_Pos 28UL +#define SDHC_CORE_PSTATE_REG_SUB_CMD_STAT_Msk 0x10000000UL +/* SDHC_CORE.HOST_CTRL1_R */ +#define SDHC_CORE_HOST_CTRL1_R_LED_CTRL_Pos 0UL +#define SDHC_CORE_HOST_CTRL1_R_LED_CTRL_Msk 0x1UL +#define SDHC_CORE_HOST_CTRL1_R_DAT_XFER_WIDTH_Pos 1UL +#define SDHC_CORE_HOST_CTRL1_R_DAT_XFER_WIDTH_Msk 0x2UL +#define SDHC_CORE_HOST_CTRL1_R_HIGH_SPEED_EN_Pos 2UL +#define SDHC_CORE_HOST_CTRL1_R_HIGH_SPEED_EN_Msk 0x4UL +#define SDHC_CORE_HOST_CTRL1_R_DMA_SEL_Pos 3UL +#define SDHC_CORE_HOST_CTRL1_R_DMA_SEL_Msk 0x18UL +#define SDHC_CORE_HOST_CTRL1_R_EXT_DAT_XFER_Pos 5UL +#define SDHC_CORE_HOST_CTRL1_R_EXT_DAT_XFER_Msk 0x20UL +#define SDHC_CORE_HOST_CTRL1_R_CARD_DETECT_TEST_LVL_Pos 6UL +#define SDHC_CORE_HOST_CTRL1_R_CARD_DETECT_TEST_LVL_Msk 0x40UL +#define SDHC_CORE_HOST_CTRL1_R_CARD_DETECT_SIG_SEL_Pos 7UL +#define SDHC_CORE_HOST_CTRL1_R_CARD_DETECT_SIG_SEL_Msk 0x80UL +/* SDHC_CORE.PWR_CTRL_R */ +#define SDHC_CORE_PWR_CTRL_R_SD_BUS_PWR_VDD1_Pos 0UL +#define SDHC_CORE_PWR_CTRL_R_SD_BUS_PWR_VDD1_Msk 0x1UL +#define SDHC_CORE_PWR_CTRL_R_SD_BUS_VOL_VDD1_Pos 1UL +#define SDHC_CORE_PWR_CTRL_R_SD_BUS_VOL_VDD1_Msk 0xEUL +/* SDHC_CORE.BGAP_CTRL_R */ +#define SDHC_CORE_BGAP_CTRL_R_STOP_BG_REQ_Pos 0UL +#define SDHC_CORE_BGAP_CTRL_R_STOP_BG_REQ_Msk 0x1UL +#define SDHC_CORE_BGAP_CTRL_R_CONTINUE_REQ_Pos 1UL +#define SDHC_CORE_BGAP_CTRL_R_CONTINUE_REQ_Msk 0x2UL +#define SDHC_CORE_BGAP_CTRL_R_RD_WAIT_CTRL_Pos 2UL +#define SDHC_CORE_BGAP_CTRL_R_RD_WAIT_CTRL_Msk 0x4UL +#define SDHC_CORE_BGAP_CTRL_R_INT_AT_BGAP_Pos 3UL +#define SDHC_CORE_BGAP_CTRL_R_INT_AT_BGAP_Msk 0x8UL +/* SDHC_CORE.WUP_CTRL_R */ +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_INT_Pos 0UL +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_INT_Msk 0x1UL +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_INSERT_Pos 1UL +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_INSERT_Msk 0x2UL +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_REMOVAL_Pos 2UL +#define SDHC_CORE_WUP_CTRL_R_WUP_CARD_REMOVAL_Msk 0x4UL +/* SDHC_CORE.CLK_CTRL_R */ +#define SDHC_CORE_CLK_CTRL_R_INTERNAL_CLK_EN_Pos 0UL +#define SDHC_CORE_CLK_CTRL_R_INTERNAL_CLK_EN_Msk 0x1UL +#define SDHC_CORE_CLK_CTRL_R_INTERNAL_CLK_STABLE_Pos 1UL +#define SDHC_CORE_CLK_CTRL_R_INTERNAL_CLK_STABLE_Msk 0x2UL +#define SDHC_CORE_CLK_CTRL_R_SD_CLK_EN_Pos 2UL +#define SDHC_CORE_CLK_CTRL_R_SD_CLK_EN_Msk 0x4UL +#define SDHC_CORE_CLK_CTRL_R_PLL_ENABLE_Pos 3UL +#define SDHC_CORE_CLK_CTRL_R_PLL_ENABLE_Msk 0x8UL +#define SDHC_CORE_CLK_CTRL_R_CLK_GEN_SELECT_Pos 5UL +#define SDHC_CORE_CLK_CTRL_R_CLK_GEN_SELECT_Msk 0x20UL +#define SDHC_CORE_CLK_CTRL_R_UPPER_FREQ_SEL_Pos 6UL +#define SDHC_CORE_CLK_CTRL_R_UPPER_FREQ_SEL_Msk 0xC0UL +#define SDHC_CORE_CLK_CTRL_R_FREQ_SEL_Pos 8UL +#define SDHC_CORE_CLK_CTRL_R_FREQ_SEL_Msk 0xFF00UL +/* SDHC_CORE.TOUT_CTRL_R */ +#define SDHC_CORE_TOUT_CTRL_R_TOUT_CNT_Pos 0UL +#define SDHC_CORE_TOUT_CTRL_R_TOUT_CNT_Msk 0xFUL +/* SDHC_CORE.SW_RST_R */ +#define SDHC_CORE_SW_RST_R_SW_RST_ALL_Pos 0UL +#define SDHC_CORE_SW_RST_R_SW_RST_ALL_Msk 0x1UL +#define SDHC_CORE_SW_RST_R_SW_RST_CMD_Pos 1UL +#define SDHC_CORE_SW_RST_R_SW_RST_CMD_Msk 0x2UL +#define SDHC_CORE_SW_RST_R_SW_RST_DAT_Pos 2UL +#define SDHC_CORE_SW_RST_R_SW_RST_DAT_Msk 0x4UL +/* SDHC_CORE.NORMAL_INT_STAT_R */ +#define SDHC_CORE_NORMAL_INT_STAT_R_CMD_COMPLETE_Pos 0UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CMD_COMPLETE_Msk 0x1UL +#define SDHC_CORE_NORMAL_INT_STAT_R_XFER_COMPLETE_Pos 1UL +#define SDHC_CORE_NORMAL_INT_STAT_R_XFER_COMPLETE_Msk 0x2UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BGAP_EVENT_Pos 2UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BGAP_EVENT_Msk 0x4UL +#define SDHC_CORE_NORMAL_INT_STAT_R_DMA_INTERRUPT_Pos 3UL +#define SDHC_CORE_NORMAL_INT_STAT_R_DMA_INTERRUPT_Msk 0x8UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BUF_WR_READY_Pos 4UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BUF_WR_READY_Msk 0x10UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BUF_RD_READY_Pos 5UL +#define SDHC_CORE_NORMAL_INT_STAT_R_BUF_RD_READY_Msk 0x20UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_INSERTION_Pos 6UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_INSERTION_Msk 0x40UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_REMOVAL_Pos 7UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_REMOVAL_Msk 0x80UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_INTERRUPT_Pos 8UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CARD_INTERRUPT_Msk 0x100UL +#define SDHC_CORE_NORMAL_INT_STAT_R_FX_EVENT_Pos 13UL +#define SDHC_CORE_NORMAL_INT_STAT_R_FX_EVENT_Msk 0x2000UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CQE_EVENT_Pos 14UL +#define SDHC_CORE_NORMAL_INT_STAT_R_CQE_EVENT_Msk 0x4000UL +#define SDHC_CORE_NORMAL_INT_STAT_R_ERR_INTERRUPT_Pos 15UL +#define SDHC_CORE_NORMAL_INT_STAT_R_ERR_INTERRUPT_Msk 0x8000UL +/* SDHC_CORE.ERROR_INT_STAT_R */ +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_TOUT_ERR_Pos 0UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_TOUT_ERR_Msk 0x1UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_CRC_ERR_Pos 1UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_CRC_ERR_Msk 0x2UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_END_BIT_ERR_Pos 2UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_END_BIT_ERR_Msk 0x4UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_IDX_ERR_Pos 3UL +#define SDHC_CORE_ERROR_INT_STAT_R_CMD_IDX_ERR_Msk 0x8UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_TOUT_ERR_Pos 4UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_TOUT_ERR_Msk 0x10UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_CRC_ERR_Pos 5UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_CRC_ERR_Msk 0x20UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_END_BIT_ERR_Pos 6UL +#define SDHC_CORE_ERROR_INT_STAT_R_DATA_END_BIT_ERR_Msk 0x40UL +#define SDHC_CORE_ERROR_INT_STAT_R_CUR_LMT_ERR_Pos 7UL +#define SDHC_CORE_ERROR_INT_STAT_R_CUR_LMT_ERR_Msk 0x80UL +#define SDHC_CORE_ERROR_INT_STAT_R_AUTO_CMD_ERR_Pos 8UL +#define SDHC_CORE_ERROR_INT_STAT_R_AUTO_CMD_ERR_Msk 0x100UL +#define SDHC_CORE_ERROR_INT_STAT_R_ADMA_ERR_Pos 9UL +#define SDHC_CORE_ERROR_INT_STAT_R_ADMA_ERR_Msk 0x200UL +#define SDHC_CORE_ERROR_INT_STAT_R_TUNING_ERR_Pos 10UL +#define SDHC_CORE_ERROR_INT_STAT_R_TUNING_ERR_Msk 0x400UL +#define SDHC_CORE_ERROR_INT_STAT_R_RESP_ERR_Pos 11UL +#define SDHC_CORE_ERROR_INT_STAT_R_RESP_ERR_Msk 0x800UL +#define SDHC_CORE_ERROR_INT_STAT_R_BOOT_ACK_ERR_Pos 12UL +#define SDHC_CORE_ERROR_INT_STAT_R_BOOT_ACK_ERR_Msk 0x1000UL +/* SDHC_CORE.NORMAL_INT_STAT_EN_R */ +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CMD_COMPLETE_STAT_EN_Pos 0UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CMD_COMPLETE_STAT_EN_Msk 0x1UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_XFER_COMPLETE_STAT_EN_Pos 1UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_XFER_COMPLETE_STAT_EN_Msk 0x2UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BGAP_EVENT_STAT_EN_Pos 2UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BGAP_EVENT_STAT_EN_Msk 0x4UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_DMA_INTERRUPT_STAT_EN_Pos 3UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_DMA_INTERRUPT_STAT_EN_Msk 0x8UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BUF_WR_READY_STAT_EN_Pos 4UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BUF_WR_READY_STAT_EN_Msk 0x10UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BUF_RD_READY_STAT_EN_Pos 5UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_BUF_RD_READY_STAT_EN_Msk 0x20UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_INSERTION_STAT_EN_Pos 6UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_INSERTION_STAT_EN_Msk 0x40UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_REMOVAL_STAT_EN_Pos 7UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_REMOVAL_STAT_EN_Msk 0x80UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_INTERRUPT_STAT_EN_Pos 8UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CARD_INTERRUPT_STAT_EN_Msk 0x100UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_A_STAT_EN_Pos 9UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_A_STAT_EN_Msk 0x200UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_B_STAT_EN_Pos 10UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_B_STAT_EN_Msk 0x400UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_C_STAT_EN_Pos 11UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_INT_C_STAT_EN_Msk 0x800UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_RE_TUNE_EVENT_STAT_EN_Pos 12UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_RE_TUNE_EVENT_STAT_EN_Msk 0x1000UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_FX_EVENT_STAT_EN_Pos 13UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_FX_EVENT_STAT_EN_Msk 0x2000UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CQE_EVENT_STAT_EN_Pos 14UL +#define SDHC_CORE_NORMAL_INT_STAT_EN_R_CQE_EVENT_STAT_EN_Msk 0x4000UL +/* SDHC_CORE.ERROR_INT_STAT_EN_R */ +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_TOUT_ERR_STAT_EN_Pos 0UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_TOUT_ERR_STAT_EN_Msk 0x1UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_CRC_ERR_STAT_EN_Pos 1UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_CRC_ERR_STAT_EN_Msk 0x2UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_END_BIT_ERR_STAT_EN_Pos 2UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_END_BIT_ERR_STAT_EN_Msk 0x4UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_IDX_ERR_STAT_EN_Pos 3UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CMD_IDX_ERR_STAT_EN_Msk 0x8UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_TOUT_ERR_STAT_EN_Pos 4UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_TOUT_ERR_STAT_EN_Msk 0x10UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_CRC_ERR_STAT_EN_Pos 5UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_CRC_ERR_STAT_EN_Msk 0x20UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_END_BIT_ERR_STAT_EN_Pos 6UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_DATA_END_BIT_ERR_STAT_EN_Msk 0x40UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CUR_LMT_ERR_STAT_EN_Pos 7UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_CUR_LMT_ERR_STAT_EN_Msk 0x80UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_AUTO_CMD_ERR_STAT_EN_Pos 8UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_AUTO_CMD_ERR_STAT_EN_Msk 0x100UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_ADMA_ERR_STAT_EN_Pos 9UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_ADMA_ERR_STAT_EN_Msk 0x200UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_TUNING_ERR_STAT_EN_Pos 10UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_TUNING_ERR_STAT_EN_Msk 0x400UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_RESP_ERR_STAT_EN_Pos 11UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_RESP_ERR_STAT_EN_Msk 0x800UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_BOOT_ACK_ERR_STAT_EN_Pos 12UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_BOOT_ACK_ERR_STAT_EN_Msk 0x1000UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN1_Pos 13UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN1_Msk 0x2000UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN2_Pos 14UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN2_Msk 0x4000UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN3_Pos 15UL +#define SDHC_CORE_ERROR_INT_STAT_EN_R_VENDOR_ERR_STAT_EN3_Msk 0x8000UL +/* SDHC_CORE.NORMAL_INT_SIGNAL_EN_R */ +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CMD_COMPLETE_SIGNAL_EN_Pos 0UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CMD_COMPLETE_SIGNAL_EN_Msk 0x1UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_XFER_COMPLETE_SIGNAL_EN_Pos 1UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_XFER_COMPLETE_SIGNAL_EN_Msk 0x2UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BGAP_EVENT_SIGNAL_EN_Pos 2UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BGAP_EVENT_SIGNAL_EN_Msk 0x4UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_DMA_INTERRUPT_SIGNAL_EN_Pos 3UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_DMA_INTERRUPT_SIGNAL_EN_Msk 0x8UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BUF_WR_READY_SIGNAL_EN_Pos 4UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BUF_WR_READY_SIGNAL_EN_Msk 0x10UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BUF_RD_READY_SIGNAL_EN_Pos 5UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_BUF_RD_READY_SIGNAL_EN_Msk 0x20UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_INSERTION_SIGNAL_EN_Pos 6UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_INSERTION_SIGNAL_EN_Msk 0x40UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_REMOVAL_SIGNAL_EN_Pos 7UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_REMOVAL_SIGNAL_EN_Msk 0x80UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_INTERRUPT_SIGNAL_EN_Pos 8UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CARD_INTERRUPT_SIGNAL_EN_Msk 0x100UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_A_SIGNAL_EN_Pos 9UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_A_SIGNAL_EN_Msk 0x200UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_B_SIGNAL_EN_Pos 10UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_B_SIGNAL_EN_Msk 0x400UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_C_SIGNAL_EN_Pos 11UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_INT_C_SIGNAL_EN_Msk 0x800UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_RE_TUNE_EVENT_SIGNAL_EN_Pos 12UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_RE_TUNE_EVENT_SIGNAL_EN_Msk 0x1000UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_FX_EVENT_SIGNAL_EN_Pos 13UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_FX_EVENT_SIGNAL_EN_Msk 0x2000UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CQE_EVENT_SIGNAL_EN_Pos 14UL +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R_CQE_EVENT_SIGNAL_EN_Msk 0x4000UL +/* SDHC_CORE.ERROR_INT_SIGNAL_EN_R */ +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_TOUT_ERR_SIGNAL_EN_Pos 0UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_TOUT_ERR_SIGNAL_EN_Msk 0x1UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_CRC_ERR_SIGNAL_EN_Pos 1UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_CRC_ERR_SIGNAL_EN_Msk 0x2UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_END_BIT_ERR_SIGNAL_EN_Pos 2UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_END_BIT_ERR_SIGNAL_EN_Msk 0x4UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_IDX_ERR_SIGNAL_EN_Pos 3UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CMD_IDX_ERR_SIGNAL_EN_Msk 0x8UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_TOUT_ERR_SIGNAL_EN_Pos 4UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_TOUT_ERR_SIGNAL_EN_Msk 0x10UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_CRC_ERR_SIGNAL_EN_Pos 5UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_CRC_ERR_SIGNAL_EN_Msk 0x20UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_END_BIT_ERR_SIGNAL_EN_Pos 6UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_DATA_END_BIT_ERR_SIGNAL_EN_Msk 0x40UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CUR_LMT_ERR_SIGNAL_EN_Pos 7UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_CUR_LMT_ERR_SIGNAL_EN_Msk 0x80UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_AUTO_CMD_ERR_SIGNAL_EN_Pos 8UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_AUTO_CMD_ERR_SIGNAL_EN_Msk 0x100UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_ADMA_ERR_SIGNAL_EN_Pos 9UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_ADMA_ERR_SIGNAL_EN_Msk 0x200UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_TUNING_ERR_SIGNAL_EN_Pos 10UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_TUNING_ERR_SIGNAL_EN_Msk 0x400UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_RESP_ERR_SIGNAL_EN_Pos 11UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_RESP_ERR_SIGNAL_EN_Msk 0x800UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_BOOT_ACK_ERR_SIGNAL_EN_Pos 12UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_BOOT_ACK_ERR_SIGNAL_EN_Msk 0x1000UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN1_Pos 13UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN1_Msk 0x2000UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN2_Pos 14UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN2_Msk 0x4000UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN3_Pos 15UL +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R_VENDOR_ERR_SIGNAL_EN3_Msk 0x8000UL +/* SDHC_CORE.AUTO_CMD_STAT_R */ +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD12_NOT_EXEC_Pos 0UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD12_NOT_EXEC_Msk 0x1UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_TOUT_ERR_Pos 1UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_TOUT_ERR_Msk 0x2UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_CRC_ERR_Pos 2UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_CRC_ERR_Msk 0x4UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_EBIT_ERR_Pos 3UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_EBIT_ERR_Msk 0x8UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_IDX_ERR_Pos 4UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_IDX_ERR_Msk 0x10UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_RESP_ERR_Pos 5UL +#define SDHC_CORE_AUTO_CMD_STAT_R_AUTO_CMD_RESP_ERR_Msk 0x20UL +#define SDHC_CORE_AUTO_CMD_STAT_R_CMD_NOT_ISSUED_AUTO_CMD12_Pos 7UL +#define SDHC_CORE_AUTO_CMD_STAT_R_CMD_NOT_ISSUED_AUTO_CMD12_Msk 0x80UL +/* SDHC_CORE.HOST_CTRL2_R */ +#define SDHC_CORE_HOST_CTRL2_R_UHS_MODE_SEL_Pos 0UL +#define SDHC_CORE_HOST_CTRL2_R_UHS_MODE_SEL_Msk 0x7UL +#define SDHC_CORE_HOST_CTRL2_R_SIGNALING_EN_Pos 3UL +#define SDHC_CORE_HOST_CTRL2_R_SIGNALING_EN_Msk 0x8UL +#define SDHC_CORE_HOST_CTRL2_R_DRV_STRENGTH_SEL_Pos 4UL +#define SDHC_CORE_HOST_CTRL2_R_DRV_STRENGTH_SEL_Msk 0x30UL +#define SDHC_CORE_HOST_CTRL2_R_EXEC_TUNING_Pos 6UL +#define SDHC_CORE_HOST_CTRL2_R_EXEC_TUNING_Msk 0x40UL +#define SDHC_CORE_HOST_CTRL2_R_SAMPLE_CLK_SEL_Pos 7UL +#define SDHC_CORE_HOST_CTRL2_R_SAMPLE_CLK_SEL_Msk 0x80UL +#define SDHC_CORE_HOST_CTRL2_R_UHS2_IF_ENABLE_Pos 8UL +#define SDHC_CORE_HOST_CTRL2_R_UHS2_IF_ENABLE_Msk 0x100UL +#define SDHC_CORE_HOST_CTRL2_R_ADMA2_LEN_MODE_Pos 10UL +#define SDHC_CORE_HOST_CTRL2_R_ADMA2_LEN_MODE_Msk 0x400UL +#define SDHC_CORE_HOST_CTRL2_R_CMD23_ENABLE_Pos 11UL +#define SDHC_CORE_HOST_CTRL2_R_CMD23_ENABLE_Msk 0x800UL +#define SDHC_CORE_HOST_CTRL2_R_HOST_VER4_ENABLE_Pos 12UL +#define SDHC_CORE_HOST_CTRL2_R_HOST_VER4_ENABLE_Msk 0x1000UL +#define SDHC_CORE_HOST_CTRL2_R_ADDRESSING_Pos 13UL +#define SDHC_CORE_HOST_CTRL2_R_ADDRESSING_Msk 0x2000UL +#define SDHC_CORE_HOST_CTRL2_R_ASYNC_INT_ENABLE_Pos 14UL +#define SDHC_CORE_HOST_CTRL2_R_ASYNC_INT_ENABLE_Msk 0x4000UL +#define SDHC_CORE_HOST_CTRL2_R_PRESET_VAL_ENABLE_Pos 15UL +#define SDHC_CORE_HOST_CTRL2_R_PRESET_VAL_ENABLE_Msk 0x8000UL +/* SDHC_CORE.CAPABILITIES1_R */ +#define SDHC_CORE_CAPABILITIES1_R_TOUT_CLK_FREQ_Pos 0UL +#define SDHC_CORE_CAPABILITIES1_R_TOUT_CLK_FREQ_Msk 0x3FUL +#define SDHC_CORE_CAPABILITIES1_R_TOUT_CLK_UNIT_Pos 7UL +#define SDHC_CORE_CAPABILITIES1_R_TOUT_CLK_UNIT_Msk 0x80UL +#define SDHC_CORE_CAPABILITIES1_R_BASE_CLK_FREQ_Pos 8UL +#define SDHC_CORE_CAPABILITIES1_R_BASE_CLK_FREQ_Msk 0xFF00UL +#define SDHC_CORE_CAPABILITIES1_R_MAX_BLK_LEN_Pos 16UL +#define SDHC_CORE_CAPABILITIES1_R_MAX_BLK_LEN_Msk 0x30000UL +#define SDHC_CORE_CAPABILITIES1_R_EMBEDDED_8_BIT_Pos 18UL +#define SDHC_CORE_CAPABILITIES1_R_EMBEDDED_8_BIT_Msk 0x40000UL +#define SDHC_CORE_CAPABILITIES1_R_ADMA2_SUPPORT_Pos 19UL +#define SDHC_CORE_CAPABILITIES1_R_ADMA2_SUPPORT_Msk 0x80000UL +#define SDHC_CORE_CAPABILITIES1_R_HIGH_SPEED_SUPPORT_Pos 21UL +#define SDHC_CORE_CAPABILITIES1_R_HIGH_SPEED_SUPPORT_Msk 0x200000UL +#define SDHC_CORE_CAPABILITIES1_R_SDMA_SUPPORT_Pos 22UL +#define SDHC_CORE_CAPABILITIES1_R_SDMA_SUPPORT_Msk 0x400000UL +#define SDHC_CORE_CAPABILITIES1_R_SUS_RES_SUPPORT_Pos 23UL +#define SDHC_CORE_CAPABILITIES1_R_SUS_RES_SUPPORT_Msk 0x800000UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_33_Pos 24UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_33_Msk 0x1000000UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_30_Pos 25UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_30_Msk 0x2000000UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_18_Pos 26UL +#define SDHC_CORE_CAPABILITIES1_R_VOLT_18_Msk 0x4000000UL +#define SDHC_CORE_CAPABILITIES1_R_SYS_ADDR_64_V4_Pos 27UL +#define SDHC_CORE_CAPABILITIES1_R_SYS_ADDR_64_V4_Msk 0x8000000UL +#define SDHC_CORE_CAPABILITIES1_R_SYS_ADDR_64_V3_Pos 28UL +#define SDHC_CORE_CAPABILITIES1_R_SYS_ADDR_64_V3_Msk 0x10000000UL +#define SDHC_CORE_CAPABILITIES1_R_ASYNC_INT_SUPPORT_Pos 29UL +#define SDHC_CORE_CAPABILITIES1_R_ASYNC_INT_SUPPORT_Msk 0x20000000UL +#define SDHC_CORE_CAPABILITIES1_R_SLOT_TYPE_R_Pos 30UL +#define SDHC_CORE_CAPABILITIES1_R_SLOT_TYPE_R_Msk 0xC0000000UL +/* SDHC_CORE.CAPABILITIES2_R */ +#define SDHC_CORE_CAPABILITIES2_R_SDR50_SUPPORT_Pos 0UL +#define SDHC_CORE_CAPABILITIES2_R_SDR50_SUPPORT_Msk 0x1UL +#define SDHC_CORE_CAPABILITIES2_R_SDR104_SUPPORT_Pos 1UL +#define SDHC_CORE_CAPABILITIES2_R_SDR104_SUPPORT_Msk 0x2UL +#define SDHC_CORE_CAPABILITIES2_R_DDR50_SUPPORT_Pos 2UL +#define SDHC_CORE_CAPABILITIES2_R_DDR50_SUPPORT_Msk 0x4UL +#define SDHC_CORE_CAPABILITIES2_R_UHS2_SUPPORT_Pos 3UL +#define SDHC_CORE_CAPABILITIES2_R_UHS2_SUPPORT_Msk 0x8UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPEA_Pos 4UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPEA_Msk 0x10UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPEC_Pos 5UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPEC_Msk 0x20UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPED_Pos 6UL +#define SDHC_CORE_CAPABILITIES2_R_DRV_TYPED_Msk 0x40UL +#define SDHC_CORE_CAPABILITIES2_R_RETUNE_CNT_Pos 8UL +#define SDHC_CORE_CAPABILITIES2_R_RETUNE_CNT_Msk 0xF00UL +#define SDHC_CORE_CAPABILITIES2_R_USE_TUNING_SDR50_Pos 13UL +#define SDHC_CORE_CAPABILITIES2_R_USE_TUNING_SDR50_Msk 0x2000UL +#define SDHC_CORE_CAPABILITIES2_R_RE_TUNING_MODES_Pos 14UL +#define SDHC_CORE_CAPABILITIES2_R_RE_TUNING_MODES_Msk 0xC000UL +#define SDHC_CORE_CAPABILITIES2_R_CLK_MUL_Pos 16UL +#define SDHC_CORE_CAPABILITIES2_R_CLK_MUL_Msk 0xFF0000UL +#define SDHC_CORE_CAPABILITIES2_R_ADMA3_SUPPORT_Pos 27UL +#define SDHC_CORE_CAPABILITIES2_R_ADMA3_SUPPORT_Msk 0x8000000UL +#define SDHC_CORE_CAPABILITIES2_R_VDD2_18V_SUPPORT_Pos 28UL +#define SDHC_CORE_CAPABILITIES2_R_VDD2_18V_SUPPORT_Msk 0x10000000UL +/* SDHC_CORE.CURR_CAPABILITIES1_R */ +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_33V_Pos 0UL +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_33V_Msk 0xFFUL +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_30V_Pos 8UL +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_30V_Msk 0xFF00UL +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_18V_Pos 16UL +#define SDHC_CORE_CURR_CAPABILITIES1_R_MAX_CUR_18V_Msk 0xFF0000UL +/* SDHC_CORE.CURR_CAPABILITIES2_R */ +#define SDHC_CORE_CURR_CAPABILITIES2_R_MAX_CUR_VDD2_18V_Pos 0UL +#define SDHC_CORE_CURR_CAPABILITIES2_R_MAX_CUR_VDD2_18V_Msk 0xFFUL +/* SDHC_CORE.FORCE_AUTO_CMD_STAT_R */ +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD12_NOT_EXEC_Pos 0UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD12_NOT_EXEC_Msk 0x1UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_TOUT_ERR_Pos 1UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_TOUT_ERR_Msk 0x2UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_CRC_ERR_Pos 2UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_CRC_ERR_Msk 0x4UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_EBIT_ERR_Pos 3UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_EBIT_ERR_Msk 0x8UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_IDX_ERR_Pos 4UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_IDX_ERR_Msk 0x10UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_RESP_ERR_Pos 5UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_AUTO_CMD_RESP_ERR_Msk 0x20UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_Pos 7UL +#define SDHC_CORE_FORCE_AUTO_CMD_STAT_R_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_Msk 0x80UL +/* SDHC_CORE.FORCE_ERROR_INT_STAT_R */ +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_TOUT_ERR_Pos 0UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_TOUT_ERR_Msk 0x1UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_CRC_ERR_Pos 1UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_CRC_ERR_Msk 0x2UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_END_BIT_ERR_Pos 2UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_END_BIT_ERR_Msk 0x4UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_IDX_ERR_Pos 3UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CMD_IDX_ERR_Msk 0x8UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_TOUT_ERR_Pos 4UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_TOUT_ERR_Msk 0x10UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_CRC_ERR_Pos 5UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_CRC_ERR_Msk 0x20UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_END_BIT_ERR_Pos 6UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_DATA_END_BIT_ERR_Msk 0x40UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CUR_LMT_ERR_Pos 7UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_CUR_LMT_ERR_Msk 0x80UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_AUTO_CMD_ERR_Pos 8UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_AUTO_CMD_ERR_Msk 0x100UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_ADMA_ERR_Pos 9UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_ADMA_ERR_Msk 0x200UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_TUNING_ERR_Pos 10UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_TUNING_ERR_Msk 0x400UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_RESP_ERR_Pos 11UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_RESP_ERR_Msk 0x800UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_BOOT_ACK_ERR_Pos 12UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_BOOT_ACK_ERR_Msk 0x1000UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR1_Pos 13UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR1_Msk 0x2000UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR2_Pos 14UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR2_Msk 0x4000UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR3_Pos 15UL +#define SDHC_CORE_FORCE_ERROR_INT_STAT_R_FORCE_VENDOR_ERR3_Msk 0x8000UL +/* SDHC_CORE.ADMA_ERR_STAT_R */ +#define SDHC_CORE_ADMA_ERR_STAT_R_ADMA_ERR_STATES_Pos 0UL +#define SDHC_CORE_ADMA_ERR_STAT_R_ADMA_ERR_STATES_Msk 0x3UL +#define SDHC_CORE_ADMA_ERR_STAT_R_ADMA_LEN_ERR_Pos 2UL +#define SDHC_CORE_ADMA_ERR_STAT_R_ADMA_LEN_ERR_Msk 0x4UL +/* SDHC_CORE.ADMA_SA_LOW_R */ +#define SDHC_CORE_ADMA_SA_LOW_R_ADMA_SA_LOW_Pos 0UL +#define SDHC_CORE_ADMA_SA_LOW_R_ADMA_SA_LOW_Msk 0xFFFFFFFFUL +/* SDHC_CORE.ADMA_ID_LOW_R */ +#define SDHC_CORE_ADMA_ID_LOW_R_ADMA_ID_LOW_Pos 0UL +#define SDHC_CORE_ADMA_ID_LOW_R_ADMA_ID_LOW_Msk 0xFFFFFFFFUL +/* SDHC_CORE.HOST_CNTRL_VERS_R */ +#define SDHC_CORE_HOST_CNTRL_VERS_R_SPEC_VERSION_NUM_Pos 0UL +#define SDHC_CORE_HOST_CNTRL_VERS_R_SPEC_VERSION_NUM_Msk 0xFFUL +#define SDHC_CORE_HOST_CNTRL_VERS_R_VENDOR_VERSION_NUM_Pos 8UL +#define SDHC_CORE_HOST_CNTRL_VERS_R_VENDOR_VERSION_NUM_Msk 0xFF00UL +/* SDHC_CORE.CQVER */ +#define SDHC_CORE_CQVER_EMMC_VER_SUFFIX_Pos 0UL +#define SDHC_CORE_CQVER_EMMC_VER_SUFFIX_Msk 0xFUL +#define SDHC_CORE_CQVER_EMMC_VER_MINOR_Pos 4UL +#define SDHC_CORE_CQVER_EMMC_VER_MINOR_Msk 0xF0UL +#define SDHC_CORE_CQVER_EMMC_VER_MAJOR_Pos 8UL +#define SDHC_CORE_CQVER_EMMC_VER_MAJOR_Msk 0xF00UL +/* SDHC_CORE.CQCAP */ +#define SDHC_CORE_CQCAP_ITCFVAL_Pos 0UL +#define SDHC_CORE_CQCAP_ITCFVAL_Msk 0x3FFUL +#define SDHC_CORE_CQCAP_ITCFMUL_Pos 12UL +#define SDHC_CORE_CQCAP_ITCFMUL_Msk 0xF000UL +#define SDHC_CORE_CQCAP_CRYPTO_SUPPORT_Pos 28UL +#define SDHC_CORE_CQCAP_CRYPTO_SUPPORT_Msk 0x10000000UL +/* SDHC_CORE.CQCFG */ +#define SDHC_CORE_CQCFG_CQ_EN_Pos 0UL +#define SDHC_CORE_CQCFG_CQ_EN_Msk 0x1UL +#define SDHC_CORE_CQCFG_CR_GENERAL_EN_Pos 1UL +#define SDHC_CORE_CQCFG_CR_GENERAL_EN_Msk 0x2UL +#define SDHC_CORE_CQCFG_TASK_DESC_SIZE_Pos 8UL +#define SDHC_CORE_CQCFG_TASK_DESC_SIZE_Msk 0x100UL +#define SDHC_CORE_CQCFG_DCMD_EN_Pos 12UL +#define SDHC_CORE_CQCFG_DCMD_EN_Msk 0x1000UL +/* SDHC_CORE.CQCTL */ +#define SDHC_CORE_CQCTL_HALT_Pos 0UL +#define SDHC_CORE_CQCTL_HALT_Msk 0x1UL +#define SDHC_CORE_CQCTL_CLR_ALL_TASKS_Pos 8UL +#define SDHC_CORE_CQCTL_CLR_ALL_TASKS_Msk 0x100UL +/* SDHC_CORE.CQIS */ +#define SDHC_CORE_CQIS_HAC_Pos 0UL +#define SDHC_CORE_CQIS_HAC_Msk 0x1UL +#define SDHC_CORE_CQIS_TCC_Pos 1UL +#define SDHC_CORE_CQIS_TCC_Msk 0x2UL +#define SDHC_CORE_CQIS_RED_Pos 2UL +#define SDHC_CORE_CQIS_RED_Msk 0x4UL +#define SDHC_CORE_CQIS_TCL_Pos 3UL +#define SDHC_CORE_CQIS_TCL_Msk 0x8UL +#define SDHC_CORE_CQIS_GCE_Pos 4UL +#define SDHC_CORE_CQIS_GCE_Msk 0x10UL +#define SDHC_CORE_CQIS_ICCE_Pos 5UL +#define SDHC_CORE_CQIS_ICCE_Msk 0x20UL +/* SDHC_CORE.CQISE */ +#define SDHC_CORE_CQISE_HAC_STE_Pos 0UL +#define SDHC_CORE_CQISE_HAC_STE_Msk 0x1UL +#define SDHC_CORE_CQISE_TCC_STE_Pos 1UL +#define SDHC_CORE_CQISE_TCC_STE_Msk 0x2UL +#define SDHC_CORE_CQISE_RED_STE_Pos 2UL +#define SDHC_CORE_CQISE_RED_STE_Msk 0x4UL +#define SDHC_CORE_CQISE_TCL_STE_Pos 3UL +#define SDHC_CORE_CQISE_TCL_STE_Msk 0x8UL +#define SDHC_CORE_CQISE_GCE_STE_Pos 4UL +#define SDHC_CORE_CQISE_GCE_STE_Msk 0x10UL +#define SDHC_CORE_CQISE_ICCE_STE_Pos 5UL +#define SDHC_CORE_CQISE_ICCE_STE_Msk 0x20UL +/* SDHC_CORE.CQISGE */ +#define SDHC_CORE_CQISGE_HAC_SGE_Pos 0UL +#define SDHC_CORE_CQISGE_HAC_SGE_Msk 0x1UL +#define SDHC_CORE_CQISGE_TCC_SGE_Pos 1UL +#define SDHC_CORE_CQISGE_TCC_SGE_Msk 0x2UL +#define SDHC_CORE_CQISGE_RED_SGE_Pos 2UL +#define SDHC_CORE_CQISGE_RED_SGE_Msk 0x4UL +#define SDHC_CORE_CQISGE_TCL_SGE_Pos 3UL +#define SDHC_CORE_CQISGE_TCL_SGE_Msk 0x8UL +#define SDHC_CORE_CQISGE_GCE_SGE_Pos 4UL +#define SDHC_CORE_CQISGE_GCE_SGE_Msk 0x10UL +#define SDHC_CORE_CQISGE_ICCE_SGE_Pos 5UL +#define SDHC_CORE_CQISGE_ICCE_SGE_Msk 0x20UL +/* SDHC_CORE.CQIC */ +#define SDHC_CORE_CQIC_TOUT_VAL_Pos 0UL +#define SDHC_CORE_CQIC_TOUT_VAL_Msk 0x7FUL +#define SDHC_CORE_CQIC_TOUT_VAL_WEN_Pos 7UL +#define SDHC_CORE_CQIC_TOUT_VAL_WEN_Msk 0x80UL +#define SDHC_CORE_CQIC_INTC_TH_Pos 8UL +#define SDHC_CORE_CQIC_INTC_TH_Msk 0x1F00UL +#define SDHC_CORE_CQIC_INTC_TH_WEN_Pos 15UL +#define SDHC_CORE_CQIC_INTC_TH_WEN_Msk 0x8000UL +#define SDHC_CORE_CQIC_INTC_RST_Pos 16UL +#define SDHC_CORE_CQIC_INTC_RST_Msk 0x10000UL +#define SDHC_CORE_CQIC_INTC_STAT_Pos 20UL +#define SDHC_CORE_CQIC_INTC_STAT_Msk 0x100000UL +#define SDHC_CORE_CQIC_INTC_EN_Pos 31UL +#define SDHC_CORE_CQIC_INTC_EN_Msk 0x80000000UL +/* SDHC_CORE.CQTDLBA */ +#define SDHC_CORE_CQTDLBA_TDLBA_Pos 0UL +#define SDHC_CORE_CQTDLBA_TDLBA_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQTDBR */ +#define SDHC_CORE_CQTDBR_DBR_Pos 0UL +#define SDHC_CORE_CQTDBR_DBR_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQTCN */ +#define SDHC_CORE_CQTCN_TCN_Pos 0UL +#define SDHC_CORE_CQTCN_TCN_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQDQS */ +#define SDHC_CORE_CQDQS_DQS_Pos 0UL +#define SDHC_CORE_CQDQS_DQS_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQDPT */ +#define SDHC_CORE_CQDPT_DPT_Pos 0UL +#define SDHC_CORE_CQDPT_DPT_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQTCLR */ +#define SDHC_CORE_CQTCLR_TCLR_Pos 0UL +#define SDHC_CORE_CQTCLR_TCLR_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQSSC1 */ +#define SDHC_CORE_CQSSC1_SQSCMD_IDLE_TMR_Pos 0UL +#define SDHC_CORE_CQSSC1_SQSCMD_IDLE_TMR_Msk 0xFFFFUL +#define SDHC_CORE_CQSSC1_SQSCMD_BLK_CNT_Pos 16UL +#define SDHC_CORE_CQSSC1_SQSCMD_BLK_CNT_Msk 0xF0000UL +/* SDHC_CORE.CQSSC2 */ +#define SDHC_CORE_CQSSC2_SQSCMD_RCA_Pos 0UL +#define SDHC_CORE_CQSSC2_SQSCMD_RCA_Msk 0xFFFFUL +/* SDHC_CORE.CQCRDCT */ +#define SDHC_CORE_CQCRDCT_DCMD_RESP_Pos 0UL +#define SDHC_CORE_CQCRDCT_DCMD_RESP_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQRMEM */ +#define SDHC_CORE_CQRMEM_RESP_ERR_MASK_Pos 0UL +#define SDHC_CORE_CQRMEM_RESP_ERR_MASK_Msk 0xFFFFFFFFUL +/* SDHC_CORE.CQTERRI */ +#define SDHC_CORE_CQTERRI_RESP_ERR_CMD_INDX_Pos 0UL +#define SDHC_CORE_CQTERRI_RESP_ERR_CMD_INDX_Msk 0x3FUL +#define SDHC_CORE_CQTERRI_RESP_ERR_TASKID_Pos 8UL +#define SDHC_CORE_CQTERRI_RESP_ERR_TASKID_Msk 0x1F00UL +#define SDHC_CORE_CQTERRI_RESP_ERR_FIELDS_VALID_Pos 15UL +#define SDHC_CORE_CQTERRI_RESP_ERR_FIELDS_VALID_Msk 0x8000UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_CMD_INDX_Pos 16UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_CMD_INDX_Msk 0x3F0000UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_TASKID_Pos 24UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_TASKID_Msk 0x1F000000UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_FIELDS_VALID_Pos 31UL +#define SDHC_CORE_CQTERRI_TRANS_ERR_FIELDS_VALID_Msk 0x80000000UL +/* SDHC_CORE.CQCRI */ +#define SDHC_CORE_CQCRI_CMD_RESP_INDX_Pos 0UL +#define SDHC_CORE_CQCRI_CMD_RESP_INDX_Msk 0x3FUL +/* SDHC_CORE.CQCRA */ +#define SDHC_CORE_CQCRA_CMD_RESP_ARG_Pos 0UL +#define SDHC_CORE_CQCRA_CMD_RESP_ARG_Msk 0xFFFFFFFFUL +/* SDHC_CORE.MSHC_VER_ID_R */ +#define SDHC_CORE_MSHC_VER_ID_R_MSHC_VER_ID_Pos 0UL +#define SDHC_CORE_MSHC_VER_ID_R_MSHC_VER_ID_Msk 0xFFFFFFFFUL +/* SDHC_CORE.MSHC_VER_TYPE_R */ +#define SDHC_CORE_MSHC_VER_TYPE_R_MSHC_VER_TYPE_Pos 0UL +#define SDHC_CORE_MSHC_VER_TYPE_R_MSHC_VER_TYPE_Msk 0xFFFFFFFFUL +/* SDHC_CORE.MSHC_CTRL_R */ +#define SDHC_CORE_MSHC_CTRL_R_CMD_CONFLICT_CHECK_Pos 0UL +#define SDHC_CORE_MSHC_CTRL_R_CMD_CONFLICT_CHECK_Msk 0x1UL +#define SDHC_CORE_MSHC_CTRL_R_SW_CG_DIS_Pos 4UL +#define SDHC_CORE_MSHC_CTRL_R_SW_CG_DIS_Msk 0x10UL +/* SDHC_CORE.MBIU_CTRL_R */ +#define SDHC_CORE_MBIU_CTRL_R_UNDEFL_INCR_EN_Pos 0UL +#define SDHC_CORE_MBIU_CTRL_R_UNDEFL_INCR_EN_Msk 0x1UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR4_EN_Pos 1UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR4_EN_Msk 0x2UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR8_EN_Pos 2UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR8_EN_Msk 0x4UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR16_EN_Pos 3UL +#define SDHC_CORE_MBIU_CTRL_R_BURST_INCR16_EN_Msk 0x8UL +/* SDHC_CORE.EMMC_CTRL_R */ +#define SDHC_CORE_EMMC_CTRL_R_CARD_IS_EMMC_Pos 0UL +#define SDHC_CORE_EMMC_CTRL_R_CARD_IS_EMMC_Msk 0x1UL +#define SDHC_CORE_EMMC_CTRL_R_DISABLE_DATA_CRC_CHK_Pos 1UL +#define SDHC_CORE_EMMC_CTRL_R_DISABLE_DATA_CRC_CHK_Msk 0x2UL +#define SDHC_CORE_EMMC_CTRL_R_EMMC_RST_N_Pos 2UL +#define SDHC_CORE_EMMC_CTRL_R_EMMC_RST_N_Msk 0x4UL +#define SDHC_CORE_EMMC_CTRL_R_EMMC_RST_N_OE_Pos 3UL +#define SDHC_CORE_EMMC_CTRL_R_EMMC_RST_N_OE_Msk 0x8UL +#define SDHC_CORE_EMMC_CTRL_R_CQE_ALGO_SEL_Pos 9UL +#define SDHC_CORE_EMMC_CTRL_R_CQE_ALGO_SEL_Msk 0x200UL +#define SDHC_CORE_EMMC_CTRL_R_CQE_PREFETCH_DISABLE_Pos 10UL +#define SDHC_CORE_EMMC_CTRL_R_CQE_PREFETCH_DISABLE_Msk 0x400UL +/* SDHC_CORE.BOOT_CTRL_R */ +#define SDHC_CORE_BOOT_CTRL_R_MAN_BOOT_EN_Pos 0UL +#define SDHC_CORE_BOOT_CTRL_R_MAN_BOOT_EN_Msk 0x1UL +#define SDHC_CORE_BOOT_CTRL_R_VALIDATE_BOOT_Pos 7UL +#define SDHC_CORE_BOOT_CTRL_R_VALIDATE_BOOT_Msk 0x80UL +#define SDHC_CORE_BOOT_CTRL_R_BOOT_ACK_ENABLE_Pos 8UL +#define SDHC_CORE_BOOT_CTRL_R_BOOT_ACK_ENABLE_Msk 0x100UL +#define SDHC_CORE_BOOT_CTRL_R_BOOT_TOUT_CNT_Pos 12UL +#define SDHC_CORE_BOOT_CTRL_R_BOOT_TOUT_CNT_Msk 0xF000UL +/* SDHC_CORE.GP_IN_R */ +#define SDHC_CORE_GP_IN_R_GP_IN_Pos 0UL +#define SDHC_CORE_GP_IN_R_GP_IN_Msk 0x1UL +/* SDHC_CORE.GP_OUT_R */ +#define SDHC_CORE_GP_OUT_R_CARD_DETECT_EN_Pos 0UL +#define SDHC_CORE_GP_OUT_R_CARD_DETECT_EN_Msk 0x1UL +#define SDHC_CORE_GP_OUT_R_CARD_MECH_WRITE_PROT_EN_Pos 1UL +#define SDHC_CORE_GP_OUT_R_CARD_MECH_WRITE_PROT_EN_Msk 0x2UL +#define SDHC_CORE_GP_OUT_R_LED_CTRL_OE_Pos 2UL +#define SDHC_CORE_GP_OUT_R_LED_CTRL_OE_Msk 0x4UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_OE_Pos 3UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_OE_Msk 0x8UL +#define SDHC_CORE_GP_OUT_R_CARD_IF_PWR_EN_OE_Pos 4UL +#define SDHC_CORE_GP_OUT_R_CARD_IF_PWR_EN_OE_Msk 0x10UL +#define SDHC_CORE_GP_OUT_R_IO_VOLT_SEL_OE_Pos 5UL +#define SDHC_CORE_GP_OUT_R_IO_VOLT_SEL_OE_Msk 0x20UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_OUT_DLY_Pos 6UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_OUT_DLY_Msk 0xC0UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_IN_DLY_Pos 8UL +#define SDHC_CORE_GP_OUT_R_CARD_CLOCK_IN_DLY_Msk 0x300UL + + +#endif /* _CYIP_SDHC_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sflash.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sflash.h new file mode 100644 index 00000000000..f44269e524c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_sflash.h @@ -0,0 +1,510 @@ +/***************************************************************************//** +* \file cyip_sflash.h +* +* \brief +* SFLASH IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SFLASH_H_ +#define _CYIP_SFLASH_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_SECTION_SIZE 0x00008000UL + +/** + * \brief FLASH Supervisory Region (SFLASH) + */ +typedef struct { + __IM uint8_t RESERVED; + __IOM uint8_t SI_REVISION_ID; /*!< 0x00000001 Indicates Silicon Revision ID of the device */ + __IOM uint16_t SILICON_ID; /*!< 0x00000002 Indicates Silicon ID of the device */ + __IM uint32_t RESERVED1[2]; + __IOM uint16_t FAMILY_ID; /*!< 0x0000000C Indicates Family ID of the device */ + __IOM uint8_t FB_HARDFAULT; /*!< 0x0000000E Flash boot Hard fault */ + __IM uint8_t RESERVED2; + __IOM uint32_t FLASHC_GEOMETRY; /*!< 0x00000010 Contains Flash Memory Geomerty structure, Format and data shall + be equal to FLASHC_GEOMETRY MMIO register */ + __IOM uint32_t CPUSS_WOUNDING; /*!< 0x00000014 CPUSS Wounding */ + __IM uint32_t RESERVED3[378]; + __IOM uint8_t DIE_LOT[3]; /*!< 0x00000600 Lot Number (3 bytes) */ + __IOM uint8_t DIE_WAFER; /*!< 0x00000603 Wafer Number */ + __IOM uint8_t DIE_X; /*!< 0x00000604 X Position on Wafer, CRI Pass/Fail Bin */ + __IOM uint8_t DIE_Y; /*!< 0x00000605 Y Position on Wafer, CHI Pass/Fail Bin */ + __IOM uint8_t DIE_SORT; /*!< 0x00000606 Sort1/2/3 Pass/Fail Bin */ + __IOM uint8_t DIE_MINOR; /*!< 0x00000607 Minor Revision Number */ + __IOM uint8_t DIE_DAY; /*!< 0x00000608 Day number */ + __IOM uint8_t DIE_MONTH; /*!< 0x00000609 Month number */ + __IOM uint8_t DIE_YEAR; /*!< 0x0000060A Year number */ + __IM uint8_t RESERVED4[61]; + __IOM uint16_t SAR_TEMP_MULTIPLIER; /*!< 0x00000648 SAR Temperature Sensor Multiplication Factor */ + __IOM uint16_t SAR_TEMP_OFFSET; /*!< 0x0000064A SAR Temperature Sensor Offset */ + __IM uint32_t RESERVED5[8]; + __IOM uint32_t CSP_PANEL_ID; /*!< 0x0000066C CSP Panel Id to record panel ID of CSP die */ + __IM uint32_t RESERVED6[52]; + __IOM uint8_t LDO_0P9V_TRIM; /*!< 0x00000740 LDO_0P9V_TRIM */ + __IOM uint8_t LDO_1P1V_TRIM; /*!< 0x00000741 LDO_1P1V_TRIM */ + __IM uint16_t RESERVED7[95]; + __IOM uint32_t BLE_DEVICE_ADDRESS[128]; /*!< 0x00000800 BLE_DEVICE_ADDRESS */ + __IOM uint32_t USER_FREE_ROW1[128]; /*!< 0x00000A00 USER_FREE_ROW1 */ + __IOM uint32_t USER_FREE_ROW2[128]; /*!< 0x00000C00 USER_FREE_ROW2 */ + __IOM uint32_t USER_FREE_ROW3[128]; /*!< 0x00000E00 USER_FREE_ROW3 */ + __IM uint32_t RESERVED8[302]; + __IOM uint8_t DEVICE_UID[16]; /*!< 0x000014B8 Unique Identifier Number for each device */ + __IOM uint8_t MASTER_KEY[16]; /*!< 0x000014C8 Master key to change other keys */ + __IOM uint32_t STANDARD_SMPU_STRUCT_SLAVE_ADDR[16]; /*!< 0x000014D8 Standard SMPU STRUCT Slave Address value */ + __IOM uint32_t STANDARD_SMPU_STRUCT_SLAVE_ATTR[16]; /*!< 0x00001518 Standard SMPU STRUCT Slave Attribute value */ + __IOM uint32_t STANDARD_SMPU_STRUCT_MASTER_ATTR[16]; /*!< 0x00001558 Standard SMPU STRUCT Master Attribute value */ + __IOM uint32_t STANDARD_MPU_STRUCT[16]; /*!< 0x00001598 Standard MPU STRUCT */ + __IOM uint32_t STANDARD_PPU_STRUCT[16]; /*!< 0x000015D8 Standard PPU STRUCT */ + __IM uint32_t RESERVED9[122]; + __IOM uint16_t PILO_FREQ_STEP; /*!< 0x00001800 Resolution step for PILO at class in BCD format */ + __IM uint16_t RESERVED10; + __IOM uint32_t CSDV2_CSD0_ADC_VREF0; /*!< 0x00001804 CSD 1p2 & 1p6 voltage levels for accuracy */ + __IOM uint32_t CSDV2_CSD0_ADC_VREF1; /*!< 0x00001808 CSD 2p1 & 0p8 voltage levels for accuracy */ + __IOM uint32_t CSDV2_CSD0_ADC_VREF2; /*!< 0x0000180C CSD calibration spare voltage level for accuracy */ + __IOM uint32_t PWR_TRIM_WAKE_CTL; /*!< 0x00001810 Wakeup delay */ + __IM uint16_t RESERVED11; + __IOM uint16_t RADIO_LDO_TRIMS; /*!< 0x00001816 Radio LDO Trims */ + __IOM uint32_t CPUSS_TRIM_ROM_CTL_ULP; /*!< 0x00001818 CPUSS TRIM ROM CTL ULP value */ + __IOM uint32_t CPUSS_TRIM_RAM_CTL_ULP; /*!< 0x0000181C CPUSS TRIM RAM CTL ULP value */ + __IOM uint32_t CPUSS_TRIM_ROM_CTL_LP; /*!< 0x00001820 CPUSS TRIM ROM CTL LP value */ + __IOM uint32_t CPUSS_TRIM_RAM_CTL_LP; /*!< 0x00001824 CPUSS TRIM RAM CTL LP value */ + __IM uint32_t RESERVED12[7]; + __IOM uint32_t CPUSS_TRIM_ROM_CTL_HALF_ULP; /*!< 0x00001844 CPUSS TRIM ROM CTL HALF ULP value */ + __IOM uint32_t CPUSS_TRIM_RAM_CTL_HALF_ULP; /*!< 0x00001848 CPUSS TRIM RAM CTL HALF ULP value */ + __IOM uint32_t CPUSS_TRIM_ROM_CTL_HALF_LP; /*!< 0x0000184C CPUSS TRIM ROM CTL HALF LP value */ + __IOM uint32_t CPUSS_TRIM_RAM_CTL_HALF_LP; /*!< 0x00001850 CPUSS TRIM RAM CTL HALF LP value */ + __IM uint32_t RESERVED13[491]; + __IOM uint32_t FLASH_BOOT_OBJECT_SIZE; /*!< 0x00002000 Flash Boot - Object Size */ + __IOM uint32_t FLASH_BOOT_APP_ID; /*!< 0x00002004 Flash Boot - Application ID/Version */ + __IOM uint32_t FLASH_BOOT_ATTRIBUTE; /*!< 0x00002008 N/A */ + __IOM uint32_t FLASH_BOOT_N_CORES; /*!< 0x0000200C Flash Boot - Number of Cores(N) */ + __IOM uint32_t FLASH_BOOT_VT_OFFSET; /*!< 0x00002010 Flash Boot - Core Vector Table offset */ + __IOM uint32_t FLASH_BOOT_CORE_CPUID; /*!< 0x00002014 Flash Boot - Core CPU ID/Core Index */ + __IM uint32_t RESERVED14[48]; + __IOM uint8_t FLASH_BOOT_CODE[14632]; /*!< 0x000020D8 Flash Boot - Code and Data */ + __IOM uint8_t PUBLIC_KEY[3072]; /*!< 0x00005A00 Public key for signature verification (max RSA key size 4096) */ + __IOM uint32_t BOOT_PROT_SETTINGS[384]; /*!< 0x00006600 Boot protection settings (not present in PSOC6ABLE2) */ + __IM uint32_t RESERVED15[768]; + __IOM uint32_t TOC1_OBJECT_SIZE; /*!< 0x00007800 Object size in bytes for CRC calculation starting from offset + 0x00 */ + __IOM uint32_t TOC1_MAGIC_NUMBER; /*!< 0x00007804 Magic number(0x01211219) */ + __IOM uint32_t TOC1_FHASH_OBJECTS; /*!< 0x00007808 Number of objects starting from offset 0xC to be verified for + FACTORY_HASH */ + __IOM uint32_t TOC1_SFLASH_GENERAL_TRIM_ADDR; /*!< 0x0000780C Address of trims stored in SFLASH */ + __IOM uint32_t TOC1_UNIQUE_ID_ADDR; /*!< 0x00007810 Address of Unique ID stored in SFLASH */ + __IOM uint32_t TOC1_FB_OBJECT_ADDR; /*!< 0x00007814 Addresss of FLASH Boot(FB) object that include FLASH patch also */ + __IOM uint32_t TOC1_SYSCALL_TABLE_ADDR; /*!< 0x00007818 Address of SYSCALL_TABLE entry in SFLASH */ + __IOM uint32_t TOC1_BOOT_PROTECTION_ADDR; /*!< 0x0000781C Address of boot protection object */ + __IM uint32_t RESERVED16[119]; + __IOM uint32_t TOC1_CRC_ADDR; /*!< 0x000079FC Upper 2 bytes contain CRC16-CCITT and lower 2 bytes are 0 */ + __IOM uint32_t RTOC1_OBJECT_SIZE; /*!< 0x00007A00 Redundant Object size in bytes for CRC calculation starting + from offset 0x00 */ + __IOM uint32_t RTOC1_MAGIC_NUMBER; /*!< 0x00007A04 Redundant Magic number(0x01211219) */ + __IOM uint32_t RTOC1_FHASH_OBJECTS; /*!< 0x00007A08 Redundant Number of objects starting from offset 0xC to be + verified for FACTORY_HASH */ + __IOM uint32_t RTOC1_SFLASH_GENERAL_TRIM_ADDR; /*!< 0x00007A0C Redundant Address of trims stored in SFLASH */ + __IOM uint32_t RTOC1_UNIQUE_ID_ADDR; /*!< 0x00007A10 Redundant Address of Unique ID stored in SFLASH */ + __IOM uint32_t RTOC1_FB_OBJECT_ADDR; /*!< 0x00007A14 Redundant Addresss of FLASH Boot(FB) object that include FLASH + patch also */ + __IOM uint32_t RTOC1_SYSCALL_TABLE_ADDR; /*!< 0x00007A18 Redundant Address of SYSCALL_TABLE entry in SFLASH */ + __IM uint32_t RESERVED17[120]; + __IOM uint32_t RTOC1_CRC_ADDR; /*!< 0x00007BFC Redundant CRC,Upper 2 bytes contain CRC16-CCITT and lower 2 + bytes are 0 */ + __IOM uint32_t TOC2_OBJECT_SIZE; /*!< 0x00007C00 Object size in bytes for CRC calculation starting from offset + 0x00 */ + __IOM uint32_t TOC2_MAGIC_NUMBER; /*!< 0x00007C04 Magic number(0x01211220) */ + __IOM uint32_t TOC2_KEY_BLOCK_ADDR; /*!< 0x00007C08 Address of Key Storage FLASH blocks */ + __IOM uint32_t TOC2_SMIF_CFG_STRUCT_ADDR; /*!< 0x00007C0C Null terminated table of pointers representing the SMIF + configuration structure */ + __IOM uint32_t TOC2_FIRST_USER_APP_ADDR; /*!< 0x00007C10 Address of First User Application Object */ + __IOM uint32_t TOC2_FIRST_USER_APP_FORMAT; /*!< 0x00007C14 Format of First User Application Object. 0 - Basic, 1 - Cypress + standard & 2 - Simplified */ + __IOM uint32_t TOC2_SECOND_USER_APP_ADDR; /*!< 0x00007C18 Address of Second User Application Object */ + __IOM uint32_t TOC2_SECOND_USER_APP_FORMAT; /*!< 0x00007C1C Format of Second User Application Object. 0 - Basic, 1 - + Cypress standard & 2 - Simplified */ + __IOM uint32_t TOC2_SHASH_OBJECTS; /*!< 0x00007C20 Number of additional objects(in addition to objects covered by + FACORY_CAMC) starting from offset 0x24 to be verified for + SECURE_HASH(SHASH) */ + __IOM uint32_t TOC2_SIGNATURE_VERIF_KEY; /*!< 0x00007C24 Address of signature verification key (0 if none).The object is + signature specific key. It is the public key in case of RSA */ + __IM uint32_t RESERVED18[115]; + __IOM uint32_t TOC2_FB_HARDFAULT; /*!< 0x00007DF4 TOC2 Flash Boot Hard fault */ + __IOM uint32_t TOC2_FLAGS; /*!< 0x00007DF8 TOC2_FLAGS */ + __IOM uint32_t TOC2_CRC_ADDR; /*!< 0x00007DFC CRC,Upper 2 bytes contain CRC16-CCITT and lower 2 bytes are 0 */ + __IOM uint32_t RTOC2_OBJECT_SIZE; /*!< 0x00007E00 Redundant Object size in bytes for CRC calculation starting + from offset 0x00 */ + __IOM uint32_t RTOC2_MAGIC_NUMBER; /*!< 0x00007E04 Redundant Magic number(0x01211220) */ + __IOM uint32_t RTOC2_KEY_BLOCK_ADDR; /*!< 0x00007E08 Redundant Address of Key Storage FLASH blocks */ + __IOM uint32_t RTOC2_SMIF_CFG_STRUCT_ADDR; /*!< 0x00007E0C Redundant Null terminated table of pointers representing the + SMIF configuration structure */ + __IOM uint32_t RTOC2_FIRST_USER_APP_ADDR; /*!< 0x00007E10 Redundant Address of First User Application Object */ + __IOM uint32_t RTOC2_FIRST_USER_APP_FORMAT; /*!< 0x00007E14 Redundant Format of First User Application Object. 0 - Basic, 1 + - Cypress standard & 2 - Simplified */ + __IOM uint32_t RTOC2_SECOND_USER_APP_ADDR; /*!< 0x00007E18 Redundant Address of Second User Application Object */ + __IOM uint32_t RTOC2_SECOND_USER_APP_FORMAT; /*!< 0x00007E1C Redundant Format of Second User Application Object. 0 - Basic, + 1 - Cypress standard & 2 - Simplified */ + __IOM uint32_t RTOC2_SHASH_OBJECTS; /*!< 0x00007E20 Redundant Number of additional objects(in addition to objects + covered by FACORY_CAMC) starting from offset 0x24 to be verified + for SECURE_HASH(SHASH) */ + __IOM uint32_t RTOC2_SIGNATURE_VERIF_KEY; /*!< 0x00007E24 Redundant Address of signature verification key (0 if none).The + object is signature specific key. It is the public key in case + of RSA */ + __IM uint32_t RESERVED19[116]; + __IOM uint32_t RTOC2_FLAGS; /*!< 0x00007FF8 RTOC2_FLAGS */ + __IOM uint32_t RTOC2_CRC_ADDR; /*!< 0x00007FFC Redundant CRC,Upper 2 bytes contain CRC16-CCITT and lower 2 + bytes are 0 */ +} SFLASH_V1_Type; /*!< Size = 32768 (0x8000) */ + + +/* SFLASH.SI_REVISION_ID */ +#define SFLASH_SI_REVISION_ID_SI_REVISION_ID_Pos 0UL +#define SFLASH_SI_REVISION_ID_SI_REVISION_ID_Msk 0xFFUL +/* SFLASH.SILICON_ID */ +#define SFLASH_SILICON_ID_ID_Pos 0UL +#define SFLASH_SILICON_ID_ID_Msk 0xFFFFUL +/* SFLASH.FAMILY_ID */ +#define SFLASH_FAMILY_ID_FAMILY_ID_Pos 0UL +#define SFLASH_FAMILY_ID_FAMILY_ID_Msk 0xFFFFUL +/* SFLASH.FB_HARDFAULT */ +#define SFLASH_FB_HARDFAULT_FB_HARDFAULT_Pos 0UL +#define SFLASH_FB_HARDFAULT_FB_HARDFAULT_Msk 0xFFUL +/* SFLASH.FLASHC_GEOMETRY */ +#define SFLASH_FLASHC_GEOMETRY_FLASHC_GEOMETRY_Pos 0UL +#define SFLASH_FLASHC_GEOMETRY_FLASHC_GEOMETRY_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_WOUNDING */ +#define SFLASH_CPUSS_WOUNDING_CPUSS_WOUNDING_Pos 0UL +#define SFLASH_CPUSS_WOUNDING_CPUSS_WOUNDING_Msk 0xFFFFFFFFUL +/* SFLASH.DIE_LOT */ +#define SFLASH_DIE_LOT_LOT_Pos 0UL +#define SFLASH_DIE_LOT_LOT_Msk 0xFFUL +/* SFLASH.DIE_WAFER */ +#define SFLASH_DIE_WAFER_WAFER_Pos 0UL +#define SFLASH_DIE_WAFER_WAFER_Msk 0xFFUL +/* SFLASH.DIE_X */ +#define SFLASH_DIE_X_X_Pos 0UL +#define SFLASH_DIE_X_X_Msk 0xFFUL +/* SFLASH.DIE_Y */ +#define SFLASH_DIE_Y_Y_Pos 0UL +#define SFLASH_DIE_Y_Y_Msk 0xFFUL +/* SFLASH.DIE_SORT */ +#define SFLASH_DIE_SORT_S1_PASS_Pos 0UL +#define SFLASH_DIE_SORT_S1_PASS_Msk 0x1UL +#define SFLASH_DIE_SORT_S2_PASS_Pos 1UL +#define SFLASH_DIE_SORT_S2_PASS_Msk 0x2UL +#define SFLASH_DIE_SORT_S3_PASS_Pos 2UL +#define SFLASH_DIE_SORT_S3_PASS_Msk 0x4UL +#define SFLASH_DIE_SORT_CRI_PASS_Pos 3UL +#define SFLASH_DIE_SORT_CRI_PASS_Msk 0x8UL +#define SFLASH_DIE_SORT_CHI_PASS_Pos 4UL +#define SFLASH_DIE_SORT_CHI_PASS_Msk 0x10UL +#define SFLASH_DIE_SORT_ENG_PASS_Pos 5UL +#define SFLASH_DIE_SORT_ENG_PASS_Msk 0x20UL +/* SFLASH.DIE_MINOR */ +#define SFLASH_DIE_MINOR_MINOR_Pos 0UL +#define SFLASH_DIE_MINOR_MINOR_Msk 0xFFUL +/* SFLASH.DIE_DAY */ +#define SFLASH_DIE_DAY_MINOR_Pos 0UL +#define SFLASH_DIE_DAY_MINOR_Msk 0xFFUL +/* SFLASH.DIE_MONTH */ +#define SFLASH_DIE_MONTH_MINOR_Pos 0UL +#define SFLASH_DIE_MONTH_MINOR_Msk 0xFFUL +/* SFLASH.DIE_YEAR */ +#define SFLASH_DIE_YEAR_MINOR_Pos 0UL +#define SFLASH_DIE_YEAR_MINOR_Msk 0xFFUL +/* SFLASH.SAR_TEMP_MULTIPLIER */ +#define SFLASH_SAR_TEMP_MULTIPLIER_TEMP_MULTIPLIER_Pos 0UL +#define SFLASH_SAR_TEMP_MULTIPLIER_TEMP_MULTIPLIER_Msk 0xFFFFUL +/* SFLASH.SAR_TEMP_OFFSET */ +#define SFLASH_SAR_TEMP_OFFSET_TEMP_OFFSET_Pos 0UL +#define SFLASH_SAR_TEMP_OFFSET_TEMP_OFFSET_Msk 0xFFFFUL +/* SFLASH.CSP_PANEL_ID */ +#define SFLASH_CSP_PANEL_ID_DATA32_Pos 0UL +#define SFLASH_CSP_PANEL_ID_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.LDO_0P9V_TRIM */ +#define SFLASH_LDO_0P9V_TRIM_DATA8_Pos 0UL +#define SFLASH_LDO_0P9V_TRIM_DATA8_Msk 0xFFUL +/* SFLASH.LDO_1P1V_TRIM */ +#define SFLASH_LDO_1P1V_TRIM_DATA8_Pos 0UL +#define SFLASH_LDO_1P1V_TRIM_DATA8_Msk 0xFFUL +/* SFLASH.BLE_DEVICE_ADDRESS */ +#define SFLASH_BLE_DEVICE_ADDRESS_ADDR_Pos 0UL +#define SFLASH_BLE_DEVICE_ADDRESS_ADDR_Msk 0xFFFFFFFFUL +/* SFLASH.USER_FREE_ROW1 */ +#define SFLASH_USER_FREE_ROW1_DATA32_Pos 0UL +#define SFLASH_USER_FREE_ROW1_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.USER_FREE_ROW2 */ +#define SFLASH_USER_FREE_ROW2_DATA32_Pos 0UL +#define SFLASH_USER_FREE_ROW2_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.USER_FREE_ROW3 */ +#define SFLASH_USER_FREE_ROW3_DATA32_Pos 0UL +#define SFLASH_USER_FREE_ROW3_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.DEVICE_UID */ +#define SFLASH_DEVICE_UID_DATA8_Pos 0UL +#define SFLASH_DEVICE_UID_DATA8_Msk 0xFFUL +/* SFLASH.MASTER_KEY */ +#define SFLASH_MASTER_KEY_DATA8_Pos 0UL +#define SFLASH_MASTER_KEY_DATA8_Msk 0xFFUL +/* SFLASH.STANDARD_SMPU_STRUCT_SLAVE_ADDR */ +#define SFLASH_STANDARD_SMPU_STRUCT_SLAVE_ADDR_DATA32_Pos 0UL +#define SFLASH_STANDARD_SMPU_STRUCT_SLAVE_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.STANDARD_SMPU_STRUCT_SLAVE_ATTR */ +#define SFLASH_STANDARD_SMPU_STRUCT_SLAVE_ATTR_DATA32_Pos 0UL +#define SFLASH_STANDARD_SMPU_STRUCT_SLAVE_ATTR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.STANDARD_SMPU_STRUCT_MASTER_ATTR */ +#define SFLASH_STANDARD_SMPU_STRUCT_MASTER_ATTR_DATA32_Pos 0UL +#define SFLASH_STANDARD_SMPU_STRUCT_MASTER_ATTR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.STANDARD_MPU_STRUCT */ +#define SFLASH_STANDARD_MPU_STRUCT_DATA32_Pos 0UL +#define SFLASH_STANDARD_MPU_STRUCT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.STANDARD_PPU_STRUCT */ +#define SFLASH_STANDARD_PPU_STRUCT_DATA32_Pos 0UL +#define SFLASH_STANDARD_PPU_STRUCT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.PILO_FREQ_STEP */ +#define SFLASH_PILO_FREQ_STEP_STEP_Pos 0UL +#define SFLASH_PILO_FREQ_STEP_STEP_Msk 0xFFFFUL +/* SFLASH.CSDV2_CSD0_ADC_VREF0 */ +#define SFLASH_CSDV2_CSD0_ADC_VREF0_VREF_HI_LEVELS_1P2_Pos 0UL +#define SFLASH_CSDV2_CSD0_ADC_VREF0_VREF_HI_LEVELS_1P2_Msk 0xFFFFUL +#define SFLASH_CSDV2_CSD0_ADC_VREF0_VREF_HI_LEVELS_1P6_Pos 16UL +#define SFLASH_CSDV2_CSD0_ADC_VREF0_VREF_HI_LEVELS_1P6_Msk 0xFFFF0000UL +/* SFLASH.CSDV2_CSD0_ADC_VREF1 */ +#define SFLASH_CSDV2_CSD0_ADC_VREF1_VREF_HI_LEVELS_2P1_Pos 0UL +#define SFLASH_CSDV2_CSD0_ADC_VREF1_VREF_HI_LEVELS_2P1_Msk 0xFFFFUL +#define SFLASH_CSDV2_CSD0_ADC_VREF1_VREF_HI_LEVELS_0P8_Pos 16UL +#define SFLASH_CSDV2_CSD0_ADC_VREF1_VREF_HI_LEVELS_0P8_Msk 0xFFFF0000UL +/* SFLASH.CSDV2_CSD0_ADC_VREF2 */ +#define SFLASH_CSDV2_CSD0_ADC_VREF2_VREF_HI_LEVELS_2P6_Pos 0UL +#define SFLASH_CSDV2_CSD0_ADC_VREF2_VREF_HI_LEVELS_2P6_Msk 0xFFFFUL +/* SFLASH.PWR_TRIM_WAKE_CTL */ +#define SFLASH_PWR_TRIM_WAKE_CTL_WAKE_DELAY_Pos 0UL +#define SFLASH_PWR_TRIM_WAKE_CTL_WAKE_DELAY_Msk 0xFFUL +/* SFLASH.RADIO_LDO_TRIMS */ +#define SFLASH_RADIO_LDO_TRIMS_LDO_ACT_Pos 0UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_ACT_Msk 0xFUL +#define SFLASH_RADIO_LDO_TRIMS_LDO_LNA_Pos 4UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_LNA_Msk 0x30UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_IF_Pos 6UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_IF_Msk 0xC0UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_DIG_Pos 8UL +#define SFLASH_RADIO_LDO_TRIMS_LDO_DIG_Msk 0x300UL +/* SFLASH.CPUSS_TRIM_ROM_CTL_ULP */ +#define SFLASH_CPUSS_TRIM_ROM_CTL_ULP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_ROM_CTL_ULP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_RAM_CTL_ULP */ +#define SFLASH_CPUSS_TRIM_RAM_CTL_ULP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_RAM_CTL_ULP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_ROM_CTL_LP */ +#define SFLASH_CPUSS_TRIM_ROM_CTL_LP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_ROM_CTL_LP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_RAM_CTL_LP */ +#define SFLASH_CPUSS_TRIM_RAM_CTL_LP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_RAM_CTL_LP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_ROM_CTL_HALF_ULP */ +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_ULP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_ULP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_RAM_CTL_HALF_ULP */ +#define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_ULP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_ULP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_ROM_CTL_HALF_LP */ +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_LP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_LP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.CPUSS_TRIM_RAM_CTL_HALF_LP */ +#define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_LP_DATA32_Pos 0UL +#define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_LP_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_OBJECT_SIZE */ +#define SFLASH_FLASH_BOOT_OBJECT_SIZE_DATA32_Pos 0UL +#define SFLASH_FLASH_BOOT_OBJECT_SIZE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_APP_ID */ +#define SFLASH_FLASH_BOOT_APP_ID_APP_ID_Pos 0UL +#define SFLASH_FLASH_BOOT_APP_ID_APP_ID_Msk 0xFFFFUL +#define SFLASH_FLASH_BOOT_APP_ID_MINOR_VERSION_Pos 16UL +#define SFLASH_FLASH_BOOT_APP_ID_MINOR_VERSION_Msk 0xFF0000UL +#define SFLASH_FLASH_BOOT_APP_ID_MAJOR_VERSION_Pos 24UL +#define SFLASH_FLASH_BOOT_APP_ID_MAJOR_VERSION_Msk 0xF000000UL +/* SFLASH.FLASH_BOOT_ATTRIBUTE */ +#define SFLASH_FLASH_BOOT_ATTRIBUTE_DATA32_Pos 0UL +#define SFLASH_FLASH_BOOT_ATTRIBUTE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_N_CORES */ +#define SFLASH_FLASH_BOOT_N_CORES_DATA32_Pos 0UL +#define SFLASH_FLASH_BOOT_N_CORES_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_VT_OFFSET */ +#define SFLASH_FLASH_BOOT_VT_OFFSET_DATA32_Pos 0UL +#define SFLASH_FLASH_BOOT_VT_OFFSET_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_CORE_CPUID */ +#define SFLASH_FLASH_BOOT_CORE_CPUID_DATA32_Pos 0UL +#define SFLASH_FLASH_BOOT_CORE_CPUID_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.FLASH_BOOT_CODE */ +#define SFLASH_FLASH_BOOT_CODE_DATA_Pos 0UL +#define SFLASH_FLASH_BOOT_CODE_DATA_Msk 0xFFUL +/* SFLASH.PUBLIC_KEY */ +#define SFLASH_PUBLIC_KEY_DATA_Pos 0UL +#define SFLASH_PUBLIC_KEY_DATA_Msk 0xFFUL +/* SFLASH.BOOT_PROT_SETTINGS */ +#define SFLASH_BOOT_PROT_SETTINGS_DATA32_Pos 0UL +#define SFLASH_BOOT_PROT_SETTINGS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_OBJECT_SIZE */ +#define SFLASH_TOC1_OBJECT_SIZE_DATA32_Pos 0UL +#define SFLASH_TOC1_OBJECT_SIZE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_MAGIC_NUMBER */ +#define SFLASH_TOC1_MAGIC_NUMBER_DATA32_Pos 0UL +#define SFLASH_TOC1_MAGIC_NUMBER_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_FHASH_OBJECTS */ +#define SFLASH_TOC1_FHASH_OBJECTS_DATA32_Pos 0UL +#define SFLASH_TOC1_FHASH_OBJECTS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_SFLASH_GENERAL_TRIM_ADDR */ +#define SFLASH_TOC1_SFLASH_GENERAL_TRIM_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_SFLASH_GENERAL_TRIM_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_UNIQUE_ID_ADDR */ +#define SFLASH_TOC1_UNIQUE_ID_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_UNIQUE_ID_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_FB_OBJECT_ADDR */ +#define SFLASH_TOC1_FB_OBJECT_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_FB_OBJECT_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_SYSCALL_TABLE_ADDR */ +#define SFLASH_TOC1_SYSCALL_TABLE_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_SYSCALL_TABLE_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_BOOT_PROTECTION_ADDR */ +#define SFLASH_TOC1_BOOT_PROTECTION_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_BOOT_PROTECTION_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC1_CRC_ADDR */ +#define SFLASH_TOC1_CRC_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC1_CRC_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_OBJECT_SIZE */ +#define SFLASH_RTOC1_OBJECT_SIZE_DATA32_Pos 0UL +#define SFLASH_RTOC1_OBJECT_SIZE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_MAGIC_NUMBER */ +#define SFLASH_RTOC1_MAGIC_NUMBER_DATA32_Pos 0UL +#define SFLASH_RTOC1_MAGIC_NUMBER_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_FHASH_OBJECTS */ +#define SFLASH_RTOC1_FHASH_OBJECTS_DATA32_Pos 0UL +#define SFLASH_RTOC1_FHASH_OBJECTS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_SFLASH_GENERAL_TRIM_ADDR */ +#define SFLASH_RTOC1_SFLASH_GENERAL_TRIM_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC1_SFLASH_GENERAL_TRIM_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_UNIQUE_ID_ADDR */ +#define SFLASH_RTOC1_UNIQUE_ID_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC1_UNIQUE_ID_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_FB_OBJECT_ADDR */ +#define SFLASH_RTOC1_FB_OBJECT_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC1_FB_OBJECT_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_SYSCALL_TABLE_ADDR */ +#define SFLASH_RTOC1_SYSCALL_TABLE_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC1_SYSCALL_TABLE_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC1_CRC_ADDR */ +#define SFLASH_RTOC1_CRC_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC1_CRC_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_OBJECT_SIZE */ +#define SFLASH_TOC2_OBJECT_SIZE_DATA32_Pos 0UL +#define SFLASH_TOC2_OBJECT_SIZE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_MAGIC_NUMBER */ +#define SFLASH_TOC2_MAGIC_NUMBER_DATA32_Pos 0UL +#define SFLASH_TOC2_MAGIC_NUMBER_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_KEY_BLOCK_ADDR */ +#define SFLASH_TOC2_KEY_BLOCK_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC2_KEY_BLOCK_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_SMIF_CFG_STRUCT_ADDR */ +#define SFLASH_TOC2_SMIF_CFG_STRUCT_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC2_SMIF_CFG_STRUCT_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_FIRST_USER_APP_ADDR */ +#define SFLASH_TOC2_FIRST_USER_APP_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC2_FIRST_USER_APP_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_FIRST_USER_APP_FORMAT */ +#define SFLASH_TOC2_FIRST_USER_APP_FORMAT_DATA32_Pos 0UL +#define SFLASH_TOC2_FIRST_USER_APP_FORMAT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_SECOND_USER_APP_ADDR */ +#define SFLASH_TOC2_SECOND_USER_APP_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC2_SECOND_USER_APP_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_SECOND_USER_APP_FORMAT */ +#define SFLASH_TOC2_SECOND_USER_APP_FORMAT_DATA32_Pos 0UL +#define SFLASH_TOC2_SECOND_USER_APP_FORMAT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_SHASH_OBJECTS */ +#define SFLASH_TOC2_SHASH_OBJECTS_DATA32_Pos 0UL +#define SFLASH_TOC2_SHASH_OBJECTS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_SIGNATURE_VERIF_KEY */ +#define SFLASH_TOC2_SIGNATURE_VERIF_KEY_DATA32_Pos 0UL +#define SFLASH_TOC2_SIGNATURE_VERIF_KEY_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_FB_HARDFAULT */ +#define SFLASH_TOC2_FB_HARDFAULT_DATA32_Pos 0UL +#define SFLASH_TOC2_FB_HARDFAULT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.TOC2_FLAGS */ +#define SFLASH_TOC2_FLAGS_CLOCK_CONFIG_Pos 0UL +#define SFLASH_TOC2_FLAGS_CLOCK_CONFIG_Msk 0x3UL +#define SFLASH_TOC2_FLAGS_LISTEN_WINDOW_Pos 2UL +#define SFLASH_TOC2_FLAGS_LISTEN_WINDOW_Msk 0x1CUL +#define SFLASH_TOC2_FLAGS_SWJ_PINS_CTL_Pos 5UL +#define SFLASH_TOC2_FLAGS_SWJ_PINS_CTL_Msk 0x60UL +#define SFLASH_TOC2_FLAGS_APP_AUTH_DISABLE_Pos 7UL +#define SFLASH_TOC2_FLAGS_APP_AUTH_DISABLE_Msk 0x180UL +#define SFLASH_TOC2_FLAGS_FB_BOOTLOADER_DISABLE_Pos 9UL +#define SFLASH_TOC2_FLAGS_FB_BOOTLOADER_DISABLE_Msk 0x600UL +/* SFLASH.TOC2_CRC_ADDR */ +#define SFLASH_TOC2_CRC_ADDR_DATA32_Pos 0UL +#define SFLASH_TOC2_CRC_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_OBJECT_SIZE */ +#define SFLASH_RTOC2_OBJECT_SIZE_DATA32_Pos 0UL +#define SFLASH_RTOC2_OBJECT_SIZE_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_MAGIC_NUMBER */ +#define SFLASH_RTOC2_MAGIC_NUMBER_DATA32_Pos 0UL +#define SFLASH_RTOC2_MAGIC_NUMBER_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_KEY_BLOCK_ADDR */ +#define SFLASH_RTOC2_KEY_BLOCK_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC2_KEY_BLOCK_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_SMIF_CFG_STRUCT_ADDR */ +#define SFLASH_RTOC2_SMIF_CFG_STRUCT_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC2_SMIF_CFG_STRUCT_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_FIRST_USER_APP_ADDR */ +#define SFLASH_RTOC2_FIRST_USER_APP_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC2_FIRST_USER_APP_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_FIRST_USER_APP_FORMAT */ +#define SFLASH_RTOC2_FIRST_USER_APP_FORMAT_DATA32_Pos 0UL +#define SFLASH_RTOC2_FIRST_USER_APP_FORMAT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_SECOND_USER_APP_ADDR */ +#define SFLASH_RTOC2_SECOND_USER_APP_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC2_SECOND_USER_APP_ADDR_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_SECOND_USER_APP_FORMAT */ +#define SFLASH_RTOC2_SECOND_USER_APP_FORMAT_DATA32_Pos 0UL +#define SFLASH_RTOC2_SECOND_USER_APP_FORMAT_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_SHASH_OBJECTS */ +#define SFLASH_RTOC2_SHASH_OBJECTS_DATA32_Pos 0UL +#define SFLASH_RTOC2_SHASH_OBJECTS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_SIGNATURE_VERIF_KEY */ +#define SFLASH_RTOC2_SIGNATURE_VERIF_KEY_DATA32_Pos 0UL +#define SFLASH_RTOC2_SIGNATURE_VERIF_KEY_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_FLAGS */ +#define SFLASH_RTOC2_FLAGS_DATA32_Pos 0UL +#define SFLASH_RTOC2_FLAGS_DATA32_Msk 0xFFFFFFFFUL +/* SFLASH.RTOC2_CRC_ADDR */ +#define SFLASH_RTOC2_CRC_ADDR_DATA32_Pos 0UL +#define SFLASH_RTOC2_CRC_ADDR_DATA32_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_SFLASH_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio.h new file mode 100644 index 00000000000..7e01fc990ce --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio.h @@ -0,0 +1,118 @@ +/***************************************************************************//** +* \file cyip_smartio.h +* +* \brief +* SMARTIO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SMARTIO_H_ +#define _CYIP_SMARTIO_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_PRT_SECTION_SIZE 0x00000100UL +#define SMARTIO_SECTION_SIZE 0x00010000UL + +/** + * \brief Programmable IO port registers (SMARTIO_PRT) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control register */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t SYNC_CTL; /*!< 0x00000010 Synchronization control register */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t LUT_SEL[8]; /*!< 0x00000020 LUT component input selection */ + __IOM uint32_t LUT_CTL[8]; /*!< 0x00000040 LUT component control register */ + __IM uint32_t RESERVED2[24]; + __IOM uint32_t DU_SEL; /*!< 0x000000C0 Data unit component input selection */ + __IOM uint32_t DU_CTL; /*!< 0x000000C4 Data unit component control register */ + __IM uint32_t RESERVED3[10]; + __IOM uint32_t DATA; /*!< 0x000000F0 Data register */ + __IM uint32_t RESERVED4[3]; +} SMARTIO_PRT_V1_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief Programmable IO configuration (SMARTIO) + */ +typedef struct { + SMARTIO_PRT_V1_Type PRT[128]; /*!< 0x00000000 Programmable IO port registers */ +} SMARTIO_V1_Type; /*!< Size = 32768 (0x8000) */ + + +/* SMARTIO_PRT.CTL */ +#define SMARTIO_PRT_CTL_BYPASS_Pos 0UL +#define SMARTIO_PRT_CTL_BYPASS_Msk 0xFFUL +#define SMARTIO_PRT_CTL_CLOCK_SRC_Pos 8UL +#define SMARTIO_PRT_CTL_CLOCK_SRC_Msk 0x1F00UL +#define SMARTIO_PRT_CTL_HLD_OVR_Pos 24UL +#define SMARTIO_PRT_CTL_HLD_OVR_Msk 0x1000000UL +#define SMARTIO_PRT_CTL_PIPELINE_EN_Pos 25UL +#define SMARTIO_PRT_CTL_PIPELINE_EN_Msk 0x2000000UL +#define SMARTIO_PRT_CTL_ENABLED_Pos 31UL +#define SMARTIO_PRT_CTL_ENABLED_Msk 0x80000000UL +/* SMARTIO_PRT.SYNC_CTL */ +#define SMARTIO_PRT_SYNC_CTL_IO_SYNC_EN_Pos 0UL +#define SMARTIO_PRT_SYNC_CTL_IO_SYNC_EN_Msk 0xFFUL +#define SMARTIO_PRT_SYNC_CTL_CHIP_SYNC_EN_Pos 8UL +#define SMARTIO_PRT_SYNC_CTL_CHIP_SYNC_EN_Msk 0xFF00UL +/* SMARTIO_PRT.LUT_SEL */ +#define SMARTIO_PRT_LUT_SEL_LUT_TR0_SEL_Pos 0UL +#define SMARTIO_PRT_LUT_SEL_LUT_TR0_SEL_Msk 0xFUL +#define SMARTIO_PRT_LUT_SEL_LUT_TR1_SEL_Pos 8UL +#define SMARTIO_PRT_LUT_SEL_LUT_TR1_SEL_Msk 0xF00UL +#define SMARTIO_PRT_LUT_SEL_LUT_TR2_SEL_Pos 16UL +#define SMARTIO_PRT_LUT_SEL_LUT_TR2_SEL_Msk 0xF0000UL +/* SMARTIO_PRT.LUT_CTL */ +#define SMARTIO_PRT_LUT_CTL_LUT_Pos 0UL +#define SMARTIO_PRT_LUT_CTL_LUT_Msk 0xFFUL +#define SMARTIO_PRT_LUT_CTL_LUT_OPC_Pos 8UL +#define SMARTIO_PRT_LUT_CTL_LUT_OPC_Msk 0x300UL +/* SMARTIO_PRT.DU_SEL */ +#define SMARTIO_PRT_DU_SEL_DU_TR0_SEL_Pos 0UL +#define SMARTIO_PRT_DU_SEL_DU_TR0_SEL_Msk 0xFUL +#define SMARTIO_PRT_DU_SEL_DU_TR1_SEL_Pos 8UL +#define SMARTIO_PRT_DU_SEL_DU_TR1_SEL_Msk 0xF00UL +#define SMARTIO_PRT_DU_SEL_DU_TR2_SEL_Pos 16UL +#define SMARTIO_PRT_DU_SEL_DU_TR2_SEL_Msk 0xF0000UL +#define SMARTIO_PRT_DU_SEL_DU_DATA0_SEL_Pos 24UL +#define SMARTIO_PRT_DU_SEL_DU_DATA0_SEL_Msk 0x3000000UL +#define SMARTIO_PRT_DU_SEL_DU_DATA1_SEL_Pos 28UL +#define SMARTIO_PRT_DU_SEL_DU_DATA1_SEL_Msk 0x30000000UL +/* SMARTIO_PRT.DU_CTL */ +#define SMARTIO_PRT_DU_CTL_DU_SIZE_Pos 0UL +#define SMARTIO_PRT_DU_CTL_DU_SIZE_Msk 0x7UL +#define SMARTIO_PRT_DU_CTL_DU_OPC_Pos 8UL +#define SMARTIO_PRT_DU_CTL_DU_OPC_Msk 0xF00UL +/* SMARTIO_PRT.DATA */ +#define SMARTIO_PRT_DATA_DATA_Pos 0UL +#define SMARTIO_PRT_DATA_DATA_Msk 0xFFUL + + +#endif /* _CYIP_SMARTIO_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio_v2.h new file mode 100644 index 00000000000..2d6b9708fe8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smartio_v2.h @@ -0,0 +1,118 @@ +/***************************************************************************//** +* \file cyip_smartio_v2.h +* +* \brief +* SMARTIO IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SMARTIO_V2_H_ +#define _CYIP_SMARTIO_V2_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_PRT_V2_SECTION_SIZE 0x00000100UL +#define SMARTIO_V2_SECTION_SIZE 0x00010000UL + +/** + * \brief Programmable IO port registers (SMARTIO_PRT) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control register */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t SYNC_CTL; /*!< 0x00000010 Synchronization control register */ + __IM uint32_t RESERVED1[3]; + __IOM uint32_t LUT_SEL[8]; /*!< 0x00000020 LUT component input selection */ + __IOM uint32_t LUT_CTL[8]; /*!< 0x00000040 LUT component control register */ + __IM uint32_t RESERVED2[24]; + __IOM uint32_t DU_SEL; /*!< 0x000000C0 Data unit component input selection */ + __IOM uint32_t DU_CTL; /*!< 0x000000C4 Data unit component control register */ + __IM uint32_t RESERVED3[10]; + __IOM uint32_t DATA; /*!< 0x000000F0 Data register */ + __IM uint32_t RESERVED4[3]; +} SMARTIO_PRT_V2_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief Programmable IO configuration (SMARTIO) + */ +typedef struct { + SMARTIO_PRT_V2_Type PRT[128]; /*!< 0x00000000 Programmable IO port registers */ +} SMARTIO_V2_Type; /*!< Size = 32768 (0x8000) */ + + +/* SMARTIO_PRT.CTL */ +#define SMARTIO_PRT_V2_CTL_BYPASS_Pos 0UL +#define SMARTIO_PRT_V2_CTL_BYPASS_Msk 0xFFUL +#define SMARTIO_PRT_V2_CTL_CLOCK_SRC_Pos 8UL +#define SMARTIO_PRT_V2_CTL_CLOCK_SRC_Msk 0x1F00UL +#define SMARTIO_PRT_V2_CTL_HLD_OVR_Pos 24UL +#define SMARTIO_PRT_V2_CTL_HLD_OVR_Msk 0x1000000UL +#define SMARTIO_PRT_V2_CTL_PIPELINE_EN_Pos 25UL +#define SMARTIO_PRT_V2_CTL_PIPELINE_EN_Msk 0x2000000UL +#define SMARTIO_PRT_V2_CTL_ENABLED_Pos 31UL +#define SMARTIO_PRT_V2_CTL_ENABLED_Msk 0x80000000UL +/* SMARTIO_PRT.SYNC_CTL */ +#define SMARTIO_PRT_V2_SYNC_CTL_IO_SYNC_EN_Pos 0UL +#define SMARTIO_PRT_V2_SYNC_CTL_IO_SYNC_EN_Msk 0xFFUL +#define SMARTIO_PRT_V2_SYNC_CTL_CHIP_SYNC_EN_Pos 8UL +#define SMARTIO_PRT_V2_SYNC_CTL_CHIP_SYNC_EN_Msk 0xFF00UL +/* SMARTIO_PRT.LUT_SEL */ +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR0_SEL_Pos 0UL +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR0_SEL_Msk 0xFUL +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR1_SEL_Pos 8UL +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR1_SEL_Msk 0xF00UL +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR2_SEL_Pos 16UL +#define SMARTIO_PRT_V2_LUT_SEL_LUT_TR2_SEL_Msk 0xF0000UL +/* SMARTIO_PRT.LUT_CTL */ +#define SMARTIO_PRT_V2_LUT_CTL_LUT_Pos 0UL +#define SMARTIO_PRT_V2_LUT_CTL_LUT_Msk 0xFFUL +#define SMARTIO_PRT_V2_LUT_CTL_LUT_OPC_Pos 8UL +#define SMARTIO_PRT_V2_LUT_CTL_LUT_OPC_Msk 0x300UL +/* SMARTIO_PRT.DU_SEL */ +#define SMARTIO_PRT_V2_DU_SEL_DU_TR0_SEL_Pos 0UL +#define SMARTIO_PRT_V2_DU_SEL_DU_TR0_SEL_Msk 0xFUL +#define SMARTIO_PRT_V2_DU_SEL_DU_TR1_SEL_Pos 8UL +#define SMARTIO_PRT_V2_DU_SEL_DU_TR1_SEL_Msk 0xF00UL +#define SMARTIO_PRT_V2_DU_SEL_DU_TR2_SEL_Pos 16UL +#define SMARTIO_PRT_V2_DU_SEL_DU_TR2_SEL_Msk 0xF0000UL +#define SMARTIO_PRT_V2_DU_SEL_DU_DATA0_SEL_Pos 24UL +#define SMARTIO_PRT_V2_DU_SEL_DU_DATA0_SEL_Msk 0x3000000UL +#define SMARTIO_PRT_V2_DU_SEL_DU_DATA1_SEL_Pos 28UL +#define SMARTIO_PRT_V2_DU_SEL_DU_DATA1_SEL_Msk 0x30000000UL +/* SMARTIO_PRT.DU_CTL */ +#define SMARTIO_PRT_V2_DU_CTL_DU_SIZE_Pos 0UL +#define SMARTIO_PRT_V2_DU_CTL_DU_SIZE_Msk 0x7UL +#define SMARTIO_PRT_V2_DU_CTL_DU_OPC_Pos 8UL +#define SMARTIO_PRT_V2_DU_CTL_DU_OPC_Msk 0xF00UL +/* SMARTIO_PRT.DATA */ +#define SMARTIO_PRT_V2_DATA_DATA_Pos 0UL +#define SMARTIO_PRT_V2_DATA_DATA_Msk 0xFFUL + + +#endif /* _CYIP_SMARTIO_V2_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smif.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smif.h new file mode 100644 index 00000000000..c29dac5fa29 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_smif.h @@ -0,0 +1,387 @@ +/***************************************************************************//** +* \file cyip_smif.h +* +* \brief +* SMIF IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SMIF_H_ +#define _CYIP_SMIF_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF_DEVICE_SECTION_SIZE 0x00000080UL +#define SMIF_SECTION_SIZE 0x00010000UL + +/** + * \brief Device (only used in XIP mode) (SMIF_DEVICE) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t RESERVED; + __IOM uint32_t ADDR; /*!< 0x00000008 Device region base address */ + __IOM uint32_t MASK; /*!< 0x0000000C Device region mask */ + __IM uint32_t RESERVED1[4]; + __IOM uint32_t ADDR_CTL; /*!< 0x00000020 Address control */ + __IM uint32_t RESERVED2[7]; + __IOM uint32_t RD_CMD_CTL; /*!< 0x00000040 Read command control */ + __IOM uint32_t RD_ADDR_CTL; /*!< 0x00000044 Read address control */ + __IOM uint32_t RD_MODE_CTL; /*!< 0x00000048 Read mode control */ + __IOM uint32_t RD_DUMMY_CTL; /*!< 0x0000004C Read dummy control */ + __IOM uint32_t RD_DATA_CTL; /*!< 0x00000050 Read data control */ + __IM uint32_t RESERVED3[3]; + __IOM uint32_t WR_CMD_CTL; /*!< 0x00000060 Write command control */ + __IOM uint32_t WR_ADDR_CTL; /*!< 0x00000064 Write address control */ + __IOM uint32_t WR_MODE_CTL; /*!< 0x00000068 Write mode control */ + __IOM uint32_t WR_DUMMY_CTL; /*!< 0x0000006C Write dummy control */ + __IOM uint32_t WR_DATA_CTL; /*!< 0x00000070 Write data control */ + __IM uint32_t RESERVED4[3]; +} SMIF_DEVICE_V1_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief Serial Memory Interface (SMIF) + */ +typedef struct { + __IOM uint32_t CTL; /*!< 0x00000000 Control */ + __IM uint32_t STATUS; /*!< 0x00000004 Status */ + __IM uint32_t RESERVED[15]; + __IM uint32_t TX_CMD_FIFO_STATUS; /*!< 0x00000044 Transmitter command FIFO status */ + __IM uint32_t RESERVED1[2]; + __OM uint32_t TX_CMD_FIFO_WR; /*!< 0x00000050 Transmitter command FIFO write */ + __IM uint32_t RESERVED2[11]; + __IOM uint32_t TX_DATA_FIFO_CTL; /*!< 0x00000080 Transmitter data FIFO control */ + __IM uint32_t TX_DATA_FIFO_STATUS; /*!< 0x00000084 Transmitter data FIFO status */ + __IM uint32_t RESERVED3[2]; + __OM uint32_t TX_DATA_FIFO_WR1; /*!< 0x00000090 Transmitter data FIFO write */ + __OM uint32_t TX_DATA_FIFO_WR2; /*!< 0x00000094 Transmitter data FIFO write */ + __OM uint32_t TX_DATA_FIFO_WR4; /*!< 0x00000098 Transmitter data FIFO write */ + __IM uint32_t RESERVED4[9]; + __IOM uint32_t RX_DATA_FIFO_CTL; /*!< 0x000000C0 Receiver data FIFO control */ + __IM uint32_t RX_DATA_FIFO_STATUS; /*!< 0x000000C4 Receiver data FIFO status */ + __IM uint32_t RESERVED5[2]; + __IM uint32_t RX_DATA_FIFO_RD1; /*!< 0x000000D0 Receiver data FIFO read */ + __IM uint32_t RX_DATA_FIFO_RD2; /*!< 0x000000D4 Receiver data FIFO read */ + __IM uint32_t RX_DATA_FIFO_RD4; /*!< 0x000000D8 Receiver data FIFO read */ + __IM uint32_t RESERVED6; + __IM uint32_t RX_DATA_FIFO_RD1_SILENT; /*!< 0x000000E0 Receiver data FIFO silent read */ + __IM uint32_t RESERVED7[7]; + __IOM uint32_t SLOW_CA_CTL; /*!< 0x00000100 Slow cache control */ + __IM uint32_t RESERVED8; + __IOM uint32_t SLOW_CA_CMD; /*!< 0x00000108 Slow cache command */ + __IM uint32_t RESERVED9[29]; + __IOM uint32_t FAST_CA_CTL; /*!< 0x00000180 Fast cache control */ + __IM uint32_t RESERVED10; + __IOM uint32_t FAST_CA_CMD; /*!< 0x00000188 Fast cache command */ + __IM uint32_t RESERVED11[29]; + __IOM uint32_t CRYPTO_CMD; /*!< 0x00000200 Cryptography Command */ + __IM uint32_t RESERVED12[7]; + __IOM uint32_t CRYPTO_INPUT0; /*!< 0x00000220 Cryptography input 0 */ + __IOM uint32_t CRYPTO_INPUT1; /*!< 0x00000224 Cryptography input 1 */ + __IOM uint32_t CRYPTO_INPUT2; /*!< 0x00000228 Cryptography input 2 */ + __IOM uint32_t CRYPTO_INPUT3; /*!< 0x0000022C Cryptography input 3 */ + __IM uint32_t RESERVED13[4]; + __OM uint32_t CRYPTO_KEY0; /*!< 0x00000240 Cryptography key 0 */ + __OM uint32_t CRYPTO_KEY1; /*!< 0x00000244 Cryptography key 1 */ + __OM uint32_t CRYPTO_KEY2; /*!< 0x00000248 Cryptography key 2 */ + __OM uint32_t CRYPTO_KEY3; /*!< 0x0000024C Cryptography key 3 */ + __IM uint32_t RESERVED14[4]; + __IOM uint32_t CRYPTO_OUTPUT0; /*!< 0x00000260 Cryptography output 0 */ + __IOM uint32_t CRYPTO_OUTPUT1; /*!< 0x00000264 Cryptography output 1 */ + __IOM uint32_t CRYPTO_OUTPUT2; /*!< 0x00000268 Cryptography output 2 */ + __IOM uint32_t CRYPTO_OUTPUT3; /*!< 0x0000026C Cryptography output 3 */ + __IM uint32_t RESERVED15[340]; + __IOM uint32_t INTR; /*!< 0x000007C0 Interrupt register */ + __IOM uint32_t INTR_SET; /*!< 0x000007C4 Interrupt set register */ + __IOM uint32_t INTR_MASK; /*!< 0x000007C8 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x000007CC Interrupt masked register */ + __IM uint32_t RESERVED16[12]; + SMIF_DEVICE_V1_Type DEVICE[4]; /*!< 0x00000800 Device (only used in XIP mode) */ +} SMIF_V1_Type; /*!< Size = 2560 (0xA00) */ + + +/* SMIF_DEVICE.CTL */ +#define SMIF_DEVICE_CTL_WR_EN_Pos 0UL +#define SMIF_DEVICE_CTL_WR_EN_Msk 0x1UL +#define SMIF_DEVICE_CTL_CRYPTO_EN_Pos 8UL +#define SMIF_DEVICE_CTL_CRYPTO_EN_Msk 0x100UL +#define SMIF_DEVICE_CTL_DATA_SEL_Pos 16UL +#define SMIF_DEVICE_CTL_DATA_SEL_Msk 0x30000UL +#define SMIF_DEVICE_CTL_ENABLED_Pos 31UL +#define SMIF_DEVICE_CTL_ENABLED_Msk 0x80000000UL +/* SMIF_DEVICE.ADDR */ +#define SMIF_DEVICE_ADDR_ADDR_Pos 8UL +#define SMIF_DEVICE_ADDR_ADDR_Msk 0xFFFFFF00UL +/* SMIF_DEVICE.MASK */ +#define SMIF_DEVICE_MASK_MASK_Pos 8UL +#define SMIF_DEVICE_MASK_MASK_Msk 0xFFFFFF00UL +/* SMIF_DEVICE.ADDR_CTL */ +#define SMIF_DEVICE_ADDR_CTL_SIZE2_Pos 0UL +#define SMIF_DEVICE_ADDR_CTL_SIZE2_Msk 0x3UL +#define SMIF_DEVICE_ADDR_CTL_DIV2_Pos 8UL +#define SMIF_DEVICE_ADDR_CTL_DIV2_Msk 0x100UL +/* SMIF_DEVICE.RD_CMD_CTL */ +#define SMIF_DEVICE_RD_CMD_CTL_CODE_Pos 0UL +#define SMIF_DEVICE_RD_CMD_CTL_CODE_Msk 0xFFUL +#define SMIF_DEVICE_RD_CMD_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_RD_CMD_CTL_WIDTH_Msk 0x30000UL +#define SMIF_DEVICE_RD_CMD_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_RD_CMD_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.RD_ADDR_CTL */ +#define SMIF_DEVICE_RD_ADDR_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_RD_ADDR_CTL_WIDTH_Msk 0x30000UL +/* SMIF_DEVICE.RD_MODE_CTL */ +#define SMIF_DEVICE_RD_MODE_CTL_CODE_Pos 0UL +#define SMIF_DEVICE_RD_MODE_CTL_CODE_Msk 0xFFUL +#define SMIF_DEVICE_RD_MODE_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_RD_MODE_CTL_WIDTH_Msk 0x30000UL +#define SMIF_DEVICE_RD_MODE_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_RD_MODE_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.RD_DUMMY_CTL */ +#define SMIF_DEVICE_RD_DUMMY_CTL_SIZE5_Pos 0UL +#define SMIF_DEVICE_RD_DUMMY_CTL_SIZE5_Msk 0x1FUL +#define SMIF_DEVICE_RD_DUMMY_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_RD_DUMMY_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.RD_DATA_CTL */ +#define SMIF_DEVICE_RD_DATA_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_RD_DATA_CTL_WIDTH_Msk 0x30000UL +/* SMIF_DEVICE.WR_CMD_CTL */ +#define SMIF_DEVICE_WR_CMD_CTL_CODE_Pos 0UL +#define SMIF_DEVICE_WR_CMD_CTL_CODE_Msk 0xFFUL +#define SMIF_DEVICE_WR_CMD_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_WR_CMD_CTL_WIDTH_Msk 0x30000UL +#define SMIF_DEVICE_WR_CMD_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_WR_CMD_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.WR_ADDR_CTL */ +#define SMIF_DEVICE_WR_ADDR_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_WR_ADDR_CTL_WIDTH_Msk 0x30000UL +/* SMIF_DEVICE.WR_MODE_CTL */ +#define SMIF_DEVICE_WR_MODE_CTL_CODE_Pos 0UL +#define SMIF_DEVICE_WR_MODE_CTL_CODE_Msk 0xFFUL +#define SMIF_DEVICE_WR_MODE_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_WR_MODE_CTL_WIDTH_Msk 0x30000UL +#define SMIF_DEVICE_WR_MODE_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_WR_MODE_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.WR_DUMMY_CTL */ +#define SMIF_DEVICE_WR_DUMMY_CTL_SIZE5_Pos 0UL +#define SMIF_DEVICE_WR_DUMMY_CTL_SIZE5_Msk 0x1FUL +#define SMIF_DEVICE_WR_DUMMY_CTL_PRESENT_Pos 31UL +#define SMIF_DEVICE_WR_DUMMY_CTL_PRESENT_Msk 0x80000000UL +/* SMIF_DEVICE.WR_DATA_CTL */ +#define SMIF_DEVICE_WR_DATA_CTL_WIDTH_Pos 16UL +#define SMIF_DEVICE_WR_DATA_CTL_WIDTH_Msk 0x30000UL + + +/* SMIF.CTL */ +#define SMIF_CTL_XIP_MODE_Pos 0UL +#define SMIF_CTL_XIP_MODE_Msk 0x1UL +#define SMIF_CTL_CLOCK_IF_RX_SEL_Pos 12UL +#define SMIF_CTL_CLOCK_IF_RX_SEL_Msk 0x3000UL +#define SMIF_CTL_DESELECT_DELAY_Pos 16UL +#define SMIF_CTL_DESELECT_DELAY_Msk 0x70000UL +#define SMIF_CTL_BLOCK_Pos 24UL +#define SMIF_CTL_BLOCK_Msk 0x1000000UL +#define SMIF_CTL_ENABLED_Pos 31UL +#define SMIF_CTL_ENABLED_Msk 0x80000000UL +/* SMIF.STATUS */ +#define SMIF_STATUS_BUSY_Pos 31UL +#define SMIF_STATUS_BUSY_Msk 0x80000000UL +/* SMIF.TX_CMD_FIFO_STATUS */ +#define SMIF_TX_CMD_FIFO_STATUS_USED3_Pos 0UL +#define SMIF_TX_CMD_FIFO_STATUS_USED3_Msk 0x7UL +/* SMIF.TX_CMD_FIFO_WR */ +#define SMIF_TX_CMD_FIFO_WR_DATA20_Pos 0UL +#define SMIF_TX_CMD_FIFO_WR_DATA20_Msk 0xFFFFFUL +/* SMIF.TX_DATA_FIFO_CTL */ +#define SMIF_TX_DATA_FIFO_CTL_TRIGGER_LEVEL_Pos 0UL +#define SMIF_TX_DATA_FIFO_CTL_TRIGGER_LEVEL_Msk 0x7UL +/* SMIF.TX_DATA_FIFO_STATUS */ +#define SMIF_TX_DATA_FIFO_STATUS_USED4_Pos 0UL +#define SMIF_TX_DATA_FIFO_STATUS_USED4_Msk 0xFUL +/* SMIF.TX_DATA_FIFO_WR1 */ +#define SMIF_TX_DATA_FIFO_WR1_DATA0_Pos 0UL +#define SMIF_TX_DATA_FIFO_WR1_DATA0_Msk 0xFFUL +/* SMIF.TX_DATA_FIFO_WR2 */ +#define SMIF_TX_DATA_FIFO_WR2_DATA0_Pos 0UL +#define SMIF_TX_DATA_FIFO_WR2_DATA0_Msk 0xFFUL +#define SMIF_TX_DATA_FIFO_WR2_DATA1_Pos 8UL +#define SMIF_TX_DATA_FIFO_WR2_DATA1_Msk 0xFF00UL +/* SMIF.TX_DATA_FIFO_WR4 */ +#define SMIF_TX_DATA_FIFO_WR4_DATA0_Pos 0UL +#define SMIF_TX_DATA_FIFO_WR4_DATA0_Msk 0xFFUL +#define SMIF_TX_DATA_FIFO_WR4_DATA1_Pos 8UL +#define SMIF_TX_DATA_FIFO_WR4_DATA1_Msk 0xFF00UL +#define SMIF_TX_DATA_FIFO_WR4_DATA2_Pos 16UL +#define SMIF_TX_DATA_FIFO_WR4_DATA2_Msk 0xFF0000UL +#define SMIF_TX_DATA_FIFO_WR4_DATA3_Pos 24UL +#define SMIF_TX_DATA_FIFO_WR4_DATA3_Msk 0xFF000000UL +/* SMIF.RX_DATA_FIFO_CTL */ +#define SMIF_RX_DATA_FIFO_CTL_TRIGGER_LEVEL_Pos 0UL +#define SMIF_RX_DATA_FIFO_CTL_TRIGGER_LEVEL_Msk 0x7UL +/* SMIF.RX_DATA_FIFO_STATUS */ +#define SMIF_RX_DATA_FIFO_STATUS_USED4_Pos 0UL +#define SMIF_RX_DATA_FIFO_STATUS_USED4_Msk 0xFUL +/* SMIF.RX_DATA_FIFO_RD1 */ +#define SMIF_RX_DATA_FIFO_RD1_DATA0_Pos 0UL +#define SMIF_RX_DATA_FIFO_RD1_DATA0_Msk 0xFFUL +/* SMIF.RX_DATA_FIFO_RD2 */ +#define SMIF_RX_DATA_FIFO_RD2_DATA0_Pos 0UL +#define SMIF_RX_DATA_FIFO_RD2_DATA0_Msk 0xFFUL +#define SMIF_RX_DATA_FIFO_RD2_DATA1_Pos 8UL +#define SMIF_RX_DATA_FIFO_RD2_DATA1_Msk 0xFF00UL +/* SMIF.RX_DATA_FIFO_RD4 */ +#define SMIF_RX_DATA_FIFO_RD4_DATA0_Pos 0UL +#define SMIF_RX_DATA_FIFO_RD4_DATA0_Msk 0xFFUL +#define SMIF_RX_DATA_FIFO_RD4_DATA1_Pos 8UL +#define SMIF_RX_DATA_FIFO_RD4_DATA1_Msk 0xFF00UL +#define SMIF_RX_DATA_FIFO_RD4_DATA2_Pos 16UL +#define SMIF_RX_DATA_FIFO_RD4_DATA2_Msk 0xFF0000UL +#define SMIF_RX_DATA_FIFO_RD4_DATA3_Pos 24UL +#define SMIF_RX_DATA_FIFO_RD4_DATA3_Msk 0xFF000000UL +/* SMIF.RX_DATA_FIFO_RD1_SILENT */ +#define SMIF_RX_DATA_FIFO_RD1_SILENT_DATA0_Pos 0UL +#define SMIF_RX_DATA_FIFO_RD1_SILENT_DATA0_Msk 0xFFUL +/* SMIF.SLOW_CA_CTL */ +#define SMIF_SLOW_CA_CTL_WAY_Pos 16UL +#define SMIF_SLOW_CA_CTL_WAY_Msk 0x30000UL +#define SMIF_SLOW_CA_CTL_SET_ADDR_Pos 24UL +#define SMIF_SLOW_CA_CTL_SET_ADDR_Msk 0x3000000UL +#define SMIF_SLOW_CA_CTL_PREF_EN_Pos 30UL +#define SMIF_SLOW_CA_CTL_PREF_EN_Msk 0x40000000UL +#define SMIF_SLOW_CA_CTL_ENABLED_Pos 31UL +#define SMIF_SLOW_CA_CTL_ENABLED_Msk 0x80000000UL +/* SMIF.SLOW_CA_CMD */ +#define SMIF_SLOW_CA_CMD_INV_Pos 0UL +#define SMIF_SLOW_CA_CMD_INV_Msk 0x1UL +/* SMIF.FAST_CA_CTL */ +#define SMIF_FAST_CA_CTL_WAY_Pos 16UL +#define SMIF_FAST_CA_CTL_WAY_Msk 0x30000UL +#define SMIF_FAST_CA_CTL_SET_ADDR_Pos 24UL +#define SMIF_FAST_CA_CTL_SET_ADDR_Msk 0x3000000UL +#define SMIF_FAST_CA_CTL_PREF_EN_Pos 30UL +#define SMIF_FAST_CA_CTL_PREF_EN_Msk 0x40000000UL +#define SMIF_FAST_CA_CTL_ENABLED_Pos 31UL +#define SMIF_FAST_CA_CTL_ENABLED_Msk 0x80000000UL +/* SMIF.FAST_CA_CMD */ +#define SMIF_FAST_CA_CMD_INV_Pos 0UL +#define SMIF_FAST_CA_CMD_INV_Msk 0x1UL +/* SMIF.CRYPTO_CMD */ +#define SMIF_CRYPTO_CMD_START_Pos 0UL +#define SMIF_CRYPTO_CMD_START_Msk 0x1UL +/* SMIF.CRYPTO_INPUT0 */ +#define SMIF_CRYPTO_INPUT0_INPUT_Pos 0UL +#define SMIF_CRYPTO_INPUT0_INPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_INPUT1 */ +#define SMIF_CRYPTO_INPUT1_INPUT_Pos 0UL +#define SMIF_CRYPTO_INPUT1_INPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_INPUT2 */ +#define SMIF_CRYPTO_INPUT2_INPUT_Pos 0UL +#define SMIF_CRYPTO_INPUT2_INPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_INPUT3 */ +#define SMIF_CRYPTO_INPUT3_INPUT_Pos 0UL +#define SMIF_CRYPTO_INPUT3_INPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_KEY0 */ +#define SMIF_CRYPTO_KEY0_KEY_Pos 0UL +#define SMIF_CRYPTO_KEY0_KEY_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_KEY1 */ +#define SMIF_CRYPTO_KEY1_KEY_Pos 0UL +#define SMIF_CRYPTO_KEY1_KEY_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_KEY2 */ +#define SMIF_CRYPTO_KEY2_KEY_Pos 0UL +#define SMIF_CRYPTO_KEY2_KEY_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_KEY3 */ +#define SMIF_CRYPTO_KEY3_KEY_Pos 0UL +#define SMIF_CRYPTO_KEY3_KEY_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_OUTPUT0 */ +#define SMIF_CRYPTO_OUTPUT0_OUTPUT_Pos 0UL +#define SMIF_CRYPTO_OUTPUT0_OUTPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_OUTPUT1 */ +#define SMIF_CRYPTO_OUTPUT1_OUTPUT_Pos 0UL +#define SMIF_CRYPTO_OUTPUT1_OUTPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_OUTPUT2 */ +#define SMIF_CRYPTO_OUTPUT2_OUTPUT_Pos 0UL +#define SMIF_CRYPTO_OUTPUT2_OUTPUT_Msk 0xFFFFFFFFUL +/* SMIF.CRYPTO_OUTPUT3 */ +#define SMIF_CRYPTO_OUTPUT3_OUTPUT_Pos 0UL +#define SMIF_CRYPTO_OUTPUT3_OUTPUT_Msk 0xFFFFFFFFUL +/* SMIF.INTR */ +#define SMIF_INTR_TR_TX_REQ_Pos 0UL +#define SMIF_INTR_TR_TX_REQ_Msk 0x1UL +#define SMIF_INTR_TR_RX_REQ_Pos 1UL +#define SMIF_INTR_TR_RX_REQ_Msk 0x2UL +#define SMIF_INTR_XIP_ALIGNMENT_ERROR_Pos 2UL +#define SMIF_INTR_XIP_ALIGNMENT_ERROR_Msk 0x4UL +#define SMIF_INTR_TX_CMD_FIFO_OVERFLOW_Pos 3UL +#define SMIF_INTR_TX_CMD_FIFO_OVERFLOW_Msk 0x8UL +#define SMIF_INTR_TX_DATA_FIFO_OVERFLOW_Pos 4UL +#define SMIF_INTR_TX_DATA_FIFO_OVERFLOW_Msk 0x10UL +#define SMIF_INTR_RX_DATA_FIFO_UNDERFLOW_Pos 5UL +#define SMIF_INTR_RX_DATA_FIFO_UNDERFLOW_Msk 0x20UL +/* SMIF.INTR_SET */ +#define SMIF_INTR_SET_TR_TX_REQ_Pos 0UL +#define SMIF_INTR_SET_TR_TX_REQ_Msk 0x1UL +#define SMIF_INTR_SET_TR_RX_REQ_Pos 1UL +#define SMIF_INTR_SET_TR_RX_REQ_Msk 0x2UL +#define SMIF_INTR_SET_XIP_ALIGNMENT_ERROR_Pos 2UL +#define SMIF_INTR_SET_XIP_ALIGNMENT_ERROR_Msk 0x4UL +#define SMIF_INTR_SET_TX_CMD_FIFO_OVERFLOW_Pos 3UL +#define SMIF_INTR_SET_TX_CMD_FIFO_OVERFLOW_Msk 0x8UL +#define SMIF_INTR_SET_TX_DATA_FIFO_OVERFLOW_Pos 4UL +#define SMIF_INTR_SET_TX_DATA_FIFO_OVERFLOW_Msk 0x10UL +#define SMIF_INTR_SET_RX_DATA_FIFO_UNDERFLOW_Pos 5UL +#define SMIF_INTR_SET_RX_DATA_FIFO_UNDERFLOW_Msk 0x20UL +/* SMIF.INTR_MASK */ +#define SMIF_INTR_MASK_TR_TX_REQ_Pos 0UL +#define SMIF_INTR_MASK_TR_TX_REQ_Msk 0x1UL +#define SMIF_INTR_MASK_TR_RX_REQ_Pos 1UL +#define SMIF_INTR_MASK_TR_RX_REQ_Msk 0x2UL +#define SMIF_INTR_MASK_XIP_ALIGNMENT_ERROR_Pos 2UL +#define SMIF_INTR_MASK_XIP_ALIGNMENT_ERROR_Msk 0x4UL +#define SMIF_INTR_MASK_TX_CMD_FIFO_OVERFLOW_Pos 3UL +#define SMIF_INTR_MASK_TX_CMD_FIFO_OVERFLOW_Msk 0x8UL +#define SMIF_INTR_MASK_TX_DATA_FIFO_OVERFLOW_Pos 4UL +#define SMIF_INTR_MASK_TX_DATA_FIFO_OVERFLOW_Msk 0x10UL +#define SMIF_INTR_MASK_RX_DATA_FIFO_UNDERFLOW_Pos 5UL +#define SMIF_INTR_MASK_RX_DATA_FIFO_UNDERFLOW_Msk 0x20UL +/* SMIF.INTR_MASKED */ +#define SMIF_INTR_MASKED_TR_TX_REQ_Pos 0UL +#define SMIF_INTR_MASKED_TR_TX_REQ_Msk 0x1UL +#define SMIF_INTR_MASKED_TR_RX_REQ_Pos 1UL +#define SMIF_INTR_MASKED_TR_RX_REQ_Msk 0x2UL +#define SMIF_INTR_MASKED_XIP_ALIGNMENT_ERROR_Pos 2UL +#define SMIF_INTR_MASKED_XIP_ALIGNMENT_ERROR_Msk 0x4UL +#define SMIF_INTR_MASKED_TX_CMD_FIFO_OVERFLOW_Pos 3UL +#define SMIF_INTR_MASKED_TX_CMD_FIFO_OVERFLOW_Msk 0x8UL +#define SMIF_INTR_MASKED_TX_DATA_FIFO_OVERFLOW_Pos 4UL +#define SMIF_INTR_MASKED_TX_DATA_FIFO_OVERFLOW_Msk 0x10UL +#define SMIF_INTR_MASKED_RX_DATA_FIFO_UNDERFLOW_Pos 5UL +#define SMIF_INTR_MASKED_RX_DATA_FIFO_UNDERFLOW_Msk 0x20UL + + +#endif /* _CYIP_SMIF_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_srss.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_srss.h new file mode 100644 index 00000000000..103d24f9554 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_srss.h @@ -0,0 +1,610 @@ +/***************************************************************************//** +* \file cyip_srss.h +* +* \brief +* SRSS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_SRSS_H_ +#define _CYIP_SRSS_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* SRSS +*******************************************************************************/ + +#define MCWDT_STRUCT_SECTION_SIZE 0x00000040UL +#define SRSS_SECTION_SIZE 0x00010000UL + +/** + * \brief Multi-Counter Watchdog Timer (MCWDT_STRUCT) + */ +typedef struct { + __IM uint32_t RESERVED; + __IOM uint32_t MCWDT_CNTLOW; /*!< 0x00000004 Multi-Counter Watchdog Sub-counters 0/1 */ + __IOM uint32_t MCWDT_CNTHIGH; /*!< 0x00000008 Multi-Counter Watchdog Sub-counter 2 */ + __IOM uint32_t MCWDT_MATCH; /*!< 0x0000000C Multi-Counter Watchdog Counter Match Register */ + __IOM uint32_t MCWDT_CONFIG; /*!< 0x00000010 Multi-Counter Watchdog Counter Configuration */ + __IOM uint32_t MCWDT_CTL; /*!< 0x00000014 Multi-Counter Watchdog Counter Control */ + __IOM uint32_t MCWDT_INTR; /*!< 0x00000018 Multi-Counter Watchdog Counter Interrupt Register */ + __IOM uint32_t MCWDT_INTR_SET; /*!< 0x0000001C Multi-Counter Watchdog Counter Interrupt Set Register */ + __IOM uint32_t MCWDT_INTR_MASK; /*!< 0x00000020 Multi-Counter Watchdog Counter Interrupt Mask Register */ + __IM uint32_t MCWDT_INTR_MASKED; /*!< 0x00000024 Multi-Counter Watchdog Counter Interrupt Masked Register */ + __IOM uint32_t MCWDT_LOCK; /*!< 0x00000028 Multi-Counter Watchdog Counter Lock Register */ + __IM uint32_t RESERVED1[5]; +} MCWDT_STRUCT_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief SRSS Core Registers (SRSS) + */ +typedef struct { + __IOM uint32_t PWR_CTL; /*!< 0x00000000 Power Mode Control */ + __IOM uint32_t PWR_HIBERNATE; /*!< 0x00000004 HIBERNATE Mode Register */ + __IOM uint32_t PWR_LVD_CTL; /*!< 0x00000008 Low Voltage Detector (LVD) Configuration Register */ + __IM uint32_t RESERVED[2]; + __IOM uint32_t PWR_BUCK_CTL; /*!< 0x00000014 Buck Control Register */ + __IOM uint32_t PWR_BUCK_CTL2; /*!< 0x00000018 Buck Control Register 2 */ + __IM uint32_t PWR_LVD_STATUS; /*!< 0x0000001C Low Voltage Detector (LVD) Status Register */ + __IM uint32_t RESERVED1[24]; + __IOM uint32_t PWR_HIB_DATA[16]; /*!< 0x00000080 HIBERNATE Data Register */ + __IM uint32_t RESERVED2[48]; + __IOM uint32_t WDT_CTL; /*!< 0x00000180 Watchdog Counter Control Register */ + __IOM uint32_t WDT_CNT; /*!< 0x00000184 Watchdog Counter Count Register */ + __IOM uint32_t WDT_MATCH; /*!< 0x00000188 Watchdog Counter Match Register */ + __IM uint32_t RESERVED3[29]; + MCWDT_STRUCT_V1_Type MCWDT_STRUCT[4]; /*!< 0x00000200 Multi-Counter Watchdog Timer */ + __IOM uint32_t CLK_DSI_SELECT[16]; /*!< 0x00000300 Clock DSI Select Register */ + __IOM uint32_t CLK_PATH_SELECT[16]; /*!< 0x00000340 Clock Path Select Register */ + __IOM uint32_t CLK_ROOT_SELECT[16]; /*!< 0x00000380 Clock Root Select Register */ + __IM uint32_t RESERVED4[80]; + __IOM uint32_t CLK_SELECT; /*!< 0x00000500 Clock selection register */ + __IOM uint32_t CLK_TIMER_CTL; /*!< 0x00000504 Timer Clock Control Register */ + __IM uint32_t RESERVED5; + __IOM uint32_t CLK_ILO_CONFIG; /*!< 0x0000050C ILO Configuration */ + __IOM uint32_t CLK_IMO_CONFIG; /*!< 0x00000510 IMO Configuration */ + __IOM uint32_t CLK_OUTPUT_FAST; /*!< 0x00000514 Fast Clock Output Select Register */ + __IOM uint32_t CLK_OUTPUT_SLOW; /*!< 0x00000518 Slow Clock Output Select Register */ + __IOM uint32_t CLK_CAL_CNT1; /*!< 0x0000051C Clock Calibration Counter 1 */ + __IM uint32_t CLK_CAL_CNT2; /*!< 0x00000520 Clock Calibration Counter 2 */ + __IM uint32_t RESERVED6[2]; + __IOM uint32_t CLK_ECO_CONFIG; /*!< 0x0000052C ECO Configuration Register */ + __IM uint32_t CLK_ECO_STATUS; /*!< 0x00000530 ECO Status Register */ + __IM uint32_t RESERVED7[2]; + __IOM uint32_t CLK_PILO_CONFIG; /*!< 0x0000053C Precision ILO Configuration Register */ + __IM uint32_t RESERVED8[16]; + __IOM uint32_t CLK_FLL_CONFIG; /*!< 0x00000580 FLL Configuration Register */ + __IOM uint32_t CLK_FLL_CONFIG2; /*!< 0x00000584 FLL Configuration Register 2 */ + __IOM uint32_t CLK_FLL_CONFIG3; /*!< 0x00000588 FLL Configuration Register 3 */ + __IOM uint32_t CLK_FLL_CONFIG4; /*!< 0x0000058C FLL Configuration Register 4 */ + __IOM uint32_t CLK_FLL_STATUS; /*!< 0x00000590 FLL Status Register */ + __IM uint32_t RESERVED9[27]; + __IOM uint32_t CLK_PLL_CONFIG[15]; /*!< 0x00000600 PLL Configuration Register */ + __IM uint32_t RESERVED10; + __IOM uint32_t CLK_PLL_STATUS[15]; /*!< 0x00000640 PLL Status Register */ + __IM uint32_t RESERVED11[33]; + __IOM uint32_t SRSS_INTR; /*!< 0x00000700 SRSS Interrupt Register */ + __IOM uint32_t SRSS_INTR_SET; /*!< 0x00000704 SRSS Interrupt Set Register */ + __IOM uint32_t SRSS_INTR_MASK; /*!< 0x00000708 SRSS Interrupt Mask Register */ + __IM uint32_t SRSS_INTR_MASKED; /*!< 0x0000070C SRSS Interrupt Masked Register */ + __IOM uint32_t SRSS_INTR_CFG; /*!< 0x00000710 SRSS Interrupt Configuration Register */ + __IM uint32_t RESERVED12[59]; + __IOM uint32_t RES_CAUSE; /*!< 0x00000800 Reset Cause Observation Register */ + __IOM uint32_t RES_CAUSE2; /*!< 0x00000804 Reset Cause Observation Register 2 */ + __IM uint32_t RESERVED13[7614]; + __IOM uint32_t PWR_TRIM_REF_CTL; /*!< 0x00007F00 Reference Trim Register */ + __IOM uint32_t PWR_TRIM_BODOVP_CTL; /*!< 0x00007F04 BOD/OVP Trim Register */ + __IOM uint32_t CLK_TRIM_CCO_CTL; /*!< 0x00007F08 CCO Trim Register */ + __IOM uint32_t CLK_TRIM_CCO_CTL2; /*!< 0x00007F0C CCO Trim Register 2 */ + __IM uint32_t RESERVED14[8]; + __IOM uint32_t PWR_TRIM_WAKE_CTL; /*!< 0x00007F30 Wakeup Trim Register */ + __IM uint32_t RESERVED15[8183]; + __IOM uint32_t PWR_TRIM_LVD_CTL; /*!< 0x0000FF10 LVD Trim Register */ + __IM uint32_t RESERVED16; + __IOM uint32_t CLK_TRIM_ILO_CTL; /*!< 0x0000FF18 ILO Trim Register */ + __IOM uint32_t PWR_TRIM_PWRSYS_CTL; /*!< 0x0000FF1C Power System Trim Register */ + __IOM uint32_t CLK_TRIM_ECO_CTL; /*!< 0x0000FF20 ECO Trim Register */ + __IOM uint32_t CLK_TRIM_PILO_CTL; /*!< 0x0000FF24 PILO Trim Register */ + __IOM uint32_t CLK_TRIM_PILO_CTL2; /*!< 0x0000FF28 PILO Trim Register 2 */ + __IOM uint32_t CLK_TRIM_PILO_CTL3; /*!< 0x0000FF2C PILO Trim Register 3 */ +} SRSS_V1_Type; /*!< Size = 65328 (0xFF30) */ + + +/* MCWDT_STRUCT.MCWDT_CNTLOW */ +#define MCWDT_STRUCT_MCWDT_CNTLOW_WDT_CTR0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_CNTLOW_WDT_CTR0_Msk 0xFFFFUL +#define MCWDT_STRUCT_MCWDT_CNTLOW_WDT_CTR1_Pos 16UL +#define MCWDT_STRUCT_MCWDT_CNTLOW_WDT_CTR1_Msk 0xFFFF0000UL +/* MCWDT_STRUCT.MCWDT_CNTHIGH */ +#define MCWDT_STRUCT_MCWDT_CNTHIGH_WDT_CTR2_Pos 0UL +#define MCWDT_STRUCT_MCWDT_CNTHIGH_WDT_CTR2_Msk 0xFFFFFFFFUL +/* MCWDT_STRUCT.MCWDT_MATCH */ +#define MCWDT_STRUCT_MCWDT_MATCH_WDT_MATCH0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_MATCH_WDT_MATCH0_Msk 0xFFFFUL +#define MCWDT_STRUCT_MCWDT_MATCH_WDT_MATCH1_Pos 16UL +#define MCWDT_STRUCT_MCWDT_MATCH_WDT_MATCH1_Msk 0xFFFF0000UL +/* MCWDT_STRUCT.MCWDT_CONFIG */ +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE0_Msk 0x3UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CLEAR0_Pos 2UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CLEAR0_Msk 0x4UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CASCADE0_1_Pos 3UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CASCADE0_1_Msk 0x8UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE1_Pos 8UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE1_Msk 0x300UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CLEAR1_Pos 10UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CLEAR1_Msk 0x400UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CASCADE1_2_Pos 11UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_CASCADE1_2_Msk 0x800UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE2_Pos 16UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_MODE2_Msk 0x10000UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_BITS2_Pos 24UL +#define MCWDT_STRUCT_MCWDT_CONFIG_WDT_BITS2_Msk 0x1F000000UL +/* MCWDT_STRUCT.MCWDT_CTL */ +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE0_Msk 0x1UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED0_Pos 1UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED0_Msk 0x2UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET0_Pos 3UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET0_Msk 0x8UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE1_Pos 8UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE1_Msk 0x100UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED1_Pos 9UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED1_Msk 0x200UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET1_Pos 11UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET1_Msk 0x800UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE2_Pos 16UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLE2_Msk 0x10000UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED2_Pos 17UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_ENABLED2_Msk 0x20000UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET2_Pos 19UL +#define MCWDT_STRUCT_MCWDT_CTL_WDT_RESET2_Msk 0x80000UL +/* MCWDT_STRUCT.MCWDT_INTR */ +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT0_Msk 0x1UL +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT1_Pos 1UL +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT1_Msk 0x2UL +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT2_Pos 2UL +#define MCWDT_STRUCT_MCWDT_INTR_MCWDT_INT2_Msk 0x4UL +/* MCWDT_STRUCT.MCWDT_INTR_SET */ +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT0_Msk 0x1UL +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT1_Pos 1UL +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT1_Msk 0x2UL +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT2_Pos 2UL +#define MCWDT_STRUCT_MCWDT_INTR_SET_MCWDT_INT2_Msk 0x4UL +/* MCWDT_STRUCT.MCWDT_INTR_MASK */ +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT0_Msk 0x1UL +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT1_Pos 1UL +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT1_Msk 0x2UL +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT2_Pos 2UL +#define MCWDT_STRUCT_MCWDT_INTR_MASK_MCWDT_INT2_Msk 0x4UL +/* MCWDT_STRUCT.MCWDT_INTR_MASKED */ +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT0_Pos 0UL +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT0_Msk 0x1UL +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT1_Pos 1UL +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT1_Msk 0x2UL +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT2_Pos 2UL +#define MCWDT_STRUCT_MCWDT_INTR_MASKED_MCWDT_INT2_Msk 0x4UL +/* MCWDT_STRUCT.MCWDT_LOCK */ +#define MCWDT_STRUCT_MCWDT_LOCK_MCWDT_LOCK_Pos 30UL +#define MCWDT_STRUCT_MCWDT_LOCK_MCWDT_LOCK_Msk 0xC0000000UL + + +/* SRSS.PWR_CTL */ +#define SRSS_PWR_CTL_POWER_MODE_Pos 0UL +#define SRSS_PWR_CTL_POWER_MODE_Msk 0x3UL +#define SRSS_PWR_CTL_DEBUG_SESSION_Pos 4UL +#define SRSS_PWR_CTL_DEBUG_SESSION_Msk 0x10UL +#define SRSS_PWR_CTL_LPM_READY_Pos 5UL +#define SRSS_PWR_CTL_LPM_READY_Msk 0x20UL +#define SRSS_PWR_CTL_IREF_LPMODE_Pos 18UL +#define SRSS_PWR_CTL_IREF_LPMODE_Msk 0x40000UL +#define SRSS_PWR_CTL_VREFBUF_OK_Pos 19UL +#define SRSS_PWR_CTL_VREFBUF_OK_Msk 0x80000UL +#define SRSS_PWR_CTL_DPSLP_REG_DIS_Pos 20UL +#define SRSS_PWR_CTL_DPSLP_REG_DIS_Msk 0x100000UL +#define SRSS_PWR_CTL_RET_REG_DIS_Pos 21UL +#define SRSS_PWR_CTL_RET_REG_DIS_Msk 0x200000UL +#define SRSS_PWR_CTL_NWELL_REG_DIS_Pos 22UL +#define SRSS_PWR_CTL_NWELL_REG_DIS_Msk 0x400000UL +#define SRSS_PWR_CTL_LINREG_DIS_Pos 23UL +#define SRSS_PWR_CTL_LINREG_DIS_Msk 0x800000UL +#define SRSS_PWR_CTL_LINREG_LPMODE_Pos 24UL +#define SRSS_PWR_CTL_LINREG_LPMODE_Msk 0x1000000UL +#define SRSS_PWR_CTL_PORBOD_LPMODE_Pos 25UL +#define SRSS_PWR_CTL_PORBOD_LPMODE_Msk 0x2000000UL +#define SRSS_PWR_CTL_BGREF_LPMODE_Pos 26UL +#define SRSS_PWR_CTL_BGREF_LPMODE_Msk 0x4000000UL +#define SRSS_PWR_CTL_PLL_LS_BYPASS_Pos 27UL +#define SRSS_PWR_CTL_PLL_LS_BYPASS_Msk 0x8000000UL +#define SRSS_PWR_CTL_VREFBUF_LPMODE_Pos 28UL +#define SRSS_PWR_CTL_VREFBUF_LPMODE_Msk 0x10000000UL +#define SRSS_PWR_CTL_VREFBUF_DIS_Pos 29UL +#define SRSS_PWR_CTL_VREFBUF_DIS_Msk 0x20000000UL +#define SRSS_PWR_CTL_ACT_REF_DIS_Pos 30UL +#define SRSS_PWR_CTL_ACT_REF_DIS_Msk 0x40000000UL +#define SRSS_PWR_CTL_ACT_REF_OK_Pos 31UL +#define SRSS_PWR_CTL_ACT_REF_OK_Msk 0x80000000UL +/* SRSS.PWR_HIBERNATE */ +#define SRSS_PWR_HIBERNATE_TOKEN_Pos 0UL +#define SRSS_PWR_HIBERNATE_TOKEN_Msk 0xFFUL +#define SRSS_PWR_HIBERNATE_UNLOCK_Pos 8UL +#define SRSS_PWR_HIBERNATE_UNLOCK_Msk 0xFF00UL +#define SRSS_PWR_HIBERNATE_FREEZE_Pos 17UL +#define SRSS_PWR_HIBERNATE_FREEZE_Msk 0x20000UL +#define SRSS_PWR_HIBERNATE_MASK_HIBALARM_Pos 18UL +#define SRSS_PWR_HIBERNATE_MASK_HIBALARM_Msk 0x40000UL +#define SRSS_PWR_HIBERNATE_MASK_HIBWDT_Pos 19UL +#define SRSS_PWR_HIBERNATE_MASK_HIBWDT_Msk 0x80000UL +#define SRSS_PWR_HIBERNATE_POLARITY_HIBPIN_Pos 20UL +#define SRSS_PWR_HIBERNATE_POLARITY_HIBPIN_Msk 0xF00000UL +#define SRSS_PWR_HIBERNATE_MASK_HIBPIN_Pos 24UL +#define SRSS_PWR_HIBERNATE_MASK_HIBPIN_Msk 0xF000000UL +#define SRSS_PWR_HIBERNATE_HIBERNATE_DISABLE_Pos 30UL +#define SRSS_PWR_HIBERNATE_HIBERNATE_DISABLE_Msk 0x40000000UL +#define SRSS_PWR_HIBERNATE_HIBERNATE_Pos 31UL +#define SRSS_PWR_HIBERNATE_HIBERNATE_Msk 0x80000000UL +/* SRSS.PWR_LVD_CTL */ +#define SRSS_PWR_LVD_CTL_HVLVD1_TRIPSEL_Pos 0UL +#define SRSS_PWR_LVD_CTL_HVLVD1_TRIPSEL_Msk 0xFUL +#define SRSS_PWR_LVD_CTL_HVLVD1_SRCSEL_Pos 4UL +#define SRSS_PWR_LVD_CTL_HVLVD1_SRCSEL_Msk 0x70UL +#define SRSS_PWR_LVD_CTL_HVLVD1_EN_Pos 7UL +#define SRSS_PWR_LVD_CTL_HVLVD1_EN_Msk 0x80UL +/* SRSS.PWR_BUCK_CTL */ +#define SRSS_PWR_BUCK_CTL_BUCK_OUT1_SEL_Pos 0UL +#define SRSS_PWR_BUCK_CTL_BUCK_OUT1_SEL_Msk 0x7UL +#define SRSS_PWR_BUCK_CTL_BUCK_EN_Pos 30UL +#define SRSS_PWR_BUCK_CTL_BUCK_EN_Msk 0x40000000UL +#define SRSS_PWR_BUCK_CTL_BUCK_OUT1_EN_Pos 31UL +#define SRSS_PWR_BUCK_CTL_BUCK_OUT1_EN_Msk 0x80000000UL +/* SRSS.PWR_BUCK_CTL2 */ +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_SEL_Pos 0UL +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_SEL_Msk 0x7UL +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_HW_SEL_Pos 30UL +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_HW_SEL_Msk 0x40000000UL +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_EN_Pos 31UL +#define SRSS_PWR_BUCK_CTL2_BUCK_OUT2_EN_Msk 0x80000000UL +/* SRSS.PWR_LVD_STATUS */ +#define SRSS_PWR_LVD_STATUS_HVLVD1_OK_Pos 0UL +#define SRSS_PWR_LVD_STATUS_HVLVD1_OK_Msk 0x1UL +/* SRSS.PWR_HIB_DATA */ +#define SRSS_PWR_HIB_DATA_HIB_DATA_Pos 0UL +#define SRSS_PWR_HIB_DATA_HIB_DATA_Msk 0xFFFFFFFFUL +/* SRSS.WDT_CTL */ +#define SRSS_WDT_CTL_WDT_EN_Pos 0UL +#define SRSS_WDT_CTL_WDT_EN_Msk 0x1UL +#define SRSS_WDT_CTL_WDT_LOCK_Pos 30UL +#define SRSS_WDT_CTL_WDT_LOCK_Msk 0xC0000000UL +/* SRSS.WDT_CNT */ +#define SRSS_WDT_CNT_COUNTER_Pos 0UL +#define SRSS_WDT_CNT_COUNTER_Msk 0xFFFFUL +/* SRSS.WDT_MATCH */ +#define SRSS_WDT_MATCH_MATCH_Pos 0UL +#define SRSS_WDT_MATCH_MATCH_Msk 0xFFFFUL +#define SRSS_WDT_MATCH_IGNORE_BITS_Pos 16UL +#define SRSS_WDT_MATCH_IGNORE_BITS_Msk 0xF0000UL +/* SRSS.CLK_DSI_SELECT */ +#define SRSS_CLK_DSI_SELECT_DSI_MUX_Pos 0UL +#define SRSS_CLK_DSI_SELECT_DSI_MUX_Msk 0x1FUL +/* SRSS.CLK_PATH_SELECT */ +#define SRSS_CLK_PATH_SELECT_PATH_MUX_Pos 0UL +#define SRSS_CLK_PATH_SELECT_PATH_MUX_Msk 0x7UL +/* SRSS.CLK_ROOT_SELECT */ +#define SRSS_CLK_ROOT_SELECT_ROOT_MUX_Pos 0UL +#define SRSS_CLK_ROOT_SELECT_ROOT_MUX_Msk 0xFUL +#define SRSS_CLK_ROOT_SELECT_ROOT_DIV_Pos 4UL +#define SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk 0x30UL +#define SRSS_CLK_ROOT_SELECT_ENABLE_Pos 31UL +#define SRSS_CLK_ROOT_SELECT_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_SELECT */ +#define SRSS_CLK_SELECT_LFCLK_SEL_Pos 0UL +#define SRSS_CLK_SELECT_LFCLK_SEL_Msk 0x3UL +#define SRSS_CLK_SELECT_PUMP_SEL_Pos 8UL +#define SRSS_CLK_SELECT_PUMP_SEL_Msk 0xF00UL +#define SRSS_CLK_SELECT_PUMP_DIV_Pos 12UL +#define SRSS_CLK_SELECT_PUMP_DIV_Msk 0x7000UL +#define SRSS_CLK_SELECT_PUMP_ENABLE_Pos 15UL +#define SRSS_CLK_SELECT_PUMP_ENABLE_Msk 0x8000UL +/* SRSS.CLK_TIMER_CTL */ +#define SRSS_CLK_TIMER_CTL_TIMER_SEL_Pos 0UL +#define SRSS_CLK_TIMER_CTL_TIMER_SEL_Msk 0x1UL +#define SRSS_CLK_TIMER_CTL_TIMER_HF0_DIV_Pos 8UL +#define SRSS_CLK_TIMER_CTL_TIMER_HF0_DIV_Msk 0x300UL +#define SRSS_CLK_TIMER_CTL_TIMER_DIV_Pos 16UL +#define SRSS_CLK_TIMER_CTL_TIMER_DIV_Msk 0xFF0000UL +#define SRSS_CLK_TIMER_CTL_ENABLE_Pos 31UL +#define SRSS_CLK_TIMER_CTL_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_ILO_CONFIG */ +#define SRSS_CLK_ILO_CONFIG_ILO_BACKUP_Pos 0UL +#define SRSS_CLK_ILO_CONFIG_ILO_BACKUP_Msk 0x1UL +#define SRSS_CLK_ILO_CONFIG_ENABLE_Pos 31UL +#define SRSS_CLK_ILO_CONFIG_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_IMO_CONFIG */ +#define SRSS_CLK_IMO_CONFIG_ENABLE_Pos 31UL +#define SRSS_CLK_IMO_CONFIG_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_OUTPUT_FAST */ +#define SRSS_CLK_OUTPUT_FAST_FAST_SEL0_Pos 0UL +#define SRSS_CLK_OUTPUT_FAST_FAST_SEL0_Msk 0xFUL +#define SRSS_CLK_OUTPUT_FAST_PATH_SEL0_Pos 4UL +#define SRSS_CLK_OUTPUT_FAST_PATH_SEL0_Msk 0xF0UL +#define SRSS_CLK_OUTPUT_FAST_HFCLK_SEL0_Pos 8UL +#define SRSS_CLK_OUTPUT_FAST_HFCLK_SEL0_Msk 0xF00UL +#define SRSS_CLK_OUTPUT_FAST_FAST_SEL1_Pos 16UL +#define SRSS_CLK_OUTPUT_FAST_FAST_SEL1_Msk 0xF0000UL +#define SRSS_CLK_OUTPUT_FAST_PATH_SEL1_Pos 20UL +#define SRSS_CLK_OUTPUT_FAST_PATH_SEL1_Msk 0xF00000UL +#define SRSS_CLK_OUTPUT_FAST_HFCLK_SEL1_Pos 24UL +#define SRSS_CLK_OUTPUT_FAST_HFCLK_SEL1_Msk 0xF000000UL +/* SRSS.CLK_OUTPUT_SLOW */ +#define SRSS_CLK_OUTPUT_SLOW_SLOW_SEL0_Pos 0UL +#define SRSS_CLK_OUTPUT_SLOW_SLOW_SEL0_Msk 0xFUL +#define SRSS_CLK_OUTPUT_SLOW_SLOW_SEL1_Pos 4UL +#define SRSS_CLK_OUTPUT_SLOW_SLOW_SEL1_Msk 0xF0UL +/* SRSS.CLK_CAL_CNT1 */ +#define SRSS_CLK_CAL_CNT1_CAL_COUNTER1_Pos 0UL +#define SRSS_CLK_CAL_CNT1_CAL_COUNTER1_Msk 0xFFFFFFUL +#define SRSS_CLK_CAL_CNT1_CAL_COUNTER_DONE_Pos 31UL +#define SRSS_CLK_CAL_CNT1_CAL_COUNTER_DONE_Msk 0x80000000UL +/* SRSS.CLK_CAL_CNT2 */ +#define SRSS_CLK_CAL_CNT2_CAL_COUNTER2_Pos 0UL +#define SRSS_CLK_CAL_CNT2_CAL_COUNTER2_Msk 0xFFFFFFUL +/* SRSS.CLK_ECO_CONFIG */ +#define SRSS_CLK_ECO_CONFIG_AGC_EN_Pos 1UL +#define SRSS_CLK_ECO_CONFIG_AGC_EN_Msk 0x2UL +#define SRSS_CLK_ECO_CONFIG_ECO_EN_Pos 31UL +#define SRSS_CLK_ECO_CONFIG_ECO_EN_Msk 0x80000000UL +/* SRSS.CLK_ECO_STATUS */ +#define SRSS_CLK_ECO_STATUS_ECO_OK_Pos 0UL +#define SRSS_CLK_ECO_STATUS_ECO_OK_Msk 0x1UL +#define SRSS_CLK_ECO_STATUS_ECO_READY_Pos 1UL +#define SRSS_CLK_ECO_STATUS_ECO_READY_Msk 0x2UL +/* SRSS.CLK_PILO_CONFIG */ +#define SRSS_CLK_PILO_CONFIG_PILO_FFREQ_Pos 0UL +#define SRSS_CLK_PILO_CONFIG_PILO_FFREQ_Msk 0x3FFUL +#define SRSS_CLK_PILO_CONFIG_PILO_CLK_EN_Pos 29UL +#define SRSS_CLK_PILO_CONFIG_PILO_CLK_EN_Msk 0x20000000UL +#define SRSS_CLK_PILO_CONFIG_PILO_RESET_N_Pos 30UL +#define SRSS_CLK_PILO_CONFIG_PILO_RESET_N_Msk 0x40000000UL +#define SRSS_CLK_PILO_CONFIG_PILO_EN_Pos 31UL +#define SRSS_CLK_PILO_CONFIG_PILO_EN_Msk 0x80000000UL +/* SRSS.CLK_FLL_CONFIG */ +#define SRSS_CLK_FLL_CONFIG_FLL_MULT_Pos 0UL +#define SRSS_CLK_FLL_CONFIG_FLL_MULT_Msk 0x3FFFFUL +#define SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV_Pos 24UL +#define SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV_Msk 0x1000000UL +#define SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Pos 31UL +#define SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_FLL_CONFIG2 */ +#define SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV_Pos 0UL +#define SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV_Msk 0x1FFFUL +#define SRSS_CLK_FLL_CONFIG2_LOCK_TOL_Pos 16UL +#define SRSS_CLK_FLL_CONFIG2_LOCK_TOL_Msk 0x1FF0000UL +/* SRSS.CLK_FLL_CONFIG3 */ +#define SRSS_CLK_FLL_CONFIG3_FLL_LF_IGAIN_Pos 0UL +#define SRSS_CLK_FLL_CONFIG3_FLL_LF_IGAIN_Msk 0xFUL +#define SRSS_CLK_FLL_CONFIG3_FLL_LF_PGAIN_Pos 4UL +#define SRSS_CLK_FLL_CONFIG3_FLL_LF_PGAIN_Msk 0xF0UL +#define SRSS_CLK_FLL_CONFIG3_SETTLING_COUNT_Pos 8UL +#define SRSS_CLK_FLL_CONFIG3_SETTLING_COUNT_Msk 0x1FFF00UL +#define SRSS_CLK_FLL_CONFIG3_BYPASS_SEL_Pos 28UL +#define SRSS_CLK_FLL_CONFIG3_BYPASS_SEL_Msk 0x30000000UL +/* SRSS.CLK_FLL_CONFIG4 */ +#define SRSS_CLK_FLL_CONFIG4_CCO_LIMIT_Pos 0UL +#define SRSS_CLK_FLL_CONFIG4_CCO_LIMIT_Msk 0xFFUL +#define SRSS_CLK_FLL_CONFIG4_CCO_RANGE_Pos 8UL +#define SRSS_CLK_FLL_CONFIG4_CCO_RANGE_Msk 0x700UL +#define SRSS_CLK_FLL_CONFIG4_CCO_FREQ_Pos 16UL +#define SRSS_CLK_FLL_CONFIG4_CCO_FREQ_Msk 0x1FF0000UL +#define SRSS_CLK_FLL_CONFIG4_CCO_HW_UPDATE_DIS_Pos 30UL +#define SRSS_CLK_FLL_CONFIG4_CCO_HW_UPDATE_DIS_Msk 0x40000000UL +#define SRSS_CLK_FLL_CONFIG4_CCO_ENABLE_Pos 31UL +#define SRSS_CLK_FLL_CONFIG4_CCO_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_FLL_STATUS */ +#define SRSS_CLK_FLL_STATUS_LOCKED_Pos 0UL +#define SRSS_CLK_FLL_STATUS_LOCKED_Msk 0x1UL +#define SRSS_CLK_FLL_STATUS_UNLOCK_OCCURRED_Pos 1UL +#define SRSS_CLK_FLL_STATUS_UNLOCK_OCCURRED_Msk 0x2UL +#define SRSS_CLK_FLL_STATUS_CCO_READY_Pos 2UL +#define SRSS_CLK_FLL_STATUS_CCO_READY_Msk 0x4UL +/* SRSS.CLK_PLL_CONFIG */ +#define SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV_Pos 0UL +#define SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV_Msk 0x7FUL +#define SRSS_CLK_PLL_CONFIG_REFERENCE_DIV_Pos 8UL +#define SRSS_CLK_PLL_CONFIG_REFERENCE_DIV_Msk 0x1F00UL +#define SRSS_CLK_PLL_CONFIG_OUTPUT_DIV_Pos 16UL +#define SRSS_CLK_PLL_CONFIG_OUTPUT_DIV_Msk 0x1F0000UL +#define SRSS_CLK_PLL_CONFIG_PLL_LF_MODE_Pos 27UL +#define SRSS_CLK_PLL_CONFIG_PLL_LF_MODE_Msk 0x8000000UL +#define SRSS_CLK_PLL_CONFIG_BYPASS_SEL_Pos 28UL +#define SRSS_CLK_PLL_CONFIG_BYPASS_SEL_Msk 0x30000000UL +#define SRSS_CLK_PLL_CONFIG_ENABLE_Pos 31UL +#define SRSS_CLK_PLL_CONFIG_ENABLE_Msk 0x80000000UL +/* SRSS.CLK_PLL_STATUS */ +#define SRSS_CLK_PLL_STATUS_LOCKED_Pos 0UL +#define SRSS_CLK_PLL_STATUS_LOCKED_Msk 0x1UL +#define SRSS_CLK_PLL_STATUS_UNLOCK_OCCURRED_Pos 1UL +#define SRSS_CLK_PLL_STATUS_UNLOCK_OCCURRED_Msk 0x2UL +/* SRSS.SRSS_INTR */ +#define SRSS_SRSS_INTR_WDT_MATCH_Pos 0UL +#define SRSS_SRSS_INTR_WDT_MATCH_Msk 0x1UL +#define SRSS_SRSS_INTR_HVLVD1_Pos 1UL +#define SRSS_SRSS_INTR_HVLVD1_Msk 0x2UL +#define SRSS_SRSS_INTR_CLK_CAL_Pos 5UL +#define SRSS_SRSS_INTR_CLK_CAL_Msk 0x20UL +/* SRSS.SRSS_INTR_SET */ +#define SRSS_SRSS_INTR_SET_WDT_MATCH_Pos 0UL +#define SRSS_SRSS_INTR_SET_WDT_MATCH_Msk 0x1UL +#define SRSS_SRSS_INTR_SET_HVLVD1_Pos 1UL +#define SRSS_SRSS_INTR_SET_HVLVD1_Msk 0x2UL +#define SRSS_SRSS_INTR_SET_CLK_CAL_Pos 5UL +#define SRSS_SRSS_INTR_SET_CLK_CAL_Msk 0x20UL +/* SRSS.SRSS_INTR_MASK */ +#define SRSS_SRSS_INTR_MASK_WDT_MATCH_Pos 0UL +#define SRSS_SRSS_INTR_MASK_WDT_MATCH_Msk 0x1UL +#define SRSS_SRSS_INTR_MASK_HVLVD1_Pos 1UL +#define SRSS_SRSS_INTR_MASK_HVLVD1_Msk 0x2UL +#define SRSS_SRSS_INTR_MASK_CLK_CAL_Pos 5UL +#define SRSS_SRSS_INTR_MASK_CLK_CAL_Msk 0x20UL +/* SRSS.SRSS_INTR_MASKED */ +#define SRSS_SRSS_INTR_MASKED_WDT_MATCH_Pos 0UL +#define SRSS_SRSS_INTR_MASKED_WDT_MATCH_Msk 0x1UL +#define SRSS_SRSS_INTR_MASKED_HVLVD1_Pos 1UL +#define SRSS_SRSS_INTR_MASKED_HVLVD1_Msk 0x2UL +#define SRSS_SRSS_INTR_MASKED_CLK_CAL_Pos 5UL +#define SRSS_SRSS_INTR_MASKED_CLK_CAL_Msk 0x20UL +/* SRSS.SRSS_INTR_CFG */ +#define SRSS_SRSS_INTR_CFG_HVLVD1_EDGE_SEL_Pos 0UL +#define SRSS_SRSS_INTR_CFG_HVLVD1_EDGE_SEL_Msk 0x3UL +/* SRSS.RES_CAUSE */ +#define SRSS_RES_CAUSE_RESET_WDT_Pos 0UL +#define SRSS_RES_CAUSE_RESET_WDT_Msk 0x1UL +#define SRSS_RES_CAUSE_RESET_ACT_FAULT_Pos 1UL +#define SRSS_RES_CAUSE_RESET_ACT_FAULT_Msk 0x2UL +#define SRSS_RES_CAUSE_RESET_DPSLP_FAULT_Pos 2UL +#define SRSS_RES_CAUSE_RESET_DPSLP_FAULT_Msk 0x4UL +#define SRSS_RES_CAUSE_RESET_CSV_WCO_LOSS_Pos 3UL +#define SRSS_RES_CAUSE_RESET_CSV_WCO_LOSS_Msk 0x8UL +#define SRSS_RES_CAUSE_RESET_SOFT_Pos 4UL +#define SRSS_RES_CAUSE_RESET_SOFT_Msk 0x10UL +#define SRSS_RES_CAUSE_RESET_MCWDT0_Pos 5UL +#define SRSS_RES_CAUSE_RESET_MCWDT0_Msk 0x20UL +#define SRSS_RES_CAUSE_RESET_MCWDT1_Pos 6UL +#define SRSS_RES_CAUSE_RESET_MCWDT1_Msk 0x40UL +#define SRSS_RES_CAUSE_RESET_MCWDT2_Pos 7UL +#define SRSS_RES_CAUSE_RESET_MCWDT2_Msk 0x80UL +#define SRSS_RES_CAUSE_RESET_MCWDT3_Pos 8UL +#define SRSS_RES_CAUSE_RESET_MCWDT3_Msk 0x100UL +/* SRSS.RES_CAUSE2 */ +#define SRSS_RES_CAUSE2_RESET_CSV_HF_LOSS_Pos 0UL +#define SRSS_RES_CAUSE2_RESET_CSV_HF_LOSS_Msk 0xFFFFUL +#define SRSS_RES_CAUSE2_RESET_CSV_HF_FREQ_Pos 16UL +#define SRSS_RES_CAUSE2_RESET_CSV_HF_FREQ_Msk 0xFFFF0000UL +/* SRSS.PWR_TRIM_REF_CTL */ +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_TCTRIM_Pos 0UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_TCTRIM_Msk 0xFUL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_ITRIM_Pos 4UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_ITRIM_Msk 0xF0UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_ABSTRIM_Pos 8UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_ABSTRIM_Msk 0x1F00UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_IBOOST_Pos 14UL +#define SRSS_PWR_TRIM_REF_CTL_ACT_REF_IBOOST_Msk 0x4000UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_TCTRIM_Pos 16UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_TCTRIM_Msk 0xF0000UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_ABSTRIM_Pos 20UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_ABSTRIM_Msk 0x1F00000UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_ITRIM_Pos 28UL +#define SRSS_PWR_TRIM_REF_CTL_DPSLP_REF_ITRIM_Msk 0xF0000000UL +/* SRSS.PWR_TRIM_BODOVP_CTL */ +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_TRIPSEL_Pos 0UL +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_TRIPSEL_Msk 0x7UL +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_OFSTRIM_Pos 4UL +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_OFSTRIM_Msk 0x70UL +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_ITRIM_Pos 7UL +#define SRSS_PWR_TRIM_BODOVP_CTL_HVPORBOD_ITRIM_Msk 0x380UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_TRIPSEL_Pos 10UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_TRIPSEL_Msk 0x1C00UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_OFSTRIM_Pos 14UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_OFSTRIM_Msk 0x1C000UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_ITRIM_Pos 17UL +#define SRSS_PWR_TRIM_BODOVP_CTL_LVPORBOD_ITRIM_Msk 0xE0000UL +/* SRSS.CLK_TRIM_CCO_CTL */ +#define SRSS_CLK_TRIM_CCO_CTL_CCO_RCSTRIM_Pos 0UL +#define SRSS_CLK_TRIM_CCO_CTL_CCO_RCSTRIM_Msk 0x3FUL +#define SRSS_CLK_TRIM_CCO_CTL_CCO_STABLE_CNT_Pos 24UL +#define SRSS_CLK_TRIM_CCO_CTL_CCO_STABLE_CNT_Msk 0x3F000000UL +#define SRSS_CLK_TRIM_CCO_CTL_ENABLE_CNT_Pos 31UL +#define SRSS_CLK_TRIM_CCO_CTL_ENABLE_CNT_Msk 0x80000000UL +/* SRSS.CLK_TRIM_CCO_CTL2 */ +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM1_Pos 0UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM1_Msk 0x1FUL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM2_Pos 5UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM2_Msk 0x3E0UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM3_Pos 10UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM3_Msk 0x7C00UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM4_Pos 15UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM4_Msk 0xF8000UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM5_Pos 20UL +#define SRSS_CLK_TRIM_CCO_CTL2_CCO_FCTRIM5_Msk 0x1F00000UL +/* SRSS.PWR_TRIM_WAKE_CTL */ +#define SRSS_PWR_TRIM_WAKE_CTL_WAKE_DELAY_Pos 0UL +#define SRSS_PWR_TRIM_WAKE_CTL_WAKE_DELAY_Msk 0xFFUL +/* SRSS.PWR_TRIM_LVD_CTL */ +#define SRSS_PWR_TRIM_LVD_CTL_HVLVD1_OFSTRIM_Pos 0UL +#define SRSS_PWR_TRIM_LVD_CTL_HVLVD1_OFSTRIM_Msk 0x7UL +#define SRSS_PWR_TRIM_LVD_CTL_HVLVD1_ITRIM_Pos 4UL +#define SRSS_PWR_TRIM_LVD_CTL_HVLVD1_ITRIM_Msk 0x70UL +/* SRSS.CLK_TRIM_ILO_CTL */ +#define SRSS_CLK_TRIM_ILO_CTL_ILO_FTRIM_Pos 0UL +#define SRSS_CLK_TRIM_ILO_CTL_ILO_FTRIM_Msk 0x3FUL +/* SRSS.PWR_TRIM_PWRSYS_CTL */ +#define SRSS_PWR_TRIM_PWRSYS_CTL_ACT_REG_TRIM_Pos 0UL +#define SRSS_PWR_TRIM_PWRSYS_CTL_ACT_REG_TRIM_Msk 0x1FUL +#define SRSS_PWR_TRIM_PWRSYS_CTL_ACT_REG_BOOST_Pos 30UL +#define SRSS_PWR_TRIM_PWRSYS_CTL_ACT_REG_BOOST_Msk 0xC0000000UL +/* SRSS.CLK_TRIM_ECO_CTL */ +#define SRSS_CLK_TRIM_ECO_CTL_WDTRIM_Pos 0UL +#define SRSS_CLK_TRIM_ECO_CTL_WDTRIM_Msk 0x7UL +#define SRSS_CLK_TRIM_ECO_CTL_ATRIM_Pos 4UL +#define SRSS_CLK_TRIM_ECO_CTL_ATRIM_Msk 0xF0UL +#define SRSS_CLK_TRIM_ECO_CTL_FTRIM_Pos 8UL +#define SRSS_CLK_TRIM_ECO_CTL_FTRIM_Msk 0x300UL +#define SRSS_CLK_TRIM_ECO_CTL_RTRIM_Pos 10UL +#define SRSS_CLK_TRIM_ECO_CTL_RTRIM_Msk 0xC00UL +#define SRSS_CLK_TRIM_ECO_CTL_GTRIM_Pos 12UL +#define SRSS_CLK_TRIM_ECO_CTL_GTRIM_Msk 0x3000UL +#define SRSS_CLK_TRIM_ECO_CTL_ITRIM_Pos 16UL +#define SRSS_CLK_TRIM_ECO_CTL_ITRIM_Msk 0x3F0000UL +/* SRSS.CLK_TRIM_PILO_CTL */ +#define SRSS_CLK_TRIM_PILO_CTL_PILO_CFREQ_Pos 0UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_CFREQ_Msk 0x3FUL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_OSC_TRIM_Pos 12UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_OSC_TRIM_Msk 0x7000UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_COMP_TRIM_Pos 16UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_COMP_TRIM_Msk 0x30000UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_NBIAS_TRIM_Pos 18UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_NBIAS_TRIM_Msk 0xC0000UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_RES_TRIM_Pos 20UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_RES_TRIM_Msk 0x1F00000UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_ISLOPE_TRIM_Pos 26UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_ISLOPE_TRIM_Msk 0xC000000UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_VTDIFF_TRIM_Pos 28UL +#define SRSS_CLK_TRIM_PILO_CTL_PILO_VTDIFF_TRIM_Msk 0x70000000UL +/* SRSS.CLK_TRIM_PILO_CTL2 */ +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_VREF_TRIM_Pos 0UL +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_VREF_TRIM_Msk 0xFFUL +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_IREFBM_TRIM_Pos 8UL +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_IREFBM_TRIM_Msk 0x1F00UL +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_IREF_TRIM_Pos 16UL +#define SRSS_CLK_TRIM_PILO_CTL2_PILO_IREF_TRIM_Msk 0xFF0000UL +/* SRSS.CLK_TRIM_PILO_CTL3 */ +#define SRSS_CLK_TRIM_PILO_CTL3_PILO_ENGOPT_Pos 0UL +#define SRSS_CLK_TRIM_PILO_CTL3_PILO_ENGOPT_Msk 0xFFFFUL + + +#endif /* _CYIP_SRSS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_tcpwm.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_tcpwm.h new file mode 100644 index 00000000000..59dad62a9bc --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_tcpwm.h @@ -0,0 +1,200 @@ +/***************************************************************************//** +* \file cyip_tcpwm.h +* +* \brief +* TCPWM IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_TCPWM_H_ +#define _CYIP_TCPWM_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM_CNT_SECTION_SIZE 0x00000040UL +#define TCPWM_SECTION_SIZE 0x00010000UL + +/** + * \brief Timer/Counter/PWM Counter Module (TCPWM_CNT) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 Counter control register */ + __IM uint32_t STATUS; /*!< 0x00000004 Counter status register */ + __IOM uint32_t COUNTER; /*!< 0x00000008 Counter count register */ + __IOM uint32_t CC; /*!< 0x0000000C Counter compare/capture register */ + __IOM uint32_t CC_BUFF; /*!< 0x00000010 Counter buffered compare/capture register */ + __IOM uint32_t PERIOD; /*!< 0x00000014 Counter period register */ + __IOM uint32_t PERIOD_BUFF; /*!< 0x00000018 Counter buffered period register */ + __IM uint32_t RESERVED; + __IOM uint32_t TR_CTRL0; /*!< 0x00000020 Counter trigger control register 0 */ + __IOM uint32_t TR_CTRL1; /*!< 0x00000024 Counter trigger control register 1 */ + __IOM uint32_t TR_CTRL2; /*!< 0x00000028 Counter trigger control register 2 */ + __IM uint32_t RESERVED1; + __IOM uint32_t INTR; /*!< 0x00000030 Interrupt request register */ + __IOM uint32_t INTR_SET; /*!< 0x00000034 Interrupt set request register */ + __IOM uint32_t INTR_MASK; /*!< 0x00000038 Interrupt mask register */ + __IM uint32_t INTR_MASKED; /*!< 0x0000003C Interrupt masked request register */ +} TCPWM_CNT_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief Timer/Counter/PWM (TCPWM) + */ +typedef struct { + __IOM uint32_t CTRL; /*!< 0x00000000 TCPWM control register */ + __IOM uint32_t CTRL_CLR; /*!< 0x00000004 TCPWM control clear register */ + __IOM uint32_t CTRL_SET; /*!< 0x00000008 TCPWM control set register */ + __IOM uint32_t CMD_CAPTURE; /*!< 0x0000000C TCPWM capture command register */ + __IOM uint32_t CMD_RELOAD; /*!< 0x00000010 TCPWM reload command register */ + __IOM uint32_t CMD_STOP; /*!< 0x00000014 TCPWM stop command register */ + __IOM uint32_t CMD_START; /*!< 0x00000018 TCPWM start command register */ + __IM uint32_t INTR_CAUSE; /*!< 0x0000001C TCPWM Counter interrupt cause register */ + __IM uint32_t RESERVED[56]; + TCPWM_CNT_V1_Type CNT[32]; /*!< 0x00000100 Timer/Counter/PWM Counter Module */ +} TCPWM_V1_Type; /*!< Size = 2304 (0x900) */ + + +/* TCPWM_CNT.CTRL */ +#define TCPWM_CNT_CTRL_AUTO_RELOAD_CC_Pos 0UL +#define TCPWM_CNT_CTRL_AUTO_RELOAD_CC_Msk 0x1UL +#define TCPWM_CNT_CTRL_AUTO_RELOAD_PERIOD_Pos 1UL +#define TCPWM_CNT_CTRL_AUTO_RELOAD_PERIOD_Msk 0x2UL +#define TCPWM_CNT_CTRL_PWM_SYNC_KILL_Pos 2UL +#define TCPWM_CNT_CTRL_PWM_SYNC_KILL_Msk 0x4UL +#define TCPWM_CNT_CTRL_PWM_STOP_ON_KILL_Pos 3UL +#define TCPWM_CNT_CTRL_PWM_STOP_ON_KILL_Msk 0x8UL +#define TCPWM_CNT_CTRL_GENERIC_Pos 8UL +#define TCPWM_CNT_CTRL_GENERIC_Msk 0xFF00UL +#define TCPWM_CNT_CTRL_UP_DOWN_MODE_Pos 16UL +#define TCPWM_CNT_CTRL_UP_DOWN_MODE_Msk 0x30000UL +#define TCPWM_CNT_CTRL_ONE_SHOT_Pos 18UL +#define TCPWM_CNT_CTRL_ONE_SHOT_Msk 0x40000UL +#define TCPWM_CNT_CTRL_QUADRATURE_MODE_Pos 20UL +#define TCPWM_CNT_CTRL_QUADRATURE_MODE_Msk 0x300000UL +#define TCPWM_CNT_CTRL_MODE_Pos 24UL +#define TCPWM_CNT_CTRL_MODE_Msk 0x7000000UL +/* TCPWM_CNT.STATUS */ +#define TCPWM_CNT_STATUS_DOWN_Pos 0UL +#define TCPWM_CNT_STATUS_DOWN_Msk 0x1UL +#define TCPWM_CNT_STATUS_GENERIC_Pos 8UL +#define TCPWM_CNT_STATUS_GENERIC_Msk 0xFF00UL +#define TCPWM_CNT_STATUS_RUNNING_Pos 31UL +#define TCPWM_CNT_STATUS_RUNNING_Msk 0x80000000UL +/* TCPWM_CNT.COUNTER */ +#define TCPWM_CNT_COUNTER_COUNTER_Pos 0UL +#define TCPWM_CNT_COUNTER_COUNTER_Msk 0xFFFFFFFFUL +/* TCPWM_CNT.CC */ +#define TCPWM_CNT_CC_CC_Pos 0UL +#define TCPWM_CNT_CC_CC_Msk 0xFFFFFFFFUL +/* TCPWM_CNT.CC_BUFF */ +#define TCPWM_CNT_CC_BUFF_CC_Pos 0UL +#define TCPWM_CNT_CC_BUFF_CC_Msk 0xFFFFFFFFUL +/* TCPWM_CNT.PERIOD */ +#define TCPWM_CNT_PERIOD_PERIOD_Pos 0UL +#define TCPWM_CNT_PERIOD_PERIOD_Msk 0xFFFFFFFFUL +/* TCPWM_CNT.PERIOD_BUFF */ +#define TCPWM_CNT_PERIOD_BUFF_PERIOD_Pos 0UL +#define TCPWM_CNT_PERIOD_BUFF_PERIOD_Msk 0xFFFFFFFFUL +/* TCPWM_CNT.TR_CTRL0 */ +#define TCPWM_CNT_TR_CTRL0_CAPTURE_SEL_Pos 0UL +#define TCPWM_CNT_TR_CTRL0_CAPTURE_SEL_Msk 0xFUL +#define TCPWM_CNT_TR_CTRL0_COUNT_SEL_Pos 4UL +#define TCPWM_CNT_TR_CTRL0_COUNT_SEL_Msk 0xF0UL +#define TCPWM_CNT_TR_CTRL0_RELOAD_SEL_Pos 8UL +#define TCPWM_CNT_TR_CTRL0_RELOAD_SEL_Msk 0xF00UL +#define TCPWM_CNT_TR_CTRL0_STOP_SEL_Pos 12UL +#define TCPWM_CNT_TR_CTRL0_STOP_SEL_Msk 0xF000UL +#define TCPWM_CNT_TR_CTRL0_START_SEL_Pos 16UL +#define TCPWM_CNT_TR_CTRL0_START_SEL_Msk 0xF0000UL +/* TCPWM_CNT.TR_CTRL1 */ +#define TCPWM_CNT_TR_CTRL1_CAPTURE_EDGE_Pos 0UL +#define TCPWM_CNT_TR_CTRL1_CAPTURE_EDGE_Msk 0x3UL +#define TCPWM_CNT_TR_CTRL1_COUNT_EDGE_Pos 2UL +#define TCPWM_CNT_TR_CTRL1_COUNT_EDGE_Msk 0xCUL +#define TCPWM_CNT_TR_CTRL1_RELOAD_EDGE_Pos 4UL +#define TCPWM_CNT_TR_CTRL1_RELOAD_EDGE_Msk 0x30UL +#define TCPWM_CNT_TR_CTRL1_STOP_EDGE_Pos 6UL +#define TCPWM_CNT_TR_CTRL1_STOP_EDGE_Msk 0xC0UL +#define TCPWM_CNT_TR_CTRL1_START_EDGE_Pos 8UL +#define TCPWM_CNT_TR_CTRL1_START_EDGE_Msk 0x300UL +/* TCPWM_CNT.TR_CTRL2 */ +#define TCPWM_CNT_TR_CTRL2_CC_MATCH_MODE_Pos 0UL +#define TCPWM_CNT_TR_CTRL2_CC_MATCH_MODE_Msk 0x3UL +#define TCPWM_CNT_TR_CTRL2_OVERFLOW_MODE_Pos 2UL +#define TCPWM_CNT_TR_CTRL2_OVERFLOW_MODE_Msk 0xCUL +#define TCPWM_CNT_TR_CTRL2_UNDERFLOW_MODE_Pos 4UL +#define TCPWM_CNT_TR_CTRL2_UNDERFLOW_MODE_Msk 0x30UL +/* TCPWM_CNT.INTR */ +#define TCPWM_CNT_INTR_TC_Pos 0UL +#define TCPWM_CNT_INTR_TC_Msk 0x1UL +#define TCPWM_CNT_INTR_CC_MATCH_Pos 1UL +#define TCPWM_CNT_INTR_CC_MATCH_Msk 0x2UL +/* TCPWM_CNT.INTR_SET */ +#define TCPWM_CNT_INTR_SET_TC_Pos 0UL +#define TCPWM_CNT_INTR_SET_TC_Msk 0x1UL +#define TCPWM_CNT_INTR_SET_CC_MATCH_Pos 1UL +#define TCPWM_CNT_INTR_SET_CC_MATCH_Msk 0x2UL +/* TCPWM_CNT.INTR_MASK */ +#define TCPWM_CNT_INTR_MASK_TC_Pos 0UL +#define TCPWM_CNT_INTR_MASK_TC_Msk 0x1UL +#define TCPWM_CNT_INTR_MASK_CC_MATCH_Pos 1UL +#define TCPWM_CNT_INTR_MASK_CC_MATCH_Msk 0x2UL +/* TCPWM_CNT.INTR_MASKED */ +#define TCPWM_CNT_INTR_MASKED_TC_Pos 0UL +#define TCPWM_CNT_INTR_MASKED_TC_Msk 0x1UL +#define TCPWM_CNT_INTR_MASKED_CC_MATCH_Pos 1UL +#define TCPWM_CNT_INTR_MASKED_CC_MATCH_Msk 0x2UL + + +/* TCPWM.CTRL */ +#define TCPWM_CTRL_COUNTER_ENABLED_Pos 0UL +#define TCPWM_CTRL_COUNTER_ENABLED_Msk 0xFFFFFFFFUL +/* TCPWM.CTRL_CLR */ +#define TCPWM_CTRL_CLR_COUNTER_ENABLED_Pos 0UL +#define TCPWM_CTRL_CLR_COUNTER_ENABLED_Msk 0xFFFFFFFFUL +/* TCPWM.CTRL_SET */ +#define TCPWM_CTRL_SET_COUNTER_ENABLED_Pos 0UL +#define TCPWM_CTRL_SET_COUNTER_ENABLED_Msk 0xFFFFFFFFUL +/* TCPWM.CMD_CAPTURE */ +#define TCPWM_CMD_CAPTURE_COUNTER_CAPTURE_Pos 0UL +#define TCPWM_CMD_CAPTURE_COUNTER_CAPTURE_Msk 0xFFFFFFFFUL +/* TCPWM.CMD_RELOAD */ +#define TCPWM_CMD_RELOAD_COUNTER_RELOAD_Pos 0UL +#define TCPWM_CMD_RELOAD_COUNTER_RELOAD_Msk 0xFFFFFFFFUL +/* TCPWM.CMD_STOP */ +#define TCPWM_CMD_STOP_COUNTER_STOP_Pos 0UL +#define TCPWM_CMD_STOP_COUNTER_STOP_Msk 0xFFFFFFFFUL +/* TCPWM.CMD_START */ +#define TCPWM_CMD_START_COUNTER_START_Pos 0UL +#define TCPWM_CMD_START_COUNTER_START_Msk 0xFFFFFFFFUL +/* TCPWM.INTR_CAUSE */ +#define TCPWM_INTR_CAUSE_COUNTER_INT_Pos 0UL +#define TCPWM_INTR_CAUSE_COUNTER_INT_Msk 0xFFFFFFFFUL + + +#endif /* _CYIP_TCPWM_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_udb.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_udb.h new file mode 100644 index 00000000000..4f8dff4a349 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_udb.h @@ -0,0 +1,2035 @@ +/***************************************************************************//** +* \file cyip_udb.h +* +* \brief +* UDB IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_UDB_H_ +#define _CYIP_UDB_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* UDB +*******************************************************************************/ + +#define UDB_WRKONE_SECTION_SIZE 0x00000800UL +#define UDB_WRKMULT_SECTION_SIZE 0x00001000UL +#define UDB_UDBPAIR_UDBSNG_SECTION_SIZE 0x00000080UL +#define UDB_UDBPAIR_ROUTE_SECTION_SIZE 0x00000100UL +#define UDB_UDBPAIR_SECTION_SIZE 0x00000200UL +#define UDB_DSI_SECTION_SIZE 0x00000080UL +#define UDB_PA_SECTION_SIZE 0x00000040UL +#define UDB_BCTL_SECTION_SIZE 0x00000080UL +#define UDB_UDBIF_SECTION_SIZE 0x00000020UL +#define UDB_SECTION_SIZE 0x00010000UL + +/** + * \brief UDB Working Registers (2 registers from one UDB at a time) (UDB_WRKONE) + */ +typedef struct { + __IOM uint32_t A[64]; /*!< 0x00000000 Accumulator Registers {A1,A0} */ + __IOM uint32_t D[64]; /*!< 0x00000100 Data Registers {D1,D0} */ + __IOM uint32_t F[64]; /*!< 0x00000200 FIFOs {F1,F0} */ + __IOM uint32_t CTL_ST[64]; /*!< 0x00000300 Status and Control Registers {CTL,ST} */ + __IOM uint32_t ACTL_MSK[64]; /*!< 0x00000400 Mask and Auxiliary Control Registers {ACTL,MSK} */ + __IM uint32_t MC[64]; /*!< 0x00000500 PLD Macrocell Read Registers {00,MC} */ + __IM uint32_t RESERVED[128]; +} UDB_WRKONE_V1_Type; /*!< Size = 2048 (0x800) */ + +/** + * \brief UDB Working Registers (1 register from multiple UDBs at a time) (UDB_WRKMULT) + */ +typedef struct { + __IOM uint32_t A0[64]; /*!< 0x00000000 Accumulator 0 */ + __IOM uint32_t A1[64]; /*!< 0x00000100 Accumulator 1 */ + __IOM uint32_t D0[64]; /*!< 0x00000200 Data 0 */ + __IOM uint32_t D1[64]; /*!< 0x00000300 Data 1 */ + __IOM uint32_t F0[64]; /*!< 0x00000400 FIFO 0 */ + __IOM uint32_t F1[64]; /*!< 0x00000500 FIFO 1 */ + __IM uint32_t ST[64]; /*!< 0x00000600 Status Register */ + __IOM uint32_t CTL[64]; /*!< 0x00000700 Control Register */ + __IOM uint32_t MSK[64]; /*!< 0x00000800 Interrupt Mask */ + __IOM uint32_t ACTL[64]; /*!< 0x00000900 Auxiliary Control */ + __IM uint32_t MC[64]; /*!< 0x00000A00 PLD Macrocell reading */ + __IM uint32_t RESERVED[320]; +} UDB_WRKMULT_V1_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief Single UDB Configuration (UDB_UDBPAIR_UDBSNG) + */ +typedef struct { + __IOM uint32_t PLD_IT[12]; /*!< 0x00000000 PLD Input Terms */ + __IOM uint32_t PLD_ORT0; /*!< 0x00000030 PLD OR Terms */ + __IOM uint32_t PLD_ORT1; /*!< 0x00000034 PLD OR Terms */ + __IOM uint32_t PLD_CFG0; /*!< 0x00000038 PLD configuration for Carry Enable, Constant, and XOR feedback */ + __IOM uint32_t PLD_CFG1; /*!< 0x0000003C PLD configuration for Set / Reset selection, and Bypass control */ + __IOM uint32_t DPATH_CFG0; /*!< 0x00000040 Datapath input selections (RAD0, RAD1, RAD2, F0_LD, F1_LD, + D0_LD, D1_LD) */ + __IOM uint32_t DPATH_CFG1; /*!< 0x00000044 Datapath input and output selections (SCI_MUX, SI_MUX, OUT0 + thru OUT5) */ + __IOM uint32_t DPATH_CFG2; /*!< 0x00000048 Datapath output synchronization, ALU mask, compare 0 and 1 + masks */ + __IOM uint32_t DPATH_CFG3; /*!< 0x0000004C Datapath mask enables, shift in, carry in, compare, chaining, + MSB configs; FIFO, shift and parallel input control */ + __IOM uint32_t DPATH_CFG4; /*!< 0x00000050 Datapath FIFO and register access configuration control */ + __IOM uint32_t SC_CFG0; /*!< 0x00000054 SC Mode 0 and 1 control registers; status register input mode; + general SC configuration */ + __IOM uint32_t SC_CFG1; /*!< 0x00000058 SC counter control */ + __IOM uint32_t RC_CFG0; /*!< 0x0000005C PLD0, PLD1, Datatpath, and SC clock and reset control */ + __IOM uint32_t RC_CFG1; /*!< 0x00000060 PLD0, PLD1, Datatpath, and SC clock selection, general reset + control */ + __IOM uint32_t DPATH_OPC[4]; /*!< 0x00000064 Datapath opcode configuration */ + __IM uint32_t RESERVED[3]; +} UDB_UDBPAIR_UDBSNG_V1_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief Routing Configuration for one UDB Pair (UDB_UDBPAIR_ROUTE) + */ +typedef struct { + __IOM uint32_t TOP_V_BOT; /*!< 0x00000000 Top Vertical Input (TVI) vs Bottom Vertical Input (BVI) muxing */ + __IOM uint32_t LVO1_V_2; /*!< 0x00000004 Left Vertical Ouput (LVO) 1 vs 2 muxing for certain horizontals */ + __IOM uint32_t RVO1_V_2; /*!< 0x00000008 Right Vertical Ouput (RVO) 1 vs 2 muxing for certain + horizontals */ + __IOM uint32_t TUI_CFG0; /*!< 0x0000000C Top UDB Input (TUI) selection */ + __IOM uint32_t TUI_CFG1; /*!< 0x00000010 Top UDB Input (TUI) selection */ + __IOM uint32_t TUI_CFG2; /*!< 0x00000014 Top UDB Input (TUI) selection */ + __IOM uint32_t TUI_CFG3; /*!< 0x00000018 Top UDB Input (TUI) selection */ + __IOM uint32_t TUI_CFG4; /*!< 0x0000001C Top UDB Input (TUI) selection */ + __IOM uint32_t TUI_CFG5; /*!< 0x00000020 Top UDB Input (TUI) selection */ + __IOM uint32_t BUI_CFG0; /*!< 0x00000024 Bottom UDB Input (BUI) selection */ + __IOM uint32_t BUI_CFG1; /*!< 0x00000028 Bottom UDB Input (BUI) selection */ + __IOM uint32_t BUI_CFG2; /*!< 0x0000002C Bottom UDB Input (BUI) selection */ + __IOM uint32_t BUI_CFG3; /*!< 0x00000030 Bottom UDB Input (BUI) selection */ + __IOM uint32_t BUI_CFG4; /*!< 0x00000034 Bottom UDB Input (BUI) selection */ + __IOM uint32_t BUI_CFG5; /*!< 0x00000038 Bottom UDB Input (BUI) selection */ + __IOM uint32_t RVO_CFG0; /*!< 0x0000003C Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG1; /*!< 0x00000040 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG2; /*!< 0x00000044 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG3; /*!< 0x00000048 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t LVO_CFG0; /*!< 0x0000004C Left Vertical Ouput (LVO) selection */ + __IOM uint32_t LVO_CFG1; /*!< 0x00000050 Left Vertical Ouput (LVO) selection */ + __IOM uint32_t RHO_CFG0; /*!< 0x00000054 Right Horizontal Out (RHO) selection */ + __IOM uint32_t RHO_CFG1; /*!< 0x00000058 Right Horizontal Out (RHO) selection */ + __IOM uint32_t RHO_CFG2; /*!< 0x0000005C Right Horizontal Out (RHO) selection */ + __IOM uint32_t LHO_CFG0; /*!< 0x00000060 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG1; /*!< 0x00000064 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG2; /*!< 0x00000068 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG3; /*!< 0x0000006C Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG4; /*!< 0x00000070 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG5; /*!< 0x00000074 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG6; /*!< 0x00000078 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG7; /*!< 0x0000007C Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG8; /*!< 0x00000080 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG9; /*!< 0x00000084 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG10; /*!< 0x00000088 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG11; /*!< 0x0000008C Left Horizontal Out (LHO) selection */ + __IM uint32_t RESERVED[28]; +} UDB_UDBPAIR_ROUTE_V1_Type; /*!< Size = 256 (0x100) */ + +/** + * \brief UDB Pair Configuration (up to 32 Pairs) (UDB_UDBPAIR) + */ +typedef struct { + UDB_UDBPAIR_UDBSNG_V1_Type UDBSNG[2]; /*!< 0x00000000 Single UDB Configuration */ + UDB_UDBPAIR_ROUTE_V1_Type ROUTE; /*!< 0x00000100 Routing Configuration for one UDB Pair */ +} UDB_UDBPAIR_V1_Type; /*!< Size = 512 (0x200) */ + +/** + * \brief DSI Configuration (up to 32 DSI) (UDB_DSI) + */ +typedef struct { + __IOM uint32_t LVO1_V_2; /*!< 0x00000000 Left Vertical Ouput (LVO) 1 vs 2 muxing for certain horizontals */ + __IOM uint32_t RVO1_V_2; /*!< 0x00000004 Right Vertical Ouput (RVO) 1 vs 2 muxing for certain + horizontals */ + __IOM uint32_t DOP_CFG0; /*!< 0x00000008 DSI Out Pair (DOP) selection */ + __IOM uint32_t DOP_CFG1; /*!< 0x0000000C DSI Out Pair (DOP) selection */ + __IOM uint32_t DOP_CFG2; /*!< 0x00000010 DSI Out Pair (DOP) selection */ + __IOM uint32_t DOP_CFG3; /*!< 0x00000014 DSI Out Pair (DOP) selection */ + __IOM uint32_t DOT_CFG0; /*!< 0x00000018 DSI Out Triplet (DOT) selection */ + __IOM uint32_t DOT_CFG1; /*!< 0x0000001C DSI Out Triplet (DOT) selection */ + __IOM uint32_t DOT_CFG2; /*!< 0x00000020 DSI Out Triplet (DOT) selection */ + __IOM uint32_t DOT_CFG3; /*!< 0x00000024 DSI Out Triplet (DOT) selection */ + __IOM uint32_t RVO_CFG0; /*!< 0x00000028 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG1; /*!< 0x0000002C Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG2; /*!< 0x00000030 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t RVO_CFG3; /*!< 0x00000034 Right Vertical Ouput (RVO) selection */ + __IOM uint32_t LVO_CFG0; /*!< 0x00000038 Left Vertical Ouput (LVO) selection */ + __IOM uint32_t LVO_CFG1; /*!< 0x0000003C Left Vertical Ouput (LVO) selection */ + __IOM uint32_t RHO_CFG0; /*!< 0x00000040 Right Horizontal Out (RHO) selection */ + __IOM uint32_t RHO_CFG1; /*!< 0x00000044 Right Horizontal Out (RHO) selection */ + __IOM uint32_t RHO_CFG2; /*!< 0x00000048 Right Horizontal Out (RHO) selection */ + __IOM uint32_t LHO_CFG0; /*!< 0x0000004C Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG1; /*!< 0x00000050 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG2; /*!< 0x00000054 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG3; /*!< 0x00000058 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG4; /*!< 0x0000005C Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG5; /*!< 0x00000060 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG6; /*!< 0x00000064 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG7; /*!< 0x00000068 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG8; /*!< 0x0000006C Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG9; /*!< 0x00000070 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG10; /*!< 0x00000074 Left Horizontal Out (LHO) selection */ + __IOM uint32_t LHO_CFG11; /*!< 0x00000078 Left Horizontal Out (LHO) selection */ + __IM uint32_t RESERVED; +} UDB_DSI_V1_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief Port Adapter Configuration (up to 32 PA) (UDB_PA) + */ +typedef struct { + __IOM uint32_t CFG0; /*!< 0x00000000 PA Data In Clock Control Register */ + __IOM uint32_t CFG1; /*!< 0x00000004 PA Data Out Clock Control Register */ + __IOM uint32_t CFG2; /*!< 0x00000008 PA Clock Select Register */ + __IOM uint32_t CFG3; /*!< 0x0000000C PA Reset Select Register */ + __IOM uint32_t CFG4; /*!< 0x00000010 PA Reset Enable Register */ + __IOM uint32_t CFG5; /*!< 0x00000014 PA Reset Pin Select Register */ + __IOM uint32_t CFG6; /*!< 0x00000018 PA Input Data Sync Control Register - Low */ + __IOM uint32_t CFG7; /*!< 0x0000001C PA Input Data Sync Control Register - High */ + __IOM uint32_t CFG8; /*!< 0x00000020 PA Output Data Sync Control Register - Low */ + __IOM uint32_t CFG9; /*!< 0x00000024 PA Output Data Sync Control Register - High */ + __IOM uint32_t CFG10; /*!< 0x00000028 PA Output Data Select Register - Low */ + __IOM uint32_t CFG11; /*!< 0x0000002C PA Output Data Select Register - High */ + __IOM uint32_t CFG12; /*!< 0x00000030 PA OE Select Register - Low */ + __IOM uint32_t CFG13; /*!< 0x00000034 PA OE Select Register - High */ + __IOM uint32_t CFG14; /*!< 0x00000038 PA OE Sync Register */ + __IM uint32_t RESERVED; +} UDB_PA_V1_Type; /*!< Size = 64 (0x40) */ + +/** + * \brief UDB Array Bank Control (UDB_BCTL) + */ +typedef struct { + __IOM uint32_t MDCLK_EN; /*!< 0x00000000 Master Digital Clock Enable Register */ + __IOM uint32_t MBCLK_EN; /*!< 0x00000004 Master clk_peri_app Enable Register */ + __IOM uint32_t BOTSEL_L; /*!< 0x00000008 Lower Nibble Bottom Digital Clock Select Register */ + __IOM uint32_t BOTSEL_U; /*!< 0x0000000C Upper Nibble Bottom Digital Clock Select Register */ + __IOM uint32_t QCLK_EN[16]; /*!< 0x00000010 Quadrant Digital Clock Enable Registers */ + __IM uint32_t RESERVED[12]; +} UDB_BCTL_V1_Type; /*!< Size = 128 (0x80) */ + +/** + * \brief UDB Subsystem Interface Configuration (UDB_UDBIF) + */ +typedef struct { + __IOM uint32_t BANK_CTL; /*!< 0x00000000 Bank Control */ + __IOM uint32_t INT_CLK_CTL; /*!< 0x00000004 Interrupt Clock Control */ + __IOM uint32_t INT_CFG; /*!< 0x00000008 Interrupt Configuration */ + __IOM uint32_t TR_CLK_CTL; /*!< 0x0000000C Trigger Clock Control */ + __IOM uint32_t TR_CFG; /*!< 0x00000010 Trigger Configuration */ + __IOM uint32_t PRIVATE; /*!< 0x00000014 Internal use only */ + __IM uint32_t RESERVED[2]; +} UDB_UDBIF_V1_Type; /*!< Size = 32 (0x20) */ + +/** + * \brief Programmable Digital Subsystem (UDB) + */ +typedef struct { + UDB_WRKONE_V1_Type WRKONE; /*!< 0x00000000 UDB Working Registers (2 registers from one UDB at a time) */ + __IM uint32_t RESERVED[512]; + UDB_WRKMULT_V1_Type WRKMULT; /*!< 0x00001000 UDB Working Registers (1 register from multiple UDBs at a time) */ + UDB_UDBPAIR_V1_Type UDBPAIR[32]; /*!< 0x00002000 UDB Pair Configuration (up to 32 Pairs) */ + UDB_DSI_V1_Type DSI[32]; /*!< 0x00006000 DSI Configuration (up to 32 DSI) */ + UDB_PA_V1_Type PA[32]; /*!< 0x00007000 Port Adapter Configuration (up to 32 PA) */ + UDB_BCTL_V1_Type BCTL; /*!< 0x00007800 UDB Array Bank Control */ + __IM uint32_t RESERVED1[32]; + UDB_UDBIF_V1_Type UDBIF; /*!< 0x00007900 UDB Subsystem Interface Configuration */ +} UDB_V1_Type; /*!< Size = 31008 (0x7920) */ + + +/* UDB_WRKONE.A */ +#define UDB_WRKONE_A_A0_Pos 0UL +#define UDB_WRKONE_A_A0_Msk 0xFFUL +#define UDB_WRKONE_A_A1_Pos 8UL +#define UDB_WRKONE_A_A1_Msk 0xFF00UL +/* UDB_WRKONE.D */ +#define UDB_WRKONE_D_D0_Pos 0UL +#define UDB_WRKONE_D_D0_Msk 0xFFUL +#define UDB_WRKONE_D_D1_Pos 8UL +#define UDB_WRKONE_D_D1_Msk 0xFF00UL +/* UDB_WRKONE.F */ +#define UDB_WRKONE_F_F0_Pos 0UL +#define UDB_WRKONE_F_F0_Msk 0xFFUL +#define UDB_WRKONE_F_F1_Pos 8UL +#define UDB_WRKONE_F_F1_Msk 0xFF00UL +/* UDB_WRKONE.CTL_ST */ +#define UDB_WRKONE_CTL_ST_ST_Pos 0UL +#define UDB_WRKONE_CTL_ST_ST_Msk 0xFFUL +#define UDB_WRKONE_CTL_ST_CTL_Pos 8UL +#define UDB_WRKONE_CTL_ST_CTL_Msk 0xFF00UL +/* UDB_WRKONE.ACTL_MSK */ +#define UDB_WRKONE_ACTL_MSK_MSK_Pos 0UL +#define UDB_WRKONE_ACTL_MSK_MSK_Msk 0x7FUL +#define UDB_WRKONE_ACTL_MSK_FIFO0_CLR_Pos 8UL +#define UDB_WRKONE_ACTL_MSK_FIFO0_CLR_Msk 0x100UL +#define UDB_WRKONE_ACTL_MSK_FIFO1_CLR_Pos 9UL +#define UDB_WRKONE_ACTL_MSK_FIFO1_CLR_Msk 0x200UL +#define UDB_WRKONE_ACTL_MSK_FIFO0_LVL_Pos 10UL +#define UDB_WRKONE_ACTL_MSK_FIFO0_LVL_Msk 0x400UL +#define UDB_WRKONE_ACTL_MSK_FIFO1_LVL_Pos 11UL +#define UDB_WRKONE_ACTL_MSK_FIFO1_LVL_Msk 0x800UL +#define UDB_WRKONE_ACTL_MSK_INT_EN_Pos 12UL +#define UDB_WRKONE_ACTL_MSK_INT_EN_Msk 0x1000UL +#define UDB_WRKONE_ACTL_MSK_CNT_START_Pos 13UL +#define UDB_WRKONE_ACTL_MSK_CNT_START_Msk 0x2000UL +/* UDB_WRKONE.MC */ +#define UDB_WRKONE_MC_PLD0_MC_Pos 0UL +#define UDB_WRKONE_MC_PLD0_MC_Msk 0xFUL +#define UDB_WRKONE_MC_PLD1_MC_Pos 4UL +#define UDB_WRKONE_MC_PLD1_MC_Msk 0xF0UL + + +/* UDB_WRKMULT.A0 */ +#define UDB_WRKMULT_A0_A0_0_Pos 0UL +#define UDB_WRKMULT_A0_A0_0_Msk 0xFFUL +#define UDB_WRKMULT_A0_A0_1_Pos 8UL +#define UDB_WRKMULT_A0_A0_1_Msk 0xFF00UL +#define UDB_WRKMULT_A0_A0_2_Pos 16UL +#define UDB_WRKMULT_A0_A0_2_Msk 0xFF0000UL +#define UDB_WRKMULT_A0_A0_3_Pos 24UL +#define UDB_WRKMULT_A0_A0_3_Msk 0xFF000000UL +/* UDB_WRKMULT.A1 */ +#define UDB_WRKMULT_A1_A1_0_Pos 0UL +#define UDB_WRKMULT_A1_A1_0_Msk 0xFFUL +#define UDB_WRKMULT_A1_A1_1_Pos 8UL +#define UDB_WRKMULT_A1_A1_1_Msk 0xFF00UL +#define UDB_WRKMULT_A1_A1_2_Pos 16UL +#define UDB_WRKMULT_A1_A1_2_Msk 0xFF0000UL +#define UDB_WRKMULT_A1_A1_3_Pos 24UL +#define UDB_WRKMULT_A1_A1_3_Msk 0xFF000000UL +/* UDB_WRKMULT.D0 */ +#define UDB_WRKMULT_D0_D0_0_Pos 0UL +#define UDB_WRKMULT_D0_D0_0_Msk 0xFFUL +#define UDB_WRKMULT_D0_D0_1_Pos 8UL +#define UDB_WRKMULT_D0_D0_1_Msk 0xFF00UL +#define UDB_WRKMULT_D0_D0_2_Pos 16UL +#define UDB_WRKMULT_D0_D0_2_Msk 0xFF0000UL +#define UDB_WRKMULT_D0_D0_3_Pos 24UL +#define UDB_WRKMULT_D0_D0_3_Msk 0xFF000000UL +/* UDB_WRKMULT.D1 */ +#define UDB_WRKMULT_D1_D1_0_Pos 0UL +#define UDB_WRKMULT_D1_D1_0_Msk 0xFFUL +#define UDB_WRKMULT_D1_D1_1_Pos 8UL +#define UDB_WRKMULT_D1_D1_1_Msk 0xFF00UL +#define UDB_WRKMULT_D1_D1_2_Pos 16UL +#define UDB_WRKMULT_D1_D1_2_Msk 0xFF0000UL +#define UDB_WRKMULT_D1_D1_3_Pos 24UL +#define UDB_WRKMULT_D1_D1_3_Msk 0xFF000000UL +/* UDB_WRKMULT.F0 */ +#define UDB_WRKMULT_F0_F0_0_Pos 0UL +#define UDB_WRKMULT_F0_F0_0_Msk 0xFFUL +#define UDB_WRKMULT_F0_F0_1_Pos 8UL +#define UDB_WRKMULT_F0_F0_1_Msk 0xFF00UL +#define UDB_WRKMULT_F0_F0_2_Pos 16UL +#define UDB_WRKMULT_F0_F0_2_Msk 0xFF0000UL +#define UDB_WRKMULT_F0_F0_3_Pos 24UL +#define UDB_WRKMULT_F0_F0_3_Msk 0xFF000000UL +/* UDB_WRKMULT.F1 */ +#define UDB_WRKMULT_F1_F1_0_Pos 0UL +#define UDB_WRKMULT_F1_F1_0_Msk 0xFFUL +#define UDB_WRKMULT_F1_F1_1_Pos 8UL +#define UDB_WRKMULT_F1_F1_1_Msk 0xFF00UL +#define UDB_WRKMULT_F1_F1_2_Pos 16UL +#define UDB_WRKMULT_F1_F1_2_Msk 0xFF0000UL +#define UDB_WRKMULT_F1_F1_3_Pos 24UL +#define UDB_WRKMULT_F1_F1_3_Msk 0xFF000000UL +/* UDB_WRKMULT.ST */ +#define UDB_WRKMULT_ST_ST_0_Pos 0UL +#define UDB_WRKMULT_ST_ST_0_Msk 0xFFUL +#define UDB_WRKMULT_ST_ST_1_Pos 8UL +#define UDB_WRKMULT_ST_ST_1_Msk 0xFF00UL +#define UDB_WRKMULT_ST_ST_2_Pos 16UL +#define UDB_WRKMULT_ST_ST_2_Msk 0xFF0000UL +#define UDB_WRKMULT_ST_ST_3_Pos 24UL +#define UDB_WRKMULT_ST_ST_3_Msk 0xFF000000UL +/* UDB_WRKMULT.CTL */ +#define UDB_WRKMULT_CTL_CTL_0_Pos 0UL +#define UDB_WRKMULT_CTL_CTL_0_Msk 0xFFUL +#define UDB_WRKMULT_CTL_CTL_1_Pos 8UL +#define UDB_WRKMULT_CTL_CTL_1_Msk 0xFF00UL +#define UDB_WRKMULT_CTL_CTL_2_Pos 16UL +#define UDB_WRKMULT_CTL_CTL_2_Msk 0xFF0000UL +#define UDB_WRKMULT_CTL_CTL_3_Pos 24UL +#define UDB_WRKMULT_CTL_CTL_3_Msk 0xFF000000UL +/* UDB_WRKMULT.MSK */ +#define UDB_WRKMULT_MSK_MSK_0_Pos 0UL +#define UDB_WRKMULT_MSK_MSK_0_Msk 0x7FUL +#define UDB_WRKMULT_MSK_MSK_1_Pos 8UL +#define UDB_WRKMULT_MSK_MSK_1_Msk 0x7F00UL +#define UDB_WRKMULT_MSK_MSK_2_Pos 16UL +#define UDB_WRKMULT_MSK_MSK_2_Msk 0x7F0000UL +#define UDB_WRKMULT_MSK_MSK_3_Pos 24UL +#define UDB_WRKMULT_MSK_MSK_3_Msk 0x7F000000UL +/* UDB_WRKMULT.ACTL */ +#define UDB_WRKMULT_ACTL_FIFO0_CLR_0_Pos 0UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_0_Msk 0x1UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_0_Pos 1UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_0_Msk 0x2UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_0_Pos 2UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_0_Msk 0x4UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_0_Pos 3UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_0_Msk 0x8UL +#define UDB_WRKMULT_ACTL_INT_EN_0_Pos 4UL +#define UDB_WRKMULT_ACTL_INT_EN_0_Msk 0x10UL +#define UDB_WRKMULT_ACTL_CNT_START_0_Pos 5UL +#define UDB_WRKMULT_ACTL_CNT_START_0_Msk 0x20UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_1_Pos 8UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_1_Msk 0x100UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_1_Pos 9UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_1_Msk 0x200UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_1_Pos 10UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_1_Msk 0x400UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_1_Pos 11UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_1_Msk 0x800UL +#define UDB_WRKMULT_ACTL_INT_EN_1_Pos 12UL +#define UDB_WRKMULT_ACTL_INT_EN_1_Msk 0x1000UL +#define UDB_WRKMULT_ACTL_CNT_START_1_Pos 13UL +#define UDB_WRKMULT_ACTL_CNT_START_1_Msk 0x2000UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_2_Pos 16UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_2_Msk 0x10000UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_2_Pos 17UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_2_Msk 0x20000UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_2_Pos 18UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_2_Msk 0x40000UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_2_Pos 19UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_2_Msk 0x80000UL +#define UDB_WRKMULT_ACTL_INT_EN_2_Pos 20UL +#define UDB_WRKMULT_ACTL_INT_EN_2_Msk 0x100000UL +#define UDB_WRKMULT_ACTL_CNT_START_2_Pos 21UL +#define UDB_WRKMULT_ACTL_CNT_START_2_Msk 0x200000UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_3_Pos 24UL +#define UDB_WRKMULT_ACTL_FIFO0_CLR_3_Msk 0x1000000UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_3_Pos 25UL +#define UDB_WRKMULT_ACTL_FIFO1_CLR_3_Msk 0x2000000UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_3_Pos 26UL +#define UDB_WRKMULT_ACTL_FIFO0_LVL_3_Msk 0x4000000UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_3_Pos 27UL +#define UDB_WRKMULT_ACTL_FIFO1_LVL_3_Msk 0x8000000UL +#define UDB_WRKMULT_ACTL_INT_EN_3_Pos 28UL +#define UDB_WRKMULT_ACTL_INT_EN_3_Msk 0x10000000UL +#define UDB_WRKMULT_ACTL_CNT_START_3_Pos 29UL +#define UDB_WRKMULT_ACTL_CNT_START_3_Msk 0x20000000UL +/* UDB_WRKMULT.MC */ +#define UDB_WRKMULT_MC_PLD0_MC_0_Pos 0UL +#define UDB_WRKMULT_MC_PLD0_MC_0_Msk 0xFUL +#define UDB_WRKMULT_MC_PLD1_MC_0_Pos 4UL +#define UDB_WRKMULT_MC_PLD1_MC_0_Msk 0xF0UL +#define UDB_WRKMULT_MC_PLD0_MC_1_Pos 8UL +#define UDB_WRKMULT_MC_PLD0_MC_1_Msk 0xF00UL +#define UDB_WRKMULT_MC_PLD1_MC_1_Pos 12UL +#define UDB_WRKMULT_MC_PLD1_MC_1_Msk 0xF000UL +#define UDB_WRKMULT_MC_PLD0_MC_2_Pos 16UL +#define UDB_WRKMULT_MC_PLD0_MC_2_Msk 0xF0000UL +#define UDB_WRKMULT_MC_PLD1_MC_2_Pos 20UL +#define UDB_WRKMULT_MC_PLD1_MC_2_Msk 0xF00000UL +#define UDB_WRKMULT_MC_PLD0_MC_3_Pos 24UL +#define UDB_WRKMULT_MC_PLD0_MC_3_Msk 0xF000000UL +#define UDB_WRKMULT_MC_PLD1_MC_3_Pos 28UL +#define UDB_WRKMULT_MC_PLD1_MC_3_Msk 0xF0000000UL + + +/* UDB_UDBPAIR_UDBSNG.PLD_IT */ +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT0_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT0_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT1_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT1_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT2_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT2_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT3_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT3_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT4_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT4_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT5_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT5_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT6_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT6_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT7_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_C_FOR_PT7_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT0_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT0_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT1_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT1_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT2_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT2_Msk 0x400UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT3_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT3_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT4_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT4_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT5_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT5_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT6_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT6_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT7_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_C_FOR_PT7_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT0_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT0_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT1_Pos 17UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT1_Msk 0x20000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT2_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT2_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT3_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT3_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT4_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT4_Msk 0x100000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT5_Pos 21UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT5_Msk 0x200000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT6_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT6_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT7_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD0_INX_T_FOR_PT7_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT0_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT0_Msk 0x1000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT1_Pos 25UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT1_Msk 0x2000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT2_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT2_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT3_Pos 27UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT3_Msk 0x8000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT4_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT4_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT5_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT5_Msk 0x20000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT6_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT6_Msk 0x40000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT7_Pos 31UL +#define UDB_UDBPAIR_UDBSNG_PLD_IT_PLD1_INX_T_FOR_PT7_Msk 0x80000000UL +/* UDB_UDBPAIR_UDBSNG.PLD_ORT0 */ +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT0_T_FOR_OUT0_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT0_T_FOR_OUT0_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT1_T_FOR_OUT0_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT1_T_FOR_OUT0_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT2_T_FOR_OUT0_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT2_T_FOR_OUT0_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT3_T_FOR_OUT0_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT3_T_FOR_OUT0_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT4_T_FOR_OUT0_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT4_T_FOR_OUT0_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT5_T_FOR_OUT0_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT5_T_FOR_OUT0_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT6_T_FOR_OUT0_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT6_T_FOR_OUT0_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT7_T_FOR_OUT0_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT7_T_FOR_OUT0_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT0_T_FOR_OUT0_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT0_T_FOR_OUT0_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT1_T_FOR_OUT0_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT1_T_FOR_OUT0_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT2_T_FOR_OUT0_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT2_T_FOR_OUT0_Msk 0x400UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT3_T_FOR_OUT0_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT3_T_FOR_OUT0_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT4_T_FOR_OUT0_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT4_T_FOR_OUT0_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT5_T_FOR_OUT0_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT5_T_FOR_OUT0_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT6_T_FOR_OUT0_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT6_T_FOR_OUT0_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT7_T_FOR_OUT0_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT7_T_FOR_OUT0_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT0_T_FOR_OUT1_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT0_T_FOR_OUT1_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT1_T_FOR_OUT1_Pos 17UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT1_T_FOR_OUT1_Msk 0x20000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT2_T_FOR_OUT1_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT2_T_FOR_OUT1_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT3_T_FOR_OUT1_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT3_T_FOR_OUT1_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT4_T_FOR_OUT1_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT4_T_FOR_OUT1_Msk 0x100000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT5_T_FOR_OUT1_Pos 21UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT5_T_FOR_OUT1_Msk 0x200000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT6_T_FOR_OUT1_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT6_T_FOR_OUT1_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT7_T_FOR_OUT1_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD0_PT7_T_FOR_OUT1_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT0_T_FOR_OUT1_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT0_T_FOR_OUT1_Msk 0x1000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT1_T_FOR_OUT1_Pos 25UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT1_T_FOR_OUT1_Msk 0x2000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT2_T_FOR_OUT1_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT2_T_FOR_OUT1_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT3_T_FOR_OUT1_Pos 27UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT3_T_FOR_OUT1_Msk 0x8000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT4_T_FOR_OUT1_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT4_T_FOR_OUT1_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT5_T_FOR_OUT1_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT5_T_FOR_OUT1_Msk 0x20000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT6_T_FOR_OUT1_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT6_T_FOR_OUT1_Msk 0x40000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT7_T_FOR_OUT1_Pos 31UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT0_PLD1_PT7_T_FOR_OUT1_Msk 0x80000000UL +/* UDB_UDBPAIR_UDBSNG.PLD_ORT1 */ +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT0_T_FOR_OUT2_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT0_T_FOR_OUT2_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT1_T_FOR_OUT2_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT1_T_FOR_OUT2_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT2_T_FOR_OUT2_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT2_T_FOR_OUT2_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT3_T_FOR_OUT2_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT3_T_FOR_OUT2_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT4_T_FOR_OUT2_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT4_T_FOR_OUT2_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT5_T_FOR_OUT2_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT5_T_FOR_OUT2_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT6_T_FOR_OUT2_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT6_T_FOR_OUT2_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT7_T_FOR_OUT2_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT7_T_FOR_OUT2_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT0_T_FOR_OUT2_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT0_T_FOR_OUT2_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT1_T_FOR_OUT2_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT1_T_FOR_OUT2_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT2_T_FOR_OUT2_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT2_T_FOR_OUT2_Msk 0x400UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT3_T_FOR_OUT2_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT3_T_FOR_OUT2_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT4_T_FOR_OUT2_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT4_T_FOR_OUT2_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT5_T_FOR_OUT2_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT5_T_FOR_OUT2_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT6_T_FOR_OUT2_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT6_T_FOR_OUT2_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT7_T_FOR_OUT2_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT7_T_FOR_OUT2_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT0_T_FOR_OUT3_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT0_T_FOR_OUT3_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT1_T_FOR_OUT3_Pos 17UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT1_T_FOR_OUT3_Msk 0x20000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT2_T_FOR_OUT3_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT2_T_FOR_OUT3_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT3_T_FOR_OUT3_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT3_T_FOR_OUT3_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT4_T_FOR_OUT3_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT4_T_FOR_OUT3_Msk 0x100000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT5_T_FOR_OUT3_Pos 21UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT5_T_FOR_OUT3_Msk 0x200000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT6_T_FOR_OUT3_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT6_T_FOR_OUT3_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT7_T_FOR_OUT3_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD0_PT7_T_FOR_OUT3_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT0_T_FOR_OUT3_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT0_T_FOR_OUT3_Msk 0x1000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT1_T_FOR_OUT3_Pos 25UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT1_T_FOR_OUT3_Msk 0x2000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT2_T_FOR_OUT3_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT2_T_FOR_OUT3_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT3_T_FOR_OUT3_Pos 27UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT3_T_FOR_OUT3_Msk 0x8000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT4_T_FOR_OUT3_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT4_T_FOR_OUT3_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT5_T_FOR_OUT3_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT5_T_FOR_OUT3_Msk 0x20000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT6_T_FOR_OUT3_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT6_T_FOR_OUT3_Msk 0x40000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT7_T_FOR_OUT3_Pos 31UL +#define UDB_UDBPAIR_UDBSNG_PLD_ORT1_PLD1_PT7_T_FOR_OUT3_Msk 0x80000000UL +/* UDB_UDBPAIR_UDBSNG.PLD_CFG0 */ +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_CEN_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_CEN_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_DFF_C_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_DFF_C_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_CEN_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_CEN_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_DFF_C_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_DFF_C_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_CEN_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_CEN_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_DFF_C_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_DFF_C_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_CEN_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_CEN_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_DFF_C_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_DFF_C_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_CEN_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_CEN_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_DFF_C_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_DFF_C_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_CEN_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_CEN_Msk 0x400UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_DFF_C_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_DFF_C_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_CEN_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_CEN_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_DFF_C_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_DFF_C_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_CEN_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_CEN_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_DFF_C_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_DFF_C_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_XORFB_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC0_XORFB_Msk 0x30000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_XORFB_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC1_XORFB_Msk 0xC0000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_XORFB_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC2_XORFB_Msk 0x300000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_XORFB_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD0_MC3_XORFB_Msk 0xC00000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_XORFB_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC0_XORFB_Msk 0x3000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_XORFB_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC1_XORFB_Msk 0xC000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_XORFB_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC2_XORFB_Msk 0x30000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_XORFB_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG0_PLD1_MC3_XORFB_Msk 0xC0000000UL +/* UDB_UDBPAIR_UDBSNG.PLD_CFG1 */ +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_SET_SEL_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_SET_SEL_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_RESET_SEL_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_RESET_SEL_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_SET_SEL_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_SET_SEL_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_RESET_SEL_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_RESET_SEL_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_SET_SEL_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_SET_SEL_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_RESET_SEL_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_RESET_SEL_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_SET_SEL_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_SET_SEL_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_RESET_SEL_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_RESET_SEL_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_SET_SEL_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_SET_SEL_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_RESET_SEL_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_RESET_SEL_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_SET_SEL_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_SET_SEL_Msk 0x400UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_RESET_SEL_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_RESET_SEL_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_SET_SEL_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_SET_SEL_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_RESET_SEL_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_RESET_SEL_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_SET_SEL_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_SET_SEL_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_RESET_SEL_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_RESET_SEL_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_BYPASS_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC0_BYPASS_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_BYPASS_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC1_BYPASS_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_BYPASS_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC2_BYPASS_Msk 0x100000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_BYPASS_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD0_MC3_BYPASS_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_BYPASS_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC0_BYPASS_Msk 0x1000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_BYPASS_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC1_BYPASS_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_BYPASS_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC2_BYPASS_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_BYPASS_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_PLD_CFG1_PLD1_MC3_BYPASS_Msk 0x40000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_CFG0 */ +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD0_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD0_Msk 0x7UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD1_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD1_Msk 0x70UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD2_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_RAD2_Msk 0x700UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS0_Pos 11UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS0_Msk 0x800UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS1_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS1_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS2_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS2_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS3_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS3_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS4_Pos 15UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS4_Msk 0x8000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_F0_LD_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_F0_LD_Msk 0x70000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS5_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_DP_RTE_BYPASS5_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_F1_LD_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_F1_LD_Msk 0x700000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_D0_LD_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_D0_LD_Msk 0x7000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_D1_LD_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG0_D1_LD_Msk 0x70000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_CFG1 */ +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_SI_MUX_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_SI_MUX_Msk 0x7UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_CI_MUX_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_CI_MUX_Msk 0x70UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT0_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT0_Msk 0xF00UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT1_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT1_Msk 0xF000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT2_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT2_Msk 0xF0000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT3_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT3_Msk 0xF00000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT4_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT4_Msk 0xF000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT5_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG1_OUT5_Msk 0xF0000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_CFG2 */ +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_OUT_SYNC_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_OUT_SYNC_Msk 0x3FUL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_AMASK_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_AMASK_Msk 0xFF00UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_CMASK0_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_CMASK0_Msk 0xFF0000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_CMASK1_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG2_CMASK1_Msk 0xFF000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_CFG3 */ +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SI_SELA_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SI_SELA_Msk 0x3UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SI_SELB_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SI_SELB_Msk 0xCUL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_DEF_SI_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_DEF_SI_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_AMASK_EN_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_AMASK_EN_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMASK0_EN_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMASK0_EN_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMASK1_EN_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMASK1_EN_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CI_SELA_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CI_SELA_Msk 0x300UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CI_SELB_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CI_SELB_Msk 0xC00UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMP_SELA_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMP_SELA_Msk 0x3000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMP_SELB_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CMP_SELB_Msk 0xC000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN0_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN0_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN1_Pos 17UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN1_Msk 0x20000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN_FB_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN_FB_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN_CMSB_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_CHAIN_CMSB_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_SEL_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_SEL_Msk 0x700000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_EN_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_EN_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_F0_INSEL_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_F0_INSEL_Msk 0x3000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_F1_INSEL_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_F1_INSEL_Msk 0xC000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_SI_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_MSB_SI_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_PI_DYN_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_PI_DYN_Msk 0x20000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SHIFT_SEL_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_SHIFT_SEL_Msk 0x40000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_PI_SEL_Pos 31UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG3_PI_SEL_Msk 0x80000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_CFG4 */ +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_EXT_CRCPRS_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_EXT_CRCPRS_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_ASYNC_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_ASYNC_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_EDGE_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_EDGE_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_CAP_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_CAP_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_FAST_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_FAST_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F0_CK_INV_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F0_CK_INV_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F1_CK_INV_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F1_CK_INV_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F0_DYN_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F0_DYN_Msk 0x100UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F1_DYN_Pos 9UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_F1_DYN_Msk 0x200UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_ADD_SYNC_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_DPATH_CFG4_FIFO_ADD_SYNC_Msk 0x1000UL +/* UDB_UDBPAIR_UDBSNG.SC_CFG0 */ +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_CTL_MD0_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_CTL_MD0_Msk 0xFFUL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_CTL_MD1_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_CTL_MD1_Msk 0xFF00UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_STAT_MD_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_STAT_MD_Msk 0xFF0000UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_OUT_CTL_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_OUT_CTL_Msk 0x3000000UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_INT_MD_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_INT_MD_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_SYNC_MD_Pos 27UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_SYNC_MD_Msk 0x8000000UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_EXT_RES_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG0_SC_EXT_RES_Msk 0x10000000UL +/* UDB_UDBPAIR_UDBSNG.SC_CFG1 */ +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_CNT_LD_SEL_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_CNT_LD_SEL_Msk 0x3UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_CNT_EN_SEL_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_CNT_EN_SEL_Msk 0xCUL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ROUTE_LD_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ROUTE_LD_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ROUTE_EN_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ROUTE_EN_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ALT_CNT_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_SC_CFG1_ALT_CNT_Msk 0x40UL +/* UDB_UDBPAIR_UDBSNG.RC_CFG0 */ +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_SEL_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_SEL_Msk 0x3UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_MODE_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_MODE_Msk 0xCUL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_INV_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_EN_INV_Msk 0x10UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_INV_Pos 5UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_INV_Msk 0x20UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_RES_SEL0_OR_FRES_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_RES_SEL0_OR_FRES_Msk 0x40UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_RES_SEL1_Pos 7UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD0_RC_RES_SEL1_Msk 0x80UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_SEL_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_SEL_Msk 0x300UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_MODE_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_MODE_Msk 0xC00UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_INV_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_EN_INV_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_INV_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_INV_Msk 0x2000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_RES_SEL0_OR_FRES_Pos 14UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_PLD1_RC_RES_SEL0_OR_FRES_Msk 0x4000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_SEL_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_SEL_Msk 0x30000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_MODE_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_MODE_Msk 0xC0000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_INV_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_EN_INV_Msk 0x100000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_INV_Pos 21UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_INV_Msk 0x200000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_RES_SEL0_OR_FRES_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_RES_SEL0_OR_FRES_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_RES_SEL1_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_DP_RC_RES_SEL1_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_SEL_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_SEL_Msk 0x3000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_MODE_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_MODE_Msk 0xC000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_INV_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_EN_INV_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_INV_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_INV_Msk 0x20000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_RES_SEL0_OR_FRES_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_RES_SEL0_OR_FRES_Msk 0x40000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_RES_SEL1_Pos 31UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG0_SC_RC_RES_SEL1_Msk 0x80000000UL +/* UDB_UDBPAIR_UDBSNG.RC_CFG1 */ +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD0_CK_SEL_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD0_CK_SEL_Msk 0xFUL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD1_CK_SEL_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD1_CK_SEL_Msk 0xF0UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_DP_CK_SEL_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_DP_CK_SEL_Msk 0xF00UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_SC_CK_SEL_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_SC_CK_SEL_Msk 0xF000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_RES_SEL_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_RES_SEL_Msk 0x30000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_RES_POL_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_RES_POL_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_CNTCTL_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_CNTCTL_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_DP_RES_POL_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_DP_RES_POL_Msk 0x400000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_SC_RES_POL_Pos 23UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_SC_RES_POL_Msk 0x800000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_ALT_RES_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_ALT_RES_Msk 0x1000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EXT_SYNC_Pos 25UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EXT_SYNC_Msk 0x2000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_STAT_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_STAT_Msk 0x4000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_DP_Pos 27UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EN_RES_DP_Msk 0x8000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EXT_CK_SEL_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_EXT_CK_SEL_Msk 0x30000000UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD0_RES_POL_Pos 30UL +#define UDB_UDBPAIR_UDBSNG_RC_CFG1_PLD0_RES_POL_Msk 0x40000000UL +/* UDB_UDBPAIR_UDBSNG.DPATH_OPC */ +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CMP_SEL_Pos 0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CMP_SEL_Msk 0x1UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SI_SEL_Pos 1UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SI_SEL_Msk 0x2UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CI_SEL_Pos 2UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CI_SEL_Msk 0x4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CFB_EN_Pos 3UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_CFB_EN_Msk 0x8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_A1_WR_SRC_Pos 4UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_A1_WR_SRC_Msk 0x30UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_A0_WR_SRC_Pos 6UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_A0_WR_SRC_Msk 0xC0UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SHIFT_Pos 8UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SHIFT_Msk 0x300UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SRC_B_Pos 10UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SRC_B_Msk 0xC00UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SRC_A_Pos 12UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_SRC_A_Msk 0x1000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_FUNC_Pos 13UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC0_FUNC_Msk 0xE000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CMP_SEL_Pos 16UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CMP_SEL_Msk 0x10000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SI_SEL_Pos 17UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SI_SEL_Msk 0x20000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CI_SEL_Pos 18UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CI_SEL_Msk 0x40000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CFB_EN_Pos 19UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_CFB_EN_Msk 0x80000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_A1_WR_SRC_Pos 20UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_A1_WR_SRC_Msk 0x300000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_A0_WR_SRC_Pos 22UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_A0_WR_SRC_Msk 0xC00000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SHIFT_Pos 24UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SHIFT_Msk 0x3000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SRC_B_Pos 26UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SRC_B_Msk 0xC000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SRC_A_Pos 28UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_SRC_A_Msk 0x10000000UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_FUNC_Pos 29UL +#define UDB_UDBPAIR_UDBSNG_DPATH_OPC_OPC1_FUNC_Msk 0xE0000000UL + + +/* UDB_UDBPAIR_ROUTE.TOP_V_BOT */ +#define UDB_UDBPAIR_ROUTE_TOP_V_BOT_TOP_V_BOT_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TOP_V_BOT_TOP_V_BOT_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.LVO1_V_2 */ +#define UDB_UDBPAIR_ROUTE_LVO1_V_2_LVO1_V_2_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LVO1_V_2_LVO1_V_2_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.RVO1_V_2 */ +#define UDB_UDBPAIR_ROUTE_RVO1_V_2_RVO1_V_2_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RVO1_V_2_RVO1_V_2_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.TUI_CFG0 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI0SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI0SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI1SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI1SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI2SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI2SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI3SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI3SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI4SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI4SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI5SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI5SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI6SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI6SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI7SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG0_TUI7SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.TUI_CFG1 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI8SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI8SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI9SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI9SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI10SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI10SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI11SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI11SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI12SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI12SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI13SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI13SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI14SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI14SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI15SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG1_TUI15SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.TUI_CFG2 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI16SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI16SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI17SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI17SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI18SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI18SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI19SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI19SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI20SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI20SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI21SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI21SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI22SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI22SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI23SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG2_TUI23SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.TUI_CFG3 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI24SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI24SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI25SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI25SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI26SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI26SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI27SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI27SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI28SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI28SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI29SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI29SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI30SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI30SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI31SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG3_TUI31SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.TUI_CFG4 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI32SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI32SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI33SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI33SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI34SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI34SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI35SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI35SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI36SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI36SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI37SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI37SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI38SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI38SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI39SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG4_TUI39SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.TUI_CFG5 */ +#define UDB_UDBPAIR_ROUTE_TUI_CFG5_TUI40SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG5_TUI40SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_TUI_CFG5_TUI41SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_TUI_CFG5_TUI41SEL_Msk 0xF0UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG0 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI0SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI0SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI1SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI1SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI2SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI2SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI3SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI3SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI4SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI4SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI5SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI5SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI6SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI6SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI7SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG0_BUI7SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG1 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI8SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI8SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI9SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI9SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI10SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI10SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI11SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI11SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI12SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI12SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI13SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI13SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI14SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI14SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI15SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG1_BUI15SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG2 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI16SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI16SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI17SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI17SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI18SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI18SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI19SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI19SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI20SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI20SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI21SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI21SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI22SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI22SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI23SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG2_BUI23SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG3 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI24SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI24SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI25SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI25SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI26SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI26SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI27SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI27SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI28SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI28SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI29SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI29SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI30SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI30SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI31SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG3_BUI31SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG4 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI32SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI32SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI33SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI33SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI34SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI34SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI35SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI35SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI36SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI36SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI37SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI37SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI38SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI38SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI39SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG4_BUI39SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.BUI_CFG5 */ +#define UDB_UDBPAIR_ROUTE_BUI_CFG5_BUI40SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG5_BUI40SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_BUI_CFG5_BUI41SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_BUI_CFG5_BUI41SEL_Msk 0xF0UL +/* UDB_UDBPAIR_ROUTE.RVO_CFG0 */ +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO0SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO0SEL_Msk 0x1FUL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO1SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO1SEL_Msk 0x1F00UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO2SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO2SEL_Msk 0x1F0000UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO3SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG0_RVO3SEL_Msk 0x1F000000UL +/* UDB_UDBPAIR_ROUTE.RVO_CFG1 */ +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO4SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO4SEL_Msk 0x1FUL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO5SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO5SEL_Msk 0x1F00UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO6SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO6SEL_Msk 0x1F0000UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO7SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG1_RVO7SEL_Msk 0x1F000000UL +/* UDB_UDBPAIR_ROUTE.RVO_CFG2 */ +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO8SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO8SEL_Msk 0x1FUL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO9SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO9SEL_Msk 0x1F00UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO10SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO10SEL_Msk 0x1F0000UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO11SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG2_RVO11SEL_Msk 0x1F000000UL +/* UDB_UDBPAIR_ROUTE.RVO_CFG3 */ +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO12SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO12SEL_Msk 0x1FUL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO13SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO13SEL_Msk 0x1F00UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO14SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO14SEL_Msk 0x1F0000UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO15SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_RVO_CFG3_RVO15SEL_Msk 0x1F000000UL +/* UDB_UDBPAIR_ROUTE.LVO_CFG0 */ +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO0SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO0SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO1SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO1SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO2SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO2SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO3SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO3SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO4SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO4SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO5SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO5SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO6SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO6SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO7SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG0_LVO7SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LVO_CFG1 */ +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO8SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO8SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO9SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO9SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO10SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO10SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO11SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO11SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO12SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO12SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO13SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO13SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO14SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO14SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO15SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LVO_CFG1_LVO15SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.RHO_CFG0 */ +#define UDB_UDBPAIR_ROUTE_RHO_CFG0_RHOSEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RHO_CFG0_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.RHO_CFG1 */ +#define UDB_UDBPAIR_ROUTE_RHO_CFG1_RHOSEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RHO_CFG1_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.RHO_CFG2 */ +#define UDB_UDBPAIR_ROUTE_RHO_CFG2_RHOSEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_RHO_CFG2_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_UDBPAIR_ROUTE.LHO_CFG0 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO0SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO0SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO1SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO1SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO2SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO2SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO3SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO3SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO4SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO4SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO5SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO5SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO6SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO6SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO7SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG0_LHO7SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG1 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO8SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO8SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO9SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO9SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO10SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO10SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO11SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO11SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO12SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO12SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO13SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO13SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO14SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO14SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO15SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG1_LHO15SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG2 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO16SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO16SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO17SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO17SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO18SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO18SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO19SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO19SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO20SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO20SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO21SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO21SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO22SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO22SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO23SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG2_LHO23SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG3 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO24SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO24SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO25SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO25SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO26SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO26SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO27SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO27SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO28SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO28SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO29SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO29SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO30SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO30SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO31SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG3_LHO31SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG4 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO32SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO32SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO33SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO33SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO34SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO34SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO35SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO35SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO36SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO36SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO37SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO37SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO38SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO38SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO39SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG4_LHO39SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG5 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO40SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO40SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO41SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO41SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO42SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO42SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO43SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO43SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO44SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO44SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO45SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO45SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO46SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO46SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO47SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG5_LHO47SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG6 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO48SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO48SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO49SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO49SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO50SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO50SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO51SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO51SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO52SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO52SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO53SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO53SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO54SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO54SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO55SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG6_LHO55SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG7 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO56SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO56SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO57SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO57SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO58SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO58SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO59SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO59SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO60SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO60SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO61SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO61SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO62SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO62SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO63SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG7_LHO63SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG8 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO64SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO64SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO65SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO65SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO66SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO66SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO67SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO67SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO68SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO68SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO69SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO69SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO70SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO70SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO71SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG8_LHO71SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG9 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO72SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO72SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO73SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO73SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO74SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO74SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO75SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO75SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO76SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO76SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO77SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO77SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO78SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO78SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO79SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG9_LHO79SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG10 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO80SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO80SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO81SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO81SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO82SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO82SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO83SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO83SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO84SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO84SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO85SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO85SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO86SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO86SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO87SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG10_LHO87SEL_Msk 0xF0000000UL +/* UDB_UDBPAIR_ROUTE.LHO_CFG11 */ +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO88SEL_Pos 0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO88SEL_Msk 0xFUL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO89SEL_Pos 4UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO89SEL_Msk 0xF0UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO90SEL_Pos 8UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO90SEL_Msk 0xF00UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO91SEL_Pos 12UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO91SEL_Msk 0xF000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO92SEL_Pos 16UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO92SEL_Msk 0xF0000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO93SEL_Pos 20UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO93SEL_Msk 0xF00000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO94SEL_Pos 24UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO94SEL_Msk 0xF000000UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO95SEL_Pos 28UL +#define UDB_UDBPAIR_ROUTE_LHO_CFG11_LHO95SEL_Msk 0xF0000000UL + + +/* UDB_DSI.LVO1_V_2 */ +#define UDB_DSI_LVO1_V_2_LVO1_V_2_Pos 0UL +#define UDB_DSI_LVO1_V_2_LVO1_V_2_Msk 0xFFFFFFFFUL +/* UDB_DSI.RVO1_V_2 */ +#define UDB_DSI_RVO1_V_2_RVO1_V_2_Pos 0UL +#define UDB_DSI_RVO1_V_2_RVO1_V_2_Msk 0xFFFFFFFFUL +/* UDB_DSI.DOP_CFG0 */ +#define UDB_DSI_DOP_CFG0_DOP0SEL_Pos 0UL +#define UDB_DSI_DOP_CFG0_DOP0SEL_Msk 0x1FUL +#define UDB_DSI_DOP_CFG0_DOP1SEL_Pos 8UL +#define UDB_DSI_DOP_CFG0_DOP1SEL_Msk 0x1F00UL +#define UDB_DSI_DOP_CFG0_DOP2SEL_Pos 16UL +#define UDB_DSI_DOP_CFG0_DOP2SEL_Msk 0x1F0000UL +#define UDB_DSI_DOP_CFG0_DOP3SEL_Pos 24UL +#define UDB_DSI_DOP_CFG0_DOP3SEL_Msk 0x1F000000UL +/* UDB_DSI.DOP_CFG1 */ +#define UDB_DSI_DOP_CFG1_DOP4SEL_Pos 0UL +#define UDB_DSI_DOP_CFG1_DOP4SEL_Msk 0x1FUL +#define UDB_DSI_DOP_CFG1_DOP5SEL_Pos 8UL +#define UDB_DSI_DOP_CFG1_DOP5SEL_Msk 0x1F00UL +#define UDB_DSI_DOP_CFG1_DOP6SEL_Pos 16UL +#define UDB_DSI_DOP_CFG1_DOP6SEL_Msk 0x1F0000UL +#define UDB_DSI_DOP_CFG1_DOP7SEL_Pos 24UL +#define UDB_DSI_DOP_CFG1_DOP7SEL_Msk 0x1F000000UL +/* UDB_DSI.DOP_CFG2 */ +#define UDB_DSI_DOP_CFG2_DOP8SEL_Pos 0UL +#define UDB_DSI_DOP_CFG2_DOP8SEL_Msk 0x1FUL +#define UDB_DSI_DOP_CFG2_DOP9SEL_Pos 8UL +#define UDB_DSI_DOP_CFG2_DOP9SEL_Msk 0x1F00UL +#define UDB_DSI_DOP_CFG2_DOP10SEL_Pos 16UL +#define UDB_DSI_DOP_CFG2_DOP10SEL_Msk 0x1F0000UL +#define UDB_DSI_DOP_CFG2_DOP11SEL_Pos 24UL +#define UDB_DSI_DOP_CFG2_DOP11SEL_Msk 0x1F000000UL +/* UDB_DSI.DOP_CFG3 */ +#define UDB_DSI_DOP_CFG3_DOP12SEL_Pos 0UL +#define UDB_DSI_DOP_CFG3_DOP12SEL_Msk 0x1FUL +#define UDB_DSI_DOP_CFG3_DOP13SEL_Pos 8UL +#define UDB_DSI_DOP_CFG3_DOP13SEL_Msk 0x1F00UL +#define UDB_DSI_DOP_CFG3_DOP14SEL_Pos 16UL +#define UDB_DSI_DOP_CFG3_DOP14SEL_Msk 0x1F0000UL +#define UDB_DSI_DOP_CFG3_DOP15SEL_Pos 24UL +#define UDB_DSI_DOP_CFG3_DOP15SEL_Msk 0x1F000000UL +/* UDB_DSI.DOT_CFG0 */ +#define UDB_DSI_DOT_CFG0_DOT0SEL_Pos 0UL +#define UDB_DSI_DOT_CFG0_DOT0SEL_Msk 0x1FUL +#define UDB_DSI_DOT_CFG0_DOT1SEL_Pos 8UL +#define UDB_DSI_DOT_CFG0_DOT1SEL_Msk 0x1F00UL +#define UDB_DSI_DOT_CFG0_DOT2SEL_Pos 16UL +#define UDB_DSI_DOT_CFG0_DOT2SEL_Msk 0x1F0000UL +#define UDB_DSI_DOT_CFG0_DOT3SEL_Pos 24UL +#define UDB_DSI_DOT_CFG0_DOT3SEL_Msk 0x1F000000UL +/* UDB_DSI.DOT_CFG1 */ +#define UDB_DSI_DOT_CFG1_DOT4SEL_Pos 0UL +#define UDB_DSI_DOT_CFG1_DOT4SEL_Msk 0x1FUL +#define UDB_DSI_DOT_CFG1_DOT5SEL_Pos 8UL +#define UDB_DSI_DOT_CFG1_DOT5SEL_Msk 0x1F00UL +#define UDB_DSI_DOT_CFG1_DOT6SEL_Pos 16UL +#define UDB_DSI_DOT_CFG1_DOT6SEL_Msk 0x1F0000UL +#define UDB_DSI_DOT_CFG1_DOT7SEL_Pos 24UL +#define UDB_DSI_DOT_CFG1_DOT7SEL_Msk 0x1F000000UL +/* UDB_DSI.DOT_CFG2 */ +#define UDB_DSI_DOT_CFG2_DOT8SEL_Pos 0UL +#define UDB_DSI_DOT_CFG2_DOT8SEL_Msk 0x1FUL +#define UDB_DSI_DOT_CFG2_DOT9SEL_Pos 8UL +#define UDB_DSI_DOT_CFG2_DOT9SEL_Msk 0x1F00UL +#define UDB_DSI_DOT_CFG2_DOT10SEL_Pos 16UL +#define UDB_DSI_DOT_CFG2_DOT10SEL_Msk 0x1F0000UL +#define UDB_DSI_DOT_CFG2_DOT11SEL_Pos 24UL +#define UDB_DSI_DOT_CFG2_DOT11SEL_Msk 0x1F000000UL +/* UDB_DSI.DOT_CFG3 */ +#define UDB_DSI_DOT_CFG3_DOT12SEL_Pos 0UL +#define UDB_DSI_DOT_CFG3_DOT12SEL_Msk 0x1FUL +#define UDB_DSI_DOT_CFG3_DOT13SEL_Pos 8UL +#define UDB_DSI_DOT_CFG3_DOT13SEL_Msk 0x1F00UL +#define UDB_DSI_DOT_CFG3_DOT14SEL_Pos 16UL +#define UDB_DSI_DOT_CFG3_DOT14SEL_Msk 0x1F0000UL +#define UDB_DSI_DOT_CFG3_DOT15SEL_Pos 24UL +#define UDB_DSI_DOT_CFG3_DOT15SEL_Msk 0x1F000000UL +/* UDB_DSI.RVO_CFG0 */ +#define UDB_DSI_RVO_CFG0_RVO0SEL_Pos 0UL +#define UDB_DSI_RVO_CFG0_RVO0SEL_Msk 0x1FUL +#define UDB_DSI_RVO_CFG0_RVO1SEL_Pos 8UL +#define UDB_DSI_RVO_CFG0_RVO1SEL_Msk 0x1F00UL +#define UDB_DSI_RVO_CFG0_RVO2SEL_Pos 16UL +#define UDB_DSI_RVO_CFG0_RVO2SEL_Msk 0x1F0000UL +#define UDB_DSI_RVO_CFG0_RVO3SEL_Pos 24UL +#define UDB_DSI_RVO_CFG0_RVO3SEL_Msk 0x1F000000UL +/* UDB_DSI.RVO_CFG1 */ +#define UDB_DSI_RVO_CFG1_RVO4SEL_Pos 0UL +#define UDB_DSI_RVO_CFG1_RVO4SEL_Msk 0x1FUL +#define UDB_DSI_RVO_CFG1_RVO5SEL_Pos 8UL +#define UDB_DSI_RVO_CFG1_RVO5SEL_Msk 0x1F00UL +#define UDB_DSI_RVO_CFG1_RVO6SEL_Pos 16UL +#define UDB_DSI_RVO_CFG1_RVO6SEL_Msk 0x1F0000UL +#define UDB_DSI_RVO_CFG1_RVO7SEL_Pos 24UL +#define UDB_DSI_RVO_CFG1_RVO7SEL_Msk 0x1F000000UL +/* UDB_DSI.RVO_CFG2 */ +#define UDB_DSI_RVO_CFG2_RVO8SEL_Pos 0UL +#define UDB_DSI_RVO_CFG2_RVO8SEL_Msk 0x1FUL +#define UDB_DSI_RVO_CFG2_RVO9SEL_Pos 8UL +#define UDB_DSI_RVO_CFG2_RVO9SEL_Msk 0x1F00UL +#define UDB_DSI_RVO_CFG2_RVO10SEL_Pos 16UL +#define UDB_DSI_RVO_CFG2_RVO10SEL_Msk 0x1F0000UL +#define UDB_DSI_RVO_CFG2_RVO11SEL_Pos 24UL +#define UDB_DSI_RVO_CFG2_RVO11SEL_Msk 0x1F000000UL +/* UDB_DSI.RVO_CFG3 */ +#define UDB_DSI_RVO_CFG3_RVO12SEL_Pos 0UL +#define UDB_DSI_RVO_CFG3_RVO12SEL_Msk 0x1FUL +#define UDB_DSI_RVO_CFG3_RVO13SEL_Pos 8UL +#define UDB_DSI_RVO_CFG3_RVO13SEL_Msk 0x1F00UL +#define UDB_DSI_RVO_CFG3_RVO14SEL_Pos 16UL +#define UDB_DSI_RVO_CFG3_RVO14SEL_Msk 0x1F0000UL +#define UDB_DSI_RVO_CFG3_RVO15SEL_Pos 24UL +#define UDB_DSI_RVO_CFG3_RVO15SEL_Msk 0x1F000000UL +/* UDB_DSI.LVO_CFG0 */ +#define UDB_DSI_LVO_CFG0_LVO0SEL_Pos 0UL +#define UDB_DSI_LVO_CFG0_LVO0SEL_Msk 0xFUL +#define UDB_DSI_LVO_CFG0_LVO1SEL_Pos 4UL +#define UDB_DSI_LVO_CFG0_LVO1SEL_Msk 0xF0UL +#define UDB_DSI_LVO_CFG0_LVO2SEL_Pos 8UL +#define UDB_DSI_LVO_CFG0_LVO2SEL_Msk 0xF00UL +#define UDB_DSI_LVO_CFG0_LVO3SEL_Pos 12UL +#define UDB_DSI_LVO_CFG0_LVO3SEL_Msk 0xF000UL +#define UDB_DSI_LVO_CFG0_LVO4SEL_Pos 16UL +#define UDB_DSI_LVO_CFG0_LVO4SEL_Msk 0xF0000UL +#define UDB_DSI_LVO_CFG0_LVO5SEL_Pos 20UL +#define UDB_DSI_LVO_CFG0_LVO5SEL_Msk 0xF00000UL +#define UDB_DSI_LVO_CFG0_LVO6SEL_Pos 24UL +#define UDB_DSI_LVO_CFG0_LVO6SEL_Msk 0xF000000UL +#define UDB_DSI_LVO_CFG0_LVO7SEL_Pos 28UL +#define UDB_DSI_LVO_CFG0_LVO7SEL_Msk 0xF0000000UL +/* UDB_DSI.LVO_CFG1 */ +#define UDB_DSI_LVO_CFG1_LVO8SEL_Pos 0UL +#define UDB_DSI_LVO_CFG1_LVO8SEL_Msk 0xFUL +#define UDB_DSI_LVO_CFG1_LVO9SEL_Pos 4UL +#define UDB_DSI_LVO_CFG1_LVO9SEL_Msk 0xF0UL +#define UDB_DSI_LVO_CFG1_LVO10SEL_Pos 8UL +#define UDB_DSI_LVO_CFG1_LVO10SEL_Msk 0xF00UL +#define UDB_DSI_LVO_CFG1_LVO11SEL_Pos 12UL +#define UDB_DSI_LVO_CFG1_LVO11SEL_Msk 0xF000UL +#define UDB_DSI_LVO_CFG1_LVO12SEL_Pos 16UL +#define UDB_DSI_LVO_CFG1_LVO12SEL_Msk 0xF0000UL +#define UDB_DSI_LVO_CFG1_LVO13SEL_Pos 20UL +#define UDB_DSI_LVO_CFG1_LVO13SEL_Msk 0xF00000UL +#define UDB_DSI_LVO_CFG1_LVO14SEL_Pos 24UL +#define UDB_DSI_LVO_CFG1_LVO14SEL_Msk 0xF000000UL +#define UDB_DSI_LVO_CFG1_LVO15SEL_Pos 28UL +#define UDB_DSI_LVO_CFG1_LVO15SEL_Msk 0xF0000000UL +/* UDB_DSI.RHO_CFG0 */ +#define UDB_DSI_RHO_CFG0_RHOSEL_Pos 0UL +#define UDB_DSI_RHO_CFG0_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_DSI.RHO_CFG1 */ +#define UDB_DSI_RHO_CFG1_RHOSEL_Pos 0UL +#define UDB_DSI_RHO_CFG1_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_DSI.RHO_CFG2 */ +#define UDB_DSI_RHO_CFG2_RHOSEL_Pos 0UL +#define UDB_DSI_RHO_CFG2_RHOSEL_Msk 0xFFFFFFFFUL +/* UDB_DSI.LHO_CFG0 */ +#define UDB_DSI_LHO_CFG0_LHO0SEL_Pos 0UL +#define UDB_DSI_LHO_CFG0_LHO0SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG0_LHO1SEL_Pos 4UL +#define UDB_DSI_LHO_CFG0_LHO1SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG0_LHO2SEL_Pos 8UL +#define UDB_DSI_LHO_CFG0_LHO2SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG0_LHO3SEL_Pos 12UL +#define UDB_DSI_LHO_CFG0_LHO3SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG0_LHO4SEL_Pos 16UL +#define UDB_DSI_LHO_CFG0_LHO4SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG0_LHO5SEL_Pos 20UL +#define UDB_DSI_LHO_CFG0_LHO5SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG0_LHO6SEL_Pos 24UL +#define UDB_DSI_LHO_CFG0_LHO6SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG0_LHO7SEL_Pos 28UL +#define UDB_DSI_LHO_CFG0_LHO7SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG1 */ +#define UDB_DSI_LHO_CFG1_LHO8SEL_Pos 0UL +#define UDB_DSI_LHO_CFG1_LHO8SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG1_LHO9SEL_Pos 4UL +#define UDB_DSI_LHO_CFG1_LHO9SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG1_LHO10SEL_Pos 8UL +#define UDB_DSI_LHO_CFG1_LHO10SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG1_LHO11SEL_Pos 12UL +#define UDB_DSI_LHO_CFG1_LHO11SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG1_LHO12SEL_Pos 16UL +#define UDB_DSI_LHO_CFG1_LHO12SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG1_LHO13SEL_Pos 20UL +#define UDB_DSI_LHO_CFG1_LHO13SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG1_LHO14SEL_Pos 24UL +#define UDB_DSI_LHO_CFG1_LHO14SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG1_LHO15SEL_Pos 28UL +#define UDB_DSI_LHO_CFG1_LHO15SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG2 */ +#define UDB_DSI_LHO_CFG2_LHO16SEL_Pos 0UL +#define UDB_DSI_LHO_CFG2_LHO16SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG2_LHO17SEL_Pos 4UL +#define UDB_DSI_LHO_CFG2_LHO17SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG2_LHO18SEL_Pos 8UL +#define UDB_DSI_LHO_CFG2_LHO18SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG2_LHO19SEL_Pos 12UL +#define UDB_DSI_LHO_CFG2_LHO19SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG2_LHO20SEL_Pos 16UL +#define UDB_DSI_LHO_CFG2_LHO20SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG2_LHO21SEL_Pos 20UL +#define UDB_DSI_LHO_CFG2_LHO21SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG2_LHO22SEL_Pos 24UL +#define UDB_DSI_LHO_CFG2_LHO22SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG2_LHO23SEL_Pos 28UL +#define UDB_DSI_LHO_CFG2_LHO23SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG3 */ +#define UDB_DSI_LHO_CFG3_LHO24SEL_Pos 0UL +#define UDB_DSI_LHO_CFG3_LHO24SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG3_LHO25SEL_Pos 4UL +#define UDB_DSI_LHO_CFG3_LHO25SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG3_LHO26SEL_Pos 8UL +#define UDB_DSI_LHO_CFG3_LHO26SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG3_LHO27SEL_Pos 12UL +#define UDB_DSI_LHO_CFG3_LHO27SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG3_LHO28SEL_Pos 16UL +#define UDB_DSI_LHO_CFG3_LHO28SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG3_LHO29SEL_Pos 20UL +#define UDB_DSI_LHO_CFG3_LHO29SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG3_LHO30SEL_Pos 24UL +#define UDB_DSI_LHO_CFG3_LHO30SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG3_LHO31SEL_Pos 28UL +#define UDB_DSI_LHO_CFG3_LHO31SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG4 */ +#define UDB_DSI_LHO_CFG4_LHO32SEL_Pos 0UL +#define UDB_DSI_LHO_CFG4_LHO32SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG4_LHO33SEL_Pos 4UL +#define UDB_DSI_LHO_CFG4_LHO33SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG4_LHO34SEL_Pos 8UL +#define UDB_DSI_LHO_CFG4_LHO34SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG4_LHO35SEL_Pos 12UL +#define UDB_DSI_LHO_CFG4_LHO35SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG4_LHO36SEL_Pos 16UL +#define UDB_DSI_LHO_CFG4_LHO36SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG4_LHO37SEL_Pos 20UL +#define UDB_DSI_LHO_CFG4_LHO37SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG4_LHO38SEL_Pos 24UL +#define UDB_DSI_LHO_CFG4_LHO38SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG4_LHO39SEL_Pos 28UL +#define UDB_DSI_LHO_CFG4_LHO39SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG5 */ +#define UDB_DSI_LHO_CFG5_LHO40SEL_Pos 0UL +#define UDB_DSI_LHO_CFG5_LHO40SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG5_LHO41SEL_Pos 4UL +#define UDB_DSI_LHO_CFG5_LHO41SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG5_LHO42SEL_Pos 8UL +#define UDB_DSI_LHO_CFG5_LHO42SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG5_LHO43SEL_Pos 12UL +#define UDB_DSI_LHO_CFG5_LHO43SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG5_LHO44SEL_Pos 16UL +#define UDB_DSI_LHO_CFG5_LHO44SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG5_LHO45SEL_Pos 20UL +#define UDB_DSI_LHO_CFG5_LHO45SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG5_LHO46SEL_Pos 24UL +#define UDB_DSI_LHO_CFG5_LHO46SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG5_LHO47SEL_Pos 28UL +#define UDB_DSI_LHO_CFG5_LHO47SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG6 */ +#define UDB_DSI_LHO_CFG6_LHO48SEL_Pos 0UL +#define UDB_DSI_LHO_CFG6_LHO48SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG6_LHO49SEL_Pos 4UL +#define UDB_DSI_LHO_CFG6_LHO49SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG6_LHO50SEL_Pos 8UL +#define UDB_DSI_LHO_CFG6_LHO50SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG6_LHO51SEL_Pos 12UL +#define UDB_DSI_LHO_CFG6_LHO51SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG6_LHO52SEL_Pos 16UL +#define UDB_DSI_LHO_CFG6_LHO52SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG6_LHO53SEL_Pos 20UL +#define UDB_DSI_LHO_CFG6_LHO53SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG6_LHO54SEL_Pos 24UL +#define UDB_DSI_LHO_CFG6_LHO54SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG6_LHO55SEL_Pos 28UL +#define UDB_DSI_LHO_CFG6_LHO55SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG7 */ +#define UDB_DSI_LHO_CFG7_LHO56SEL_Pos 0UL +#define UDB_DSI_LHO_CFG7_LHO56SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG7_LHO57SEL_Pos 4UL +#define UDB_DSI_LHO_CFG7_LHO57SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG7_LHO58SEL_Pos 8UL +#define UDB_DSI_LHO_CFG7_LHO58SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG7_LHO59SEL_Pos 12UL +#define UDB_DSI_LHO_CFG7_LHO59SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG7_LHO60SEL_Pos 16UL +#define UDB_DSI_LHO_CFG7_LHO60SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG7_LHO61SEL_Pos 20UL +#define UDB_DSI_LHO_CFG7_LHO61SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG7_LHO62SEL_Pos 24UL +#define UDB_DSI_LHO_CFG7_LHO62SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG7_LHO63SEL_Pos 28UL +#define UDB_DSI_LHO_CFG7_LHO63SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG8 */ +#define UDB_DSI_LHO_CFG8_LHO64SEL_Pos 0UL +#define UDB_DSI_LHO_CFG8_LHO64SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG8_LHO65SEL_Pos 4UL +#define UDB_DSI_LHO_CFG8_LHO65SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG8_LHO66SEL_Pos 8UL +#define UDB_DSI_LHO_CFG8_LHO66SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG8_LHO67SEL_Pos 12UL +#define UDB_DSI_LHO_CFG8_LHO67SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG8_LHO68SEL_Pos 16UL +#define UDB_DSI_LHO_CFG8_LHO68SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG8_LHO69SEL_Pos 20UL +#define UDB_DSI_LHO_CFG8_LHO69SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG8_LHO70SEL_Pos 24UL +#define UDB_DSI_LHO_CFG8_LHO70SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG8_LHO71SEL_Pos 28UL +#define UDB_DSI_LHO_CFG8_LHO71SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG9 */ +#define UDB_DSI_LHO_CFG9_LHO72SEL_Pos 0UL +#define UDB_DSI_LHO_CFG9_LHO72SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG9_LHO73SEL_Pos 4UL +#define UDB_DSI_LHO_CFG9_LHO73SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG9_LHO74SEL_Pos 8UL +#define UDB_DSI_LHO_CFG9_LHO74SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG9_LHO75SEL_Pos 12UL +#define UDB_DSI_LHO_CFG9_LHO75SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG9_LHO76SEL_Pos 16UL +#define UDB_DSI_LHO_CFG9_LHO76SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG9_LHO77SEL_Pos 20UL +#define UDB_DSI_LHO_CFG9_LHO77SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG9_LHO78SEL_Pos 24UL +#define UDB_DSI_LHO_CFG9_LHO78SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG9_LHO79SEL_Pos 28UL +#define UDB_DSI_LHO_CFG9_LHO79SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG10 */ +#define UDB_DSI_LHO_CFG10_LHO80SEL_Pos 0UL +#define UDB_DSI_LHO_CFG10_LHO80SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG10_LHO81SEL_Pos 4UL +#define UDB_DSI_LHO_CFG10_LHO81SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG10_LHO82SEL_Pos 8UL +#define UDB_DSI_LHO_CFG10_LHO82SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG10_LHO83SEL_Pos 12UL +#define UDB_DSI_LHO_CFG10_LHO83SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG10_LHO84SEL_Pos 16UL +#define UDB_DSI_LHO_CFG10_LHO84SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG10_LHO85SEL_Pos 20UL +#define UDB_DSI_LHO_CFG10_LHO85SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG10_LHO86SEL_Pos 24UL +#define UDB_DSI_LHO_CFG10_LHO86SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG10_LHO87SEL_Pos 28UL +#define UDB_DSI_LHO_CFG10_LHO87SEL_Msk 0xF0000000UL +/* UDB_DSI.LHO_CFG11 */ +#define UDB_DSI_LHO_CFG11_LHO88SEL_Pos 0UL +#define UDB_DSI_LHO_CFG11_LHO88SEL_Msk 0xFUL +#define UDB_DSI_LHO_CFG11_LHO89SEL_Pos 4UL +#define UDB_DSI_LHO_CFG11_LHO89SEL_Msk 0xF0UL +#define UDB_DSI_LHO_CFG11_LHO90SEL_Pos 8UL +#define UDB_DSI_LHO_CFG11_LHO90SEL_Msk 0xF00UL +#define UDB_DSI_LHO_CFG11_LHO91SEL_Pos 12UL +#define UDB_DSI_LHO_CFG11_LHO91SEL_Msk 0xF000UL +#define UDB_DSI_LHO_CFG11_LHO92SEL_Pos 16UL +#define UDB_DSI_LHO_CFG11_LHO92SEL_Msk 0xF0000UL +#define UDB_DSI_LHO_CFG11_LHO93SEL_Pos 20UL +#define UDB_DSI_LHO_CFG11_LHO93SEL_Msk 0xF00000UL +#define UDB_DSI_LHO_CFG11_LHO94SEL_Pos 24UL +#define UDB_DSI_LHO_CFG11_LHO94SEL_Msk 0xF000000UL +#define UDB_DSI_LHO_CFG11_LHO95SEL_Pos 28UL +#define UDB_DSI_LHO_CFG11_LHO95SEL_Msk 0xF0000000UL + + +/* UDB_PA.CFG0 */ +#define UDB_PA_CFG0_CLKIN_EN_SEL_Pos 0UL +#define UDB_PA_CFG0_CLKIN_EN_SEL_Msk 0x3UL +#define UDB_PA_CFG0_CLKIN_EN_MODE_Pos 2UL +#define UDB_PA_CFG0_CLKIN_EN_MODE_Msk 0xCUL +#define UDB_PA_CFG0_CLKIN_EN_INV_Pos 4UL +#define UDB_PA_CFG0_CLKIN_EN_INV_Msk 0x10UL +#define UDB_PA_CFG0_CLKIN_INV_Pos 5UL +#define UDB_PA_CFG0_CLKIN_INV_Msk 0x20UL +/* UDB_PA.CFG1 */ +#define UDB_PA_CFG1_CLKOUT_EN_SEL_Pos 0UL +#define UDB_PA_CFG1_CLKOUT_EN_SEL_Msk 0x3UL +#define UDB_PA_CFG1_CLKOUT_EN_MODE_Pos 2UL +#define UDB_PA_CFG1_CLKOUT_EN_MODE_Msk 0xCUL +#define UDB_PA_CFG1_CLKOUT_EN_INV_Pos 4UL +#define UDB_PA_CFG1_CLKOUT_EN_INV_Msk 0x10UL +#define UDB_PA_CFG1_CLKOUT_INV_Pos 5UL +#define UDB_PA_CFG1_CLKOUT_INV_Msk 0x20UL +/* UDB_PA.CFG2 */ +#define UDB_PA_CFG2_CLKIN_SEL_Pos 0UL +#define UDB_PA_CFG2_CLKIN_SEL_Msk 0xFUL +#define UDB_PA_CFG2_CLKOUT_SEL_Pos 4UL +#define UDB_PA_CFG2_CLKOUT_SEL_Msk 0xF0UL +/* UDB_PA.CFG3 */ +#define UDB_PA_CFG3_RES_IN_SEL_Pos 0UL +#define UDB_PA_CFG3_RES_IN_SEL_Msk 0x3UL +#define UDB_PA_CFG3_RES_IN_INV_Pos 2UL +#define UDB_PA_CFG3_RES_IN_INV_Msk 0x4UL +#define UDB_PA_CFG3_RES_OUT_SEL_Pos 4UL +#define UDB_PA_CFG3_RES_OUT_SEL_Msk 0x30UL +#define UDB_PA_CFG3_RES_OUT_INV_Pos 6UL +#define UDB_PA_CFG3_RES_OUT_INV_Msk 0x40UL +/* UDB_PA.CFG4 */ +#define UDB_PA_CFG4_RES_IN_EN_Pos 0UL +#define UDB_PA_CFG4_RES_IN_EN_Msk 0x1UL +#define UDB_PA_CFG4_RES_OUT_EN_Pos 1UL +#define UDB_PA_CFG4_RES_OUT_EN_Msk 0x2UL +#define UDB_PA_CFG4_RES_OE_EN_Pos 2UL +#define UDB_PA_CFG4_RES_OE_EN_Msk 0x4UL +/* UDB_PA.CFG5 */ +#define UDB_PA_CFG5_PIN_SEL_Pos 0UL +#define UDB_PA_CFG5_PIN_SEL_Msk 0x7UL +/* UDB_PA.CFG6 */ +#define UDB_PA_CFG6_IN_SYNC0_Pos 0UL +#define UDB_PA_CFG6_IN_SYNC0_Msk 0x3UL +#define UDB_PA_CFG6_IN_SYNC1_Pos 2UL +#define UDB_PA_CFG6_IN_SYNC1_Msk 0xCUL +#define UDB_PA_CFG6_IN_SYNC2_Pos 4UL +#define UDB_PA_CFG6_IN_SYNC2_Msk 0x30UL +#define UDB_PA_CFG6_IN_SYNC3_Pos 6UL +#define UDB_PA_CFG6_IN_SYNC3_Msk 0xC0UL +/* UDB_PA.CFG7 */ +#define UDB_PA_CFG7_IN_SYNC4_Pos 0UL +#define UDB_PA_CFG7_IN_SYNC4_Msk 0x3UL +#define UDB_PA_CFG7_IN_SYNC5_Pos 2UL +#define UDB_PA_CFG7_IN_SYNC5_Msk 0xCUL +#define UDB_PA_CFG7_IN_SYNC6_Pos 4UL +#define UDB_PA_CFG7_IN_SYNC6_Msk 0x30UL +#define UDB_PA_CFG7_IN_SYNC7_Pos 6UL +#define UDB_PA_CFG7_IN_SYNC7_Msk 0xC0UL +/* UDB_PA.CFG8 */ +#define UDB_PA_CFG8_OUT_SYNC0_Pos 0UL +#define UDB_PA_CFG8_OUT_SYNC0_Msk 0x3UL +#define UDB_PA_CFG8_OUT_SYNC1_Pos 2UL +#define UDB_PA_CFG8_OUT_SYNC1_Msk 0xCUL +#define UDB_PA_CFG8_OUT_SYNC2_Pos 4UL +#define UDB_PA_CFG8_OUT_SYNC2_Msk 0x30UL +#define UDB_PA_CFG8_OUT_SYNC3_Pos 6UL +#define UDB_PA_CFG8_OUT_SYNC3_Msk 0xC0UL +/* UDB_PA.CFG9 */ +#define UDB_PA_CFG9_OUT_SYNC4_Pos 0UL +#define UDB_PA_CFG9_OUT_SYNC4_Msk 0x3UL +#define UDB_PA_CFG9_OUT_SYNC5_Pos 2UL +#define UDB_PA_CFG9_OUT_SYNC5_Msk 0xCUL +#define UDB_PA_CFG9_OUT_SYNC6_Pos 4UL +#define UDB_PA_CFG9_OUT_SYNC6_Msk 0x30UL +#define UDB_PA_CFG9_OUT_SYNC7_Pos 6UL +#define UDB_PA_CFG9_OUT_SYNC7_Msk 0xC0UL +/* UDB_PA.CFG10 */ +#define UDB_PA_CFG10_DATA_SEL0_Pos 0UL +#define UDB_PA_CFG10_DATA_SEL0_Msk 0x3UL +#define UDB_PA_CFG10_DATA_SEL1_Pos 2UL +#define UDB_PA_CFG10_DATA_SEL1_Msk 0xCUL +#define UDB_PA_CFG10_DATA_SEL2_Pos 4UL +#define UDB_PA_CFG10_DATA_SEL2_Msk 0x30UL +#define UDB_PA_CFG10_DATA_SEL3_Pos 6UL +#define UDB_PA_CFG10_DATA_SEL3_Msk 0xC0UL +/* UDB_PA.CFG11 */ +#define UDB_PA_CFG11_DATA_SEL4_Pos 0UL +#define UDB_PA_CFG11_DATA_SEL4_Msk 0x3UL +#define UDB_PA_CFG11_DATA_SEL5_Pos 2UL +#define UDB_PA_CFG11_DATA_SEL5_Msk 0xCUL +#define UDB_PA_CFG11_DATA_SEL6_Pos 4UL +#define UDB_PA_CFG11_DATA_SEL6_Msk 0x30UL +#define UDB_PA_CFG11_DATA_SEL7_Pos 6UL +#define UDB_PA_CFG11_DATA_SEL7_Msk 0xC0UL +/* UDB_PA.CFG12 */ +#define UDB_PA_CFG12_OE_SEL0_Pos 0UL +#define UDB_PA_CFG12_OE_SEL0_Msk 0x3UL +#define UDB_PA_CFG12_OE_SEL1_Pos 2UL +#define UDB_PA_CFG12_OE_SEL1_Msk 0xCUL +#define UDB_PA_CFG12_OE_SEL2_Pos 4UL +#define UDB_PA_CFG12_OE_SEL2_Msk 0x30UL +#define UDB_PA_CFG12_OE_SEL3_Pos 6UL +#define UDB_PA_CFG12_OE_SEL3_Msk 0xC0UL +/* UDB_PA.CFG13 */ +#define UDB_PA_CFG13_OE_SEL4_Pos 0UL +#define UDB_PA_CFG13_OE_SEL4_Msk 0x3UL +#define UDB_PA_CFG13_OE_SEL5_Pos 2UL +#define UDB_PA_CFG13_OE_SEL5_Msk 0xCUL +#define UDB_PA_CFG13_OE_SEL6_Pos 4UL +#define UDB_PA_CFG13_OE_SEL6_Msk 0x30UL +#define UDB_PA_CFG13_OE_SEL7_Pos 6UL +#define UDB_PA_CFG13_OE_SEL7_Msk 0xC0UL +/* UDB_PA.CFG14 */ +#define UDB_PA_CFG14_OE_SYNC0_Pos 0UL +#define UDB_PA_CFG14_OE_SYNC0_Msk 0x3UL +#define UDB_PA_CFG14_OE_SYNC1_Pos 2UL +#define UDB_PA_CFG14_OE_SYNC1_Msk 0xCUL +#define UDB_PA_CFG14_OE_SYNC2_Pos 4UL +#define UDB_PA_CFG14_OE_SYNC2_Msk 0x30UL +#define UDB_PA_CFG14_OE_SYNC3_Pos 6UL +#define UDB_PA_CFG14_OE_SYNC3_Msk 0xC0UL + + +/* UDB_BCTL.MDCLK_EN */ +#define UDB_BCTL_MDCLK_EN_DCEN_Pos 0UL +#define UDB_BCTL_MDCLK_EN_DCEN_Msk 0xFFUL +/* UDB_BCTL.MBCLK_EN */ +#define UDB_BCTL_MBCLK_EN_BCEN_Pos 0UL +#define UDB_BCTL_MBCLK_EN_BCEN_Msk 0x1UL +/* UDB_BCTL.BOTSEL_L */ +#define UDB_BCTL_BOTSEL_L_CLK_SEL0_Pos 0UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL0_Msk 0x3UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL1_Pos 2UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL1_Msk 0xCUL +#define UDB_BCTL_BOTSEL_L_CLK_SEL2_Pos 4UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL2_Msk 0x30UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL3_Pos 6UL +#define UDB_BCTL_BOTSEL_L_CLK_SEL3_Msk 0xC0UL +/* UDB_BCTL.BOTSEL_U */ +#define UDB_BCTL_BOTSEL_U_CLK_SEL4_Pos 0UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL4_Msk 0x3UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL5_Pos 2UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL5_Msk 0xCUL +#define UDB_BCTL_BOTSEL_U_CLK_SEL6_Pos 4UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL6_Msk 0x30UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL7_Pos 6UL +#define UDB_BCTL_BOTSEL_U_CLK_SEL7_Msk 0xC0UL +/* UDB_BCTL.QCLK_EN */ +#define UDB_BCTL_QCLK_EN_DCEN_Q_Pos 0UL +#define UDB_BCTL_QCLK_EN_DCEN_Q_Msk 0xFFUL +#define UDB_BCTL_QCLK_EN_BCEN_Q_Pos 8UL +#define UDB_BCTL_QCLK_EN_BCEN_Q_Msk 0x100UL +#define UDB_BCTL_QCLK_EN_DISABLE_ROUTE_Pos 11UL +#define UDB_BCTL_QCLK_EN_DISABLE_ROUTE_Msk 0x800UL + + +/* UDB_UDBIF.BANK_CTL */ +#define UDB_UDBIF_BANK_CTL_DIS_COR_Pos 0UL +#define UDB_UDBIF_BANK_CTL_DIS_COR_Msk 0x1UL +#define UDB_UDBIF_BANK_CTL_ROUTE_EN_Pos 1UL +#define UDB_UDBIF_BANK_CTL_ROUTE_EN_Msk 0x2UL +#define UDB_UDBIF_BANK_CTL_BANK_EN_Pos 2UL +#define UDB_UDBIF_BANK_CTL_BANK_EN_Msk 0x4UL +#define UDB_UDBIF_BANK_CTL_READ_WAIT_Pos 8UL +#define UDB_UDBIF_BANK_CTL_READ_WAIT_Msk 0x100UL +/* UDB_UDBIF.INT_CLK_CTL */ +#define UDB_UDBIF_INT_CLK_CTL_INT_CLK_ENABLE_Pos 0UL +#define UDB_UDBIF_INT_CLK_CTL_INT_CLK_ENABLE_Msk 0x1UL +/* UDB_UDBIF.INT_CFG */ +#define UDB_UDBIF_INT_CFG_INT_MODE_CFG_Pos 0UL +#define UDB_UDBIF_INT_CFG_INT_MODE_CFG_Msk 0xFFFFFFFFUL +/* UDB_UDBIF.TR_CLK_CTL */ +#define UDB_UDBIF_TR_CLK_CTL_TR_CLOCK_ENABLE_Pos 0UL +#define UDB_UDBIF_TR_CLK_CTL_TR_CLOCK_ENABLE_Msk 0x1UL +/* UDB_UDBIF.TR_CFG */ +#define UDB_UDBIF_TR_CFG_TR_MODE_CFG_Pos 0UL +#define UDB_UDBIF_TR_CFG_TR_MODE_CFG_Msk 0xFFFFFFFFUL +/* UDB_UDBIF.PRIVATE */ +#define UDB_UDBIF_PRIVATE_PIPELINE_MD_Pos 0UL +#define UDB_UDBIF_PRIVATE_PIPELINE_MD_Msk 0x1UL + + +#endif /* _CYIP_UDB_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_usbfs.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_usbfs.h new file mode 100644 index 00000000000..d80a95c4b24 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/ip/cyip_usbfs.h @@ -0,0 +1,1779 @@ +/***************************************************************************//** +* \file cyip_usbfs.h +* +* \brief +* USBFS IP definitions +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _CYIP_USBFS_H_ +#define _CYIP_USBFS_H_ + +#include "cyip_headers.h" + +/******************************************************************************* +* USBFS +*******************************************************************************/ + +#define USBFS_USBDEV_SECTION_SIZE 0x00002000UL +#define USBFS_USBLPM_SECTION_SIZE 0x00001000UL +#define USBFS_USBHOST_SECTION_SIZE 0x00002000UL +#define USBFS_SECTION_SIZE 0x00010000UL + +/** + * \brief USB Device (USBFS_USBDEV) + */ +typedef struct { + __IOM uint32_t EP0_DR[8]; /*!< 0x00000000 Control End point EP0 Data Register */ + __IOM uint32_t CR0; /*!< 0x00000020 USB control 0 Register */ + __IOM uint32_t CR1; /*!< 0x00000024 USB control 1 Register */ + __IOM uint32_t SIE_EP_INT_EN; /*!< 0x00000028 USB SIE Data Endpoints Interrupt Enable Register */ + __IOM uint32_t SIE_EP_INT_SR; /*!< 0x0000002C USB SIE Data Endpoint Interrupt Status */ + __IOM uint32_t SIE_EP1_CNT0; /*!< 0x00000030 Non-control endpoint count register */ + __IOM uint32_t SIE_EP1_CNT1; /*!< 0x00000034 Non-control endpoint count register */ + __IOM uint32_t SIE_EP1_CR0; /*!< 0x00000038 Non-control endpoint's control Register */ + __IM uint32_t RESERVED; + __IOM uint32_t USBIO_CR0; /*!< 0x00000040 USBIO Control 0 Register */ + __IOM uint32_t USBIO_CR2; /*!< 0x00000044 USBIO control 2 Register */ + __IOM uint32_t USBIO_CR1; /*!< 0x00000048 USBIO control 1 Register */ + __IM uint32_t RESERVED1; + __IOM uint32_t DYN_RECONFIG; /*!< 0x00000050 USB Dynamic reconfiguration register */ + __IM uint32_t RESERVED2[3]; + __IM uint32_t SOF0; /*!< 0x00000060 Start Of Frame Register */ + __IM uint32_t SOF1; /*!< 0x00000064 Start Of Frame Register */ + __IM uint32_t RESERVED3[2]; + __IOM uint32_t SIE_EP2_CNT0; /*!< 0x00000070 Non-control endpoint count register */ + __IOM uint32_t SIE_EP2_CNT1; /*!< 0x00000074 Non-control endpoint count register */ + __IOM uint32_t SIE_EP2_CR0; /*!< 0x00000078 Non-control endpoint's control Register */ + __IM uint32_t RESERVED4; + __IM uint32_t OSCLK_DR0; /*!< 0x00000080 Oscillator lock data register 0 */ + __IM uint32_t OSCLK_DR1; /*!< 0x00000084 Oscillator lock data register 1 */ + __IM uint32_t RESERVED5[6]; + __IOM uint32_t EP0_CR; /*!< 0x000000A0 Endpoint0 control Register */ + __IOM uint32_t EP0_CNT; /*!< 0x000000A4 Endpoint0 count Register */ + __IM uint32_t RESERVED6[2]; + __IOM uint32_t SIE_EP3_CNT0; /*!< 0x000000B0 Non-control endpoint count register */ + __IOM uint32_t SIE_EP3_CNT1; /*!< 0x000000B4 Non-control endpoint count register */ + __IOM uint32_t SIE_EP3_CR0; /*!< 0x000000B8 Non-control endpoint's control Register */ + __IM uint32_t RESERVED7[13]; + __IOM uint32_t SIE_EP4_CNT0; /*!< 0x000000F0 Non-control endpoint count register */ + __IOM uint32_t SIE_EP4_CNT1; /*!< 0x000000F4 Non-control endpoint count register */ + __IOM uint32_t SIE_EP4_CR0; /*!< 0x000000F8 Non-control endpoint's control Register */ + __IM uint32_t RESERVED8[13]; + __IOM uint32_t SIE_EP5_CNT0; /*!< 0x00000130 Non-control endpoint count register */ + __IOM uint32_t SIE_EP5_CNT1; /*!< 0x00000134 Non-control endpoint count register */ + __IOM uint32_t SIE_EP5_CR0; /*!< 0x00000138 Non-control endpoint's control Register */ + __IM uint32_t RESERVED9[13]; + __IOM uint32_t SIE_EP6_CNT0; /*!< 0x00000170 Non-control endpoint count register */ + __IOM uint32_t SIE_EP6_CNT1; /*!< 0x00000174 Non-control endpoint count register */ + __IOM uint32_t SIE_EP6_CR0; /*!< 0x00000178 Non-control endpoint's control Register */ + __IM uint32_t RESERVED10[13]; + __IOM uint32_t SIE_EP7_CNT0; /*!< 0x000001B0 Non-control endpoint count register */ + __IOM uint32_t SIE_EP7_CNT1; /*!< 0x000001B4 Non-control endpoint count register */ + __IOM uint32_t SIE_EP7_CR0; /*!< 0x000001B8 Non-control endpoint's control Register */ + __IM uint32_t RESERVED11[13]; + __IOM uint32_t SIE_EP8_CNT0; /*!< 0x000001F0 Non-control endpoint count register */ + __IOM uint32_t SIE_EP8_CNT1; /*!< 0x000001F4 Non-control endpoint count register */ + __IOM uint32_t SIE_EP8_CR0; /*!< 0x000001F8 Non-control endpoint's control Register */ + __IM uint32_t RESERVED12; + __IOM uint32_t ARB_EP1_CFG; /*!< 0x00000200 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP1_INT_EN; /*!< 0x00000204 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP1_SR; /*!< 0x00000208 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED13; + __IOM uint32_t ARB_RW1_WA; /*!< 0x00000210 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW1_WA_MSB; /*!< 0x00000214 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW1_RA; /*!< 0x00000218 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW1_RA_MSB; /*!< 0x0000021C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW1_DR; /*!< 0x00000220 Endpoint Data Register */ + __IM uint32_t RESERVED14[3]; + __IOM uint32_t BUF_SIZE; /*!< 0x00000230 Dedicated Endpoint Buffer Size Register *1 */ + __IM uint32_t RESERVED15; + __IOM uint32_t EP_ACTIVE; /*!< 0x00000238 Endpoint Active Indication Register *1 */ + __IOM uint32_t EP_TYPE; /*!< 0x0000023C Endpoint Type (IN/OUT) Indication *1 */ + __IOM uint32_t ARB_EP2_CFG; /*!< 0x00000240 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP2_INT_EN; /*!< 0x00000244 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP2_SR; /*!< 0x00000248 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED16; + __IOM uint32_t ARB_RW2_WA; /*!< 0x00000250 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW2_WA_MSB; /*!< 0x00000254 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW2_RA; /*!< 0x00000258 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW2_RA_MSB; /*!< 0x0000025C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW2_DR; /*!< 0x00000260 Endpoint Data Register */ + __IM uint32_t RESERVED17[3]; + __IOM uint32_t ARB_CFG; /*!< 0x00000270 Arbiter Configuration Register *1 */ + __IOM uint32_t USB_CLK_EN; /*!< 0x00000274 USB Block Clock Enable Register */ + __IOM uint32_t ARB_INT_EN; /*!< 0x00000278 Arbiter Interrupt Enable *1 */ + __IM uint32_t ARB_INT_SR; /*!< 0x0000027C Arbiter Interrupt Status *1 */ + __IOM uint32_t ARB_EP3_CFG; /*!< 0x00000280 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP3_INT_EN; /*!< 0x00000284 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP3_SR; /*!< 0x00000288 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED18; + __IOM uint32_t ARB_RW3_WA; /*!< 0x00000290 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW3_WA_MSB; /*!< 0x00000294 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW3_RA; /*!< 0x00000298 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW3_RA_MSB; /*!< 0x0000029C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW3_DR; /*!< 0x000002A0 Endpoint Data Register */ + __IM uint32_t RESERVED19[3]; + __IOM uint32_t CWA; /*!< 0x000002B0 Common Area Write Address *1 */ + __IOM uint32_t CWA_MSB; /*!< 0x000002B4 Endpoint Read Address value *1 */ + __IM uint32_t RESERVED20[2]; + __IOM uint32_t ARB_EP4_CFG; /*!< 0x000002C0 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP4_INT_EN; /*!< 0x000002C4 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP4_SR; /*!< 0x000002C8 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED21; + __IOM uint32_t ARB_RW4_WA; /*!< 0x000002D0 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW4_WA_MSB; /*!< 0x000002D4 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW4_RA; /*!< 0x000002D8 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW4_RA_MSB; /*!< 0x000002DC Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW4_DR; /*!< 0x000002E0 Endpoint Data Register */ + __IM uint32_t RESERVED22[3]; + __IOM uint32_t DMA_THRES; /*!< 0x000002F0 DMA Burst / Threshold Configuration */ + __IOM uint32_t DMA_THRES_MSB; /*!< 0x000002F4 DMA Burst / Threshold Configuration */ + __IM uint32_t RESERVED23[2]; + __IOM uint32_t ARB_EP5_CFG; /*!< 0x00000300 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP5_INT_EN; /*!< 0x00000304 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP5_SR; /*!< 0x00000308 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED24; + __IOM uint32_t ARB_RW5_WA; /*!< 0x00000310 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW5_WA_MSB; /*!< 0x00000314 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW5_RA; /*!< 0x00000318 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW5_RA_MSB; /*!< 0x0000031C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW5_DR; /*!< 0x00000320 Endpoint Data Register */ + __IM uint32_t RESERVED25[3]; + __IOM uint32_t BUS_RST_CNT; /*!< 0x00000330 Bus Reset Count Register */ + __IM uint32_t RESERVED26[3]; + __IOM uint32_t ARB_EP6_CFG; /*!< 0x00000340 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP6_INT_EN; /*!< 0x00000344 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP6_SR; /*!< 0x00000348 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED27; + __IOM uint32_t ARB_RW6_WA; /*!< 0x00000350 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW6_WA_MSB; /*!< 0x00000354 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW6_RA; /*!< 0x00000358 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW6_RA_MSB; /*!< 0x0000035C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW6_DR; /*!< 0x00000360 Endpoint Data Register */ + __IM uint32_t RESERVED28[7]; + __IOM uint32_t ARB_EP7_CFG; /*!< 0x00000380 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP7_INT_EN; /*!< 0x00000384 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP7_SR; /*!< 0x00000388 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED29; + __IOM uint32_t ARB_RW7_WA; /*!< 0x00000390 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW7_WA_MSB; /*!< 0x00000394 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW7_RA; /*!< 0x00000398 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW7_RA_MSB; /*!< 0x0000039C Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW7_DR; /*!< 0x000003A0 Endpoint Data Register */ + __IM uint32_t RESERVED30[7]; + __IOM uint32_t ARB_EP8_CFG; /*!< 0x000003C0 Endpoint Configuration Register *1 */ + __IOM uint32_t ARB_EP8_INT_EN; /*!< 0x000003C4 Endpoint Interrupt Enable Register *1 */ + __IOM uint32_t ARB_EP8_SR; /*!< 0x000003C8 Endpoint Interrupt Enable Register *1 */ + __IM uint32_t RESERVED31; + __IOM uint32_t ARB_RW8_WA; /*!< 0x000003D0 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW8_WA_MSB; /*!< 0x000003D4 Endpoint Write Address value *1 */ + __IOM uint32_t ARB_RW8_RA; /*!< 0x000003D8 Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW8_RA_MSB; /*!< 0x000003DC Endpoint Read Address value *1 */ + __IOM uint32_t ARB_RW8_DR; /*!< 0x000003E0 Endpoint Data Register */ + __IM uint32_t RESERVED32[7]; + __IOM uint32_t MEM_DATA[512]; /*!< 0x00000400 DATA */ + __IM uint32_t RESERVED33[280]; + __IM uint32_t SOF16; /*!< 0x00001060 Start Of Frame Register */ + __IM uint32_t RESERVED34[7]; + __IM uint32_t OSCLK_DR16; /*!< 0x00001080 Oscillator lock data register */ + __IM uint32_t RESERVED35[99]; + __IOM uint32_t ARB_RW1_WA16; /*!< 0x00001210 Endpoint Write Address value */ + __IM uint32_t RESERVED36; + __IOM uint32_t ARB_RW1_RA16; /*!< 0x00001218 Endpoint Read Address value */ + __IM uint32_t RESERVED37; + __IOM uint32_t ARB_RW1_DR16; /*!< 0x00001220 Endpoint Data Register */ + __IM uint32_t RESERVED38[11]; + __IOM uint32_t ARB_RW2_WA16; /*!< 0x00001250 Endpoint Write Address value */ + __IM uint32_t RESERVED39; + __IOM uint32_t ARB_RW2_RA16; /*!< 0x00001258 Endpoint Read Address value */ + __IM uint32_t RESERVED40; + __IOM uint32_t ARB_RW2_DR16; /*!< 0x00001260 Endpoint Data Register */ + __IM uint32_t RESERVED41[11]; + __IOM uint32_t ARB_RW3_WA16; /*!< 0x00001290 Endpoint Write Address value */ + __IM uint32_t RESERVED42; + __IOM uint32_t ARB_RW3_RA16; /*!< 0x00001298 Endpoint Read Address value */ + __IM uint32_t RESERVED43; + __IOM uint32_t ARB_RW3_DR16; /*!< 0x000012A0 Endpoint Data Register */ + __IM uint32_t RESERVED44[3]; + __IOM uint32_t CWA16; /*!< 0x000012B0 Common Area Write Address */ + __IM uint32_t RESERVED45[7]; + __IOM uint32_t ARB_RW4_WA16; /*!< 0x000012D0 Endpoint Write Address value */ + __IM uint32_t RESERVED46; + __IOM uint32_t ARB_RW4_RA16; /*!< 0x000012D8 Endpoint Read Address value */ + __IM uint32_t RESERVED47; + __IOM uint32_t ARB_RW4_DR16; /*!< 0x000012E0 Endpoint Data Register */ + __IM uint32_t RESERVED48[3]; + __IOM uint32_t DMA_THRES16; /*!< 0x000012F0 DMA Burst / Threshold Configuration */ + __IM uint32_t RESERVED49[7]; + __IOM uint32_t ARB_RW5_WA16; /*!< 0x00001310 Endpoint Write Address value */ + __IM uint32_t RESERVED50; + __IOM uint32_t ARB_RW5_RA16; /*!< 0x00001318 Endpoint Read Address value */ + __IM uint32_t RESERVED51; + __IOM uint32_t ARB_RW5_DR16; /*!< 0x00001320 Endpoint Data Register */ + __IM uint32_t RESERVED52[11]; + __IOM uint32_t ARB_RW6_WA16; /*!< 0x00001350 Endpoint Write Address value */ + __IM uint32_t RESERVED53; + __IOM uint32_t ARB_RW6_RA16; /*!< 0x00001358 Endpoint Read Address value */ + __IM uint32_t RESERVED54; + __IOM uint32_t ARB_RW6_DR16; /*!< 0x00001360 Endpoint Data Register */ + __IM uint32_t RESERVED55[11]; + __IOM uint32_t ARB_RW7_WA16; /*!< 0x00001390 Endpoint Write Address value */ + __IM uint32_t RESERVED56; + __IOM uint32_t ARB_RW7_RA16; /*!< 0x00001398 Endpoint Read Address value */ + __IM uint32_t RESERVED57; + __IOM uint32_t ARB_RW7_DR16; /*!< 0x000013A0 Endpoint Data Register */ + __IM uint32_t RESERVED58[11]; + __IOM uint32_t ARB_RW8_WA16; /*!< 0x000013D0 Endpoint Write Address value */ + __IM uint32_t RESERVED59; + __IOM uint32_t ARB_RW8_RA16; /*!< 0x000013D8 Endpoint Read Address value */ + __IM uint32_t RESERVED60; + __IOM uint32_t ARB_RW8_DR16; /*!< 0x000013E0 Endpoint Data Register */ + __IM uint32_t RESERVED61[775]; +} USBFS_USBDEV_V1_Type; /*!< Size = 8192 (0x2000) */ + +/** + * \brief USB Device LPM and PHY Test (USBFS_USBLPM) + */ +typedef struct { + __IOM uint32_t POWER_CTL; /*!< 0x00000000 Power Control Register */ + __IM uint32_t RESERVED; + __IOM uint32_t USBIO_CTL; /*!< 0x00000008 USB IO Control Register */ + __IOM uint32_t FLOW_CTL; /*!< 0x0000000C Flow Control Register */ + __IOM uint32_t LPM_CTL; /*!< 0x00000010 LPM Control Register */ + __IM uint32_t LPM_STAT; /*!< 0x00000014 LPM Status register */ + __IM uint32_t RESERVED1[2]; + __IOM uint32_t INTR_SIE; /*!< 0x00000020 USB SOF, BUS RESET and EP0 Interrupt Status */ + __IOM uint32_t INTR_SIE_SET; /*!< 0x00000024 USB SOF, BUS RESET and EP0 Interrupt Set */ + __IOM uint32_t INTR_SIE_MASK; /*!< 0x00000028 USB SOF, BUS RESET and EP0 Interrupt Mask */ + __IM uint32_t INTR_SIE_MASKED; /*!< 0x0000002C USB SOF, BUS RESET and EP0 Interrupt Masked */ + __IOM uint32_t INTR_LVL_SEL; /*!< 0x00000030 Select interrupt level for each interrupt source */ + __IM uint32_t INTR_CAUSE_HI; /*!< 0x00000034 High priority interrupt Cause register */ + __IM uint32_t INTR_CAUSE_MED; /*!< 0x00000038 Medium priority interrupt Cause register */ + __IM uint32_t INTR_CAUSE_LO; /*!< 0x0000003C Low priority interrupt Cause register */ + __IM uint32_t RESERVED2[12]; + __IOM uint32_t DFT_CTL; /*!< 0x00000070 DFT control */ + __IM uint32_t RESERVED3[995]; +} USBFS_USBLPM_V1_Type; /*!< Size = 4096 (0x1000) */ + +/** + * \brief USB Host Controller (USBFS_USBHOST) + */ +typedef struct { + __IOM uint32_t HOST_CTL0; /*!< 0x00000000 Host Control 0 Register. */ + __IM uint32_t RESERVED[3]; + __IOM uint32_t HOST_CTL1; /*!< 0x00000010 Host Control 1 Register. */ + __IM uint32_t RESERVED1[59]; + __IOM uint32_t HOST_CTL2; /*!< 0x00000100 Host Control 2 Register. */ + __IOM uint32_t HOST_ERR; /*!< 0x00000104 Host Error Status Register. */ + __IOM uint32_t HOST_STATUS; /*!< 0x00000108 Host Status Register. */ + __IOM uint32_t HOST_FCOMP; /*!< 0x0000010C Host SOF Interrupt Frame Compare Register */ + __IOM uint32_t HOST_RTIMER; /*!< 0x00000110 Host Retry Timer Setup Register */ + __IOM uint32_t HOST_ADDR; /*!< 0x00000114 Host Address Register */ + __IOM uint32_t HOST_EOF; /*!< 0x00000118 Host EOF Setup Register */ + __IOM uint32_t HOST_FRAME; /*!< 0x0000011C Host Frame Setup Register */ + __IOM uint32_t HOST_TOKEN; /*!< 0x00000120 Host Token Endpoint Register */ + __IM uint32_t RESERVED2[183]; + __IOM uint32_t HOST_EP1_CTL; /*!< 0x00000400 Host Endpoint 1 Control Register */ + __IM uint32_t HOST_EP1_STATUS; /*!< 0x00000404 Host Endpoint 1 Status Register */ + __IOM uint32_t HOST_EP1_RW1_DR; /*!< 0x00000408 Host Endpoint 1 Data 1-Byte Register */ + __IOM uint32_t HOST_EP1_RW2_DR; /*!< 0x0000040C Host Endpoint 1 Data 2-Byte Register */ + __IM uint32_t RESERVED3[60]; + __IOM uint32_t HOST_EP2_CTL; /*!< 0x00000500 Host Endpoint 2 Control Register */ + __IM uint32_t HOST_EP2_STATUS; /*!< 0x00000504 Host Endpoint 2 Status Register */ + __IOM uint32_t HOST_EP2_RW1_DR; /*!< 0x00000508 Host Endpoint 2 Data 1-Byte Register */ + __IOM uint32_t HOST_EP2_RW2_DR; /*!< 0x0000050C Host Endpoint 2 Data 2-Byte Register */ + __IM uint32_t RESERVED4[188]; + __IOM uint32_t HOST_LVL1_SEL; /*!< 0x00000800 Host Interrupt Level 1 Selection Register */ + __IOM uint32_t HOST_LVL2_SEL; /*!< 0x00000804 Host Interrupt Level 2 Selection Register */ + __IM uint32_t RESERVED5[62]; + __IM uint32_t INTR_USBHOST_CAUSE_HI; /*!< 0x00000900 Interrupt USB Host Cause High Register */ + __IM uint32_t INTR_USBHOST_CAUSE_MED; /*!< 0x00000904 Interrupt USB Host Cause Medium Register */ + __IM uint32_t INTR_USBHOST_CAUSE_LO; /*!< 0x00000908 Interrupt USB Host Cause Low Register */ + __IM uint32_t RESERVED6[5]; + __IM uint32_t INTR_HOST_EP_CAUSE_HI; /*!< 0x00000920 Interrupt USB Host Endpoint Cause High Register */ + __IM uint32_t INTR_HOST_EP_CAUSE_MED; /*!< 0x00000924 Interrupt USB Host Endpoint Cause Medium Register */ + __IM uint32_t INTR_HOST_EP_CAUSE_LO; /*!< 0x00000928 Interrupt USB Host Endpoint Cause Low Register */ + __IM uint32_t RESERVED7[5]; + __IOM uint32_t INTR_USBHOST; /*!< 0x00000940 Interrupt USB Host Register */ + __IOM uint32_t INTR_USBHOST_SET; /*!< 0x00000944 Interrupt USB Host Set Register */ + __IOM uint32_t INTR_USBHOST_MASK; /*!< 0x00000948 Interrupt USB Host Mask Register */ + __IM uint32_t INTR_USBHOST_MASKED; /*!< 0x0000094C Interrupt USB Host Masked Register */ + __IM uint32_t RESERVED8[44]; + __IOM uint32_t INTR_HOST_EP; /*!< 0x00000A00 Interrupt USB Host Endpoint Register */ + __IOM uint32_t INTR_HOST_EP_SET; /*!< 0x00000A04 Interrupt USB Host Endpoint Set Register */ + __IOM uint32_t INTR_HOST_EP_MASK; /*!< 0x00000A08 Interrupt USB Host Endpoint Mask Register */ + __IM uint32_t INTR_HOST_EP_MASKED; /*!< 0x00000A0C Interrupt USB Host Endpoint Masked Register */ + __IM uint32_t RESERVED9[60]; + __IOM uint32_t HOST_DMA_ENBL; /*!< 0x00000B00 Host DMA Enable Register */ + __IM uint32_t RESERVED10[7]; + __IOM uint32_t HOST_EP1_BLK; /*!< 0x00000B20 Host Endpoint 1 Block Register */ + __IM uint32_t RESERVED11[3]; + __IOM uint32_t HOST_EP2_BLK; /*!< 0x00000B30 Host Endpoint 2 Block Register */ + __IM uint32_t RESERVED12[1331]; +} USBFS_USBHOST_V1_Type; /*!< Size = 8192 (0x2000) */ + +/** + * \brief USB Host and Device Controller (USBFS) + */ +typedef struct { + USBFS_USBDEV_V1_Type USBDEV; /*!< 0x00000000 USB Device */ + USBFS_USBLPM_V1_Type USBLPM; /*!< 0x00002000 USB Device LPM and PHY Test */ + __IM uint32_t RESERVED[1024]; + USBFS_USBHOST_V1_Type USBHOST; /*!< 0x00004000 USB Host Controller */ +} USBFS_V1_Type; /*!< Size = 24576 (0x6000) */ + + +/* USBFS_USBDEV.EP0_DR */ +#define USBFS_USBDEV_EP0_DR_DATA_BYTE_Pos 0UL +#define USBFS_USBDEV_EP0_DR_DATA_BYTE_Msk 0xFFUL +/* USBFS_USBDEV.CR0 */ +#define USBFS_USBDEV_CR0_DEVICE_ADDRESS_Pos 0UL +#define USBFS_USBDEV_CR0_DEVICE_ADDRESS_Msk 0x7FUL +#define USBFS_USBDEV_CR0_USB_ENABLE_Pos 7UL +#define USBFS_USBDEV_CR0_USB_ENABLE_Msk 0x80UL +/* USBFS_USBDEV.CR1 */ +#define USBFS_USBDEV_CR1_REG_ENABLE_Pos 0UL +#define USBFS_USBDEV_CR1_REG_ENABLE_Msk 0x1UL +#define USBFS_USBDEV_CR1_ENABLE_LOCK_Pos 1UL +#define USBFS_USBDEV_CR1_ENABLE_LOCK_Msk 0x2UL +#define USBFS_USBDEV_CR1_BUS_ACTIVITY_Pos 2UL +#define USBFS_USBDEV_CR1_BUS_ACTIVITY_Msk 0x4UL +#define USBFS_USBDEV_CR1_RESERVED_3_Pos 3UL +#define USBFS_USBDEV_CR1_RESERVED_3_Msk 0x8UL +/* USBFS_USBDEV.SIE_EP_INT_EN */ +#define USBFS_USBDEV_SIE_EP_INT_EN_EP1_INTR_EN_Pos 0UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP1_INTR_EN_Msk 0x1UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP2_INTR_EN_Pos 1UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP2_INTR_EN_Msk 0x2UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP3_INTR_EN_Pos 2UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP3_INTR_EN_Msk 0x4UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP4_INTR_EN_Pos 3UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP4_INTR_EN_Msk 0x8UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP5_INTR_EN_Pos 4UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP5_INTR_EN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP6_INTR_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP6_INTR_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP7_INTR_EN_Pos 6UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP7_INTR_EN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP8_INTR_EN_Pos 7UL +#define USBFS_USBDEV_SIE_EP_INT_EN_EP8_INTR_EN_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP_INT_SR */ +#define USBFS_USBDEV_SIE_EP_INT_SR_EP1_INTR_Pos 0UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP1_INTR_Msk 0x1UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP2_INTR_Pos 1UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP2_INTR_Msk 0x2UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP3_INTR_Pos 2UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP3_INTR_Msk 0x4UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP4_INTR_Pos 3UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP4_INTR_Msk 0x8UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP5_INTR_Pos 4UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP5_INTR_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP6_INTR_Pos 5UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP6_INTR_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP7_INTR_Pos 6UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP7_INTR_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP8_INTR_Pos 7UL +#define USBFS_USBDEV_SIE_EP_INT_SR_EP8_INTR_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP1_CNT0 */ +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP1_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP1_CNT1 */ +#define USBFS_USBDEV_SIE_EP1_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP1_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP1_CR0 */ +#define USBFS_USBDEV_SIE_EP1_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP1_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP1_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP1_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP1_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP1_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP1_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP1_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP1_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP1_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.USBIO_CR0 */ +#define USBFS_USBDEV_USBIO_CR0_RD_Pos 0UL +#define USBFS_USBDEV_USBIO_CR0_RD_Msk 0x1UL +#define USBFS_USBDEV_USBIO_CR0_TD_Pos 5UL +#define USBFS_USBDEV_USBIO_CR0_TD_Msk 0x20UL +#define USBFS_USBDEV_USBIO_CR0_TSE0_Pos 6UL +#define USBFS_USBDEV_USBIO_CR0_TSE0_Msk 0x40UL +#define USBFS_USBDEV_USBIO_CR0_TEN_Pos 7UL +#define USBFS_USBDEV_USBIO_CR0_TEN_Msk 0x80UL +/* USBFS_USBDEV.USBIO_CR2 */ +#define USBFS_USBDEV_USBIO_CR2_RESERVED_5_0_Pos 0UL +#define USBFS_USBDEV_USBIO_CR2_RESERVED_5_0_Msk 0x3FUL +#define USBFS_USBDEV_USBIO_CR2_TEST_PKT_Pos 6UL +#define USBFS_USBDEV_USBIO_CR2_TEST_PKT_Msk 0x40UL +#define USBFS_USBDEV_USBIO_CR2_RESERVED_7_Pos 7UL +#define USBFS_USBDEV_USBIO_CR2_RESERVED_7_Msk 0x80UL +/* USBFS_USBDEV.USBIO_CR1 */ +#define USBFS_USBDEV_USBIO_CR1_DMO_Pos 0UL +#define USBFS_USBDEV_USBIO_CR1_DMO_Msk 0x1UL +#define USBFS_USBDEV_USBIO_CR1_DPO_Pos 1UL +#define USBFS_USBDEV_USBIO_CR1_DPO_Msk 0x2UL +#define USBFS_USBDEV_USBIO_CR1_RESERVED_2_Pos 2UL +#define USBFS_USBDEV_USBIO_CR1_RESERVED_2_Msk 0x4UL +#define USBFS_USBDEV_USBIO_CR1_IOMODE_Pos 5UL +#define USBFS_USBDEV_USBIO_CR1_IOMODE_Msk 0x20UL +/* USBFS_USBDEV.DYN_RECONFIG */ +#define USBFS_USBDEV_DYN_RECONFIG_DYN_CONFIG_EN_Pos 0UL +#define USBFS_USBDEV_DYN_RECONFIG_DYN_CONFIG_EN_Msk 0x1UL +#define USBFS_USBDEV_DYN_RECONFIG_DYN_RECONFIG_EPNO_Pos 1UL +#define USBFS_USBDEV_DYN_RECONFIG_DYN_RECONFIG_EPNO_Msk 0xEUL +#define USBFS_USBDEV_DYN_RECONFIG_DYN_RECONFIG_RDY_STS_Pos 4UL +#define USBFS_USBDEV_DYN_RECONFIG_DYN_RECONFIG_RDY_STS_Msk 0x10UL +/* USBFS_USBDEV.SOF0 */ +#define USBFS_USBDEV_SOF0_FRAME_NUMBER_Pos 0UL +#define USBFS_USBDEV_SOF0_FRAME_NUMBER_Msk 0xFFUL +/* USBFS_USBDEV.SOF1 */ +#define USBFS_USBDEV_SOF1_FRAME_NUMBER_MSB_Pos 0UL +#define USBFS_USBDEV_SOF1_FRAME_NUMBER_MSB_Msk 0x7UL +/* USBFS_USBDEV.SIE_EP2_CNT0 */ +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP2_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP2_CNT1 */ +#define USBFS_USBDEV_SIE_EP2_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP2_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP2_CR0 */ +#define USBFS_USBDEV_SIE_EP2_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP2_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP2_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP2_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP2_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP2_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP2_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP2_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP2_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP2_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.OSCLK_DR0 */ +#define USBFS_USBDEV_OSCLK_DR0_ADDER_Pos 0UL +#define USBFS_USBDEV_OSCLK_DR0_ADDER_Msk 0xFFUL +/* USBFS_USBDEV.OSCLK_DR1 */ +#define USBFS_USBDEV_OSCLK_DR1_ADDER_MSB_Pos 0UL +#define USBFS_USBDEV_OSCLK_DR1_ADDER_MSB_Msk 0x7FUL +/* USBFS_USBDEV.EP0_CR */ +#define USBFS_USBDEV_EP0_CR_MODE_Pos 0UL +#define USBFS_USBDEV_EP0_CR_MODE_Msk 0xFUL +#define USBFS_USBDEV_EP0_CR_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_EP0_CR_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_EP0_CR_OUT_RCVD_Pos 5UL +#define USBFS_USBDEV_EP0_CR_OUT_RCVD_Msk 0x20UL +#define USBFS_USBDEV_EP0_CR_IN_RCVD_Pos 6UL +#define USBFS_USBDEV_EP0_CR_IN_RCVD_Msk 0x40UL +#define USBFS_USBDEV_EP0_CR_SETUP_RCVD_Pos 7UL +#define USBFS_USBDEV_EP0_CR_SETUP_RCVD_Msk 0x80UL +/* USBFS_USBDEV.EP0_CNT */ +#define USBFS_USBDEV_EP0_CNT_BYTE_COUNT_Pos 0UL +#define USBFS_USBDEV_EP0_CNT_BYTE_COUNT_Msk 0xFUL +#define USBFS_USBDEV_EP0_CNT_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_EP0_CNT_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_EP0_CNT_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_EP0_CNT_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP3_CNT0 */ +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP3_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP3_CNT1 */ +#define USBFS_USBDEV_SIE_EP3_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP3_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP3_CR0 */ +#define USBFS_USBDEV_SIE_EP3_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP3_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP3_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP3_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP3_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP3_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP3_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP3_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP3_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP3_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP4_CNT0 */ +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP4_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP4_CNT1 */ +#define USBFS_USBDEV_SIE_EP4_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP4_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP4_CR0 */ +#define USBFS_USBDEV_SIE_EP4_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP4_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP4_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP4_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP4_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP4_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP4_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP4_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP4_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP4_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP5_CNT0 */ +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP5_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP5_CNT1 */ +#define USBFS_USBDEV_SIE_EP5_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP5_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP5_CR0 */ +#define USBFS_USBDEV_SIE_EP5_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP5_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP5_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP5_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP5_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP5_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP5_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP5_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP5_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP5_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP6_CNT0 */ +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP6_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP6_CNT1 */ +#define USBFS_USBDEV_SIE_EP6_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP6_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP6_CR0 */ +#define USBFS_USBDEV_SIE_EP6_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP6_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP6_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP6_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP6_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP6_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP6_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP6_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP6_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP6_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP7_CNT0 */ +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP7_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP7_CNT1 */ +#define USBFS_USBDEV_SIE_EP7_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP7_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP7_CR0 */ +#define USBFS_USBDEV_SIE_EP7_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP7_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP7_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP7_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP7_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP7_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP7_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP7_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP7_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP7_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP8_CNT0 */ +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_COUNT_MSB_Pos 0UL +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_COUNT_MSB_Msk 0x7UL +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_VALID_Pos 6UL +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_VALID_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_TOGGLE_Pos 7UL +#define USBFS_USBDEV_SIE_EP8_CNT0_DATA_TOGGLE_Msk 0x80UL +/* USBFS_USBDEV.SIE_EP8_CNT1 */ +#define USBFS_USBDEV_SIE_EP8_CNT1_DATA_COUNT_Pos 0UL +#define USBFS_USBDEV_SIE_EP8_CNT1_DATA_COUNT_Msk 0xFFUL +/* USBFS_USBDEV.SIE_EP8_CR0 */ +#define USBFS_USBDEV_SIE_EP8_CR0_MODE_Pos 0UL +#define USBFS_USBDEV_SIE_EP8_CR0_MODE_Msk 0xFUL +#define USBFS_USBDEV_SIE_EP8_CR0_ACKED_TXN_Pos 4UL +#define USBFS_USBDEV_SIE_EP8_CR0_ACKED_TXN_Msk 0x10UL +#define USBFS_USBDEV_SIE_EP8_CR0_NAK_INT_EN_Pos 5UL +#define USBFS_USBDEV_SIE_EP8_CR0_NAK_INT_EN_Msk 0x20UL +#define USBFS_USBDEV_SIE_EP8_CR0_ERR_IN_TXN_Pos 6UL +#define USBFS_USBDEV_SIE_EP8_CR0_ERR_IN_TXN_Msk 0x40UL +#define USBFS_USBDEV_SIE_EP8_CR0_STALL_Pos 7UL +#define USBFS_USBDEV_SIE_EP8_CR0_STALL_Msk 0x80UL +/* USBFS_USBDEV.ARB_EP1_CFG */ +#define USBFS_USBDEV_ARB_EP1_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP1_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP1_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP1_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP1_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP1_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP1_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP1_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP1_INT_EN */ +#define USBFS_USBDEV_ARB_EP1_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP1_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP1_SR */ +#define USBFS_USBDEV_ARB_EP1_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP1_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP1_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP1_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP1_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP1_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP1_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP1_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP1_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP1_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW1_WA */ +#define USBFS_USBDEV_ARB_RW1_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW1_WA_MSB */ +#define USBFS_USBDEV_ARB_RW1_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW1_RA */ +#define USBFS_USBDEV_ARB_RW1_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW1_RA_MSB */ +#define USBFS_USBDEV_ARB_RW1_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW1_DR */ +#define USBFS_USBDEV_ARB_RW1_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.BUF_SIZE */ +#define USBFS_USBDEV_BUF_SIZE_IN_BUF_Pos 0UL +#define USBFS_USBDEV_BUF_SIZE_IN_BUF_Msk 0xFUL +#define USBFS_USBDEV_BUF_SIZE_OUT_BUF_Pos 4UL +#define USBFS_USBDEV_BUF_SIZE_OUT_BUF_Msk 0xF0UL +/* USBFS_USBDEV.EP_ACTIVE */ +#define USBFS_USBDEV_EP_ACTIVE_EP1_ACT_Pos 0UL +#define USBFS_USBDEV_EP_ACTIVE_EP1_ACT_Msk 0x1UL +#define USBFS_USBDEV_EP_ACTIVE_EP2_ACT_Pos 1UL +#define USBFS_USBDEV_EP_ACTIVE_EP2_ACT_Msk 0x2UL +#define USBFS_USBDEV_EP_ACTIVE_EP3_ACT_Pos 2UL +#define USBFS_USBDEV_EP_ACTIVE_EP3_ACT_Msk 0x4UL +#define USBFS_USBDEV_EP_ACTIVE_EP4_ACT_Pos 3UL +#define USBFS_USBDEV_EP_ACTIVE_EP4_ACT_Msk 0x8UL +#define USBFS_USBDEV_EP_ACTIVE_EP5_ACT_Pos 4UL +#define USBFS_USBDEV_EP_ACTIVE_EP5_ACT_Msk 0x10UL +#define USBFS_USBDEV_EP_ACTIVE_EP6_ACT_Pos 5UL +#define USBFS_USBDEV_EP_ACTIVE_EP6_ACT_Msk 0x20UL +#define USBFS_USBDEV_EP_ACTIVE_EP7_ACT_Pos 6UL +#define USBFS_USBDEV_EP_ACTIVE_EP7_ACT_Msk 0x40UL +#define USBFS_USBDEV_EP_ACTIVE_EP8_ACT_Pos 7UL +#define USBFS_USBDEV_EP_ACTIVE_EP8_ACT_Msk 0x80UL +/* USBFS_USBDEV.EP_TYPE */ +#define USBFS_USBDEV_EP_TYPE_EP1_TYP_Pos 0UL +#define USBFS_USBDEV_EP_TYPE_EP1_TYP_Msk 0x1UL +#define USBFS_USBDEV_EP_TYPE_EP2_TYP_Pos 1UL +#define USBFS_USBDEV_EP_TYPE_EP2_TYP_Msk 0x2UL +#define USBFS_USBDEV_EP_TYPE_EP3_TYP_Pos 2UL +#define USBFS_USBDEV_EP_TYPE_EP3_TYP_Msk 0x4UL +#define USBFS_USBDEV_EP_TYPE_EP4_TYP_Pos 3UL +#define USBFS_USBDEV_EP_TYPE_EP4_TYP_Msk 0x8UL +#define USBFS_USBDEV_EP_TYPE_EP5_TYP_Pos 4UL +#define USBFS_USBDEV_EP_TYPE_EP5_TYP_Msk 0x10UL +#define USBFS_USBDEV_EP_TYPE_EP6_TYP_Pos 5UL +#define USBFS_USBDEV_EP_TYPE_EP6_TYP_Msk 0x20UL +#define USBFS_USBDEV_EP_TYPE_EP7_TYP_Pos 6UL +#define USBFS_USBDEV_EP_TYPE_EP7_TYP_Msk 0x40UL +#define USBFS_USBDEV_EP_TYPE_EP8_TYP_Pos 7UL +#define USBFS_USBDEV_EP_TYPE_EP8_TYP_Msk 0x80UL +/* USBFS_USBDEV.ARB_EP2_CFG */ +#define USBFS_USBDEV_ARB_EP2_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP2_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP2_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP2_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP2_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP2_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP2_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP2_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP2_INT_EN */ +#define USBFS_USBDEV_ARB_EP2_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP2_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP2_SR */ +#define USBFS_USBDEV_ARB_EP2_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP2_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP2_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP2_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP2_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP2_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP2_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP2_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP2_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP2_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW2_WA */ +#define USBFS_USBDEV_ARB_RW2_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW2_WA_MSB */ +#define USBFS_USBDEV_ARB_RW2_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW2_RA */ +#define USBFS_USBDEV_ARB_RW2_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW2_RA_MSB */ +#define USBFS_USBDEV_ARB_RW2_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW2_DR */ +#define USBFS_USBDEV_ARB_RW2_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.ARB_CFG */ +#define USBFS_USBDEV_ARB_CFG_AUTO_MEM_Pos 4UL +#define USBFS_USBDEV_ARB_CFG_AUTO_MEM_Msk 0x10UL +#define USBFS_USBDEV_ARB_CFG_DMA_CFG_Pos 5UL +#define USBFS_USBDEV_ARB_CFG_DMA_CFG_Msk 0x60UL +#define USBFS_USBDEV_ARB_CFG_CFG_CMP_Pos 7UL +#define USBFS_USBDEV_ARB_CFG_CFG_CMP_Msk 0x80UL +/* USBFS_USBDEV.USB_CLK_EN */ +#define USBFS_USBDEV_USB_CLK_EN_CSR_CLK_EN_Pos 0UL +#define USBFS_USBDEV_USB_CLK_EN_CSR_CLK_EN_Msk 0x1UL +/* USBFS_USBDEV.ARB_INT_EN */ +#define USBFS_USBDEV_ARB_INT_EN_EP1_INTR_EN_Pos 0UL +#define USBFS_USBDEV_ARB_INT_EN_EP1_INTR_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_INT_EN_EP2_INTR_EN_Pos 1UL +#define USBFS_USBDEV_ARB_INT_EN_EP2_INTR_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_INT_EN_EP3_INTR_EN_Pos 2UL +#define USBFS_USBDEV_ARB_INT_EN_EP3_INTR_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_INT_EN_EP4_INTR_EN_Pos 3UL +#define USBFS_USBDEV_ARB_INT_EN_EP4_INTR_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_INT_EN_EP5_INTR_EN_Pos 4UL +#define USBFS_USBDEV_ARB_INT_EN_EP5_INTR_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_INT_EN_EP6_INTR_EN_Pos 5UL +#define USBFS_USBDEV_ARB_INT_EN_EP6_INTR_EN_Msk 0x20UL +#define USBFS_USBDEV_ARB_INT_EN_EP7_INTR_EN_Pos 6UL +#define USBFS_USBDEV_ARB_INT_EN_EP7_INTR_EN_Msk 0x40UL +#define USBFS_USBDEV_ARB_INT_EN_EP8_INTR_EN_Pos 7UL +#define USBFS_USBDEV_ARB_INT_EN_EP8_INTR_EN_Msk 0x80UL +/* USBFS_USBDEV.ARB_INT_SR */ +#define USBFS_USBDEV_ARB_INT_SR_EP1_INTR_Pos 0UL +#define USBFS_USBDEV_ARB_INT_SR_EP1_INTR_Msk 0x1UL +#define USBFS_USBDEV_ARB_INT_SR_EP2_INTR_Pos 1UL +#define USBFS_USBDEV_ARB_INT_SR_EP2_INTR_Msk 0x2UL +#define USBFS_USBDEV_ARB_INT_SR_EP3_INTR_Pos 2UL +#define USBFS_USBDEV_ARB_INT_SR_EP3_INTR_Msk 0x4UL +#define USBFS_USBDEV_ARB_INT_SR_EP4_INTR_Pos 3UL +#define USBFS_USBDEV_ARB_INT_SR_EP4_INTR_Msk 0x8UL +#define USBFS_USBDEV_ARB_INT_SR_EP5_INTR_Pos 4UL +#define USBFS_USBDEV_ARB_INT_SR_EP5_INTR_Msk 0x10UL +#define USBFS_USBDEV_ARB_INT_SR_EP6_INTR_Pos 5UL +#define USBFS_USBDEV_ARB_INT_SR_EP6_INTR_Msk 0x20UL +#define USBFS_USBDEV_ARB_INT_SR_EP7_INTR_Pos 6UL +#define USBFS_USBDEV_ARB_INT_SR_EP7_INTR_Msk 0x40UL +#define USBFS_USBDEV_ARB_INT_SR_EP8_INTR_Pos 7UL +#define USBFS_USBDEV_ARB_INT_SR_EP8_INTR_Msk 0x80UL +/* USBFS_USBDEV.ARB_EP3_CFG */ +#define USBFS_USBDEV_ARB_EP3_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP3_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP3_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP3_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP3_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP3_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP3_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP3_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP3_INT_EN */ +#define USBFS_USBDEV_ARB_EP3_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP3_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP3_SR */ +#define USBFS_USBDEV_ARB_EP3_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP3_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP3_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP3_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP3_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP3_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP3_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP3_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP3_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP3_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW3_WA */ +#define USBFS_USBDEV_ARB_RW3_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW3_WA_MSB */ +#define USBFS_USBDEV_ARB_RW3_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW3_RA */ +#define USBFS_USBDEV_ARB_RW3_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW3_RA_MSB */ +#define USBFS_USBDEV_ARB_RW3_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW3_DR */ +#define USBFS_USBDEV_ARB_RW3_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.CWA */ +#define USBFS_USBDEV_CWA_CWA_Pos 0UL +#define USBFS_USBDEV_CWA_CWA_Msk 0xFFUL +/* USBFS_USBDEV.CWA_MSB */ +#define USBFS_USBDEV_CWA_MSB_CWA_MSB_Pos 0UL +#define USBFS_USBDEV_CWA_MSB_CWA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_EP4_CFG */ +#define USBFS_USBDEV_ARB_EP4_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP4_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP4_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP4_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP4_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP4_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP4_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP4_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP4_INT_EN */ +#define USBFS_USBDEV_ARB_EP4_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP4_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP4_SR */ +#define USBFS_USBDEV_ARB_EP4_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP4_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP4_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP4_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP4_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP4_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP4_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP4_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP4_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP4_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW4_WA */ +#define USBFS_USBDEV_ARB_RW4_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW4_WA_MSB */ +#define USBFS_USBDEV_ARB_RW4_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW4_RA */ +#define USBFS_USBDEV_ARB_RW4_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW4_RA_MSB */ +#define USBFS_USBDEV_ARB_RW4_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW4_DR */ +#define USBFS_USBDEV_ARB_RW4_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.DMA_THRES */ +#define USBFS_USBDEV_DMA_THRES_DMA_THS_Pos 0UL +#define USBFS_USBDEV_DMA_THRES_DMA_THS_Msk 0xFFUL +/* USBFS_USBDEV.DMA_THRES_MSB */ +#define USBFS_USBDEV_DMA_THRES_MSB_DMA_THS_MSB_Pos 0UL +#define USBFS_USBDEV_DMA_THRES_MSB_DMA_THS_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_EP5_CFG */ +#define USBFS_USBDEV_ARB_EP5_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP5_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP5_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP5_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP5_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP5_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP5_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP5_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP5_INT_EN */ +#define USBFS_USBDEV_ARB_EP5_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP5_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP5_SR */ +#define USBFS_USBDEV_ARB_EP5_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP5_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP5_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP5_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP5_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP5_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP5_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP5_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP5_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP5_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW5_WA */ +#define USBFS_USBDEV_ARB_RW5_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW5_WA_MSB */ +#define USBFS_USBDEV_ARB_RW5_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW5_RA */ +#define USBFS_USBDEV_ARB_RW5_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW5_RA_MSB */ +#define USBFS_USBDEV_ARB_RW5_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW5_DR */ +#define USBFS_USBDEV_ARB_RW5_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.BUS_RST_CNT */ +#define USBFS_USBDEV_BUS_RST_CNT_BUS_RST_CNT_Pos 0UL +#define USBFS_USBDEV_BUS_RST_CNT_BUS_RST_CNT_Msk 0xFUL +/* USBFS_USBDEV.ARB_EP6_CFG */ +#define USBFS_USBDEV_ARB_EP6_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP6_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP6_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP6_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP6_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP6_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP6_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP6_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP6_INT_EN */ +#define USBFS_USBDEV_ARB_EP6_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP6_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP6_SR */ +#define USBFS_USBDEV_ARB_EP6_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP6_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP6_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP6_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP6_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP6_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP6_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP6_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP6_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP6_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW6_WA */ +#define USBFS_USBDEV_ARB_RW6_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW6_WA_MSB */ +#define USBFS_USBDEV_ARB_RW6_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW6_RA */ +#define USBFS_USBDEV_ARB_RW6_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW6_RA_MSB */ +#define USBFS_USBDEV_ARB_RW6_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW6_DR */ +#define USBFS_USBDEV_ARB_RW6_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.ARB_EP7_CFG */ +#define USBFS_USBDEV_ARB_EP7_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP7_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP7_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP7_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP7_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP7_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP7_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP7_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP7_INT_EN */ +#define USBFS_USBDEV_ARB_EP7_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP7_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP7_SR */ +#define USBFS_USBDEV_ARB_EP7_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP7_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP7_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP7_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP7_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP7_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP7_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP7_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP7_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP7_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW7_WA */ +#define USBFS_USBDEV_ARB_RW7_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW7_WA_MSB */ +#define USBFS_USBDEV_ARB_RW7_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW7_RA */ +#define USBFS_USBDEV_ARB_RW7_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW7_RA_MSB */ +#define USBFS_USBDEV_ARB_RW7_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW7_DR */ +#define USBFS_USBDEV_ARB_RW7_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.ARB_EP8_CFG */ +#define USBFS_USBDEV_ARB_EP8_CFG_IN_DATA_RDY_Pos 0UL +#define USBFS_USBDEV_ARB_EP8_CFG_IN_DATA_RDY_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP8_CFG_DMA_REQ_Pos 1UL +#define USBFS_USBDEV_ARB_EP8_CFG_DMA_REQ_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP8_CFG_CRC_BYPASS_Pos 2UL +#define USBFS_USBDEV_ARB_EP8_CFG_CRC_BYPASS_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP8_CFG_RESET_PTR_Pos 3UL +#define USBFS_USBDEV_ARB_EP8_CFG_RESET_PTR_Msk 0x8UL +/* USBFS_USBDEV.ARB_EP8_INT_EN */ +#define USBFS_USBDEV_ARB_EP8_INT_EN_IN_BUF_FULL_EN_Pos 0UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_IN_BUF_FULL_EN_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_DMA_GNT_EN_Pos 1UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_DMA_GNT_EN_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_BUF_OVER_EN_Pos 2UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_BUF_OVER_EN_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_BUF_UNDER_EN_Pos 3UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_BUF_UNDER_EN_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_ERR_INT_EN_Pos 4UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_ERR_INT_EN_Msk 0x10UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_DMA_TERMIN_EN_Pos 5UL +#define USBFS_USBDEV_ARB_EP8_INT_EN_DMA_TERMIN_EN_Msk 0x20UL +/* USBFS_USBDEV.ARB_EP8_SR */ +#define USBFS_USBDEV_ARB_EP8_SR_IN_BUF_FULL_Pos 0UL +#define USBFS_USBDEV_ARB_EP8_SR_IN_BUF_FULL_Msk 0x1UL +#define USBFS_USBDEV_ARB_EP8_SR_DMA_GNT_Pos 1UL +#define USBFS_USBDEV_ARB_EP8_SR_DMA_GNT_Msk 0x2UL +#define USBFS_USBDEV_ARB_EP8_SR_BUF_OVER_Pos 2UL +#define USBFS_USBDEV_ARB_EP8_SR_BUF_OVER_Msk 0x4UL +#define USBFS_USBDEV_ARB_EP8_SR_BUF_UNDER_Pos 3UL +#define USBFS_USBDEV_ARB_EP8_SR_BUF_UNDER_Msk 0x8UL +#define USBFS_USBDEV_ARB_EP8_SR_DMA_TERMIN_Pos 5UL +#define USBFS_USBDEV_ARB_EP8_SR_DMA_TERMIN_Msk 0x20UL +/* USBFS_USBDEV.ARB_RW8_WA */ +#define USBFS_USBDEV_ARB_RW8_WA_WA_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_WA_WA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW8_WA_MSB */ +#define USBFS_USBDEV_ARB_RW8_WA_MSB_WA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_WA_MSB_WA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW8_RA */ +#define USBFS_USBDEV_ARB_RW8_RA_RA_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_RA_RA_Msk 0xFFUL +/* USBFS_USBDEV.ARB_RW8_RA_MSB */ +#define USBFS_USBDEV_ARB_RW8_RA_MSB_RA_MSB_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_RA_MSB_RA_MSB_Msk 0x1UL +/* USBFS_USBDEV.ARB_RW8_DR */ +#define USBFS_USBDEV_ARB_RW8_DR_DR_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_DR_DR_Msk 0xFFUL +/* USBFS_USBDEV.MEM_DATA */ +#define USBFS_USBDEV_MEM_DATA_DR_Pos 0UL +#define USBFS_USBDEV_MEM_DATA_DR_Msk 0xFFUL +/* USBFS_USBDEV.SOF16 */ +#define USBFS_USBDEV_SOF16_FRAME_NUMBER16_Pos 0UL +#define USBFS_USBDEV_SOF16_FRAME_NUMBER16_Msk 0x7FFUL +/* USBFS_USBDEV.OSCLK_DR16 */ +#define USBFS_USBDEV_OSCLK_DR16_ADDER16_Pos 0UL +#define USBFS_USBDEV_OSCLK_DR16_ADDER16_Msk 0x7FFFUL +/* USBFS_USBDEV.ARB_RW1_WA16 */ +#define USBFS_USBDEV_ARB_RW1_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW1_RA16 */ +#define USBFS_USBDEV_ARB_RW1_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW1_DR16 */ +#define USBFS_USBDEV_ARB_RW1_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW1_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.ARB_RW2_WA16 */ +#define USBFS_USBDEV_ARB_RW2_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW2_RA16 */ +#define USBFS_USBDEV_ARB_RW2_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW2_DR16 */ +#define USBFS_USBDEV_ARB_RW2_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW2_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.ARB_RW3_WA16 */ +#define USBFS_USBDEV_ARB_RW3_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW3_RA16 */ +#define USBFS_USBDEV_ARB_RW3_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW3_DR16 */ +#define USBFS_USBDEV_ARB_RW3_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW3_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.CWA16 */ +#define USBFS_USBDEV_CWA16_CWA16_Pos 0UL +#define USBFS_USBDEV_CWA16_CWA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW4_WA16 */ +#define USBFS_USBDEV_ARB_RW4_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW4_RA16 */ +#define USBFS_USBDEV_ARB_RW4_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW4_DR16 */ +#define USBFS_USBDEV_ARB_RW4_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW4_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.DMA_THRES16 */ +#define USBFS_USBDEV_DMA_THRES16_DMA_THS16_Pos 0UL +#define USBFS_USBDEV_DMA_THRES16_DMA_THS16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW5_WA16 */ +#define USBFS_USBDEV_ARB_RW5_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW5_RA16 */ +#define USBFS_USBDEV_ARB_RW5_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW5_DR16 */ +#define USBFS_USBDEV_ARB_RW5_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW5_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.ARB_RW6_WA16 */ +#define USBFS_USBDEV_ARB_RW6_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW6_RA16 */ +#define USBFS_USBDEV_ARB_RW6_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW6_DR16 */ +#define USBFS_USBDEV_ARB_RW6_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW6_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.ARB_RW7_WA16 */ +#define USBFS_USBDEV_ARB_RW7_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW7_RA16 */ +#define USBFS_USBDEV_ARB_RW7_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW7_DR16 */ +#define USBFS_USBDEV_ARB_RW7_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW7_DR16_DR16_Msk 0xFFFFUL +/* USBFS_USBDEV.ARB_RW8_WA16 */ +#define USBFS_USBDEV_ARB_RW8_WA16_WA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_WA16_WA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW8_RA16 */ +#define USBFS_USBDEV_ARB_RW8_RA16_RA16_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_RA16_RA16_Msk 0x1FFUL +/* USBFS_USBDEV.ARB_RW8_DR16 */ +#define USBFS_USBDEV_ARB_RW8_DR16_DR16_Pos 0UL +#define USBFS_USBDEV_ARB_RW8_DR16_DR16_Msk 0xFFFFUL + + +/* USBFS_USBLPM.POWER_CTL */ +#define USBFS_USBLPM_POWER_CTL_SUSPEND_Pos 2UL +#define USBFS_USBLPM_POWER_CTL_SUSPEND_Msk 0x4UL +#define USBFS_USBLPM_POWER_CTL_DP_UP_EN_Pos 16UL +#define USBFS_USBLPM_POWER_CTL_DP_UP_EN_Msk 0x10000UL +#define USBFS_USBLPM_POWER_CTL_DP_BIG_Pos 17UL +#define USBFS_USBLPM_POWER_CTL_DP_BIG_Msk 0x20000UL +#define USBFS_USBLPM_POWER_CTL_DP_DOWN_EN_Pos 18UL +#define USBFS_USBLPM_POWER_CTL_DP_DOWN_EN_Msk 0x40000UL +#define USBFS_USBLPM_POWER_CTL_DM_UP_EN_Pos 19UL +#define USBFS_USBLPM_POWER_CTL_DM_UP_EN_Msk 0x80000UL +#define USBFS_USBLPM_POWER_CTL_DM_BIG_Pos 20UL +#define USBFS_USBLPM_POWER_CTL_DM_BIG_Msk 0x100000UL +#define USBFS_USBLPM_POWER_CTL_DM_DOWN_EN_Pos 21UL +#define USBFS_USBLPM_POWER_CTL_DM_DOWN_EN_Msk 0x200000UL +#define USBFS_USBLPM_POWER_CTL_ENABLE_DPO_Pos 28UL +#define USBFS_USBLPM_POWER_CTL_ENABLE_DPO_Msk 0x10000000UL +#define USBFS_USBLPM_POWER_CTL_ENABLE_DMO_Pos 29UL +#define USBFS_USBLPM_POWER_CTL_ENABLE_DMO_Msk 0x20000000UL +/* USBFS_USBLPM.USBIO_CTL */ +#define USBFS_USBLPM_USBIO_CTL_DM_P_Pos 0UL +#define USBFS_USBLPM_USBIO_CTL_DM_P_Msk 0x7UL +#define USBFS_USBLPM_USBIO_CTL_DM_M_Pos 3UL +#define USBFS_USBLPM_USBIO_CTL_DM_M_Msk 0x38UL +/* USBFS_USBLPM.FLOW_CTL */ +#define USBFS_USBLPM_FLOW_CTL_EP1_ERR_RESP_Pos 0UL +#define USBFS_USBLPM_FLOW_CTL_EP1_ERR_RESP_Msk 0x1UL +#define USBFS_USBLPM_FLOW_CTL_EP2_ERR_RESP_Pos 1UL +#define USBFS_USBLPM_FLOW_CTL_EP2_ERR_RESP_Msk 0x2UL +#define USBFS_USBLPM_FLOW_CTL_EP3_ERR_RESP_Pos 2UL +#define USBFS_USBLPM_FLOW_CTL_EP3_ERR_RESP_Msk 0x4UL +#define USBFS_USBLPM_FLOW_CTL_EP4_ERR_RESP_Pos 3UL +#define USBFS_USBLPM_FLOW_CTL_EP4_ERR_RESP_Msk 0x8UL +#define USBFS_USBLPM_FLOW_CTL_EP5_ERR_RESP_Pos 4UL +#define USBFS_USBLPM_FLOW_CTL_EP5_ERR_RESP_Msk 0x10UL +#define USBFS_USBLPM_FLOW_CTL_EP6_ERR_RESP_Pos 5UL +#define USBFS_USBLPM_FLOW_CTL_EP6_ERR_RESP_Msk 0x20UL +#define USBFS_USBLPM_FLOW_CTL_EP7_ERR_RESP_Pos 6UL +#define USBFS_USBLPM_FLOW_CTL_EP7_ERR_RESP_Msk 0x40UL +#define USBFS_USBLPM_FLOW_CTL_EP8_ERR_RESP_Pos 7UL +#define USBFS_USBLPM_FLOW_CTL_EP8_ERR_RESP_Msk 0x80UL +/* USBFS_USBLPM.LPM_CTL */ +#define USBFS_USBLPM_LPM_CTL_LPM_EN_Pos 0UL +#define USBFS_USBLPM_LPM_CTL_LPM_EN_Msk 0x1UL +#define USBFS_USBLPM_LPM_CTL_LPM_ACK_RESP_Pos 1UL +#define USBFS_USBLPM_LPM_CTL_LPM_ACK_RESP_Msk 0x2UL +#define USBFS_USBLPM_LPM_CTL_NYET_EN_Pos 2UL +#define USBFS_USBLPM_LPM_CTL_NYET_EN_Msk 0x4UL +#define USBFS_USBLPM_LPM_CTL_SUB_RESP_Pos 4UL +#define USBFS_USBLPM_LPM_CTL_SUB_RESP_Msk 0x10UL +/* USBFS_USBLPM.LPM_STAT */ +#define USBFS_USBLPM_LPM_STAT_LPM_BESL_Pos 0UL +#define USBFS_USBLPM_LPM_STAT_LPM_BESL_Msk 0xFUL +#define USBFS_USBLPM_LPM_STAT_LPM_REMOTEWAKE_Pos 4UL +#define USBFS_USBLPM_LPM_STAT_LPM_REMOTEWAKE_Msk 0x10UL +/* USBFS_USBLPM.INTR_SIE */ +#define USBFS_USBLPM_INTR_SIE_SOF_INTR_Pos 0UL +#define USBFS_USBLPM_INTR_SIE_SOF_INTR_Msk 0x1UL +#define USBFS_USBLPM_INTR_SIE_BUS_RESET_INTR_Pos 1UL +#define USBFS_USBLPM_INTR_SIE_BUS_RESET_INTR_Msk 0x2UL +#define USBFS_USBLPM_INTR_SIE_EP0_INTR_Pos 2UL +#define USBFS_USBLPM_INTR_SIE_EP0_INTR_Msk 0x4UL +#define USBFS_USBLPM_INTR_SIE_LPM_INTR_Pos 3UL +#define USBFS_USBLPM_INTR_SIE_LPM_INTR_Msk 0x8UL +#define USBFS_USBLPM_INTR_SIE_RESUME_INTR_Pos 4UL +#define USBFS_USBLPM_INTR_SIE_RESUME_INTR_Msk 0x10UL +/* USBFS_USBLPM.INTR_SIE_SET */ +#define USBFS_USBLPM_INTR_SIE_SET_SOF_INTR_SET_Pos 0UL +#define USBFS_USBLPM_INTR_SIE_SET_SOF_INTR_SET_Msk 0x1UL +#define USBFS_USBLPM_INTR_SIE_SET_BUS_RESET_INTR_SET_Pos 1UL +#define USBFS_USBLPM_INTR_SIE_SET_BUS_RESET_INTR_SET_Msk 0x2UL +#define USBFS_USBLPM_INTR_SIE_SET_EP0_INTR_SET_Pos 2UL +#define USBFS_USBLPM_INTR_SIE_SET_EP0_INTR_SET_Msk 0x4UL +#define USBFS_USBLPM_INTR_SIE_SET_LPM_INTR_SET_Pos 3UL +#define USBFS_USBLPM_INTR_SIE_SET_LPM_INTR_SET_Msk 0x8UL +#define USBFS_USBLPM_INTR_SIE_SET_RESUME_INTR_SET_Pos 4UL +#define USBFS_USBLPM_INTR_SIE_SET_RESUME_INTR_SET_Msk 0x10UL +/* USBFS_USBLPM.INTR_SIE_MASK */ +#define USBFS_USBLPM_INTR_SIE_MASK_SOF_INTR_MASK_Pos 0UL +#define USBFS_USBLPM_INTR_SIE_MASK_SOF_INTR_MASK_Msk 0x1UL +#define USBFS_USBLPM_INTR_SIE_MASK_BUS_RESET_INTR_MASK_Pos 1UL +#define USBFS_USBLPM_INTR_SIE_MASK_BUS_RESET_INTR_MASK_Msk 0x2UL +#define USBFS_USBLPM_INTR_SIE_MASK_EP0_INTR_MASK_Pos 2UL +#define USBFS_USBLPM_INTR_SIE_MASK_EP0_INTR_MASK_Msk 0x4UL +#define USBFS_USBLPM_INTR_SIE_MASK_LPM_INTR_MASK_Pos 3UL +#define USBFS_USBLPM_INTR_SIE_MASK_LPM_INTR_MASK_Msk 0x8UL +#define USBFS_USBLPM_INTR_SIE_MASK_RESUME_INTR_MASK_Pos 4UL +#define USBFS_USBLPM_INTR_SIE_MASK_RESUME_INTR_MASK_Msk 0x10UL +/* USBFS_USBLPM.INTR_SIE_MASKED */ +#define USBFS_USBLPM_INTR_SIE_MASKED_SOF_INTR_MASKED_Pos 0UL +#define USBFS_USBLPM_INTR_SIE_MASKED_SOF_INTR_MASKED_Msk 0x1UL +#define USBFS_USBLPM_INTR_SIE_MASKED_BUS_RESET_INTR_MASKED_Pos 1UL +#define USBFS_USBLPM_INTR_SIE_MASKED_BUS_RESET_INTR_MASKED_Msk 0x2UL +#define USBFS_USBLPM_INTR_SIE_MASKED_EP0_INTR_MASKED_Pos 2UL +#define USBFS_USBLPM_INTR_SIE_MASKED_EP0_INTR_MASKED_Msk 0x4UL +#define USBFS_USBLPM_INTR_SIE_MASKED_LPM_INTR_MASKED_Pos 3UL +#define USBFS_USBLPM_INTR_SIE_MASKED_LPM_INTR_MASKED_Msk 0x8UL +#define USBFS_USBLPM_INTR_SIE_MASKED_RESUME_INTR_MASKED_Pos 4UL +#define USBFS_USBLPM_INTR_SIE_MASKED_RESUME_INTR_MASKED_Msk 0x10UL +/* USBFS_USBLPM.INTR_LVL_SEL */ +#define USBFS_USBLPM_INTR_LVL_SEL_SOF_LVL_SEL_Pos 0UL +#define USBFS_USBLPM_INTR_LVL_SEL_SOF_LVL_SEL_Msk 0x3UL +#define USBFS_USBLPM_INTR_LVL_SEL_BUS_RESET_LVL_SEL_Pos 2UL +#define USBFS_USBLPM_INTR_LVL_SEL_BUS_RESET_LVL_SEL_Msk 0xCUL +#define USBFS_USBLPM_INTR_LVL_SEL_EP0_LVL_SEL_Pos 4UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP0_LVL_SEL_Msk 0x30UL +#define USBFS_USBLPM_INTR_LVL_SEL_LPM_LVL_SEL_Pos 6UL +#define USBFS_USBLPM_INTR_LVL_SEL_LPM_LVL_SEL_Msk 0xC0UL +#define USBFS_USBLPM_INTR_LVL_SEL_RESUME_LVL_SEL_Pos 8UL +#define USBFS_USBLPM_INTR_LVL_SEL_RESUME_LVL_SEL_Msk 0x300UL +#define USBFS_USBLPM_INTR_LVL_SEL_ARB_EP_LVL_SEL_Pos 14UL +#define USBFS_USBLPM_INTR_LVL_SEL_ARB_EP_LVL_SEL_Msk 0xC000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP1_LVL_SEL_Pos 16UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP1_LVL_SEL_Msk 0x30000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP2_LVL_SEL_Pos 18UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP2_LVL_SEL_Msk 0xC0000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP3_LVL_SEL_Pos 20UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP3_LVL_SEL_Msk 0x300000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP4_LVL_SEL_Pos 22UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP4_LVL_SEL_Msk 0xC00000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP5_LVL_SEL_Pos 24UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP5_LVL_SEL_Msk 0x3000000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP6_LVL_SEL_Pos 26UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP6_LVL_SEL_Msk 0xC000000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP7_LVL_SEL_Pos 28UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP7_LVL_SEL_Msk 0x30000000UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP8_LVL_SEL_Pos 30UL +#define USBFS_USBLPM_INTR_LVL_SEL_EP8_LVL_SEL_Msk 0xC0000000UL +/* USBFS_USBLPM.INTR_CAUSE_HI */ +#define USBFS_USBLPM_INTR_CAUSE_HI_SOF_INTR_Pos 0UL +#define USBFS_USBLPM_INTR_CAUSE_HI_SOF_INTR_Msk 0x1UL +#define USBFS_USBLPM_INTR_CAUSE_HI_BUS_RESET_INTR_Pos 1UL +#define USBFS_USBLPM_INTR_CAUSE_HI_BUS_RESET_INTR_Msk 0x2UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP0_INTR_Pos 2UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP0_INTR_Msk 0x4UL +#define USBFS_USBLPM_INTR_CAUSE_HI_LPM_INTR_Pos 3UL +#define USBFS_USBLPM_INTR_CAUSE_HI_LPM_INTR_Msk 0x8UL +#define USBFS_USBLPM_INTR_CAUSE_HI_RESUME_INTR_Pos 4UL +#define USBFS_USBLPM_INTR_CAUSE_HI_RESUME_INTR_Msk 0x10UL +#define USBFS_USBLPM_INTR_CAUSE_HI_ARB_EP_INTR_Pos 7UL +#define USBFS_USBLPM_INTR_CAUSE_HI_ARB_EP_INTR_Msk 0x80UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP1_INTR_Pos 8UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP1_INTR_Msk 0x100UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP2_INTR_Pos 9UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP2_INTR_Msk 0x200UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP3_INTR_Pos 10UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP3_INTR_Msk 0x400UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP4_INTR_Pos 11UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP4_INTR_Msk 0x800UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP5_INTR_Pos 12UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP5_INTR_Msk 0x1000UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP6_INTR_Pos 13UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP6_INTR_Msk 0x2000UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP7_INTR_Pos 14UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP7_INTR_Msk 0x4000UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP8_INTR_Pos 15UL +#define USBFS_USBLPM_INTR_CAUSE_HI_EP8_INTR_Msk 0x8000UL +/* USBFS_USBLPM.INTR_CAUSE_MED */ +#define USBFS_USBLPM_INTR_CAUSE_MED_SOF_INTR_Pos 0UL +#define USBFS_USBLPM_INTR_CAUSE_MED_SOF_INTR_Msk 0x1UL +#define USBFS_USBLPM_INTR_CAUSE_MED_BUS_RESET_INTR_Pos 1UL +#define USBFS_USBLPM_INTR_CAUSE_MED_BUS_RESET_INTR_Msk 0x2UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP0_INTR_Pos 2UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP0_INTR_Msk 0x4UL +#define USBFS_USBLPM_INTR_CAUSE_MED_LPM_INTR_Pos 3UL +#define USBFS_USBLPM_INTR_CAUSE_MED_LPM_INTR_Msk 0x8UL +#define USBFS_USBLPM_INTR_CAUSE_MED_RESUME_INTR_Pos 4UL +#define USBFS_USBLPM_INTR_CAUSE_MED_RESUME_INTR_Msk 0x10UL +#define USBFS_USBLPM_INTR_CAUSE_MED_ARB_EP_INTR_Pos 7UL +#define USBFS_USBLPM_INTR_CAUSE_MED_ARB_EP_INTR_Msk 0x80UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP1_INTR_Pos 8UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP1_INTR_Msk 0x100UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP2_INTR_Pos 9UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP2_INTR_Msk 0x200UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP3_INTR_Pos 10UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP3_INTR_Msk 0x400UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP4_INTR_Pos 11UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP4_INTR_Msk 0x800UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP5_INTR_Pos 12UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP5_INTR_Msk 0x1000UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP6_INTR_Pos 13UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP6_INTR_Msk 0x2000UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP7_INTR_Pos 14UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP7_INTR_Msk 0x4000UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP8_INTR_Pos 15UL +#define USBFS_USBLPM_INTR_CAUSE_MED_EP8_INTR_Msk 0x8000UL +/* USBFS_USBLPM.INTR_CAUSE_LO */ +#define USBFS_USBLPM_INTR_CAUSE_LO_SOF_INTR_Pos 0UL +#define USBFS_USBLPM_INTR_CAUSE_LO_SOF_INTR_Msk 0x1UL +#define USBFS_USBLPM_INTR_CAUSE_LO_BUS_RESET_INTR_Pos 1UL +#define USBFS_USBLPM_INTR_CAUSE_LO_BUS_RESET_INTR_Msk 0x2UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP0_INTR_Pos 2UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP0_INTR_Msk 0x4UL +#define USBFS_USBLPM_INTR_CAUSE_LO_LPM_INTR_Pos 3UL +#define USBFS_USBLPM_INTR_CAUSE_LO_LPM_INTR_Msk 0x8UL +#define USBFS_USBLPM_INTR_CAUSE_LO_RESUME_INTR_Pos 4UL +#define USBFS_USBLPM_INTR_CAUSE_LO_RESUME_INTR_Msk 0x10UL +#define USBFS_USBLPM_INTR_CAUSE_LO_ARB_EP_INTR_Pos 7UL +#define USBFS_USBLPM_INTR_CAUSE_LO_ARB_EP_INTR_Msk 0x80UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP1_INTR_Pos 8UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP1_INTR_Msk 0x100UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP2_INTR_Pos 9UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP2_INTR_Msk 0x200UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP3_INTR_Pos 10UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP3_INTR_Msk 0x400UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP4_INTR_Pos 11UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP4_INTR_Msk 0x800UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP5_INTR_Pos 12UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP5_INTR_Msk 0x1000UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP6_INTR_Pos 13UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP6_INTR_Msk 0x2000UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP7_INTR_Pos 14UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP7_INTR_Msk 0x4000UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP8_INTR_Pos 15UL +#define USBFS_USBLPM_INTR_CAUSE_LO_EP8_INTR_Msk 0x8000UL +/* USBFS_USBLPM.DFT_CTL */ +#define USBFS_USBLPM_DFT_CTL_DDFT_OUT_SEL_Pos 0UL +#define USBFS_USBLPM_DFT_CTL_DDFT_OUT_SEL_Msk 0x7UL +#define USBFS_USBLPM_DFT_CTL_DDFT_IN_SEL_Pos 3UL +#define USBFS_USBLPM_DFT_CTL_DDFT_IN_SEL_Msk 0x18UL + + +/* USBFS_USBHOST.HOST_CTL0 */ +#define USBFS_USBHOST_HOST_CTL0_HOST_Pos 0UL +#define USBFS_USBHOST_HOST_CTL0_HOST_Msk 0x1UL +#define USBFS_USBHOST_HOST_CTL0_ENABLE_Pos 31UL +#define USBFS_USBHOST_HOST_CTL0_ENABLE_Msk 0x80000000UL +/* USBFS_USBHOST.HOST_CTL1 */ +#define USBFS_USBHOST_HOST_CTL1_CLKSEL_Pos 0UL +#define USBFS_USBHOST_HOST_CTL1_CLKSEL_Msk 0x1UL +#define USBFS_USBHOST_HOST_CTL1_USTP_Pos 1UL +#define USBFS_USBHOST_HOST_CTL1_USTP_Msk 0x2UL +#define USBFS_USBHOST_HOST_CTL1_RST_Pos 7UL +#define USBFS_USBHOST_HOST_CTL1_RST_Msk 0x80UL +/* USBFS_USBHOST.HOST_CTL2 */ +#define USBFS_USBHOST_HOST_CTL2_RETRY_Pos 0UL +#define USBFS_USBHOST_HOST_CTL2_RETRY_Msk 0x1UL +#define USBFS_USBHOST_HOST_CTL2_CANCEL_Pos 1UL +#define USBFS_USBHOST_HOST_CTL2_CANCEL_Msk 0x2UL +#define USBFS_USBHOST_HOST_CTL2_SOFSTEP_Pos 2UL +#define USBFS_USBHOST_HOST_CTL2_SOFSTEP_Msk 0x4UL +#define USBFS_USBHOST_HOST_CTL2_ALIVE_Pos 3UL +#define USBFS_USBHOST_HOST_CTL2_ALIVE_Msk 0x8UL +#define USBFS_USBHOST_HOST_CTL2_RESERVED_4_Pos 4UL +#define USBFS_USBHOST_HOST_CTL2_RESERVED_4_Msk 0x10UL +#define USBFS_USBHOST_HOST_CTL2_RESERVED_5_Pos 5UL +#define USBFS_USBHOST_HOST_CTL2_RESERVED_5_Msk 0x20UL +#define USBFS_USBHOST_HOST_CTL2_TTEST_Pos 6UL +#define USBFS_USBHOST_HOST_CTL2_TTEST_Msk 0xC0UL +/* USBFS_USBHOST.HOST_ERR */ +#define USBFS_USBHOST_HOST_ERR_HS_Pos 0UL +#define USBFS_USBHOST_HOST_ERR_HS_Msk 0x3UL +#define USBFS_USBHOST_HOST_ERR_STUFF_Pos 2UL +#define USBFS_USBHOST_HOST_ERR_STUFF_Msk 0x4UL +#define USBFS_USBHOST_HOST_ERR_TGERR_Pos 3UL +#define USBFS_USBHOST_HOST_ERR_TGERR_Msk 0x8UL +#define USBFS_USBHOST_HOST_ERR_CRC_Pos 4UL +#define USBFS_USBHOST_HOST_ERR_CRC_Msk 0x10UL +#define USBFS_USBHOST_HOST_ERR_TOUT_Pos 5UL +#define USBFS_USBHOST_HOST_ERR_TOUT_Msk 0x20UL +#define USBFS_USBHOST_HOST_ERR_RERR_Pos 6UL +#define USBFS_USBHOST_HOST_ERR_RERR_Msk 0x40UL +#define USBFS_USBHOST_HOST_ERR_LSTSOF_Pos 7UL +#define USBFS_USBHOST_HOST_ERR_LSTSOF_Msk 0x80UL +/* USBFS_USBHOST.HOST_STATUS */ +#define USBFS_USBHOST_HOST_STATUS_CSTAT_Pos 0UL +#define USBFS_USBHOST_HOST_STATUS_CSTAT_Msk 0x1UL +#define USBFS_USBHOST_HOST_STATUS_TMODE_Pos 1UL +#define USBFS_USBHOST_HOST_STATUS_TMODE_Msk 0x2UL +#define USBFS_USBHOST_HOST_STATUS_SUSP_Pos 2UL +#define USBFS_USBHOST_HOST_STATUS_SUSP_Msk 0x4UL +#define USBFS_USBHOST_HOST_STATUS_SOFBUSY_Pos 3UL +#define USBFS_USBHOST_HOST_STATUS_SOFBUSY_Msk 0x8UL +#define USBFS_USBHOST_HOST_STATUS_URST_Pos 4UL +#define USBFS_USBHOST_HOST_STATUS_URST_Msk 0x10UL +#define USBFS_USBHOST_HOST_STATUS_RESERVED_5_Pos 5UL +#define USBFS_USBHOST_HOST_STATUS_RESERVED_5_Msk 0x20UL +#define USBFS_USBHOST_HOST_STATUS_RSTBUSY_Pos 6UL +#define USBFS_USBHOST_HOST_STATUS_RSTBUSY_Msk 0x40UL +#define USBFS_USBHOST_HOST_STATUS_CLKSEL_ST_Pos 7UL +#define USBFS_USBHOST_HOST_STATUS_CLKSEL_ST_Msk 0x80UL +#define USBFS_USBHOST_HOST_STATUS_HOST_ST_Pos 8UL +#define USBFS_USBHOST_HOST_STATUS_HOST_ST_Msk 0x100UL +/* USBFS_USBHOST.HOST_FCOMP */ +#define USBFS_USBHOST_HOST_FCOMP_FRAMECOMP_Pos 0UL +#define USBFS_USBHOST_HOST_FCOMP_FRAMECOMP_Msk 0xFFUL +/* USBFS_USBHOST.HOST_RTIMER */ +#define USBFS_USBHOST_HOST_RTIMER_RTIMER_Pos 0UL +#define USBFS_USBHOST_HOST_RTIMER_RTIMER_Msk 0x3FFFFUL +/* USBFS_USBHOST.HOST_ADDR */ +#define USBFS_USBHOST_HOST_ADDR_ADDRESS_Pos 0UL +#define USBFS_USBHOST_HOST_ADDR_ADDRESS_Msk 0x7FUL +/* USBFS_USBHOST.HOST_EOF */ +#define USBFS_USBHOST_HOST_EOF_EOF_Pos 0UL +#define USBFS_USBHOST_HOST_EOF_EOF_Msk 0x3FFFUL +/* USBFS_USBHOST.HOST_FRAME */ +#define USBFS_USBHOST_HOST_FRAME_FRAME_Pos 0UL +#define USBFS_USBHOST_HOST_FRAME_FRAME_Msk 0x7FFUL +/* USBFS_USBHOST.HOST_TOKEN */ +#define USBFS_USBHOST_HOST_TOKEN_ENDPT_Pos 0UL +#define USBFS_USBHOST_HOST_TOKEN_ENDPT_Msk 0xFUL +#define USBFS_USBHOST_HOST_TOKEN_TKNEN_Pos 4UL +#define USBFS_USBHOST_HOST_TOKEN_TKNEN_Msk 0x70UL +#define USBFS_USBHOST_HOST_TOKEN_TGGL_Pos 8UL +#define USBFS_USBHOST_HOST_TOKEN_TGGL_Msk 0x100UL +/* USBFS_USBHOST.HOST_EP1_CTL */ +#define USBFS_USBHOST_HOST_EP1_CTL_PKS1_Pos 0UL +#define USBFS_USBHOST_HOST_EP1_CTL_PKS1_Msk 0x1FFUL +#define USBFS_USBHOST_HOST_EP1_CTL_NULLE_Pos 10UL +#define USBFS_USBHOST_HOST_EP1_CTL_NULLE_Msk 0x400UL +#define USBFS_USBHOST_HOST_EP1_CTL_DMAE_Pos 11UL +#define USBFS_USBHOST_HOST_EP1_CTL_DMAE_Msk 0x800UL +#define USBFS_USBHOST_HOST_EP1_CTL_DIR_Pos 12UL +#define USBFS_USBHOST_HOST_EP1_CTL_DIR_Msk 0x1000UL +#define USBFS_USBHOST_HOST_EP1_CTL_BFINI_Pos 15UL +#define USBFS_USBHOST_HOST_EP1_CTL_BFINI_Msk 0x8000UL +/* USBFS_USBHOST.HOST_EP1_STATUS */ +#define USBFS_USBHOST_HOST_EP1_STATUS_SIZE1_Pos 0UL +#define USBFS_USBHOST_HOST_EP1_STATUS_SIZE1_Msk 0x1FFUL +#define USBFS_USBHOST_HOST_EP1_STATUS_VAL_DATA_Pos 16UL +#define USBFS_USBHOST_HOST_EP1_STATUS_VAL_DATA_Msk 0x10000UL +#define USBFS_USBHOST_HOST_EP1_STATUS_INI_ST_Pos 17UL +#define USBFS_USBHOST_HOST_EP1_STATUS_INI_ST_Msk 0x20000UL +#define USBFS_USBHOST_HOST_EP1_STATUS_RESERVED_18_Pos 18UL +#define USBFS_USBHOST_HOST_EP1_STATUS_RESERVED_18_Msk 0x40000UL +/* USBFS_USBHOST.HOST_EP1_RW1_DR */ +#define USBFS_USBHOST_HOST_EP1_RW1_DR_BFDT8_Pos 0UL +#define USBFS_USBHOST_HOST_EP1_RW1_DR_BFDT8_Msk 0xFFUL +/* USBFS_USBHOST.HOST_EP1_RW2_DR */ +#define USBFS_USBHOST_HOST_EP1_RW2_DR_BFDT16_Pos 0UL +#define USBFS_USBHOST_HOST_EP1_RW2_DR_BFDT16_Msk 0xFFFFUL +/* USBFS_USBHOST.HOST_EP2_CTL */ +#define USBFS_USBHOST_HOST_EP2_CTL_PKS2_Pos 0UL +#define USBFS_USBHOST_HOST_EP2_CTL_PKS2_Msk 0x7FUL +#define USBFS_USBHOST_HOST_EP2_CTL_NULLE_Pos 10UL +#define USBFS_USBHOST_HOST_EP2_CTL_NULLE_Msk 0x400UL +#define USBFS_USBHOST_HOST_EP2_CTL_DMAE_Pos 11UL +#define USBFS_USBHOST_HOST_EP2_CTL_DMAE_Msk 0x800UL +#define USBFS_USBHOST_HOST_EP2_CTL_DIR_Pos 12UL +#define USBFS_USBHOST_HOST_EP2_CTL_DIR_Msk 0x1000UL +#define USBFS_USBHOST_HOST_EP2_CTL_BFINI_Pos 15UL +#define USBFS_USBHOST_HOST_EP2_CTL_BFINI_Msk 0x8000UL +/* USBFS_USBHOST.HOST_EP2_STATUS */ +#define USBFS_USBHOST_HOST_EP2_STATUS_SIZE2_Pos 0UL +#define USBFS_USBHOST_HOST_EP2_STATUS_SIZE2_Msk 0x7FUL +#define USBFS_USBHOST_HOST_EP2_STATUS_VAL_DATA_Pos 16UL +#define USBFS_USBHOST_HOST_EP2_STATUS_VAL_DATA_Msk 0x10000UL +#define USBFS_USBHOST_HOST_EP2_STATUS_INI_ST_Pos 17UL +#define USBFS_USBHOST_HOST_EP2_STATUS_INI_ST_Msk 0x20000UL +#define USBFS_USBHOST_HOST_EP2_STATUS_RESERVED_18_Pos 18UL +#define USBFS_USBHOST_HOST_EP2_STATUS_RESERVED_18_Msk 0x40000UL +/* USBFS_USBHOST.HOST_EP2_RW1_DR */ +#define USBFS_USBHOST_HOST_EP2_RW1_DR_BFDT8_Pos 0UL +#define USBFS_USBHOST_HOST_EP2_RW1_DR_BFDT8_Msk 0xFFUL +/* USBFS_USBHOST.HOST_EP2_RW2_DR */ +#define USBFS_USBHOST_HOST_EP2_RW2_DR_BFDT16_Pos 0UL +#define USBFS_USBHOST_HOST_EP2_RW2_DR_BFDT16_Msk 0xFFFFUL +/* USBFS_USBHOST.HOST_LVL1_SEL */ +#define USBFS_USBHOST_HOST_LVL1_SEL_SOFIRQ_SEL_Pos 0UL +#define USBFS_USBHOST_HOST_LVL1_SEL_SOFIRQ_SEL_Msk 0x3UL +#define USBFS_USBHOST_HOST_LVL1_SEL_DIRQ_SEL_Pos 2UL +#define USBFS_USBHOST_HOST_LVL1_SEL_DIRQ_SEL_Msk 0xCUL +#define USBFS_USBHOST_HOST_LVL1_SEL_CNNIRQ_SEL_Pos 4UL +#define USBFS_USBHOST_HOST_LVL1_SEL_CNNIRQ_SEL_Msk 0x30UL +#define USBFS_USBHOST_HOST_LVL1_SEL_CMPIRQ_SEL_Pos 6UL +#define USBFS_USBHOST_HOST_LVL1_SEL_CMPIRQ_SEL_Msk 0xC0UL +#define USBFS_USBHOST_HOST_LVL1_SEL_URIRQ_SEL_Pos 8UL +#define USBFS_USBHOST_HOST_LVL1_SEL_URIRQ_SEL_Msk 0x300UL +#define USBFS_USBHOST_HOST_LVL1_SEL_RWKIRQ_SEL_Pos 10UL +#define USBFS_USBHOST_HOST_LVL1_SEL_RWKIRQ_SEL_Msk 0xC00UL +#define USBFS_USBHOST_HOST_LVL1_SEL_RESERVED_13_12_Pos 12UL +#define USBFS_USBHOST_HOST_LVL1_SEL_RESERVED_13_12_Msk 0x3000UL +#define USBFS_USBHOST_HOST_LVL1_SEL_TCAN_SEL_Pos 14UL +#define USBFS_USBHOST_HOST_LVL1_SEL_TCAN_SEL_Msk 0xC000UL +/* USBFS_USBHOST.HOST_LVL2_SEL */ +#define USBFS_USBHOST_HOST_LVL2_SEL_EP1_DRQ_SEL_Pos 4UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP1_DRQ_SEL_Msk 0x30UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP1_SPK_SEL_Pos 6UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP1_SPK_SEL_Msk 0xC0UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP2_DRQ_SEL_Pos 8UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP2_DRQ_SEL_Msk 0x300UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP2_SPK_SEL_Pos 10UL +#define USBFS_USBHOST_HOST_LVL2_SEL_EP2_SPK_SEL_Msk 0xC00UL +/* USBFS_USBHOST.INTR_USBHOST_CAUSE_HI */ +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_SOFIRQ_INT_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_SOFIRQ_INT_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_DIRQ_INT_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_DIRQ_INT_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_CNNIRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_CNNIRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_CMPIRQ_INT_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_CMPIRQ_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_URIRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_URIRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_RWKIRQ_INT_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_RWKIRQ_INT_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_TCAN_INT_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_HI_TCAN_INT_Msk 0x80UL +/* USBFS_USBHOST.INTR_USBHOST_CAUSE_MED */ +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_SOFIRQ_INT_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_SOFIRQ_INT_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_DIRQ_INT_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_DIRQ_INT_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_CNNIRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_CNNIRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_CMPIRQ_INT_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_CMPIRQ_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_URIRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_URIRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_RWKIRQ_INT_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_RWKIRQ_INT_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_TCAN_INT_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_MED_TCAN_INT_Msk 0x80UL +/* USBFS_USBHOST.INTR_USBHOST_CAUSE_LO */ +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_SOFIRQ_INT_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_SOFIRQ_INT_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_DIRQ_INT_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_DIRQ_INT_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_CNNIRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_CNNIRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_CMPIRQ_INT_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_CMPIRQ_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_URIRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_URIRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_RWKIRQ_INT_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_RWKIRQ_INT_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_TCAN_INT_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_CAUSE_LO_TCAN_INT_Msk 0x80UL +/* USBFS_USBHOST.INTR_HOST_EP_CAUSE_HI */ +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP1DRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP1DRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP1SPK_INT_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP1SPK_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP2DRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP2DRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP2SPK_INT_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_HI_EP2SPK_INT_Msk 0x20UL +/* USBFS_USBHOST.INTR_HOST_EP_CAUSE_MED */ +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP1DRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP1DRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP1SPK_INT_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP1SPK_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP2DRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP2DRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP2SPK_INT_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_MED_EP2SPK_INT_Msk 0x20UL +/* USBFS_USBHOST.INTR_HOST_EP_CAUSE_LO */ +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP1DRQ_INT_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP1DRQ_INT_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP1SPK_INT_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP1SPK_INT_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP2DRQ_INT_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP2DRQ_INT_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP2SPK_INT_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_CAUSE_LO_EP2SPK_INT_Msk 0x20UL +/* USBFS_USBHOST.INTR_USBHOST */ +#define USBFS_USBHOST_INTR_USBHOST_SOFIRQ_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_SOFIRQ_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_DIRQ_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_DIRQ_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_CNNIRQ_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_CNNIRQ_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_CMPIRQ_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_CMPIRQ_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_URIRQ_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_URIRQ_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_RWKIRQ_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_RWKIRQ_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_TCAN_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_TCAN_Msk 0x80UL +/* USBFS_USBHOST.INTR_USBHOST_SET */ +#define USBFS_USBHOST_INTR_USBHOST_SET_SOFIRQS_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_SET_SOFIRQS_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_SET_DIRQS_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_SET_DIRQS_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_SET_CNNIRQS_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_SET_CNNIRQS_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_SET_CMPIRQS_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_SET_CMPIRQS_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_SET_URIRQS_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_SET_URIRQS_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_SET_RWKIRQS_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_SET_RWKIRQS_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_SET_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_SET_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_SET_TCANS_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_SET_TCANS_Msk 0x80UL +/* USBFS_USBHOST.INTR_USBHOST_MASK */ +#define USBFS_USBHOST_INTR_USBHOST_MASK_SOFIRQM_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_SOFIRQM_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_DIRQM_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_DIRQM_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_CNNIRQM_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_CNNIRQM_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_CMPIRQM_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_CMPIRQM_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_URIRQM_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_URIRQM_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_RWKIRQM_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_RWKIRQM_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_TCANM_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_MASK_TCANM_Msk 0x80UL +/* USBFS_USBHOST.INTR_USBHOST_MASKED */ +#define USBFS_USBHOST_INTR_USBHOST_MASKED_SOFIRQED_Pos 0UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_SOFIRQED_Msk 0x1UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_DIRQED_Pos 1UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_DIRQED_Msk 0x2UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_CNNIRQED_Pos 2UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_CNNIRQED_Msk 0x4UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_CMPIRQED_Pos 3UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_CMPIRQED_Msk 0x8UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_URIRQED_Pos 4UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_URIRQED_Msk 0x10UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_RWKIRQED_Pos 5UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_RWKIRQED_Msk 0x20UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_RESERVED_6_Pos 6UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_RESERVED_6_Msk 0x40UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_TCANED_Pos 7UL +#define USBFS_USBHOST_INTR_USBHOST_MASKED_TCANED_Msk 0x80UL +/* USBFS_USBHOST.INTR_HOST_EP */ +#define USBFS_USBHOST_INTR_HOST_EP_EP1DRQ_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_EP1DRQ_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_EP1SPK_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_EP1SPK_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_EP2DRQ_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_EP2DRQ_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_EP2SPK_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_EP2SPK_Msk 0x20UL +/* USBFS_USBHOST.INTR_HOST_EP_SET */ +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP1DRQS_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP1DRQS_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP1SPKS_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP1SPKS_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP2DRQS_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP2DRQS_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP2SPKS_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_SET_EP2SPKS_Msk 0x20UL +/* USBFS_USBHOST.INTR_HOST_EP_MASK */ +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP1DRQM_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP1DRQM_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP1SPKM_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP1SPKM_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP2DRQM_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP2DRQM_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP2SPKM_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_MASK_EP2SPKM_Msk 0x20UL +/* USBFS_USBHOST.INTR_HOST_EP_MASKED */ +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP1DRQED_Pos 2UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP1DRQED_Msk 0x4UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP1SPKED_Pos 3UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP1SPKED_Msk 0x8UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP2DRQED_Pos 4UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP2DRQED_Msk 0x10UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP2SPKED_Pos 5UL +#define USBFS_USBHOST_INTR_HOST_EP_MASKED_EP2SPKED_Msk 0x20UL +/* USBFS_USBHOST.HOST_DMA_ENBL */ +#define USBFS_USBHOST_HOST_DMA_ENBL_DM_EP1DRQE_Pos 2UL +#define USBFS_USBHOST_HOST_DMA_ENBL_DM_EP1DRQE_Msk 0x4UL +#define USBFS_USBHOST_HOST_DMA_ENBL_DM_EP2DRQE_Pos 3UL +#define USBFS_USBHOST_HOST_DMA_ENBL_DM_EP2DRQE_Msk 0x8UL +/* USBFS_USBHOST.HOST_EP1_BLK */ +#define USBFS_USBHOST_HOST_EP1_BLK_BLK_NUM_Pos 16UL +#define USBFS_USBHOST_HOST_EP1_BLK_BLK_NUM_Msk 0xFFFF0000UL +/* USBFS_USBHOST.HOST_EP2_BLK */ +#define USBFS_USBHOST_HOST_EP2_BLK_BLK_NUM_Pos 16UL +#define USBFS_USBHOST_HOST_EP2_BLK_BLK_NUM_Msk 0xFFFF0000UL + + +#endif /* _CYIP_USBFS_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_01_config.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_01_config.h new file mode 100644 index 00000000000..0ef4286aaf2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_01_config.h @@ -0,0 +1,3097 @@ +/***************************************************************************//** +* \file psoc6_01_config.h +* +* \brief +* PSoC6_01 device configuration header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _PSOC6_01_CONFIG_H_ +#define _PSOC6_01_CONFIG_H_ + +/* Clock Connections */ +typedef enum +{ + PCLK_SCB0_CLOCK = 0x0000u, /* scb[0].clock */ + PCLK_SCB1_CLOCK = 0x0001u, /* scb[1].clock */ + PCLK_SCB2_CLOCK = 0x0002u, /* scb[2].clock */ + PCLK_SCB3_CLOCK = 0x0003u, /* scb[3].clock */ + PCLK_SCB4_CLOCK = 0x0004u, /* scb[4].clock */ + PCLK_SCB5_CLOCK = 0x0005u, /* scb[5].clock */ + PCLK_SCB6_CLOCK = 0x0006u, /* scb[6].clock */ + PCLK_SCB7_CLOCK = 0x0007u, /* scb[7].clock */ + PCLK_SCB8_CLOCK = 0x0008u, /* scb[8].clock */ + PCLK_UDB_CLOCKS0 = 0x0009u, /* udb.clocks[0] */ + PCLK_UDB_CLOCKS1 = 0x000Au, /* udb.clocks[1] */ + PCLK_UDB_CLOCKS2 = 0x000Bu, /* udb.clocks[2] */ + PCLK_UDB_CLOCKS3 = 0x000Cu, /* udb.clocks[3] */ + PCLK_UDB_CLOCKS4 = 0x000Du, /* udb.clocks[4] */ + PCLK_UDB_CLOCKS5 = 0x000Eu, /* udb.clocks[5] */ + PCLK_UDB_CLOCKS6 = 0x000Fu, /* udb.clocks[6] */ + PCLK_UDB_CLOCKS7 = 0x0010u, /* udb.clocks[7] */ + PCLK_SMARTIO8_CLOCK = 0x0011u, /* smartio[8].clock */ + PCLK_SMARTIO9_CLOCK = 0x0012u, /* smartio[9].clock */ + PCLK_TCPWM0_CLOCKS0 = 0x0013u, /* tcpwm[0].clocks[0] */ + PCLK_TCPWM0_CLOCKS1 = 0x0014u, /* tcpwm[0].clocks[1] */ + PCLK_TCPWM0_CLOCKS2 = 0x0015u, /* tcpwm[0].clocks[2] */ + PCLK_TCPWM0_CLOCKS3 = 0x0016u, /* tcpwm[0].clocks[3] */ + PCLK_TCPWM0_CLOCKS4 = 0x0017u, /* tcpwm[0].clocks[4] */ + PCLK_TCPWM0_CLOCKS5 = 0x0018u, /* tcpwm[0].clocks[5] */ + PCLK_TCPWM0_CLOCKS6 = 0x0019u, /* tcpwm[0].clocks[6] */ + PCLK_TCPWM0_CLOCKS7 = 0x001Au, /* tcpwm[0].clocks[7] */ + PCLK_TCPWM1_CLOCKS0 = 0x001Bu, /* tcpwm[1].clocks[0] */ + PCLK_TCPWM1_CLOCKS1 = 0x001Cu, /* tcpwm[1].clocks[1] */ + PCLK_TCPWM1_CLOCKS2 = 0x001Du, /* tcpwm[1].clocks[2] */ + PCLK_TCPWM1_CLOCKS3 = 0x001Eu, /* tcpwm[1].clocks[3] */ + PCLK_TCPWM1_CLOCKS4 = 0x001Fu, /* tcpwm[1].clocks[4] */ + PCLK_TCPWM1_CLOCKS5 = 0x0020u, /* tcpwm[1].clocks[5] */ + PCLK_TCPWM1_CLOCKS6 = 0x0021u, /* tcpwm[1].clocks[6] */ + PCLK_TCPWM1_CLOCKS7 = 0x0022u, /* tcpwm[1].clocks[7] */ + PCLK_TCPWM1_CLOCKS8 = 0x0023u, /* tcpwm[1].clocks[8] */ + PCLK_TCPWM1_CLOCKS9 = 0x0024u, /* tcpwm[1].clocks[9] */ + PCLK_TCPWM1_CLOCKS10 = 0x0025u, /* tcpwm[1].clocks[10] */ + PCLK_TCPWM1_CLOCKS11 = 0x0026u, /* tcpwm[1].clocks[11] */ + PCLK_TCPWM1_CLOCKS12 = 0x0027u, /* tcpwm[1].clocks[12] */ + PCLK_TCPWM1_CLOCKS13 = 0x0028u, /* tcpwm[1].clocks[13] */ + PCLK_TCPWM1_CLOCKS14 = 0x0029u, /* tcpwm[1].clocks[14] */ + PCLK_TCPWM1_CLOCKS15 = 0x002Au, /* tcpwm[1].clocks[15] */ + PCLK_TCPWM1_CLOCKS16 = 0x002Bu, /* tcpwm[1].clocks[16] */ + PCLK_TCPWM1_CLOCKS17 = 0x002Cu, /* tcpwm[1].clocks[17] */ + PCLK_TCPWM1_CLOCKS18 = 0x002Du, /* tcpwm[1].clocks[18] */ + PCLK_TCPWM1_CLOCKS19 = 0x002Eu, /* tcpwm[1].clocks[19] */ + PCLK_TCPWM1_CLOCKS20 = 0x002Fu, /* tcpwm[1].clocks[20] */ + PCLK_TCPWM1_CLOCKS21 = 0x0030u, /* tcpwm[1].clocks[21] */ + PCLK_TCPWM1_CLOCKS22 = 0x0031u, /* tcpwm[1].clocks[22] */ + PCLK_TCPWM1_CLOCKS23 = 0x0032u, /* tcpwm[1].clocks[23] */ + PCLK_CSD_CLOCK = 0x0033u, /* csd.clock */ + PCLK_LCD_CLOCK = 0x0034u, /* lcd.clock */ + PCLK_PROFILE_CLOCK_PROFILE = 0x0035u, /* profile.clock_profile */ + PCLK_CPUSS_CLOCK_TRACE_IN = 0x0036u, /* cpuss.clock_trace_in */ + PCLK_PASS_CLOCK_CTDAC = 0x0037u, /* pass.clock_ctdac */ + PCLK_PASS_CLOCK_PUMP_PERI = 0x0038u, /* pass.clock_pump_peri */ + PCLK_PASS_CLOCK_SAR = 0x0039u, /* pass.clock_sar */ + PCLK_USB_CLOCK_DEV_BRS = 0x003Au /* usb.clock_dev_brs */ +} en_clk_dst_t; + +/* Trigger Group */ +/* This section contains the enums related to the Trigger multiplexer (TrigMux) driver. +* Refer to the Cypress Peripheral Driver Library Documentation, section Trigger multiplexer (TrigMux) -> Enumerated Types for details. +*/ +/* Trigger Group Inputs */ +/* Trigger Input Group 0 - DMA Request Assignments */ +typedef enum +{ + TRIG0_IN_CPUSS_ZERO = 0x00000000u, /* cpuss.zero */ + TRIG0_IN_TR_GROUP10_OUTPUT0 = 0x00000001u, /* tr_group[10].output[0] */ + TRIG0_IN_TR_GROUP10_OUTPUT1 = 0x00000002u, /* tr_group[10].output[1] */ + TRIG0_IN_TR_GROUP10_OUTPUT2 = 0x00000003u, /* tr_group[10].output[2] */ + TRIG0_IN_TR_GROUP10_OUTPUT3 = 0x00000004u, /* tr_group[10].output[3] */ + TRIG0_IN_TR_GROUP10_OUTPUT4 = 0x00000005u, /* tr_group[10].output[4] */ + TRIG0_IN_TR_GROUP10_OUTPUT5 = 0x00000006u, /* tr_group[10].output[5] */ + TRIG0_IN_TR_GROUP10_OUTPUT6 = 0x00000007u, /* tr_group[10].output[6] */ + TRIG0_IN_TR_GROUP10_OUTPUT7 = 0x00000008u, /* tr_group[10].output[7] */ + TRIG0_IN_TR_GROUP11_OUTPUT0 = 0x00000009u, /* tr_group[11].output[0] */ + TRIG0_IN_TR_GROUP11_OUTPUT1 = 0x0000000Au, /* tr_group[11].output[1] */ + TRIG0_IN_TR_GROUP11_OUTPUT2 = 0x0000000Bu, /* tr_group[11].output[2] */ + TRIG0_IN_TR_GROUP11_OUTPUT3 = 0x0000000Cu, /* tr_group[11].output[3] */ + TRIG0_IN_TR_GROUP11_OUTPUT4 = 0x0000000Du, /* tr_group[11].output[4] */ + TRIG0_IN_TR_GROUP11_OUTPUT5 = 0x0000000Eu, /* tr_group[11].output[5] */ + TRIG0_IN_TR_GROUP11_OUTPUT6 = 0x0000000Fu, /* tr_group[11].output[6] */ + TRIG0_IN_TR_GROUP11_OUTPUT7 = 0x00000010u, /* tr_group[11].output[7] */ + TRIG0_IN_TR_GROUP11_OUTPUT8 = 0x00000011u, /* tr_group[11].output[8] */ + TRIG0_IN_TR_GROUP11_OUTPUT9 = 0x00000012u, /* tr_group[11].output[9] */ + TRIG0_IN_TR_GROUP11_OUTPUT10 = 0x00000013u, /* tr_group[11].output[10] */ + TRIG0_IN_TR_GROUP11_OUTPUT11 = 0x00000014u, /* tr_group[11].output[11] */ + TRIG0_IN_TR_GROUP11_OUTPUT12 = 0x00000015u, /* tr_group[11].output[12] */ + TRIG0_IN_TR_GROUP11_OUTPUT13 = 0x00000016u, /* tr_group[11].output[13] */ + TRIG0_IN_TR_GROUP11_OUTPUT14 = 0x00000017u, /* tr_group[11].output[14] */ + TRIG0_IN_TR_GROUP11_OUTPUT15 = 0x00000018u, /* tr_group[11].output[15] */ + TRIG0_IN_TR_GROUP12_OUTPUT8 = 0x00000019u, /* tr_group[12].output[8] */ + TRIG0_IN_TR_GROUP12_OUTPUT9 = 0x0000001Au, /* tr_group[12].output[9] */ + TRIG0_IN_TR_GROUP13_OUTPUT0 = 0x0000001Bu, /* tr_group[13].output[0] */ + TRIG0_IN_TR_GROUP13_OUTPUT1 = 0x0000001Cu, /* tr_group[13].output[1] */ + TRIG0_IN_TR_GROUP13_OUTPUT2 = 0x0000001Du, /* tr_group[13].output[2] */ + TRIG0_IN_TR_GROUP13_OUTPUT3 = 0x0000001Eu, /* tr_group[13].output[3] */ + TRIG0_IN_TR_GROUP13_OUTPUT4 = 0x0000001Fu, /* tr_group[13].output[4] */ + TRIG0_IN_TR_GROUP13_OUTPUT5 = 0x00000020u, /* tr_group[13].output[5] */ + TRIG0_IN_TR_GROUP13_OUTPUT6 = 0x00000021u, /* tr_group[13].output[6] */ + TRIG0_IN_TR_GROUP13_OUTPUT7 = 0x00000022u, /* tr_group[13].output[7] */ + TRIG0_IN_TR_GROUP13_OUTPUT8 = 0x00000023u, /* tr_group[13].output[8] */ + TRIG0_IN_TR_GROUP13_OUTPUT9 = 0x00000024u, /* tr_group[13].output[9] */ + TRIG0_IN_TR_GROUP13_OUTPUT10 = 0x00000025u, /* tr_group[13].output[10] */ + TRIG0_IN_TR_GROUP13_OUTPUT11 = 0x00000026u, /* tr_group[13].output[11] */ + TRIG0_IN_TR_GROUP13_OUTPUT12 = 0x00000027u, /* tr_group[13].output[12] */ + TRIG0_IN_TR_GROUP13_OUTPUT13 = 0x00000028u, /* tr_group[13].output[13] */ + TRIG0_IN_TR_GROUP13_OUTPUT14 = 0x00000029u, /* tr_group[13].output[14] */ + TRIG0_IN_TR_GROUP13_OUTPUT15 = 0x0000002Au, /* tr_group[13].output[15] */ + TRIG0_IN_TR_GROUP14_OUTPUT0 = 0x0000002Bu, /* tr_group[14].output[0] */ + TRIG0_IN_TR_GROUP14_OUTPUT1 = 0x0000002Cu, /* tr_group[14].output[1] */ + TRIG0_IN_TR_GROUP14_OUTPUT2 = 0x0000002Du, /* tr_group[14].output[2] */ + TRIG0_IN_TR_GROUP14_OUTPUT3 = 0x0000002Eu, /* tr_group[14].output[3] */ + TRIG0_IN_TR_GROUP14_OUTPUT4 = 0x0000002Fu, /* tr_group[14].output[4] */ + TRIG0_IN_TR_GROUP14_OUTPUT5 = 0x00000030u, /* tr_group[14].output[5] */ + TRIG0_IN_TR_GROUP14_OUTPUT6 = 0x00000031u, /* tr_group[14].output[6] */ + TRIG0_IN_TR_GROUP14_OUTPUT7 = 0x00000032u /* tr_group[14].output[7] */ +} en_trig_input_grp0_t; + +/* Trigger Input Group 1 - DMA Request Assignments */ +typedef enum +{ + TRIG1_IN_CPUSS_ZERO = 0x00000100u, /* cpuss.zero */ + TRIG1_IN_TR_GROUP10_OUTPUT0 = 0x00000101u, /* tr_group[10].output[0] */ + TRIG1_IN_TR_GROUP10_OUTPUT1 = 0x00000102u, /* tr_group[10].output[1] */ + TRIG1_IN_TR_GROUP10_OUTPUT2 = 0x00000103u, /* tr_group[10].output[2] */ + TRIG1_IN_TR_GROUP10_OUTPUT3 = 0x00000104u, /* tr_group[10].output[3] */ + TRIG1_IN_TR_GROUP10_OUTPUT4 = 0x00000105u, /* tr_group[10].output[4] */ + TRIG1_IN_TR_GROUP10_OUTPUT5 = 0x00000106u, /* tr_group[10].output[5] */ + TRIG1_IN_TR_GROUP10_OUTPUT6 = 0x00000107u, /* tr_group[10].output[6] */ + TRIG1_IN_TR_GROUP10_OUTPUT7 = 0x00000108u, /* tr_group[10].output[7] */ + TRIG1_IN_TR_GROUP11_OUTPUT0 = 0x00000109u, /* tr_group[11].output[0] */ + TRIG1_IN_TR_GROUP11_OUTPUT1 = 0x0000010Au, /* tr_group[11].output[1] */ + TRIG1_IN_TR_GROUP11_OUTPUT2 = 0x0000010Bu, /* tr_group[11].output[2] */ + TRIG1_IN_TR_GROUP11_OUTPUT3 = 0x0000010Cu, /* tr_group[11].output[3] */ + TRIG1_IN_TR_GROUP11_OUTPUT4 = 0x0000010Du, /* tr_group[11].output[4] */ + TRIG1_IN_TR_GROUP11_OUTPUT5 = 0x0000010Eu, /* tr_group[11].output[5] */ + TRIG1_IN_TR_GROUP11_OUTPUT6 = 0x0000010Fu, /* tr_group[11].output[6] */ + TRIG1_IN_TR_GROUP11_OUTPUT7 = 0x00000110u, /* tr_group[11].output[7] */ + TRIG1_IN_TR_GROUP11_OUTPUT8 = 0x00000111u, /* tr_group[11].output[8] */ + TRIG1_IN_TR_GROUP11_OUTPUT9 = 0x00000112u, /* tr_group[11].output[9] */ + TRIG1_IN_TR_GROUP11_OUTPUT10 = 0x00000113u, /* tr_group[11].output[10] */ + TRIG1_IN_TR_GROUP11_OUTPUT11 = 0x00000114u, /* tr_group[11].output[11] */ + TRIG1_IN_TR_GROUP11_OUTPUT12 = 0x00000115u, /* tr_group[11].output[12] */ + TRIG1_IN_TR_GROUP11_OUTPUT13 = 0x00000116u, /* tr_group[11].output[13] */ + TRIG1_IN_TR_GROUP11_OUTPUT14 = 0x00000117u, /* tr_group[11].output[14] */ + TRIG1_IN_TR_GROUP11_OUTPUT15 = 0x00000118u, /* tr_group[11].output[15] */ + TRIG1_IN_TR_GROUP12_OUTPUT8 = 0x00000119u, /* tr_group[12].output[8] */ + TRIG1_IN_TR_GROUP12_OUTPUT9 = 0x0000011Au, /* tr_group[12].output[9] */ + TRIG1_IN_TR_GROUP13_OUTPUT0 = 0x0000011Bu, /* tr_group[13].output[0] */ + TRIG1_IN_TR_GROUP13_OUTPUT1 = 0x0000011Cu, /* tr_group[13].output[1] */ + TRIG1_IN_TR_GROUP13_OUTPUT2 = 0x0000011Du, /* tr_group[13].output[2] */ + TRIG1_IN_TR_GROUP13_OUTPUT3 = 0x0000011Eu, /* tr_group[13].output[3] */ + TRIG1_IN_TR_GROUP13_OUTPUT4 = 0x0000011Fu, /* tr_group[13].output[4] */ + TRIG1_IN_TR_GROUP13_OUTPUT5 = 0x00000120u, /* tr_group[13].output[5] */ + TRIG1_IN_TR_GROUP13_OUTPUT6 = 0x00000121u, /* tr_group[13].output[6] */ + TRIG1_IN_TR_GROUP13_OUTPUT7 = 0x00000122u, /* tr_group[13].output[7] */ + TRIG1_IN_TR_GROUP13_OUTPUT8 = 0x00000123u, /* tr_group[13].output[8] */ + TRIG1_IN_TR_GROUP13_OUTPUT9 = 0x00000124u, /* tr_group[13].output[9] */ + TRIG1_IN_TR_GROUP13_OUTPUT10 = 0x00000125u, /* tr_group[13].output[10] */ + TRIG1_IN_TR_GROUP13_OUTPUT11 = 0x00000126u, /* tr_group[13].output[11] */ + TRIG1_IN_TR_GROUP13_OUTPUT12 = 0x00000127u, /* tr_group[13].output[12] */ + TRIG1_IN_TR_GROUP13_OUTPUT13 = 0x00000128u, /* tr_group[13].output[13] */ + TRIG1_IN_TR_GROUP13_OUTPUT14 = 0x00000129u, /* tr_group[13].output[14] */ + TRIG1_IN_TR_GROUP13_OUTPUT15 = 0x0000012Au, /* tr_group[13].output[15] */ + TRIG1_IN_TR_GROUP14_OUTPUT0 = 0x0000012Bu, /* tr_group[14].output[0] */ + TRIG1_IN_TR_GROUP14_OUTPUT1 = 0x0000012Cu, /* tr_group[14].output[1] */ + TRIG1_IN_TR_GROUP14_OUTPUT2 = 0x0000012Du, /* tr_group[14].output[2] */ + TRIG1_IN_TR_GROUP14_OUTPUT3 = 0x0000012Eu, /* tr_group[14].output[3] */ + TRIG1_IN_TR_GROUP14_OUTPUT4 = 0x0000012Fu, /* tr_group[14].output[4] */ + TRIG1_IN_TR_GROUP14_OUTPUT5 = 0x00000130u, /* tr_group[14].output[5] */ + TRIG1_IN_TR_GROUP14_OUTPUT6 = 0x00000131u, /* tr_group[14].output[6] */ + TRIG1_IN_TR_GROUP14_OUTPUT7 = 0x00000132u /* tr_group[14].output[7] */ +} en_trig_input_grp1_t; + +/* Trigger Input Group 2 - TCPWM trigger inputs */ +typedef enum +{ + TRIG2_IN_CPUSS_ZERO = 0x00000200u, /* cpuss.zero */ + TRIG2_IN_TR_GROUP10_OUTPUT0 = 0x00000201u, /* tr_group[10].output[0] */ + TRIG2_IN_TR_GROUP10_OUTPUT1 = 0x00000202u, /* tr_group[10].output[1] */ + TRIG2_IN_TR_GROUP10_OUTPUT2 = 0x00000203u, /* tr_group[10].output[2] */ + TRIG2_IN_TR_GROUP10_OUTPUT3 = 0x00000204u, /* tr_group[10].output[3] */ + TRIG2_IN_TR_GROUP10_OUTPUT4 = 0x00000205u, /* tr_group[10].output[4] */ + TRIG2_IN_TR_GROUP10_OUTPUT5 = 0x00000206u, /* tr_group[10].output[5] */ + TRIG2_IN_TR_GROUP10_OUTPUT6 = 0x00000207u, /* tr_group[10].output[6] */ + TRIG2_IN_TR_GROUP10_OUTPUT7 = 0x00000208u, /* tr_group[10].output[7] */ + TRIG2_IN_TR_GROUP11_OUTPUT0 = 0x00000209u, /* tr_group[11].output[0] */ + TRIG2_IN_TR_GROUP11_OUTPUT1 = 0x0000020Au, /* tr_group[11].output[1] */ + TRIG2_IN_TR_GROUP11_OUTPUT2 = 0x0000020Bu, /* tr_group[11].output[2] */ + TRIG2_IN_TR_GROUP11_OUTPUT3 = 0x0000020Cu, /* tr_group[11].output[3] */ + TRIG2_IN_TR_GROUP11_OUTPUT4 = 0x0000020Du, /* tr_group[11].output[4] */ + TRIG2_IN_TR_GROUP11_OUTPUT5 = 0x0000020Eu, /* tr_group[11].output[5] */ + TRIG2_IN_TR_GROUP11_OUTPUT6 = 0x0000020Fu, /* tr_group[11].output[6] */ + TRIG2_IN_TR_GROUP11_OUTPUT7 = 0x00000210u, /* tr_group[11].output[7] */ + TRIG2_IN_TR_GROUP11_OUTPUT8 = 0x00000211u, /* tr_group[11].output[8] */ + TRIG2_IN_TR_GROUP11_OUTPUT9 = 0x00000212u, /* tr_group[11].output[9] */ + TRIG2_IN_TR_GROUP11_OUTPUT10 = 0x00000213u, /* tr_group[11].output[10] */ + TRIG2_IN_TR_GROUP11_OUTPUT11 = 0x00000214u, /* tr_group[11].output[11] */ + TRIG2_IN_TR_GROUP11_OUTPUT12 = 0x00000215u, /* tr_group[11].output[12] */ + TRIG2_IN_TR_GROUP11_OUTPUT13 = 0x00000216u, /* tr_group[11].output[13] */ + TRIG2_IN_TR_GROUP11_OUTPUT14 = 0x00000217u, /* tr_group[11].output[14] */ + TRIG2_IN_TR_GROUP11_OUTPUT15 = 0x00000218u, /* tr_group[11].output[15] */ + TRIG2_IN_TR_GROUP12_OUTPUT0 = 0x00000219u, /* tr_group[12].output[0] */ + TRIG2_IN_TR_GROUP12_OUTPUT1 = 0x0000021Au, /* tr_group[12].output[1] */ + TRIG2_IN_TR_GROUP12_OUTPUT2 = 0x0000021Bu, /* tr_group[12].output[2] */ + TRIG2_IN_TR_GROUP12_OUTPUT3 = 0x0000021Cu, /* tr_group[12].output[3] */ + TRIG2_IN_TR_GROUP12_OUTPUT4 = 0x0000021Du, /* tr_group[12].output[4] */ + TRIG2_IN_TR_GROUP12_OUTPUT5 = 0x0000021Eu, /* tr_group[12].output[5] */ + TRIG2_IN_TR_GROUP12_OUTPUT6 = 0x0000021Fu, /* tr_group[12].output[6] */ + TRIG2_IN_TR_GROUP12_OUTPUT7 = 0x00000220u, /* tr_group[12].output[7] */ + TRIG2_IN_TR_GROUP13_OUTPUT16 = 0x00000221u, /* tr_group[13].output[16] */ + TRIG2_IN_TR_GROUP13_OUTPUT17 = 0x00000222u, /* tr_group[13].output[17] */ + TRIG2_IN_TR_GROUP14_OUTPUT8 = 0x00000223u, /* tr_group[14].output[8] */ + TRIG2_IN_TR_GROUP14_OUTPUT9 = 0x00000224u, /* tr_group[14].output[9] */ + TRIG2_IN_TR_GROUP14_OUTPUT10 = 0x00000225u, /* tr_group[14].output[10] */ + TRIG2_IN_TR_GROUP14_OUTPUT11 = 0x00000226u, /* tr_group[14].output[11] */ + TRIG2_IN_TR_GROUP14_OUTPUT12 = 0x00000227u, /* tr_group[14].output[12] */ + TRIG2_IN_TR_GROUP14_OUTPUT13 = 0x00000228u, /* tr_group[14].output[13] */ + TRIG2_IN_TR_GROUP14_OUTPUT14 = 0x00000229u, /* tr_group[14].output[14] */ + TRIG2_IN_TR_GROUP14_OUTPUT15 = 0x0000022Au /* tr_group[14].output[15] */ +} en_trig_input_grp2_t; + +/* Trigger Input Group 3 - TCPWM trigger inputs */ +typedef enum +{ + TRIG3_IN_CPUSS_ZERO = 0x00000300u, /* cpuss.zero */ + TRIG3_IN_TR_GROUP10_OUTPUT0 = 0x00000301u, /* tr_group[10].output[0] */ + TRIG3_IN_TR_GROUP10_OUTPUT1 = 0x00000302u, /* tr_group[10].output[1] */ + TRIG3_IN_TR_GROUP10_OUTPUT2 = 0x00000303u, /* tr_group[10].output[2] */ + TRIG3_IN_TR_GROUP10_OUTPUT3 = 0x00000304u, /* tr_group[10].output[3] */ + TRIG3_IN_TR_GROUP10_OUTPUT4 = 0x00000305u, /* tr_group[10].output[4] */ + TRIG3_IN_TR_GROUP10_OUTPUT5 = 0x00000306u, /* tr_group[10].output[5] */ + TRIG3_IN_TR_GROUP10_OUTPUT6 = 0x00000307u, /* tr_group[10].output[6] */ + TRIG3_IN_TR_GROUP10_OUTPUT7 = 0x00000308u, /* tr_group[10].output[7] */ + TRIG3_IN_TR_GROUP11_OUTPUT0 = 0x00000309u, /* tr_group[11].output[0] */ + TRIG3_IN_TR_GROUP11_OUTPUT1 = 0x0000030Au, /* tr_group[11].output[1] */ + TRIG3_IN_TR_GROUP11_OUTPUT2 = 0x0000030Bu, /* tr_group[11].output[2] */ + TRIG3_IN_TR_GROUP11_OUTPUT3 = 0x0000030Cu, /* tr_group[11].output[3] */ + TRIG3_IN_TR_GROUP11_OUTPUT4 = 0x0000030Du, /* tr_group[11].output[4] */ + TRIG3_IN_TR_GROUP11_OUTPUT5 = 0x0000030Eu, /* tr_group[11].output[5] */ + TRIG3_IN_TR_GROUP11_OUTPUT6 = 0x0000030Fu, /* tr_group[11].output[6] */ + TRIG3_IN_TR_GROUP11_OUTPUT7 = 0x00000310u, /* tr_group[11].output[7] */ + TRIG3_IN_TR_GROUP11_OUTPUT8 = 0x00000311u, /* tr_group[11].output[8] */ + TRIG3_IN_TR_GROUP11_OUTPUT9 = 0x00000312u, /* tr_group[11].output[9] */ + TRIG3_IN_TR_GROUP11_OUTPUT10 = 0x00000313u, /* tr_group[11].output[10] */ + TRIG3_IN_TR_GROUP11_OUTPUT11 = 0x00000314u, /* tr_group[11].output[11] */ + TRIG3_IN_TR_GROUP11_OUTPUT12 = 0x00000315u, /* tr_group[11].output[12] */ + TRIG3_IN_TR_GROUP11_OUTPUT13 = 0x00000316u, /* tr_group[11].output[13] */ + TRIG3_IN_TR_GROUP11_OUTPUT14 = 0x00000317u, /* tr_group[11].output[14] */ + TRIG3_IN_TR_GROUP11_OUTPUT15 = 0x00000318u, /* tr_group[11].output[15] */ + TRIG3_IN_TR_GROUP12_OUTPUT0 = 0x00000319u, /* tr_group[12].output[0] */ + TRIG3_IN_TR_GROUP12_OUTPUT1 = 0x0000031Au, /* tr_group[12].output[1] */ + TRIG3_IN_TR_GROUP12_OUTPUT2 = 0x0000031Bu, /* tr_group[12].output[2] */ + TRIG3_IN_TR_GROUP12_OUTPUT3 = 0x0000031Cu, /* tr_group[12].output[3] */ + TRIG3_IN_TR_GROUP12_OUTPUT4 = 0x0000031Du, /* tr_group[12].output[4] */ + TRIG3_IN_TR_GROUP12_OUTPUT5 = 0x0000031Eu, /* tr_group[12].output[5] */ + TRIG3_IN_TR_GROUP12_OUTPUT6 = 0x0000031Fu, /* tr_group[12].output[6] */ + TRIG3_IN_TR_GROUP12_OUTPUT7 = 0x00000320u, /* tr_group[12].output[7] */ + TRIG3_IN_TR_GROUP13_OUTPUT16 = 0x00000321u, /* tr_group[13].output[16] */ + TRIG3_IN_TR_GROUP13_OUTPUT17 = 0x00000322u, /* tr_group[13].output[17] */ + TRIG3_IN_TR_GROUP14_OUTPUT8 = 0x00000323u, /* tr_group[14].output[8] */ + TRIG3_IN_TR_GROUP14_OUTPUT9 = 0x00000324u, /* tr_group[14].output[9] */ + TRIG3_IN_TR_GROUP14_OUTPUT10 = 0x00000325u, /* tr_group[14].output[10] */ + TRIG3_IN_TR_GROUP14_OUTPUT11 = 0x00000326u, /* tr_group[14].output[11] */ + TRIG3_IN_TR_GROUP14_OUTPUT12 = 0x00000327u, /* tr_group[14].output[12] */ + TRIG3_IN_TR_GROUP14_OUTPUT13 = 0x00000328u, /* tr_group[14].output[13] */ + TRIG3_IN_TR_GROUP14_OUTPUT14 = 0x00000329u, /* tr_group[14].output[14] */ + TRIG3_IN_TR_GROUP14_OUTPUT15 = 0x0000032Au /* tr_group[14].output[15] */ +} en_trig_input_grp3_t; + +/* Trigger Input Group 4 - PROFILE trigger multiplexer */ +typedef enum +{ + TRIG4_IN_CPUSS_ZERO = 0x00000400u, /* cpuss.zero */ + TRIG4_IN_TR_GROUP10_OUTPUT0 = 0x00000401u, /* tr_group[10].output[0] */ + TRIG4_IN_TR_GROUP10_OUTPUT1 = 0x00000402u, /* tr_group[10].output[1] */ + TRIG4_IN_TR_GROUP10_OUTPUT2 = 0x00000403u, /* tr_group[10].output[2] */ + TRIG4_IN_TR_GROUP10_OUTPUT3 = 0x00000404u, /* tr_group[10].output[3] */ + TRIG4_IN_TR_GROUP10_OUTPUT4 = 0x00000405u, /* tr_group[10].output[4] */ + TRIG4_IN_TR_GROUP10_OUTPUT5 = 0x00000406u, /* tr_group[10].output[5] */ + TRIG4_IN_TR_GROUP10_OUTPUT6 = 0x00000407u, /* tr_group[10].output[6] */ + TRIG4_IN_TR_GROUP10_OUTPUT7 = 0x00000408u, /* tr_group[10].output[7] */ + TRIG4_IN_TR_GROUP11_OUTPUT0 = 0x00000409u, /* tr_group[11].output[0] */ + TRIG4_IN_TR_GROUP11_OUTPUT1 = 0x0000040Au, /* tr_group[11].output[1] */ + TRIG4_IN_TR_GROUP11_OUTPUT2 = 0x0000040Bu, /* tr_group[11].output[2] */ + TRIG4_IN_TR_GROUP11_OUTPUT3 = 0x0000040Cu, /* tr_group[11].output[3] */ + TRIG4_IN_TR_GROUP11_OUTPUT4 = 0x0000040Du, /* tr_group[11].output[4] */ + TRIG4_IN_TR_GROUP11_OUTPUT5 = 0x0000040Eu, /* tr_group[11].output[5] */ + TRIG4_IN_TR_GROUP11_OUTPUT6 = 0x0000040Fu, /* tr_group[11].output[6] */ + TRIG4_IN_TR_GROUP11_OUTPUT7 = 0x00000410u, /* tr_group[11].output[7] */ + TRIG4_IN_TR_GROUP11_OUTPUT8 = 0x00000411u, /* tr_group[11].output[8] */ + TRIG4_IN_TR_GROUP11_OUTPUT9 = 0x00000412u, /* tr_group[11].output[9] */ + TRIG4_IN_TR_GROUP11_OUTPUT10 = 0x00000413u, /* tr_group[11].output[10] */ + TRIG4_IN_TR_GROUP11_OUTPUT11 = 0x00000414u, /* tr_group[11].output[11] */ + TRIG4_IN_TR_GROUP11_OUTPUT12 = 0x00000415u, /* tr_group[11].output[12] */ + TRIG4_IN_TR_GROUP11_OUTPUT13 = 0x00000416u, /* tr_group[11].output[13] */ + TRIG4_IN_TR_GROUP11_OUTPUT14 = 0x00000417u, /* tr_group[11].output[14] */ + TRIG4_IN_TR_GROUP11_OUTPUT15 = 0x00000418u, /* tr_group[11].output[15] */ + TRIG4_IN_TR_GROUP12_OUTPUT0 = 0x00000419u, /* tr_group[12].output[0] */ + TRIG4_IN_TR_GROUP12_OUTPUT1 = 0x0000041Au, /* tr_group[12].output[1] */ + TRIG4_IN_TR_GROUP12_OUTPUT2 = 0x0000041Bu, /* tr_group[12].output[2] */ + TRIG4_IN_TR_GROUP12_OUTPUT3 = 0x0000041Cu, /* tr_group[12].output[3] */ + TRIG4_IN_TR_GROUP12_OUTPUT4 = 0x0000041Du, /* tr_group[12].output[4] */ + TRIG4_IN_TR_GROUP12_OUTPUT5 = 0x0000041Eu, /* tr_group[12].output[5] */ + TRIG4_IN_TR_GROUP12_OUTPUT6 = 0x0000041Fu, /* tr_group[12].output[6] */ + TRIG4_IN_TR_GROUP12_OUTPUT7 = 0x00000420u, /* tr_group[12].output[7] */ + TRIG4_IN_TR_GROUP13_OUTPUT16 = 0x00000421u, /* tr_group[13].output[16] */ + TRIG4_IN_TR_GROUP13_OUTPUT17 = 0x00000422u, /* tr_group[13].output[17] */ + TRIG4_IN_TR_GROUP14_OUTPUT8 = 0x00000423u, /* tr_group[14].output[8] */ + TRIG4_IN_TR_GROUP14_OUTPUT9 = 0x00000424u, /* tr_group[14].output[9] */ + TRIG4_IN_TR_GROUP14_OUTPUT10 = 0x00000425u, /* tr_group[14].output[10] */ + TRIG4_IN_TR_GROUP14_OUTPUT11 = 0x00000426u, /* tr_group[14].output[11] */ + TRIG4_IN_TR_GROUP14_OUTPUT12 = 0x00000427u, /* tr_group[14].output[12] */ + TRIG4_IN_TR_GROUP14_OUTPUT13 = 0x00000428u, /* tr_group[14].output[13] */ + TRIG4_IN_TR_GROUP14_OUTPUT14 = 0x00000429u, /* tr_group[14].output[14] */ + TRIG4_IN_TR_GROUP14_OUTPUT15 = 0x0000042Au /* tr_group[14].output[15] */ +} en_trig_input_grp4_t; + +/* Trigger Input Group 5 - CPUSS.CTI trigger multiplexer */ +typedef enum +{ + TRIG5_IN_CPUSS_ZERO = 0x00000500u, /* cpuss.zero */ + TRIG5_IN_TR_GROUP10_OUTPUT0 = 0x00000501u, /* tr_group[10].output[0] */ + TRIG5_IN_TR_GROUP10_OUTPUT1 = 0x00000502u, /* tr_group[10].output[1] */ + TRIG5_IN_TR_GROUP10_OUTPUT2 = 0x00000503u, /* tr_group[10].output[2] */ + TRIG5_IN_TR_GROUP10_OUTPUT3 = 0x00000504u, /* tr_group[10].output[3] */ + TRIG5_IN_TR_GROUP10_OUTPUT4 = 0x00000505u, /* tr_group[10].output[4] */ + TRIG5_IN_TR_GROUP10_OUTPUT5 = 0x00000506u, /* tr_group[10].output[5] */ + TRIG5_IN_TR_GROUP10_OUTPUT6 = 0x00000507u, /* tr_group[10].output[6] */ + TRIG5_IN_TR_GROUP10_OUTPUT7 = 0x00000508u, /* tr_group[10].output[7] */ + TRIG5_IN_TR_GROUP11_OUTPUT0 = 0x00000509u, /* tr_group[11].output[0] */ + TRIG5_IN_TR_GROUP11_OUTPUT1 = 0x0000050Au, /* tr_group[11].output[1] */ + TRIG5_IN_TR_GROUP11_OUTPUT2 = 0x0000050Bu, /* tr_group[11].output[2] */ + TRIG5_IN_TR_GROUP11_OUTPUT3 = 0x0000050Cu, /* tr_group[11].output[3] */ + TRIG5_IN_TR_GROUP11_OUTPUT4 = 0x0000050Du, /* tr_group[11].output[4] */ + TRIG5_IN_TR_GROUP11_OUTPUT5 = 0x0000050Eu, /* tr_group[11].output[5] */ + TRIG5_IN_TR_GROUP11_OUTPUT6 = 0x0000050Fu, /* tr_group[11].output[6] */ + TRIG5_IN_TR_GROUP11_OUTPUT7 = 0x00000510u, /* tr_group[11].output[7] */ + TRIG5_IN_TR_GROUP11_OUTPUT8 = 0x00000511u, /* tr_group[11].output[8] */ + TRIG5_IN_TR_GROUP11_OUTPUT9 = 0x00000512u, /* tr_group[11].output[9] */ + TRIG5_IN_TR_GROUP11_OUTPUT10 = 0x00000513u, /* tr_group[11].output[10] */ + TRIG5_IN_TR_GROUP11_OUTPUT11 = 0x00000514u, /* tr_group[11].output[11] */ + TRIG5_IN_TR_GROUP11_OUTPUT12 = 0x00000515u, /* tr_group[11].output[12] */ + TRIG5_IN_TR_GROUP11_OUTPUT13 = 0x00000516u, /* tr_group[11].output[13] */ + TRIG5_IN_TR_GROUP11_OUTPUT14 = 0x00000517u, /* tr_group[11].output[14] */ + TRIG5_IN_TR_GROUP11_OUTPUT15 = 0x00000518u, /* tr_group[11].output[15] */ + TRIG5_IN_TR_GROUP12_OUTPUT0 = 0x00000519u, /* tr_group[12].output[0] */ + TRIG5_IN_TR_GROUP12_OUTPUT1 = 0x0000051Au, /* tr_group[12].output[1] */ + TRIG5_IN_TR_GROUP12_OUTPUT2 = 0x0000051Bu, /* tr_group[12].output[2] */ + TRIG5_IN_TR_GROUP12_OUTPUT3 = 0x0000051Cu, /* tr_group[12].output[3] */ + TRIG5_IN_TR_GROUP12_OUTPUT4 = 0x0000051Du, /* tr_group[12].output[4] */ + TRIG5_IN_TR_GROUP12_OUTPUT5 = 0x0000051Eu, /* tr_group[12].output[5] */ + TRIG5_IN_TR_GROUP12_OUTPUT6 = 0x0000051Fu, /* tr_group[12].output[6] */ + TRIG5_IN_TR_GROUP12_OUTPUT7 = 0x00000520u, /* tr_group[12].output[7] */ + TRIG5_IN_TR_GROUP13_OUTPUT16 = 0x00000521u, /* tr_group[13].output[16] */ + TRIG5_IN_TR_GROUP13_OUTPUT17 = 0x00000522u, /* tr_group[13].output[17] */ + TRIG5_IN_TR_GROUP14_OUTPUT8 = 0x00000523u, /* tr_group[14].output[8] */ + TRIG5_IN_TR_GROUP14_OUTPUT9 = 0x00000524u, /* tr_group[14].output[9] */ + TRIG5_IN_TR_GROUP14_OUTPUT10 = 0x00000525u, /* tr_group[14].output[10] */ + TRIG5_IN_TR_GROUP14_OUTPUT11 = 0x00000526u, /* tr_group[14].output[11] */ + TRIG5_IN_TR_GROUP14_OUTPUT12 = 0x00000527u, /* tr_group[14].output[12] */ + TRIG5_IN_TR_GROUP14_OUTPUT13 = 0x00000528u, /* tr_group[14].output[13] */ + TRIG5_IN_TR_GROUP14_OUTPUT14 = 0x00000529u, /* tr_group[14].output[14] */ + TRIG5_IN_TR_GROUP14_OUTPUT15 = 0x0000052Au /* tr_group[14].output[15] */ +} en_trig_input_grp5_t; + +/* Trigger Input Group 6 - PASS trigger multiplexer */ +typedef enum +{ + TRIG6_IN_CPUSS_ZERO = 0x00000600u, /* cpuss.zero */ + TRIG6_IN_TR_GROUP10_OUTPUT0 = 0x00000601u, /* tr_group[10].output[0] */ + TRIG6_IN_TR_GROUP10_OUTPUT1 = 0x00000602u, /* tr_group[10].output[1] */ + TRIG6_IN_TR_GROUP10_OUTPUT2 = 0x00000603u, /* tr_group[10].output[2] */ + TRIG6_IN_TR_GROUP10_OUTPUT3 = 0x00000604u, /* tr_group[10].output[3] */ + TRIG6_IN_TR_GROUP10_OUTPUT4 = 0x00000605u, /* tr_group[10].output[4] */ + TRIG6_IN_TR_GROUP10_OUTPUT5 = 0x00000606u, /* tr_group[10].output[5] */ + TRIG6_IN_TR_GROUP10_OUTPUT6 = 0x00000607u, /* tr_group[10].output[6] */ + TRIG6_IN_TR_GROUP10_OUTPUT7 = 0x00000608u, /* tr_group[10].output[7] */ + TRIG6_IN_TR_GROUP11_OUTPUT0 = 0x00000609u, /* tr_group[11].output[0] */ + TRIG6_IN_TR_GROUP11_OUTPUT1 = 0x0000060Au, /* tr_group[11].output[1] */ + TRIG6_IN_TR_GROUP11_OUTPUT2 = 0x0000060Bu, /* tr_group[11].output[2] */ + TRIG6_IN_TR_GROUP11_OUTPUT3 = 0x0000060Cu, /* tr_group[11].output[3] */ + TRIG6_IN_TR_GROUP11_OUTPUT4 = 0x0000060Du, /* tr_group[11].output[4] */ + TRIG6_IN_TR_GROUP11_OUTPUT5 = 0x0000060Eu, /* tr_group[11].output[5] */ + TRIG6_IN_TR_GROUP11_OUTPUT6 = 0x0000060Fu, /* tr_group[11].output[6] */ + TRIG6_IN_TR_GROUP11_OUTPUT7 = 0x00000610u, /* tr_group[11].output[7] */ + TRIG6_IN_TR_GROUP11_OUTPUT8 = 0x00000611u, /* tr_group[11].output[8] */ + TRIG6_IN_TR_GROUP11_OUTPUT9 = 0x00000612u, /* tr_group[11].output[9] */ + TRIG6_IN_TR_GROUP11_OUTPUT10 = 0x00000613u, /* tr_group[11].output[10] */ + TRIG6_IN_TR_GROUP11_OUTPUT11 = 0x00000614u, /* tr_group[11].output[11] */ + TRIG6_IN_TR_GROUP11_OUTPUT12 = 0x00000615u, /* tr_group[11].output[12] */ + TRIG6_IN_TR_GROUP11_OUTPUT13 = 0x00000616u, /* tr_group[11].output[13] */ + TRIG6_IN_TR_GROUP11_OUTPUT14 = 0x00000617u, /* tr_group[11].output[14] */ + TRIG6_IN_TR_GROUP11_OUTPUT15 = 0x00000618u, /* tr_group[11].output[15] */ + TRIG6_IN_TR_GROUP12_OUTPUT0 = 0x00000619u, /* tr_group[12].output[0] */ + TRIG6_IN_TR_GROUP12_OUTPUT1 = 0x0000061Au, /* tr_group[12].output[1] */ + TRIG6_IN_TR_GROUP12_OUTPUT2 = 0x0000061Bu, /* tr_group[12].output[2] */ + TRIG6_IN_TR_GROUP12_OUTPUT3 = 0x0000061Cu, /* tr_group[12].output[3] */ + TRIG6_IN_TR_GROUP12_OUTPUT4 = 0x0000061Du, /* tr_group[12].output[4] */ + TRIG6_IN_TR_GROUP12_OUTPUT5 = 0x0000061Eu, /* tr_group[12].output[5] */ + TRIG6_IN_TR_GROUP12_OUTPUT6 = 0x0000061Fu, /* tr_group[12].output[6] */ + TRIG6_IN_TR_GROUP12_OUTPUT7 = 0x00000620u, /* tr_group[12].output[7] */ + TRIG6_IN_TR_GROUP13_OUTPUT16 = 0x00000621u, /* tr_group[13].output[16] */ + TRIG6_IN_TR_GROUP13_OUTPUT17 = 0x00000622u, /* tr_group[13].output[17] */ + TRIG6_IN_TR_GROUP14_OUTPUT8 = 0x00000623u, /* tr_group[14].output[8] */ + TRIG6_IN_TR_GROUP14_OUTPUT9 = 0x00000624u, /* tr_group[14].output[9] */ + TRIG6_IN_TR_GROUP14_OUTPUT10 = 0x00000625u, /* tr_group[14].output[10] */ + TRIG6_IN_TR_GROUP14_OUTPUT11 = 0x00000626u, /* tr_group[14].output[11] */ + TRIG6_IN_TR_GROUP14_OUTPUT12 = 0x00000627u, /* tr_group[14].output[12] */ + TRIG6_IN_TR_GROUP14_OUTPUT13 = 0x00000628u, /* tr_group[14].output[13] */ + TRIG6_IN_TR_GROUP14_OUTPUT14 = 0x00000629u, /* tr_group[14].output[14] */ + TRIG6_IN_TR_GROUP14_OUTPUT15 = 0x0000062Au /* tr_group[14].output[15] */ +} en_trig_input_grp6_t; + +/* Trigger Input Group 7 - UDB general purpose trigger multiplexer */ +typedef enum +{ + TRIG7_IN_CPUSS_ZERO = 0x00000700u, /* cpuss.zero */ + TRIG7_IN_TR_GROUP10_OUTPUT0 = 0x00000701u, /* tr_group[10].output[0] */ + TRIG7_IN_TR_GROUP10_OUTPUT1 = 0x00000702u, /* tr_group[10].output[1] */ + TRIG7_IN_TR_GROUP10_OUTPUT2 = 0x00000703u, /* tr_group[10].output[2] */ + TRIG7_IN_TR_GROUP10_OUTPUT3 = 0x00000704u, /* tr_group[10].output[3] */ + TRIG7_IN_TR_GROUP10_OUTPUT4 = 0x00000705u, /* tr_group[10].output[4] */ + TRIG7_IN_TR_GROUP10_OUTPUT5 = 0x00000706u, /* tr_group[10].output[5] */ + TRIG7_IN_TR_GROUP10_OUTPUT6 = 0x00000707u, /* tr_group[10].output[6] */ + TRIG7_IN_TR_GROUP10_OUTPUT7 = 0x00000708u, /* tr_group[10].output[7] */ + TRIG7_IN_TR_GROUP11_OUTPUT0 = 0x00000709u, /* tr_group[11].output[0] */ + TRIG7_IN_TR_GROUP11_OUTPUT1 = 0x0000070Au, /* tr_group[11].output[1] */ + TRIG7_IN_TR_GROUP11_OUTPUT2 = 0x0000070Bu, /* tr_group[11].output[2] */ + TRIG7_IN_TR_GROUP11_OUTPUT3 = 0x0000070Cu, /* tr_group[11].output[3] */ + TRIG7_IN_TR_GROUP11_OUTPUT4 = 0x0000070Du, /* tr_group[11].output[4] */ + TRIG7_IN_TR_GROUP11_OUTPUT5 = 0x0000070Eu, /* tr_group[11].output[5] */ + TRIG7_IN_TR_GROUP11_OUTPUT6 = 0x0000070Fu, /* tr_group[11].output[6] */ + TRIG7_IN_TR_GROUP11_OUTPUT7 = 0x00000710u, /* tr_group[11].output[7] */ + TRIG7_IN_TR_GROUP11_OUTPUT8 = 0x00000711u, /* tr_group[11].output[8] */ + TRIG7_IN_TR_GROUP11_OUTPUT9 = 0x00000712u, /* tr_group[11].output[9] */ + TRIG7_IN_TR_GROUP11_OUTPUT10 = 0x00000713u, /* tr_group[11].output[10] */ + TRIG7_IN_TR_GROUP11_OUTPUT11 = 0x00000714u, /* tr_group[11].output[11] */ + TRIG7_IN_TR_GROUP11_OUTPUT12 = 0x00000715u, /* tr_group[11].output[12] */ + TRIG7_IN_TR_GROUP11_OUTPUT13 = 0x00000716u, /* tr_group[11].output[13] */ + TRIG7_IN_TR_GROUP11_OUTPUT14 = 0x00000717u, /* tr_group[11].output[14] */ + TRIG7_IN_TR_GROUP11_OUTPUT15 = 0x00000718u, /* tr_group[11].output[15] */ + TRIG7_IN_TR_GROUP12_OUTPUT0 = 0x00000719u, /* tr_group[12].output[0] */ + TRIG7_IN_TR_GROUP12_OUTPUT1 = 0x0000071Au, /* tr_group[12].output[1] */ + TRIG7_IN_TR_GROUP12_OUTPUT2 = 0x0000071Bu, /* tr_group[12].output[2] */ + TRIG7_IN_TR_GROUP12_OUTPUT3 = 0x0000071Cu, /* tr_group[12].output[3] */ + TRIG7_IN_TR_GROUP12_OUTPUT4 = 0x0000071Du, /* tr_group[12].output[4] */ + TRIG7_IN_TR_GROUP12_OUTPUT5 = 0x0000071Eu, /* tr_group[12].output[5] */ + TRIG7_IN_TR_GROUP12_OUTPUT6 = 0x0000071Fu, /* tr_group[12].output[6] */ + TRIG7_IN_TR_GROUP12_OUTPUT7 = 0x00000720u, /* tr_group[12].output[7] */ + TRIG7_IN_TR_GROUP13_OUTPUT16 = 0x00000721u, /* tr_group[13].output[16] */ + TRIG7_IN_TR_GROUP13_OUTPUT17 = 0x00000722u, /* tr_group[13].output[17] */ + TRIG7_IN_TR_GROUP14_OUTPUT8 = 0x00000723u, /* tr_group[14].output[8] */ + TRIG7_IN_TR_GROUP14_OUTPUT9 = 0x00000724u, /* tr_group[14].output[9] */ + TRIG7_IN_TR_GROUP14_OUTPUT10 = 0x00000725u, /* tr_group[14].output[10] */ + TRIG7_IN_TR_GROUP14_OUTPUT11 = 0x00000726u, /* tr_group[14].output[11] */ + TRIG7_IN_TR_GROUP14_OUTPUT12 = 0x00000727u, /* tr_group[14].output[12] */ + TRIG7_IN_TR_GROUP14_OUTPUT13 = 0x00000728u, /* tr_group[14].output[13] */ + TRIG7_IN_TR_GROUP14_OUTPUT14 = 0x00000729u, /* tr_group[14].output[14] */ + TRIG7_IN_TR_GROUP14_OUTPUT15 = 0x0000072Au /* tr_group[14].output[15] */ +} en_trig_input_grp7_t; + +/* Trigger Input Group 8 - Trigger multiplexer to pins */ +typedef enum +{ + TRIG8_IN_CPUSS_ZERO = 0x00000800u, /* cpuss.zero */ + TRIG8_IN_TR_GROUP10_OUTPUT0 = 0x00000801u, /* tr_group[10].output[0] */ + TRIG8_IN_TR_GROUP10_OUTPUT1 = 0x00000802u, /* tr_group[10].output[1] */ + TRIG8_IN_TR_GROUP10_OUTPUT2 = 0x00000803u, /* tr_group[10].output[2] */ + TRIG8_IN_TR_GROUP10_OUTPUT3 = 0x00000804u, /* tr_group[10].output[3] */ + TRIG8_IN_TR_GROUP10_OUTPUT4 = 0x00000805u, /* tr_group[10].output[4] */ + TRIG8_IN_TR_GROUP10_OUTPUT5 = 0x00000806u, /* tr_group[10].output[5] */ + TRIG8_IN_TR_GROUP10_OUTPUT6 = 0x00000807u, /* tr_group[10].output[6] */ + TRIG8_IN_TR_GROUP10_OUTPUT7 = 0x00000808u, /* tr_group[10].output[7] */ + TRIG8_IN_TR_GROUP11_OUTPUT0 = 0x00000809u, /* tr_group[11].output[0] */ + TRIG8_IN_TR_GROUP11_OUTPUT1 = 0x0000080Au, /* tr_group[11].output[1] */ + TRIG8_IN_TR_GROUP11_OUTPUT2 = 0x0000080Bu, /* tr_group[11].output[2] */ + TRIG8_IN_TR_GROUP11_OUTPUT3 = 0x0000080Cu, /* tr_group[11].output[3] */ + TRIG8_IN_TR_GROUP11_OUTPUT4 = 0x0000080Du, /* tr_group[11].output[4] */ + TRIG8_IN_TR_GROUP11_OUTPUT5 = 0x0000080Eu, /* tr_group[11].output[5] */ + TRIG8_IN_TR_GROUP11_OUTPUT6 = 0x0000080Fu, /* tr_group[11].output[6] */ + TRIG8_IN_TR_GROUP11_OUTPUT7 = 0x00000810u, /* tr_group[11].output[7] */ + TRIG8_IN_TR_GROUP11_OUTPUT8 = 0x00000811u, /* tr_group[11].output[8] */ + TRIG8_IN_TR_GROUP11_OUTPUT9 = 0x00000812u, /* tr_group[11].output[9] */ + TRIG8_IN_TR_GROUP11_OUTPUT10 = 0x00000813u, /* tr_group[11].output[10] */ + TRIG8_IN_TR_GROUP11_OUTPUT11 = 0x00000814u, /* tr_group[11].output[11] */ + TRIG8_IN_TR_GROUP11_OUTPUT12 = 0x00000815u, /* tr_group[11].output[12] */ + TRIG8_IN_TR_GROUP11_OUTPUT13 = 0x00000816u, /* tr_group[11].output[13] */ + TRIG8_IN_TR_GROUP11_OUTPUT14 = 0x00000817u, /* tr_group[11].output[14] */ + TRIG8_IN_TR_GROUP11_OUTPUT15 = 0x00000818u, /* tr_group[11].output[15] */ + TRIG8_IN_TR_GROUP12_OUTPUT0 = 0x00000819u, /* tr_group[12].output[0] */ + TRIG8_IN_TR_GROUP12_OUTPUT1 = 0x0000081Au, /* tr_group[12].output[1] */ + TRIG8_IN_TR_GROUP12_OUTPUT2 = 0x0000081Bu, /* tr_group[12].output[2] */ + TRIG8_IN_TR_GROUP12_OUTPUT3 = 0x0000081Cu, /* tr_group[12].output[3] */ + TRIG8_IN_TR_GROUP12_OUTPUT4 = 0x0000081Du, /* tr_group[12].output[4] */ + TRIG8_IN_TR_GROUP12_OUTPUT5 = 0x0000081Eu, /* tr_group[12].output[5] */ + TRIG8_IN_TR_GROUP12_OUTPUT6 = 0x0000081Fu, /* tr_group[12].output[6] */ + TRIG8_IN_TR_GROUP12_OUTPUT7 = 0x00000820u, /* tr_group[12].output[7] */ + TRIG8_IN_TR_GROUP13_OUTPUT16 = 0x00000821u, /* tr_group[13].output[16] */ + TRIG8_IN_TR_GROUP13_OUTPUT17 = 0x00000822u, /* tr_group[13].output[17] */ + TRIG8_IN_TR_GROUP14_OUTPUT8 = 0x00000823u, /* tr_group[14].output[8] */ + TRIG8_IN_TR_GROUP14_OUTPUT9 = 0x00000824u, /* tr_group[14].output[9] */ + TRIG8_IN_TR_GROUP14_OUTPUT10 = 0x00000825u, /* tr_group[14].output[10] */ + TRIG8_IN_TR_GROUP14_OUTPUT11 = 0x00000826u, /* tr_group[14].output[11] */ + TRIG8_IN_TR_GROUP14_OUTPUT12 = 0x00000827u, /* tr_group[14].output[12] */ + TRIG8_IN_TR_GROUP14_OUTPUT13 = 0x00000828u, /* tr_group[14].output[13] */ + TRIG8_IN_TR_GROUP14_OUTPUT14 = 0x00000829u, /* tr_group[14].output[14] */ + TRIG8_IN_TR_GROUP14_OUTPUT15 = 0x0000082Au /* tr_group[14].output[15] */ +} en_trig_input_grp8_t; + +/* Trigger Input Group 9 - Feedback mux to USB DMA interface */ +typedef enum +{ + TRIG9_IN_CPUSS_ZERO = 0x00000900u, /* cpuss.zero */ + TRIG9_IN_CPUSS_DW0_TR_OUT0 = 0x00000901u, /* cpuss.dw0_tr_out[0] */ + TRIG9_IN_CPUSS_DW0_TR_OUT1 = 0x00000902u, /* cpuss.dw0_tr_out[1] */ + TRIG9_IN_CPUSS_DW0_TR_OUT2 = 0x00000903u, /* cpuss.dw0_tr_out[2] */ + TRIG9_IN_CPUSS_DW0_TR_OUT3 = 0x00000904u, /* cpuss.dw0_tr_out[3] */ + TRIG9_IN_CPUSS_DW0_TR_OUT4 = 0x00000905u, /* cpuss.dw0_tr_out[4] */ + TRIG9_IN_CPUSS_DW0_TR_OUT5 = 0x00000906u, /* cpuss.dw0_tr_out[5] */ + TRIG9_IN_CPUSS_DW0_TR_OUT6 = 0x00000907u, /* cpuss.dw0_tr_out[6] */ + TRIG9_IN_CPUSS_DW0_TR_OUT7 = 0x00000908u, /* cpuss.dw0_tr_out[7] */ + TRIG9_IN_CPUSS_DW0_TR_OUT8 = 0x00000909u, /* cpuss.dw0_tr_out[8] */ + TRIG9_IN_CPUSS_DW0_TR_OUT9 = 0x0000090Au, /* cpuss.dw0_tr_out[9] */ + TRIG9_IN_CPUSS_DW0_TR_OUT10 = 0x0000090Bu, /* cpuss.dw0_tr_out[10] */ + TRIG9_IN_CPUSS_DW0_TR_OUT11 = 0x0000090Cu, /* cpuss.dw0_tr_out[11] */ + TRIG9_IN_CPUSS_DW0_TR_OUT12 = 0x0000090Du, /* cpuss.dw0_tr_out[12] */ + TRIG9_IN_CPUSS_DW0_TR_OUT13 = 0x0000090Eu, /* cpuss.dw0_tr_out[13] */ + TRIG9_IN_CPUSS_DW0_TR_OUT14 = 0x0000090Fu, /* cpuss.dw0_tr_out[14] */ + TRIG9_IN_CPUSS_DW0_TR_OUT15 = 0x00000910u, /* cpuss.dw0_tr_out[15] */ + TRIG9_IN_CPUSS_DW1_TR_OUT0 = 0x00000911u, /* cpuss.dw1_tr_out[0] */ + TRIG9_IN_CPUSS_DW1_TR_OUT1 = 0x00000912u, /* cpuss.dw1_tr_out[1] */ + TRIG9_IN_CPUSS_DW1_TR_OUT2 = 0x00000913u, /* cpuss.dw1_tr_out[2] */ + TRIG9_IN_CPUSS_DW1_TR_OUT3 = 0x00000914u, /* cpuss.dw1_tr_out[3] */ + TRIG9_IN_CPUSS_DW1_TR_OUT4 = 0x00000915u, /* cpuss.dw1_tr_out[4] */ + TRIG9_IN_CPUSS_DW1_TR_OUT5 = 0x00000916u, /* cpuss.dw1_tr_out[5] */ + TRIG9_IN_CPUSS_DW1_TR_OUT6 = 0x00000917u, /* cpuss.dw1_tr_out[6] */ + TRIG9_IN_CPUSS_DW1_TR_OUT7 = 0x00000918u, /* cpuss.dw1_tr_out[7] */ + TRIG9_IN_CPUSS_DW1_TR_OUT8 = 0x00000919u, /* cpuss.dw1_tr_out[8] */ + TRIG9_IN_CPUSS_DW1_TR_OUT9 = 0x0000091Au, /* cpuss.dw1_tr_out[9] */ + TRIG9_IN_CPUSS_DW1_TR_OUT10 = 0x0000091Bu, /* cpuss.dw1_tr_out[10] */ + TRIG9_IN_CPUSS_DW1_TR_OUT11 = 0x0000091Cu, /* cpuss.dw1_tr_out[11] */ + TRIG9_IN_CPUSS_DW1_TR_OUT12 = 0x0000091Du, /* cpuss.dw1_tr_out[12] */ + TRIG9_IN_CPUSS_DW1_TR_OUT13 = 0x0000091Eu, /* cpuss.dw1_tr_out[13] */ + TRIG9_IN_CPUSS_DW1_TR_OUT14 = 0x0000091Fu, /* cpuss.dw1_tr_out[14] */ + TRIG9_IN_CPUSS_DW1_TR_OUT15 = 0x00000920u /* cpuss.dw1_tr_out[15] */ +} en_trig_input_grp9_t; + +/* Trigger Input Group 10 - Reduces 32 datawire output triggers to 8 signals, used by all except USB */ +typedef enum +{ + TRIG10_IN_CPUSS_ZERO = 0x00000A00u, /* cpuss.zero */ + TRIG10_IN_CPUSS_DW0_TR_OUT0 = 0x00000A01u, /* cpuss.dw0_tr_out[0] */ + TRIG10_IN_CPUSS_DW0_TR_OUT1 = 0x00000A02u, /* cpuss.dw0_tr_out[1] */ + TRIG10_IN_CPUSS_DW0_TR_OUT2 = 0x00000A03u, /* cpuss.dw0_tr_out[2] */ + TRIG10_IN_CPUSS_DW0_TR_OUT3 = 0x00000A04u, /* cpuss.dw0_tr_out[3] */ + TRIG10_IN_CPUSS_DW0_TR_OUT4 = 0x00000A05u, /* cpuss.dw0_tr_out[4] */ + TRIG10_IN_CPUSS_DW0_TR_OUT5 = 0x00000A06u, /* cpuss.dw0_tr_out[5] */ + TRIG10_IN_CPUSS_DW0_TR_OUT6 = 0x00000A07u, /* cpuss.dw0_tr_out[6] */ + TRIG10_IN_CPUSS_DW0_TR_OUT7 = 0x00000A08u, /* cpuss.dw0_tr_out[7] */ + TRIG10_IN_CPUSS_DW0_TR_OUT8 = 0x00000A09u, /* cpuss.dw0_tr_out[8] */ + TRIG10_IN_CPUSS_DW0_TR_OUT9 = 0x00000A0Au, /* cpuss.dw0_tr_out[9] */ + TRIG10_IN_CPUSS_DW0_TR_OUT10 = 0x00000A0Bu, /* cpuss.dw0_tr_out[10] */ + TRIG10_IN_CPUSS_DW0_TR_OUT11 = 0x00000A0Cu, /* cpuss.dw0_tr_out[11] */ + TRIG10_IN_CPUSS_DW0_TR_OUT12 = 0x00000A0Du, /* cpuss.dw0_tr_out[12] */ + TRIG10_IN_CPUSS_DW0_TR_OUT13 = 0x00000A0Eu, /* cpuss.dw0_tr_out[13] */ + TRIG10_IN_CPUSS_DW0_TR_OUT14 = 0x00000A0Fu, /* cpuss.dw0_tr_out[14] */ + TRIG10_IN_CPUSS_DW0_TR_OUT15 = 0x00000A10u, /* cpuss.dw0_tr_out[15] */ + TRIG10_IN_CPUSS_DW1_TR_OUT0 = 0x00000A11u, /* cpuss.dw1_tr_out[0] */ + TRIG10_IN_CPUSS_DW1_TR_OUT1 = 0x00000A12u, /* cpuss.dw1_tr_out[1] */ + TRIG10_IN_CPUSS_DW1_TR_OUT2 = 0x00000A13u, /* cpuss.dw1_tr_out[2] */ + TRIG10_IN_CPUSS_DW1_TR_OUT3 = 0x00000A14u, /* cpuss.dw1_tr_out[3] */ + TRIG10_IN_CPUSS_DW1_TR_OUT4 = 0x00000A15u, /* cpuss.dw1_tr_out[4] */ + TRIG10_IN_CPUSS_DW1_TR_OUT5 = 0x00000A16u, /* cpuss.dw1_tr_out[5] */ + TRIG10_IN_CPUSS_DW1_TR_OUT6 = 0x00000A17u, /* cpuss.dw1_tr_out[6] */ + TRIG10_IN_CPUSS_DW1_TR_OUT7 = 0x00000A18u, /* cpuss.dw1_tr_out[7] */ + TRIG10_IN_CPUSS_DW1_TR_OUT8 = 0x00000A19u, /* cpuss.dw1_tr_out[8] */ + TRIG10_IN_CPUSS_DW1_TR_OUT9 = 0x00000A1Au, /* cpuss.dw1_tr_out[9] */ + TRIG10_IN_CPUSS_DW1_TR_OUT10 = 0x00000A1Bu, /* cpuss.dw1_tr_out[10] */ + TRIG10_IN_CPUSS_DW1_TR_OUT11 = 0x00000A1Cu, /* cpuss.dw1_tr_out[11] */ + TRIG10_IN_CPUSS_DW1_TR_OUT12 = 0x00000A1Du, /* cpuss.dw1_tr_out[12] */ + TRIG10_IN_CPUSS_DW1_TR_OUT13 = 0x00000A1Eu, /* cpuss.dw1_tr_out[13] */ + TRIG10_IN_CPUSS_DW1_TR_OUT14 = 0x00000A1Fu, /* cpuss.dw1_tr_out[14] */ + TRIG10_IN_CPUSS_DW1_TR_OUT15 = 0x00000A20u /* cpuss.dw1_tr_out[15] */ +} en_trig_input_grp10_t; + +/* Trigger Input Group 11 - Reduces 96 tcpwm output triggers to 16 signals, used by all sinks */ +typedef enum +{ + TRIG11_IN_CPUSS_ZERO = 0x00000B00u, /* cpuss.zero */ + TRIG11_IN_TCPWM0_TR_OVERFLOW0 = 0x00000B01u, /* tcpwm[0].tr_overflow[0] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW1 = 0x00000B02u, /* tcpwm[0].tr_overflow[1] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW2 = 0x00000B03u, /* tcpwm[0].tr_overflow[2] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW3 = 0x00000B04u, /* tcpwm[0].tr_overflow[3] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW4 = 0x00000B05u, /* tcpwm[0].tr_overflow[4] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW5 = 0x00000B06u, /* tcpwm[0].tr_overflow[5] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW6 = 0x00000B07u, /* tcpwm[0].tr_overflow[6] */ + TRIG11_IN_TCPWM0_TR_OVERFLOW7 = 0x00000B08u, /* tcpwm[0].tr_overflow[7] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH0 = 0x00000B09u, /* tcpwm[0].tr_compare_match[0] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH1 = 0x00000B0Au, /* tcpwm[0].tr_compare_match[1] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH2 = 0x00000B0Bu, /* tcpwm[0].tr_compare_match[2] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH3 = 0x00000B0Cu, /* tcpwm[0].tr_compare_match[3] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH4 = 0x00000B0Du, /* tcpwm[0].tr_compare_match[4] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH5 = 0x00000B0Eu, /* tcpwm[0].tr_compare_match[5] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH6 = 0x00000B0Fu, /* tcpwm[0].tr_compare_match[6] */ + TRIG11_IN_TCPWM0_TR_COMPARE_MATCH7 = 0x00000B10u, /* tcpwm[0].tr_compare_match[7] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW0 = 0x00000B11u, /* tcpwm[0].tr_underflow[0] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW1 = 0x00000B12u, /* tcpwm[0].tr_underflow[1] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW2 = 0x00000B13u, /* tcpwm[0].tr_underflow[2] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW3 = 0x00000B14u, /* tcpwm[0].tr_underflow[3] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW4 = 0x00000B15u, /* tcpwm[0].tr_underflow[4] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW5 = 0x00000B16u, /* tcpwm[0].tr_underflow[5] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW6 = 0x00000B17u, /* tcpwm[0].tr_underflow[6] */ + TRIG11_IN_TCPWM0_TR_UNDERFLOW7 = 0x00000B18u, /* tcpwm[0].tr_underflow[7] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW0 = 0x00000B19u, /* tcpwm[1].tr_overflow[0] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW1 = 0x00000B1Au, /* tcpwm[1].tr_overflow[1] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW2 = 0x00000B1Bu, /* tcpwm[1].tr_overflow[2] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW3 = 0x00000B1Cu, /* tcpwm[1].tr_overflow[3] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW4 = 0x00000B1Du, /* tcpwm[1].tr_overflow[4] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW5 = 0x00000B1Eu, /* tcpwm[1].tr_overflow[5] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW6 = 0x00000B1Fu, /* tcpwm[1].tr_overflow[6] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW7 = 0x00000B20u, /* tcpwm[1].tr_overflow[7] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW8 = 0x00000B21u, /* tcpwm[1].tr_overflow[8] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW9 = 0x00000B22u, /* tcpwm[1].tr_overflow[9] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW10 = 0x00000B23u, /* tcpwm[1].tr_overflow[10] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW11 = 0x00000B24u, /* tcpwm[1].tr_overflow[11] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW12 = 0x00000B25u, /* tcpwm[1].tr_overflow[12] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW13 = 0x00000B26u, /* tcpwm[1].tr_overflow[13] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW14 = 0x00000B27u, /* tcpwm[1].tr_overflow[14] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW15 = 0x00000B28u, /* tcpwm[1].tr_overflow[15] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW16 = 0x00000B29u, /* tcpwm[1].tr_overflow[16] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW17 = 0x00000B2Au, /* tcpwm[1].tr_overflow[17] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW18 = 0x00000B2Bu, /* tcpwm[1].tr_overflow[18] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW19 = 0x00000B2Cu, /* tcpwm[1].tr_overflow[19] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW20 = 0x00000B2Du, /* tcpwm[1].tr_overflow[20] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW21 = 0x00000B2Eu, /* tcpwm[1].tr_overflow[21] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW22 = 0x00000B2Fu, /* tcpwm[1].tr_overflow[22] */ + TRIG11_IN_TCPWM1_TR_OVERFLOW23 = 0x00000B30u, /* tcpwm[1].tr_overflow[23] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH0 = 0x00000B31u, /* tcpwm[1].tr_compare_match[0] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH1 = 0x00000B32u, /* tcpwm[1].tr_compare_match[1] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH2 = 0x00000B33u, /* tcpwm[1].tr_compare_match[2] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH3 = 0x00000B34u, /* tcpwm[1].tr_compare_match[3] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH4 = 0x00000B35u, /* tcpwm[1].tr_compare_match[4] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH5 = 0x00000B36u, /* tcpwm[1].tr_compare_match[5] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH6 = 0x00000B37u, /* tcpwm[1].tr_compare_match[6] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH7 = 0x00000B38u, /* tcpwm[1].tr_compare_match[7] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH8 = 0x00000B39u, /* tcpwm[1].tr_compare_match[8] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH9 = 0x00000B3Au, /* tcpwm[1].tr_compare_match[9] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH10 = 0x00000B3Bu, /* tcpwm[1].tr_compare_match[10] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH11 = 0x00000B3Cu, /* tcpwm[1].tr_compare_match[11] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH12 = 0x00000B3Du, /* tcpwm[1].tr_compare_match[12] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH13 = 0x00000B3Eu, /* tcpwm[1].tr_compare_match[13] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH14 = 0x00000B3Fu, /* tcpwm[1].tr_compare_match[14] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH15 = 0x00000B40u, /* tcpwm[1].tr_compare_match[15] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH16 = 0x00000B41u, /* tcpwm[1].tr_compare_match[16] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH17 = 0x00000B42u, /* tcpwm[1].tr_compare_match[17] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH18 = 0x00000B43u, /* tcpwm[1].tr_compare_match[18] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH19 = 0x00000B44u, /* tcpwm[1].tr_compare_match[19] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH20 = 0x00000B45u, /* tcpwm[1].tr_compare_match[20] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH21 = 0x00000B46u, /* tcpwm[1].tr_compare_match[21] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH22 = 0x00000B47u, /* tcpwm[1].tr_compare_match[22] */ + TRIG11_IN_TCPWM1_TR_COMPARE_MATCH23 = 0x00000B48u, /* tcpwm[1].tr_compare_match[23] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW0 = 0x00000B49u, /* tcpwm[1].tr_underflow[0] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW1 = 0x00000B4Au, /* tcpwm[1].tr_underflow[1] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW2 = 0x00000B4Bu, /* tcpwm[1].tr_underflow[2] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW3 = 0x00000B4Cu, /* tcpwm[1].tr_underflow[3] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW4 = 0x00000B4Du, /* tcpwm[1].tr_underflow[4] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW5 = 0x00000B4Eu, /* tcpwm[1].tr_underflow[5] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW6 = 0x00000B4Fu, /* tcpwm[1].tr_underflow[6] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW7 = 0x00000B50u, /* tcpwm[1].tr_underflow[7] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW8 = 0x00000B51u, /* tcpwm[1].tr_underflow[8] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW9 = 0x00000B52u, /* tcpwm[1].tr_underflow[9] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW10 = 0x00000B53u, /* tcpwm[1].tr_underflow[10] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW11 = 0x00000B54u, /* tcpwm[1].tr_underflow[11] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW12 = 0x00000B55u, /* tcpwm[1].tr_underflow[12] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW13 = 0x00000B56u, /* tcpwm[1].tr_underflow[13] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW14 = 0x00000B57u, /* tcpwm[1].tr_underflow[14] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW15 = 0x00000B58u, /* tcpwm[1].tr_underflow[15] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW16 = 0x00000B59u, /* tcpwm[1].tr_underflow[16] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW17 = 0x00000B5Au, /* tcpwm[1].tr_underflow[17] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW18 = 0x00000B5Bu, /* tcpwm[1].tr_underflow[18] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW19 = 0x00000B5Cu, /* tcpwm[1].tr_underflow[19] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW20 = 0x00000B5Du, /* tcpwm[1].tr_underflow[20] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW21 = 0x00000B5Eu, /* tcpwm[1].tr_underflow[21] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW22 = 0x00000B5Fu, /* tcpwm[1].tr_underflow[22] */ + TRIG11_IN_TCPWM1_TR_UNDERFLOW23 = 0x00000B60u /* tcpwm[1].tr_underflow[23] */ +} en_trig_input_grp11_t; + +/* Trigger Input Group 12 - Reduces 28 pin input signals to 10 triggers used by all sinks */ +typedef enum +{ + TRIG12_IN_CPUSS_ZERO = 0x00000C00u, /* cpuss.zero */ + TRIG12_IN_PERI_TR_IO_INPUT0 = 0x00000C01u, /* peri.tr_io_input[0] */ + TRIG12_IN_PERI_TR_IO_INPUT1 = 0x00000C02u, /* peri.tr_io_input[1] */ + TRIG12_IN_PERI_TR_IO_INPUT2 = 0x00000C03u, /* peri.tr_io_input[2] */ + TRIG12_IN_PERI_TR_IO_INPUT3 = 0x00000C04u, /* peri.tr_io_input[3] */ + TRIG12_IN_PERI_TR_IO_INPUT4 = 0x00000C05u, /* peri.tr_io_input[4] */ + TRIG12_IN_PERI_TR_IO_INPUT5 = 0x00000C06u, /* peri.tr_io_input[5] */ + TRIG12_IN_PERI_TR_IO_INPUT6 = 0x00000C07u, /* peri.tr_io_input[6] */ + TRIG12_IN_PERI_TR_IO_INPUT7 = 0x00000C08u, /* peri.tr_io_input[7] */ + TRIG12_IN_PERI_TR_IO_INPUT8 = 0x00000C09u, /* peri.tr_io_input[8] */ + TRIG12_IN_PERI_TR_IO_INPUT9 = 0x00000C0Au, /* peri.tr_io_input[9] */ + TRIG12_IN_PERI_TR_IO_INPUT10 = 0x00000C0Bu, /* peri.tr_io_input[10] */ + TRIG12_IN_PERI_TR_IO_INPUT11 = 0x00000C0Cu, /* peri.tr_io_input[11] */ + TRIG12_IN_PERI_TR_IO_INPUT12 = 0x00000C0Du, /* peri.tr_io_input[12] */ + TRIG12_IN_PERI_TR_IO_INPUT13 = 0x00000C0Eu, /* peri.tr_io_input[13] */ + TRIG12_IN_PERI_TR_IO_INPUT14 = 0x00000C0Fu, /* peri.tr_io_input[14] */ + TRIG12_IN_PERI_TR_IO_INPUT15 = 0x00000C10u, /* peri.tr_io_input[15] */ + TRIG12_IN_PERI_TR_IO_INPUT16 = 0x00000C11u, /* peri.tr_io_input[16] */ + TRIG12_IN_PERI_TR_IO_INPUT17 = 0x00000C12u, /* peri.tr_io_input[17] */ + TRIG12_IN_PERI_TR_IO_INPUT18 = 0x00000C13u, /* peri.tr_io_input[18] */ + TRIG12_IN_PERI_TR_IO_INPUT19 = 0x00000C14u, /* peri.tr_io_input[19] */ + TRIG12_IN_PERI_TR_IO_INPUT20 = 0x00000C15u, /* peri.tr_io_input[20] */ + TRIG12_IN_PERI_TR_IO_INPUT21 = 0x00000C16u, /* peri.tr_io_input[21] */ + TRIG12_IN_PERI_TR_IO_INPUT22 = 0x00000C17u, /* peri.tr_io_input[22] */ + TRIG12_IN_PERI_TR_IO_INPUT23 = 0x00000C18u, /* peri.tr_io_input[23] */ + TRIG12_IN_PERI_TR_IO_INPUT24 = 0x00000C19u, /* peri.tr_io_input[24] */ + TRIG12_IN_PERI_TR_IO_INPUT25 = 0x00000C1Au, /* peri.tr_io_input[25] */ + TRIG12_IN_PERI_TR_IO_INPUT26 = 0x00000C1Bu, /* peri.tr_io_input[26] */ + TRIG12_IN_PERI_TR_IO_INPUT27 = 0x00000C1Cu /* peri.tr_io_input[27] */ +} en_trig_input_grp12_t; + +/* Trigger Input Group 13 - Reduces DMA requests to 16+2 outputs used by all sinks */ +typedef enum +{ + TRIG13_IN_CPUSS_ZERO = 0x00000D00u, /* cpuss.zero */ + TRIG13_IN_SCB0_TR_TX_REQ = 0x00000D01u, /* scb[0].tr_tx_req */ + TRIG13_IN_SCB0_TR_RX_REQ = 0x00000D02u, /* scb[0].tr_rx_req */ + TRIG13_IN_SCB1_TR_TX_REQ = 0x00000D03u, /* scb[1].tr_tx_req */ + TRIG13_IN_SCB1_TR_RX_REQ = 0x00000D04u, /* scb[1].tr_rx_req */ + TRIG13_IN_SCB2_TR_TX_REQ = 0x00000D05u, /* scb[2].tr_tx_req */ + TRIG13_IN_SCB2_TR_RX_REQ = 0x00000D06u, /* scb[2].tr_rx_req */ + TRIG13_IN_SCB3_TR_TX_REQ = 0x00000D07u, /* scb[3].tr_tx_req */ + TRIG13_IN_SCB3_TR_RX_REQ = 0x00000D08u, /* scb[3].tr_rx_req */ + TRIG13_IN_SCB4_TR_TX_REQ = 0x00000D09u, /* scb[4].tr_tx_req */ + TRIG13_IN_SCB4_TR_RX_REQ = 0x00000D0Au, /* scb[4].tr_rx_req */ + TRIG13_IN_SCB5_TR_TX_REQ = 0x00000D0Bu, /* scb[5].tr_tx_req */ + TRIG13_IN_SCB5_TR_RX_REQ = 0x00000D0Cu, /* scb[5].tr_rx_req */ + TRIG13_IN_SCB6_TR_TX_REQ = 0x00000D0Du, /* scb[6].tr_tx_req */ + TRIG13_IN_SCB6_TR_RX_REQ = 0x00000D0Eu, /* scb[6].tr_rx_req */ + TRIG13_IN_SCB7_TR_TX_REQ = 0x00000D0Fu, /* scb[7].tr_tx_req */ + TRIG13_IN_SCB7_TR_RX_REQ = 0x00000D10u, /* scb[7].tr_rx_req */ + TRIG13_IN_SCB8_TR_TX_REQ = 0x00000D11u, /* scb[8].tr_tx_req */ + TRIG13_IN_SCB8_TR_RX_REQ = 0x00000D12u, /* scb[8].tr_rx_req */ + TRIG13_IN_AUDIOSS_TR_PDM_RX_REQ = 0x00000D13u, /* audioss.tr_pdm_rx_req */ + TRIG13_IN_AUDIOSS_TR_I2S_TX_REQ = 0x00000D14u, /* audioss.tr_i2s_tx_req */ + TRIG13_IN_AUDIOSS_TR_I2S_RX_REQ = 0x00000D15u, /* audioss.tr_i2s_rx_req */ + TRIG13_IN_SMIF_TR_TX_REQ = 0x00000D16u, /* smif.tr_tx_req */ + TRIG13_IN_SMIF_TR_RX_REQ = 0x00000D17u, /* smif.tr_rx_req */ + TRIG13_IN_USB_DMA_REQ0 = 0x00000D18u, /* usb.dma_req[0] */ + TRIG13_IN_USB_DMA_REQ1 = 0x00000D19u, /* usb.dma_req[1] */ + TRIG13_IN_USB_DMA_REQ2 = 0x00000D1Au, /* usb.dma_req[2] */ + TRIG13_IN_USB_DMA_REQ3 = 0x00000D1Bu, /* usb.dma_req[3] */ + TRIG13_IN_USB_DMA_REQ4 = 0x00000D1Cu, /* usb.dma_req[4] */ + TRIG13_IN_USB_DMA_REQ5 = 0x00000D1Du, /* usb.dma_req[5] */ + TRIG13_IN_USB_DMA_REQ6 = 0x00000D1Eu, /* usb.dma_req[6] */ + TRIG13_IN_USB_DMA_REQ7 = 0x00000D1Fu, /* usb.dma_req[7] */ + TRIG13_IN_CSD_TR_ADC_DONE = 0x00000D20u, /* csd.tr_adc_done */ + TRIG13_IN_CSD_DSI_SENSE_OUT = 0x00000D21u /* csd.dsi_sense_out */ +} en_trig_input_grp13_t; + +/* Trigger Input Group 14 - Reduces general purpose trigger inputs to 8+8 outputs used by all sinks */ +typedef enum +{ + TRIG14_IN_CPUSS_ZERO = 0x00000E00u, /* cpuss.zero */ + TRIG14_IN_UDB_TR_UDB0 = 0x00000E01u, /* udb.tr_udb[0] */ + TRIG14_IN_UDB_TR_UDB1 = 0x00000E02u, /* udb.tr_udb[1] */ + TRIG14_IN_UDB_TR_UDB2 = 0x00000E03u, /* udb.tr_udb[2] */ + TRIG14_IN_UDB_TR_UDB3 = 0x00000E04u, /* udb.tr_udb[3] */ + TRIG14_IN_UDB_TR_UDB4 = 0x00000E05u, /* udb.tr_udb[4] */ + TRIG14_IN_UDB_TR_UDB5 = 0x00000E06u, /* udb.tr_udb[5] */ + TRIG14_IN_UDB_TR_UDB6 = 0x00000E07u, /* udb.tr_udb[6] */ + TRIG14_IN_UDB_TR_UDB7 = 0x00000E08u, /* udb.tr_udb[7] */ + TRIG14_IN_UDB_TR_UDB8 = 0x00000E09u, /* udb.tr_udb[8] */ + TRIG14_IN_UDB_TR_UDB9 = 0x00000E0Au, /* udb.tr_udb[9] */ + TRIG14_IN_UDB_TR_UDB10 = 0x00000E0Bu, /* udb.tr_udb[10] */ + TRIG14_IN_UDB_TR_UDB11 = 0x00000E0Cu, /* udb.tr_udb[11] */ + TRIG14_IN_UDB_TR_UDB12 = 0x00000E0Du, /* udb.tr_udb[12] */ + TRIG14_IN_UDB_TR_UDB13 = 0x00000E0Eu, /* udb.tr_udb[13] */ + TRIG14_IN_UDB_TR_UDB14 = 0x00000E0Fu, /* udb.tr_udb[14] */ + TRIG14_IN_UDB_TR_UDB15 = 0x00000E10u, /* udb.tr_udb[15] */ + TRIG14_IN_UDB_DSI_OUT_TR0 = 0x00000E11u, /* udb.dsi_out_tr[0] */ + TRIG14_IN_UDB_DSI_OUT_TR1 = 0x00000E12u, /* udb.dsi_out_tr[1] */ + TRIG14_IN_CPUSS_CTI_TR_OUT0 = 0x00000E13u, /* cpuss.cti_tr_out[0] */ + TRIG14_IN_CPUSS_CTI_TR_OUT1 = 0x00000E14u, /* cpuss.cti_tr_out[1] */ + TRIG14_IN_PASS_TR_SAR_OUT = 0x00000E15u, /* pass.tr_sar_out */ + TRIG14_IN_PASS_TR_CTDAC_EMPTY = 0x00000E16u, /* pass.tr_ctdac_empty */ + TRIG14_IN_PASS_DSI_CTB_CMP0 = 0x00000E17u, /* pass.dsi_ctb_cmp0 */ + TRIG14_IN_PASS_DSI_CTB_CMP1 = 0x00000E18u, /* pass.dsi_ctb_cmp1 */ + TRIG14_IN_LPCOMP_DSI_COMP0 = 0x00000E19u, /* lpcomp.dsi_comp0 */ + TRIG14_IN_LPCOMP_DSI_COMP1 = 0x00000E1Au, /* lpcomp.dsi_comp1 */ + TRIG14_IN_SCB0_TR_I2C_SCL_FILTERED = 0x00000E1Bu, /* scb[0].tr_i2c_scl_filtered */ + TRIG14_IN_SCB1_TR_I2C_SCL_FILTERED = 0x00000E1Cu, /* scb[1].tr_i2c_scl_filtered */ + TRIG14_IN_SCB2_TR_I2C_SCL_FILTERED = 0x00000E1Du, /* scb[2].tr_i2c_scl_filtered */ + TRIG14_IN_SCB3_TR_I2C_SCL_FILTERED = 0x00000E1Eu, /* scb[3].tr_i2c_scl_filtered */ + TRIG14_IN_SCB4_TR_I2C_SCL_FILTERED = 0x00000E1Fu, /* scb[4].tr_i2c_scl_filtered */ + TRIG14_IN_SCB5_TR_I2C_SCL_FILTERED = 0x00000E20u, /* scb[5].tr_i2c_scl_filtered */ + TRIG14_IN_SCB6_TR_I2C_SCL_FILTERED = 0x00000E21u, /* scb[6].tr_i2c_scl_filtered */ + TRIG14_IN_SCB7_TR_I2C_SCL_FILTERED = 0x00000E22u, /* scb[7].tr_i2c_scl_filtered */ + TRIG14_IN_SCB8_TR_I2C_SCL_FILTERED = 0x00000E23u, /* scb[8].tr_i2c_scl_filtered */ + TRIG14_IN_CPUSS_TR_FAULT0 = 0x00000E24u, /* cpuss.tr_fault[0] */ + TRIG14_IN_CPUSS_TR_FAULT1 = 0x00000E25u /* cpuss.tr_fault[1] */ +} en_trig_input_grp14_t; + +/* Trigger Group Outputs */ +/* Trigger Output Group 0 - DMA Request Assignments */ +typedef enum +{ + TRIG0_OUT_CPUSS_DW0_TR_IN0 = 0x40000000u, /* cpuss.dw0_tr_in[0] */ + TRIG0_OUT_CPUSS_DW0_TR_IN1 = 0x40000001u, /* cpuss.dw0_tr_in[1] */ + TRIG0_OUT_CPUSS_DW0_TR_IN2 = 0x40000002u, /* cpuss.dw0_tr_in[2] */ + TRIG0_OUT_CPUSS_DW0_TR_IN3 = 0x40000003u, /* cpuss.dw0_tr_in[3] */ + TRIG0_OUT_CPUSS_DW0_TR_IN4 = 0x40000004u, /* cpuss.dw0_tr_in[4] */ + TRIG0_OUT_CPUSS_DW0_TR_IN5 = 0x40000005u, /* cpuss.dw0_tr_in[5] */ + TRIG0_OUT_CPUSS_DW0_TR_IN6 = 0x40000006u, /* cpuss.dw0_tr_in[6] */ + TRIG0_OUT_CPUSS_DW0_TR_IN7 = 0x40000007u, /* cpuss.dw0_tr_in[7] */ + TRIG0_OUT_CPUSS_DW0_TR_IN8 = 0x40000008u, /* cpuss.dw0_tr_in[8] */ + TRIG0_OUT_CPUSS_DW0_TR_IN9 = 0x40000009u, /* cpuss.dw0_tr_in[9] */ + TRIG0_OUT_CPUSS_DW0_TR_IN10 = 0x4000000Au, /* cpuss.dw0_tr_in[10] */ + TRIG0_OUT_CPUSS_DW0_TR_IN11 = 0x4000000Bu, /* cpuss.dw0_tr_in[11] */ + TRIG0_OUT_CPUSS_DW0_TR_IN12 = 0x4000000Cu, /* cpuss.dw0_tr_in[12] */ + TRIG0_OUT_CPUSS_DW0_TR_IN13 = 0x4000000Du, /* cpuss.dw0_tr_in[13] */ + TRIG0_OUT_CPUSS_DW0_TR_IN14 = 0x4000000Eu, /* cpuss.dw0_tr_in[14] */ + TRIG0_OUT_CPUSS_DW0_TR_IN15 = 0x4000000Fu /* cpuss.dw0_tr_in[15] */ +} en_trig_output_grp0_t; + +/* Trigger Output Group 1 - DMA Request Assignments */ +typedef enum +{ + TRIG1_OUT_CPUSS_DW1_TR_IN0 = 0x40000100u, /* cpuss.dw1_tr_in[0] */ + TRIG1_OUT_CPUSS_DW1_TR_IN1 = 0x40000101u, /* cpuss.dw1_tr_in[1] */ + TRIG1_OUT_CPUSS_DW1_TR_IN2 = 0x40000102u, /* cpuss.dw1_tr_in[2] */ + TRIG1_OUT_CPUSS_DW1_TR_IN3 = 0x40000103u, /* cpuss.dw1_tr_in[3] */ + TRIG1_OUT_CPUSS_DW1_TR_IN4 = 0x40000104u, /* cpuss.dw1_tr_in[4] */ + TRIG1_OUT_CPUSS_DW1_TR_IN5 = 0x40000105u, /* cpuss.dw1_tr_in[5] */ + TRIG1_OUT_CPUSS_DW1_TR_IN6 = 0x40000106u, /* cpuss.dw1_tr_in[6] */ + TRIG1_OUT_CPUSS_DW1_TR_IN7 = 0x40000107u, /* cpuss.dw1_tr_in[7] */ + TRIG1_OUT_CPUSS_DW1_TR_IN8 = 0x40000108u, /* cpuss.dw1_tr_in[8] */ + TRIG1_OUT_CPUSS_DW1_TR_IN9 = 0x40000109u, /* cpuss.dw1_tr_in[9] */ + TRIG1_OUT_CPUSS_DW1_TR_IN10 = 0x4000010Au, /* cpuss.dw1_tr_in[10] */ + TRIG1_OUT_CPUSS_DW1_TR_IN11 = 0x4000010Bu, /* cpuss.dw1_tr_in[11] */ + TRIG1_OUT_CPUSS_DW1_TR_IN12 = 0x4000010Cu, /* cpuss.dw1_tr_in[12] */ + TRIG1_OUT_CPUSS_DW1_TR_IN13 = 0x4000010Du, /* cpuss.dw1_tr_in[13] */ + TRIG1_OUT_CPUSS_DW1_TR_IN14 = 0x4000010Eu, /* cpuss.dw1_tr_in[14] */ + TRIG1_OUT_CPUSS_DW1_TR_IN15 = 0x4000010Fu /* cpuss.dw1_tr_in[15] */ +} en_trig_output_grp1_t; + +/* Trigger Output Group 2 - TCPWM trigger inputs */ +typedef enum +{ + TRIG2_OUT_TCPWM0_TR_IN0 = 0x40000200u, /* tcpwm[0].tr_in[0] */ + TRIG2_OUT_TCPWM0_TR_IN1 = 0x40000201u, /* tcpwm[0].tr_in[1] */ + TRIG2_OUT_TCPWM0_TR_IN2 = 0x40000202u, /* tcpwm[0].tr_in[2] */ + TRIG2_OUT_TCPWM0_TR_IN3 = 0x40000203u, /* tcpwm[0].tr_in[3] */ + TRIG2_OUT_TCPWM0_TR_IN4 = 0x40000204u, /* tcpwm[0].tr_in[4] */ + TRIG2_OUT_TCPWM0_TR_IN5 = 0x40000205u, /* tcpwm[0].tr_in[5] */ + TRIG2_OUT_TCPWM0_TR_IN6 = 0x40000206u, /* tcpwm[0].tr_in[6] */ + TRIG2_OUT_TCPWM0_TR_IN7 = 0x40000207u, /* tcpwm[0].tr_in[7] */ + TRIG2_OUT_TCPWM0_TR_IN8 = 0x40000208u, /* tcpwm[0].tr_in[8] */ + TRIG2_OUT_TCPWM0_TR_IN9 = 0x40000209u, /* tcpwm[0].tr_in[9] */ + TRIG2_OUT_TCPWM0_TR_IN10 = 0x4000020Au, /* tcpwm[0].tr_in[10] */ + TRIG2_OUT_TCPWM0_TR_IN11 = 0x4000020Bu, /* tcpwm[0].tr_in[11] */ + TRIG2_OUT_TCPWM0_TR_IN12 = 0x4000020Cu, /* tcpwm[0].tr_in[12] */ + TRIG2_OUT_TCPWM0_TR_IN13 = 0x4000020Du /* tcpwm[0].tr_in[13] */ +} en_trig_output_grp2_t; + +/* Trigger Output Group 3 - TCPWM trigger inputs */ +typedef enum +{ + TRIG3_OUT_TCPWM1_TR_IN0 = 0x40000300u, /* tcpwm[1].tr_in[0] */ + TRIG3_OUT_TCPWM1_TR_IN1 = 0x40000301u, /* tcpwm[1].tr_in[1] */ + TRIG3_OUT_TCPWM1_TR_IN2 = 0x40000302u, /* tcpwm[1].tr_in[2] */ + TRIG3_OUT_TCPWM1_TR_IN3 = 0x40000303u, /* tcpwm[1].tr_in[3] */ + TRIG3_OUT_TCPWM1_TR_IN4 = 0x40000304u, /* tcpwm[1].tr_in[4] */ + TRIG3_OUT_TCPWM1_TR_IN5 = 0x40000305u, /* tcpwm[1].tr_in[5] */ + TRIG3_OUT_TCPWM1_TR_IN6 = 0x40000306u, /* tcpwm[1].tr_in[6] */ + TRIG3_OUT_TCPWM1_TR_IN7 = 0x40000307u, /* tcpwm[1].tr_in[7] */ + TRIG3_OUT_TCPWM1_TR_IN8 = 0x40000308u, /* tcpwm[1].tr_in[8] */ + TRIG3_OUT_TCPWM1_TR_IN9 = 0x40000309u, /* tcpwm[1].tr_in[9] */ + TRIG3_OUT_TCPWM1_TR_IN10 = 0x4000030Au, /* tcpwm[1].tr_in[10] */ + TRIG3_OUT_TCPWM1_TR_IN11 = 0x4000030Bu, /* tcpwm[1].tr_in[11] */ + TRIG3_OUT_TCPWM1_TR_IN12 = 0x4000030Cu, /* tcpwm[1].tr_in[12] */ + TRIG3_OUT_TCPWM1_TR_IN13 = 0x4000030Du /* tcpwm[1].tr_in[13] */ +} en_trig_output_grp3_t; + +/* Trigger Output Group 4 - PROFILE trigger multiplexer */ +typedef enum +{ + TRIG4_OUT_PROFILE_TR_START = 0x40000400u, /* profile.tr_start */ + TRIG4_OUT_PROFILE_TR_STOP = 0x40000401u /* profile.tr_stop */ +} en_trig_output_grp4_t; + +/* Trigger Output Group 5 - CPUSS.CTI trigger multiplexer */ +typedef enum +{ + TRIG5_OUT_CPUSS_CTI_TR_IN0 = 0x40000500u, /* cpuss.cti_tr_in[0] */ + TRIG5_OUT_CPUSS_CTI_TR_IN1 = 0x40000501u /* cpuss.cti_tr_in[1] */ +} en_trig_output_grp5_t; + +/* Trigger Output Group 6 - PASS trigger multiplexer */ +typedef enum +{ + TRIG6_OUT_PASS_TR_SAR_IN = 0x40000600u /* pass.tr_sar_in */ +} en_trig_output_grp6_t; + +/* Trigger Output Group 7 - UDB general purpose trigger multiplexer */ +typedef enum +{ + TRIG7_OUT_UDB_TR_IN0 = 0x40000700u, /* udb.tr_in[0] */ + TRIG7_OUT_UDB_TR_IN1 = 0x40000701u /* udb.tr_in[1] */ +} en_trig_output_grp7_t; + +/* Trigger Output Group 8 - Trigger multiplexer to pins */ +typedef enum +{ + TRIG8_OUT_PERI_TR_IO_OUTPUT0 = 0x40000800u, /* peri.tr_io_output[0] */ + TRIG8_OUT_PERI_TR_IO_OUTPUT1 = 0x40000801u /* peri.tr_io_output[1] */ +} en_trig_output_grp8_t; + +/* Trigger Output Group 9 - Feedback mux to USB DMA interface */ +typedef enum +{ + TRIG9_OUT_USB_DMA_BURSTEND0 = 0x40000900u, /* usb.dma_burstend[0] */ + TRIG9_OUT_USB_DMA_BURSTEND1 = 0x40000901u, /* usb.dma_burstend[1] */ + TRIG9_OUT_USB_DMA_BURSTEND2 = 0x40000902u, /* usb.dma_burstend[2] */ + TRIG9_OUT_USB_DMA_BURSTEND3 = 0x40000903u, /* usb.dma_burstend[3] */ + TRIG9_OUT_USB_DMA_BURSTEND4 = 0x40000904u, /* usb.dma_burstend[4] */ + TRIG9_OUT_USB_DMA_BURSTEND5 = 0x40000905u, /* usb.dma_burstend[5] */ + TRIG9_OUT_USB_DMA_BURSTEND6 = 0x40000906u, /* usb.dma_burstend[6] */ + TRIG9_OUT_USB_DMA_BURSTEND7 = 0x40000907u /* usb.dma_burstend[7] */ +} en_trig_output_grp9_t; + +/* Trigger Output Group 10 - Reduces 32 datawire output triggers to 8 signals, used by all except USB */ +typedef enum +{ + TRIG10_OUT_UDB_TR_DW_ACK0 = 0x40000A00u, /* udb.tr_dw_ack[0] */ + TRIG10_OUT_TR_GROUP0_INPUT1 = 0x40000A00u, /* tr_group[0].input[1] */ + TRIG10_OUT_TR_GROUP1_INPUT1 = 0x40000A00u, /* tr_group[1].input[1] */ + TRIG10_OUT_TR_GROUP2_INPUT1 = 0x40000A00u, /* tr_group[2].input[1] */ + TRIG10_OUT_TR_GROUP3_INPUT1 = 0x40000A00u, /* tr_group[3].input[1] */ + TRIG10_OUT_TR_GROUP4_INPUT1 = 0x40000A00u, /* tr_group[4].input[1] */ + TRIG10_OUT_TR_GROUP5_INPUT1 = 0x40000A00u, /* tr_group[5].input[1] */ + TRIG10_OUT_TR_GROUP6_INPUT1 = 0x40000A00u, /* tr_group[6].input[1] */ + TRIG10_OUT_TR_GROUP7_INPUT1 = 0x40000A00u, /* tr_group[7].input[1] */ + TRIG10_OUT_TR_GROUP8_INPUT1 = 0x40000A00u, /* tr_group[8].input[1] */ + TRIG10_OUT_UDB_TR_DW_ACK1 = 0x40000A01u, /* udb.tr_dw_ack[1] */ + TRIG10_OUT_TR_GROUP0_INPUT2 = 0x40000A01u, /* tr_group[0].input[2] */ + TRIG10_OUT_TR_GROUP1_INPUT2 = 0x40000A01u, /* tr_group[1].input[2] */ + TRIG10_OUT_TR_GROUP2_INPUT2 = 0x40000A01u, /* tr_group[2].input[2] */ + TRIG10_OUT_TR_GROUP3_INPUT2 = 0x40000A01u, /* tr_group[3].input[2] */ + TRIG10_OUT_TR_GROUP4_INPUT2 = 0x40000A01u, /* tr_group[4].input[2] */ + TRIG10_OUT_TR_GROUP5_INPUT2 = 0x40000A01u, /* tr_group[5].input[2] */ + TRIG10_OUT_TR_GROUP6_INPUT2 = 0x40000A01u, /* tr_group[6].input[2] */ + TRIG10_OUT_TR_GROUP7_INPUT2 = 0x40000A01u, /* tr_group[7].input[2] */ + TRIG10_OUT_TR_GROUP8_INPUT2 = 0x40000A01u, /* tr_group[8].input[2] */ + TRIG10_OUT_UDB_TR_DW_ACK2 = 0x40000A02u, /* udb.tr_dw_ack[2] */ + TRIG10_OUT_TR_GROUP0_INPUT3 = 0x40000A02u, /* tr_group[0].input[3] */ + TRIG10_OUT_TR_GROUP1_INPUT3 = 0x40000A02u, /* tr_group[1].input[3] */ + TRIG10_OUT_TR_GROUP2_INPUT3 = 0x40000A02u, /* tr_group[2].input[3] */ + TRIG10_OUT_TR_GROUP3_INPUT3 = 0x40000A02u, /* tr_group[3].input[3] */ + TRIG10_OUT_TR_GROUP4_INPUT3 = 0x40000A02u, /* tr_group[4].input[3] */ + TRIG10_OUT_TR_GROUP5_INPUT3 = 0x40000A02u, /* tr_group[5].input[3] */ + TRIG10_OUT_TR_GROUP6_INPUT3 = 0x40000A02u, /* tr_group[6].input[3] */ + TRIG10_OUT_TR_GROUP7_INPUT3 = 0x40000A02u, /* tr_group[7].input[3] */ + TRIG10_OUT_TR_GROUP8_INPUT3 = 0x40000A02u, /* tr_group[8].input[3] */ + TRIG10_OUT_UDB_TR_DW_ACK3 = 0x40000A03u, /* udb.tr_dw_ack[3] */ + TRIG10_OUT_TR_GROUP0_INPUT4 = 0x40000A03u, /* tr_group[0].input[4] */ + TRIG10_OUT_TR_GROUP1_INPUT4 = 0x40000A03u, /* tr_group[1].input[4] */ + TRIG10_OUT_TR_GROUP2_INPUT4 = 0x40000A03u, /* tr_group[2].input[4] */ + TRIG10_OUT_TR_GROUP3_INPUT4 = 0x40000A03u, /* tr_group[3].input[4] */ + TRIG10_OUT_TR_GROUP4_INPUT4 = 0x40000A03u, /* tr_group[4].input[4] */ + TRIG10_OUT_TR_GROUP5_INPUT4 = 0x40000A03u, /* tr_group[5].input[4] */ + TRIG10_OUT_TR_GROUP6_INPUT4 = 0x40000A03u, /* tr_group[6].input[4] */ + TRIG10_OUT_TR_GROUP7_INPUT4 = 0x40000A03u, /* tr_group[7].input[4] */ + TRIG10_OUT_TR_GROUP8_INPUT4 = 0x40000A03u, /* tr_group[8].input[4] */ + TRIG10_OUT_UDB_TR_DW_ACK4 = 0x40000A04u, /* udb.tr_dw_ack[4] */ + TRIG10_OUT_TR_GROUP0_INPUT5 = 0x40000A04u, /* tr_group[0].input[5] */ + TRIG10_OUT_TR_GROUP1_INPUT5 = 0x40000A04u, /* tr_group[1].input[5] */ + TRIG10_OUT_TR_GROUP2_INPUT5 = 0x40000A04u, /* tr_group[2].input[5] */ + TRIG10_OUT_TR_GROUP3_INPUT5 = 0x40000A04u, /* tr_group[3].input[5] */ + TRIG10_OUT_TR_GROUP4_INPUT5 = 0x40000A04u, /* tr_group[4].input[5] */ + TRIG10_OUT_TR_GROUP5_INPUT5 = 0x40000A04u, /* tr_group[5].input[5] */ + TRIG10_OUT_TR_GROUP6_INPUT5 = 0x40000A04u, /* tr_group[6].input[5] */ + TRIG10_OUT_TR_GROUP7_INPUT5 = 0x40000A04u, /* tr_group[7].input[5] */ + TRIG10_OUT_TR_GROUP8_INPUT5 = 0x40000A04u, /* tr_group[8].input[5] */ + TRIG10_OUT_UDB_TR_DW_ACK5 = 0x40000A05u, /* udb.tr_dw_ack[5] */ + TRIG10_OUT_TR_GROUP0_INPUT6 = 0x40000A05u, /* tr_group[0].input[6] */ + TRIG10_OUT_TR_GROUP1_INPUT6 = 0x40000A05u, /* tr_group[1].input[6] */ + TRIG10_OUT_TR_GROUP2_INPUT6 = 0x40000A05u, /* tr_group[2].input[6] */ + TRIG10_OUT_TR_GROUP3_INPUT6 = 0x40000A05u, /* tr_group[3].input[6] */ + TRIG10_OUT_TR_GROUP4_INPUT6 = 0x40000A05u, /* tr_group[4].input[6] */ + TRIG10_OUT_TR_GROUP5_INPUT6 = 0x40000A05u, /* tr_group[5].input[6] */ + TRIG10_OUT_TR_GROUP6_INPUT6 = 0x40000A05u, /* tr_group[6].input[6] */ + TRIG10_OUT_TR_GROUP7_INPUT6 = 0x40000A05u, /* tr_group[7].input[6] */ + TRIG10_OUT_TR_GROUP8_INPUT6 = 0x40000A05u, /* tr_group[8].input[6] */ + TRIG10_OUT_UDB_TR_DW_ACK6 = 0x40000A06u, /* udb.tr_dw_ack[6] */ + TRIG10_OUT_TR_GROUP0_INPUT7 = 0x40000A06u, /* tr_group[0].input[7] */ + TRIG10_OUT_TR_GROUP1_INPUT7 = 0x40000A06u, /* tr_group[1].input[7] */ + TRIG10_OUT_TR_GROUP2_INPUT7 = 0x40000A06u, /* tr_group[2].input[7] */ + TRIG10_OUT_TR_GROUP3_INPUT7 = 0x40000A06u, /* tr_group[3].input[7] */ + TRIG10_OUT_TR_GROUP4_INPUT7 = 0x40000A06u, /* tr_group[4].input[7] */ + TRIG10_OUT_TR_GROUP5_INPUT7 = 0x40000A06u, /* tr_group[5].input[7] */ + TRIG10_OUT_TR_GROUP6_INPUT7 = 0x40000A06u, /* tr_group[6].input[7] */ + TRIG10_OUT_TR_GROUP7_INPUT7 = 0x40000A06u, /* tr_group[7].input[7] */ + TRIG10_OUT_TR_GROUP8_INPUT7 = 0x40000A06u, /* tr_group[8].input[7] */ + TRIG10_OUT_UDB_TR_DW_ACK7 = 0x40000A07u, /* udb.tr_dw_ack[7] */ + TRIG10_OUT_TR_GROUP0_INPUT8 = 0x40000A07u, /* tr_group[0].input[8] */ + TRIG10_OUT_TR_GROUP1_INPUT8 = 0x40000A07u, /* tr_group[1].input[8] */ + TRIG10_OUT_TR_GROUP2_INPUT8 = 0x40000A07u, /* tr_group[2].input[8] */ + TRIG10_OUT_TR_GROUP3_INPUT8 = 0x40000A07u, /* tr_group[3].input[8] */ + TRIG10_OUT_TR_GROUP4_INPUT8 = 0x40000A07u, /* tr_group[4].input[8] */ + TRIG10_OUT_TR_GROUP5_INPUT8 = 0x40000A07u, /* tr_group[5].input[8] */ + TRIG10_OUT_TR_GROUP6_INPUT8 = 0x40000A07u, /* tr_group[6].input[8] */ + TRIG10_OUT_TR_GROUP7_INPUT8 = 0x40000A07u, /* tr_group[7].input[8] */ + TRIG10_OUT_TR_GROUP8_INPUT8 = 0x40000A07u /* tr_group[8].input[8] */ +} en_trig_output_grp10_t; + +/* Trigger Output Group 11 - Reduces 96 tcpwm output triggers to 16 signals, used by all sinks */ +typedef enum +{ + TRIG11_OUT_TR_GROUP0_INPUT9 = 0x40000B00u, /* tr_group[0].input[9] */ + TRIG11_OUT_TR_GROUP1_INPUT9 = 0x40000B00u, /* tr_group[1].input[9] */ + TRIG11_OUT_TR_GROUP2_INPUT9 = 0x40000B00u, /* tr_group[2].input[9] */ + TRIG11_OUT_TR_GROUP3_INPUT9 = 0x40000B00u, /* tr_group[3].input[9] */ + TRIG11_OUT_TR_GROUP4_INPUT9 = 0x40000B00u, /* tr_group[4].input[9] */ + TRIG11_OUT_TR_GROUP5_INPUT9 = 0x40000B00u, /* tr_group[5].input[9] */ + TRIG11_OUT_TR_GROUP6_INPUT9 = 0x40000B00u, /* tr_group[6].input[9] */ + TRIG11_OUT_TR_GROUP7_INPUT9 = 0x40000B00u, /* tr_group[7].input[9] */ + TRIG11_OUT_TR_GROUP8_INPUT9 = 0x40000B00u, /* tr_group[8].input[9] */ + TRIG11_OUT_TR_GROUP0_INPUT10 = 0x40000B01u, /* tr_group[0].input[10] */ + TRIG11_OUT_TR_GROUP1_INPUT10 = 0x40000B01u, /* tr_group[1].input[10] */ + TRIG11_OUT_TR_GROUP2_INPUT10 = 0x40000B01u, /* tr_group[2].input[10] */ + TRIG11_OUT_TR_GROUP3_INPUT10 = 0x40000B01u, /* tr_group[3].input[10] */ + TRIG11_OUT_TR_GROUP4_INPUT10 = 0x40000B01u, /* tr_group[4].input[10] */ + TRIG11_OUT_TR_GROUP5_INPUT10 = 0x40000B01u, /* tr_group[5].input[10] */ + TRIG11_OUT_TR_GROUP6_INPUT10 = 0x40000B01u, /* tr_group[6].input[10] */ + TRIG11_OUT_TR_GROUP7_INPUT10 = 0x40000B01u, /* tr_group[7].input[10] */ + TRIG11_OUT_TR_GROUP8_INPUT10 = 0x40000B01u, /* tr_group[8].input[10] */ + TRIG11_OUT_TR_GROUP0_INPUT11 = 0x40000B02u, /* tr_group[0].input[11] */ + TRIG11_OUT_TR_GROUP1_INPUT11 = 0x40000B02u, /* tr_group[1].input[11] */ + TRIG11_OUT_TR_GROUP2_INPUT11 = 0x40000B02u, /* tr_group[2].input[11] */ + TRIG11_OUT_TR_GROUP3_INPUT11 = 0x40000B02u, /* tr_group[3].input[11] */ + TRIG11_OUT_TR_GROUP4_INPUT11 = 0x40000B02u, /* tr_group[4].input[11] */ + TRIG11_OUT_TR_GROUP5_INPUT11 = 0x40000B02u, /* tr_group[5].input[11] */ + TRIG11_OUT_TR_GROUP6_INPUT11 = 0x40000B02u, /* tr_group[6].input[11] */ + TRIG11_OUT_TR_GROUP7_INPUT11 = 0x40000B02u, /* tr_group[7].input[11] */ + TRIG11_OUT_TR_GROUP8_INPUT11 = 0x40000B02u, /* tr_group[8].input[11] */ + TRIG11_OUT_TR_GROUP0_INPUT12 = 0x40000B03u, /* tr_group[0].input[12] */ + TRIG11_OUT_TR_GROUP1_INPUT12 = 0x40000B03u, /* tr_group[1].input[12] */ + TRIG11_OUT_TR_GROUP2_INPUT12 = 0x40000B03u, /* tr_group[2].input[12] */ + TRIG11_OUT_TR_GROUP3_INPUT12 = 0x40000B03u, /* tr_group[3].input[12] */ + TRIG11_OUT_TR_GROUP4_INPUT12 = 0x40000B03u, /* tr_group[4].input[12] */ + TRIG11_OUT_TR_GROUP5_INPUT12 = 0x40000B03u, /* tr_group[5].input[12] */ + TRIG11_OUT_TR_GROUP6_INPUT12 = 0x40000B03u, /* tr_group[6].input[12] */ + TRIG11_OUT_TR_GROUP7_INPUT12 = 0x40000B03u, /* tr_group[7].input[12] */ + TRIG11_OUT_TR_GROUP8_INPUT12 = 0x40000B03u, /* tr_group[8].input[12] */ + TRIG11_OUT_TR_GROUP0_INPUT13 = 0x40000B04u, /* tr_group[0].input[13] */ + TRIG11_OUT_TR_GROUP1_INPUT13 = 0x40000B04u, /* tr_group[1].input[13] */ + TRIG11_OUT_TR_GROUP2_INPUT13 = 0x40000B04u, /* tr_group[2].input[13] */ + TRIG11_OUT_TR_GROUP3_INPUT13 = 0x40000B04u, /* tr_group[3].input[13] */ + TRIG11_OUT_TR_GROUP4_INPUT13 = 0x40000B04u, /* tr_group[4].input[13] */ + TRIG11_OUT_TR_GROUP5_INPUT13 = 0x40000B04u, /* tr_group[5].input[13] */ + TRIG11_OUT_TR_GROUP6_INPUT13 = 0x40000B04u, /* tr_group[6].input[13] */ + TRIG11_OUT_TR_GROUP7_INPUT13 = 0x40000B04u, /* tr_group[7].input[13] */ + TRIG11_OUT_TR_GROUP8_INPUT13 = 0x40000B04u, /* tr_group[8].input[13] */ + TRIG11_OUT_TR_GROUP0_INPUT14 = 0x40000B05u, /* tr_group[0].input[14] */ + TRIG11_OUT_TR_GROUP1_INPUT14 = 0x40000B05u, /* tr_group[1].input[14] */ + TRIG11_OUT_TR_GROUP2_INPUT14 = 0x40000B05u, /* tr_group[2].input[14] */ + TRIG11_OUT_TR_GROUP3_INPUT14 = 0x40000B05u, /* tr_group[3].input[14] */ + TRIG11_OUT_TR_GROUP4_INPUT14 = 0x40000B05u, /* tr_group[4].input[14] */ + TRIG11_OUT_TR_GROUP5_INPUT14 = 0x40000B05u, /* tr_group[5].input[14] */ + TRIG11_OUT_TR_GROUP6_INPUT14 = 0x40000B05u, /* tr_group[6].input[14] */ + TRIG11_OUT_TR_GROUP7_INPUT14 = 0x40000B05u, /* tr_group[7].input[14] */ + TRIG11_OUT_TR_GROUP8_INPUT14 = 0x40000B05u, /* tr_group[8].input[14] */ + TRIG11_OUT_TR_GROUP0_INPUT15 = 0x40000B06u, /* tr_group[0].input[15] */ + TRIG11_OUT_TR_GROUP1_INPUT15 = 0x40000B06u, /* tr_group[1].input[15] */ + TRIG11_OUT_TR_GROUP2_INPUT15 = 0x40000B06u, /* tr_group[2].input[15] */ + TRIG11_OUT_TR_GROUP3_INPUT15 = 0x40000B06u, /* tr_group[3].input[15] */ + TRIG11_OUT_TR_GROUP4_INPUT15 = 0x40000B06u, /* tr_group[4].input[15] */ + TRIG11_OUT_TR_GROUP5_INPUT15 = 0x40000B06u, /* tr_group[5].input[15] */ + TRIG11_OUT_TR_GROUP6_INPUT15 = 0x40000B06u, /* tr_group[6].input[15] */ + TRIG11_OUT_TR_GROUP7_INPUT15 = 0x40000B06u, /* tr_group[7].input[15] */ + TRIG11_OUT_TR_GROUP8_INPUT15 = 0x40000B06u, /* tr_group[8].input[15] */ + TRIG11_OUT_TR_GROUP0_INPUT16 = 0x40000B07u, /* tr_group[0].input[16] */ + TRIG11_OUT_TR_GROUP1_INPUT16 = 0x40000B07u, /* tr_group[1].input[16] */ + TRIG11_OUT_TR_GROUP2_INPUT16 = 0x40000B07u, /* tr_group[2].input[16] */ + TRIG11_OUT_TR_GROUP3_INPUT16 = 0x40000B07u, /* tr_group[3].input[16] */ + TRIG11_OUT_TR_GROUP4_INPUT16 = 0x40000B07u, /* tr_group[4].input[16] */ + TRIG11_OUT_TR_GROUP5_INPUT16 = 0x40000B07u, /* tr_group[5].input[16] */ + TRIG11_OUT_TR_GROUP6_INPUT16 = 0x40000B07u, /* tr_group[6].input[16] */ + TRIG11_OUT_TR_GROUP7_INPUT16 = 0x40000B07u, /* tr_group[7].input[16] */ + TRIG11_OUT_TR_GROUP8_INPUT16 = 0x40000B07u, /* tr_group[8].input[16] */ + TRIG11_OUT_TR_GROUP0_INPUT17 = 0x40000B08u, /* tr_group[0].input[17] */ + TRIG11_OUT_TR_GROUP1_INPUT17 = 0x40000B08u, /* tr_group[1].input[17] */ + TRIG11_OUT_TR_GROUP2_INPUT17 = 0x40000B08u, /* tr_group[2].input[17] */ + TRIG11_OUT_TR_GROUP3_INPUT17 = 0x40000B08u, /* tr_group[3].input[17] */ + TRIG11_OUT_TR_GROUP4_INPUT17 = 0x40000B08u, /* tr_group[4].input[17] */ + TRIG11_OUT_TR_GROUP5_INPUT17 = 0x40000B08u, /* tr_group[5].input[17] */ + TRIG11_OUT_TR_GROUP6_INPUT17 = 0x40000B08u, /* tr_group[6].input[17] */ + TRIG11_OUT_TR_GROUP7_INPUT17 = 0x40000B08u, /* tr_group[7].input[17] */ + TRIG11_OUT_TR_GROUP8_INPUT17 = 0x40000B08u, /* tr_group[8].input[17] */ + TRIG11_OUT_TR_GROUP0_INPUT18 = 0x40000B09u, /* tr_group[0].input[18] */ + TRIG11_OUT_TR_GROUP1_INPUT18 = 0x40000B09u, /* tr_group[1].input[18] */ + TRIG11_OUT_TR_GROUP2_INPUT18 = 0x40000B09u, /* tr_group[2].input[18] */ + TRIG11_OUT_TR_GROUP3_INPUT18 = 0x40000B09u, /* tr_group[3].input[18] */ + TRIG11_OUT_TR_GROUP4_INPUT18 = 0x40000B09u, /* tr_group[4].input[18] */ + TRIG11_OUT_TR_GROUP5_INPUT18 = 0x40000B09u, /* tr_group[5].input[18] */ + TRIG11_OUT_TR_GROUP6_INPUT18 = 0x40000B09u, /* tr_group[6].input[18] */ + TRIG11_OUT_TR_GROUP7_INPUT18 = 0x40000B09u, /* tr_group[7].input[18] */ + TRIG11_OUT_TR_GROUP8_INPUT18 = 0x40000B09u, /* tr_group[8].input[18] */ + TRIG11_OUT_TR_GROUP0_INPUT19 = 0x40000B0Au, /* tr_group[0].input[19] */ + TRIG11_OUT_TR_GROUP1_INPUT19 = 0x40000B0Au, /* tr_group[1].input[19] */ + TRIG11_OUT_TR_GROUP2_INPUT19 = 0x40000B0Au, /* tr_group[2].input[19] */ + TRIG11_OUT_TR_GROUP3_INPUT19 = 0x40000B0Au, /* tr_group[3].input[19] */ + TRIG11_OUT_TR_GROUP4_INPUT19 = 0x40000B0Au, /* tr_group[4].input[19] */ + TRIG11_OUT_TR_GROUP5_INPUT19 = 0x40000B0Au, /* tr_group[5].input[19] */ + TRIG11_OUT_TR_GROUP6_INPUT19 = 0x40000B0Au, /* tr_group[6].input[19] */ + TRIG11_OUT_TR_GROUP7_INPUT19 = 0x40000B0Au, /* tr_group[7].input[19] */ + TRIG11_OUT_TR_GROUP8_INPUT19 = 0x40000B0Au, /* tr_group[8].input[19] */ + TRIG11_OUT_TR_GROUP0_INPUT20 = 0x40000B0Bu, /* tr_group[0].input[20] */ + TRIG11_OUT_TR_GROUP1_INPUT20 = 0x40000B0Bu, /* tr_group[1].input[20] */ + TRIG11_OUT_TR_GROUP2_INPUT20 = 0x40000B0Bu, /* tr_group[2].input[20] */ + TRIG11_OUT_TR_GROUP3_INPUT20 = 0x40000B0Bu, /* tr_group[3].input[20] */ + TRIG11_OUT_TR_GROUP4_INPUT20 = 0x40000B0Bu, /* tr_group[4].input[20] */ + TRIG11_OUT_TR_GROUP5_INPUT20 = 0x40000B0Bu, /* tr_group[5].input[20] */ + TRIG11_OUT_TR_GROUP6_INPUT20 = 0x40000B0Bu, /* tr_group[6].input[20] */ + TRIG11_OUT_TR_GROUP7_INPUT20 = 0x40000B0Bu, /* tr_group[7].input[20] */ + TRIG11_OUT_TR_GROUP8_INPUT20 = 0x40000B0Bu, /* tr_group[8].input[20] */ + TRIG11_OUT_TR_GROUP0_INPUT21 = 0x40000B0Cu, /* tr_group[0].input[21] */ + TRIG11_OUT_TR_GROUP1_INPUT21 = 0x40000B0Cu, /* tr_group[1].input[21] */ + TRIG11_OUT_TR_GROUP2_INPUT21 = 0x40000B0Cu, /* tr_group[2].input[21] */ + TRIG11_OUT_TR_GROUP3_INPUT21 = 0x40000B0Cu, /* tr_group[3].input[21] */ + TRIG11_OUT_TR_GROUP4_INPUT21 = 0x40000B0Cu, /* tr_group[4].input[21] */ + TRIG11_OUT_TR_GROUP5_INPUT21 = 0x40000B0Cu, /* tr_group[5].input[21] */ + TRIG11_OUT_TR_GROUP6_INPUT21 = 0x40000B0Cu, /* tr_group[6].input[21] */ + TRIG11_OUT_TR_GROUP7_INPUT21 = 0x40000B0Cu, /* tr_group[7].input[21] */ + TRIG11_OUT_TR_GROUP8_INPUT21 = 0x40000B0Cu, /* tr_group[8].input[21] */ + TRIG11_OUT_TR_GROUP0_INPUT22 = 0x40000B0Du, /* tr_group[0].input[22] */ + TRIG11_OUT_TR_GROUP1_INPUT22 = 0x40000B0Du, /* tr_group[1].input[22] */ + TRIG11_OUT_TR_GROUP2_INPUT22 = 0x40000B0Du, /* tr_group[2].input[22] */ + TRIG11_OUT_TR_GROUP3_INPUT22 = 0x40000B0Du, /* tr_group[3].input[22] */ + TRIG11_OUT_TR_GROUP4_INPUT22 = 0x40000B0Du, /* tr_group[4].input[22] */ + TRIG11_OUT_TR_GROUP5_INPUT22 = 0x40000B0Du, /* tr_group[5].input[22] */ + TRIG11_OUT_TR_GROUP6_INPUT22 = 0x40000B0Du, /* tr_group[6].input[22] */ + TRIG11_OUT_TR_GROUP7_INPUT22 = 0x40000B0Du, /* tr_group[7].input[22] */ + TRIG11_OUT_TR_GROUP8_INPUT22 = 0x40000B0Du, /* tr_group[8].input[22] */ + TRIG11_OUT_TR_GROUP0_INPUT23 = 0x40000B0Eu, /* tr_group[0].input[23] */ + TRIG11_OUT_TR_GROUP1_INPUT23 = 0x40000B0Eu, /* tr_group[1].input[23] */ + TRIG11_OUT_TR_GROUP2_INPUT23 = 0x40000B0Eu, /* tr_group[2].input[23] */ + TRIG11_OUT_TR_GROUP3_INPUT23 = 0x40000B0Eu, /* tr_group[3].input[23] */ + TRIG11_OUT_TR_GROUP4_INPUT23 = 0x40000B0Eu, /* tr_group[4].input[23] */ + TRIG11_OUT_TR_GROUP5_INPUT23 = 0x40000B0Eu, /* tr_group[5].input[23] */ + TRIG11_OUT_TR_GROUP6_INPUT23 = 0x40000B0Eu, /* tr_group[6].input[23] */ + TRIG11_OUT_TR_GROUP7_INPUT23 = 0x40000B0Eu, /* tr_group[7].input[23] */ + TRIG11_OUT_TR_GROUP8_INPUT23 = 0x40000B0Eu, /* tr_group[8].input[23] */ + TRIG11_OUT_TR_GROUP0_INPUT24 = 0x40000B0Fu, /* tr_group[0].input[24] */ + TRIG11_OUT_TR_GROUP1_INPUT24 = 0x40000B0Fu, /* tr_group[1].input[24] */ + TRIG11_OUT_TR_GROUP2_INPUT24 = 0x40000B0Fu, /* tr_group[2].input[24] */ + TRIG11_OUT_TR_GROUP3_INPUT24 = 0x40000B0Fu, /* tr_group[3].input[24] */ + TRIG11_OUT_TR_GROUP4_INPUT24 = 0x40000B0Fu, /* tr_group[4].input[24] */ + TRIG11_OUT_TR_GROUP5_INPUT24 = 0x40000B0Fu, /* tr_group[5].input[24] */ + TRIG11_OUT_TR_GROUP6_INPUT24 = 0x40000B0Fu, /* tr_group[6].input[24] */ + TRIG11_OUT_TR_GROUP7_INPUT24 = 0x40000B0Fu, /* tr_group[7].input[24] */ + TRIG11_OUT_TR_GROUP8_INPUT24 = 0x40000B0Fu /* tr_group[8].input[24] */ +} en_trig_output_grp11_t; + +/* Trigger Output Group 12 - Reduces 28 pin input signals to 10 triggers used by all sinks */ +typedef enum +{ + TRIG12_OUT_TR_GROUP2_INPUT25 = 0x40000C00u, /* tr_group[2].input[25] */ + TRIG12_OUT_TR_GROUP3_INPUT25 = 0x40000C00u, /* tr_group[3].input[25] */ + TRIG12_OUT_TR_GROUP4_INPUT25 = 0x40000C00u, /* tr_group[4].input[25] */ + TRIG12_OUT_TR_GROUP5_INPUT25 = 0x40000C00u, /* tr_group[5].input[25] */ + TRIG12_OUT_TR_GROUP6_INPUT25 = 0x40000C00u, /* tr_group[6].input[25] */ + TRIG12_OUT_TR_GROUP7_INPUT25 = 0x40000C00u, /* tr_group[7].input[25] */ + TRIG12_OUT_TR_GROUP8_INPUT25 = 0x40000C00u, /* tr_group[8].input[25] */ + TRIG12_OUT_TR_GROUP2_INPUT26 = 0x40000C01u, /* tr_group[2].input[26] */ + TRIG12_OUT_TR_GROUP3_INPUT26 = 0x40000C01u, /* tr_group[3].input[26] */ + TRIG12_OUT_TR_GROUP4_INPUT26 = 0x40000C01u, /* tr_group[4].input[26] */ + TRIG12_OUT_TR_GROUP5_INPUT26 = 0x40000C01u, /* tr_group[5].input[26] */ + TRIG12_OUT_TR_GROUP6_INPUT26 = 0x40000C01u, /* tr_group[6].input[26] */ + TRIG12_OUT_TR_GROUP7_INPUT26 = 0x40000C01u, /* tr_group[7].input[26] */ + TRIG12_OUT_TR_GROUP8_INPUT26 = 0x40000C01u, /* tr_group[8].input[26] */ + TRIG12_OUT_TR_GROUP2_INPUT27 = 0x40000C02u, /* tr_group[2].input[27] */ + TRIG12_OUT_TR_GROUP3_INPUT27 = 0x40000C02u, /* tr_group[3].input[27] */ + TRIG12_OUT_TR_GROUP4_INPUT27 = 0x40000C02u, /* tr_group[4].input[27] */ + TRIG12_OUT_TR_GROUP5_INPUT27 = 0x40000C02u, /* tr_group[5].input[27] */ + TRIG12_OUT_TR_GROUP6_INPUT27 = 0x40000C02u, /* tr_group[6].input[27] */ + TRIG12_OUT_TR_GROUP7_INPUT27 = 0x40000C02u, /* tr_group[7].input[27] */ + TRIG12_OUT_TR_GROUP8_INPUT27 = 0x40000C02u, /* tr_group[8].input[27] */ + TRIG12_OUT_TR_GROUP2_INPUT28 = 0x40000C03u, /* tr_group[2].input[28] */ + TRIG12_OUT_TR_GROUP3_INPUT28 = 0x40000C03u, /* tr_group[3].input[28] */ + TRIG12_OUT_TR_GROUP4_INPUT28 = 0x40000C03u, /* tr_group[4].input[28] */ + TRIG12_OUT_TR_GROUP5_INPUT28 = 0x40000C03u, /* tr_group[5].input[28] */ + TRIG12_OUT_TR_GROUP6_INPUT28 = 0x40000C03u, /* tr_group[6].input[28] */ + TRIG12_OUT_TR_GROUP7_INPUT28 = 0x40000C03u, /* tr_group[7].input[28] */ + TRIG12_OUT_TR_GROUP8_INPUT28 = 0x40000C03u, /* tr_group[8].input[28] */ + TRIG12_OUT_TR_GROUP2_INPUT29 = 0x40000C04u, /* tr_group[2].input[29] */ + TRIG12_OUT_TR_GROUP3_INPUT29 = 0x40000C04u, /* tr_group[3].input[29] */ + TRIG12_OUT_TR_GROUP4_INPUT29 = 0x40000C04u, /* tr_group[4].input[29] */ + TRIG12_OUT_TR_GROUP5_INPUT29 = 0x40000C04u, /* tr_group[5].input[29] */ + TRIG12_OUT_TR_GROUP6_INPUT29 = 0x40000C04u, /* tr_group[6].input[29] */ + TRIG12_OUT_TR_GROUP7_INPUT29 = 0x40000C04u, /* tr_group[7].input[29] */ + TRIG12_OUT_TR_GROUP8_INPUT29 = 0x40000C04u, /* tr_group[8].input[29] */ + TRIG12_OUT_TR_GROUP2_INPUT30 = 0x40000C05u, /* tr_group[2].input[30] */ + TRIG12_OUT_TR_GROUP3_INPUT30 = 0x40000C05u, /* tr_group[3].input[30] */ + TRIG12_OUT_TR_GROUP4_INPUT30 = 0x40000C05u, /* tr_group[4].input[30] */ + TRIG12_OUT_TR_GROUP5_INPUT30 = 0x40000C05u, /* tr_group[5].input[30] */ + TRIG12_OUT_TR_GROUP6_INPUT30 = 0x40000C05u, /* tr_group[6].input[30] */ + TRIG12_OUT_TR_GROUP7_INPUT30 = 0x40000C05u, /* tr_group[7].input[30] */ + TRIG12_OUT_TR_GROUP8_INPUT30 = 0x40000C05u, /* tr_group[8].input[30] */ + TRIG12_OUT_TR_GROUP2_INPUT31 = 0x40000C06u, /* tr_group[2].input[31] */ + TRIG12_OUT_TR_GROUP3_INPUT31 = 0x40000C06u, /* tr_group[3].input[31] */ + TRIG12_OUT_TR_GROUP4_INPUT31 = 0x40000C06u, /* tr_group[4].input[31] */ + TRIG12_OUT_TR_GROUP5_INPUT31 = 0x40000C06u, /* tr_group[5].input[31] */ + TRIG12_OUT_TR_GROUP6_INPUT31 = 0x40000C06u, /* tr_group[6].input[31] */ + TRIG12_OUT_TR_GROUP7_INPUT31 = 0x40000C06u, /* tr_group[7].input[31] */ + TRIG12_OUT_TR_GROUP8_INPUT31 = 0x40000C06u, /* tr_group[8].input[31] */ + TRIG12_OUT_TR_GROUP2_INPUT32 = 0x40000C07u, /* tr_group[2].input[32] */ + TRIG12_OUT_TR_GROUP3_INPUT32 = 0x40000C07u, /* tr_group[3].input[32] */ + TRIG12_OUT_TR_GROUP4_INPUT32 = 0x40000C07u, /* tr_group[4].input[32] */ + TRIG12_OUT_TR_GROUP5_INPUT32 = 0x40000C07u, /* tr_group[5].input[32] */ + TRIG12_OUT_TR_GROUP6_INPUT32 = 0x40000C07u, /* tr_group[6].input[32] */ + TRIG12_OUT_TR_GROUP7_INPUT32 = 0x40000C07u, /* tr_group[7].input[32] */ + TRIG12_OUT_TR_GROUP8_INPUT32 = 0x40000C07u, /* tr_group[8].input[32] */ + TRIG12_OUT_TR_GROUP0_INPUT25 = 0x40000C08u, /* tr_group[0].input[25] */ + TRIG12_OUT_TR_GROUP1_INPUT25 = 0x40000C08u, /* tr_group[1].input[25] */ + TRIG12_OUT_TR_GROUP0_INPUT26 = 0x40000C09u, /* tr_group[0].input[26] */ + TRIG12_OUT_TR_GROUP1_INPUT26 = 0x40000C09u /* tr_group[1].input[26] */ +} en_trig_output_grp12_t; + +/* Trigger Output Group 13 - Reduces DMA requests to 16+2 outputs used by all sinks */ +typedef enum +{ + TRIG13_OUT_TR_GROUP0_INPUT27 = 0x40000D00u, /* tr_group[0].input[27] */ + TRIG13_OUT_TR_GROUP1_INPUT27 = 0x40000D00u, /* tr_group[1].input[27] */ + TRIG13_OUT_TR_GROUP0_INPUT28 = 0x40000D01u, /* tr_group[0].input[28] */ + TRIG13_OUT_TR_GROUP1_INPUT28 = 0x40000D01u, /* tr_group[1].input[28] */ + TRIG13_OUT_TR_GROUP0_INPUT29 = 0x40000D02u, /* tr_group[0].input[29] */ + TRIG13_OUT_TR_GROUP1_INPUT29 = 0x40000D02u, /* tr_group[1].input[29] */ + TRIG13_OUT_TR_GROUP0_INPUT30 = 0x40000D03u, /* tr_group[0].input[30] */ + TRIG13_OUT_TR_GROUP1_INPUT30 = 0x40000D03u, /* tr_group[1].input[30] */ + TRIG13_OUT_TR_GROUP0_INPUT31 = 0x40000D04u, /* tr_group[0].input[31] */ + TRIG13_OUT_TR_GROUP1_INPUT31 = 0x40000D04u, /* tr_group[1].input[31] */ + TRIG13_OUT_TR_GROUP0_INPUT32 = 0x40000D05u, /* tr_group[0].input[32] */ + TRIG13_OUT_TR_GROUP1_INPUT32 = 0x40000D05u, /* tr_group[1].input[32] */ + TRIG13_OUT_TR_GROUP0_INPUT33 = 0x40000D06u, /* tr_group[0].input[33] */ + TRIG13_OUT_TR_GROUP1_INPUT33 = 0x40000D06u, /* tr_group[1].input[33] */ + TRIG13_OUT_TR_GROUP0_INPUT34 = 0x40000D07u, /* tr_group[0].input[34] */ + TRIG13_OUT_TR_GROUP1_INPUT34 = 0x40000D07u, /* tr_group[1].input[34] */ + TRIG13_OUT_TR_GROUP0_INPUT35 = 0x40000D08u, /* tr_group[0].input[35] */ + TRIG13_OUT_TR_GROUP1_INPUT35 = 0x40000D08u, /* tr_group[1].input[35] */ + TRIG13_OUT_TR_GROUP0_INPUT36 = 0x40000D09u, /* tr_group[0].input[36] */ + TRIG13_OUT_TR_GROUP1_INPUT36 = 0x40000D09u, /* tr_group[1].input[36] */ + TRIG13_OUT_TR_GROUP0_INPUT37 = 0x40000D0Au, /* tr_group[0].input[37] */ + TRIG13_OUT_TR_GROUP1_INPUT37 = 0x40000D0Au, /* tr_group[1].input[37] */ + TRIG13_OUT_TR_GROUP0_INPUT38 = 0x40000D0Bu, /* tr_group[0].input[38] */ + TRIG13_OUT_TR_GROUP1_INPUT38 = 0x40000D0Bu, /* tr_group[1].input[38] */ + TRIG13_OUT_TR_GROUP0_INPUT39 = 0x40000D0Cu, /* tr_group[0].input[39] */ + TRIG13_OUT_TR_GROUP1_INPUT39 = 0x40000D0Cu, /* tr_group[1].input[39] */ + TRIG13_OUT_TR_GROUP0_INPUT40 = 0x40000D0Du, /* tr_group[0].input[40] */ + TRIG13_OUT_TR_GROUP1_INPUT40 = 0x40000D0Du, /* tr_group[1].input[40] */ + TRIG13_OUT_TR_GROUP0_INPUT41 = 0x40000D0Eu, /* tr_group[0].input[41] */ + TRIG13_OUT_TR_GROUP1_INPUT41 = 0x40000D0Eu, /* tr_group[1].input[41] */ + TRIG13_OUT_TR_GROUP0_INPUT42 = 0x40000D0Fu, /* tr_group[0].input[42] */ + TRIG13_OUT_TR_GROUP1_INPUT42 = 0x40000D0Fu, /* tr_group[1].input[42] */ + TRIG13_OUT_TR_GROUP2_INPUT33 = 0x40000D10u, /* tr_group[2].input[33] */ + TRIG13_OUT_TR_GROUP3_INPUT33 = 0x40000D10u, /* tr_group[3].input[33] */ + TRIG13_OUT_TR_GROUP4_INPUT33 = 0x40000D10u, /* tr_group[4].input[33] */ + TRIG13_OUT_TR_GROUP5_INPUT33 = 0x40000D10u, /* tr_group[5].input[33] */ + TRIG13_OUT_TR_GROUP6_INPUT33 = 0x40000D10u, /* tr_group[6].input[33] */ + TRIG13_OUT_TR_GROUP7_INPUT33 = 0x40000D10u, /* tr_group[7].input[33] */ + TRIG13_OUT_TR_GROUP8_INPUT33 = 0x40000D10u, /* tr_group[8].input[33] */ + TRIG13_OUT_TR_GROUP2_INPUT34 = 0x40000D11u, /* tr_group[2].input[34] */ + TRIG13_OUT_TR_GROUP3_INPUT34 = 0x40000D11u, /* tr_group[3].input[34] */ + TRIG13_OUT_TR_GROUP4_INPUT34 = 0x40000D11u, /* tr_group[4].input[34] */ + TRIG13_OUT_TR_GROUP5_INPUT34 = 0x40000D11u, /* tr_group[5].input[34] */ + TRIG13_OUT_TR_GROUP6_INPUT34 = 0x40000D11u, /* tr_group[6].input[34] */ + TRIG13_OUT_TR_GROUP7_INPUT34 = 0x40000D11u, /* tr_group[7].input[34] */ + TRIG13_OUT_TR_GROUP8_INPUT34 = 0x40000D11u /* tr_group[8].input[34] */ +} en_trig_output_grp13_t; + +/* Trigger Output Group 14 - Reduces general purpose trigger inputs to 8+8 outputs used by all sinks */ +typedef enum +{ + TRIG14_OUT_TR_GROUP0_INPUT43 = 0x40000E00u, /* tr_group[0].input[43] */ + TRIG14_OUT_TR_GROUP1_INPUT43 = 0x40000E00u, /* tr_group[1].input[43] */ + TRIG14_OUT_TR_GROUP0_INPUT44 = 0x40000E01u, /* tr_group[0].input[44] */ + TRIG14_OUT_TR_GROUP1_INPUT44 = 0x40000E01u, /* tr_group[1].input[44] */ + TRIG14_OUT_TR_GROUP0_INPUT45 = 0x40000E02u, /* tr_group[0].input[45] */ + TRIG14_OUT_TR_GROUP1_INPUT45 = 0x40000E02u, /* tr_group[1].input[45] */ + TRIG14_OUT_TR_GROUP0_INPUT46 = 0x40000E03u, /* tr_group[0].input[46] */ + TRIG14_OUT_TR_GROUP1_INPUT46 = 0x40000E03u, /* tr_group[1].input[46] */ + TRIG14_OUT_TR_GROUP0_INPUT47 = 0x40000E04u, /* tr_group[0].input[47] */ + TRIG14_OUT_TR_GROUP1_INPUT47 = 0x40000E04u, /* tr_group[1].input[47] */ + TRIG14_OUT_TR_GROUP0_INPUT48 = 0x40000E05u, /* tr_group[0].input[48] */ + TRIG14_OUT_TR_GROUP1_INPUT48 = 0x40000E05u, /* tr_group[1].input[48] */ + TRIG14_OUT_TR_GROUP0_INPUT49 = 0x40000E06u, /* tr_group[0].input[49] */ + TRIG14_OUT_TR_GROUP1_INPUT49 = 0x40000E06u, /* tr_group[1].input[49] */ + TRIG14_OUT_TR_GROUP0_INPUT50 = 0x40000E07u, /* tr_group[0].input[50] */ + TRIG14_OUT_TR_GROUP1_INPUT50 = 0x40000E07u, /* tr_group[1].input[50] */ + TRIG14_OUT_TR_GROUP2_INPUT35 = 0x40000E08u, /* tr_group[2].input[35] */ + TRIG14_OUT_TR_GROUP3_INPUT35 = 0x40000E08u, /* tr_group[3].input[35] */ + TRIG14_OUT_TR_GROUP4_INPUT35 = 0x40000E08u, /* tr_group[4].input[35] */ + TRIG14_OUT_TR_GROUP5_INPUT35 = 0x40000E08u, /* tr_group[5].input[35] */ + TRIG14_OUT_TR_GROUP6_INPUT35 = 0x40000E08u, /* tr_group[6].input[35] */ + TRIG14_OUT_TR_GROUP7_INPUT35 = 0x40000E08u, /* tr_group[7].input[35] */ + TRIG14_OUT_TR_GROUP8_INPUT35 = 0x40000E08u, /* tr_group[8].input[35] */ + TRIG14_OUT_TR_GROUP2_INPUT36 = 0x40000E09u, /* tr_group[2].input[36] */ + TRIG14_OUT_TR_GROUP3_INPUT36 = 0x40000E09u, /* tr_group[3].input[36] */ + TRIG14_OUT_TR_GROUP4_INPUT36 = 0x40000E09u, /* tr_group[4].input[36] */ + TRIG14_OUT_TR_GROUP5_INPUT36 = 0x40000E09u, /* tr_group[5].input[36] */ + TRIG14_OUT_TR_GROUP6_INPUT36 = 0x40000E09u, /* tr_group[6].input[36] */ + TRIG14_OUT_TR_GROUP7_INPUT36 = 0x40000E09u, /* tr_group[7].input[36] */ + TRIG14_OUT_TR_GROUP8_INPUT36 = 0x40000E09u, /* tr_group[8].input[36] */ + TRIG14_OUT_TR_GROUP2_INPUT37 = 0x40000E0Au, /* tr_group[2].input[37] */ + TRIG14_OUT_TR_GROUP3_INPUT37 = 0x40000E0Au, /* tr_group[3].input[37] */ + TRIG14_OUT_TR_GROUP4_INPUT37 = 0x40000E0Au, /* tr_group[4].input[37] */ + TRIG14_OUT_TR_GROUP5_INPUT37 = 0x40000E0Au, /* tr_group[5].input[37] */ + TRIG14_OUT_TR_GROUP6_INPUT37 = 0x40000E0Au, /* tr_group[6].input[37] */ + TRIG14_OUT_TR_GROUP7_INPUT37 = 0x40000E0Au, /* tr_group[7].input[37] */ + TRIG14_OUT_TR_GROUP8_INPUT37 = 0x40000E0Au, /* tr_group[8].input[37] */ + TRIG14_OUT_TR_GROUP2_INPUT38 = 0x40000E0Bu, /* tr_group[2].input[38] */ + TRIG14_OUT_TR_GROUP3_INPUT38 = 0x40000E0Bu, /* tr_group[3].input[38] */ + TRIG14_OUT_TR_GROUP4_INPUT38 = 0x40000E0Bu, /* tr_group[4].input[38] */ + TRIG14_OUT_TR_GROUP5_INPUT38 = 0x40000E0Bu, /* tr_group[5].input[38] */ + TRIG14_OUT_TR_GROUP6_INPUT38 = 0x40000E0Bu, /* tr_group[6].input[38] */ + TRIG14_OUT_TR_GROUP7_INPUT38 = 0x40000E0Bu, /* tr_group[7].input[38] */ + TRIG14_OUT_TR_GROUP8_INPUT38 = 0x40000E0Bu, /* tr_group[8].input[38] */ + TRIG14_OUT_TR_GROUP2_INPUT39 = 0x40000E0Cu, /* tr_group[2].input[39] */ + TRIG14_OUT_TR_GROUP3_INPUT39 = 0x40000E0Cu, /* tr_group[3].input[39] */ + TRIG14_OUT_TR_GROUP4_INPUT39 = 0x40000E0Cu, /* tr_group[4].input[39] */ + TRIG14_OUT_TR_GROUP5_INPUT39 = 0x40000E0Cu, /* tr_group[5].input[39] */ + TRIG14_OUT_TR_GROUP6_INPUT39 = 0x40000E0Cu, /* tr_group[6].input[39] */ + TRIG14_OUT_TR_GROUP7_INPUT39 = 0x40000E0Cu, /* tr_group[7].input[39] */ + TRIG14_OUT_TR_GROUP8_INPUT39 = 0x40000E0Cu, /* tr_group[8].input[39] */ + TRIG14_OUT_TR_GROUP2_INPUT40 = 0x40000E0Du, /* tr_group[2].input[40] */ + TRIG14_OUT_TR_GROUP3_INPUT40 = 0x40000E0Du, /* tr_group[3].input[40] */ + TRIG14_OUT_TR_GROUP4_INPUT40 = 0x40000E0Du, /* tr_group[4].input[40] */ + TRIG14_OUT_TR_GROUP5_INPUT40 = 0x40000E0Du, /* tr_group[5].input[40] */ + TRIG14_OUT_TR_GROUP6_INPUT40 = 0x40000E0Du, /* tr_group[6].input[40] */ + TRIG14_OUT_TR_GROUP7_INPUT40 = 0x40000E0Du, /* tr_group[7].input[40] */ + TRIG14_OUT_TR_GROUP8_INPUT40 = 0x40000E0Du, /* tr_group[8].input[40] */ + TRIG14_OUT_TR_GROUP2_INPUT41 = 0x40000E0Eu, /* tr_group[2].input[41] */ + TRIG14_OUT_TR_GROUP3_INPUT41 = 0x40000E0Eu, /* tr_group[3].input[41] */ + TRIG14_OUT_TR_GROUP4_INPUT41 = 0x40000E0Eu, /* tr_group[4].input[41] */ + TRIG14_OUT_TR_GROUP5_INPUT41 = 0x40000E0Eu, /* tr_group[5].input[41] */ + TRIG14_OUT_TR_GROUP6_INPUT41 = 0x40000E0Eu, /* tr_group[6].input[41] */ + TRIG14_OUT_TR_GROUP7_INPUT41 = 0x40000E0Eu, /* tr_group[7].input[41] */ + TRIG14_OUT_TR_GROUP8_INPUT41 = 0x40000E0Eu, /* tr_group[8].input[41] */ + TRIG14_OUT_TR_GROUP2_INPUT42 = 0x40000E0Fu, /* tr_group[2].input[42] */ + TRIG14_OUT_TR_GROUP3_INPUT42 = 0x40000E0Fu, /* tr_group[3].input[42] */ + TRIG14_OUT_TR_GROUP4_INPUT42 = 0x40000E0Fu, /* tr_group[4].input[42] */ + TRIG14_OUT_TR_GROUP5_INPUT42 = 0x40000E0Fu, /* tr_group[5].input[42] */ + TRIG14_OUT_TR_GROUP6_INPUT42 = 0x40000E0Fu, /* tr_group[6].input[42] */ + TRIG14_OUT_TR_GROUP7_INPUT42 = 0x40000E0Fu, /* tr_group[7].input[42] */ + TRIG14_OUT_TR_GROUP8_INPUT42 = 0x40000E0Fu /* tr_group[8].input[42] */ +} en_trig_output_grp14_t; + +/* Level or edge detection setting for a trigger mux */ +typedef enum +{ + /* The trigger is a simple level output */ + TRIGGER_TYPE_LEVEL = 0u, + /* The trigger is synchronized to the consumer blocks clock + and a two cycle pulse is generated on this clock */ + TRIGGER_TYPE_EDGE = 1u +} en_trig_type_t; + +/* Trigger Type Defines */ +/* TCPWM Trigger Types */ +#define TRIGGER_TYPE_TCPWM_LINE TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_LINE_COMPL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_OVERFLOW TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_COMPARE_MATCH TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_UNDERFLOW TRIGGER_TYPE_EDGE +/* CSD Trigger Types */ +#define TRIGGER_TYPE_CSD_DSI_SAMPLE_OUT TRIGGER_TYPE_EDGE +/* SCB Trigger Types */ +#define TRIGGER_TYPE_SCB_TR_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SCB_TR_RX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SCB_TR_I2C_SCL_FILTERED TRIGGER_TYPE_LEVEL +/* PERI Trigger Types */ +#define TRIGGER_TYPE_PERI_TR_IO_INPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PERI_TR_IO_INPUT__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PERI_TR_IO_OUTPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PERI_TR_IO_OUTPUT__EDGE TRIGGER_TYPE_EDGE +/* CPUSS Trigger Types */ +#define TRIGGER_TYPE_CPUSS_DW0_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_CPUSS_DW0_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW1_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_CPUSS_DW1_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_CTI_TR_IN TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW0_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW1_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_CTI_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_TR_FAULT TRIGGER_TYPE_EDGE +/* AUDIOSS Trigger Types */ +#define TRIGGER_TYPE_AUDIOSS_TR_PDM_RX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_AUDIOSS_TR_I2S_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_AUDIOSS_TR_I2S_RX_REQ TRIGGER_TYPE_LEVEL +/* LPCOMP Trigger Types */ +#define TRIGGER_TYPE_LPCOMP_DSI_COMP0 TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_LPCOMP_DSI_COMP1 TRIGGER_TYPE_LEVEL +/* PASS Trigger Types */ +#define TRIGGER_TYPE_PASS_DSI_CTB_CMP0__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PASS_DSI_CTB_CMP0__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PASS_DSI_CTB_CMP1__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PASS_DSI_CTB_CMP1__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PASS_TR_SAR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PASS_TR_SAR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PASS_TR_SAR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PASS_TR_CTDAC_EMPTY TRIGGER_TYPE_EDGE +/* SMIF Trigger Types */ +#define TRIGGER_TYPE_SMIF_TR_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SMIF_TR_RX_REQ TRIGGER_TYPE_LEVEL +/* USB Trigger Types */ +#define TRIGGER_TYPE_USB_DMA_BURSTEND TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_USB_DMA_REQ TRIGGER_TYPE_EDGE +/* UDB Trigger Types */ +#define TRIGGER_TYPE_UDB_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_UDB_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_UDB_TR_DW_ACK__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_UDB_TR_DW_ACK__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_UDB_TR_UDB__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_UDB_TR_UDB__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_UDB_DSI_OUT_TR__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_UDB_DSI_OUT_TR__EDGE TRIGGER_TYPE_EDGE +/* PROFILE Trigger Types */ +#define TRIGGER_TYPE_PROFILE_TR_START TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PROFILE_TR_STOP TRIGGER_TYPE_EDGE +/* TR_GROUP Trigger Types */ +#define TRIGGER_TYPE_TR_GROUP_OUTPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TR_GROUP_OUTPUT__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TR_GROUP_INPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TR_GROUP_INPUT__EDGE TRIGGER_TYPE_EDGE + +/* Monitor Signal Defines */ +typedef enum +{ + PROFILE_ONE = 0, /* profile.one */ + CPUSS_MONITOR_CM0 = 1, /* cpuss.monitor_cm0 */ + CPUSS_MONITOR_CM4 = 2, /* cpuss.monitor_cm4 */ + CPUSS_MONITOR_FLASH = 3, /* cpuss.monitor_flash */ + CPUSS_MONITOR_DW0_AHB = 4, /* cpuss.monitor_dw0_ahb */ + CPUSS_MONITOR_DW1_AHB = 5, /* cpuss.monitor_dw1_ahb */ + CPUSS_MONITOR_CRYPTO = 6, /* cpuss.monitor_crypto */ + USB_MONITOR_AHB = 7, /* usb.monitor_ahb */ + SCB0_MONITOR_AHB = 8, /* scb[0].monitor_ahb */ + SCB1_MONITOR_AHB = 9, /* scb[1].monitor_ahb */ + SCB2_MONITOR_AHB = 10, /* scb[2].monitor_ahb */ + SCB3_MONITOR_AHB = 11, /* scb[3].monitor_ahb */ + SCB4_MONITOR_AHB = 12, /* scb[4].monitor_ahb */ + SCB5_MONITOR_AHB = 13, /* scb[5].monitor_ahb */ + SCB6_MONITOR_AHB = 14, /* scb[6].monitor_ahb */ + SCB7_MONITOR_AHB = 15, /* scb[7].monitor_ahb */ + SCB8_MONITOR_AHB = 16, /* scb[8].monitor_ahb */ + UDB_MONITOR_UDB0 = 17, /* udb.monitor_udb[0] */ + UDB_MONITOR_UDB1 = 18, /* udb.monitor_udb[1] */ + UDB_MONITOR_UDB2 = 19, /* udb.monitor_udb[2] */ + UDB_MONITOR_UDB3 = 20, /* udb.monitor_udb[3] */ + SMIF_MONITOR_SMIF_SPI_SELECT0 = 21, /* smif.monitor_smif_spi_select[0] */ + SMIF_MONITOR_SMIF_SPI_SELECT1 = 22, /* smif.monitor_smif_spi_select[1] */ + SMIF_MONITOR_SMIF_SPI_SELECT2 = 23, /* smif.monitor_smif_spi_select[2] */ + SMIF_MONITOR_SMIF_SPI_SELECT3 = 24, /* smif.monitor_smif_spi_select[3] */ + SMIF_MONITOR_SMIF_SPI_SELECT_ANY = 25, /* smif.monitor_smif_spi_select_any */ + BLESS_EXT_LNA_RX_CTL_OUT = 26, /* bless.ext_lna_rx_ctl_out */ + BLESS_EXT_PA_TX_CTL_OUT = 27 /* bless.ext_pa_tx_ctl_out */ +} en_ep_mon_sel_t; + +/* Total count of Energy Profiler monitor signal connections */ +#define EP_MONITOR_COUNT 28u + +/* Bus masters */ +typedef enum +{ + CPUSS_MS_ID_CM0 = 0, + CPUSS_MS_ID_CRYPTO = 1, + CPUSS_MS_ID_DW0 = 2, + CPUSS_MS_ID_DW1 = 3, + CPUSS_MS_ID_CM4 = 14, + CPUSS_MS_ID_TC = 15 +} en_prot_master_t; + +/* Pointer to device configuration structure */ +#define CY_DEVICE_CFG (&cy_deviceIpBlockCfgPSoC6_01) + +/* Include IP definitions */ +#include "ip/cyip_sflash.h" +#include "ip/cyip_peri.h" +#include "ip/cyip_crypto.h" +#include "ip/cyip_cpuss.h" +#include "ip/cyip_fault.h" +#include "ip/cyip_ipc.h" +#include "ip/cyip_prot.h" +#include "ip/cyip_flashc.h" +#include "ip/cyip_srss.h" +#include "ip/cyip_backup.h" +#include "ip/cyip_dw.h" +#include "ip/cyip_efuse.h" +#include "ip/cyip_efuse_data_psoc6_01.h" +#include "ip/cyip_profile.h" +#include "ip/cyip_hsiom.h" +#include "ip/cyip_gpio.h" +#include "ip/cyip_smartio.h" +#include "ip/cyip_udb.h" +#include "ip/cyip_lpcomp.h" +#include "ip/cyip_csd.h" +#include "ip/cyip_tcpwm.h" +#include "ip/cyip_lcd.h" +#include "ip/cyip_ble.h" +#include "ip/cyip_usbfs.h" +#include "ip/cyip_smif.h" +#include "ip/cyip_scb.h" +#include "ip/cyip_ctbm.h" +#include "ip/cyip_ctdac.h" +#include "ip/cyip_sar.h" +#include "ip/cyip_pass.h" +#include "ip/cyip_i2s.h" +#include "ip/cyip_pdm.h" + +/* IP type definitions */ +typedef SFLASH_V1_Type SFLASH_Type; +typedef PERI_GR_V1_Type PERI_GR_Type; +typedef PERI_TR_GR_V1_Type PERI_TR_GR_Type; +typedef PERI_PPU_PR_V1_Type PERI_PPU_PR_Type; +typedef PERI_PPU_GR_V1_Type PERI_PPU_GR_Type; +typedef PERI_GR_PPU_SL_V1_Type PERI_GR_PPU_SL_Type; +typedef PERI_GR_PPU_RG_V1_Type PERI_GR_PPU_RG_Type; +typedef PERI_V1_Type PERI_Type; +typedef CRYPTO_V1_Type CRYPTO_Type; +typedef CPUSS_V1_Type CPUSS_Type; +typedef FAULT_STRUCT_V1_Type FAULT_STRUCT_Type; +typedef FAULT_V1_Type FAULT_Type; +typedef IPC_STRUCT_V1_Type IPC_STRUCT_Type; +typedef IPC_INTR_STRUCT_V1_Type IPC_INTR_STRUCT_Type; +typedef IPC_V1_Type IPC_Type; +typedef PROT_SMPU_SMPU_STRUCT_V1_Type PROT_SMPU_SMPU_STRUCT_Type; +typedef PROT_SMPU_V1_Type PROT_SMPU_Type; +typedef PROT_MPU_MPU_STRUCT_V1_Type PROT_MPU_MPU_STRUCT_Type; +typedef PROT_MPU_V1_Type PROT_MPU_Type; +typedef PROT_V1_Type PROT_Type; +typedef FLASHC_FM_CTL_V1_Type FLASHC_FM_CTL_Type; +typedef FLASHC_V1_Type FLASHC_Type; +typedef MCWDT_STRUCT_V1_Type MCWDT_STRUCT_Type; +typedef SRSS_V1_Type SRSS_Type; +typedef BACKUP_V1_Type BACKUP_Type; +typedef DW_CH_STRUCT_V1_Type DW_CH_STRUCT_Type; +typedef DW_V1_Type DW_Type; +typedef EFUSE_V1_Type EFUSE_Type; +typedef PROFILE_CNT_STRUCT_V1_Type PROFILE_CNT_STRUCT_Type; +typedef PROFILE_V1_Type PROFILE_Type; +typedef HSIOM_PRT_V1_Type HSIOM_PRT_Type; +typedef HSIOM_V1_Type HSIOM_Type; +typedef GPIO_PRT_V1_Type GPIO_PRT_Type; +typedef GPIO_V1_Type GPIO_Type; +typedef SMARTIO_PRT_V1_Type SMARTIO_PRT_Type; +typedef SMARTIO_V1_Type SMARTIO_Type; +typedef UDB_WRKONE_V1_Type UDB_WRKONE_Type; +typedef UDB_WRKMULT_V1_Type UDB_WRKMULT_Type; +typedef UDB_UDBPAIR_UDBSNG_V1_Type UDB_UDBPAIR_UDBSNG_Type; +typedef UDB_UDBPAIR_ROUTE_V1_Type UDB_UDBPAIR_ROUTE_Type; +typedef UDB_UDBPAIR_V1_Type UDB_UDBPAIR_Type; +typedef UDB_DSI_V1_Type UDB_DSI_Type; +typedef UDB_PA_V1_Type UDB_PA_Type; +typedef UDB_BCTL_V1_Type UDB_BCTL_Type; +typedef UDB_UDBIF_V1_Type UDB_UDBIF_Type; +typedef UDB_V1_Type UDB_Type; +typedef LPCOMP_V1_Type LPCOMP_Type; +typedef CSD_V1_Type CSD_Type; +typedef TCPWM_CNT_V1_Type TCPWM_CNT_Type; +typedef TCPWM_V1_Type TCPWM_Type; +typedef LCD_V1_Type LCD_Type; +typedef BLE_RCB_RCBLL_V1_Type BLE_RCB_RCBLL_Type; +typedef BLE_RCB_V1_Type BLE_RCB_Type; +typedef BLE_BLELL_V1_Type BLE_BLELL_Type; +typedef BLE_BLESS_V1_Type BLE_BLESS_Type; +typedef BLE_V1_Type BLE_Type; +typedef USBFS_USBDEV_V1_Type USBFS_USBDEV_Type; +typedef USBFS_USBLPM_V1_Type USBFS_USBLPM_Type; +typedef USBFS_USBHOST_V1_Type USBFS_USBHOST_Type; +typedef USBFS_V1_Type USBFS_Type; +typedef SMIF_DEVICE_V1_Type SMIF_DEVICE_Type; +typedef SMIF_V1_Type SMIF_Type; +typedef CySCB_V1_Type CySCB_Type; +typedef CTBM_V1_Type CTBM_Type; +typedef CTDAC_V1_Type CTDAC_Type; +typedef SAR_V1_Type SAR_Type; +typedef PASS_AREF_V1_Type PASS_AREF_Type; +typedef PASS_V1_Type PASS_Type; +typedef I2S_V1_Type I2S_Type; +typedef PDM_V1_Type PDM_Type; + +/* Parameter Defines */ +/* Number of regulator modules instantiated within SRSS */ +#define SRSS_NUM_ACTREG_PWRMOD 2u +/* Number of shorting switches between vccd and vccact */ +#define SRSS_NUM_ACTIVE_SWITCH 3u +/* ULP linear regulator system is present */ +#define SRSS_ULPLINREG_PRESENT 1u +/* HT linear regulator system is present */ +#define SRSS_HTLINREG_PRESENT 0u +/* SIMO buck core regulator is present. Only compatible with ULP linear regulator + system (ULPLINREG_PRESENT==1). */ +#define SRSS_SIMOBUCK_PRESENT 1u +/* Precision ILO (PILO) is present */ +#define SRSS_PILO_PRESENT 1u +/* External Crystal Oscillator is present (high frequency) */ +#define SRSS_ECO_PRESENT 1u +/* System Buck-Boost is present */ +#define SRSS_SYSBB_PRESENT 0u +/* Number of clock paths. Must be > 0 */ +#define SRSS_NUM_CLKPATH 5u +/* Number of PLLs present. Must be <= NUM_CLKPATH */ +#define SRSS_NUM_PLL 1u +/* Number of HFCLK roots present. Must be > 0 */ +#define SRSS_NUM_HFROOT 5u +/* Number of PWR_HIB_DATA registers */ +#define SRSS_NUM_HIBDATA 1u +/* Backup domain is present */ +#define SRSS_BACKUP_PRESENT 1u +/* Mask of HFCLK root clock supervisors (CSV). For each clock root i, bit[i] of + mask indicates presence of a CSV. */ +#define SRSS_MASK_HFCSV 0u +/* Clock supervisor is present on WCO. Must be 0 if BACKUP_PRESENT==0. */ +#define SRSS_WCOCSV_PRESENT 0u +/* Number of software watchdog timers. */ +#define SRSS_NUM_MCWDT 2u +/* Number of DSI inputs into clock muxes. This is used for logic optimization. */ +#define SRSS_NUM_DSI 2u +/* Alternate high-frequency clock is present. This is used for logic optimization. */ +#define SRSS_ALTHF_PRESENT 1u +/* Alternate low-frequency clock is present. This is used for logic optimization. */ +#define SRSS_ALTLF_PRESENT 0u +/* Use the hardened clkactfllmux block */ +#define SRSS_USE_HARD_CLKACTFLLMUX 1u +/* Number of clock paths, including direct paths in hardened clkactfllmux block + (Must be >= NUM_CLKPATH) */ +#define SRSS_HARD_CLKPATH 6u +/* Number of clock paths with muxes in hardened clkactfllmux block (Must be >= + NUM_PLL+1) */ +#define SRSS_HARD_CLKPATHMUX 6u +/* Number of HFCLKS present in hardened clkactfllmux block (Must be >= NUM_HFROOT) */ +#define SRSS_HARD_HFROOT 6u +/* ECO mux is present in hardened clkactfllmux block (Must be >= ECO_PRESENT) */ +#define SRSS_HARD_ECOMUX_PRESENT 1u +/* ALTHF mux is present in hardened clkactfllmux block (Must be >= ALTHF_PRESENT) */ +#define SRSS_HARD_ALTHFMUX_PRESENT 1u +/* Low-current buck regulator present. Can be derived from S40S_SISOBUCKLC_PRESENT + or SIMOBUCK_PRESENT. */ +#define SRSS_BUCKCTL_PRESENT 1u +/* Low-current SISO buck core regulator is present. Only compatible with ULP + linear regulator system (ULPLINREG_PRESENT==1). */ +#define SRSS_S40S_SISOBUCKLC_PRESENT 0u +/* Backup memory is present (only used when BACKUP_PRESENT==1) */ +#define SRSS_BACKUP_BMEM_PRESENT 0u +/* Number of Backup registers to include (each is 32b). Only used when + BACKUP_PRESENT==1. */ +#define SRSS_BACKUP_NUM_BREG 16u +/* Number of AMUX splitter cells */ +#define IOSS_HSIOM_AMUX_SPLIT_NR 9u +/* Number of HSIOM ports in device (same as GPIO.GPIO_PRT_NR) */ +#define IOSS_HSIOM_HSIOM_PORT_NR 15u +/* Number of GPIO ports in range 0..31 */ +#define IOSS_GPIO_GPIO_PORT_NR_0_31 15u +/* Number of GPIO ports in range 32..63 */ +#define IOSS_GPIO_GPIO_PORT_NR_32_63 0u +/* Number of GPIO ports in range 64..95 */ +#define IOSS_GPIO_GPIO_PORT_NR_64_95 0u +/* Number of GPIO ports in range 96..127 */ +#define IOSS_GPIO_GPIO_PORT_NR_96_127 0u +/* Number of ports in device */ +#define IOSS_GPIO_GPIO_PORT_NR 15u +/* Mask of SMARTIO instances presence */ +#define IOSS_SMARTIO_SMARTIO_MASK 768u +/* The number of protection contexts ([2, 16]). */ +#define PERI_PC_NR 8u +/* Master interface presence mask (4 bits) */ +#define PERI_MS_PRESENT 15u +/* Master interface PPU combinatorial (1) or registerd (0) */ +#define PERI_MS_PPU_COMBINATORIAL 1u +/* The number of programmable PPU structures for PERI (all peripherals) */ +#define PERI_MS_PPU_PROG_STRUCT_NR 16u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL4_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL5_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL7_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL12_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL13_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL4_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL5_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL10_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL11_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL12_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL4_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL5_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL7_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Presence of a timeout functionality (1: Yes, 0:No) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Number of programmable clocks (outputs) */ +#define PERI_CLOCK_NR 59u +/* Number of 8.0 dividers */ +#define PERI_DIV_8_NR 8u +/* Number of 16.0 dividers */ +#define PERI_DIV_16_NR 16u +/* Number of 16.5 (fractional) dividers */ +#define PERI_DIV_16_5_NR 4u +/* Number of 24.5 (fractional) dividers */ +#define PERI_DIV_24_5_NR 1u +/* Divider number width: max(1,roundup(log2(max(DIV_*_NR))) */ +#define PERI_DIV_ADDR_WIDTH 4u +/* Trigger module present (0=No, 1=Yes) */ +#define PERI_TR 1u +/* Number of trigger groups */ +#define PERI_TR_GROUP_NR 15u +/* The number of protection contexts minus 1 ([1, 15]). */ +#define PERI_PPU_FIXED_STRUCT_PC_NR_MINUS1 7u +/* The number of protection contexts minus 1 ([1, 15]). */ +#define PERI_PPU_PROG_STRUCT_PC_NR_MINUS1 7u +/* UDB present or not ('0': no, '1': yes) */ +#define CPUSS_UDB_PRESENT 1u +/* System RAM 0 size in kilobytes */ +#define CPUSS_SRAM0_SIZE 288u +/* Number of macros used to implement System RAM 0. Example: 8 if 256 KB System + SRAM0 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC0_MACRO_NR 9u +/* System RAM 1 present or not (0=No, 1=Yes) */ +#define CPUSS_RAMC1_PRESENT 0u +/* System RAM 1 size in kilobytes */ +#define CPUSS_SRAM1_SIZE 32u +/* Number of macros used to implement System RAM 1. Example: 8 if 256 KB System + RAM 1 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC1_MACRO_NR 1u +/* System RAM 2 present or not (0=No, 1=Yes) */ +#define CPUSS_RAMC2_PRESENT 0u +/* System RAM 2 size in kilobytes */ +#define CPUSS_SRAM2_SIZE 256u +/* Number of macros used to implement System RAM 2. Example: 8 if 256 KB System + RAM 2 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC2_MACRO_NR 16u +/* System ROM size in KB */ +#define CPUSS_ROM_SIZE 128u +/* Flash main region size in KB */ +#define CPUSS_FLASH_SIZE 1024u +/* Flash work region size in KB (EEPROM emulation, data) */ +#define CPUSS_WFLASH_SIZE 32u +/* Flash supervisory region size in KB */ +#define CPUSS_SFLASH_SIZE 32u +/* Flash data output size (in Bytes) */ +#define CPUSS_FLASHC_WORD_SIZE 16u +/* Flash row address width */ +#define CPUSS_FLASHC_ROW_ADDR_WIDTH 12u +/* Flash column address width */ +#define CPUSS_FLASHC_COL_ADDR_WIDTH 5u +/* Number of external slaves directly connected to slow AHB-Lite infrastructure. + Maximum nubmer of slave supported is 4. Width of this parameter is 4-bits. + 1-bit mask for each slave indicating present or not. Example: 4'b0011 - slave + 0 and slave 1 are present. Note: The SLOW_SLx_ADDR and SLOW_SLx_MASK + parameters (for the slaves present) should be derived from the Memory Map. */ +#define CPUSS_SLOW_SL_PRESENT 1u +/* Number of external slaves directly connected to fast AHB-Lite infrastructure. + Maximum nubmer of slave supported is 4. Width of this parameter is 4-bits. + 1-bit mask for each slave indicating present or not. Example: 4'b0011 - slave + 0 and slave 1 are present. Note: The FAST_SLx_ADDR and FAST_SLx_MASK + parameters (for the slaves present) should be derived from the Memory Map. */ +#define CPUSS_FAST_SL_PRESENT 1u +/* Number of external masters driving the slow AHB-Lite infrastructure. Maximum + number of masters supported is 2. Width of this parameter is 2-bits. 1-bit + mask for each master indicating present or not. Example: 2'b01 - master 0 is + present. */ +#define CPUSS_SLOW_MS_PRESENT 0u +/* Number of total interrupt request inputs to CPUSS */ +#define CPUSS_IRQ_NR 147u +/* Number of DeepSleep wakeup interrupt inputs to CPUSS */ +#define CPUSS_DPSLP_IRQ_NR 41u +/* Number of DeepSleep wakeup interrupt inputs to CM0+ (product configuration) */ +#define CPUSS_CM0_DPSLP_IRQ_NR 8u +/* Width of the CM4 interrupt priority bits. Legal range [3,8] Example: 3 = 8 + levels of priority 8 = 256 levels of priority */ +#define CPUSS_CM4_LVL_WIDTH 3u +/* CM4 Floating point unit present or not (0=No, 1=Yes) */ +#define CPUSS_CM4_FPU_PRESENT 1u +/* Debug level. Legal range [0,3] */ +#define CPUSS_DEBUG_LVL 3u +/* Trace level. Legal range [0,2] Note: CM4 HTM is not supported. Hence vaule 3 + for trace level is not supported in CPUSS. */ +#define CPUSS_TRACE_LVL 2u +/* Embedded Trace Buffer present or not (0=No, 1=Yes) */ +#define CPUSS_ETB_PRESENT 0u +/* CM0+ MTB SRAM buffer size in kilobytes. Legal vaules 4, 8 or 16 */ +#define CPUSS_MTB_SRAM_SIZE 4u +/* CM4 ETB SRAM buffer size in kilobytes. Legal vaules 4, 8 or 16 */ +#define CPUSS_ETB_SRAM_SIZE 16u +/* PTM interface present (0=No, 1=Yes) */ +#define CPUSS_PTM_PRESENT 1u +/* Width of the PTM interface in bits ([2,32]) */ +#define CPUSS_PTM_WIDTH 8u +/* Width of the TPIU interface in bits ([1,32]) */ +#define CPUSS_TPIU_WIDTH 4u +/* CoreSight Part Identification Number */ +#define CPUSS_JEPID 52u +/* CoreSight Part Identification Number */ +#define CPUSS_JEPCONTINUATION 0u +/* CoreSight Part Identification Number */ +#define CPUSS_FAMILYID 256u +/* Cryptography IP present or not (0=No, 1=Yes) */ +#define CPUSS_CRYPTO_PRESENT 1u +/* DataWire 0 present or not (0=No, 1=Yes) */ +#define CPUSS_DW0_PRESENT 1u +/* Number of DataWire 0 channels (8, 16 or 32) */ +#define CPUSS_DW0_CH_NR 16u +/* DataWire 1 present or not (0=No, 1=Yes) */ +#define CPUSS_DW1_PRESENT 1u +/* Number of DataWire 1 channels (8, 16 or 32) */ +#define CPUSS_DW1_CH_NR 16u +/* Number of Flash BIST_DATA registers */ +#define CPUSS_FLASHC_FLASHC_BIST_DATA_NR 4u +/* Page size in # of 32-bit words (1: 4 bytes, 2: 8 bytes, ... */ +#define CPUSS_FLASHC_PA_SIZE 128u +/* AES cipher support (0 = no support, 1 = support */ +#define CPUSS_CRYPTO_AES 1u +/* (Tripple) DES cipher support (0 = no support, 1 = support */ +#define CPUSS_CRYPTO_DES 1u +/* Pseudo random number generation support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_PR 1u +/* SHA support included */ +#define CPUSS_CRYPTO_SHA 1u +/* SHA1 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA1 1u +/* SHA256 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA256 1u +/* SHA512 hash support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_SHA512 1u +/* Cyclic Redundancy Check support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_CRC 1u +/* Vector unit support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_VU 1u +/* True random number generation support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_TR 1u +/* String support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_STR 1u +/* AHB-Lite master interface support (0 = no support, 1 = support) */ +#define CPUSS_CRYPTO_MASTER_IF 1u +/* Number of 32-bit words in the IP internal memory buffer (from the set [64, 128, + 256, 512, 1024, 2048, 4096], to allow for a 256 B, 512 B, 1 kB, 2 kB, 4 kB, 8 + kB and 16 kB memory buffer) */ +#define CPUSS_CRYPTO_BUFF_SIZE 1024u +/* Number of fault structures. Legal range [1, 4] */ +#define CPUSS_FAULT_FAULT_NR 2u +/* Number of IPC structures. Legal range [1, 16] */ +#define CPUSS_IPC_IPC_NR 16u +/* Number of IPC interrupt structures. Legal range [1, 16] */ +#define CPUSS_IPC_IPC_IRQ_NR 16u +/* Master 0 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS0_PC_NR_MINUS1 7u +/* Master 1 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS1_PC_NR_MINUS1 7u +/* Master 2 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS2_PC_NR_MINUS1 0u +/* Master 3 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS3_PC_NR_MINUS1 0u +/* Master 4 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS4_PC_NR_MINUS1 0u +/* Master 5 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS5_PC_NR_MINUS1 0u +/* Master 6 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS6_PC_NR_MINUS1 0u +/* Master 7 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS7_PC_NR_MINUS1 0u +/* Master 8 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS8_PC_NR_MINUS1 0u +/* Master 9 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS9_PC_NR_MINUS1 0u +/* Master 10 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS10_PC_NR_MINUS1 0u +/* Master 11 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS11_PC_NR_MINUS1 0u +/* Master 12 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS12_PC_NR_MINUS1 0u +/* Master 13 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS13_PC_NR_MINUS1 0u +/* Master 14 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS14_PC_NR_MINUS1 7u +/* Master 15 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS15_PC_NR_MINUS1 7u +/* Number of SMPU protection structures */ +#define CPUSS_PROT_SMPU_STRUCT_NR 16u +/* Number of protection contexts supported minus 1. Legal range [1,16] */ +#define CPUSS_SMPU_STRUCT_PC_NR_MINUS1 7u +/* Number of DataWire controllers present (max 2) */ +#define CPUSS_DW_NR 2u +/* Number of channels in each DataWire controller (must be the same for now) */ +#define CPUSS_DW_CH_NR 16u +/* Number of profiling counters. Legal range [1, 32] */ +#define PROFILE_PRFL_CNT_NR 8u +/* Number of monitor event signals. Legal range [1, 128] */ +#define PROFILE_PRFL_MONITOR_NR 128u +/* Number of instantiated eFUSE macros (256 bit macros). Legal range [1, 16] */ +#define EFUSE_EFUSE_NR 4u +/* SONOS Flash is used or not ('0': no, '1': yes) */ +#define SFLASH_FLASHC_IS_SONOS 1u +/* CPUSS_WOUNDING_PRESENT or not ('0': no, '1': yes) */ +#define SFLASH_CPUSS_WOUNDING_PRESENT 1u +/* Number of UDB Interrupts */ +#define UDB_NUMINT 16u +/* Number of triggers */ +#define UDB_NUMTR 16u +/* Number of UDB array rows (must be multiple of 2) */ +#define UDB_NUMROW 2u +/* Number of UDB array columns */ +#define UDB_NUMCOL 6u +/* DSI on bottom (1) or on bottom and top (2) of UDB array */ +#define UDB_DSISIDES 2u +/* Number of UDBs = NUMROW * NUMCOL */ +#define UDB_NUMUDB 12u +/* Number of UDB pairs = NUMUDB / 2 */ +#define UDB_NUMUDBPAIR 6u +/* Number of DSIs = NUMCOL * DSISIDES */ +#define UDB_NUMDSI 12u +/* Number of quad clocks */ +#define UDB_NUMQCLK 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB0_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB0_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB0_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB0_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB0_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB0_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB0_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB0_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB0_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB0_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB0_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB0_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB0_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB0_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB0_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB0_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB0_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB0_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB0_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB0_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB0_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB0_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB0_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB0_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB1_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB1_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB1_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB1_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB1_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB1_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB1_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB1_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB1_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB1_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB1_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB1_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB1_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB1_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB1_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB1_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB1_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB1_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB1_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB1_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB1_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB1_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB1_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB1_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB2_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB2_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB2_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB2_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB2_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB2_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB2_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB2_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB2_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB2_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB2_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB2_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB2_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB2_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB2_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB2_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB2_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB2_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB2_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB2_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB2_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB2_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB2_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB2_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB3_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB3_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB3_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB3_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB3_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB3_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB3_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB3_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB3_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB3_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB3_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB3_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB3_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB3_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB3_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB3_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB3_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB3_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB3_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB3_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB3_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB3_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB3_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB3_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB4_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB4_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB4_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB4_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB4_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB4_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB4_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB4_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB4_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB4_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB4_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB4_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB4_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB4_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB4_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB4_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB4_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB4_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB4_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB4_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB4_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB4_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB4_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB4_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB5_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB5_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB5_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB5_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB5_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB5_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB5_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB5_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB5_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB5_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB5_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB5_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB5_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB5_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB5_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB5_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB5_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB5_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB5_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB5_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB5_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB5_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB5_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB5_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB6_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB6_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB6_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB6_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB6_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB6_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB6_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB6_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB6_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB6_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB6_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB6_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB6_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB6_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB6_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB6_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB6_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB6_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB6_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB6_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB6_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB6_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB6_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB6_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB7_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB7_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB7_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB7_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB7_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB7_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB7_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB7_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB7_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB7_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB7_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB7_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB7_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB7_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB7_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB7_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB7_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB7_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB7_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB7_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB7_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB7_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB7_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB7_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB8_DEEPSLEEP 1u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB8_EC 1u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB8_I2C_M 0u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB8_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB8_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB8_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB8_I2C_EC 1u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB8_I2C_M_S 0u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB8_I2C_S_EC 1u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB8_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB8_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB8_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB8_SPI_EC 1u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB8_SPI_S_EC 1u +/* UART support? ('0': no, '1': yes) */ +#define SCB8_UART 0u +/* SPI or UART (SPI | UART) */ +#define SCB8_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB8_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB8_CMD_RESP 1u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB8_EZ 1u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB8_EZ_CMD_RESP 1u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB8_I2C_S_EZ 1u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB8_SPI_S_EZ 1u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB8_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB8_CHIP_TOP_SPI_SEL_NR 1u +/* Number of counters per IP (1..8) */ +#define TCPWM0_CNT_NR 8u +/* Counter width (in number of bits) */ +#define TCPWM0_CNT_CNT_WIDTH 32u +/* Number of counters per IP (1..8) */ +#define TCPWM1_CNT_NR 24u +/* Counter width (in number of bits) */ +#define TCPWM1_CNT_CNT_WIDTH 16u +/* Number of ports supoprting up to 4 COMs */ +#define LCD_NUMPORTS 8u +/* Number of ports supporting up to 8 COMs */ +#define LCD_NUMPORTS8 8u +/* Number of ports supporting up to 16 COMs */ +#define LCD_NUMPORTS16 0u +/* Max number of LCD commons supported */ +#define LCD_CHIP_TOP_COM_NR 8u +/* Max number of LCD pins (total) supported */ +#define LCD_CHIP_TOP_PIN_NR 62u +/* Number of IREF outputs from AREF */ +#define PASS_NR_IREFS 4u +/* Number of CTBs in the Subsystem */ +#define PASS_NR_CTBS 1u +/* Number of CTDACs in the Subsystem */ +#define PASS_NR_CTDACS 1u +/* CTB0 Exists */ +#define PASS_CTB0_EXISTS 1u +/* CTB1 Exists */ +#define PASS_CTB1_EXISTS 0u +/* CTB2 Exists */ +#define PASS_CTB2_EXISTS 0u +/* CTB3 Exists */ +#define PASS_CTB3_EXISTS 0u +/* CTDAC0 Exists */ +#define PASS_CTDAC0_EXISTS 1u +/* CTDAC1 Exists */ +#define PASS_CTDAC1_EXISTS 0u +/* CTDAC2 Exists */ +#define PASS_CTDAC2_EXISTS 0u +/* CTDAC3 Exists */ +#define PASS_CTDAC3_EXISTS 0u +/* Number of SAR channels */ +#define PASS_SAR_SAR_CHANNELS 16u +/* Averaging logic present in SAR */ +#define PASS_SAR_SAR_AVERAGE 1u +/* Range detect logic present in SAR */ +#define PASS_SAR_SAR_RANGEDET 1u +/* Support for UAB sampling */ +#define PASS_SAR_SAR_UAB 0u +#define PASS_CTBM_CTDAC_PRESENT 1u +/* Number of AHB-Lite "hmaster[]" bits ([1, 8]) */ +#define SMIF_MASTER_WIDTH 8u +/* Base address of the SMIF XIP memory region. This address must be a multiple of + the SMIF XIP memory capacity. This address must be a multiple of 64 KB. This + address must be in the [0x0000:0000, 0x1fff:ffff] memory region. The XIP + memory region should NOT overlap with other memory regions. */ +#define SMIF_SMIF_XIP_ADDR 402653184u +/* Capacity of the SMIF XIP memory region. The more significant bits of this + parameter must be '1' and the lesser significant bits of this paramter must + be '0'. E.g., 0xfff0:0000 specifies a 1 MB memory region. Legal values are + {0xffff:0000, 0xfffe:0000, 0xfffc:0000, 0xfff8:0000, 0xfff0:0000, + 0xffe0:0000, ..., 0xe000:0000}. */ +#define SMIF_SMIF_XIP_MASK 4160749568u +/* Cryptography (AES) support ('0' = no support, '1' = support) */ +#define SMIF_CRYPTO 1u +/* Number of external devices supported ([1,4]) */ +#define SMIF_DEVICE_NR 4u +/* External device write support. This is a 4-bit field. Each external device has + a dedicated bit. E.g., if bit 2 is '1', external device 2 has write support. */ +#define SMIF_DEVICE_WR_EN 15u +/* Chip top connect all 8 data pins (0= connect 4 data pins, 1= connect 8 data + pins) */ +#define SMIF_CHIP_TOP_DATA8_PRESENT 1u +/* Number of used spi_select signals (max 4) */ +#define SMIF_CHIP_TOP_SPI_SEL_NR 4u +/* I2S capable? (0=No,1=Yes) */ +#define AUDIOSS_I2S 1u +/* PDM capable? (0=No,1=Yes) */ +#define AUDIOSS_PDM 1u + +/* MMIO Targets Defines */ +#define CY_MMIO_CRYPTO_GROUP_NR 1u +#define CY_MMIO_CRYPTO_SLAVE_NR 1u +#define CY_MMIO_CPUSS_GROUP_NR 2u +#define CY_MMIO_CPUSS_SLAVE_NR 1u +#define CY_MMIO_FAULT_GROUP_NR 2u +#define CY_MMIO_FAULT_SLAVE_NR 2u +#define CY_MMIO_IPC_GROUP_NR 2u +#define CY_MMIO_IPC_SLAVE_NR 3u +#define CY_MMIO_PROT_GROUP_NR 2u +#define CY_MMIO_PROT_SLAVE_NR 4u +#define CY_MMIO_FLASHC_GROUP_NR 2u +#define CY_MMIO_FLASHC_SLAVE_NR 5u +#define CY_MMIO_SRSS_GROUP_NR 2u +#define CY_MMIO_SRSS_SLAVE_NR 6u +#define CY_MMIO_BACKUP_GROUP_NR 2u +#define CY_MMIO_BACKUP_SLAVE_NR 7u +#define CY_MMIO_DW_GROUP_NR 2u +#define CY_MMIO_DW_SLAVE_NR 8u +#define CY_MMIO_EFUSE_GROUP_NR 2u +#define CY_MMIO_EFUSE_SLAVE_NR 12u +#define CY_MMIO_PROFILE_GROUP_NR 2u +#define CY_MMIO_PROFILE_SLAVE_NR 13u +#define CY_MMIO_HSIOM_GROUP_NR 3u +#define CY_MMIO_HSIOM_SLAVE_NR 1u +#define CY_MMIO_GPIO_GROUP_NR 3u +#define CY_MMIO_GPIO_SLAVE_NR 2u +#define CY_MMIO_SMARTIO_GROUP_NR 3u +#define CY_MMIO_SMARTIO_SLAVE_NR 3u +#define CY_MMIO_UDB_GROUP_NR 3u +#define CY_MMIO_UDB_SLAVE_NR 4u +#define CY_MMIO_LPCOMP_GROUP_NR 3u +#define CY_MMIO_LPCOMP_SLAVE_NR 5u +#define CY_MMIO_CSD0_GROUP_NR 3u +#define CY_MMIO_CSD0_SLAVE_NR 6u +#define CY_MMIO_TCPWM0_GROUP_NR 3u +#define CY_MMIO_TCPWM0_SLAVE_NR 8u +#define CY_MMIO_TCPWM1_GROUP_NR 3u +#define CY_MMIO_TCPWM1_SLAVE_NR 9u +#define CY_MMIO_LCD0_GROUP_NR 3u +#define CY_MMIO_LCD0_SLAVE_NR 10u +#define CY_MMIO_BLE_GROUP_NR 3u +#define CY_MMIO_BLE_SLAVE_NR 11u +#define CY_MMIO_USBFS0_GROUP_NR 3u +#define CY_MMIO_USBFS0_SLAVE_NR 12u +#define CY_MMIO_SMIF0_GROUP_NR 4u +#define CY_MMIO_SMIF0_SLAVE_NR 2u +#define CY_MMIO_SCB0_GROUP_NR 6u +#define CY_MMIO_SCB0_SLAVE_NR 1u +#define CY_MMIO_SCB1_GROUP_NR 6u +#define CY_MMIO_SCB1_SLAVE_NR 2u +#define CY_MMIO_SCB2_GROUP_NR 6u +#define CY_MMIO_SCB2_SLAVE_NR 3u +#define CY_MMIO_SCB3_GROUP_NR 6u +#define CY_MMIO_SCB3_SLAVE_NR 4u +#define CY_MMIO_SCB4_GROUP_NR 6u +#define CY_MMIO_SCB4_SLAVE_NR 5u +#define CY_MMIO_SCB5_GROUP_NR 6u +#define CY_MMIO_SCB5_SLAVE_NR 6u +#define CY_MMIO_SCB6_GROUP_NR 6u +#define CY_MMIO_SCB6_SLAVE_NR 7u +#define CY_MMIO_SCB7_GROUP_NR 6u +#define CY_MMIO_SCB7_SLAVE_NR 8u +#define CY_MMIO_SCB8_GROUP_NR 6u +#define CY_MMIO_SCB8_SLAVE_NR 9u +#define CY_MMIO_PASS_GROUP_NR 9u +#define CY_MMIO_PASS_SLAVE_NR 1u +#define CY_MMIO_I2S0_GROUP_NR 10u +#define CY_MMIO_I2S0_SLAVE_NR 1u +#define CY_MMIO_PDM0_GROUP_NR 10u +#define CY_MMIO_PDM0_SLAVE_NR 2u + +/* Backward compatibility definitions */ +#define CPUSS_SYSTEM_INT_NR CPUSS_IRQ_NR +#define CPUSS_SYSTEM_DPSLP_INT_NR CPUSS_DPSLP_IRQ_NR + +#endif /* _PSOC6_01_CONFIG_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_02_config.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_02_config.h new file mode 100644 index 00000000000..ac3d8d9594e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/psoc6_02_config.h @@ -0,0 +1,3948 @@ +/***************************************************************************//** +* \file psoc6_02_config.h +* +* \brief +* PSoC6_02 device configuration header +* +* \note +* Generator version: 1.4.0.1232 +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef _PSOC6_02_CONFIG_H_ +#define _PSOC6_02_CONFIG_H_ + +/* Clock Connections */ +typedef enum +{ + PCLK_SCB0_CLOCK = 0x0000u, /* scb[0].clock */ + PCLK_SCB1_CLOCK = 0x0001u, /* scb[1].clock */ + PCLK_SCB2_CLOCK = 0x0002u, /* scb[2].clock */ + PCLK_SCB3_CLOCK = 0x0003u, /* scb[3].clock */ + PCLK_SCB4_CLOCK = 0x0004u, /* scb[4].clock */ + PCLK_SCB5_CLOCK = 0x0005u, /* scb[5].clock */ + PCLK_SCB6_CLOCK = 0x0006u, /* scb[6].clock */ + PCLK_SCB7_CLOCK = 0x0007u, /* scb[7].clock */ + PCLK_SCB8_CLOCK = 0x0008u, /* scb[8].clock */ + PCLK_SCB9_CLOCK = 0x0009u, /* scb[9].clock */ + PCLK_SCB10_CLOCK = 0x000Au, /* scb[10].clock */ + PCLK_SCB11_CLOCK = 0x000Bu, /* scb[11].clock */ + PCLK_SCB12_CLOCK = 0x000Cu, /* scb[12].clock */ + PCLK_SMARTIO8_CLOCK = 0x000Du, /* smartio[8].clock */ + PCLK_SMARTIO9_CLOCK = 0x000Eu, /* smartio[9].clock */ + PCLK_TCPWM0_CLOCKS0 = 0x000Fu, /* tcpwm[0].clocks[0] */ + PCLK_TCPWM0_CLOCKS1 = 0x0010u, /* tcpwm[0].clocks[1] */ + PCLK_TCPWM0_CLOCKS2 = 0x0011u, /* tcpwm[0].clocks[2] */ + PCLK_TCPWM0_CLOCKS3 = 0x0012u, /* tcpwm[0].clocks[3] */ + PCLK_TCPWM0_CLOCKS4 = 0x0013u, /* tcpwm[0].clocks[4] */ + PCLK_TCPWM0_CLOCKS5 = 0x0014u, /* tcpwm[0].clocks[5] */ + PCLK_TCPWM0_CLOCKS6 = 0x0015u, /* tcpwm[0].clocks[6] */ + PCLK_TCPWM0_CLOCKS7 = 0x0016u, /* tcpwm[0].clocks[7] */ + PCLK_TCPWM1_CLOCKS0 = 0x0017u, /* tcpwm[1].clocks[0] */ + PCLK_TCPWM1_CLOCKS1 = 0x0018u, /* tcpwm[1].clocks[1] */ + PCLK_TCPWM1_CLOCKS2 = 0x0019u, /* tcpwm[1].clocks[2] */ + PCLK_TCPWM1_CLOCKS3 = 0x001Au, /* tcpwm[1].clocks[3] */ + PCLK_TCPWM1_CLOCKS4 = 0x001Bu, /* tcpwm[1].clocks[4] */ + PCLK_TCPWM1_CLOCKS5 = 0x001Cu, /* tcpwm[1].clocks[5] */ + PCLK_TCPWM1_CLOCKS6 = 0x001Du, /* tcpwm[1].clocks[6] */ + PCLK_TCPWM1_CLOCKS7 = 0x001Eu, /* tcpwm[1].clocks[7] */ + PCLK_TCPWM1_CLOCKS8 = 0x001Fu, /* tcpwm[1].clocks[8] */ + PCLK_TCPWM1_CLOCKS9 = 0x0020u, /* tcpwm[1].clocks[9] */ + PCLK_TCPWM1_CLOCKS10 = 0x0021u, /* tcpwm[1].clocks[10] */ + PCLK_TCPWM1_CLOCKS11 = 0x0022u, /* tcpwm[1].clocks[11] */ + PCLK_TCPWM1_CLOCKS12 = 0x0023u, /* tcpwm[1].clocks[12] */ + PCLK_TCPWM1_CLOCKS13 = 0x0024u, /* tcpwm[1].clocks[13] */ + PCLK_TCPWM1_CLOCKS14 = 0x0025u, /* tcpwm[1].clocks[14] */ + PCLK_TCPWM1_CLOCKS15 = 0x0026u, /* tcpwm[1].clocks[15] */ + PCLK_TCPWM1_CLOCKS16 = 0x0027u, /* tcpwm[1].clocks[16] */ + PCLK_TCPWM1_CLOCKS17 = 0x0028u, /* tcpwm[1].clocks[17] */ + PCLK_TCPWM1_CLOCKS18 = 0x0029u, /* tcpwm[1].clocks[18] */ + PCLK_TCPWM1_CLOCKS19 = 0x002Au, /* tcpwm[1].clocks[19] */ + PCLK_TCPWM1_CLOCKS20 = 0x002Bu, /* tcpwm[1].clocks[20] */ + PCLK_TCPWM1_CLOCKS21 = 0x002Cu, /* tcpwm[1].clocks[21] */ + PCLK_TCPWM1_CLOCKS22 = 0x002Du, /* tcpwm[1].clocks[22] */ + PCLK_TCPWM1_CLOCKS23 = 0x002Eu, /* tcpwm[1].clocks[23] */ + PCLK_CSD_CLOCK = 0x002Fu, /* csd.clock */ + PCLK_LCD_CLOCK = 0x0030u, /* lcd.clock */ + PCLK_PROFILE_CLOCK_PROFILE = 0x0031u, /* profile.clock_profile */ + PCLK_CPUSS_CLOCK_TRACE_IN = 0x0032u, /* cpuss.clock_trace_in */ + PCLK_PASS_CLOCK_PUMP_PERI = 0x0033u, /* pass.clock_pump_peri */ + PCLK_PASS_CLOCK_SAR = 0x0034u, /* pass.clock_sar */ + PCLK_USB_CLOCK_DEV_BRS = 0x0035u /* usb.clock_dev_brs */ +} en_clk_dst_t; + +/* Trigger Group */ +/* This section contains the enums related to the Trigger multiplexer (TrigMux) driver. +* Refer to the Cypress Peripheral Driver Library Documentation, section Trigger multiplexer (TrigMux) -> Enumerated Types for details. +*/ +/* Trigger Group Inputs */ +/* Trigger Input Group 0 - P-DMA0 Request Assignments */ +typedef enum +{ + TRIG_IN_MUX_0_PDMA0_TR_OUT0 = 0x00000001u, /* cpuss.dw0_tr_out[0] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT1 = 0x00000002u, /* cpuss.dw0_tr_out[1] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT2 = 0x00000003u, /* cpuss.dw0_tr_out[2] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT3 = 0x00000004u, /* cpuss.dw0_tr_out[3] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT4 = 0x00000005u, /* cpuss.dw0_tr_out[4] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT5 = 0x00000006u, /* cpuss.dw0_tr_out[5] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT6 = 0x00000007u, /* cpuss.dw0_tr_out[6] */ + TRIG_IN_MUX_0_PDMA0_TR_OUT7 = 0x00000008u, /* cpuss.dw0_tr_out[7] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT0 = 0x00000009u, /* cpuss.dw1_tr_out[0] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT1 = 0x0000000Au, /* cpuss.dw1_tr_out[1] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT2 = 0x0000000Bu, /* cpuss.dw1_tr_out[2] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT3 = 0x0000000Cu, /* cpuss.dw1_tr_out[3] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT4 = 0x0000000Du, /* cpuss.dw1_tr_out[4] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT5 = 0x0000000Eu, /* cpuss.dw1_tr_out[5] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT6 = 0x0000000Fu, /* cpuss.dw1_tr_out[6] */ + TRIG_IN_MUX_0_PDMA1_TR_OUT7 = 0x00000010u, /* cpuss.dw1_tr_out[7] */ + TRIG_IN_MUX_0_TCPWM0_TR_OVERFLOW0 = 0x00000011u, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_0_TCPWM0_TR_COMPARE_MATCH0 = 0x00000012u, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_0_TCPWM0_TR_UNDERFLOW0 = 0x00000013u, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_0_TCPWM0_TR_OVERFLOW1 = 0x00000014u, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_0_TCPWM0_TR_COMPARE_MATCH1 = 0x00000015u, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_0_TCPWM0_TR_UNDERFLOW1 = 0x00000016u, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_0_TCPWM0_TR_OVERFLOW2 = 0x00000017u, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_0_TCPWM0_TR_COMPARE_MATCH2 = 0x00000018u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_0_TCPWM0_TR_UNDERFLOW2 = 0x00000019u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_0_TCPWM0_TR_OVERFLOW3 = 0x0000001Au, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_0_TCPWM0_TR_COMPARE_MATCH3 = 0x0000001Bu, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_0_TCPWM0_TR_UNDERFLOW3 = 0x0000001Cu, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW0 = 0x0000001Du, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH0 = 0x0000001Eu, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW0 = 0x0000001Fu, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW1 = 0x00000020u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH1 = 0x00000021u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW1 = 0x00000022u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW2 = 0x00000023u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH2 = 0x00000024u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW2 = 0x00000025u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW3 = 0x00000026u, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH3 = 0x00000027u, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW3 = 0x00000028u, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW4 = 0x00000029u, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH4 = 0x0000002Au, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW4 = 0x0000002Bu, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW5 = 0x0000002Cu, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH5 = 0x0000002Du, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW5 = 0x0000002Eu, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW6 = 0x0000002Fu, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH6 = 0x00000030u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW6 = 0x00000031u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW7 = 0x00000032u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH7 = 0x00000033u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW7 = 0x00000034u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW8 = 0x00000035u, /* tcpwm[1].tr_overflow[8] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH8 = 0x00000036u, /* tcpwm[1].tr_compare_match[8] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW8 = 0x00000037u, /* tcpwm[1].tr_underflow[8] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW9 = 0x00000038u, /* tcpwm[1].tr_overflow[9] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH9 = 0x00000039u, /* tcpwm[1].tr_compare_match[9] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW9 = 0x0000003Au, /* tcpwm[1].tr_underflow[9] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW10 = 0x0000003Bu, /* tcpwm[1].tr_overflow[10] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH10 = 0x0000003Cu, /* tcpwm[1].tr_compare_match[10] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW10 = 0x0000003Du, /* tcpwm[1].tr_underflow[10] */ + TRIG_IN_MUX_0_TCPWM1_TR_OVERFLOW11 = 0x0000003Eu, /* tcpwm[1].tr_overflow[11] */ + TRIG_IN_MUX_0_TCPWM1_TR_COMPARE_MATCH11 = 0x0000003Fu, /* tcpwm[1].tr_compare_match[11] */ + TRIG_IN_MUX_0_TCPWM1_TR_UNDERFLOW11 = 0x00000040u, /* tcpwm[1].tr_underflow[11] */ + TRIG_IN_MUX_0_MDMA_TR_OUT0 = 0x00000041u, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_0_MDMA_TR_OUT1 = 0x00000042u, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_0_MDMA_TR_OUT2 = 0x00000043u, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_0_MDMA_TR_OUT3 = 0x00000044u, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT0 = 0x00000045u, /* peri.tr_io_input[0] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT1 = 0x00000046u, /* peri.tr_io_input[1] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT2 = 0x00000047u, /* peri.tr_io_input[2] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT3 = 0x00000048u, /* peri.tr_io_input[3] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT4 = 0x00000049u, /* peri.tr_io_input[4] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT5 = 0x0000004Au, /* peri.tr_io_input[5] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT6 = 0x0000004Bu, /* peri.tr_io_input[6] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT7 = 0x0000004Cu, /* peri.tr_io_input[7] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT8 = 0x0000004Du, /* peri.tr_io_input[8] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT9 = 0x0000004Eu, /* peri.tr_io_input[9] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT10 = 0x0000004Fu, /* peri.tr_io_input[10] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT11 = 0x00000050u, /* peri.tr_io_input[11] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT12 = 0x00000051u, /* peri.tr_io_input[12] */ + TRIG_IN_MUX_0_HSIOM_TR_OUT13 = 0x00000052u, /* peri.tr_io_input[13] */ + TRIG_IN_MUX_0_CTI_TR_OUT0 = 0x00000053u, /* cpuss.cti_tr_out[0] */ + TRIG_IN_MUX_0_CTI_TR_OUT1 = 0x00000054u, /* cpuss.cti_tr_out[1] */ + TRIG_IN_MUX_0_FAULT_TR_OUT0 = 0x00000055u, /* cpuss.tr_fault[0] */ + TRIG_IN_MUX_0_FAULT_TR_OUT1 = 0x00000056u /* cpuss.tr_fault[1] */ +} en_trig_input_pdma0_tr_t; + +/* Trigger Input Group 1 - P-DMA1 Request Assignments */ +typedef enum +{ + TRIG_IN_MUX_1_PDMA0_TR_OUT0 = 0x00000101u, /* cpuss.dw0_tr_out[0] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT1 = 0x00000102u, /* cpuss.dw0_tr_out[1] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT2 = 0x00000103u, /* cpuss.dw0_tr_out[2] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT3 = 0x00000104u, /* cpuss.dw0_tr_out[3] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT4 = 0x00000105u, /* cpuss.dw0_tr_out[4] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT5 = 0x00000106u, /* cpuss.dw0_tr_out[5] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT6 = 0x00000107u, /* cpuss.dw0_tr_out[6] */ + TRIG_IN_MUX_1_PDMA0_TR_OUT7 = 0x00000108u, /* cpuss.dw0_tr_out[7] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT0 = 0x00000109u, /* cpuss.dw1_tr_out[0] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT1 = 0x0000010Au, /* cpuss.dw1_tr_out[1] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT2 = 0x0000010Bu, /* cpuss.dw1_tr_out[2] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT3 = 0x0000010Cu, /* cpuss.dw1_tr_out[3] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT4 = 0x0000010Du, /* cpuss.dw1_tr_out[4] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT5 = 0x0000010Eu, /* cpuss.dw1_tr_out[5] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT6 = 0x0000010Fu, /* cpuss.dw1_tr_out[6] */ + TRIG_IN_MUX_1_PDMA1_TR_OUT7 = 0x00000110u, /* cpuss.dw1_tr_out[7] */ + TRIG_IN_MUX_1_TCPWM0_TR_OVERFLOW4 = 0x00000111u, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_1_TCPWM0_TR_COMPARE_MATCH4 = 0x00000112u, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_1_TCPWM0_TR_UNDERFLOW4 = 0x00000113u, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_1_TCPWM0_TR_OVERFLOW5 = 0x00000114u, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_1_TCPWM0_TR_COMPARE_MATCH5 = 0x00000115u, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_1_TCPWM0_TR_UNDERFLOW5 = 0x00000116u, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_1_TCPWM0_TR_OVERFLOW6 = 0x00000117u, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_1_TCPWM0_TR_COMPARE_MATCH6 = 0x00000118u, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_1_TCPWM0_TR_UNDERFLOW6 = 0x00000119u, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_1_TCPWM0_TR_OVERFLOW7 = 0x0000011Au, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_1_TCPWM0_TR_COMPARE_MATCH7 = 0x0000011Bu, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_1_TCPWM0_TR_UNDERFLOW7 = 0x0000011Cu, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW12 = 0x0000011Du, /* tcpwm[1].tr_overflow[12] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH12 = 0x0000011Eu, /* tcpwm[1].tr_compare_match[12] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW12 = 0x0000011Fu, /* tcpwm[1].tr_underflow[12] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW13 = 0x00000120u, /* tcpwm[1].tr_overflow[13] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH13 = 0x00000121u, /* tcpwm[1].tr_compare_match[13] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW13 = 0x00000122u, /* tcpwm[1].tr_underflow[13] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW14 = 0x00000123u, /* tcpwm[1].tr_overflow[14] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH14 = 0x00000124u, /* tcpwm[1].tr_compare_match[14] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW14 = 0x00000125u, /* tcpwm[1].tr_underflow[14] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW15 = 0x00000126u, /* tcpwm[1].tr_overflow[15] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH15 = 0x00000127u, /* tcpwm[1].tr_compare_match[15] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW15 = 0x00000128u, /* tcpwm[1].tr_underflow[15] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW16 = 0x00000129u, /* tcpwm[1].tr_overflow[16] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH16 = 0x0000012Au, /* tcpwm[1].tr_compare_match[16] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW16 = 0x0000012Bu, /* tcpwm[1].tr_underflow[16] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW17 = 0x0000012Cu, /* tcpwm[1].tr_overflow[17] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH17 = 0x0000012Du, /* tcpwm[1].tr_compare_match[17] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW17 = 0x0000012Eu, /* tcpwm[1].tr_underflow[17] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW18 = 0x0000012Fu, /* tcpwm[1].tr_overflow[18] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH18 = 0x00000130u, /* tcpwm[1].tr_compare_match[18] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW18 = 0x00000131u, /* tcpwm[1].tr_underflow[18] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW19 = 0x00000132u, /* tcpwm[1].tr_overflow[19] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH19 = 0x00000133u, /* tcpwm[1].tr_compare_match[19] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW19 = 0x00000134u, /* tcpwm[1].tr_underflow[19] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW20 = 0x00000135u, /* tcpwm[1].tr_overflow[20] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH20 = 0x00000136u, /* tcpwm[1].tr_compare_match[20] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW20 = 0x00000137u, /* tcpwm[1].tr_underflow[20] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW21 = 0x00000138u, /* tcpwm[1].tr_overflow[21] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH21 = 0x00000139u, /* tcpwm[1].tr_compare_match[21] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW21 = 0x0000013Au, /* tcpwm[1].tr_underflow[21] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW22 = 0x0000013Bu, /* tcpwm[1].tr_overflow[22] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH22 = 0x0000013Cu, /* tcpwm[1].tr_compare_match[22] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW22 = 0x0000013Du, /* tcpwm[1].tr_underflow[22] */ + TRIG_IN_MUX_1_TCPWM1_TR_OVERFLOW23 = 0x0000013Eu, /* tcpwm[1].tr_overflow[23] */ + TRIG_IN_MUX_1_TCPWM1_TR_COMPARE_MATCH23 = 0x0000013Fu, /* tcpwm[1].tr_compare_match[23] */ + TRIG_IN_MUX_1_TCPWM1_TR_UNDERFLOW23 = 0x00000140u, /* tcpwm[1].tr_underflow[23] */ + TRIG_IN_MUX_1_MDMA_TR_OUT0 = 0x00000141u, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_1_MDMA_TR_OUT1 = 0x00000142u, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_1_MDMA_TR_OUT2 = 0x00000143u, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_1_MDMA_TR_OUT3 = 0x00000144u, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_1_CSD_DONE = 0x00000145u, /* csd.tr_adc_done */ + TRIG_IN_MUX_1_HSIOM_TR_OUT14 = 0x00000146u, /* peri.tr_io_input[14] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT15 = 0x00000147u, /* peri.tr_io_input[15] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT16 = 0x00000148u, /* peri.tr_io_input[16] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT17 = 0x00000149u, /* peri.tr_io_input[17] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT18 = 0x0000014Au, /* peri.tr_io_input[18] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT19 = 0x0000014Bu, /* peri.tr_io_input[19] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT20 = 0x0000014Cu, /* peri.tr_io_input[20] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT21 = 0x0000014Du, /* peri.tr_io_input[21] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT22 = 0x0000014Eu, /* peri.tr_io_input[22] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT23 = 0x0000014Fu, /* peri.tr_io_input[23] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT24 = 0x00000150u, /* peri.tr_io_input[24] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT25 = 0x00000151u, /* peri.tr_io_input[25] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT26 = 0x00000152u, /* peri.tr_io_input[26] */ + TRIG_IN_MUX_1_HSIOM_TR_OUT27 = 0x00000153u, /* peri.tr_io_input[27] */ + TRIG_IN_MUX_1_LPCOMP_DSI_COMP0 = 0x00000154u, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_1_LPCOMP_DSI_COMP1 = 0x00000155u /* lpcomp.dsi_comp1 */ +} en_trig_input_pdma1_tr_t; + +/* Trigger Input Group 2 - TCPWM0 trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_2_PDMA0_TR_OUT0 = 0x00000201u, /* cpuss.dw0_tr_out[0] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT1 = 0x00000202u, /* cpuss.dw0_tr_out[1] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT2 = 0x00000203u, /* cpuss.dw0_tr_out[2] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT3 = 0x00000204u, /* cpuss.dw0_tr_out[3] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT4 = 0x00000205u, /* cpuss.dw0_tr_out[4] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT5 = 0x00000206u, /* cpuss.dw0_tr_out[5] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT6 = 0x00000207u, /* cpuss.dw0_tr_out[6] */ + TRIG_IN_MUX_2_PDMA0_TR_OUT7 = 0x00000208u, /* cpuss.dw0_tr_out[7] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW0 = 0x00000209u, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH0 = 0x0000020Au, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW0 = 0x0000020Bu, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW1 = 0x0000020Cu, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH1 = 0x0000020Du, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW1 = 0x0000020Eu, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW2 = 0x0000020Fu, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH2 = 0x00000210u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW2 = 0x00000211u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW3 = 0x00000212u, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH3 = 0x00000213u, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW3 = 0x00000214u, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW4 = 0x00000215u, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH4 = 0x00000216u, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW4 = 0x00000217u, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW5 = 0x00000218u, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH5 = 0x00000219u, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW5 = 0x0000021Au, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW6 = 0x0000021Bu, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH6 = 0x0000021Cu, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW6 = 0x0000021Du, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_2_TCPWM0_TR_OVERFLOW7 = 0x0000021Eu, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_2_TCPWM0_TR_COMPARE_MATCH7 = 0x0000021Fu, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_2_TCPWM0_TR_UNDERFLOW7 = 0x00000220u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW0 = 0x00000221u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH0 = 0x00000222u, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW0 = 0x00000223u, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW1 = 0x00000224u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH1 = 0x00000225u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW1 = 0x00000226u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW2 = 0x00000227u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH2 = 0x00000228u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW2 = 0x00000229u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW3 = 0x0000022Au, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH3 = 0x0000022Bu, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW3 = 0x0000022Cu, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW4 = 0x0000022Du, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH4 = 0x0000022Eu, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW4 = 0x0000022Fu, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW5 = 0x00000230u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH5 = 0x00000231u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW5 = 0x00000232u, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW6 = 0x00000233u, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH6 = 0x00000234u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW6 = 0x00000235u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_2_TCPWM1_TR_OVERFLOW7 = 0x00000236u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_2_TCPWM1_TR_COMPARE_MATCH7 = 0x00000237u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_2_TCPWM1_TR_UNDERFLOW7 = 0x00000238u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_2_MDMA_TR_OUT0 = 0x00000239u, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_2_MDMA_TR_OUT1 = 0x0000023Au, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_2_MDMA_TR_OUT2 = 0x0000023Bu, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_2_MDMA_TR_OUT3 = 0x0000023Cu, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_2_SCB_I2C_SCL0 = 0x0000023Du, /* scb[0].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX0 = 0x0000023Eu, /* scb[0].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX0 = 0x0000023Fu, /* scb[0].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL1 = 0x00000240u, /* scb[1].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX1 = 0x00000241u, /* scb[1].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX1 = 0x00000242u, /* scb[1].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL2 = 0x00000243u, /* scb[2].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX2 = 0x00000244u, /* scb[2].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX2 = 0x00000245u, /* scb[2].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL3 = 0x00000246u, /* scb[3].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX3 = 0x00000247u, /* scb[3].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX3 = 0x00000248u, /* scb[3].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL4 = 0x00000249u, /* scb[4].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX4 = 0x0000024Au, /* scb[4].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX4 = 0x0000024Bu, /* scb[4].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL5 = 0x0000024Cu, /* scb[5].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX5 = 0x0000024Du, /* scb[5].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX5 = 0x0000024Eu, /* scb[5].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL6 = 0x0000024Fu, /* scb[6].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX6 = 0x00000250u, /* scb[6].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX6 = 0x00000251u, /* scb[6].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL7 = 0x00000252u, /* scb[7].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX7 = 0x00000253u, /* scb[7].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX7 = 0x00000254u, /* scb[7].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL8 = 0x00000255u, /* scb[8].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX8 = 0x00000256u, /* scb[8].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX8 = 0x00000257u, /* scb[8].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL9 = 0x00000258u, /* scb[9].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX9 = 0x00000259u, /* scb[9].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX9 = 0x0000025Au, /* scb[9].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL10 = 0x0000025Bu, /* scb[10].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX10 = 0x0000025Cu, /* scb[10].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX10 = 0x0000025Du, /* scb[10].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL11 = 0x0000025Eu, /* scb[11].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX11 = 0x0000025Fu, /* scb[11].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX11 = 0x00000260u, /* scb[11].tr_rx_req */ + TRIG_IN_MUX_2_SCB_I2C_SCL12 = 0x00000261u, /* scb[12].tr_i2c_scl_filtered */ + TRIG_IN_MUX_2_SCB_TX12 = 0x00000262u, /* scb[12].tr_tx_req */ + TRIG_IN_MUX_2_SCB_RX12 = 0x00000263u, /* scb[12].tr_rx_req */ + TRIG_IN_MUX_2_SMIF_TX = 0x00000264u, /* smif.tr_tx_req */ + TRIG_IN_MUX_2_SMIF_RX = 0x00000265u, /* smif.tr_rx_req */ + TRIG_IN_MUX_2_USB_DMA0 = 0x00000266u, /* usb.dma_req[0] */ + TRIG_IN_MUX_2_USB_DMA1 = 0x00000267u, /* usb.dma_req[1] */ + TRIG_IN_MUX_2_USB_DMA2 = 0x00000268u, /* usb.dma_req[2] */ + TRIG_IN_MUX_2_USB_DMA3 = 0x00000269u, /* usb.dma_req[3] */ + TRIG_IN_MUX_2_USB_DMA4 = 0x0000026Au, /* usb.dma_req[4] */ + TRIG_IN_MUX_2_USB_DMA5 = 0x0000026Bu, /* usb.dma_req[5] */ + TRIG_IN_MUX_2_USB_DMA6 = 0x0000026Cu, /* usb.dma_req[6] */ + TRIG_IN_MUX_2_USB_DMA7 = 0x0000026Du, /* usb.dma_req[7] */ + TRIG_IN_MUX_2_I2S_TX0 = 0x0000026Eu, /* audioss[0].tr_i2s_tx_req */ + TRIG_IN_MUX_2_I2S_RX0 = 0x0000026Fu, /* audioss[0].tr_i2s_rx_req */ + TRIG_IN_MUX_2_PDM_RX0 = 0x00000270u, /* audioss[0].tr_pdm_rx_req */ + TRIG_IN_MUX_2_I2S_TX1 = 0x00000271u, /* audioss[1].tr_i2s_tx_req */ + TRIG_IN_MUX_2_I2S_RX1 = 0x00000272u, /* audioss[1].tr_i2s_rx_req */ + TRIG_IN_MUX_2_PASS_SAR_DONE = 0x00000273u, /* pass.tr_sar_out */ + TRIG_IN_MUX_2_CSD_SENSE = 0x00000274u, /* csd.dsi_sense_out */ + TRIG_IN_MUX_2_HSIOM_TR_OUT0 = 0x00000275u, /* peri.tr_io_input[0] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT1 = 0x00000276u, /* peri.tr_io_input[1] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT2 = 0x00000277u, /* peri.tr_io_input[2] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT3 = 0x00000278u, /* peri.tr_io_input[3] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT4 = 0x00000279u, /* peri.tr_io_input[4] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT5 = 0x0000027Au, /* peri.tr_io_input[5] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT6 = 0x0000027Bu, /* peri.tr_io_input[6] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT7 = 0x0000027Cu, /* peri.tr_io_input[7] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT8 = 0x0000027Du, /* peri.tr_io_input[8] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT9 = 0x0000027Eu, /* peri.tr_io_input[9] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT10 = 0x0000027Fu, /* peri.tr_io_input[10] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT11 = 0x00000280u, /* peri.tr_io_input[11] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT12 = 0x00000281u, /* peri.tr_io_input[12] */ + TRIG_IN_MUX_2_HSIOM_TR_OUT13 = 0x00000282u, /* peri.tr_io_input[13] */ + TRIG_IN_MUX_2_CTI_TR_OUT0 = 0x00000283u, /* cpuss.cti_tr_out[0] */ + TRIG_IN_MUX_2_CTI_TR_OUT1 = 0x00000284u, /* cpuss.cti_tr_out[1] */ + TRIG_IN_MUX_2_LPCOMP_DSI_COMP0 = 0x00000285u, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_2_LPCOMP_DSI_COMP1 = 0x00000286u /* lpcomp.dsi_comp1 */ +} en_trig_input_tcpwm0_t; + +/* Trigger Input Group 3 - TCPWM1 trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_3_PDMA1_TR_OUT0 = 0x00000301u, /* cpuss.dw1_tr_out[0] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT1 = 0x00000302u, /* cpuss.dw1_tr_out[1] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT2 = 0x00000303u, /* cpuss.dw1_tr_out[2] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT3 = 0x00000304u, /* cpuss.dw1_tr_out[3] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT4 = 0x00000305u, /* cpuss.dw1_tr_out[4] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT5 = 0x00000306u, /* cpuss.dw1_tr_out[5] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT6 = 0x00000307u, /* cpuss.dw1_tr_out[6] */ + TRIG_IN_MUX_3_PDMA1_TR_OUT7 = 0x00000308u, /* cpuss.dw1_tr_out[7] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW0 = 0x00000309u, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH0 = 0x0000030Au, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW0 = 0x0000030Bu, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW1 = 0x0000030Cu, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH1 = 0x0000030Du, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW1 = 0x0000030Eu, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW2 = 0x0000030Fu, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH2 = 0x00000310u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW2 = 0x00000311u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW3 = 0x00000312u, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH3 = 0x00000313u, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW3 = 0x00000314u, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW4 = 0x00000315u, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH4 = 0x00000316u, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW4 = 0x00000317u, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW5 = 0x00000318u, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH5 = 0x00000319u, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW5 = 0x0000031Au, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW6 = 0x0000031Bu, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH6 = 0x0000031Cu, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW6 = 0x0000031Du, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_3_TCPWM0_TR_OVERFLOW7 = 0x0000031Eu, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_3_TCPWM0_TR_COMPARE_MATCH7 = 0x0000031Fu, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_3_TCPWM0_TR_UNDERFLOW7 = 0x00000320u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW0 = 0x00000321u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH0 = 0x00000322u, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW0 = 0x00000323u, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW1 = 0x00000324u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH1 = 0x00000325u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW1 = 0x00000326u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW2 = 0x00000327u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH2 = 0x00000328u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW2 = 0x00000329u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW3 = 0x0000032Au, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH3 = 0x0000032Bu, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW3 = 0x0000032Cu, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW4 = 0x0000032Du, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH4 = 0x0000032Eu, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW4 = 0x0000032Fu, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW5 = 0x00000330u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH5 = 0x00000331u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW5 = 0x00000332u, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW6 = 0x00000333u, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH6 = 0x00000334u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW6 = 0x00000335u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_3_TCPWM1_TR_OVERFLOW7 = 0x00000336u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_3_TCPWM1_TR_COMPARE_MATCH7 = 0x00000337u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_3_TCPWM1_TR_UNDERFLOW7 = 0x00000338u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_3_MDMA_TR_OUT0 = 0x00000339u, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_3_MDMA_TR_OUT1 = 0x0000033Au, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_3_MDMA_TR_OUT2 = 0x0000033Bu, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_3_MDMA_TR_OUT3 = 0x0000033Cu, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_3_SCB_I2C_SCL0 = 0x0000033Du, /* scb[0].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX0 = 0x0000033Eu, /* scb[0].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX0 = 0x0000033Fu, /* scb[0].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL1 = 0x00000340u, /* scb[1].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX1 = 0x00000341u, /* scb[1].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX1 = 0x00000342u, /* scb[1].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL2 = 0x00000343u, /* scb[2].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX2 = 0x00000344u, /* scb[2].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX2 = 0x00000345u, /* scb[2].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL3 = 0x00000346u, /* scb[3].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX3 = 0x00000347u, /* scb[3].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX3 = 0x00000348u, /* scb[3].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL4 = 0x00000349u, /* scb[4].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX4 = 0x0000034Au, /* scb[4].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX4 = 0x0000034Bu, /* scb[4].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL5 = 0x0000034Cu, /* scb[5].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX5 = 0x0000034Du, /* scb[5].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX5 = 0x0000034Eu, /* scb[5].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL6 = 0x0000034Fu, /* scb[6].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX6 = 0x00000350u, /* scb[6].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX6 = 0x00000351u, /* scb[6].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL7 = 0x00000352u, /* scb[7].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX7 = 0x00000353u, /* scb[7].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX7 = 0x00000354u, /* scb[7].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL8 = 0x00000355u, /* scb[8].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX8 = 0x00000356u, /* scb[8].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX8 = 0x00000357u, /* scb[8].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL9 = 0x00000358u, /* scb[9].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX9 = 0x00000359u, /* scb[9].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX9 = 0x0000035Au, /* scb[9].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL10 = 0x0000035Bu, /* scb[10].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX10 = 0x0000035Cu, /* scb[10].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX10 = 0x0000035Du, /* scb[10].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL11 = 0x0000035Eu, /* scb[11].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX11 = 0x0000035Fu, /* scb[11].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX11 = 0x00000360u, /* scb[11].tr_rx_req */ + TRIG_IN_MUX_3_SCB_I2C_SCL12 = 0x00000361u, /* scb[12].tr_i2c_scl_filtered */ + TRIG_IN_MUX_3_SCB_TX12 = 0x00000362u, /* scb[12].tr_tx_req */ + TRIG_IN_MUX_3_SCB_RX12 = 0x00000363u, /* scb[12].tr_rx_req */ + TRIG_IN_MUX_3_SMIF_TX = 0x00000364u, /* smif.tr_tx_req */ + TRIG_IN_MUX_3_SMIF_RX = 0x00000365u, /* smif.tr_rx_req */ + TRIG_IN_MUX_3_USB_DMA0 = 0x00000366u, /* usb.dma_req[0] */ + TRIG_IN_MUX_3_USB_DMA1 = 0x00000367u, /* usb.dma_req[1] */ + TRIG_IN_MUX_3_USB_DMA2 = 0x00000368u, /* usb.dma_req[2] */ + TRIG_IN_MUX_3_USB_DMA3 = 0x00000369u, /* usb.dma_req[3] */ + TRIG_IN_MUX_3_USB_DMA4 = 0x0000036Au, /* usb.dma_req[4] */ + TRIG_IN_MUX_3_USB_DMA5 = 0x0000036Bu, /* usb.dma_req[5] */ + TRIG_IN_MUX_3_USB_DMA6 = 0x0000036Cu, /* usb.dma_req[6] */ + TRIG_IN_MUX_3_USB_DMA7 = 0x0000036Du, /* usb.dma_req[7] */ + TRIG_IN_MUX_3_I2S_TX0 = 0x0000036Eu, /* audioss[0].tr_i2s_tx_req */ + TRIG_IN_MUX_3_I2S_RX0 = 0x0000036Fu, /* audioss[0].tr_i2s_rx_req */ + TRIG_IN_MUX_3_PDM_RX0 = 0x00000370u, /* audioss[0].tr_pdm_rx_req */ + TRIG_IN_MUX_3_I2S_TX1 = 0x00000371u, /* audioss[1].tr_i2s_tx_req */ + TRIG_IN_MUX_3_I2S_RX1 = 0x00000372u, /* audioss[1].tr_i2s_rx_req */ + TRIG_IN_MUX_3_PASS_SAR_DONE = 0x00000373u, /* pass.tr_sar_out */ + TRIG_IN_MUX_3_CSD_SENSE = 0x00000374u, /* csd.dsi_sense_out */ + TRIG_IN_MUX_3_HSIOM_TR_OUT0 = 0x00000375u, /* peri.tr_io_input[14] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT1 = 0x00000376u, /* peri.tr_io_input[15] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT2 = 0x00000377u, /* peri.tr_io_input[16] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT3 = 0x00000378u, /* peri.tr_io_input[17] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT4 = 0x00000379u, /* peri.tr_io_input[18] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT5 = 0x0000037Au, /* peri.tr_io_input[19] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT6 = 0x0000037Bu, /* peri.tr_io_input[20] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT7 = 0x0000037Cu, /* peri.tr_io_input[21] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT8 = 0x0000037Du, /* peri.tr_io_input[22] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT9 = 0x0000037Eu, /* peri.tr_io_input[23] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT10 = 0x0000037Fu, /* peri.tr_io_input[24] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT11 = 0x00000380u, /* peri.tr_io_input[25] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT12 = 0x00000381u, /* peri.tr_io_input[26] */ + TRIG_IN_MUX_3_HSIOM_TR_OUT13 = 0x00000382u, /* peri.tr_io_input[27] */ + TRIG_IN_MUX_3_FAULT_TR_OUT0 = 0x00000383u, /* cpuss.tr_fault[0] */ + TRIG_IN_MUX_3_FAULT_TR_OUT1 = 0x00000384u, /* cpuss.tr_fault[1] */ + TRIG_IN_MUX_3_LPCOMP_DSI_COMP0 = 0x00000385u, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_3_LPCOMP_DSI_COMP1 = 0x00000386u /* lpcomp.dsi_comp1 */ +} en_trig_input_tcpwm1_t; + +/* Trigger Input Group 4 - HSIOM trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_4_PDMA0_TR_OUT0 = 0x00000401u, /* cpuss.dw0_tr_out[0] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT1 = 0x00000402u, /* cpuss.dw0_tr_out[1] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT2 = 0x00000403u, /* cpuss.dw0_tr_out[2] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT3 = 0x00000404u, /* cpuss.dw0_tr_out[3] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT4 = 0x00000405u, /* cpuss.dw0_tr_out[4] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT5 = 0x00000406u, /* cpuss.dw0_tr_out[5] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT6 = 0x00000407u, /* cpuss.dw0_tr_out[6] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT7 = 0x00000408u, /* cpuss.dw0_tr_out[7] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT8 = 0x00000409u, /* cpuss.dw0_tr_out[8] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT9 = 0x0000040Au, /* cpuss.dw0_tr_out[9] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT10 = 0x0000040Bu, /* cpuss.dw0_tr_out[10] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT11 = 0x0000040Cu, /* cpuss.dw0_tr_out[11] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT12 = 0x0000040Du, /* cpuss.dw0_tr_out[12] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT13 = 0x0000040Eu, /* cpuss.dw0_tr_out[13] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT14 = 0x0000040Fu, /* cpuss.dw0_tr_out[14] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT15 = 0x00000410u, /* cpuss.dw0_tr_out[15] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT16 = 0x00000411u, /* cpuss.dw0_tr_out[16] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT17 = 0x00000412u, /* cpuss.dw0_tr_out[17] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT18 = 0x00000413u, /* cpuss.dw0_tr_out[18] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT19 = 0x00000414u, /* cpuss.dw0_tr_out[19] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT20 = 0x00000415u, /* cpuss.dw0_tr_out[20] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT21 = 0x00000416u, /* cpuss.dw0_tr_out[21] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT22 = 0x00000417u, /* cpuss.dw0_tr_out[22] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT23 = 0x00000418u, /* cpuss.dw0_tr_out[23] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT24 = 0x00000419u, /* cpuss.dw0_tr_out[24] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT25 = 0x0000041Au, /* cpuss.dw0_tr_out[25] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT26 = 0x0000041Bu, /* cpuss.dw0_tr_out[26] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT27 = 0x0000041Cu, /* cpuss.dw0_tr_out[27] */ + TRIG_IN_MUX_4_PDMA0_TR_OUT28 = 0x0000041Du, /* cpuss.dw0_tr_out[28] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT0 = 0x0000041Eu, /* cpuss.dw1_tr_out[0] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT1 = 0x0000041Fu, /* cpuss.dw1_tr_out[1] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT2 = 0x00000420u, /* cpuss.dw1_tr_out[2] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT3 = 0x00000421u, /* cpuss.dw1_tr_out[3] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT4 = 0x00000422u, /* cpuss.dw1_tr_out[4] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT5 = 0x00000423u, /* cpuss.dw1_tr_out[5] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT6 = 0x00000424u, /* cpuss.dw1_tr_out[6] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT7 = 0x00000425u, /* cpuss.dw1_tr_out[7] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT8 = 0x00000426u, /* cpuss.dw1_tr_out[8] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT9 = 0x00000427u, /* cpuss.dw1_tr_out[9] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT10 = 0x00000428u, /* cpuss.dw1_tr_out[10] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT11 = 0x00000429u, /* cpuss.dw1_tr_out[11] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT12 = 0x0000042Au, /* cpuss.dw1_tr_out[12] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT13 = 0x0000042Bu, /* cpuss.dw1_tr_out[13] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT14 = 0x0000042Cu, /* cpuss.dw1_tr_out[14] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT15 = 0x0000042Du, /* cpuss.dw1_tr_out[15] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT16 = 0x0000042Eu, /* cpuss.dw1_tr_out[16] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT17 = 0x0000042Fu, /* cpuss.dw1_tr_out[17] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT18 = 0x00000430u, /* cpuss.dw1_tr_out[18] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT19 = 0x00000431u, /* cpuss.dw1_tr_out[19] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT20 = 0x00000432u, /* cpuss.dw1_tr_out[20] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT21 = 0x00000433u, /* cpuss.dw1_tr_out[21] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT22 = 0x00000434u, /* cpuss.dw1_tr_out[22] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT23 = 0x00000435u, /* cpuss.dw1_tr_out[23] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT24 = 0x00000436u, /* cpuss.dw1_tr_out[24] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT25 = 0x00000437u, /* cpuss.dw1_tr_out[25] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT26 = 0x00000438u, /* cpuss.dw1_tr_out[26] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT27 = 0x00000439u, /* cpuss.dw1_tr_out[27] */ + TRIG_IN_MUX_4_PDMA1_TR_OUT28 = 0x0000043Au, /* cpuss.dw1_tr_out[28] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW0 = 0x0000043Bu, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH0 = 0x0000043Cu, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW0 = 0x0000043Du, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW1 = 0x0000043Eu, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH1 = 0x0000043Fu, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW1 = 0x00000440u, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW2 = 0x00000441u, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH2 = 0x00000442u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW2 = 0x00000443u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW3 = 0x00000444u, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH3 = 0x00000445u, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW3 = 0x00000446u, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW4 = 0x00000447u, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH4 = 0x00000448u, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW4 = 0x00000449u, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW5 = 0x0000044Au, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH5 = 0x0000044Bu, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW5 = 0x0000044Cu, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW6 = 0x0000044Du, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH6 = 0x0000044Eu, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW6 = 0x0000044Fu, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_4_TCPWM0_TR_OVERFLOW7 = 0x00000450u, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_4_TCPWM0_TR_COMPARE_MATCH7 = 0x00000451u, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_4_TCPWM0_TR_UNDERFLOW7 = 0x00000452u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW0 = 0x00000453u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH0 = 0x00000454u, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW0 = 0x00000455u, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW1 = 0x00000456u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH1 = 0x00000457u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW1 = 0x00000458u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW2 = 0x00000459u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH2 = 0x0000045Au, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW2 = 0x0000045Bu, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW3 = 0x0000045Cu, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH3 = 0x0000045Du, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW3 = 0x0000045Eu, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW4 = 0x0000045Fu, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH4 = 0x00000460u, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW4 = 0x00000461u, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW5 = 0x00000462u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH5 = 0x00000463u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW5 = 0x00000464u, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW6 = 0x00000465u, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH6 = 0x00000466u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW6 = 0x00000467u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW7 = 0x00000468u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH7 = 0x00000469u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW7 = 0x0000046Au, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW8 = 0x0000046Bu, /* tcpwm[1].tr_overflow[8] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH8 = 0x0000046Cu, /* tcpwm[1].tr_compare_match[8] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW8 = 0x0000046Du, /* tcpwm[1].tr_underflow[8] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW9 = 0x0000046Eu, /* tcpwm[1].tr_overflow[9] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH9 = 0x0000046Fu, /* tcpwm[1].tr_compare_match[9] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW9 = 0x00000470u, /* tcpwm[1].tr_underflow[9] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW10 = 0x00000471u, /* tcpwm[1].tr_overflow[10] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH10 = 0x00000472u, /* tcpwm[1].tr_compare_match[10] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW10 = 0x00000473u, /* tcpwm[1].tr_underflow[10] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW11 = 0x00000474u, /* tcpwm[1].tr_overflow[11] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH11 = 0x00000475u, /* tcpwm[1].tr_compare_match[11] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW11 = 0x00000476u, /* tcpwm[1].tr_underflow[11] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW12 = 0x00000477u, /* tcpwm[1].tr_overflow[12] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH12 = 0x00000478u, /* tcpwm[1].tr_compare_match[12] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW12 = 0x00000479u, /* tcpwm[1].tr_underflow[12] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW13 = 0x0000047Au, /* tcpwm[1].tr_overflow[13] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH13 = 0x0000047Bu, /* tcpwm[1].tr_compare_match[13] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW13 = 0x0000047Cu, /* tcpwm[1].tr_underflow[13] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW14 = 0x0000047Du, /* tcpwm[1].tr_overflow[14] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH14 = 0x0000047Eu, /* tcpwm[1].tr_compare_match[14] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW14 = 0x0000047Fu, /* tcpwm[1].tr_underflow[14] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW15 = 0x00000480u, /* tcpwm[1].tr_overflow[15] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH15 = 0x00000481u, /* tcpwm[1].tr_compare_match[15] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW15 = 0x00000482u, /* tcpwm[1].tr_underflow[15] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW16 = 0x00000483u, /* tcpwm[1].tr_overflow[16] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH16 = 0x00000484u, /* tcpwm[1].tr_compare_match[16] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW16 = 0x00000485u, /* tcpwm[1].tr_underflow[16] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW17 = 0x00000486u, /* tcpwm[1].tr_overflow[17] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH17 = 0x00000487u, /* tcpwm[1].tr_compare_match[17] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW17 = 0x00000488u, /* tcpwm[1].tr_underflow[17] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW18 = 0x00000489u, /* tcpwm[1].tr_overflow[18] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH18 = 0x0000048Au, /* tcpwm[1].tr_compare_match[18] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW18 = 0x0000048Bu, /* tcpwm[1].tr_underflow[18] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW19 = 0x0000048Cu, /* tcpwm[1].tr_overflow[19] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH19 = 0x0000048Du, /* tcpwm[1].tr_compare_match[19] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW19 = 0x0000048Eu, /* tcpwm[1].tr_underflow[19] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW20 = 0x0000048Fu, /* tcpwm[1].tr_overflow[20] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH20 = 0x00000490u, /* tcpwm[1].tr_compare_match[20] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW20 = 0x00000491u, /* tcpwm[1].tr_underflow[20] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW21 = 0x00000492u, /* tcpwm[1].tr_overflow[21] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH21 = 0x00000493u, /* tcpwm[1].tr_compare_match[21] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW21 = 0x00000494u, /* tcpwm[1].tr_underflow[21] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW22 = 0x00000495u, /* tcpwm[1].tr_overflow[22] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH22 = 0x00000496u, /* tcpwm[1].tr_compare_match[22] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW22 = 0x00000497u, /* tcpwm[1].tr_underflow[22] */ + TRIG_IN_MUX_4_TCPWM1_TR_OVERFLOW23 = 0x00000498u, /* tcpwm[1].tr_overflow[23] */ + TRIG_IN_MUX_4_TCPWM1_TR_COMPARE_MATCH23 = 0x00000499u, /* tcpwm[1].tr_compare_match[23] */ + TRIG_IN_MUX_4_TCPWM1_TR_UNDERFLOW23 = 0x0000049Au, /* tcpwm[1].tr_underflow[23] */ + TRIG_IN_MUX_4_MDMA_TR_OUT0 = 0x0000049Bu, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_4_MDMA_TR_OUT1 = 0x0000049Cu, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_4_MDMA_TR_OUT2 = 0x0000049Du, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_4_MDMA_TR_OUT3 = 0x0000049Eu, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_4_SCB_I2C_SCL0 = 0x0000049Fu, /* scb[0].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX0 = 0x000004A0u, /* scb[0].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX0 = 0x000004A1u, /* scb[0].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL1 = 0x000004A2u, /* scb[1].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX1 = 0x000004A3u, /* scb[1].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX1 = 0x000004A4u, /* scb[1].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL2 = 0x000004A5u, /* scb[2].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX2 = 0x000004A6u, /* scb[2].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX2 = 0x000004A7u, /* scb[2].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL3 = 0x000004A8u, /* scb[3].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX3 = 0x000004A9u, /* scb[3].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX3 = 0x000004AAu, /* scb[3].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL4 = 0x000004ABu, /* scb[4].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX4 = 0x000004ACu, /* scb[4].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX4 = 0x000004ADu, /* scb[4].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL5 = 0x000004AEu, /* scb[5].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX5 = 0x000004AFu, /* scb[5].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX5 = 0x000004B0u, /* scb[5].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL6 = 0x000004B1u, /* scb[6].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX6 = 0x000004B2u, /* scb[6].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX6 = 0x000004B3u, /* scb[6].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL7 = 0x000004B4u, /* scb[7].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX7 = 0x000004B5u, /* scb[7].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX7 = 0x000004B6u, /* scb[7].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL8 = 0x000004B7u, /* scb[8].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX8 = 0x000004B8u, /* scb[8].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX8 = 0x000004B9u, /* scb[8].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL9 = 0x000004BAu, /* scb[9].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX9 = 0x000004BBu, /* scb[9].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX9 = 0x000004BCu, /* scb[9].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL10 = 0x000004BDu, /* scb[10].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX10 = 0x000004BEu, /* scb[10].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX10 = 0x000004BFu, /* scb[10].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL11 = 0x000004C0u, /* scb[11].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX11 = 0x000004C1u, /* scb[11].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX11 = 0x000004C2u, /* scb[11].tr_rx_req */ + TRIG_IN_MUX_4_SCB_I2C_SCL12 = 0x000004C3u, /* scb[12].tr_i2c_scl_filtered */ + TRIG_IN_MUX_4_SCB_TX12 = 0x000004C4u, /* scb[12].tr_tx_req */ + TRIG_IN_MUX_4_SCB_RX12 = 0x000004C5u, /* scb[12].tr_rx_req */ + TRIG_IN_MUX_4_SMIF_TX = 0x000004C6u, /* smif.tr_tx_req */ + TRIG_IN_MUX_4_SMIF_RX = 0x000004C7u, /* smif.tr_rx_req */ + TRIG_IN_MUX_4_USB_DMA0 = 0x000004C8u, /* usb.dma_req[0] */ + TRIG_IN_MUX_4_USB_DMA1 = 0x000004C9u, /* usb.dma_req[1] */ + TRIG_IN_MUX_4_USB_DMA2 = 0x000004CAu, /* usb.dma_req[2] */ + TRIG_IN_MUX_4_USB_DMA3 = 0x000004CBu, /* usb.dma_req[3] */ + TRIG_IN_MUX_4_USB_DMA4 = 0x000004CCu, /* usb.dma_req[4] */ + TRIG_IN_MUX_4_USB_DMA5 = 0x000004CDu, /* usb.dma_req[5] */ + TRIG_IN_MUX_4_USB_DMA6 = 0x000004CEu, /* usb.dma_req[6] */ + TRIG_IN_MUX_4_USB_DMA7 = 0x000004CFu, /* usb.dma_req[7] */ + TRIG_IN_MUX_4_I2S_TX0 = 0x000004D0u, /* audioss[0].tr_i2s_tx_req */ + TRIG_IN_MUX_4_I2S_RX0 = 0x000004D1u, /* audioss[0].tr_i2s_rx_req */ + TRIG_IN_MUX_4_PDM_RX0 = 0x000004D2u, /* audioss[0].tr_pdm_rx_req */ + TRIG_IN_MUX_4_I2S_TX1 = 0x000004D3u, /* audioss[1].tr_i2s_tx_req */ + TRIG_IN_MUX_4_I2S_RX1 = 0x000004D4u, /* audioss[1].tr_i2s_rx_req */ + TRIG_IN_MUX_4_CSD_SENSE = 0x000004D5u, /* csd.dsi_sense_out */ + TRIG_IN_MUX_4_CSD_SAMPLE = 0x000004D6u, /* csd.dsi_sample_out */ + TRIG_IN_MUX_4_CSD_ADC_DONE = 0x000004D7u, /* csd.tr_adc_done */ + TRIG_IN_MUX_4_PASS_SAR_DONE = 0x000004D8u, /* pass.tr_sar_out */ + TRIG_IN_MUX_4_FAULT_TR_OUT0 = 0x000004D9u, /* cpuss.tr_fault[0] */ + TRIG_IN_MUX_4_FAULT_TR_OUT1 = 0x000004DAu, /* cpuss.tr_fault[1] */ + TRIG_IN_MUX_4_CTI_TR_OUT0 = 0x000004DBu, /* cpuss.cti_tr_out[0] */ + TRIG_IN_MUX_4_CTI_TR_OUT1 = 0x000004DCu, /* cpuss.cti_tr_out[1] */ + TRIG_IN_MUX_4_LPCOMP_DSI_COMP0 = 0x000004DDu, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_4_LPCOMP_DSI_COMP1 = 0x000004DEu /* lpcomp.dsi_comp1 */ +} en_trig_input_hsiom_t; + +/* Trigger Input Group 5 - CPUSS Debug and Profiler trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_5_PDMA0_TR_OUT0 = 0x00000501u, /* cpuss.dw0_tr_out[0] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT1 = 0x00000502u, /* cpuss.dw0_tr_out[1] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT2 = 0x00000503u, /* cpuss.dw0_tr_out[2] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT3 = 0x00000504u, /* cpuss.dw0_tr_out[3] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT4 = 0x00000505u, /* cpuss.dw0_tr_out[4] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT5 = 0x00000506u, /* cpuss.dw0_tr_out[5] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT6 = 0x00000507u, /* cpuss.dw0_tr_out[6] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT7 = 0x00000508u, /* cpuss.dw0_tr_out[7] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT8 = 0x00000509u, /* cpuss.dw0_tr_out[8] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT9 = 0x0000050Au, /* cpuss.dw0_tr_out[9] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT10 = 0x0000050Bu, /* cpuss.dw0_tr_out[10] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT11 = 0x0000050Cu, /* cpuss.dw0_tr_out[11] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT12 = 0x0000050Du, /* cpuss.dw0_tr_out[12] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT13 = 0x0000050Eu, /* cpuss.dw0_tr_out[13] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT14 = 0x0000050Fu, /* cpuss.dw0_tr_out[14] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT15 = 0x00000510u, /* cpuss.dw0_tr_out[15] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT16 = 0x00000511u, /* cpuss.dw0_tr_out[16] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT17 = 0x00000512u, /* cpuss.dw0_tr_out[17] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT18 = 0x00000513u, /* cpuss.dw0_tr_out[18] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT19 = 0x00000514u, /* cpuss.dw0_tr_out[19] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT20 = 0x00000515u, /* cpuss.dw0_tr_out[20] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT21 = 0x00000516u, /* cpuss.dw0_tr_out[21] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT22 = 0x00000517u, /* cpuss.dw0_tr_out[22] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT23 = 0x00000518u, /* cpuss.dw0_tr_out[23] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT24 = 0x00000519u, /* cpuss.dw0_tr_out[24] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT25 = 0x0000051Au, /* cpuss.dw0_tr_out[25] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT26 = 0x0000051Bu, /* cpuss.dw0_tr_out[26] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT27 = 0x0000051Cu, /* cpuss.dw0_tr_out[27] */ + TRIG_IN_MUX_5_PDMA0_TR_OUT28 = 0x0000051Du, /* cpuss.dw0_tr_out[28] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT0 = 0x0000051Eu, /* cpuss.dw1_tr_out[0] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT1 = 0x0000051Fu, /* cpuss.dw1_tr_out[1] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT2 = 0x00000520u, /* cpuss.dw1_tr_out[2] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT3 = 0x00000521u, /* cpuss.dw1_tr_out[3] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT4 = 0x00000522u, /* cpuss.dw1_tr_out[4] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT5 = 0x00000523u, /* cpuss.dw1_tr_out[5] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT6 = 0x00000524u, /* cpuss.dw1_tr_out[6] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT7 = 0x00000525u, /* cpuss.dw1_tr_out[7] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT8 = 0x00000526u, /* cpuss.dw1_tr_out[8] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT9 = 0x00000527u, /* cpuss.dw1_tr_out[9] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT10 = 0x00000528u, /* cpuss.dw1_tr_out[10] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT11 = 0x00000529u, /* cpuss.dw1_tr_out[11] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT12 = 0x0000052Au, /* cpuss.dw1_tr_out[12] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT13 = 0x0000052Bu, /* cpuss.dw1_tr_out[13] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT14 = 0x0000052Cu, /* cpuss.dw1_tr_out[14] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT15 = 0x0000052Du, /* cpuss.dw1_tr_out[15] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT16 = 0x0000052Eu, /* cpuss.dw1_tr_out[16] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT17 = 0x0000052Fu, /* cpuss.dw1_tr_out[17] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT18 = 0x00000530u, /* cpuss.dw1_tr_out[18] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT19 = 0x00000531u, /* cpuss.dw1_tr_out[19] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT20 = 0x00000532u, /* cpuss.dw1_tr_out[20] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT21 = 0x00000533u, /* cpuss.dw1_tr_out[21] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT22 = 0x00000534u, /* cpuss.dw1_tr_out[22] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT23 = 0x00000535u, /* cpuss.dw1_tr_out[23] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT24 = 0x00000536u, /* cpuss.dw1_tr_out[24] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT25 = 0x00000537u, /* cpuss.dw1_tr_out[25] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT26 = 0x00000538u, /* cpuss.dw1_tr_out[26] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT27 = 0x00000539u, /* cpuss.dw1_tr_out[27] */ + TRIG_IN_MUX_5_PDMA1_TR_OUT28 = 0x0000053Au, /* cpuss.dw1_tr_out[28] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW0 = 0x0000053Bu, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH0 = 0x0000053Cu, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW0 = 0x0000053Du, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW1 = 0x0000053Eu, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH1 = 0x0000053Fu, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW1 = 0x00000540u, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW2 = 0x00000541u, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH2 = 0x00000542u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW2 = 0x00000543u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW3 = 0x00000544u, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH3 = 0x00000545u, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW3 = 0x00000546u, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW4 = 0x00000547u, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH4 = 0x00000548u, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW4 = 0x00000549u, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW5 = 0x0000054Au, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH5 = 0x0000054Bu, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW5 = 0x0000054Cu, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW6 = 0x0000054Du, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH6 = 0x0000054Eu, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW6 = 0x0000054Fu, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_5_TCPWM0_TR_OVERFLOW7 = 0x00000550u, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_5_TCPWM0_TR_COMPARE_MATCH7 = 0x00000551u, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_5_TCPWM0_TR_UNDERFLOW7 = 0x00000552u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW0 = 0x00000553u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH0 = 0x00000554u, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW0 = 0x00000555u, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW1 = 0x00000556u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH1 = 0x00000557u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW1 = 0x00000558u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW2 = 0x00000559u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH2 = 0x0000055Au, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW2 = 0x0000055Bu, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW3 = 0x0000055Cu, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH3 = 0x0000055Du, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW3 = 0x0000055Eu, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW4 = 0x0000055Fu, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH4 = 0x00000560u, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW4 = 0x00000561u, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW5 = 0x00000562u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH5 = 0x00000563u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW5 = 0x00000564u, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW6 = 0x00000565u, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH6 = 0x00000566u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW6 = 0x00000567u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW7 = 0x00000568u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH7 = 0x00000569u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW7 = 0x0000056Au, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW8 = 0x0000056Bu, /* tcpwm[1].tr_overflow[8] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH8 = 0x0000056Cu, /* tcpwm[1].tr_compare_match[8] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW8 = 0x0000056Du, /* tcpwm[1].tr_underflow[8] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW9 = 0x0000056Eu, /* tcpwm[1].tr_overflow[9] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH9 = 0x0000056Fu, /* tcpwm[1].tr_compare_match[9] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW9 = 0x00000570u, /* tcpwm[1].tr_underflow[9] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW10 = 0x00000571u, /* tcpwm[1].tr_overflow[10] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH10 = 0x00000572u, /* tcpwm[1].tr_compare_match[10] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW10 = 0x00000573u, /* tcpwm[1].tr_underflow[10] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW11 = 0x00000574u, /* tcpwm[1].tr_overflow[11] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH11 = 0x00000575u, /* tcpwm[1].tr_compare_match[11] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW11 = 0x00000576u, /* tcpwm[1].tr_underflow[11] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW12 = 0x00000577u, /* tcpwm[1].tr_overflow[12] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH12 = 0x00000578u, /* tcpwm[1].tr_compare_match[12] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW12 = 0x00000579u, /* tcpwm[1].tr_underflow[12] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW13 = 0x0000057Au, /* tcpwm[1].tr_overflow[13] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH13 = 0x0000057Bu, /* tcpwm[1].tr_compare_match[13] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW13 = 0x0000057Cu, /* tcpwm[1].tr_underflow[13] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW14 = 0x0000057Du, /* tcpwm[1].tr_overflow[14] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH14 = 0x0000057Eu, /* tcpwm[1].tr_compare_match[14] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW14 = 0x0000057Fu, /* tcpwm[1].tr_underflow[14] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW15 = 0x00000580u, /* tcpwm[1].tr_overflow[15] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH15 = 0x00000581u, /* tcpwm[1].tr_compare_match[15] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW15 = 0x00000582u, /* tcpwm[1].tr_underflow[15] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW16 = 0x00000583u, /* tcpwm[1].tr_overflow[16] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH16 = 0x00000584u, /* tcpwm[1].tr_compare_match[16] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW16 = 0x00000585u, /* tcpwm[1].tr_underflow[16] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW17 = 0x00000586u, /* tcpwm[1].tr_overflow[17] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH17 = 0x00000587u, /* tcpwm[1].tr_compare_match[17] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW17 = 0x00000588u, /* tcpwm[1].tr_underflow[17] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW18 = 0x00000589u, /* tcpwm[1].tr_overflow[18] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH18 = 0x0000058Au, /* tcpwm[1].tr_compare_match[18] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW18 = 0x0000058Bu, /* tcpwm[1].tr_underflow[18] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW19 = 0x0000058Cu, /* tcpwm[1].tr_overflow[19] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH19 = 0x0000058Du, /* tcpwm[1].tr_compare_match[19] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW19 = 0x0000058Eu, /* tcpwm[1].tr_underflow[19] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW20 = 0x0000058Fu, /* tcpwm[1].tr_overflow[20] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH20 = 0x00000590u, /* tcpwm[1].tr_compare_match[20] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW20 = 0x00000591u, /* tcpwm[1].tr_underflow[20] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW21 = 0x00000592u, /* tcpwm[1].tr_overflow[21] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH21 = 0x00000593u, /* tcpwm[1].tr_compare_match[21] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW21 = 0x00000594u, /* tcpwm[1].tr_underflow[21] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW22 = 0x00000595u, /* tcpwm[1].tr_overflow[22] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH22 = 0x00000596u, /* tcpwm[1].tr_compare_match[22] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW22 = 0x00000597u, /* tcpwm[1].tr_underflow[22] */ + TRIG_IN_MUX_5_TCPWM1_TR_OVERFLOW23 = 0x00000598u, /* tcpwm[1].tr_overflow[23] */ + TRIG_IN_MUX_5_TCPWM1_TR_COMPARE_MATCH23 = 0x00000599u, /* tcpwm[1].tr_compare_match[23] */ + TRIG_IN_MUX_5_TCPWM1_TR_UNDERFLOW23 = 0x0000059Au, /* tcpwm[1].tr_underflow[23] */ + TRIG_IN_MUX_5_MDMA_TR_OUT0 = 0x0000059Bu, /* cpuss.dmac_tr_out[0] */ + TRIG_IN_MUX_5_MDMA_TR_OUT1 = 0x0000059Cu, /* cpuss.dmac_tr_out[1] */ + TRIG_IN_MUX_5_MDMA_TR_OUT2 = 0x0000059Du, /* cpuss.dmac_tr_out[2] */ + TRIG_IN_MUX_5_MDMA_TR_OUT3 = 0x0000059Eu, /* cpuss.dmac_tr_out[3] */ + TRIG_IN_MUX_5_SCB_I2C_SCL0 = 0x0000059Fu, /* scb[0].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX0 = 0x000005A0u, /* scb[0].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX0 = 0x000005A1u, /* scb[0].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL1 = 0x000005A2u, /* scb[1].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX1 = 0x000005A3u, /* scb[1].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX1 = 0x000005A4u, /* scb[1].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL2 = 0x000005A5u, /* scb[2].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX2 = 0x000005A6u, /* scb[2].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX2 = 0x000005A7u, /* scb[2].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL3 = 0x000005A8u, /* scb[3].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX3 = 0x000005A9u, /* scb[3].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX3 = 0x000005AAu, /* scb[3].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL4 = 0x000005ABu, /* scb[4].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX4 = 0x000005ACu, /* scb[4].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX4 = 0x000005ADu, /* scb[4].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL5 = 0x000005AEu, /* scb[5].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX5 = 0x000005AFu, /* scb[5].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX5 = 0x000005B0u, /* scb[5].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL6 = 0x000005B1u, /* scb[6].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX6 = 0x000005B2u, /* scb[6].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX6 = 0x000005B3u, /* scb[6].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL7 = 0x000005B4u, /* scb[7].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX7 = 0x000005B5u, /* scb[7].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX7 = 0x000005B6u, /* scb[7].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL8 = 0x000005B7u, /* scb[8].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX8 = 0x000005B8u, /* scb[8].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX8 = 0x000005B9u, /* scb[8].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL9 = 0x000005BAu, /* scb[9].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX9 = 0x000005BBu, /* scb[9].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX9 = 0x000005BCu, /* scb[9].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL10 = 0x000005BDu, /* scb[10].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX10 = 0x000005BEu, /* scb[10].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX10 = 0x000005BFu, /* scb[10].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL11 = 0x000005C0u, /* scb[11].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX11 = 0x000005C1u, /* scb[11].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX11 = 0x000005C2u, /* scb[11].tr_rx_req */ + TRIG_IN_MUX_5_SCB_I2C_SCL12 = 0x000005C3u, /* scb[12].tr_i2c_scl_filtered */ + TRIG_IN_MUX_5_SCB_TX12 = 0x000005C4u, /* scb[12].tr_tx_req */ + TRIG_IN_MUX_5_SCB_RX12 = 0x000005C5u, /* scb[12].tr_rx_req */ + TRIG_IN_MUX_5_SMIF_TX = 0x000005C6u, /* smif.tr_tx_req */ + TRIG_IN_MUX_5_SMIF_RX = 0x000005C7u, /* smif.tr_rx_req */ + TRIG_IN_MUX_5_USB_DMA0 = 0x000005C8u, /* usb.dma_req[0] */ + TRIG_IN_MUX_5_USB_DMA1 = 0x000005C9u, /* usb.dma_req[1] */ + TRIG_IN_MUX_5_USB_DMA2 = 0x000005CAu, /* usb.dma_req[2] */ + TRIG_IN_MUX_5_USB_DMA3 = 0x000005CBu, /* usb.dma_req[3] */ + TRIG_IN_MUX_5_USB_DMA4 = 0x000005CCu, /* usb.dma_req[4] */ + TRIG_IN_MUX_5_USB_DMA5 = 0x000005CDu, /* usb.dma_req[5] */ + TRIG_IN_MUX_5_USB_DMA6 = 0x000005CEu, /* usb.dma_req[6] */ + TRIG_IN_MUX_5_USB_DMA7 = 0x000005CFu, /* usb.dma_req[7] */ + TRIG_IN_MUX_5_I2S_TX0 = 0x000005D0u, /* audioss[0].tr_i2s_tx_req */ + TRIG_IN_MUX_5_I2S_RX0 = 0x000005D1u, /* audioss[0].tr_i2s_rx_req */ + TRIG_IN_MUX_5_PDM_RX0 = 0x000005D2u, /* audioss[0].tr_pdm_rx_req */ + TRIG_IN_MUX_5_I2S_TX1 = 0x000005D3u, /* audioss[1].tr_i2s_tx_req */ + TRIG_IN_MUX_5_I2S_RX1 = 0x000005D4u, /* audioss[1].tr_i2s_rx_req */ + TRIG_IN_MUX_5_CSD_SENSE = 0x000005D5u, /* csd.dsi_sense_out */ + TRIG_IN_MUX_5_CSD_SAMPLE = 0x000005D6u, /* csd.dsi_sample_out */ + TRIG_IN_MUX_5_CSD_ADC_DONE = 0x000005D7u, /* csd.tr_adc_done */ + TRIG_IN_MUX_5_PASS_SAR_DONE = 0x000005D8u, /* pass.tr_sar_out */ + TRIG_IN_MUX_5_HSIOM_TR_OUT0 = 0x000005D9u, /* peri.tr_io_input[0] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT1 = 0x000005DAu, /* peri.tr_io_input[1] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT2 = 0x000005DBu, /* peri.tr_io_input[2] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT3 = 0x000005DCu, /* peri.tr_io_input[3] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT4 = 0x000005DDu, /* peri.tr_io_input[4] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT5 = 0x000005DEu, /* peri.tr_io_input[5] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT6 = 0x000005DFu, /* peri.tr_io_input[6] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT7 = 0x000005E0u, /* peri.tr_io_input[7] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT8 = 0x000005E1u, /* peri.tr_io_input[8] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT9 = 0x000005E2u, /* peri.tr_io_input[9] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT10 = 0x000005E3u, /* peri.tr_io_input[10] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT11 = 0x000005E4u, /* peri.tr_io_input[11] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT12 = 0x000005E5u, /* peri.tr_io_input[12] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT13 = 0x000005E6u, /* peri.tr_io_input[13] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT14 = 0x000005E7u, /* peri.tr_io_input[14] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT15 = 0x000005E8u, /* peri.tr_io_input[15] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT16 = 0x000005E9u, /* peri.tr_io_input[16] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT17 = 0x000005EAu, /* peri.tr_io_input[17] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT18 = 0x000005EBu, /* peri.tr_io_input[18] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT19 = 0x000005ECu, /* peri.tr_io_input[19] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT20 = 0x000005EDu, /* peri.tr_io_input[20] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT21 = 0x000005EEu, /* peri.tr_io_input[21] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT22 = 0x000005EFu, /* peri.tr_io_input[22] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT23 = 0x000005F0u, /* peri.tr_io_input[23] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT24 = 0x000005F1u, /* peri.tr_io_input[24] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT25 = 0x000005F2u, /* peri.tr_io_input[25] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT26 = 0x000005F3u, /* peri.tr_io_input[26] */ + TRIG_IN_MUX_5_HSIOM_TR_OUT27 = 0x000005F4u, /* peri.tr_io_input[27] */ + TRIG_IN_MUX_5_FAULT_TR_OUT0 = 0x000005F5u, /* cpuss.tr_fault[0] */ + TRIG_IN_MUX_5_FAULT_TR_OUT1 = 0x000005F6u, /* cpuss.tr_fault[1] */ + TRIG_IN_MUX_5_CTI_TR_OUT0 = 0x000005F7u, /* cpuss.cti_tr_out[0] */ + TRIG_IN_MUX_5_CTI_TR_OUT1 = 0x000005F8u, /* cpuss.cti_tr_out[1] */ + TRIG_IN_MUX_5_LPCOMP_DSI_COMP0 = 0x000005F9u, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_5_LPCOMP_DSI_COMP1 = 0x000005FAu /* lpcomp.dsi_comp1 */ +} en_trig_input_cpuss_cti_t; + +/* Trigger Input Group 6 - MDMA trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW0 = 0x00000601u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH0 = 0x00000602u, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW0 = 0x00000603u, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW1 = 0x00000604u, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH1 = 0x00000605u, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW1 = 0x00000606u, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW2 = 0x00000607u, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH2 = 0x00000608u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW2 = 0x00000609u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW3 = 0x0000060Au, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH3 = 0x0000060Bu, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW3 = 0x0000060Cu, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW4 = 0x0000060Du, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH4 = 0x0000060Eu, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW4 = 0x0000060Fu, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW5 = 0x00000610u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH5 = 0x00000611u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW5 = 0x00000612u, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW6 = 0x00000613u, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH6 = 0x00000614u, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW6 = 0x00000615u, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_6_TCPWM1_TR_OVERFLOW7 = 0x00000616u, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_6_TCPWM1_TR_COMPARE_MATCH7 = 0x00000617u, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_6_TCPWM1_TR_UNDERFLOW7 = 0x00000618u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_6_SMIF_TX = 0x00000619u, /* smif.tr_tx_req */ + TRIG_IN_MUX_6_SMIF_RX = 0x0000061Au /* smif.tr_rx_req */ +} en_trig_input_mdma_t; + +/* Trigger Input Group 7 - PERI Freeze trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_7_CTI_TR_OUT0 = 0x00000701u, /* cpuss.cti_tr_out[0] */ + TRIG_IN_MUX_7_CTI_TR_OUT1 = 0x00000702u /* cpuss.cti_tr_out[1] */ +} en_trig_input_peri_freeze_t; + +/* Trigger Input Group 8 - Capsense trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW0 = 0x00000801u, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH0 = 0x00000802u, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW0 = 0x00000803u, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW1 = 0x00000804u, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH1 = 0x00000805u, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW1 = 0x00000806u, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW2 = 0x00000807u, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH2 = 0x00000808u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW2 = 0x00000809u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW3 = 0x0000080Au, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH3 = 0x0000080Bu, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW3 = 0x0000080Cu, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW4 = 0x0000080Du, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH4 = 0x0000080Eu, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW4 = 0x0000080Fu, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW5 = 0x00000810u, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH5 = 0x00000811u, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW5 = 0x00000812u, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW6 = 0x00000813u, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH6 = 0x00000814u, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW6 = 0x00000815u, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_8_TCPWM0_TR_OVERFLOW7 = 0x00000816u, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_8_TCPWM0_TR_COMPARE_MATCH7 = 0x00000817u, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_8_TCPWM0_TR_UNDERFLOW7 = 0x00000818u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW0 = 0x00000819u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH0 = 0x0000081Au, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW0 = 0x0000081Bu, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW1 = 0x0000081Cu, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH1 = 0x0000081Du, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW1 = 0x0000081Eu, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW2 = 0x0000081Fu, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH2 = 0x00000820u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW2 = 0x00000821u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW3 = 0x00000822u, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH3 = 0x00000823u, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW3 = 0x00000824u, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW4 = 0x00000825u, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH4 = 0x00000826u, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW4 = 0x00000827u, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW5 = 0x00000828u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH5 = 0x00000829u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW5 = 0x0000082Au, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW6 = 0x0000082Bu, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH6 = 0x0000082Cu, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW6 = 0x0000082Du, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW7 = 0x0000082Eu, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH7 = 0x0000082Fu, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW7 = 0x00000830u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW8 = 0x00000831u, /* tcpwm[1].tr_overflow[8] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH8 = 0x00000832u, /* tcpwm[1].tr_compare_match[8] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW8 = 0x00000833u, /* tcpwm[1].tr_underflow[8] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW9 = 0x00000834u, /* tcpwm[1].tr_overflow[9] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH9 = 0x00000835u, /* tcpwm[1].tr_compare_match[9] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW9 = 0x00000836u, /* tcpwm[1].tr_underflow[9] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW10 = 0x00000837u, /* tcpwm[1].tr_overflow[10] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH10 = 0x00000838u, /* tcpwm[1].tr_compare_match[10] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW10 = 0x00000839u, /* tcpwm[1].tr_underflow[10] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW11 = 0x0000083Au, /* tcpwm[1].tr_overflow[11] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH11 = 0x0000083Bu, /* tcpwm[1].tr_compare_match[11] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW11 = 0x0000083Cu, /* tcpwm[1].tr_underflow[11] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW12 = 0x0000083Du, /* tcpwm[1].tr_overflow[12] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH12 = 0x0000083Eu, /* tcpwm[1].tr_compare_match[12] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW12 = 0x0000083Fu, /* tcpwm[1].tr_underflow[12] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW13 = 0x00000840u, /* tcpwm[1].tr_overflow[13] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH13 = 0x00000841u, /* tcpwm[1].tr_compare_match[13] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW13 = 0x00000842u, /* tcpwm[1].tr_underflow[13] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW14 = 0x00000843u, /* tcpwm[1].tr_overflow[14] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH14 = 0x00000844u, /* tcpwm[1].tr_compare_match[14] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW14 = 0x00000845u, /* tcpwm[1].tr_underflow[14] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW15 = 0x00000846u, /* tcpwm[1].tr_overflow[15] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH15 = 0x00000847u, /* tcpwm[1].tr_compare_match[15] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW15 = 0x00000848u, /* tcpwm[1].tr_underflow[15] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW16 = 0x00000849u, /* tcpwm[1].tr_overflow[16] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH16 = 0x0000084Au, /* tcpwm[1].tr_compare_match[16] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW16 = 0x0000084Bu, /* tcpwm[1].tr_underflow[16] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW17 = 0x0000084Cu, /* tcpwm[1].tr_overflow[17] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH17 = 0x0000084Du, /* tcpwm[1].tr_compare_match[17] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW17 = 0x0000084Eu, /* tcpwm[1].tr_underflow[17] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW18 = 0x0000084Fu, /* tcpwm[1].tr_overflow[18] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH18 = 0x00000850u, /* tcpwm[1].tr_compare_match[18] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW18 = 0x00000851u, /* tcpwm[1].tr_underflow[18] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW19 = 0x00000852u, /* tcpwm[1].tr_overflow[19] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH19 = 0x00000853u, /* tcpwm[1].tr_compare_match[19] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW19 = 0x00000854u, /* tcpwm[1].tr_underflow[19] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW20 = 0x00000855u, /* tcpwm[1].tr_overflow[20] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH20 = 0x00000856u, /* tcpwm[1].tr_compare_match[20] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW20 = 0x00000857u, /* tcpwm[1].tr_underflow[20] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW21 = 0x00000858u, /* tcpwm[1].tr_overflow[21] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH21 = 0x00000859u, /* tcpwm[1].tr_compare_match[21] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW21 = 0x0000085Au, /* tcpwm[1].tr_underflow[21] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW22 = 0x0000085Bu, /* tcpwm[1].tr_overflow[22] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH22 = 0x0000085Cu, /* tcpwm[1].tr_compare_match[22] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW22 = 0x0000085Du, /* tcpwm[1].tr_underflow[22] */ + TRIG_IN_MUX_8_TCPWM1_TR_OVERFLOW23 = 0x0000085Eu, /* tcpwm[1].tr_overflow[23] */ + TRIG_IN_MUX_8_TCPWM1_TR_COMPARE_MATCH23 = 0x0000085Fu, /* tcpwm[1].tr_compare_match[23] */ + TRIG_IN_MUX_8_TCPWM1_TR_UNDERFLOW23 = 0x00000860u, /* tcpwm[1].tr_underflow[23] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT0 = 0x00000861u, /* peri.tr_io_input[0] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT1 = 0x00000862u, /* peri.tr_io_input[1] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT2 = 0x00000863u, /* peri.tr_io_input[2] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT3 = 0x00000864u, /* peri.tr_io_input[3] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT4 = 0x00000865u, /* peri.tr_io_input[4] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT5 = 0x00000866u, /* peri.tr_io_input[5] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT6 = 0x00000867u, /* peri.tr_io_input[6] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT7 = 0x00000868u, /* peri.tr_io_input[7] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT8 = 0x00000869u, /* peri.tr_io_input[8] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT9 = 0x0000086Au, /* peri.tr_io_input[9] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT10 = 0x0000086Bu, /* peri.tr_io_input[10] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT11 = 0x0000086Cu, /* peri.tr_io_input[11] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT12 = 0x0000086Du, /* peri.tr_io_input[12] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT13 = 0x0000086Eu, /* peri.tr_io_input[13] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT14 = 0x0000086Fu, /* peri.tr_io_input[14] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT15 = 0x00000870u, /* peri.tr_io_input[15] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT16 = 0x00000871u, /* peri.tr_io_input[16] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT17 = 0x00000872u, /* peri.tr_io_input[17] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT18 = 0x00000873u, /* peri.tr_io_input[18] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT19 = 0x00000874u, /* peri.tr_io_input[19] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT20 = 0x00000875u, /* peri.tr_io_input[20] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT21 = 0x00000876u, /* peri.tr_io_input[21] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT22 = 0x00000877u, /* peri.tr_io_input[22] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT23 = 0x00000878u, /* peri.tr_io_input[23] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT24 = 0x00000879u, /* peri.tr_io_input[24] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT25 = 0x0000087Au, /* peri.tr_io_input[25] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT26 = 0x0000087Bu, /* peri.tr_io_input[26] */ + TRIG_IN_MUX_8_HSIOM_TR_OUT27 = 0x0000087Cu, /* peri.tr_io_input[27] */ + TRIG_IN_MUX_8_LPCOMP_DSI_COMP0 = 0x0000087Du, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_8_LPCOMP_DSI_COMP1 = 0x0000087Eu /* lpcomp.dsi_comp1 */ +} en_trig_input_csd_t; + +/* Trigger Input Group 9 - ADC trigger multiplexer */ +typedef enum +{ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW0 = 0x00000901u, /* tcpwm[0].tr_overflow[0] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH0 = 0x00000902u, /* tcpwm[0].tr_compare_match[0] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW0 = 0x00000903u, /* tcpwm[0].tr_underflow[0] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW1 = 0x00000904u, /* tcpwm[0].tr_overflow[1] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH1 = 0x00000905u, /* tcpwm[0].tr_compare_match[1] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW1 = 0x00000906u, /* tcpwm[0].tr_underflow[1] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW2 = 0x00000907u, /* tcpwm[0].tr_overflow[2] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH2 = 0x00000908u, /* tcpwm[0].tr_compare_match[2] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW2 = 0x00000909u, /* tcpwm[0].tr_underflow[2] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW3 = 0x0000090Au, /* tcpwm[0].tr_overflow[3] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH3 = 0x0000090Bu, /* tcpwm[0].tr_compare_match[3] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW3 = 0x0000090Cu, /* tcpwm[0].tr_underflow[3] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW4 = 0x0000090Du, /* tcpwm[0].tr_overflow[4] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH4 = 0x0000090Eu, /* tcpwm[0].tr_compare_match[4] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW4 = 0x0000090Fu, /* tcpwm[0].tr_underflow[4] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW5 = 0x00000910u, /* tcpwm[0].tr_overflow[5] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH5 = 0x00000911u, /* tcpwm[0].tr_compare_match[5] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW5 = 0x00000912u, /* tcpwm[0].tr_underflow[5] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW6 = 0x00000913u, /* tcpwm[0].tr_overflow[6] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH6 = 0x00000914u, /* tcpwm[0].tr_compare_match[6] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW6 = 0x00000915u, /* tcpwm[0].tr_underflow[6] */ + TRIG_IN_MUX_9_TCPWM0_TR_OVERFLOW7 = 0x00000916u, /* tcpwm[0].tr_overflow[7] */ + TRIG_IN_MUX_9_TCPWM0_TR_COMPARE_MATCH7 = 0x00000917u, /* tcpwm[0].tr_compare_match[7] */ + TRIG_IN_MUX_9_TCPWM0_TR_UNDERFLOW7 = 0x00000918u, /* tcpwm[0].tr_underflow[7] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW0 = 0x00000919u, /* tcpwm[1].tr_overflow[0] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH0 = 0x0000091Au, /* tcpwm[1].tr_compare_match[0] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW0 = 0x0000091Bu, /* tcpwm[1].tr_underflow[0] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW1 = 0x0000091Cu, /* tcpwm[1].tr_overflow[1] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH1 = 0x0000091Du, /* tcpwm[1].tr_compare_match[1] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW1 = 0x0000091Eu, /* tcpwm[1].tr_underflow[1] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW2 = 0x0000091Fu, /* tcpwm[1].tr_overflow[2] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH2 = 0x00000920u, /* tcpwm[1].tr_compare_match[2] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW2 = 0x00000921u, /* tcpwm[1].tr_underflow[2] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW3 = 0x00000922u, /* tcpwm[1].tr_overflow[3] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH3 = 0x00000923u, /* tcpwm[1].tr_compare_match[3] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW3 = 0x00000924u, /* tcpwm[1].tr_underflow[3] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW4 = 0x00000925u, /* tcpwm[1].tr_overflow[4] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH4 = 0x00000926u, /* tcpwm[1].tr_compare_match[4] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW4 = 0x00000927u, /* tcpwm[1].tr_underflow[4] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW5 = 0x00000928u, /* tcpwm[1].tr_overflow[5] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH5 = 0x00000929u, /* tcpwm[1].tr_compare_match[5] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW5 = 0x0000092Au, /* tcpwm[1].tr_underflow[5] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW6 = 0x0000092Bu, /* tcpwm[1].tr_overflow[6] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH6 = 0x0000092Cu, /* tcpwm[1].tr_compare_match[6] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW6 = 0x0000092Du, /* tcpwm[1].tr_underflow[6] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW7 = 0x0000092Eu, /* tcpwm[1].tr_overflow[7] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH7 = 0x0000092Fu, /* tcpwm[1].tr_compare_match[7] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW7 = 0x00000930u, /* tcpwm[1].tr_underflow[7] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW8 = 0x00000931u, /* tcpwm[1].tr_overflow[8] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH8 = 0x00000932u, /* tcpwm[1].tr_compare_match[8] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW8 = 0x00000933u, /* tcpwm[1].tr_underflow[8] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW9 = 0x00000934u, /* tcpwm[1].tr_overflow[9] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH9 = 0x00000935u, /* tcpwm[1].tr_compare_match[9] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW9 = 0x00000936u, /* tcpwm[1].tr_underflow[9] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW10 = 0x00000937u, /* tcpwm[1].tr_overflow[10] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH10 = 0x00000938u, /* tcpwm[1].tr_compare_match[10] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW10 = 0x00000939u, /* tcpwm[1].tr_underflow[10] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW11 = 0x0000093Au, /* tcpwm[1].tr_overflow[11] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH11 = 0x0000093Bu, /* tcpwm[1].tr_compare_match[11] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW11 = 0x0000093Cu, /* tcpwm[1].tr_underflow[11] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW12 = 0x0000093Du, /* tcpwm[1].tr_overflow[12] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH12 = 0x0000093Eu, /* tcpwm[1].tr_compare_match[12] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW12 = 0x0000093Fu, /* tcpwm[1].tr_underflow[12] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW13 = 0x00000940u, /* tcpwm[1].tr_overflow[13] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH13 = 0x00000941u, /* tcpwm[1].tr_compare_match[13] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW13 = 0x00000942u, /* tcpwm[1].tr_underflow[13] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW14 = 0x00000943u, /* tcpwm[1].tr_overflow[14] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH14 = 0x00000944u, /* tcpwm[1].tr_compare_match[14] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW14 = 0x00000945u, /* tcpwm[1].tr_underflow[14] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW15 = 0x00000946u, /* tcpwm[1].tr_overflow[15] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH15 = 0x00000947u, /* tcpwm[1].tr_compare_match[15] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW15 = 0x00000948u, /* tcpwm[1].tr_underflow[15] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW16 = 0x00000949u, /* tcpwm[1].tr_overflow[16] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH16 = 0x0000094Au, /* tcpwm[1].tr_compare_match[16] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW16 = 0x0000094Bu, /* tcpwm[1].tr_underflow[16] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW17 = 0x0000094Cu, /* tcpwm[1].tr_overflow[17] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH17 = 0x0000094Du, /* tcpwm[1].tr_compare_match[17] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW17 = 0x0000094Eu, /* tcpwm[1].tr_underflow[17] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW18 = 0x0000094Fu, /* tcpwm[1].tr_overflow[18] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH18 = 0x00000950u, /* tcpwm[1].tr_compare_match[18] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW18 = 0x00000951u, /* tcpwm[1].tr_underflow[18] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW19 = 0x00000952u, /* tcpwm[1].tr_overflow[19] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH19 = 0x00000953u, /* tcpwm[1].tr_compare_match[19] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW19 = 0x00000954u, /* tcpwm[1].tr_underflow[19] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW20 = 0x00000955u, /* tcpwm[1].tr_overflow[20] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH20 = 0x00000956u, /* tcpwm[1].tr_compare_match[20] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW20 = 0x00000957u, /* tcpwm[1].tr_underflow[20] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW21 = 0x00000958u, /* tcpwm[1].tr_overflow[21] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH21 = 0x00000959u, /* tcpwm[1].tr_compare_match[21] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW21 = 0x0000095Au, /* tcpwm[1].tr_underflow[21] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW22 = 0x0000095Bu, /* tcpwm[1].tr_overflow[22] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH22 = 0x0000095Cu, /* tcpwm[1].tr_compare_match[22] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW22 = 0x0000095Du, /* tcpwm[1].tr_underflow[22] */ + TRIG_IN_MUX_9_TCPWM1_TR_OVERFLOW23 = 0x0000095Eu, /* tcpwm[1].tr_overflow[23] */ + TRIG_IN_MUX_9_TCPWM1_TR_COMPARE_MATCH23 = 0x0000095Fu, /* tcpwm[1].tr_compare_match[23] */ + TRIG_IN_MUX_9_TCPWM1_TR_UNDERFLOW23 = 0x00000960u, /* tcpwm[1].tr_underflow[23] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT0 = 0x00000961u, /* peri.tr_io_input[0] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT1 = 0x00000962u, /* peri.tr_io_input[1] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT2 = 0x00000963u, /* peri.tr_io_input[2] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT3 = 0x00000964u, /* peri.tr_io_input[3] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT4 = 0x00000965u, /* peri.tr_io_input[4] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT5 = 0x00000966u, /* peri.tr_io_input[5] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT6 = 0x00000967u, /* peri.tr_io_input[6] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT7 = 0x00000968u, /* peri.tr_io_input[7] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT8 = 0x00000969u, /* peri.tr_io_input[8] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT9 = 0x0000096Au, /* peri.tr_io_input[9] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT10 = 0x0000096Bu, /* peri.tr_io_input[10] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT11 = 0x0000096Cu, /* peri.tr_io_input[11] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT12 = 0x0000096Du, /* peri.tr_io_input[12] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT13 = 0x0000096Eu, /* peri.tr_io_input[13] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT14 = 0x0000096Fu, /* peri.tr_io_input[14] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT15 = 0x00000970u, /* peri.tr_io_input[15] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT16 = 0x00000971u, /* peri.tr_io_input[16] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT17 = 0x00000972u, /* peri.tr_io_input[17] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT18 = 0x00000973u, /* peri.tr_io_input[18] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT19 = 0x00000974u, /* peri.tr_io_input[19] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT20 = 0x00000975u, /* peri.tr_io_input[20] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT21 = 0x00000976u, /* peri.tr_io_input[21] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT22 = 0x00000977u, /* peri.tr_io_input[22] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT23 = 0x00000978u, /* peri.tr_io_input[23] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT24 = 0x00000979u, /* peri.tr_io_input[24] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT25 = 0x0000097Au, /* peri.tr_io_input[25] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT26 = 0x0000097Bu, /* peri.tr_io_input[26] */ + TRIG_IN_MUX_9_HSIOM_TR_OUT27 = 0x0000097Cu, /* peri.tr_io_input[27] */ + TRIG_IN_MUX_9_LPCOMP_DSI_COMP0 = 0x0000097Du, /* lpcomp.dsi_comp0 */ + TRIG_IN_MUX_9_LPCOMP_DSI_COMP1 = 0x0000097Eu /* lpcomp.dsi_comp1 */ +} en_trig_input_sar_adc_start_t; + +/* Trigger Group Outputs */ +/* Trigger Output Group 0 - P-DMA0 Request Assignments */ +typedef enum +{ + TRIG_OUT_MUX_0_PDMA0_TR_IN0 = 0x40000000u, /* cpuss.dw0_tr_in[0] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN1 = 0x40000001u, /* cpuss.dw0_tr_in[1] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN2 = 0x40000002u, /* cpuss.dw0_tr_in[2] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN3 = 0x40000003u, /* cpuss.dw0_tr_in[3] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN4 = 0x40000004u, /* cpuss.dw0_tr_in[4] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN5 = 0x40000005u, /* cpuss.dw0_tr_in[5] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN6 = 0x40000006u, /* cpuss.dw0_tr_in[6] */ + TRIG_OUT_MUX_0_PDMA0_TR_IN7 = 0x40000007u /* cpuss.dw0_tr_in[7] */ +} en_trig_output_pdma0_tr_t; + +/* Trigger Output Group 1 - P-DMA1 Request Assignments */ +typedef enum +{ + TRIG_OUT_MUX_1_PDMA1_TR_IN0 = 0x40000100u, /* cpuss.dw1_tr_in[0] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN1 = 0x40000101u, /* cpuss.dw1_tr_in[1] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN2 = 0x40000102u, /* cpuss.dw1_tr_in[2] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN3 = 0x40000103u, /* cpuss.dw1_tr_in[3] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN4 = 0x40000104u, /* cpuss.dw1_tr_in[4] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN5 = 0x40000105u, /* cpuss.dw1_tr_in[5] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN6 = 0x40000106u, /* cpuss.dw1_tr_in[6] */ + TRIG_OUT_MUX_1_PDMA1_TR_IN7 = 0x40000107u /* cpuss.dw1_tr_in[7] */ +} en_trig_output_pdma1_tr_t; + +/* Trigger Output Group 2 - TCPWM0 trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_2_TCPWM0_TR_IN0 = 0x40000200u, /* tcpwm[0].tr_in[0] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN1 = 0x40000201u, /* tcpwm[0].tr_in[1] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN2 = 0x40000202u, /* tcpwm[0].tr_in[2] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN3 = 0x40000203u, /* tcpwm[0].tr_in[3] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN4 = 0x40000204u, /* tcpwm[0].tr_in[4] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN5 = 0x40000205u, /* tcpwm[0].tr_in[5] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN6 = 0x40000206u, /* tcpwm[0].tr_in[6] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN7 = 0x40000207u, /* tcpwm[0].tr_in[7] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN8 = 0x40000208u, /* tcpwm[0].tr_in[8] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN9 = 0x40000209u, /* tcpwm[0].tr_in[9] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN10 = 0x4000020Au, /* tcpwm[0].tr_in[10] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN11 = 0x4000020Bu, /* tcpwm[0].tr_in[11] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN12 = 0x4000020Cu, /* tcpwm[0].tr_in[12] */ + TRIG_OUT_MUX_2_TCPWM0_TR_IN13 = 0x4000020Du /* tcpwm[0].tr_in[13] */ +} en_trig_output_tcpwm0_t; + +/* Trigger Output Group 3 - TCPWM1 trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_3_TCPWM1_TR_IN0 = 0x40000300u, /* tcpwm[1].tr_in[0] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN1 = 0x40000301u, /* tcpwm[1].tr_in[1] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN2 = 0x40000302u, /* tcpwm[1].tr_in[2] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN3 = 0x40000303u, /* tcpwm[1].tr_in[3] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN4 = 0x40000304u, /* tcpwm[1].tr_in[4] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN5 = 0x40000305u, /* tcpwm[1].tr_in[5] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN6 = 0x40000306u, /* tcpwm[1].tr_in[6] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN7 = 0x40000307u, /* tcpwm[1].tr_in[7] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN8 = 0x40000308u, /* tcpwm[1].tr_in[8] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN9 = 0x40000309u, /* tcpwm[1].tr_in[9] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN10 = 0x4000030Au, /* tcpwm[1].tr_in[10] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN11 = 0x4000030Bu, /* tcpwm[1].tr_in[11] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN12 = 0x4000030Cu, /* tcpwm[1].tr_in[12] */ + TRIG_OUT_MUX_3_TCPWM1_TR_IN13 = 0x4000030Du /* tcpwm[1].tr_in[13] */ +} en_trig_output_tcpwm1_t; + +/* Trigger Output Group 4 - HSIOM trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_4_HSIOM_TR_IO_OUTPUT0 = 0x40000400u, /* peri.tr_io_output[0] */ + TRIG_OUT_MUX_4_HSIOM_TR_IO_OUTPUT1 = 0x40000401u /* peri.tr_io_output[1] */ +} en_trig_output_hsiom_t; + +/* Trigger Output Group 5 - CPUSS Debug and Profiler trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_5_CPUSS_CTI_TR_IN0 = 0x40000500u, /* cpuss.cti_tr_in[0] */ + TRIG_OUT_MUX_5_CPUSS_CTI_TR_IN1 = 0x40000501u, /* cpuss.cti_tr_in[1] */ + TRIG_OUT_MUX_5_PROFILE_TR_START = 0x40000502u, /* profile.tr_start */ + TRIG_OUT_MUX_5_PROFILE_TR_STOP = 0x40000503u /* profile.tr_stop */ +} en_trig_output_cpuss_cti_t; + +/* Trigger Output Group 6 - MDMA trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_6_MDMA_TR_IN0 = 0x40000600u, /* cpuss.dmac_tr_in[0] */ + TRIG_OUT_MUX_6_MDMA_TR_IN1 = 0x40000601u, /* cpuss.dmac_tr_in[1] */ + TRIG_OUT_MUX_6_MDMA_TR_IN2 = 0x40000602u, /* cpuss.dmac_tr_in[2] */ + TRIG_OUT_MUX_6_MDMA_TR_IN3 = 0x40000603u /* cpuss.dmac_tr_in[3] */ +} en_trig_output_mdma_t; + +/* Trigger Output Group 7 - PERI Freeze trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_7_DEBUG_FREEZE_TR_IN = 0x40000700u /* peri.tr_dbg_freeze */ +} en_trig_output_peri_freeze_t; + +/* Trigger Output Group 8 - Capsense trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_8_CSD_DSI_START = 0x40000800u /* csd.dsi_start */ +} en_trig_output_csd_t; + +/* Trigger Output Group 9 - ADC trigger multiplexer */ +typedef enum +{ + TRIG_OUT_MUX_9_PASS_TR_SAR_IN = 0x40000900u /* pass.tr_sar_in */ +} en_trig_output_sar_adc_start_t; + +/* Trigger Output Group 0 - SCB PDMA0 Triggers (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_0_SCB0_TX_TO_PDMA0_TR_IN16 = 0x40001000u, /* cpuss.dw0_tr_in[16] */ + TRIG_OUT_1TO1_0_SCB0_RX_TO_PDMA0_TR_IN17 = 0x40001001u, /* cpuss.dw0_tr_in[17] */ + TRIG_OUT_1TO1_0_SCB1_TX_TO_PDMA0_TR_IN18 = 0x40001002u, /* cpuss.dw0_tr_in[18] */ + TRIG_OUT_1TO1_0_SCB1_RX_TO_PDMA0_TR_IN19 = 0x40001003u, /* cpuss.dw0_tr_in[19] */ + TRIG_OUT_1TO1_0_SCB2_TX_TO_PDMA0_TR_IN20 = 0x40001004u, /* cpuss.dw0_tr_in[20] */ + TRIG_OUT_1TO1_0_SCB2_RX_TO_PDMA0_TR_IN21 = 0x40001005u, /* cpuss.dw0_tr_in[21] */ + TRIG_OUT_1TO1_0_SCB3_TX_TO_PDMA0_TR_IN22 = 0x40001006u, /* cpuss.dw0_tr_in[22] */ + TRIG_OUT_1TO1_0_SCB3_RX_TO_PDMA0_TR_IN23 = 0x40001007u, /* cpuss.dw0_tr_in[23] */ + TRIG_OUT_1TO1_0_SCB4_TX_TO_PDMA0_TR_IN24 = 0x40001008u, /* cpuss.dw0_tr_in[24] */ + TRIG_OUT_1TO1_0_SCB4_RX_TO_PDMA0_TR_IN25 = 0x40001009u, /* cpuss.dw0_tr_in[25] */ + TRIG_OUT_1TO1_0_SCB5_TX_TO_PDMA0_TR_IN26 = 0x4000100Au, /* cpuss.dw0_tr_in[26] */ + TRIG_OUT_1TO1_0_SCB5_RX_TO_PDMA0_TR_IN27 = 0x4000100Bu /* cpuss.dw0_tr_in[27] */ +} en_trig_output_1to1_scb_pdma0_tr_t; + +/* Trigger Output Group 1 - SCB PDMA1 Triggers (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_1_SCB6_TX_TO_PDMA1_TR_IN8 = 0x40001100u, /* cpuss.dw1_tr_in[8] */ + TRIG_OUT_1TO1_1_SCB6_RX_TO_PDMA1_TR_IN9 = 0x40001101u, /* cpuss.dw1_tr_in[9] */ + TRIG_OUT_1TO1_1_SCB7_TX_TO_PDMA1_TR_IN10 = 0x40001102u, /* cpuss.dw1_tr_in[10] */ + TRIG_OUT_1TO1_1_SCB7_RX_TO_PDMA1_TR_IN11 = 0x40001103u, /* cpuss.dw1_tr_in[11] */ + TRIG_OUT_1TO1_1_SCB8_TX_TO_PDMA1_TR_IN12 = 0x40001104u, /* cpuss.dw1_tr_in[12] */ + TRIG_OUT_1TO1_1_SCB8_RX_TO_PDMA1_TR_IN13 = 0x40001105u, /* cpuss.dw1_tr_in[13] */ + TRIG_OUT_1TO1_1_SCB9_TX_TO_PDMA1_TR_IN14 = 0x40001106u, /* cpuss.dw1_tr_in[14] */ + TRIG_OUT_1TO1_1_SCB9_RX_TO_PDMA1_TR_IN15 = 0x40001107u, /* cpuss.dw1_tr_in[15] */ + TRIG_OUT_1TO1_1_SCB10_TX_TO_PDMA1_TR_IN16 = 0x40001108u, /* cpuss.dw1_tr_in[16] */ + TRIG_OUT_1TO1_1_SCB10_RX_TO_PDMA1_TR_IN17 = 0x40001109u, /* cpuss.dw1_tr_in[17] */ + TRIG_OUT_1TO1_1_SCB11_TX_TO_PDMA1_TR_IN18 = 0x4000110Au, /* cpuss.dw1_tr_in[18] */ + TRIG_OUT_1TO1_1_SCB11_RX_TO_PDMA1_TR_IN19 = 0x4000110Bu, /* cpuss.dw1_tr_in[19] */ + TRIG_OUT_1TO1_1_SCB12_TX_TO_PDMA1_TR_IN20 = 0x4000110Cu, /* cpuss.dw1_tr_in[20] */ + TRIG_OUT_1TO1_1_SCB12_RX_TO_PDMA1_TR_IN21 = 0x4000110Du /* cpuss.dw1_tr_in[21] */ +} en_trig_output_1to1_scb_pdma1_tr_t; + +/* Trigger Output Group 2 - PASS to PDMA0 direct connect (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_2_PASS_SAR_DONE_TO_PDMA0_TR_IN28 = 0x40001200u /* cpuss.dw0_tr_in[28] */ +} en_trig_output_1to1_sar_to_pdma0_t; + +/* Trigger Output Group 3 - (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_3_SMIF_TX_TO_PDMA1_TR_IN22 = 0x40001300u, /* cpuss.dw1_tr_in[22] */ + TRIG_OUT_1TO1_3_SMIF_RX_TO_PDMA1_TR_IN23 = 0x40001301u /* cpuss.dw1_tr_in[23] */ +} en_trig_output_1to1_smif_to_pdma1_t; + +/* Trigger Output Group 4 - I2S and PDM PDMA triggers (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_4_I2S0_TX_TO_PDMA1_TR_IN24 = 0x40001400u, /* cpuss.dw1_tr_in[24] */ + TRIG_OUT_1TO1_4_I2S0_RX_TO_PDMA1_TR_IN25 = 0x40001401u, /* cpuss.dw1_tr_in[25] */ + TRIG_OUT_1TO1_4_PDM0_RX_TO_PDMA1_TR_IN26 = 0x40001402u, /* cpuss.dw1_tr_in[26] */ + TRIG_OUT_1TO1_4_I2S1_TX_TO_PDMA1_TR_IN27 = 0x40001403u, /* cpuss.dw1_tr_in[27] */ + TRIG_OUT_1TO1_4_I2S1_RX_TO_PDMA1_TR_IN28 = 0x40001404u /* cpuss.dw1_tr_in[28] */ +} en_trig_output_1to1_audioss_pdma1_tr_t; + +/* Trigger Output Group 5 - USB PDMA0 Triggers (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_5_USB_DMA0_TO_PDMA0_TR_IN8 = 0x40001500u, /* cpuss.dw0_tr_in[8] */ + TRIG_OUT_1TO1_5_USB_DMA1_TO_PDMA0_TR_IN9 = 0x40001501u, /* cpuss.dw0_tr_in[9] */ + TRIG_OUT_1TO1_5_USB_DMA2_TO_PDMA0_TR_IN10 = 0x40001502u, /* cpuss.dw0_tr_in[10] */ + TRIG_OUT_1TO1_5_USB_DMA3_TO_PDMA0_TR_IN11 = 0x40001503u, /* cpuss.dw0_tr_in[11] */ + TRIG_OUT_1TO1_5_USB_DMA4_TO_PDMA0_TR_IN12 = 0x40001504u, /* cpuss.dw0_tr_in[12] */ + TRIG_OUT_1TO1_5_USB_DMA5_TO_PDMA0_TR_IN13 = 0x40001505u, /* cpuss.dw0_tr_in[13] */ + TRIG_OUT_1TO1_5_USB_DMA6_TO_PDMA0_TR_IN14 = 0x40001506u, /* cpuss.dw0_tr_in[14] */ + TRIG_OUT_1TO1_5_USB_DMA7_TO_PDMA0_TR_IN15 = 0x40001507u /* cpuss.dw0_tr_in[15] */ +} en_trig_output_1to1_usb_pdma0_tr_t; + +/* Trigger Output Group 6 - USB PDMA0 Acknowledge Triggers (OneToOne) */ +typedef enum +{ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT8_TO_USB_ACK0 = 0x40001600u, /* usb.dma_burstend[0] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT9_TO_USB_ACK1 = 0x40001601u, /* usb.dma_burstend[1] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT10_TO_USB_ACK2 = 0x40001602u, /* usb.dma_burstend[2] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT11_TO_USB_ACK3 = 0x40001603u, /* usb.dma_burstend[3] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT12_TO_USB_ACK4 = 0x40001604u, /* usb.dma_burstend[4] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT13_TO_USB_ACK5 = 0x40001605u, /* usb.dma_burstend[5] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT14_TO_USB_ACK6 = 0x40001606u, /* usb.dma_burstend[6] */ + TRIG_OUT_1TO1_6_PDMA0_TR_OUT15_TO_USB_ACK7 = 0x40001607u /* usb.dma_burstend[7] */ +} en_trig_output_1to1_usb_pdma0_ack_tr_t; + +/* Level or edge detection setting for a trigger mux */ +typedef enum +{ + /* The trigger is a simple level output */ + TRIGGER_TYPE_LEVEL = 0u, + /* The trigger is synchronized to the consumer blocks clock + and a two cycle pulse is generated on this clock */ + TRIGGER_TYPE_EDGE = 1u +} en_trig_type_t; + +/* Trigger Type Defines */ +/* TCPWM Trigger Types */ +#define TRIGGER_TYPE_TCPWM_LINE TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_LINE_COMPL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_TR_OVERFLOW TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_COMPARE_MATCH TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_UNDERFLOW TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_TCPWM_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_TCPWM_TR_IN__EDGE TRIGGER_TYPE_EDGE +/* CSD Trigger Types */ +#define TRIGGER_TYPE_CSD_DSI_SAMPLE_OUT TRIGGER_TYPE_EDGE +/* SCB Trigger Types */ +#define TRIGGER_TYPE_SCB_TR_I2C_SCL_FILTERED TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SCB_TR_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SCB_TR_RX_REQ TRIGGER_TYPE_LEVEL +/* PERI Trigger Types */ +#define TRIGGER_TYPE_PERI_TR_IO_INPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PERI_TR_IO_INPUT__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PERI_TR_IO_OUTPUT__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PERI_TR_IO_OUTPUT__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PERI_TR_DBG_FREEZE TRIGGER_TYPE_LEVEL +/* CPUSS Trigger Types */ +#define TRIGGER_TYPE_CPUSS_DW0_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_CPUSS_DW0_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW1_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_CPUSS_DW1_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DMAC_TR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_CPUSS_DMAC_TR_IN__EDGE TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW0_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DW1_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_DMAC_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_CTI_TR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_TR_FAULT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_CPUSS_CTI_TR_IN TRIGGER_TYPE_EDGE +/* AUDIOSS Trigger Types */ +#define TRIGGER_TYPE_AUDIOSS_TR_I2S_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_AUDIOSS_TR_I2S_RX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_AUDIOSS_TR_PDM_RX_REQ TRIGGER_TYPE_LEVEL +/* LPCOMP Trigger Types */ +#define TRIGGER_TYPE_LPCOMP_DSI_COMP0 TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_LPCOMP_DSI_COMP1 TRIGGER_TYPE_LEVEL +/* SMIF Trigger Types */ +#define TRIGGER_TYPE_SMIF_TR_TX_REQ TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_SMIF_TR_RX_REQ TRIGGER_TYPE_LEVEL +/* USB Trigger Types */ +#define TRIGGER_TYPE_USB_DMA_REQ TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_USB_DMA_BURSTEND TRIGGER_TYPE_EDGE +/* PASS Trigger Types */ +#define TRIGGER_TYPE_PASS_TR_SAR_OUT TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PASS_TR_SAR_IN__LEVEL TRIGGER_TYPE_LEVEL +#define TRIGGER_TYPE_PASS_TR_SAR_IN__EDGE TRIGGER_TYPE_EDGE +/* PROFILE Trigger Types */ +#define TRIGGER_TYPE_PROFILE_TR_START TRIGGER_TYPE_EDGE +#define TRIGGER_TYPE_PROFILE_TR_STOP TRIGGER_TYPE_EDGE + +/* Monitor Signal Defines */ +typedef enum +{ + PROFILE_ONE = 0, /* profile.one */ + CPUSS_MONITOR_CM0 = 1, /* cpuss.monitor_cm0 */ + CPUSS_MONITOR_CM4 = 2, /* cpuss.monitor_cm4 */ + CPUSS_MONITOR_MAIN_FLASH = 3, /* cpuss.monitor_main_flash */ + CPUSS_MONITOR_WORK_FLASH = 4, /* cpuss.monitor_work_flash */ + CPUSS_MONITOR_DW0_AHB = 5, /* cpuss.monitor_dw0_ahb */ + CPUSS_MONITOR_DW1_AHB = 6, /* cpuss.monitor_dw1_ahb */ + CPUSS_MONITOR_DMAC_AHB = 7, /* cpuss.monitor_dmac_ahb */ + CPUSS_MONITOR_CRYPTO = 8, /* cpuss.monitor_crypto */ + USB_MONITOR_AHB = 9, /* usb.monitor_ahb */ + SCB0_MONITOR_AHB = 10, /* scb[0].monitor_ahb */ + SCB1_MONITOR_AHB = 11, /* scb[1].monitor_ahb */ + SCB2_MONITOR_AHB = 12, /* scb[2].monitor_ahb */ + SCB3_MONITOR_AHB = 13, /* scb[3].monitor_ahb */ + SCB4_MONITOR_AHB = 14, /* scb[4].monitor_ahb */ + SCB5_MONITOR_AHB = 15, /* scb[5].monitor_ahb */ + SCB6_MONITOR_AHB = 16, /* scb[6].monitor_ahb */ + SCB7_MONITOR_AHB = 17, /* scb[7].monitor_ahb */ + SCB8_MONITOR_AHB = 18, /* scb[8].monitor_ahb */ + SCB9_MONITOR_AHB = 19, /* scb[9].monitor_ahb */ + SCB10_MONITOR_AHB = 20, /* scb[10].monitor_ahb */ + SCB11_MONITOR_AHB = 21, /* scb[11].monitor_ahb */ + SCB12_MONITOR_AHB = 22, /* scb[12].monitor_ahb */ + SMIF_MONITOR_SMIF_SPI_SELECT0 = 23, /* smif.monitor_smif_spi_select[0] */ + SMIF_MONITOR_SMIF_SPI_SELECT1 = 24, /* smif.monitor_smif_spi_select[1] */ + SMIF_MONITOR_SMIF_SPI_SELECT2 = 25, /* smif.monitor_smif_spi_select[2] */ + SMIF_MONITOR_SMIF_SPI_SELECT3 = 26, /* smif.monitor_smif_spi_select[3] */ + SMIF_MONITOR_SMIF_SPI_SELECT_ANY = 27, /* smif.monitor_smif_spi_select_any */ + SDHC0_MONITOR_CORE_MASTER_WR = 28, /* sdhc[0].monitor_core_master_wr */ + SDHC0_MONITOR_CORE_MASTER_RD = 29, /* sdhc[0].monitor_core_master_rd */ + SDHC1_MONITOR_CORE_MASTER_WR = 30, /* sdhc[1].monitor_core_master_wr */ + SDHC1_MONITOR_CORE_MASTER_RD = 31 /* sdhc[1].monitor_core_master_rd */ +} en_ep_mon_sel_t; + +/* Total count of Energy Profiler monitor signal connections */ +#define EP_MONITOR_COUNT 32u + +/* Bus masters */ +typedef enum +{ + CPUSS_MS_ID_CM0 = 0, + CPUSS_MS_ID_CRYPTO = 1, + CPUSS_MS_ID_DW0 = 2, + CPUSS_MS_ID_DW1 = 3, + CPUSS_MS_ID_DMAC = 4, + CPUSS_MS_ID_SLOW0 = 5, + CPUSS_MS_ID_SLOW1 = 6, + CPUSS_MS_ID_CM4 = 14, + CPUSS_MS_ID_TC = 15 +} en_prot_master_t; + +/* Pointer to device configuration structure */ +#define CY_DEVICE_CFG (&cy_deviceIpBlockCfgPSoC6_02) + +/* Include IP definitions */ +#include "ip/cyip_sflash.h" +#include "ip/cyip_peri_v2.h" +#include "ip/cyip_peri_ms_v2.h" +#include "ip/cyip_crypto_v2.h" +#include "ip/cyip_cpuss_v2.h" +#include "ip/cyip_fault_v2.h" +#include "ip/cyip_ipc_v2.h" +#include "ip/cyip_prot_v2.h" +#include "ip/cyip_flashc_v2.h" +#include "ip/cyip_srss.h" +#include "ip/cyip_backup.h" +#include "ip/cyip_dw_v2.h" +#include "ip/cyip_dmac_v2.h" +#include "ip/cyip_efuse.h" +#include "ip/cyip_efuse_data_psoc6_02.h" +#include "ip/cyip_profile.h" +#include "ip/cyip_hsiom_v2.h" +#include "ip/cyip_gpio_v2.h" +#include "ip/cyip_smartio_v2.h" +#include "ip/cyip_lpcomp.h" +#include "ip/cyip_csd.h" +#include "ip/cyip_tcpwm.h" +#include "ip/cyip_lcd.h" +#include "ip/cyip_usbfs.h" +#include "ip/cyip_smif.h" +#include "ip/cyip_sdhc.h" +#include "ip/cyip_scb.h" +#include "ip/cyip_ctbm.h" +#include "ip/cyip_ctdac.h" +#include "ip/cyip_sar.h" +#include "ip/cyip_pass.h" +#include "ip/cyip_pdm.h" +#include "ip/cyip_i2s.h" + +/* IP type definitions */ +typedef SFLASH_V1_Type SFLASH_Type; +typedef PERI_GR_V2_Type PERI_GR_Type; +typedef PERI_TR_GR_V2_Type PERI_TR_GR_Type; +typedef PERI_TR_1TO1_GR_V2_Type PERI_TR_1TO1_GR_Type; +typedef PERI_V2_Type PERI_Type; +typedef PERI_MS_PPU_PR_V2_Type PERI_MS_PPU_PR_Type; +typedef PERI_MS_PPU_FX_V2_Type PERI_MS_PPU_FX_Type; +typedef PERI_MS_V2_Type PERI_MS_Type; +typedef CRYPTO_V2_Type CRYPTO_Type; +typedef CPUSS_V2_Type CPUSS_Type; +typedef FAULT_STRUCT_V2_Type FAULT_STRUCT_Type; +typedef FAULT_V2_Type FAULT_Type; +typedef IPC_STRUCT_V2_Type IPC_STRUCT_Type; +typedef IPC_INTR_STRUCT_V2_Type IPC_INTR_STRUCT_Type; +typedef IPC_V2_Type IPC_Type; +typedef PROT_SMPU_SMPU_STRUCT_V2_Type PROT_SMPU_SMPU_STRUCT_Type; +typedef PROT_SMPU_V2_Type PROT_SMPU_Type; +typedef PROT_MPU_MPU_STRUCT_V2_Type PROT_MPU_MPU_STRUCT_Type; +typedef PROT_MPU_V2_Type PROT_MPU_Type; +typedef PROT_V2_Type PROT_Type; +typedef FLASHC_FM_CTL_V2_Type FLASHC_FM_CTL_Type; +typedef FLASHC_V2_Type FLASHC_Type; +typedef MCWDT_STRUCT_V1_Type MCWDT_STRUCT_Type; +typedef SRSS_V1_Type SRSS_Type; +typedef BACKUP_V1_Type BACKUP_Type; +typedef DW_CH_STRUCT_V2_Type DW_CH_STRUCT_Type; +typedef DW_V2_Type DW_Type; +typedef DMAC_CH_V2_Type DMAC_CH_Type; +typedef DMAC_V2_Type DMAC_Type; +typedef EFUSE_V1_Type EFUSE_Type; +typedef PROFILE_CNT_STRUCT_V1_Type PROFILE_CNT_STRUCT_Type; +typedef PROFILE_V1_Type PROFILE_Type; +typedef HSIOM_PRT_V2_Type HSIOM_PRT_Type; +typedef HSIOM_V2_Type HSIOM_Type; +typedef GPIO_PRT_V2_Type GPIO_PRT_Type; +typedef GPIO_V2_Type GPIO_Type; +typedef SMARTIO_PRT_V2_Type SMARTIO_PRT_Type; +typedef SMARTIO_V2_Type SMARTIO_Type; +typedef LPCOMP_V1_Type LPCOMP_Type; +typedef CSD_V1_Type CSD_Type; +typedef TCPWM_CNT_V1_Type TCPWM_CNT_Type; +typedef TCPWM_V1_Type TCPWM_Type; +typedef LCD_V1_Type LCD_Type; +typedef USBFS_USBDEV_V1_Type USBFS_USBDEV_Type; +typedef USBFS_USBLPM_V1_Type USBFS_USBLPM_Type; +typedef USBFS_USBHOST_V1_Type USBFS_USBHOST_Type; +typedef USBFS_V1_Type USBFS_Type; +typedef SMIF_DEVICE_V1_Type SMIF_DEVICE_Type; +typedef SMIF_V1_Type SMIF_Type; +typedef SDHC_WRAP_V1_Type SDHC_WRAP_Type; +typedef SDHC_CORE_V1_Type SDHC_CORE_Type; +typedef SDHC_V1_Type SDHC_Type; +typedef CySCB_V1_Type CySCB_Type; +typedef CTBM_V1_Type CTBM_Type; +typedef CTDAC_V1_Type CTDAC_Type; +typedef SAR_V1_Type SAR_Type; +typedef PASS_AREF_V1_Type PASS_AREF_Type; +typedef PASS_V1_Type PASS_Type; +typedef PDM_V1_Type PDM_Type; +typedef I2S_V1_Type I2S_Type; + +/* Parameter Defines */ +/* Number of regulator modules instantiated within SRSS, start with estimate, + update after CMR feedback */ +#define SRSS_NUM_ACTREG_PWRMOD 2u +/* Number of shorting switches between vccd and vccact (target dynamic voltage + drop < 10mV) */ +#define SRSS_NUM_ACTIVE_SWITCH 3u +/* ULP linear regulator system is present */ +#define SRSS_ULPLINREG_PRESENT 1u +/* HT linear regulator system is present */ +#define SRSS_HTLINREG_PRESENT 0u +/* Low-current buck regulator present. Can be derived from S40S_SISOBUCKLC_PRESENT + or SIMOBUCK_PRESENT. */ +#define SRSS_BUCKCTL_PRESENT 1u +/* Low-current SISO buck core regulator is present. Only compatible with ULP + linear regulator system (ULPLINREG_PRESENT==1). */ +#define SRSS_S40S_SISOBUCKLC_PRESENT 1u +/* SIMO buck core regulator is present. Only compatible with ULP linear regulator + system (ULPLINREG_PRESENT==1). */ +#define SRSS_SIMOBUCK_PRESENT 0u +/* Precision ILO (PILO) is present */ +#define SRSS_PILO_PRESENT 0u +/* External Crystal Oscillator is present (high frequency) */ +#define SRSS_ECO_PRESENT 1u +/* System Buck-Boost is present */ +#define SRSS_SYSBB_PRESENT 0u +/* Number of clock paths. Must be > 0 */ +#define SRSS_NUM_CLKPATH 6u +/* Number of PLLs present. Must be <= NUM_CLKPATH */ +#define SRSS_NUM_PLL 2u +/* Number of HFCLK roots present. Must be > 0 */ +#define SRSS_NUM_HFROOT 6u +/* Number of PWR_HIB_DATA registers, should not be needed if BACKUP_PRESENT */ +#define SRSS_NUM_HIBDATA 1u +/* Backup domain is present (includes RTC and WCO) */ +#define SRSS_BACKUP_PRESENT 1u +/* Mask of HFCLK root clock supervisors (CSV). For each clock root i, bit[i] of + mask indicates presence of a CSV. */ +#define SRSS_MASK_HFCSV 0u +/* Clock supervisor is present on WCO. Must be 0 if BACKUP_PRESENT==0. */ +#define SRSS_WCOCSV_PRESENT 0u +/* Number of software watchdog timers. */ +#define SRSS_NUM_MCWDT 2u +/* Number of DSI inputs into clock muxes. This is used for logic optimization. */ +#define SRSS_NUM_DSI 0u +/* Alternate high-frequency clock is present. This is used for logic optimization. */ +#define SRSS_ALTHF_PRESENT 0u +/* Alternate low-frequency clock is present. This is used for logic optimization. */ +#define SRSS_ALTLF_PRESENT 0u +/* Use the hardened clkactfllmux block */ +#define SRSS_USE_HARD_CLKACTFLLMUX 1u +/* Number of clock paths, including direct paths in hardened clkactfllmux block + (Must be >= NUM_CLKPATH) */ +#define SRSS_HARD_CLKPATH 6u +/* Number of clock paths with muxes in hardened clkactfllmux block (Must be >= + NUM_PLL+1) */ +#define SRSS_HARD_CLKPATHMUX 6u +/* Number of HFCLKS present in hardened clkactfllmux block (Must be >= NUM_HFROOT) */ +#define SRSS_HARD_HFROOT 6u +/* ECO mux is present in hardened clkactfllmux block (Must be >= ECO_PRESENT) */ +#define SRSS_HARD_ECOMUX_PRESENT 1u +/* ALTHF mux is present in hardened clkactfllmux block (Must be >= ALTHF_PRESENT) */ +#define SRSS_HARD_ALTHFMUX_PRESENT 1u +/* Backup memory is present (only used when BACKUP_PRESENT==1) */ +#define SRSS_BACKUP_BMEM_PRESENT 0u +/* Number of Backup registers to include (each is 32b). Only used when + BACKUP_PRESENT==1. */ +#define SRSS_BACKUP_NUM_BREG 16u +/* Number of AMUX splitter cells */ +#define IOSS_HSIOM_AMUX_SPLIT_NR 8u +/* Number of HSIOM ports in device (same as GPIO.GPIO_PRT_NR) */ +#define IOSS_HSIOM_HSIOM_PORT_NR 15u +/* Number of PWR/GND MONITOR CELLs in the device */ +#define IOSS_HSIOM_MONITOR_NR 0u +/* Number of PWR/GND MONITOR CELLs in range 0..31 */ +#define IOSS_HSIOM_MONITOR_NR_0_31 0u +/* Number of PWR/GND MONITOR CELLs in range 32..63 */ +#define IOSS_HSIOM_MONITOR_NR_32_63 0u +/* Number of PWR/GND MONITOR CELLs in range 64..95 */ +#define IOSS_HSIOM_MONITOR_NR_64_95 0u +/* Number of PWR/GND MONITOR CELLs in range 96..127 */ +#define IOSS_HSIOM_MONITOR_NR_96_127 0u +/* Indicates the presence of alternate JTAG interface */ +#define IOSS_HSIOM_ALTJTAG_PRESENT 0u +/* Number of GPIO ports in range 0..31 */ +#define IOSS_GPIO_GPIO_PORT_NR_0_31 15u +/* Number of GPIO ports in range 32..63 */ +#define IOSS_GPIO_GPIO_PORT_NR_32_63 0u +/* Number of GPIO ports in range 64..95 */ +#define IOSS_GPIO_GPIO_PORT_NR_64_95 0u +/* Number of GPIO ports in range 96..127 */ +#define IOSS_GPIO_GPIO_PORT_NR_96_127 0u +/* Number of ports in device */ +#define IOSS_GPIO_GPIO_PORT_NR 15u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO6 0u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR0_GPIO_PRT_SLOW_IO7 0u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO6 0u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR1_GPIO_PRT_SLOW_IO7 0u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR2_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO6 0u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR3_GPIO_PRT_SLOW_IO7 0u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO4 0u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO5 0u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO6 0u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR4_GPIO_PRT_SLOW_IO7 0u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR5_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR6_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR7_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR8_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR9_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR10_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR11_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR12_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_GPIO 1u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO2 1u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO3 1u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO4 1u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO5 1u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO6 1u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR13_GPIO_PRT_SLOW_IO7 1u +/* Indicates port is either GPIO or SIO (i.e. all GPIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_GPIO 0u +/* Indicates port is an SIO port (i.e. both GPIO and SIO registers present) */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SIO 0u +/* Indicates port is a GPIO port including the "AUTO" input threshold */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_AUTOLVL 0u +/* Indicates that pin #0 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO0 1u +/* Indicates that pin #1 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO1 1u +/* Indicates that pin #2 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO2 0u +/* Indicates that pin #3 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO3 0u +/* Indicates that pin #4 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO4 0u +/* Indicates that pin #5 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO5 0u +/* Indicates that pin #6 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO6 0u +/* Indicates that pin #7 exists for this port with slew control feature */ +#define IOSS_GPIO_GPIO_PORT_NR14_GPIO_PRT_SLOW_IO7 0u +/* Mask of SMARTIO instances presence */ +#define IOSS_SMARTIO_SMARTIO_MASK 768u +/* The number of protection contexts ([2, 16]). */ +#define PERI_PC_NR 8u +/* Master interface presence mask (4 bits) */ +#define PERI_MS_PRESENT 15u +/* Protection structures SRAM ECC present or not ('0': no, '1': yes) */ +#define PERI_ECC_PRESENT 0u +/* Protection structures SRAM address ECC present or not ('0': no, '1': yes) */ +#define PERI_ECC_ADDR_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT0_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT1_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_CLOCK_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL4_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL7_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL10_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL12_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL13_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT2_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL5_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL11_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT3_PERI_GROUP_STRUCT_SL15_PRESENT 1u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL7_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT4_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT5_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL4_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL5_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL6_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL7_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL8_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL9_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL10_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL11_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL12_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT6_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT7_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT8_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL0_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT9_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL1_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL2_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL3_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT10_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT11_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT12_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT13_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT14_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Clock control functionality present ('0': no, '1': yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_CLOCK_PRESENT 1u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL0_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL1_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL2_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL3_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL4_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL5_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL6_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL7_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL8_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL9_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL10_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL11_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL12_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL13_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL14_PRESENT 0u +/* Slave present (0:No, 1:Yes) */ +#define PERI_GROUP_PRESENT15_PERI_GROUP_STRUCT_SL15_PRESENT 0u +/* Number of programmable clocks (outputs) */ +#define PERI_CLOCK_NR 54u +/* Number of 8.0 dividers */ +#define PERI_DIV_8_NR 8u +/* Number of 16.0 dividers */ +#define PERI_DIV_16_NR 16u +/* Number of 16.5 (fractional) dividers */ +#define PERI_DIV_16_5_NR 4u +/* Number of 24.5 (fractional) dividers */ +#define PERI_DIV_24_5_NR 1u +/* Divider number width: max(1,roundup(log2(max(DIV_*_NR))) */ +#define PERI_DIV_ADDR_WIDTH 4u +/* Timeout functionality present ('0': no, '1': yes) */ +#define PERI_TIMEOUT_PRESENT 1u +/* Trigger module present (0=No, 1=Yes) */ +#define PERI_TR 1u +/* Number of trigger groups */ +#define PERI_TR_GROUP_NR 10u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR0_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR1_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR2_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR3_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR4_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR5_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR6_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR7_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR8_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_GROUP_NR9_TR_GROUP_TR_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR0_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR1_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR2_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR3_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR4_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR5_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Trigger 1-to-1 group trigger manipulation logic present ('0': no, '1': yes) */ +#define PERI_TR_1TO1_GROUP_NR6_TR_1TO1_GROUP_TR_1TO1_MANIPULATION_PRESENT 1u +/* Number of AHB-Lite "hmaster[]" bits ([1, 8]). */ +#define PERI_MASTER_WIDTH 8u +/* UDB present or not ('0': no, '1': yes) */ +#define CPUSS_UDB_PRESENT 0u +/* MBIST MMIO for Synopsys MBIST ('0': no, '1': yes). Set this to '1' only for the + chips which doesn't use mxdft. */ +#define CPUSS_MBIST_MMIO_PRESENT 1u +/* System RAM 0 size in kilobytes */ +#define CPUSS_SRAM0_SIZE 512u +/* Number of macros used to implement System RAM 0. Example: 8 if 256 KB System + SRAM0 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC0_MACRO_NR 16u +/* System RAM 1 present or not (0=No, 1=Yes) */ +#define CPUSS_RAMC1_PRESENT 1u +/* System RAM 1 size in kilobytes */ +#define CPUSS_SRAM1_SIZE 256u +/* Number of macros used to implement System RAM 1. Example: 8 if 256 KB System + RAM 1 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC1_MACRO_NR 8u +/* System RAM 2 present or not (0=No, 1=Yes) */ +#define CPUSS_RAMC2_PRESENT 1u +/* System RAM 2 size in kilobytes */ +#define CPUSS_SRAM2_SIZE 256u +/* Number of macros used to implement System RAM 2. Example: 8 if 256 KB System + RAM 2 is implemented with 8 32KB macros. */ +#define CPUSS_RAMC2_MACRO_NR 8u +/* System SRAM(s) ECC present or not ('0': no, '1': yes) */ +#define CPUSS_RAMC_ECC_PRESENT 0u +/* System SRAM(s) address ECC present or not ('0': no, '1': yes) */ +#define CPUSS_RAMC_ECC_ADDR_PRESENT 0u +/* ECC present in either system RAM or interrupt handler (RAMC_ECC_PRESENT) */ +#define CPUSS_ECC_PRESENT 0u +/* DataWire SRAMs ECC present or not ('0': no, '1': yes) */ +#define CPUSS_DW_ECC_PRESENT 0u +/* DataWire SRAMs address ECC present or not ('0': no, '1': yes) */ +#define CPUSS_DW_ECC_ADDR_PRESENT 0u +/* System ROM size in KB */ +#define CPUSS_ROM_SIZE 64u +/* Number of macros used to implement system ROM. Example: 4 if 512 KB system ROM + is implemented with 4 128KB macros. */ +#define CPUSS_ROMC_MACRO_NR 1u +/* Flash memory type ('0' : SONOS, '1': ECT) */ +#define CPUSS_FLASHC_ECT 0u +/* Flash main region size in KB */ +#define CPUSS_FLASH_SIZE 2048u +/* Flash work region size in KB (EEPROM emulation, data) */ +#define CPUSS_WFLASH_SIZE 32u +/* Flash supervisory region size in KB */ +#define CPUSS_SFLASH_SIZE 32u +/* Flash data output word size (in Bytes) */ +#define CPUSS_FLASHC_MAIN_DATA_WIDTH 16u +/* SONOS Flash RWW present or not ('0': no, '1': yes) When RWW is '0', No special + sectors present in Flash. Part of main sector 0 is allowcated for Supervisory + Flash, and no Work Flash present. */ +#define CPUSS_FLASHC_SONOS_RWW 1u +/* SONOS Flash, number of main sectors. */ +#define CPUSS_FLASHC_SONOS_MAIN_SECTORS 8u +/* SONOS Flash, number of rows per main sector. */ +#define CPUSS_FLASHC_SONOS_MAIN_ROWS 512u +/* SONOS Flash, number of words per row of main sector. */ +#define CPUSS_FLASHC_SONOS_MAIN_WORDS 128u +/* SONOS Flash, number of special sectors. */ +#define CPUSS_FLASHC_SONOS_SPL_SECTORS 2u +/* SONOS Flash, number of rows per special sector. */ +#define CPUSS_FLASHC_SONOS_SPL_ROWS 64u +/* Flash memory ECC present or not ('0': no, '1': yes) */ +#define CPUSS_FLASHC_FLASH_ECC_PRESENT 0u +/* Flash cache SRAM(s) ECC present or not ('0': no, '1': yes) */ +#define CPUSS_FLASHC_RAM_ECC_PRESENT 0u +/* Number of external slaves directly connected to slow AHB-Lite infrastructure. + Maximum nubmer of slave supported is 4. Width of this parameter is 4-bits. + 1-bit mask for each slave indicating present or not. Example: 4'b0011 - slave + 0 and slave 1 are present. Note: The SLOW_SLx_ADDR and SLOW_SLx_MASK + parameters (for the slaves present) should be derived from the Memory Map. */ +#define CPUSS_SLOW_SL_PRESENT 1u +/* Number of external slaves directly connected to fast AHB-Lite infrastructure. + Maximum nubmer of slave supported is 4. Width of this parameter is 4-bits. + 1-bit mask for each slave indicating present or not. Example: 4'b0011 - slave + 0 and slave 1 are present. Note: The FAST_SLx_ADDR and FAST_SLx_MASK + parameters (for the slaves present) should be derived from the Memory Map. */ +#define CPUSS_FAST_SL_PRESENT 1u +/* Number of external masters driving the slow AHB-Lite infrastructure. Maximum + number of masters supported is 2. Width of this parameter is 2-bits. 1-bit + mask for each master indicating present or not. Example: 2'b01 - master 0 is + present. */ +#define CPUSS_SLOW_MS_PRESENT 3u +/* System interrupt functionality present or not ('0': no; '1': yes). Not used for + CM0+ PCU, which always uses system interrupt functionality. */ +#define CPUSS_SYSTEM_IRQ_PRESENT 0u +/* Number of total interrupt request inputs to CPUSS */ +#define CPUSS_SYSTEM_INT_NR 168u +/* Number of DeepSleep wakeup interrupt inputs to CPUSS */ +#define CPUSS_SYSTEM_DPSLP_INT_NR 39u +/* Width of the CM4 interrupt priority bits. Legal range [3,8] Example: 3 = 8 + levels of priority 8 = 256 levels of priority */ +#define CPUSS_CM4_LVL_WIDTH 3u +/* CM4 Floating point unit present or not (0=No, 1=Yes) */ +#define CPUSS_CM4_FPU_PRESENT 1u +/* Debug level. Legal range [0,3] (0= No support, 1= Minimum: CM0/4 both 2 + breakpoints +1 watchpoint, 2= Full debug: CM0/4 have 4/6 breakpoints, 2/4 + watchpoints and 0/2 literal compare, 3= Full debug + data matching) */ +#define CPUSS_DEBUG_LVL 3u +/* Trace level. Legal range [0,2] (0= No tracing, 1= ITM + TPIU + SWO, 2= ITM + + ETM + TPIU + SWO) Note: CM4 HTM is not supported. Hence vaule 3 for trace + level is not supported in CPUSS. */ +#define CPUSS_TRACE_LVL 2u +/* Embedded Trace Buffer present or not (0=No, 1=Yes) */ +#define CPUSS_ETB_PRESENT 0u +/* CM0+ MTB SRAM buffer size in kilobytes. Legal vaules 4, 8 or 16 */ +#define CPUSS_MTB_SRAM_SIZE 4u +/* CM4 ETB SRAM buffer size in kilobytes. Legal vaules 4, 8 or 16 */ +#define CPUSS_ETB_SRAM_SIZE 8u +/* PTM interface present (0=No, 1=Yes) */ +#define CPUSS_PTM_PRESENT 0u +/* Width of the PTM interface in bits ([2,32]) */ +#define CPUSS_PTM_WIDTH 1u +/* Width of the TPIU interface in bits ([1,4]) */ +#define CPUSS_TPIU_WIDTH 4u +/* CoreSight Part Identification Number */ +#define CPUSS_JEPID 52u +/* CoreSight Part Identification Number */ +#define CPUSS_JEPCONTINUATION 0u +/* CoreSight Part Identification Number */ +#define CPUSS_FAMILYID 258u +/* ROM trim register width (for ARM 3, for Synopsys 5) */ +#define CPUSS_ROM_TRIM_WIDTH 5u +/* ROM trim register default (for both ARM and Synopsys 0x0000_0012) */ +#define CPUSS_ROM_TRIM_DEFAULT 18u +/* RAM trim register width (for ARM 8, for Synopsys 15) */ +#define CPUSS_RAM_TRIM_WIDTH 15u +/* RAM trim register default (for ARM 0x0000_0062 and for Synopsys 0x0000_6012) */ +#define CPUSS_RAM_TRIM_DEFAULT 24594u +/* Cryptography IP present or not (0=No, 1=Yes) */ +#define CPUSS_CRYPTO_PRESENT 1u +/* DataWire and DMAC SW trigger per channel present or not ('0': no, '1': yes) */ +#define CPUSS_SW_TR_PRESENT 0u +/* DataWire 0 present or not (0=No, 1=Yes) */ +#define CPUSS_DW0_PRESENT 1u +/* Number of DataWire 0 channels (8, 16 or 32) */ +#define CPUSS_DW0_CH_NR 29u +/* DataWire 1 present or not (0=No, 1=Yes) */ +#define CPUSS_DW1_PRESENT 1u +/* Number of DataWire 1 channels (8, 16 or 32) */ +#define CPUSS_DW1_CH_NR 29u +/* DMA controller present or not ('0': no, '1': yes) */ +#define CPUSS_DMAC_PRESENT 1u +/* Number of DMA controller channels ([1, 8]) */ +#define CPUSS_DMAC_CH_NR 4u +/* Number of Flash BIST_DATA registers */ +#define CPUSS_FLASHC_FLASHC_BIST_DATA_NR 4u +/* Page size in # of 32-bit words (1: 4 bytes, 2: 8 bytes, ... */ +#define CPUSS_FLASHC_PA_SIZE 128u +/* SONOS Flash is used or not ('0': no, '1': yes) */ +#define CPUSS_FLASHC_FLASHC_IS_SONOS 1u +/* eCT Flash is used or not ('0': no, '1': yes) */ +#define CPUSS_FLASHC_FLASHC_IS_ECT 0u +/* Cryptography SRAMs ECC present or not ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_ECC_PRESENT 0u +/* Cryptography SRAMs address ECC present or not ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_ECC_ADDR_PRESENT 0u +/* AES cipher support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_AES 1u +/* (Tripple) DES cipher support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_DES 1u +/* Chacha support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_CHACHA 1u +/* Pseudo random number generation support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_PR 1u +/* SHA1 hash support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_SHA1 1u +/* SHA2 hash support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_SHA2 1u +/* SHA3 hash support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_SHA3 1u +/* Cyclic Redundancy Check support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_CRC 1u +/* True random number generation support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_TR 1u +/* Vector unit support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_VU 1u +/* Galios/Counter Mode (GCM) support ('0': no, '1': yes) */ +#define CPUSS_CRYPTO_GCM 1u +/* Number of 32-bit words in the IP internal memory buffer (from the set [64, 128, + 256, 512, 1024, 2048, 4096], to allow for a 256 B, 512 B, 1 kB, 2 kB, 4 kB, 8 + kB and 16 kB memory buffer) */ +#define CPUSS_CRYPTO_BUFF_SIZE 1024u +/* Number of fault structures. Legal range [1, 4] */ +#define CPUSS_FAULT_FAULT_NR 2u +/* Number of IPC structures. Legal range [1, 16] */ +#define CPUSS_IPC_IPC_NR 16u +/* Number of IPC interrupt structures. Legal range [1, 16] */ +#define CPUSS_IPC_IPC_IRQ_NR 16u +/* Master 0 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS0_PC_NR_MINUS1 7u +/* Master 1 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS1_PC_NR_MINUS1 0u +/* Master 2 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS2_PC_NR_MINUS1 0u +/* Master 3 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS3_PC_NR_MINUS1 0u +/* Master 4 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS4_PC_NR_MINUS1 0u +/* Master 5 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS5_PC_NR_MINUS1 7u +/* Master 6 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS6_PC_NR_MINUS1 7u +/* Master 7 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS7_PC_NR_MINUS1 0u +/* Master 8 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS8_PC_NR_MINUS1 0u +/* Master 9 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS9_PC_NR_MINUS1 0u +/* Master 10 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS10_PC_NR_MINUS1 0u +/* Master 11 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS11_PC_NR_MINUS1 0u +/* Master 12 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS12_PC_NR_MINUS1 0u +/* Master 13 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS13_PC_NR_MINUS1 0u +/* Master 14 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS14_PC_NR_MINUS1 7u +/* Master 15 protect contexts minus one */ +#define CPUSS_PROT_SMPU_MS15_PC_NR_MINUS1 7u +/* Number of SMPU protection structures */ +#define CPUSS_PROT_SMPU_STRUCT_NR 16u +/* Number of protection contexts supported minus 1. Legal range [1,16] */ +#define CPUSS_SMPU_STRUCT_PC_NR_MINUS1 7u +/* Number of DataWire controllers present (max 2) */ +#define CPUSS_DW_NR 2u +/* DataWire SRAMs ECC present or not ('0': no, '1': yes) */ +#define CPUSS_DW_ECC_PRESENT 0u +/* DataWire SW trigger per channel present or not ('0': no, '1': yes) */ +#define CPUSS_CH_STRUCT_SW_TR_PRESENT 0u +/* Number of DataWire controllers present (max 2) (same as DW.NR above) */ +#define CPUSS_CPUSS_DW_DW_NR 2u +/* Number of channels in each DataWire controller */ +#define CPUSS_CPUSS_DW_DW_NR0_DW_CH_NR 29u +/* Width of a channel number in bits */ +#define CPUSS_CPUSS_DW_DW_NR0_DW_CH_NR_WIDTH 5u +/* Number of channels in each DataWire controller */ +#define CPUSS_CPUSS_DW_DW_NR1_DW_CH_NR 29u +/* Width of a channel number in bits */ +#define CPUSS_CPUSS_DW_DW_NR1_DW_CH_NR_WIDTH 5u +/* Number of DMA controller channels ([1, 8]) */ +#define CPUSS_DMAC_CH_NR 4u +/* DMAC SW trigger per channel present or not ('0': no, '1': yes) */ +#define CPUSS_CH_SW_TR_PRESENT 0u +/* See MMIO2 instantiation or not */ +#define CPUSS_CHIP_TOP_PROFILER_PRESENT 1u +/* ETAS Calibration support pin out present (automotive only) */ +#define CPUSS_CHIP_TOP_CAL_SUP_NZ_PRESENT 0u +/* TRACE_LVL>0 */ +#define CPUSS_CHIP_TOP_TRACE_PRESENT 1u +/* Number of profiling counters. Legal range [1, 32] */ +#define PROFILE_PRFL_CNT_NR 8u +/* Number of monitor event signals. Legal range [1, 128] */ +#define PROFILE_PRFL_MONITOR_NR 128u +/* Number of instantiated eFUSE macros (256 bit macros). Legal range [1, 16] */ +#define EFUSE_EFUSE_NR 4u +/* SONOS Flash is used or not ('0': no, '1': yes) */ +#define SFLASH_FLASHC_IS_SONOS 1u +/* CPUSS_WOUNDING_PRESENT or not ('0': no, '1': yes) */ +#define SFLASH_CPUSS_WOUNDING_PRESENT 0u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB0_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB0_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB0_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB0_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB0_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB0_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB0_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB0_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB0_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB0_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB0_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB0_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB0_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB0_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB0_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB0_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB0_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB0_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB0_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB0_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB0_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB0_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB0_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB0_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB1_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB1_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB1_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB1_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB1_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB1_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB1_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB1_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB1_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB1_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB1_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB1_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB1_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB1_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB1_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB1_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB1_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB1_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB1_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB1_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB1_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB1_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB1_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB1_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB2_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB2_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB2_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB2_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB2_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB2_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB2_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB2_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB2_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB2_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB2_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB2_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB2_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB2_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB2_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB2_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB2_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB2_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB2_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB2_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB2_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB2_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB2_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB2_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB3_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB3_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB3_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB3_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB3_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB3_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB3_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB3_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB3_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB3_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB3_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB3_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB3_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB3_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB3_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB3_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB3_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB3_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB3_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB3_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB3_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB3_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB3_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB3_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB4_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB4_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB4_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB4_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB4_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB4_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB4_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB4_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB4_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB4_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB4_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB4_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB4_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB4_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB4_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB4_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB4_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB4_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB4_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB4_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB4_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB4_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB4_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB4_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB5_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB5_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB5_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB5_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB5_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB5_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB5_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB5_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB5_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB5_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB5_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB5_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB5_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB5_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB5_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB5_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB5_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB5_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB5_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB5_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB5_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB5_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB5_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB5_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB6_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB6_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB6_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB6_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB6_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB6_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB6_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB6_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB6_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB6_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB6_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB6_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB6_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB6_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB6_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB6_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB6_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB6_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB6_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB6_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB6_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB6_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB6_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB6_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB7_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB7_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB7_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB7_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB7_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB7_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB7_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB7_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB7_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB7_SPI_M 1u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB7_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB7_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB7_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB7_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB7_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB7_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB7_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB7_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB7_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB7_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB7_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB7_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB7_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB7_CHIP_TOP_SPI_SEL_NR 3u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB8_DEEPSLEEP 1u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB8_EC 1u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB8_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB8_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB8_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB8_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB8_I2C_EC 1u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB8_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB8_I2C_S_EC 1u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB8_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB8_SPI_S 1u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB8_SPI 1u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB8_SPI_EC 1u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB8_SPI_S_EC 1u +/* UART support? ('0': no, '1': yes) */ +#define SCB8_UART 0u +/* SPI or UART (SPI | UART) */ +#define SCB8_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB8_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB8_CMD_RESP 1u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB8_EZ 1u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB8_EZ_CMD_RESP 1u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB8_I2C_S_EZ 1u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB8_SPI_S_EZ 1u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB8_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB8_CHIP_TOP_SPI_SEL_NR 1u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB9_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB9_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB9_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB9_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB9_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB9_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB9_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB9_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB9_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB9_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB9_SPI_S 0u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB9_SPI 0u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB9_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB9_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB9_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB9_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB9_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB9_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB9_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB9_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB9_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB9_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB9_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB9_CHIP_TOP_SPI_SEL_NR 0u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB10_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB10_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB10_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB10_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB10_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB10_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB10_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB10_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB10_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB10_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB10_SPI_S 0u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB10_SPI 0u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB10_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB10_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB10_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB10_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB10_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB10_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB10_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB10_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB10_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB10_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB10_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB10_CHIP_TOP_SPI_SEL_NR 0u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB11_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB11_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB11_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB11_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB11_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB11_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB11_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB11_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB11_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB11_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB11_SPI_S 0u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB11_SPI 0u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB11_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB11_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB11_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB11_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB11_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB11_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB11_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB11_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB11_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB11_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB11_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB11_CHIP_TOP_SPI_SEL_NR 0u +/* DeepSleep support ('0':no, '1': yes) */ +#define SCB12_DEEPSLEEP 0u +/* Externally clocked support? ('0': no, '1': yes) */ +#define SCB12_EC 0u +/* I2C master support? ('0': no, '1': yes) */ +#define SCB12_I2C_M 1u +/* I2C slave support? ('0': no, '1': yes) */ +#define SCB12_I2C_S 1u +/* I2C support? (I2C_M | I2C_S) */ +#define SCB12_I2C 1u +/* I2C glitch filters present? ('0': no, '1': yes) */ +#define SCB12_I2C_GLITCH 1u +/* I2C externally clocked support? ('0': no, '1': yes) */ +#define SCB12_I2C_EC 0u +/* I2C master and slave support? (I2C_M & I2C_S) */ +#define SCB12_I2C_M_S 1u +/* I2C slave with EC? (I2C_S & I2C_EC) */ +#define SCB12_I2C_S_EC 0u +/* SPI master support? ('0': no, '1': yes) */ +#define SCB12_SPI_M 0u +/* SPI slave support? ('0': no, '1': yes) */ +#define SCB12_SPI_S 0u +/* SPI support? (SPI_M | SPI_S) */ +#define SCB12_SPI 0u +/* SPI externally clocked support? ('0': no, '1': yes) */ +#define SCB12_SPI_EC 0u +/* SPI slave with EC? (SPI_S & SPI_EC) */ +#define SCB12_SPI_S_EC 0u +/* UART support? ('0': no, '1': yes) */ +#define SCB12_UART 1u +/* SPI or UART (SPI | UART) */ +#define SCB12_SPI_UART 1u +/* Number of EZ memory Bytes ([32, 256, 512]). This memory is used in EZ mode, + CMD_RESP mode and FIFO mode. Note that in EZ mode, if EZ_DATA_NR is 512, only + 256 B are used. This is because the EZ mode uses 8-bit addresses. */ +#define SCB12_EZ_DATA_NR 256u +/* Command/response mode support? ('0': no, '1': yes) */ +#define SCB12_CMD_RESP 0u +/* EZ mode support? ('0': no, '1': yes) */ +#define SCB12_EZ 0u +/* Command/response mode or EZ mode support? (CMD_RESP | EZ) */ +#define SCB12_EZ_CMD_RESP 0u +/* I2C slave with EZ mode (I2C_S & EZ) */ +#define SCB12_I2C_S_EZ 0u +/* SPI slave with EZ mode (SPI_S & EZ) */ +#define SCB12_SPI_S_EZ 0u +/* Support I2C FM+/1Mbps speed ('0': no, '1': yes) */ +#define SCB12_I2C_FAST_PLUS 1u +/* Number of used spi_select signals (max 4) */ +#define SCB12_CHIP_TOP_SPI_SEL_NR 0u +/* Number of counters per IP (1..32) */ +#define TCPWM0_CNT_NR 8u +/* Counter width (in number of bits) */ +#define TCPWM0_CNT_CNT_WIDTH 32u +/* Number of counters per IP (1..32) */ +#define TCPWM1_CNT_NR 24u +/* Counter width (in number of bits) */ +#define TCPWM1_CNT_CNT_WIDTH 16u +/* Number of ports supoprting up to 4 COMs */ +#define LCD_NUMPORTS 8u +/* Number of ports supporting up to 8 COMs */ +#define LCD_NUMPORTS8 8u +/* Number of ports supporting up to 16 COMs */ +#define LCD_NUMPORTS16 0u +/* Max number of LCD commons supported */ +#define LCD_CHIP_TOP_COM_NR 8u +/* Max number of LCD pins (total) supported */ +#define LCD_CHIP_TOP_PIN_NR 62u +/* Number of IREF outputs from AREF */ +#define PASS_NR_IREFS 4u +/* Number of CTBs in the Subsystem */ +#define PASS_NR_CTBS 0u +/* Number of CTDACs in the Subsystem */ +#define PASS_NR_CTDACS 0u +/* CTB0 Exists */ +#define PASS_CTB0_EXISTS 0u +/* CTB1 Exists */ +#define PASS_CTB1_EXISTS 0u +/* CTB2 Exists */ +#define PASS_CTB2_EXISTS 0u +/* CTB3 Exists */ +#define PASS_CTB3_EXISTS 0u +/* CTDAC0 Exists */ +#define PASS_CTDAC0_EXISTS 0u +/* CTDAC1 Exists */ +#define PASS_CTDAC1_EXISTS 0u +/* CTDAC2 Exists */ +#define PASS_CTDAC2_EXISTS 0u +/* CTDAC3 Exists */ +#define PASS_CTDAC3_EXISTS 0u +/* Number of SAR channels */ +#define PASS_SAR_SAR_CHANNELS 16u +/* Averaging logic present in SAR */ +#define PASS_SAR_SAR_AVERAGE 1u +/* Range detect logic present in SAR */ +#define PASS_SAR_SAR_RANGEDET 1u +/* Support for UAB sampling */ +#define PASS_SAR_SAR_UAB 0u +#define PASS_CTBM_CTDAC_PRESENT 0u +/* Base address of the SMIF XIP memory region. This address must be a multiple of + the SMIF XIP memory capacity. This address must be a multiple of 64 KB. This + address must be in the [0x0000:0000, 0x1fff:ffff] memory region. The XIP + memory region should NOT overlap with other memory regions. */ +#define SMIF_SMIF_XIP_ADDR 402653184u +/* Capacity of the SMIF XIP memory region. The more significant bits of this + parameter must be '1' and the lesser significant bits of this paramter must + be '0'. E.g., 0xfff0:0000 specifies a 1 MB memory region. Legal values are + {0xffff:0000, 0xfffe:0000, 0xfffc:0000, 0xfff8:0000, 0xfff0:0000, + 0xffe0:0000, ..., 0xe000:0000}. */ +#define SMIF_SMIF_XIP_MASK 4160749568u +/* Cryptography (AES) support ('0' = no support, '1' = support) */ +#define SMIF_CRYPTO 1u +/* Number of external devices supported ([1,4]) */ +#define SMIF_DEVICE_NR 4u +/* External device write support. This is a 4-bit field. Each external device has + a dedicated bit. E.g., if bit 2 is '1', external device 2 has write support. */ +#define SMIF_DEVICE_WR_EN 15u +/* Number of AHB-Lite "hmaster[]" bits ([1, 8]). */ +#define SMIF_MASTER_WIDTH 8u +/* Chip top connect all 8 data pins (0= connect 4 data pins, 1= connect 8 data + pins) */ +#define SMIF_CHIP_TOP_DATA8_PRESENT 1u +/* Number of used spi_select signals (max 4) */ +#define SMIF_CHIP_TOP_SPI_SEL_NR 4u +/* I2S capable? (0=No,1=Yes) */ +#define AUDIOSS0_I2S 1u +/* PDM capable? (0=No,1=Yes) */ +#define AUDIOSS0_PDM 1u +/* I2S capable? (0=No,1=Yes) */ +#define AUDIOSS1_I2S 1u +/* PDM capable? (0=No,1=Yes) */ +#define AUDIOSS1_PDM 0u +/* Basically the max packet size, which gets double buffered in RAM 0: 512B + (implies 1KB of RAM space for data) 1: 1KB (implies 2KB of RAM space for + data) */ +#define SDHC0_MAX_BLK_SIZE 0u +/* 0: No Command Queuing Engine present 1: Command Queuing Engine present; this + adds 288 bytes of space to the RAM for this purpose. */ +#define SDHC0_CQE_PRESENT 0u +/* 0: no retention of any SDHC_CORE regs 1: retention of SDHC_CORE regs that have + the Retention flag (Note, CTL.ENABLE is always retained irrespective of this + parameter) */ +#define SDHC0_RETENTION_PRESENT 1u +/* Basically the max packet size, which gets double buffered in RAM 0: 512B + (implies 1KB of RAM space for data) 1: 1KB (implies 2KB of RAM space for + data) */ +#define SDHC0_CORE_MAX_BLK_SIZE 0u +/* 0: No Command Queuing Engine present 1: Command Queuing Engine present; this + adds 288 bytes of space to the RAM for this purpose. */ +#define SDHC0_CORE_CQE_PRESENT 0u +/* 0: no retention of any SDHC_CORE regs 1: retention of SDHC_CORE regs that have + the Retention flag (Note, CTL.ENABLE is always retained irrespective of this + parameter) */ +#define SDHC0_CORE_RETENTION_PRESENT 1u +/* Chip top connect all 8 data pins (0= connect 4 data pins, 1= connect 8 data + pins) */ +#define SDHC0_CHIP_TOP_DATA8_PRESENT 0u +/* Chip top connect card_detect */ +#define SDHC0_CHIP_TOP_CARD_DETECT_PRESENT 1u +/* Chip top connect card_mech_write_prot_in */ +#define SDHC0_CHIP_TOP_CARD_WRITE_PROT_PRESENT 1u +/* Chip top connect led_ctrl_out and led_ctrl_out_en */ +#define SDHC0_CHIP_TOP_LED_CTRL_PRESENT 0u +/* Chip top connect io_volt_sel_out and io_volt_sel_out_en */ +#define SDHC0_CHIP_TOP_IO_VOLT_SEL_PRESENT 1u +/* Chip top connect io_drive_strength_out and io_drive_strength_out_en */ +#define SDHC0_CHIP_TOP_IO_DRIVE_STRENGTH_PRESENT 0u +/* Chip top connect card_if_pwr_en_out and card_if_pwr_en_out_en */ +#define SDHC0_CHIP_TOP_CARD_IF_PWR_EN_PRESENT 1u +/* Chip top connect card_emmc_reset_n_out and card_emmc_reset_n_out_en */ +#define SDHC0_CHIP_TOP_CARD_EMMC_RESET_PRESENT 0u +/* Chip top connect interrupt_wakeup (not used for eMMC) */ +#define SDHC0_CHIP_TOP_INTERRUPT_WAKEUP_PRESENT 1u +/* Basically the max packet size, which gets double buffered in RAM 0: 512B + (implies 1KB of RAM space for data) 1: 1KB (implies 2KB of RAM space for + data) */ +#define SDHC1_MAX_BLK_SIZE 0u +/* 0: No Command Queuing Engine present 1: Command Queuing Engine present; this + adds 288 bytes of space to the RAM for this purpose. */ +#define SDHC1_CQE_PRESENT 0u +/* 0: no retention of any SDHC_CORE regs 1: retention of SDHC_CORE regs that have + the Retention flag (Note, CTL.ENABLE is always retained irrespective of this + parameter) */ +#define SDHC1_RETENTION_PRESENT 1u +/* Basically the max packet size, which gets double buffered in RAM 0: 512B + (implies 1KB of RAM space for data) 1: 1KB (implies 2KB of RAM space for + data) */ +#define SDHC1_CORE_MAX_BLK_SIZE 0u +/* 0: No Command Queuing Engine present 1: Command Queuing Engine present; this + adds 288 bytes of space to the RAM for this purpose. */ +#define SDHC1_CORE_CQE_PRESENT 0u +/* 0: no retention of any SDHC_CORE regs 1: retention of SDHC_CORE regs that have + the Retention flag (Note, CTL.ENABLE is always retained irrespective of this + parameter) */ +#define SDHC1_CORE_RETENTION_PRESENT 1u +/* Chip top connect all 8 data pins (0= connect 4 data pins, 1= connect 8 data + pins) */ +#define SDHC1_CHIP_TOP_DATA8_PRESENT 1u +/* Chip top connect card_detect */ +#define SDHC1_CHIP_TOP_CARD_DETECT_PRESENT 1u +/* Chip top connect card_mech_write_prot_in */ +#define SDHC1_CHIP_TOP_CARD_WRITE_PROT_PRESENT 1u +/* Chip top connect led_ctrl_out and led_ctrl_out_en */ +#define SDHC1_CHIP_TOP_LED_CTRL_PRESENT 1u +/* Chip top connect io_volt_sel_out and io_volt_sel_out_en */ +#define SDHC1_CHIP_TOP_IO_VOLT_SEL_PRESENT 1u +/* Chip top connect io_drive_strength_out and io_drive_strength_out_en */ +#define SDHC1_CHIP_TOP_IO_DRIVE_STRENGTH_PRESENT 0u +/* Chip top connect card_if_pwr_en_out and card_if_pwr_en_out_en */ +#define SDHC1_CHIP_TOP_CARD_IF_PWR_EN_PRESENT 1u +/* Chip top connect card_emmc_reset_n_out and card_emmc_reset_n_out_en */ +#define SDHC1_CHIP_TOP_CARD_EMMC_RESET_PRESENT 1u +/* Chip top connect interrupt_wakeup (not used for eMMC) */ +#define SDHC1_CHIP_TOP_INTERRUPT_WAKEUP_PRESENT 1u + +/* MMIO Targets Defines */ +#define CY_MMIO_CRYPTO_GROUP_NR 1u +#define CY_MMIO_CRYPTO_SLAVE_NR 0u +#define CY_MMIO_CPUSS_GROUP_NR 2u +#define CY_MMIO_CPUSS_SLAVE_NR 0u +#define CY_MMIO_FAULT_GROUP_NR 2u +#define CY_MMIO_FAULT_SLAVE_NR 1u +#define CY_MMIO_IPC_GROUP_NR 2u +#define CY_MMIO_IPC_SLAVE_NR 2u +#define CY_MMIO_PROT_GROUP_NR 2u +#define CY_MMIO_PROT_SLAVE_NR 3u +#define CY_MMIO_FLASHC_GROUP_NR 2u +#define CY_MMIO_FLASHC_SLAVE_NR 4u +#define CY_MMIO_SRSS_GROUP_NR 2u +#define CY_MMIO_SRSS_SLAVE_NR 6u +#define CY_MMIO_BACKUP_GROUP_NR 2u +#define CY_MMIO_BACKUP_SLAVE_NR 7u +#define CY_MMIO_DW_GROUP_NR 2u +#define CY_MMIO_DW_SLAVE_NR 8u +#define CY_MMIO_DMAC_GROUP_NR 2u +#define CY_MMIO_DMAC_SLAVE_NR 10u +#define CY_MMIO_EFUSE_GROUP_NR 2u +#define CY_MMIO_EFUSE_SLAVE_NR 12u +#define CY_MMIO_PROFILE_GROUP_NR 2u +#define CY_MMIO_PROFILE_SLAVE_NR 13u +#define CY_MMIO_HSIOM_GROUP_NR 3u +#define CY_MMIO_HSIOM_SLAVE_NR 0u +#define CY_MMIO_GPIO_GROUP_NR 3u +#define CY_MMIO_GPIO_SLAVE_NR 1u +#define CY_MMIO_SMARTIO_GROUP_NR 3u +#define CY_MMIO_SMARTIO_SLAVE_NR 2u +#define CY_MMIO_LPCOMP_GROUP_NR 3u +#define CY_MMIO_LPCOMP_SLAVE_NR 5u +#define CY_MMIO_CSD0_GROUP_NR 3u +#define CY_MMIO_CSD0_SLAVE_NR 6u +#define CY_MMIO_TCPWM0_GROUP_NR 3u +#define CY_MMIO_TCPWM0_SLAVE_NR 8u +#define CY_MMIO_TCPWM1_GROUP_NR 3u +#define CY_MMIO_TCPWM1_SLAVE_NR 9u +#define CY_MMIO_LCD0_GROUP_NR 3u +#define CY_MMIO_LCD0_SLAVE_NR 11u +#define CY_MMIO_USBFS0_GROUP_NR 3u +#define CY_MMIO_USBFS0_SLAVE_NR 15u +#define CY_MMIO_SMIF0_GROUP_NR 4u +#define CY_MMIO_SMIF0_SLAVE_NR 2u +#define CY_MMIO_SDHC0_GROUP_NR 4u +#define CY_MMIO_SDHC0_SLAVE_NR 6u +#define CY_MMIO_SDHC1_GROUP_NR 4u +#define CY_MMIO_SDHC1_SLAVE_NR 7u +#define CY_MMIO_SCB0_GROUP_NR 6u +#define CY_MMIO_SCB0_SLAVE_NR 0u +#define CY_MMIO_SCB1_GROUP_NR 6u +#define CY_MMIO_SCB1_SLAVE_NR 1u +#define CY_MMIO_SCB2_GROUP_NR 6u +#define CY_MMIO_SCB2_SLAVE_NR 2u +#define CY_MMIO_SCB3_GROUP_NR 6u +#define CY_MMIO_SCB3_SLAVE_NR 3u +#define CY_MMIO_SCB4_GROUP_NR 6u +#define CY_MMIO_SCB4_SLAVE_NR 4u +#define CY_MMIO_SCB5_GROUP_NR 6u +#define CY_MMIO_SCB5_SLAVE_NR 5u +#define CY_MMIO_SCB6_GROUP_NR 6u +#define CY_MMIO_SCB6_SLAVE_NR 6u +#define CY_MMIO_SCB7_GROUP_NR 6u +#define CY_MMIO_SCB7_SLAVE_NR 7u +#define CY_MMIO_SCB8_GROUP_NR 6u +#define CY_MMIO_SCB8_SLAVE_NR 8u +#define CY_MMIO_SCB9_GROUP_NR 6u +#define CY_MMIO_SCB9_SLAVE_NR 9u +#define CY_MMIO_SCB10_GROUP_NR 6u +#define CY_MMIO_SCB10_SLAVE_NR 10u +#define CY_MMIO_SCB11_GROUP_NR 6u +#define CY_MMIO_SCB11_SLAVE_NR 11u +#define CY_MMIO_SCB12_GROUP_NR 6u +#define CY_MMIO_SCB12_SLAVE_NR 12u +#define CY_MMIO_PASS_GROUP_NR 9u +#define CY_MMIO_PASS_SLAVE_NR 0u +#define CY_MMIO_PDM0_GROUP_NR 10u +#define CY_MMIO_PDM0_SLAVE_NR 1u +#define CY_MMIO_I2S0_GROUP_NR 10u +#define CY_MMIO_I2S0_SLAVE_NR 2u +#define CY_MMIO_I2S1_GROUP_NR 10u +#define CY_MMIO_I2S1_SLAVE_NR 3u + +/* Backward compatibility definitions */ +#define CPUSS_IRQ_NR CPUSS_SYSTEM_INT_NR +#define CPUSS_DPSLP_IRQ_NR CPUSS_SYSTEM_DPSLP_INT_NR + +#endif /* _PSOC6_02_CONFIG_H_ */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ble_clk.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ble_clk.h new file mode 100644 index 00000000000..47bd9b87938 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ble_clk.h @@ -0,0 +1,304 @@ +/***************************************************************************//** +* \file cy_ble_clk.h +* \version 3.10 +* +* The header file of the BLE ECO clock driver. +* +******************************************************************************** +* \copyright +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_ble_clk +* \{ +* This driver provides an API to manage the BLE ECO clock block. +* +* The functions and other declarations used in this driver are in cy_ble_clk.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The BLE ECO clock is a high-accuracy high-frequency clock that feeds the +* link-layer controller and the radio Phy. +* +* This clock is also an input to the system resources subsystem as an +* alternative high-frequency clock source (ALTHF). +* +* \section group_ble_configuration_considerations Configuration Considerations +* To configure the BLE ECO clock, call Cy_BLE_EcoConfigure(). +* +* The following code shows how to configure the BLE ECO clock: +* \snippet bleclk\3.0\snippet\main.c BLE ECO clock API: Cy_BLE_EcoConfigure() +* +* \section group_ble_clk_more_information More Information +* See the BLE chapter of the device technical reference manual (TRM). +* +* \section group_ble_clk_MISRA MISRA-C Compliance +* The BLE ECO clock driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA ruleRule Class (Required/ Advisory)Rule DescriptionDescription of Deviation(s)
10.1RThe value of an expression of integer type shall not be implicitly converted to a different underlying type +* under some circumstances.An operand of essentially enum type is being converted to unsigned type as a result of an arithmetic or +* conditional operation. The conversion does not have any unintended effect.
+* This driver does not contains any driver-specific MISRA violations. +* +* \section group_ble_clk_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason of Change
3.10Updated the Cy_BLE_EcoConfigure() use case, when the voltageReg parameter is CY_BLE_ECO_VOLTAGE_REG_BLESSLDO +* and the Buck core regulator is enabled.Defect fixing: Before, when the Cy_BLE_EcoConfigure() function included the BLE LDO regulator option, the function returned CY_BLE_ECO_HARDWARE_ERROR if +* the Buck core regulator had been enabled.
3.0The initial version. \n The functionality of the BLE ECO clock is migrated from the BLE Middleware to the separated driver (ble_clk).Independent usage of BLE ECO clock without BLE Middleware.
+* +* \defgroup group_ble_clk_functions Functions +* \defgroup group_ble_clk_data_type Enumerated Types +* \defgroup group_ble_clk_macros Macros +* +*/ + +#if !defined(CY_BLE_CLK_H) +#define CY_BLE_CLK_H + +#include +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXBLESS) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + +/******************************************************************************* +* Macro definitions +*******************************************************************************/ + +/** + * \addtogroup group_ble_clk_macros + * \{ + */ +/** Driver major version */ +#define CY_BLE_CLK_DRV_VERSION_MAJOR (3) + +/** Driver minor version */ +#define CY_BLE_CLK_DRV_VERSION_MINOR (0) + +/** Driver ID */ +#define CY_BLE_CLK_ID (0x05UL << 18U) +/** \} */ + + +/******************************************************************************* +* Data Types +*******************************************************************************/ + +/** + * \addtogroup group_ble_clk_data_type + * \{ + */ +/** BLE Radio ECO clock divider */ +typedef enum +{ + CY_BLE_MXD_RADIO_CLK_DIV_1 = 0U, + CY_BLE_MXD_RADIO_CLK_DIV_2 = 1U, + CY_BLE_MXD_RADIO_CLK_DIV_4 = 2U, + CY_BLE_MXD_RADIO_CLK_DIV_8 = 4U, + CY_BLE_MXD_RADIO_CLK_DIV_16 = 8U +} cy_en_ble_mxd_radio_clk_div_t; + +/** Sine wave buffer output capability select */ +typedef enum +{ + CY_BLE_MXD_RADIO_CLK_BUF_AMP_16M_SMALL = 0U, + CY_BLE_MXD_RADIO_CLK_BUF_AMP_16M_LARGE = 1U, + CY_BLE_MXD_RADIO_CLK_BUF_AMP_32M_SMALL = 2U, + CY_BLE_MXD_RADIO_CLK_BUF_AMP_32M_LARGE = 3U +} cy_en_ble_mxd_radio_clk_buf_amp_t; + +/** BLESS clock divider */ +typedef enum +{ + CY_BLE_BLESS_XTAL_CLK_DIV_1 = 0U, + CY_BLE_BLESS_XTAL_CLK_DIV_2 = 1U, + CY_BLE_BLESS_XTAL_CLK_DIV_4 = 2U, + CY_BLE_BLESS_XTAL_CLK_DIV_8 = 3U +}cy_en_ble_bless_xtal_clk_div_config_llclk_div_t; + +/** BLE ECO Clock Frequency. */ +typedef enum +{ + /** ECO Frequency of 16MHz */ + CY_BLE_BLESS_ECO_FREQ_16MHZ, + + /** ECO Frequency of 32MHz */ + CY_BLE_BLESS_ECO_FREQ_32MHZ +} cy_en_ble_eco_freq_t; + +/** BLE ECO System clock divider */ +typedef enum +{ + /** Link Layer clock divider = 1 */ + CY_BLE_SYS_ECO_CLK_DIV_1 = 0x00U, + + /** Link Layer clock divider = 2 */ + CY_BLE_SYS_ECO_CLK_DIV_2, + + /** Link Layer clock divider = 4 */ + CY_BLE_SYS_ECO_CLK_DIV_4, + + /** Link Layer clock divider = 8 */ + CY_BLE_SYS_ECO_CLK_DIV_8, + + /** Invalid Link Layer clock divider */ + CY_BLE_SYS_ECO_CLK_DIV_INVALID + +} cy_en_ble_eco_sys_clk_div_t; + +/** BLE ECO Clock return value */ +typedef enum +{ + /** ECO started successfully */ + CY_BLE_ECO_SUCCESS = 0x00UL, + + /** Invalid input param values */ + CY_BLE_ECO_BAD_PARAM = CY_PDL_STATUS_ERROR | CY_BLE_CLK_ID | 0x0001UL, + + /** RCB is not available for Firmware control to restart ECO */ + CY_BLE_ECO_RCB_CONTROL_LL = CY_PDL_STATUS_ERROR | CY_BLE_CLK_ID | 0x0002UL, + + /** ECO already started */ + CY_BLE_ECO_ALREADY_STARTED = CY_PDL_STATUS_ERROR | CY_BLE_CLK_ID | 0x0003UL, + + /** Hardware error */ + CY_BLE_ECO_HARDWARE_ERROR = CY_PDL_STATUS_ERROR | CY_BLE_CLK_ID | 0x0004UL, + +} cy_en_ble_eco_status_t; + +/** BLE Voltage regulator */ +typedef enum +{ + /** Use SIMO Buck or BLE LDO regulator depend on system usage */ + CY_BLE_ECO_VOLTAGE_REG_AUTO, + + /** Use BLE LDO */ + CY_BLE_ECO_VOLTAGE_REG_BLESSLDO + +} cy_en_ble_eco_voltage_reg_t; +/** \} */ + + +/******************************************************************************* +* Configuration Structures +*******************************************************************************/ + +/** \cond INTERNAL */ +/** BLE ECO configuration structures */ +typedef struct +{ + /** + * ECO crystal startup time in multiple of 31.25us (startup_time_from_user min - 31.25us) + * ecoXtalStartUpTime = startup_time_from_user/31.25 + */ + uint8_t ecoXtalStartUpTime; + + /** + * ECO crystal load capacitance - In multiple of 0.075pF (pF_from_user min - 7.5pF, pF_from_user max - 26.625pF) + * loadcap = ((pF_from_user - 7.5)/0.075) + */ + uint8_t loadCap; + + /** ECO Frequency. */ + cy_en_ble_eco_freq_t ecoFreq; + + /** System divider for ECO clock. */ + cy_en_ble_eco_sys_clk_div_t ecoSysDiv; + +} cy_stc_ble_eco_config_t; +/** \endcond */ + + +/******************************************************************************* +* Function Prototypes +*******************************************************************************/ + +/** + * \addtogroup group_ble_clk_functions + * \{ + */ +cy_en_ble_eco_status_t Cy_BLE_EcoConfigure(cy_en_ble_eco_freq_t freq, + cy_en_ble_eco_sys_clk_div_t sysClkDiv, + uint32_t cLoad, uint32_t xtalStartUpTime, + cy_en_ble_eco_voltage_reg_t voltageReg); +void Cy_BLE_EcoReset(void); +/** \} */ + +/** \cond INTERNAL */ +cy_en_ble_eco_status_t Cy_BLE_EcoStart(const cy_stc_ble_eco_config_t *config); +void Cy_BLE_EcoStop(void); +/** \endcond */ + + +/******************************************************************************* +* Private Function Prototypes +*******************************************************************************/ + +/** \cond INTERNAL */ +void Cy_BLE_HAL_Init(void); + + +/******************************************************************************* +* Backwards compatibility macros +*******************************************************************************/ + +#define cy_stc_ble_bless_eco_cfg_params_t cy_stc_ble_eco_config_t +#define cy_en_ble_bless_sys_eco_clk_div_t cy_en_ble_eco_sys_clk_div_t +#define cy_en_ble_bless_eco_freq_t cy_en_ble_eco_freq_t +/** \endcond */ + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* defined(CY_IP_MXBLESS) */ +#endif /* CY_BLE_CLK_H */ + +/** \} group_ble_clk */ + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto.h new file mode 100644 index 00000000000..af3a29cd775 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto.h @@ -0,0 +1,1911 @@ +/***************************************************************************//** +* \file cy_crypto.h +* \version 2.20 +* +* \brief +* This file provides the public interface for the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_crypto +* \{ +* The Crypto driver provides a public API to perform cryptographic and hash +* operations, as well as generate both true and pseudo random numbers. +* +* It uses a hardware IP block to accelerate operations. +* +* The functions and other declarations used in this driver are in cy_crypto.h, +* cy_crypto_core.h, and cy_crypto_server.h. You can also include cy_pdl.h +* (ModusToolbox only) to get access to all functions and declarations in the PDL. +* +* The driver implements two usage models: +* * \ref group_crypto_cli_srv +* * \ref group_crypto_lld_api +* +* Mixing these usage models will result in undefined behaviour. +* +* The Crypto driver supports these standards: DES, TDES, AES (128, 192, 256 bits), CMAC-AES, SHA, +* HMAC, PRNG, TRNG, CRC, RSA, ECP, and ECDSA. +* \note ECP and ECDSA are only implemented for the \ref group_crypto_lld_api model. +* +* \section group_crypto_configuration_considerations Configuration Considerations +* +* Firmware sets up a cryptographic operation by passing in the required data as +* parameters in the function calls. +* +* All Crypto functions require a context. A context is a data +* structure that the driver uses for its operations. Firmware declares a +* context (allocates memory) but does not write or read the values in that +* context. In effect, the context is a scratch pad you provide to the driver. +* The driver uses the context to store and manipulate data during cryptographic +* operations. +* +* Several methods require an additional context unique to the particular +* cryptographic technique. +* The Crypto driver header files declare all the required structures for both +* configuration and context. +* +* Some encryption techniques require additional initialization specific to the +* technique. If there is an Init function, you must call it before using any +* other function for that technique, and re-initialize after you use a different +* encryption technique. +* +* For example, use \ref Cy_Crypto_Aes_Init to configure an AES encryption +* operation with the encryption key, and key length. +* Provide pointers to two context structures. You can then call the AES Run functions. +* If you use DES after that, you must re-initialize the AES encryption before using +* it again. +* +* \section group_crypto_definitions Definitions +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* For more information see [Recommendation for Block Cipher Modes of Operation] +* (https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-38b.pdf). +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
TermDefinition
PlaintextAn unencrypted message
CiphertextAn encrypted message
Block CipherAn encryption function for fixed-size blocks of data. +* This function takes a fixed-size key and a block of plaintext data from +* the message and encrypts it to generate ciphertext. Block ciphers are +* reversible. The function performed on a block of encrypted data will +* decrypt that data.
Block Cipher ModeA mode of encrypting a message using block ciphers for messages of an +* arbitrary length. The message is padded so that its length is an integer +* multiple of the block size. ECB (Electronic Code Book), CBC (Cipher Block +* Chaining), and CFB (Cipher Feedback) are all modes of using block ciphers +* to create an encrypted message of an arbitrary length. +*
Data Encryption Standard (DES)The [DES standard] +* (https://csrc.nist.gov/csrc/media/publications/fips/46/3/archive/1999-10-25/documents/fips46-3.pdf) +* specifies a symmetric-key algorithm for encryption of electronic data. +* It uses a 56-bit key. The block size is 64-bits. +*
Triple DES (3DES or TDES)The [TDES standard] +* (https://csrc.nist.gov/csrc/media/publications/fips/46/3/archive/1999-10-25/documents/fips46-3.pdf) +* specifies a symmetric-key block cipher that applies the Data Encryption +* Standard (DES) cipher algorithm three times to each data block. +* It uses three 56-bit keys. The block size is 64-bits. +*
Advanced Encryption Standard (AES)The [AES standard] (https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf) +* specifies the Rijndael algorithm, a symmetric block +* cipher that can process 128-bit data blocks, using cipher keys with +* 128-, 192-, and 256-bit lengths. Rijndael was designed to handle +* additional block sizes and key lengths. However, they are not adopted in +* this standard. AES is also used for message authentication. +*
Secure Hash Algorithm (SHA)A cryptographic hash function. +* This function takes a message of an arbitrary length and reduces it to a +* fixed-length residue or message digest after performing a series of +* mathematically defined operations that practically guarantee that any +* change in the message will change the hash value. It is used for message +* authentication by transmitting a message with a hash value appended to it +* and recalculating the message hash value using the same algorithm at the +* recipient's end. If the hashes differ, then the message is corrupted. +* For more information see [Secure Hash standard description] +* (https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/documents/fips180-2.pdf). +*
Message Authentication Code (MAC)MACs are used to verify that a received message has not been altered. +* This is done by first computing a MAC value at the sender's end and +* appending it to the transmitted message. When the message is received, +* the MAC is computed again and checked against the MAC value transmitted +* with the message. If they do not match, the message has been altered. +* Either a Hash algorithm (such as SHA) or a block cipher (such as AES) can +* be used to produce the MAC value. Keyed MAC schemes use a Secret Key +* along with the message, thus the Key value must be known to be able to +* compute the MAC value.
Cipher-based Message Authentication Code (CMAC)A block cipher-based message authentication code algorithm. +* It computes the MAC value using the AES block cipher algorithm.
Hash Message Authentication Code (HMAC)A specific type of message authentication code (MAC) that involves a +* cryptographic hash function and a secret cryptographic key. +* It computes the MAC value using a Hash algorithm. +* For more information see [The Keyed-Hash Message Authentication Code standard] +* (https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf) +*
Pseudo Random Number Generator (PRNG)A Linear Feedback Shift Registers-based algorithm for generating a +* sequence of numbers starting from a non-zero seed.
True Random Number Generator (TRNG)A block that generates a number that is statistically random and based +* on some physical random variation. The number cannot be duplicated by +* running the process again.
Symmetric Key CryptographyUses a common, known key to encrypt and decrypt messages (a shared +* secret between sender and receiver). An efficient method used for +* encrypting and decrypting messages after the authenticity of the other +* party has been established. DES (now obsolete), 3DES, and AES (currently +* used) are well-known symmetric cryptography methods.
Asymmetric Key CryptographyAlso referred to as Public Key encryption. To receive a message, +* you publish a very large public key (up to 4096 bits currently). +* That key is one of the two prime factors of a very large number. The +* other prime factor is the recipient's private (secret) key. +* To send a message to the publisher of the public key, you +* encrypt the message with the public key. This message can now be +* decrypted only with the private key (the other prime factor held in secret by +* the recipient). The message is now sent over any channel to the recipient +* who can decrypt it with the private (secret) key. The same process is used +* to send messages to the sender of the original message. The asymmetric +* cryptography relies on the mathematical impracticality (usually related to +* the processing power available at any given time) of factoring the keys. +* Common, computationally intensive, asymmetric algorithms are RSA and ECC. +* The public key is described by the pair (n, e) where n is a product of two +* randomly chosen primes p and q. The exponent e is a random integer +* 1 < e < Q where Q = (p-1) (q-1). The private key d is uniquely defined +* by the integer 1 < d < Q so that ed congruent with 1 (mod Q ). +*
+* +* \section group_crypto_more_information More Information +* +* RSASSA-PKCS1-v1_5 described here, page 31: +* http://www.emc.com/collateral/white-papers/h11300-pkcs-1v2-2-rsa-cryptography-standard-wp.pdf +* +* See the "Cryptographic Function Block" chapter of the Technical Reference Manual. +* +* \section group_crypto_MISRA MISRA-C Compliance +* The Crypto driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
8.8AAn external object or function shall be declared in one and only +* one file.The pointer to the operation context memory can not be public +* accessible (can not be defined in the header file) but it should be +* extarnally accessed, because it is used by other Cypress software +* resources.
11.4AA cast should not be performed between a pointer to object type and +* a different pointer to object type.The pointers to the context memory are void to allow handling of +* different data types for different operations. +* The cast operation is safe because the configuration is verified +* before operation is performed. +*
16.7AA pointer parameter in a function prototype should be declared as +* pointer to const if the pointer is not used to modify the addressed +* object.The objects pointed to by the base addresses of the CRYPTO are not +* always modified. While a const qualifier can be used in select +* scenarios, it brings little benefit in adding this to the affected +* functions.
+* +* \section group_crypto_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.20 +*
    +*
  • Moved from a pre-compiled library to Open Source under +* Apache 2.0 license.
  • +*
  • Core (server) This API is now available.
  • +*
  • Added ECP and ECDSA support for the NIST P curves: +* SECP192R1, SECP224R1, SECP256R1, SECP384R1, SECP521R1.
  • +*
  • ECP and ECDSA only supported with direct calls to Crypto APIs, +* no client interface functions are present.
  • +*
  • Added Chunk mode for CRC.
  • +*
  • Added Chunk mode for SHA, the chunk size is limited to +* the SHA block size.
  • +*
+*
ECC support added.
+* Integration with mbedOS/mbedTLS, restructured the implementation of +* SHA and CRC for the Crypto ALT interface. +*
2.11bThe same as production 2.10; only the newly-added Elliptic Curve point +* multiplication functionality (NIST P256) is pre-production. +* Open source under Apache version 2.0 license.
2.11Based on pre-production 2.10, except the newly-added Elliptic Curve point +* multiplication functionality (NIST P256). +* Does not incorporate the production level documentation. +* Open source under Apache version 2.0 license.ECC support.
2.10bThe same as production 2.10. Open source under Apache version 2.0 license.
2.10Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Removed files with the default driver configuration. \n +* Added API functions to start different server functionality: +* - \ref Cy_Crypto_Server_Start_Base +* - \ref Cy_Crypto_Server_Start_Extra +* - \ref Cy_Crypto_Server_Start_Full +*
Added the register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
Added precompiled libraries for the IAR toolchain.IAR toolchain support in ModusToolbox.
2.0bThe same as production 2.0. Open source under Apache version 2.0 license.
2.0Clarified what parameters must be 4-byte aligned for the functions: +* \ref Cy_Crypto_Aes_Cmac_Run, \ref Cy_Crypto_Sha_Run, +* \ref Cy_Crypto_Hmac_Run, \ref Cy_Crypto_Str_MemCmp, +* \ref Cy_Crypto_Trng_Generate, \ref Cy_Crypto_Des_Run, +* \ref Cy_Crypto_Tdes_Run, \ref Cy_Crypto_Rsa_Proc +* Documentation update and clarification.
+* Changed crypto IP power control.
+* Enhanced Vector Unit functionality for RSA crypto algorithm.
+* Added support of the single-core devices. +*
New device support.
1.0Initial version
+* +* \defgroup group_crypto_cli_srv Client-Server Model +* \{ +* \defgroup group_crypto_cli_srv_macros Macros +* \defgroup group_crypto_cli_srv_functions Functions +* \{ +* \defgroup group_crypto_cli_functions Client Functions +* \defgroup group_crypto_srv_functions Server Functions +* \} +* \defgroup group_crypto_cli_srv_data_structures Data Structures +* \{ +* \defgroup group_crypto_config_structure Common Data Structures +* \defgroup group_crypto_cli_data_structures Client Data Structures +* \defgroup group_crypto_srv_data_structures Server Data Structures +* \} +* \} +* \defgroup group_crypto_lld_api Direct Crypto Core Access +* \defgroup group_crypto_data_structures Common Data Structures +* \defgroup group_crypto_enums Common Enumerated Types +*/ + +/** +* \addtogroup group_crypto_cli_srv +* \{ +* Use the client-server API to isolate the Crypto hardware from non-secure +* application access. +* +* The functions and other declarations used in this part of the driver are in +* cy_crypto.h and cy_crypto_server.h. You can also include cy_pdl.h +* (ModusToolbox only) to get access to all functions and declarations in the +* PDL. +* +* The firmware initializes and starts the Crypto server. The server can run on any +* core and works with the Crypto hardware. The Crypto server is implemented as +* a secure block. It performs all cryptographic operations for the client. +* Access to the server is through the Inter Process Communication (IPC) driver. +* Direct access is not allowed. +* +* The Crypto client can run on any core too. The firmware initializes and starts +* the client. The firmware then provides configuration data required for +* the desired cryptographic technique and a request that the server run the +* cryptographic operation. +* +* This document contains the following topics: +* - \ref group_crypto_architecture +* - \ref group_crypto_configuration_structure +* - \ref group_crypto_server_init +* - \ref group_crypto_client_init +* - \ref group_crypto_common_use_cases +* - \ref group_crypto_rsa_considerations +* - \ref group_crypto_irq_implements +* - \ref group_crypto_definitions +* - \ref group_crypto_more_information +* +* \section group_crypto_architecture Architectural model +* The client-server implementation uses: +* - one IPC channel for data exchange between client and server applications; +* - three interrupts: an IPC notify interrupt, an IPC release interrupt, and +* an interrupt for error handling. +* +* Firmware initializes and starts the Crypto server. The server can run on +* any core and works with the Crypto hardware. +* The Crypto server is implemented as a secure block. It performs all +* cryptographic operations for the client. Access to the server is through the +* Inter Process Communication (IPC) driver. Direct access is not allowed. +* +* The Crypto client can also run on any core. Firmware initializes and starts +* the client. The firmware then provides the configuration data required for the +* desired cryptographic technique, and requests that the server run the +* cryptographic operation. +* +* \note +* Only one Crypto server and only one Crypto client can be run at the same time +* on any core. So, valid configurations are: +* - one server instance and one client instance run on CM0+ +* - one server instance and one client instance run on CM4 +* - one server instance runs on CM0+ and one client instance on CM4 +* (and vice versa) +* +* \image html crypto_architecture.png +* +* IPC communication between the client and server is completely transparent. +* Using IPC for communication provides a simple synchronization mechanism to +* handle concurrent requests from different cores. +* +* \section group_crypto_configuration_structure Configuration Structure +* +* IPC communication for the Crypto driver is handled transparently. User should +* select the IPC channel, and configure the required notify, release, and error +* interrupts. +* +* These initialization routines, \ref Cy_Crypto_Server_Start_Base, +* \ref Cy_Crypto_Server_Start_Extra or \ref Cy_Crypto_Server_Start_Full (server) +* and \ref Cy_Crypto_Init (client), use separate instances of the same +* cy_stc_crypto_config_t configuration structure. Some fields should be the same, +* and some are set specifically by either the server or client. The table lists +* each field in the config structure, and which initialization routine sets the +* value. +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
FieldWhichDescriptionNotes
\link cy_stc_crypto_config_t::ipcChannel ipcChannel\endlinkServer and ClientIPC channel for communication between client and serverIPC Channel, same for both
\link cy_stc_crypto_config_t::acquireNotifierChannel acquireNotifierChannel\endlinkServer and ClientIPC interrupt structure used for the new request notificationsNotify interrupt number, for Server side only
\link cy_stc_crypto_config_t::releaseNotifierChannel releaseNotifierChannel\endlinkServer and ClientIPC interrupt structure used for data ready notifications. Used to call +* userCompleteCallback handler function.Release interrupt number, for Client side only
\link cy_stc_crypto_config_t::userCompleteCallback userCompleteCallback\endlinkClientUser-defined callback for the Release interrupt handler; can be NULLSee Implementing Crypto Interrupts
\link cy_stc_crypto_config_t::releaseNotifierConfig releaseNotifierConfig \endlinkClientIRQ handler settings for data ready notifications. This interrupt occurs +* when server completely processed all input data and released an IPC +* communication channel.configuration for the interrupt
\link cy_stc_crypto_config_t::userGetDataHandler userGetDataHandler\endlinkServerUser-defined function to override default interrupt handler; NULL = use defaultISR for the Notify interrupt
\link cy_stc_crypto_config_t::acquireNotifierConfig acquireNotifierConfig\endlinkServerIRQ handler settings for new request notifications. This interrupt occurs +* when client sent a new request for processing.configuration for the interrupt
\link cy_stc_crypto_config_t::userErrorHandler userErrorHandler\endlinkServerUser-defined function to override default interrupt handler; NULL = use defaultISR for a server error
\link cy_stc_crypto_config_t::cryptoErrorIntrConfig cryptoErrorIntrConfig\endlinkServerIRQ handler settings for hardware error eventsconfiguration for the interrupt
+* +* \section group_crypto_server_init Server Initialization +* +* Use a __Crypto Server Start function__ (one of \ref Cy_Crypto_Server_Start_Base, +* \ref Cy_Crypto_Server_Start_Extra or \ref Cy_Crypto_Server_Start_Full). +* Provide the configuration parameters (cy_stc_crypto_config_t) and a pointer +* to the server context (cy_stc_crypto_server_context_t) that will be used to +* store all temporary data. +* +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoServerStartBase +* +* Because the two cores operate asynchronously, ensure that server +* initialization is complete before initializing the client. +* There are several ways to do this: +* +* - Use \ref Cy_Crypto_Sync as a blocking call, before initializing the client. +* - Enable the CM4 core (\ref Cy_SysEnableCM4) after +* Crypto Server Start executes successfully. +* - Check the return status from calls to \ref Cy_Crypto_Init or +* \ref Cy_Crypto_Enable to ensure \ref CY_CRYPTO_SUCCESS. +* +* All crypto operations are asynchronous. To ensure that any crypto operation +* is complete and the result is valid, use \ref Cy_Crypto_Sync. +* Use the \ref CY_CRYPTO_SYNC_NON_BLOCKING parameter to check status. +* Use \ref CY_CRYPTO_SYNC_BLOCKING to wait for the operation to complete. +* +* \section group_crypto_client_init Client initialization +* +* Use \ref Cy_Crypto_Init to initialize the Crypto client with the configuration +* parameters (cy_stc_crypto_config_t) and a pointer to the context +* (cy_stc_crypto_context_t). Do not fill in the values for the context structure. +* +* Then call \ref Cy_Crypto_Enable to enable the Crypto hardware IP block. +* After this, the Crypto driver is ready to execute crypto functions. +* These calls must be made on the client side. +* Firmware can implement the client on either core. +* +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoInit +* +* \section group_crypto_common_use_cases Common Use Cases +* +* \subsection group_crypto_Use_CRC CRC Calculation +* +* To calculate CRC of a data image: +* - Use \ref Cy_Crypto_Crc_Init to set parameters for selected CRC mode, +* - Call \ref Cy_Crypto_Crc_Run to calculate CRC for a data image. +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoCrcUse +* +* \subsection group_crypto_Use_PRNG Pseudo Random Number Generation +* +* To generate a pseudo random number: +* - Use \ref Cy_Crypto_Prng_Init to set required parameters, +* - Call \ref Cy_Crypto_Prng_Generate. +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoPrngUse +* +* \subsection group_crypto_Use_TRNG True Random Number Generation +* +* To generate a true random number: +* - Call \ref Cy_Crypto_Trng_Generate with needed parameters. +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoTrngUse +* +* \subsection group_crypto_Use_DES DES encryption +* +* To encrypt a message using the DES algorithm: +* - Place DES key into an array, +* - Call \ref Cy_Crypto_Des_Run with required parameters, including the key +* array +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoDesUse +* +* \subsection group_crypto_Use_TDES TDES encryption +* +* To encrypt a message using the TDES algorithm: +* - Place 3 DES keys into a solid array, +* - Call \ref Cy_Crypto_Tdes_Run with required parameters, including the array +* of keys +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoTdesUse +* +* \subsection group_crypto_Use_AES AES encryption +* +* The Crypto driver provides a four AES encryption algorithms (ECB, CBC, CFB +* and CTR) that are used similarly. +* +* To encrypt a message using AES ECB algorithm (as example): +* - Place AES key into array of appropriate size +* - Use \ref Cy_Crypto_Aes_Init to configure the operation +* - Call \ref Cy_Crypto_Aes_Ecb_Run (\ref Cy_Crypto_Aes_Cbc_Run, +* \ref Cy_Crypto_Aes_Cfb_Run or \ref Cy_Crypto_Aes_Ctr_Run) with appropriate +* parameters to make an operation +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoAesEcbUse +* +* \subsection group_crypto_Use_SHA SHA digest calculation +* +* To calculate a SHA digest of a message: +* - Call \ref Cy_Crypto_Sha_Run with appropriate parameters to make an +* operation +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoSha256Use +* +* \subsection group_crypto_Use_CMAC CMAC calculation +* +* To calculate CMAC of a message: +* - Place AES key into array of appropriate size +* - Use \ref Cy_Crypto_Aes_Init to configure the operation +* - Call \ref Cy_Crypto_Aes_Ecb_Run with appropriate parameters to make an +* operation +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoCmacUse +* +* \subsection group_crypto_Use_HMAC HMAC calculation +* +* To calculate HMAC of a message: +* - Place HMAC key into array of appropriate size +* - Call \ref Cy_Crypto_Hmac_Run with appropriate parameters to make an +* operation +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoHmacUse +* +* \subsection group_crypto_Use_RSA_VER RSA signature verification +* +* To verify the RSA signature of the data image: +* - Fill RSA public key structure by RSA public key data +* - Use \ref Cy_Crypto_Sha_Run to calculate SHA digest of the data image +* - Use \ref Cy_Crypto_Rsa_Proc to decrypt present encrypted signature +* - Use \ref Cy_Crypto_Rsa_Verify to verify the decrypted signature with +* calculated SHA digest +* +* Code example: +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoRsaVerUse +* +* \section group_crypto_rsa_considerations RSA Usage Considerations +* +* General RSA encryption and decryption is supported. +* \ref Cy_Crypto_Rsa_Proc encrypts or decrypts data based on the parameters +* passed to the function. If you pass in plain text and a public key, the output +* is encrypted (cipher text). If you pass in cipher text and a private key, the +* output is decrypted (plain text). +* +* One parameter for this function call is a structure that defines the key: +* cy_stc_crypto_rsa_pub_key_t. The four modulus and exponent fields are +* mandatory. They represent the data for either the public or private key as +* appropriate. +* +* \note The modulus and exponent values in the +* \ref cy_stc_crypto_rsa_pub_key_t must be in little-endian order.
+* Use the \ref Cy_Crypto_Rsa_InvertEndianness function to convert to or from +* little-endian order. +* +* The remaining fields represent three pre-calculated coefficients that can +* reduce execution time by up to 5x. The fields are: coefficient for Barrett +* reduction, binary inverse of the modulus, and the result of +* (2^moduloLength mod modulo). These fields are optional, and can be set to NULL. +* +* Calculate these coefficients with \ref Cy_Crypto_Rsa_CalcCoefs. +* Pass them in the address of the key structure with the modulus and exponent +* values for the key. The function returns the coefficients for the key in the +* key structure, replacing any previous values. +* +* The RSA functionality also implements functions to decrypt a signature using +* a public key. This signature must follow the RSASSA-PKCS-v1_5 standard. +* The signature must contain a SHA digest (hash). +* MD2, MD4, and MD5 message digests are not supported. +* +* An encrypted signature is stored as big-endian data. It must be inverted for +* RSA processing. To use the provided signature decryption, firmware must +* -# Calculate the SHA digest of the data to be verified with +* \ref Cy_Crypto_Sha_Run. +* -# Ensure that the RSA signature is in little-endian format. +* Use \ref Cy_Crypto_Rsa_InvertEndianness. +* -# Decrypt the RSA signature with a public key, by calling +* \ref Cy_Crypto_Rsa_Proc. +* -# Invert the byte order of the output, to return to big-endian format. +* Use \ref Cy_Crypto_Rsa_InvertEndianness. +* -# Call \ref Cy_Crypto_Rsa_Verify (which requires data in big-endian format). +* +* \section group_crypto_irq_implements Implementing Crypto Interrupts +* +* The Crypto driver uses three interrupts: +* - A notify interrupt when data is ready for a cryptographic operation +* - A release interrupt when a cryptographic operation is complete +* - An error interrupt if the server encounters a hardware error +* +* You can modify default behavior for each interrupt. +* +* Notify Interrupt: the Crypto server has a default ISR to handle this +* interrupt, \ref Cy_Crypto_Server_GetDataHandler. The default ISR clears the +* interrupt, retrieves the data from the IPC channel, and dispatches control to +* the desired cryptographic operation. +* +* To use the default handler, set the \link +* cy_stc_crypto_config_t::userGetDataHandler userGetDataHandler \endlink field +* of the cy_stc_crypto_config_t structure to NULL. To override, populate this +* field with your ISR. Then call Crypto Server Start function. +* Your ISR can perform additional tasks required by your application logic, +* but must also call \ref Cy_Crypto_Server_GetDataHandler to dispatch the data +* to the correct cryptographic operation. +* +* Release Interrupt: The Crypto driver includes a handler for this +* interrupt. The interrupt handler clears the interrupt and calls a user-provided +* callback routine. You cannot override this interrupt handler. +* By default the interrupt is disabled. +* +* To use default behavior (interrupt disabled), set the \link +* cy_stc_crypto_config_t::userCompleteCallback userCompleteCallback \endlink +* field of the cy_stc_crypto_config_t structure to NULL. +* To enable the interrupt, populate this field with your callback function. +* Then call \ref Cy_Crypto_Init. If the callback function is not NULL, the Init +* function enables the interrupt, and default behavior calls your routine. +* +* When performing cryptographic operations, firmware must ensure the operation +* is complete before acting on the results. If the release interrupt is disabled, +* typically calls to \ref Cy_Crypto_Sync should be blocking. If the interrupt is +* enabled, your callback function is called when the operation is complete. +* This lets you avoid blocking calls to \ref Cy_Crypto_Sync. +* +* Error Interrupt: The Crypto server has a default ISR to handle this +* interrupt. It clears the interrupt and sets an internal flag that an error +* has occurred. +* +* To use the default handler, set the userErrorHandler field of the +* cy_stc_crypto_config_t structure to NULL. To override, populate this field +* with your ISR. Then call Crypto Server Start function. +* +* Your ISR must call \ref Cy_Crypto_Server_ErrorHandler, and can perform any +* additional tasks required by your application logic. +*/ +/** \} group_crypto_cli_srv */ + +#if !defined(CY_CRYPTO_H) +#define CY_CRYPTO_H + + +#include +#include +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + + +#if defined(__cplusplus) +extern "C" { +#endif + + +/** \cond INTERNAL */ + +cy_en_crypto_status_t Cy_Crypto_GetLibraryInfo(cy_en_crypto_lib_info_t *cryptoInfo); + +/** \endcond */ + +/** +* \addtogroup group_crypto_cli_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Init +****************************************************************************//** +* +* This function initializes the Crypto context buffer and +* configures the Crypto driver. Must be called at first. +* +* To start working with Crypto methods after Crypto_Init(), +* call Crypto_Enable() to turn-on the Crypto Hardware. +* +* \param config +* The pointer to the Crypto configuration structure. +* +* \param context +* The pointer to the \ref cy_stc_crypto_context_t instance of structure +* that stores the Crypto driver common context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoInit +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Init(cy_stc_crypto_config_t const *config, cy_stc_crypto_context_t *context); + +/******************************************************************************* +* Function Name: Cy_Crypto_DeInit +****************************************************************************//** +* +* This function de-initializes the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_DeInit(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Enable +****************************************************************************//** +* +* This function enables (turns on) the Crypto hardware. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Enable(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Disable +****************************************************************************//** +* +* This function disables (turns off) the Crypto hardware. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Disable(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Sync +****************************************************************************//** +* +* This function waits or just checks (depending on the parameter) +* for the Crypto operation to complete. +* +* \param isBlocking +* Set whether Crypto_Sync is blocking: +* True - is blocking. +* False - is not blocking. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Sync(bool isBlocking); + +/******************************************************************************* +* Function Name: Cy_Crypto_GetErrorStatus +****************************************************************************//** +* +* This function returns a cause of a Crypto hardware error. +* It is independent of the Crypto previous state. +* +* \param hwErrorCause +* \ref cy_stc_crypto_hw_error_t. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_GetErrorStatus(cy_stc_crypto_hw_error_t *hwErrorCause); + +#if (CPUSS_CRYPTO_PR == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Prng_Init +****************************************************************************//** +* +* This function initializes parameters of the PRNG. +* +* Call to initialize this encryption technique before using any associated +* functions. You must initialize this technique again after using any other +* encryption technique. +* Invoking this function resets the pseudo random sequence. +* +* \param lfsr32InitState +* A non-zero seed value for the first LFSR. User selected. + +* \param lfsr31InitState +* A non-zero seed value for the second LFSR. User selected. + +* \param lfsr29InitState +* A non-zero seed value for the third LFSR. User selected. +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_prng_t structure that stores +* the Crypto function context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoPrngUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Prng_Init(uint32_t lfsr32InitState, + uint32_t lfsr31InitState, + uint32_t lfsr29InitState, + cy_stc_crypto_context_prng_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Prng_Generate +****************************************************************************//** +* +* This function generates 32-bit the Pseudo Random Number. +* It depends on \ref Cy_Crypto_Prng_Init that should be called before. +* +* \param max +* The maximum value of a generated random number. +* +* \param randomNum +* The pointer to a variable to store the generated pseudo random number. +* __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_prng_t structure that stores +* the Crypto function context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoPrngUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Prng_Generate(uint32_t max, + uint32_t *randomNum, + cy_stc_crypto_context_prng_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#if (CPUSS_CRYPTO_AES == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Init +****************************************************************************//** +* +* This function initializes the AES operation by setting key and key length. +* +* Call to initialize this encryption technique before using any associated +* functions. You must initialize this technique again after using any other +* encryption technique. +* +* \param key +* The pointer to the encryption/decryption key. __Must be 4-byte aligned.__ +* +* \param keyLength +* \ref cy_en_crypto_aes_key_length_t +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t structure that stores all +* internal variables the Crypto driver requires. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoAesEcbUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Init(uint32_t *key, + cy_en_crypto_aes_key_length_t keyLength, + cy_stc_crypto_context_aes_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Ecb_Run +****************************************************************************//** +* +* This function performs AES operation on one 16-byte block +* (see \ref CY_CRYPTO_AES_BLOCK_SIZE). +* The AES key must be set before by invoking Cy_Crypto_Aes_Init(). +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t). +* +* \param srcBlock +* The pointer to a 16-byte source block. __Must be 4-byte aligned.__ +* +* \param dstBlock +* The pointer to a 16-byte destination cipher block. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t instance of structure +* that stores all AES internal variables. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoAesEcbUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Ecb_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t *dstBlock, + uint32_t *srcBlock, + cy_stc_crypto_context_aes_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Cbc_Run +****************************************************************************//** +* +* This function performs AES operation on a plain text with Cipher Block Chaining (CBC). +* The key must be set before by invoking Cy_Crypto_Aes_Init(). +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param srcSize +* The size of the source plain text. +* +* \param ivPtr +* The pointer to the initial vector. __Must be 4-byte aligned.__ +* +* \param dst +* The pointer to a destination cipher text. __Must be 4-byte aligned.__ +* +* \param src +* The pointer to a source plain text. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t structure that stores all +* internal variables the Crypto driver requires. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Cbc_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint32_t *ivPtr, + uint32_t *dst, + uint32_t *src, + cy_stc_crypto_context_aes_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Cfb_Run +****************************************************************************//** +* +* This function performs AES operation on a plain text with Cipher Feedback mode +* (CFB). The key must be set before by invoking Cy_Crypto_Aes_Init(). +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param srcSize +* The size of the source plain text. +* +* \param ivPtr +* The pointer to the initial vector. __Must be 4-byte aligned.__ +* +* \param dst +* The pointer to the destination cipher text. __Must be 4-byte aligned.__ +* +* \param src +* The pointer to the source plain text. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t structure that stores all +* internal variables the Crypto driver requires. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Cfb_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint32_t *ivPtr, + uint32_t *dst, + uint32_t *src, + cy_stc_crypto_context_aes_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Ctr_Run +****************************************************************************//** +* +* This function performs AES operation on a plain text with Cipher Block Counter +* mode (CTR). +* NOTE: preparation of the unique nonceCounter for each block is +* the user's responsibility. This function is dependent on +* the key being set before invoking \ref Cy_Crypto_Aes_Init(). +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param srcSize +* The size of a source plain text. +* +* \param srcOffset +* The size of an offset within the current block stream for resuming within the +* current cipher stream. +* +* \param nonceCounter +* The 128-bit nonce and counter. __Must be 4-byte aligned.__ +* +* \param streamBlock +* The saved stream-block for resuming. Is over-written by the function. +* __Must be 4-byte aligned.__ +* +* \param dst +* The pointer to the destination cipher text. __Must be 4-byte aligned.__ +* +* \param src +* The pointer to the source plain text. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t structure that stores all +* internal variables the Crypto driver requires. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Ctr_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint32_t *srcOffset, + uint32_t nonceCounter[CY_CRYPTO_AES_BLOCK_SIZE / 8u], + uint32_t streamBlock[CY_CRYPTO_AES_BLOCK_SIZE / 8u], + uint32_t *dst, + uint32_t *src, + cy_stc_crypto_context_aes_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Aes_Cmac_Run +****************************************************************************//** +* +* This function performs the cipher-block chaining-message authentication-code. +* +* There is no Init function. Provide the required parameters and the pointer to +* the context structure when making this function call. +* +* \param src +* The pointer to the source plain text. __Must be 4-byte aligned.__ +* +* \param srcSize +* The size of a source plain text. +* +* \param key +* The pointer to the encryption key. __Must be 4-byte aligned.__ +* +* \param keyLength +* \ref cy_en_crypto_aes_key_length_t +* +* \param cmacPtr +* The pointer to the calculated CMAC. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_aes_t structure that stores all +* internal variables the Crypto driver requires. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoCmacUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Aes_Cmac_Run(uint32_t *src, + uint32_t srcSize, + uint32_t *key, + cy_en_crypto_aes_key_length_t keyLength, + uint32_t *cmacPtr, + cy_stc_crypto_context_aes_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Sha_Run +****************************************************************************//** +* +* This function performs the SHA Hash function. +* There is no Init function. Provide the required parameters and the pointer +* to the context structure when making this function call. +* It is independent of the previous Crypto state because it already contains +* preparation, calculation, and finalization steps. +* +* \param mode +* \ref cy_en_crypto_sha_mode_t +* +* \param message +* The pointer to a message whose hash value is being computed. +* __Must be 4-byte aligned.__ +* +* \param messageSize +* The size of a message. +* +* \param digest +* The pointer to the hash digest. The hash size depends on the selected SHA mode +* (from 20 to 64 bytes, see \ref CY_CRYPTO_SHA_MAX_DIGEST_SIZE). +* __Must be 4-byte aligned.__ +* +* \param cfContext +* the pointer to the \ref cy_stc_crypto_context_sha_t structure that stores all +* internal variables for Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoSha256Use +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Sha_Run(uint32_t *message, + uint32_t messageSize, + uint32_t *digest, + cy_en_crypto_sha_mode_t mode, + cy_stc_crypto_context_sha_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Hmac_Run +****************************************************************************//** +* +* This function performs HMAC calculation. +* There is no Init function. Provide the required parameters and the pointer +* to the context structure when making this function call. +* It is independent of the previous Crypto state because it already contains +* preparation, calculation, and finalization steps. +* +* \param hmac +* The pointer to the calculated HMAC. __Must be 4-byte aligned.__ +* +* \param message +* The pointer to a message whose hash value is being computed. +* __Must be 4-byte aligned.__ +* +* \param messageSize +* The size of a message. +* +* \param key +* The pointer to the key. __Must be 4-byte aligned.__ +* +* \param keyLength +* The length of the key. +* +* \param mode +* \ref cy_en_crypto_sha_mode_t +* +* \param cfContext +* the pointer to the \ref cy_stc_crypto_context_sha_t structure that stores all +* internal variables for the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoHmacUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Hmac_Run(uint32_t *hmac, + uint32_t *message, + uint32_t messageSize, + uint32_t *key, + uint32_t keyLength, + cy_en_crypto_sha_mode_t mode, + cy_stc_crypto_context_sha_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#if (CPUSS_CRYPTO_STR == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Str_MemCpy +****************************************************************************//** +* +* This function copies a memory block. It operates on data in the user SRAM and +* doesn't use Crypto internal SRAM. +* +* \note Memory blocks should not overlap. +* +* There is no alignment restriction. +* This function is independent of the previous Crypto state. +* +* \param dst +* The pointer to the destination of MemCpy. +* +* \param src +* The pointer to the source of MemCpy. +* +* \param size +* The size in bytes of the copy operation. Maximum size is 65535 Bytes. +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_str_t structure that stores all +* internal variables for the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Str_MemCpy(void *dst, + void const *src, + uint16_t size, + cy_stc_crypto_context_str_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Str_MemSet +****************************************************************************//** +* +* This function sets the memory block. It operates on data in the user SRAM and +* doesn't use Crypto internal SRAM. +* +* There is no alignment restriction. +* This function is independent from the previous Crypto state. +* +* \param dst +* The pointer to the destination of MemSet. +* +* \param data +* The value to be set. +* +* \param size +* The size in bytes of the set operation. Maximum size is 65535 Bytes. +* +* \param cfContext +* the pointer to the \ref cy_stc_crypto_context_str_t structure that stores all +* internal variables for the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Str_MemSet(void *dst, + uint8_t data, + uint16_t size, + cy_stc_crypto_context_str_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Str_MemCmp +****************************************************************************//** +* +* This function compares memory blocks. It operates on data in the user SRAM and +* doesn't use Crypto internal SRAM. +* +* There is no alignment restriction. +* This function is independent from the previous Crypto state. +* +* \param src0 +* The pointer to the first source of MemCmp. +* +* \param src1 +* The pointer to the second source of MemCmp. +* +* \param size +* The size in bytes of the compare operation. Maximum size is 65535 Bytes. +* +* \param resultPtr +* The pointer to the result of compare (__must be 4-byte aligned__): +* - 0 - if Source 1 equal Source 2 +* - 1 - if Source 1 not equal Source 2 +* +* \param cfContext +* the pointer to the \ref cy_stc_crypto_context_str_t structure that stores all +* internal variables for the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Str_MemCmp(void const *src0, + void const *src1, + uint16_t size, + uint32_t *resultPtr, + cy_stc_crypto_context_str_t *cfContext); + +/******************************************************************************* +* Function Name: Crypto_Str_MemXor +****************************************************************************//** +* +* This function calculates the XOR of two memory blocks. It operates on data in +* the user SRAM and doesn't use Crypto internal SRAM. +* +* \note Memory structures should not overlap. +* +* There is no alignment restriction. +* This function is independent from the previous Crypto state. +* +* \param src0 +* The pointer to the first source of MemXor. + +* \param src1 +* The pointer to the second source of MemXor. + +* \param dst +* The pointer to the destination of MemXor. +* +* \param size +* The size in bytes of the compare operation. Maximum size is 65535 Bytes. +* +* \param cfContext +* the pointer to the \ref cy_stc_crypto_context_str_t structure that stores all +* internal variables for the Crypto driver. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Str_MemXor(void const *src0, + void const *src1, + void *dst, + uint16_t size, + cy_stc_crypto_context_str_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_STR == 1) */ + +#if (CPUSS_CRYPTO_CRC == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Crc_Init +****************************************************************************//** +* +* This function performs CRC initialization. +* +* Call to initialize this encryption technique before using any associated +* functions. You must initialize this technique again after using any other +* encryption technique. +* +* Below is the table with known polynomials with different parameters and their +* calculated CRCs from the string "123456789": +* | Name | Width | Poly | Init | Data Rev | Data XOR | Rem Rev | Rem XOR | Expected CRC | +* |:-------------------|:-----:|:----------:|:----------:|:--------:|:--------:|:-------:|:----------:|:------------:| +* | CRC-3 / ROHC | 3 | 0x3 | 0x7 | 1 | 0 | 1 | 0x0 | 0x6 | +* | CRC-4 / ITU | 4 | 0x3 | 0x0 | 1 | 0 | 1 | 0x0 | 0x7 | +* | CRC-5 / EPC | 5 | 0x9 | 0x9 | 0 | 0 | 0 | 0x0 | 0x0 | +* | CRC-5 / ITU | 5 | 0x15 | 0x0 | 1 | 0 | 1 | 0x0 | 0x7 | +* | CRC-5 / USB | 5 | 0x5 | 0x1F | 1 | 0 | 1 | 0x1F | 0x19 | +* | CRC-6 / CDMA2000-A | 6 | 0x27 | 0x3F | 0 | 0 | 0 | 0x0 | 0xD | +* | CRC-6 / CDMA2000-B | 6 | 0x7 | 0x3F | 0 | 0 | 0 | 0x0 | 0x3B | +* | CRC-6 / DARC | 6 | 0x19 | 0x0 | 1 | 0 | 1 | 0x0 | 0x26 | +* | CRC-6 / ITU | 6 | 0x3 | 0x0 | 1 | 0 | 1 | 0x0 | 0x6 | +* | CRC-7 | 7 | 0x9 | 0x0 | 0 | 0 | 0 | 0x0 | 0x75 | +* | CRC-7 / ROHC | 7 | 0x4F | 0x7F | 1 | 0 | 1 | 0x0 | 0x53 | +* | CRC-8 | 8 | 0x7 | 0x0 | 0 | 0 | 0 | 0x0 | 0xF4 | +* | CRC-8 / CDMA2000 | 8 | 0x9B | 0xFF | 0 | 0 | 0 | 0x0 | 0xDA | +* | CRC-8 / DARC | 8 | 0x39 | 0x0 | 1 | 0 | 1 | 0x0 | 0x15 | +* | CRC-8 / DVB-S2 | 8 | 0xD5 | 0x0 | 0 | 0 | 0 | 0x0 | 0xBC | +* | CRC-8 / EBU | 8 | 0x1D | 0xFF | 1 | 0 | 1 | 0x0 | 0x97 | +* | CRC-8 / I-CODE | 8 | 0x1D | 0xFD | 0 | 0 | 0 | 0x0 | 0x7E | +* | CRC-8 / ITU | 8 | 0x7 | 0x0 | 0 | 0 | 0 | 0x55 | 0xA1 | +* | CRC-8 / MAXIM | 8 | 0x31 | 0x0 | 1 | 0 | 1 | 0x0 | 0xA1 | +* | CRC-8 / ROHC | 8 | 0x7 | 0xFF | 1 | 0 | 1 | 0x0 | 0xD0 | +* | CRC-8 / WCDMA | 8 | 0x9B | 0x0 | 1 | 0 | 1 | 0x0 | 0x25 | +* | CRC-10 | 10 | 0x233 | 0x0 | 0 | 0 | 0 | 0x0 | 0x199 | +* | CRC-10 / CDMA2000 | 10 | 0x3D9 | 0x3FF | 0 | 0 | 0 | 0x0 | 0x233 | +* | CRC-11 | 11 | 0x385 | 0x1A | 0 | 0 | 0 | 0x0 | 0x5A3 | +* | CRC-12 / 3GPP | 12 | 0x80F | 0x0 | 0 | 0 | 1 | 0x0 | 0xDAF | +* | CRC-12 / CDMA2000 | 12 | 0xF13 | 0xFFF | 0 | 0 | 0 | 0x0 | 0xD4D | +* | CRC-12 / DECT | 12 | 0x80F | 0x0 | 0 | 0 | 0 | 0x0 | 0xF5B | +* | CRC-13 / BBC | 13 | 0x1CF5 | 0x0 | 0 | 0 | 0 | 0x0 | 0x4FA | +* | CRC-14 / DARC | 14 | 0x805 | 0x0 | 1 | 0 | 1 | 0x0 | 0x82D | +* | CRC-15 | 15 | 0x4599 | 0x0 | 0 | 0 | 0 | 0x0 | 0x59E | +* | CRC-15 / MPT1327 | 15 | 0x6815 | 0x0 | 0 | 0 | 0 | 0x1 | 0x2566 | +* | CRC-24 | 24 | 0x0864CFB | 0x00B704CE | 0 | 0 | 0 | 0x0 | 0x21CF02 | +* | CRC-24 / FLEXRAY-A | 24 | 0x05D6DCB | 0x00FEDCBA | 0 | 0 | 0 | 0x0 | 0x7979BD | +* | CRC-24 / FLEXRAY-B | 24 | 0x05D6DCB | 0x00ABCDEF | 0 | 0 | 0 | 0x0 | 0x1F23B8 | +* | CRC-31 / PHILIPS | 31 | 0x4C11DB7 | 0x7FFFFFFF | 0 | 0 | 0 | 0x7FFFFFFF | 0xCE9E46C | +* | CRC-16 / ARC | 16 | 0x8005 | 0x0000 | 1 | 0 | 1 | 0x0000 | 0xBB3D | +* | CRC-16 / AUG-CCITT | 16 | 0x1021 | 0x1D0F | 0 | 0 | 0 | 0x0000 | 0xE5CC | +* | CRC-16 / BUYPASS | 16 | 0x8005 | 0x0000 | 0 | 0 | 0 | 0x0000 | 0xFEE8 | +* | CRC-16 / CCITT-0 | 16 | 0x1021 | 0xFFFF | 0 | 0 | 0 | 0x0000 | 0x29B1 | +* | CRC-16 / CDMA2000 | 16 | 0xC867 | 0xFFFF | 0 | 0 | 0 | 0x0000 | 0x4C06 | +* | CRC-16 / DDS-110 | 16 | 0x8005 | 0x800D | 0 | 0 | 0 | 0x0000 | 0x9ECF | +* | CRC-16 / DECT-R | 16 | 0x0589 | 0x0000 | 0 | 0 | 0 | 0x0001 | 0x007E | +* | CRC-16 / DECT-X | 16 | 0x0589 | 0x0000 | 0 | 0 | 0 | 0x0000 | 0x007F | +* | CRC-16 / DNP | 16 | 0x3D65 | 0x0000 | 1 | 0 | 1 | 0xFFFF | 0xEA82 | +* | CRC-16 / EN-13757 | 16 | 0x3D65 | 0x0000 | 0 | 0 | 0 | 0xFFFF | 0xC2B7 | +* | CRC-16 / GENIBUS | 16 | 0x1021 | 0xFFFF | 0 | 0 | 0 | 0xFFFF | 0xD64E | +* | CRC-16 / MAXIM | 16 | 0x8005 | 0x0000 | 1 | 0 | 1 | 0xFFFF | 0x44C2 | +* | CRC-16 / MCRF4XX | 16 | 0x1021 | 0xFFFF | 1 | 0 | 1 | 0x0000 | 0x6F91 | +* | CRC-16 / RIELLO | 16 | 0x1021 | 0xB2AA | 1 | 0 | 1 | 0x0000 | 0x63D0 | +* | CRC-16 / T10-DIF | 16 | 0x8BB7 | 0x0000 | 0 | 0 | 0 | 0x0000 | 0xD0DB | +* | CRC-16 / TELEDISK | 16 | 0xA097 | 0x0000 | 0 | 0 | 0 | 0x0000 | 0x0FB3 | +* | CRC-16 / TMS37157 | 16 | 0x1021 | 0x89EC | 1 | 0 | 1 | 0x0000 | 0x26B1 | +* | CRC-16 / USB | 16 | 0x8005 | 0xFFFF | 1 | 0 | 1 | 0xFFFF | 0xB4C8 | +* | CRC-A | 16 | 0x1021 | 0xC6C6 | 1 | 0 | 1 | 0x0000 | 0xBF05 | +* | CRC-16 / KERMIT | 16 | 0x1021 | 0x0000 | 1 | 0 | 1 | 0x0000 | 0x2189 | +* | CRC-16 / MODBUS | 16 | 0x8005 | 0xFFFF | 1 | 0 | 1 | 0x0000 | 0x4B37 | +* | CRC-16 / X-25 | 16 | 0x1021 | 0xFFFF | 1 | 0 | 1 | 0xFFFF | 0x906E | +* | CRC-16 / XMODEM | 16 | 0x1021 | 0x0000 | 0 | 0 | 0 | 0x0000 | 0x31C3 | +* | CRC-32 | 32 | 0x04C11DB7 | 0xFFFFFFFF | 1 | 0 | 1 | 0xFFFFFFFF | 0xCBF43926 | +* | CRC-32 / BZIP2 | 32 | 0x04C11DB7 | 0xFFFFFFFF | 0 | 0 | 0 | 0xFFFFFFFF | 0xFC891918 | +* | CRC-32C | 32 | 0x1EDC6F41 | 0xFFFFFFFF | 1 | 0 | 1 | 0xFFFFFFFF | 0xE3069283 | +* | CRC-32D | 32 | 0xA833982B | 0xFFFFFFFF | 1 | 0 | 1 | 0xFFFFFFFF | 0x87315576 | +* | CRC-32 / MPEG-2 | 32 | 0x04C11DB7 | 0xFFFFFFFF | 0 | 0 | 0 | 0x00000000 | 0x0376E6E7 | +* | CRC-32 / POSIX | 32 | 0x04C11DB7 | 0x00000000 | 0 | 0 | 0 | 0xFFFFFFFF | 0x765E7680 | +* | CRC-32Q | 32 | 0x814141AB | 0x00000000 | 0 | 0 | 0 | 0x00000000 | 0x3010BF7F | +* | CRC-32 / JAMCRC | 32 | 0x04C11DB7 | 0xFFFFFFFF | 1 | 0 | 1 | 0x00000000 | 0x340BC6D9 | +* | CRC-32 / XFER | 32 | 0x000000AF | 0x00000000 | 0 | 0 | 0 | 0x00000000 | 0xBD0BE338 | +* +* \param polynomial +* The polynomial (specified using 32 bits) used in the computing CRC. +* +* \param dataReverse +* The order in which data bytes are processed. 0 - MSB first; 1- LSB first. +* +* \param dataXor +* The byte mask for XORing data +* +* \param remReverse +* A remainder reverse: 0 means the remainder is not reversed. 1 means reversed. +* +* \param remXor +* Specifies a mask with which the LFSR32 register is XORed to produce a remainder. +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_crc_t structure that stores +* the Crypto driver context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \note +* The polynomial, initial seed and remainder XOR values are always +* provided as MSB aligned (so actual higher bit should be located in 31s bit of +* the parameter value).
+* Calculated CRC value is MSB aligned only when dataReverse is zero. +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoCrcUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Crc_Init(uint32_t polynomial, + uint8_t dataReverse, + uint8_t dataXor, + uint8_t remReverse, + uint32_t remXor, + cy_stc_crypto_context_crc_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Crc_Run +****************************************************************************//** +* +* This function performs CRC calculation on a message. +* It depends on \ref Cy_Crypto_Crc_Init(), which should be called before. +* +* \param data +* The pointer to the message whose CRC is being computed. +* +* \param dataSize +* The size of a message in bytes. +* +* \param crc +* The pointer to a computed CRC value. __Must be 4-byte aligned.__ +* +* \param lfsrInitState +* The initial state of the LFSR. +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_crc_t structure that stores +* the Crypto driver context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \note +* The polynomial, initial seed and remainder XOR values are always +* provided as MSB aligned (so actual higher bit should be located in 31s bit of +* the parameter value).
+* Calculated CRC value is MSB aligned only when dataReverse is zero. +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoCrcUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Crc_Run(void *data, + uint16_t dataSize, + uint32_t *crc, + uint32_t lfsrInitState, + cy_stc_crypto_context_crc_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#if (CPUSS_CRYPTO_TR == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Trng_Generate +****************************************************************************//** +* +* This function generates a 32-bit True Random Number. +* +* \param GAROPol +* The polynomial for the programmable Galois ring oscillator. +* +* \param FIROPol +* The polynomial for the programmable Fibonacci ring oscillator. +* +* \param max +* The maximum length of a random number, in the range [0, 32] bits. +* +* \param randomNum +* The pointer to a generated true random number. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_trng_t structure that stores +* the Crypto driver context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoTrngUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Trng_Generate(uint32_t GAROPol, + uint32_t FIROPol, + uint32_t max, + uint32_t *randomNum, + cy_stc_crypto_context_trng_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#if (CPUSS_CRYPTO_DES == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Des_Run +****************************************************************************//** +* +* This function performs DES operation on a Single Block. All addresses must be +* 4-Byte aligned. +* Ciphertext (dstBlock) may overlap with plaintext (srcBlock) +* There is no Init function. Provide the required parameters and the pointer +* to the context structure when making this function call. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param key +* The pointer to the encryption/decryption key. __Must be 4-byte aligned.__ +* +* \param srcBlock +* The pointer to a source block. __Must be 4-byte aligned.__ +* +* \param dstBlock +* The pointer to a destination cipher block. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the cy_stc_crypto_context_des_t structure that stores +* the Crypto driver context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Des_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t *key, + uint32_t *dstBlock, + uint32_t *srcBlock, + cy_stc_crypto_context_des_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Tdes_Run +****************************************************************************//** +* +* This function performs the TDES operation on a single block. All addresses +* __Must be 4-byte aligned.__ +* Ciphertext (dstBlock) may overlap with plaintext (srcBlock). +* There is no Init function. Provide the required parameters and the pointer +* to the context structure when making this function call. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param key +* The pointer to the encryption/decryption key. __Must be 4-byte aligned.__ +* +* \param srcBlock +* The pointer to a source block. __Must be 4-byte aligned.__ +* +* \param dstBlock +* The pointer to a destination cipher block. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the cy_stc_crypto_context_des_t structure that stores +* the Crypto driver context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoTdesUse +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Tdes_Run(cy_en_crypto_dir_mode_t dirMode, + uint32_t *key, + uint32_t *dstBlock, + uint32_t *srcBlock, + cy_stc_crypto_context_des_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#if (CPUSS_CRYPTO_VU == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Rsa_Proc +****************************************************************************//** +* +* This function calculates (m^e mod modulo) where m is Message (Signature), e - +* public exponent using a public key in the next representation, it contains: +* modulo, +* public exponent, +* coefficient for Barrett reduction, +* binary inverse of the modulo, and +* result of (2^moduloLength mod modulo). +* +* Not all fields in a key must be given. Modulo and public exponents are mandatory; +* Barrett coefficient, inverse modulo, and r-bar are optional. +* If they don't exist, their according pointers should be NULL. These coefficients +* could be calculated by \ref Cy_Crypto_Rsa_CalcCoefs. +* Their presence accelerates performance by five times. +* Approximate performance for 1024-bit modulo is 41.6 ms; for 2048-bit modulo is +* 142 ms when using a 25 MHz clock for Crypto HW. These numbers just for reference. +* They depend on many factors (compiler, optimization level, etc.). +* +* Returns the processed value and a success value. +* +* \note Incoming message and result processed message must be in +* little-endian order.
+* The modulus and exponent values in the \ref cy_stc_crypto_rsa_pub_key_t +* must also be in little-endian order.
+* Use \ref Cy_Crypto_Rsa_InvertEndianness function to convert to or from +* little-endian order. +* +* \param pubKey +* The pointer to the \ref cy_stc_crypto_rsa_pub_key_t structure that stores +* public key. +* +* \param message +* The pointer to the message to be processed. __Must be 4-byte aligned.__ +* +* \param messageSize +* The length of the message to be processed. +* +* \param processedMessage +* The pointer to processed message. __Must be 4-byte aligned.__ +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_rsa_t structure that stores +* the RSA context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Rsa_Proc(cy_stc_crypto_rsa_pub_key_t const *pubKey, + uint32_t const *message, + uint32_t messageSize, + uint32_t *processedMessage, + cy_stc_crypto_context_rsa_t *cfContext); + +/******************************************************************************* +* Function Name: Cy_Crypto_Rsa_CalcCoefs +****************************************************************************//** +* +* This function calculates constant coefficients (which is dependent only on modulo +* and independent on message). With this pre-calculated coefficients calculations +* speed-up by five times. +* +* These coefficients are: +* coefficient for Barrett reduction, +* binary inverse of the modulo, +* result of (2^moduloLength mod modulo) +* +* Calculated coefficients will be placed by addresses provided in the +* pubKey structure for according coefficients. +* Function overwrites previous values. +* Approximate performance for 1024-bit modulo is 33.2 ms; for 2048-bit modulo is +* 113 ms when using a 25 MHz clock for Crypto HW. These numbers are just for +* reference. +* They depend on many factors (compiler, optimization level, etc.). +* +* \param pubKey +* The pointer to the \ref cy_stc_crypto_rsa_pub_key_t structure that stores a +* public key. +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_rsa_t structure that stores +* the RSA context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Rsa_CalcCoefs(cy_stc_crypto_rsa_pub_key_t const *pubKey, + cy_stc_crypto_context_rsa_t *cfContext); + +#if (CPUSS_CRYPTO_SHA == 1) +/******************************************************************************* +* Function Name: Cy_Crypto_Rsa_Verify +****************************************************************************//** +* +* This function does an RSA verification with checks for content, paddings, and +* signature format. +* The SHA digest of the message and decrypted message should be calculated first. +* Supports only PKCS1-v1_5 format. Inside of this format supported padding +* using only SHA. Cases with MD2 and MD5 are not supported. +* +* PKCS1-v1_5 described here, page 31: +* http://www.emc.com/collateral/white-papers/h11300-pkcs-1v2-2-rsa-cryptography-standard-wp.pdf +* +* Returns the verification result \ref cy_en_crypto_rsa_ver_result_t. +* +* \param verResult +* The pointer to the verification result \ref cy_en_crypto_rsa_ver_result_t. +* +* \param digestType +* SHA mode used for hash calculation \ref cy_en_crypto_sha_mode_t. +* +* \param digest +* The pointer to the hash of the message whose signature is to be verified. +* __Must be 4-byte aligned.__ +* +* \param decryptedSignature +* The pointer to the decrypted signature to be verified. +* __Must be 4-byte aligned.__ +* +* \param decryptedSignatureLength +* The length of the decrypted signature to be verified (in bytes) +* +* \param cfContext +* The pointer to the \ref cy_stc_crypto_context_rsa_ver_t structure that stores +* the RSA context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Rsa_Verify(cy_en_crypto_rsa_ver_result_t *verResult, + cy_en_crypto_sha_mode_t digestType, + uint32_t const *digest, + uint32_t const *decryptedSignature, + uint32_t decryptedSignatureLength, + cy_stc_crypto_context_rsa_ver_t *cfContext); +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +/******************************************************************************* +* Function Name: Cy_Crypto_Rsa_InvertEndianness +****************************************************************************//** +* +* This function reverts byte-array memory block, like:
+* inArr[0] <---> inArr[n]
+* inArr[1] <---> inArr[n-1]
+* inArr[2] <---> inArr[n-2]
+* ........................
+* inArr[n/2] <---> inArr[n/2-1]
+* +* Odd or even byteSize are acceptable. +* +* \param inArrPtr +* The pointer to the memory whose endianness is to be inverted. +* +* \param byteSize +* The length of the memory array whose endianness is to be inverted (in bytes) +* +*******************************************************************************/ +void Cy_Crypto_Rsa_InvertEndianness(void *inArrPtr, uint32_t byteSize); + +/** \} group_crypto_cli_functions */ + + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* (CY_CRYPTO_H) */ + +/** \} group_crypto */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_common.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_common.h new file mode 100644 index 00000000000..1fe68ef5e2e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_common.h @@ -0,0 +1,883 @@ +/***************************************************************************//** +* \file cy_crypto_common.h +* \version 2.20 +* +* \brief +* This file provides common constants and parameters +* for the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_COMMON_H) +#define CY_CRYPTO_COMMON_H + +#include "cy_device.h" +#include "cy_device_headers.h" +#include +#include +#include "cy_sysint.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +/* Enable SHA functionality */ +#if !defined(CPUSS_CRYPTO_SHA) && (defined(CPUSS_CRYPTO_SHA1) || defined(CPUSS_CRYPTO_SHA2)) + #define CPUSS_CRYPTO_SHA (1) + + #if defined(CPUSS_CRYPTO_SHA2) && !defined(CPUSS_CRYPTO_SHA256) + #define CPUSS_CRYPTO_SHA256 (1) + #endif + + #if defined(CPUSS_CRYPTO_SHA2) && !defined(CPUSS_CRYPTO_SHA512) + #define CPUSS_CRYPTO_SHA512 (1) + #endif +#endif + +#if !defined(CPUSS_CRYPTO_STR) + #define CPUSS_CRYPTO_STR (1) +#endif + +/** Driver major version */ +#define CY_CRYPTO_DRV_VERSION_MAJOR 2 + +/** Driver minor version */ +#define CY_CRYPTO_DRV_VERSION_MINOR 20 + +/** +* \addtogroup group_crypto_cli_srv_macros +* \{ +*/ + +/** Defines Crypto_Sync blocking execution type parameter */ +#define CY_CRYPTO_SYNC_BLOCKING (true) + +/** Defines Crypto_Sync non-blocking execution type parameter */ +#define CY_CRYPTO_SYNC_NON_BLOCKING (false) + +/** Defines the Crypto DES block size (in bytes). */ +#define CY_CRYPTO_DES_BLOCK_SIZE (8u) + +/** Defines the Crypto DES key size (in bytes) */ +#define CY_CRYPTO_DES_KEY_SIZE (CY_CRYPTO_DES_BLOCK_SIZE) + +/** Defines the Crypto TDES key size (in bytes) */ +#define CY_CRYPTO_TDES_KEY_SIZE (24u) + +/** Defines the Crypto AES block size (in bytes) */ +#define CY_CRYPTO_AES_BLOCK_SIZE (16u) + +/** Defines the Crypto AES_128 key maximum size (in bytes) */ +#define CY_CRYPTO_AES_128_KEY_SIZE (16u) + +/** Defines the Crypto AES_192 key maximum size (in bytes) */ +#define CY_CRYPTO_AES_192_KEY_SIZE (24u) + +/** Defines the Crypto AES_256 key maximum size (in bytes) */ +#define CY_CRYPTO_AES_256_KEY_SIZE (32u) + +/** Defines the Crypto AES_256 key maximum size (in four-byte words) */ +#define CY_CRYPTO_AES_256_KEY_SIZE_U32 (32u) + +/** Defines size of the AES block, in four-byte words */ +#define CY_CRYPTO_AES_BLOCK_SIZE_U32 (uint32_t)(CY_CRYPTO_AES_BLOCK_SIZE / 4ul) + +#if (CPUSS_CRYPTO_SHA == 1) + +/* Defines for the SHA algorithm */ +/** Hash size for the SHA1 mode (in bytes) */ +#define CY_CRYPTO_SHA1_DIGEST_SIZE (20u) +/** Hash size for the SHA224 mode (in bytes) */ +#define CY_CRYPTO_SHA224_DIGEST_SIZE (28u) +/** Hash size for the SHA256 mode (in bytes) */ +#define CY_CRYPTO_SHA256_DIGEST_SIZE (32u) +/** Hash size for the SHA384 mode (in bytes) */ +#define CY_CRYPTO_SHA384_DIGEST_SIZE (48u) +/** Hash size for the SHA512 mode (in bytes) */ +#define CY_CRYPTO_SHA512_DIGEST_SIZE (64u) +/** Hash size for the SHA512_224 mode (in bytes) */ +#define CY_CRYPTO_SHA512_224_DIGEST_SIZE (28u) +/** Hash size for the SHA512_256 mode (in bytes) */ +#define CY_CRYPTO_SHA512_256_DIGEST_SIZE (32u) +/** The maximal Hash size for the SHA modes (in bytes). */ +#define CY_CRYPTO_SHA_MAX_DIGEST_SIZE (CY_CRYPTO_SHA512_DIGEST_SIZE) + +/** Block size for the SHA1 mode (in bytes) */ +#define CY_CRYPTO_SHA1_BLOCK_SIZE (64u) +/** Block size for the SHA256 mode (in bytes) */ +#define CY_CRYPTO_SHA256_BLOCK_SIZE (64u) +/** Block size for the SHA512 mode (in bytes) */ +#define CY_CRYPTO_SHA512_BLOCK_SIZE (128u) +/** Maximal block size for the SHA modes (in bytes) */ +#define CY_CRYPTO_SHA_MAX_BLOCK_SIZE (CY_CRYPTO_SHA512_BLOCK_SIZE) + +/** \cond INTERNAL */ + +#define CY_CRYPTO_SHA256_PAD_SIZE (56uL) +#define CY_CRYPTO_SHA512_PAD_SIZE (112uL) + +#define CY_CRYPTO_SHA1_HASH_SIZE (20u) +#define CY_CRYPTO_SHA256_HASH_SIZE (32u) +#define CY_CRYPTO_SHA512_HASH_SIZE (64u) +#define CY_CRYPTO_SHA_MAX_HASH_SIZE (CY_CRYPTO_SHA512_HASH_SIZE) + +#define CY_CRYPTO_SHA1_ROUND_MEM_SIZE (320uL) +#define CY_CRYPTO_SHA256_ROUND_MEM_SIZE (256uL) +#define CY_CRYPTO_SHA512_ROUND_MEM_SIZE (640uL) +#define CY_CRYPTO_SHA_MAX_ROUND_MEM_SIZE (CY_CRYPTO_SHA512_ROUND_MEM_SIZE) + +/* The width of the Crypto hardware registers values in bits. */ +#define CY_CRYPTO_HW_REGS_WIDTH (32UL) + +/** \endcond */ + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + + +#if (CPUSS_CRYPTO_VU == 1) + +/** Processed message size for the RSA 1024Bit mode (in bytes) */ +#define CY_CRYPTO_RSA1024_MESSAGE_SIZE (128) +/** Processed message size for the RSA 1536Bit mode (in bytes) */ +#define CY_CRYPTO_RSA1536_MESSAGE_SIZE (192) +/** Processed message size for the RSA 2048Bit mode (in bytes) */ +#define CY_CRYPTO_RSA2048_MESSAGE_SIZE (256) + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + + +/** Crypto Driver PDL ID */ +#define CY_CRYPTO_ID CY_PDL_DRV_ID(0x0Cu) + +/** \} group_crypto_cli_srv_macros */ + +/** +* \addtogroup group_crypto_config_structure +* \{ + The Crypto initialization configuration. +* \note Should be the same for the Crypto Server and Crypto Client initialization. +*/ + +/** The Crypto user callback function type. + Callback is called at the end of Crypto calculation. */ +typedef void (*cy_crypto_callback_ptr_t)(void); + +/** The Crypto configuration structure. */ +typedef struct +{ + /** Defines the IPC channel used for client-server data exchange */ + uint32_t ipcChannel; + + /** Specifies the IPC notifier channel (IPC interrupt structure number) + to notify server that data for the operation is prepared */ + uint32_t acquireNotifierChannel; + + /** Specifies the IPC notifier channel (IPC interrupt structure number) + to notify client that operation is complete and data is valid */ + uint32_t releaseNotifierChannel; + + /** Specifies the release notifier interrupt configuration. It used for + internal purposes and user doesn't fill it. */ + cy_stc_sysint_t releaseNotifierConfig; + + /** User callback function. + If this field is NOT NULL, it called when Crypto operation + is complete. */ + cy_crypto_callback_ptr_t userCompleteCallback; + + /** Server-side user IRQ handler function, called when data for the + operation is prepared to process. + - If this field is NULL, server will use own interrupt handler + to get data. + - If this field is not NULL, server will call this interrupt handler. + This interrupt handler must call the + \ref Cy_Crypto_Server_GetDataHandler to get data to process. + + Note: In the second case user should process data separately and + clear interrupt by calling \ref Cy_Crypto_Server_Process. + This model is used in the + multitasking environment. */ + cy_israddress userGetDataHandler; + + /** Server-side user IRQ handler function, called when a Crypto hardware + error occurs (interrupt was raised). + - If this field is NULL - server will use own interrupt handler + for error processing. + - If this field is not NULL - server will call this interrupt handler. + This interrupt handler must call the + \ref Cy_Crypto_Server_ErrorHandler to clear the interrupt. */ + cy_israddress userErrorHandler; + + /** Specifies the prepared data notifier interrupt configuration. It used + for internal purposes and user doesn't fill it. */ + cy_stc_sysint_t acquireNotifierConfig; + + /** Specifies the hardware error processing interrupt configuration. It used + for internal purposes and user doesn't fill it. */ + cy_stc_sysint_t cryptoErrorIntrConfig; + +} cy_stc_crypto_config_t; + +/** \} group_crypto_config_structure */ + +/** +* \addtogroup group_crypto_data_structures +* \{ +*/ + +#if (CPUSS_CRYPTO_VU == 1) + +/** +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +* +* The driver uses this structure to store and manipulate the RSA public key and +* additional coefficients to accelerate RSA calculation. +* +* RSA key contained from two fields: +* - n - modulus part of the key +* - e - exponent part of the key. +* +* Other fields are accelerating coefficients and can be calculated by +* \ref Cy_Crypto_Rsa_CalcCoefs. +* +* \note The modulus and exponent values in the +* \ref cy_stc_crypto_rsa_pub_key_t must also be in little-endian order.
+* Use \ref Cy_Crypto_Rsa_InvertEndianness function to convert to or from +* little-endian order. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** The pointer to the modulus part of public key. */ + uint8_t *moduloPtr; + /** The modulus length, in bits, maximum supported size is 2048Bit */ + uint32_t moduloLength; + + /** The pointer to the exponent part of public key */ + uint8_t *pubExpPtr; + /** The exponent length, in bits, maximum supported size is 256Bit */ + uint32_t pubExpLength; + + /** The pointer to the Barrett coefficient. Memory for it should be + allocated by user with size moduloLength + 1. */ + uint8_t *barretCoefPtr; + + /** The pointer to the binary inverse of the modulo. Memory for it + should be allocated by user with size moduloLength. */ + uint8_t *inverseModuloPtr; + + /** The pointer to the (2^moduloLength mod modulo). Memory for it should + be allocated by user with size moduloLength */ + uint8_t *rBarPtr; +/** \endcond */ +} cy_stc_crypto_rsa_pub_key_t; + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +/** \} group_crypto_data_structures */ + +/** +* \addtogroup group_crypto_cli_data_structures +* \{ +*/ + +/** Structure for storing a description of a Crypto hardware error */ +typedef struct +{ + /** + Captures error description information for one of obtained hardware error: + - for INSTR_OPC_ERROR: - violating the instruction. + - for INSTR_CC_ERROR : - violating the instruction condition code. + - for BUS_ERROR : - violating the transfer address. */ + uint32_t errorStatus0; + + /** + [31] - Specifies if ERROR_STATUS0 and ERROR_STATUS1 capture valid + error-information. + [26..24] - The error source: + - "0": INSTR_OPC_ERROR - an instruction decoder error. + - "1": INSTR_CC_ERROR - an instruction condition code-error. + - "2": BUS_ERROR - a bus master interface AHB-Lite bus-error. + - [5..4] - violating the transfer, the size attribute + - "0": an 8-bit transfer; + - "1": 16 bits transfer; + - "2": 32-bit transfer. + - [0] - violating the transfer, read the attribute + - "3": TR_AP_DETECT_ERROR - True Random Generator error. + */ + uint32_t errorStatus1; +} cy_stc_crypto_hw_error_t; + +/** \} group_crypto_cli_data_structures */ + + +/** The Crypto library functionality level. */ +typedef enum +{ + CY_CRYPTO_NO_LIBRARY = 0x00u, + CY_CRYPTO_BASE_LIBRARY = 0x01u, + CY_CRYPTO_EXTRA_LIBRARY = 0x02u, + CY_CRYPTO_FULL_LIBRARY = 0x03u, +} cy_en_crypto_lib_info_t; + + +/** +* \addtogroup group_crypto_enums +* \{ +*/ + +#if (CPUSS_CRYPTO_AES == 1) +/** The key length options for the AES method. */ +typedef enum +{ + CY_CRYPTO_KEY_AES_128 = 0x00u, /**< The AES key size is 128 bits */ + CY_CRYPTO_KEY_AES_192 = 0x01u, /**< The AES key size is 192 bits */ + CY_CRYPTO_KEY_AES_256 = 0x02u /**< The AES key size is 256 bits */ +} cy_en_crypto_aes_key_length_t; +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +/** Defines the direction of the Crypto methods */ +typedef enum +{ + /** The forward mode, plain text will be encrypted into cipher text */ + CY_CRYPTO_ENCRYPT = 0x00u, + /** The reverse mode, cipher text will be decrypted into plain text */ + CY_CRYPTO_DECRYPT = 0x01u +} cy_en_crypto_dir_mode_t; + +#if (CPUSS_CRYPTO_SHA == 1) +/** Defines modes of SHA method */ +typedef enum +{ +#if (CPUSS_CRYPTO_SHA1 == 1) + CY_CRYPTO_MODE_SHA1 = 0x00u, /**< Sets the SHA1 mode */ +#endif /* #if (CPUSS_CRYPTO_SHA1 == 1) */ + +#if (CPUSS_CRYPTO_SHA256 == 1) + CY_CRYPTO_MODE_SHA224 = 0x01u, /**< Sets the SHA224 mode */ + CY_CRYPTO_MODE_SHA256 = 0x02u, /**< Sets the SHA256 mode */ +#endif /* #if (CPUSS_CRYPTO_SHA256 == 1) */ + +#if (CPUSS_CRYPTO_SHA512 == 1) + CY_CRYPTO_MODE_SHA384 = 0x03u, /**< Sets the SHA384 mode */ + CY_CRYPTO_MODE_SHA512 = 0x04u, /**< Sets the SHA512 mode */ + CY_CRYPTO_MODE_SHA512_256 = 0x05u, /**< Sets the SHA512/256 mode */ + CY_CRYPTO_MODE_SHA512_224 = 0x06u, /**< Sets the SHA512/224 mode */ +#endif /* #if (CPUSS_CRYPTO_SHA512 == 1) */ + +} cy_en_crypto_sha_mode_t; +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +/** Signature verification status */ +typedef enum +{ + CY_CRYPTO_RSA_VERIFY_SUCCESS = 0x00u, /**< PKCS1-v1.5 verify SUCCESS */ + CY_CRYPTO_RSA_VERIFY_FAIL = 0x01u /**< PKCS1-v1.5 verify FAILED */ +} cy_en_crypto_rsa_ver_result_t; + +/** Errors of the Crypto block */ +typedef enum +{ + /** Operation completed successfully. */ + CY_CRYPTO_SUCCESS = 0x00u, + + /** A hardware error occurred, detailed information is in stc_crypto_hw_error_t. */ + CY_CRYPTO_HW_ERROR = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x01u, + + /** The size of input data is not multiple of 16. */ + CY_CRYPTO_SIZE_NOT_X16 = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x02u, + + /** The key for the DES method is weak. */ + CY_CRYPTO_DES_WEAK_KEY = CY_CRYPTO_ID | CY_PDL_STATUS_WARNING | 0x03u, + + /** Communication between the client and server via IPC is broken. */ + CY_CRYPTO_COMM_FAIL = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x04u, + + /** The Crypto server is not started. */ + CY_CRYPTO_SERVER_NOT_STARTED = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x06u, + + /** The Crypto server in process state. */ + CY_CRYPTO_SERVER_BUSY = CY_CRYPTO_ID | CY_PDL_STATUS_INFO | 0x07u, + + /** The Crypto driver is not initialized. */ + CY_CRYPTO_NOT_INITIALIZED = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x08u, + + /** The Crypto hardware is not enabled. */ + CY_CRYPTO_HW_NOT_ENABLED = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x09u, + + /** The Crypto operation is not supported. */ + CY_CRYPTO_NOT_SUPPORTED = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x0Au, + + /** The Crypto operation parameters are incorrect. */ + CY_CRYPTO_BAD_PARAMS = CY_CRYPTO_ID | CY_PDL_STATUS_ERROR | 0x0Bu + +} cy_en_crypto_status_t; + +/** \} group_crypto_enums */ + +/** \cond INTERNAL */ + +/** Instruction to communicate between Client and Server */ +typedef enum +{ + CY_CRYPTO_INSTR_UNKNOWN = 0x00u, + CY_CRYPTO_INSTR_ENABLE = 0x01u, + CY_CRYPTO_INSTR_DISABLE = 0x02u, + +#if (CPUSS_CRYPTO_PR == 1) + CY_CRYPTO_INSTR_PRNG_INIT = 0x03u, + CY_CRYPTO_INSTR_PRNG = 0x04u, +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#if (CPUSS_CRYPTO_TR == 1) + CY_CRYPTO_INSTR_TRNG_INIT = 0x05u, + CY_CRYPTO_INSTR_TRNG = 0x06u, +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#if (CPUSS_CRYPTO_AES == 1) + CY_CRYPTO_INSTR_AES_INIT = 0x07u, + CY_CRYPTO_INSTR_AES_ECB = 0x08u, + CY_CRYPTO_INSTR_AES_CBC = 0x09u, + CY_CRYPTO_INSTR_AES_CFB = 0x0Au, + CY_CRYPTO_INSTR_AES_CTR = 0x0Bu, + CY_CRYPTO_INSTR_CMAC = 0x0Cu, +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) + CY_CRYPTO_INSTR_SHA = 0x0Du, +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) + CY_CRYPTO_INSTR_HMAC = 0x0Eu, +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#if (CPUSS_CRYPTO_STR == 1) + CY_CRYPTO_INSTR_MEM_CPY = 0x0Fu, + CY_CRYPTO_INSTR_MEM_SET = 0x10u, + CY_CRYPTO_INSTR_MEM_CMP = 0x11u, + CY_CRYPTO_INSTR_MEM_XOR = 0x12u, +#endif /* #if (CPUSS_CRYPTO_STR == 1) */ + +#if (CPUSS_CRYPTO_CRC == 1) + CY_CRYPTO_INSTR_CRC_INIT = 0x13u, + CY_CRYPTO_INSTR_CRC = 0x14u, +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#if (CPUSS_CRYPTO_DES == 1) + CY_CRYPTO_INSTR_DES = 0x15u, + CY_CRYPTO_INSTR_3DES = 0x16u, +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#if (CPUSS_CRYPTO_VU == 1) + CY_CRYPTO_INSTR_RSA_PROC = 0x17u, + CY_CRYPTO_INSTR_RSA_COEF = 0x18u, +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) + CY_CRYPTO_INSTR_RSA_VER = 0x19u, +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + + CY_CRYPTO_INSTR_SRV_INFO = 0x55u +} cy_en_crypto_comm_instr_t; + +/** \endcond */ + +/** +* \addtogroup group_crypto_data_structures +* \{ +*/ + +#if (CPUSS_CRYPTO_AES == 1) + +/** The structure for storing the AES state. +* All fields for this structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Pointer to AES key */ + uint8_t *key; + /** Pointer to AES inverse key */ + uint8_t *invKey; + /** AES key length */ + cy_en_crypto_aes_key_length_t keyLength; + /** Pointer to AES work buffers */ + uint32_t *buffers; + /** AES processed block index (for CMAC, SHA operations) */ + uint32_t blockIdx; + /** \endcond */ +} cy_stc_crypto_aes_state_t; +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) + +/** The structure for storing the SHA state. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + uint32_t mode; + uint8_t *block; + uint32_t blockSize; + uint8_t *hash; + uint32_t hashSize; + uint8_t *roundMem; + uint32_t roundMemSize; + uint32_t messageSize; + uint32_t digestSize; + uint32_t blockIdx; + uint8_t const *initialHash; + /** \endcond */ +} cy_stc_crypto_sha_state_t; + +#endif /* (CPUSS_CRYPTO_SHA == 1) */ + +/** \} group_crypto_data_structures */ + +/************************************************************* +* Structures used for communication between Client and Server +***************************************************************/ + +/** +* \addtogroup group_crypto_srv_data_structures +* \{ +*/ + +/** The structure for storing the crypto server context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** IPC communication channel number */ + uint32_t ipcChannel; + /** IPC acquire interrupt channel number */ + uint32_t acquireNotifierChannel; + /** IPC release interrupt channel number */ + cy_israddress getDataHandlerPtr; + /** Crypto hardware errors interrupt handler */ + cy_israddress errorHandlerPtr; + /** Acquire notifier interrupt configuration */ + cy_stc_sysint_t acquireNotifierConfig; + /** Crypto hardware errors interrupt configuration */ + cy_stc_sysint_t cryptoErrorIntrConfig; + /** Hardware error occurrence flag */ + bool isHwErrorOccured; + /** Hardware processing errors */ + cy_stc_crypto_hw_error_t hwErrorStatus; + /** \endcond */ +} cy_stc_crypto_server_context_t; + +/** \} group_crypto_srv_data_structures */ + +/** +* \addtogroup group_crypto_cli_data_structures +* \{ +*/ + +/** The structure for storing the crypto client context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Operation instruction code */ + cy_en_crypto_comm_instr_t instr; + /** Response from executed crypto function */ + cy_en_crypto_status_t resp; + /** Hardware processing errors */ + cy_stc_crypto_hw_error_t hwErrorStatus; + /** IPC communication channel number */ + uint32_t ipcChannel; + /** IPC acquire interrupt channel number */ + uint32_t acquireNotifierChannel; + /** IPC release interrupt channel number */ + uint32_t releaseNotifierChannel; + /** User callback for Crypto HW calculation complete event */ + cy_crypto_callback_ptr_t userCompleteCallback; + /** Release notifier interrupt configuration */ + cy_stc_sysint_t releaseNotifierConfig; + /** Pointer to the crypto function specific context data */ + void *xdata; + /** \endcond */ +} cy_stc_crypto_context_t; + + +#if (CPUSS_CRYPTO_DES == 1) +/** The structure for storing the DES context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Operation direction (Encrypt / Decrypt) */ + cy_en_crypto_dir_mode_t dirMode; + /** Pointer to key data */ + uint32_t *key; + /** Pointer to data destination block */ + uint32_t *dst; + /** Pointer to data source block */ + uint32_t *src; + /** \endcond */ +} cy_stc_crypto_context_des_t; +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#if (CPUSS_CRYPTO_AES == 1) +/** The structure for storing the AES context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** AES state data */ + cy_stc_crypto_aes_state_t aesState; + /** Operation direction (Encrypt / Decrypt) */ + cy_en_crypto_dir_mode_t dirMode; + /** AES key length */ + cy_en_crypto_aes_key_length_t keyLength; + /** Pointer to AES key */ + uint32_t *key; + /** Operation data size */ + uint32_t srcSize; + /** Size of the last non-complete block (for CTR mode only) */ + uint32_t *srcOffset; + /** Initialization vector, in the CTR mode is used as nonceCounter */ + uint32_t *ivPtr; + /** AES processed block pointer (for CTR mode only) */ + uint32_t *streamBlock; + /** Pointer to data destination block */ + uint32_t *dst; + /** Pointer to data source block */ + uint32_t *src; + /** \endcond */ +} cy_stc_crypto_context_aes_t; +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#if (CPUSS_CRYPTO_SHA == 1) + +/** The structure for storing the SHA context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Pointer to data source block */ + uint32_t *message; + /** Operation data size */ + uint32_t messageSize; + /** Pointer to data destination block */ + uint32_t *dst; + /** SHA mode */ + cy_en_crypto_sha_mode_t mode; + /** Pointer to key data (for HMAC only) */ + uint32_t *key; + /** Key data length (for HMAC only) */ + uint32_t keyLength; + /** \endcond */ +} cy_stc_crypto_context_sha_t; +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#if (CPUSS_CRYPTO_PR == 1) +/** The structure for storing the PRNG context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + uint32_t lfsr32InitState; /**< lfsr32 initialization data */ + uint32_t lfsr31InitState; /**< lfsr31 initialization data */ + uint32_t lfsr29InitState; /**< lfsr29 initialization data */ + uint32_t max; /**< Maximum of the generated value */ + uint32_t *prngNum; /**< Pointer to generated value */ + /** \endcond */ +} cy_stc_crypto_context_prng_t; +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#if (CPUSS_CRYPTO_TR == 1) +/** The structure for storing the TRNG context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** + The polynomial for the programmable Galois ring oscillator (TR_GARO_CTL). + The polynomial is represented WITHOUT the high order bit (this bit is + always assumed '1'). + The polynomial should be aligned so that more significant bits + (bit 30 and down) contain the polynomial and less significant bits + (bit 0 and up) contain padding '0's. */ + uint32_t GAROPol; + + /** + The polynomial for the programmable Fibonacci ring oscillator(TR_FIRO_CTL). + The polynomial is represented WITHOUT the high order bit (this bit is + always assumed '1'). + The polynomial should be aligned so that more significant bits + (bit 30 and down) contain the polynomial and less significant bits + (bit 0 and up) contain padding '0's. */ + uint32_t FIROPol; + /** Maximum of the generated value */ + uint32_t max; + /** Pointer to generated value */ + uint32_t *trngNum; + /** \endcond */ +} cy_stc_crypto_context_trng_t; +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#if (CPUSS_CRYPTO_STR == 1) +/** The structure for storing the string context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + void const *src0; /**< Pointer to 1-st string source */ + void const *src1; /**< Pointer to 2-nd string source */ + void *dst; /**< Pointer to string destination */ + uint32_t dataSize; /**< Operation data size */ + uint32_t data; /**< Operation data value (for memory setting) */ + /** \endcond */ +} cy_stc_crypto_context_str_t; +#endif /* #if (CPUSS_CRYPTO_STR == 1) */ + +#if (CPUSS_CRYPTO_CRC == 1) +/** The structure for storing the CRC context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + void* data; /**< Pointer to data source block */ + uint32_t dataSize; /**< Operation data size */ + uint32_t *crc; /**< Pointer to CRC destination variable */ + uint32_t polynomial; /**< Polynomial for CRC calculate */ + uint32_t lfsrInitState; /**< CRC calculation initial value */ + uint32_t dataReverse; /**< Input data reverse flag */ + uint32_t dataXor; /**< Input data XOR flag */ + uint32_t remReverse; /**< Output data reverse flag */ + uint32_t remXor; /**< Output data XOR flag */ + /** \endcond */ +} cy_stc_crypto_context_crc_t; +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#if (CPUSS_CRYPTO_VU == 1) + +#if (CPUSS_CRYPTO_SHA == 1) +/** The structure for storing the RSA verification context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in the function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Pointer to verification result /ref cy_en_crypto_rsa_ver_result_t */ + cy_en_crypto_rsa_ver_result_t *verResult; + /** SHA digest type, used with SHA calculation of the message */ + cy_en_crypto_sha_mode_t digestType; + /** SHA digest of the message, calculated with digestType */ + uint32_t const *hash; + /** Previously decrypted RSA signature */ + uint32_t const *decryptedSignature; + /** Length of the decrypted RSA signature */ + uint32_t decryptedSignatureLength; + /** \endcond */ +} cy_stc_crypto_context_rsa_ver_t; +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +/** The structure for storing the RSA context. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure to the driver in function calls. Firmware must +* ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + /** \cond INTERNAL */ + /** Pointer to key data */ + cy_stc_crypto_rsa_pub_key_t const *key; + /** Pointer to data source block */ + uint32_t const *message; + /** Operation data size */ + uint32_t messageSize; + /** Pointer to data destination block */ + uint32_t *result; + /** \endcond */ +} cy_stc_crypto_context_rsa_t; +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +/** \} group_crypto_cli_data_structures */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_COMMON_H) */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core.h new file mode 100644 index 00000000000..31c67a5bfbf --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core.h @@ -0,0 +1,98 @@ +/***************************************************************************//** +* \file cy_crypto_core.h +* \version 2.20 +* +* \brief +* This file provides common constants and parameters +* for the Crypto driver core interface. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_crypto_lld_api +* \{ +* Use the low-level API for direct access to the Crypto hardware. +* +* The functions and other declarations used in this part of the driver are in +* cy_crypto_core.h. You can also include cy_pdl.h (ModusToolbox only) to get +* access to all functions and declarations in the PDL. +* +* Firmware initializes and starts the Crypto operations. The firmware then +* provides the configuration data required for the desired cryptographic +* technique. +* +* \defgroup group_crypto_lld_hw Control and Status +* \{ +* \defgroup group_crypto_lld_hw_functions Functions +* \} +* \defgroup group_crypto_lld_symmetric Symmetric Key Algorithms (AES, DES, TDES) +* \{ +* \defgroup group_crypto_lld_symmetric_functions Functions +* \} +* \defgroup group_crypto_lld_asymmetric Asymmetric Key Algorithms (RSA, ECP, ECDSA) +* \{ +* \defgroup group_crypto_lld_asymmetric_functions Functions +* \defgroup group_crypto_lld_asymmetric_enums Enumerated Types +* \} +* \defgroup group_crypto_lld_sha Hash Operations (SHA) +* \{ +* \defgroup group_crypto_lld_sha_functions Functions +* \} +* \defgroup group_crypto_lld_mac Message Authentication Code (CMAC, HMAC) +* \{ +* \defgroup group_crypto_lld_mac_functions Functions +* \} +* \defgroup group_crypto_lld_crc Cyclic Redundancy Code (CRC) +* \{ +* \defgroup group_crypto_lld_crc_functions Functions +* \} +* \defgroup group_crypto_lld_rng Random Number Generation (TRNG, PRNG) +* \{ +* \defgroup group_crypto_lld_rng_functions Functions +* \} +* \defgroup group_crypto_lld_vu Vector Unit (VU) +* \{ +* \defgroup group_crypto_lld_vu_functions Functions +* \} +* \defgroup group_crypto_lld_mem Memory Streaming Functions +* \{ +* \defgroup group_crypto_lld_mem_functions Functions +* \} +* \} */ + +#if !defined(CY_CRYPTO_CORE_H) +#define CY_CRYPTO_CORE_H + +#include "cy_crypto_core_aes.h" +#include "cy_crypto_core_crc.h" +#include "cy_crypto_core_cmac.h" +#include "cy_crypto_core_des.h" +#include "cy_crypto_core_ecc.h" +#include "cy_crypto_core_ecc_nist_p.h" +#include "cy_crypto_core_hmac.h" +#include "cy_crypto_core_hw.h" +#include "cy_crypto_core_prng.h" +#include "cy_crypto_core_mem.h" +#include "cy_crypto_core_rsa.h" +#include "cy_crypto_core_sha.h" +#include "cy_crypto_core_trng.h" +#include "cy_crypto_core_vu.h" + +#endif /* #if !defined(CY_CRYPTO_CORE_H) */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes.h new file mode 100644 index 00000000000..0f6e9609418 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes.h @@ -0,0 +1,350 @@ +/***************************************************************************//** +* \file cy_crypto_core_aes.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the AES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_AES_H) +#define CY_CRYPTO_CORE_AES_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +#include "cy_crypto_core_aes_v1.h" +#include "cy_crypto_core_aes_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_aes_init_func_t)(CRYPTO_Type *base, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + cy_stc_crypto_aes_state_t *aesState); + +typedef cy_en_crypto_status_t (*cy_crypto_aes_ecb_func_t)(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +typedef cy_en_crypto_status_t (*cy_crypto_aes_cbc_func_t)(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +typedef cy_en_crypto_status_t (*cy_crypto_aes_cfb_func_t)(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +typedef cy_en_crypto_status_t (*cy_crypto_aes_ctr_func_t)(CRYPTO_Type *base, + uint32_t srcSize, + uint32_t *srcOffset, + uint8_t *ivPtr, + uint8_t *streamBlock, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +/** +* \addtogroup group_crypto_lld_symmetric_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Aes_Init +****************************************************************************//** +* +* Initializes AES mode of operation and prepares an inverse key. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param key +* The pointer to the encryption/decryption key. +* +* \param keyLength +* \ref cy_en_crypto_aes_key_length_t +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Aes_Init(CRYPTO_Type *base, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Aes_Init(base, key, keyLength, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Aes_Init(base, key, keyLength, aesState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Aes_Ecb +****************************************************************************//** +* +* Performs the AES operation on a single block. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t). +* +* \param dst +* The pointer to the destination cipher block. +* +* \param src +* The pointer to the source block. +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Aes_Ecb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Aes_Ecb(base, dirMode, dst, src, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Aes_Ecb(base, dirMode, dst, src, aesState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Aes_Cbc +****************************************************************************//** +* +* Performs the AES-CBC operation defined in the dirMode parameter on a plain text +* defined in the src parameter. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param srcSize +* The size of the source plain text. +* +* \param ivPtr +* The pointer to the initial vector. +* +* \param dst +* The pointer to the destination cipher text. +* +* \param src +* The pointer to the source plain text. +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Aes_Cbc(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Aes_Cbc(base, dirMode, srcSize, ivPtr, dst, src, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Aes_Cbc(base, dirMode, srcSize, ivPtr, dst, src, aesState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Aes_Cfb +****************************************************************************//** +* +* Performs the AES-CFB operation defined in the dirMode parameter on a plain text +* defined in the SRC parameter. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param srcSize +* The size of the source plain text. +* +* \param ivPtr +* The pointer to the initial vector. +* +* \param dst +* The pointer to the destination cipher text. +* +* \param src +* The pointer to the source plain text. +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Aes_Cfb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Aes_Cfb(base, dirMode, srcSize, ivPtr, dst, src, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Aes_Cfb(base, dirMode, srcSize, ivPtr, dst, src, aesState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Aes_Ctr +****************************************************************************//** +* +* Performs the AES-CTR operation on a plain text defined in the src parameter. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcSize +* The size of the source plain text. +* +* \param srcOffset +* The size of an offset within the current block stream for resuming within the +* current cipher stream. +* +* \param ivPtr +* The 128-bit nonce and counter. +* +* \param streamBlock +* The saved stream-block for resuming. Is over-written by the function. +* +* \param dst +* The pointer to the destination cipher text. +* +* \param src +* The pointer to the source plain text. Must be 4-Byte aligned. +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Aes_Ctr(CRYPTO_Type *base, + uint32_t srcSize, + uint32_t *srcOffset, + uint8_t *ivPtr, + uint8_t *streamBlock, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Aes_Ctr(base, srcSize, srcOffset, ivPtr, streamBlock, dst, src, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Aes_Ctr(base, srcSize, srcOffset, ivPtr, streamBlock, dst, src, aesState); + } + + return tmpResult; +} + +/** \} group_crypto_lld_symmetric_functions */ + +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_AES_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v1.h new file mode 100644 index 00000000000..c170a613b53 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v1.h @@ -0,0 +1,112 @@ +/***************************************************************************//** +* \file cy_crypto_core_aes_v1.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the AES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_AES_V1_H) +#define CY_CRYPTO_CORE_AES_V1_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +#include "cy_syslib.h" + +/** \cond INTERNAL */ + +/* The structure to define used memory buffers */ +typedef struct +{ + uint32_t key[CY_CRYPTO_AES_256_KEY_SIZE_U32]; + uint32_t keyInv[CY_CRYPTO_AES_256_KEY_SIZE_U32]; + uint32_t block0[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + uint32_t block1[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + uint32_t block2[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + uint32_t iv[CY_CRYPTO_AES_BLOCK_SIZE_U32]; +} cy_stc_crypto_aes_buffers_t; + +/** \endcond */ + +void Cy_Crypto_Core_V1_Aes_ProcessBlock(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t const *aesState, + cy_en_crypto_dir_mode_t dirMode, + uint32_t *dstBlock, + uint32_t const *srcBlock); + +void Cy_Crypto_Core_V1_Aes_Xor(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t const *aesState, + uint32_t *dstBlock, + uint32_t const *src0Block, + uint32_t const *src1Block); + +void Cy_Crypto_Core_V1_Aes_Free(CRYPTO_Type *base); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Aes_Init(CRYPTO_Type *base, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Aes_Ecb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Aes_Cbc(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Aes_Cfb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Aes_Ctr(CRYPTO_Type *base, + uint32_t srcSize, + uint32_t *srcOffset, + uint8_t *ivPtr, + uint8_t *streamBlock, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + + +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_AES_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v2.h new file mode 100644 index 00000000000..5d4ce251868 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_aes_v2.h @@ -0,0 +1,87 @@ +/***************************************************************************//** +* \file cy_crypto_core_aes_v2.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the AES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_AES_V2_H) +#define CY_CRYPTO_CORE_AES_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +void Cy_Crypto_Core_V2_Aes_LoadEncKey(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t const *aesState); +void Cy_Crypto_Core_V2_Aes_LoadDecKey(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t const *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Aes_Init(CRYPTO_Type *base, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Aes_Ecb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Aes_Cbc(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Aes_Cfb(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint32_t srcSize, + uint8_t const *ivPtr, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Aes_Ctr(CRYPTO_Type *base, + uint32_t srcSize, + uint32_t *srcOffset, + uint8_t *ivPtr, + uint8_t *streamBlock, + uint8_t *dst, + uint8_t const *src, + cy_stc_crypto_aes_state_t *aesState); + + +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_AES_V2_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac.h new file mode 100644 index 00000000000..c4e908c0689 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac.h @@ -0,0 +1,119 @@ +/***************************************************************************//** +* \file cy_crypto_core_cmac.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the CMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CMAC_H) +#define CY_CRYPTO_CORE_CMAC_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +#include "cy_crypto_core_cmac_v1.h" +#include "cy_crypto_core_cmac_v2.h" + +/** \cond INTERNAL */ + +typedef cy_en_crypto_status_t (*cy_crypto_cmac_func_t)(CRYPTO_Type *base, + uint8_t const *src, + uint32_t srcSize, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + uint8_t *dst, + cy_stc_crypto_aes_state_t *aesState); +/** \endcond */ + +/** +* \addtogroup group_crypto_lld_mac_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Cmac +****************************************************************************//** +* +* Calculates the AES Cipher-based Message Authentication Code (CMAC) on the input +* message with the provided key. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param message +* The pointer to the source plain text. Must be 4-byte aligned. +* +* \param messageSize +* The size of the source plain text in bytes. +* +* \param key +* The pointer to the encryption key. Must be 4-byte aligned. +* +* \param keyLength +* \ref cy_en_crypto_aes_key_length_t +* +* \param cmac +* The pointer to the calculated CMAC. +* +* \param aesState +* The pointer to the AES state structure allocated by the user. The user +* must not modify anything in this structure. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Cmac(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + uint8_t *cmac, + cy_stc_crypto_aes_state_t *aesState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Cmac(base, message, messageSize, key, keyLength, cmac, aesState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Cmac(base, message, messageSize, key, keyLength, cmac, aesState); + } + + return tmpResult; +} + +/** \} group_crypto_lld_mac_functions */ + +#endif /* (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CMAC_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v1.h new file mode 100644 index 00000000000..21b8956c914 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v1.h @@ -0,0 +1,100 @@ +/***************************************************************************//** +* \file cy_crypto_core_cmac_v1.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the CMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CMAC_V1_H) +#define CY_CRYPTO_CORE_CMAC_V1_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +#include "cy_syslib.h" + +/** \cond INTERNAL */ + +/* The bit string used to generate sub-keys */ +#define CY_CRYPTO_CMAC_RB (0x87u) + +/* The structure to store the AES-CMAC context */ +typedef struct +{ + uint32_t *block; + uint32_t *k; + uint32_t *temp; +} cy_stc_crypto_v1_cmac_state_t; + +/* The structure to define used memory buffers */ +typedef struct +{ + uint32_t k[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + uint32_t block0[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + uint32_t block1[CY_CRYPTO_AES_BLOCK_SIZE_U32]; + cy_stc_crypto_v1_cmac_state_t cmacState; +} cy_stc_crypto_cmac_buffers_t; + +/* The function prototypes */ +uint32_t Cy_Crypto_Core_V1_Cmac_LeftShift(CRYPTO_Type *base, uint8_t *srcDst); + +void Cy_Crypto_Core_V1_Cmac_Init(cy_stc_crypto_v1_cmac_state_t *cmacState, + uint32_t *temp, + uint32_t *block, + uint32_t *k); + +void Cy_Crypto_Core_V1_Cmac_Start(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t *aesState, + cy_stc_crypto_v1_cmac_state_t *cmacState); + +void Cy_Crypto_Core_V1_Cmac_Update(CRYPTO_Type *base, cy_stc_crypto_aes_state_t *aesState, + cy_stc_crypto_v1_cmac_state_t *cmacState, + uint8_t const *message, + uint32_t messageSize); + +void Cy_Crypto_Core_V1_Cmac_Finish(CRYPTO_Type *base, + cy_stc_crypto_aes_state_t *aesState, + cy_stc_crypto_v1_cmac_state_t *cmacState, + uint8_t* cmac); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Cmac(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + uint8_t *cmac, + cy_stc_crypto_aes_state_t *aesState); + +/** \endcond */ + + +#endif /* (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CMAC_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v2.h new file mode 100644 index 00000000000..f4805598715 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_cmac_v2.h @@ -0,0 +1,82 @@ +/***************************************************************************//** +* \file cy_crypto_core_cmac_v2.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the CMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CMAC_V2_H) +#define CY_CRYPTO_CORE_CMAC_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_AES == 1) + +/** \cond INTERNAL */ + +/* The structure to store the AES-CMAC context */ +typedef struct +{ + uint32_t block_idx; + uint8_t *k; +} cy_stc_crypto_v2_cmac_state_t; + +/* The function prototypes */ +uint32_t Cy_Crypto_Core_V2_Cmac_LeftShift(CRYPTO_Type *base, uint8_t *srcDst); + +void Cy_Crypto_Core_V2_Cmac_Init(cy_stc_crypto_v2_cmac_state_t *cmacState, + uint8_t *k); + +void Cy_Crypto_Core_V2_Cmac_Start(CRYPTO_Type *base, + cy_stc_crypto_v2_cmac_state_t *cmacState); + +void Cy_Crypto_Core_V2_Cmac_Update(CRYPTO_Type *base, + cy_stc_crypto_v2_cmac_state_t *cmacState, + uint8_t const *message, + uint32_t messageSize); + +void Cy_Crypto_Core_V2_Cmac_Finish(CRYPTO_Type *base, + cy_stc_crypto_v2_cmac_state_t *cmacState, + uint8_t* cmac); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Cmac(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + cy_en_crypto_aes_key_length_t keyLength, + uint8_t *cmac, + cy_stc_crypto_aes_state_t *aesState); + +/** \endcond */ + + +#endif /* #if (CPUSS_CRYPTO_AES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CMAC_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc.h new file mode 100644 index 00000000000..6890e6654b0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc.h @@ -0,0 +1,370 @@ +/***************************************************************************//** +* \file cy_crypto_core_crc.h +* \version 2.20 +* +* \brief +* This file provides the headers for CRC API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CRC_H) +#define CY_CRYPTO_CORE_CRC_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_CRC == 1) + +#include "cy_crypto_core_crc_v1.h" +#include "cy_crypto_core_crc_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_crc_init_func_t)(CRYPTO_Type *base, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor); + +typedef cy_en_crypto_status_t (*cy_crypto_crc_func_t)(CRYPTO_Type *base, + uint32_t *crc, + void const *data, + uint32_t dataSize, + uint32_t lfsrInitState); + +/** +* \addtogroup group_crypto_lld_crc_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_Init +****************************************************************************//** +* +* Initializes the CRC calculation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param polynomial +* The polynomial (specified using 32 bits) used in the computing CRC. +* +* \param dataReverse +* The order in which data bytes are processed. 0 - MSB first; 1- LSB first. +* +* \param dataXor +* The byte mask for XORing data. +* +* \param remReverse +* A remainder reverse: 0 means the remainder is not reversed. 1 means reversed. +* +* \param remXor +* Specifies the mask with which the LFSR32 register is XORed to produce a remainder. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_Init(CRYPTO_Type *base, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_Init(base, polynomial, dataReverse, dataXor, remReverse, remXor); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_Init(base, polynomial, dataReverse, dataXor, remReverse, remXor); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc +****************************************************************************//** +* +* Performs the CRC calculation on a message. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param crc +* The pointer to a computed CRC value. Must be 4-byte aligned. +* +* \param data +* The pointer to the message whose CRC is being computed. +* +* \param dataSize +* The size of a message in bytes. +* +* \param lfsrInitState +* The initial state of the LFSR. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc(CRYPTO_Type *base, + uint32_t *crc, + void const *data, + uint32_t dataSize, + uint32_t lfsrInitState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc(base, crc, data, dataSize, lfsrInitState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc(base, crc, data, dataSize, lfsrInitState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_CalcInit +****************************************************************************//** +* +* Initializes the CRC calculation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param width +* The CRC width in bits. +* +* \param polynomial +* The polynomial (specified using 32 bits) used in the computing CRC. +* +* \param dataReverse +* The order in which data bytes are processed. 0 - MSB first; 1 - LSB first. +* +* \param dataXor +* The byte mask for XORing data +* +* \param remReverse +* A remainder reverse: 0 means the remainder is not reversed. 1 means reversed. +* +* \param remXor +* Specifies the mask with which the LFSR32 register is XORed to produce a remainder. +* +* \param lfsrInitState +* The initial state of the LFSR. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_CalcInit(CRYPTO_Type *base, + uint32_t width, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor, + uint32_t lfsrInitState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_CalcInit(base, width, polynomial, dataReverse, dataXor, + remReverse, remXor, lfsrInitState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_CalcInit(base, width, polynomial, dataReverse, dataXor, + remReverse, remXor, lfsrInitState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_CalcStart +****************************************************************************//** +* +* Prepares the CRC calculation by setting an initial seed value. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param width +* The CRC width in bits. +* +* \param lfsrInitState +* The initial state of the LFSR. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_CalcStart(CRYPTO_Type *base, + uint32_t width, uint32_t lfsrInitState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_CalcStart(base, width, lfsrInitState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_CalcStart(base, width, lfsrInitState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_CalcPartial +****************************************************************************//** +* +* Performs the CRC calculation of a message part. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param data +* The pointer to the message whose CRC is being computed. +* +* \param dataSize +* The size of a message in bytes. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_CalcPartial(CRYPTO_Type *base, + void const *data, uint32_t dataSize) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_CalcPartial(base, data, dataSize); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_CalcPartial(base, data, dataSize); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_CalcFinish +****************************************************************************//** +* +* Finalizes the CRC calculation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param width +* The CRC width in bits. +* +* \param crc +* The pointer to a computed CRC value. Must be 4-byte aligned. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_CalcFinish(CRYPTO_Type *base, uint32_t width, uint32_t *crc) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_CalcFinish(base, width, crc); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_CalcFinish(base, width, crc); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Crc_Calc +****************************************************************************//** +* +* Performs the CRC calculation on a message. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param width +* The CRC width in bits. +* +* \param crc +* The pointer to a computed CRC value. Must be 4-byte aligned. +* +* \param data +* The pointer to the message whose CRC is being computed. +* +* \param dataSize +* The size of a message in bytes. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Crc_Calc(CRYPTO_Type *base, + uint32_t width, uint32_t *crc, + void const *data, uint32_t dataSize) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Crc_Calc(base, width, crc, data, dataSize); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Crc_Calc(base, width, crc, data, dataSize); + } + + return tmpResult; +} + +/** \} group_crypto_lld_crc_functions */ + +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CRC_H) */ + + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v1.h new file mode 100644 index 00000000000..f9f17ec657a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v1.h @@ -0,0 +1,81 @@ +/***************************************************************************//** +* \file cy_crypto_core_crc_v1.h +* \version 2.20 +* +* \brief +* This file provides the headers for CRC API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CRC_V1_H) +#define CY_CRYPTO_CORE_CRC_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_CRC == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_Init(CRYPTO_Type *base, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc(CRYPTO_Type *base, + uint32_t *crc, + void const *data, + uint32_t dataSize, + uint32_t lfsrInitState); + +/* The new partial calculation interface. */ +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_CalcInit(CRYPTO_Type *base, + uint32_t width, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor, + uint32_t lfsrInitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_CalcStart(CRYPTO_Type *base, uint32_t width, uint32_t lfsrInitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_CalcPartial(CRYPTO_Type *base, void const *data, uint32_t dataSize); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_CalcFinish(CRYPTO_Type *base, uint32_t width, uint32_t *crc); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Crc_Calc(CRYPTO_Type *base, + uint32_t width, + uint32_t *crc, + void const *data, + uint32_t dataSize); + +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CRC_V1_H) */ + + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v2.h new file mode 100644 index 00000000000..58c4b7de929 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_crc_v2.h @@ -0,0 +1,81 @@ +/***************************************************************************//** +* \file cy_crypto_core_crc_v2.h +* \version 2.20 +* +* \brief +* This file provides the headers for CRC API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_CRC_V2_H) +#define CY_CRYPTO_CORE_CRC_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_CRC == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_Init(CRYPTO_Type *base, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc(CRYPTO_Type *base, + uint32_t *crc, + void const *data, + uint32_t dataSize, + uint32_t lfsrInitState); + +/* The new partial calculation interface. */ +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_CalcInit(CRYPTO_Type *base, + uint32_t width, + uint32_t polynomial, + uint32_t dataReverse, + uint32_t dataXor, + uint32_t remReverse, + uint32_t remXor, + uint32_t lfsrInitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_CalcStart(CRYPTO_Type *base, uint32_t width, uint32_t lfsrInitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_CalcPartial(CRYPTO_Type *base, void const *data, uint32_t dataSize); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_CalcFinish(CRYPTO_Type *base, uint32_t width, uint32_t *crc); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Crc_Calc(CRYPTO_Type *base, + uint32_t width, + uint32_t *crc, + void const *data, + uint32_t dataSize); + +#endif /* #if (CPUSS_CRYPTO_CRC == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_CRC_V2_H) */ + + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des.h new file mode 100644 index 00000000000..4acf65c0ad1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des.h @@ -0,0 +1,156 @@ +/***************************************************************************//** +* \file cy_crypto_core_des.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the DES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_DES_H) +#define CY_CRYPTO_CORE_DES_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_DES == 1) + +#include "cy_crypto_core_des_v1.h" +#include "cy_crypto_core_des_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_des_func_t)(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src); + +/** +* \addtogroup group_crypto_lld_symmetric_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Des +****************************************************************************//** +* +* Performs the DES operation on a single block. All addresses must be 4-byte aligned. +* Ciphertext (dst) may overlap with plaintext (src). +* This function is independent from the previous Crypto state. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param key +* The pointer to the encryption/decryption key. +* +* \param dst +* The pointer to the destination cipher block. +* +* \param src +* The pointer to the source block. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Des(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Des(base, dirMode, key, dst, src); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Des(base, dirMode, key, dst, src); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Tdes +****************************************************************************//** +* +* Performs the TDES operation on a single block. All addresses must be 4-byte aligned. +* Ciphertext (dst) may overlap with plaintext (src). +* This function is independent from the previous Crypto state. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dirMode +* Can be \ref CY_CRYPTO_ENCRYPT or \ref CY_CRYPTO_DECRYPT +* (\ref cy_en_crypto_dir_mode_t) +* +* \param key +* The pointer to the encryption/decryption keys. +* +* \param dst +* The pointer to the destination cipher block. +* +* \param src +* The pointer to the source data block. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Tdes(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Tdes(base, dirMode, key, dst, src); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Tdes(base, dirMode, key, dst, src); + } + + return tmpResult; +} + +/** \} group_crypto_lld_symmetric_functions */ + +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_DES_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v1.h new file mode 100644 index 00000000000..91dbf35e02d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v1.h @@ -0,0 +1,58 @@ +/***************************************************************************//** +* \file cy_crypto_core_des.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the DES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_DES_V1_H) +#define CY_CRYPTO_CORE_DES_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_DES == 1) + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Des(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Tdes(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src); + + +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_DES_V1_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v2.h new file mode 100644 index 00000000000..c34ed9122fd --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_des_v2.h @@ -0,0 +1,58 @@ +/***************************************************************************//** +* \file cy_crypto_core_des_v2.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the DES method +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_DES_V2_H) +#define CY_CRYPTO_CORE_DES_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_DES == 1) + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Des(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Tdes(CRYPTO_Type *base, + cy_en_crypto_dir_mode_t dirMode, + uint8_t const *key, + uint8_t *dst, + uint8_t const *src); + + +#endif /* #if (CPUSS_CRYPTO_DES == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_DES_V2_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc.h new file mode 100644 index 00000000000..fb98ccb4915 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc.h @@ -0,0 +1,200 @@ +/***************************************************************************//** +* \file cy_crypto_core_ecc.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the ECC +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_ECC_H) +#define CY_CRYPTO_CORE_ECC_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_VU == 1) + +/** +* \addtogroup group_crypto_lld_asymmetric_enums +* \{ +*/ + +/** List of supported elliptic curve IDs */ +typedef enum { + CY_CRYPTO_ECC_ECP_NONE = 0, + CY_CRYPTO_ECC_ECP_SECP192R1, + CY_CRYPTO_ECC_ECP_SECP224R1, + CY_CRYPTO_ECC_ECP_SECP256R1, + CY_CRYPTO_ECC_ECP_SECP384R1, + CY_CRYPTO_ECC_ECP_SECP521R1, + /* Count of supported curves */ + CY_CRYPTO_ECC_ECP_CURVES_CNT +} cy_en_crypto_ecc_curve_id_t; + +/** \} group_crypto_lld_asymmetric_enums */ + +typedef enum cy_en_red_mul_algs { + CY_CRYPTO_NIST_P_CURVE_SPECIFIC_RED_ALG = 0, + CY_CRYPTO_NIST_P_SHIFT_MUL_RED_ALG, + CY_CRYPTO_NIST_P_BARRETT_RED_ALG +} cy_en_crypto_ecc_red_mul_algs_t; + +/** Structure defines a NIST GF(p) curve */ +typedef struct { + /** The curve ID */ + cy_en_crypto_ecc_curve_id_t id; + + /** The size of the curve in bits */ + uint32_t size; + + /** name of curve */ + const char_t *name; + + /** ECC calculation default algorithm */ + cy_en_crypto_ecc_red_mul_algs_t algo; + + /** The prime that defines the field the curve is in (encoded in hex) */ + const uint8_t *prime; + + /** Barrett coefficient for reduction modulo ECC prime (hex) */ + const uint8_t *barrett_p; + + /** The order of the curve (hex) */ + const uint8_t *order; + + /** Barrett coefficient for reduction modulo ECC order (hex) */ + const uint8_t *barrett_o; + + /** The x co-ordinate of the base point on the curve (hex) */ + const uint8_t *Gx; + + /** The y co-ordinate of the base point on the curve (hex) */ + const uint8_t *Gy; +} cy_stc_crypto_ecc_dp_type; + + +/** A point on a ECC curve */ +typedef struct { + /** The x co-ordinate */ + void *x; + /** The y co-ordinate */ + void *y; +} cy_stc_crypto_ecc_point; + +cy_stc_crypto_ecc_dp_type *Cy_Crypto_Core_ECC_GetCurveParams(cy_en_crypto_ecc_curve_id_t curveId); + + +typedef enum cy_en_crypto_ecc_key_type { + PK_PUBLIC = 0u, + PK_PRIVATE = 1u +} cy_en_crypto_ecc_key_type_t; + +/** An ECC key */ +typedef struct { + /** Type of key, PK_PRIVATE or PK_PUBLIC */ + cy_en_crypto_ecc_key_type_t type; + + /** pointer to domain parameters */ + + cy_en_crypto_ecc_curve_id_t curveID; + + /** The public key */ + cy_stc_crypto_ecc_point pubkey; + + /** The private key */ + void *k; +} cy_stc_crypto_ecc_key; + + +/** +* \addtogroup group_crypto_lld_asymmetric_functions +* \{ +*/ + +/** Pointer to a random number supplier function */ +typedef int (*cy_func_get_random_data_t)(void *rndInfo, uint8_t *rndData, size_t rndSize); + +cy_en_crypto_status_t Cy_Crypto_Core_ECC_MakeKeyPair(CRYPTO_Type *base, + cy_en_crypto_ecc_curve_id_t curveID, + cy_stc_crypto_ecc_key *key, + cy_func_get_random_data_t GetRandomDataFunc, void *randomDataInfo); +cy_en_crypto_status_t Cy_Crypto_Core_ECC_SignHash(CRYPTO_Type *base, + const uint8_t *hash, + uint32_t hashlen, + uint8_t *sig, + const cy_stc_crypto_ecc_key *key, + const uint8_t *messageKey); +cy_en_crypto_status_t Cy_Crypto_Core_ECC_VerifyHash(CRYPTO_Type *base, + const uint8_t *sig, + const uint8_t *hash, + uint32_t hashlen, + uint8_t *stat, + const cy_stc_crypto_ecc_key *key); +cy_en_crypto_status_t Cy_Crypto_Core_ECC_MakePrivateKey(CRYPTO_Type *base, + cy_en_crypto_ecc_curve_id_t curveID, uint8_t *key, + cy_func_get_random_data_t GetRandomDataFunc, void *randomDataInfo); +cy_en_crypto_status_t Cy_Crypto_Core_ECC_MakePublicKey(CRYPTO_Type *base, + cy_en_crypto_ecc_curve_id_t curveID, + const uint8_t *privateKey, + cy_stc_crypto_ecc_key *publicKey); + +/** \} group_crypto_lld_asymmetric_functions */ + +/** Calculates the actual size in bytes of the bits value */ +#define CY_CRYPTO_BYTE_SIZE_OF_BITS(x) (uint32_t)(((x) + 7u) >> 3u) + +/* Sizes for NIST P-curves */ +#define CY_CRYPTO_ECC_P192_SIZE (192u) /* 2^192 - 2^64 - 1 */ +#define CY_CRYPTO_ECC_P192_BYTE_SIZE CY_CRYPTO_BYTE_SIZE_OF_BITS(CY_CRYPTO_ECC_P192_SIZE) + +#define CY_CRYPTO_ECC_P224_SIZE (224u) /* 2^224 - 2^96 + 1 */ +#define CY_CRYPTO_ECC_P224_BYTE_SIZE CY_CRYPTO_BYTE_SIZE_OF_BITS(CY_CRYPTO_ECC_P224_SIZE) + +#define CY_CRYPTO_ECC_P256_SIZE (256u) /* 2^256 - 2^224 + 2^192 + 2^96 - 1 */ +#define CY_CRYPTO_ECC_P256_BYTE_SIZE CY_CRYPTO_BYTE_SIZE_OF_BITS(CY_CRYPTO_ECC_P256_SIZE) + +#define CY_CRYPTO_ECC_P384_SIZE (384u) /* 2^384 - 2^128 - 2^96 + 2^32 - 1 */ +#define CY_CRYPTO_ECC_P384_BYTE_SIZE CY_CRYPTO_BYTE_SIZE_OF_BITS(CY_CRYPTO_ECC_P384_SIZE) + +#define CY_CRYPTO_ECC_P521_SIZE (521u) /* 2^521 - 1 */ +#define CY_CRYPTO_ECC_P521_BYTE_SIZE CY_CRYPTO_BYTE_SIZE_OF_BITS(CY_CRYPTO_ECC_P521_SIZE) + +#define CY_CRYPTO_ECC_MAX_SIZE (CY_CRYPTO_ECC_P521_SIZE) +#define CY_CRYPTO_ECC_MAX_BYTE_SIZE (CY_CRYPTO_ECC_P521_BYTE_SIZE) + +/* "Global" vector unit registers. */ +#define VR_D 10u +#define VR_S_X 11u +#define VR_S_Y 12u +#define VR_BARRETT 13u +#define VR_P 14u /* polynomial */ + + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +#endif /* #if defined(CY_IP_MXCRYPTO) */ + +#endif /* CY_CRYPTO_CORE_ECC_H */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc_nist_p.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc_nist_p.h new file mode 100644 index 00000000000..33e5b3a8247 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_ecc_nist_p.h @@ -0,0 +1,77 @@ +/***************************************************************************//** +* \file cy_crypto_core_ecc_nist_p.h +* \version 2.20 +* +* \brief +* This file provides constant and parameters for the API for the ECC +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_NIST_P_H) +#define CY_CRYPTO_CORE_NIST_P_H + +#include "cy_crypto_core_ecc.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_VU == 1) + +void Cy_Crypto_Core_EC_NistP_SetMode(uint32_t bitsize); +void Cy_Crypto_Core_EC_NistP_SetRedAlg(cy_en_crypto_ecc_red_mul_algs_t alg); + +/** +* \addtogroup group_crypto_lld_asymmetric_functions +* \{ +*/ +cy_en_crypto_status_t Cy_Crypto_Core_EC_NistP_PointMultiplication(CRYPTO_Type *base, + cy_en_crypto_ecc_curve_id_t curveID, + const uint8_t *ecpGX, + const uint8_t *ecpGY, + const uint8_t *ecpD, + uint8_t *ecpQX, + uint8_t *ecpQY); +/** \} group_crypto_lld_asymmetric_functions */ + +void Cy_Crypto_Core_EC_MulMod( CRYPTO_Type *base, uint32_t z, uint32_t a, uint32_t b, uint32_t size); +void Cy_Crypto_Core_EC_DivMod( CRYPTO_Type *base, uint32_t z, uint32_t a, uint32_t b, uint32_t size); +void Cy_Crypto_Core_EC_SquareMod( CRYPTO_Type *base, uint32_t z, uint32_t a, uint32_t size); +void Cy_Crypto_Core_EC_Bar_MulRed(CRYPTO_Type *base, uint32_t z, uint32_t x, uint32_t size); + +void Cy_Crypto_Core_EC_AddMod( CRYPTO_Type *base, uint32_t z, uint32_t a, uint32_t b); +void Cy_Crypto_Core_EC_SubMod( CRYPTO_Type *base, uint32_t z, uint32_t a, uint32_t b); +void Cy_Crypto_Core_EC_HalfMod( CRYPTO_Type *base, uint32_t z, uint32_t a); + +void Cy_Crypto_Core_JacobianEcAdd(CRYPTO_Type *base, uint32_t s_x, uint32_t s_y, uint32_t s_z, uint32_t t_x, uint32_t t_y, uint32_t size); +void Cy_Crypto_Core_JacobianEcDouble(CRYPTO_Type *base, uint32_t s_x, uint32_t s_y, uint32_t s_z, uint32_t size); +void Cy_Crypto_Core_JacobianEcScalarMul(CRYPTO_Type *base, uint32_t s_x, uint32_t s_y, uint32_t d, uint32_t size); + +void Cy_Crypto_Core_JacobianTransform(CRYPTO_Type *base, uint32_t s_x, uint32_t s_y, uint32_t s_z); +void Cy_Crypto_Core_JacobianInvTransform(CRYPTO_Type *base, uint32_t s_x, uint32_t s_y, uint32_t s_z, uint32_t size); + +void Cy_Crypto_Core_EC_NistP_PointMul(CRYPTO_Type *base, uint32_t p_x, uint32_t p_y, uint32_t p_d, uint32_t p_order, uint32_t bitsize); + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +#endif /* #if defined(CY_IP_MXCRYPTO) */ + +#endif /* #if !defined(CY_CRYPTO_CORE_NIST_P_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac.h new file mode 100644 index 00000000000..d920990cf94 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac.h @@ -0,0 +1,114 @@ +/***************************************************************************//** +* \file cy_crypto_core_hmac.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the HMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HMAC_H) +#define CY_CRYPTO_CORE_HMAC_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + +#include "cy_crypto_core_hmac_v1.h" +#include "cy_crypto_core_hmac_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_hmac_func_t)(CRYPTO_Type *base, + uint8_t *hmac, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + uint32_t keyLength, + cy_en_crypto_sha_mode_t mode); + +/** +* \addtogroup group_crypto_lld_mac_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Hmac +****************************************************************************//** +* +* Performs the HMAC calculation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param hmac +* The pointer to the calculated HMAC. Must be 4-byte aligned. +* +* \param message +* The pointer to the message whose hash value is being computed. +* +* \param messageSize +* The size of the message. +* +* \param key +* The pointer to the key. +* +* \param keyLength +* The length of the key. +* +* \param mode +* \ref cy_en_crypto_sha_mode_t +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Hmac(CRYPTO_Type *base, + uint8_t *hmac, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + uint32_t keyLength, + cy_en_crypto_sha_mode_t mode) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Hmac(base, hmac, message, messageSize, key, keyLength, mode); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Hmac(base, hmac, message, messageSize, key, keyLength, mode); + } + + return tmpResult; +} + +/** \} group_crypto_lld_mac_functions */ + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HMAC_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v1.h new file mode 100644 index 00000000000..7b24e9eb4cb --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v1.h @@ -0,0 +1,54 @@ +/***************************************************************************//** +* \file cy_crypto_core_hmac_v1.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the HMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HMAC_V1_H) +#define CY_CRYPTO_CORE_HMAC_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Hmac(CRYPTO_Type *base, + uint8_t *hmac, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + uint32_t keyLength, + cy_en_crypto_sha_mode_t mode); + + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HMAC_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v2.h new file mode 100644 index 00000000000..5c34c14cc3e --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hmac_v2.h @@ -0,0 +1,54 @@ +/***************************************************************************//** +* \file cy_crypto_core_hmac_v2.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the HMAC method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HMAC_V2_H) +#define CY_CRYPTO_CORE_HMAC_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Hmac(CRYPTO_Type *base, + uint8_t *hmac, + uint8_t const *message, + uint32_t messageSize, + uint8_t const *key, + uint32_t keyLength, + cy_en_crypto_sha_mode_t mode); + + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HMAC_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw.h new file mode 100644 index 00000000000..ff2ddf9c86a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw.h @@ -0,0 +1,451 @@ +/***************************************************************************//** +* \file cy_crypto_core_hw.h +* \version 2.20 +* +* \brief +* This file provides the headers to the API for the utils +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HW_H) +#define CY_CRYPTO_CORE_HW_H + +#include "cy_device_headers.h" +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#include "cy_device.h" +#include "ip/cyip_crypto.h" +#include "ip/cyip_crypto_v2.h" + +/** \cond INTERNAL */ + +/******************************************************************************* +* CRYPTO +*******************************************************************************/ +/* Non-changed registers */ +#define REG_CRYPTO_CTL(base) (((CRYPTO_V1_Type*)(base))->CTL) +#define REG_CRYPTO_ERROR_STATUS0(base) (((CRYPTO_V1_Type*)(base))->ERROR_STATUS0) +#define REG_CRYPTO_ERROR_STATUS1(base) (((CRYPTO_V1_Type*)(base))->ERROR_STATUS1) +#define REG_CRYPTO_PR_LFSR_CTL0(base) (((CRYPTO_V1_Type*)(base))->PR_LFSR_CTL0) +#define REG_CRYPTO_PR_LFSR_CTL1(base) (((CRYPTO_V1_Type*)(base))->PR_LFSR_CTL1) +#define REG_CRYPTO_PR_LFSR_CTL2(base) (((CRYPTO_V1_Type*)(base))->PR_LFSR_CTL2) +#define REG_CRYPTO_TR_CTL0(base) (((CRYPTO_V1_Type*)(base))->TR_CTL0) +#define REG_CRYPTO_TR_CTL1(base) (((CRYPTO_V1_Type*)(base))->TR_CTL1) +#define REG_CRYPTO_TR_GARO_CTL(base) (((CRYPTO_V1_Type*)(base))->TR_GARO_CTL) +#define REG_CRYPTO_TR_FIRO_CTL(base) (((CRYPTO_V1_Type*)(base))->TR_FIRO_CTL) +#define REG_CRYPTO_TR_MON_CTL(base) (((CRYPTO_V1_Type*)(base))->TR_MON_CTL) +#define REG_CRYPTO_TR_MON_CMD(base) (((CRYPTO_V1_Type*)(base))->TR_MON_CMD) +#define REG_CRYPTO_TR_MON_RC_CTL(base) (((CRYPTO_V1_Type*)(base))->TR_MON_RC_CTL) +#define REG_CRYPTO_TR_MON_AP_CTL(base) (((CRYPTO_V1_Type*)(base))->TR_MON_AP_CTL) + +/* Changed registers in the regmap */ +#define REG_CRYPTO_STATUS(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoStatusOffset)) +#define REG_CRYPTO_INSTR_FF_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoIstrFfCtlOffset)) +#define REG_CRYPTO_INSTR_FF_STATUS(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoInstrFfStatusOffset)) +#define REG_CRYPTO_INSTR_FF_WR(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoInstrFfWrOffset)) +#define REG_CRYPTO_AES_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoAesCtlOffset)) +#define REG_CRYPTO_PR_RESULT(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoPrResultOffset)) +#define REG_CRYPTO_TR_RESULT(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoTrResultOffset)) +#define REG_CRYPTO_CRC_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoCrcCtlOffset)) +#define REG_CRYPTO_CRC_DATA_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoCrcDataCtlOffset)) +#define REG_CRYPTO_CRC_POL_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoCrcPolCtlOffset)) +#define REG_CRYPTO_CRC_REM_CTL(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoCrcRemCtlOffset)) +#define REG_CRYPTO_CRC_REM_RESULT(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoCrcRemResultOffset)) +#define REG_CRYPTO_VU_CTL0(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoVuCtl0Offset)) +#define REG_CRYPTO_VU_CTL1(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoVuCtl1Offset)) +#define REG_CRYPTO_VU_STATUS(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoVuStatusOffset)) +#define REG_CRYPTO_INTR(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoIntrOffset)) +#define REG_CRYPTO_INTR_SET(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoIntrSetOffset)) +#define REG_CRYPTO_INTR_MASK(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoIntrMaskOffset)) +#define REG_CRYPTO_INTR_MASKED(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoIntrMaskedOffset)) +#define REG_CRYPTO_VU_RF_DATA(base, reg) ( (volatile uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoVuRfDataOffset))[(reg)] +#define REG_CRYPTO_MEM_BUFF(base) ( (uint32_t*)((uint32_t)(base) + cy_cryptoIP->cryptoMemBufOffset)) + +/* Old V1 registers in the regmap */ +#define REG_CRYPTO_RAM_PWRUP_DELAY(base) (((CRYPTO_V1_Type*)(base))->RAM_PWRUP_DELAY) +#define REG_CRYPTO_STR_RESULT(base) (((CRYPTO_V1_Type*)(base))->STR_RESULT) +#define REG_CRYPTO_SHA_CTL(base) (((CRYPTO_V1_Type*)(base))->SHA_CTL) +#define REG_CRYPTO_CRC_LFSR_CTL(base) (((CRYPTO_V1_Type*)(base))->CRC_LFSR_CTL) + +/* New V2 registers in the regmap */ +#define REG_CRYPTO_RAM_PWR_CTL(base) (((CRYPTO_V2_Type*)(base))->RAM_PWR_CTL) +#define REG_CRYPTO_RAM_PWR_DELAY_CTL(base) (((CRYPTO_V2_Type*)(base))->RAM_PWR_DELAY_CTL) +#define REG_CRYPTO_ECC_CTL(base) (((CRYPTO_V2_Type*)(base))->ECC_CTL) +#define REG_CRYPTO_PR_MAX_CTL(base) (((CRYPTO_V2_Type*)(base))->PR_MAX_CTL) +#define REG_CRYPTO_PR_CMD(base) (((CRYPTO_V2_Type*)(base))->PR_CMD) +#define REG_CRYPTO_TR_CTL2(base) (((CRYPTO_V2_Type*)(base))->TR_CTL2) +#define REG_CRYPTO_TR_STATUS(base) (((CRYPTO_V2_Type*)(base))->TR_STATUS) +#define REG_CRYPTO_TR_CMD(base) (((CRYPTO_V2_Type*)(base))->TR_CMD) +#define REG_CRYPTO_LOAD0_FF_STATUS(base) (((CRYPTO_V2_Type*)(base))->LOAD0_FF_STATUS) +#define REG_CRYPTO_LOAD1_FF_STATUS(base) (((CRYPTO_V2_Type*)(base))->LOAD1_FF_STATUS) +#define REG_CRYPTO_STORE_FF_STATUS(base) (((CRYPTO_V2_Type*)(base))->STORE_FF_STATUS) +#define REG_CRYPTO_RESULT(base) (((CRYPTO_V2_Type*)(base))->RESULT) +#define REG_CRYPTO_VU_CTL2(base) (((CRYPTO_V2_Type*)(base))->VU_CTL2) +#define REG_CRYPTO_DEV_KEY_ADDR0_CTL(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_ADDR0_CTL) +#define REG_CRYPTO_DEV_KEY_ADDR0(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_ADDR0) +#define REG_CRYPTO_DEV_KEY_ADDR1_CTL(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_ADDR1_CTL) +#define REG_CRYPTO_DEV_KEY_ADDR1(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_ADDR1) +#define REG_CRYPTO_DEV_KEY_STATUS(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_STATUS) +#define REG_CRYPTO_DEV_KEY_CTL0(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_CTL0) +#define REG_CRYPTO_DEV_KEY_CTL1(base) (((CRYPTO_V2_Type*)(base))->DEV_KEY_CTL1) + +/* The CRYPTO internal-memory buffer-size in bytes. */ +#define CY_CRYPTO_MEM_BUFF_SIZE ((cy_device->cryptoMemSize) * 4u) +/* The CRYPTO internal-memory buffer-size in 32-bit words. */ +#define CY_CRYPTO_MEM_BUFF_SIZE_U32 (cy_device->cryptoMemSize) + +/* Device Crypto IP descriptor type */ +typedef struct +{ + /* CRYPTO register offsets */ + uint32_t cryptoStatusOffset; + uint32_t cryptoIstrFfCtlOffset; + uint32_t cryptoInstrFfStatusOffset; + uint32_t cryptoInstrFfWrOffset; + uint32_t cryptoVuRfDataOffset; + uint32_t cryptoAesCtlOffset; + uint32_t cryptoPrResultOffset; + uint32_t cryptoTrResultOffset; + uint32_t cryptoCrcCtlOffset; + uint32_t cryptoCrcDataCtlOffset; + uint32_t cryptoCrcPolCtlOffset; + uint32_t cryptoCrcRemCtlOffset; + uint32_t cryptoCrcRemResultOffset; + uint32_t cryptoVuCtl0Offset; + uint32_t cryptoVuCtl1Offset; + uint32_t cryptoVuStatusOffset; + uint32_t cryptoIntrOffset; + uint32_t cryptoIntrSetOffset; + uint32_t cryptoIntrMaskOffset; + uint32_t cryptoIntrMaskedOffset; + uint32_t cryptoMemBufOffset; +} cy_stc_cryptoIP_t; + +/******************************************************************************* +* Global Variables +*******************************************************************************/ + +extern const cy_stc_cryptoIP_t cy_cryptoIpBlockCfgPSoC6_01; +extern const cy_stc_cryptoIP_t cy_cryptoIpBlockCfgPSoC6_02; +extern const cy_stc_cryptoIP_t *cy_cryptoIP; + +#define CY_CRYPTO_REGFILE_R0 (0x00u) +#define CY_CRYPTO_REGFILE_R1 (0x01u) +#define CY_CRYPTO_REGFILE_R2 (0x02u) +#define CY_CRYPTO_REGFILE_R3 (0x03u) +#define CY_CRYPTO_REGFILE_R4 (0x04u) +#define CY_CRYPTO_REGFILE_R5 (0x05u) +#define CY_CRYPTO_REGFILE_R6 (0x06u) +#define CY_CRYPTO_REGFILE_R7 (0x07u) +#define CY_CRYPTO_REGFILE_R8 (0x08u) +#define CY_CRYPTO_REGFILE_R9 (0x09u) +#define CY_CRYPTO_REGFILE_R10 (0x0Au) +#define CY_CRYPTO_REGFILE_R11 (0x0Bu) +#define CY_CRYPTO_REGFILE_R12 (0x0Cu) +#define CY_CRYPTO_REGFILE_R13 (0x0Du) +#define CY_CRYPTO_REGFILE_R14 (0x0Eu) +#define CY_CRYPTO_REGFILE_R15 (0x0Fu) + +#define CY_CRYPTO_RSRC0_SHIFT (0u) +#define CY_CRYPTO_RSRC4_SHIFT (4u) +#define CY_CRYPTO_RSRC8_SHIFT (8u) +#define CY_CRYPTO_RSRC12_SHIFT (12u) +#define CY_CRYPTO_RSRC13_SHIFT (13u) +#define CY_CRYPTO_RSRC16_SHIFT (16u) +#define CY_CRYPTO_RSRC20_SHIFT (20u) +#define CY_CRYPTO_RSRC23_SHIFT (23u) +#define CY_CRYPTO_RSRC26_SHIFT (26u) +#define CY_CRYPTO_RSRC30_SHIFT (30u) + +#define CY_CRYPTO_OPCODE_POS (24u) + +/* Define bit mask for all errors interrupt sources */ +#define CY_CRYPTO_INTR_ERROR_MASK ((uint32_t)(CRYPTO_INTR_INSTR_OPC_ERROR_Msk | \ + CRYPTO_INTR_INSTR_CC_ERROR_Msk | \ + CRYPTO_INTR_BUS_ERROR_Msk | \ + CRYPTO_INTR_TR_AP_DETECT_ERROR_Msk | \ + CRYPTO_INTR_TR_RC_DETECT_ERROR_Msk)) + +/* Define bit mask for all errors interrupt sources for interrupt setting register */ +#define CY_CRYPTO_INTR_SET_ERROR_MASK ((uint32_t)(CRYPTO_INTR_SET_INSTR_OPC_ERROR_Msk | \ + CRYPTO_INTR_SET_INSTR_CC_ERROR_Msk | \ + CRYPTO_INTR_SET_BUS_ERROR_Msk | \ + CRYPTO_INTR_SET_TR_AP_DETECT_ERROR_Msk | \ + CRYPTO_INTR_SET_TR_RC_DETECT_ERROR_Msk)) + +/* Define bit mask for all errors interrupt sources for interrupt masking register */ +#define CY_CRYPTO_INTR_MASK_ERROR_MASK ((uint32_t)(CRYPTO_INTR_MASK_INSTR_OPC_ERROR_Msk | \ + CRYPTO_INTR_MASK_INSTR_CC_ERROR_Msk | \ + CRYPTO_INTR_MASK_BUS_ERROR_Msk | \ + CRYPTO_INTR_MASK_TR_AP_DETECT_ERROR_Msk | \ + CRYPTO_INTR_MASK_TR_RC_DETECT_ERROR_Msk)) + +/* Define bit mask for all errors interrupt sources for interrupt masked sources check */ +#define CY_CRYPTO_INTR_MASKED_ERROR_MASK ((uint32_t)(CRYPTO_INTR_MASKED_INSTR_OPC_ERROR_Msk | \ + CRYPTO_INTR_MASKED_INSTR_CC_ERROR_Msk | \ + CRYPTO_INTR_MASKED_BUS_ERROR_Msk | \ + CRYPTO_INTR_MASKED_TR_AP_DETECT_ERROR_Msk | \ + CRYPTO_INTR_MASKED_TR_RC_DETECT_ERROR_Msk)) + +#define CY_CRYPTO_V1_DATA_FIFODEPTH (8u) +#define CY_CRYPTO_V2_DATA_FIFODEPTH (16u) + +#define CY_CRYPTO_MIN(a,b) (((a) < (b)) ? (a) : (b)) +#define CY_CRYPTO_MAX(a,b) (((a) > (b)) ? (a) : (b)) + +typedef enum +{ + CY_CRYPTO_CTL_ENABLED_DISABLED = 0u, + CY_CRYPTO_CTL_ENABLED_ENABLED = 1u, +} cy_en_crypto_hw_enable_t; + +/** \endcond */ + +/** +* \addtogroup group_crypto_lld_hw_functions +* \{ +*/ + +void Cy_Crypto_Core_HwInit(void); + +cy_en_crypto_status_t Cy_Crypto_Core_Enable(CRYPTO_Type *base); + +cy_en_crypto_status_t Cy_Crypto_Core_Disable(CRYPTO_Type *base); + +cy_en_crypto_status_t Cy_Crypto_Core_GetLibInfo(cy_en_crypto_lib_info_t *libInfo); + +void Cy_Crypto_Core_ClearVuRegisters(CRYPTO_Type *base); + +void Cy_Crypto_Core_InvertEndianness(void *inArrPtr, uint32_t byteSize); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_IsEnabled +****************************************************************************//** +* +* The function checks whether the Crypto hardware is enabled. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \return +* Crypto status \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE bool Cy_Crypto_Core_IsEnabled(CRYPTO_Type *base) +{ + if (cy_cryptoIP == NULL) + { + Cy_Crypto_Core_HwInit(); + } + + return (1uL == (uint32_t)_FLD2VAL(CRYPTO_CTL_ENABLED, REG_CRYPTO_CTL(base))); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_GetFIFODepth +****************************************************************************//** +* +* Returns the total available number of instructions in the instruction FIFO. +* The value of this field ranges: +* - from 0 to 8 for MXCRYPTO_ver1 IP block and +* - from 0 to 16 for MXCRYPTO_ver2 IP block +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_Crypto_Core_GetFIFODepth(CRYPTO_Type *base) +{ + return (cy_device->cryptoVersion == 1u) ? (CY_CRYPTO_V1_DATA_FIFODEPTH) : (CY_CRYPTO_V2_DATA_FIFODEPTH); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_GetFIFOUsed +****************************************************************************//** +* +* Returns the number of instructions in the instruction FIFO. +* The value of this field ranges from 0 to 8 +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_Crypto_Core_GetFIFOUsed(CRYPTO_Type *base) +{ + return((uint8_t)_FLD2VAL(CRYPTO_INSTR_FF_STATUS_USED, REG_CRYPTO_INSTR_FF_STATUS(base))); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_WaitForFifoAvailable +*****************************************************************************//** +* +* Waits until number of entries in the instruction FIFO is less than +* specified in EVENT_LEVEL field in FF_CTL register, an event is generated: +* "event" = INSTR_FF_STATUS.USED < EVENT_LEVEL. +* By default EVENT_LEVEL = 0; +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_WaitForFifoAvailable(CRYPTO_Type *base) +{ + while((_FLD2VAL(CRYPTO_INSTR_FF_STATUS_EVENT, REG_CRYPTO_INSTR_FF_STATUS(base))) == 0u) + { + } +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_WaitForReady +*****************************************************************************//** +* +* Waits until all instruction in FIFO will be completed +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_WaitForReady(CRYPTO_Type *base) +{ + while(REG_CRYPTO_STATUS(base) != 0u) + { + } +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_SetInterruptMask +***************************************************************************//** +* +* Masks / unmasks multiple interrupt sources. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param interrupts +* Mask bits. See definitions above. +* +******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_SetInterruptMask(CRYPTO_Type *base, uint32_t interrupts) +{ + REG_CRYPTO_INTR_MASK(base) = interrupts; +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_GetInterruptMask +***************************************************************************//** +* +* Reports mask / unmask multiple interrupt sources. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \return +* Mask bits. See definitions above. +* +******************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_GetInterruptMask(CRYPTO_Type const *base) +{ + return (REG_CRYPTO_INTR_MASK(base)); +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_GetInterruptStatusMasked +***************************************************************************//** +* +* Reports states of multiple enabled interrupt sources. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \return +* Source bits. See definitions above. +* +*****************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_GetInterruptStatusMasked(CRYPTO_Type const *base) +{ + return (REG_CRYPTO_INTR_MASKED(base)); +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_GetInterruptStatus +***************************************************************************//** +* +* Reports states of multiple interrupt sources. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \return +* Source bits. See definitions above. +* +******************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_GetInterruptStatus(CRYPTO_Type *base) +{ + return (REG_CRYPTO_INTR(base)); +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_SetInterrupt +***************************************************************************//** +* +* Sets one of more interrupt sources +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param interrupts +* Source bit(s) +* +******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_SetInterrupt(CRYPTO_Type *base, uint32_t interrupts) +{ + REG_CRYPTO_INTR_SET(base) = interrupts; +} + +/****************************************************************************** +* Function Name: Cy_Crypto_Core_ClearInterrupt +***************************************************************************//** +* +* Clears multiple interrupt sources. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param interrupts +* Source bit(s). See definitions above. +* +******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_ClearInterrupt(CRYPTO_Type *base, uint32_t interrupts) +{ + REG_CRYPTO_INTR(base) = interrupts; + (void) REG_CRYPTO_INTR(base); +} + +/** \} group_crypto_lld_hw_functions */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HW_H) */ + + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v1.h new file mode 100644 index 00000000000..8ba1823b741 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v1.h @@ -0,0 +1,96 @@ +/***************************************************************************//** +* \file cy_crypto_core_hw_v1.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the Vector Unit functions in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HW_V1_H) +#define CY_CRYPTO_CORE_HW_V1_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#include "cy_crypto_core_hw.h" + +/******************************************************************************/ +#define CY_CRYPTO_V1_SET_REG1_OPC (0x40u) +#define CY_CRYPTO_V1_SET_REG2_OPC (0x41u) +#define CY_CRYPTO_V1_SET_REG3_OPC (0x42u) +#define CY_CRYPTO_V1_SET_REG4_OPC (0x43u) + +#define CY_CRYPTO_V1_AES_BLOCK_OPC (0x44u) +#define CY_CRYPTO_V1_AES_BLOCK_INV_OPC (0x45u) +#define CY_CRYPTO_V1_AES_KEY_OPC (0x46u) +#define CY_CRYPTO_V1_AES_KEY_INV_OPC (0x47u) +#define CY_CRYPTO_V1_AES_XOR_OPC (0x48u) + +#define CY_CRYPTO_V1_SHA_OPC (0x4cu) + +#define CY_CRYPTO_V1_STR_MEMCPY_OPC (0x50u) +#define CY_CRYPTO_V1_STR_MEMSET_OPC (0x51u) +#define CY_CRYPTO_V1_STR_MEMCMP_OPC (0x52u) +#define CY_CRYPTO_V1_STR_MEMXOR_OPC (0x53u) + +#define CY_CRYPTO_V1_CRC_OPC (0x58u) + +#define CY_CRYPTO_V1_PRNG_OPC (0x5cu) + +#define CY_CRYPTO_V1_TRNG_OPC (0x60u) + +#define CY_CRYPTO_V1_DES_BLOCK_OPC (0x70u) +#define CY_CRYPTO_V1_DES_BLOCK_INV_OPC (0x71u) + +#define CY_CRYPTO_V1_TDES_BLOCK_OPC (0x72u) +#define CY_CRYPTO_V1_TDES_BLOCK_INV_OPC (0x73u) + +#define CY_CRYPTO_V1_SYNC_OPC (0x7fu) + + +void Cy_Crypto_SetReg1Instr(CRYPTO_Type *base, uint32_t data0); + +void Cy_Crypto_SetReg2Instr(CRYPTO_Type *base, uint32_t data0, uint32_t data1); + +void Cy_Crypto_SetReg3Instr(CRYPTO_Type *base, uint32_t data0, uint32_t data1, uint32_t data2); + +void Cy_Crypto_SetReg4Instr(CRYPTO_Type *base, uint32_t data0, uint32_t data1, uint32_t data2, uint32_t data3); + +void Cy_Crypto_Run0ParamInstr(CRYPTO_Type *base, uint8_t instr); + +void Cy_Crypto_Run1ParamInstr(CRYPTO_Type *base, uint8_t instr, uint32_t rdst0Shift); + +void Cy_Crypto_Run2ParamInstr(CRYPTO_Type *base, uint8_t instr, uint32_t rdst0Shift, uint32_t rdst1Shift); + +void Cy_Crypto_Run3ParamInstr(CRYPTO_Type *base, uint8_t instr, + uint8_t rdst0Shift, uint8_t rdst1Shift, uint8_t rdst2Shift); + +void Cy_Crypto_Run4ParamInstr(CRYPTO_Type *base, uint8_t instr, + uint32_t rdst0Shift, uint32_t rdst1Shift, uint32_t rdst2Shift, uint32_t rdst3Shift); + + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HW_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v2.h new file mode 100644 index 00000000000..33eef6dad52 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_v2.h @@ -0,0 +1,372 @@ +/***************************************************************************//** +* \file cy_crypto_core_hw_v2.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the Vector Unit functions in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HW_V2_H) +#define CY_CRYPTO_CORE_HW_V2_H + +#include "cy_crypto_core_hw.h" + +#if defined(CY_IP_MXCRYPTO) + +/* + Register buffer block identifiers: + "0": block0[127:0] = reg_buff[0*128+127:0*128] + "1": block1[127:0] = reg_buff[1*128+127:1*128] + "2": block2[127:0] = reg_buff[2*128+127:2*128] + "3": block3[127:0] = reg_buff[3*128+127:3*128] + "4": block4[127:0] = reg_buff[4*128+127:4*128] + "5": block5[127:0] = reg_buff[5*128+127:5*128] + "6": block6[127:0] = reg_buff[6*128+127:6*128] + "7": block7[127:0] = reg_buff[7*128+127:7*128] + "8": load FIFO 0 + "9": load FIFO 1 + "12": store FIFO +*/ + +#define CY_CRYPTO_V2_RB_BLOCK0 (0u) +#define CY_CRYPTO_V2_RB_BLOCK1 (1u) +#define CY_CRYPTO_V2_RB_BLOCK2 (2u) +#define CY_CRYPTO_V2_RB_BLOCK3 (3u) +#define CY_CRYPTO_V2_RB_BLOCK4 (4u) +#define CY_CRYPTO_V2_RB_BLOCK5 (5u) +#define CY_CRYPTO_V2_RB_BLOCK6 (6u) +#define CY_CRYPTO_V2_RB_BLOCK7 (7u) + +#define CY_CRYPTO_V2_RB_FF_LOAD0 (8u) +#define CY_CRYPTO_V2_RB_FF_LOAD1 (9u) +#define CY_CRYPTO_V2_RB_FF_STORE (12u) + +#define CY_CRYPTO_V2_RB_KEY0 (CY_CRYPTO_V2_RB_BLOCK4) +#define CY_CRYPTO_V2_RB_KEY1 (CY_CRYPTO_V2_RB_BLOCK5) +#define CY_CRYPTO_V2_RB_KEY2 (CY_CRYPTO_V2_RB_BLOCK6) +#define CY_CRYPTO_V2_RB_KEY3 (CY_CRYPTO_V2_RB_BLOCK7) + +#define CY_CRYPTO_V2_FF_START_OPC (0x70u) +#define CY_CRYPTO_V2_FF_CONTINUE_OPC (0x71u) +#define CY_CRYPTO_V2_FF_STOP_OPC (0x72u) + +#define CY_CRYPTO_V2_RB_CLEAR_OPC (0x64u) +#define CY_CRYPTO_V2_RB_SWAP_OPC (0x65u) +#define CY_CRYPTO_V2_RB_XOR_OPC (0x66u) +#define CY_CRYPTO_V2_RB_STORE_OPC (0x67u) +#define CY_CRYPTO_V2_RB_BYTE_SET_OPC (0x68u) + +#define CY_CRYPTO_V2_BLOCK_MOV_OPC (0x40u) +#define CY_CRYPTO_V2_BLOCK_XOR_OPC (0x41u) +#define CY_CRYPTO_V2_BLOCK_SET_OPC (0x42u) +#define CY_CRYPTO_V2_BLOCK_CMP_OPC (0x43u) + +#define CY_CRYPTO_V2_BLOCK_GCM_OPC (0x57u) + +#define CY_CRYPTO_V2_AES_OPC (0x50u) +#define CY_CRYPTO_V2_AES_INV_OPC (0x51u) + +#define CY_CRYPTO_V2_CHACHA_OPC (0x56u) + +#define CY_CRYPTO_V2_SHA1_OPC (0x69u) +#define CY_CRYPTO_V2_SHA2_256_OPC (0x6au) +#define CY_CRYPTO_V2_SHA2_512_OPC (0x6bu) +#define CY_CRYPTO_V2_SHA3_OPC (0x6cu) + +#define CY_CRYPTO_V2_CRC_OPC (0x58u) + +#define CY_CRYPTO_V2_DES_OPC (0x52u) +#define CY_CRYPTO_V2_DES_INV_OPC (0x53u) +#define CY_CRYPTO_V2_TDES_OPC (0x54u) +#define CY_CRYPTO_V2_TDES_INV_OPC (0x55u) + +#define CY_CRYPTO_V2_SYNC_OPC (0x7fu) + +#define CY_CRYPTO_MERGE_BYTES(a, b, c, d) (uint32_t)( \ + (((uint32_t)((uint32_t)(a) & 0xffu)) << 24u) | \ + (((uint32_t)((uint32_t)(b) & 0xffu)) << 16u) | \ + (((uint32_t)((uint32_t)(c) & 0xffu)) << 8u) | \ + (((uint32_t)((uint32_t)(d) & 0xffu))) ) + +#define CY_CRYPTO_SEL_BYTE3(a) (((a) >> 24u) & 0xffu) +#define CY_CRYPTO_SEL_BYTE2(a) (((a) >> 16u) & 0xffu) +#define CY_CRYPTO_SEL_BYTE1(a) (((a) >> 8u) & 0xffu) +#define CY_CRYPTO_SEL_BYTE0(a) (((a) >> 0u) & 0xffu) + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFLoad0Sync(CRYPTO_Type *base) +{ + /* Wait until the FIFO_LOAD0 operations is complete */ + while (0uL != _FLD2VAL(CRYPTO_V2_LOAD0_FF_STATUS_BUSY, REG_CRYPTO_LOAD0_FF_STATUS(base))) + { + } +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFLoad1Sync(CRYPTO_Type *base) +{ + /* Wait until the FIFO_LOAD1 operations is complete */ + while (0uL != _FLD2VAL(CRYPTO_V2_LOAD1_FF_STATUS_BUSY, REG_CRYPTO_LOAD1_FF_STATUS(base))) + { + } +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFStoreSync(CRYPTO_Type *base) +{ + /* Wait until the FIFO_STORE operations is complete */ + while (0uL != _FLD2VAL(CRYPTO_V2_STORE_FF_STATUS_BUSY, REG_CRYPTO_STORE_FF_STATUS(base))) + { + } +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_Sync(CRYPTO_Type *base) +{ + /* Wait until the instruction is complete */ + while (0uL != (REG_CRYPTO_STATUS(base))) + { + } +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFStart(CRYPTO_Type *base, + uint32_t ff_idx, const uint8_t* p_mem, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 3u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = ((uint32_t)CY_CRYPTO_V2_FF_START_OPC << CY_CRYPTO_OPCODE_POS) | + (ff_idx << CY_CRYPTO_RSRC0_SHIFT); + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t) p_mem; + REG_CRYPTO_INSTR_FF_WR(base) = size; +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFContinue(CRYPTO_Type *base, + uint32_t ff_idx, const uint8_t* p_mem, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 3u)) + { + } + + /* Wait for previous loading has been completed. */ + (CY_CRYPTO_V2_RB_FF_LOAD0 == ff_idx) ? Cy_Crypto_Core_V2_FFLoad0Sync(base) : Cy_Crypto_Core_V2_FFLoad1Sync(base); + + REG_CRYPTO_INSTR_FF_WR(base) = ((uint32_t)CY_CRYPTO_V2_FF_CONTINUE_OPC << CY_CRYPTO_OPCODE_POS) | + (ff_idx << CY_CRYPTO_RSRC0_SHIFT); + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t) p_mem; + REG_CRYPTO_INSTR_FF_WR(base) = size; +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_FFStop(CRYPTO_Type *base, uint32_t ff_idx) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_FF_STOP_OPC << CY_CRYPTO_OPCODE_POS) | + (ff_idx << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockMov(CRYPTO_Type *base, + uint32_t dst_idx, uint32_t src_idx, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_BLOCK_MOV_OPC << CY_CRYPTO_OPCODE_POS) + | (size << CY_CRYPTO_RSRC16_SHIFT) + | (dst_idx << CY_CRYPTO_RSRC12_SHIFT) + | (src_idx << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockMov_Reflect(CRYPTO_Type *base, + uint32_t dst_idx, uint32_t src_idx, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_BLOCK_MOV_OPC << CY_CRYPTO_OPCODE_POS) + | (1UL << CY_CRYPTO_RSRC23_SHIFT) + | (size << CY_CRYPTO_RSRC16_SHIFT) + | (dst_idx << CY_CRYPTO_RSRC12_SHIFT) + | (src_idx << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockSet(CRYPTO_Type *base, + uint32_t dst_idx, uint8_t data, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_BLOCK_SET_OPC << CY_CRYPTO_OPCODE_POS) + | (size << CY_CRYPTO_RSRC16_SHIFT) + | (dst_idx << CY_CRYPTO_RSRC12_SHIFT) + | ((uint32_t)(data) << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockCmp(CRYPTO_Type *base, + uint32_t src0_idx, uint32_t src1_idx, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_BLOCK_CMP_OPC << CY_CRYPTO_OPCODE_POS) + | (size << CY_CRYPTO_RSRC16_SHIFT) + | (src1_idx << CY_CRYPTO_RSRC4_SHIFT) + | (src0_idx << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockXor(CRYPTO_Type *base, + uint32_t dst_idx, uint32_t src0_idx, uint32_t src1_idx, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_BLOCK_XOR_OPC << CY_CRYPTO_OPCODE_POS) + | (size << CY_CRYPTO_RSRC16_SHIFT) + | (dst_idx << CY_CRYPTO_RSRC12_SHIFT) + | (src1_idx << CY_CRYPTO_RSRC4_SHIFT) + | (src0_idx << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_BlockGcm(CRYPTO_Type *base) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((uint32_t)CY_CRYPTO_V2_BLOCK_GCM_OPC << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_Run(CRYPTO_Type *base, uint32_t opc) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((opc & 0xfful) << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RBClear(CRYPTO_Type *base) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((uint32_t)CY_CRYPTO_V2_RB_CLEAR_OPC << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RBSwap(CRYPTO_Type *base) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((uint32_t)CY_CRYPTO_V2_RB_SWAP_OPC << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RBXor(CRYPTO_Type *base, uint32_t offset, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_RB_XOR_OPC << CY_CRYPTO_OPCODE_POS) | + (offset << CY_CRYPTO_RSRC8_SHIFT) | + (size << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RBStore(CRYPTO_Type *base, uint32_t offset, uint32_t size) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_RB_STORE_OPC << CY_CRYPTO_OPCODE_POS) | + (offset << CY_CRYPTO_RSRC8_SHIFT) | + (size << CY_CRYPTO_RSRC0_SHIFT));} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RBSetByte(CRYPTO_Type *base, uint32_t offset, uint8_t byte) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_RB_BYTE_SET_OPC << CY_CRYPTO_OPCODE_POS) | + (offset << CY_CRYPTO_RSRC8_SHIFT) | + ((uint32_t)(byte) << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RunAes(CRYPTO_Type *base) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((uint32_t)CY_CRYPTO_V2_AES_OPC << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RunAesInv(CRYPTO_Type *base) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)((uint32_t)CY_CRYPTO_V2_AES_INV_OPC << CY_CRYPTO_OPCODE_POS); +} + +__STATIC_INLINE void Cy_Crypto_Core_V2_RunChacha(CRYPTO_Type *base, uint8_t roundNum) +{ + /* Check whether FIFO has enough space for 1 instruction */ + while(Cy_Crypto_Core_GetFIFOUsed(base) >= (CY_CRYPTO_V2_DATA_FIFODEPTH - 1u)) + { + } + + REG_CRYPTO_INSTR_FF_WR(base) = (uint32_t)(((uint32_t)CY_CRYPTO_V2_CHACHA_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)(roundNum) << CY_CRYPTO_RSRC0_SHIFT)); +} + + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_HW_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_vu.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_vu.h new file mode 100644 index 00000000000..77809824759 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_hw_vu.h @@ -0,0 +1,1047 @@ +/***************************************************************************//** +* file cy_crypto_core_hw_vu.h +* version 2.20 +* +* brief +* This file provides constants and function prototypes +* for the Vector Unit functions in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_HW_VU_H) +#define CY_CRYPTO_CORE_HW_VU_H + +#include "cy_device_headers.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_VU == 1) + +#include "cy_device.h" +#include "cy_crypto_core_hw.h" + +/*************************************** +* Crypto IP opcodes +***************************************/ + +#define CY_CRYPTO_VU_HW_REG0 (0u) +#define CY_CRYPTO_VU_HW_REG1 (1u) +#define CY_CRYPTO_VU_HW_REG2 (2u) +#define CY_CRYPTO_VU_HW_REG3 (3u) +#define CY_CRYPTO_VU_HW_REG4 (4u) +#define CY_CRYPTO_VU_HW_REG5 (5u) +#define CY_CRYPTO_VU_HW_REG6 (6u) +#define CY_CRYPTO_VU_HW_REG7 (7u) +#define CY_CRYPTO_VU_HW_REG8 (8u) +#define CY_CRYPTO_VU_HW_REG9 (9u) +#define CY_CRYPTO_VU_HW_REG10 (10u) +#define CY_CRYPTO_VU_HW_REG11 (11u) +#define CY_CRYPTO_VU_HW_REG12 (12u) +#define CY_CRYPTO_VU_HW_REG13 (13u) +#define CY_CRYPTO_VU_HW_REG14 (14u) +#define CY_CRYPTO_VU_HW_REG15 (15u) + +/* Crypto IP condition codes (vector unit) */ +#define CY_CRYPTO_VU_COND_ALWAYS (0x00u) +#define CY_CRYPTO_VU_COND_EQ (0x01u) +#define CY_CRYPTO_VU_COND_NE (0x02u) +#define CY_CRYPTO_VU_COND_CS (0x03u) +#define CY_CRYPTO_VU_COND_CC (0x04u) +#define CY_CRYPTO_VU_COND_HI (0x05u) +#define CY_CRYPTO_VU_COND_LS (0x06u) +#define CY_CRYPTO_VU_COND_EVEN (0x07u) +#define CY_CRYPTO_VU_COND_ODD (0x08u) +#define CY_CRYPTO_VU_COND_MASK (0x1FFu) + +/* Crypto IP status (vector unit) */ +#define CY_CRYPTO_VU_STATUS_CARRY (0u) +#define CY_CRYPTO_VU_STATUS_EVEN (1u) +#define CY_CRYPTO_VU_STATUS_ZERO (2u) +#define CY_CRYPTO_VU_STATUS_ONE (3u) +#define CY_CRYPTO_VU_STATUS_CARRY_BIT (uint32_t)(((uint32_t)1u) << CY_CRYPTO_VU_STATUS_CARRY) +#define CY_CRYPTO_VU_STATUS_EVEN_BIT (uint32_t)(((uint32_t)1u) << CY_CRYPTO_VU_STATUS_EVEN) +#define CY_CRYPTO_VU_STATUS_ZERO_BIT (uint32_t)(((uint32_t)1u) << CY_CRYPTO_VU_STATUS_ZERO) +#define CY_CRYPTO_VU_STATUS_ONE_BIT (uint32_t)(((uint32_t)1u) << CY_CRYPTO_VU_STATUS_ONE) +#define CY_CRYPTO_VU_STATUS_MASK (uint32_t)(CY_CRYPTO_VU_STATUS_CARRY_BIT | CY_CRYPTO_VU_STATUS_EVEN_BIT \ + CY_CRYPTO_VU_STATUS_ZERO_BIT | CY_CRYPTO_VU_STATUS_ONE_BIT) + +#define CY_CRYPTO_VU_REG_BIT(nreg) (((uint32_t)1u) << (nreg)) + +/* Crypto registers field processing (vector unit) */ +#define CY_CRYPTO_VU_GET_REG_DATA(data) (((data) >> 16U) & 0x00003fffUL) +#define CY_CRYPTO_VU_GET_REG_SIZE(data) ((data) & 0x00000fffUL) + +/* Vector Unit instructions */ +#define CY_CRYPTO_VU_ALLOC_MEM_OPC (0x12u) +#define CY_CRYPTO_VU_FREE_MEM_OPC (0x13u) + +/* Instructions with register operand only, category I */ +#define CY_CRYPTO_VU_SET_REG_OPC (0x80u) + +#define CY_CRYPTO_VU_LD_REG_OPC (0x00u) +#define CY_CRYPTO_VU_ST_REG_OPC (0x01u) +#define CY_CRYPTO_VU_MOV_REG_OPC (0x02u) + +/* Instructions with register operand only, category III */ +#define CY_CRYPTO_VU_SWAP_REG_OPC (0x03u) + +/* Instructions with register operand only, category IV */ +#define CY_CRYPTO_VU_MOV_REG_TO_STATUS_OPC (0x04u) + +/* Instructions with register operand only, category V */ +#define CY_CRYPTO_VU_MOV_STATUS_TO_REG_OPC (0x05u) + +#define CY_CRYPTO_VU2_MOV_IMM_TO_STATUS (0x0Fu) + +/* Instructions with register operand only, category VI */ +#define CY_CRYPTO_VU_PUSH_REG_OPC (0x10u) +#define CY_CRYPTO_VU_POP_REG_OPC (0x11u) + +/* Instructions with register operand only, category VII */ +#define CY_CRYPTO_VU_ADD_REG_OPC (0x06u) +#define CY_CRYPTO_VU_SUB_REG_OPC (0x07u) +#define CY_CRYPTO_VU_OR_REG_OPC (0x08u) +#define CY_CRYPTO_VU_AND_REG_OPC (0x09u) +#define CY_CRYPTO_VU_XOR_REG_OPC (0x0Au) +#define CY_CRYPTO_VU_NOR_REG_OPC (0x0Bu) +#define CY_CRYPTO_VU_NAND_REG_OPC (0x0Cu) +#define CY_CRYPTO_VU_MIN_REG_OPC (0x0Du) +#define CY_CRYPTO_VU_MAX_REG_OPC (0x0Eu) + +/* Instructions with mixed operands, category I */ +#define CY_CRYPTO_VU_LSL_OPC (0x20u) +#define CY_CRYPTO_VU1_LSR_OPC (0x24u) +#define CY_CRYPTO_VU2_LSR_OPC (0x23u) + +/* Instructions with mixed operands, category II */ +#define CY_CRYPTO_VU_LSL1_OPC (0x21u) +#define CY_CRYPTO_VU_LSL1_WITH_CARRY_OPC (0x22u) + +#define CY_CRYPTO_VU1_LSR1_OPC (0x25u) +#define CY_CRYPTO_VU1_LSR1_WITH_CARRY_OPC (0x26u) +#define CY_CRYPTO_VU2_LSR1_OPC (0x24u) +#define CY_CRYPTO_VU2_LSR1_WITH_CARRY_OPC (0x25u) + +/* Instructions with mixed operands, category III */ +#define CY_CRYPTO_VU1_SET_BIT_OPC (0x2Cu) +#define CY_CRYPTO_VU1_CLR_BIT_OPC (0x2Du) +#define CY_CRYPTO_VU1_INV_BIT_OPC (0x2Eu) + +#define CY_CRYPTO_VU2_SET_BIT_OPC (0x28u) +#define CY_CRYPTO_VU2_CLR_BIT_OPC (0x29u) +#define CY_CRYPTO_VU2_INV_BIT_OPC (0x2Au) + +/* Instructions with mixed operands, category IV */ +#define CY_CRYPTO_VU1_GET_BIT_OPC (0x2Fu) +#define CY_CRYPTO_VU2_GET_BIT_OPC (0x2Bu) + +/* Instructions with mixed operands, category V */ +#define CY_CRYPTO_VU1_CLSAME_OPC (0x28u) +#define CY_CRYPTO_VU1_CTSAME_OPC (0x29u) + +#define CY_CRYPTO_VU2_CLSAME_OPC (0x26u) +#define CY_CRYPTO_VU2_CTSAME_OPC (0x27u) + +/* Instructions with memory buffer operands, category I */ +#define CY_CRYPTO_VU_SET_TO_ZERO_OPC (0x34u) +#define CY_CRYPTO_VU_SET_TO_ONE_OPC (0x35u) + +/* Instructions with memory buffer operands, category II */ +#define CY_CRYPTO_VU_MOV_OPC (0x30u) +#define CY_CRYPTO_VU_XSQUARE_OPC (0x31u) +#define CY_CRYPTO_VU2_USQUARE_OPC (0x2Fu) + +/* Instructions with memory buffer operands, category III */ +#define CY_CRYPTO_VU_CMP_SUB_OPC (0x3Du) +#define CY_CRYPTO_VU_CMP_DEGREE_OPC (0x3Eu) + +/* Instructions with memory buffer operands, category IV */ +#define CY_CRYPTO_VU_TST_OPC (0x3fu) + +/* Instructions with memory buffer operands, category V */ +#define CY_CRYPTO_VU_XMUL_OPC (0x32u) +#define CY_CRYPTO_VU_UMUL_OPC (0x33u) +#define CY_CRYPTO_VU_ADD_OPC (0x36u) +#define CY_CRYPTO_VU_SUB_OPC (0x37u) +#define CY_CRYPTO_VU_OR_OPC (0x38u) +#define CY_CRYPTO_VU_AND_OPC (0x39u) +#define CY_CRYPTO_VU_XOR_OPC (0x3Au) +#define CY_CRYPTO_VU_NOR_OPC (0x3Bu) +#define CY_CRYPTO_VU_NAND_OPC (0x3Cu) + +/* Instructions with memory buffer operands, category VI */ +#define CY_CRYPTO_VU2_SET_BIT_IMM_OPC (0x2Cu) +#define CY_CRYPTO_VU2_CLR_BIT_IMM_OPC (0x2Du) +#define CY_CRYPTO_VU2_INV_BIT_IMM_OPC (0x2Eu) + + +__STATIC_INLINE void CY_CRYPTO_VU_SAVE_REG (CRYPTO_Type *base, uint32_t rsrc, uint32_t *data); +__STATIC_INLINE void CY_CRYPTO_VU_RESTORE_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t data); +__STATIC_INLINE void CY_CRYPTO_VU_SET_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t data, uint32_t size); + + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MOV_REG_TO_STATUS (CRYPTO_Type *base, uint32_t cc, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MOV_REG_TO_STATUS_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rsrc)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MOV_REG_TO_STATUS (CRYPTO_Type *base, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_MOV_REG_TO_STATUS (base, CY_CRYPTO_VU_COND_ALWAYS, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MOV_STATUS_TO_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MOV_STATUS_TO_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MOV_STATUS_TO_REG (CRYPTO_Type *base, uint32_t rdst) +{ + CY_CRYPTO_VU_COND_MOV_STATUS_TO_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MOV_IMM_TO_STATUS (CRYPTO_Type *base, uint32_t cc, uint32_t imm4) +{ + if (CY_CRYPTO_HW_V1) + { + /******* V1 *********/ + uint32_t tmpReg = CY_CRYPTO_VU_HW_REG14; + uint32_t tmpData; + + CY_CRYPTO_VU_SAVE_REG(base, tmpReg, &tmpData); + + /* Load 4 bit immediate value */ + CY_CRYPTO_VU_SET_REG(base, tmpReg, imm4, 4u); + CY_CRYPTO_VU_COND_MOV_REG_TO_STATUS(base, cc, tmpReg); + + CY_CRYPTO_VU_RESTORE_REG(base, tmpReg, tmpData); + } + else + { + /******* V2 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU2_MOV_IMM_TO_STATUS << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)imm4 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_MOV_IMM_TO_STATUS (CRYPTO_Type *base, uint32_t imm4) +{ + CY_CRYPTO_VU_COND_MOV_IMM_TO_STATUS (base, CY_CRYPTO_VU_COND_ALWAYS, imm4); +} + + +/*******************************************************************************/ +__STATIC_INLINE void CY_CRYPTO_VU_SET_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t data, uint32_t size) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SET_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)rdst << CY_CRYPTO_RSRC26_SHIFT) | + ((uint32_t)data << ((CY_CRYPTO_HW_V1) ? CY_CRYPTO_RSRC12_SHIFT : CY_CRYPTO_RSRC13_SHIFT)) | + (((uint32_t)size - 1u) << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LD_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LD_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_LD_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_LD_REG(base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_ST_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_ST_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_ST_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_ST_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MOV_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MOV_REG_TO_STATUS_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MOV_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_MOV_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_SWAP_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SWAP_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SWAP_REG (CRYPTO_Type *base, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_SWAP_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_ADD_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_ADD_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_ADD_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_ADD_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_SUB_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SUB_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SUB_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_SUB_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_OR_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_OR_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_OR_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_OR_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_AND_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_AND_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_AND_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_AND_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_XOR_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_XOR_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_XOR_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_XOR_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_NOR_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_NOR_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_NOR_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_NOR_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_NAND_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_NAND_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_NAND_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_NAND_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MIN_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MIN_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MIN_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_MIN_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MAX_REG (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MAX_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MAX_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_MAX_REG (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_PUSH_REG (CRYPTO_Type *base, uint32_t cc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = ((uint32_t)CY_CRYPTO_VU_PUSH_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT); +} + +__STATIC_INLINE void CY_CRYPTO_VU_PUSH_REG (CRYPTO_Type *base) +{ + CY_CRYPTO_VU_COND_PUSH_REG (base, CY_CRYPTO_VU_COND_ALWAYS); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_POP_REG (CRYPTO_Type *base, uint32_t cc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = ((uint32_t)CY_CRYPTO_VU_POP_REG_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT); +} + +__STATIC_INLINE void CY_CRYPTO_VU_POP_REG (CRYPTO_Type *base) +{ + CY_CRYPTO_VU_COND_POP_REG (base, CY_CRYPTO_VU_COND_ALWAYS); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_ALLOC_MEM (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t size) +{ + REG_CRYPTO_INSTR_FF_WR(base) = + (((uint32_t)CY_CRYPTO_VU_ALLOC_MEM_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << ((CY_CRYPTO_HW_V1) ? CY_CRYPTO_RSRC12_SHIFT : CY_CRYPTO_RSRC16_SHIFT)) | + (((uint32_t)size - 1u) << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_ALLOC_MEM (CRYPTO_Type *base, uint32_t rdst, uint32_t size) +{ + CY_CRYPTO_VU_COND_ALLOC_MEM (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, size); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_FREE_MEM (CRYPTO_Type *base, uint32_t cc, uint32_t reg_mask) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_FREE_MEM_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)reg_mask)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_FREE_MEM (CRYPTO_Type *base, uint32_t reg_mask) +{ + CY_CRYPTO_VU_COND_FREE_MEM (base, CY_CRYPTO_VU_COND_ALWAYS, reg_mask); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSL (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LSL_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSL (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_LSL (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSL1 (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1) +{ + if (CY_CRYPTO_HW_V1) + { + /******* V1 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LSL1_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT)); + } + else + { + /******* V2 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LSL1_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)CY_CRYPTO_VU_HW_REG15 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSL1 (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1) +{ + CY_CRYPTO_VU_COND_LSL1 (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSL1_WITH_CARRY (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1) +{ + if (CY_CRYPTO_HW_V1) + { + /******* V1 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LSL1_WITH_CARRY_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT)); + } + else + { + /******* V2 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_LSL1_WITH_CARRY_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)CY_CRYPTO_VU_HW_REG15 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSL1_WITH_CARRY (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1) +{ + CY_CRYPTO_VU_COND_LSL1_WITH_CARRY (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSR (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_LSR_OPC : CY_CRYPTO_VU2_LSR_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSR (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_LSR (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSR1 (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1) +{ + if (CY_CRYPTO_HW_V1) + { + /******* V1 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)(CY_CRYPTO_VU1_LSR1_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT)); + } + else + { + /******* V2 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)(CY_CRYPTO_VU2_LSR1_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)CY_CRYPTO_VU_HW_REG15 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSR1 (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1) +{ + CY_CRYPTO_VU_COND_LSR1 (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_LSR1_WITH_CARRY (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1) +{ + if (CY_CRYPTO_HW_V1) + { + /******* V1 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)(CY_CRYPTO_VU1_LSR1_WITH_CARRY_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT)); + } + else + { + /******* V2 *********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)(CY_CRYPTO_VU2_LSR1_WITH_CARRY_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)CY_CRYPTO_VU_HW_REG15 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_LSR1_WITH_CARRY (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1) +{ + CY_CRYPTO_VU_COND_LSR1_WITH_CARRY (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CLSAME (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_CLSAME_OPC : CY_CRYPTO_VU2_CLSAME_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_CLSAME (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_CLSAME (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CTSAME (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_CTSAME_OPC : CY_CRYPTO_VU2_CTSAME_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_CTSAME (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_CTSAME (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + + __STATIC_INLINE void CY_CRYPTO_VU_COND_SET_BIT (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) + { + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_SET_BIT_OPC : CY_CRYPTO_VU2_SET_BIT_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); + } + +__STATIC_INLINE void CY_CRYPTO_VU_SET_BIT (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_SET_BIT (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CLR_BIT (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_CLR_BIT_OPC : CY_CRYPTO_VU2_CLR_BIT_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_CLR_BIT (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_CLR_BIT (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_INV_BIT (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_INV_BIT_OPC : CY_CRYPTO_VU2_INV_BIT_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_INV_BIT (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_INV_BIT (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_GET_BIT (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)((CY_CRYPTO_HW_V1) ? CY_CRYPTO_VU1_GET_BIT_OPC : CY_CRYPTO_VU2_GET_BIT_OPC) << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_GET_BIT (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_GET_BIT (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +/******************************************************************************/ +__STATIC_INLINE void CY_CRYPTO_VU_COND_SET_BIT_IMM (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t imm13) +{ + if (CY_CRYPTO_HW_V1) + { + /******** V1 ********/ + uint32_t tmpReg = (rdst != CY_CRYPTO_VU_HW_REG14) ? CY_CRYPTO_VU_HW_REG14 : CY_CRYPTO_VU_HW_REG13; + uint32_t tmpData; + CY_CRYPTO_VU_SAVE_REG(base, tmpReg, &tmpData); + + /* Load 13 bit immediate value */ + CY_CRYPTO_VU_SET_REG(base, tmpReg, imm13, 13u); + CY_CRYPTO_VU_COND_SET_BIT(base, cc, rdst, tmpReg); + + CY_CRYPTO_VU_RESTORE_REG(base, tmpReg, tmpData); + } + else + { + /******** V2 ********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU2_SET_BIT_IMM_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC16_SHIFT) | + ((uint32_t)imm13 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_SET_BIT_IMM (CRYPTO_Type *base, uint32_t rdst, uint32_t imm13) +{ + CY_CRYPTO_VU_COND_SET_BIT_IMM(base, CY_CRYPTO_VU_COND_ALWAYS, rdst, imm13); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CLR_BIT_IMM (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t imm13) +{ + if (CY_CRYPTO_HW_V1) + { + /******** V1 ********/ + uint32_t tmpReg = (rdst != CY_CRYPTO_VU_HW_REG14) ? CY_CRYPTO_VU_HW_REG14 : CY_CRYPTO_VU_HW_REG13; + uint32_t tmpData; + CY_CRYPTO_VU_SAVE_REG(base, tmpReg, &tmpData); + + /* Load 13 bit immediate value */ + CY_CRYPTO_VU_SET_REG(base, tmpReg, imm13, 13u); + CY_CRYPTO_VU_COND_CLR_BIT(base, cc, rdst, tmpReg); + + CY_CRYPTO_VU_RESTORE_REG(base, tmpReg, tmpData); + } + else + { + /******** V2 ********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU2_CLR_BIT_IMM_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC16_SHIFT) | + ((uint32_t)imm13 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_CLR_BIT_IMM (CRYPTO_Type *base, uint32_t rdst, uint32_t imm13) +{ + CY_CRYPTO_VU_COND_CLR_BIT_IMM(base, CY_CRYPTO_VU_COND_ALWAYS, rdst, imm13); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_INV_BIT_IMM (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t imm13) +{ + if (CY_CRYPTO_HW_V1) + { + /******** V1 ********/ + uint32_t tmpReg = (rdst != CY_CRYPTO_VU_HW_REG14) ? CY_CRYPTO_VU_HW_REG14 : CY_CRYPTO_VU_HW_REG13; + uint32_t tmpData; + CY_CRYPTO_VU_SAVE_REG(base, tmpReg, &tmpData); + + /* Load 13 bit immediate value */ + CY_CRYPTO_VU_SET_REG(base, tmpReg, imm13, 13u); + CY_CRYPTO_VU_COND_INV_BIT(base, cc, rdst, tmpReg); + + CY_CRYPTO_VU_RESTORE_REG(base, tmpReg, tmpData); + } + else + { + /******** V2 ********/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU2_INV_BIT_IMM_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC16_SHIFT) | + ((uint32_t)imm13 << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_INV_BIT_IMM (CRYPTO_Type *base, uint32_t rdst, uint32_t imm13) +{ + CY_CRYPTO_VU_COND_INV_BIT_IMM(base, CY_CRYPTO_VU_COND_ALWAYS, rdst, imm13); +} + +/******************************************************************************/ +__STATIC_INLINE void CY_CRYPTO_VU_COND_TST (CRYPTO_Type *base, uint32_t cc, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_TST_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_TST (CRYPTO_Type *base, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_TST (base, CY_CRYPTO_VU_COND_ALWAYS, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_MOV (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_MOV_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_MOV (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_MOV (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_XSQUARE (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_XSQUARE_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_XSQUARE (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_XSQUARE (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_XMUL (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_XMUL_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_XMUL (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_XMUL (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + + +__STATIC_INLINE void CY_CRYPTO_VU_COND_UMUL (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_UMUL_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_UMUL (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_UMUL (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_USQUARE (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc) +{ + if (CY_CRYPTO_HW_V1) + { + /***** V1 *******/ + CY_CRYPTO_VU_COND_UMUL(base, cc, rdst, rsrc, rsrc); + } + else + { + /***** V2 *******/ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU2_USQUARE_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc << CY_CRYPTO_RSRC0_SHIFT)); + } +} + +__STATIC_INLINE void CY_CRYPTO_VU_USQUARE (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc) +{ + CY_CRYPTO_VU_COND_USQUARE(base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_SET_TO_ZERO (CRYPTO_Type *base, uint32_t cc, uint32_t rdst) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SET_TO_ZERO_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SET_TO_ZERO (CRYPTO_Type *base, uint32_t rdst) +{ + CY_CRYPTO_VU_COND_SET_TO_ZERO (base, CY_CRYPTO_VU_COND_ALWAYS, rdst); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_SET_TO_ONE (CRYPTO_Type *base, uint32_t cc, uint32_t rdst) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SET_TO_ONE_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SET_TO_ONE (CRYPTO_Type *base, uint32_t rdst) +{ + CY_CRYPTO_VU_COND_SET_TO_ONE (base, CY_CRYPTO_VU_COND_ALWAYS, rdst); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_ADD (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_ADD_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_ADD (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_ADD (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_SUB (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_SUB_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SUB (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_SUB (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_OR (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_OR_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_OR (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_OR (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_AND (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_AND_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_AND (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_AND (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_XOR (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_XOR_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_XOR (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_XOR (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_NOR (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_NOR_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_NOR (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_NOR (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_NAND (CRYPTO_Type *base, uint32_t cc, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_NAND_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rdst << CY_CRYPTO_RSRC12_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_NAND (CRYPTO_Type *base, uint32_t rdst, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_NAND (base, CY_CRYPTO_VU_COND_ALWAYS, rdst, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CMP_SUB (CRYPTO_Type *base, uint32_t cc, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_CMP_SUB_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_CMP_SUB (CRYPTO_Type *base, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_CMP_SUB (base, CY_CRYPTO_VU_COND_ALWAYS, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_COND_CMP_DEGREE (CRYPTO_Type *base, uint32_t cc, uint32_t rsrc1, uint32_t rsrc0) +{ + REG_CRYPTO_INSTR_FF_WR(base) = (((uint32_t)CY_CRYPTO_VU_CMP_DEGREE_OPC << CY_CRYPTO_OPCODE_POS) | + ((uint32_t)cc << CY_CRYPTO_RSRC20_SHIFT) | + ((uint32_t)rsrc1 << CY_CRYPTO_RSRC4_SHIFT) | + ((uint32_t)rsrc0 << CY_CRYPTO_RSRC0_SHIFT)); +} + +__STATIC_INLINE void CY_CRYPTO_VU_CMP_DEGREE (CRYPTO_Type *base, uint32_t rsrc1, uint32_t rsrc0) +{ + CY_CRYPTO_VU_COND_CMP_DEGREE (base, CY_CRYPTO_VU_COND_ALWAYS, rsrc1, rsrc0); +} + +__STATIC_INLINE void CY_CRYPTO_VU_SAVE_REG (CRYPTO_Type *base, uint32_t rsrc, uint32_t *data) +{ + *data = REG_CRYPTO_VU_RF_DATA(base, rsrc); +} + +__STATIC_INLINE void CY_CRYPTO_VU_RESTORE_REG (CRYPTO_Type *base, uint32_t rdst, uint32_t data) +{ + CY_CRYPTO_VU_SET_REG(base, rdst, CY_CRYPTO_VU_GET_REG_DATA(data), CY_CRYPTO_VU_GET_REG_SIZE(data) + 1u); +} + + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + + +#endif /* #if !defined(CY_CRYPTO_CORE_HW_VU_H) */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem.h new file mode 100644 index 00000000000..f779b43e4c1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem.h @@ -0,0 +1,199 @@ +/***************************************************************************//** +* \file cy_crypto_core_mem.h +* \version 2.20 +* +* \brief +* This file provides the headers for the memory management API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_MEM_H) +#define CY_CRYPTO_CORE_MEM_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#include "cy_crypto_core_mem_v1.h" +#include "cy_crypto_core_mem_v2.h" +#include "cy_crypto_core_hw.h" + +typedef void (*cy_crypto_memcpy_func_t)(CRYPTO_Type *base, + void* dst, void const *src, uint16_t size); +typedef void (*cy_crypto_memset_func_t)(CRYPTO_Type *base, + void* dst, uint8_t data, uint16_t size); +typedef uint32_t (*cy_crypto_memcmp_func_t)(CRYPTO_Type *base, + void const *src0, void const *src1, uint16_t size); +typedef void (*cy_crypto_memxor_func_t)(CRYPTO_Type *base, void* dst, + void const *src0, void const *src1, uint16_t size); + +/** +* \addtogroup group_crypto_lld_mem_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_MemCpy +****************************************************************************//** +* +* Function MemCpy uses Crypto HW. +* Memory structures should not overlap! +* There is no alignment restriction. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dst +* The pointer to the destination of MemCpy. +* +* \param src +* The pointer to the source of MemCpy. +* +* \param size +* The size in bytes of the copy operation. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_MemCpy(CRYPTO_Type *base, void* dst, void const *src, uint16_t size) +{ + if (CY_CRYPTO_HW_V1) + { + Cy_Crypto_Core_V1_MemCpy(base, dst, src, size); + } + else + { + Cy_Crypto_Core_V2_MemCpy(base, dst, src, size); + } +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_MemSet +****************************************************************************//** +* +* Function MemSet uses Crypto HW. +* There is no alignment restriction. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dst +* The pointer to the destination of MemSet. + +* \param data +* The value to be set. + +* \param size +* The size in bytes of the set operation. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_MemSet(CRYPTO_Type *base, void* dst, uint8_t data, uint16_t size) +{ + if (CY_CRYPTO_HW_V1) + { + Cy_Crypto_Core_V1_MemSet(base, dst, data, size); + } + else + { + Cy_Crypto_Core_V2_MemSet(base, dst, data, size); + } +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_MemCmp +****************************************************************************//** +* +* Function MemCmp uses Crypto HW. +* There is no alignment restriction. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param src0 +* The pointer to the first source of MemCmp. + +* \param src1 +* The pointer to the second source of MemCmp. + +* \param size +* the size in bytes of the compare operation. +* +* \return +* 0 - if Source 1 = Source 2, 1 - if not. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_MemCmp(CRYPTO_Type *base, void const *src0, void const *src1, uint16_t size) +{ + uint32_t tmpResult; + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_MemCmp(base, src0, src1, size); + } + else + { + tmpResult = Cy_Crypto_Core_V2_MemCmp(base, src0, src1, size); + } + + return (tmpResult); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_MemXor +****************************************************************************//** +* +* Function MemXor uses Crypto HW. +* Memory structures should not overlap! +* There is no alignment restriction. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dst +* The pointer to the destination of MemXor. +* +* \param src0 +* The pointer to the first source of MemXor. +* +* \param src1 +* The pointer to the second source of MemXor. +* +* \param size +* The size in bytes of the compare operation. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_MemXor(CRYPTO_Type *base, void* dst, + void const *src0, void const *src1, uint16_t size) +{ + if (CY_CRYPTO_HW_V1) + { + Cy_Crypto_Core_V1_MemXor(base, dst, src0, src1, size); + } + else + { + Cy_Crypto_Core_V2_MemXor(base, dst, src0, src1, size); + } +} + +/** \} group_crypto_lld_mem_functions */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_MEM_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v1.h new file mode 100644 index 00000000000..bd6941a9fc2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v1.h @@ -0,0 +1,52 @@ +/***************************************************************************//** +* \file cy_crypto_core_mem_v1.h +* \version 2.20 +* +* \brief +* This file provides the headers for the string management API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_MEM_V1_H) +#define CY_CRYPTO_CORE_MEM_V1_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_STR == 1) + +void Cy_Crypto_Core_V1_MemCpy(CRYPTO_Type *base, + void* dst, void const *src, uint16_t size); +void Cy_Crypto_Core_V1_MemSet(CRYPTO_Type *base, + void* dst, uint8_t data, uint16_t size); +uint32_t Cy_Crypto_Core_V1_MemCmp(CRYPTO_Type *base, + void const *src0, void const *src1, uint16_t size); +void Cy_Crypto_Core_V1_MemXor(CRYPTO_Type *base, void* dst, + void const *src0, void const *src1, uint16_t size); + +#endif /* #if (CPUSS_CRYPTO_STR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_MEM_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v2.h new file mode 100644 index 00000000000..a6d38da6ef6 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_mem_v2.h @@ -0,0 +1,48 @@ +/***************************************************************************//** +* \file cy_crypto_core_mem_v2.h +* \version 2.20 +* +* \brief +* This file provides the headers for the string management API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_MEM_V2_H) +#define CY_CRYPTO_CORE_MEM_V2_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +void Cy_Crypto_Core_V2_MemCpy(CRYPTO_Type *base, + void* dst, void const *src, uint16_t size); +void Cy_Crypto_Core_V2_MemSet(CRYPTO_Type *base, + void* dst, uint8_t data, uint16_t size); +uint32_t Cy_Crypto_Core_V2_MemCmp(CRYPTO_Type *base, + void const *src0, void const *src1, uint16_t size); +void Cy_Crypto_Core_V2_MemXor(CRYPTO_Type *base, void* dst, + void const *src0, void const *src1, uint16_t size); + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_MEM_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng.h new file mode 100644 index 00000000000..fcdf41a24bf --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng.h @@ -0,0 +1,141 @@ +/***************************************************************************//** +* \file cy_crypto_core_prng.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters for the API of the PRNG +* in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_PRNG_H) +#define CY_CRYPTO_CORE_PRNG_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_PR == 1) + +#include "cy_crypto_core_prng_v1.h" +#include "cy_crypto_core_prng_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_prng_init_func_t)(CRYPTO_Type *base, + uint32_t lfsr32InitState, + uint32_t lfsr31InitState, + uint32_t lfsr29InitState); + +typedef cy_en_crypto_status_t (*cy_crypto_prng_func_t)(CRYPTO_Type *base, + uint32_t max, + uint32_t *randomNum); + +/** +* \addtogroup group_crypto_lld_rng_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Prng_Init +****************************************************************************//** +* +* Initializes the PRND parameters. +* Invoking this function causes a restart of the pseudo-random sequence. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param lfsr32InitState +* A non-zero seed value for the first LFSR. + +* \param lfsr31InitState +* A non-zero seed value for the second LFSR. + +* \param lfsr29InitState +* A non-zero seed value for the third LFSR. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Prng_Init(CRYPTO_Type *base, + uint32_t lfsr32InitState, + uint32_t lfsr31InitState, + uint32_t lfsr29InitState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Prng_Init(base, lfsr32InitState, lfsr31InitState, lfsr29InitState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Prng_Init(base, lfsr32InitState, lfsr31InitState, lfsr29InitState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Prng +****************************************************************************//** +* +* Generates a Pseudo Random Number. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param max +* The maximum value of a random number. +* +* \param randomNum +* The pointer to a variable to store the generated pseudo random number. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Prng(CRYPTO_Type *base, + uint32_t max, + uint32_t *randomNum) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Prng(base, max, randomNum); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Prng(base, max, randomNum); + } + + return tmpResult; +} + +/** \} group_crypto_lld_rng_functions */ + +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_PRNG_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v1.h new file mode 100644 index 00000000000..0c00a627eb1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v1.h @@ -0,0 +1,54 @@ +/***************************************************************************//** +* \file cy_crypto_core_prng.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters for the API of the PRNG +* in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_PRNG_V1_H) +#define CY_CRYPTO_CORE_PRNG_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_PR == 1) + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Prng_Init(CRYPTO_Type *base, + uint32_t lfsr32InitState, + uint32_t lfsr31InitState, + uint32_t lfsr29InitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Prng(CRYPTO_Type *base, + uint32_t max, + uint32_t *randomNum); + + +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_PRNG_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v2.h new file mode 100644 index 00000000000..8860350f850 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_prng_v2.h @@ -0,0 +1,54 @@ +/***************************************************************************//** +* \file cy_crypto_core_prng_v2.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters for the API of the PRNG +* in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_PRNG_V2_H) +#define CY_CRYPTO_CORE_PRNG_V2_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_PR == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Prng_Init(CRYPTO_Type *base, + uint32_t lfsr32InitState, + uint32_t lfsr31InitState, + uint32_t lfsr29InitState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Prng(CRYPTO_Type *base, + uint32_t max, + uint32_t *randomNum); + + +#endif /* #if (CPUSS_CRYPTO_PR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_PRNG_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_rsa.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_rsa.h new file mode 100644 index 00000000000..ea20f4f1dae --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_rsa.h @@ -0,0 +1,78 @@ +/***************************************************************************//** +* \file cy_crypto_core_rsa.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters +* for the API of the RSA in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_RSA_H) +#define CY_CRYPTO_CORE_RSA_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_VU == 1) + +#include "cy_syslib.h" + +typedef cy_en_crypto_status_t (*cy_crypto_rsa_proc_func_t)(CRYPTO_Type *base, + cy_stc_crypto_rsa_pub_key_t const *key, + uint8_t const *message, + uint32_t messageSize, + uint8_t *processedMessage); + +typedef cy_en_crypto_status_t (*cy_crypto_rsa_coef_func_t)(CRYPTO_Type *base, + cy_stc_crypto_rsa_pub_key_t const *key); + +typedef cy_en_crypto_status_t (*cy_crypto_rsa_ver_func_t)(CRYPTO_Type *base, + cy_en_crypto_rsa_ver_result_t *verResult, + cy_en_crypto_sha_mode_t digestType, + uint8_t const *digest, + uint8_t const *decryptedSignature, + uint32_t decryptedSignatureLength); + +cy_en_crypto_status_t Cy_Crypto_Core_Rsa_Proc(CRYPTO_Type *base, + cy_stc_crypto_rsa_pub_key_t const *key, + uint8_t const *message, + uint32_t messageSize, + uint8_t *processedMessage); + +cy_en_crypto_status_t Cy_Crypto_Core_Rsa_Coef(CRYPTO_Type *base, + cy_stc_crypto_rsa_pub_key_t const *key); + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +cy_en_crypto_status_t Cy_Crypto_Core_Rsa_Verify(CRYPTO_Type *base, + cy_en_crypto_rsa_ver_result_t *verResult, + cy_en_crypto_sha_mode_t digestType, + uint8_t const *digest, + uint8_t const *decryptedSignature, + uint32_t decryptedSignatureLength); + + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_RSA_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha.h new file mode 100644 index 00000000000..caf2e587fe2 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha.h @@ -0,0 +1,293 @@ +/***************************************************************************//** +* \file cy_crypto_core_sha.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the SHA method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_SHA_H) +#define CY_CRYPTO_CORE_SHA_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + +#include "cy_crypto_core_sha_v1.h" +#include "cy_crypto_core_sha_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_sha_func_t)(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t *digest, + cy_en_crypto_sha_mode_t mode); + +/** +* \addtogroup group_crypto_lld_sha_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Sha +****************************************************************************//** +* +* Performs the SHA Hash function. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param mode +* \ref cy_en_crypto_sha_mode_t +* +* \param message +* The pointer to the message whose hash value is being computed. +* +* \param messageSize +* The size of the message. +* +* \param digest +* The pointer to the hash digest. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t *digest, + cy_en_crypto_sha_mode_t mode) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha(base, message, messageSize, digest, mode); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha(base, message, messageSize, digest, mode); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Sha_Init +****************************************************************************//** +* +* The function to initialize the SHA operation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param shaHashState +* The pointer to a Hash state. +* +* \param mode +* One of these: CY_CRYPTO_SHA256, CY_CRYPTO_SHA1, CY_CRYPTO_SHA256_224, +* CY_CRYPTO_SHA512, CY_CRYPTO_SHA384, CY_CRYPTO_SHA512_224, CY_CRYPTO_SHA512_256 +* +* \param shaBuffers +* The pointer to the memory buffers storage. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha_Init(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *shaHashState, + cy_en_crypto_sha_mode_t mode, + void *shaBuffers) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha_Init(base, shaHashState, mode, shaBuffers); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha_Init(base, shaHashState, mode, shaBuffers); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Sha_Start +****************************************************************************//** +* +* Initializes the initial Hash vector. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param hashState +* The pointer to the SHA context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha_Start(CRYPTO_Type *base, cy_stc_crypto_sha_state_t *hashState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha_Start(base, hashState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha_Start(base, hashState); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Sha_Update +****************************************************************************//** +* +* Performs the SHA calculation on one message. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param hashState +* The pointer to the SHA context. +* +* \param message +* The pointer to the message whose Hash is being computed. +* +* \param messageSize +* The size of the message whose Hash is being computed. +* +* \return +* \ref cy_en_crypto_status_t +* +* \note +* This function can be called several times only with message lengths dividable +* by the block size. Only the last call to the function can process a message with +* a not-dividable size. +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha_Update(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t const *message, + uint32_t messageSize) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha_Update(base, hashState, message, messageSize); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha_Update(base, hashState, message, messageSize); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_V1_Sha_Finish +****************************************************************************//** +* +* Completes the SHA calculation. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param hashState +* The pointer to the SHA context. +* +* \param digest +* The pointer to the calculated Hash digest. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha_Finish(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t *digest) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha_Finish(base, hashState, digest); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha_Finish(base, hashState, digest); + } + + return tmpResult; +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Sha_Free +****************************************************************************//** +* +* Clears the used memory buffers. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param hashState +* The pointer to the SHA context. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Sha_Free(CRYPTO_Type *base, cy_stc_crypto_sha_state_t *hashState) +{ + cy_en_crypto_status_t tmpResult; + + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Sha_Free(base, hashState); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Sha_Free(base, hashState); + } + + return tmpResult; +} + +/** \} group_crypto_lld_sha_functions */ + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_SHA_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v1.h new file mode 100644 index 00000000000..621272f47e3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v1.h @@ -0,0 +1,116 @@ +/***************************************************************************//** +* \file cy_crypto_core_sha.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the SHA method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_SHA_V1_H) +#define CY_CRYPTO_CORE_SHA_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + +/** \cond INTERNAL */ + +typedef struct +{ + /* Allocates CRYPTO_MAX_BLOCK_SIZE Bytes for the block. */ + uint32_t block[CY_CRYPTO_SHA1_BLOCK_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_HASH_SIZE Bytes for the hash. */ + uint32_t hash[CY_CRYPTO_SHA1_HASH_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_ROUND_MEM_SIZE Bytes for roundMem. */ + uint32_t roundMem[CY_CRYPTO_SHA1_ROUND_MEM_SIZE / 4u]; +} cy_stc_crypto_v1_sha1_buffers_t; + +typedef struct +{ + /* Allocates CRYPTO_MAX_BLOCK_SIZE Bytes for the block. */ + uint32_t block[CY_CRYPTO_SHA256_BLOCK_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_HASH_SIZE Bytes for the hash. */ + uint32_t hash[CY_CRYPTO_SHA256_HASH_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_ROUND_MEM_SIZE Bytes for roundMem. */ + uint32_t roundMem[CY_CRYPTO_SHA256_ROUND_MEM_SIZE / 4u]; +} cy_stc_crypto_v1_sha256_buffers_t; + +typedef struct +{ + /* Allocates CRYPTO_MAX_BLOCK_SIZE Bytes for the block. */ + uint32_t block[CY_CRYPTO_SHA512_BLOCK_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_HASH_SIZE Bytes for the hash. */ + uint32_t hash[CY_CRYPTO_SHA512_HASH_SIZE / 4u]; + + /* Allocates CRYPTO_MAX_ROUND_MEM_SIZE Bytes for roundMem. */ + uint32_t roundMem[CY_CRYPTO_SHA512_ROUND_MEM_SIZE / 4u]; +} cy_stc_crypto_v1_sha512_buffers_t; + + +void Cy_Crypto_Core_V1_Sha_ProcessBlock(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t const *block); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha_Init(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + cy_en_crypto_sha_mode_t mode, + void *shaBuffers); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha_Start(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha_Update(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t const *message, + uint32_t messageSize); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha_Finish(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t *digest); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha_Free(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState); + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Sha(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t *digest, + cy_en_crypto_sha_mode_t mode); + +/** \endcond */ + + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_SHA_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v2.h new file mode 100644 index 00000000000..11e842b0e01 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_sha_v2.h @@ -0,0 +1,74 @@ +/***************************************************************************//** +* \file cy_crypto_core_sha_v2.h +* \version 2.20 +* +* \brief +* This file provides constants and function prototypes +* for the API for the SHA method in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_SHA_V2_H) +#define CY_CRYPTO_CORE_SHA_V2_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_SHA == 1) + +#include "cy_syslib.h" + +/** \cond INTERNAL */ + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha_Init(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + cy_en_crypto_sha_mode_t mode, + void *shaBuffers); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha_Start(CRYPTO_Type *base, cy_stc_crypto_sha_state_t *hashState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha_Update(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t const *message, + uint32_t messageSize); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha_Finish(CRYPTO_Type *base, + cy_stc_crypto_sha_state_t *hashState, + uint8_t *digest); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha_Free(CRYPTO_Type *base, cy_stc_crypto_sha_state_t *hashState); + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Sha(CRYPTO_Type *base, + uint8_t const *message, + uint32_t messageSize, + uint8_t *digest, + cy_en_crypto_sha_mode_t mode); + +/** \endcond */ + + +#endif /* #if (CPUSS_CRYPTO_SHA == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_SHA_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng.h new file mode 100644 index 00000000000..def797749e8 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng.h @@ -0,0 +1,102 @@ +/***************************************************************************//** +* \file cy_crypto_core_trng.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters +* for the API of the TRNG in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_TRNG_H) +#define CY_CRYPTO_CORE_TRNG_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_TR == 1) + +#include "cy_crypto_core_trng_v1.h" +#include "cy_crypto_core_trng_v2.h" + +typedef cy_en_crypto_status_t (*cy_crypto_trng_func_t)(CRYPTO_Type *base, + uint32_t GAROPol, + uint32_t FIROPol, + uint32_t max, + uint32_t *randomNum); + +/** +* \addtogroup group_crypto_lld_rng_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Trng +****************************************************************************//** +* +* Generates a True Random Number. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param GAROPol +* The polynomial for the programmable Galois ring oscillator. +* +* \param FIROPol +* The polynomial for the programmable Fibonacci ring oscillator. +* +* \param max +* The maximum length of a random number, in the range of [0, 32] bits. +* +* \param randomNum +* The pointer to a generated true random number. Must be 4-byte aligned. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +__STATIC_INLINE cy_en_crypto_status_t Cy_Crypto_Core_Trng(CRYPTO_Type *base, + uint32_t GAROPol, + uint32_t FIROPol, + uint32_t max, + uint32_t *randomNum) +{ + cy_en_crypto_status_t tmpResult; + if (CY_CRYPTO_HW_V1) + { + tmpResult = Cy_Crypto_Core_V1_Trng(base, GAROPol, FIROPol, max, randomNum); + } + else + { + tmpResult = Cy_Crypto_Core_V2_Trng(base, GAROPol, FIROPol, max, randomNum); + } + return (tmpResult); +} + +/** \} group_crypto_lld_rng_functions */ + +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_TRNG_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v1.h new file mode 100644 index 00000000000..0eb516b9b32 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v1.h @@ -0,0 +1,239 @@ +/***************************************************************************//** +* \file cy_crypto_core_trng_config_v1.h +* \version 2.20 +* +* \brief +* This file provides internal (not public) constants and parameters +* for the Crypto TRNG driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_TRNG_CONFIG_V1_H) +#define CY_CRYPTO_CORE_TRNG_CONFIG_V1_H + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_TR == 1) + + +/** TRNG Configuration default values */ +/** +* Specifies the clock divider that is used to sample oscillator data. +* "0": sample clock is "clk_sys". +* "1": sample clock is "clk_sys"/2. +* ... +* "255": sample clock is "clk_sys"/256. +*/ +#define CY_CRYPTO_V1_TR_SAMPLE_CLOCK_DIV (0UL) + +/** +* Specifies the clock divider used to produce reduced bits. +* "0": 1 reduced bit is produced for each sample. +* "1": 1 reduced bit is produced for each 2 samples. +* ... +* "255": 1 reduced bit is produced for each 256 samples. +* +* The reduced bits are considered random bits and shifted into TR_RESULT0.DATA32. +*/ +#define CY_CRYPTO_V1_TR_RED_CLOCK_DIV (0UL) + +/** +* Specifies an initialization delay: a number of removed/dropped samples before +* reduced bits are generated. This field should be programmed in the range [1, 255]. +* After starting the oscillators, at least the first 2 samples should be +* removed/dropped to clear the state of internal synchronizers. In addition, +* it is advised to drop at least the second 2 samples from the oscillators +* (to circumvent the semi-predictable oscillator start-up behavior). This results +* in the default field value of "3". the field encoding is as follows: +* "0": 1 sample is dropped. +* "1": 2 samples are dropped. +* ... +* "255": 256 samples are dropped. +* +* The TR_INITIALIZED interrupt cause is set to '1', when the initialization delay is passed. +*/ +#define CY_CRYPTO_V1_TR_INIT_DELAY (3UL) + +/** +* Specifies if the "von Neumann corrector" is disabled or enabled: +* '0': disabled. +* '1': enabled. +* The "von Neumann corrector" post-processes the reduced bits to remove a '0' or '1' bias. +* The corrector operates on reduced bit pairs ("oldest bit, newest bit"): +* "00": no bit is produced. +* "01": '0' bit is produced (oldest bit). +* "10": '1' bit is produced (oldest bit). +* "11": no bit is produced. +* NOTE: The corrector produces bits at a random pace and at a frequency that +* is 1/4 of the reduced bit frequency (reduced bits are processed in pairs, +* and half of the pairs do NOT produce a bit). +*/ +#define CY_CRYPTO_V1_TR_VON_NEUMANN_CORR (1UL) + +/** +* Specifies if the TRNG functionality is stopped on an adaptive proportion test +* detection (when HW sets INTR.TR_AP_DETECT to '1'): +* '0': Functionality is stopped (TR_CTL1 fields are set to '0' by HW). +* '1': Functionality is NOT stopped. +*/ +#define CY_CRYPTO_V1_TR_STOP_ON_AP_DETECT (1UL) + +/** +* Specifies if the TRNG functionality is stopped on a repetition count test detection +* (when HW sets INTR.TR_RC_DETECT to '1'): +* '0': Functionality is stopped (TR_CTL1 fields are set to '0' by HW). +* '1': Functionality is NOT stopped. +*/ +#define CY_CRYPTO_V1_TR_STOP_ON_RC_DETECT (1UL) + +/** FW sets this field to '1' to enable the ring oscillator with 11 inverters. */ +#define CY_CRYPTO_V1_TR_RO11_EN (1UL) + +/** FW sets this field to '1' to enable the ring oscillator with 15 inverters. */ +#define CY_CRYPTO_V1_TR_RO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the fixed Galois ring oscillator +* with 15 inverters. +*/ +#define CY_CRYPTO_V1_TR_GARO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the programmable Galois ring oscillator with up +* to 31 inverters. The TR_GARO_CTL register specifies the programmable polynomial. +*/ +#define CY_CRYPTO_V1_TR_GARO31_EN (1UL) + +/** FW sets this field to '1' to enable the fixed Fibonacci ring oscillator with 15 inverters. */ +#define CY_CRYPTO_V1_TR_FIRO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the programmable Fibonacci ring oscillator +* with up to 31 inverters. The TR_FIRO_CTL register specifies the programmable polynomial. +*/ +#define CY_CRYPTO_V1_TR_FIRO31_EN (1UL) + +/** +* The polynomial for programmable Galois ring oscillator. The polynomial is represented +* WITHOUT the high order bit (this bit is always assumed '1'). The polynomial should be aligned +* so that the more significant bits (bit 30 and down) contain the polynomial and the less +* significant bits (bit 0 and up) contain padding '0's. +*/ +#define CY_CRYPTO_V1_TR_GARO (1UL) + +/** +* The polynomial for the programmable Fibonacci ring oscillator. The polynomial is represented +* WITHOUT the high order bit (this bit is always assumed '1'). The polynomial should +* be aligned so that the more significant bits (bit 30 and down) contain the polynomial +* and the less significant bits (bit 0 and up) contain padding '0's. +*/ +#define CY_CRYPTO_V1_TR_FIRO (1UL) + +/** +* Selection of the bit stream: +* "0": DAS bit stream. +* "1": RED bit stream. +* "2": TR bit stream. +* "3": Undefined. +*/ +#define CY_CRYPTO_V1_TR_BITSTREAM_SEL (0UL) + +/** +* Adaptive proportion (AP) test enable: +* '0': Stopped. +* '1': Started. +* +* On AP detection, HW sets this field to '0' and sets INTR.TR_AP_DETECT to '1. +*/ +#define CY_CRYPTO_V1_TR_START_AP (0UL) + +/** +* Repetition count (RC) test enable: +* '0': Disabled. +* '1': Enabled. +* +* On RC detection, HW sets this field to '0' and sets INTR.TR_RC_DETECT to '1. +*/ +#define CY_CRYPTO_V1_TR_START_RC (0UL) + +/** +* Cut-off count (legal range is [1, 255]): +* "0": Illegal. +* "1": 1 repetition. +* ... +* "255": 255 repetitions. +*/ +#define CY_CRYPTO_V1_TR_CUTOFF_COUNT8 (1UL) + +/** +* Cut-off count (legal range is [1, 65535]). +* "0": Illegal. +* "1": 1 occurrence. +* ... +* "65535": 65535 occurrences. +*/ +#define CY_CRYPTO_V1_TR_CUTOFF_COUNT16 (1UL) + +/** +* The window size (minus 1) : +* "0": 1 bit. +* ... +* "65535": 65536 bits. +*/ +#define CY_CRYPTO_V1_TR_WINDOW_SIZE (1UL) + +/** The composed value for the TR_CTL0 register */ +#define CY_CRYPTO_V1_TR_CTL0_VAL (_VAL2FLD(CRYPTO_TR_CTL0_SAMPLE_CLOCK_DIV, CY_CRYPTO_V1_TR_SAMPLE_CLOCK_DIV) | \ + _VAL2FLD(CRYPTO_TR_CTL0_RED_CLOCK_DIV, CY_CRYPTO_V1_TR_RED_CLOCK_DIV) | \ + _VAL2FLD(CRYPTO_TR_CTL0_INIT_DELAY, CY_CRYPTO_V1_TR_INIT_DELAY) | \ + _VAL2FLD(CRYPTO_TR_CTL0_VON_NEUMANN_CORR, CY_CRYPTO_V1_TR_VON_NEUMANN_CORR) | \ + _VAL2FLD(CRYPTO_TR_CTL0_STOP_ON_AP_DETECT, CY_CRYPTO_V1_TR_STOP_ON_AP_DETECT) | \ + _VAL2FLD(CRYPTO_TR_CTL0_STOP_ON_RC_DETECT, CY_CRYPTO_V1_TR_STOP_ON_RC_DETECT)) + +/** The composed value for the TR_CTL1 register */ +#define CY_CRYPTO_V1_TR_CTL1_VAL (_VAL2FLD(CRYPTO_TR_CTL1_RO11_EN, CY_CRYPTO_V1_TR_RO11_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_RO15_EN, CY_CRYPTO_V1_TR_RO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_GARO15_EN, CY_CRYPTO_V1_TR_GARO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_GARO31_EN, CY_CRYPTO_V1_TR_GARO31_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_FIRO15_EN, CY_CRYPTO_V1_TR_FIRO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_FIRO31_EN, CY_CRYPTO_V1_TR_FIRO31_EN)) + +/** The composed value for the TR_MON_CTL register */ +#define CY_CRYPTO_V1_TR_BTSTR_SEL (_VAL2FLD(CRYPTO_TR_MON_CTL_BITSTREAM_SEL, CY_CRYPTO_V1_TR_BITSTREAM_SEL)) + +/** The composed value for the TR_MON_CMD register */ +#define CY_CRYPTO_V1_TR_START_MON (_VAL2FLD(CRYPTO_TR_MON_CMD_START_AP, CY_CRYPTO_V1_TR_START_AP) | \ + _VAL2FLD(CRYPTO_TR_MON_CMD_START_RC, CY_CRYPTO_V1_TR_START_RC)) + +/** The composed value for the TR_MON_RC_CTL register */ +#define CY_CRYPTO_V1_TR_RC_CUTOFF (_VAL2FLD(CRYPTO_TR_MON_RC_CTL_CUTOFF_COUNT8, CY_CRYPTO_V1_TR_CUTOFF_COUNT8)) + +/** The composed value for the TR_MON_AP_CTL register */ +#define CY_CRYPTO_V1_TR_AC_CUTOFF (_VAL2FLD(CRYPTO_TR_MON_AP_CTL_CUTOFF_COUNT16, CY_CRYPTO_V1_TR_CUTOFF_COUNT16) | \ + _VAL2FLD(CRYPTO_TR_MON_AP_CTL_WINDOW_SIZE, CY_CRYPTO_V1_TR_WINDOW_SIZE)) + + +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_TRNG_CONFIG_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v2.h new file mode 100644 index 00000000000..165b12aeb7c --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_config_v2.h @@ -0,0 +1,239 @@ +/***************************************************************************//** +* \file cy_crypto_core_trng_config_v2.h +* \version 2.20 +* +* \brief +* This file provides internal (not public) constants and parameters +* for the Crypto TRNG driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_TRNG_CONFIG_V2_H) +#define CY_CRYPTO_CORE_TRNG_CONFIG_V2_H + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_TR == 1) + + +/** TRNG Configuration default values */ +/** +* Specifies the clock divider that is used to sample oscillator data. +* "0": sample clock is "clk_sys". +* "1": sample clock is "clk_sys"/2. +* ... +* "255": sample clock is "clk_sys"/256. +*/ +#define CY_CRYPTO_V2_TR_SAMPLE_CLOCK_DIV (0UL) + +/** +* Specifies the clock divider used to produce reduced bits. +* "0": 1 reduced bit is produced for each sample. +* "1": 1 reduced bit is produced for each 2 samples. +* ... +* "255": 1 reduced bit is produced for each 256 samples. +* +* The reduced bits are considered random bits and shifted into TR_RESULT0.DATA32. +*/ +#define CY_CRYPTO_V2_TR_RED_CLOCK_DIV (0UL) + +/** +* Specifies an initialization delay: a number of removed/dropped samples before +* reduced bits are generated. This field should be programmed in the range [1, 255]. +* After starting the oscillators, at least the first 2 samples should be +* removed/dropped to clear the state of internal synchronizers. In addition, +* it is advised to drop at least the second 2 samples from the oscillators +* (to circumvent the semi-predictable oscillator start-up behavior). This results +* in the default field value of "3". the field encoding is as follows: +* "0": 1 sample is dropped. +* "1": 2 samples are dropped. +* ... +* "255": 256 samples are dropped. +* +* The TR_INITIALIZED interrupt cause is set to '1', when the initialization delay is passed. +*/ +#define CY_CRYPTO_V2_TR_INIT_DELAY (3UL) + +/** +* Specifies if the "von Neumann corrector" is disabled or enabled: +* '0': disabled. +* '1': enabled. +* The "von Neumann corrector" post-processes the reduced bits to remove a '0' or '1' bias. +* The corrector operates on reduced bit pairs ("oldest bit, newest bit"): +* "00": no bit is produced. +* "01": '0' bit is produced (oldest bit). +* "10": '1' bit is produced (oldest bit). +* "11": no bit is produced. +* NOTE: The corrector produces bits at a random pace and at a frequency that +* is 1/4 of the reduced bit frequency (reduced bits are processed in pairs, +* and half of the pairs do NOT produce a bit). +*/ +#define CY_CRYPTO_V2_TR_VON_NEUMANN_CORR (1UL) + +/** +* Specifies if the TRNG functionality is stopped on an adaptive proportion test +* detection (when HW sets INTR.TR_AP_DETECT to '1'): +* '0': Functionality is stopped (TR_CTL1 fields are set to '0' by HW). +* '1': Functionality is NOT stopped. +*/ +#define CY_CRYPTO_V2_TR_STOP_ON_AP_DETECT (1UL) + +/** +* Specifies if the TRNG functionality is stopped on a repetition count test detection +* (when HW sets INTR.TR_RC_DETECT to '1'): +* '0': Functionality is stopped (TR_CTL1 fields are set to '0' by HW). +* '1': Functionality is NOT stopped. +*/ +#define CY_CRYPTO_V2_TR_STOP_ON_RC_DETECT (1UL) + +/** FW sets this field to '1' to enable the ring oscillator with 11 inverters. */ +#define CY_CRYPTO_V2_TR_RO11_EN (1UL) + +/** FW sets this field to '1' to enable the ring oscillator with 15 inverters. */ +#define CY_CRYPTO_V2_TR_RO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the fixed Galois ring oscillator +* with 15 inverters. +*/ +#define CY_CRYPTO_V2_TR_GARO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the programmable Galois ring oscillator with up +* to 31 inverters. The TR_GARO_CTL register specifies the programmable polynomial. +*/ +#define CY_CRYPTO_V2_TR_GARO31_EN (1UL) + +/** FW sets this field to '1' to enable the fixed Fibonacci ring oscillator with 15 inverters. */ +#define CY_CRYPTO_V2_TR_FIRO15_EN (1UL) + +/** +* FW sets this field to '1' to enable the programmable Fibonacci ring oscillator +* with up to 31 inverters. The TR_FIRO_CTL register specifies the programmable polynomial. +*/ +#define CY_CRYPTO_V2_TR_FIRO31_EN (1UL) + +/** +* The polynomial for programmable Galois ring oscillator. The polynomial is represented +* WITHOUT the high order bit (this bit is always assumed '1'). The polynomial should be aligned +* so that the more significant bits (bit 30 and down) contain the polynomial and the less +* significant bits (bit 0 and up) contain padding '0's. +*/ +#define CY_CRYPTO_V2_TR_GARO (1UL) + +/** +* The polynomial for the programmable Fibonacci ring oscillator. The polynomial is represented +* WITHOUT the high order bit (this bit is always assumed '1'). The polynomial should +* be aligned so that the more significant bits (bit 30 and down) contain the polynomial +* and the less significant bits (bit 0 and up) contain padding '0's. +*/ +#define CY_CRYPTO_V2_TR_FIRO (1UL) + +/** +* Selection of the bit stream: +* "0": DAS bit stream. +* "1": RED bit stream. +* "2": TR bit stream. +* "3": Undefined. +*/ +#define CY_CRYPTO_V2_TR_BITSTREAM_SEL (0UL) + +/** +* Adaptive proportion (AP) test enable: +* '0': Stopped. +* '1': Started. +* +* On AP detection, HW sets this field to '0' and sets INTR.TR_AP_DETECT to '1. +*/ +#define CY_CRYPTO_V2_TR_START_AP (0UL) + +/** +* Repetition count (RC) test enable: +* '0': Disabled. +* '1': Enabled. +* +* On RC detection, HW sets this field to '0' and sets INTR.TR_RC_DETECT to '1. +*/ +#define CY_CRYPTO_V2_TR_START_RC (0UL) + +/** +* Cut-off count (legal range is [1, 255]): +* "0": Illegal. +* "1": 1 repetition. +* ... +* "255": 255 repetitions. +*/ +#define CY_CRYPTO_V2_TR_CUTOFF_COUNT8 (1UL) + +/** +* Cut-off count (legal range is [1, 65535]). +* "0": Illegal. +* "1": 1 occurrence. +* ... +* "65535": 65535 occurrences. +*/ +#define CY_CRYPTO_V2_TR_CUTOFF_COUNT16 (1UL) + +/** +* The window size (minus 1) : +* "0": 1 bit. +* ... +* "65535": 65536 bits. +*/ +#define CY_CRYPTO_V2_TR_WINDOW_SIZE (1UL) + +/** The composed value for the TR_CTL0 register */ +#define CY_CRYPTO_V2_TR_CTL0_VAL (_VAL2FLD(CRYPTO_TR_CTL0_SAMPLE_CLOCK_DIV, CY_CRYPTO_V2_TR_SAMPLE_CLOCK_DIV) | \ + _VAL2FLD(CRYPTO_TR_CTL0_RED_CLOCK_DIV, CY_CRYPTO_V2_TR_RED_CLOCK_DIV) | \ + _VAL2FLD(CRYPTO_TR_CTL0_INIT_DELAY, CY_CRYPTO_V2_TR_INIT_DELAY) | \ + _VAL2FLD(CRYPTO_TR_CTL0_VON_NEUMANN_CORR, CY_CRYPTO_V2_TR_VON_NEUMANN_CORR) | \ + _VAL2FLD(CRYPTO_TR_CTL0_STOP_ON_AP_DETECT, CY_CRYPTO_V2_TR_STOP_ON_AP_DETECT) | \ + _VAL2FLD(CRYPTO_TR_CTL0_STOP_ON_RC_DETECT, CY_CRYPTO_V2_TR_STOP_ON_RC_DETECT)) + +/** The composed value for the TR_CTL1 register */ +#define CY_CRYPTO_V2_TR_CTL1_VAL (_VAL2FLD(CRYPTO_TR_CTL1_RO11_EN, CY_CRYPTO_V2_TR_RO11_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_RO15_EN, CY_CRYPTO_V2_TR_RO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_GARO15_EN, CY_CRYPTO_V2_TR_GARO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_GARO31_EN, CY_CRYPTO_V2_TR_GARO31_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_FIRO15_EN, CY_CRYPTO_V2_TR_FIRO15_EN) | \ + _VAL2FLD(CRYPTO_TR_CTL1_FIRO31_EN, CY_CRYPTO_V2_TR_FIRO31_EN)) + +/** The composed value for the TR_MON_CTL register */ +#define CY_CRYPTO_V2_TR_BTSTR_SEL (_VAL2FLD(CRYPTO_TR_MON_CTL_BITSTREAM_SEL, CY_CRYPTO_V2_TR_BITSTREAM_SEL)) + +/** The composed value for the TR_MON_CMD register */ +#define CY_CRYPTO_V2_TR_START_MON (_VAL2FLD(CRYPTO_TR_MON_CMD_START_AP, CY_CRYPTO_V2_TR_START_AP) | \ + _VAL2FLD(CRYPTO_TR_MON_CMD_START_RC, CY_CRYPTO_V2_TR_START_RC)) + +/** The composed value for the TR_MON_RC_CTL register */ +#define CY_CRYPTO_V2_TR_RC_CUTOFF (_VAL2FLD(CRYPTO_TR_MON_RC_CTL_CUTOFF_COUNT8, CY_CRYPTO_V2_TR_CUTOFF_COUNT8)) + +/** The composed value for the TR_MON_AP_CTL register */ +#define CY_CRYPTO_V2_TR_AC_CUTOFF (_VAL2FLD(CRYPTO_TR_MON_AP_CTL_CUTOFF_COUNT16, CY_CRYPTO_V2_TR_CUTOFF_COUNT16) | \ + _VAL2FLD(CRYPTO_TR_MON_AP_CTL_WINDOW_SIZE, CY_CRYPTO_V2_TR_WINDOW_SIZE)) + + +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_TRNG_CONFIG_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v1.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v1.h new file mode 100644 index 00000000000..b4d79349ec1 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v1.h @@ -0,0 +1,52 @@ +/***************************************************************************//** +* \file cy_crypto_core_trng_v1.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters +* for the API of the TRNG in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_TRNG_V1_H) +#define CY_CRYPTO_CORE_TRNG_V1_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_TR == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V1_Trng(CRYPTO_Type *base, + uint32_t GAROPol, + uint32_t FIROPol, + uint32_t max, + uint32_t *randomNum); + + +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_TRNG_V1_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v2.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v2.h new file mode 100644 index 00000000000..ad15318b04a --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_trng_v2.h @@ -0,0 +1,52 @@ +/***************************************************************************//** +* \file cy_crypto_core_trng_v2.h +* \version 2.20 +* +* \brief +* This file provides provides constant and parameters +* for the API of the TRNG in the Crypto block driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_TRNG_V2_H) +#define CY_CRYPTO_CORE_TRNG_V2_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_TR == 1) + + +cy_en_crypto_status_t Cy_Crypto_Core_V2_Trng(CRYPTO_Type *base, + uint32_t GAROPol, + uint32_t FIROPol, + uint32_t max, + uint32_t *randomNum); + + +#endif /* #if (CPUSS_CRYPTO_TR == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_TRNG_V2_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_vu.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_vu.h new file mode 100644 index 00000000000..c0741a4a274 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_core_vu.h @@ -0,0 +1,352 @@ +/***************************************************************************//** +* \file cy_crypto_core_hw.h +* \version 2.20 +* +* \brief +* This file provides the headers to the API for the utils +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_CORE_VU_H) +#define CY_CRYPTO_CORE_VU_H + +#include "cy_crypto_common.h" + +#if defined(CY_IP_MXCRYPTO) + +#if (CPUSS_CRYPTO_VU == 1) + +#include "cy_crypto_core_hw.h" +#include "cy_crypto_core_hw_vu.h" +#include + +#define CY_CRYPTO_VU_SIZE_FLD_MASK (0x00001fffuL) +#define CY_CRYPTO_VU_DATA_FLD_MASK (0x00003fffuL) +#define CY_CRYPTO_VU_DATA_FLD_POS (16u) + +/** +* \addtogroup group_crypto_lld_vu_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Cleanup +****************************************************************************//** +* +* Cleans up the Crypto block. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Core_Cleanup(CRYPTO_Type *base); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_SetMemValue +****************************************************************************//** +* +* Sets the value in the Crypto memory allocated by the destination VU register. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dstReg +* The destination vector unit register. +* +* \param src +* The pointer to the source value. +* +* \param size +* The size of the operated value. +* +*******************************************************************************/ +void Cy_Crypto_Core_Vu_SetMemValue(CRYPTO_Type *base, uint32_t dstReg, uint8_t const *src, uint32_t size); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_GetMemValue +****************************************************************************//** +* +* Gets the value located in the crypto memory and pointed by source VU register. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param dst +* The pointer to the destination value. +* +* \param srcReg +* The source vector unit register. +* +* \param size +* The size of the operated value. +* +*******************************************************************************/ +void Cy_Crypto_Core_Vu_GetMemValue(CRYPTO_Type *base, uint8_t *dst, uint32_t srcReg, uint32_t size); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_IsRegZero +****************************************************************************//** +* +* Returns TRUE if srcReg contains 0. FALSE - otherwise. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +* \return +* The result of the comparison. +* +*******************************************************************************/ +bool Cy_Crypto_Core_Vu_IsRegZero(CRYPTO_Type *base, uint32_t srcReg); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_IsRegEqual +****************************************************************************//** +* +* Returns TRUE if srcReg0 contains the same value as srcReg1. FALSE - otherwise. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg0 +* The source 0 vector unit register. +* +* \param srcReg1 +* The source 1 vector unit register. +* +* \return +* The result of the comparison. +* +*******************************************************************************/ +bool Cy_Crypto_Core_Vu_IsRegEqual(CRYPTO_Type *base, uint32_t srcReg0, uint32_t srcReg1); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_IsRegEqual +****************************************************************************//** +* +* Returns TRUE if srcReg0 contains the value less than value of srcReg1. +* FALSE - otherwise. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg0 +* The source 0 vector unit register. +* +* \param srcReg1 +* The source 1 vector unit register. +* +* \return +* The result of the comparison. +* +*******************************************************************************/ +bool Cy_Crypto_Core_Vu_IsRegLess(CRYPTO_Type *base, uint32_t srcReg0, uint32_t srcReg1); + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegRead +****************************************************************************//** +* +* Returns the data pointed in a given register. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_Vu_RegRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return ((uint32_t)_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg))); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegSizeRead +****************************************************************************//** +* +* Returns size of the data pointed in given register, +* it is lower 12Bit of the 32Bit word +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint16_t Cy_Crypto_Core_Vu_RegSizeRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return ((uint16_t)(_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg)) & CY_CRYPTO_VU_SIZE_FLD_MASK)); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegBitSizeRead +****************************************************************************//** +* +* Returns size of the data pointed in given register, in Bits. +* It is lower 12Bit of the 32Bit word +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint16_t Cy_Crypto_Core_Vu_RegBitSizeRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return ((uint16_t)(_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg)) & CY_CRYPTO_VU_SIZE_FLD_MASK) + 1u); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegByteSizeRead +****************************************************************************//** +* +* Returns size of the data pointed in given register, in Bytes. +* It is lower 12Bit of the 32Bit word +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint16_t Cy_Crypto_Core_Vu_RegByteSizeRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return ((uint16_t)((_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg)) & CY_CRYPTO_VU_SIZE_FLD_MASK) + 1u) >> 3u); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegWordSizeRead +****************************************************************************//** +* +* Returns size of the data pointed in given register, in words (uint32_t). +* It is lower 12Bit of the 32Bit word +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint16_t Cy_Crypto_Core_Vu_RegWordSizeRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return ((uint16_t)((_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg)) & CY_CRYPTO_VU_SIZE_FLD_MASK) + 1u) >> 5u); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegDataPtrRead +****************************************************************************//** +* +* Returns the data pointer, in 14-bit format of the data pointed in given register, +* it is upper 16Bit of the 32Bir word. Pointer is in words (uint32_t). +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint16_t Cy_Crypto_Core_Vu_RegDataPtrRead(CRYPTO_Type *base, uint32_t srcReg) +{ + return (uint16_t)((_FLD2VAL(CRYPTO_RF_DATA_DATA32, REG_CRYPTO_VU_RF_DATA(base, srcReg)) >> CY_CRYPTO_VU_DATA_FLD_POS) + & CY_CRYPTO_VU_DATA_FLD_MASK); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_RegMemPointer +****************************************************************************//** +* +* Returns the memory address of the data pointed in given register. +* +* \param base +* The pointer to the CRYPTO instance. +* +* \param srcReg +* The source vector unit register. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t * Cy_Crypto_Core_Vu_RegMemPointer(CRYPTO_Type *base, uint32_t srcReg) +{ + return (uint32_t *)((uint32_t)REG_CRYPTO_MEM_BUFF(base) + (4u * (uint32_t)Cy_Crypto_Core_Vu_RegDataPtrRead(base, srcReg))); +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Wait_Vu_ForComplete +****************************************************************************//** +* +* Waits until VU instruction will be completed +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_Crypto_Core_Vu_WaitForComplete(CRYPTO_Type *base) +{ + /* Wait until the VU instruction is complete */ + if (CY_CRYPTO_HW_V1) + { + while (0uL != _FLD2VAL(CRYPTO_STATUS_VU_BUSY, REG_CRYPTO_STATUS(base))) + { + } + } + else + { + while (0uL != _FLD2VAL(CRYPTO_V2_STATUS_BUSY, REG_CRYPTO_STATUS(base))) + { + } + } +} + +/******************************************************************************* +* Function Name: Cy_Crypto_Core_Vu_StatusRead +****************************************************************************//** +* +* Returns the value of the VU status register. +* +* \param base +* The pointer to the CRYPTO instance. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_Crypto_Core_Vu_StatusRead(CRYPTO_Type *base) +{ + Cy_Crypto_Core_Vu_WaitForComplete(base); + + return((uint32_t)REG_CRYPTO_VU_STATUS(base)); +} + +/** \} group_crypto_lld_vu_functions */ + +#endif /* #if (CPUSS_CRYPTO_VU == 1) */ + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_CORE_VU_H) */ + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_server.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_server.h new file mode 100644 index 00000000000..99d9ce5996d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_crypto_server.h @@ -0,0 +1,205 @@ +/***************************************************************************//** +* \file cy_crypto_server.h +* \version 2.20 +* +* \brief +* This file provides the prototypes for common API +* in the Crypto driver. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + + +#if !defined(CY_CRYPTO_SERVER_H) +#define CY_CRYPTO_SERVER_H + +#include "cy_crypto_common.h" +#include "cy_syslib.h" + +#if defined(CY_IP_MXCRYPTO) + +#if defined(__cplusplus) +extern "C" { +#endif + +/** +* \addtogroup group_crypto_srv_functions +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_Start_Base +****************************************************************************//** +* +* This function starts the Basic functionality for the Crypto server on the +* server side core, sets up an interrupt for the IPC Crypto channel, sets up an +* interrupt to catch Crypto HW errors. +* +* This function available for Server side only. +* +* \note +* The Crypto server can be run as singleton (not multi-instance) application on +* the one of available cores at the same time. +* +* \param config +* The Crypto configuration structure. +* +* \param context +* The pointer to the \ref cy_stc_crypto_server_context_t structure that stores +* the Crypto server context. +* +* \return +* \ref cy_en_crypto_status_t +* +* \funcusage +* \snippet crypto/2.10/snippet/main.c snippet_myCryptoServerStartBase +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Server_Start_Base(cy_stc_crypto_config_t const *config, + cy_stc_crypto_server_context_t *context); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_Start_Extra +****************************************************************************//** +* +* This function starts the Extra functionality for the Crypto server on the +* server side core, sets up an interrupt for the IPC Crypto channel, sets up an +* interrupt to catch Crypto HW errors. +* +* This function available for Server side only. +* +* \note +* The Crypto server can be run as singleton (not multi-instance) application on +* the one of available cores at the same time. +* +* \param config +* The Crypto configuration structure. +* +* \param context +* The pointer to the \ref cy_stc_crypto_server_context_t structure that stores +* the Crypto server context. +* +* \return +* \ref cy_en_crypto_status_t +* +* Refer to \ref Cy_Crypto_Server_Start_Base for the function usage example. +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Server_Start_Extra(cy_stc_crypto_config_t const *config, + cy_stc_crypto_server_context_t *context); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_Start_Full +****************************************************************************//** +* +* This function starts the Full functionality for the Crypto server on the +* server side core, sets up an interrupt for the IPC Crypto channel, sets up an +* interrupt to catch Crypto HW errors. +* +* This function available for Server side only. +* +* \note +* The Crypto server can be run as singleton (not multi-instance) application on +* the one of available cores at the same time. +* +* \param config +* The Crypto configuration structure. +* +* \param context +* The pointer to the \ref cy_stc_crypto_server_context_t structure that stores +* the Crypto server context. +* +* \return +* \ref cy_en_crypto_status_t +* +* Refer to \ref Cy_Crypto_Server_Start_Base for the function usage example. +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Server_Start_Full(cy_stc_crypto_config_t const *config, + cy_stc_crypto_server_context_t *context); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_Stop +****************************************************************************//** +* +* This function stops the Crypto server by disabling the IPC notify interrupt +* and Crypto error interrupt. +* +* This function available for Server side only. +* +* \return +* \ref cy_en_crypto_status_t +* +*******************************************************************************/ +cy_en_crypto_status_t Cy_Crypto_Server_Stop(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_Process +****************************************************************************//** +* +* This function parses input data received from the Crypto Client, +* runs the appropriate Crypto function and releases the Crypto IPC channel. +* +* This function available for Server side only. +* +* \note +* This function should be used only when user register own GetDataHandler function. +* +*******************************************************************************/ +void Cy_Crypto_Server_Process(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_GetDataHandler +****************************************************************************//** +* +* This function is a IPC Crypto channel notify interrupt-routine. +* It receives information from the Crypto client, +* runs the process if user not setup own handler. +* +* This function available for Server side only. +* +*******************************************************************************/ +void Cy_Crypto_Server_GetDataHandler(void); + +/******************************************************************************* +* Function Name: Cy_Crypto_Server_ErrorHandler +****************************************************************************//** +* +* This function is a routine to handle an interrupt caused by the Crypto +* hardware error. +* +* This function available for Server side only. +* +*******************************************************************************/ +void Cy_Crypto_Server_ErrorHandler(void); + +/** Backward compatibility macro for the Server Start function - + it starts the Server with Full functionality configuration */ +#define Cy_Crypto_Server_Start Cy_Crypto_Server_Start_Full + +/** \} group_crypto_srv_functions */ + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_IP_MXCRYPTO */ + +#endif /* #if !defined(CY_CRYPTO_SERVER_H) */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_csd.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_csd.h new file mode 100644 index 00000000000..e6a1abe160b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_csd.h @@ -0,0 +1,839 @@ +/***************************************************************************//** +* \file cy_csd.h +* \version 1.0.1 +* +* The header file of the CSD driver. +* +******************************************************************************** +* \copyright +* Copyright 2018-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressed or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_csd +*/ + +/** +******************************************************************************** +* \addtogroup group_csd +******************************************************************************** +* \{ +* +* The CSD HW block enables multiple sensing capabilities on PSoC devices, +* including self-cap and mutual-cap capacitive touch sensing solutions, +* a 10-bit ADC, IDAC, and Comparator. +* +* The CapSense solution includes: +* * The CapSense Configurator tool, which is a configuration wizard to create +* and configure CapSense widgets. It can be launched in ModusToolbox +* from the CSD personality as well as in standalone mode. +* It contains separate documentation on how to create and +* configure widgets, parameters, and algorithm descriptions. +* * An API to control the design from the application program. This documentation +* describes the API with code snippets about how to use them. +* * The CapSense Tuner tool for real-time tuning, testing, and debugging, +* for easy and smooth design of human interfaces on customer products. +* The Tuner tool communicates with a device through a HW bridge and +* communication drivers (EzI2C, UART, etc.) and allows monitoring of +* widget statuses, sensor signals, detected touch positions, gestures, etc. +* The application program does not need to interact with the CSD driver +* and/or other drivers such as GPIO or SysClk directly. All of that is +* configured and managed by middleware. +* +* \image html capsense_solution.png "CapSense Solution" width=800px +* \image latex capsense_solution.png +* +* This section describes only the CSD driver. Refer to the corresponding sections +* for documentation of middleware supported by the CSD HW block. +* +* The CSD driver is a low-level peripheral driver that provides an interface to +* a complex mixed signal of the CSD HW block. +* +* The CSD driver alone does not provide system-level functions. Instead, it is +* used by upper-level middleware to configure the CSD HW block required by +* an application. +* +* The CSD HW block can support only one function at a time. To allow seamless +* time-multiplex implementation of functionality and to avoid conflicting access +* to hardware from the upper level, the CSD driver also implements a lock +* semaphore mechanism. +* +* The CSD driver supports re-entrance. If a device contains several +* CSD HW blocks, the same CSD driver is used to configure any HW block. For +* that, each function of the CSD driver contains a base address to define +* the CSD HW block to which the CSD driver communicates. +* +* For dual-core devices, the CSD driver functions can be called either by the +* CM0+ or CM4 cores. In case both cores need access to the CSD Driver, you +* should properly manage the memory access. +* +* There is no restriction on the CSD Driver usage in RTOS. +* +******************************************************************************** +* \section group_csd_config_usage Usage +******************************************************************************** +* +* The CSD driver is simple wrapper driver specifically designed to be used by higher +* level middleware. Hence, is highly not recommended to use CSD driver +* directly in the application program. To incorporate CSD HW block +* functionality in the application program, an associated middleware +* should be used. +* +* The CSD Driver can be used to implement a custom sensing solution. In such a case, +* the application program must acquire and lock the CSD HW block prior to +* accessing it. +* +* Setting up and using the CSD driver can be summed up in these four stages: +* * Define configuration in the config structure. +* * Allocate context structure variable for the driver. +* * Capture the CSD HW block. +* * Execute the action required to perform any kind of conversion. +* +* The following code snippet demonstrates how to capture the CSD HW block for +* custom implementation: +* +* \snippet csd/1.0/snippet/main.c snippet_Cy_CSD_Conversion +* +* The entire solution, either CapSense or CSDADC, in addition to +* the CSD HW block, incorporates the following instances: +* +* * \ref group_csd_config_clocks +* * \ref group_csd_config_refgen +* * \ref group_csd_config_interrupts +* * \ref group_csd_config_pin +* +* The CSD driver does not configure those blocks and they should be managed by +* an upper level. When using CapSense or CSDADC, those blocks are managed by +* middleware. +* +******************************************************************************** +* \subsection group_csd_config_clocks Clocks +******************************************************************************** +* +* The CSD HW block requires a peripheral clock (clk_peri) input. It can be +* assigned using two methods: +* * Using the Device Configurator (Peripheral-Clocks tab ). +* * Using the SysClk (System Clock) driver. Refer to \ref group_sysclk driver +* section for more details. +* If middleware is used, the clock is managed by middleware. +* +******************************************************************************** +* \subsection group_csd_config_pin GPIO Pins +******************************************************************************** +* +* Any analog-capable GPIO pin that can be connected to an analog multiplexed bus +* (AMUXBUS) can be connected to the CSD HW block as an input. +* +* GPIO input can be assigned to the CSD HW block using the following methods: +* * Using the Device Configurator (Pins tab). +* * Using the GPIO (General Purpose Input Output) driver. Refer to \ref group_gpio +* driver section. +* +* If middleware is used, pin configuration is managed by middleware. When +* using the CSD driver for custom implementation, the application program must +* manage pin connections. +* +* Each AMUXBUS can be split into multiple segments. Ensure the CSD HW block +* and a GPIO belong to the same bus segment or join the segments to establish +* connection of the GPIO to the CSD HW block. +* +* For more information about pin configuration, refer to the \ref group_gpio +* driver. +* +******************************************************************************** +* \subsection group_csd_config_refgen Reference Voltage Input +******************************************************************************** +* +* The CSD HW block requires a reference voltage input to generate programmable +* reference voltage within the CSD HW block. There are two on-chip reference +* sources: +* * VREF +* * AREF +* +* For more information about specification and startup of reference voltage +* sources, refer to the \ref group_sysanalog driver prior to making the +* selection. +* +******************************************************************************** +* \subsection group_csd_config_interrupts Interrupts +******************************************************************************** +* +* The CSD HW block has one interrupt that can be assigned to either the +* Cortex M4 or Cortex M0+ core. The CSD HW block can generate interrupts +* on the following events: +* +* * End of sample: when scanning of a single sensor is complete. +* * End of initialization: when initialization of an analog circuit is complete. +* * End of measurement: when conversion of an CSDADC channel is complete. +* +* Additionally, the CSD interrupt can wake the device from the Sleep power mode. +* The CSD HW block is powered down in the Deep Sleep or Hibernate power modes. +* So, it cannot be used as a wake-up source in these power modes. +* +* If a CapSense or ADC middleware is used, the interrupt service routine is managed +* by middleware. When using the CSD driver for custom implementation or other +* middleware, the application program must manage the interrupt service routine. +* +* Implement an interrupt routine and assign it to the CSD interrupt. Use the +* pre-defined enumeration as the interrupt source of the CSD HW block. +* The CSD interrupt to the NVIC is raised any time the intersection +* (logic AND) of the interrupt flags and the corresponding interrupt +* masks are non-zero. The peripheral interrupt status register should be +* read in the ISR to detect which condition generated the interrupt. +* The appropriate interrupt registers should be cleared so that +* subsequent interrupts can be handled. +* +* The following code snippet demonstrates how to implement a routine to handle +* the interrupt. The routine is called when a CSD interrupt is triggered. +* +* \snippet csd/1.0/snippet/main.c snippet_Cy_CSD_IntHandler +* +* The following code snippet demonstrates how to configure and enable +* the CSD interrupt: +* +* \snippet csd/1.0/snippet/main.c snippet_Cy_CSD_IntEnabling +* +* For more information, refer to the \ref group_sysint driver. +* +* Alternatively, instead of handling the interrupts, the +* \ref Cy_CSD_GetConversionStatus() function allows for firmware +* polling of the CSD block status. +* +******************************************************************************** +* \section group_csd_config_power_modes Power Modes +******************************************************************************** +* +* The CSD HW block can operate in Active and Sleep CPU power modes. It is also +* possible to switch between Low power and Ultra Low power system modes. +* In Deep Sleep and in Hibernate power modes, the CSD HW block is powered off. +* When the device wakes up from Deep Sleep, the CSD HW block resumes operation +* without the need for re-initialization. In the case of wake up from Hibernate power +* mode, the CSD HW block does not retain configuration and it requires +* re-initialization. +* +* \note +* 1. The CSD driver does not provide a callback function to facilitate the +* low-power mode transitions. The responsibility belongs to an upper +* level that uses the CSD HW block to ensure the CSD HW block is not +* busy prior to a power mode transition. +* 2. A power mode transition is not recommended while the CSD HW block is busy. +* The CSD HW block status must be checked using the Cy_CSD_GetStatus() +* function prior to a power mode transition. Instead, use the same power mode +* for active operation of the CSD HW block. This restriction is not +* applicable to Sleep mode and the device can seamlessly enter and exit +* Sleep mode while the CSD HW block is busy. +* +* \warning +* 1. Do not enter Deep Sleep power mode if the CSD HW block conversion is in +* progress. Unexpected behavior may occur. +* 2. Analog start up time for the CSD HW block is 25 us. Initiate +* any kind of conversion only after 25 us from Deep Sleep / Hibernate exit. +* +* Refer to the \ref group_syspm driver for more information about +* low-power mode transitions. +* +******************************************************************************** +* \section group_csd_more_information More Information +******************************************************************************** +* +* For more information, refer to the following documents: +* +* * Technical Reference Manual (TRM) +* +* * Cypress CapSense Middleware Library +* +* * Cypress CSDADC Middleware Library +* +* * Cypress CSDIDAC Middleware Library +* +* * \ref page_getting_started "Getting Started with the PDL" +* +* * PSoC 63 with BLE Datasheet Programmable System-on-Chip +* +* * AN85951 PSoC 4 and PSoC 6 MCU CapSense Design Guide for more detail +* +* * AN210781 Getting Started with PSoC 6 MCU with Bluetooth Low Energy (BLE) Connectivity +* +******************************************************************************** +* \section group_csd_MISRA MISRA-C Compliance +******************************************************************************** +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
14.2RAll non-null statements shall either: a) have at least one side-effect +* however executed, or b) cause control flow to change.The unused function parameters are cast to void. This statement +* has no side effect and is used to suppress a compiler warning.
20.6RThe macro offsetof, in library , shall not be used.The only CSD HW block register offsets are defined using this macro +* to implement functions Read/WriteReg.
+* +******************************************************************************** +* \section group_csd_changelog Changelog +******************************************************************************** +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.0The initial version.
1.0.1Documentation updates.Improve user's experience
+*/ + +/** \} group_csd */ + +/** +******************************************************************************** +* \addtogroup group_csd +******************************************************************************** +* \{ +* \defgroup group_csd_macros Macros +* \defgroup group_csd_functions Functions +* \defgroup group_csd_data_structures Data Structures +* \defgroup group_csd_enums Enumerated Types +*/ + + +#if !defined(CY_CSD_H) +#define CY_CSD_H + +#include +#include +#include "cy_device_headers.h" +#include "cy_syslib.h" + +#ifndef CY_IP_MXCSDV2 + #error "The CSD driver is not supported on this device" +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +/** +* \addtogroup group_csd_macros +* \{ +*/ + +/** Driver major version */ +#define CY_CSD_DRV_VERSION_MAJOR (1) + +/** Driver minor version */ +#define CY_CSD_DRV_VERSION_MINOR (0) + + +/****************************************************************************** +* API Constants +******************************************************************************/ + +/** CSD driver identifier */ +#define CY_CSD_ID (CY_PDL_DRV_ID(0x41U)) + +/** Initialization macro for the driver context variable */ +#define CY_CSD_CONTEXT_INIT_VALUE {.lockKey = CY_CSD_NONE_KEY} + +/** Nominal Vref stored in SFLASH register */ +#define CY_CSD_ADC_VREF_0P8 (800U) +/** Nominal Vref stored in SFLASH register */ +#define CY_CSD_ADC_VREF_1P2 (1164U) +/** Nominal Vref stored in SFLASH register */ +#define CY_CSD_ADC_VREF_1P6 (1600U) +/** Nominal Vref stored in SFLASH register */ +#define CY_CSD_ADC_VREF_2P1 (2133U) +/** Nominal Vref stored in SFLASH register */ +#define CY_CSD_ADC_VREF_2P6 (2560U) +/** One hundred percent */ +#define CY_CSDADC_PERCENTAGE_100 (100u) +/** Max deviation for trim */ +#define CY_CSDADC_VREF_TRIM_MAX_DEVIATION (20u) +/** Vref max gain */ +#define CY_CSDADC_VREF_GAIN_MAX (32u) + +/******************************************************************************* +* The CSD HW Block Registers Constants +*******************************************************************************/ + +/** +* \defgroup group_csd_reg_const Registers Constants +* \{ +*/ + +/** \} group_csd_reg_const */ + +/** \} group_csd_macros */ + + +/******************************************************************************* + * Enumerations + ******************************************************************************/ + +/** +* \addtogroup group_csd_enums +* \{ +*/ + +/** CSD status definitions */ +typedef enum +{ + /** Successful */ + CY_CSD_SUCCESS = 0x00U, + + /** One or more invalid parameters */ + CY_CSD_BAD_PARAM = CY_CSD_ID | CY_PDL_STATUS_ERROR | 0x01U, + + /** The CSD HW block performs conversion */ + CY_CSD_BUSY = CY_CSD_ID | CY_PDL_STATUS_ERROR | 0x02U, + + /** The CSD HW block is captured by another middleware */ + CY_CSD_LOCKED = CY_CSD_ID | CY_PDL_STATUS_ERROR | 0x03U + +} cy_en_csd_status_t; + + +/** +* Definitions of upper level keys that use the driver. +* +* Each middleware has a unique key assigned. When middleware successfully +* captures the CSD HW block, this key is placed into the CSD driver context +* structure. All attempts to capture the CSD HW block by other middleware +* are rejected. When the first middleware releases the CSD HW block, +* CY_CSD_NONE_KEY is written to the lockKey variable of the CSD driver context +* structure and any other middleware can capture the CSD HW block. +*/ +typedef enum +{ + /** The CSD HW block is unused and not captured by any middleware */ + CY_CSD_NONE_KEY = 0U, + + /** + * The CSD HW block is captured by the application program + * directly to implement a customer's specific case + */ + CY_CSD_USER_DEFINED_KEY = 1U, + + /** The CSD HW block is captured by a CapSense middleware */ + CY_CSD_CAPSENSE_KEY = 2U, + + /** The CSD HW block is captured by a ADC middleware */ + CY_CSD_ADC_KEY = 3U, + + /** The CSD HW block is captured by a IDAC middleware */ + CY_CSD_IDAC_KEY = 4U, + + /** The CSD HW block is captured by a CMP middleware */ + CY_CSD_CMP_KEY = 5U + +}cy_en_csd_key_t; + +/** \} group_csd_enums */ + + +/******************************************************************************* +* Type Definitions +*******************************************************************************/ + +/** +* \addtogroup group_csd_data_structures +* \{ +*/ + +/** +* CSD configuration structure. +* +* This structure contains all register values of the CSD HW block. This +* structure is provided by middleware through the Cy_CSD_Init() and +* Cy_CSD_Configure() functions to implement the CSD HW block supported +* sensing modes like self-cap / mutual-cap scanning, ADC measurement, etc. +*/ +typedef struct +{ + uint32_t config; /**< Stores the CSD.CONFIG register value */ + uint32_t spare; /**< Stores the CSD.SPARE register value */ + uint32_t status; /**< Stores the CSD.STATUS register value */ + uint32_t statSeq; /**< Stores the CSD.STAT_SEQ register value */ + uint32_t statCnts; /**< Stores the CSD.STAT_CNTS register value */ + uint32_t statHcnt; /**< Stores the CSD.STAT_HCNT register value */ + uint32_t resultVal1; /**< Stores the CSD.RESULT_VAL1 register value */ + uint32_t resultVal2; /**< Stores the CSD.RESULT_VAL2 register value */ + uint32_t adcRes; /**< Stores the CSD.ADC_RES register value */ + uint32_t intr; /**< Stores the CSD.INTR register value */ + uint32_t intrSet; /**< Stores the CSD.INTR_SET register value */ + uint32_t intrMask; /**< Stores the CSD.INTR_MASK register value */ + uint32_t intrMasked; /**< Stores the CSD.INTR_MASKED register value */ + uint32_t hscmp; /**< Stores the CSD.HSCMP register value */ + uint32_t ambuf; /**< Stores the CSD.AMBUF register value */ + uint32_t refgen; /**< Stores the CSD.REFGEN register value */ + uint32_t csdCmp; /**< Stores the CSD.CSDCMP register value */ + uint32_t swRes; /**< Stores the CSD.SW_RES register value */ + uint32_t sensePeriod; /**< Stores the CSD.SENSE_PERIOD register value */ + uint32_t senseDuty; /**< Stores the CSD.SENSE_DUTY register value */ + uint32_t swHsPosSel; /**< Stores the CSD.SW_HS_P_SEL register value */ + uint32_t swHsNegSel; /**< Stores the CSD.SW_HS_N_SEL register value */ + uint32_t swShieldSel; /**< Stores the CSD.SW_SHIELD_SEL register value */ + uint32_t swAmuxbufSel; /**< Stores the CSD.SW_AMUXBUF_SEL register value */ + uint32_t swBypSel; /**< Stores the CSD.SW_BYP_SEL register value */ + uint32_t swCmpPosSel; /**< Stores the CSD.SW_CMP_P_SEL register value */ + uint32_t swCmpNegSel; /**< Stores the CSD.SW_CMP_N_SEL register value */ + uint32_t swRefgenSel; /**< Stores the CSD.SW_REFGEN_SEL register value */ + uint32_t swFwModSel; /**< Stores the CSD.SW_FW_MOD_SEL register value */ + uint32_t swFwTankSel; /**< Stores the CSD.SW_FW_TANK_SEL register value */ + uint32_t swDsiSel; /**< Stores the CSD.SW_DSI_SEL register value */ + uint32_t ioSel; /**< Stores the CSD.IO_SEL register value */ + uint32_t seqTime; /**< Stores the CSD.SEQ_TIME register value */ + uint32_t seqInitCnt; /**< Stores the CSD.SEQ_INIT_CNT register value */ + uint32_t seqNormCnt; /**< Stores the CSD.SEQ_NORM_CNT register value */ + uint32_t adcCtl; /**< Stores the CSD.ADC_CTL register value */ + uint32_t seqStart; /**< Stores the CSD.SEQ_START register value */ + uint32_t idacA; /**< Stores the CSD.IDACA register value */ + uint32_t idacB; /**< Stores the CSD.IDACB register value */ +} cy_stc_csd_config_t; + + +/** +* CSD driver context structure. +* This structure is an internal structure of the CSD driver and should not be +* accessed directly by the application program. +*/ +typedef struct +{ + /** Middleware ID that currently captured CSD */ + cy_en_csd_key_t lockKey; +} cy_stc_csd_context_t; + +/** \} group_csd_data_structures */ + +/** +* \addtogroup group_csd_reg_const +* \{ +*/ + + +/** The register offset */ +#define CY_CSD_REG_OFFSET_CONFIG (offsetof(CSD_Type, CONFIG)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SPARE (offsetof(CSD_Type, SPARE)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_STATUS (offsetof(CSD_Type, STATUS)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_STAT_SEQ (offsetof(CSD_Type, STAT_SEQ)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_STAT_CNTS (offsetof(CSD_Type, STAT_CNTS)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_STAT_HCNT (offsetof(CSD_Type, STAT_HCNT)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_RESULT_VAL1 (offsetof(CSD_Type, RESULT_VAL1)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_RESULT_VAL2 (offsetof(CSD_Type, RESULT_VAL2)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_ADC_RES (offsetof(CSD_Type, ADC_RES)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_INTR (offsetof(CSD_Type, INTR)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_INTR_SET (offsetof(CSD_Type, INTR_SET)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_INTR_MASK (offsetof(CSD_Type, INTR_MASK)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_INTR_MASKED (offsetof(CSD_Type, INTR_MASKED)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_HSCMP (offsetof(CSD_Type, HSCMP)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_AMBUF (offsetof(CSD_Type, AMBUF)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_REFGEN (offsetof(CSD_Type, REFGEN)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_CSDCMP (offsetof(CSD_Type, CSDCMP)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_RES (offsetof(CSD_Type, SW_RES)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SENSE_PERIOD (offsetof(CSD_Type, SENSE_PERIOD)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SENSE_DUTY (offsetof(CSD_Type, SENSE_DUTY)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_HS_P_SEL (offsetof(CSD_Type, SW_HS_P_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_HS_N_SEL (offsetof(CSD_Type, SW_HS_N_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_SHIELD_SEL (offsetof(CSD_Type, SW_SHIELD_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_AMUXBUF_SEL (offsetof(CSD_Type, SW_AMUXBUF_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_BYP_SEL (offsetof(CSD_Type, SW_BYP_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_CMP_P_SEL (offsetof(CSD_Type, SW_CMP_P_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_CMP_N_SEL (offsetof(CSD_Type, SW_CMP_N_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_REFGEN_SEL (offsetof(CSD_Type, SW_REFGEN_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_FW_MOD_SEL (offsetof(CSD_Type, SW_FW_MOD_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_FW_TANK_SEL (offsetof(CSD_Type, SW_FW_TANK_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SW_DSI_SEL (offsetof(CSD_Type, SW_DSI_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_IO_SEL (offsetof(CSD_Type, IO_SEL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SEQ_TIME (offsetof(CSD_Type, SEQ_TIME)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SEQ_INIT_CNT (offsetof(CSD_Type, SEQ_INIT_CNT)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SEQ_NORM_CNT (offsetof(CSD_Type, SEQ_NORM_CNT)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_ADC_CTL (offsetof(CSD_Type, ADC_CTL)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_SEQ_START (offsetof(CSD_Type, SEQ_START)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_IDACA (offsetof(CSD_Type, IDACA)) +/** The register offset */ +#define CY_CSD_REG_OFFSET_IDACB (offsetof(CSD_Type, IDACB)) +/** \} group_csd_reg_const */ + +/******************************************************************************* +* Function Prototypes +*******************************************************************************/ + +/** +* \addtogroup group_csd_functions +* \{ +*/ + +cy_en_csd_status_t Cy_CSD_Init(CSD_Type * base, cy_stc_csd_config_t const * config, cy_en_csd_key_t key, cy_stc_csd_context_t * context); +cy_en_csd_status_t Cy_CSD_DeInit(const CSD_Type * base, cy_en_csd_key_t key, cy_stc_csd_context_t * context); +cy_en_csd_status_t Cy_CSD_Configure(CSD_Type * base, const cy_stc_csd_config_t * config, cy_en_csd_key_t key, const cy_stc_csd_context_t * context); + +__STATIC_INLINE cy_en_csd_key_t Cy_CSD_GetLockStatus(const CSD_Type * base, const cy_stc_csd_context_t * context); +__STATIC_INLINE cy_en_csd_status_t Cy_CSD_GetConversionStatus(const CSD_Type * base, const cy_stc_csd_context_t * context); + +uint32_t Cy_CSD_GetVrefTrim(uint32_t referenceVoltage); + +__STATIC_INLINE uint32_t Cy_CSD_ReadReg(const CSD_Type * base, uint32_t offset); +__STATIC_INLINE void Cy_CSD_WriteReg(CSD_Type * base, uint32_t offset, uint32_t value); +__STATIC_INLINE void Cy_CSD_SetBits(CSD_Type * base, uint32_t offset, uint32_t mask); +__STATIC_INLINE void Cy_CSD_ClrBits(CSD_Type * base, uint32_t offset, uint32_t mask); +__STATIC_INLINE void Cy_CSD_WriteBits(CSD_Type* base, uint32_t offset, uint32_t mask, uint32_t value); + +/******************************************************************************* +* Function Name: Cy_CSD_ReadReg +****************************************************************************//** +* +* Reads value from the specified the CSD HW block register. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param offset +* Register offset relative to base address. +* +* \return +* Returns a value of the CSD HW block register, specified by the offset +* parameter. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CSD_ReadReg(const CSD_Type * base, uint32_t offset) +{ + return(* (volatile uint32_t *)((uint32_t)base + offset)); +} + + +/******************************************************************************* +* Function Name: Cy_CSD_WriteReg +****************************************************************************//** +* +* Writes a value to the specified CSD HW block register. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param offset +* Register offset relative to base address. +* +* \param value +* Value to be written to the register. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CSD_WriteReg(CSD_Type * base, uint32_t offset, uint32_t value) +{ + (* (volatile uint32_t *)((uint32_t)base + offset)) = value; +} + + +/******************************************************************************* +* Function Name: Cy_CSD_SetBits +****************************************************************************//** +* +* Sets bits, specified by the Mask parameter in the CSD HW block register, +* specified by the Offset parameter. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param offset +* Register offset relative to base address. +* +* \param mask +* Mask value for register bits to be set. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CSD_SetBits(CSD_Type * base, uint32_t offset, uint32_t mask) +{ + volatile uint32_t * regPtr = (volatile uint32_t *)((uint32_t)base + offset); + (* regPtr) |= mask; +} + + +/******************************************************************************* +* Function Name: Cy_CSD_ClrBits +****************************************************************************//** +* +* Clears bits, specified by the Mask parameter in the CSD HW block register, +* specified by the Offset parameter. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param offset +* Register offset relative to base address. +* +* \param mask +* Mask value for register bits to be cleared. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CSD_ClrBits(CSD_Type * base, uint32_t offset, uint32_t mask) +{ + volatile uint32_t * regPtr = (volatile uint32_t *)((uint32_t)base + offset); + (* regPtr) &= ~mask; +} + + +/******************************************************************************* +* Function Name: Cy_CSD_WriteBits +****************************************************************************//** +* +* Writes field, specified by the Mask parameter with the value, specified by +* the Value parameter. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param offset +* Register offset relative to base address. +* +* \param mask +* Specifies bits to be modified. +* +* \param value +* Specifies a value to be written to the register. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CSD_WriteBits(CSD_Type * base, uint32_t offset, uint32_t mask, uint32_t value) +{ + volatile uint32_t * regPtr = (volatile uint32_t *)((uint32_t)base + offset); + (* regPtr) = ((* regPtr) & ~mask) | (value & mask); +} + + +/******************************************************************************* +* Function Name: Cy_CSD_GetLockStatus +****************************************************************************//** +* +* Verifies whether the specified CSD HW block is acquired and locked by a +* higher-level firmware. +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param context +* The pointer to the context structure allocated by a user or middleware. +* +* \return +* Returns a key code. See \ref cy_en_csd_key_t. +* +* \funcusage +* +* \snippet csd/1.0/snippet/main.c snippet_Cy_CSD_CheckKey +* +*******************************************************************************/ +__STATIC_INLINE cy_en_csd_key_t Cy_CSD_GetLockStatus(const CSD_Type * base, const cy_stc_csd_context_t * context) +{ + (void)base; + return(context->lockKey); +} + + +/******************************************************************************* +* Function Name: Cy_CSD_GetConversionStatus +****************************************************************************//** +* +* Verifies whether the specified CSD HW block is busy +* (performing scan or conversion). +* +* \param base +* Pointer to a CSD HW block base address. +* +* \param context +* The pointer to the context structure allocated by a user or middleware. +* +* \return +* Returns status code. See \ref cy_en_csd_status_t. +* +* \funcusage +* +* \snippet csd/1.0/snippet/main.c snippet_Cy_CSD_CheckStatus +* +*******************************************************************************/ +__STATIC_INLINE cy_en_csd_status_t Cy_CSD_GetConversionStatus(const CSD_Type * base, const cy_stc_csd_context_t * context) +{ + cy_en_csd_status_t csdStatus = CY_CSD_BUSY; + + (void)context; + if ((base->SEQ_START & CSD_SEQ_START_START_Msk) == 0u) + { + csdStatus = CY_CSD_SUCCESS; + } + + return(csdStatus); +} +/** \} group_csd_functions */ + +/** \} group_csd */ + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_CSD_H */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctb.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctb.h new file mode 100644 index 00000000000..a0aebab0e39 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctb.h @@ -0,0 +1,1542 @@ +/***************************************************************************//** +* \file cy_ctb.h +* \version 1.10 +* +* Header file for the CTB driver +* +******************************************************************************** +* \copyright +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_ctb +* \{ +* This driver provides API functions to configure and use the analog CTB. +* +* The functions and other declarations used in this driver are in cy_ctb.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The CTB comprises two identical opamps, a switch routing matrix, +* and a sample and hold (SH) circuit. The high level features are: +* +* - Two highly configurable opamps +* - Each opamp has programmable power and output drive strength +* - Each opamp can be configured as a voltage follower using internal routing +* - Each opamp can be configured as a comparator with optional 10 mV hysteresis +* - Flexible input and output routing +* - Works as a buffer or amplifier for SAR ADC inputs +* - Works as a buffer, amplifier, or sample and hold (SH) for the CTDAC output +* - Can operate in Deep Sleep power mode +* +* Each opamp, marked OA0 and OA1, has one input and three output stages, +* all of which share the common input stage. +* Note that only one output stage can be selected at a time. +* The output stage can operate as a low-drive strength opamp for internal connections (1X), a high-drive strength +* opamp for driving a device pin (10X), or a comparator. +* +* Using the switching matrix, the opamp inputs and outputs +* can be connected to dedicated general-purpose I/Os or other internal analog +* blocks. See the device datasheet for the dedicated CTB port. +* +* \image html ctb_block_diagram.png "CTB Switch Diagram" width=1000px +* \image latex ctb_block_diagram.png +* +* \section group_ctb_init Initialization and Enable +* +* Before enabling the CTB, set up any external components (such as resistors) +* that are needed for the design. To configure the entire hardware block, call \ref Cy_CTB_Init. +* The base address of the CTB hardware can be found in the device specific header file. +* Alternatively, to configure only one opamp without any routing, call \ref Cy_CTB_OpampInit. +* The driver also provides a \ref Cy_CTB_FastInit function for fast and easy initialization of the CTB +* based on commonly used configurations. They are pre-defined in the driver as: +* +* Opamp0 +* - \ref Cy_CTB_Fast_Opamp0_Unused +* - \ref Cy_CTB_Fast_Opamp0_Comp +* - \ref Cy_CTB_Fast_Opamp0_Opamp1x +* - \ref Cy_CTB_Fast_Opamp0_Opamp10x +* - \ref Cy_CTB_Fast_Opamp0_Diffamp +* - \ref Cy_CTB_Fast_Opamp0_Vdac_Out +* - \ref Cy_CTB_Fast_Opamp0_Vdac_Out_SH +* +* Opamp1 +* - \ref Cy_CTB_Fast_Opamp1_Unused +* - \ref Cy_CTB_Fast_Opamp1_Comp +* - \ref Cy_CTB_Fast_Opamp1_Opamp1x +* - \ref Cy_CTB_Fast_Opamp1_Opamp10x +* - \ref Cy_CTB_Fast_Opamp1_Diffamp +* - \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Aref +* - \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Pin5 +* +* After initialization, call \ref Cy_CTB_Enable to enable the hardware. +* +* \section group_ctb_io_connections Input/Output Connections +* +* The CTB has internal switches to support flexible input and output routing. If these switches +* have not been configured during initialization, call \ref Cy_CTB_SetAnalogSwitch to +* make the input and output connections. +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_ANALOG_SWITCH +* +* As shown in the CTB switch diagram, the 10x output of OA0 and OA1 have dedicated +* connections to Pin 2 and Pin 3, respectively, of the CTB port. If different output +* connections are required, the other CTB switches and/or AMUXBUX A/B switches can be used. +* +* \section group_ctb_comparator Comparator Mode +* +* Each opamp can be configured as a comparator. Note that when used as a +* comparator, the hardware shuts down the 1X and 10X output drivers. +* Specific to the comparator mode, there is an optional 10 mV input hysteresis +* and configurable edge detection interrupt handling. +* +* - Negative input terminal: This input is usually connected to the reference voltage. +* - Positive input terminal: This input is usually connected to the voltage that is being compared. +* - Comparator digital output: This output goes high when the positive input voltage +* is greater than the negative input voltage. +* +* The comparator output can be routed to a pin or other components using HSIOM or trigger muxes. +* +* \snippet ctb_sut_01.cydsn/main_cm0p.c SNIPPET_COMP_OUT_ROUTING +* +* \subsection group_ctb_comparator_handling_interrupts Handling interrupts +* +* The comparator output is connected to an edge detector +* block, which is used to detect the edge (rising, falling, both, or disabled) +* for interrupt generation. +* +* The following code snippet demonstrates how to implement a routine to handle the interrupt. +* The routine gets called when any comparator on the device generates an interrupt. +* +* \snippet ctb_sut_01.cydsn/main_cm0p.c SNIPPET_COMP_ISR +* +* The following code snippet demonstrates how to configure and enable the interrupt. +* +* \snippet ctb_sut_01.cydsn/main_cm0p.c SNIPPET_COMP_INTR_SETUP +* +* \section group_ctb_opamp_range Opamp Input and Output Range +* +* The input range of the opamp can be rail-to-rail if the charge pump is enabled. +* Without the charge pump, the input range is 0 V to VDDA - 1.5 V. The output range +* of the opamp is typically 0.2 V to VDDA - 0.2 V and will depend on the load. See the +* device datasheet for more detail. +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
Charge PumpInput Range
Output Range
Enabled0 V to VDDA0.2 V to VDDA - 0.2 V
Disabled0 V to VDDA - 1.5 V0.2 V to VDDA - 0.2 V
+* +* \section group_ctb_sample_hold Sample and Hold Mode +* +* The CTB has a sample and hold (SH) circuit at the non-inverting input of Opamp0. +* The circuit includes a hold capacitor, Chold, with a firmware controlled switch, CHD. +* Sampling and holding the source voltage is performed +* by closing and opening appropriate switches in the CTB using firmware. +* If the SH circuit is used for the CTDAC, the \ref Cy_CTB_DACSampleAndHold function +* should be called. +* +* \image html ctb_fast_config_vdac_sh.png +* \image latex ctb_fast_config_vdac_sh.png +* +* \section group_ctb_dependencies Configuration Dependencies +* +* The CTB relies on other blocks to function properly. The dependencies +* are documented here. +* +* \subsection group_ctb_dependencies_charge_pump Charge Pump Configuration +* +* Each opamp of the CTB has a charge pump that when enabled increases the +* input range to the supply rails. When disabled, the opamp input range is 0 - VDDA - 1.5 V. +* When enabled, the pump requires a clock. +* Call the \ref Cy_CTB_SetClkPumpSource function in the \ref group_sysanalog driver to +* set the clock source for all CTBs. This clock can come from one of two sources: +* +* -# A dedicated clock divider from one of the CLK_PATH in the SRSS +* +* Call the following functions to configure the pump clock from the SRSS: +* - \ref Cy_SysClk_ClkPumpSetSource +* - \ref Cy_SysClk_ClkPumpSetDivider +* - \ref Cy_SysClk_ClkPumpEnable +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_CLK_PUMP_SOURCE_SRSS +* +* -# One of the Peri Clock dividers +* +* Call the following functions to configure a Peri Clock divider as the +* pump clock: +* - \ref Cy_SysClk_PeriphAssignDivider with the IP block set to PCLK_PASS_CLOCK_PUMP_PERI +* - \ref Cy_SysClk_PeriphSetDivider +* - \ref Cy_SysClk_PeriphEnableDivider +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_CLK_PUMP_SOURCE_PERI +* +* When the charge pump is enabled, the clock frequency should be set as follows: +* +* +* +* +* +* +* +* +* +* +* +*
Opamp Power LevelPump Clock Freq
Low or Medium8 - 24 MHz
High24 MHz
+* +* The High power level of the opamp requires a 24 MHz pump clock. +* In Deep Sleep mode, all high frequency clocks are +* disabled and the charge pump will be disabled. +* +* \note +* The same pump clock is used by all opamps on the device. Be aware of this +* when configuring different opamps to different power levels. +* +* \subsection group_ctb_dependencies_reference_current Reference Current Configurations +* +* The CTB uses two reference current generators, IPTAT and IZTAT, from +* the AREF block (see \ref group_sysanalog driver). The IPTAT current is +* used to trim the slope of the opamp offset across temperature. +* The AREF must be initialized and enabled for the CTB to function properly. +* +* If the CTB is configured to operate in Deep Sleep mode, +* the appropriate reference current generators from the AREF block must be enabled in Deep Sleep. +* When waking up from Deep Sleep, +* the AREF block has a wakeup time that must be +* considered. Note that configurations in the AREF block +* are chip wide and affect all CTBs on the device. +* +* The following reference current configurations are supported: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
Reference Current LevelSupported ModeInput Range
1 uAActive/Low PowerRail-to-Rail (charge pump enabled)
1 uAActive/Low Power/Deep Sleep0 - VDDA-1.5 V (charge pump disabled)
100 nAActive/Low Power/Deep Sleep0 - VDDA-1.5 V (charge pump disabled)
+* +* The first configuration provides low offset and drift with maximum input range +* while consuming the most current. +* For Deep Sleep operation, use the other two configurations with the charge pump disabled. +* For ultra low power, use the 100 nA current level. +* To configure the opamps to operate in one of these options, call \ref Cy_CTB_SetCurrentMode. +* +* \subsection group_ctb_dependencies_sample_hold Sample and Hold Switch Control +* +* If you are using rev-08 of the CY8CKIT-062, the following eight switches +* in the CTB are enabled by the CTDAC IP block: +* +* - COS, CA0, CHD, CH6, COB, COR, CRS, and CRD +* +* On the rev-08 board, if any of the above switches are used, you must call \ref Cy_CTDAC_Enable +* to enable these switches. +* +* Additionally, on the rev-08 board, if any of the switches are used in Deep Sleep mode, +* the CTDAC must also be configured to operate in Deep Sleep (see \ref Cy_CTDAC_SetDeepSleepMode). +* +* In later revisions of the board, the switches are enabled by the CTB block so +* calls to the CTDAC IP block are not necessary. +* +* \section group_ctb_more_information More Information +* +* Refer to technical reference manual (TRM) and the device datasheet. +* +* \section group_ctb_MISRA MISRA-C Compliance] +* +* This driver does not have any specific deviations. +* +* \section group_ctb_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.10Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.0Initial version
+* +* \defgroup group_ctb_macros Macros +* \defgroup group_ctb_functions Functions +* \{ +* \defgroup group_ctb_functions_init Initialization Functions +* \defgroup group_ctb_functions_basic Basic Configuration Functions +* \defgroup group_ctb_functions_comparator Comparator Functions +* \defgroup group_ctb_functions_sample_hold Sample and Hold Functions +* \defgroup group_ctb_functions_interrupts Interrupt Functions +* \defgroup group_ctb_functions_switches Switch Control Functions +* \defgroup group_ctb_functions_trim Offset and Slope Trim Functions +* \defgroup group_ctb_functions_aref Reference Current Mode Functions +* \} +* \defgroup group_ctb_globals Global Variables +* \defgroup group_ctb_data_structures Data Structures +* \defgroup group_ctb_enums Enumerated Types +*/ + +#if !defined(CY_CTB_H) +#define CY_CTB_H + +#include +#include +#include +#include "cy_device_headers.h" +#include "cy_device.h" +#include "cy_syslib.h" +#include "cy_sysanalog.h" + +#ifdef CY_IP_MXS40PASS_CTB + +#if defined(__cplusplus) +extern "C" { +#endif + +/** \addtogroup group_ctb_macros +* \{ +*/ + +/** Driver major version */ +#define CY_CTB_DRV_VERSION_MAJOR 1 + +/** Driver minor version */ +#define CY_CTB_DRV_VERSION_MINOR 10 + +/** CTB driver identifier*/ +#define CY_CTB_ID CY_PDL_DRV_ID(0x0Bu) + +/** \cond INTERNAL */ + +/**< De-init value for most CTB registers */ +#define CY_CTB_DEINIT (0uL) + +/**< De-init value for the opamp0 switch control register */ +#define CY_CTB_DEINIT_OA0_SW (CTBM_OA0_SW_CLEAR_OA0P_A00_Msk \ + | CTBM_OA0_SW_CLEAR_OA0P_A20_Msk \ + | CTBM_OA0_SW_CLEAR_OA0P_A30_Msk \ + | CTBM_OA0_SW_CLEAR_OA0M_A11_Msk \ + | CTBM_OA0_SW_CLEAR_OA0M_A81_Msk \ + | CTBM_OA0_SW_CLEAR_OA0O_D51_Msk \ + | CTBM_OA0_SW_CLEAR_OA0O_D81_Msk) + +/**< De-init value for the opamp1 switch control register */ +#define CY_CTB_DEINIT_OA1_SW (CTBM_OA1_SW_CLEAR_OA1P_A03_Msk \ + | CTBM_OA1_SW_CLEAR_OA1P_A13_Msk \ + | CTBM_OA1_SW_CLEAR_OA1P_A43_Msk \ + | CTBM_OA1_SW_CLEAR_OA1P_A73_Msk \ + | CTBM_OA1_SW_CLEAR_OA1M_A22_Msk \ + | CTBM_OA1_SW_CLEAR_OA1M_A82_Msk \ + | CTBM_OA1_SW_CLEAR_OA1O_D52_Msk \ + | CTBM_OA1_SW_CLEAR_OA1O_D62_Msk \ + | CTBM_OA1_SW_CLEAR_OA1O_D82_Msk) + +/**< De-init value for the CTDAC switch control register */ +#define CY_CTB_DEINIT_CTD_SW (CTBM_CTD_SW_CLEAR_CTDD_CRD_Msk \ + | CTBM_CTD_SW_CLEAR_CTDS_CRS_Msk \ + | CTBM_CTD_SW_CLEAR_CTDS_COR_Msk \ + | CTBM_CTD_SW_CLEAR_CTDO_C6H_Msk \ + | CTBM_CTD_SW_CLEAR_CTDO_COS_Msk \ + | CTBM_CTD_SW_CLEAR_CTDH_COB_Msk \ + | CTBM_CTD_SW_CLEAR_CTDH_CHD_Msk \ + | CTBM_CTD_SW_CLEAR_CTDH_CA0_Msk \ + | CTBM_CTD_SW_CLEAR_CTDH_CIS_Msk \ + | CTBM_CTD_SW_CLEAR_CTDH_ILR_Msk) + +#define CY_CTB_TRIM_VALUE_MAX (63uL) + +/**< Macros for conditions used by CY_ASSERT calls */ + +#define CY_CTB_OPAMPNUM(num) (((num) == CY_CTB_OPAMP_0) || ((num) == CY_CTB_OPAMP_1) || ((num) == CY_CTB_OPAMP_BOTH)) +#define CY_CTB_OPAMPNUM_0_1(num) (((num) == CY_CTB_OPAMP_0) || ((num) == CY_CTB_OPAMP_1)) +#define CY_CTB_OPAMPNUM_ALL(num) (((num) == CY_CTB_OPAMP_NONE) \ + || ((num) == CY_CTB_OPAMP_0) \ + || ((num) == CY_CTB_OPAMP_1) \ + || ((num) == CY_CTB_OPAMP_BOTH)) +#define CY_CTB_IPTAT(iptat) (((iptat) == CY_CTB_IPTAT_NORMAL) || ((iptat) == CY_CTB_IPTAT_LOW)) +#define CY_CTB_CLKPUMP(clkPump) (((clkPump) == CY_CTB_CLK_PUMP_SRSS) || ((clkPump) == CY_CTB_CLK_PUMP_PERI)) +#define CY_CTB_DEEPSLEEP(deepSleep) (((deepSleep) == CY_CTB_DEEPSLEEP_DISABLE) || ((deepSleep) == CY_CTB_DEEPSLEEP_ENABLE)) +#define CY_CTB_OAPOWER(power) ((power) <= CY_CTB_POWER_HIGH) +#define CY_CTB_OAMODE(mode) (((mode) == CY_CTB_MODE_OPAMP1X) \ + || ((mode) == CY_CTB_MODE_OPAMP10X) \ + || ((mode) == CY_CTB_MODE_COMP)) +#define CY_CTB_OAPUMP(pump) (((pump) == CY_CTB_PUMP_DISABLE) || ((pump) == CY_CTB_PUMP_ENABLE)) +#define CY_CTB_COMPEDGE(edge) (((edge) == CY_CTB_COMP_EDGE_DISABLE) \ + || ((edge) == CY_CTB_COMP_EDGE_RISING) \ + || ((edge) == CY_CTB_COMP_EDGE_FALLING) \ + || ((edge) == CY_CTB_COMP_EDGE_BOTH)) +#define CY_CTB_COMPLEVEL(level) (((level) == CY_CTB_COMP_DSI_TRIGGER_OUT_PULSE) || ((level) == CY_CTB_COMP_DSI_TRIGGER_OUT_LEVEL)) +#define CY_CTB_COMPBYPASS(bypass) (((bypass) == CY_CTB_COMP_BYPASS_SYNC) || ((bypass) == CY_CTB_COMP_BYPASS_NO_SYNC)) +#define CY_CTB_COMPHYST(hyst) (((hyst) == CY_CTB_COMP_HYST_DISABLE) || ((hyst) == CY_CTB_COMP_HYST_10MV)) +#define CY_CTB_CURRENTMODE(mode) (((mode) == CY_CTB_CURRENT_HIGH_ACTIVE) \ + || ((mode) == CY_CTB_CURRENT_HIGH_ACTIVE_DEEPSLEEP) \ + || ((mode) == CY_CTB_CURRENT_LOW_ACTIVE_DEEPSLEEP)) +#define CY_CTB_SAMPLEHOLD(mode) ((mode) <= CY_CTB_SH_HOLD) +#define CY_CTB_TRIM(trim) ((trim) <= CY_CTB_TRIM_VALUE_MAX) +#define CY_CTB_SWITCHSELECT(select) (((select) == CY_CTB_SWITCH_OA0_SW) \ + || ((select) == CY_CTB_SWITCH_OA1_SW) \ + || ((select) == CY_CTB_SWITCH_CTD_SW)) +#define CY_CTB_SWITCHSTATE(state) (((state) == CY_CTB_SWITCH_OPEN) || ((state) == CY_CTB_SWITCH_CLOSE)) +#define CY_CTB_OA0SWITCH(mask) (((mask) & (~CY_CTB_DEINIT_OA0_SW)) == 0uL) +#define CY_CTB_OA1SWITCH(mask) (((mask) & (~CY_CTB_DEINIT_OA1_SW)) == 0uL) +#define CY_CTB_CTDSWITCH(mask) (((mask) & (~CY_CTB_DEINIT_CTD_SW)) == 0uL) +#define CY_CTB_SWITCHMASK(select,mask) (((select) == CY_CTB_SWITCH_OA0_SW) ? (((mask) & (~CY_CTB_DEINIT_OA0_SW)) == 0uL) : \ + (((select) == CY_CTB_SWITCH_OA1_SW) ? (((mask) & (~CY_CTB_DEINIT_OA1_SW)) == 0uL) : \ + (((mask) & (~CY_CTB_DEINIT_CTD_SW)) == 0uL))) +#define CY_CTB_SARSEQCTRL(mask) (((mask) == CY_CTB_SW_SEQ_CTRL_D51_MASK) \ + || ((mask) == CY_CTB_SW_SEQ_CTRL_D52_D62_MASK) \ + || ((mask) == CY_CTB_SW_SEQ_CTRL_D51_D52_D62_MASK)) + +/** \endcond */ + +/** \} group_ctb_macros */ + +/*************************************** +* Enumerated Types +***************************************/ + +/** +* \addtogroup group_ctb_enums +* \{ +*/ + +/** +* Most functions allow you to configure a single opamp or both opamps at once. +* The \ref Cy_CTB_SetInterruptMask function can be called with \ref CY_CTB_OPAMP_NONE +* and interrupts will be disabled. +*/ +typedef enum{ + CY_CTB_OPAMP_NONE = 0uL, /**< For disabling interrupts for both opamps. Used with \ref Cy_CTB_SetInterruptMask */ + CY_CTB_OPAMP_0 = CTBM_INTR_COMP0_Msk, /**< For configuring Opamp0 */ + CY_CTB_OPAMP_1 = CTBM_INTR_COMP1_Msk, /**< For configuring Opamp1 */ + CY_CTB_OPAMP_BOTH = CTBM_INTR_COMP0_Msk | CTBM_INTR_COMP1_Msk, /**< For configuring both Opamp0 and Opamp1 */ +}cy_en_ctb_opamp_sel_t; + +/** Enable or disable CTB while in Deep Sleep mode. +*/ +typedef enum { + CY_CTB_DEEPSLEEP_DISABLE = 0uL, /**< CTB is disabled during Deep Sleep power mode */ + CY_CTB_DEEPSLEEP_ENABLE = CTBM_CTB_CTRL_DEEPSLEEP_ON_Msk, /**< CTB remains enabled during Deep Sleep power mode */ +}cy_en_ctb_deep_sleep_t; + +/** +* Configure the power mode of each opamp. Each power setting +* consumes different levels of current and supports a different +* input range and gain bandwidth. +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
Opamp PowerIDDGain bandwidth
OFF0NA
LOW350 uA1 MHz
MEDIUM600 uA3 MHz for 1X, 2.5 MHz for 10x
HIGH1.5 mA8 MHz for 1X, 6 MHz for 10x
+* +*/ +typedef enum { + CY_CTB_POWER_OFF = 0uL, /**< Opamp is off */ + CY_CTB_POWER_LOW = 1uL, /**< Low power: IDD = 350 uA, GBW = 1 MHz for both 1x and 10x */ + CY_CTB_POWER_MEDIUM = 2uL, /**< Medium power: IDD = 600 uA, GBW = 3 MHz for 1x and 2.5 MHz for 10x */ + CY_CTB_POWER_HIGH = 3uL, /**< High power: IDD = 1500 uA, GBW = 8 MHz for 1x and 6 MHz for 10x */ +}cy_en_ctb_power_t; + +/** +* The output stage of each opamp can be configured for low-drive strength (1X) to drive internal circuits, +* for high-drive strength (10X) to drive external circuits, or as a comparator. +*/ +typedef enum { + CY_CTB_MODE_OPAMP1X = 0uL, /**< Configure opamp for low drive strength for internal connections (1x) */ + CY_CTB_MODE_OPAMP10X = 1uL << CTBM_OA_RES0_CTRL_OA0_DRIVE_STR_SEL_Pos, /**< Configure opamp high drive strength for driving a device pin (10x) */ + CY_CTB_MODE_COMP = 1uL << CTBM_OA_RES0_CTRL_OA0_COMP_EN_Pos, /**< Configure opamp as a comparator */ +}cy_en_ctb_mode_t; + +/** +* Each opamp has a charge pump to increase the input range to the rails. +* When the charge pump is enabled, the input range is 0 to VDDA. +* When disabled, the input range is 0 to VDDA - 1.5 V. +* +** +* +* +* +* +* +* +* +* +* +*
Charge PumpInput Range (V)
OFF0 to VDDA-1.5
ON0 to VDDA
+* +* Note that in Deep Sleep mode, the charge pump is disabled so the input +* range is reduced. +*/ +typedef enum{ + CY_CTB_PUMP_DISABLE = 0uL, /**< Charge pump is disabled for an input range of 0 to VDDA - 1.5 V */ + CY_CTB_PUMP_ENABLE = CTBM_OA_RES0_CTRL_OA0_PUMP_EN_Msk, /**< Charge pump is enabled for an input range of 0 to VDDA */ +}cy_en_ctb_pump_t; + +/** +* Configure the type of edge that will trigger a comparator interrupt or +* disable the interrupt entirely. +*/ +typedef enum +{ + CY_CTB_COMP_EDGE_DISABLE = 0uL, /**< Disabled, no interrupts generated */ + CY_CTB_COMP_EDGE_RISING = 1uL << CTBM_OA_RES0_CTRL_OA0_COMPINT_Pos, /**< Rising edge generates an interrupt */ + CY_CTB_COMP_EDGE_FALLING = 2uL << CTBM_OA_RES0_CTRL_OA0_COMPINT_Pos, /**< Falling edge generates an interrupt */ + CY_CTB_COMP_EDGE_BOTH = 3uL << CTBM_OA_RES0_CTRL_OA0_COMPINT_Pos, /**< Both edges generate an interrupt */ +}cy_en_ctb_comp_edge_t; + +/** Configure the comparator DSI trigger output level when output is synchronized. */ +typedef enum +{ + CY_CTB_COMP_DSI_TRIGGER_OUT_PULSE = 0uL, /**< Send pulse on DSI for each edge of comparator output */ + CY_CTB_COMP_DSI_TRIGGER_OUT_LEVEL = CTBM_OA_RES0_CTRL_OA0_DSI_LEVEL_Msk, /**< DSI output is synchronized version of comparator output */ +}cy_en_ctb_comp_level_t; + +/** Bypass the comparator output synchronization for DSI trigger. */ +typedef enum +{ + CY_CTB_COMP_BYPASS_SYNC = 0uL, /**< Comparator output is synchronized for DSI trigger */ + CY_CTB_COMP_BYPASS_NO_SYNC = CTBM_OA_RES0_CTRL_OA0_BYPASS_DSI_SYNC_Msk, /**< Comparator output is not synchronized for DSI trigger */ +}cy_en_ctb_comp_bypass_t; + +/** Disable or enable the 10 mV hysteresis for the comparator. */ +typedef enum +{ + CY_CTB_COMP_HYST_DISABLE = 0uL, /**< Disable hysteresis */ + CY_CTB_COMP_HYST_10MV = CTBM_OA_RES0_CTRL_OA0_HYST_EN_Msk, /**< Enable the 10 mV hysteresis */ +}cy_en_ctb_comp_hyst_t; + +/** Switch state, either open or closed, to be used in \ref Cy_CTB_SetAnalogSwitch. */ +typedef enum +{ + CY_CTB_SWITCH_OPEN = 0uL, /**< Open the switch */ + CY_CTB_SWITCH_CLOSE = 1uL /**< Close the switch */ +}cy_en_ctb_switch_state_t; + +/** +* The switch register to be used in \ref Cy_CTB_SetAnalogSwitch. +* The CTB has three registers for configuring the switch routing matrix. +* */ +typedef enum +{ + CY_CTB_SWITCH_OA0_SW = 0uL, /**< Switch register for Opamp0 */ + CY_CTB_SWITCH_OA1_SW = 1uL, /**< Switch register for Opamp1 */ + CY_CTB_SWITCH_CTD_SW = 2uL, /**< Switch register for CTDAC routing */ +}cy_en_ctb_switch_register_sel_t; + +/** +* Switch masks for Opamp0 to be used in \ref Cy_CTB_SetAnalogSwitch. +*/ +typedef enum +{ + CY_CTB_SW_OA0_POS_AMUXBUSA_MASK = CTBM_OA0_SW_OA0P_A00_Msk, /**< Switch A00: Opamp0 non-inverting input to AMUXBUS A */ + CY_CTB_SW_OA0_POS_PIN0_MASK = CTBM_OA0_SW_OA0P_A20_Msk, /**< Switch A20: Opamp0 non-inverting input to Pin 0 of CTB device port */ + CY_CTB_SW_OA0_POS_PIN6_MASK = CTBM_OA0_SW_OA0P_A30_Msk, /**< Switch A30: Opamp0 non-inverting input to Pin 6 of CTB device port */ + CY_CTB_SW_OA0_NEG_PIN1_MASK = CTBM_OA0_SW_OA0M_A11_Msk, /**< Switch A11: Opamp0 inverting input to Pin 1 of CTB device port */ + CY_CTB_SW_OA0_NEG_OUT_MASK = CTBM_OA0_SW_OA0M_A81_Msk, /**< Switch A81: Opamp0 inverting input to Opamp0 output */ + CY_CTB_SW_OA0_OUT_SARBUS0_MASK = CTBM_OA0_SW_OA0O_D51_Msk, /**< Switch D51: Opamp0 output to sarbus0 */ + CY_CTB_SW_OA0_OUT_SHORT_1X_10X_MASK = CTBM_OA0_SW_OA0O_D81_Msk, /**< Switch D81: Short Opamp0 1x with 10x outputs */ +}cy_en_ctb_oa0_switches_t; + +/** +* Switch masks for Opamp1 to be used in \ref Cy_CTB_SetAnalogSwitch. +*/ +typedef enum +{ + CY_CTB_SW_OA1_POS_AMUXBUSB_MASK = CTBM_OA1_SW_OA1P_A03_Msk, /**< Switch A03: Opamp1 non-inverting input to AMUXBUS B */ + CY_CTB_SW_OA1_POS_PIN5_MASK = CTBM_OA1_SW_OA1P_A13_Msk, /**< Switch A13: Opamp1 non-inverting input to Pin 5 of CTB device port */ + CY_CTB_SW_OA1_POS_PIN7_MASK = CTBM_OA1_SW_OA1P_A43_Msk, /**< Switch A43: Opamp1 non-inverting input to Pin 7 of CTB device port */ + CY_CTB_SW_OA1_POS_AREF_MASK = CTBM_OA1_SW_OA1P_A73_Msk, /**< Switch A73: Opamp1 non-inverting input to device Analog Reference (AREF) */ + CY_CTB_SW_OA1_NEG_PIN4_MASK = CTBM_OA1_SW_OA1M_A22_Msk, /**< Switch A22: Opamp1 inverting input to Pin 4 of CTB device port */ + CY_CTB_SW_OA1_NEG_OUT_MASK = CTBM_OA1_SW_OA1M_A82_Msk, /**< switch A82: Opamp1 inverting input to Opamp1 output */ + CY_CTB_SW_OA1_OUT_SARBUS0_MASK = CTBM_OA1_SW_OA1O_D52_Msk, /**< Switch D52: Opamp1 output to sarbus0 */ + CY_CTB_SW_OA1_OUT_SARBUS1_MASK = CTBM_OA1_SW_OA1O_D62_Msk, /**< Switch D62: Opamp1 output to sarbus1 */ + CY_CTB_SW_OA1_OUT_SHORT_1X_10X_MASK = CTBM_OA1_SW_OA1O_D82_Msk, /**< Switch D82: Short Opamp1 1x with 10x outputs */ +}cy_en_ctb_oa1_switches_t; + +/** +* Switch masks for CTDAC to CTB routing to be used in \ref Cy_CTB_SetAnalogSwitch. +*/ +typedef enum +{ + CY_CTB_SW_CTD_REF_OA1_OUT_MASK = CTBM_CTD_SW_CTDD_CRD_Msk, /**< Switch CRD: Opamp1 output to CTDAC reference. */ + CY_CTB_SW_CTD_REFSENSE_OA1_NEG_MASK = CTBM_CTD_SW_CTDS_CRS_Msk, /**< Switch CRS: CTDAC reference sense to Opamp1 inverting input. */ + CY_CTB_SW_CTD_OUT_OA1_NEG_MASK = CTBM_CTD_SW_CTDS_COR_Msk, /**< Switch COR: CTDAC output to Opamp1 inverting input. */ + CY_CTB_SW_CTD_OUT_PIN6_MASK = CTBM_CTD_SW_CTDO_C6H_Msk, /**< Switch C6H: CTDAC output to P6 of CTB device port. */ + CY_CTB_SW_CTD_OUT_CHOLD_MASK = CTBM_CTD_SW_CTDO_COS_Msk, /**< Switch COS: CTDAC output to hold cap (deglitch capable). */ + CY_CTB_SW_CTD_OUT_OA0_1X_OUT_MASK = CTBM_CTD_SW_CTDH_COB_Msk, /**< Switch COB: Drive CTDAC output with opamp0 1x output during hold mode. */ + CY_CTB_SW_CTD_CHOLD_CONNECT_MASK = CTBM_CTD_SW_CTDH_CHD_Msk, /**< Switch CHD: Hold cap connection. */ + CY_CTB_SW_CTD_CHOLD_OA0_POS_MASK = CTBM_CTD_SW_CTDH_CA0_Msk, /**< Switch CA0: Hold cap to Opamp0 non-inverting input. */ + CY_CTB_SW_CTD_CHOLD_OA0_POS_ISOLATE_MASK = CTBM_CTD_SW_CTDH_CIS_Msk, /**< Switch CIS: Opamp0 non-inverting input isolation (for hold cap) */ + CY_CTB_SW_CTD_CHOLD_LEAKAGE_REDUCTION_MASK = CTBM_CTD_SW_CTDH_ILR_Msk, /**< Switch ILR: Hold cap leakage reduction (drives far side of isolation switch CIS) */ +}cy_en_ctb_ctd_switches_t; + + +/** +* Masks for CTB switches that can be controlled by the SAR sequencer. +* These masks are used in \ref Cy_CTB_EnableSarSeqCtrl and \ref Cy_CTB_DisableSarSeqCtrl. +* +* The SAR ADC subsystem supports analog routes through three CTB switches on SARBUS0 and SARBUS1. +* This control allows for pins on the CTB dedicated port to route to the SAR ADC input channels: +* +* - D51: Connects the inverting terminal of OA0 to SARBUS0 +* - D52: Connects the inverting terminal of OA1 to SARBUS0 +* - D62: Connects the inverting terminal of OA1 to SARBUS1 +*/ +typedef enum +{ + CY_CTB_SW_SEQ_CTRL_D51_MASK = CTBM_CTB_SW_SQ_CTRL_P2_SQ_CTRL23_Msk, /**< Enable SAR sequencer control of the D51 switch */ + CY_CTB_SW_SEQ_CTRL_D52_D62_MASK = CTBM_CTB_SW_SQ_CTRL_P3_SQ_CTRL23_Msk, /**< Enable SAR sequencer control of the D52 and D62 switches */ + CY_CTB_SW_SEQ_CTRL_D51_D52_D62_MASK = CTBM_CTB_SW_SQ_CTRL_P2_SQ_CTRL23_Msk | CTBM_CTB_SW_SQ_CTRL_P3_SQ_CTRL23_Msk, /**< Enable SAR sequencer control of all three switches */ +}cy_en_ctb_switch_sar_seq_t; + +/** +* Each opamp also has a programmable compensation capacitor block, +* that optimizes the stability of the opamp performance based on output load. +* The compensation cap will be set by the driver based on the opamp drive strength (1x or 10x) selection. +*/ +typedef enum +{ + CY_CTB_OPAMP_COMPENSATION_CAP_OFF = 0uL, /**< No compensation */ + CY_CTB_OPAMP_COMPENSATION_CAP_MIN = 1uL, /**< Minimum compensation - for 1x drive*/ + CY_CTB_OPAMP_COMPENSATION_CAP_MED = 2uL, /**< Medium compensation */ + CY_CTB_OPAMP_COMPENSATION_CAP_MAX = 3uL, /**< Maximum compensation - for 10x drive */ +}cy_en_ctb_compensation_cap_t; + +/** Enable or disable the gain booster. +* The gain booster will be set by the driver based on the opamp drive strength (1x or 10x) selection. +*/ +typedef enum +{ + CY_CTB_OPAMP_BOOST_DISABLE = 0uL, /**< Disable gain booster - for 10x drive */ + CY_CTB_OPAMP_BOOST_ENABLE = CTBM_OA_RES0_CTRL_OA0_BOOST_EN_Msk, /**< Enable gain booster - for 1x drive */ +}cy_en_ctb_boost_en_t; + +/** Sample and hold modes for firmware sampling of the CTDAC output. +* +* To perform a sample or a hold, a preparation step must first be executed to +* open the required switches. +* +* -# Call \ref Cy_CTB_DACSampleAndHold with \ref CY_CTB_SH_PREPARE_SAMPLE or \ref CY_CTB_SH_PREPARE_HOLD +* -# Enable or disable CTDAC output +* -# Call \ref Cy_CTB_DACSampleAndHold with \ref CY_CTB_SH_SAMPLE or \ref CY_CTB_SH_HOLD +*/ +typedef enum +{ + CY_CTB_SH_DISABLE = 0uL, /**< The hold capacitor is not connected - this disables sample and hold */ + CY_CTB_SH_PREPARE_SAMPLE = 1uL, /**< Prepares the required switches for a following sample */ + CY_CTB_SH_SAMPLE = 2uL, /**< Performs a sample of the voltage */ + CY_CTB_SH_PREPARE_HOLD = 3uL, /**< Prepares the required switches for a following hold */ + CY_CTB_SH_HOLD = 4uL, /**< Performs a hold of the previously sampled voltage */ +}cy_en_ctb_sample_hold_mode_t; + +/** AREF IPTAT bias current output for the CTB +* +* The CTB bias current can be 1 uA (normal) or 100 nA (low current). +*/ +typedef enum +{ + CY_CTB_IPTAT_NORMAL = 0uL, /**< 1 uA bias current to the CTB */ + CY_CTB_IPTAT_LOW = 1uL << PASS_AREF_AREF_CTRL_CTB_IPTAT_SCALE_Pos, /**< 100 nA bias current to the CTB */ +}cy_en_ctb_iptat_t; + +/** CTB charge pump clock sources +* +* The CTB pump clock can come from: +* - a dedicated divider clock in the SRSS +* - one of the CLK_PERI dividers +*/ +typedef enum +{ + CY_CTB_CLK_PUMP_SRSS = 0uL, /**< Use the dedicated pump clock from SRSSp */ + CY_CTB_CLK_PUMP_PERI = 1uL << PASS_AREF_AREF_CTRL_CLOCK_PUMP_PERI_SEL_Pos, /**< Use one of the CLK_PERI dividers */ +}cy_en_ctb_clk_pump_source_t; + +/** High level opamp current modes */ +typedef enum +{ + CY_CTB_CURRENT_HIGH_ACTIVE = 0uL, /**< Uses 1 uA reference current with charge pump enabled. Available in Active and Low Power */ + CY_CTB_CURRENT_HIGH_ACTIVE_DEEPSLEEP = 1uL, /**< Uses 1 uA reference current with charge pump disabled. Available in all power modes */ + CY_CTB_CURRENT_LOW_ACTIVE_DEEPSLEEP = 2uL, /**< Uses 100 nA reference current with charge pump disabled. Available in all power modes */ +}cy_en_ctb_current_mode_t; + +/** Return states for \ref Cy_CTB_Init, \ref Cy_CTB_OpampInit, \ref Cy_CTB_DeInit, and \ref Cy_CTB_FastInit */ +typedef enum { + CY_CTB_SUCCESS = 0x00uL, /**< Initialization completed successfully */ + CY_CTB_BAD_PARAM = CY_CTB_ID | CY_PDL_STATUS_ERROR | 0x01uL, /**< Input pointers were NULL and initialization could not be completed */ +}cy_en_ctb_status_t; + +/** \} group_ctb_enums */ + +/*************************************** +* Configuration Structures +***************************************/ + +/** +* \addtogroup group_ctb_data_structures +* \{ +*/ + +/** +* Configuration structure to set up the entire CTB to be used with \ref Cy_CTB_Init. +*/ +typedef struct { + cy_en_ctb_deep_sleep_t deepSleep; /**< Enable or disable the CTB during Deep Sleep */ + + /* Opamp0 configuration */ + cy_en_ctb_power_t oa0Power; /**< Opamp0 power mode: off, low, medium, or high */ + cy_en_ctb_mode_t oa0Mode; /**< Opamp0 usage mode: 1x drive, 10x drive, or as a comparator */ + cy_en_ctb_pump_t oa0Pump; /**< Opamp0 charge pump: enable to increase input range for rail-to-rail operation */ + cy_en_ctb_comp_edge_t oa0CompEdge; /**< Opamp0 comparator edge detection: disable, rising, falling, or both */ + cy_en_ctb_comp_level_t oa0CompLevel; /**< Opamp0 comparator DSI (trigger) output: pulse or level */ + cy_en_ctb_comp_bypass_t oa0CompBypass; /**< Opamp0 comparator DSI (trigger) output synchronization */ + cy_en_ctb_comp_hyst_t oa0CompHyst; /**< Opamp0 comparator hysteresis: enable for 10 mV hysteresis */ + bool oa0CompIntrEn; /**< Opamp0 comparator interrupt enable */ + + /* Opamp1 configuration */ + cy_en_ctb_power_t oa1Power; /**< Opamp1 power mode: off, low, medium, or high */ + cy_en_ctb_mode_t oa1Mode; /**< Opamp1 usage mode: 1x drive, 10x drive, or as a comparator */ + cy_en_ctb_pump_t oa1Pump; /**< Opamp1 charge pump: enable to increase input range for rail-to-rail operation */ + cy_en_ctb_comp_edge_t oa1CompEdge; /**< Opamp1 comparator edge detection: disable, rising, falling, or both */ + cy_en_ctb_comp_level_t oa1CompLevel; /**< Opamp1 comparator DSI (trigger) output: pulse or level */ + cy_en_ctb_comp_bypass_t oa1CompBypass; /**< Opamp1 comparator DSI (trigger) output synchronization */ + cy_en_ctb_comp_hyst_t oa1CompHyst; /**< Opamp1 comparator hysteresis: enable for 10 mV hysteresis */ + bool oa1CompIntrEn; /**< Opamp1 comparator interrupt enable */ + + /* Switch analog routing configuration */ + bool configRouting; /**< Configure or ignore routing related registers */ + uint32_t oa0SwitchCtrl; /**< Opamp0 routing control */ + uint32_t oa1SwitchCtrl; /**< Opamp1 routing control */ + uint32_t ctdSwitchCtrl; /**< Routing control between the CTDAC and CTB blocks */ +}cy_stc_ctb_config_t; + +/** +* This configuration structure is used to initialize only one opamp of the CTB +* without impacting analog routing. This structure is used with \ref Cy_CTB_OpampInit. +*/ +typedef struct { + cy_en_ctb_deep_sleep_t deepSleep; /**< Enable or disable the CTB during Deep Sleep */ + + /* Opamp configuration */ + cy_en_ctb_power_t oaPower; /**< Opamp power mode: off, low, medium, or high */ + cy_en_ctb_mode_t oaMode; /**< Opamp usage mode: 1x drive, 10x drive, or as a comparator */ + cy_en_ctb_pump_t oaPump; /**< Opamp charge pump: enable to increase input range for rail-to-rail operation */ + cy_en_ctb_comp_edge_t oaCompEdge; /**< Opamp comparator edge detection: disable, rising, falling, or both */ + cy_en_ctb_comp_level_t oaCompLevel; /**< Opamp comparator DSI (trigger) output: pulse or level */ + cy_en_ctb_comp_bypass_t oaCompBypass; /**< Opamp comparator DSI (trigger) output synchronization */ + cy_en_ctb_comp_hyst_t oaCompHyst; /**< Opamp comparator hysteresis: enable for 10 mV hysteresis */ + bool oaCompIntrEn; /**< Opamp comparator interrupt enable */ +}cy_stc_ctb_opamp_config_t; + +/** This configuration structure is used to quickly initialize Opamp0 for the most commonly used configurations. +* +* Other configuration options are set to: +* - .oa0Pump = \ref CY_CTB_PUMP_ENABLE +* - .oa0CompEdge = \ref CY_CTB_COMP_EDGE_BOTH +* - .oa0CompLevel = \ref CY_CTB_COMP_DSI_TRIGGER_OUT_LEVEL +* - .oa0CompBypass = \ref CY_CTB_COMP_BYPASS_SYNC +* - .oa0CompHyst = \ref CY_CTB_COMP_HYST_10MV +* - .oa0CompIntrEn = true +*/ +typedef struct +{ + cy_en_ctb_power_t oa0Power; /**< Opamp0 power mode: off, low, medium, or high */ + cy_en_ctb_mode_t oa0Mode; /**< Opamp0 usage mode: 1x drive, 10x drive, or as a comparator */ + uint32_t oa0SwitchCtrl; /**< Opamp0 routing control */ + uint32_t ctdSwitchCtrl; /**< Routing control between the CTDAC and CTB blocks */ +}cy_stc_ctb_fast_config_oa0_t; + +/** This configuration structure is used to quickly initialize Opamp1 for the most commonly used configurations. +* +* Other configuration options are set to: +* - .oa1Pump = \ref CY_CTB_PUMP_ENABLE +* - .oa1CompEdge = \ref CY_CTB_COMP_EDGE_BOTH +* - .oa1CompLevel = \ref CY_CTB_COMP_DSI_TRIGGER_OUT_LEVEL +* - .oa1CompBypass = \ref CY_CTB_COMP_BYPASS_SYNC +* - .oa1CompHyst = \ref CY_CTB_COMP_HYST_10MV +* - .oa1CompIntrEn = true +*/ +typedef struct +{ + cy_en_ctb_power_t oa1Power; /**< Opamp1 power mode: off, low, medium, or high */ + cy_en_ctb_mode_t oa1Mode; /**< Opamp1 usage mode: 1x drive, 10x drive, or as a comparator */ + uint32_t oa1SwitchCtrl; /**< Opamp1 routing control */ + uint32_t ctdSwitchCtrl; /**< Routing control between the CTDAC and CTB blocks */ +}cy_stc_ctb_fast_config_oa1_t; + +/** \} group_ctb_data_structures */ + + +/** \addtogroup group_ctb_globals +* \{ +*/ +/*************************************** +* Global Variables +***************************************/ + +/** Configure Opamp0 as unused - powered down. See \ref Cy_CTB_FastInit. */ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Unused; + +/** Configure Opamp0 as a comparator. No routing is configured. +* +* \image html ctb_fast_config_comp.png +* \image latex ctb_fast_config_comp.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Comp; + +/** Configure Opamp0 as an opamp with 1x drive. No routing is configured. +* +* \image html ctb_fast_config_opamp1x.png +* \image latex ctb_fast_config_opamp1x.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Opamp1x; + +/** Configure Opamp0 as an opamp with 10x drive. No routing is configured. +* +* \image html ctb_fast_config_opamp10x.png +* \image latex ctb_fast_config_opamp10x.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Opamp10x; + +/** Configure Opamp0 as one stage of a differential amplifier. +* The opamp is in 10x drive and the switches shown are closed. +* +* \image html ctb_fast_config_oa0_diffamp.png +* \image latex ctb_fast_config_oa0_diffamp.png width=100px +* +* See the device datasheet for the dedicated CTB port. +* +* To be used with \ref Cy_CTB_FastInit and \ref Cy_CTB_Fast_Opamp1_Diffamp. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Diffamp; + +/** Configure Opamp0 as a buffer for the CTDAC output. +* The buffer is in 10x drive and the switches shown are closed. +* Configure the CTDAC for output buffer mode by calling \ref Cy_CTDAC_FastInit +* with \ref Cy_CTDAC_Fast_VddaRef_BufferedOut or \ref Cy_CTDAC_Fast_OA1Ref_BufferedOut. +* +* \image html ctb_fast_config_vdac_output.png +* \image latex ctb_fast_config_vdac_output.png +* +* See the device datasheet for the dedicated CTB port. +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Vdac_Out; + +/** Configure Opamp0 as a buffer for the CTDAC output with the sample and hold capacitor connected. +* The buffer is in 10x drive and the switches shown are closed. +* Configure the CTDAC for output buffer mode by calling \ref Cy_CTDAC_FastInit +* with \ref Cy_CTDAC_Fast_VddaRef_BufferedOut or \ref Cy_CTDAC_Fast_OA1Ref_BufferedOut. + +* \image html ctb_fast_config_vdac_sh.png +* \image latex ctb_fast_config_vdac_sh.png +* +* See the device datasheet for the dedicated CTB port. +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa0_t Cy_CTB_Fast_Opamp0_Vdac_Out_SH; + +/** Configure Opamp1 as unused - powered down. See \ref Cy_CTB_FastInit.*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Unused; + +/** Configure Opamp1 as a comparator. No routing is configured. +* +* \image html ctb_fast_config_comp.png +* \image latex ctb_fast_config_comp.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Comp; + +/** Configure Opamp1 as an opamp with 1x drive. No routing is configured. +* +* \image html ctb_fast_config_opamp1x.png +* \image latex ctb_fast_config_opamp1x.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Opamp1x; + +/** Configure Opamp1 as an opamp with 10x drive. No routing is configured. +* +* \image html ctb_fast_config_opamp10x.png +* \image latex ctb_fast_config_opamp10x.png width=100px +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Opamp10x; + +/** Configure Opamp1 as one stage of a differential amplifier. +* The opamp is in 10x drive and the switches shown are closed. +* +* \image html ctb_fast_config_oa1_diffamp.png +* \image latex ctb_fast_config_oa1_diffamp.png width=100px +* +* See the device datasheet for the dedicated CTB port. +* +* To be used with \ref Cy_CTB_FastInit and \ref Cy_CTB_Fast_Opamp0_Diffamp. +* +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Diffamp; + +/** Configure Opamp1 as a buffer for the CTDAC reference. The reference comes from the +* internal analog reference block (AREF). +* The buffer is in 1x drive and the switches shown are closed. +* Configure the CTDAC to use the buffered reference by calling \ref Cy_CTDAC_FastInit +* with \ref Cy_CTDAC_Fast_OA1Ref_UnbufferedOut or \ref Cy_CTDAC_Fast_OA1Ref_BufferedOut. +* +* \image html ctb_fast_config_vdac_aref.png +* \image latex ctb_fast_config_vdac_aref.png +* +* See \ref Cy_CTB_FastInit. +* +* Note the AREF block needs to be configured using a separate driver. +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Vdac_Ref_Aref; + +/** Configure Opamp1 as a buffer for the CTDAC reference. The reference comes from Pin 5. +* The buffer is in 1x drive and the switches shown are closed. +* Configure the CTDAC to use the buffered reference by calling \ref Cy_CTDAC_FastInit +* with \ref Cy_CTDAC_Fast_OA1Ref_UnbufferedOut or \ref Cy_CTDAC_Fast_OA1Ref_BufferedOut. +* +* \image html ctb_fast_config_vdac_pin5.png +* \image latex ctb_fast_config_vdac_pin5.png +* +* See the device datasheet for the dedicated CTB port. +* +* See \ref Cy_CTB_FastInit. +*/ +extern const cy_stc_ctb_fast_config_oa1_t Cy_CTB_Fast_Opamp1_Vdac_Ref_Pin5; + +/** \} group_ctb_globals */ + +/*************************************** +* Function Prototypes +***************************************/ + +/** +* \addtogroup group_ctb_functions +* \{ +*/ + +/** +* \addtogroup group_ctb_functions_init +* This set of functions are for initializing, enabling, and disabling the CTB. +* \{ +*/ +cy_en_ctb_status_t Cy_CTB_Init(CTBM_Type *base, const cy_stc_ctb_config_t *config); +cy_en_ctb_status_t Cy_CTB_OpampInit(CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum, const cy_stc_ctb_opamp_config_t *config); +cy_en_ctb_status_t Cy_CTB_DeInit(CTBM_Type *base, bool deInitRouting); +cy_en_ctb_status_t Cy_CTB_FastInit(CTBM_Type *base, const cy_stc_ctb_fast_config_oa0_t *config0, const cy_stc_ctb_fast_config_oa1_t *config1); +__STATIC_INLINE void Cy_CTB_Enable(CTBM_Type *base); +__STATIC_INLINE void Cy_CTB_Disable(CTBM_Type *base); +/** \} */ + +/** +* \addtogroup group_ctb_functions_basic +* This set of functions are for configuring basic usage of the CTB. +* \{ +*/ +void Cy_CTB_SetDeepSleepMode(CTBM_Type *base, cy_en_ctb_deep_sleep_t deepSleep); +void Cy_CTB_SetOutputMode(CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum, cy_en_ctb_mode_t mode); +void Cy_CTB_SetPower(CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum, cy_en_ctb_power_t power, cy_en_ctb_pump_t pump); +/** \} */ + +/** +* \addtogroup group_ctb_functions_sample_hold +* This function enables sample and hold of the CTDAC output. +* \{ +*/ +void Cy_CTB_DACSampleAndHold(CTBM_Type *base, cy_en_ctb_sample_hold_mode_t mode); +/** \} */ + +/** +* \addtogroup group_ctb_functions_comparator +* This set of functions are specific to the comparator mode +* \{ +*/ +void Cy_CTB_CompSetConfig(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum, cy_en_ctb_comp_level_t level, cy_en_ctb_comp_bypass_t bypass, cy_en_ctb_comp_hyst_t hyst); +uint32_t Cy_CTB_CompGetConfig(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +void Cy_CTB_CompSetInterruptEdgeType(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum, cy_en_ctb_comp_edge_t edge); +uint32_t Cy_CTB_CompGetStatus(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +/** \} */ + +/** +* \addtogroup group_ctb_functions_trim +* These are advanced functions for trimming the offset and slope of the opamps. +* Most users do not need to call these functions and can use the factory trimmed values. +* \{ +*/ +void Cy_CTB_OpampSetOffset(CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum, uint32_t trim); +uint32_t Cy_CTB_OpampGetOffset(const CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum); +void Cy_CTB_OpampSetSlope(CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum, uint32_t trim); +uint32_t Cy_CTB_OpampGetSlope(const CTBM_Type *base, cy_en_ctb_opamp_sel_t opampNum); +/** \} */ + +/** +* \addtogroup group_ctb_functions_switches +* This set of functions is for controlling routing switches. +* \{ +*/ +void Cy_CTB_SetAnalogSwitch(CTBM_Type *base, cy_en_ctb_switch_register_sel_t switchSelect, uint32_t switchMask, cy_en_ctb_switch_state_t state); +uint32_t Cy_CTB_GetAnalogSwitch(const CTBM_Type *base, cy_en_ctb_switch_register_sel_t switchSelect); +__STATIC_INLINE void Cy_CTB_OpenAllSwitches(CTBM_Type *base); +__STATIC_INLINE void Cy_CTB_EnableSarSeqCtrl(CTBM_Type *base, cy_en_ctb_switch_sar_seq_t switchMask); +__STATIC_INLINE void Cy_CTB_DisableSarSeqCtrl(CTBM_Type *base, cy_en_ctb_switch_sar_seq_t switchMask); +/** \} */ + +/** +* \addtogroup group_ctb_functions_interrupts +* This set of functions is related to the comparator interrupts. +* \{ +*/ +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptStatus(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +__STATIC_INLINE void Cy_CTB_ClearInterrupt(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +__STATIC_INLINE void Cy_CTB_SetInterrupt(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +__STATIC_INLINE void Cy_CTB_SetInterruptMask(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptMask(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptStatusMasked(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum); +/** \} */ + +/** +* \addtogroup group_ctb_functions_aref +* This set of functions impacts all opamps on the chip. +* Notice how some of these functions do not take a base address input. +* When calling \ref Cy_CTB_SetCurrentMode for a CTB instance on the device, +* it should be called for all other CTB instances as well. This is because +* there is only one IPTAT level (1 uA or 100 nA) chip wide. +* \{ +*/ +void Cy_CTB_SetCurrentMode(CTBM_Type *base, cy_en_ctb_current_mode_t currentMode); +__STATIC_INLINE void Cy_CTB_SetIptatLevel(cy_en_ctb_iptat_t iptat); +__STATIC_INLINE void Cy_CTB_SetClkPumpSource(cy_en_ctb_clk_pump_source_t clkPump); +__STATIC_INLINE void Cy_CTB_EnableRedirect(void); +__STATIC_INLINE void Cy_CTB_DisableRedirect(void); +/** \} */ + +/** +* \addtogroup group_ctb_functions_init +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_CTB_Enable +****************************************************************************//** +* +* Power up the CTB hardware block. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_Enable(CTBM_Type *base) +{ + CTBM_CTB_CTRL(base) |= CTBM_CTB_CTRL_ENABLED_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTB_Disable +****************************************************************************//** +* +* Power down the CTB hardware block. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_Disable(CTBM_Type *base) +{ + CTBM_CTB_CTRL(base) &= (~CTBM_CTB_CTRL_ENABLED_Msk); +} + +/** \} */ + +/** +* \addtogroup group_ctb_functions_switches +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_CTB_OpenAllSwitches +****************************************************************************//** +* +* Open all the switches and disable all hardware (SAR Sequencer and DSI) control of the switches. +* Primarily used as a quick method of re-configuring all analog connections +* that are sparsely closed. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_OPEN_ALL_SWITCHES +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_OpenAllSwitches(CTBM_Type *base) +{ + CTBM_OA0_SW_CLEAR(base) = CY_CTB_DEINIT_OA0_SW; + CTBM_OA1_SW_CLEAR(base) = CY_CTB_DEINIT_OA1_SW; + CTBM_CTD_SW_CLEAR(base) = CY_CTB_DEINIT_CTD_SW; + CTBM_CTB_SW_DS_CTRL(base) = CY_CTB_DEINIT; + CTBM_CTB_SW_SQ_CTRL(base) = CY_CTB_DEINIT; +} + +/******************************************************************************* +* Function Name: Cy_CTB_EnableSarSeqCtrl +****************************************************************************//** +* +* Enable SAR sequencer control of specified switch(es). +* +* This allows the SAR ADC to use routes through the CTB when configuring its channels. +* +* There are three switches in the CTB that can be enabled by the SAR sequencer. +* - D51: This switch connects the negative input of Opamp0 to the SARBUS0 +* - D52: This switch connects the positive input of Opamp1 to the SARBUS0 +* - D62: This switch connects the positive input of Opamp1 to the SARBUS1 +* +* \param base +* Pointer to structure describing registers +* +* \param switchMask +* The switch or switches in which to enable SAR sequencer control. +* Use an enumerated value from \ref cy_en_ctb_switch_sar_seq_t. +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_ENABLE_SAR_SEQ_CTRL +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_EnableSarSeqCtrl(CTBM_Type *base, cy_en_ctb_switch_sar_seq_t switchMask) +{ + CY_ASSERT_L3(CY_CTB_SARSEQCTRL(switchMask)); + + CTBM_CTB_SW_SQ_CTRL(base) |= (uint32_t) switchMask; +} + +/******************************************************************************* +* Function Name: Cy_CTB_DisableSarSeqCtrl +****************************************************************************//** +* +* Disable SAR sequencer control of specified switch(es). +* +* \param base +* Pointer to structure describing registers +* +* \param switchMask +* The switch or switches in which to disable SAR sequencer control. +* Use an enumerated value from \ref cy_en_ctb_switch_sar_seq_t. +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_DISABLE_SAR_SEQ_CTRL +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_DisableSarSeqCtrl(CTBM_Type *base, cy_en_ctb_switch_sar_seq_t switchMask) +{ + CY_ASSERT_L3(CY_CTB_SARSEQCTRL(switchMask)); + + CTBM_CTB_SW_SQ_CTRL(base) &= ~((uint32_t) switchMask); +} +/** \} */ + +/** +* \addtogroup group_ctb_functions_interrupts +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_CTB_GetInterruptStatus +****************************************************************************//** +* +* Return the status of the interrupt when the configured comparator +* edge is detected. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH +* +* \return +* The interrupt status. +* If compNum is \ref CY_CTB_OPAMP_BOTH, cast the returned status +* to \ref cy_en_ctb_opamp_sel_t to determine which comparator edge (or both) +* was detected. +* - 0: Edge was not detected +* - Non-zero: Configured edge type was detected +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm0p.c SNIPPET_COMP_GETINTERRUPTSTATUS +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptStatus(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM(compNum)); + + return CTBM_INTR(base) & (uint32_t) compNum; +} + +/******************************************************************************* +* Function Name: Cy_CTB_ClearInterrupt +****************************************************************************//** +* +* Clear the CTB comparator triggered interrupt. +* The interrupt must be cleared with this function so that the hardware +* can set subsequent interrupts and those interrupts can be forwarded +* to the interrupt controller, if enabled. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_ClearInterrupt(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM(compNum)); + + CTBM_INTR(base) = (uint32_t) compNum; + + /* Dummy read for buffered writes. */ + (void) CTBM_INTR(base); +} + +/******************************************************************************* +* Function Name: Cy_CTB_SetInterrupt +****************************************************************************//** +* +* Force the CTB interrupt to trigger using software. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_SetInterrupt(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM(compNum)); + + CTBM_INTR_SET(base) = (uint32_t) compNum; +} + +/******************************************************************************* +* Function Name: Cy_CTB_SetInterruptMask +****************************************************************************//** +* +* Configure the CTB comparator edge interrupt to be forwarded to the +* CPU interrupt controller. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_NONE, \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH. +* Calling this function with CY_CTB_OPAMP_NONE will disable all interrupt requests. +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_INTERRUPT_MASK +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_SetInterruptMask(CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM_ALL(compNum)); + + CTBM_INTR_MASK(base) = (uint32_t) compNum; +} + +/******************************************************************************* +* Function Name: Cy_CTB_GetInterruptMask +****************************************************************************//** +* +* Return whether the CTB comparator edge interrupt output is +* forwarded to the CPU interrupt controller as configured by +* \ref Cy_CTB_SetInterruptMask. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH +* +* \return +* The interrupt mask. +* If compNum is \ref CY_CTB_OPAMP_BOTH, cast the returned mask +* to \ref cy_en_ctb_opamp_sel_t to determine which comparator interrupt +* output (or both) is forwarded. +* - 0: Interrupt output not forwarded to interrupt controller +* - Non-zero: Interrupt output forwarded to interrupt controller +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_GET_INTERRUPT_MASK +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptMask(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM(compNum)); + + return CTBM_INTR_MASK(base) & (uint32_t) compNum; +} + +/******************************************************************************* +* Function Name: Cy_CTB_GetInterruptStatusMasked +****************************************************************************//** +* +* Return the CTB comparator edge output interrupt state after being masked. +* This is the bitwise AND of \ref Cy_CTB_GetInterruptStatus and \ref Cy_CTB_GetInterruptMask. +* +* \param base +* Pointer to structure describing registers +* +* \param compNum +* \ref CY_CTB_OPAMP_0, \ref CY_CTB_OPAMP_1, or \ref CY_CTB_OPAMP_BOTH +* +* \return +* If compNum is \ref CY_CTB_OPAMP_BOTH, cast the returned value +* to \ref cy_en_ctb_opamp_sel_t to determine which comparator interrupt +* output (or both) is detected and masked. +* - 0: Configured edge not detected or not masked +* - Non-zero: Configured edge type detected and masked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTB_GetInterruptStatusMasked(const CTBM_Type *base, cy_en_ctb_opamp_sel_t compNum) +{ + CY_ASSERT_L3(CY_CTB_OPAMPNUM(compNum)); + + return CTBM_INTR_MASKED(base) & (uint32_t) compNum; +} +/** \} */ + +/** +* \addtogroup group_ctb_functions_aref +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_CTB_SetIptatLevel +****************************************************************************//** +* +* Set the IPTAT reference level to 1 uA or 100 nA. The IPTAT generator is used by the CTB +* for slope offset drift. +* +* \param iptat +* Value from enum \ref cy_en_ctb_iptat_t +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_IPTAT_LEVEL +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_SetIptatLevel(cy_en_ctb_iptat_t iptat) +{ + CY_ASSERT_L3(CY_CTB_IPTAT(iptat)); + + PASS_AREF_AREF_CTRL = (PASS_AREF_AREF_CTRL & ~PASS_AREF_AREF_CTRL_CTB_IPTAT_SCALE_Msk) | (uint32_t) iptat; +} + +/******************************************************************************* +* Function Name: Cy_CTB_SetClkPumpSource +****************************************************************************//** +* +* Set the clock source for both charge pumps in the CTB. Recall that each opamp +* has its own charge pump. The clock can come from: +* +* - A dedicated divider off of one of the CLK_PATH in the SRSS. +* Call the following functions to configure the pump clock from the SRSS: +* - \ref Cy_SysClk_ClkPumpSetSource +* - \ref Cy_SysClk_ClkPumpDisable +* - \ref Cy_SysClk_ClkPumpSetDivider +* - \ref Cy_SysClk_ClkPumpEnable +* - One of the Peri Clock dividers. +* Call the following functions to configure a Peri Clock divider as the +* pump clock: +* - \ref Cy_SysClk_PeriphDisableDivider +* - \ref Cy_SysClk_PeriphAssignDivider with the IP block set to PCLK_PASS_CLOCK_PUMP_PERI +* - \ref Cy_SysClk_PeriphSetDivider +* - \ref Cy_SysClk_PeriphEnableDivider +* +* \param clkPump +* Clock source selection (SRSS or PeriClk) for the pump. Select a value from +* \ref cy_en_ctb_clk_pump_source_t +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_CLK_PUMP_SOURCE_SRSS +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_SET_CLK_PUMP_SOURCE_PERI +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_SetClkPumpSource(cy_en_ctb_clk_pump_source_t clkPump) +{ + CY_ASSERT_L3(CY_CTB_CLKPUMP(clkPump)); + + PASS_AREF_AREF_CTRL = (PASS_AREF_AREF_CTRL & ~PASS_AREF_AREF_CTRL_CLOCK_PUMP_PERI_SEL_Msk) | (uint32_t) clkPump; +} + +/******************************************************************************* +* Function Name: Cy_CTB_EnableRedirect +****************************************************************************//** +* +* Normally, the AREF IZTAT is routed to the CTB IZTAT and the AREF IPTAT +* is routed to the CTB IPTAT: +* +* - CTB.IZTAT = AREF.IZTAT +* - CTB.IPTAT = AREF.IPTAT +* +* However, the AREF IPTAT can be redirected to the CTB IZTAT and the CTB IPTAT +* is off. +* +* - CTB.IZTAT = AREF.IPTAT +* - CTB.IPTAT = HiZ +* +* The redirection applies to all opamps on the device and +* should be used when the IPTAT bias level is set to 100 nA +* (see \ref Cy_CTB_SetIptatLevel). +* +* When the CTB.IPTAT is HiZ, the CTB cannot compensate for the slope of +* the offset across temperature. +* +* \return None +* +* \funcusage +* +* \snippet ctb_sut_01.cydsn/main_cm4.c CTB_SNIPPET_ENABLE_REDIRECT +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_EnableRedirect(void) +{ + PASS_AREF_AREF_CTRL |= PASS_AREF_AREF_CTRL_CTB_IPTAT_REDIRECT_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTB_DisableRedirect +****************************************************************************//** +* +* Disable the redirection of the AREF IPTAT to the CTB IZTAT for all opamps +* on the device as enabled by \ref Cy_CTB_EnableRedirect. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTB_DisableRedirect(void) +{ + PASS_AREF_AREF_CTRL &= ~(PASS_AREF_AREF_CTRL_CTB_IPTAT_REDIRECT_Msk); +} + +/** \} */ + +/** \} group_ctb_functions */ + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_IP_MXS40PASS_CTB */ + +#endif /** !defined(CY_CTB_H) */ + +/** \} group_ctb */ + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctdac.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctdac.h new file mode 100644 index 00000000000..5f294c89db5 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ctdac.h @@ -0,0 +1,1087 @@ +/***************************************************************************//** +* \file cy_ctdac.h +* \version 2.0 +* +* Header file for the CTDAC driver +* +******************************************************************************** +* \copyright +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_ctdac +* \{ +* The CTDAC driver provides APIs to configure the 12-bit Continuous-Time DAC. +* +* The functions and other declarations used in this driver are in cy_ctdac.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* - 12-bit continuous time output +* - 2 us settling time for a 25 pF load when output buffered through Opamp0 of \ref group_ctb "CTB" +* - Can be enabled in Deep Sleep power mode +* - Selectable voltage reference: +* - VDDA +* - Internal analog reference buffered through Opamp1 of \ref group_ctb "CTB" +* - External reference buffered through Opamp1 of \ref group_ctb "CTB" +* - Selectable output paths: +* - Direct DAC output to a pin +* - Buffered DAC output through Opamp0 of \ref group_ctb "CTB" +* - Sample and hold output path through Opamp0 of \ref group_ctb "CTB" +* - Selectable input modes: +* - Unsigned 12-bit mode +* - Virtual signed 12-bit mode +* - Configurable update rate using clock or strobe signal +* - Double buffered DAC voltage control register +* - Interrupt and DMA trigger on DAC buffer empty +* - Configurable as PGA along with Opamp1 of the \ref group_ctb "CTB" +* +* The CTDAC generates a 12-bit DAC output voltage from the reference. +* The DAC reference can come from VDDA or from any signal buffered through Opamp0 +* of the CTB. This can be an external signal through a GPIO or from the internal +* AREF. The CTDAC is closely integrated with the CTB block, +* which provides easy buffering of the DAC output voltage, +* buffered input reference voltage, and sample and hold for the DAC output. +* The CTDAC control interface provides control of the DAC output through CPU or DMA. +* This includes a double-buffered DAC voltage control register, clock input for programmable +* update rate, interrupt on DAC buffer empty, and trigger to DMA. +* +* \image html ctdac_block_diagram.png +* \image latex ctdac_block_diagram.png +* +* The CTDAC has two switches, CO6 for configuring the output path and +* CVD for the reference source. +* +* \image html ctdac_switches.png +* \image latex ctdac_switches.png +* +* \section group_ctdac_init Initialization +* +* Configure the CTDAC hardware block by calling \ref Cy_CTDAC_Init. +* The base address of the CTDAC hardware can be found in the device-specific header file. +* If the buffers in the CTB are used for the reference source or the output, +* initialize the CTB hardware block. After both blocks are initialized, +* enable the CTB block before enabling the CTDAC block. +* +* The driver also provides a \ref Cy_CTDAC_FastInit function for fast and easy initialization of the CTDAC. +* The driver has pre-defined configuration structures for the four combinations of the reference and output buffers. +* +* - \ref Cy_CTDAC_Fast_VddaRef_UnbufferedOut +* - \ref Cy_CTDAC_Fast_VddaRef_BufferedOut +* - \ref Cy_CTDAC_Fast_OA1Ref_UnbufferedOut +* - \ref Cy_CTDAC_Fast_OA1Ref_BufferedOut +* +* After initialization, call \ref Cy_CTDAC_Enable to enable the hardware. +* +* \section group_ctdac_updatemode Update Modes +* The CTDAC contains two registers: +* -# CTDAC_VAL +* +* For direct firmware writes to update the current DAC value immediately. +* This register is written with \ref Cy_CTDAC_SetValue. +* -# CTDAC_VAL_NXT +* +* For buffered writes to update the DAC value at a +* periodic rate or with a strobe trigger input. +* This register is written with \ref Cy_CTDAC_SetValueBuffered. +* +* The update mode is +* selected during initialization with the \ref cy_stc_ctdac_config_t.updateMode. +* Four of these modes require a dedicated clock resource and the driver +* can configure the clock during initialization (see \ref cy_stc_ctdac_config_t). +* +* Three of these modes use a strobe signal through the digital signal interface (DSI). +* This allows control of the buffered update timing from an external source, for example, by another +* chip peripheral or from an off-chip source. +* +* \subsection group_ctdac_updatemode_direct_write Direct write +* +* In this mode, the user writes directly into the CTDAC_VAL register +* using \ref Cy_CTDAC_SetValue. The action of writing to this register +* will update the DAC output. This mode does not generate an interrupt +* or trigger signal. +* In this mode, a clock must not be configured. Additionally, calling \ref +* Cy_CTDAC_SetValueBuffered does not update the DAC output. +* +* \image html ctdac_update_mode_direct_write.png +* \image latex ctdac_update_mode_direct_write.png +* +* \subsection group_ctdac_updatemode_buffered_write Buffered write +* +* In this mode, the user writes to the CTDAC_VAL_NXT register using +* \ref Cy_CTDAC_SetValueBuffered. The rising edge of the clock +* will update the DAC output and generate the interrupt and trigger signals. +* +* Whenever data is transferred from the CTDAC_VAL_NXT register, +* an interrupt is asserted the same time as the trigger. But while +* the trigger is automatically cleared after two PeriClk cycles, the +* user must clear the interrupt with \ref Cy_CTDAC_ClearInterrupt. +* +* \image html ctdac_update_mode_buffered_write.png +* \image latex ctdac_update_mode_buffered_write.png +* +* \subsection group_ctdac_updatemode_strobe_edge_sync Strobe edge sync +* +* In this mode, the user writes to the CTDAC_VAL_NXT register using +* \ref Cy_CTDAC_SetValueBuffered. +* Each rising edge of the DSI strobe input enables +* one subsequent update from the next rising edge of the clock. The DSI +* input must remain high for two PeriClk cycles and go low for +* another two PeriClk cycles to allow for the next update. +* This restricts the DSI strobe input frequency to the PeriClk frequency divided by four. +* +* \image html ctdac_update_mode_strobe_edge_sync.png +* \image latex ctdac_update_mode_strobe_edge_sync.png +* +* \subsection group_ctdac_updatemode_strobe_edge_immediate Strobe edge immediate +* +* In this mode, the user writes to the CTDAC_VAL_NXT register using +* \ref Cy_CTDAC_SetValueBuffered. +* The clock resource is used but set to a logic high. +* Therefore, each rising edge of the DSI strobe input immediately +* updates the DAC output. +* +* \image html ctdac_update_mode_strobe_edge_immediate.png +* \image latex ctdac_update_mode_strobe_edge_immediate.png +* +* \subsection group_ctdac_updatemode_strobe_level Strobe level +* +* In this mode, the user writes to the CTDAC_VAL_NXT register using +* \ref Cy_CTDAC_SetValueBuffered. +* The DSI strobe input acts as a hardware enable signal. +* While the DSI strobe input is high, the mode behaves +* like the Buffered write mode. When the DSI strobe input is low, +* updates are disabled. +* +* \image html ctdac_update_mode_strobe_level.png +* \image latex ctdac_update_mode_strobe_level.png +* +* \section group_ctdac_dacmode DAC Modes +* +* The format of code stored in the CTDAC_VAL register can either be unsigned +* or signed two's complemented. +* Only the first 12 bits of the register are used by the DAC so there is +* no need for sign extension. With the signed format, the DAC decodes +* the code in the register by adding 0x800. +* The DAC can output the register value or the register value plus 1 (see \ref Cy_CTDAC_SetOutputMode). +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
12-bit unsigned code12-bit two's complement signed codeVout (for \ref CY_CTDAC_OUTPUT_VALUE )Vout (for \ref CY_CTDAC_OUTPUT_VALUE_PLUS1 )
0x0000x8000Vref/4096
0x8000x0000.5 * VrefVref * 2049 / 4096
0xFFF0x7FFVref * 4095 / 4096Vref
+* +* The expressions in the above table are based on an unbuffered DAC output. +* When the output is buffered, the input and output range of the buffer will affect the +* output voltage. See \ref group_ctb_opamp_range in the CTB driver for more information. +* +* \section group_ctdac_trigger Interrupts and Trigger +* +* When data from the CTDAC_VAL_NXT is transferred to the CTDAC_VAL register, +* an interrupt and trigger output are generated. The trigger output can be +* used with a DMA block to update the CTDAC value register at high speeds without any CPU intervention. +* Alternatively, the interrupt output can be used when DMA is not available +* to update the CTDAC value register, but at a slower speed. +* +* Recall with the \ref group_ctdac_updatemode, the interrupt and trigger output are available in all modes except +* \ref group_ctdac_updatemode_direct_write. +* +* \subsection group_ctdac_dma_trigger DMA Trigger +* +* The CTDAC trigger output signal can be routed to a DMA block using the \ref group_trigmux +* to trigger an update to the CTDAC_VAL_NXT register. +* When making the required \ref Cy_TrigMux_Connect calls, use the pre-defined enums, TRIG14_IN_PASS_TR_CTDAC_EMPTY +* and TRIGGER_TYPE_PASS_TR_CTDAC_EMPTY. +* +* \subsection group_ctdac_handling_interrupts Handling Interrupts +* +* The following code snippet demonstrates how to implement a routine to handle the interrupt. +* The routine gets called when any CTDAC on the device generates an interrupt. +* +* \snippet ctdac_sut_01.cydsn/main_cm0p.c SNIPPET_CTDAC_ISR +* +* The following code snippet demonstrates how to configure and enable the interrupt. +* +* \snippet ctdac_sut_01.cydsn/main_cm0p.c SNIPPET_CTDAC_INTR_SETUP +* +* \snippet ctdac_sut_01.cydsn/main_cm4.c CTDAC_SNIPPET_DMA_TRIGGER +* +* \section group_ctdac_deglitch Deglitch +* +* The hardware has the ability to deglitch the output value every time it is updated. +* This prevents small glitches in the DAC output during an update to propagate to +* the pin or opamp input. When deglitch is enabled, a switch on the output path +* is forced open for a configurable number of PeriClk cycles. This deglitch time +* is calculated as: +* +* (DEGLITCH_CNT + 1) / PERI_CLOCK_FREQ +* +* The optimal and recommended deglitch time is 700 ns. Call \ref Cy_CTDAC_SetDeglitchCycles to set DEGLITCH_CNT. +* +* There are two switches used for deglitching. +* - Switch COS in the CTB between the DAC output and the Opamp0 input +* - Switch CO6 in the CTDAC between the DAC output and external pin +* +* Call \ref Cy_CTDAC_SetDeglitchMode to set the deglitch path. Match this with the output buffer selection. +* If the output is buffered through the CTB, select \ref CY_CTDAC_DEGLITCHMODE_BUFFERED. +* If the output is unbuffered to a direct pin, select \ref CY_CTDAC_DEGLITCHMODE_UNBUFFERED. +* +* \note +* If deglitching is enabled, the hardware does not force the deglitch switches into a closed +* state during Deep Sleep mode. Therefore, there is a chance that the device enters +* Deep Sleep mode while the hardware is deglitching and the switches on the output path remain open. +* To ensure the DAC will operate properly in Deep Sleep when enabled, make sure to +* register the \ref Cy_CTDAC_DeepSleepCallback before entering Deep Sleep mode. +* +* \section group_ctdac_sample_hold Sample and Hold +* +* When buffering the DAC output, the CTB has a Sample and Hold (SH) feature that can be used for saving power. +* The DAC output voltage is retained on an internal capacitor for a duration of time while the +* DAC output can be turned off. The DAC hardware needs to be turned on in a periodic fashion +* to recharge the hold capacitor. This feature is firmware controlled using a sequence of function calls. +* See \ref Cy_CTB_DACSampleAndHold in the \ref group_ctb_sample_hold "CTB" driver. +* +* The hold time depends on the supply and reference voltages. The following hold times are based on the +* time it takes for the buffered output to change by 1 LSB. +* +* - Hold time = 750 us @ Vref = VDDA , VDDA = 1.7 V +* - Hold time = 525 us @ Vref = VDDA , VDDA = 3.6 V +* - Hold time = 200 us @ Vref = 1.2 V, VDDA = 3.6 V +* +* \section group_ctdac_low_power Low Power Support +* +* The CTDAC driver provides a callback function to handle power mode transitions. +* If the CTDAC is configured for Deep Sleep operation and \ref group_ctdac_deglitch "deglitching" is enabled, +* the callback \ref Cy_CTDAC_DeepSleepCallback must be registered before calling +* \ref Cy_SysPm_CpuEnterDeepSleep. +* Refer to \ref group_syspm driver for more information about power mode transitions and +* callback registration. +* +* \section group_ctdac_more_information More Information +* +* Refer to the technical reference manual (TRM) and the device datasheet. +* +* \section group_ctdac_MISRA MISRA-C Compliance] +* +* This driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.4AdvisoryA cast should not be performed between a pointer to object type and a different pointer to object type.The cy_syspm driver defines the pointer to void in the \ref cy_stc_syspm_callback_params_t.base field. +* This CTDAC driver implements a Deep Sleep callback conforming to the cy_syspm driver requirements. +* When the callback is called, the base is cast to a pointer to CTDAC_Type. +*
+* +* \section group_ctdac_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.0Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.0.1Added low power support section. Minor documentation edits.Documentation update and clarification
1.0Initial version
+* +* \defgroup group_ctdac_macros Macros +* \defgroup group_ctdac_functions Functions +* \{ +* \defgroup group_ctdac_functions_init Initialization Functions +* \defgroup group_ctdac_functions_basic Basic Configuration Functions +* \defgroup group_ctdac_functions_switches Switch Control Functions +* \defgroup group_ctdac_functions_interrupts Interrupt Functions +* \defgroup group_ctdac_functions_syspm_callback Low Power Callback +* \} +* \defgroup group_ctdac_globals Global Variables +* \defgroup group_ctdac_data_structures Data Structures +* \defgroup group_ctdac_enums Enumerated Types +*/ + +#if !defined(CY_CTDAC_H) +#define CY_CTDAC_H + +#include +#include +#include +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syspm.h" +#include "cy_syslib.h" +#include "cy_sysclk.h" + +#ifdef CY_IP_MXS40PASS_CTDAC + +#if defined(__cplusplus) +extern "C" { +#endif + +/** \addtogroup group_ctdac_macros +* \{ +*/ + +/** Driver major version */ +#define CY_CTDAC_DRV_VERSION_MAJOR 2 + +/** Driver minor version */ +#define CY_CTDAC_DRV_VERSION_MINOR 0 + +/** CTDAC driver identifier */ +#define CY_CTDAC_ID CY_PDL_DRV_ID(0x19u) + +#define CY_CTDAC_DEINIT (0uL) /**< De-init value for CTDAC registers */ +#define CY_CTDAC_UNSIGNED_MID_CODE_VALUE (0x800uL) /**< Middle code value for unsigned values */ +#define CY_CTDAC_UNSIGNED_MAX_CODE_VALUE (0xFFFuL) /**< Maximum code value for unsigned values */ +#define CY_CTDAC_FAST_CLKCFG_TYPE CY_SYSCLK_DIV_8_BIT /**< Clock divider type for quick clock setup */ +#define CY_CTDAC_FAST_CLKCFG_NUM (0uL) /**< Clock divider number for quick clock setup */ +#define CY_CTDAC_FAST_CLKCFG_DIV (99uL) /**< Clock divider integer value for quick clock setup. Divides PERI clock by 100. */ + +/** \cond INTERNAL */ +#define CY_CTDAC_DEINT_CTDAC_SW (CTDAC_CTDAC_SW_CLEAR_CTDD_CVD_Msk | CTDAC_CTDAC_SW_CLEAR_CTDO_CO6_Msk) /**< Mask for de-initializing the CTDAC switch control register */ +#define CY_CTDAC_STROBE_EDGE_IMMEDIATE_DIV (0uL) /**< Clock divider value for the Strobe Edge Immediate update mode */ +#define CY_CTDAC_STROBE_EDGE_IMMEDIATE_DIV_FRAC (0uL) /**< Clock fractional divider value for the Strobe Edge Immediate update mode */ +#define CY_CTDAC_DEGLITCH_CYCLES_MAX (63uL) + +/**< Macros for conditions used by CY_ASSERT calls */ +#define CY_CTDAC_REFSOURCE(source) (((source) == CY_CTDAC_REFSOURCE_EXTERNAL) || ((source) == CY_CTDAC_REFSOURCE_VDDA)) +#define CY_CTDAC_FORMAT(mode) (((mode) == CY_CTDAC_FORMAT_UNSIGNED) || ((mode) == CY_CTDAC_FORMAT_SIGNED)) +#define CY_CTDAC_UPDATE(mode) ((mode) <= CY_CTDAC_UPDATE_STROBE_LEVEL) +#define CY_CTDAC_DEGLITCH(mode) (((mode) == CY_CTDAC_DEGLITCHMODE_NONE) \ + || ((mode) == CY_CTDAC_DEGLITCHMODE_UNBUFFERED) \ + || ((mode) == CY_CTDAC_DEGLITCHMODE_BUFFERED) \ + || ((mode) == CY_CTDAC_DEGLITCHMODE_BOTH)) +#define CY_CTDAC_OUTPUTMODE(mode) (((mode) == CY_CTDAC_OUTPUT_HIGHZ) \ + || ((mode) == CY_CTDAC_OUTPUT_VALUE) \ + || ((mode) == CY_CTDAC_OUTPUT_VALUE_PLUS1) \ + || ((mode) == CY_CTDAC_OUTPUT_VSSA) \ + || ((mode) == CY_CTDAC_OUTPUT_VREF)) +#define CY_CTDAC_OUTPUTBUFFER(buffer) (((buffer) == CY_CTDAC_OUTPUT_UNBUFFERED) || ((buffer) == CY_CTDAC_OUTPUT_BUFFERED)) +#define CY_CTDAC_DEEPSLEEP(deepSleep) (((deepSleep) == CY_CTDAC_DEEPSLEEP_DISABLE) || ((deepSleep) == CY_CTDAC_DEEPSLEEP_ENABLE)) +#define CY_CTDAC_DEGLITCHCYCLES(cycles) ((cycles) <= CY_CTDAC_DEGLITCH_CYCLES_MAX) +#define CY_CTDAC_SWITCHMASK(mask) ((mask) <= (uint32_t) (CY_CTDAC_SWITCH_CVD_MASK | CY_CTDAC_SWITCH_CO6_MASK)) +#define CY_CTDAC_SWITCHSTATE(state) (((state) == CY_CTDAC_SWITCH_OPEN) || ((state) == CY_CTDAC_SWITCH_CLOSE)) +#define CY_CTDAC_INTRMASK(mask) (((mask) == 0uL) || ((mask) == 1uL)) +/** \endcond */ + +/** \} group_ctdac_macros */ + +/*************************************** +* Enumerated Types +***************************************/ + +/** +* \addtogroup group_ctdac_enums +* \{ +*/ + +/** +* Configure the mode for how the DAC value is updated. +* All the modes require a CTDAC clock except for \ref group_ctdac_updatemode_direct_write. +*/ +typedef enum { + CY_CTDAC_UPDATE_DIRECT_WRITE = 0uL, /**< DAC value is updated with a direct write by calling to \ref Cy_CTDAC_SetValue */ + CY_CTDAC_UPDATE_BUFFERED_WRITE = 1uL, /**< DAC value stored with \ref Cy_CTDAC_SetValueBuffered is updated on the next CTDAC clock edge */ + CY_CTDAC_UPDATE_STROBE_EDGE_SYNC = 2uL, /**< DAC value stored with \ref Cy_CTDAC_SetValueBuffered is updated on the next CTDAC clock edge after a rising edge of the strobe */ + CY_CTDAC_UPDATE_STROBE_EDGE_IMMEDIATE = 3uL, /**< DAC value stored with \ref Cy_CTDAC_SetValueBuffered is updated on the rising edge of the strobe input */ + CY_CTDAC_UPDATE_STROBE_LEVEL = 4uL /**< DAC value stored with \ref Cy_CTDAC_SetValueBuffered is updated on every CTDAC clock edge while the strobe line is high */ +}cy_en_ctdac_update_t; + +/** +* Configure the format in which the DAC value register is decoded. +*/ +typedef enum { + CY_CTDAC_FORMAT_UNSIGNED = 0uL, /**< Unsigned 12-bit DAC. No value decoding */ + CY_CTDAC_FORMAT_SIGNED = 1uL << CTDAC_CTDAC_CTRL_CTDAC_MODE_Pos /**< Virtual signed. Add 0x800 to the 12-bit DAC value */ +}cy_en_ctdac_format_t; + +/** +* Enable or disable the CTDAC hardware during Deep Sleep. +*/ +typedef enum { + CY_CTDAC_DEEPSLEEP_DISABLE = 0uL, /**< DAC is disabled during Deep Sleep power mode */ + CY_CTDAC_DEEPSLEEP_ENABLE = CTDAC_CTDAC_CTRL_DEEPSLEEP_ON_Msk /**< DAC remains enabled during Deep Sleep power mode */ +}cy_en_ctdac_deep_sleep_t; + +/** +* Configure the output state of the CTDAC. +*/ +typedef enum { + CY_CTDAC_OUTPUT_HIGHZ = 0uL, /**< DAC output is tri-state */ + CY_CTDAC_OUTPUT_VALUE = CTDAC_CTDAC_CTRL_OUT_EN_Msk, /**< DAC Output is enabled and drives the programmed value */ + CY_CTDAC_OUTPUT_VALUE_PLUS1 = CTDAC_CTDAC_CTRL_OUT_EN_Msk \ + | CTDAC_CTDAC_CTRL_CTDAC_RANGE_Msk, /**< DAC Output enabled and drives the programmed value plus 1 */ + CY_CTDAC_OUTPUT_VSSA = CTDAC_CTDAC_CTRL_DISABLED_MODE_Msk, /**< Output is pulled to Vssa through a 1.1 MOhm (typ) resistor */ + CY_CTDAC_OUTPUT_VREF = CTDAC_CTDAC_CTRL_DISABLED_MODE_Msk \ + | CTDAC_CTDAC_CTRL_CTDAC_RANGE_Msk /**< Output is pulled to Vref through a 1.1 MOhm (typ) resistor */ +}cy_en_ctdac_output_mode_t; + +/** +* Configure the deglitch mode. See the \ref group_ctdac_deglitch section for +* more information on how deglitching works. +*/ +typedef enum { + CY_CTDAC_DEGLITCHMODE_NONE = 0uL, /**< Disable deglitch */ + CY_CTDAC_DEGLITCHMODE_UNBUFFERED = CTDAC_CTDAC_CTRL_DEGLITCH_CO6_Msk, /**< Deglitch through the CO6 switch */ + CY_CTDAC_DEGLITCHMODE_BUFFERED = CTDAC_CTDAC_CTRL_DEGLITCH_COS_Msk, /**< Deglitch through the CTB COS switch */ + CY_CTDAC_DEGLITCHMODE_BOTH = CTDAC_CTDAC_CTRL_DEGLITCH_COS_Msk \ + | CTDAC_CTDAC_CTRL_DEGLITCH_CO6_Msk /**< Deglitch through both CO6 and CTB COS switches */ +}cy_en_ctdac_deglitch_t; + +/** +* Configure the reference source for the CTDAC +* +* The CVD switch is closed when Vdda is the reference source. +*/ +typedef enum { + CY_CTDAC_REFSOURCE_EXTERNAL = 0uL, /**< Use an external source from Opamp1 of the CTB as the reference. CVD switch is open. */ + CY_CTDAC_REFSOURCE_VDDA = 1uL /**< Use Vdda as the reference. CVD switch is closed. */ +}cy_en_ctdac_ref_source_t; + +/** Configure the output to be buffered or unbuffered +* +* The CO6 switch is closed when the output is unbuffered to Pin 6 of the CTDAC port. +* See the device datasheet for the CTDAC port. +*/ +typedef enum { + CY_CTDAC_OUTPUT_BUFFERED = 0uL, /**< Buffer the output through the CTB OA0 */ + CY_CTDAC_OUTPUT_UNBUFFERED = 1uL /**< Send output to a direct pin */ +}cy_en_ctdac_output_buffer_t; + +/** Switch state, either open or closed, to be used in \ref Cy_CTDAC_SetAnalogSwitch. */ +typedef enum +{ + CY_CTDAC_SWITCH_OPEN = 0uL, /**< Open the switch */ + CY_CTDAC_SWITCH_CLOSE = 1uL /**< Close the switch */ +}cy_en_ctdac_switch_state_t; + +/** Switch mask to be used in \ref Cy_CTDAC_SetAnalogSwitch */ +typedef enum +{ + CY_CTDAC_SWITCH_CVD_MASK = CTDAC_CTDAC_SW_CTDD_CVD_Msk, /**< Switch for the reference source, Vdda or external */ + CY_CTDAC_SWITCH_CO6_MASK = CTDAC_CTDAC_SW_CTDO_CO6_Msk /**< Switch for the output, buffered or direct */ +}cy_en_ctdac_switches_t; + +/** Return states for \ref Cy_CTDAC_Init, \ref Cy_CTDAC_DeInit, and \ref Cy_CTDAC_FastInit */ +typedef enum { + CY_CTDAC_SUCCESS = 0x00uL, /**< Initialization completed successfully */ + CY_CTDAC_BAD_PARAM = CY_CTDAC_ID | CY_PDL_STATUS_ERROR | 0x01uL /**< Input pointers were NULL and Initialization could not be completed */ +}cy_en_ctdac_status_t; + +/** \} group_ctdac_enums */ + +/*************************************** +* Configuration Structures +***************************************/ + +/** +* \addtogroup group_ctdac_data_structures +* \{ +*/ + +/** Configuration structure to set up the entire CTDAC block to be used with \ref Cy_CTDAC_Init +*/ +typedef struct +{ + cy_en_ctdac_ref_source_t refSource; /**< Reference source: Vdda or externally through Opamp1 of CTB */ + cy_en_ctdac_format_t formatMode; /**< Format of DAC value: signed or unsigned */ + cy_en_ctdac_update_t updateMode; /**< Update mode: direct or buffered writes or hardware, edge or level */ + cy_en_ctdac_deglitch_t deglitchMode; /**< Deglitch mode: disabled, buffered, unbuffered, or both */ + cy_en_ctdac_output_mode_t outputMode; /**< Output mode: enabled (value or value + 1), high-z, Vssa, or Vdda */ + cy_en_ctdac_output_buffer_t outputBuffer; /**< Output path: Buffered through Opamp0 of CTB or connected directly to Pin 6 */ + cy_en_ctdac_deep_sleep_t deepSleep; /**< Enable or disable the CTDAC during Deep Sleep */ + uint32_t deglitchCycles; /**< Number of deglitch cycles from 0 to 63 */ + int32_t value; /**< Current DAC value */ + int32_t nextValue; /**< Next DAC value for double buffering */ + bool enableInterrupt; /**< If true, enable interrupt when next value register is transferred to value register */ + + /* Configuring the clock */ + bool configClock; /**< Configure or ignore clock information */ + cy_en_divider_types_t dividerType; /**< Specifies which type of divider to use. Can be integer or fractional divider. Not used if updateMode is \ref CY_CTDAC_UPDATE_DIRECT_WRITE */ + uint32_t dividerNum; /**< Specifies which divider of the selected type to configure. Not used if updateMode is \ref CY_CTDAC_UPDATE_DIRECT_WRITE */ + uint32_t dividerIntValue; /**< The integer divider value. The divider value causes integer division of (divider value + 1). Not used if updateMode is \ref CY_CTDAC_UPDATE_DIRECT_WRITE or \ref CY_CTDAC_UPDATE_STROBE_EDGE_IMMEDIATE */ + uint32_t dividerFracValue; /**< The fractional divider value if using a fractional clock. Not used if updateMode is \ref CY_CTDAC_UPDATE_DIRECT_WRITE or \ref CY_CTDAC_UPDATE_STROBE_EDGE_IMMEDIATE */ +}cy_stc_ctdac_config_t; + +/** Configuration structure to quickly set up the CTDAC to be used with \ref Cy_CTDAC_FastInit +* This structure provides a selection for the CTDAC reference source and output path. +* +* The other configuration options are set to: +* - .formatMode = \ref CY_CTDAC_FORMAT_UNSIGNED +* - .updateMode = \ref CY_CTDAC_UPDATE_BUFFERED_WRITE +* - .deglitchMode = \ref CY_CTDAC_DEGLITCHMODE_NONE +* - .outputMode = \ref CY_CTDAC_OUTPUT_VALUE +* - .deepSleep = \ref CY_CTDAC_DEEPSLEEP_DISABLE +* - .deglitchCycles = \ref CY_CTDAC_DEINIT +* - .value = \ref CY_CTDAC_UNSIGNED_MID_CODE_VALUE +* - .nextValue = \ref CY_CTDAC_UNSIGNED_MID_CODE_VALUE +* - .enableInterrupt = true +* - .configClock = true +* - .dividerType = \ref CY_CTDAC_FAST_CLKCFG_TYPE +* - .dividerNum = \ref CY_CTDAC_FAST_CLKCFG_NUM +* - .dividerInitValue = \ref CY_CTDAC_FAST_CLKCFG_DIV +* - .dividerFracValue = \ref CY_CTDAC_DEINIT +*/ +typedef struct +{ + cy_en_ctdac_ref_source_t refSource; /**< Reference source: Vdda or externally through Opamp1 of CTB */ + cy_en_ctdac_output_buffer_t outputBuffer; /**< Output path: Buffered through Opamp0 of CTB or connected directly to Pin 6 */ +}cy_stc_ctdac_fast_config_t; + +/** CTDAC context structure. +* All fields for the context structure are internal. Firmware never reads or +* writes these values. Firmware allocates the structure and provides the +* address of the structure when registering the \ref Cy_CTDAC_DeepSleepCallback. +* Firmware must ensure that the defined instance of this structure remains in scope +* while the drive is in use. +*/ +typedef struct +{ + uint32_t deglitchModeBeforeSleep; /**< Tracks the state of the deglitch mode before sleep so that it can be re-enabled after wakeup */ +}cy_stc_ctdac_context_t; + +/** \} group_ctdac_data_structures */ + +/** \addtogroup group_ctdac_globals +* \{ +*/ +/*************************************** +* Global Variables +***************************************/ + +/** Configure CTDAC to use Vdda reference and output unbuffered. See \ref Cy_CTDAC_FastInit. */ +extern const cy_stc_ctdac_fast_config_t Cy_CTDAC_Fast_VddaRef_UnbufferedOut; + +/** Configure CTDAC to use Vdda reference and output buffered through Opamp0 of CTB. See \ref Cy_CTDAC_FastInit. +* +* To quickly configure Opamp0, call with \ref Cy_CTB_FastInit +* with \ref Cy_CTB_Fast_Opamp0_Vdac_Out or \ref Cy_CTB_Fast_Opamp0_Vdac_Out_SH. +*/ +extern const cy_stc_ctdac_fast_config_t Cy_CTDAC_Fast_VddaRef_BufferedOut; + +/** Configure CTDAC to use a buffered reference from Opamp1 of CTB +* and output unbuffered. See \ref Cy_CTDAC_FastInit. +* +* To use the reference from the Analog Reference (AREF), +* call \ref Cy_CTB_FastInit with \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Aref. +* +* To use an external reference from a GPIO, +* call \ref Cy_CTB_FastInit with \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Pin5 +* for Pin 5 on the CTB port. +*/ +extern const cy_stc_ctdac_fast_config_t Cy_CTDAC_Fast_OA1Ref_UnbufferedOut; + +/** Configure CTDAC to use a buffered reference from Opamp1 of CTB +* and output buffered through Opamp0 of CTB. See \ref Cy_CTDAC_FastInit. +* +* To quickly configure Opamp0, call with \ref Cy_CTB_FastInit +* with \ref Cy_CTB_Fast_Opamp0_Vdac_Out or \ref Cy_CTB_Fast_Opamp0_Vdac_Out_SH. +* +* To use the reference from the Analog Reference (AREF), +* call \ref Cy_CTB_FastInit with \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Aref. +* +* To use an external reference from a GPIO, +* call \ref Cy_CTB_FastInit with \ref Cy_CTB_Fast_Opamp1_Vdac_Ref_Pin5 +* for Pins 5 on the CTB port. +*/ +extern const cy_stc_ctdac_fast_config_t Cy_CTDAC_Fast_OA1Ref_BufferedOut; + +/** \} group_ctdac_globals */ + +/*************************************** +* Function Prototypes +***************************************/ + +/** +* \addtogroup group_ctdac_functions +* \{ +*/ + +/** +* \addtogroup group_ctdac_functions_init +* This set of functions are for initializing, enabling, and disabling the CTDAC. +* \{ +*/ +cy_en_ctdac_status_t Cy_CTDAC_Init(CTDAC_Type *base, const cy_stc_ctdac_config_t *config); +cy_en_ctdac_status_t Cy_CTDAC_DeInit(CTDAC_Type *base, bool deInitRouting); +cy_en_ctdac_status_t Cy_CTDAC_FastInit(CTDAC_Type *base, const cy_stc_ctdac_fast_config_t *config); +__STATIC_INLINE void Cy_CTDAC_Enable(CTDAC_Type *base); +__STATIC_INLINE void Cy_CTDAC_Disable(CTDAC_Type *base); +/** \} */ + +/** +* \addtogroup group_ctdac_functions_basic +* This set of functions are for configuring basic usage of the CTDAC. +* \{ +*/ +__STATIC_INLINE void Cy_CTDAC_SetValue(CTDAC_Type *base, int32_t value); +__STATIC_INLINE void Cy_CTDAC_SetValueBuffered(CTDAC_Type *base, int32_t value); +void Cy_CTDAC_SetSignMode(CTDAC_Type *base, cy_en_ctdac_format_t formatMode); +void Cy_CTDAC_SetDeepSleepMode(CTDAC_Type *base, cy_en_ctdac_deep_sleep_t deepSleep); +void Cy_CTDAC_SetOutputMode(CTDAC_Type *base, cy_en_ctdac_output_mode_t outputMode); +void Cy_CTDAC_SetDeglitchMode(CTDAC_Type *base, cy_en_ctdac_deglitch_t deglitchMode); +void Cy_CTDAC_SetDeglitchCycles(CTDAC_Type *base, uint32_t deglitchCycles); +void Cy_CTDAC_SetRef(CTDAC_Type *base, cy_en_ctdac_ref_source_t refSource); +/** \} */ + +/** \addtogroup group_ctdac_functions_switches +* +* This set of functions is for controlling the two CTDAC analog switches, CVD, and CO6. +* These are advanced functions. The switches will be managed by the reference +* source and output mode selections when initializing the hardware. +* \{ +*/ +void Cy_CTDAC_SetAnalogSwitch(CTDAC_Type *base, uint32_t switchMask, cy_en_ctdac_switch_state_t state); +__STATIC_INLINE uint32_t Cy_CTDAC_GetAnalogSwitch(const CTDAC_Type *base); +__STATIC_INLINE void Cy_CTDAC_SetSwitchCO6(CTDAC_Type *base, cy_en_ctdac_switch_state_t state); +__STATIC_INLINE void Cy_CTDAC_OpenAllSwitches(CTDAC_Type *base); +/** \} */ + +/** \addtogroup group_ctdac_functions_interrupts +* This set of functions is related to the CTDAC interrupt +* \{ +*/ +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptStatus(const CTDAC_Type *base); +__STATIC_INLINE void Cy_CTDAC_ClearInterrupt(CTDAC_Type *base); +__STATIC_INLINE void Cy_CTDAC_SetInterrupt(CTDAC_Type *base); +__STATIC_INLINE void Cy_CTDAC_SetInterruptMask(CTDAC_Type *base, uint32_t mask); +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptMask(const CTDAC_Type *base); +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptStatusMasked(const CTDAC_Type *base); +/** \} */ + +/** \addtogroup group_ctdac_functions_syspm_callback +* This driver supports one SysPm callback for Deep Sleep transition. +* \{ +*/ +cy_en_syspm_status_t Cy_CTDAC_DeepSleepCallback(cy_stc_syspm_callback_params_t *callbackParams, cy_en_syspm_callback_mode_t mode); +/** \} */ + +/** +* \addtogroup group_ctdac_functions_init +* \{ +*/ +/******************************************************************************* +* Function Name: Cy_CTDAC_Enable +****************************************************************************//** +* +* Power up the CTDAC hardware block. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_Enable(CTDAC_Type *base) +{ + CTDAC_CTDAC_CTRL(base) |= CTDAC_CTDAC_CTRL_ENABLED_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_Disable +****************************************************************************//** +* +* Turn off the hardware block. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_Disable(CTDAC_Type *base) +{ + CTDAC_CTDAC_CTRL(base) &= ~CTDAC_CTDAC_CTRL_ENABLED_Msk; +} +/** \} */ + +/** +* \addtogroup group_ctdac_functions_basic +* \{ +*/ +/******************************************************************************* +* Function Name: Cy_CTDAC_SetValue +****************************************************************************//** +* +* Set the CTDAC_VAL register (DAC hardware is +* updated on the next PeriClk cycle). Only the least significant 12 bits +* have an effect. Sign extension of negative values is unnecessary and is +* ignored by the hardware. The way in which the CTDAC interprets the 12-bit +* data is controlled by \ref Cy_CTDAC_SetSignMode. +* +* \note +* Call this function only when the update mode is set to \ref group_ctdac_updatemode_direct_write. +* Calling this function for any other update mode will not have the intended effect. +* +* \param base +* Pointer to structure describing registers +* +* \param value +* Value to write into the CTDAC_VAL register +* +* \return None +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm4.c CTDAC_SNIPPET_SET_VALUE +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_SetValue(CTDAC_Type *base, int32_t value) +{ + CTDAC_CTDAC_VAL(base) = (((uint32_t)value) << CTDAC_CTDAC_VAL_VALUE_Pos) & CTDAC_CTDAC_VAL_VALUE_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_SetValueBuffered +****************************************************************************//** +* +* Set the CTDAC_VAL_NEXT register. The value is transferred +* to the CTDAC_VAL register on the next edge of the CTDAC clock. +* Only the least significant 12 bits +* have an effect. Sign extension of negative values is unnecessary and is +* ignored by the hardware. The way in which the CTDAC interprets the 12-bit +* data is controlled by \ref Cy_CTDAC_SetSignMode. +* +* \note +* Calling this function in \ref group_ctdac_updatemode_direct_write mode will not update the DAC output. +* Call this function for all modes that use buffered values (i.e. uses a clock). +* +* \param base +* Pointer to structure describing registers +* +* \param value +* Value to write into the CTDAC_VAL_NEXT register +* +* \return None +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm4.c CTDAC_SNIPPET_SET_VALUE_BUFFERED +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_SetValueBuffered(CTDAC_Type *base, int32_t value) +{ + CTDAC_CTDAC_VAL_NXT(base) = (((uint32_t)value) << CTDAC_CTDAC_VAL_NXT_VALUE_Pos) & CTDAC_CTDAC_VAL_NXT_VALUE_Msk; +} +/** \} */ + +/** +* \addtogroup group_ctdac_functions_switches +* \{ +*/ +/******************************************************************************* +* Function Name: Cy_CTDAC_GetAnalogSwitch +****************************************************************************//** +* +* Return the state (open or close) of the CTDAC switches. +* +* \note +* The switches will be managed by the reference +* source and output mode selections when initializing the hardware. +* +* \param base +* Pointer to structure describing registers +* +* \return +* Switch state. Compare this value to the masks found in \ref cy_en_ctdac_switches_t. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTDAC_GetAnalogSwitch(const CTDAC_Type *base) +{ + return CTDAC_CTDAC_SW(base); +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_SetSwitchCO6 +****************************************************************************//** +* +* Open or close switch CO6 that controls whether the output gets routed +* directly to a pin or through Opamp0 of the CTB. This function calls +* \ref Cy_CTDAC_SetAnalogSwitch with the switchMask set to \ref CY_CTDAC_SWITCH_CO6_MASK. +* +* \note +* The switches is configured by the output mode selections during initialization. +* +* \note +* This switch will temporarily +* be opened for deglitching if the deglitch mode is \ref CY_CTDAC_DEGLITCHMODE_UNBUFFERED or +* \ref CY_CTDAC_DEGLITCHMODE_BOTH. +* +* \param base +* Pointer to structure describing registers +* +* \param state +* State of the switch, open or close. +* +* \return None +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm4.c CTDAC_SNIPPET_SET_SWITCH_CO6 +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_SetSwitchCO6(CTDAC_Type *base, cy_en_ctdac_switch_state_t state) +{ + Cy_CTDAC_SetAnalogSwitch(base, (uint32_t) CY_CTDAC_SWITCH_CO6_MASK, state); +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_OpenAllSwitches +****************************************************************************//** +* +* Open all switches in the CTDAC (CO6 and CVD). +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm4.c CTDAC_SNIPPET_OPEN_ALL_SWITCHES +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_OpenAllSwitches(CTDAC_Type *base) +{ + CTDAC_CTDAC_SW_CLEAR(base) = CY_CTDAC_DEINT_CTDAC_SW; +} + +/** \} */ + +/** +* \addtogroup group_ctdac_functions_interrupts +* \{ +*/ +/******************************************************************************* +* Function Name: Cy_CTDAC_GetInterruptStatus +****************************************************************************//** +* +* Return the interrupt status which gets set by the hardware +* when the CTDAC_VAL_NXT register value is transferred to the CTDAC_VAL register. +* Once set, the CTDAC_VAL_NXT register is ready to accept a new value. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \return +* - 0: Value not moved from CTDAC_VAL_NXT to CTDAC_VAL +* - 1: Value moved from CTDAC_VAL_NXT to CTDAC_VAL +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm0p.c SNIPPET_CTDAC_GET_INTERRUPT_STATUS +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptStatus(const CTDAC_Type *base) +{ + return (CTDAC_INTR(base) & CTDAC_INTR_VDAC_EMPTY_Msk) >> CTDAC_INTR_VDAC_EMPTY_Pos; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_ClearInterrupt +****************************************************************************//** +* +* Clear the interrupt that was set by the hardware when the +* CTDAC_VAL_NXT register value is transferred to the CTDAC_VAL register. +* The interrupt must be cleared with this function so that +* the hardware can set subsequent interrupts and those interrupts +* can be forwarded to the interrupt controller, if enabled. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_ClearInterrupt(CTDAC_Type *base) +{ + CTDAC_INTR(base) = CTDAC_INTR_VDAC_EMPTY_Msk; + + /* Dummy read for buffered writes. */ + (void) CTDAC_INTR(base); +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_SetInterrupt +****************************************************************************//** +* +* Force the CTDAC interrupt to trigger using software. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_SetInterrupt(CTDAC_Type *base) +{ + CTDAC_INTR_SET(base) = CTDAC_INTR_SET_VDAC_EMPTY_SET_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_SetInterruptMask +****************************************************************************//** +* +* Configure the CTDAC interrupt to be forwarded to the CPU interrupt +* controller. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \param mask +* The CTDAC only has one interrupt so the mask is one bit. +* - 0: Disable CTDAC interrupt request (will not be forwarded to CPU interrupt controller) +* - 1: Enable CTDAC interrupt request (will be forwarded to CPU interrupt controller) +* +* \return None +* +* \funcusage +* +* \snippet ctdac_sut_01.cydsn/main_cm0p.c SNIPPET_CTDAC_SET_INTERRUPT_MASK +* +*******************************************************************************/ +__STATIC_INLINE void Cy_CTDAC_SetInterruptMask(CTDAC_Type *base, uint32_t mask) +{ + CY_ASSERT_L2(CY_CTDAC_INTRMASK(mask)); + + CTDAC_INTR_MASK(base) = mask & CTDAC_INTR_MASK_VDAC_EMPTY_MASK_Msk; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_GetInterruptMask +****************************************************************************//** +* +* Return whether the CTDAC interrupt is +* forwarded to the CPU interrupt controller +* as configured by \ref Cy_CTDAC_SetInterruptMask. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \return +* The CTDAC only has one interrupt so the return value is either 0 or 1. +* - 0: Interrupt output not forwarded to CPU interrupt controller +* - 1: Interrupt output forwarded to CPU interrupt controller +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptMask(const CTDAC_Type *base) +{ + return (CTDAC_INTR_MASK(base) & CTDAC_INTR_MASK_VDAC_EMPTY_MASK_Msk) >> CTDAC_INTR_MASK_VDAC_EMPTY_MASK_Pos; +} + +/******************************************************************************* +* Function Name: Cy_CTDAC_GetInterruptStatusMasked +****************************************************************************//** +* +* Return the bitwise AND of \ref Cy_CTDAC_GetInterruptStatus and +* \ref Cy_CTDAC_SetInterruptMask. When high, the DAC interrupt is +* asserted and the interrupt is forwarded to the CPU interrupt +* controller. +* +* \note +* Interrupts are available in all update modes except \ref group_ctdac_updatemode_direct_write. +* +* \param base +* Pointer to structure describing registers +* +* \return +* - 0: Value not moved from CTDAC_VAL_NXT to CTDAC_VAL or not masked +* - 1: Value moved from CTDAC_VAL_NXT to CTDAC_VAL and masked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_CTDAC_GetInterruptStatusMasked(const CTDAC_Type *base){ + return (CTDAC_INTR_MASKED(base) & CTDAC_INTR_MASKED_VDAC_EMPTY_MASKED_Msk) >> CTDAC_INTR_MASKED_VDAC_EMPTY_MASKED_Pos; +} + +/** \} */ + +/** \} group_ctdac_functions */ + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_IP_MXS40PASS_CTDAC */ + +#endif /** !defined(CY_CTDAC_H) */ + +/** \} group_ctdac */ + +/* [] END OF FILE */ + diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_device.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_device.h new file mode 100644 index 00000000000..f60560f49c3 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_device.h @@ -0,0 +1,1178 @@ +/***************************************************************************//** +* \file cy_device.h +* \version 1.10 +* +* This file specifies the structure for core and peripheral block HW base +* addresses, versions, and parameters. +* +******************************************************************************** +* \copyright +* Copyright 2018-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef CY_DEVICE_H_ +#define CY_DEVICE_H_ + +#include +#include + +#include "ip/cyip_cpuss.h" +#include "ip/cyip_cpuss_v2.h" +#include "ip/cyip_flashc.h" +#include "ip/cyip_flashc_v2.h" +#include "ip/cyip_gpio.h" +#include "ip/cyip_gpio_v2.h" +#include "ip/cyip_hsiom.h" +#include "ip/cyip_hsiom_v2.h" +#include "ip/cyip_sflash.h" +#include "ip/cyip_srss.h" +#include "ip/cyip_backup.h" +#include "ip/cyip_peri.h" +#include "ip/cyip_peri_v2.h" +#include "ip/cyip_peri_ms_v2.h" +#include "ip/cyip_profile.h" +#include "ip/cyip_prot.h" +#include "ip/cyip_prot_v2.h" +#include "ip/cyip_ipc.h" +#include "ip/cyip_ipc_v2.h" +#include "ip/cyip_udb.h" +#include "ip/cyip_dw.h" +#include "ip/cyip_dw_v2.h" +#include "ip/cyip_dmac_v2.h" +#include "ip/cyip_i2s.h" +#include "ip/cyip_pdm.h" +#include "ip/cyip_lcd.h" +#include "ip/cyip_sdhc.h" +#include "ip/cyip_smartio.h" + +/* Device descriptor type */ +typedef struct +{ + /* Base HW addresses */ + uint32_t cpussBase; + uint32_t flashcBase; + uint32_t periBase; + uint32_t udbBase; + uint32_t protBase; + uint32_t hsiomBase; + uint32_t gpioBase; + uint32_t passBase; + uint32_t ipcBase; + uint32_t cryptoBase; + + /* IP block versions */ + uint8_t cpussVersion; + uint8_t cryptoVersion; + uint8_t dwVersion; + uint8_t flashcVersion; + uint8_t gpioVersion; + uint8_t hsiomVersion; + uint8_t ipcVersion; + uint8_t periVersion; + uint8_t protVersion; + + /* Parameters */ + uint8_t cpussIpcNr; + uint8_t cpussIpcIrqNr; + uint8_t cpussDwChNr; + uint8_t cpussFlashPaSize; + int16_t cpussIpc0Irq; + int16_t cpussFmIrq; + int16_t cpussNotConnectedIrq; + uint8_t srssNumClkpath; + uint8_t srssNumPll; + uint8_t srssNumHfroot; + uint8_t periClockNr; + uint8_t smifDeviceNr; + uint8_t passSarChannels; + uint8_t epMonitorNr; + uint8_t udbPresent; + uint8_t sysPmSimoPresent; + uint32_t protBusMasterMask; + uint32_t cryptoMemSize; + uint8_t flashRwwRequired; + uint8_t flashPipeRequired; + uint8_t flashWriteDelay; + uint8_t flashProgramDelay; + uint8_t flashEraseDelay; + uint8_t flashCtlMainWs0Freq; + uint8_t flashCtlMainWs1Freq; + uint8_t flashCtlMainWs2Freq; + uint8_t flashCtlMainWs3Freq; + uint8_t flashCtlMainWs4Freq; + + /* Peripheral register offsets */ + + /* DW registers */ + uint16_t dwChOffset; + uint16_t dwChSize; + uint8_t dwChCtlPrioPos; + uint8_t dwChCtlPreemptablePos; + uint8_t dwStatusChIdxPos; + uint32_t dwStatusChIdxMsk; + + /* PERI registers */ + uint16_t periTrCmdOffset; + uint16_t periTrCmdGrSelMsk; + uint16_t periTrGrOffset; + uint16_t periTrGrSize; + + uint8_t periDivCmdDivSelMsk; + uint8_t periDivCmdTypeSelPos; + uint8_t periDivCmdPaDivSelPos; + uint8_t periDivCmdPaTypeSelPos; + + uint16_t periDiv8CtlOffset; + uint16_t periDiv16CtlOffset; + uint16_t periDiv16_5CtlOffset; + uint16_t periDiv24_5CtlOffset; + + /* GPIO registers */ + uint8_t gpioPrtIntrCfgOffset; + uint8_t gpioPrtCfgOffset; + uint8_t gpioPrtCfgInOffset; + uint8_t gpioPrtCfgOutOffset; + uint8_t gpioPrtCfgSioOffset; + + /* CPUSS registers */ + uint32_t cpussCm0ClockCtlOffset; + uint32_t cpussCm4ClockCtlOffset; + uint32_t cpussCm4StatusOffset; + uint32_t cpussCm0StatusOffset; + uint32_t cpussCm4PwrCtlOffset; + uint32_t cpussTrimRamCtlOffset; + uint32_t cpussTrimRomCtlOffset; + uint32_t cpussSysTickCtlOffset; + uint16_t cpussCm0NmiCtlOffset; + uint16_t cpussCm4NmiCtlOffset; + uint16_t cpussRomCtl; + uint16_t cpussRam0Ctl0; + uint16_t cpussRam1Ctl0; + uint16_t cpussRam2Ctl0; + + /* IPC registers */ + uint16_t ipcStructSize; + uint32_t ipcLockStatusOffset; +} cy_stc_device_t; + +/******************************************************************************* +* Global Variables +*******************************************************************************/ + +extern const cy_stc_device_t cy_deviceIpBlockCfgPSoC6_01; +extern const cy_stc_device_t cy_deviceIpBlockCfgPSoC6_02; +extern const cy_stc_device_t cy_deviceIpBlockCfgPSoC6_03; +extern const cy_stc_device_t * cy_device; + + +/******************************************************************************* +* Function Prototypes +*******************************************************************************/ + +void Cy_PDL_Init(const cy_stc_device_t * device); + + +/******************************************************************************* +* Register Access Helper Macros +*******************************************************************************/ + +#define CY_CRYPTO_HW_V1 (1U == cy_device->cryptoVersion) /* true if the mxcrypto version is 1 */ + +#define CY_SRSS_NUM_CLKPATH ((uint32_t)(cy_device->srssNumClkpath)) +#define CY_SRSS_NUM_PLL ((uint32_t)(cy_device->srssNumPll)) +#define CY_SRSS_NUM_HFROOT ((uint32_t)(cy_device->srssNumHfroot)) + +#define SRSS_PWR_CTL (((SRSS_V1_Type *) SRSS)->PWR_CTL) +#define SRSS_PWR_HIBERNATE (((SRSS_V1_Type *) SRSS)->PWR_HIBERNATE) +#define SRSS_PWR_TRIM_PWRSYS_CTL (((SRSS_V1_Type *) SRSS)->PWR_TRIM_PWRSYS_CTL) +#define SRSS_PWR_BUCK_CTL (((SRSS_V1_Type *) SRSS)->PWR_BUCK_CTL) +#define SRSS_PWR_BUCK_CTL2 (((SRSS_V1_Type *) SRSS)->PWR_BUCK_CTL2) +#define SRSS_PWR_TRIM_WAKE_CTL (((SRSS_V1_Type *) SRSS)->PWR_TRIM_WAKE_CTL) +#define SRSS_PWR_LVD_CTL (((SRSS_V1_Type *) SRSS)->PWR_LVD_CTL) +#define SRSS_PWR_LVD_STATUS (((SRSS_V1_Type *) SRSS)->PWR_LVD_STATUS) +#define SRSS_WDT_CTL (((SRSS_V1_Type *) SRSS)->WDT_CTL) +#define SRSS_WDT_CNT (((SRSS_V1_Type *) SRSS)->WDT_CNT) +#define SRSS_WDT_MATCH (((SRSS_V1_Type *) SRSS)->WDT_MATCH) +#define SRSS_CLK_DSI_SELECT (((SRSS_V1_Type *) SRSS)->CLK_DSI_SELECT) +#define SRSS_CLK_PATH_SELECT (((SRSS_V1_Type *) SRSS)->CLK_PATH_SELECT) +#define SRSS_CLK_ROOT_SELECT (((SRSS_V1_Type *) SRSS)->CLK_ROOT_SELECT) +#define SRSS_CLK_CSV_HF_LIMIT(clk) (((SRSS_V1_Type *) SRSS)->CLK_CSV[(clk)].HF_LIMIT) +#define SRSS_CLK_CSV_HF_CTL(clk) (((SRSS_V1_Type *) SRSS)->CLK_CSV[(clk)].HF_CTL) +#define SRSS_CLK_SELECT (((SRSS_V1_Type *) SRSS)->CLK_SELECT) +#define SRSS_CLK_TIMER_CTL (((SRSS_V1_Type *) SRSS)->CLK_TIMER_CTL) +#define SRSS_CLK_CSV_WCO_CTL (((SRSS_V1_Type *) SRSS)->CLK_CSV_WCO_CTL) +#define SRSS_CLK_ILO_CONFIG (((SRSS_V1_Type *) SRSS)->CLK_ILO_CONFIG) +#define SRSS_CLK_OUTPUT_SLOW (((SRSS_V1_Type *) SRSS)->CLK_OUTPUT_SLOW) +#define SRSS_CLK_OUTPUT_FAST (((SRSS_V1_Type *) SRSS)->CLK_OUTPUT_FAST) +#define SRSS_CLK_CAL_CNT1 (((SRSS_V1_Type *) SRSS)->CLK_CAL_CNT1) +#define SRSS_CLK_CAL_CNT2 (((SRSS_V1_Type *) SRSS)->CLK_CAL_CNT2) +#define SRSS_CLK_ECO_CONFIG (((SRSS_V1_Type *) SRSS)->CLK_ECO_CONFIG) +#define SRSS_CLK_ECO_STATUS (((SRSS_V1_Type *) SRSS)->CLK_ECO_STATUS) +#define SRSS_CLK_PILO_CONFIG (((SRSS_V1_Type *) SRSS)->CLK_PILO_CONFIG) +#define SRSS_CLK_FLL_CONFIG (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG) +#define SRSS_CLK_FLL_CONFIG2 (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG2) +#define SRSS_CLK_FLL_CONFIG3 (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG3) +#define SRSS_CLK_FLL_CONFIG4 (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG4) +#define SRSS_CLK_FLL_STATUS (((SRSS_V1_Type *) SRSS)->CLK_FLL_STATUS) +#define SRSS_CLK_PLL_CONFIG (((SRSS_V1_Type *) SRSS)->CLK_PLL_CONFIG) +#define SRSS_CLK_PLL_STATUS (((SRSS_V1_Type *) SRSS)->CLK_PLL_STATUS) +#define SRSS_SRSS_INTR (((SRSS_V1_Type *) SRSS)->SRSS_INTR) +#define SRSS_SRSS_INTR_SET (((SRSS_V1_Type *) SRSS)->SRSS_INTR_SET) +#define SRSS_SRSS_INTR_CFG (((SRSS_V1_Type *) SRSS)->SRSS_INTR_CFG) +#define SRSS_SRSS_INTR_MASK (((SRSS_V1_Type *) SRSS)->SRSS_INTR_MASK) +#define SRSS_SRSS_INTR_MASKED (((SRSS_V1_Type *) SRSS)->SRSS_INTR_MASKED) +#define SRSS_CLK_TRIM_ILO_CTL (((SRSS_V1_Type *) SRSS)->CLK_TRIM_ILO_CTL) +#define SRSS_CLK_TRIM_ECO_CTL (((SRSS_V1_Type *) SRSS)->CLK_TRIM_ECO_CTL) + +#define SRSS_RES_CAUSE (((SRSS_V1_Type *) SRSS)->RES_CAUSE) +#define SRSS_RES_CAUSE2 (((SRSS_V1_Type *) SRSS)->RES_CAUSE2) + +#define SRSS_TST_DDFT_SLOW_CTL_REG (*(volatile uint32_t *) 0x40260108U) +#define SRSS_TST_DDFT_FAST_CTL_REG (*(volatile uint32_t *) 0x40260104U) + +#define SRSS_TST_DDFT_SLOW_CTL_MASK (0x00001F1EU) +#define SRSS_TST_DDFT_FAST_CTL_MASK (62U) + +/******************************************************************************* +* BACKUP +*******************************************************************************/ + +#define BACKUP_PMIC_CTL (((BACKUP_V1_Type *) BACKUP)->PMIC_CTL) +#define BACKUP_CTL (((BACKUP_V1_Type *) BACKUP)->CTL) +#define BACKUP_RTC_TIME (((BACKUP_V1_Type *) BACKUP)->RTC_TIME) +#define BACKUP_RTC_DATE (((BACKUP_V1_Type *) BACKUP)->RTC_DATE) +#define BACKUP_RTC_RW (((BACKUP_V1_Type *) BACKUP)->RTC_RW) +#define BACKUP_ALM1_TIME (((BACKUP_V1_Type *) BACKUP)->ALM1_TIME) +#define BACKUP_ALM1_DATE (((BACKUP_V1_Type *) BACKUP)->ALM1_DATE) +#define BACKUP_ALM2_TIME (((BACKUP_V1_Type *) BACKUP)->ALM2_TIME) +#define BACKUP_ALM2_DATE (((BACKUP_V1_Type *) BACKUP)->ALM2_DATE) +#define BACKUP_STATUS (((BACKUP_V1_Type *) BACKUP)->STATUS) +#define BACKUP_INTR (((BACKUP_V1_Type *) BACKUP)->INTR) +#define BACKUP_INTR_SET (((BACKUP_V1_Type *) BACKUP)->INTR_SET) +#define BACKUP_INTR_MASK (((BACKUP_V1_Type *) BACKUP)->INTR_MASK) +#define BACKUP_INTR_MASKED (((BACKUP_V1_Type *) BACKUP)->INTR_MASKED) +#define BACKUP_RESET (((BACKUP_V1_Type *) BACKUP)->RESET) + +/******************************************************************************* +* FLASHC +*******************************************************************************/ + +#define FLASHC_FM_CTL_ANA_CTL0 (((FLASHC_V1_Type *) cy_device->flashcBase)->FM_CTL.ANA_CTL0) +#define FLASHC_FM_CTL_BOOKMARK (((FLASHC_V1_Type *) cy_device->flashcBase)->FM_CTL.BOOKMARK) +#define FLASHC_FLASH_CMD (((FLASHC_V1_Type *) cy_device->flashcBase)->FLASH_CMD) +#define FLASHC_FLASH_CTL (((FLASHC_V1_Type *) cy_device->flashcBase)->FLASH_CTL) +#define FLASHC_BIST_DATA_0 (((FLASHC_V1_Type *) cy_device->flashcBase)->BIST_DATA[0U]) + + +/******************************************************************************* +* SFLASH +*******************************************************************************/ + +#define SFLASH_DIE_YEAR (((SFLASH_V1_Type *) SFLASH)->DIE_YEAR) +#define SFLASH_DIE_MINOR (((SFLASH_V1_Type *) SFLASH)->DIE_MINOR) +#define SFLASH_DIE_SORT (((SFLASH_V1_Type *) SFLASH)->DIE_SORT) +#define SFLASH_DIE_Y (((SFLASH_V1_Type *) SFLASH)->DIE_Y) +#define SFLASH_DIE_X (((SFLASH_V1_Type *) SFLASH)->DIE_X) +#define SFLASH_DIE_WAFER (((SFLASH_V1_Type *) SFLASH)->DIE_WAFER) +#define SFLASH_DIE_LOT(val) (((SFLASH_V1_Type *) SFLASH)->DIE_LOT[(val)]) +#define SFLASH_FAMILY_ID (((SFLASH_V1_Type *) SFLASH)->FAMILY_ID) +#define SFLASH_SI_REVISION_ID (((SFLASH_V1_Type *) SFLASH)->SI_REVISION_ID) +#define SFLASH_PWR_TRIM_WAKE_CTL (((SFLASH_V1_Type *) SFLASH)->PWR_TRIM_WAKE_CTL) +#define SFLASH_LDO_0P9V_TRIM (((SFLASH_V1_Type *) SFLASH)->LDO_0P9V_TRIM) +#define SFLASH_LDO_1P1V_TRIM (((SFLASH_V1_Type *) SFLASH)->LDO_1P1V_TRIM) +#define SFLASH_BLE_DEVICE_ADDRESS (((SFLASH_V1_Type *) SFLASH)->BLE_DEVICE_ADDRESS) +#define SFLASH_SILICON_ID (((SFLASH_V1_Type *) SFLASH)->SILICON_ID) +#define SFLASH_SINGLE_CORE (*(volatile uint8_t *) (SFLASH_BASE + 0xBU)) + + +#define SFLASH_CPUSS_TRIM_ROM_CTL_LP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_LP) +#define SFLASH_CPUSS_TRIM_RAM_CTL_LP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_LP) +#define SFLASH_CPUSS_TRIM_ROM_CTL_ULP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_ULP) +#define SFLASH_CPUSS_TRIM_RAM_CTL_ULP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_ULP) +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_LP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_HALF_LP) +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_LP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_HALF_LP) +#define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_ULP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_HALF_ULP) +#define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_ULP (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_HALF_ULP) + + +#define SFLASH_CSD0_ADC_VREF0_TRIM (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF0) +#define SFLASH_CSD0_ADC_VREF1_TRIM (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF1) +#define SFLASH_CSD0_ADC_VREF2_TRIM (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF2) + + +/******************************************************************************* +* CPUSS +*******************************************************************************/ + +#define CY_CPUSS_V1 (1U == cy_device->cpussVersion) + +#define CY_CPUSS_NOT_CONNECTED_IRQN ((uint32_t)(cy_device->cpussNotConnectedIrq)) +#define CY_CPUSS_DISCONNECTED_IRQN ((cy_en_intr_t)CY_CPUSS_NOT_CONNECTED_IRQN) +#define CY_CPUSS_UNCONNECTED_IRQN ((IRQn_Type)CY_CPUSS_NOT_CONNECTED_IRQN) + +#define CPUSS_CM0_CLOCK_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0ClockCtlOffset)) +#define CPUSS_CM4_CLOCK_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4ClockCtlOffset)) +#define CPUSS_CM4_STATUS (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4StatusOffset)) +#define CPUSS_CM0_STATUS (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0StatusOffset)) +#define CPUSS_CM4_PWR_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4PwrCtlOffset)) +#define CPUSS_TRIM_RAM_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussTrimRamCtlOffset)) +#define CPUSS_TRIM_ROM_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussTrimRomCtlOffset)) +#define CPUSS_SYSTICK_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussSysTickCtlOffset)) + +#define CPUSS_ROM_CTL (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRomCtl)) +#define CPUSS_RAM0_CTL0 (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam0Ctl0)) +#define CPUSS_RAM1_CTL0 (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam1Ctl0)) +#define CPUSS_RAM2_CTL0 (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam2Ctl0)) + +#define CPUSS_CM0_NMI_CTL(nmi) (((volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0NmiCtlOffset))[(nmi)]) +#define CPUSS_CM4_NMI_CTL(nmi) (((volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4NmiCtlOffset))[(nmi)]) + +/* used in V1 code only */ +#define CPUSS_CM0_INT_CTL ((volatile uint32_t *) &(((CPUSS_V1_Type *)(cy_device->cpussBase))->CM0_INT_CTL0)) + +/* used in V2 code only */ +#define CPUSS_CM0_SYSTEM_INT_CTL (((CPUSS_V2_Type *)(cy_device->cpussBase))->CM0_SYSTEM_INT_CTL) +#define CPUSS_CM0_INT_STATUS ((volatile const uint32_t *) &(((CPUSS_V2_Type *)(cy_device->cpussBase))->CM0_INT0_STATUS)) + +/* ARM core registers */ +#define SYSTICK_CTRL (((SysTick_Type *)SysTick)->CTRL) +#define SYSTICK_LOAD (((SysTick_Type *)SysTick)->LOAD) +#define SYSTICK_VAL (((SysTick_Type *)SysTick)->VAL) +#define SCB_SCR (((SCB_Type *)SCB)->SCR) + +#define UDB_UDBIF_BANK_CTL (((UDB_V1_Type *) cy_device->udbBase)->UDBIF.BANK_CTL) +#define UDB_BCTL_MDCLK_EN (((UDB_V1_Type *) cy_device->udbBase)->BCTL.MDCLK_EN) +#define UDB_BCTL_MBCLK_EN (((UDB_V1_Type *) cy_device->udbBase)->BCTL.MBCLK_EN) +#define UDB_BCTL_BOTSEL_L (((UDB_V1_Type *) cy_device->udbBase)->BCTL.BOTSEL_L) +#define UDB_BCTL_BOTSEL_U (((UDB_V1_Type *) cy_device->udbBase)->BCTL.BOTSEL_U) +#define UDB_BCTL_QCLK_EN_0 (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[0U]) +#define UDB_BCTL_QCLK_EN_1 (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[1U]) +#define UDB_BCTL_QCLK_EN_2 (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[2U]) + + +/******************************************************************************* +* LPCOMP +*******************************************************************************/ + +#define LPCOMP_CMP0_CTRL(base) (((LPCOMP_V1_Type *)(base))->CMP0_CTRL) +#define LPCOMP_CMP1_CTRL(base) (((LPCOMP_V1_Type *)(base))->CMP1_CTRL) +#define LPCOMP_CMP0_SW_CLEAR(base) (((LPCOMP_V1_Type *)(base))->CMP0_SW_CLEAR) +#define LPCOMP_CMP1_SW_CLEAR(base) (((LPCOMP_V1_Type *)(base))->CMP1_SW_CLEAR) +#define LPCOMP_CMP0_SW(base) (((LPCOMP_V1_Type *)(base))->CMP0_SW) +#define LPCOMP_CMP1_SW(base) (((LPCOMP_V1_Type *)(base))->CMP1_SW) +#define LPCOMP_STATUS(base) (((LPCOMP_V1_Type *)(base))->STATUS) +#define LPCOMP_CONFIG(base) (((LPCOMP_V1_Type *)(base))->CONFIG) +#define LPCOMP_INTR(base) (((LPCOMP_V1_Type *)(base))->INTR) +#define LPCOMP_INTR_SET(base) (((LPCOMP_V1_Type *)(base))->INTR_SET) +#define LPCOMP_INTR_MASK(base) (((LPCOMP_V1_Type *)(base))->INTR_MASK) +#define LPCOMP_INTR_MASKED(base) (((LPCOMP_V1_Type *)(base))->INTR_MASKED) + + +/******************************************************************************* +* MCWDT +*******************************************************************************/ + +#define MCWDT_STRUCT_MCWDT_CNTLOW(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_CNTLOW) +#define MCWDT_STRUCT_MCWDT_CNTHIGH(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_CNTHIGH) +#define MCWDT_STRUCT_MCWDT_MATCH(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_MATCH) +#define MCWDT_STRUCT_MCWDT_CONFIG(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_CONFIG) +#define MCWDT_STRUCT_MCWDT_LOCK(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_LOCK) +#define MCWDT_STRUCT_MCWDT_CTL(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_CTL) +#define MCWDT_STRUCT_MCWDT_INTR(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_INTR) +#define MCWDT_STRUCT_MCWDT_INTR_SET(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_INTR_SET) +#define MCWDT_STRUCT_MCWDT_INTR_MASK(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_INTR_MASK) +#define MCWDT_STRUCT_MCWDT_INTR_MASKED(base) (((MCWDT_STRUCT_V1_Type *)(base))->MCWDT_INTR_MASKED) + + +/******************************************************************************* +* TCPWM +*******************************************************************************/ + +#define TCPWM_CTRL_SET(base) (((TCPWM_V1_Type *)(base))->CTRL_SET) +#define TCPWM_CTRL_CLR(base) (((TCPWM_V1_Type *)(base))->CTRL_CLR) +#define TCPWM_CMD_START(base) (((TCPWM_V1_Type *)(base))->CMD_START) +#define TCPWM_CMD_RELOAD(base) (((TCPWM_V1_Type *)(base))->CMD_RELOAD) +#define TCPWM_CMD_STOP(base) (((TCPWM_V1_Type *)(base))->CMD_STOP) +#define TCPWM_CMD_CAPTURE(base) (((TCPWM_V1_Type *)(base))->CMD_CAPTURE) + +#define TCPWM_CNT_CTRL(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].CTRL) +#define TCPWM_CNT_CC(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].CC) +#define TCPWM_CNT_CC_BUFF(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].CC_BUFF) +#define TCPWM_CNT_COUNTER(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].COUNTER) +#define TCPWM_CNT_PERIOD(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].PERIOD) +#define TCPWM_CNT_PERIOD_BUFF(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].PERIOD_BUFF) +#define TCPWM_CNT_STATUS(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].STATUS) +#define TCPWM_CNT_INTR(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR) +#define TCPWM_CNT_INTR_SET(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_SET) +#define TCPWM_CNT_INTR_MASK(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_MASK) +#define TCPWM_CNT_INTR_MASKED(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_MASKED) +#define TCPWM_CNT_TR_CTRL0(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL0) +#define TCPWM_CNT_TR_CTRL1(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL1) +#define TCPWM_CNT_TR_CTRL2(base, cntNum) (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL2) + + +/******************************************************************************* +* SAR +*******************************************************************************/ + +#define SAR_SAMPLE_CTRL(base) (((SAR_V1_Type *)(base))->SAMPLE_CTRL) +#define SAR_SAMPLE_TIME01(base) (((SAR_V1_Type *)(base))->SAMPLE_TIME01) +#define SAR_SAMPLE_TIME23(base) (((SAR_V1_Type *)(base))->SAMPLE_TIME23) + +#define SAR_RANGE_THRES(base) (((SAR_V1_Type *)(base))->RANGE_THRES) +#define SAR_RANGE_COND(base) (((SAR_V1_Type *)(base))->RANGE_COND) +#define SAR_RANGE_INTR(base) (((SAR_V1_Type *)(base))->RANGE_INTR) +#define SAR_RANGE_INTR_SET(base) (((SAR_V1_Type *)(base))->RANGE_INTR_SET) + +#define SAR_RANGE_INTR_MASK(base) (((SAR_V1_Type *)(base))->RANGE_INTR_MASK) +#define SAR_RANGE_INTR_MASKED(base) (((SAR_V1_Type *)(base))->RANGE_INTR_MASKED) + +#define SAR_CHAN_EN(base) (((SAR_V1_Type *)(base))->CHAN_EN) +#define SAR_CHAN_CONFIG(base, chan) (((SAR_V1_Type *)(base))->CHAN_CONFIG[(chan)]) +#define SAR_CHAN_RESULT(base, chan ) (((SAR_V1_Type *)(base))->CHAN_RESULT[(chan)]) +#define SAR_CHAN_RESULT_UPDATED(base) (((SAR_V1_Type *)(base))->CHAN_RESULT_UPDATED) + +#define SAR_INTR(base) (((SAR_V1_Type *)(base))->INTR) +#define SAR_INTR_MASK(base) (((SAR_V1_Type *)(base))->INTR_MASK) +#define SAR_INTR_MASKED(base) (((SAR_V1_Type *)(base))->INTR_MASKED) +#define SAR_INTR_SET(base) (((SAR_V1_Type *)(base))->INTR_SET) +#define SAR_INTR_CAUSE(base) (((SAR_V1_Type *)(base))->INTR_CAUSE) + +#define SAR_MUX_SWITCH_CLEAR0(base) (((SAR_V1_Type *)(base))->MUX_SWITCH_CLEAR0) +#define SAR_MUX_SWITCH0(base) (((SAR_V1_Type *)(base))->MUX_SWITCH0) +#define SAR_MUX_SWITCH_SQ_CTRL(base) (((SAR_V1_Type *)(base))->MUX_SWITCH_SQ_CTRL) +#define SAR_MUX_SWITCH_DS_CTRL(base) (((SAR_V1_Type *)(base))->MUX_SWITCH_DS_CTRL) + +#define SAR_ANA_TRIM0(base) (((SAR_V1_Type *)(base))->ANA_TRIM0) +#define SAR_CTRL(base) (((SAR_V1_Type *)(base))->CTRL) +#define SAR_STATUS(base) (((SAR_V1_Type *)(base))->STATUS) +#define SAR_START_CTRL(base) (((SAR_V1_Type *)(base))->START_CTRL) + +#define SAR_SATURATE_INTR(base) (((SAR_V1_Type *)(base))->SATURATE_INTR) +#define SAR_SATURATE_INTR_MASK(base) (((SAR_V1_Type *)(base))->SATURATE_INTR_MASK) +#define SAR_SATURATE_INTR_MASKED(base) (((SAR_V1_Type *)(base))->SATURATE_INTR_MASKED) +#define SAR_SATURATE_INTR_SET(base) (((SAR_V1_Type *)(base))->SATURATE_INTR_SET) + + +/******************************************************************************* +* SDHC +*******************************************************************************/ + +#define SDHC_WRAP_CTL(base) (((SDHC_V1_Type *)(base))->WRAP.CTL) +#define SDHC_CORE_SDMASA_R(base) (((SDHC_V1_Type *)(base))->CORE.SDMASA_R) +#define SDHC_CORE_BLOCKSIZE_R(base) (((SDHC_V1_Type *)(base))->CORE.BLOCKSIZE_R) +#define SDHC_CORE_BLOCKCOUNT_R(base) (((SDHC_V1_Type *)(base))->CORE.BLOCKCOUNT_R) +#define SDHC_CORE_ARGUMENT_R(base) (((SDHC_V1_Type *)(base))->CORE.ARGUMENT_R) +#define SDHC_CORE_XFER_MODE_R(base) (((SDHC_V1_Type *)(base))->CORE.XFER_MODE_R) +#define SDHC_CORE_CMD_R(base) (((SDHC_V1_Type *)(base))->CORE.CMD_R) +#define SDHC_CORE_RESP01_R(base) (((SDHC_V1_Type *)(base))->CORE.RESP01_R) +#define SDHC_CORE_RESP23_R(base) (((SDHC_V1_Type *)(base))->CORE.RESP23_R) +#define SDHC_CORE_RESP45_R(base) (((SDHC_V1_Type *)(base))->CORE.RESP45_R) +#define SDHC_CORE_RESP67_R(base) (((SDHC_V1_Type *)(base))->CORE.RESP67_R) +#define SDHC_CORE_BUF_DATA_R(base) (((SDHC_V1_Type *)(base))->CORE.BUF_DATA_R) +#define SDHC_CORE_PSTATE_REG(base) (((SDHC_V1_Type *)(base))->CORE.PSTATE_REG) +#define SDHC_CORE_HOST_CTRL1_R(base) (((SDHC_V1_Type *)(base))->CORE.HOST_CTRL1_R) +#define SDHC_CORE_PWR_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.PWR_CTRL_R) +#define SDHC_CORE_BGAP_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.BGAP_CTRL_R) +#define SDHC_CORE_WUP_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.WUP_CTRL_R) +#define SDHC_CORE_CLK_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.CLK_CTRL_R) +#define SDHC_CORE_TOUT_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.TOUT_CTRL_R) +#define SDHC_CORE_SW_RST_R(base) (((SDHC_V1_Type *)(base))->CORE.SW_RST_R) +#define SDHC_CORE_NORMAL_INT_STAT_R(base) (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_STAT_R) +#define SDHC_CORE_ERROR_INT_STAT_R(base) (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_STAT_R) +#define SDHC_CORE_NORMAL_INT_STAT_EN_R(base) (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_STAT_EN_R) +#define SDHC_CORE_ERROR_INT_STAT_EN_R(base) (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_STAT_EN_R) +#define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R(base) (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_SIGNAL_EN_R) +#define SDHC_CORE_ERROR_INT_SIGNAL_EN_R(base) (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_SIGNAL_EN_R) +#define SDHC_CORE_AUTO_CMD_STAT_R(base) (((SDHC_V1_Type *)(base))->CORE.AUTO_CMD_STAT_R) +#define SDHC_CORE_HOST_CTRL2_R(base) (((SDHC_V1_Type *)(base))->CORE.HOST_CTRL2_R) +#define SDHC_CORE_CAPABILITIES1_R(base) (((SDHC_V1_Type *)(base))->CORE.CAPABILITIES1_R) +#define SDHC_CORE_CAPABILITIES2_R(base) (((SDHC_V1_Type *)(base))->CORE.CAPABILITIES2_R) +#define SDHC_CORE_CURR_CAPABILITIES1_R(base) (((SDHC_V1_Type *)(base))->CORE.CURR_CAPABILITIES1_R) +#define SDHC_CORE_CURR_CAPABILITIES2_R(base) (((SDHC_V1_Type *)(base))->CORE.CURR_CAPABILITIES2_R) +#define SDHC_CORE_ADMA_ERR_STAT_R(base) (((SDHC_V1_Type *)(base))->CORE.ADMA_ERR_STAT_R) +#define SDHC_CORE_ADMA_SA_LOW_R(base) (((SDHC_V1_Type *)(base))->CORE.ADMA_SA_LOW_R) +#define SDHC_CORE_ADMA_ID_LOW_R(base) (((SDHC_V1_Type *)(base))->CORE.ADMA_ID_LOW_R) +#define SDHC_CORE_EMMC_CTRL_R(base) (((SDHC_V1_Type *)(base))->CORE.EMMC_CTRL_R) +#define SDHC_CORE_GP_OUT_R(base) (((SDHC_V1_Type *)(base))->CORE.GP_OUT_R) + + +/******************************************************************************* +* SMARTIO +*******************************************************************************/ + +#define SMARTIO_PRT_CTL(base) (((SMARTIO_PRT_V1_Type *)(base))->CTL) +#define SMARTIO_PRT_SYNC_CTL(base) (((SMARTIO_PRT_V1_Type *)(base))->SYNC_CTL) +#define SMARTIO_PRT_LUT_SEL(base, idx) (((SMARTIO_PRT_V1_Type *)(base))->LUT_SEL[idx]) +#define SMARTIO_PRT_LUT_CTL(base, idx) (((SMARTIO_PRT_V1_Type *)(base))->LUT_CTL[idx]) +#define SMARTIO_PRT_DU_SEL(base) (((SMARTIO_PRT_V1_Type *)(base))->DU_SEL) +#define SMARTIO_PRT_DU_CTL(base) (((SMARTIO_PRT_V1_Type *)(base))->DU_CTL) +#define SMARTIO_PRT_DATA(base) (((SMARTIO_PRT_V1_Type *)(base))->DATA) + + +/******************************************************************************* +* SMIF +*******************************************************************************/ + +#define SMIF_DEVICE_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->CTL) +#define SMIF_DEVICE_ADDR(base) (((SMIF_DEVICE_V1_Type *)(base))->ADDR) +#define SMIF_DEVICE_ADDR_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->ADDR_CTL) +#define SMIF_DEVICE_MASK(base) (((SMIF_DEVICE_V1_Type *)(base))->MASK) +#define SMIF_DEVICE_RD_CMD_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->RD_CMD_CTL) +#define SMIF_DEVICE_RD_ADDR_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->RD_ADDR_CTL) +#define SMIF_DEVICE_RD_MODE_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->RD_MODE_CTL) +#define SMIF_DEVICE_RD_DUMMY_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->RD_DUMMY_CTL) +#define SMIF_DEVICE_RD_DATA_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->RD_DATA_CTL) +#define SMIF_DEVICE_WR_CMD_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->WR_CMD_CTL) +#define SMIF_DEVICE_WR_ADDR_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->WR_ADDR_CTL) +#define SMIF_DEVICE_WR_MODE_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->WR_MODE_CTL) +#define SMIF_DEVICE_WR_DUMMY_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->WR_DUMMY_CTL) +#define SMIF_DEVICE_WR_DATA_CTL(base) (((SMIF_DEVICE_V1_Type *)(base))->WR_DATA_CTL) + +#define SMIF_DEVICE_IDX(base, deviceIndex) (((SMIF_V1_Type *)(base))->DEVICE[deviceIndex]) + +#define SMIF_DEVICE_IDX_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).CTL) +#define SMIF_DEVICE_IDX_ADDR(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).ADDR) +#define SMIF_DEVICE_IDX_ADDR_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).ADDR_CTL) +#define SMIF_DEVICE_IDX_MASK(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).MASK) +#define SMIF_DEVICE_IDX_RD_CMD_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).RD_CMD_CTL) +#define SMIF_DEVICE_IDX_RD_ADDR_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).RD_ADDR_CTL) +#define SMIF_DEVICE_IDX_RD_MODE_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).RD_MODE_CTL) +#define SMIF_DEVICE_IDX_RD_DUMMY_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).RD_DUMMY_CTL) +#define SMIF_DEVICE_IDX_RD_DATA_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).RD_DATA_CTL) +#define SMIF_DEVICE_IDX_WR_CMD_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).WR_CMD_CTL) +#define SMIF_DEVICE_IDX_WR_ADDR_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).WR_ADDR_CTL) +#define SMIF_DEVICE_IDX_WR_MODE_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).WR_MODE_CTL) +#define SMIF_DEVICE_IDX_WR_DUMMY_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).WR_DUMMY_CTL) +#define SMIF_DEVICE_IDX_WR_DATA_CTL(base, deviceIndex) (SMIF_DEVICE_IDX(base, deviceIndex).WR_DATA_CTL) + +#define SMIF_CTL(base) (((SMIF_V1_Type *)(base))->CTL) +#define SMIF_STATUS(base) (((SMIF_V1_Type *)(base))->STATUS) +#define SMIF_TX_DATA_FIFO_CTL(base) (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_CTL) +#define SMIF_RX_DATA_FIFO_CTL(base) (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_CTL) +#define SMIF_TX_DATA_FIFO_WR1(base) (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR1) +#define SMIF_TX_DATA_FIFO_WR2(base) (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR2) +#define SMIF_TX_DATA_FIFO_WR4(base) (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR4) +#define SMIF_RX_DATA_FIFO_RD1(base) (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD1) +#define SMIF_RX_DATA_FIFO_RD2(base) (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD2) +#define SMIF_RX_DATA_FIFO_RD4(base) (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD4) +#define SMIF_TX_CMD_FIFO_WR(base) (((SMIF_V1_Type *)(base))->TX_CMD_FIFO_WR) +#define SMIF_TX_CMD_FIFO_STATUS(base) (((SMIF_V1_Type *)(base))->TX_CMD_FIFO_STATUS) +#define SMIF_RX_DATA_FIFO_STATUS(base) (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_STATUS) +#define SMIF_TX_DATA_FIFO_STATUS(base) (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_STATUS) +#define SMIF_INTR(base) (((SMIF_V1_Type *)(base))->INTR) +#define SMIF_INTR_SET(base) (((SMIF_V1_Type *)(base))->INTR_SET) +#define SMIF_INTR_MASK(base) (((SMIF_V1_Type *)(base))->INTR_MASK) +#define SMIF_INTR_MASKED(base) (((SMIF_V1_Type *)(base))->INTR_MASKED) +#define SMIF_CRYPTO_INPUT0(base) (((SMIF_V1_Type *)(base))->CRYPTO_INPUT0) +#define SMIF_CRYPTO_OUTPUT0(base) (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT0) +#define SMIF_CRYPTO_OUTPUT1(base) (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT1) +#define SMIF_CRYPTO_OUTPUT2(base) (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT2) +#define SMIF_CRYPTO_OUTPUT3(base) (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT3) +#define SMIF_CRYPTO_CMD(base) (((SMIF_V1_Type *)(base))->CRYPTO_CMD) +#define SMIF_SLOW_CA_CTL(base) (((SMIF_V1_Type *)(base))->SLOW_CA_CTL) +#define SMIF_FAST_CA_CTL(base) (((SMIF_V1_Type *)(base))->FAST_CA_CTL) +#define SMIF_SLOW_CA_CMD(base) (((SMIF_V1_Type *)(base))->SLOW_CA_CMD) +#define SMIF_FAST_CA_CMD(base) (((SMIF_V1_Type *)(base))->FAST_CA_CMD) + + +/******************************************************************************* +* DW +*******************************************************************************/ + +#define CY_DW_V1 (1U == cy_device->dwVersion) +#define CY_DW_CRC (1U < cy_device->dwVersion) +#define CY_DW_CH_NR (cy_device->cpussDwChNr) + +#define CY_DW_CH_CTL_PRIO_Pos ((uint32_t)(cy_device->dwChCtlPrioPos)) +#define CY_DW_CH_CTL_PRIO_Msk ((uint32_t)(0x3UL << CY_DW_CH_CTL_PRIO_Pos)) +#define CY_DW_CH_CTL_PREEMPTABLE_Pos ((uint32_t)(cy_device->dwChCtlPreemptablePos)) +#define CY_DW_CH_CTL_PREEMPTABLE_Msk ((uint32_t)(0x1UL << CY_DW_CH_CTL_PREEMPTABLE_Pos)) +#define CY_DW_STATUS_CH_IDX_Pos ((uint32_t)(cy_device->dwStatusChIdxPos)) +#define CY_DW_STATUS_CH_IDX_Msk (cy_device->dwStatusChIdxMsk) + +#define DW_CTL(base) (((DW_V1_Type*)(base))->CTL) +#define DW_STATUS(base) (((DW_V1_Type const*)(base))->STATUS) +#define DW_DESCR_SRC(base) (((DW_V1_Type*)(base))->ACT_DESCR_SRC) +#define DW_DESCR_DST(base) (((DW_V1_Type*)(base))->ACT_DESCR_DST) + +#define DW_CRC_CTL(base) (((DW_V2_Type*)(base))->CRC_CTL) +#define DW_CRC_DATA_CTL(base) (((DW_V2_Type*)(base))->CRC_DATA_CTL) +#define DW_CRC_REM_CTL(base) (((DW_V2_Type*)(base))->CRC_REM_CTL) +#define DW_CRC_POL_CTL(base) (((DW_V2_Type*)(base))->CRC_POL_CTL) +#define DW_CRC_LFSR_CTL(base) (((DW_V2_Type*)(base))->CRC_LFSR_CTL) + +#define DW_CH(base, chan) ((DW_CH_STRUCT_V2_Type*)((uint32_t)(base) + cy_device->dwChOffset + ((chan) * cy_device->dwChSize))) +#define DW_CH_CTL(base, chan) (DW_CH(base, chan)->CH_CTL) +#define DW_CH_STATUS(base, chan) (DW_CH(base, chan)->CH_STATUS) +#define DW_CH_IDX(base, chan) (DW_CH(base, chan)->CH_IDX) +#define DW_CH_CURR_PTR(base, chan) (DW_CH(base, chan)->CH_CURR_PTR) + +#define DW_CH_INTR(base, chan) (DW_CH(base, chan)->INTR) +#define DW_CH_INTR_SET(base, chan) (DW_CH(base, chan)->INTR_SET) +#define DW_CH_INTR_MASK(base, chan) (DW_CH(base, chan)->INTR_MASK) +#define DW_CH_INTR_MASKED(base, chan) (DW_CH(base, chan)->INTR_MASKED) + + +/******************************************************************************* +* DMAC +*******************************************************************************/ + +#define CY_DMAC_CH_NR (4UL) +#define DMAC_CTL(base) (((DMAC_V2_Type*)(base))->CTL) +#define DMAC_ACTIVE(base) (((DMAC_V2_Type const*)(base))->ACTIVE) +#define DMAC_CH(base, chan) (&(((DMAC_V2_Type*)(base))->CH[(chan)])) +#define DMAC_CH_CTL(base, chan) (DMAC_CH(base, chan)->CTL) +#define DMAC_CH_IDX(base, chan) (DMAC_CH(base, chan)->IDX) +#define DMAC_CH_CURR(base, chan) (DMAC_CH(base, chan)->CURR) +#define DMAC_CH_DESCR_SRC(base, chan) (DMAC_CH(base, chan)->DESCR_SRC) +#define DMAC_CH_DESCR_DST(base, chan) (DMAC_CH(base, chan)->DESCR_DST) +#define DMAC_CH_INTR(base, chan) (DMAC_CH(base, chan)->INTR) +#define DMAC_CH_INTR_SET(base, chan) (DMAC_CH(base, chan)->INTR_SET) +#define DMAC_CH_INTR_MASK(base, chan) (DMAC_CH(base, chan)->INTR_MASK) +#define DMAC_CH_INTR_MASKED(base, chan) (DMAC_CH(base, chan)->INTR_MASKED) + + +/******************************************************************************* +* PERI +*******************************************************************************/ +#define CY_PERI_BASE ((PERI_V1_Type *) cy_device->periBase) + +#define CY_PERI_V1 (1U == cy_device->periVersion) /* true if the mxperi version is 1 */ +#define CY_PERI_V2_TR_GR_SIZE (sizeof(PERI_TR_GR_V2_Type)) +#define CY_PERI_TR_CTL_NUM (cy_device->periTrGrSize / sizeof(uint32_t)) +#define CY_PERI_TR_CTL_SEL_Pos (0UL) +#define CY_PERI_TR_CTL_SEL_Msk ((uint32_t)CY_PERI_TR_CTL_NUM - 1UL) +#define CY_PERI_TR_CMD_GROUP_SEL_Pos (PERI_TR_CMD_GROUP_SEL_Pos) +#define CY_PERI_TR_CMD_GROUP_SEL_Msk ((uint32_t)cy_device->periTrCmdGrSelMsk) + +#define PERI_TR_CMD (*(volatile uint32_t*)((uint32_t)cy_device->periBase + \ + (uint32_t)cy_device->periTrCmdOffset)) +#define PERI_TR_GR_TR_CTL(group, trCtl) (*(volatile uint32_t*)((uint32_t)cy_device->periBase + \ + (uint32_t)cy_device->periTrGrOffset + \ + ((group) * (uint32_t)cy_device->periTrGrSize) + \ + ((trCtl) * (uint32_t)sizeof(uint32_t)))) + +#define CY_PERI_CLOCK_NR ((uint32_t)(cy_device->periClockNr)) + +#define PERI_DIV_CMD ((CY_PERI_BASE)->DIV_CMD) + +#define CY_PERI_DIV_CMD_DIV_SEL_Pos (PERI_DIV_CMD_DIV_SEL_Pos) +#define CY_PERI_DIV_CMD_DIV_SEL_Msk ((uint32_t)(cy_device->periDivCmdDivSelMsk)) +#define CY_PERI_DIV_CMD_TYPE_SEL_Pos ((uint32_t)(cy_device->periDivCmdTypeSelPos)) +#define CY_PERI_DIV_CMD_TYPE_SEL_Msk ((uint32_t)(0x3UL << CY_PERI_DIV_CMD_TYPE_SEL_Pos)) +#define CY_PERI_DIV_CMD_PA_DIV_SEL_Pos ((uint32_t)(cy_device->periDivCmdPaDivSelPos)) +#define CY_PERI_DIV_CMD_PA_DIV_SEL_Msk ((uint32_t)(CY_PERI_DIV_CMD_DIV_SEL_Msk << CY_PERI_DIV_CMD_PA_DIV_SEL_Pos)) +#define CY_PERI_DIV_CMD_PA_TYPE_SEL_Pos ((uint32_t)(cy_device->periDivCmdPaTypeSelPos)) +#define CY_PERI_DIV_CMD_PA_TYPE_SEL_Msk ((uint32_t)(0x3UL << CY_PERI_DIV_CMD_PA_TYPE_SEL_Pos)) + +#define PERI_CLOCK_CTL ((CY_PERI_BASE)->CLOCK_CTL) + +#define CY_PERI_CLOCK_CTL_DIV_SEL_Pos (PERI_CLOCK_CTL_DIV_SEL_Pos) +#define CY_PERI_CLOCK_CTL_DIV_SEL_Msk (CY_PERI_DIV_CMD_DIV_SEL_Msk) +#define CY_PERI_CLOCK_CTL_TYPE_SEL_Pos (CY_PERI_DIV_CMD_TYPE_SEL_Pos) +#define CY_PERI_CLOCK_CTL_TYPE_SEL_Msk (CY_PERI_DIV_CMD_TYPE_SEL_Msk) + +#define PERI_DIV_8_CTL ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv8CtlOffset))) +#define PERI_DIV_16_CTL ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16CtlOffset))) +#define PERI_DIV_16_5_CTL ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16_5CtlOffset))) +#define PERI_DIV_24_5_CTL ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv24_5CtlOffset))) + +#define PERI_GR_SL_CTL(udbGroupNr) ((CY_PERI_BASE)->GR[udbGroupNr].SL_CTL) + +#define PERI_PPU_PR_ADDR0(base) (((PERI_PPU_PR_V1_Type *) (base))->ADDR0) +#define PERI_PPU_PR_ATT0(base) (((PERI_PPU_PR_V1_Type *) (base))->ATT0) +#define PERI_PPU_PR_ATT1(base) (((PERI_PPU_PR_V1_Type *) (base))->ATT1) + +#define PERI_PPU_GR_ADDR0(base) (((PERI_PPU_GR_V1_Type *) (base))->ADDR0) +#define PERI_PPU_GR_ATT0(base) (((PERI_PPU_GR_V1_Type *) (base))->ATT0) +#define PERI_PPU_GR_ATT1(base) (((PERI_PPU_GR_V1_Type *) (base))->ATT1) + +#define PERI_GR_PPU_SL_ADDR0(base) (((PERI_GR_PPU_SL_V1_Type *) (base))->ADDR0) +#define PERI_GR_PPU_SL_ATT0(base) (((PERI_GR_PPU_SL_V1_Type *) (base))->ATT0) +#define PERI_GR_PPU_SL_ATT1(base) (((PERI_GR_PPU_SL_V1_Type *) (base))->ATT1) + +#define PERI_GR_PPU_RG_ADDR0(base) (((PERI_GR_PPU_RG_V1_Type *) (base))->ADDR0) +#define PERI_GR_PPU_RG_ATT0(base) (((PERI_GR_PPU_RG_V1_Type *) (base))->ATT0) +#define PERI_GR_PPU_RG_ATT1(base) (((PERI_GR_PPU_RG_V1_Type *) (base))->ATT1) + +#define PERI_MS_PPU_PR_SL_ADDR(base) (((PERI_MS_PPU_PR_V2_Type *) (base))->SL_ADDR) +#define PERI_MS_PPU_PR_SL_SIZE(base) (((PERI_MS_PPU_PR_V2_Type *) (base))->SL_SIZE) +#define PERI_MS_PPU_PR_MS_ATT(base) ((volatile uint32_t *) &(((PERI_MS_PPU_PR_V2_Type *)(base))->MS_ATT0)) +#define PERI_MS_PPU_PR_SL_ATT(base) ((volatile uint32_t *) &(((PERI_MS_PPU_PR_V2_Type *)(base))->SL_ATT0)) +#define PERI_MS_PPU_FX_MS_ATT(base) ((volatile uint32_t *) &(((PERI_MS_PPU_FX_V2_Type *)(base))->MS_ATT0)) +#define PERI_MS_PPU_FX_SL_ATT(base) ((volatile uint32_t *) &(((PERI_MS_PPU_FX_V2_Type *)(base))->SL_ATT0)) + +#define PROT_PERI_PPU_PR_STRUCT_IDX_ATT0(stcIdx) ((CY_PERI_BASE)->PPU_PR[(stcIdx)].ATT0) +#define PROT_PERI_PPU_PR_STRUCT_IDX_ATT1(stcIdx) ((CY_PERI_BASE)->PPU_PR[(stcIdx)].ATT1) + +#define PROT_PERI_PPU_PR_STRUCT_IDX(stcIdx) ((PERI_PPU_PR_Type*) &(CY_PERI_BASE)->PPU_PR[(stcIdx)]) + + +/******************************************************************************* +* PROT +*******************************************************************************/ +#define CY_PROT_BASE (cy_device->protBase) + +#define CY_PROT_PC_MAX (8UL) +#define CY_PROT_BUS_MASTER_MASK (cy_device->protBusMasterMask) +#define PROT_MPU_MS_CTL(mpu) (((PROT_V1_Type*)CY_PROT_BASE)->CYMPU[(mpu)].MS_CTL) +#define PROT_MPU_MPU_STRUCT_ADDR(base) (((PROT_MPU_MPU_STRUCT_V1_Type *) (base))->ADDR) +#define PROT_MPU_MPU_STRUCT_ATT(base) (((PROT_MPU_MPU_STRUCT_V1_Type *) (base))->ATT) + +#define PROT_SMPU_SMPU_STRUCT_ADDR0(base) (((PROT_SMPU_SMPU_STRUCT_V1_Type *) (base))->ADDR0) +#define PROT_SMPU_SMPU_STRUCT_ADDR1(base) (((PROT_SMPU_SMPU_STRUCT_V1_Type *) (base))->ADDR1) +#define PROT_SMPU_SMPU_STRUCT_ATT0(base) (((PROT_SMPU_SMPU_STRUCT_V1_Type *) (base))->ATT0) +#define PROT_SMPU_SMPU_STRUCT_ATT1(base) (((PROT_SMPU_SMPU_STRUCT_V1_Type *) (base))->ATT1) + +#define PROT_SMPU_SMPU_STRUCT_IDX_ATT0(stcIdx) (((PROT_SMPU_V1_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)].ATT0) +#define PROT_SMPU_SMPU_STRUCT_IDX_ATT1(stcIdx) (((PROT_SMPU_V1_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)].ATT1) +#define PROT_SMPU_SMPU_STRUCT_IDX(stcIdx) (((PROT_SMPU_SMPU_STRUCT_V1_Type *) &((PROT_SMPU_V1_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)])) + + +/******************************************************************************* +* IOSS +*******************************************************************************/ + +#define CY_GPIO_BASE ((uint32_t)(cy_device->gpioBase)) + +#define GPIO_INTR_CAUSE0 (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE0) +#define GPIO_INTR_CAUSE1 (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE1) +#define GPIO_INTR_CAUSE2 (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE2) +#define GPIO_INTR_CAUSE3 (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE3) + +#define GPIO_PRT_OUT(base) (((GPIO_PRT_V1_Type*)(base))->OUT) +#define GPIO_PRT_OUT_CLR(base) (((GPIO_PRT_V1_Type*)(base))->OUT_CLR) +#define GPIO_PRT_OUT_SET(base) (((GPIO_PRT_V1_Type*)(base))->OUT_SET) +#define GPIO_PRT_OUT_INV(base) (((GPIO_PRT_V1_Type*)(base))->OUT_INV) +#define GPIO_PRT_IN(base) (((GPIO_PRT_V1_Type*)(base))->IN) +#define GPIO_PRT_INTR(base) (((GPIO_PRT_V1_Type*)(base))->INTR) +#define GPIO_PRT_INTR_MASK(base) (((GPIO_PRT_V1_Type*)(base))->INTR_MASK) +#define GPIO_PRT_INTR_MASKED(base) (((GPIO_PRT_V1_Type*)(base))->INTR_MASKED) +#define GPIO_PRT_INTR_SET(base) (((GPIO_PRT_V1_Type*)(base))->INTR_SET) + +#define GPIO_PRT_INTR_CFG(base) (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtIntrCfgOffset))) +#define GPIO_PRT_CFG(base) (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgOffset))) +#define GPIO_PRT_CFG_IN(base) (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgInOffset))) +#define GPIO_PRT_CFG_OUT(base) (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgOutOffset))) +#define GPIO_PRT_CFG_SIO(base) (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgSioOffset))) + +#define CY_HSIOM_BASE ((uint32_t)(cy_device->hsiomBase)) + +#define HSIOM_PRT_PORT_SEL0(base) (((HSIOM_PRT_V1_Type *)(base))->PORT_SEL0) +#define HSIOM_PRT_PORT_SEL1(base) (((HSIOM_PRT_V1_Type *)(base))->PORT_SEL1) + +#define HSIOM_AMUX_SPLIT_CTL(switchCtrl) (((HSIOM_V1_Type *) CY_HSIOM_BASE)->AMUX_SPLIT_CTL[switchCtrl]) + + +/******************************************************************************* +* I2S +*******************************************************************************/ + +#define REG_I2S_CTL(base) (((I2S_V1_Type*)(base))->CTL) +#define REG_I2S_CMD(base) (((I2S_V1_Type*)(base))->CMD) +#define REG_I2S_CLOCK_CTL(base) (((I2S_V1_Type*)(base))->CLOCK_CTL) +#define REG_I2S_TR_CTL(base) (((I2S_V1_Type*)(base))->TR_CTL) +#define REG_I2S_TX_CTL(base) (((I2S_V1_Type*)(base))->TX_CTL) +#define REG_I2S_TX_FIFO_CTL(base) (((I2S_V1_Type*)(base))->TX_FIFO_CTL) +#define REG_I2S_TX_FIFO_STATUS(base) (((I2S_V1_Type*)(base))->TX_FIFO_STATUS) +#define REG_I2S_TX_FIFO_WR(base) (((I2S_V1_Type*)(base))->TX_FIFO_WR) +#define REG_I2S_TX_WATCHDOG(base) (((I2S_V1_Type*)(base))->TX_WATCHDOG) +#define REG_I2S_RX_CTL(base) (((I2S_V1_Type*)(base))->RX_CTL) +#define REG_I2S_RX_FIFO_CTL(base) (((I2S_V1_Type*)(base))->RX_FIFO_CTL) +#define REG_I2S_RX_FIFO_STATUS(base) (((I2S_V1_Type*)(base))->RX_FIFO_STATUS) +#define REG_I2S_RX_FIFO_RD(base) (((I2S_V1_Type*)(base))->RX_FIFO_RD) +#define REG_I2S_RX_FIFO_RD_SILENT(base) (((I2S_V1_Type*)(base))->RX_FIFO_RD_SILENT) +#define REG_I2S_RX_WATCHDOG(base) (((I2S_V1_Type*)(base))->RX_WATCHDOG) +#define REG_I2S_INTR(base) (((I2S_V1_Type*)(base))->INTR) +#define REG_I2S_INTR_SET(base) (((I2S_V1_Type*)(base))->INTR_SET) +#define REG_I2S_INTR_MASK(base) (((I2S_V1_Type*)(base))->INTR_MASK) +#define REG_I2S_INTR_MASKED(base) (((I2S_V1_Type*)(base))->INTR_MASKED) + + +/******************************************************************************* +* PDM +*******************************************************************************/ + +#define PDM_PCM_CTL(base) (((PDM_V1_Type*)(base))->CTL) +#define PDM_PCM_CMD(base) (((PDM_V1_Type*)(base))->CMD) +#define PDM_PCM_CLOCK_CTL(base) (((PDM_V1_Type*)(base))->CLOCK_CTL) +#define PDM_PCM_MODE_CTL(base) (((PDM_V1_Type*)(base))->MODE_CTL) +#define PDM_PCM_DATA_CTL(base) (((PDM_V1_Type*)(base))->DATA_CTL) +#define PDM_PCM_TR_CTL(base) (((PDM_V1_Type*)(base))->TR_CTL) +#define PDM_PCM_INTR_MASK(base) (((PDM_V1_Type*)(base))->INTR_MASK) +#define PDM_PCM_INTR_MASKED(base) (((PDM_V1_Type*)(base))->INTR_MASKED) +#define PDM_PCM_INTR(base) (((PDM_V1_Type*)(base))->INTR) +#define PDM_PCM_INTR_SET(base) (((PDM_V1_Type*)(base))->INTR_SET) +#define PDM_PCM_RX_FIFO_STATUS(base) (((PDM_V1_Type*)(base))->RX_FIFO_STATUS) +#define PDM_PCM_RX_FIFO_CTL(base) (((PDM_V1_Type*)(base))->RX_FIFO_CTL) +#define PDM_PCM_RX_FIFO_RD(base) (((PDM_V1_Type*)(base))->RX_FIFO_RD) +#define PDM_PCM_RX_FIFO_RD_SILENT(base) (((PDM_V1_Type*)(base))->RX_FIFO_RD_SILENT) + + +/******************************************************************************* +* LCD +*******************************************************************************/ + +#define LCD_OCTET_NUM (8U) /* number of octets */ +#define LCD_COM_NUM (8U) /* maximum number of commons */ + +#define LCD_ID(base) (((LCD_V1_Type*)(base))->ID) +#define LCD_CONTROL(base) (((LCD_V1_Type*)(base))->CONTROL) +#define LCD_DIVIDER(base) (((LCD_V1_Type*)(base))->DIVIDER) +#define LCD_DATA0(base) (((LCD_V1_Type*)(base))->DATA0) +#define LCD_DATA1(base) (((LCD_V1_Type*)(base))->DATA1) +#define LCD_DATA2(base) (((LCD_V1_Type*)(base))->DATA2) +#define LCD_DATA3(base) (((LCD_V1_Type*)(base))->DATA3) + + +/******************************************************************************* +* IPC +*******************************************************************************/ + +#define REG_IPC_STRUCT_ACQUIRE(base) (((IPC_STRUCT_V1_Type*)(base))->ACQUIRE) +#define REG_IPC_STRUCT_RELEASE(base) (((IPC_STRUCT_V1_Type*)(base))->RELEASE) +#define REG_IPC_STRUCT_NOTIFY(base) (((IPC_STRUCT_V1_Type*)(base))->NOTIFY) +#define REG_IPC_STRUCT_DATA(base) (((IPC_STRUCT_V1_Type*)(base))->DATA) +#define REG_IPC_STRUCT_DATA1(base) (((IPC_STRUCT_V2_Type*)(base))->DATA1) +#define REG_IPC_STRUCT_LOCK_STATUS(base) (*(volatile uint32_t*)((uint32_t)(base) + cy_device->ipcLockStatusOffset)) + +#define REG_IPC_INTR_STRUCT_INTR(base) (((IPC_INTR_STRUCT_V1_Type*)(base))->INTR) +#define REG_IPC_INTR_STRUCT_INTR_SET(base) (((IPC_INTR_STRUCT_V1_Type*)(base))->INTR_SET) +#define REG_IPC_INTR_STRUCT_INTR_MASK(base) (((IPC_INTR_STRUCT_V1_Type*)(base))->INTR_MASK) +#define REG_IPC_INTR_STRUCT_INTR_MASKED(base) (((IPC_INTR_STRUCT_V1_Type*)(base))->INTR_MASKED) + +#define CY_IPC_STRUCT_PTR(ipcIndex) ((IPC_STRUCT_V1_Type*)(cy_device->ipcBase + (cy_device->ipcStructSize * (ipcIndex)))) + +#define CY_IPC_CHANNELS (uint32_t)(cy_device->cpussIpcNr) +#define CY_IPC_INTERRUPTS (uint32_t)(cy_device->cpussIpcIrqNr) + +/* IPC channel definitions */ +#define CY_IPC_CHAN_SYSCALL_CM0 (0U) /* System calls for the CM0 processor */ +#define CY_IPC_CHAN_SYSCALL_CM4 (1U) /* System calls for the 1st non-CM0 processor */ +#define CY_IPC_CHAN_SYSCALL_DAP (2UL) /* System calls for the DAP */ +#define CY_IPC_CHAN_SEMA (4UL) /* IPC data channel for the Semaphores */ +#define CY_IPC_CHAN_CYPIPE_EP0 (5UL) /* IPC data channel for CYPIPE EP0 */ +#define CY_IPC_CHAN_CYPIPE_EP1 (6UL) /* IPC data channel for CYPIPE EP1 */ +#define CY_IPC_CHAN_DDFT (7UL) /* IPC data channel for DDFT */ + +/* IPC Notify interrupts definitions */ +#define CY_IPC_INTR_SYSCALL1 (0UL) +#define CY_IPC_INTR_CYPIPE_EP0 (3UL) +#define CY_IPC_INTR_CYPIPE_EP1 (4UL) +#define CY_IPC_INTR_SPARE (7UL) + +/* Endpoint indexes in the pipe array */ +#define CY_IPC_EP_CYPIPE_CM0_ADDR (0UL) +#define CY_IPC_EP_CYPIPE_CM4_ADDR (1UL) + + +/******************************************************************************* +* CTB +*******************************************************************************/ + +#define CTBM_CTB_CTRL(base) (((CTBM_V1_Type *) (base))->CTB_CTRL) +#define CTBM_CTB_SW_DS_CTRL(base) (((CTBM_V1_Type *) (base))->CTB_SW_DS_CTRL) +#define CTBM_CTB_SW_SQ_CTRL(base) (((CTBM_V1_Type *) (base))->CTB_SW_SQ_CTRL) +#define CTBM_CTD_SW(base) (((CTBM_V1_Type *) (base))->CTD_SW) +#define CTBM_CTD_SW_CLEAR(base) (((CTBM_V1_Type *) (base))->CTD_SW_CLEAR) +#define CTBM_COMP_STAT(base) (((CTBM_V1_Type *) (base))->COMP_STAT) +#define CTBM_OA0_SW_CLEAR(base) (((CTBM_V1_Type *) (base))->OA0_SW_CLEAR) +#define CTBM_OA1_SW_CLEAR(base) (((CTBM_V1_Type *) (base))->OA1_SW_CLEAR) +#define CTBM_OA0_SW(base) (((CTBM_V1_Type *) (base))->OA0_SW) +#define CTBM_OA1_SW(base) (((CTBM_V1_Type *) (base))->OA1_SW) +#define CTBM_OA_RES0_CTRL(base) (((CTBM_V1_Type *) (base))->OA_RES0_CTRL) +#define CTBM_OA_RES1_CTRL(base) (((CTBM_V1_Type *) (base))->OA_RES1_CTRL) +#define CTBM_OA0_COMP_TRIM(base) (((CTBM_V1_Type *) (base))->OA0_COMP_TRIM) +#define CTBM_OA1_COMP_TRIM(base) (((CTBM_V1_Type *) (base))->OA1_COMP_TRIM) +#define CTBM_OA0_OFFSET_TRIM(base) (((CTBM_V1_Type *) (base))->OA0_OFFSET_TRIM) +#define CTBM_OA1_OFFSET_TRIM(base) (((CTBM_V1_Type *) (base))->OA1_OFFSET_TRIM) +#define CTBM_OA0_SLOPE_OFFSET_TRIM(base) (((CTBM_V1_Type *) (base))->OA0_SLOPE_OFFSET_TRIM) +#define CTBM_OA1_SLOPE_OFFSET_TRIM(base) (((CTBM_V1_Type *) (base))->OA1_SLOPE_OFFSET_TRIM) +#define CTBM_INTR(base) (((CTBM_V1_Type *) (base))->INTR) +#define CTBM_INTR_SET(base) (((CTBM_V1_Type *) (base))->INTR_SET) +#define CTBM_INTR_MASK(base) (((CTBM_V1_Type *) (base))->INTR_MASK) +#define CTBM_INTR_MASKED(base) (((CTBM_V1_Type *) (base))->INTR_MASKED) + + +/******************************************************************************* +* CTDAC +*******************************************************************************/ + +#define CTDAC_CTDAC_CTRL(base) (((CTDAC_V1_Type *) (base))->CTDAC_CTRL) +#define CTDAC_CTDAC_SW(base) (((CTDAC_V1_Type *) (base))->CTDAC_SW) +#define CTDAC_CTDAC_SW_CLEAR(base) (((CTDAC_V1_Type *) (base))->CTDAC_SW_CLEAR) +#define CTDAC_CTDAC_VAL(base) (((CTDAC_V1_Type *) (base))->CTDAC_VAL) +#define CTDAC_CTDAC_VAL_NXT(base) (((CTDAC_V1_Type *) (base))->CTDAC_VAL_NXT) +#define CTDAC_INTR(base) (((CTDAC_V1_Type *) (base))->INTR) +#define CTDAC_INTR_SET(base) (((CTDAC_V1_Type *) (base))->INTR_SET) +#define CTDAC_INTR_MASK(base) (((CTDAC_V1_Type *) (base))->INTR_MASK) +#define CTDAC_INTR_MASKED(base) (((CTDAC_V1_Type *) (base))->INTR_MASKED) + + +/******************************************************************************* +* SYSANALOG +*******************************************************************************/ + +#define PASS_AREF_AREF_CTRL (((PASS_V1_Type*) cy_device->passBase)->AREF.AREF_CTRL) +#define PASS_INTR_CAUSE (((PASS_V1_Type*) cy_device->passBase)->INTR_CAUSE) + + +/******************************************************************************* +* SCB +*******************************************************************************/ + +#define SCB_CTRL(base) (((CySCB_V1_Type*) (base))->CTRL) +#define SCB_SPI_CTRL(base) (((CySCB_V1_Type*) (base))->SPI_CTRL) +#define SCB_SPI_STATUS(base) (((CySCB_V1_Type*) (base))->SPI_STATUS) +#define SCB_UART_CTRL(base) (((CySCB_V1_Type*) (base))->UART_CTRL) +#define SCB_UART_TX_CTRL(base) (((CySCB_V1_Type*) (base))->UART_TX_CTRL) +#define SCB_UART_RX_CTRL(base) (((CySCB_V1_Type*) (base))->UART_RX_CTRL) +#define SCB_UART_FLOW_CTRL(base) (((CySCB_V1_Type*) (base))->UART_FLOW_CTRL) +#define SCB_I2C_CTRL(base) (((CySCB_V1_Type*) (base))->I2C_CTRL) +#define SCB_I2C_STATUS(base) (((CySCB_V1_Type*) (base))->I2C_STATUS) +#define SCB_I2C_M_CMD(base) (((CySCB_V1_Type*) (base))->I2C_M_CMD) +#define SCB_I2C_S_CMD(base) (((CySCB_V1_Type*) (base))->I2C_S_CMD) +#define SCB_I2C_CFG(base) (((CySCB_V1_Type*) (base))->I2C_CFG) +#define SCB_TX_CTRL(base) (((CySCB_V1_Type*) (base))->TX_CTRL) +#define SCB_TX_FIFO_CTRL(base) (((CySCB_V1_Type*) (base))->TX_FIFO_CTRL) +#define SCB_TX_FIFO_STATUS(base) (((CySCB_V1_Type*) (base))->TX_FIFO_STATUS) +#define SCB_TX_FIFO_WR(base) (((CySCB_V1_Type*) (base))->TX_FIFO_WR) +#define SCB_RX_CTRL(base) (((CySCB_V1_Type*) (base))->RX_CTRL) +#define SCB_RX_FIFO_CTRL(base) (((CySCB_V1_Type*) (base))->RX_FIFO_CTRL) +#define SCB_RX_FIFO_STATUS(base) (((CySCB_V1_Type*) (base))->RX_FIFO_STATUS) +#define SCB_RX_MATCH(base) (((CySCB_V1_Type*) (base))->RX_MATCH) +#define SCB_RX_FIFO_RD(base) (((CySCB_V1_Type*) (base))->RX_FIFO_RD) +#define SCB_INTR_CAUSE(base) (((CySCB_V1_Type*) (base))->INTR_CAUSE) +#define SCB_INTR_I2C_EC(base) (((CySCB_V1_Type*) (base))->INTR_I2C_EC) +#define SCB_INTR_I2C_EC_MASK(base) (((CySCB_V1_Type*) (base))->INTR_I2C_EC_MASK) +#define SCB_INTR_I2C_EC_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_I2C_EC_MASKED) +#define SCB_INTR_SPI_EC(base) (((CySCB_V1_Type*) (base))->INTR_SPI_EC) +#define SCB_INTR_SPI_EC_MASK(base) (((CySCB_V1_Type*) (base))->INTR_SPI_EC_MASK) +#define SCB_INTR_SPI_EC_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_SPI_EC_MASKED) +#define SCB_INTR_M(base) (((CySCB_V1_Type*) (base))->INTR_M) +#define SCB_INTR_M_SET(base) (((CySCB_V1_Type*) (base))->INTR_M_SET) +#define SCB_INTR_M_MASK(base) (((CySCB_V1_Type*) (base))->INTR_M_MASK) +#define SCB_INTR_M_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_M_MASKED) +#define SCB_INTR_S(base) (((CySCB_V1_Type*) (base))->INTR_S) +#define SCB_INTR_S_SET(base) (((CySCB_V1_Type*) (base))->INTR_S_SET) +#define SCB_INTR_S_MASK(base) (((CySCB_V1_Type*) (base))->INTR_S_MASK) +#define SCB_INTR_S_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_S_MASKED) +#define SCB_INTR_TX(base) (((CySCB_V1_Type*) (base))->INTR_TX) +#define SCB_INTR_TX_SET(base) (((CySCB_V1_Type*) (base))->INTR_TX_SET) +#define SCB_INTR_TX_MASK(base) (((CySCB_V1_Type*) (base))->INTR_TX_MASK) +#define SCB_INTR_TX_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_TX_MASKED) +#define SCB_INTR_RX(base) (((CySCB_V1_Type*) (base))->INTR_RX) +#define SCB_INTR_RX_SET(base) (((CySCB_V1_Type*) (base))->INTR_RX_SET) +#define SCB_INTR_RX_MASK(base) (((CySCB_V1_Type*) (base))->INTR_RX_MASK) +#define SCB_INTR_RX_MASKED(base) (((CySCB_V1_Type*) (base))->INTR_RX_MASKED) + + +/******************************************************************************* +* PROFILE +*******************************************************************************/ + +#define CY_EP_MONITOR_COUNT ((uint32_t)(cy_device->epMonitorNr)) +#define CY_EP_CNT_NR (8UL) +#define PROFILE_CTL (((PROFILE_V1_Type*) PROFILE_BASE)->CTL) +#define PROFILE_STATUS (((PROFILE_V1_Type*) PROFILE_BASE)->STATUS) +#define PROFILE_CMD (((PROFILE_V1_Type*) PROFILE_BASE)->CMD) +#define PROFILE_INTR (((PROFILE_V1_Type*) PROFILE_BASE)->INTR) +#define PROFILE_INTR_MASK (((PROFILE_V1_Type*) PROFILE_BASE)->INTR_MASK) +#define PROFILE_INTR_MASKED (((PROFILE_V1_Type*) PROFILE_BASE)->INTR_MASKED) +#define PROFILE_CNT_STRUCT (((PROFILE_V1_Type*) PROFILE_BASE)->CNT_STRUCT) + + +/******************************************************************************* +* BLE +*******************************************************************************/ + +#define BLE_RCB_INTR (((BLE_V1_Type *) BLE)->RCB.INTR) +#define BLE_RCB_TX_FIFO_WR (((BLE_V1_Type *) BLE)->RCB.TX_FIFO_WR) +#define BLE_RCB_RX_FIFO_RD (((BLE_V1_Type *) BLE)->RCB.RX_FIFO_RD) +#define BLE_RCB_CTRL (((BLE_V1_Type *) BLE)->RCB.CTRL) +#define BLE_RCB_RCBLL_CTRL (((BLE_V1_Type *) BLE)->RCB.RCBLL.CTRL) +#define BLE_BLESS_XTAL_CLK_DIV_CONFIG (((BLE_V1_Type *) BLE)->BLESS.XTAL_CLK_DIV_CONFIG) +#define BLE_BLESS_MT_CFG (((BLE_V1_Type *) BLE)->BLESS.MT_CFG) +#define BLE_BLESS_MT_STATUS (((BLE_V1_Type *) BLE)->BLESS.MT_STATUS) +#define BLE_BLESS_MT_DELAY_CFG (((BLE_V1_Type *) BLE)->BLESS.MT_DELAY_CFG) +#define BLE_BLESS_MT_DELAY_CFG2 (((BLE_V1_Type *) BLE)->BLESS.MT_DELAY_CFG2) +#define BLE_BLESS_MT_DELAY_CFG3 (((BLE_V1_Type *) BLE)->BLESS.MT_DELAY_CFG3) +#define BLE_BLESS_MT_VIO_CTRL (((BLE_V1_Type *) BLE)->BLESS.MT_VIO_CTRL) +#define BLE_BLESS_LL_CLK_EN (((BLE_V1_Type *) BLE)->BLESS.LL_CLK_EN) +#define BLE_BLESS_MISC_EN_CTRL (((BLE_V1_Type *) BLE)->BLESS.MISC_EN_CTRL) +#define BLE_BLESS_INTR_STAT (((BLE_V1_Type *) BLE)->BLESS.INTR_STAT) +#define BLE_BLELL_EVENT_INTR (((BLE_V1_Type *) BLE)->BLELL.EVENT_INTR) +#define BLE_BLELL_CONN_INTR (((BLE_V1_Type *) BLE)->BLELL.CONN_INTR) +#define BLE_BLELL_CONN_EXT_INTR (((BLE_V1_Type *) BLE)->BLELL.CONN_EXT_INTR) +#define BLE_BLELL_SCAN_INTR (((BLE_V1_Type *) BLE)->BLELL.SCAN_INTR) +#define BLE_BLELL_ADV_INTR (((BLE_V1_Type *) BLE)->BLELL.ADV_INTR) + + +/******************************************************************************* +* USBFS Device +*******************************************************************************/ + +#define USBFS_DEV_CR0(base) (((USBFS_V1_Type *)(base))->USBDEV.CR0) +#define USBFS_DEV_CR1(base) (((USBFS_V1_Type *)(base))->USBDEV.CR1) +#define USBFS_DEV_USBIO_CR0(base) (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR0) +#define USBFS_DEV_USBIO_CR2(base) (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR2) +#define USBFS_DEV_USBIO_CR1(base) (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR1) +#define USBFS_DEV_USB_CLK_EN(base) (((USBFS_V1_Type *)(base))->USBDEV.USB_CLK_EN) +#define USBFS_DEV_BUS_RST_CNT(base) (((USBFS_V1_Type *)(base))->USBDEV.BUS_RST_CNT) +#define USBFS_DEV_OSCLK_DR0(base) (((USBFS_V1_Type *)(base))->USBDEV.EP_TYPE) +#define USBFS_DEV_OSCLK_DR1(base) (((USBFS_V1_Type *)(base))->USBDEV.OSCLK_DR0) +#define USBFS_DEV_SOF0(base) (((USBFS_V1_Type *)(base))->USBDEV.SOF0) +#define USBFS_DEV_SOF1(base) (((USBFS_V1_Type *)(base))->USBDEV.SOF1) +#define USBFS_DEV_SOF16(base) (((USBFS_V1_Type *)(base))->USBDEV.OSCLK_DR1) +#define USBFS_DEV_OSCLK_DR16(base) (((USBFS_V1_Type *)(base))->USBDEV.SOF16) +#define USBFS_DEV_ARB_CFG(base) (((USBFS_V1_Type *)(base))->USBDEV.ARB_CFG) +#define USBFS_DEV_DYN_RECONFIG(base) (((USBFS_V1_Type *)(base))->USBDEV.DYN_RECONFIG) +#define USBFS_DEV_BUF_SIZE(base) (((USBFS_V1_Type *)(base))->USBDEV.BUF_SIZE) +#define USBFS_DEV_EP_ACTIVE(base) (((USBFS_V1_Type *)(base))->USBDEV.EP_ACTIVE) +#define USBFS_DEV_EP_TYPE(base) (((USBFS_V1_Type *)(base))->USBDEV.EP_TYPE) +#define USBFS_DEV_CWA16(base) (((USBFS_V1_Type *)(base))->USBDEV.CWA16) +#define USBFS_DEV_CWA(base) (((USBFS_V1_Type *)(base))->USBDEV.CWA) +#define USBFS_DEV_CWA_MSB(base) (((USBFS_V1_Type *)(base))->USBDEV.CWA_MSB) +#define USBFS_DEV_DMA_THRES16(base) (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES16) +#define USBFS_DEV_DMA_THRES(base) (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES) +#define USBFS_DEV_DMA_THRES_MSB(base) (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES_MSB) + +#define USBFS_DEV_SIE_EP_INT_EN(base) (((USBFS_V1_Type *)(base))->USBDEV.SIE_EP_INT_EN) +#define USBFS_DEV_SIE_EP_INT_SR(base) (((USBFS_V1_Type *)(base))->USBDEV.SIE_EP_INT_SR) +#define USBFS_DEV_ARB_INT_EN(base) (((USBFS_V1_Type *)(base))->USBDEV.ARB_INT_EN) +#define USBFS_DEV_ARB_INT_SR(base) (((USBFS_V1_Type *)(base))->USBDEV.ARB_INT_SR) + +#define USBFS_DEV_EP0_CR(base) (((USBFS_V1_Type *)(base))->USBDEV.EP0_CR) +#define USBFS_DEV_EP0_CNT(base) (((USBFS_V1_Type *)(base))->USBDEV.EP0_CNT) +#define USBFS_DEV_EP0_DR(base, idx) (((USBFS_V1_Type *)(base))->USBDEV.EP0_DR[idx]) + +#define USBFS_DEV_MEM_DATA(base, idx) (((USBFS_V1_Type *)(base))->USBDEV.MEM[idx]) + +#define USBFS_DEV_SIE_REGS_BASE (0x30U) +#define USBFS_DEV_SIE_REGS_SIZE (0x40U) +#define USBFS_DEV_SIE_EP_CNT0_OFFSET (0x00U) +#define USBFS_DEV_SIE_EP_CNT1_OFFSET (0x04U) +#define USBFS_DEV_SIE_EP_CR0_OFFSET (0x08U) +#define USBFS_DEV_SIE_REGS(base, endpoint) ((uint32_t)(base) + USBFS_DEV_SIE_REGS_BASE + ((endpoint) * USBFS_DEV_SIE_REGS_SIZE)) + +#define USBFS_DEV_SIE_EP_CNT0(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \ + USBFS_DEV_SIE_EP_CNT0_OFFSET)) +#define USBFS_DEV_SIE_EP_CNT1(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \ + USBFS_DEV_SIE_EP_CNT1_OFFSET)) +#define USBFS_DEV_SIE_EP_CR0(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \ + USBFS_DEV_SIE_EP_CR0_OFFSET)) + +#define USBFS_DEV_ARB_REGS_BASE (0x200U) +#define USBFS_DEV_ARB_REGS_SIZE (0x40U) +#define USBFS_DEV_ARB_EP_CFG_OFFSET (0x00U) +#define USBFS_DEV_ARB_EP_INT_EN_OFFSET (0x04U) +#define USBFS_DEV_ARB_EP_SR_OFFSET (0x08U) +#define USBFS_DEV_ARB_RW_WA_OFFSET (0x10U) +#define USBFS_DEV_ARB_RW_WA_MSB_OFFSET (0x14U) +#define USBFS_DEV_ARB_RW_RA_OFFSET (0x18U) +#define USBFS_DEV_ARB_RW_RA_MSB_OFFSET (0x1CU) +#define USBFS_DEV_ARB_RW_DR_OFFSET (0x20U) +#define USBFS_DEV_ARB_REGS(base, endpoint) ((uint32_t)(base) + USBFS_DEV_ARB_REGS_BASE + ((endpoint) * USBFS_DEV_ARB_REGS_SIZE)) + +#define USBFS_DEV_ARB_EP_CFG(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_EP_CFG_OFFSET)) +#define USBFS_DEV_ARB_EP_INT_EN(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_EP_INT_EN_OFFSET)) +#define USBFS_DEV_ARB_EP_SR(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_EP_SR_OFFSET)) +#define USBFS_DEV_ARB_RW_WA(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_RW_WA_OFFSET)) +#define USBFS_DEV_ARB_RW_WA_MSB(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_RW_WA_MSB_OFFSET)) +#define USBFS_DEV_ARB_RW_RA(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_RW_RA_OFFSET)) +#define USBFS_DEV_ARB_RW_RA_MSB(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_RW_RA_MSB_OFFSET)) +#define USBFS_DEV_ARB_RW_DR(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \ + USBFS_DEV_ARB_RW_DR_OFFSET)) + +#define USBFS_DEV_ARB_REGS16_BASE (0x1210U) +#define USBFS_DEV_ARB_REGS16_SIZE (0x40U) +#define USBFS_DEV_ARB_RW_WA16_OFFSET (0x00U) +#define USBFS_DEV_ARB_RW_RA16_OFFSET (0x08U) +#define USBFS_DEV_ARB_RW_DR16_OFFSET (0x10U) +#define USBFS_DEV_ARB_REGS_16(base, endpoint) ((uint32_t)(base) + USBFS_DEV_ARB_REGS16_BASE + ((endpoint) * USBFS_DEV_ARB_REGS16_SIZE)) + +#define USBFS_DEV_ARB_RW_WA16(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \ + USBFS_DEV_ARB_RW_WA16_OFFSET)) +#define USBFS_DEV_ARB_RW_RA16(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \ + USBFS_DEV_ARB_RW_RA16_OFFSET)) +#define USBFS_DEV_ARB_RW_DR16(base, endpoint) (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \ + USBFS_DEV_ARB_RW_DR16_OFFSET)) + +#define USBFS_DEV_LPM_POWER_CTL(base) (((USBFS_V1_Type *)(base))->USBLPM.POWER_CTL) +#define USBFS_DEV_LPM_USBIO_CTL(base) (((USBFS_V1_Type *)(base))->USBLPM.USBIO_CTL) +#define USBFS_DEV_LPM_FLOW_CTL(base) (((USBFS_V1_Type *)(base))->USBLPM.FLOW_CTL) +#define USBFS_DEV_LPM_LPM_CTL(base) (((USBFS_V1_Type *)(base))->USBLPM.LPM_CTL) +#define USBFS_DEV_LPM_LPM_STAT(base) (((USBFS_V1_Type const *)(base))->USBLPM.LPM_STAT) +#define USBFS_DEV_LPM_INTR_SIE(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE) +#define USBFS_DEV_LPM_INTR_SIE_SET(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_SET) +#define USBFS_DEV_LPM_INTR_SIE_MASK(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_MASK) +#define USBFS_DEV_LPM_INTR_SIE_MASKED(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_MASKED) +#define USBFS_DEV_LPM_INTR_LVL_SEL(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_LVL_SEL) +#define USBFS_DEV_LPM_INTR_CAUSE_HI(base) (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_HI) +#define USBFS_DEV_LPM_INTR_CAUSE_MED(base) (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_MED) +#define USBFS_DEV_LPM_INTR_CAUSE_LO(base) (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_LO) +#define USBFS_DEV_LPM_DFT_CTL(base) (((USBFS_V1_Type *)(base))->USBLPM.DFT_CTL) + +#define USBFS_HOST_CTL0(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL0) +#define USBFS_HOST_CTL1(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL1) +#define USBFS_HOST_CTL2(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL2) +#define USBFS_HOST_ERR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_ERR) +#define USBFS_HOST_STATUS(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_STATUS) +#define USBFS_HOST_FCOMP(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_FCOMP) +#define USBFS_HOST_RTIMER(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_RTIMER) +#define USBFS_HOST_ADDR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_ADDR) +#define USBFS_HOST_EOF(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EOF) +#define USBFS_HOST_FRAME(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_FRAME) +#define USBFS_HOST_TOKEN(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_TOKEN) +#define USBFS_HOST_EP1_CTL(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_CTL) +#define USBFS_HOST_EP1_STATUS(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_STATUS) +#define USBFS_HOST_EP1_RW1_DR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_RW1_DR) +#define USBFS_HOST_EP1_RW2_DR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_RW2_DR) +#define USBFS_HOST_EP2_CTL(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_CTL) +#define USBFS_HOST_EP2_STATUS(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_STATUS) +#define USBFS_HOST_EP2_RW1_DR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_RW1_DR) +#define USBFS_HOST_EP2_RW2_DR(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_RW2_DR) +#define USBFS_HOST_LVL1_SEL(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_LVL1_SEL) +#define USBFS_HOST_LVL2_SEL(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_LVL2_SEL) +#define USBFS_INTR_USBHOST_CAUSE_HI(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_HI) +#define USBFS_INTR_USBHOST_CAUSE_MED(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_MED) +#define USBFS_INTR_USBHOST_CAUSE_LO(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_LO) +#define USBFS_INTR_HOST_EP_CAUSE_HI(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_HI) +#define USBFS_INTR_HOST_EP_CAUSE_MED(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_MED) +#define USBFS_INTR_HOST_EP_CAUSE_LO(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_LO) +#define USBFS_INTR_USBHOST(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST) +#define USBFS_INTR_USBHOST_SET(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_SET) +#define USBFS_INTR_USBHOST_MASK(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_MASK) +#define USBFS_INTR_USBHOST_MASKED(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_MASKED) +#define USBFS_INTR_HOST_EP(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP) +#define USBFS_INTR_HOST_EP_SET(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_SET) +#define USBFS_INTR_HOST_EP_MASK(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_MASK) +#define USBFS_INTR_HOST_EP_MASKED(base) (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_MASKED) +#define USBFS_HOST_DMA_ENBL(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_DMA_ENBL) +#define USBFS_HOST_EP1_BLK(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_BLK) +#define USBFS_HOST_EP2_BLK(base) (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_BLK) + +#endif /* CY_DEVICE_H_ */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dma.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dma.h new file mode 100644 index 00000000000..6263528e8ec --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dma.h @@ -0,0 +1,2010 @@ +/***************************************************************************//** +* \file cy_dma.h +* \version 2.10 +* +* \brief +* The header file of the DMA driver. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_dma +* \{ +* Configures a DMA channel and its descriptor(s). +* +* The functions and other declarations used in this driver are in cy_dma.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The DMA channel can be used in any project to transfer data +* without CPU intervention basing on a hardware trigger signal from another component. +* +* A device may support more than one DMA hardware block. Each block has a set of +* registers, a base hardware address, and supports multiple channels. +* Many API functions for the DMA driver require a base hardware address and +* channel number. Ensure that you use the correct hardware address for the DMA block in use. +* +* Features: +* * Multiple DW blocks (device specific) +* * Multiple channels per each DW block (device specific) +* * Four priority levels for each channel +* * Byte, half-word (2-byte), and word (4-byte) transfers +* * Configurable source and destination addresses +* * CRC calculation support (only for CPUSS_ver2) +* +* \section group_dma_configuration Configuration Considerations +* +* To set up a DMA driver, initialize a descriptor, +* initialize and enable a channel, and enable the DMA block. +* +* To set up a descriptor, provide the configuration parameters for the +* descriptor in the \ref cy_stc_dma_descriptor_config_t structure. Then call the +* \ref Cy_DMA_Descriptor_Init function to initialize the descriptor in SRAM. You can +* modify the source and destination addresses dynamically by calling +* \ref Cy_DMA_Descriptor_SetSrcAddress and \ref Cy_DMA_Descriptor_SetDstAddress. +* +* To set up a DMA channel, provide a filled \ref cy_stc_dma_channel_config_t +* structure. Call the \ref Cy_DMA_Channel_Init function, specifying the channel +* number. Use \ref Cy_DMA_Channel_Enable to enable the configured DMA channel. +* +* Call \ref Cy_DMA_Channel_Enable for each DMA channel in use. +* +* When configured, another peripheral typically triggers the DMA. The trigger is +* connected to the DMA using the trigger multiplexer. The trigger multiplexer +* driver has a software trigger you can use in firmware to trigger the DMA. See the +* Trigger Multiplexer documentation. +* +* The following is a simplified structure of the DMA driver API interdependencies +* in a typical user application: +* \image html dma.png +* +* NOTE: Even if a DMA channel is enabled, it is not operational until +* the DMA block is enabled using function \ref Cy_DMA_Enable.\n +* NOTE: If the DMA descriptor is configured to generate an interrupt, +* the interrupt must be enabled using the \ref Cy_DMA_Channel_SetInterruptMask +* function for each DMA channel. +* +* For example: +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Enable +* +* \section group_dma_more_information More Information. +* See: the DMA chapter of the device technical reference manual (TRM); +* the DMA Component datasheet; +* CE219940 - PSoC 6 MCU Multiple DMA Concatenation. +* +* \section group_dma_MISRA MISRA-C Compliance +* The DMA driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
10.3RA composite expression of the "essentially unsigned" type is being +* cast to a different type category.The value got from the bitfield physically cannot exceed the enumeration +* that describes this bitfield. So, the code is safe by design.
11.4AA cast should not be performed between a pointer to object type and +* a different pointer to object type.This piece of code is written for DW_V2_Type only and it will be never +* executed for DW_V1_Type (which is a default build option for DW_Type).
+* +* \section group_dma_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.10Flattened the organization of the driver source code into the single source directory and the single include directory.Driver library directory-structure simplification.
Added CRC mode and the CRC descriptor support. \n Added the \ref Cy_DMA_Crc_Init function.New devices support.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
2.0.1Changed CY_DMA_BWC macro values from Boolean to numericImprovements made based on usability feedback
2.0 * All the API is refactored to be consistent within itself and with the +* rest of the PDL content. +* * The descriptor API is updated as follows: +* The \ref Cy_DMA_Descriptor_Init function sets a full bunch of descriptor +* settings, and the rest of the descriptor API is a get/set interface +* to each of the descriptor settings. +* * There is a group of macros to support the backward compatibility with most +* of the driver version 1.0 API. But, you should use +* the new v2.0 interface in new designs (do not just copy-paste from old +* projects). To enable the backward compatibility support, the CY_DMA_BWC +* definition should be changed to "1".
1.0Initial version
+* + +* \defgroup group_dma_macros Macros +* \defgroup group_dma_functions Functions +* \{ +* \defgroup group_dma_block_functions Block Functions +* \defgroup group_dma_channel_functions Channel Functions +* \defgroup group_dma_descriptor_functions Descriptor Functions +* \} +* \defgroup group_dma_data_structures Data Structures +* \defgroup group_dma_enums Enumerated Types +*/ + +#if !defined(CY_DMA_H) +#define CY_DMA_H + +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" +#include +#include +#include + +#ifdef CY_IP_M4CPUSS_DMA + +#if defined(__cplusplus) +extern "C" { +#endif + +/****************************************************************************** + * Macro definitions * + ******************************************************************************/ + +/** +* \addtogroup group_dma_macros +* \{ +*/ + +/** The driver major version */ +#define CY_DMA_DRV_VERSION_MAJOR 2 + +/** The driver minor version */ +#define CY_DMA_DRV_VERSION_MINOR 10 + +/** The DMA driver identifier */ +#define CY_DMA_ID (CY_PDL_DRV_ID(0x13U)) + +/** The DMA channel interrupt mask */ +#define CY_DMA_INTR_MASK (0x01UL) + +/** The minimum X/Y Count API parameters */ +#define CY_DMA_LOOP_COUNT_MIN (1UL) +/** The maximum X/Y Count API parameters */ +#define CY_DMA_LOOP_COUNT_MAX (256UL) + +/** The minimum X/Y Increment API parameters */ +#define CY_DMA_LOOP_INCREMENT_MIN (-2048L) +/** The maximum X/Y Increment API parameters */ +#define CY_DMA_LOOP_INCREMENT_MAX (2047L) + +/** The backward compatibility flag. Enables a group of macros which provide +* the backward compatibility with most of the DMA driver version 1.0 interface. */ +#ifndef CY_DMA_BWC + #define CY_DMA_BWC (0U) /* Disabled by default */ +#endif + +/** \} group_dma_macros */ + + +/** +* \addtogroup group_dma_enums +* \{ +*/ + +/** Contains the possible interrupt cause values */ +typedef enum +{ + CY_DMA_INTR_CAUSE_NO_INTR = 0U, /**< No interrupt. */ + CY_DMA_INTR_CAUSE_COMPLETION = 1U, /**< Completion. */ + CY_DMA_INTR_CAUSE_SRC_BUS_ERROR = 2U, /**< Source bus error. */ + CY_DMA_INTR_CAUSE_DST_BUS_ERROR = 3U, /**< Destination bus error. */ + CY_DMA_INTR_CAUSE_SRC_MISAL = 4U, /**< Source address is not aligned. */ + CY_DMA_INTR_CAUSE_DST_MISAL = 5U, /**< Destination address is not aligned. */ + CY_DMA_INTR_CAUSE_CURR_PTR_NULL = 6U, /**< Current descriptor pointer is NULL. */ + CY_DMA_INTR_CAUSE_ACTIVE_CH_DISABLED = 7U, /**< Active channel is disabled. */ + CY_DMA_INTR_CAUSE_DESCR_BUS_ERROR = 8U /**< Descriptor bus error. */ +} cy_en_dma_intr_cause_t; + +/** Contains the options for the descriptor type */ +typedef enum +{ + CY_DMA_SINGLE_TRANSFER = 0UL, /**< Single transfer. */ + CY_DMA_1D_TRANSFER = 1UL, /**< 1D transfer. */ + CY_DMA_2D_TRANSFER = 2UL, /**< 2D transfer. */ + CY_DMA_CRC_TRANSFER = 3UL, /**< CRC transfer. Supported by the CPUSS_ver2 only. */ +} cy_en_dma_descriptor_type_t; + +/** Contains the options for the interrupt, trig-in and trig-out type parameters of the descriptor */ +typedef enum +{ + CY_DMA_1ELEMENT = 0UL, /**< One element transfer. */ + CY_DMA_X_LOOP = 1UL, /**< One X loop transfer. */ + CY_DMA_DESCR = 2UL, /**< One descriptor transfer. */ + CY_DMA_DESCR_CHAIN = 3UL /**< Entire descriptor chain transfer. */ +} cy_en_dma_trigger_type_t; + +/** Contains the options for the data size */ +typedef enum +{ + CY_DMA_BYTE = 0UL, /**< One byte. */ + CY_DMA_HALFWORD = 1UL, /**< Half word (two bytes). */ + CY_DMA_WORD = 2UL /**< Full word (four bytes). */ +} cy_en_dma_data_size_t; + +/** Contains the options for descriptor retriggering */ +typedef enum +{ + CY_DMA_RETRIG_IM = 0UL, /**< Retrigger immediately. */ + CY_DMA_RETRIG_4CYC = 1UL, /**< Retrigger after 4 Clk_Slow cycles. */ + CY_DMA_RETRIG_16CYC = 2UL, /**< Retrigger after 16 Clk_Slow cycles. */ + CY_DMA_WAIT_FOR_REACT = 3UL /**< Wait for trigger reactivation. */ +} cy_en_dma_retrigger_t; + +/** Contains the options for the transfer size */ +typedef enum +{ + CY_DMA_TRANSFER_SIZE_DATA = 0UL, /**< As specified by dataSize. */ + CY_DMA_TRANSFER_SIZE_WORD = 1UL, /**< A full word (four bytes). */ +} cy_en_dma_transfer_size_t; + +/** Contains the options for the state of the channel when the descriptor is completed */ +typedef enum +{ + CY_DMA_CHANNEL_ENABLED = 0UL, /**< Channel stays enabled. */ + CY_DMA_CHANNEL_DISABLED = 1UL /**< Channel is disabled. */ +} cy_en_dma_channel_state_t; + +/** Contains the return values of the DMA driver */ +typedef enum +{ + CY_DMA_SUCCESS = 0x00UL, /**< Success. */ + CY_DMA_BAD_PARAM = CY_DMA_ID | CY_PDL_STATUS_ERROR | 0x01UL /**< The input parameters passed to the DMA API are not valid. */ +} cy_en_dma_status_t; + +/** \} group_dma_enums */ + + +/** \cond Internal */ + +/* Macros for the conditions used by CY_ASSERT calls */ +#define CY_DMA_IS_LOOP_COUNT_VALID(count) (((count) >= CY_DMA_LOOP_COUNT_MIN) && ((count) <= CY_DMA_LOOP_COUNT_MAX)) +#define CY_DMA_IS_LOOP_INCR_VALID(incr) (((incr) >= CY_DMA_LOOP_INCREMENT_MIN) && ((incr) <= CY_DMA_LOOP_INCREMENT_MAX)) +#define CY_DMA_IS_PRIORITY_VALID(prio) ((prio) <= 3UL) +#define CY_DMA_IS_INTR_MASK_VALID(intr) (0UL == ((intr) & ((uint32_t) ~CY_DMA_INTR_MASK))) + +#define CY_DMA_IS_RETRIG_VALID(retrig) ((CY_DMA_RETRIG_IM == (retrig)) || \ + (CY_DMA_RETRIG_4CYC == (retrig)) || \ + (CY_DMA_RETRIG_16CYC == (retrig)) || \ + (CY_DMA_WAIT_FOR_REACT == (retrig))) + +#define CY_DMA_IS_TRIG_TYPE_VALID(trigType) ((CY_DMA_1ELEMENT == (trigType)) || \ + (CY_DMA_X_LOOP == (trigType)) || \ + (CY_DMA_DESCR == (trigType)) || \ + (CY_DMA_DESCR_CHAIN == (trigType))) + +#define CY_DMA_IS_XFER_SIZE_VALID(xferSize) ((CY_DMA_TRANSFER_SIZE_DATA == (xferSize)) || \ + (CY_DMA_TRANSFER_SIZE_WORD == (xferSize))) + +#define CY_DMA_IS_CHANNEL_STATE_VALID(state) ((CY_DMA_CHANNEL_ENABLED == (state)) || \ + (CY_DMA_CHANNEL_DISABLED == (state))) + +#define CY_DMA_IS_DATA_SIZE_VALID(dataSize) ((CY_DMA_BYTE == (dataSize)) || \ + (CY_DMA_HALFWORD == (dataSize)) || \ + (CY_DMA_WORD == (dataSize))) + +#define CY_DMA_IS_TYPE_VALID(descrType) ((CY_DMA_SINGLE_TRANSFER == (descrType)) || \ + (CY_DMA_1D_TRANSFER == (descrType)) || \ + (CY_DMA_2D_TRANSFER == (descrType)) || \ + (CY_DMA_CRC_TRANSFER == (descrType))) + +#define CY_DMA_IS_CH_NR_VALID(chNr) ((chNr) < CY_DW_CH_NR) + + +/* The descriptor structure bit field definitions */ +#define CY_DMA_CTL_RETRIG_Pos (0UL) +#define CY_DMA_CTL_RETRIG_Msk ((uint32_t)0x3UL << CY_DMA_CTL_RETRIG_Pos) +#define CY_DMA_CTL_INTR_TYPE_Pos (2UL) +#define CY_DMA_CTL_INTR_TYPE_Msk ((uint32_t)0x3UL << CY_DMA_CTL_INTR_TYPE_Pos) +#define CY_DMA_CTL_TR_OUT_TYPE_Pos (4UL) +#define CY_DMA_CTL_TR_OUT_TYPE_Msk ((uint32_t)0x3UL << CY_DMA_CTL_TR_OUT_TYPE_Pos) +#define CY_DMA_CTL_TR_IN_TYPE_Pos (6UL) +#define CY_DMA_CTL_TR_IN_TYPE_Msk ((uint32_t)0x3UL << CY_DMA_CTL_TR_IN_TYPE_Pos) +#define CY_DMA_CTL_CH_DISABLE_Pos (24UL) +#define CY_DMA_CTL_CH_DISABLE_Msk ((uint32_t)0x1UL << CY_DMA_CTL_CH_DISABLE_Pos) +#define CY_DMA_CTL_SRC_SIZE_Pos (26UL) +#define CY_DMA_CTL_SRC_SIZE_Msk ((uint32_t)0x1UL << CY_DMA_CTL_SRC_SIZE_Pos) +#define CY_DMA_CTL_DST_SIZE_Pos (27UL) +#define CY_DMA_CTL_DST_SIZE_Msk ((uint32_t)0x1UL << CY_DMA_CTL_DST_SIZE_Pos) +#define CY_DMA_CTL_DATA_SIZE_Pos (28UL) +#define CY_DMA_CTL_DATA_SIZE_Msk ((uint32_t)0x3UL << CY_DMA_CTL_DATA_SIZE_Pos) +#define CY_DMA_CTL_TYPE_Pos (30UL) +#define CY_DMA_CTL_TYPE_Msk ((uint32_t)0x3UL << CY_DMA_CTL_TYPE_Pos) + +#define CY_DMA_CTL_SRC_INCR_Pos (0UL) +#define CY_DMA_CTL_SRC_INCR_Msk ((uint32_t)0xFFFUL << CY_DMA_CTL_SRC_INCR_Pos) +#define CY_DMA_CTL_DST_INCR_Pos (12UL) +#define CY_DMA_CTL_DST_INCR_Msk ((uint32_t)0xFFFUL << CY_DMA_CTL_DST_INCR_Pos) +#define CY_DMA_CTL_COUNT_Pos (24UL) +#define CY_DMA_CTL_COUNT_Msk ((uint32_t)0xFFUL << CY_DMA_CTL_COUNT_Pos) + +/** \endcond */ + + +/** +* \addtogroup group_dma_data_structures +* \{ +*/ + +/** +* DMA descriptor structure type. It is a user/component-declared structure +* allocated in RAM. The DMA HW requires a pointer to this structure to work with it. +* +* For advanced users: the descriptor can be allocated even in flash, then the user +* manually predefines all the structure items with constants. This is +* because most of the driver's API (especially functions modifying +* descriptors, including \ref Cy_DMA_Descriptor_Init()) can't work with +* read-only descriptors. +*/ +typedef struct +{ + uint32_t ctl; /*!< 0x00000000 Descriptor control */ + uint32_t src; /*!< 0x00000004 Descriptor source */ + uint32_t dst; /*!< 0x00000008 Descriptor destination */ + uint32_t xCtl; /*!< 0x0000000C Descriptor X loop control */ + uint32_t yCtl; /*!< 0x00000010 Descriptor Y loop control */ + uint32_t nextPtr; /*!< 0x00000014 Descriptor next pointer */ +} cy_stc_dma_descriptor_t; + +/** +* This structure is a configuration structure pre-initialized by the user and +* passed as a parameter to the \ref Cy_DMA_Descriptor_Init(). +* It can be allocated in RAM/flash (the user's choice). +* In case of flash allocation, there is a possibility to reinitialize the descriptor in runtime. +* This structure has all the parameters of the descriptor as separate parameters. +* Most of these parameters are represented in the \ref cy_stc_dma_descriptor_t structure as bitfields. +*/ +typedef struct +{ + cy_en_dma_retrigger_t retrigger; /**< Specifies whether the DW controller should wait for the input trigger to be deactivated. */ + cy_en_dma_trigger_type_t interruptType; /**< Sets the event that triggers an interrupt. See \ref cy_en_dma_trigger_type_t. */ + cy_en_dma_trigger_type_t triggerOutType; /**< Sets the event that triggers an output. See \ref cy_en_dma_trigger_type_t. */ + cy_en_dma_channel_state_t channelState; /**< Specifies whether the channel is enabled or disabled on completion of descriptor. See \ref cy_en_dma_channel_state_t. */ + cy_en_dma_trigger_type_t triggerInType; /**< Sets what type of transfer is triggered. See \ref cy_en_dma_trigger_type_t. */ + cy_en_dma_data_size_t dataSize; /**< The size of the data bus for transfer. See \ref cy_en_dma_data_size_t. */ + cy_en_dma_transfer_size_t srcTransferSize; /**< The source transfer size. */ + cy_en_dma_transfer_size_t dstTransferSize; /**< The destination transfer size. */ + cy_en_dma_descriptor_type_t descriptorType; /**< The type of the descriptor. See \ref cy_en_dma_descriptor_type_t. */ + void * srcAddress; /**< The source address of the transfer. */ + void * dstAddress; /**< The destination address of the transfer. + * For CPUSS_ver2 only: for CRC transfer, the CRC result without post-processing + * (reversing and/or XORing, if used) is placed into the dstAddress. + */ + int32_t srcXincrement; /**< The address increment of the source after each X-loop transfer. Valid range is -2048 ... 2047. */ + int32_t dstXincrement; /**< The address increment of the destination after each X-loop transfer. Valid range is -2048 ... 2047. */ + uint32_t xCount; /**< The number of transfers in an X-loop. Valid range is 1 ... 256. */ + int32_t srcYincrement; /**< The address increment of the source after each Y-loop transfer. Valid range is -2048 ... 2047. */ + int32_t dstYincrement; /**< The address increment of the destination after each Y-loop transfer. Valid range is -2048 ... 2047. */ + uint32_t yCount; /**< The number of X-loops in the Y-loop. Valid range is 1 ... 256. */ + cy_stc_dma_descriptor_t * nextDescriptor; /**< The next descriptor to chain after completion. A NULL value will signify no chaining. */ +} cy_stc_dma_descriptor_config_t; + +/** This structure holds the initialization values for the DMA channel */ +typedef struct +{ + cy_stc_dma_descriptor_t * descriptor; /**< The DMA descriptor associated with the channel being initialized. */ + bool preemptable; /**< Specifies whether the channel is preemptable by another higher-priority channel. */ + uint32_t priority; /**< This parameter specifies the channel's priority. */ + bool enable; /**< This parameter specifies whether the channel is enabled after initializing. */ + bool bufferable; /**< This parameter specifies whether a write transaction can complete. + without waiting for the destination to accept the write transaction data. */ +} cy_stc_dma_channel_config_t; + + +/** This structure holds the initialization values for the CRC feature, only for CPUSS_ver2 */ +typedef struct +{ + bool dataReverse; /**< Specifies the bit order in which a data byte is processed (reversal is performed after XORing): + * 'false': Most significant bit (bit 1) first. + * 'true': Least significant bit (bit 0) first. + */ + uint32_t dataXor; /**< Specifies a byte mask with which each data byte is XORed. The XOR is performed before data reversal. */ + bool reminderReverse; /**< Specifies whether the remainder is bit reversed (reversal is performed after XORing). + * Note: this parameter doesn't affect the CRC value stored into the dstAddress. + * The reversed value remains in the CRC_REM_RESULT register. + */ + uint32_t reminderXor; /**< Specifies a mask with which the remainder is XORed. The XOR is performed before remainder reversal. + * Note: this parameter doesn't affect the CRC value stored into the dstAddress. + * The XORed value remains in the CRC_REM_RESULT register. + */ + uint32_t polynomial; /**< CRC polynomial. The polynomial is represented WITHOUT the high order bit (this bit is always assumed '1'). + * The polynomial should be aligned/shifted such that the more significant bits (bit 31 and down) contain the polynomial + * and the less significant bits (bit 0 and up) contain padding '0's. Some frequently used polynomials: + * - CRC32: POLYNOMIAL is 0x04c11db7 (x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1). + * - CRC16: POLYNOMIAL is 0x80050000 (x^16 + x^15 + x^2 + 1, shifted by 16 bit positions). + * - CRC16 CCITT: POLYNOMIAL is 0x10210000 (x^16 + x^12 + x^5 + 1, shifted by 16 bit positions). + */ + uint32_t lfsrInitVal; /**< The initial value of the Linear Feedback Shift Register */ +} cy_stc_dma_crc_config_t; + +/** \} group_dma_data_structures */ + + +/** +* \addtogroup group_dma_functions +* \{ +*/ + + +/** +* \addtogroup group_dma_block_functions +* \{ +*/ + + +__STATIC_INLINE void Cy_DMA_Enable (DW_Type * base); +__STATIC_INLINE void Cy_DMA_Disable (DW_Type * base); +__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannel (DW_Type const * base); +__STATIC_INLINE void * Cy_DMA_GetActiveSrcAddress(DW_Type * base); +__STATIC_INLINE void * Cy_DMA_GetActiveDstAddress(DW_Type * base); + cy_en_dma_status_t Cy_DMA_Crc_Init (DW_Type * base, cy_stc_dma_crc_config_t const * crcConfig); + +/** \} group_dma_block_functions */ + + +/** +* \addtogroup group_dma_channel_functions +* \{ +*/ + cy_en_dma_status_t Cy_DMA_Channel_Init (DW_Type * base, uint32_t channel, cy_stc_dma_channel_config_t const * channelConfig); + void Cy_DMA_Channel_DeInit (DW_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_SetDescriptor (DW_Type * base, uint32_t channel, cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE void Cy_DMA_Channel_Enable (DW_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_Disable (DW_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_SetPriority (DW_Type * base, uint32_t channel, uint32_t priority); +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetPriority (DW_Type const * base, uint32_t channel); +__STATIC_INLINE + cy_en_dma_intr_cause_t Cy_DMA_Channel_GetStatus (DW_Type const * base, uint32_t channel); +__STATIC_INLINE +cy_stc_dma_descriptor_t * Cy_DMA_Channel_GetCurrentDescriptor (DW_Type const * base, uint32_t channel); + +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatus (DW_Type const * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_ClearInterrupt (DW_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_SetInterrupt (DW_Type * base, uint32_t channel); +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptMask (DW_Type const * base, uint32_t channel); +__STATIC_INLINE void Cy_DMA_Channel_SetInterruptMask (DW_Type * base, uint32_t channel, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatusMasked(DW_Type const * base, uint32_t channel); + +/** \} group_dma_channel_functions */ + + +/** +* \addtogroup group_dma_descriptor_functions +* \{ +*/ + + cy_en_dma_status_t Cy_DMA_Descriptor_Init (cy_stc_dma_descriptor_t * descriptor, cy_stc_dma_descriptor_config_t const * config); + void Cy_DMA_Descriptor_DeInit(cy_stc_dma_descriptor_t * descriptor); + + void Cy_DMA_Descriptor_SetNextDescriptor (cy_stc_dma_descriptor_t * descriptor, cy_stc_dma_descriptor_t const * nextDescriptor); + void Cy_DMA_Descriptor_SetDescriptorType (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_descriptor_type_t descriptorType); +__STATIC_INLINE void Cy_DMA_Descriptor_SetSrcAddress (cy_stc_dma_descriptor_t * descriptor, void const * srcAddress); +__STATIC_INLINE void Cy_DMA_Descriptor_SetDstAddress (cy_stc_dma_descriptor_t * descriptor, void const * dstAddress); +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopDataCount (cy_stc_dma_descriptor_t * descriptor, uint32_t xCount); +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopDataCount (cy_stc_dma_descriptor_t * descriptor, uint32_t yCount); +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopSrcIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t srcXincrement); +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopDstIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t dstXincrement); +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopSrcIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t srcYincrement); +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopDstIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t dstYincrement); +__STATIC_INLINE void Cy_DMA_Descriptor_SetInterruptType (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t interruptType); +__STATIC_INLINE void Cy_DMA_Descriptor_SetTriggerInType (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t triggerInType); +__STATIC_INLINE void Cy_DMA_Descriptor_SetTriggerOutType (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t triggerOutType); +__STATIC_INLINE void Cy_DMA_Descriptor_SetDataSize (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_data_size_t dataSize); +__STATIC_INLINE void Cy_DMA_Descriptor_SetSrcTransferSize (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_transfer_size_t srcTransferSize); +__STATIC_INLINE void Cy_DMA_Descriptor_SetDstTransferSize (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_transfer_size_t dstTransferSize); +__STATIC_INLINE void Cy_DMA_Descriptor_SetRetrigger (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_retrigger_t retrigger); +__STATIC_INLINE void Cy_DMA_Descriptor_SetChannelState (cy_stc_dma_descriptor_t * descriptor, cy_en_dma_channel_state_t channelState); + + cy_stc_dma_descriptor_t * Cy_DMA_Descriptor_GetNextDescriptor (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_descriptor_type_t Cy_DMA_Descriptor_GetDescriptorType (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE void * Cy_DMA_Descriptor_GetSrcAddress (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE void * Cy_DMA_Descriptor_GetDstAddress (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE uint32_t Cy_DMA_Descriptor_GetXloopDataCount (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE uint32_t Cy_DMA_Descriptor_GetYloopDataCount (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetXloopSrcIncrement(cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetXloopDstIncrement(cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetYloopSrcIncrement(cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetYloopDstIncrement(cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetInterruptType (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetTriggerInType (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetTriggerOutType (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_data_size_t Cy_DMA_Descriptor_GetDataSize (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_transfer_size_t Cy_DMA_Descriptor_GetSrcTransferSize (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_transfer_size_t Cy_DMA_Descriptor_GetDstTransferSize (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_retrigger_t Cy_DMA_Descriptor_GetRetrigger (cy_stc_dma_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dma_channel_state_t Cy_DMA_Descriptor_GetChannelState (cy_stc_dma_descriptor_t const * descriptor); + +/** \} group_dma_descriptor_functions */ + + + +/*************************************** +* In-line Function Implementation +***************************************/ + + +/** +* \addtogroup group_dma_block_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMA_Enable +****************************************************************************//** +* +* Enables the DMA block. +* +* \param base +* The pointer to the hardware DMA block. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Enable(DW_Type * base) +{ + DW_CTL(base) |= DW_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Disable +****************************************************************************//** +* +* Disables the DMA block. +* +* \param base +* The pointer to the hardware DMA block. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Disable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Disable(DW_Type * base) +{ + DW_CTL(base) &= (uint32_t) ~DW_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_GetActiveChannel +****************************************************************************//** +* +* Returns the status of the active/pending channels. +* the DMA block. +* +* \param base +* The pointer to the hardware DMA block. +* +* \return +* Returns a bit-field with all of the currently active/pending channels in the +* DMA block. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Disable +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannel(DW_Type const * base) +{ + return(_FLD2VAL(CY_DW_STATUS_CH_IDX, DW_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_GetActiveSrcAddress +****************************************************************************//** +* +* Returns the source address being used for the current transfer. +* +* \param base +* The pointer to the hardware DMA block. +* +* \return +* Returns the pointer to the source of transfer. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_GetActiveSrcAddress +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMA_GetActiveSrcAddress(DW_Type * base) +{ + return ((void *) DW_DESCR_SRC(base)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_GetActiveDstAddress +****************************************************************************//** +* +* Returns the destination address being used for the current transfer. +* +* \param base +* The pointer to the hardware DMA block. +* +* \return +* Returns the pointer to the destination of transfer. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_GetActiveSrcAddress +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMA_GetActiveDstAddress(DW_Type * base) +{ + return ((void *) DW_DESCR_DST(base)); +} + +/** \} group_dma_block_functions */ + +/** +* \addtogroup group_dma_descriptor_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetSrcAddress +****************************************************************************//** +* +* Sets the source address for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param srcAddress +* The source address value for the descriptor. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetSrcAddress(cy_stc_dma_descriptor_t * descriptor, void const * srcAddress) +{ + descriptor->src = (uint32_t) srcAddress; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetSrcAddress +****************************************************************************//** +* +* Returns the source address parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The source address value of the descriptor. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMA_Descriptor_GetSrcAddress(cy_stc_dma_descriptor_t const * descriptor) +{ + return ((void *) descriptor->src); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetDstAddress +****************************************************************************//** +* +* Sets the destination address for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param dstAddress +* The destination address value for the descriptor. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetDstAddress(cy_stc_dma_descriptor_t * descriptor, void const * dstAddress) +{ + descriptor->dst = (uint32_t) dstAddress; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetDstAddress +****************************************************************************//** +* +* Returns the destination address parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The destination address value of the descriptor. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMA_Descriptor_GetDstAddress(cy_stc_dma_descriptor_t const * descriptor) +{ + return ((void *) descriptor->dst); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetInterruptType +****************************************************************************//** +* +* Sets the interrupt type for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param interruptType +* The interrupt type set for the descriptor. \ref cy_en_dma_trigger_type_t +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetInterruptType(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t interruptType) +{ + CY_ASSERT_L3(CY_DMA_IS_TRIG_TYPE_VALID(interruptType)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_INTR_TYPE, interruptType); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetInterruptType +****************************************************************************//** +* +* Returns the Interrupt-Type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Interrupt-Type \ref cy_en_dma_trigger_type_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetInterruptType(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_trigger_type_t) _FLD2VAL(CY_DMA_CTL_INTR_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetTriggerInType +****************************************************************************//** +* +* Sets the Trigger-In-Type for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param triggerInType +* The Trigger In Type parameter \ref cy_en_dma_trigger_type_t +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetTriggerInType(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t triggerInType) +{ + CY_ASSERT_L3(CY_DMA_IS_TRIG_TYPE_VALID(triggerInType)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_TR_IN_TYPE, triggerInType); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetTriggerInType +****************************************************************************//** +* +* Returns the Trigger-In-Type parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Trigger-In-Type \ref cy_en_dma_trigger_type_t +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetTriggerInType(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_trigger_type_t) _FLD2VAL(CY_DMA_CTL_TR_IN_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetTriggerOutType +****************************************************************************//** +* +* Sets the Trigger-Out-Type for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param triggerOutType +* The Trigger-Out-Type set for the descriptor. \ref cy_en_dma_trigger_type_t +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetTriggerOutType(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_trigger_type_t triggerOutType) +{ + CY_ASSERT_L3(CY_DMA_IS_TRIG_TYPE_VALID(triggerOutType)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_TR_OUT_TYPE, triggerOutType); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetTriggerOutType +****************************************************************************//** +* +* Returns the Trigger-Out-Type parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Trigger-Out-Type parameter \ref cy_en_dma_trigger_type_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_trigger_type_t Cy_DMA_Descriptor_GetTriggerOutType(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_trigger_type_t) _FLD2VAL(CY_DMA_CTL_TR_OUT_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetDataSize +****************************************************************************//** +* +* Sets the Data Element Size for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param dataSize +* The Data Element Size \ref cy_en_dma_data_size_t +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetDataSize(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_data_size_t dataSize) +{ + CY_ASSERT_L3(CY_DMA_IS_DATA_SIZE_VALID(dataSize)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_DATA_SIZE, dataSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetDataSize +****************************************************************************//** +* +* Returns the Data Element Size parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Data Element Size \ref cy_en_dma_data_size_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_data_size_t Cy_DMA_Descriptor_GetDataSize(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_data_size_t) _FLD2VAL(CY_DMA_CTL_DATA_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetSrcTransferSize +****************************************************************************//** +* +* Sets the Source Transfer Size for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param srcTransferSize +* The Source Transfer Size \ref cy_en_dma_transfer_size_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetSrcTransferSize(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_transfer_size_t srcTransferSize) +{ + CY_ASSERT_L3(CY_DMA_IS_XFER_SIZE_VALID(srcTransferSize)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_SRC_SIZE, srcTransferSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetSrcTransferSize +****************************************************************************//** +* +* Returns the Source Transfer Size parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Source Transfer Size \ref cy_en_dma_transfer_size_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_transfer_size_t Cy_DMA_Descriptor_GetSrcTransferSize(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_transfer_size_t) _FLD2VAL(CY_DMA_CTL_SRC_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetDstTransferSize +****************************************************************************//** +* +* Sets the Destination Transfer Size for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param dstTransferSize +* The Destination Transfer Size \ref cy_en_dma_transfer_size_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetDstTransferSize(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_transfer_size_t dstTransferSize) +{ + CY_ASSERT_L3(CY_DMA_IS_XFER_SIZE_VALID(dstTransferSize)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_DST_SIZE, dstTransferSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetDstTransferSize +****************************************************************************//** +* +* Returns the Destination Transfer Size parameter of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Destination Transfer Size \ref cy_en_dma_transfer_size_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_transfer_size_t Cy_DMA_Descriptor_GetDstTransferSize(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_transfer_size_t) _FLD2VAL(CY_DMA_CTL_DST_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetRetrigger +****************************************************************************//** +* +* Sets the retrigger value that specifies whether the controller should +* wait for the input trigger to be deactivated. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param retrigger +* The \ref cy_en_dma_retrigger_t parameter specifies whether the controller +* should wait for the input trigger to be deactivated. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetRetrigger(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_retrigger_t retrigger) +{ + CY_ASSERT_L3(CY_DMA_IS_RETRIG_VALID(retrigger)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_RETRIG, retrigger); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetRetrigger +****************************************************************************//** +* +* Returns a value that specifies whether the controller should +* wait for the input trigger to be deactivated. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Retrigger setting \ref cy_en_dma_retrigger_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_retrigger_t Cy_DMA_Descriptor_GetRetrigger(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_retrigger_t) _FLD2VAL(CY_DMA_CTL_RETRIG, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetDescriptorType +****************************************************************************//** +* +* Returns the descriptor's type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The descriptor type \ref cy_en_dma_descriptor_type_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_descriptor_type_t Cy_DMA_Descriptor_GetDescriptorType(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_descriptor_type_t) _FLD2VAL(CY_DMA_CTL_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetChannelState +****************************************************************************//** +* +* Sets the channel state on completion of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param channelState +* The channel state \ref cy_en_dma_channel_state_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetChannelState(cy_stc_dma_descriptor_t * descriptor, cy_en_dma_channel_state_t channelState) +{ + CY_ASSERT_L3(CY_DMA_IS_CHANNEL_STATE_VALID(channelState)); + + CY_REG32_CLR_SET(descriptor->ctl, CY_DMA_CTL_CH_DISABLE, channelState); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetChannelState +****************************************************************************//** +* +* Returns the channel state on completion of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The Channel State setting \ref cy_en_dma_channel_state_t. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_channel_state_t Cy_DMA_Descriptor_GetChannelState(cy_stc_dma_descriptor_t const * descriptor) +{ + return((cy_en_dma_channel_state_t) _FLD2VAL(CY_DMA_CTL_CH_DISABLE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetXloopDataCount +****************************************************************************//** +* +* Sets the number of data elements to transfer in the X loop +* for the specified descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param xCount +* The number of data elements to transfer in the X loop. Valid range is 1 ... 256. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopDataCount(cy_stc_dma_descriptor_t * descriptor, uint32_t xCount) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_COUNT_VALID(xCount)); + /* Convert the data count from the user's range (1-256) into the machine range (0-255). */ + CY_REG32_CLR_SET(descriptor->xCtl, CY_DMA_CTL_COUNT, xCount - 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetXloopDataCount +****************************************************************************//** +* +* Returns the number of data elements for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The number of data elements to transfer in the X loop. The range is 1 ... 256. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Descriptor_GetXloopDataCount(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + /* Convert the data count from the machine range (0-255) into the user's range (1-256). */ + return (_FLD2VAL(CY_DMA_CTL_COUNT, descriptor->xCtl) + 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetXloopSrcIncrement +****************************************************************************//** +* +* Sets the source increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param srcXincrement +* The value of the source increment. The valid range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopSrcIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t srcXincrement) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_INCR_VALID(srcXincrement)); + + CY_REG32_CLR_SET(descriptor->xCtl, CY_DMA_CTL_SRC_INCR, srcXincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetXloopSrcIncrement +****************************************************************************//** +* +* Returns the source increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The value of the source increment. The range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetXloopSrcIncrement(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(CY_DMA_CTL_SRC_INCR, descriptor->xCtl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetXloopDstIncrement +****************************************************************************//** +* +* Sets the destination increment parameter for the X loop for the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param dstXincrement +* The value of the destination increment. The valid range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetXloopDstIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t dstXincrement) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_INCR_VALID(dstXincrement)); + + CY_REG32_CLR_SET(descriptor->xCtl, CY_DMA_CTL_DST_INCR, dstXincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetXloopDstIncrement +****************************************************************************//** +* +* Returns the destination increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The value of the destination increment. The range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetXloopDstIncrement(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_SINGLE_TRANSFER != Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(CY_DMA_CTL_DST_INCR, descriptor->xCtl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetYloopDataCount +****************************************************************************//** +* +* Sets the number of data elements for the Y loop of the specified descriptor +* (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param yCount +* The number of X loops to execute in the Y loop. The valid range is 1 ... 256. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopDataCount(cy_stc_dma_descriptor_t * descriptor, uint32_t yCount) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_COUNT_VALID(yCount)); + /* Convert the data count from the user's range (1-256) into the machine range (0-255). */ + CY_REG32_CLR_SET(descriptor->yCtl, CY_DMA_CTL_COUNT, yCount - 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetYloopDataCount +****************************************************************************//** +* +* Returns the number of X loops to execute in the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The number of X loops to execute in the Y loop. The range is 1 ... 256. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Descriptor_GetYloopDataCount(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + /* Convert the data count from the machine range (0-255) into the user's range (1-256). */ + return (_FLD2VAL(CY_DMA_CTL_COUNT, descriptor->yCtl) + 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetYloopSrcIncrement +****************************************************************************//** +* +* Sets the source increment parameter for the Y loop for the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param srcYincrement +* The value of the source increment. The valid range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopSrcIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t srcYincrement) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_INCR_VALID(srcYincrement)); + + CY_REG32_CLR_SET(descriptor->yCtl, CY_DMA_CTL_SRC_INCR, srcYincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetYloopSrcIncrement +****************************************************************************//** +* +* Returns the source increment parameter for the outer Y of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The value of the source increment. The range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetYloopSrcIncrement(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(CY_DMA_CTL_SRC_INCR, descriptor->yCtl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_SetYloopDstIncrement +****************************************************************************//** +* +* Sets the destination increment parameter for the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \param dstYincrement +* The value of the destination increment. The valid range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Descriptor_SetYloopDstIncrement(cy_stc_dma_descriptor_t * descriptor, int32_t dstYincrement) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMA_IS_LOOP_INCR_VALID(dstYincrement)); + + CY_REG32_CLR_SET(descriptor->yCtl, CY_DMA_CTL_DST_INCR, dstYincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Descriptor_GetYloopDstIncrement +****************************************************************************//** +* +* Returns the destination increment parameter for the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance declared by the user/component. +* +* \return +* The value of the destination increment. The range is -2048 ... 2047. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMA_Descriptor_GetYloopDstIncrement(cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_2D_TRANSFER == Cy_DMA_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(CY_DMA_CTL_DST_INCR, descriptor->yCtl)); +} + + +/** \} group_dma_descriptor_functions */ + + +/** +* \addtogroup group_dma_channel_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_SetDescriptor +****************************************************************************//** +* +* Sets a descriptor as current for the specified DMA channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \param descriptor +* This is the descriptor to be associated with the channel. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_SetDescriptor(DW_Type * base, uint32_t channel, cy_stc_dma_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + DW_CH_CURR_PTR(base, channel) = (uint32_t)descriptor; + DW_CH_IDX(base, channel) &= (uint32_t) ~(DW_CH_STRUCT_CH_IDX_X_IDX_Msk | DW_CH_STRUCT_CH_IDX_Y_IDX_Msk); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_Enable +****************************************************************************//** +* +* The function is used to enable a DMA channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_Enable(DW_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + DW_CH_CTL(base, channel) |= DW_CH_STRUCT_CH_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_Disable +****************************************************************************//** +* +* The function is used to disable a DMA channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Disable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_Disable(DW_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + DW_CH_CTL(base, channel) &= (uint32_t) ~DW_CH_STRUCT_CH_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_SetPriority +****************************************************************************//** +* +* The function is used to set a priority for the DMA channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \param priority +* The priority to be set for the DMA channel. The allowed values are 0,1,2,3. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_SetPriority(DW_Type * base, uint32_t channel, uint32_t priority) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMA_IS_PRIORITY_VALID(priority)); + + CY_REG32_CLR_SET(DW_CH_CTL(base, channel), CY_DW_CH_CTL_PRIO, priority); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetPriority +****************************************************************************//** +* +* Returns the priority of the DMA channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \return +* The priority of the channel. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Disable +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetPriority(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return ((uint32_t) _FLD2VAL(CY_DW_CH_CTL_PRIO, DW_CH_CTL(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetCurrentDescriptor +****************************************************************************//** +* +* Returns the descriptor that is active in the channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \return +* The pointer to the descriptor associated with the channel. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_Descriptor_Deinit +* +*******************************************************************************/ +__STATIC_INLINE cy_stc_dma_descriptor_t * Cy_DMA_Channel_GetCurrentDescriptor(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return ((cy_stc_dma_descriptor_t*)(DW_CH_CURR_PTR(base, channel))); +} + + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetInterruptStatus +****************************************************************************//** +* +* Returns the interrupt status of the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \return +* The status of an interrupt for the specified channel. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatus(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return (DW_CH_INTR(base, channel)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetStatus +****************************************************************************//** +* +* Returns the interrupt reason of the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \return +* The cause \ref cy_en_dma_intr_cause_t of the interrupt. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dma_intr_cause_t Cy_DMA_Channel_GetStatus(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return ((cy_en_dma_intr_cause_t) _FLD2VAL(DW_CH_STRUCT_CH_STATUS_INTR_CAUSE, DW_CH_STATUS(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_ClearInterrupt +****************************************************************************//** +* +* Clears the interrupt status of the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_ClearInterrupt(DW_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + DW_CH_INTR(base, channel) = CY_DMA_INTR_MASK; + (void) DW_CH_INTR(base, channel); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_SetInterrupt +****************************************************************************//** +* +* Sets the interrupt for the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_SetInterrupt(DW_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + DW_CH_INTR_SET(base, channel) = CY_DMA_INTR_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetInterruptMask +****************************************************************************//** +* +* Returns the interrupt mask value of the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \return +* The interrupt mask value. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptMask(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return (DW_CH_INTR_MASK(base, channel)); +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_SetInterruptMask +****************************************************************************//** +* +* Sets an interrupt mask value for the specified channel. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \param interrupt +* The interrupt mask: +* CY_DMA_INTR_MASK to enable the interrupt or 0UL to disable the interrupt. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMA_Channel_SetInterruptMask(DW_Type * base, uint32_t channel, uint32_t interrupt) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMA_IS_INTR_MASK_VALID(interrupt)); + DW_CH_INTR_MASK(base, channel) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_DMA_Channel_GetInterruptStatusMasked +****************************************************************************//** +* +* Returns the logical AND of the corresponding INTR and INTR_MASK fields +* in a single-load operation. +* +* \param base +* The pointer to the hardware DMA block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dma\2.10\snippet\main.c snippet_Cy_DMA_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatusMasked(DW_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMA_IS_CH_NR_VALID(channel)); + + return (DW_CH_INTR_MASKED(base, channel)); +} + + +/** \} group_dma_channel_functions */ + +/** \} group_dma_functions */ + + +/** \cond The definitions to support the backward compatibility, do not use them in new designs */ + +#if(0U != CY_DMA_BWC) + + /* Type definitions */ + #define cy_stc_dma_chnl_config_t cy_stc_dma_channel_config_t + #define cy_stc_dma_descr_t cy_stc_dma_descriptor_t + #define cy_stc_dma_descr_config_t cy_stc_dma_descriptor_config_t + #define cy_en_dma_trig_type_t cy_en_dma_trigger_type_t + + /* Structure items */ + #define DMA_Descriptor descriptor + #define deact retrigger + #define intrType interruptType + #define chStateAtCmplt channelState + #define srcTxfrSize srcTransferSize + #define destTxfrSize dstTransferSize + #define trigoutType triggerOutType + #define triginType triggerInType + #define descrType descriptorType + #define srcAddr srcAddress + #define destAddr dstAddress + #define srcXincr srcXincrement + #define srcYincr srcYincrement + #define destXincr dstXincrement + #define destYincr dstYincrement + #define descrNext nextDescriptor + + /* Constants */ + #define CY_DMA_CH_DISABLED (CY_DMA_CHANNEL_DISABLED) + #define CY_DMA_CH_ENABLED (CY_DMA_CHANNEL_ENABLED) + + #define CY_DMA_TXFR_SIZE_DATA_SIZE (CY_DMA_TRANSFER_SIZE_DATA) + #define CY_DMA_TXFR_SIZE_WORD (CY_DMA_TRANSFER_SIZE_WORD) + + #define CY_DMA_INTR_1ELEMENT_CMPLT (CY_DMA_1ELEMENT) + #define CY_DMA_INTR_X_LOOP_CMPLT (CY_DMA_X_LOOP) + #define CY_DMA_INTR_DESCR_CMPLT (CY_DMA_DESCR) + #define CY_DMA_INTR_DESCRCHAIN_CMPLT (CY_DMA_DESCR_CHAIN) + + #define CY_DMA_TRIGOUT_1ELEMENT_CMPLT (CY_DMA_1ELEMENT) + #define CY_DMA_TRIGOUT_X_LOOP_CMPLT (CY_DMA_X_LOOP) + #define CY_DMA_TRIGOUT_DESCR_CMPLT (CY_DMA_DESCR) + #define CY_DMA_TRIGOUT_DESCRCHAIN_CMPLT (CY_DMA_DESCR_CHAIN) + + #define CY_DMA_TRIGIN_1ELEMENT (CY_DMA_1ELEMENT) + #define CY_DMA_TRIGIN_XLOOP (CY_DMA_X_LOOP) + #define CY_DMA_TRIGIN_DESCR (CY_DMA_DESCR) + #define CY_DMA_TRIGIN_DESCRCHAIN (CY_DMA_DESCR_CHAIN) + + #define CY_DMA_INVALID_INPUT_PARAMETERS (CY_DMA_BAD_PARAM) + + #define CY_DMA_RETDIG_IM (CY_DMA_RETRIG_IM) + #define CY_DMA_RETDIG_4CYC (CY_DMA_RETRIG_4CYC) + #define CY_DMA_RETDIG_16CYC (CY_DMA_RETRIG_16CYC) + + /* Descriptor structure items */ + #define DESCR_CTL ctl + #define DESCR_SRC src + #define DESCR_DST dst + #define DESCR_X_CTL xCtl + #define DESCR_Y_CTL yCtl + #define DESCR_NEXT_PTR nextPtr + + /* Descriptor structure bitfields */ + #define DW_DESCR_STRUCT_DESCR_CTL_WAIT_FOR_DEACT_Pos 0UL + #define DW_DESCR_STRUCT_DESCR_CTL_WAIT_FOR_DEACT_Msk 0x3UL + #define DW_DESCR_STRUCT_DESCR_CTL_INTR_TYPE_Pos 2UL + #define DW_DESCR_STRUCT_DESCR_CTL_INTR_TYPE_Msk 0xCUL + #define DW_DESCR_STRUCT_DESCR_CTL_TR_OUT_TYPE_Pos 4UL + #define DW_DESCR_STRUCT_DESCR_CTL_TR_OUT_TYPE_Msk 0x30UL + #define DW_DESCR_STRUCT_DESCR_CTL_TR_IN_TYPE_Pos 6UL + #define DW_DESCR_STRUCT_DESCR_CTL_TR_IN_TYPE_Msk 0xC0UL + #define DW_DESCR_STRUCT_DESCR_CTL_CH_DISABLE_Pos 24UL + #define DW_DESCR_STRUCT_DESCR_CTL_CH_DISABLE_Msk 0x1000000UL + #define DW_DESCR_STRUCT_DESCR_CTL_SRC_TRANSFER_SIZE_Pos 26UL + #define DW_DESCR_STRUCT_DESCR_CTL_SRC_TRANSFER_SIZE_Msk 0x4000000UL + #define DW_DESCR_STRUCT_DESCR_CTL_DST_TRANSFER_SIZE_Pos 27UL + #define DW_DESCR_STRUCT_DESCR_CTL_DST_TRANSFER_SIZE_Msk 0x8000000UL + #define DW_DESCR_STRUCT_DESCR_CTL_DATA_SIZE_Pos 28UL + #define DW_DESCR_STRUCT_DESCR_CTL_DATA_SIZE_Msk 0x30000000UL + #define DW_DESCR_STRUCT_DESCR_CTL_DESCR_TYPE_Pos 30UL + #define DW_DESCR_STRUCT_DESCR_CTL_DESCR_TYPE_Msk 0xC0000000UL + #define DW_DESCR_STRUCT_DESCR_SRC_SRC_ADDR_Pos 0UL + #define DW_DESCR_STRUCT_DESCR_SRC_SRC_ADDR_Msk 0xFFFFFFFFUL + #define DW_DESCR_STRUCT_DESCR_DST_DST_ADDR_Pos 0UL + #define DW_DESCR_STRUCT_DESCR_DST_DST_ADDR_Msk 0xFFFFFFFFUL + #define DW_DESCR_STRUCT_DESCR_X_CTL_SRC_X_INCR_Pos 0UL + #define DW_DESCR_STRUCT_DESCR_X_CTL_SRC_X_INCR_Msk 0xFFFUL + #define DW_DESCR_STRUCT_DESCR_X_CTL_DST_X_INCR_Pos 12UL + #define DW_DESCR_STRUCT_DESCR_X_CTL_DST_X_INCR_Msk 0xFFF000UL + #define DW_DESCR_STRUCT_DESCR_X_CTL_X_COUNT_Pos 24UL + #define DW_DESCR_STRUCT_DESCR_X_CTL_X_COUNT_Msk 0xFF000000UL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_SRC_Y_INCR_Pos 0UL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_SRC_Y_INCR_Msk 0xFFFUL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_DST_Y_INCR_Pos 12UL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_DST_Y_INCR_Msk 0xFFF000UL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_Y_COUNT_Pos 24UL + #define DW_DESCR_STRUCT_DESCR_Y_CTL_Y_COUNT_Msk 0xFF000000UL + #define DW_DESCR_STRUCT_DESCR_NEXT_PTR_ADDR_Pos 2UL + #define DW_DESCR_STRUCT_DESCR_NEXT_PTR_ADDR_Msk 0xFFFFFFFCUL + + /* Functions */ + #define Cy_DMA_GetActiveChnl Cy_DMA_GetActiveChannel + #define Cy_DMA_GetActiveSrcAddr Cy_DMA_GetActiveSrcAddress + #define Cy_DMA_GetActiveDstAddr Cy_DMA_GetActiveDstAddress + #define Cy_DMA_Descr_Init Cy_DMA_Descriptor_Init + #define Cy_DMA_Descr_DeInit Cy_DMA_Descriptor_DeInit + #define Cy_DMA_Descr_SetSrcAddr Cy_DMA_Descriptor_SetSrcAddress + #define Cy_DMA_Descr_SetDestAddr Cy_DMA_Descriptor_SetDstAddress + #define Cy_DMA_Descr_SetNxtDescr Cy_DMA_Descriptor_SetNextDescriptor + #define Cy_DMA_Descr_SetIntrType Cy_DMA_Descriptor_SetInterruptType + #define Cy_DMA_Descr_SetTrigInType Cy_DMA_Descriptor_SetTriggerInType + #define Cy_DMA_Descr_SetTrigOutType Cy_DMA_Descriptor_SetTriggerOutType + #define Cy_DMA_Chnl_Init Cy_DMA_Channel_Init + #define Cy_DMA_Chnl_DeInit Cy_DMA_Channel_DeInit + #define Cy_DMA_Chnl_SetDescr Cy_DMA_Channel_SetDescriptor + #define Cy_DMA_Chnl_Enable Cy_DMA_Channel_Enable + #define Cy_DMA_Chnl_Disable Cy_DMA_Channel_Disable + #define Cy_DMA_Chnl_GetCurrentDescr Cy_DMA_Channel_GetCurrentDescriptor + #define Cy_DMA_Chnl_SetPriority Cy_DMA_Channel_SetPriority + #define Cy_DMA_Chnl_GetPriority Cy_DMA_Channel_GetPriority + #define Cy_DMA_Chnl_GetInterruptStatus Cy_DMA_Channel_GetInterruptStatus + #define Cy_DMA_Chnl_GetInterruptCause Cy_DMA_Channel_GetStatus + #define Cy_DMA_Chnl_ClearInterrupt Cy_DMA_Channel_ClearInterrupt + #define Cy_DMA_Chnl_SetInterrupt Cy_DMA_Channel_SetInterrupt + #define Cy_DMA_Chnl_GetInterruptMask Cy_DMA_Channel_GetInterruptMask + #define Cy_DMA_Chnl_GetInterruptStatusMasked Cy_DMA_Channel_GetInterruptStatusMasked + #define Cy_DMA_Chnl_SetInterruptMask(base, channel) (Cy_DMA_Channel_SetInterruptMask(base, channel, CY_DMA_INTR_MASK)) + + +/******************************************************************************* +* Function Name: Cy_DMA_Descr_SetTxfrWidth +****************************************************************************//** +* This is a legacy API function. It is left here just for backward compatibility. +* Do not use it in new designs. +*******************************************************************************/ + __STATIC_INLINE void Cy_DMA_Descr_SetTxfrWidth(cy_stc_dma_descr_t * descriptor, + uint32_t dataElementSize, + uint32_t srcTxfrWidth, + uint32_t dstTxfrWidth) + { + uint32_t regValue; + regValue = descriptor->ctl & ((uint32_t)(~(DW_DESCR_STRUCT_DESCR_CTL_DATA_SIZE_Msk | + DW_DESCR_STRUCT_DESCR_CTL_SRC_TRANSFER_SIZE_Msk | + DW_DESCR_STRUCT_DESCR_CTL_DST_TRANSFER_SIZE_Msk))); + + descriptor->ctl = regValue | + _VAL2FLD(DW_DESCR_STRUCT_DESCR_CTL_DATA_SIZE, dataElementSize) | + _VAL2FLD(DW_DESCR_STRUCT_DESCR_CTL_SRC_TRANSFER_SIZE, srcTxfrWidth) | + _VAL2FLD(DW_DESCR_STRUCT_DESCR_CTL_DST_TRANSFER_SIZE, dstTxfrWidth); + } + +#endif /* CY_DMA_BWC */ + +/** \endcond */ + + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_IP_M4CPUSS_DMA */ + +#endif /* (CY_DMA_H) */ + +/** \} group_dma */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dmac.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dmac.h new file mode 100644 index 00000000000..f65453a75a7 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_dmac.h @@ -0,0 +1,1809 @@ +/***************************************************************************//** +* \file cy_dmac.h +* \version 1.0 +* +* \brief +* The header file of the DMAC driver. +* +******************************************************************************** +* \copyright +* Copyright 2018-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_dmac +* \{ +* Configures the DMA Controller block, channels and descriptors. +* +* The functions and other declarations used in this driver are in cy_dmac.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The DMA Controller channel can be used in any project to transfer data +* without CPU intervention basing on a hardware trigger signal from another component. +* +* The DMA Controller block has a set of registers, a base hardware address, +* and supports multiple channels. Many API functions for the DMAC driver require +* a base hardware address and channel number. +* Ensure that you use the correct hardware address for the DMA Controller block in use. +* +* Features: +* * Multiple channels (device specific). +* * Four priority levels for each channel. +* * Descriptor chaining. +* * Configurable data transfer width/masking: byte, half-word (2-byte), and word (4-byte). +* * Configurable source and destination addresses. +* * Single transfer, 1D, 2D, memory copy and scatter transfer descriptor types are supported. +* * Configurable input/output triggers and interrupts. +* +* \section group_dmac_configuration Configuration Considerations +* +* To set up a DMAC driver, initialize a descriptor, +* initialize and enable a channel, and enable the DMAC block. +* +* To set up a descriptor, provide the configuration parameters for the +* descriptor in the \ref cy_stc_dmac_descriptor_config_t structure. Then call the +* \ref Cy_DMAC_Descriptor_Init function to initialize the descriptor in SRAM. You can +* modify the source and destination addresses dynamically by calling +* \ref Cy_DMAC_Descriptor_SetSrcAddress and \ref Cy_DMAC_Descriptor_SetDstAddress. +* +* To set up a DMAC channel, provide a filled \ref cy_stc_dmac_channel_config_t +* structure. Call the \ref Cy_DMAC_Channel_Init function, specifying the channel +* number. Use \ref Cy_DMAC_Channel_Enable to enable the configured DMAC channel. +* +* Call \ref Cy_DMAC_Channel_Enable for each DMAC channel in use. +* +* When configured, another peripheral typically triggers the DMAC channel. The trigger is +* connected to the DMAC channel using the trigger multiplexer. The trigger multiplexer +* driver has a software trigger you can use in firmware to trigger the DMAC channel. See the +* Trigger Multiplexer documentation. +* +* The following is a simplified structure of the DMAC driver API interdependencies +* in a typical user application: +* \image html dmac.png +* +* NOTE: Even if a DMAC channel is enabled, it is not operational until +* the DMAC block is enabled using function \ref Cy_DMAC_Enable.\n +* NOTE: If the DMAC descriptor is configured to generate an interrupt, +* the interrupt must be enabled using the \ref Cy_DMAC_Channel_SetInterruptMask +* function for each DMAC channel. +* +* For example: +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Enable +* +* \section group_dmac_more_information More Information. +* See the DMAC chapter of the device technical reference manual (TRM). +* +* \section group_dmac_MISRA MISRA-C Compliance +* The DMAC driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
10.3RA composite expression of the "essentially unsigned" type is being +* cast to a different type category.The value got from the bitfield physically cannot exceed the enumeration +* that describes this bitfield. So, the code is safe by design.
11.4AA cast should not be performed between a pointer to object type and +* a different pointer to object type.The cast to another type is made intentionally for better code readability.
+* +* \section group_dmac_changelog Changelog +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.0The initial version.
+* +* \defgroup group_dmac_macros Macros +* \defgroup group_dmac_macros_interrupt_masks Interrupt Masks +* \defgroup group_dmac_functions Functions +* \{ +* \defgroup group_dmac_block_functions Block Functions +* \defgroup group_dmac_channel_functions Channel Functions +* \defgroup group_dmac_descriptor_functions Descriptor Functions +* \} +* \defgroup group_dmac_data_structures Data Structures +* \defgroup group_dmac_enums Enumerated Types +*/ + +#if !defined(CY_DMAC_H) +#define CY_DMAC_H + +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" +#include +#include +#include + +#if defined(CY_IP_M4CPUSS_DMAC) + +#if defined(__cplusplus) +extern "C" { +#endif + +/****************************************************************************** + * Macro definitions * + ******************************************************************************/ + +/** +* \addtogroup group_dmac_macros +* \{ +*/ + +/** The driver major version */ +#define CY_DMAC_DRV_VERSION_MAJOR 1 + +/** The driver minor version */ +#define CY_DMAC_DRV_VERSION_MINOR 0 + +/** The DMAC driver identifier */ +#define CY_DMAC_ID (CY_PDL_DRV_ID(0x3FU)) + +/** The minimum X/Y Count API parameters */ +#define CY_DMAC_LOOP_COUNT_MIN (1UL) +/** The maximum X/Y Count API parameters */ +#define CY_DMAC_LOOP_COUNT_MAX (65536UL) +/** The maximum X Count API parameter for scatter transfer */ +#define CY_DMAC_SCATTER_COUNT_MAX (32768UL) + +/** The minimum X/Y Increment API parameters */ +#define CY_DMAC_LOOP_INCREMENT_MIN (-32768L) +/** The maximum X/Y Increment API parameters */ +#define CY_DMAC_LOOP_INCREMENT_MAX (32767L) + +/** +* \addtogroup group_dmac_macros_interrupt_masks Interrupt Masks +* \{ +*/ + +/** Bit 0: Completion of data transfer(s) as specified by the descriptor's interruptType setting. */ +#define CY_DMAC_INTR_COMPLETION (DMAC_CH_V2_INTR_COMPLETION_Msk) +/** Bit 1: Bus error for a load from the source. */ +#define CY_DMAC_INTR_SRC_BUS_ERROR (DMAC_CH_V2_INTR_SRC_BUS_ERROR_Msk) +/** Bit 2: Bus error for a store to the destination. */ +#define CY_DMAC_INTR_DST_BUS_ERROR (DMAC_CH_V2_INTR_DST_BUS_ERROR_Msk) +/** Bit 3: Misalignment of the source address. */ +#define CY_DMAC_INTR_SRC_MISAL (DMAC_CH_V2_INTR_SRC_MISAL_Msk) +/** Bit 4: Misalignment of the destination address. */ +#define CY_DMAC_INTR_DST_MISAL (DMAC_CH_V2_INTR_DST_MISAL_Msk) +/** Bit 5: The channel is enabled and the current descriptor pointer is "0". */ +#define CY_DMAC_INTR_CURR_PTR_NULL (DMAC_CH_V2_INTR_CURR_PTR_NULL_Msk) +/** Bit 6: The channel is disabled and the data transfer engine is busy. */ +#define CY_DMAC_INTR_ACTIVE_CH_DISABLED (DMAC_CH_V2_INTR_ACTIVE_CH_DISABLED_Msk) +/** Bit 7: Bus error for a load of the descriptor. */ +#define CY_DMAC_INTR_DESCR_BUS_ERROR (DMAC_CH_V2_INTR_DESCR_BUS_ERROR_Msk) + +/** \} group_dmac_macros_interrupt_masks */ + +/** \} group_dmac_macros */ + + +/** +* \addtogroup group_dmac_enums +* \{ +*/ + +/** Contains the options for the descriptor type */ +typedef enum +{ + CY_DMAC_SINGLE_TRANSFER = 0U, /**< Single transfer. */ + CY_DMAC_1D_TRANSFER = 1U, /**< 1D transfer. */ + CY_DMAC_2D_TRANSFER = 2U, /**< 2D transfer. */ + CY_DMAC_MEMORY_COPY = 3U, /**< Memory copy. */ + CY_DMAC_SCATTER_TRANSFER = 4U /**< Scatter transfer. */ +} cy_en_dmac_descriptor_type_t; + +/** Contains the options for the interrupt, trig-in and trig-out type parameters of the descriptor */ +typedef enum +{ + CY_DMAC_1ELEMENT = 0U, /**< One element transfer. */ + CY_DMAC_X_LOOP = 1U, /**< One X loop transfer. */ + CY_DMAC_DESCR = 2U, /**< One descriptor transfer. */ + CY_DMAC_DESCR_CHAIN = 3U /**< Entire descriptor chain transfer. */ +} cy_en_dmac_trigger_type_t; + +/** Contains the options for the data size */ +typedef enum +{ + CY_DMAC_BYTE = 0U, /**< One byte. */ + CY_DMAC_HALFWORD = 1U, /**< Half word (two bytes). */ + CY_DMAC_WORD = 2U /**< Full word (four bytes). */ +} cy_en_dmac_data_size_t; + +/** Contains the options for descriptor retriggering */ +typedef enum +{ + CY_DMAC_RETRIG_IM = 0U, /**< Retrigger immediately. */ + CY_DMAC_RETRIG_4CYC = 1U, /**< Retrigger after 4 Clk_Slow cycles. */ + CY_DMAC_RETRIG_16CYC = 2U, /**< Retrigger after 16 Clk_Slow cycles. */ + CY_DMAC_WAIT_FOR_REACT = 3U /**< Wait for trigger reactivation. */ +} cy_en_dmac_retrigger_t; + +/** Contains the options for the transfer size */ +typedef enum +{ + CY_DMAC_TRANSFER_SIZE_DATA = 0U, /**< As specified by dataSize. */ + CY_DMAC_TRANSFER_SIZE_WORD = 1U, /**< A full word (four bytes). */ +} cy_en_dmac_transfer_size_t; + +/** Contains the options for the state of the channel when the descriptor is completed */ +typedef enum +{ + CY_DMAC_CHANNEL_ENABLED = 0U, /**< Channel stays enabled. */ + CY_DMAC_CHANNEL_DISABLED = 1U /**< Channel is disabled. */ +} cy_en_dmac_channel_state_t; + +/** Contains the return values of the DMAC driver */ +typedef enum +{ + CY_DMAC_SUCCESS = 0x0UL, /**< Success. */ + CY_DMAC_BAD_PARAM = CY_DMAC_ID | CY_PDL_STATUS_ERROR | 0x1UL /**< The input parameters passed to the DMAC API are not valid. */ +} cy_en_dmac_status_t; + +/** \} group_dmac_enums */ + +/** \cond Macros for the conditions used by CY_ASSERT calls */ + +#define CY_DMAC_IS_LOOP_COUNT_VALID(count) (((count) >= CY_DMAC_LOOP_COUNT_MIN) && ((count) <= CY_DMAC_LOOP_COUNT_MAX)) +#define CY_DMAC_IS_SCATTER_COUNT_VALID(count) (((count) >= CY_DMAC_LOOP_COUNT_MIN) && ((count) <= CY_DMAC_SCATTER_COUNT_MAX)) +#define CY_DMAC_IS_LOOP_INCR_VALID(incr) (((incr) >= CY_DMAC_LOOP_INCREMENT_MIN) && ((incr) <= CY_DMAC_LOOP_INCREMENT_MAX)) +#define CY_DMAC_IS_PRIORITY_VALID(prio) ((prio) <= 3UL) + +#define CY_DMAC_INTR_MASK (CY_DMAC_INTR_COMPLETION | \ + CY_DMAC_INTR_SRC_BUS_ERROR | \ + CY_DMAC_INTR_DST_BUS_ERROR | \ + CY_DMAC_INTR_SRC_MISAL | \ + CY_DMAC_INTR_DST_MISAL | \ + CY_DMAC_INTR_CURR_PTR_NULL | \ + CY_DMAC_INTR_ACTIVE_CH_DISABLED | \ + CY_DMAC_INTR_DESCR_BUS_ERROR) + +#define CY_DMAC_IS_INTR_MASK_VALID(intr) (0UL == ((intr) & ((uint32_t) ~CY_DMAC_INTR_MASK))) + +#define CY_DMAC_IS_RETRIGGER_VALID(retrigger) ((CY_DMAC_RETRIG_IM == (retrigger)) || \ + (CY_DMAC_RETRIG_4CYC == (retrigger)) || \ + (CY_DMAC_RETRIG_16CYC == (retrigger)) || \ + (CY_DMAC_WAIT_FOR_REACT == (retrigger))) + +#define CY_DMAC_IS_TRIG_TYPE_VALID(trigType) ((CY_DMAC_1ELEMENT == (trigType)) || \ + (CY_DMAC_X_LOOP == (trigType)) || \ + (CY_DMAC_DESCR == (trigType)) || \ + (CY_DMAC_DESCR_CHAIN == (trigType))) + +#define CY_DMAC_IS_XFER_SIZE_VALID(xferSize) ((CY_DMAC_TRANSFER_SIZE_DATA == (xferSize)) || \ + (CY_DMAC_TRANSFER_SIZE_WORD == (xferSize))) + +#define CY_DMAC_IS_CHANNEL_STATE_VALID(state) ((CY_DMAC_CHANNEL_ENABLED == (state)) || \ + (CY_DMAC_CHANNEL_DISABLED == (state))) + +#define CY_DMAC_IS_DATA_SIZE_VALID(dataSize) ((CY_DMAC_BYTE == (dataSize)) || \ + (CY_DMAC_HALFWORD == (dataSize)) || \ + (CY_DMAC_WORD == (dataSize))) + +#define CY_DMAC_IS_TYPE_VALID(descrType) ((CY_DMAC_SINGLE_TRANSFER == (descrType)) || \ + (CY_DMAC_1D_TRANSFER == (descrType)) || \ + (CY_DMAC_2D_TRANSFER == (descrType)) || \ + (CY_DMAC_MEMORY_COPY == (descrType)) || \ + (CY_DMAC_SCATTER_TRANSFER == (descrType))) + +#define CY_DMAC_IS_CH_NR_VALID(chNr) (CY_DMAC_CH_NR > (chNr)) + +/** \endcond */ + + +/** +* \addtogroup group_dmac_data_structures +* \{ +*/ + + +/** +* DMAC descriptor structure type. It is a user-declared structure +* allocated in RAM. The DMAC HW requires a pointer to this structure to work with it. +* +* For advanced users: the descriptor can be allocated even in flash, however the user +* have to predefine all the structure items with constants manually, +* because the descriptor "Set" API functions (including \ref Cy_DMAC_Descriptor_Init()) +* don't work with read-only descriptors. +*/ +typedef struct +{ + uint32_t ctl; /*!< 0x00000000 Descriptor control */ + uint32_t src; /*!< 0x00000004 Descriptor source */ + uint32_t dst; /*!< 0x00000008 Descriptor destination */ + uint32_t xSize; /*!< 0x0000000C Descriptor X loop size */ + uint32_t xIncr; /*!< 0x00000010 Descriptor X loop increment */ + uint32_t ySize; /*!< 0x00000014 Descriptor Y loop size */ + uint32_t yIncr; /*!< 0x00000010 Descriptor Y loop increment */ + uint32_t nextPtr; /*!< 0x00000014 Descriptor next pointer */ +} cy_stc_dmac_descriptor_t; + +/** \cond The next type-specific descriptor types are ONLY for internal API implementation. */ + +typedef cy_stc_dmac_descriptor_t cy_stc_dmac_dscr_2d_t; + +typedef struct +{ + uint32_t ctl; + uint32_t src; + uint32_t dst; + uint32_t nextPtr; +} cy_stc_dmac_dscr_single_t; + +typedef struct +{ + uint32_t ctl; + uint32_t src; + uint32_t xSize; + uint32_t nextPtr; +} cy_stc_dmac_dscr_scatter_t; + +typedef struct +{ + uint32_t ctl; + uint32_t src; + uint32_t dst; + uint32_t xSize; + uint32_t nextPtr; +} cy_stc_dmac_dscr_memcpy_t; + +typedef struct +{ + uint32_t ctl; + uint32_t src; + uint32_t dst; + uint32_t xSize; + uint32_t xIncr; + uint32_t nextPtr; +} cy_stc_dmac_dscr_1d_t; + +/** \endcond */ + + +/** +* This structure is a configuration structure pre-initialized by user +* and passed as a parameter to the \ref Cy_DMAC_Descriptor_Init(). +* It can be allocated in RAM/flash (on user's choice). +* In case of flash allocation there is a possibility to reinitialize the descriptor in runtime. +* This structure has all the parameters of the descriptor as separate parameters. +* Most of these parameters are represented in the \ref cy_stc_dmac_descriptor_t structure as bit fields. +*/ +typedef struct +{ + cy_en_dmac_retrigger_t retrigger; /**< Specifies whether the DMA controller should wait for the input trigger to be deactivated. */ + cy_en_dmac_trigger_type_t interruptType; /**< Sets the event that triggers an interrupt. See \ref cy_en_dmac_trigger_type_t. */ + cy_en_dmac_trigger_type_t triggerOutType; /**< Sets the event that triggers an output. See \ref cy_en_dmac_trigger_type_t. */ + cy_en_dmac_channel_state_t channelState; /**< Specifies whether the channel is enabled or disabled on completion of descriptor see \ref cy_en_dmac_channel_state_t. */ + cy_en_dmac_trigger_type_t triggerInType; /**< Sets what type of transfer is triggered. See \ref cy_en_dmac_trigger_type_t. */ + bool dataPrefetch; /**< Source data transfers are initiated as soon as the channel is enabled, the current descriptor pointer is NOT "0" + * and there is space available in the channel's data FIFO. + */ + cy_en_dmac_data_size_t dataSize; /**< The size of the data bus for transfer. See \ref cy_en_dmac_data_size_t. + * For memory copy and scatter descriptors this setting will be ignored. + */ + cy_en_dmac_transfer_size_t srcTransferSize; /**< The source transfer size. + * For memory copy and scatter descriptors this setting will be ignored. + */ + cy_en_dmac_transfer_size_t dstTransferSize; /**< The destination transfer size. + * For memory copy and scatter descriptors this setting will be ignored. + */ + cy_en_dmac_descriptor_type_t descriptorType; /**< The type of the descriptor. See \ref cy_en_dmac_descriptor_type_t. */ + void * srcAddress; /**< The source address of the transfer. */ + void * dstAddress; /**< The destination address of the transfer. */ + int32_t srcXincrement; /**< The address increment of the source after each X-loop transfer. Valid range is -32768...32767. */ + int32_t dstXincrement; /**< The address increment of the destination after each X-loop transfer. Valid range is -32768...32767. */ + uint32_t xCount; /**< The number of transfers in an X-loop. Valid range (for all descriptors except scatter transfer) is 1...65536. + * For memory copy descriptors, the X count is a nubmer of bytes (not a data transfer size). + * For scatter descriptors, the X count is a nubmer of [address, data] pairs (two words each). Valid range is 1...32768. + */ + int32_t srcYincrement; /**< The address increment of the source after each Y-loop transfer. Valid range is -32768...32767. */ + int32_t dstYincrement; /**< The address increment of the destination after each Y-loop transfer. Valid range is -32768...32767. */ + uint32_t yCount; /**< The number of X-loops in the Y-loop. Valid range is 1...65536. */ + cy_stc_dmac_descriptor_t * nextDescriptor; /**< The next descriptor to chain after completion. A NULL value will signify no chaining. */ +} cy_stc_dmac_descriptor_config_t; + +/** This structure holds the initialization values for the DMAC channel */ +typedef struct +{ + cy_stc_dmac_descriptor_t * descriptor; /**< The DMAC descriptor associated with the channel being initialized. */ + uint32_t priority; /**< This parameter specifies the channel's priority. */ + bool enable; /**< This parameter specifies if the channel is enabled after initializing. */ + bool bufferable; /**< This parameter specifies whether a write transaction can complete. + * without waiting for the destination to accept the write transaction data. + */ +} cy_stc_dmac_channel_config_t; + +/** \} group_dmac_data_structures */ + + +/** +* \addtogroup group_dmac_functions +* \{ +*/ + +__STATIC_INLINE void Cy_DMAC_Enable (DMAC_Type * base); +__STATIC_INLINE void Cy_DMAC_Disable (DMAC_Type * base); +__STATIC_INLINE uint32_t Cy_DMAC_GetActiveChannel (DMAC_Type const * base); + + +/** +* \addtogroup group_dmac_channel_functions +* \{ +*/ + cy_en_dmac_status_t Cy_DMAC_Channel_Init (DMAC_Type * base, uint32_t channel, cy_stc_dmac_channel_config_t const * config); + void Cy_DMAC_Channel_DeInit (DMAC_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMAC_Channel_SetDescriptor (DMAC_Type * base, uint32_t channel, cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE void Cy_DMAC_Channel_Enable (DMAC_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMAC_Channel_Disable (DMAC_Type * base, uint32_t channel); +__STATIC_INLINE void Cy_DMAC_Channel_SetPriority (DMAC_Type * base, uint32_t channel, uint32_t priority); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetPriority (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE void * Cy_DMAC_Channel_GetCurrentSrcAddress (DMAC_Type * base, uint32_t channel); +__STATIC_INLINE void * Cy_DMAC_Channel_GetCurrentDstAddress (DMAC_Type * base, uint32_t channel); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetCurrentXloopIndex (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetCurrentYloopIndex (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE cy_stc_dmac_descriptor_t * + Cy_DMAC_Channel_GetCurrentDescriptor (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptStatus (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE void Cy_DMAC_Channel_ClearInterrupt (DMAC_Type * base, uint32_t channel, uint32_t interrupt); +__STATIC_INLINE void Cy_DMAC_Channel_SetInterrupt (DMAC_Type * base, uint32_t channel, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptMask (DMAC_Type const * base, uint32_t channel); +__STATIC_INLINE void Cy_DMAC_Channel_SetInterruptMask (DMAC_Type * base, uint32_t channel, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptStatusMasked(DMAC_Type const * base, uint32_t channel); + +/** \} group_dmac_channel_functions */ + + +/** +* \addtogroup group_dmac_descriptor_functions +* \{ +*/ + + cy_en_dmac_status_t Cy_DMAC_Descriptor_Init (cy_stc_dmac_descriptor_t * descriptor, cy_stc_dmac_descriptor_config_t const * config); + void Cy_DMAC_Descriptor_DeInit(cy_stc_dmac_descriptor_t * descriptor); + + void Cy_DMAC_Descriptor_SetNextDescriptor (cy_stc_dmac_descriptor_t * descriptor, cy_stc_dmac_descriptor_t const * nextDescriptor); + void Cy_DMAC_Descriptor_SetDescriptorType (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_descriptor_type_t descriptorType); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetSrcAddress (cy_stc_dmac_descriptor_t * descriptor, void const * srcAddress); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDstAddress (cy_stc_dmac_descriptor_t * descriptor, void const * dstAddress); + void Cy_DMAC_Descriptor_SetXloopDataCount (cy_stc_dmac_descriptor_t * descriptor, uint32_t xCount); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopDataCount (cy_stc_dmac_descriptor_t * descriptor, uint32_t yCount); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetXloopSrcIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t srcXincrement); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetXloopDstIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t dstXincrement); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopSrcIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t srcYincrement); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopDstIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t dstYincrement); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetInterruptType (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t interruptType); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetTriggerInType (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t triggerInType); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetTriggerOutType (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t triggerOutType); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDataSize (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_data_size_t dataSize); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetSrcTransferSize (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_transfer_size_t srcTransferSize); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDstTransferSize (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_transfer_size_t dstTransferSize); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetRetrigger (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_retrigger_t retrigger); +__STATIC_INLINE void Cy_DMAC_Descriptor_SetChannelState (cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_channel_state_t channelState); + + cy_stc_dmac_descriptor_t * Cy_DMAC_Descriptor_GetNextDescriptor (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_descriptor_type_t Cy_DMAC_Descriptor_GetDescriptorType (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE void * Cy_DMAC_Descriptor_GetSrcAddress (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE void * Cy_DMAC_Descriptor_GetDstAddress (cy_stc_dmac_descriptor_t const * descriptor); + uint32_t Cy_DMAC_Descriptor_GetXloopDataCount (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE uint32_t Cy_DMAC_Descriptor_GetYloopDataCount (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetXloopSrcIncrement(cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetXloopDstIncrement(cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetYloopSrcIncrement(cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetYloopDstIncrement(cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetInterruptType (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetTriggerInType (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetTriggerOutType (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_data_size_t Cy_DMAC_Descriptor_GetDataSize (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_transfer_size_t Cy_DMAC_Descriptor_GetSrcTransferSize (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_transfer_size_t Cy_DMAC_Descriptor_GetDstTransferSize (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_retrigger_t Cy_DMAC_Descriptor_GetRetrigger (cy_stc_dmac_descriptor_t const * descriptor); +__STATIC_INLINE cy_en_dmac_channel_state_t Cy_DMAC_Descriptor_GetChannelState (cy_stc_dmac_descriptor_t const * descriptor); + +/** \} group_dmac_descriptor_functions */ + + +/*************************************** +* In-line Function Implementation +***************************************/ + + +/** +* \addtogroup group_dmac_block_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMAC_Enable +****************************************************************************//** +* +* Enables the DMACblock. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Enable(DMAC_Type * base) +{ + DMAC_CTL(base) |= DMAC_V2_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Disable +****************************************************************************//** +* +* Disables the DMACblock. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Disable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Disable(DMAC_Type * base) +{ + DMAC_CTL(base) &= (uint32_t) ~DMAC_V2_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_GetActiveChannel +****************************************************************************//** +* +* Returns the status of the active/pending channels of the DMACblock. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \return +* Returns a bit-field with all of the currently active/pending channels in the +* DMAC block. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Disable +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_GetActiveChannel(DMAC_Type const * base) +{ + return(_FLD2VAL(DMAC_V2_ACTIVE_ACTIVE, DMAC_ACTIVE(base))); +} + +/** \} group_dmac_block_functions */ + + +/** +* \addtogroup group_dmac_descriptor_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetSrcAddress +****************************************************************************//** +* +* Sets the source address parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param srcAddress +* The source address value for the descriptor. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetSrcAddress(cy_stc_dmac_descriptor_t * descriptor, void const * srcAddress) +{ + descriptor->src = (uint32_t) srcAddress; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetSrcAddress +****************************************************************************//** +* +* Returns the source address of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The source address value of the descriptor. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMAC_Descriptor_GetSrcAddress(cy_stc_dmac_descriptor_t const * descriptor) +{ + return ((void *) descriptor->src); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetDstAddress +****************************************************************************//** +* +* Sets the destination address parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param dstAddress +* The destination address value for the descriptor. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDstAddress(cy_stc_dmac_descriptor_t * descriptor, void const * dstAddress) +{ + CY_ASSERT_L1(CY_DMAC_SCATTER_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + descriptor->dst = (uint32_t) dstAddress; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetDstAddress +****************************************************************************//** +* +* Returns the destination address of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The destination address value of the descriptor. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMAC_Descriptor_GetDstAddress(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_SCATTER_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + return ((void *) descriptor->dst); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetInterruptType +****************************************************************************//** +* +* Sets the interrupt type parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param interruptType +* The interrupt type set for the descriptor. \ref cy_en_dmac_trigger_type_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetInterruptType(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t interruptType) +{ + CY_ASSERT_L3(CY_DMAC_IS_TRIG_TYPE_VALID(interruptType)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_INTR_TYPE, interruptType); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetInterruptType +****************************************************************************//** +* +* Returns the Interrupt-Type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Interrupt-Type \ref cy_en_dmac_trigger_type_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetInterruptType(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_trigger_type_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_INTR_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetTriggerInType +****************************************************************************//** +* +* Sets the Trigger In Type parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param triggerInType +* The Trigger In Type parameter \ref cy_en_dmac_trigger_type_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetTriggerInType(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t triggerInType) +{ + CY_ASSERT_L3(CY_DMAC_IS_TRIG_TYPE_VALID(triggerInType)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_TR_IN_TYPE, triggerInType); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetTriggerInType +****************************************************************************//** +* +* Returns the Trigger In Type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Trigger In Type \ref cy_en_dmac_trigger_type_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetTriggerInType(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_trigger_type_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_TR_IN_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetTriggerOutType +****************************************************************************//** +* +* Sets the Trigger Out Type parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param triggerOutType +* The Trigger Out Type set for the descriptor. \ref cy_en_dmac_trigger_type_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetTriggerOutType(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_trigger_type_t triggerOutType) +{ + CY_ASSERT_L3(CY_DMAC_IS_TRIG_TYPE_VALID(triggerOutType)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_TR_OUT_TYPE, triggerOutType); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetTriggerOutType +****************************************************************************//** +* +* Returns the Trigger Out Type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Trigger Out Type parameter \ref cy_en_dmac_trigger_type_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_trigger_type_t Cy_DMAC_Descriptor_GetTriggerOutType(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_trigger_type_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_TR_OUT_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetDataSize +****************************************************************************//** +* +* Sets the Data Element Size parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param dataSize +* The Data Element Size \ref cy_en_dmac_data_size_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDataSize(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_data_size_t dataSize) +{ + CY_ASSERT_L3(CY_DMAC_IS_DATA_SIZE_VALID(dataSize)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_DATA_SIZE, dataSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetDataSize +****************************************************************************//** +* +* Returns the Data Element Size of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Data Element Size \ref cy_en_dmac_data_size_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_data_size_t Cy_DMAC_Descriptor_GetDataSize(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_data_size_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_DATA_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetSrcTransferSize +****************************************************************************//** +* +* Sets the Source Transfer Size parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param srcTransferSize +* The Source Transfer Size \ref cy_en_dmac_transfer_size_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetSrcTransferSize(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_transfer_size_t srcTransferSize) +{ + CY_ASSERT_L3(CY_DMAC_IS_XFER_SIZE_VALID(srcTransferSize)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_SRC_TRANSFER_SIZE, srcTransferSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetSrcTransferSize +****************************************************************************//** +* +* Returns the Source Transfer Size of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Source Transfer Size \ref cy_en_dmac_transfer_size_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_transfer_size_t Cy_DMAC_Descriptor_GetSrcTransferSize(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_transfer_size_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_SRC_TRANSFER_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetDstTransferSize +****************************************************************************//** +* +* Sets the Destination Transfer Size parameter for the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param dstTransferSize +* The Destination Transfer Size \ref cy_en_dmac_transfer_size_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetDstTransferSize(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_transfer_size_t dstTransferSize) +{ + CY_ASSERT_L3(CY_DMAC_IS_XFER_SIZE_VALID(dstTransferSize)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_DST_TRANSFER_SIZE, dstTransferSize); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetDstTransferSize +****************************************************************************//** +* +* Returns the Destination Transfer Size of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Destination Transfer Size \ref cy_en_dmac_transfer_size_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_transfer_size_t Cy_DMAC_Descriptor_GetDstTransferSize(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_transfer_size_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_DST_TRANSFER_SIZE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetRetrigger +****************************************************************************//** +* +* Sets the retrigger value which specifies whether the controller should +* wait for the input trigger to be deactivated. +* +* \param descriptor +* The descriptor structure instance. +* +* \param retrigger +* The \ref cy_en_dmac_retrigger_t parameter specifies whether the controller +* should wait for the input trigger to be deactivated. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetRetrigger(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_retrigger_t retrigger) +{ + CY_ASSERT_L3(CY_DMAC_IS_RETRIGGER_VALID(retrigger)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_WAIT_FOR_DEACT, retrigger); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetRetrigger +****************************************************************************//** +* +* Returns a value which specifies whether the controller should +* wait for the input trigger to be deactivated. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Retrigger setting \ref cy_en_dmac_retrigger_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_retrigger_t Cy_DMAC_Descriptor_GetRetrigger(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_retrigger_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_WAIT_FOR_DEACT, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetDescriptorType +****************************************************************************//** +* +* Returns the descriptor's type of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The descriptor type \ref cy_en_dmac_descriptor_type_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_descriptor_type_t Cy_DMAC_Descriptor_GetDescriptorType(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_descriptor_type_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_DESCR_TYPE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetChannelState +****************************************************************************//** +* +* Sets the channel state on completion of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \param channelState +* The channel state \ref cy_en_dmac_channel_state_t. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetChannelState(cy_stc_dmac_descriptor_t * descriptor, cy_en_dmac_channel_state_t channelState) +{ + CY_ASSERT_L3(CY_DMAC_IS_CHANNEL_STATE_VALID(channelState)); + + CY_REG32_CLR_SET(descriptor->ctl, DMAC_CH_V2_DESCR_CTL_CH_DISABLE, channelState); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetChannelState +****************************************************************************//** +* +* Returns the channel state on completion of the specified descriptor. +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The Channel State setting \ref cy_en_dmac_channel_state_t +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE cy_en_dmac_channel_state_t Cy_DMAC_Descriptor_GetChannelState(cy_stc_dmac_descriptor_t const * descriptor) +{ + return((cy_en_dmac_channel_state_t) _FLD2VAL(DMAC_CH_V2_DESCR_CTL_CH_DISABLE, descriptor->ctl)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetXloopSrcIncrement +****************************************************************************//** +* +* Sets the source increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \param srcXincrement +* The value of the source increment. The valid range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetXloopSrcIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t srcXincrement) +{ + CY_ASSERT_L1(CY_DMAC_SINGLE_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMAC_IS_LOOP_INCR_VALID(srcXincrement)); + + CY_REG32_CLR_SET(descriptor->xIncr, DMAC_CH_V2_DESCR_X_INCR_SRC_X, srcXincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetXloopSrcIncrement +****************************************************************************//** +* +* Returns the source increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The value of the source increment. The range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetXloopSrcIncrement(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_SINGLE_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(DMAC_CH_V2_DESCR_X_INCR_SRC_X, descriptor->xIncr)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetXloopDstIncrement +****************************************************************************//** +* +* Sets the destination increment parameter for the X loop for the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \param dstXincrement +* The value of the destination increment. The valid range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetXloopDstIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t dstXincrement) +{ + CY_ASSERT_L1(CY_DMAC_SINGLE_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMAC_IS_LOOP_INCR_VALID(dstXincrement)); + + CY_REG32_CLR_SET(descriptor->xIncr, DMAC_CH_V2_DESCR_X_INCR_DST_X, dstXincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetXloopDstIncrement +****************************************************************************//** +* +* Returns the destination increment parameter for the X loop of the specified +* descriptor (for 1D or 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The value of the destination increment. The range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetXloopDstIncrement(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_SINGLE_TRANSFER != Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(DMAC_CH_V2_DESCR_X_INCR_DST_X, descriptor->xIncr)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetYloopDataCount +****************************************************************************//** +* +* Sets the number of data elements for the Y loop of the specified descriptor +* (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \param yCount +* The number of X loops to execute in the Y loop. The valid range is 1 ... 65536. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopDataCount(cy_stc_dmac_descriptor_t * descriptor, uint32_t yCount) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMAC_IS_LOOP_COUNT_VALID(yCount)); + /* Convert the data count from the user's range (1-65536) into the machine range (0-65535). */ + CY_REG32_CLR_SET(descriptor->ySize, DMAC_CH_V2_DESCR_Y_SIZE_Y_COUNT, yCount - 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetYloopDataCount +****************************************************************************//** +* +* Returns the number of X loops to execute in the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The number of X loops to execute in the Y loop. The range is 1 ... 65536. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Descriptor_GetYloopDataCount(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + /* Convert the data count from the machine range (0-65535) into the user's range (1-65536). */ + return (_FLD2VAL(DMAC_CH_V2_DESCR_Y_SIZE_Y_COUNT, descriptor->ySize) + 1UL); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetYloopSrcIncrement +****************************************************************************//** +* +* Sets the source increment parameter for the Y loop for the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \param srcYincrement +* The value of the source increment. The valid range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopSrcIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t srcYincrement) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMAC_IS_LOOP_INCR_VALID(srcYincrement)); + + CY_REG32_CLR_SET(descriptor->yIncr, DMAC_CH_V2_DESCR_Y_INCR_SRC_Y, srcYincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetYloopSrcIncrement +****************************************************************************//** +* +* Returns the source increment parameter for the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The value of source increment. The range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetYloopSrcIncrement(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(DMAC_CH_V2_DESCR_Y_INCR_SRC_Y, descriptor->yIncr)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_SetYloopDstIncrement +****************************************************************************//** +* +* Sets the destination increment parameter for the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \param dstYincrement +* The value of the destination increment. The valid range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_SetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Descriptor_SetYloopDstIncrement(cy_stc_dmac_descriptor_t * descriptor, int32_t dstYincrement) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + CY_ASSERT_L2(CY_DMAC_IS_LOOP_INCR_VALID(dstYincrement)); + + CY_REG32_CLR_SET(descriptor->yIncr, DMAC_CH_V2_DESCR_Y_INCR_DST_Y, dstYincrement); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Descriptor_GetYloopDstIncrement +****************************************************************************//** +* +* Returns the destination increment parameter for the Y loop of the specified +* descriptor (for 2D descriptors only). +* +* \param descriptor +* The descriptor structure instance. +* +* \return +* The value of the destination increment. The range is -32768 ... 32767. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_GetterFunctions +* +*******************************************************************************/ +__STATIC_INLINE int32_t Cy_DMAC_Descriptor_GetYloopDstIncrement(cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_2D_TRANSFER == Cy_DMAC_Descriptor_GetDescriptorType(descriptor)); + + return ((int32_t) _FLD2VAL(DMAC_CH_V2_DESCR_Y_INCR_DST_Y, descriptor->yIncr)); +} + +/** \} group_dmac_descriptor_functions */ + + +/** +* \addtogroup group_dmac_channel_functions +* \{ +*/ + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_SetDescriptor +****************************************************************************//** +* +* Sets a descriptor as current for the specified DMACchannel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \param descriptor +* This is the descriptor to be associated with the channel. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_SetDescriptor(DMAC_Type * base, uint32_t channel, cy_stc_dmac_descriptor_t const * descriptor) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + DMAC_CH_CURR(base, channel) = (uint32_t)descriptor; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_Enable +****************************************************************************//** +* +* Enables a DMAC channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_Enable(DMAC_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + DMAC_CH_CTL(base, channel) |= DMAC_CH_V2_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_Disable +****************************************************************************//** +* +* Disables a DMACchannel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Disable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_Disable(DMAC_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + DMAC_CH_CTL(base, channel) &= (uint32_t) ~DMAC_CH_V2_CTL_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_SetPriority +****************************************************************************//** +* +* The function is used to set a priority for the DMAC channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \param priority +* The priority to be set for the DMAC channel. The allowed values are 0,1,2,3. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Enable +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_SetPriority(DMAC_Type * base, uint32_t channel, uint32_t priority) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMAC_IS_PRIORITY_VALID(priority)); + + CY_REG32_CLR_SET(DMAC_CH_CTL(base, channel), DMAC_CH_V2_CTL_PRIO, priority); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetPriority +****************************************************************************//** +* +* Returns the priority of the DMAC channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* The priority of the channel. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Disable +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetPriority(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return ((uint32_t) _FLD2VAL(DMAC_CH_V2_CTL_PRIO, DMAC_CH_CTL(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetCurrentSrcAddress +****************************************************************************//** +* +* Returns the source address being used for the current transfer. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* Returns the pointer to the source of transfer. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Channel_GetCurrentSrcAddress +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMAC_Channel_GetCurrentSrcAddress(DMAC_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return ((void *)(DMAC_CH_DESCR_SRC(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetCurrentDstAddress +****************************************************************************//** +* +* Returns the destination address being used for the current transfer. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* Returns the pointer to the destination of transfer. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Channel_GetCurrentSrcAddress +* +*******************************************************************************/ +__STATIC_INLINE void * Cy_DMAC_Channel_GetCurrentDstAddress(DMAC_Type * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return ((void *)(DMAC_CH_DESCR_DST(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetCurrentXloopIndex +****************************************************************************//** +* +* Returns the current transfer X-loop index. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* Returns the current transfer X-loop index. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Channel_GetCurrentloopIndex +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetCurrentXloopIndex(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return (_FLD2VAL(DMAC_CH_V2_IDX_X, DMAC_CH_IDX(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetCurrentYloopIndex +****************************************************************************//** +* +* Returns the current transfer X-loop index. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* Returns the current transfer X-loop index. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Channel_GetCurrentloopIndex +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetCurrentYloopIndex(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return (_FLD2VAL(DMAC_CH_V2_IDX_Y, DMAC_CH_IDX(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetCurrentDescriptor +****************************************************************************//** +* +* Returns the descriptor that is active in the channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* The pointer to the descriptor associated with the channel. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_Descriptor_Deinit +* +*******************************************************************************/ +__STATIC_INLINE cy_stc_dmac_descriptor_t * Cy_DMAC_Channel_GetCurrentDescriptor(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return ((cy_stc_dmac_descriptor_t*)(DMAC_CH_CURR(base, channel))); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetInterruptStatus +****************************************************************************//** +* +* Returns the interrupt status of the specified channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* The interrupt status, see \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptStatus(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return (DMAC_CH_INTR(base, channel)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_ClearInterrupt +****************************************************************************//** +* +* Clears the interrupt status of the specified channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \param interrupt +* The interrupt mask, see \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_ClearInterrupt(DMAC_Type * base, uint32_t channel, uint32_t interrupt) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMAC_IS_INTR_MASK_VALID(interrupt)); + + DMAC_CH_INTR(base, channel) = CY_DMAC_INTR_MASK; + (void) DMAC_CH_INTR(base, channel); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_SetInterrupt +****************************************************************************//** +* +* Sets the interrupt for the specified channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \param interrupt +* The interrupt mask. See \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_SetInterrupt(DMAC_Type * base, uint32_t channel, uint32_t interrupt) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMAC_IS_INTR_MASK_VALID(interrupt)); + + DMAC_CH_INTR_SET(base, channel) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetInterruptMask +****************************************************************************//** +* +* Returns the interrupt mask value of the specified channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* The interrupt mask value. See \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptMask(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return (DMAC_CH_INTR_MASK(base, channel)); +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_SetInterruptMask +****************************************************************************//** +* +* Sets an interrupt mask value for the specified channel. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \param interrupt +* The interrupt mask, see \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_DMAC_Channel_SetInterruptMask(DMAC_Type * base, uint32_t channel, uint32_t interrupt) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + CY_ASSERT_L2(CY_DMAC_IS_INTR_MASK_VALID(interrupt)); + DMAC_CH_INTR_MASK(base, channel) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_DMAC_Channel_GetInterruptStatusMasked +****************************************************************************//** +* +* Returns the logical AND of the corresponding INTR and INTR_MASK fields +* in a single-load operation. +* +* \param base +* The pointer to the hardware DMAC block. +* +* \param channel +* The channel number. +* +* \return +* The masked interrupt status. See \ref group_dmac_macros_interrupt_masks. +* +* \funcusage +* \snippet dmac\1.0\snippet\main.c snippet_Cy_DMAC_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_DMAC_Channel_GetInterruptStatusMasked(DMAC_Type const * base, uint32_t channel) +{ + CY_ASSERT_L1(CY_DMAC_IS_CH_NR_VALID(channel)); + + return (DMAC_CH_INTR_MASKED(base, channel)); +} + +/** \} group_dmac_channel_functions */ + +/** \} group_dmac_functions */ + +#if defined(__cplusplus) +} +#endif + +#endif /* defined(CY_IP_M4CPUSS_DMAC) */ + +#endif /* !defined(CY_DMAC_H) */ + +/** \} group_dmac */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_efuse.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_efuse.h new file mode 100644 index 00000000000..2c228e0858f --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_efuse.h @@ -0,0 +1,174 @@ +/***************************************************************************//** +* \file cy_efuse.h +* \version 1.10 +* +* Provides the API declarations of the eFuse driver. +* +******************************************************************************** +* \copyright +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#if !defined(CY_EFUSE_H) +#define CY_EFUSE_H + +/** +* \addtogroup group_efuse +* \{ +* +* Electronic Fuses (eFuses) are non-volatile memory where each bit is one-time +* programmable (OTP). +* +* The functions and other declarations used in this driver are in cy_efuse.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The eFuse driver enables reading the state of any bit. The eFuse driver does +* not support writing to eFuse memory. Writing an eFuse bit is typically done by +* a production programmer. +* +* One eFuse macro consists of 256 bits (32 * 8). PSoC devices have up to 16 +* eFuse macros; consult the device-specific datasheet to determine how many +* macros a device has. These are implemented as a regular Advanced +* High-performance Bus (AHB) peripheral with the following characteristics: +* - eFuses are used to control the device life-cycle stage (NORMAL, SECURE, +* and SECURE_WITH_DEBUG) and the protection settings; +* - eFuse memory can be programmed (eFuse bit value changed from '0' to '1') +* only once; if an eFuse bit is blown, it cannot be cleared again; +* - fuses are programmed via the PSoC Programmer tool that parses the hex file +* and extracts the necessary information; the fuse data must be located at the +* dedicated section in the hex file. For more details see +* [PSoC 6 Programming Specifications] +* (http://www.cypress.com/documentation/programming-specifications/psoc-6-programming-specifications) +* +* \section group_efuse_configuration Configuration Considerations +* +* The eFuse driver provides the simplest way to read eFuse memory. +* No configuration is needed. +* +* \section group_efuse_more_information More Information +* +* Refer to the technical reference manual (TRM) and the device datasheet. +* +* \section group_efuse_MISRA MISRA-C Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.5RDangerous pointer cast results in loss of volatile qualification.The removal of the volatile qualification inside the function has no +* side effects.
+* +* \section group_efuse_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.10Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
1.0Initial version
+* +* \defgroup group_efuse_macros Macros +* \defgroup group_efuse_functions Functions +* \defgroup group_efuse_data_structures Data Structures +* \defgroup group_efuse_enumerated_types Enumerated Types +*/ + +#include "cy_device_headers.h" +#include "cy_syslib.h" + +/*************************************** +* Macro Definitions +***************************************/ +/** +* \addtogroup group_efuse_macros +* \{ +*/ + +/** The driver major version */ +#define CY_EFUSE_DRV_VERSION_MAJOR 1 +/** The driver minor version */ +#define CY_EFUSE_DRV_VERSION_MINOR 10 +/** The eFuse driver identifier */ +#define CY_EFUSE_ID (CY_PDL_DRV_ID(0x1AUL)) +/** The number of bits in the byte */ +#define CY_EFUSE_BITS_PER_BYTE (8UL) +/** \} group_efuse_macros */ + +/*************************************** +* Enumerated Types +***************************************/ +/** +* \addtogroup group_efuse_enumerated_types +* \{ +*/ +/** This enum has the return values of the eFuse driver */ +typedef enum +{ + CY_EFUSE_SUCCESS = 0x00UL, /**< Success */ + CY_EFUSE_INVALID_PROTECTION = CY_EFUSE_ID | CY_PDL_STATUS_ERROR | 0x01UL, /**< Invalid access in the current protection state */ + CY_EFUSE_INVALID_FUSE_ADDR = CY_EFUSE_ID | CY_PDL_STATUS_ERROR | 0x02UL, /**< Invalid eFuse address */ + CY_EFUSE_BAD_PARAM = CY_EFUSE_ID | CY_PDL_STATUS_ERROR | 0x03UL, /**< One or more invalid parameters */ + CY_EFUSE_IPC_BUSY = CY_EFUSE_ID | CY_PDL_STATUS_ERROR | 0x04UL, /**< The IPC structure is already locked by another process */ + CY_EFUSE_ERR_UNC = CY_EFUSE_ID | CY_PDL_STATUS_ERROR | 0xFFUL /**< Unknown error code. See Cy_EFUSE_GetExternalStatus() */ +} cy_en_efuse_status_t; + +/** \} group_efuse_data_structure */ + +#if defined(__cplusplus) +extern "C" { +#endif +/*************************************** +* Function Prototypes +***************************************/ + +/** +* \addtogroup group_efuse_functions +* \{ +*/ +cy_en_efuse_status_t Cy_EFUSE_GetEfuseBit(uint32_t bitNum, bool *bitVal); +cy_en_efuse_status_t Cy_EFUSE_GetEfuseByte(uint32_t offset, uint8_t *byteVal); +uint32_t Cy_EFUSE_GetExternalStatus(void); +/** \} group_efuse_functions */ + +#if defined(__cplusplus) +} +#endif + + +#endif /* #if !defined(CY_EFUSE_H) */ + +/** \} group_efuse */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_flash.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_flash.h new file mode 100644 index 00000000000..d6388393e51 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_flash.h @@ -0,0 +1,470 @@ +/***************************************************************************//** +* \file cy_flash.h +* \version 3.20 +* +* Provides the API declarations of the Flash driver. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#if !defined(CY_FLASH_H) +#define CY_FLASH_H + +/** +* \addtogroup group_flash +* \{ +* Internal flash memory programming +* +* The functions and other declarations used in this driver are in cy_flash.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* Flash memory in PSoC devices provides non-volatile storage for user firmware, +* user configuration data, and bulk data storage. +* +* Flash operations are implemented as system calls. System calls are executed +* out of SROM in the privileged mode of operation. Users have no access to read +* or modify the SROM code. The driver API requests the system call by acquiring +* the Inter-processor communication (IPC) and writing the SROM function opcode +* and parameters to its input registers. As a result, an NMI interrupt is invoked +* and the requested SROM API is executed. The operation status is returned to the +* driver context and a release interrupt is triggered. +* +* Writing to flash can take up to 20 milliseconds. During this time, +* the device should not be reset (including XRES pin, software reset, and +* watchdog) or unexpected changes may be made to portions of the flash. +* Also, the low-voltage detect circuits should be configured to generate an +* interrupt instead of a reset. +* +* A Read while Write violation occurs when a flash Read operation is initiated +* in the same or neighboring flash sector where the flash Write, Erase, or +* Program operation is working. This violation may cause a HardFault exception. +* To avoid the Read while Write violation, the user must carefully split the +* Read and Write operation on flash sectors which are not neighboring, +* considering both cores in the multi-processor device. The flash is divided +* into four equal sectors. You may edit the linker script to place the code +* into neighboring sectors. For example, use sectors number 0 and 1 for code +* and sectors 2 and 3 for data storage. +* +* \section group_flash_configuration Configuration Considerations +* +* \subsection group_flash_config_intro Introduction: +* The PSoC 6 MCU user-programmable Flash consists of: +* - Four User Flash sectors (0 through 3) - 256KB each. +* - EEPROM emulation sector - 32KB. +* +* Write operations are performed on a per-sector basis and may be done as +* Blocking or Partially Blocking, defined as follows: +* +* \subsection group_flash_config_blocking Blocking: +* In this case, the entire Flash block is not available for the duration of the +* Write (∼16ms). Therefore, no Flash accesses (from any Bus Master) can +* occur during that time. CPU execution can be performed from SRAM. All +* pre-fetching must be disabled. Application code execution from Flash is +* blocked for the Flash Write duration for both cores. +* +* \subsection group_flash_config_block_const Constraints for Blocking Flash operations: +* -# During write to flash, the device should not be reset (including XRES pin, +* software reset, and watchdog), or unexpected changes may be made to portions +* of the flash. +* -# The low-voltage detect circuits should be configured to generate an +* interrupt instead of a reset. +* -# Flash write operation is allowed only in one of the following CM4 states: +* -# CM4 is Active and initialized:
+* call \ref Cy_SysEnableCM4 "Cy_SysEnableCM4(CY_CORTEX_M4_APPL_ADDR)". +* Note: If desired user may put CM4 core in Deep Sleep any time +* after calling Cy_SysEnableCM4(). +* -# CM4 is Off:
+* call Cy_SysDisableCM4(). Note: In this state Debug mode is not +* supported. +* . +* -# Flash write cannot be performed in ULP (core voltage 0.9V) mode. +* -# Interrupts must be enabled on both active cores. Do not enter a critical +* section during flash operation. +* -# User must guarantee that system pipe interrupts (IPC interrupts 3 and 4) +* have the highest priority, or at least that pipe interrupts are not +* interrupted or in a pending state for more than 700 µs. +* -# User must guarantee that during flash write operation no flash read +* operations are performed by bus masters other than CM0+ and CM4 (DMA and +* Crypto). +* -# If you do not use the default startup, perform the following steps +* before any flash write/erase operations: +* \snippet flash\3.20\snippet\main.c Flash Initialization +* +* \subsection group_flash_config_rww Partially Blocking: +* This method has a much shorter time window during which Flash accesses are not +* allowed. Application code execution from Flash is blocked for only a part of +* Flash Write duration, for both cores. Blocking duration depends upon the API +* sequence used. +* +* For API sequence Cy_Flash_StartErase() + Cy_Flash_StartProgram() there are +* four block-out regions during which the read is blocked using the software +* driver (PDL). See Figure 1. +* +*
+* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
Table 1 - Block-out periods
Block-outPhaseDuration
AThe beginning of the Erase operation2ms + 9500 SlowClk cycles
BThe end of the Erase operation0.13ms + 1000 SlowClk cycles
CThe beginning of the Program operation0.8ms + 6000 SlowClk cycles
DThe end of the Program operation0.13ms + 1000 SlowClk cycles
+*
+* +* This allows both cores to execute an application for about 80% of Flash Write +* operation - see Figure 1. +* This capability is important for communication protocols that rely on fast +* response. +* +* \image html flash-rww-diagram.png "Figure 1 - Blocking Intervals in Flash Write operation" +* +* For the Cy_Flash_StartWrite() function, the block-out period is different for +* the two cores. The core that initiates Cy_Flash_StartWrite() is blocked for +* two periods: +* - From start of Erase operation (start of A on Figure 1) till the start of +* Program operation (end of C on Figure 1). +* - During D period on Figure 1. +* +* The core that performs read/execute is blocked identically to the previous +* scenario - see Figure 1. +* +* This allows the core that initiates Cy_Flash_StartWrite() to execute an +* application for about 20% of the Flash Write operation. The other core executes +* the application for about 80% of the Flash Write operation. +* +* Some constraints must be planned for in the Partially Blocking mode which are +* described in detail below. +* +* \subsection group_flash_config_rww_const Constraints for Partially Blocking Flash operations: +* -# During write to flash, the device should not be reset (including XRES pin, +* software reset, and watchdog) or unexpected changes may be made to portions +* of the flash. +* -# The low-voltage detect circuits should be configured to generate an +* interrupt instead of a reset. +* -# During write to flash, application code should not change the clock +* settings. Use Cy_Flash_IsOperationComplete() to ensure flash write +* operation is finished. +* -# During write to flash, application code should not start the clock +* measurements (should not call Cy_SysClk_StartClkMeasurementCounters()). +* -# Flash write operation is allowed only in one of the following CM4 states: +* -# CM4 is Active and initialized:
+* call \ref Cy_SysEnableCM4 "Cy_SysEnableCM4(CY_CORTEX_M4_APPL_ADDR)". +* Note: If desired user may put CM4 core in Deep Sleep any time +* after calling Cy_SysEnableCM4(). +* -# CM4 is Off:
+* call Cy_SysDisableCM4(). Note: In this state Debug mode is not +* supported. +* . +* -# Use the following rules for split by sectors. (In this context, read means +* read of any bus master: CM0+, CM4, DMA, Crypto, etc.) +* -# Do not write to and read/execute from the same flash sector at the same +* time. This is true for all sectors. +* -# Writing rules in User Flash: +* -# Any bus master can read/execute from UFLASH S0 and/or S1, during +* flash write to UFLASH S2 or S3. +* -# Any bus master can read/execute from UFLASH S2 and/or S3, during +* flash write to UFLASH S0 or S1. +* +* Suggestion: in case of bootloading, it is recommended to place +* code for CM4 in either S0 or S1. CM0+ code resides in S0. Write data +* to S2 and S3 sections. +* . +* -# Flash write cannot be performed in ULP mode (core voltage 0.9V). +* -# Interrupts must be enabled on both active cores. Do not enter a critical +* section during flash operation. +* -# User must guarantee that system pipe interrupts (IPC interrupts 3 and 4) +* have the highest priority, or at least that pipe interrupts are not +* interrupted or in a pending state for more than 700 µs. +* -# User must guarantee that during flash write operation no flash read +* operations are performed by bus masters other than CM0+ and CM4 +* (DMA and Crypto). +* -# If you do not use the default startup, perform the following steps +* before any flash write/erase operations: +* \snippet flash\3.20\snippet\main.c Flash Initialization +* +* \subsection group_flash_config_emeeprom EEPROM section use: +* If you plan to use "cy_em_eeprom" section for different purposes for both of +* device cores or use Em_EEPROM Middleware together with flash driver +* write operations you must modify the linker scripts.
+* For more information, refer to the Middleware/Cypress Em_EEPROM Middleware +* Library section of the PDL documentation. +* +* \section group_flash_more_information More Information +* +* See the technical reference manual (TRM) for more information about the Flash +* architecture. +* +* \section group_flash_MISRA MISRA-C Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.4ACasting to different object pointer type.The cast of the uint32_t pointer to pipe message structure pointer +* is used to get transmitted data via the \ref group_ipc channel. +* We cast only one pointer, so there is no way to avoid this cast.
+* +* \section group_flash_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
3.20Flattened the organization of the driver source code into the single source directory and the single include directory.Driver library directory-structure simplification.
Added new API function \ref Cy_Flash_InitExtThe driver improvements based on the usability feedback
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
3.11Updated driver functionality to correctly use the SysClk measurement +* counters while partially blocking flash operationsAdded arbiter mechanism for correct usage of the SysClk measurement +* counters
3.10Updated Cy_Flash_SendCmd() code to support single core devices.Support new devices
3.0New function - Cy_Flash_ProgramRow();
+* Updated Cy_Flash_RowChecksum(): changed input parameter to take the +* row address (rowAddr) instead of the row number +* (rowNum);
+* Renamed macro for disabling RWW support in driver to +* CY_FLASH_RWW_DRV_SUPPORT_DISABLED.
+* Updated \ref group_flash_configuration documentation section with +* flash usage constraints.
Improvements made based on usability feedback to use a common +* interface
2.0Added non-blocking erase function - Cy_Flash_StartErase(). +* Removed the clear cache function call.The clear cache operation is removed from the blocking Write/Erase +* function because in this case it is performed by the hardware. +* Otherwise it is documented that it is the user's responsibility to +* clear the cache after executing the non-blocking Write/Erase flash +* operation.
Added new Cy_Flash_IsOperationComplete() function to check completeness. +* Obsoleted Cy_Flash_IsWriteComplete(), Cy_Flash_IsProgramComplete(), +* and Cy_Flash_IsEraseComplete() functions.
+* Added Cy_Flash_GetExternalStatus() function to get unparsed status where +* flash driver will be used in security applications with other modules +* as SecureImage.
+* Added Cy_Flash_Init() function to initialize all needed prerequisites +* for Erase/Write operations.
Updated driver design to improve user experience.
Updated driver implementation to remove MISRA rules deviations.Driver implementation quality improvement.
1.0Initial version
+* +* \defgroup group_flash_macros Macros +* \{ +* \defgroup group_flash_general_macros Flash general parameters +* Provides general information about flash +* +* \defgroup group_flash_config_macros Flash configuration +* Specifies the parameter values passed to SROM API +* \} +* \defgroup group_flash_functions Functions +* \defgroup group_flash_enumerated_types Enumerated Types +*/ + +#include "cy_device.h" +#include + +#include "cy_syslib.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +/*************************************** +* Macro definitions +***************************************/ +/** +* \addtogroup group_flash_macros +* \{ +*/ + +/** Driver major version */ +#define CY_FLASH_DRV_VERSION_MAJOR 3 + +/** Driver minor version */ +#define CY_FLASH_DRV_VERSION_MINOR 20 + +#define CY_FLASH_ID (CY_PDL_DRV_ID(0x14UL)) /**< FLASH PDL ID */ + +#define CY_FLASH_ID_INFO (uint32_t)( CY_FLASH_ID | CY_PDL_STATUS_INFO ) /**< Return prefix for FLASH driver function status codes */ +#define CY_FLASH_ID_WARNING (uint32_t)( CY_FLASH_ID | CY_PDL_STATUS_WARNING) /**< Return prefix for FLASH driver function warning return values */ +#define CY_FLASH_ID_ERROR (uint32_t)( CY_FLASH_ID | CY_PDL_STATUS_ERROR) /**< Return prefix for FLASH driver function error return values */ + +/** \} group_flash_macros */ + + +/** +* \addtogroup group_flash_general_macros +* \{ +*/ + +/** Flash row size */ +#define CY_FLASH_SIZEOF_ROW (CPUSS_FLASHC_PA_SIZE * 4u) +/** Long words flash row size */ +#define CY_FLASH_SIZEOF_ROW_LONG_UNITS (CY_FLASH_SIZEOF_ROW / sizeof(uint32_t)) + +/** \} group_flash_general_macros */ + + +/** +* \addtogroup group_flash_enumerated_types +* \{ +*/ + +/** This enum has the return values of the Flash driver */ +typedef enum cy_en_flashdrv_status +{ + CY_FLASH_DRV_SUCCESS = 0x00UL, /**< Success */ + CY_FLASH_DRV_INV_PROT = ( CY_FLASH_ID_ERROR + 0x0UL), /**< Invalid device protection state */ + CY_FLASH_DRV_INVALID_FM_PL = ( CY_FLASH_ID_ERROR + 0x1UL), /**< Invalid flash page latch address */ + CY_FLASH_DRV_INVALID_FLASH_ADDR = ( CY_FLASH_ID_ERROR + 0x2UL), /**< Invalid flash address */ + CY_FLASH_DRV_ROW_PROTECTED = ( CY_FLASH_ID_ERROR + 0x3UL), /**< Row is write protected */ + CY_FLASH_DRV_IPC_BUSY = ( CY_FLASH_ID_ERROR + 0x5UL), /**< IPC structure is already locked by another process */ + CY_FLASH_DRV_INVALID_INPUT_PARAMETERS = ( CY_FLASH_ID_ERROR + 0x6UL), /**< Input parameters passed to Flash API are not valid */ + CY_FLASH_DRV_PL_ROW_COMP_FA = ( CY_FLASH_ID_ERROR + 0x22UL), /**< Comparison between Page Latches and FM row failed */ + CY_FLASH_DRV_ERR_UNC = ( CY_FLASH_ID_ERROR + 0xFFUL), /**< Unknown error code. See \ref Cy_Flash_GetExternalStatus() */ + CY_FLASH_DRV_PROGRESS_NO_ERROR = ( CY_FLASH_ID_INFO + 0x0UL), /**< Command in progress; no error */ + CY_FLASH_DRV_OPERATION_STARTED = ( CY_FLASH_ID_INFO + 0x1UL), /**< Flash operation is successfully initiated */ + CY_FLASH_DRV_OPCODE_BUSY = ( CY_FLASH_ID_INFO + 0x2UL) /**< Flash is under operation */ +} cy_en_flashdrv_status_t; + + +#if !defined(CY_FLASH_RWW_DRV_SUPPORT_DISABLED) + /** Flash notification configuration structure */ + typedef struct + { + uint8_t clientID; /**< Client ID */ + uint8_t pktType; /**< Message Type */ + uint16_t intrRelMask; /**< Mask */ + } cy_stc_flash_notify_t; +#endif /* !defined(CY_FLASH_RWW_DRV_SUPPORT_DISABLED) */ + +/** \} group_flash_enumerated_types */ + +/*************************************** +* Function Prototypes +***************************************/ + +/** +* \addtogroup group_flash_functions +* \{ +*/ +void Cy_Flash_Init(void); +cy_en_flashdrv_status_t Cy_Flash_EraseRow(uint32_t rowAddr); +cy_en_flashdrv_status_t Cy_Flash_ProgramRow(uint32_t rowAddr, const uint32_t* data); +cy_en_flashdrv_status_t Cy_Flash_WriteRow(uint32_t rowAddr, const uint32_t* data); +cy_en_flashdrv_status_t Cy_Flash_StartWrite(uint32_t rowAddr, const uint32_t* data); +cy_en_flashdrv_status_t Cy_Flash_StartProgram(uint32_t rowAddr, const uint32_t* data); +cy_en_flashdrv_status_t Cy_Flash_StartErase(uint32_t rowAddr); +cy_en_flashdrv_status_t Cy_Flash_IsOperationComplete(void); +cy_en_flashdrv_status_t Cy_Flash_RowChecksum(uint32_t rowAddr, uint32_t* checksumPtr); +cy_en_flashdrv_status_t Cy_Flash_CalculateHash(const uint32_t* data, uint32_t numberOfBytes, uint32_t* hashPtr); +uint32_t Cy_Flash_GetExternalStatus(void); + +#if !defined(CY_FLASH_RWW_DRV_SUPPORT_DISABLED) + void Cy_Flash_InitExt(cy_stc_flash_notify_t *ipcWaitMessageAddr); +#endif /* !defined(CY_FLASH_RWW_DRV_SUPPORT_DISABLED) */ + +/** \} group_flash_functions */ + +/** \cond INTERNAL */ +#if (CY_CPU_CORTEX_M4) +void Cy_Flash_ResumeIrqHandler(void); +#endif + +/* Macros to backward compatibility */ +#define Cy_Flash_IsWriteComplete(...) Cy_Flash_IsOperationComplete() +#define Cy_Flash_IsProgramComplete(...) Cy_Flash_IsOperationComplete() +#define Cy_Flash_IsEraseComplete(...) Cy_Flash_IsOperationComplete() +#define CY_FLASH_NUMBER_ROWS (CY_FLASH_SIZE / CY_FLASH_SIZEOF_ROW) + +/** \endcond */ + +#if defined(__cplusplus) +} +#endif + + +#endif /* #if !defined(CY_FLASH_H) */ + +/** \} group_flash */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_gpio.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_gpio.h new file mode 100644 index 00000000000..ef1896a6825 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_gpio.h @@ -0,0 +1,1973 @@ +/***************************************************************************//** +* \file cy_gpio.h +* \version 1.20 +* +* Provides an API declaration of the GPIO driver +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_gpio +* \{ +* The GPIO driver provides an API to configure and access device Input/Output pins. +* +* The functions and other declarations used in this driver are in cy_gpio.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* IO pins include all general purpose types such as GPIO, SIO, HSIO, AUXIO, and +* their variants. +* +* Initialization can be performed either at the port level or by configuring the +* individual pins. For efficient use of code space, port +* configuration should be used in the field. Refer to the product device header files +* for the list of supported ports and pins. +* +* - Single pin configuration is performed by using \ref Cy_GPIO_Pin_FastInit +* (provide specific values) or \ref Cy_GPIO_Pin_Init (provide a filled +* cy_stc_gpio_pin_config_t structure). +* - An entire port can be configured using \ref Cy_GPIO_Port_Init. Provide a filled +* cy_stc_gpio_prt_config_t structure. The values in the structure are +* bitfields representing the desired value for each pin in the port. +* - Pin configuration and management is based on the port address and pin number. +* \ref Cy_GPIO_PortToAddr function can optionally be used to calculate the port +* address from the port number at run-time. +* +* Once the pin/port initialization is complete, each pin can be accessed by +* specifying the port (GPIO_PRT_Type) and the pin (0-7) in the provided API +* functions. +* +* \section group_gpio_configuration Configuration Considerations +* +* 1. Pin multiplexing is controlled through the High-Speed IO Matrix (HSIOM) selection. +* This allows the pin to connect to signal sources/sinks throughout the device, +* as defined by the pin HSIOM selection options (en_hsiom_sel_t). +* 2. All pins are initialized to High-Z drive mode with HSIOM connected to CPU (SW +* control digital pin only) at Power-On-Reset(POR). +* 3. Some API functions perform read-modify-write operations on shared port +* registers. These functions are not thread safe and care must be taken when +* called by the application. +* 4. Digital input buffer provides a high-impedance buffer for the external +* digital input. The input buffer is connected to the HSIOM for routing to +* the CPU port registers and selected peripheral. Enabling the input +* buffer provides possibility to read the pin state via the CPU. +* If pin is connected to an analog signal, the input buffer should be +* disabled to avoid crowbar currents. For more information refer to device +* TRM and the device datasheet. +* +* Multiple pins on a port can be updated using direct port register writes with an +* appropriate port mask. An example is shown below, highlighting the different ways of +* configuring Port 1 pins using: +* +* - Port output data register +* - Port output data set register +* - Port output data clear register +* +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c Cy_GPIO_Snippet +* +* \section group_gpio_more_information More Information +* +* Refer to the technical reference manual (TRM) and the device datasheet. +* +* \section group_gpio_MISRA MISRA-C Compliance +* The GPIO driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.4AA cast should not be performed between a pointer to object type and +* a different pointer to object type. This code is safe because the elements of both GPIO_PRT_V1_Type and GPIO_PRT_V2_Type +* types have identical alignment.
16.7AA pointer parameter in a function prototype should be declared as pointer +* to const if the pointer is not used to modify the addressed object.The objects pointed to by the base addresses of the GPIO port are not always modified. +* While a const qualifier can be used in select scenarios, it brings little benefit +* in adding this to the affected functions.
+* +* \section group_gpio_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.20Flattened the organization of the driver source code into the single source directory and the single include directory.Driver library directory-structure simplification.
Added the functions for configuring the AMux bus splitter switch cells: +* - \ref Cy_GPIO_SetAmuxSplit +* - \ref Cy_GPIO_GetAmuxSplit +* Added a new functionality related to AMux bus.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.10.1Updated description for the functions: \ref Cy_GPIO_GetInterruptStatus, +* \ref Cy_GPIO_GetInterruptMask, \ref Cy_GPIO_GetInterruptStatusMasked. +* +* Minor documentation edits. +* Documentation update and clarification
1.10Added input parameter validation to the API functions
1.0Initial version
+* +* \defgroup group_gpio_macros Macros +* \defgroup group_gpio_functions Functions +* \{ +* \defgroup group_gpio_functions_init Initialization Functions +* \defgroup group_gpio_functions_gpio GPIO Functions +* \defgroup group_gpio_functions_sio SIO Functions +* \defgroup group_gpio_functions_interrupt Port Interrupt Functions +* \} +* \defgroup group_gpio_data_structures Data Structures +* \defgroup group_gpio_enums Enumerated Types +*/ + +#if !defined(CY_GPIO_H) +#define CY_GPIO_H + +#include +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +/** \addtogroup group_gpio_macros +* \{ +*/ + +/** Driver major version */ +#define CY_GPIO_DRV_VERSION_MAJOR 1 + +/** Driver minor version */ +#define CY_GPIO_DRV_VERSION_MINOR 20 + +/** GPIO driver ID */ +#define CY_GPIO_ID CY_PDL_DRV_ID(0x16U) + +/** \} group_gpio_macros */ + + +/*************************************** +* Enumerations +***************************************/ +/** +* \addtogroup group_gpio_enums +* \{ +*/ + +/** GPIO Driver error codes */ +typedef enum +{ + CY_GPIO_SUCCESS = 0x00U, /**< Returned successful */ + CY_GPIO_BAD_PARAM = CY_GPIO_ID | CY_PDL_STATUS_ERROR | 0x01U, /**< Bad parameter was passed */ +} cy_en_gpio_status_t; + +/** AMux switch open/close config */ +typedef enum +{ + CY_GPIO_AMUX_OPENALL, /**< Open ground switch. Open right switch. Open left switch */ + CY_GPIO_AMUX_L, /**< Open ground switch. Open right switch. Close left switch */ + CY_GPIO_AMUX_R, /**< Open ground switch. Close right switch. Open left switch */ + CY_GPIO_AMUX_LR, /**< Open ground switch. Close right switch. Close left switch */ + CY_GPIO_AMUX_G, /**< Close ground switch. Open right switch. Open left switch */ + CY_GPIO_AMUX_GL, /**< Close ground switch. Open right switch. Close left switch */ + CY_GPIO_AMUX_GR, /**< Close ground switch. Close right switch. Open left switch */ + CY_GPIO_AMUX_GLR, /**< Close ground switch. Close right switch. Close left switch */ +}cy_en_gpio_amuxconnect_t; + +/** +* AMux Bus selection +*/ +typedef enum +{ + CY_GPIO_AMUXBUSA, /**< AMuxBus A */ + CY_GPIO_AMUXBUSB /**< AMuxBus B */ +}cy_en_gpio_amuxselect_t; + +/** \} group_gpio_enums */ + + +/*************************************** +* Configuration Structures +***************************************/ + +/** +* \addtogroup group_gpio_data_structures +* \{ +*/ + +/** This structure is used to initialize a port of GPIO pins */ +typedef struct +{ + uint32_t out; /**< Initial output data for the IO pins in the port */ + uint32_t intrMask; /**< Interrupt enable mask for the port interrupt */ + uint32_t intrCfg; /**< Port pin interrupt edge detection configuration */ + uint32_t cfg; /**< Port pin drive modes and input buffer enable configuration */ + uint32_t cfgIn; /**< Port pin input buffer configuration */ + uint32_t cfgOut; /**< Port pin output buffer configuration */ + uint32_t cfgSIO; /**< Port SIO pins configuration */ + uint32_t sel0Active; /**< HSIOM selection for port pins 0,1,2,3 */ + uint32_t sel1Active; /**< HSIOM selection for port pins 4,5,6,7 */ +} cy_stc_gpio_prt_config_t; + +/** This structure is used to initialize a single GPIO pin */ +typedef struct +{ + uint32_t outVal; /**< Pin output state */ + uint32_t driveMode; /**< Drive mode */ + en_hsiom_sel_t hsiom; /**< HSIOM selection */ + uint32_t intEdge; /**< Interrupt Edge type */ + uint32_t intMask; /**< Interrupt enable mask */ + uint32_t vtrip; /**< Input buffer voltage trip type */ + uint32_t slewRate; /**< Output buffer slew rate */ + uint32_t driveSel; /**< Drive strength */ + uint32_t vregEn; /**< SIO pair output buffer mode */ + uint32_t ibufMode; /**< SIO pair input buffer mode */ + uint32_t vtripSel; /**< SIO pair input buffer trip point */ + uint32_t vrefSel; /**< SIO pair reference voltage for input buffer trip point */ + uint32_t vohSel; /**< SIO pair regulated voltage output level */ +} cy_stc_gpio_pin_config_t; + +/** \} group_gpio_data_structures */ + +/*************************************** +* Constants +***************************************/ + +/** \cond INTERNAL */ + +/* General Constants */ +#define CY_GPIO_PRT_HALF (4UL) /**< Half-way point of a GPIO port */ +#define CY_GPIO_PRT_DEINIT (0UL) /**< De-init value for port registers */ + +/* GPIO Masks */ +#define CY_GPIO_HSIOM_MASK (0x1FUL) /**< HSIOM selection mask */ +#define CY_GPIO_OUT_MASK (0x01UL) /**< Single pin mask for OUT register */ +#define CY_GPIO_IN_MASK (0x01UL) /**< Single pin mask for IN register */ +#define CY_GPIO_CFG_DM_MASK (0x0FUL) /**< Single pin mask for drive mode in CFG register */ +#define CY_GPIO_CFG_IN_VTRIP_SEL_MASK (0x01UL) /**< Single pin mask for VTRIP selection in CFG IN register */ +#define CY_GPIO_CFG_OUT_SLOW_MASK (0x01UL) /**< Single pin mask for slew rate in CFG OUT register */ +#define CY_GPIO_CFG_OUT_DRIVE_SEL_MASK (0x03UL) /**< Single pin mask for drive strength in CFG OUT register */ +#define CY_GPIO_INTR_STATUS_MASK (0x01UL) /**< Single pin mask for interrupt status in INTR register */ +#define CY_GPIO_INTR_EN_MASK (0x01UL) /**< Single pin mask for interrupt status in INTR register */ +#define CY_GPIO_INTR_MASKED_MASK (0x01UL) /**< Single pin mask for masked interrupt status in INTR_MASKED register */ +#define CY_GPIO_INTR_SET_MASK (0x01UL) /**< Single pin mask for setting the interrupt in INTR_MASK register */ +#define CY_GPIO_INTR_EDGE_MASK (0x03UL) /**< Single pin mask for interrupt edge type in INTR_EDGE register */ +#define CY_GPIO_INTR_FLT_EDGE_MASK (0x07UL) /**< Single pin mask for setting filtered interrupt */ + +/* SIO Masks */ +#define CY_GPIO_VREG_EN_MASK (0x01UL) /**< Single SIO pin mask for voltage regulation enable */ +#define CY_GPIO_IBUF_MASK (0x01UL) /**< Single SIO pin mask for input buffer */ +#define CY_GPIO_IBUF_SHIFT (0x01UL) /**< Single SIO pin shift for input buffer */ +#define CY_GPIO_VTRIP_SEL_MASK (0x01UL) /**< Single SIO pin mask for the input buffer trip point */ +#define CY_GPIO_VTRIP_SEL_SHIFT (0x02UL) /**< Single SIO pin shift for the input buffer trip point */ +#define CY_GPIO_VREF_SEL_MASK (0x03UL) /**< Single SIO pin mask for voltage reference */ +#define CY_GPIO_VREF_SEL_SHIFT (0x03UL) /**< Single SIO pin shift for voltage reference */ +#define CY_GPIO_VOH_SEL_MASK (0x07UL) /**< Single SIO pin mask for VOH */ +#define CY_GPIO_VOH_SEL_SHIFT (0x05UL) /**< Single SIO pin shift for VOH */ + +/* Special mask for SIO pin pair setting */ +#define CY_GPIO_SIO_ODD_PIN_MASK (0x00FEUL) /**< SIO pin pair selection mask */ +#define CY_GPIO_SIO_PIN_MASK (0x00FFUL) /**< SIO pin pair mask */ + +/* Offsets */ +#define CY_GPIO_HSIOM_OFFSET (3UL) /**< Offset for HSIOM */ +#define CY_GPIO_DRIVE_MODE_OFFSET (2UL) /**< Offset for Drive mode */ +#define CY_GPIO_INBUF_OFFSET (3UL) /**< Offset for input buffer */ +#define CY_GPIO_CFG_OUT_DRIVE_OFFSET (16UL) /**< Offset for drive strength */ +#define CY_GPIO_INTR_CFG_OFFSET (1UL) /**< Offset for interrupt config */ +#define CY_GPIO_INTR_FILT_OFFSET (18UL) /**< Offset for filtered interrupt config */ +#define CY_GPIO_CFG_SIO_OFFSET (2UL) /**< Offset for SIO config */ + +/* Parameter validation constants */ +#define CY_GPIO_PINS_MAX (8UL) /**< Number of pins in the port */ +#define CY_GPIO_PRT_PINS_MASK (0x0000000FFUL) +#define CY_GPIO_PRT_INTR_CFG_EDGE_SEL_MASK (GPIO_PRT_INTR_CFG_EDGE0_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE1_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE2_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE3_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE4_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE5_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE6_SEL_Msk | \ + GPIO_PRT_INTR_CFG_EDGE7_SEL_Msk) +#define CY_GPIO_PRT_INTR_CFG_RANGE_MASK (CY_GPIO_PRT_INTR_CFG_EDGE_SEL_MASK | \ + GPIO_PRT_INTR_CFG_FLT_EDGE_SEL_Msk | \ + GPIO_PRT_INTR_CFG_FLT_SEL_Msk) +#define CY_GPIO_PRT_INT_MASK_MASK (0x0000001FFUL) +#define CY_GPIO_PRT_SEL_ACTIVE_MASK (0x1FFFFFFFUL) + +#define GPIO_MAX_SPLIT_CELL_SEGMENTS (9U) + +/* Parameter validation macros */ +#define CY_GPIO_IS_PIN_VALID(pinNum) (CY_GPIO_PINS_MAX > (pinNum)) +#define CY_GPIO_IS_FILTER_PIN_VALID(pinNum) (CY_GPIO_PINS_MAX >= (pinNum)) +#define CY_GPIO_IS_VALUE_VALID(outVal) (1UL >= (outVal)) +#define CY_GPIO_IS_DM_VALID(driveMode) (0U == ((driveMode) & (uint32_t)~CY_GPIO_CFG_DM_MASK)) + +#define CY_GPIO_IS_HSIOM_VALID(hsiom) (0U == ((hsiom) & (uint32_t)~CY_GPIO_HSIOM_MASK)) + +#define CY_GPIO_IS_INT_EDGE_VALID(intEdge) ((CY_GPIO_INTR_DISABLE == (intEdge)) || \ + (CY_GPIO_INTR_RISING == (intEdge)) || \ + (CY_GPIO_INTR_FALLING == (intEdge)) || \ + (CY_GPIO_INTR_BOTH == (intEdge))) + +#define CY_GPIO_IS_DRIVE_SEL_VALID(driveSel) ((CY_GPIO_DRIVE_FULL == (driveSel)) || \ + (CY_GPIO_DRIVE_1_2 == (driveSel)) || \ + (CY_GPIO_DRIVE_1_4 == (driveSel)) || \ + (CY_GPIO_DRIVE_1_8 == (driveSel))) + +#define CY_GPIO_IS_VREF_SEL_VALID(vrefSel) ((CY_SIO_VREF_PINREF == (vrefSel)) || \ + (CY_SIO_VREF_1_2V == (vrefSel)) || \ + (CY_SIO_VREF_AMUX_A == (vrefSel)) || \ + (CY_SIO_VREF_AMUX_B == (vrefSel))) + +#define CY_GPIO_IS_VOH_SEL_VALID(vrefSel) ((CY_SIO_VOH_1_00 == (vrefSel)) || \ + (CY_SIO_VOH_1_25 == (vrefSel)) || \ + (CY_SIO_VOH_1_49 == (vrefSel)) || \ + (CY_SIO_VOH_1_67 == (vrefSel)) || \ + (CY_SIO_VOH_2_08 == (vrefSel)) || \ + (CY_SIO_VOH_2_50 == (vrefSel)) || \ + (CY_SIO_VOH_2_78 == (vrefSel)) || \ + (CY_SIO_VOH_4_16 == (vrefSel))) + +#define CY_GPIO_IS_PIN_BIT_VALID(pinBit) (0U == ((pinBit) & (uint32_t)~CY_GPIO_PRT_PINS_MASK)) +#define CY_GPIO_IS_INTR_CFG_VALID(intrCfg) (0U == ((intrCfg) & (uint32_t)~CY_GPIO_PRT_INTR_CFG_RANGE_MASK)) +#define CY_GPIO_IS_INTR_MASK_VALID(intrMask) (0U == ((intrMask) & (uint32_t)~CY_GPIO_PRT_INT_MASK_MASK)) +#define CY_GPIO_IS_SEL_ACT_VALID(selActive) (0U == ((selActive) & (uint32_t)~CY_GPIO_PRT_SEL_ACTIVE_MASK)) + +#define CY_GPIO_IS_AMUX_SPLIT_VALID(switchCtrl) (((uint32_t) (switchCtrl)) < GPIO_MAX_SPLIT_CELL_SEGMENTS) + +#define CY_GPIO_IS_AMUX_CONNECT_VALID(amuxConnect) ((CY_GPIO_AMUX_OPENALL == (amuxConnect)) || \ + (CY_GPIO_AMUX_L == (amuxConnect)) || \ + (CY_GPIO_AMUX_R == (amuxConnect)) || \ + (CY_GPIO_AMUX_LR == (amuxConnect)) || \ + (CY_GPIO_AMUX_G == (amuxConnect)) || \ + (CY_GPIO_AMUX_GL == (amuxConnect)) || \ + (CY_GPIO_AMUX_GR == (amuxConnect)) || \ + (CY_GPIO_AMUX_GLR == (amuxConnect))) + +#define CY_GPIO_IS_AMUX_SELECT_VALID(amuxBus) ((CY_GPIO_AMUXBUSA == (amuxBus)) || \ + (CY_GPIO_AMUXBUSB == (amuxBus))) +/** \endcond */ + + +/*************************************** +* Function Constants +***************************************/ + +/** +* \addtogroup group_gpio_macros +* \{ +*/ + +/** +* \defgroup group_gpio_driveModes Pin drive mode +* \{ +* Constants to be used for setting the drive mode of the pin. +*/ +#define CY_GPIO_DM_ANALOG (0x00UL) /**< Analog High-Z. Input buffer off */ +#define CY_GPIO_DM_PULLUP_IN_OFF (0x02UL) /**< Resistive Pull-Up. Input buffer off */ +#define CY_GPIO_DM_PULLDOWN_IN_OFF (0x03UL) /**< Resistive Pull-Down. Input buffer off */ +#define CY_GPIO_DM_OD_DRIVESLOW_IN_OFF (0x04UL) /**< Open Drain, Drives Low. Input buffer off */ +#define CY_GPIO_DM_OD_DRIVESHIGH_IN_OFF (0x05UL) /**< Open Drain, Drives High. Input buffer off */ +#define CY_GPIO_DM_STRONG_IN_OFF (0x06UL) /**< Strong Drive. Input buffer off */ +#define CY_GPIO_DM_PULLUP_DOWN_IN_OFF (0x07UL) /**< Resistive Pull-Up/Down. Input buffer off */ +#define CY_GPIO_DM_HIGHZ (0x08UL) /**< Digital High-Z. Input buffer on */ +#define CY_GPIO_DM_PULLUP (0x0AUL) /**< Resistive Pull-Up. Input buffer on */ +#define CY_GPIO_DM_PULLDOWN (0x0BUL) /**< Resistive Pull-Down. Input buffer on */ +#define CY_GPIO_DM_OD_DRIVESLOW (0x0CUL) /**< Open Drain, Drives Low. Input buffer on */ +#define CY_GPIO_DM_OD_DRIVESHIGH (0x0DUL) /**< Open Drain, Drives High. Input buffer on */ +#define CY_GPIO_DM_STRONG (0x0EUL) /**< Strong Drive. Input buffer on */ +#define CY_GPIO_DM_PULLUP_DOWN (0x0FUL) /**< Resistive Pull-Up/Down. Input buffer on */ +/** \} */ + +/** +* \defgroup group_gpio_vtrip Voltage trip mode +* \{ +* Constants to be used for setting the voltage trip type on the pin. +*/ +#define CY_GPIO_VTRIP_CMOS (0x00UL) /**< Input buffer compatible with CMOS and I2C interfaces */ +#define CY_GPIO_VTRIP_TTL (0x01UL) /**< Input buffer compatible with TTL and MediaLB interfaces */ +/** \} */ + +/** +* \defgroup group_gpio_slewRate Slew Rate Mode +* \{ +* Constants to be used for setting the slew rate of the pin. +*/ +#define CY_GPIO_SLEW_FAST (0x00UL) /**< Fast slew rate */ +#define CY_GPIO_SLEW_SLOW (0x01UL) /**< Slow slew rate */ +/** \} */ + +/** +* \defgroup group_gpio_driveStrength Pin drive strength +* \{ +* Constants to be used for setting the drive strength of the pin. +*/ +#define CY_GPIO_DRIVE_FULL (0x00UL) /**< Full drive strength: Max drive current */ +#define CY_GPIO_DRIVE_1_2 (0x01UL) /**< 1/2 drive strength: 1/2 drive current */ +#define CY_GPIO_DRIVE_1_4 (0x02UL) /**< 1/4 drive strength: 1/4 drive current */ +#define CY_GPIO_DRIVE_1_8 (0x03UL) /**< 1/8 drive strength: 1/8 drive current */ +/** \} */ + +/** +* \defgroup group_gpio_interruptTrigger Interrupt trigger type +* \{ +* Constants to be used for setting the interrupt trigger type on the pin. +*/ +#define CY_GPIO_INTR_DISABLE (0x00UL) /**< Disable the pin interrupt generation */ +#define CY_GPIO_INTR_RISING (0x01UL) /**< Rising-Edge interrupt */ +#define CY_GPIO_INTR_FALLING (0x02UL) /**< Falling-Edge interrupt */ +#define CY_GPIO_INTR_BOTH (0x03UL) /**< Both-Edge interrupt */ +/** \} */ + +/** +* \defgroup group_gpio_sioVreg SIO output buffer mode +* \{ +* Constants to be used for setting the SIO output buffer mode on the pin. +*/ +#define CY_SIO_VREG_UNREGULATED (0x00UL) /**< Unregulated output buffer */ +#define CY_SIO_VREG_REGULATED (0x01UL) /**< Regulated output buffer */ +/** \} */ + +/** +* \defgroup group_gpio_sioIbuf SIO input buffer mode +* \{ +* Constants to be used for setting the SIO input buffer mode on the pin. +*/ +#define CY_SIO_IBUF_SINGLEENDED (0x00UL) /**< Single ended input buffer */ +#define CY_SIO_IBUF_DIFFERENTIAL (0x01UL) /**< Differential input buffer */ +/** \} */ + +/** +* \defgroup group_gpio_sioVtrip SIO input buffer trip-point +* \{ +* Constants to be used for setting the SIO input buffer trip-point of the pin. +*/ +#define CY_SIO_VTRIP_CMOS (0x00UL) /**< CMOS input buffer (single-ended) */ +#define CY_SIO_VTRIP_TTL (0x01UL) /**< TTL input buffer (single-ended) */ +#define CY_SIO_VTRIP_0_5VDDIO_0_5VOH (0x00UL) /**< 0.5xVddio or 0.5xVoh (differential) */ +#define CY_SIO_VTRIP_0_4VDDIO_1_0VREF (0x01UL) /**< 0.4xVddio or 0.4xVoh (differential) */ +/** \} */ + +/** +* \defgroup group_gpio_sioVref SIO reference voltage for input buffer trip-point +* \{ +* Constants to be used for setting the reference voltage of SIO input buffer trip-point. +*/ +#define CY_SIO_VREF_PINREF (0x00UL) /**< Vref from analog pin */ +#define CY_SIO_VREF_1_2V (0x01UL) /**< Vref from internal 1.2V reference */ +#define CY_SIO_VREF_AMUX_A (0x02UL) /**< Vref from AMUXBUS_A */ +#define CY_SIO_VREF_AMUX_B (0x03UL) /**< Vref from AMUXBUS_B */ +/** \} */ + +/** +* \defgroup group_gpio_sioVoh Regulated output voltage level (Voh) and input buffer trip-point of an SIO pair +* \{ +* Constants to be used for setting the Voh and input buffer trip-point of an SIO pair +*/ +#define CY_SIO_VOH_1_00 (0x00UL) /**< Voh = 1 x Reference */ +#define CY_SIO_VOH_1_25 (0x01UL) /**< Voh = 1.25 x Reference */ +#define CY_SIO_VOH_1_49 (0x02UL) /**< Voh = 1.49 x Reference */ +#define CY_SIO_VOH_1_67 (0x03UL) /**< Voh = 1.67 x Reference */ +#define CY_SIO_VOH_2_08 (0x04UL) /**< Voh = 2.08 x Reference */ +#define CY_SIO_VOH_2_50 (0x05UL) /**< Voh = 2.50 x Reference */ +#define CY_SIO_VOH_2_78 (0x06UL) /**< Voh = 2.78 x Reference */ +#define CY_SIO_VOH_4_16 (0x07UL) /**< Voh = 4.16 x Reference */ +/** \} */ + +/** \} group_gpio_macros */ + +/*************************************** +* Function Prototypes +***************************************/ + +/** +* \addtogroup group_gpio_functions +* \{ +*/ + +/** +* \addtogroup group_gpio_functions_init +* \{ +*/ + +cy_en_gpio_status_t Cy_GPIO_Pin_Init(GPIO_PRT_Type* base, uint32_t pinNum, const cy_stc_gpio_pin_config_t *config); +cy_en_gpio_status_t Cy_GPIO_Port_Init(GPIO_PRT_Type* base, const cy_stc_gpio_prt_config_t *config); +void Cy_GPIO_Pin_FastInit(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t driveMode, uint32_t outVal, en_hsiom_sel_t hsiom); +void Cy_GPIO_Port_Deinit(GPIO_PRT_Type* base); +__STATIC_INLINE void Cy_GPIO_SetHSIOM(GPIO_PRT_Type* base, uint32_t pinNum, en_hsiom_sel_t value); +__STATIC_INLINE en_hsiom_sel_t Cy_GPIO_GetHSIOM(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE GPIO_PRT_Type* Cy_GPIO_PortToAddr(uint32_t portNum); + +/** \} group_gpio_functions_init */ + +/** +* \addtogroup group_gpio_functions_gpio +* \{ +*/ + +void Cy_GPIO_SetAmuxSplit(cy_en_amux_split_t switchCtrl, cy_en_gpio_amuxconnect_t amuxConnect, cy_en_gpio_amuxselect_t amuxBus); +cy_en_gpio_amuxconnect_t Cy_GPIO_GetAmuxSplit(cy_en_amux_split_t switchCtrl, cy_en_gpio_amuxselect_t amuxBus); + +__STATIC_INLINE uint32_t Cy_GPIO_Read(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_Write(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_ReadOut(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_Set(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_Clr(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_Inv(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetDrivemode(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetDrivemode(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetVtrip(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetVtrip(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetSlewRate(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetSlewRate(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetDriveSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetDriveSel(GPIO_PRT_Type* base, uint32_t pinNum); + +/** \} group_gpio_functions_gpio */ + +/** +* \addtogroup group_gpio_functions_sio +* \{ +*/ + +__STATIC_INLINE void Cy_GPIO_SetVregEn(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetVregEn(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetIbufMode(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetIbufMode(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetVtripSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetVtripSel(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetVrefSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetVrefSel(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetVohSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetVohSel(GPIO_PRT_Type* base, uint32_t pinNum); + +/** \} group_gpio_functions_sio */ + +/** +* \addtogroup group_gpio_functions_interrupt +* \{ +*/ + +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatus(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_ClearInterrupt(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetInterruptMask(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptMask(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatusMasked(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetSwInterrupt(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetInterruptEdge(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptEdge(GPIO_PRT_Type* base, uint32_t pinNum); +__STATIC_INLINE void Cy_GPIO_SetFilter(GPIO_PRT_Type* base, uint32_t value); +__STATIC_INLINE uint32_t Cy_GPIO_GetFilter(GPIO_PRT_Type* base); + +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause0(void); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause1(void); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause2(void); +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause3(void); + +/** \} group_gpio_functions_interrupt */ + + +/** +* \addtogroup group_gpio_functions_init +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_GPIO_SetHSIOM +****************************************************************************//** +* +* Configures the HSIOM connection to the pin. +* +* Connects the specified High-Speed Input Output Multiplexer (HSIOM) selection +* to the pin. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* HSIOM input selection +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetHSIOM +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetHSIOM(GPIO_PRT_Type* base, uint32_t pinNum, en_hsiom_sel_t value) +{ + uint32_t portNum; + uint32_t tempReg; + HSIOM_PRT_V1_Type* portAddrHSIOM; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_HSIOM_VALID(value)); + + portNum = ((uint32_t)(base) - CY_GPIO_BASE) / GPIO_PRT_SECTION_SIZE; + portAddrHSIOM = (HSIOM_PRT_V1_Type*)(CY_HSIOM_BASE + (HSIOM_PRT_SECTION_SIZE * portNum)); + + if(pinNum < CY_GPIO_PRT_HALF) + { + tempReg = HSIOM_PRT_PORT_SEL0(portAddrHSIOM) & ~(CY_GPIO_HSIOM_MASK << (pinNum << CY_GPIO_HSIOM_OFFSET)); + HSIOM_PRT_PORT_SEL0(portAddrHSIOM) = tempReg | ((value & CY_GPIO_HSIOM_MASK) << (pinNum << CY_GPIO_HSIOM_OFFSET)); + } + else + { + pinNum -= CY_GPIO_PRT_HALF; + tempReg = HSIOM_PRT_PORT_SEL1(portAddrHSIOM) & ~(CY_GPIO_HSIOM_MASK << (pinNum << CY_GPIO_HSIOM_OFFSET)); + HSIOM_PRT_PORT_SEL1(portAddrHSIOM) = tempReg | ((value & CY_GPIO_HSIOM_MASK) << (pinNum << CY_GPIO_HSIOM_OFFSET)); + } +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetHSIOM +****************************************************************************//** +* +* Returns the current HSIOM multiplexer connection to the pin. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* HSIOM input selection +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetHSIOM +* +*******************************************************************************/ +__STATIC_INLINE en_hsiom_sel_t Cy_GPIO_GetHSIOM(GPIO_PRT_Type* base, uint32_t pinNum) +{ + uint32_t returnValue; + uint32_t portNum; + HSIOM_PRT_V1_Type* portAddrHSIOM; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + portNum = ((uint32_t)(base) - CY_GPIO_BASE) / GPIO_PRT_SECTION_SIZE; + portAddrHSIOM = (HSIOM_PRT_V1_Type*)(CY_HSIOM_BASE + (HSIOM_PRT_SECTION_SIZE * portNum)); + + if(pinNum < CY_GPIO_PRT_HALF) + { + returnValue = (HSIOM_PRT_PORT_SEL0(portAddrHSIOM) >> (pinNum << CY_GPIO_HSIOM_OFFSET)) & CY_GPIO_HSIOM_MASK; + } + else + { + pinNum -= CY_GPIO_PRT_HALF; + returnValue = (HSIOM_PRT_PORT_SEL1(portAddrHSIOM) >> (pinNum << CY_GPIO_HSIOM_OFFSET)) & CY_GPIO_HSIOM_MASK; + } + + return (en_hsiom_sel_t)returnValue; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_PortToAddr +****************************************************************************//** +* +* Retrieves the port address based on the given port number. +* +* This is a helper function to calculate the port base address when given a port +* number. It is to be used when pin access needs to be calculated at runtime. +* +* \param portNum +* Port number +* +* \return +* Base address of the port register structure +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_PortToAddr +* +*******************************************************************************/ +__STATIC_INLINE GPIO_PRT_Type* Cy_GPIO_PortToAddr(uint32_t portNum) +{ + GPIO_PRT_Type* portBase; + + if(portNum < (uint32_t)IOSS_GPIO_GPIO_PORT_NR) + { + portBase = (GPIO_PRT_Type *)(CY_GPIO_BASE + (GPIO_PRT_SECTION_SIZE * portNum)); + } + else + { + /* Error: Return default base address */ + portBase = (GPIO_PRT_Type *)(CY_GPIO_BASE); + } + + return (portBase); +} + +/** \} group_gpio_functions_init */ + +/** +* \addtogroup group_gpio_functions_gpio +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_GPIO_Read +****************************************************************************//** +* +* Reads the current logic level on the input buffer of the pin. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \return +* Logic level present on the pin +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_Read +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_Read(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + return (GPIO_PRT_IN(base) >> (pinNum)) & CY_GPIO_IN_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_Write +****************************************************************************//** +* +* Write a logic 0 or logic 1 state to the output driver. +* +* This function should be used only for software driven pins. It does not have +* any effect on peripheral driven pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* Logic level to drive out on the pin +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_Write +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_Write(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + /* Thread-safe: Directly access the pin registers instead of base->OUT */ + if(0UL == value) + { + GPIO_PRT_OUT_CLR(base) = CY_GPIO_OUT_MASK << pinNum; + } + else + { + GPIO_PRT_OUT_SET(base) = CY_GPIO_OUT_MASK << pinNum; + } +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_ReadOut +****************************************************************************//** +* +* Reads the current logic level on the pin output driver. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* Logic level on the pin output driver +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_ReadOut +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_ReadOut(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_OUT(base) >> pinNum) & CY_GPIO_OUT_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_Set +****************************************************************************//** +* +* Set a pin output to logic state high. +* +* This function should be used only for software driven pins. It does not have +* any effect on peripheral driven pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_Set +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_Set(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + GPIO_PRT_OUT_SET(base) = CY_GPIO_OUT_MASK << pinNum; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_Clr +****************************************************************************//** +* +* Set a pin output to logic state Low. +* +* This function should be used only for software driven pins. It does not have +* any effect on peripheral driven pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_Clr +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_Clr(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + GPIO_PRT_OUT_CLR(base) = CY_GPIO_OUT_MASK << pinNum; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_Inv +****************************************************************************//** +* +* Set a pin output logic state to the inverse of the current output +* logic state. +* +* This function should be used only for software driven pins. It does not have +* any effect on peripheral driven pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_Inv +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_Inv(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + GPIO_PRT_OUT_INV(base) = CY_GPIO_OUT_MASK << pinNum; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetDrivemode +****************************************************************************//** +* +* Configures the pin output buffer drive mode and input buffer enable. +* +* The output buffer drive mode and input buffer enable are combined into a single +* parameter. The drive mode controls the behavior of the pin in general. +* Enabling the input buffer allows the digital pin state to be read but also +* contributes to extra current consumption. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* Pin drive mode. Options are detailed in \ref group_gpio_driveModes macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetDrivemode +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetDrivemode(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_DM_VALID(value)); + + pinLoc = pinNum << CY_GPIO_DRIVE_MODE_OFFSET; + tempReg = (GPIO_PRT_CFG(base) & ~(CY_GPIO_CFG_DM_MASK << pinLoc)); + GPIO_PRT_CFG(base) = tempReg | ((value & CY_GPIO_CFG_DM_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetDrivemode +****************************************************************************//** +* +* Returns the pin output buffer drive mode and input buffer enable state. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* Pin drive mode. Options are detailed in \ref group_gpio_driveModes macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetDrivemode +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetDrivemode(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG(base) >> (pinNum << CY_GPIO_DRIVE_MODE_OFFSET)) & CY_GPIO_CFG_DM_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetVtrip +****************************************************************************//** +* +* Configures the GPIO pin input buffer voltage threshold mode. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* Pin voltage threshold mode. Options are detailed in \ref group_gpio_vtrip macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVtrip +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetVtrip(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + tempReg = GPIO_PRT_CFG_IN(base) & ~(CY_GPIO_CFG_IN_VTRIP_SEL_MASK << pinNum); + GPIO_PRT_CFG_IN(base) = tempReg | ((value & CY_GPIO_CFG_IN_VTRIP_SEL_MASK) << pinNum); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetVtrip +****************************************************************************//** +* +* Returns the pin input buffer voltage threshold mode. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* Pin voltage threshold mode. Options are detailed in \ref group_gpio_vtrip macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVtrip +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetVtrip(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_IN(base) >> pinNum) & CY_GPIO_CFG_IN_VTRIP_SEL_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetSlewRate +****************************************************************************//** +* +* Configures the pin output buffer slew rate. +* +* \note +* This function has no effect for the GPIO ports, where the slew rate +* configuration is not available. Refer to device datasheet for details. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* Pin slew rate. Options are detailed in \ref group_gpio_slewRate macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetSlewRate +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetSlewRate(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + tempReg = GPIO_PRT_CFG_OUT(base) & ~(CY_GPIO_CFG_OUT_SLOW_MASK << pinNum); + GPIO_PRT_CFG_OUT(base) = tempReg | ((value & CY_GPIO_CFG_OUT_SLOW_MASK) << pinNum); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetSlewRate +****************************************************************************//** +* +* Returns the pin output buffer slew rate. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* Pin slew rate. Options are detailed in \ref group_gpio_slewRate macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetSlewRate +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetSlewRate(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_OUT(base) >> pinNum) & CY_GPIO_CFG_OUT_SLOW_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetDriveSel +****************************************************************************//** +* +* Configures the pin output buffer drive strength. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* Pin drive strength. Options are detailed in \ref group_gpio_driveStrength macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetDriveSel +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetDriveSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_DRIVE_SEL_VALID(value)); + + pinLoc = (uint32_t)(pinNum << 1u) + CY_GPIO_CFG_OUT_DRIVE_OFFSET; + tempReg = GPIO_PRT_CFG_OUT(base) & ~(CY_GPIO_CFG_OUT_DRIVE_SEL_MASK << pinLoc); + GPIO_PRT_CFG_OUT(base) = tempReg | ((value & CY_GPIO_CFG_OUT_DRIVE_SEL_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetDriveSel +****************************************************************************//** +* +* Returns the pin output buffer drive strength. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* Pin drive strength. Options are detailed in \ref group_gpio_driveStrength macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetDriveSel +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetDriveSel(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return ((GPIO_PRT_CFG_OUT(base) >> ((uint32_t)(pinNum << 1u) + CY_GPIO_CFG_OUT_DRIVE_OFFSET)) + & CY_GPIO_CFG_OUT_DRIVE_SEL_MASK); +} + +/** \} group_gpio_functions_gpio */ + +/** +* \addtogroup group_gpio_functions_sio +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_GPIO_SetVregEn +****************************************************************************//** +* +* Configures the SIO pin pair output buffer regulation mode. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* SIO pair output buffer regulator mode. Options are detailed in \ref group_gpio_sioVreg macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVregEn +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetVregEn(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + pinLoc = (pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET; + tempReg = GPIO_PRT_CFG_SIO(base) & ~(CY_GPIO_VREG_EN_MASK << pinLoc); + GPIO_PRT_CFG_SIO(base) = tempReg | ((value & CY_GPIO_VREG_EN_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetVregEn +****************************************************************************//** +* +* Returns the SIO pin pair output buffer regulation mode. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* SIO pair output buffer regulator mode. Options are detailed in \ref group_gpio_sioVreg macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVregEn +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetVregEn(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_SIO(base) >> ((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET)) & CY_GPIO_VREG_EN_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetIbufMode +****************************************************************************//** +* +* Configures the SIO pin pair input buffer mode. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* SIO pair input buffer mode. Options are detailed in \ref group_gpio_sioIbuf macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetIbufMode +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetIbufMode(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + pinLoc = ((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_IBUF_SHIFT; + tempReg = (GPIO_PRT_CFG_SIO(base) & ~(CY_GPIO_IBUF_MASK << pinLoc)); + GPIO_PRT_CFG_SIO(base) = tempReg | ((value & CY_GPIO_IBUF_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetIbufMode +****************************************************************************//** +* +* Returns the SIO pin pair input buffer mode. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* SIO pair input buffer mode. Options are detailed in \ref group_gpio_sioIbuf macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetIbufMode +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetIbufMode(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_SIO(base) >> (((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_IBUF_SHIFT)) & CY_GPIO_IBUF_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetVtripSel +****************************************************************************//** +* +* Configures the SIO pin pair input buffer trip point. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* SIO pair input buffer trip point. Options are detailed in \ref group_gpio_sioVtrip macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVtripSel +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetVtripSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + pinLoc = ((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VTRIP_SEL_SHIFT; + tempReg = (GPIO_PRT_CFG_SIO(base) & ~(CY_GPIO_VTRIP_SEL_MASK << pinLoc)); + GPIO_PRT_CFG_SIO(base) = tempReg | ((value & CY_GPIO_VTRIP_SEL_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetVtripSel +****************************************************************************//** +* +* Returns the SIO pin pair input buffer trip point. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* SIO pair input buffer trip point. Options are detailed in \ref group_gpio_sioVtrip macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVtripSel +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetVtripSel(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_SIO(base) >> (((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VTRIP_SEL_SHIFT)) & CY_GPIO_VTRIP_SEL_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetVrefSel +****************************************************************************//** +* +* Configures the SIO reference voltage for the input buffer trip point. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* SIO pair reference voltage. Options are detailed in \ref group_gpio_sioVref macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVrefSel +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetVrefSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VREF_SEL_VALID(value)); + + pinLoc = ((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VREF_SEL_SHIFT; + tempReg = (GPIO_PRT_CFG_SIO(base) & ~(CY_GPIO_VREF_SEL_MASK << pinLoc)); + GPIO_PRT_CFG_SIO(base) = tempReg | ((value & CY_GPIO_VREF_SEL_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetVrefSel +****************************************************************************//** +* +* Returns the SIO reference voltage for the input buffer trip point. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* SIO pair reference voltage. Options are detailed in \ref group_gpio_sioVref macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVrefSel +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetVrefSel(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_SIO(base) >> (((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VREF_SEL_SHIFT)) & CY_GPIO_VREF_SEL_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetVohSel +****************************************************************************//** +* +* Configures the regulated output reference multiplier for the SIO pin pair. +* +* The regulated output reference controls both the output level of digital output +* pin and the input trip point of digital input pin in the SIO pair. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \param value +* SIO pair reference voltage. Options are detailed in \ref group_gpio_sioVoh macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVohSel +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetVohSel(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VOH_SEL_VALID(value)); + + pinLoc = ((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VOH_SEL_SHIFT; + tempReg = (GPIO_PRT_CFG_SIO(base) & ~(CY_GPIO_VOH_SEL_MASK << pinLoc)); + GPIO_PRT_CFG_SIO(base) = tempReg | ((value & CY_GPIO_VOH_SEL_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetVohSel +****************************************************************************//** +* +* Returns the regulated output reference multiplier for the SIO pin pair. +* +* Note that this function has no effect on non-SIO pins. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* +* \return +* SIO pair reference voltage. Options are detailed in \ref group_gpio_sioVoh macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetVohSel +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetVohSel(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(pinNum)); + + return (GPIO_PRT_CFG_SIO(base) >> (((pinNum & CY_GPIO_SIO_ODD_PIN_MASK) << CY_GPIO_CFG_SIO_OFFSET) + CY_GPIO_VOH_SEL_SHIFT)) & CY_GPIO_VOH_SEL_MASK; +} + +/** \} group_gpio_functions_sio */ + +/** +* \addtogroup group_gpio_functions_interrupt +* \{ +*/ + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptStatus +****************************************************************************//** +* +* Returns the current unmasked interrupt state of the pin. +* +* The core processor's NVIC is triggered by the masked interrupt bits. This +* function allows reading the unmasked interrupt state. Whether the bit +* positions actually trigger the interrupt are defined by the interrupt mask bits. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* Bit position 8 is the routed pin through the port glitch filter. +* +* \return +* 0 = Pin interrupt condition not detected +* 1 = Pin interrupt condition detected +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatus(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + return (GPIO_PRT_INTR(base) >> pinNum) & CY_GPIO_INTR_STATUS_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_ClearInterrupt +****************************************************************************//** +* +* Clears the triggered pin interrupt. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register +* Bit position 8 is the routed pin through the port glitch filter. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_ClearInterrupt(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + /* Any INTR MMIO registers AHB clearing must be preceded with an AHB read access */ + (void)GPIO_PRT_INTR(base); + + GPIO_PRT_INTR(base) = CY_GPIO_INTR_STATUS_MASK << pinNum; + + /* This read ensures that the initial write has been flushed out to the hardware */ + (void)GPIO_PRT_INTR(base); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetInterruptMask +****************************************************************************//** +* +* Configures the pin interrupt to be forwarded to the CPU NVIC. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \param value +* 0 = Pin interrupt not forwarded to CPU interrupt controller +* 1 = Pin interrupt masked and forwarded to CPU interrupt controller +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetInterruptMask(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_VALUE_VALID(value)); + + tempReg= GPIO_PRT_INTR_MASK(base) & ~(CY_GPIO_INTR_EN_MASK << pinNum); + GPIO_PRT_INTR_MASK(base) = tempReg | ((value & CY_GPIO_INTR_EN_MASK) << pinNum); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptMask +****************************************************************************//** +* +* Returns the state of the pin interrupt mask. +* +* This mask is used to determine whether the pin is configured to be forwarded +* to the CPU NVIC. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \return +* 0 = Pin interrupt not forwarded to CPU interrupt controller +* 1 = Pin interrupt masked and forwarded to CPU interrupt controller +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptMask(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + return (GPIO_PRT_INTR_MASK(base) >> pinNum) & CY_GPIO_INTR_EN_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptStatusMasked +****************************************************************************//** +* +* Return the pin's current interrupt state after being masked. +* +* The core processor's NVIC is triggered by the masked interrupt bits. This +* function allows reading this masked interrupt state. Note that the bits that +* are not masked will not be forwarded to the NVIC. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \return +* 0 = Pin interrupt not detected or not forwarded to CPU interrupt controller +* 1 = Pin interrupt detected and forwarded to CPU interrupt controller +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_GetInterruptStatusMasked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatusMasked(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + return (GPIO_PRT_INTR_MASKED(base) >> pinNum) & CY_GPIO_INTR_MASKED_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetSwInterrupt +****************************************************************************//** +* +* Force a pin interrupt to trigger. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetSwInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetSwInterrupt(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + GPIO_PRT_INTR_SET(base) = CY_GPIO_INTR_SET_MASK << pinNum; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetInterruptEdge +****************************************************************************//** +* +* Configures the type of edge that will trigger a pin interrupt. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \param value +* Pin interrupt mode. Options are detailed in \ref group_gpio_interruptTrigger macros +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetInterruptEdge +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetInterruptEdge(GPIO_PRT_Type* base, uint32_t pinNum, uint32_t value) +{ + uint32_t tempReg; + uint32_t pinLoc; + + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + CY_ASSERT_L2(CY_GPIO_IS_INT_EDGE_VALID(value)); + + pinLoc = pinNum << CY_GPIO_INTR_CFG_OFFSET; + tempReg = GPIO_PRT_INTR_CFG(base) & ~(CY_GPIO_INTR_EDGE_MASK << pinLoc); + GPIO_PRT_INTR_CFG(base) = tempReg | ((value & CY_GPIO_INTR_EDGE_MASK) << pinLoc); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptEdge +****************************************************************************//** +* +* Returns the current pin interrupt edge type. +* +* \param base +* Pointer to the pin's port register base address +* +* \param pinNum +* Position of the pin bit-field within the port register. +* Bit position 8 is the routed pin through the port glitch filter. +* +* \return +* Pin interrupt mode. Options are detailed in \ref group_gpio_interruptTrigger macros +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetInterruptEdge +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptEdge(GPIO_PRT_Type* base, uint32_t pinNum) +{ + CY_ASSERT_L2(CY_GPIO_IS_FILTER_PIN_VALID(pinNum)); + + return (GPIO_PRT_INTR_CFG(base) >> (pinNum << CY_GPIO_INTR_CFG_OFFSET)) & CY_GPIO_INTR_EDGE_MASK; +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_SetFilter +****************************************************************************//** +* +* Configures which pin on the port connects to the port-specific glitch filter. +* +* Each port contains a single 50ns glitch filter. Any of the pins on the port +* can be routed to this filter such that the input signal is filtered before +* reaching the edge-detect interrupt circuitry. The state of the filtered pin +* can also be read by calling the Cy_GPIO_Read() function. +* +* \param base +* Pointer to the pin's port register base address +* +* \param value +* The number of the port pin to route to the port filter (0...7) +* +* \note +* This function modifies a port register in a read-modify-write operation. It is +* not thread safe as the resource is shared among multiple pins on a port. +* +* \note +* The filtered pin does not have an associated HSIOM connection. Therefore +* it cannot be routed directly to other peripherals in hardware. +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetFilter +* +*******************************************************************************/ +__STATIC_INLINE void Cy_GPIO_SetFilter(GPIO_PRT_Type* base, uint32_t value) +{ + uint32_t tempReg; + + CY_ASSERT_L2(CY_GPIO_IS_PIN_VALID(value)); + + tempReg = GPIO_PRT_INTR_CFG(base) & ~(CY_GPIO_INTR_FLT_EDGE_MASK << CY_GPIO_INTR_FILT_OFFSET); + GPIO_PRT_INTR_CFG(base) = tempReg | ((value & CY_GPIO_INTR_FLT_EDGE_MASK) << CY_GPIO_INTR_FILT_OFFSET); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetFilter +****************************************************************************//** +* +* Returns which pin is currently configured to connect to the port-specific +* glitch filter. +* +* Each port contains a single 50ns glitch filter. Any of the pins on the port +* can be routed to this filter such that the input signal is filtered before +* reaching the edge-detect interrupt circuitry. The state of the filtered pin +* can also be read by calling the Cy_GPIO_Read() function. +* +* \param base +* Pointer to the pin's port register base address +* +* \return +* The number of the port pin routed to the port filter (0...7) +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_SetFilter +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetFilter(GPIO_PRT_Type* base) +{ + return ((GPIO_PRT_INTR_CFG(base) >> CY_GPIO_INTR_FILT_OFFSET) & CY_GPIO_INTR_FLT_EDGE_MASK); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptCause0 +****************************************************************************//** +* +* Returns the interrupt status for ports 0 to 31. +* +* \return +* 0 = Interrupt not detected on port +* 1 = Interrupt detected on port +* +* \funcusage +* \snippet gpio/gpio_v1_10_sut_01.cydsn/main_cm4.c snippet_Cy_GPIO_GetInterruptCause0 +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause0(void) +{ + return (GPIO_INTR_CAUSE0); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptCause1 +****************************************************************************//** +* +* Returns the interrupt status for ports 32 to 63. +* +* \return +* 0 = Interrupt not detected on port +* 1 = Interrupt detected on port +* +* \funcusage +* Refer to the Cy_GPIO_GetInterruptCause0() example. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause1(void) +{ + return (GPIO_INTR_CAUSE1); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptCause2 +****************************************************************************//** +* +* Returns the interrupt status for ports 64 to 95. +* +* \return +* 0 = Interrupt not detected on port +* 1 = Interrupt detected on port +* \funcusage +* Refer to the Cy_GPIO_GetInterruptCause0() example. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause2(void) +{ + return (GPIO_INTR_CAUSE2); +} + + +/******************************************************************************* +* Function Name: Cy_GPIO_GetInterruptCause3 +****************************************************************************//** +* +* Returns the interrupt status for ports 96 to 127. +* +* \return +* 0 = Interrupt not detected on port +* 1 = Interrupt detected on port +* +* \funcusage +* Refer to the Cy_GPIO_GetInterruptCause0() example. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause3(void) +{ + return (GPIO_INTR_CAUSE3); +} + +/** \} group_gpio_functions_interrupt */ + +/** \} group_gpio_functions */ + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_GPIO_H */ + +/** \} group_gpio */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_i2s.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_i2s.h new file mode 100644 index 00000000000..e295c07136b --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_i2s.h @@ -0,0 +1,1117 @@ +/***************************************************************************//** +* \file cy_i2s.h +* \version 2.10 +* +* The header file of the I2S driver. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_i2s +* \{ +* The I2S driver provides a function API to manage Inter-IC Sound. +* +* The functions and other declarations used in this driver are in cy_i2s.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* I2S is used to send digital audio streaming data to external I2S devices, +* such as audio codecs or simple DACs. It can also receive digital audio streaming data. +* +* Features: +* * An industry standard NXP I2S interface. +* * Supports master/slave TX/RX operation. +* * Programmable Channel/Word Lengths. +* * Supports External Clock operation. +* +* The I2S bus is an industry standard. The hardware interface was +* developed by Philips Semiconductors (now NXP Semiconductors). +* +* \section group_i2s_configuration_considerations Configuration Considerations +* +* To set up an I2S, provide the configuration parameters in the +* \ref cy_stc_i2s_config_t structure. +* +* For example, for Tx configuration, set txEnabled to true, configure +* txDmaTrigger (depending on whether DMA is going to be used or not), set +* extClk (if an external clock is used), provide clkDiv, txMasterMode, +* txAlignment, txChannels (only are is supported in I2S and Left Justified modes) +* txSdoLatchingTime (for slave mode only), txChannelLength, txWordLength, +* txWsPulseWidth (for TMD modes only), txWatchdogEnable and txWatchdogValue +* (both for Slave mode only, and when the watchdog interrupt will be used), +* either txSckoInversion or txSckiInversion (based on txMasterMode setting), +* txFifoTriggerLevel (when the Trig interrupt will be used) and txOverheadValue +* (only when the word length is less than channel length). +* A similar setup is for the Rx configuration. +* +* To initialize the I2S block, call the \ref Cy_I2S_Init function, providing the +* filled \ref cy_stc_i2s_config_t structure. +* Before starting the transmission, clear the FIFO \ref Cy_I2S_ClearTxFifo, then +* fill the first Tx data frame by calling \ref Cy_I2S_WriteTxData once for each +* channel (e.g. twice for I2S mode with only two channels) with zero data. Then +* call the \ref Cy_I2S_EnableTx itself. +* For the reception the sequence is the same except for filling the first data +* frame. Only clearing RX FIFO is enough. +* +* For example: +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_Init +* +* If you use a DMA, the DMA channel should be previously configured. The I2S interrupts +* (if applicable) can be enabled by calling \ref Cy_I2S_SetInterruptMask. +* +* For example, if the trigger interrupt is used during operation, the ISR +* should call the \ref Cy_I2S_WriteTxData as many times as required for your +* FIFO payload, but not more than the FIFO size. Then call \ref Cy_I2S_ClearInterrupt +* with appropriate parameters. +* +* The I2S/Left Justified data formats always contains two data channels. +* They are ordered one-by-one in the FIFOs and left always goes first. +* So in case of mono audio stream transmission, each sample can be put twice +* into the TX FIFO (in this case both channels will sound the same), +* or combined with zeroes: sample1-zero-sample2-zero (in this case only the +* left channel will finally sound, for a right-only case, zero should go first). +* The TDM frame word order in FIFOs is similar, one-by-one. +* +* If a DMA is used and the DMA channel is properly configured - no CPU activity +* (or any application code) is needed for I2S operation. +* +* The I2S frame appears as: +* \image html i2s_frame.png +* This is an example for the channel length = 32. A similar case exists for the rest +* channel lengths, with one limitation: the word length could be less than or equal +* to the channel length. See the device technical reference manual (TRM) +* for more details. +* +* \section group_i2s_more_information More Information +* See: the the I2S chapter of the device technical reference manual (TRM); +* I2S_PDL Component datasheet; +* CE218636 - PSOC 6 MCU INTER-IC SOUND (I2S) EXAMPLE. +* +* \section group_i2s_MISRA MISRA-C Compliance +* The I2S driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.4AA cast should not be performed between a pointer to the object type and +* a different pointer to the object type.The function \ref Cy_I2S_DeepSleepCallback is a callback of +* \ref cy_en_syspm_status_t type. The cast operation safety in this +* function becomes the user responsibility because the pointer is +* initialized when a callback is registered in the SysPm driver.
+* +* \section group_i2s_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
2.10Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
2.0.1Added Low Power Callback sectionDocumentation update and clarification
2.0The slave operation is added, Left Justified and TDM modes are added
1.0Initial version
+* +* \defgroup group_i2s_macros Macros +* \defgroup group_i2s_functions Functions +* \{ +* \defgroup group_i2s_functions_syspm_callback Low Power Callback +* \} +* \defgroup group_i2s_data_structures Data Structures +* \defgroup group_i2s_enums Enumerated Types +*/ + + +#if !defined CY_I2S_H +#define CY_I2S_H + +#include +#include +#include "cy_device.h" +#include "cy_syslib.h" +#include "cy_syspm.h" + +#ifdef CY_IP_MXAUDIOSS + +#ifdef __cplusplus +extern "C" { +#endif + +/** \addtogroup group_i2s_macros +* \{ +*/ + +/** The driver major version */ +#define CY_I2S_DRV_VERSION_MAJOR 2 + +/** The driver minor version */ +#define CY_I2S_DRV_VERSION_MINOR 10 + +/** The I2S driver identifier */ +#define CY_I2S_ID (CY_PDL_DRV_ID(0x20U)) + +/** +* \defgroup group_i2s_macros_interrupt_masks Interrupt Masks +* \{ +*/ + +/** Bit 0: Less entries in the TX FIFO than specified by Trigger Level. */ +#define CY_I2S_INTR_TX_TRIGGER (I2S_INTR_TX_TRIGGER_Msk) +/** Bit 1: TX FIFO is not full. */ +#define CY_I2S_INTR_TX_NOT_FULL (I2S_INTR_TX_NOT_FULL_Msk) +/** Bit 4: TX FIFO is empty, i.e. it has 0 entries. */ +#define CY_I2S_INTR_TX_EMPTY (I2S_INTR_TX_EMPTY_Msk) +/** Bit 5: Attempt to write to a full TX FIFO. */ +#define CY_I2S_INTR_TX_OVERFLOW (I2S_INTR_TX_OVERFLOW_Msk) +/** Bit 6: Attempt to read from an empty TX FIFO. +* This happens when the IP is ready to transfer data and TX_EMPTY is '1'. */ +#define CY_I2S_INTR_TX_UNDERFLOW (I2S_INTR_TX_UNDERFLOW_Msk) +/** Bit 8: Tx watchdog event occurs. */ +#define CY_I2S_INTR_TX_WD (I2S_INTR_TX_WD_Msk) +/** Bit 16: More entries in the RX FIFO than specified by Trigger Level. */ +#define CY_I2S_INTR_RX_TRIGGER (I2S_INTR_RX_TRIGGER_Msk) +/** Bit 18: RX FIFO is not empty. */ +#define CY_I2S_INTR_RX_NOT_EMPTY (I2S_INTR_RX_NOT_EMPTY_Msk) +/** Bit 19: RX FIFO is full. */ +#define CY_I2S_INTR_RX_FULL (I2S_INTR_RX_FULL_Msk) +/** Bit 21: Attempt to write to a full RX FIFO. */ +#define CY_I2S_INTR_RX_OVERFLOW (I2S_INTR_RX_OVERFLOW_Msk) +/** Bit 22: Attempt to read from an empty RX FIFO. */ +#define CY_I2S_INTR_RX_UNDERFLOW (I2S_INTR_RX_UNDERFLOW_Msk) +/** Bit 24: Rx watchdog event occurs. */ +#define CY_I2S_INTR_RX_WD (I2S_INTR_RX_WD_Msk) + +/** \} group_i2s_macros_interrupt_masks */ + + +/** +* \defgroup group_i2s_macros_current_state Current State +* \{ +*/ + +/** Transmission is active */ +#define CY_I2S_TX_START (I2S_CMD_TX_START_Msk) +/** Transmission is paused */ +#define CY_I2S_TX_PAUSE (I2S_CMD_TX_PAUSE_Msk) +/** Reception is active */ +#define CY_I2S_RX_START (I2S_CMD_RX_START_Msk) + +/** \} group_i2s_macros_current_state */ + +/** \} group_i2s_macros */ + +/** +* \addtogroup group_i2s_enums +* \{ +*/ + +/** +* I2S status definitions. +*/ + +typedef enum +{ + CY_I2S_SUCCESS = 0x00UL, /**< Successful. */ + CY_I2S_BAD_PARAM = CY_I2S_ID | CY_PDL_STATUS_ERROR | 0x01UL /**< One or more invalid parameters. */ +} cy_en_i2s_status_t; + + +/** +* I2S data alignment. +*/ +typedef enum +{ + CY_I2S_LEFT_JUSTIFIED = 0U, /**< Left justified. */ + CY_I2S_I2S_MODE = 1U, /**< I2S mode. */ + CY_I2S_TDM_MODE_A = 2U, /**< TDM mode A. */ + CY_I2S_TDM_MODE_B = 3U /**< TDM mode B. */ +} cy_en_i2s_alignment_t; + +/** +* I2S channel/word length. +*/ +typedef enum +{ + CY_I2S_LEN8 = 0U, /**< Channel/word length: 8 bit. */ + CY_I2S_LEN16 = 1U, /**< Channel/Word length: 16 bit. */ + CY_I2S_LEN18 = 2U, /**< Channel/Word length: 18 bit. */ + CY_I2S_LEN20 = 3U, /**< Channel/Word length: 20 bit. */ + CY_I2S_LEN24 = 4U, /**< Channel/Word length: 24 bit. */ + CY_I2S_LEN32 = 5U /**< Channel/Word length: 32 bit. */ +} cy_en_i2s_len_t; + +/** +* I2S TX overhead value. +*/ +typedef enum +{ + CY_I2S_OVHDATA_ZERO = 0U, /**< Fill overhead bits by zeroes. */ + CY_I2S_OVHDATA_ONE = 1U, /**< Fill overhead bits by ones. */ +} cy_en_i2s_overhead_t; + +/** +* I2S WS pulse width. +*/ +typedef enum +{ + CY_I2S_WS_ONE_SCK_CYCLE = 0U, /**< WS pulse width is one SCK cycle. */ + CY_I2S_WS_ONE_CHANNEL_LENGTH = 1U, /**< WS pulse width is one channel length. */ +} cy_en_i2s_ws_pw_t; + +/** \} group_i2s_enums */ + +/** +* \addtogroup group_i2s_data_structures +* \{ +*/ + +/** +* I2S initialization configuration. +*/ +typedef struct +{ + bool txEnabled; /**< Enables the I2S TX component: 'false': disabled. 'true': enabled. */ + bool rxEnabled; /**< Enables the I2S RX component: 'false': disabled. 'true': enabled. */ + bool txDmaTrigger; /**< 'false': TX DMA trigger disabled, 'true': TX DMA trigger enabled. */ + bool rxDmaTrigger; /**< 'false': RX DMA trigger disabled, 'true': RX DMA trigger enabled. */ + uint8_t clkDiv; /**< CLK_SEL divider: 1: Bypass, 2: 1/2, 3: 1/3, ..., 64: 1/64. */ + bool extClk; /**< 'false': internal clock, 'true': external clock. */ + bool txMasterMode; /**< 'false': TX in slave mode, 'true': TX in master mode. */ + cy_en_i2s_alignment_t txAlignment; /**< TX data alignment, see: #cy_en_i2s_alignment_t. */ + cy_en_i2s_ws_pw_t txWsPulseWidth; /**< TX Word Select pulse width. + The value of this parameter is ignored in I2S and Left Justified modes + the WS pulse width is always "one channel length" in these modes. */ + bool txWatchdogEnable; /**< 'false': TX watchdog disabled, 'true': TX watchdog enabled. */ + uint32_t txWatchdogValue; /**< TX watchdog counter value (32 bit). */ + bool txSdoLatchingTime; /**< 'false': SDO bit starts at falling edge (accordingly to the I2S + Standard, if txSckoInversion is false), + 'true': SDO bit starts at rising edge which goes before the above + mentioned falling edge, i.e. the SDO signal is advanced by 0.5 SCK + period (if txSckoInversion is false). + If txSckoInversion is true - the rising/falling edges just swaps + in above explanations. + Effective only in slave mode, must be false in master mode.*/ + bool txSckoInversion; /**< TX SCKO polarity: + 'false': When transmitter is in master mode, serial data is + transmitted off the falling bit clock edge (accordingly to + the I2S Standard); + 'true': When transmitter is in master mode, serial data is + transmitted off the rising bit clock edge. + Effective only in master mode. */ + bool txSckiInversion; /**< TX SCKI polarity: + 'false': When transmitter is in slave mode, serial data is + transmitted off the falling bit clock edge (accordingly to + the I2S Standard); + 'true': When transmitter is in slave mode, serial data is + transmitted off the rising bit clock edge. + Effective only in slave mode. */ + uint8_t txChannels; /**< Number of TX channels, valid range is 1...8 for TDM modes. + In the I2S and Left Justified modes the value of this parameter is + ignored - the real number of channels is always 2 in these modes. */ + cy_en_i2s_len_t txChannelLength; /**< TX channel length, see #cy_en_i2s_len_t, + the value of this parameter is ignored in TDM modes, the real + channel length is 32 bit in these modes. */ + cy_en_i2s_len_t txWordLength; /**< TX word length, see #cy_en_i2s_len_t, + must be less or equal to txChannelLength. */ + cy_en_i2s_overhead_t txOverheadValue; /**< TX overhead bits value + when the word length is less than the channel length. */ + uint8_t txFifoTriggerLevel; /**< TX FIFO interrupt trigger level (0, 1, ..., 255). */ + bool rxMasterMode; /**< 'false': RX in slave mode, 'true': RX in master mode. */ + cy_en_i2s_alignment_t rxAlignment; /**< RX data alignment, see: #cy_en_i2s_alignment_t. */ + cy_en_i2s_ws_pw_t rxWsPulseWidth; /**< RX Word Select pulse width. + The value of this parameter is ignored in I2S and Left Justified modes + the WS pulse width is always "one channel length" in these modes. */ + bool rxWatchdogEnable; /**< 'false': RX watchdog disabled, 'true': RX watchdog enabled. */ + uint32_t rxWatchdogValue; /**< RX watchdog counter value (32 bit). */ + bool rxSdiLatchingTime; /**< 'false': SDI bit starts at falling edge (accordingly to the I2S + Standard if rxSckoInversion is false), + 'true': SDI bit starts at rising edge that goes after the above + mentioned falling edge, i.e. the SDI signal is delayed by 0.5 SCK + period (if rxSckoInversion is false). + If rxSckoInversion is true - the rising/falling edges just swaps + in above explanations. + Effective only in master mode, must be false in slave mode. */ + bool rxSckoInversion; /**< RX SCKO polarity: + 'false': When receiver is in master mode, serial data is + captured by the rising bit clock edge (accordingly to the + I2S Standard); + 'true': When receiver is in master mode, serial data is + captured by the falling bit clock edge. + Effective only in master mode. */ + bool rxSckiInversion; /**< RX SCKI polarity: + 'false': When receiver is in slave mode, serial data is + captured by the rising bit clock edge (accordingly to the + I2S Standard); + 'true': When receiver is in slave mode, serial data is + captured by the falling bit clock edge. + Effective only in slave mode. */ + uint8_t rxChannels; /**< Number of RX channels, valid range is 1...8 for TDM modes. + In the I2S and Left Justified modes the value of this parameter is + ignored - the real number of channels is always 2 in these modes. */ + cy_en_i2s_len_t rxChannelLength; /**< RX channel length, see #cy_en_i2s_len_t, + the value of this parameter is ignored in TDM modes, the real + channel length is 32 bit in these modes. */ + cy_en_i2s_len_t rxWordLength; /**< RX word length, see #cy_en_i2s_len_t, + must be less or equal to rxChannelLength. */ + bool rxSignExtension; /**< RX value sign extension (when the word length is less than 32 bits), + 'false': all MSB are filled by zeroes, + 'true': all MSB are filled by the original sign bit value. */ + uint8_t rxFifoTriggerLevel; /**< RX FIFO interrupt trigger level + (0, 1, ..., (255 - (number of channels))). */ +} cy_stc_i2s_config_t; + + +/** + * The I2S backup structure type to be used for the SysPm callback. + * \ref Cy_I2S_DeepSleepCallback context definition. + * + * \cond Also can be used for other purposes to store the current Tx/Rx + * operation state and interrupt settings - the factors that are usually + * changed on the fly. \endcond + */ +typedef struct +{ + uint32_t enableState; /**< Stores the I2S state */ + uint32_t interruptMask; /**< Stores the I2S interrupt mask */ +} cy_stc_i2s_context_t; + +/** \} group_i2s_data_structures */ + +/** \cond INTERNAL */ +/****************************************************************************** + * Local definitions +*******************************************************************************/ + +#define CY_I2S_INTR_MASK (CY_I2S_INTR_TX_TRIGGER | \ + CY_I2S_INTR_TX_NOT_FULL | \ + CY_I2S_INTR_TX_EMPTY | \ + CY_I2S_INTR_TX_OVERFLOW | \ + CY_I2S_INTR_TX_UNDERFLOW | \ + CY_I2S_INTR_TX_WD | \ + CY_I2S_INTR_RX_TRIGGER | \ + CY_I2S_INTR_RX_NOT_EMPTY | \ + CY_I2S_INTR_RX_FULL | \ + CY_I2S_INTR_RX_OVERFLOW | \ + CY_I2S_INTR_RX_UNDERFLOW | \ + CY_I2S_INTR_RX_WD) + +/* Non-zero default values */ +#define CY_I2S_TX_CTL_CH_NR_DEFAULT (0x1U) +#define CY_I2S_TX_CTL_I2S_MODE_DEFAULT (0x2U) +#define CY_I2S_TX_CTL_WS_PULSE_DEFAULT (0x1U) +#define CY_I2S_TX_CTL_CH_LEN_DEFAULT (0x4U) +#define CY_I2S_TX_CTL_WORD_LEN_DEFAULT (0x4U) + +#define CY_I2S_TX_CTL_DEFAULT (_VAL2FLD(I2S_TX_CTL_CH_NR, CY_I2S_TX_CTL_CH_NR_DEFAULT) | \ + _VAL2FLD(I2S_TX_CTL_I2S_MODE, CY_I2S_TX_CTL_I2S_MODE_DEFAULT) | \ + _VAL2FLD(I2S_TX_CTL_WS_PULSE, CY_I2S_TX_CTL_WS_PULSE_DEFAULT) | \ + _VAL2FLD(I2S_TX_CTL_CH_LEN, CY_I2S_TX_CTL_CH_LEN_DEFAULT) | \ + _VAL2FLD(I2S_TX_CTL_WORD_LEN, CY_I2S_TX_CTL_WORD_LEN_DEFAULT)) + +#define CY_I2S_RX_CTL_CH_NR_DEFAULT (0x1U) +#define CY_I2S_RX_CTL_I2S_MODE_DEFAULT (0x2U) +#define CY_I2S_RX_CTL_WS_PULSE_DEFAULT (0x1U) +#define CY_I2S_RX_CTL_CH_LEN_DEFAULT (0x4U) +#define CY_I2S_RX_CTL_WORD_LEN_DEFAULT (0x4U) + +#define CY_I2S_RX_CTL_DEFAULT (_VAL2FLD(I2S_RX_CTL_CH_NR, CY_I2S_RX_CTL_CH_NR_DEFAULT) | \ + _VAL2FLD(I2S_RX_CTL_I2S_MODE, CY_I2S_RX_CTL_I2S_MODE_DEFAULT) | \ + _VAL2FLD(I2S_RX_CTL_WS_PULSE, CY_I2S_RX_CTL_WS_PULSE_DEFAULT) | \ + _VAL2FLD(I2S_RX_CTL_CH_LEN, CY_I2S_RX_CTL_CH_LEN_DEFAULT) | \ + _VAL2FLD(I2S_RX_CTL_WORD_LEN, CY_I2S_RX_CTL_WORD_LEN_DEFAULT)) + +/* Macros for conditions used by CY_ASSERT calls */ +#define CY_I2S_IS_ALIGNMENT_VALID(alignment) ((CY_I2S_LEFT_JUSTIFIED == (alignment)) || \ + (CY_I2S_I2S_MODE == (alignment)) || \ + (CY_I2S_TDM_MODE_A == (alignment)) || \ + (CY_I2S_TDM_MODE_B == (alignment))) + +#define CY_I2S_IS_LEN_VALID(length) ((CY_I2S_LEN8 == (length)) || \ + (CY_I2S_LEN16 == (length)) || \ + (CY_I2S_LEN18 == (length)) || \ + (CY_I2S_LEN20 == (length)) || \ + (CY_I2S_LEN24 == (length)) || \ + (CY_I2S_LEN32 == (length))) + +#define CY_I2S_IS_OVHDATA_VALID(overhead) ((CY_I2S_OVHDATA_ZERO == (overhead)) || \ + (CY_I2S_OVHDATA_ONE == (overhead))) + +#define CY_I2S_IS_WSPULSE_VALID(wsPulse) ((CY_I2S_WS_ONE_SCK_CYCLE == (wsPulse)) || \ + (CY_I2S_WS_ONE_CHANNEL_LENGTH == (wsPulse))) + +#define CY_I2S_IS_CLK_DIV_VALID(clkDiv) ((clkDiv) <= 63U) +#define CY_I2S_IS_CHANNELS_VALID(channels) ((channels) <= 7UL) +#define CY_I2S_IS_INTR_MASK_VALID(interrupt) (0UL == ((interrupt) & ((uint32_t) ~CY_I2S_INTR_MASK))) + +#define CY_I2S_IS_CHAN_WORD_VALID(channel, word) ((CY_I2S_IS_LEN_VALID(channel)) && \ + (CY_I2S_IS_LEN_VALID(word)) && \ + ((channel) >= (word))) +#define CY_I2S_IS_TRIG_LEVEL_VALID(trigLevel, channels) ((trigLevel) <= (255U - (channels))) + +/** \endcond */ + + +/** +* \addtogroup group_i2s_functions +* \{ +*/ + + cy_en_i2s_status_t Cy_I2S_Init(I2S_Type * base, cy_stc_i2s_config_t const * config); + void Cy_I2S_DeInit(I2S_Type * base); + +/** \addtogroup group_i2s_functions_syspm_callback +* The driver supports SysPm callback for Deep Sleep transition. +* \{ +*/ +cy_en_syspm_status_t Cy_I2S_DeepSleepCallback(cy_stc_syspm_callback_params_t * callbackParams, cy_en_syspm_callback_mode_t mode); +/** \} */ + +__STATIC_INLINE void Cy_I2S_EnableTx(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_PauseTx(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_ResumeTx(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_DisableTx(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_EnableRx(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_DisableRx(I2S_Type * base); +__STATIC_INLINE uint32_t Cy_I2S_GetCurrentState(I2S_Type const * base); + +__STATIC_INLINE void Cy_I2S_ClearTxFifo(I2S_Type * base); +__STATIC_INLINE uint32_t Cy_I2S_GetNumInTxFifo(I2S_Type const * base); +__STATIC_INLINE void Cy_I2S_WriteTxData(I2S_Type * base, uint32_t data); +__STATIC_INLINE uint8_t Cy_I2S_GetTxReadPointer(I2S_Type const * base); +__STATIC_INLINE uint8_t Cy_I2S_GetTxWritePointer(I2S_Type const * base); +__STATIC_INLINE void Cy_I2S_FreezeTxFifo(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_UnfreezeTxFifo(I2S_Type * base); + +__STATIC_INLINE void Cy_I2S_ClearRxFifo(I2S_Type * base); +__STATIC_INLINE uint32_t Cy_I2S_GetNumInRxFifo(I2S_Type const * base); +__STATIC_INLINE uint32_t Cy_I2S_ReadRxData(I2S_Type const * base); +__STATIC_INLINE uint32_t Cy_I2S_ReadRxDataSilent(I2S_Type const * base); +__STATIC_INLINE uint8_t Cy_I2S_GetRxReadPointer(I2S_Type const * base); +__STATIC_INLINE uint8_t Cy_I2S_GetRxWritePointer(I2S_Type const * base); +__STATIC_INLINE void Cy_I2S_FreezeRxFifo(I2S_Type * base); +__STATIC_INLINE void Cy_I2S_UnfreezeRxFifo(I2S_Type * base); + +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptStatus(I2S_Type const * base); +__STATIC_INLINE void Cy_I2S_ClearInterrupt(I2S_Type * base, uint32_t interrupt); +__STATIC_INLINE void Cy_I2S_SetInterrupt(I2S_Type * base, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptMask(I2S_Type const * base); +__STATIC_INLINE void Cy_I2S_SetInterruptMask(I2S_Type * base, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptStatusMasked(I2S_Type const * base); + +/******************************************************************************* +* Function Name: Cy_I2S_EnableTx +****************************************************************************//** +* +* Starts an I2S transmission. Interrupt enabling (by the +* \ref Cy_I2S_SetInterruptMask) is required after this function call, in case +* if any I2S interrupts are used in the application. +* +* \pre Cy_I2S_Init() must be called before. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_EnableTx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_EnableTx(I2S_Type * base) +{ + REG_I2S_CMD(base) |= I2S_CMD_TX_START_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_PauseTx +****************************************************************************//** +* +* Pauses an I2S transmission. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_PauseTx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_PauseTx(I2S_Type * base) +{ + REG_I2S_CMD(base) |= I2S_CMD_TX_PAUSE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ResumeTx +****************************************************************************//** +* +* Resumes an I2S transmission. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ResumeTx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_ResumeTx(I2S_Type * base) +{ + REG_I2S_CMD(base) &= (uint32_t) ~I2S_CMD_TX_PAUSE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_DisableTx +****************************************************************************//** +* +* Stops an I2S transmission. +* +* \pre TX interrupt disabling (by the \ref Cy_I2S_SetInterruptMask) is required +* prior to this function call, in case any TX I2S interrupts are used. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_DisableTx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_DisableTx(I2S_Type * base) +{ + REG_I2S_CMD(base) &= (uint32_t) ~I2S_CMD_TX_START_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_EnableRx +****************************************************************************//** +* +* Starts an I2S reception. Interrupt enabling (by the +* \ref Cy_I2S_SetInterruptMask) is required after this function call, in case +* any I2S interrupts are used in the application. +* +* \pre \ref Cy_I2S_Init() must be called before. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_EnableRx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_EnableRx(I2S_Type * base) +{ + REG_I2S_CMD(base) |= I2S_CMD_RX_START_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_DisableRx +****************************************************************************//** +* +* Stops an I2S reception. +* +* \pre RX interrupt disabling (by the \ref Cy_I2S_SetInterruptMask) is required +* prior to this function call, in case any RX I2S interrupts are used. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_DisableRx +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_DisableRx(I2S_Type * base) +{ + REG_I2S_CMD(base) &= (uint32_t) ~I2S_CMD_RX_START_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetCurrentState +****************************************************************************//** +* +* Returns the current I2S state (TX/RX running/paused/stopped). +* +* \param base The pointer to the I2S instance address. +* +* \return The current state \ref group_i2s_macros_current_state. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetCurrentState +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetCurrentState(I2S_Type const * base) +{ + return (REG_I2S_CMD(base) & (I2S_CMD_TX_START_Msk | I2S_CMD_TX_PAUSE_Msk | I2S_CMD_RX_START_Msk)); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ClearTxFifo +****************************************************************************//** +* +* Clears the TX FIFO (resets the Read/Write FIFO pointers). +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ClearTxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_ClearTxFifo(I2S_Type * base) +{ + REG_I2S_TX_FIFO_CTL(base) |= I2S_TX_FIFO_CTL_CLEAR_Msk; + REG_I2S_TX_FIFO_CTL(base) &= (uint32_t) ~I2S_TX_FIFO_CTL_CLEAR_Msk; + (void) REG_I2S_TX_FIFO_CTL(base); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetNumInTxFifo +****************************************************************************//** +* +* Gets the number of used words in the TX FIFO. +* +* \param base The pointer to the I2S instance address. +* +* \return The current number of used words in the TX FIFO. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetNumInTxFifo +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetNumInTxFifo(I2S_Type const * base) +{ + return (_FLD2VAL(I2S_TX_FIFO_STATUS_USED, REG_I2S_TX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_WriteTxData +****************************************************************************//** +* +* Writes data to the TX FIFO. Increases the TX FIFO level. +* +* \param base The pointer to the I2S instance address. +* +* \param data Data to be written to the TX FIFO. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_WriteTxData +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_WriteTxData(I2S_Type * base, uint32_t data) +{ + REG_I2S_TX_FIFO_WR(base) = data; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetTxReadPointer +****************************************************************************//** +* +* Gets the TX FIFO Read pointer. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \return The current TX Read pointer value. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetTxReadPointer +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_I2S_GetTxReadPointer(I2S_Type const * base) +{ + return ((uint8_t) _FLD2VAL(I2S_TX_FIFO_STATUS_RD_PTR, REG_I2S_TX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetTxWritePointer +****************************************************************************//** +* +* Gets the TX FIFO Write pointer. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \return The current TX Write pointer value. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetTxWritePointer +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_I2S_GetTxWritePointer(I2S_Type const * base) +{ + return ((uint8_t) _FLD2VAL(I2S_TX_FIFO_STATUS_WR_PTR, REG_I2S_TX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_FreezeTxFifo +****************************************************************************//** +* +* Freezes the TX FIFO. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_FreezeTxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_FreezeTxFifo(I2S_Type * base) +{ + REG_I2S_TX_FIFO_CTL(base) |= I2S_TX_FIFO_CTL_FREEZE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_UnfreezeTxFifo +****************************************************************************//** +* +* Unfreezes the TX FIFO. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_UnfreezeTxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_UnfreezeTxFifo(I2S_Type * base) +{ + REG_I2S_TX_FIFO_CTL(base) &= (uint32_t) ~I2S_TX_FIFO_CTL_FREEZE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ClearRxFifo +****************************************************************************//** +* +* Clears the RX FIFO (resets the Read/Write FIFO pointers). +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ClearRxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_ClearRxFifo(I2S_Type * base) +{ + REG_I2S_RX_FIFO_CTL(base) |= I2S_RX_FIFO_CTL_CLEAR_Msk; + REG_I2S_RX_FIFO_CTL(base) &= (uint32_t) ~I2S_RX_FIFO_CTL_CLEAR_Msk; + (void) REG_I2S_RX_FIFO_CTL(base) ; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetNumInRxFifo +****************************************************************************//** +* +* Gets the number of used words in the RX FIFO. +* +* \param base The pointer to the I2S instance address. +* +* \return The current number of used words in rge RX FIFO. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetNumInRxFifo +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetNumInRxFifo(I2S_Type const * base) +{ + return (_FLD2VAL(I2S_RX_FIFO_STATUS_USED, REG_I2S_RX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ReadRxData +****************************************************************************//** +* +* Reads data from the RX FIFO. Decreases the RX FIFO level. +* +* \param base The pointer to the I2S instance address. +* +* \return The read data. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ReadRxData +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_ReadRxData(I2S_Type const * base) +{ + return (REG_I2S_RX_FIFO_RD(base)); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ReadRxDataSilent +****************************************************************************//** +* +* Reads data from the RX FIFO without updating the RX FIFO read pointer. +* This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \return The read data. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ReadRxDataSilent +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_ReadRxDataSilent(I2S_Type const * base) +{ + return (REG_I2S_RX_FIFO_RD_SILENT(base)); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetRxReadPointer +****************************************************************************//** +* +* Gets the RX FIFO Read pointer. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \return The current RX Read pointer value. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetRxReadPointer +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_I2S_GetRxReadPointer(I2S_Type const * base) +{ + return ((uint8_t) _FLD2VAL(I2S_RX_FIFO_STATUS_RD_PTR, REG_I2S_RX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetRxWritePointer +****************************************************************************//** +* +* Gets the RX FIFO Write pointer. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \return The current RX Write pointer value. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetRxWritePointer +* +*******************************************************************************/ +__STATIC_INLINE uint8_t Cy_I2S_GetRxWritePointer(I2S_Type const * base) +{ + return ((uint8_t) _FLD2VAL(I2S_RX_FIFO_STATUS_WR_PTR, REG_I2S_RX_FIFO_STATUS(base))); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_FreezeRxFifo +****************************************************************************//** +* +* Freezes the RX FIFO. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_FreezeRxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_FreezeRxFifo(I2S_Type * base) +{ + REG_I2S_RX_FIFO_CTL(base) |= I2S_RX_FIFO_CTL_FREEZE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_UnfreezeRxFifo +****************************************************************************//** +* +* Unfreezes the RX FIFO. This function is for debug purposes. +* +* \param base The pointer to the I2S instance address. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_UnfreezeRxFifo +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_UnfreezeRxFifo(I2S_Type * base) +{ + REG_I2S_RX_FIFO_CTL(base) &= (uint32_t) ~I2S_RX_FIFO_CTL_FREEZE_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetInterruptStatus +****************************************************************************//** +* +* Gets an interrupt status (returns a content of the INTR register). +* +* \param base The pointer to the I2S instance address. +* +* \return The interrupt bit mask \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptStatus(I2S_Type const * base) +{ + return (REG_I2S_INTR(base)); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_ClearInterrupt +****************************************************************************//** +* +* Clears one or more interrupt factors (sets the INTR register). +* +* \param base The pointer to the I2S instance address. +* +* \param interrupt Interrupt bit mask \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_ClearInterrupt(I2S_Type * base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_I2S_IS_INTR_MASK_VALID(interrupt)); + REG_I2S_INTR(base) = interrupt; + (void) REG_I2S_INTR(base); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_SetInterrupt +****************************************************************************//** +* +* Sets one or more interrupt factors (sets the INTR_SET register). +* +* \param base The pointer to the I2S instance address. +* +* \param interrupt Interrupt bit mask \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_SetInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_SetInterrupt(I2S_Type * base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_I2S_IS_INTR_MASK_VALID(interrupt)); + REG_I2S_INTR_SET(base) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetInterruptMask +****************************************************************************//** +* +* Returns the interrupt mask (a content of the INTR_MASK register). +* +* \param base The pointer to the I2S instance address. +* +* \return The interrupt bit mask \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_GetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptMask(I2S_Type const * base) +{ + return (REG_I2S_INTR_MASK(base)); +} + + +/******************************************************************************* +* Function Name: Cy_I2S_SetInterruptMask +****************************************************************************//** +* +* Sets one or more interrupt factor masks (the INTR_MASK register). +* +* \param base The pointer to the I2S instance address. +* +* \param interrupt Interrupt bit mask \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_SetInterruptMask +* +*******************************************************************************/ +__STATIC_INLINE void Cy_I2S_SetInterruptMask(I2S_Type * base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_I2S_IS_INTR_MASK_VALID(interrupt)); + REG_I2S_INTR_MASK(base) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_I2S_GetInterruptStatusMasked +****************************************************************************//** +* +* Returns the interrupt status masked (a content of the INTR_MASKED register). +* +* \param base The pointer to the I2S instance address. +* +* \return The interrupt bit mask(s) \ref group_i2s_macros_interrupt_masks. +* +* \funcusage +* \snippet i2s\2.10\snippet\main.c snippet_Cy_I2S_ClearInterrupt +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_I2S_GetInterruptStatusMasked(I2S_Type const * base) +{ + return (REG_I2S_INTR_MASKED(base)); +} + +/** \} group_i2s_functions */ + +#ifdef __cplusplus +} +#endif + +#endif /* CY_IP_MXAUDIOSS */ + +#endif /* CY_I2S_H */ + +/** \} group_i2s */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_drv.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_drv.h new file mode 100644 index 00000000000..d9a214ce755 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_drv.h @@ -0,0 +1,997 @@ +/***************************************************************************//** +* \file cy_ipc_drv.h +* \version 1.30 +* +* Provides an API declaration of the IPC driver. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef CY_IPC_DRV_H +#define CY_IPC_DRV_H + + +/** +* \addtogroup group_ipc +* \{ +* The inter-processor communication (IPC) driver provides a safe and reliable +* method to transfer data between CPUs. Hardware locking ensures that only one +* device can acquire and transfer data at a time so no data is lost or +* overwritten by asynchronous processes or CPUs. +* +* Include either cy_ipc_pipe.h or cy_ipc_sema.h. Alternatively include cy_pdl.h +* (ModusToolbox only) to get access to all functions and declarations in the PDL. +* +* There are three parts to the API: +* - Driver-level (DRV) API - used internally by Semaphore and Pipe levels +* - Pipe-level (PIPE) API - establishes a communication channel between +* processors +* - Semaphore-level (SEMA) API - enables users to set and clear flags to +* synchronize operations. +* +* Firmware does not need to use the DRV API. It can implement IPC functionality +* entirely with the PIPE and SEMA APIs. +* +* \section group_ipc_background Background +* +* IPC is implemented in hardware as a collection of individual communication +* channels, each with a set of 32-bit registers. The IPC design implements a set +* of interrupts that enable each processor to notify the other that data is +* available, or has been processed. There is also a locking mechanism that +* allows only one CPU to gain access at a time. +* +* The Driver-level API manages each channel's registers to implement IPC +* functionality. For information on the IPC registers, see the IPC chapter of +* the Technical Reference Manual (TRM). +* +* At the hardware level, communication is a five-step process. +* -# The sending processor acquires a channel +* -# It puts data into the channel +* -# The sender generates a notify event (interrupt) +* -# The receiving processor identifies the sender and retrieves the data +* -# The receiving processor generates a release event (interrupt) +* +* \image html ipc_driver.png +* +* These transactions are handled transparently by the DRV-level API. Use the +* PIPE and SEMA layers of the API to implement communication in your application. +* The data transferred is limited to a single 32-bit value. As implemented by +* the PIPE API, that value is a pointer to a data structure of arbitrary size +* and complexity. +* +* \section group_ipc_overview Overview +* +* The Pipe is the key element in the PDL design. A pipe is typically a +* full-duplex communication channel between CPU cores. A pipe allows a single +* conduit to transfer messages or data to and from multiple processes or CPUs. +* +* A pipe has two endpoints, one on each core. Each endpoint contains a dedicated +* IPC channel and an interrupt. IPC channels 0-7 and IPC interrupts 0-7 are +* reserved for system use. +* +* The pipe also contains the number of clients it supports, and for each client +* a callback function. So the pipe can service a number of clients, each with a +* separate callback function, on either endpoint. The number of clients a pipe +* supports is the sum of each endpoint's clients. +* +* This design enables any number of processes on the sending core to put +* arbitrary data into a single pipe. The first element of that data is the +* client ID of the client that should handle the data. +* +* An interrupt notifies the receiving core that data is available. The receiving +* core parses the data to identify the client, and then dispatches the event to +* the appropriate client via the client callback function. An interrupt notifies +* the sending core that the receiver is finished. In this way a single pipe can +* manage arbitrary data transfers between cores with data flowing in either +* direction. +* +* \image html ipc_ints.png +* +* The application can use semaphores to control access to shared resources, as +* required by the application's logic. +* +* The PDL provides specific files that set up default IPC functionality. +* They are system_psoc6.h, system_psoc6_cm0plus.c and system_psoc6_cm4.c. You +* can modify these files based on the requirements of your design. +* If you use PSoC Creator as a development environment, it will not overwrite +* your changes when you generate the application or build your code. +* +* \section group_ipc_pipe_layer PIPE layer +* +* A pipe is a communication channel between two endpoints. PSoC 6 devices support +* 16 IPC channels, and 16 IPC interrupts, each numbered 0-15. IPC Channels 0-7 +* and IPC interrupts 0-7 are reserved for system use. Channels 8-15 and +* interrupts 8-15 are available for application use. +* +* A full duplex pipe uses two IPC channels, one per endpoint. Each endpoint +* specifies all the information required to process a message (either sent or +* received). Each endpoint is configured to use an IPC channel, and an IPC +* interrupt. Common practice is to use the interrupt with the same number as +* the IPC channel. However, IPC Interrupts are not directly associated with the +* IPC channels, so any channel can use any interrupt. Any IPC channel can +* trigger 0, 1 or all the IPC interrupts at once, depending on the Notify or +* Release masks used. +* +* It is also possible to set up a one-directional pipe, using a single IPC +* channel. In this design one processor is always the sender, and the other is +* always the receiver. However, there are still two endpoints. +* +* A pipe supports an arbitrary number of clients with an array of callback +* functions, one per client. The client ID is the index number into the array +* for the client. After a pipe is configured and initialized, the application +* calls Cy_IPC_Pipe_RegisterCallback() once per client to register each client's +* callback function. Multiple clients can use the same callback function. The +* endpoints in a pipe share the callback array. +* +* Use Cy_IPC_Pipe_SendMessage() to send data. You specify both the "to" and +* "from" endpoints, and a callback function to be used when the data transfer is +* complete. The data is a 32-bit void pointer. The data pointed to is arbitrary, +* and can be an array, a structure, or a location in memory. The only limitation +* is that the first element of the data must be a 32-bit unsigned word containing +* a client ID number. The ID number is the index into the callback array. +* +* When a message is sent, the receiving endpoint's interrupt handler is called. +* The ISR can perform any task required by the design. However, as part of its +* function it calls \ref Cy_IPC_Pipe_ExecCallback. This function retrieves the +* client ID from the data and calls the associated callback function. +* The user-supplied callback function handles the data in whatever way is +* appropriate based on the application logic. +* +* After the callback function is returned by the receiver, it invokes the release +* callback function defined by the sender of the message. +* +* \section group_ipc_sema_layer SEMA Layer +* +* A semaphore is a flag the application uses to control access to a shared +* resource. The SEMA-level API uses an IPC channel to implement +* semaphores. Startup code sets up a default semaphore system. The +* default system creates an array of 128 semaphores (four 32-bit values). +* Semaphores 0-15 are reserved for system use. See +* Configuration Considerations - SEMA. +* +* Functions are available to initialize the semaphore system, to set or +* clear a semaphore, or to get the semaphore's current status. Application +* logic uses SEMA functions to relate a particular semaphore to a particular +* shared resource, and set, clear, or check the flag when accessing the +* shared resource. +* +* \section group_ipc_configuration_cypipe Configuration Considerations - CYPIPE +* +* There are none. The startup files set up the required CYPIPE for system +* use. Do not modify the CYPIPE. It uses IPC channels 5 and 6 to implement full +* duplex communication between cores. See System Interrupt (SysInt) for background. +* +* To create your own pipe (USRPIPE) you should edit startup files +* and take 4 steps: +* -# Define a pipe callbacks processing interrupt handler +* (similar to Cy_SysIpcPipeIsrCm0 or Cy_SysIpcPipeIsrCm4) +* -# Define a callbacks array (similar to systemIpcPipeSysCbArray) +* -# Define your pipe configuration with a cy_stc_ipc_pipe_config_t type structure +* (similar to systemIpcPipeConfigCm0 and systemIpcPipeConfigCm4) +* -# Call Cy_IPC_Pipe_Init() from each core to initialize your pipe (similar +* to call in the SystemInit) +* +* \section group_ipc_configuration_sema Configuration Considerations - SEMA +* +* Startup code calls Cy_IPC_Sema_Init() with default values to set up semaphore +* functionality. By default the semaphore system uses IPC channel 4, and +* creates 128 semaphores. Do not change the IPC channel. +* You can change the number of semaphores. +* +* To change the number of semaphores, modify this line of code in system_psoc6.h. +* +* \code +* #define CY_IPC_SEMA_COUNT (uint32_t)(128u) +* \endcode +* +* Startup also declares array ipcSemaArray to hold the semaphore +* flags based on the size defined for this symbol. Use increments of 32. You +* must have at least 32 semaphores. Semaphores 0-15 are reserved for +* system use. Your application can use semaphores greater than 15. +* +* \section group_ipc_more_information More Information +* +* If the default startup file is not used, or SystemInit() is not called in your +* project, call the following three functions prior to executing any flash or +* EmEEPROM write or erase operation: +* -# Cy_IPC_Sema_Init() +* -# Cy_IPC_Pipe_Config() +* -# Cy_IPC_Pipe_Init() +* -# Cy_Flash_Init() +* +* See the technical reference manual(TRM) for more information on the IPC. +* +* \section group_ipc_MISRA MISRA-C Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
10.3RThe value of a complex expression of integer type shall be cast +* only to a type of the same signedness that is no wider than the underlying +* type of the expression.The cast from integer to enumeration value is used to calculate +* the interrupt vector source from the integer number of the IPC interrupt +* structure, so there is no way to avoid this cast.
11.4AA cast should not be performed between a pointer to the void to a +* pointer to the object type.The cast from the void to pointer and vice versa is used to transmit +* data via the \ref group_ipc channel by exchanging the pointer. We +* exchange only one pointer, so there is no way to avoid this cast.
+* +* \section group_ipc_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.30Flattened the organization of the driver source code into the single source directory and the single include directory.Driver library directory-structure simplification.
Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup, removed cy_ipc_config.c and cy_ipc_config.h files.Changed IPC driver configuration method from compile time to run time.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.20Added \ref Cy_IPC_Pipe_ExecuteCallback function. +* Updated documentation about user pipe initialization. +* Interface improvement, documentation update
1.10.1Updated description of the \ref Cy_IPC_Pipe_Init, +* \ref Cy_IPC_Pipe_EndpointInit, \ref Cy_IPC_Sema_Set functions. +* Added / updated code snippets. +* Documentation update and clarification
1.10Added support for more IPC structuresNew device support
1.0Initial version
+* +* \defgroup group_ipc_drv IPC driver layer (IPC_DRV) +* \{ +* The functions of this layer are used in the higher IPC levels +* (Semaphores and Pipes). +* Users are not expected to call any of these IPC functions directly (cy_ipc_drv.h). +* Instead include either of cy_ipc_sema.h or cy_ipc_pipe.h. +* Alternatively include cy_pdl.h to get access to all functions and declarations in the PDL. +* +* \defgroup group_ipc_macros Macros +* Macro definitions are used in the driver +* +* \defgroup group_ipc_functions Functions +* Functions are used in the driver +* +* \defgroup group_ipc_data_structures Data Structures +* Data structures are used in the driver +* +* \defgroup group_ipc_enums Enumerated Types +* Enumerations are used in the driver +* \} +* +* \defgroup group_ipc_sema IPC semaphores layer (IPC_SEMA) +* \defgroup group_ipc_pipe IPC pipes layer (IPC_PIPE) +* +*/ + + +/******************************************************************************/ +/* Include files */ +/******************************************************************************/ + +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" +#include + + +/** +* \addtogroup group_ipc_macros +* \{ +*/ + +/** Driver major version */ +#define CY_IPC_DRV_VERSION_MAJOR 1 + +/** Driver minor version */ +#define CY_IPC_DRV_VERSION_MINOR 30 + +/** Defines a value to indicate that no notification events are needed */ +#define CY_IPC_NO_NOTIFICATION (uint32_t)(0x00000000ul) + +/* Error Code constants */ +#define CY_IPC_ID CY_PDL_DRV_ID(0x22u) /**< Software PDL driver ID for IPC */ + +/** Return prefix for IPC driver function status codes */ +#define CY_IPC_ID_INFO (uint32_t)( CY_IPC_ID | CY_PDL_STATUS_INFO ) +/** Return prefix for IPC driver function warning return values */ +#define CY_IPC_ID_WARNING (uint32_t)( CY_IPC_ID | CY_PDL_STATUS_WARNING) +/** Return prefix for IPC driver function error return values */ +#define CY_IPC_ID_ERROR (uint32_t)( CY_IPC_ID | CY_PDL_STATUS_ERROR) + +/** Converts the IPC interrupt channel number to interrupt vector */ +#define CY_IPC_INTR_NUM_TO_VECT(x) ((int32_t) cy_device->cpussIpc0Irq + (x)) + +/** \} group_ipc_macros */ + +/* end of definition in device.h */ + +/** \cond INTERNAL */ +#if (CY_CPU_CORTEX_M0P) + #define CY_IPC_CHAN_SYSCALL CY_IPC_CHAN_SYSCALL_CM0 +#else + #define CY_IPC_CHAN_SYSCALL CY_IPC_CHAN_SYSCALL_CM4 +#endif /* (CY_CPU_CORTEX_M0P) */ +/** \endcond */ + +/** +* \addtogroup group_ipc_enums +* \{ +*/ + +/** +* This is a list of ENUMs used for function return status. +*/ +typedef enum +{ + /** Function was successfully executed */ + CY_IPC_DRV_SUCCESS = (0x00u), + /** Function was not executed due to an error. + Typical conditions for the error explained + in the function description */ + CY_IPC_DRV_ERROR = ( CY_IPC_ID_ERROR + 1ul), +} cy_en_ipcdrv_status_t; + +/** \} group_ipc_enums */ + + +#ifdef __cplusplus +extern "C" { +#endif + +/** \cond INTERNAL */ + +__STATIC_INLINE void Cy_IPC_Drv_WriteDataValue (IPC_STRUCT_Type* base, uint32_t dataValue); +__STATIC_INLINE uint32_t Cy_IPC_Drv_ReadDataValue (IPC_STRUCT_Type const * base); + +__STATIC_INLINE uint32_t Cy_IPC_Drv_ExtractAcquireMask (uint32_t intMask); +__STATIC_INLINE uint32_t Cy_IPC_Drv_ExtractReleaseMask (uint32_t intMask); + +/** \endcond */ + +/** +* \addtogroup group_ipc_functions +* \{ +*/ + +__STATIC_INLINE IPC_STRUCT_Type* Cy_IPC_Drv_GetIpcBaseAddress (uint32_t ipcIndex); +__STATIC_INLINE IPC_INTR_STRUCT_Type* Cy_IPC_Drv_GetIntrBaseAddr (uint32_t ipcIntrIndex); + +__STATIC_INLINE void Cy_IPC_Drv_AcquireNotify (IPC_STRUCT_Type * base, uint32_t notifyEventIntr); +__STATIC_INLINE void Cy_IPC_Drv_ReleaseNotify (IPC_STRUCT_Type * base, uint32_t notifyEventIntr); + +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_LockAcquire (IPC_STRUCT_Type const * base); +cy_en_ipcdrv_status_t Cy_IPC_Drv_LockRelease (IPC_STRUCT_Type * base, uint32_t releaseEventIntr); +__STATIC_INLINE bool Cy_IPC_Drv_IsLockAcquired (IPC_STRUCT_Type const * base); +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetLockStatus (IPC_STRUCT_Type const * base); + +cy_en_ipcdrv_status_t Cy_IPC_Drv_SendMsgWord (IPC_STRUCT_Type * base, uint32_t notifyEventIntr, uint32_t message); +cy_en_ipcdrv_status_t Cy_IPC_Drv_ReadMsgWord (IPC_STRUCT_Type const * base, uint32_t * message); +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_SendMsgPtr (IPC_STRUCT_Type* base, uint32_t notifyEventIntr, void const * msgPtr); +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_ReadMsgPtr (IPC_STRUCT_Type const * base, void ** msgPtr); + +__STATIC_INLINE void Cy_IPC_Drv_SetInterruptMask (IPC_INTR_STRUCT_Type * base, + uint32_t ipcReleaseMask, uint32_t ipcAcquireMask); +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptMask (IPC_INTR_STRUCT_Type const * base); +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptStatusMasked (IPC_INTR_STRUCT_Type const * base); +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptStatus (IPC_INTR_STRUCT_Type const * base); +__STATIC_INLINE void Cy_IPC_Drv_SetInterrupt (IPC_INTR_STRUCT_Type * base, + uint32_t ipcReleaseMask, uint32_t ipcAcquireMask); +__STATIC_INLINE void Cy_IPC_Drv_ClearInterrupt (IPC_INTR_STRUCT_Type * base, + uint32_t ipcReleaseMask, uint32_t ipcAcquireMask); + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetIpcBaseAddress +****************************************************************************//** +* +* This function takes an IPC channel index as a parameter and returns the base +* address the IPC registers corresponding to the IPC channel. +* +* \note The user is responsible for ensuring that ipcIndex does not exceed the +* limits. +* +* \param ipcIndex +* Represents the number of IPC structure. This is converted to the base address of +* the IPC channel registers. +* +* \return +* Returns a pointer to the base of the IPC registers. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_SendMsgWord +* +*******************************************************************************/ +__STATIC_INLINE IPC_STRUCT_Type* Cy_IPC_Drv_GetIpcBaseAddress (uint32_t ipcIndex) +{ + CY_ASSERT_L1(CY_IPC_CHANNELS > ipcIndex); + return ( (IPC_STRUCT_Type*) CY_IPC_STRUCT_PTR(ipcIndex)); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetIntrBaseAddr +****************************************************************************//** +* +* This function takes an IPC interrupt structure index and returns the base +* address of the IPC interrupt registers corresponding to the IPC Interrupt. +* +* \note The user is responsible for ensuring that ipcIntrIndex does not exceed the +* limits. +* +* \param ipcIntrIndex +* Represents the number of IPC interrupt structure. This is converted to the +* base address of the IPC interrupt registers. +* +* \return +* Returns a pointer to the base of the IPC interrupt registers. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE IPC_INTR_STRUCT_Type* Cy_IPC_Drv_GetIntrBaseAddr (uint32_t ipcIntrIndex) +{ + CY_ASSERT_L1(CY_IPC_INTERRUPTS > ipcIntrIndex); + return ( (IPC_INTR_STRUCT_Type*) &(((IPC_Type *)cy_device->ipcBase)->INTR_STRUCT[ipcIntrIndex]) ); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_SetInterruptMask +****************************************************************************//** +* +* This function is used to set the interrupt mask for an IPC Interrupt. +* The mask sets release or acquire notification events for all IPC channels. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from the +* IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \param ipcReleaseMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* release event. +* +* \param ipcAcquireMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* notify event. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatusMasked +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_SetInterruptMask (IPC_INTR_STRUCT_Type* base, + uint32_t ipcReleaseMask, uint32_t ipcAcquireMask) +{ + CY_ASSERT_L1(0ul == (ipcAcquireMask & ~(uint32_t)(IPC_STRUCT_NOTIFY_INTR_NOTIFY_Msk))); + CY_ASSERT_L1(0ul == (ipcReleaseMask & ~(uint32_t)(IPC_STRUCT_RELEASE_INTR_RELEASE_Msk))); + REG_IPC_INTR_STRUCT_INTR_MASK(base) = _VAL2FLD( IPC_INTR_STRUCT_INTR_MASK_NOTIFY, ipcAcquireMask) | + _VAL2FLD( IPC_INTR_STRUCT_INTR_MASK_RELEASE, ipcReleaseMask); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetInterruptMask +****************************************************************************//** +* +* This function is used to read the interrupt mask. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from +* the IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \return +* The return value is encoded as follows +* +*
Interrupt sources Value +*
Ipc_PORTX_RELEASE Xth bit set +*
Ipc_PORTX_NOTIFY X+16th bit set +*
+* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatusMasked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptMask(IPC_INTR_STRUCT_Type const * base) +{ + return REG_IPC_INTR_STRUCT_INTR_MASK(base); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetInterruptStatusMasked +****************************************************************************//** +* +* This function is used to read the active unmasked interrupt. This function +* can be used in the interrupt service routine to find which source triggered +* the interrupt. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from the +* IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \return +* The return value is encoded as follows +* +*
Interrupt sources Value +*
Ipc_PORTX_RELEASE Xth bit set +*
Ipc_PORTX_NOTIFY X+16th bit set +*
+* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatusMasked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptStatusMasked (IPC_INTR_STRUCT_Type const * base) +{ + return REG_IPC_INTR_STRUCT_INTR_MASKED(base); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetInterruptStatus +****************************************************************************//** +* +* This function is used to read the pending interrupts. Note that this read is +* an unmasked read of the interrupt status. Interrupt sources read as active by +* this function would generate interrupts only if they were not masked. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from the +* IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \return +* The return value is encoded as follows +* +*
Interrupt sources Value +*
Ipc_PORTX_RELEASE Xth bit set +*
Ipc_PORTX_NOTIFY X+16th bit set +*
+* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetInterruptStatus(IPC_INTR_STRUCT_Type const * base) +{ + return REG_IPC_INTR_STRUCT_INTR(base); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_SetInterrupt +****************************************************************************//** +* +* This function is used to set the interrupt source. This function can be used +* to activate interrupts through software. +* \note That interrupt sources set using this interrupt would generate interrupts +* only if they are not masked. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from the +* IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \param ipcReleaseMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* release event. +* +* \param ipcAcquireMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* notify event. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_SetInterrupt +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_SetInterrupt(IPC_INTR_STRUCT_Type* base, uint32_t ipcReleaseMask, uint32_t ipcAcquireMask) +{ + CY_ASSERT_L1(0ul == (ipcAcquireMask & ~(uint32_t)(IPC_STRUCT_NOTIFY_INTR_NOTIFY_Msk))); + CY_ASSERT_L1(0ul == (ipcReleaseMask & ~(uint32_t)(IPC_STRUCT_RELEASE_INTR_RELEASE_Msk))); + REG_IPC_INTR_STRUCT_INTR_SET(base) = _VAL2FLD( IPC_INTR_STRUCT_INTR_NOTIFY, ipcAcquireMask ) | + _VAL2FLD( IPC_INTR_STRUCT_INTR_RELEASE, ipcReleaseMask ); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ClearInterrupt +****************************************************************************//** +* +* This function is used to clear the interrupt source. Use this function to clear +* a pending interrupt source in the interrupt status. +* +* \param base +* This is a handle to the IPC interrupt. This handle can be calculated from the +* IPC interrupt number using \ref Cy_IPC_Drv_GetIntrBaseAddr. +* +* \param ipcReleaseMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* release event. +* +* \param ipcAcquireMask +* An encoded list of all IPC channels that can trigger the interrupt on a +* notify event. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetInterruptStatusMasked +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_ClearInterrupt(IPC_INTR_STRUCT_Type* base, uint32_t ipcReleaseMask, uint32_t ipcAcquireMask) +{ + CY_ASSERT_L1(0ul == (ipcAcquireMask & ~(uint32_t)(IPC_STRUCT_NOTIFY_INTR_NOTIFY_Msk))); + CY_ASSERT_L1(0ul == (ipcReleaseMask & ~(uint32_t)(IPC_STRUCT_RELEASE_INTR_RELEASE_Msk))); + REG_IPC_INTR_STRUCT_INTR(base) = _VAL2FLD(IPC_INTR_STRUCT_INTR_NOTIFY, ipcAcquireMask) | + _VAL2FLD(IPC_INTR_STRUCT_INTR_RELEASE, ipcReleaseMask); + (void)REG_IPC_INTR_STRUCT_INTR(base); /* Read the register to flush the cache */ +} + +/** \} group_ipc_functions */ + +/** \} group_ipc */ + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_AcquireNotify +****************************************************************************//** +* +* The function generates a acquire notification event by IPC interrupt structure. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \param notifyEventIntr +* Bit encoded list of IPC interrupt structures that are triggered +* by a notification. Bit number correspond to number of the IPC interrupt +* structure. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_LockAcquire +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_AcquireNotify (IPC_STRUCT_Type* base, uint32_t notifyEventIntr) +{ + CY_ASSERT_L1(0ul == (notifyEventIntr & ~(uint32_t)(IPC_STRUCT_NOTIFY_INTR_NOTIFY_Msk))); + REG_IPC_STRUCT_NOTIFY(base) = _VAL2FLD(IPC_STRUCT_NOTIFY_INTR_NOTIFY, notifyEventIntr); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ReleaseNotify +****************************************************************************//** +* +* The function generates a release notification event by IPC interrupt structure. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \param notifyEventIntr +* Bit encoded list of IPC interrupt lines that are triggered by a notification. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_ReadMsgWord +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_ReleaseNotify (IPC_STRUCT_Type* base, uint32_t notifyEventIntr) +{ + CY_ASSERT_L1(0ul == (notifyEventIntr & ~(uint32_t)(IPC_INTR_STRUCT_INTR_RELEASE_Msk))); + REG_IPC_STRUCT_RELEASE(base) = _VAL2FLD(IPC_INTR_STRUCT_INTR_RELEASE, notifyEventIntr); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_WriteDataValue +****************************************************************************//** +* +* The function writes a value to the DATA register of the IPC channel. +* +* This function is internal and should not be called directly by user +* software. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \param dataValue +* Value to be written. +* +*******************************************************************************/ +__STATIC_INLINE void Cy_IPC_Drv_WriteDataValue (IPC_STRUCT_Type* base, uint32_t dataValue) +{ + REG_IPC_STRUCT_DATA(base) = dataValue; +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ReadDataValue +****************************************************************************//** +* +* The function reads a value from the DATA register of the IPC channel. +* +* This function is internal and should not be called directly by user +* software. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \return +* Value from DATA register. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_ReadDataValue (IPC_STRUCT_Type const * base) +{ + return REG_IPC_STRUCT_DATA(base); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_IsLockAcquired +****************************************************************************//** +* +* The function is used to test the status of an IPC channel. The function +* tells the reader if the IPC channel was in the locked or released state. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \return +* Status for the function: +* true: The IPC channel is in the Locked state. +* false: The IPC channel is in the Released state. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_LockAcquire +* +*******************************************************************************/ +__STATIC_INLINE bool Cy_IPC_Drv_IsLockAcquired (IPC_STRUCT_Type const * base) +{ + return ( 0u != _FLD2VAL(IPC_STRUCT_ACQUIRE_SUCCESS, REG_IPC_STRUCT_LOCK_STATUS(base)) ); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_GetLockStatus +****************************************************************************//** +* +* The function is used to get the status of an IPC channel. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \return +* Value from LOCK_STATUS register. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_GetLockStatus +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_GetLockStatus (IPC_STRUCT_Type const * base) +{ + return REG_IPC_STRUCT_LOCK_STATUS(base); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ExtractAcquireMask +****************************************************************************//** +* +* The function extracts an Acquire mask part from full interrupt mask value. +* +* This function is internal and should not be called directly by user +* software. +* +* \param intMask +* Interrupt mask value to be processed. +* +* \return +* Acquire mask value. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_ExtractAcquireMask (uint32_t intMask) +{ + return _FLD2VAL(IPC_INTR_STRUCT_INTR_MASK_NOTIFY, intMask); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ExtractReleaseMask +****************************************************************************//** +* +* The function extracts a Release mask part from full interrupt mask value. +* +* This function is internal and should not be called directly by user +* software. +* +* \param intMask +* Interrupt mask value to be processed. +* +* \return +* Release mask value. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_IPC_Drv_ExtractReleaseMask (uint32_t intMask) +{ + return _FLD2VAL(IPC_INTR_STRUCT_INTR_MASK_RELEASE, intMask); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_SendMsgPtr +****************************************************************************//** +* +* This function is used to send a message pointer through an IPC channel. +* The message structure may hold a generic pointer that may contain the address +* of any user data type or structure. This parameter could be a pointer to a 32-bit +* integer, an array, or even a data structure defined in the user code. This +* function acts as a transfer engine for sending the pointer. Any memory +* management of the pointer allocation and deallocation is up to the application +* code. +* The function also has an associated notification field that will let the +* message notify one or multiple interrupts. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \param notifyEventIntr +* Bit encoded list of IPC interrupt lines that are triggered during the release +* action. +* +* \param msgPtr +* The message pointer that is being sent over the IPC channel. +* +* \return Status of the operation: +* \retval CY_IPC_DRV_SUCCESS: The send operation was successful. +* \retval CY_IPC_DRV_ERROR: The IPC channel is unavailable because +* it is already locked. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_SendMsgPtr +* +*******************************************************************************/ +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_SendMsgPtr(IPC_STRUCT_Type* base, uint32_t notifyEventIntr, void const * msgPtr) +{ + CY_ASSERT_L1(NULL != msgPtr); + return Cy_IPC_Drv_SendMsgWord(base, notifyEventIntr, (uint32_t)msgPtr); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_ReadMsgPtr +****************************************************************************//** +* +* This function is used to read a 32-bit pointer message through an IPC channel. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress. +* +* \param msgPtr +* Pointer variable to hold the data pointer that is being read from the IPC +* channel. +* +* +* \return Status of the operation +* \retval CY_IPC_DRV_SUCCESS: The function executed successfully and the IPC +* was acquired. +* \retval CY_IPC_DRV_ERROR: The function encountered an error because the IPC +* channel was already in a released state meaning the data +* in it is invalid. +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_ReadMsgPtr +* +*******************************************************************************/ +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_ReadMsgPtr (IPC_STRUCT_Type const * base, void ** msgPtr) +{ + CY_ASSERT_L1(NULL != msgPtr); + return Cy_IPC_Drv_ReadMsgWord(base, (uint32_t *)msgPtr); +} + + +/******************************************************************************* +* Function Name: Cy_IPC_Drv_LockAcquire +****************************************************************************//** +* +* This function is used to acquire the IPC channel. +* +* \param base +* This parameter is a handle that represents the base address of the registers +* of the IPC channel. +* The parameter is generally returned from a call to the \ref +* Cy_IPC_Drv_GetIpcBaseAddress +* +* \return Status of the operation +* \retval CY_IPC_DRV_SUCCESS: The IPC was successfully acquired +* \retval CY_IPC_DRV_ERROR: The IPC was not acquired because it was already acquired +* by another master +* +* \funcusage +* \snippet IPC_sut_01.cydsn/main_cm4.c snippet_Cy_IPC_Drv_LockAcquire +* +*******************************************************************************/ +__STATIC_INLINE cy_en_ipcdrv_status_t Cy_IPC_Drv_LockAcquire (IPC_STRUCT_Type const * base) +{ + return ( 0ul != _FLD2VAL(IPC_STRUCT_ACQUIRE_SUCCESS, REG_IPC_STRUCT_ACQUIRE(base))) ? CY_IPC_DRV_SUCCESS : CY_IPC_DRV_ERROR; +} + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(CY_IPC_DRV_H) */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_pipe.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_pipe.h new file mode 100644 index 00000000000..c19f261ac3d --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_pipe.h @@ -0,0 +1,291 @@ +/***************************************************************************//** +* \file cy_ipc_pipe.h +* \version 1.30 +* +* Description: +* IPC Pipe Driver - This header file contains all the function prototypes, +* structure definitions, pipe constants, and pipe endpoint address definitions. +* +******************************************************************************** +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ +#ifndef CY_IPC_PIPE_H +#define CY_IPC_PIPE_H + +/******************************************************************************/ +/* Include files */ +/******************************************************************************/ +#include "cy_ipc_drv.h" +#include "cy_syslib.h" +#include "cy_sysint.h" + +/** +* \addtogroup group_ipc_pipe IPC pipes layer (IPC_PIPE) +* \{ +* The Pipe functions provide a method to transfer one or more words of data +* between CPUs or tasks. +* +* Include cy_ipc_pipe.h. Alternatively include cy_pdl.h (ModusToolbox only) +* to get access to all functions and declarations in the PDL. +* +* The data can be defined as a single 32-bit unsigned +* word, an array of data, or a user-defined structure. The only limitation is +* that the first word in the array or structure must be a 32-bit unsigned word +* in which a client ID number is passed. The client ID dictates the callback +* function that will be called by the receiver of the message. After the +* callback function returns by the receiver, it will invoke a release callback +* function defined by the sender of the message. +* +* A User Pipe is provided for the user to transfer data between CPUs and +* tasks. +* +* \defgroup group_ipc_pipe_macros Macros +* Macro definitions are used in the driver +* +* \defgroup group_ipc_pipe_functions Functions +* Functions are used in the driver +* +* \defgroup group_ipc_pipe_data_structures Data Structures +* Data structures are used in the driver +* +* \defgroup group_ipc_pipe_enums Enumerated Types +* Enumerations are used in the driver +* \} +* +*/ + +/* + * This section defines the system level constants required to define + * callback arrays for the Cypress pipe and the user pipe. These defines + * are used for both the max callback count and maximum clients. +*/ + +/** Typedef for pipe callback function pointer */ +typedef void (* cy_ipc_pipe_callback_ptr_t)(uint32_t * msgPtr); + +/** Typedef for a pipe release callback function pointer */ +typedef void (* cy_ipc_pipe_relcallback_ptr_t)(void); + +/** Typedef for array of callback function pointers */ +typedef cy_ipc_pipe_callback_ptr_t *cy_ipc_pipe_callback_array_ptr_t; + + +/** +* \addtogroup group_ipc_pipe_macros +* \{ +*/ + +/* + * The System pipe address is what is used to send a message to one of the + * endpoints of a pipe. Currently the Cypress pipe and the User pipe + * are supported. For parts with extra IPC channels users may create + * their own custom pipes and create their own pipe addresses. + * + * The format of the endpoint configuration + * Bits[31:16] Interrupt Mask + * Bits[15:8 ] IPC interrupt + * Bits[ 7:0 ] IPC channel + */ +#define CY_IPC_PIPE_CFG_IMASK_Pos (16UL) /**< Interrupts shift value for endpoint address */ +#define CY_IPC_PIPE_CFG_IMASK_Msk (0xFFFF0000UL) /**< Interrupts mask for endpoint address */ +#define CY_IPC_PIPE_CFG_INTR_Pos (8UL) /**< IPC Interrupt shift value for endpoint address */ +#define CY_IPC_PIPE_CFG_INTR_Msk (0x0000FF00UL) /**< IPC Interrupt mask for endpoint address */ +#define CY_IPC_PIPE_CFG_CHAN_Pos (0UL) /**< IPC Channel shift value for endpoint address */ +#define CY_IPC_PIPE_CFG_CHAN_Msk (0x000000FFUL) /**< IPC Channel mask for endpoint address */ + + + +#define CY_IPC_PIPE_MSG_CLIENT_Msk (0x000000FFul) /**< Client mask for first word of Pipe message */ +#define CY_IPC_PIPE_MSG_CLIENT_Pos (0ul) /**< Client shift for first word of Pipe message */ +#define CY_IPC_PIPE_MSG_USR_Msk (0x0000FF00ul) /**< User data mask for first word of Pipe message */ +#define CY_IPC_PIPE_MSG_USR_Pos (8ul) /**< User data shift for first word of Pipe message */ +#define CY_IPC_PIPE_MSG_RELEASE_Msk (0xFFFF0000ul) /**< Mask for message release mask */ +#define CY_IPC_PIPE_MSG_RELEASE_Pos (16UL) /**< Shift require to line up mask to LSb */ + +/** Use to set the busy flag when waiting for a release interrupt */ +#define CY_IPC_PIPE_ENDPOINT_BUSY (1UL) +/** Denotes that a release interrupt is not pending */ +#define CY_IPC_PIPE_ENDPOINT_NOTBUSY (0UL) + +/** \} group_ipc_pipe_macros */ + +/** +* \addtogroup group_ipc_pipe_data_structures +* \{ +*/ + +/** +* This is the definition of a pipe endpoint. There is one endpoint structure +* for each CPU in a pipe. It contains all the information to process a message +* send to other CPUs in the pipe. +*/ +typedef struct +{ + uint32_t ipcChan; /**< IPC channel number used for this endpoint to receive messages */ + uint32_t intrChan; /**< IPC interrupt channel number used for this endpoint to receive interrupts */ + uint32_t pipeIntMask; /**< Release/Notify interrupt mask that includes all endpoints on pipe */ + IRQn_Type pipeIntrSrc; /**< Interrupt vector number that includes all endpoints on pipe */ + + IPC_STRUCT_Type *ipcPtr; /**< Pointer to receive IPC channel ( If ipcPtr == NULL, cannot receive ) */ + IPC_INTR_STRUCT_Type *ipcIntrPtr; /**< Pointer to IPC interrupt, needed to clear the interrupt */ + uint32_t busy; /**< Endpoint busy flag. If sent no messages can be sent from this endpoint */ + uint32_t clientCount; /**< Client count and size of MsgCallback array */ + + cy_ipc_pipe_callback_array_ptr_t callbackArray; /**< Pointer to array of callback functions, one for each Client */ + cy_ipc_pipe_relcallback_ptr_t releaseCallbackPtr; /**< Pointer to release callback function */ + cy_ipc_pipe_relcallback_ptr_t defaultReleaseCallbackPtr; /**< Pointer to default release callback function */ +} cy_stc_ipc_pipe_ep_t; + +/** The Pipe endpoint configuration structure. */ +typedef struct +{ + uint32_t ipcNotifierNumber; /**< Notifier */ + uint32_t ipcNotifierPriority; /**< Notifier Priority */ + uint32_t ipcNotifierMuxNumber; /**< CM0+ interrupt multiplexer number */ + + uint32_t epAddress; /**< Index in the array of endpoint structure */ + uint32_t epConfig; /**< Configuration mask, contains IPC channel, IPC interrupt number, + and the interrupt mask */ +} cy_stc_ipc_pipe_ep_config_t; + +/** The Pipe channel configuration structure. */ +typedef struct +{ + /** Specifies the notify interrupt number for the first endpoint */ + cy_stc_ipc_pipe_ep_config_t ep0ConfigData; + + /** Specifies the notify interrupt number for the second endpoint */ + cy_stc_ipc_pipe_ep_config_t ep1ConfigData; + + /** Client count and size of MsgCallback array */ + uint32_t endpointClientsCount; + + /** Pipes callback function array. */ + cy_ipc_pipe_callback_array_ptr_t endpointsCallbacksArray; + + /** User IRQ handler function that is called when IPC receive data to process (interrupt was raised). */ + cy_israddress userPipeIsrHandler; +} cy_stc_ipc_pipe_config_t; + +/** \} goup_ipc_pipe_data_structures */ + +/** +* \addtogroup group_ipc_pipe_macros +* \{ +*/ +/* Status and error types */ +#define CY_IPC_PIPE_RTN (0x0200ul) /**< Software PDL driver ID for IPC pipe functions */ +#define CY_IPC_PIPE_ID_INFO (uint32_t)( CY_IPC_ID_INFO | CY_IPC_PIPE_RTN) /**< Return prefix for IPC pipe function status codes */ +#define CY_IPC_PIPE_ID_WARNING (uint32_t)( CY_IPC_ID_WARNING | CY_IPC_PIPE_RTN) /**< Return prefix for IPC pipe function warning return values */ +#define CY_IPC_PIPE_ID_ERROR (uint32_t)( CY_IPC_ID_ERROR | CY_IPC_PIPE_RTN) /**< Return prefix for IPC pipe function error return values */ + +/** \} group_ipc_pipe_macros */ + +/** +* \addtogroup group_ipc_pipe_enums +* \{ +*/ + +/** Return constants for IPC pipe functions. */ +typedef enum +{ + CY_IPC_PIPE_SUCCESS =(uint32_t)(0x00u), /**< Pipe API return for no error */ + CY_IPC_PIPE_ERROR_NO_IPC =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 1ul), /**< Pipe API return for no valid IPC channel */ + CY_IPC_PIPE_ERROR_NO_INTR =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 2ul), /**< Pipe API return for no valid interrupt */ + CY_IPC_PIPE_ERROR_BAD_PRIORITY =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 3ul), /**< Pipe API return for bad priority parameter */ + CY_IPC_PIPE_ERROR_BAD_HANDLE =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 4ul), /**< Pipe API return for bad pipe handle */ + CY_IPC_PIPE_ERROR_BAD_ID =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 5ul), /**< Pipe API return for bad pipe ID */ + CY_IPC_PIPE_ERROR_DIR_ERROR =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 6ul), /**< Pipe API return for invalid direction (Not used at this time) */ + CY_IPC_PIPE_ERROR_SEND_BUSY =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 7ul), /**< Pipe API return for pipe is currently busy */ + CY_IPC_PIPE_ERROR_NO_MESSAGE =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 8ul), /**< Pipe API return for no message indicated */ + CY_IPC_PIPE_ERROR_BAD_CPU =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 9ul), /**< Pipe API return for invalid CPU value */ + CY_IPC_PIPE_ERROR_BAD_CLIENT =(uint32_t)(CY_IPC_PIPE_ID_ERROR | 10ul) /**< Pipe API return for client out of range */ +} cy_en_ipc_pipe_status_t; + +/** \} group_ipc_pipe_enums */ + +#if (CY_CPU_CORTEX_M0P) + #define CY_IPC_EP_CYPIPE_ADDR CY_IPC_EP_CYPIPE_CM0_ADDR +#else + #define CY_IPC_EP_CYPIPE_ADDR CY_IPC_EP_CYPIPE_CM4_ADDR +#endif /* (CY_CPU_CORTEX_M0P) */ + +/** +* \addtogroup group_ipc_pipe_data_structures +* \{ +*/ + +/** \cond +* NOTE: This doxygen comment must be placed before some code entity, or else +* it will belong to a random entity that follows it, e.g. group_ipc_functions +* +* Client identifier for a message. +* For a given pipe, traffic across the pipe can be multiplexed with multiple +* senders on one end and multiple receivers on the other end. +* +* The first 32-bit word of the message is used to identify the client that owns +* the message. +* +* The upper 16 bits are the client ID. +* +* The lower 16 bits are for use by the client in any way desired. +* +* The lower 16 bits are preserved (not modified) and not interpreted in any way. +* \endcond +*/ + +/** \} group_ipc_pipe_data_structures */ + + +/******************************************************************************/ +/* Global function prototypes (definition in C source) */ +/******************************************************************************/ + +/** +* \addtogroup group_ipc_pipe_functions +* \{ +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +void Cy_IPC_Pipe_EndpointInit(uint32_t epAddr, cy_ipc_pipe_callback_array_ptr_t cbArray, + uint32_t cbCnt, uint32_t epConfig, cy_stc_sysint_t const *epInterrupt); +cy_en_ipc_pipe_status_t Cy_IPC_Pipe_SendMessage(uint32_t toAddr, uint32_t fromAddr, void *msgPtr, + cy_ipc_pipe_relcallback_ptr_t callBackPtr); +cy_en_ipc_pipe_status_t Cy_IPC_Pipe_RegisterCallback(uint32_t epAddr, + cy_ipc_pipe_callback_ptr_t callBackPtr, uint32_t clientId); +void Cy_IPC_Pipe_ExecuteCallback(uint32_t epAddr); +void Cy_IPC_Pipe_RegisterCallbackRel(uint32_t epAddr, cy_ipc_pipe_relcallback_ptr_t callBackPtr); +void Cy_IPC_Pipe_Config(cy_stc_ipc_pipe_ep_t * theEpArray); +void Cy_IPC_Pipe_Init(cy_stc_ipc_pipe_config_t const *config); + +cy_en_ipc_pipe_status_t Cy_IPC_Pipe_EndpointPause(uint32_t epAddr); +cy_en_ipc_pipe_status_t Cy_IPC_Pipe_EndpointResume(uint32_t epAddr); + +/* This function is obsolete and will be removed in the next releases */ +void Cy_IPC_Pipe_ExecCallback(cy_stc_ipc_pipe_ep_t * endpoint); + +#ifdef __cplusplus +} +#endif + +/** \} group_ipc_pipe_functions */ + +#endif /* CY_IPC_PIPE_H */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_sema.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_sema.h new file mode 100644 index 00000000000..cf610256591 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_ipc_sema.h @@ -0,0 +1,141 @@ +/***************************************************************************//** +* \file cy_ipc_sema.h +* \version 1.30 +* +* \brief +* Header file for IPC SEM functions +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#ifndef CY_IPC_SEMA_H +#define CY_IPC_SEMA_H + +/******************************************************************************/ +/* Include files */ +/******************************************************************************/ +#include "cy_ipc_drv.h" +#include + +/** +* \addtogroup group_ipc_sema IPC semaphores layer (IPC_SEMA) +* \{ +* The semaphores layer functions made use of a single IPC channel to allow +* multiple semaphores that can be used by system or user function calls. +* +* Include cy_ipc_sema.h. Alternatively include cy_pdl.h (ModusToolbox only) +* to get access to all functions and declarations in the PDL. +* +* By default there are 128 semaphores provided, although the user may modify +* the default value to any number, limited only by SRAM. +* +* \defgroup group_ipc_sema_macros Macros +* Macro definitions are used in the driver +* +* \defgroup group_ipc_sema_functions Functions +* Functions are used in the driver +* +* \defgroup group_ipc_sema_enums Enumerated Types +* Enumerations are used in the driver +* \} +* +* \addtogroup group_ipc_sema_macros +* \{ +*/ + +/** Software PDL driver ID for IPC semaphore functions */ +#define CY_IPC_SEMA_RTN (0x0100ul) +/** Return prefix for IPC semaphore function status codes */ +#define CY_IPC_SEMA_ID_INFO (uint32_t)( CY_IPC_ID_INFO | CY_IPC_SEMA_RTN) +/** Return prefix for IPC semaphore function warning return values */ +#define CY_IPC_SEMA_ID_WARNING (uint32_t)( CY_IPC_ID_WARNING | CY_IPC_SEMA_RTN) +/** Return prefix for IPC semaphore function error return values */ +#define CY_IPC_SEMA_ID_ERROR (uint32_t)( CY_IPC_ID_ERROR | CY_IPC_SEMA_RTN) + +#define CY_IPC_SEMA_PER_WORD (uint32_t)32u /**< 32 semaphores per word */ + +/** \} group_ipc_sema_macros */ + +/** +* \addtogroup group_ipc_sema_enums +* \{ +*/ + +/** Return constants for IPC semaphores functions. */ +typedef enum +{ + /** No error has occurred */ + CY_IPC_SEMA_SUCCESS = (uint32_t)(0ul), + /** Semaphores IPC channel has already been locked */ + CY_IPC_SEMA_ERROR_LOCKED = (uint32_t)(CY_IPC_SEMA_ID_ERROR | 1ul), + /** Semaphores IPC channel is unlocked */ + CY_IPC_SEMA_ERROR_UNLOCKED = (uint32_t)(CY_IPC_SEMA_ID_ERROR | 2ul), + /** Semaphore API bad parameter */ + CY_IPC_SEMA_BAD_PARAM = (uint32_t)(CY_IPC_SEMA_ID_ERROR | 3ul), + /** Semaphore API return when semaphore number is out of the range */ + CY_IPC_SEMA_OUT_OF_RANGE = (uint32_t)(CY_IPC_SEMA_ID_ERROR | 4ul), + + /** Semaphore API return when IPC channel was not acquired */ + CY_IPC_SEMA_NOT_ACQUIRED = (uint32_t)(CY_IPC_SEMA_ID_INFO | 2ul), + /** Semaphore API return status when semaphore channel is busy or locked +* by another process */ + CY_IPC_SEMA_LOCKED = (uint32_t)(CY_IPC_SEMA_ID_INFO | 3ul), + /** Semaphore status return that the semaphore is set */ + CY_IPC_SEMA_STATUS_LOCKED = (uint32_t)(CY_IPC_SEMA_ID_INFO | 1ul), + /** Semaphore status return that the semaphore is cleared */ + CY_IPC_SEMA_STATUS_UNLOCKED = (uint32_t)(CY_IPC_SEMA_ID_INFO | 0ul) +} cy_en_ipcsema_status_t; + + +/** IPC semaphore control data structure. */ +typedef struct +{ + /** Maximum semaphores in system */ + uint32_t maxSema; + /** Pointer to semaphores array */ + uint32_t *arrayPtr; +} cy_stc_ipc_sema_t; + +/** \} group_ipc_sema_enums */ + +/** +* \addtogroup group_ipc_sema_functions +* \{ +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +cy_en_ipcsema_status_t Cy_IPC_Sema_Init (uint32_t ipcChannel, uint32_t count, uint32_t memPtr[]); +cy_en_ipcsema_status_t Cy_IPC_Sema_InitExt(uint32_t ipcChannel, cy_stc_ipc_sema_t *ipcSema); +cy_en_ipcsema_status_t Cy_IPC_Sema_Set (uint32_t semaNumber, bool preemptable); +cy_en_ipcsema_status_t Cy_IPC_Sema_Clear (uint32_t semaNumber, bool preemptable); +cy_en_ipcsema_status_t Cy_IPC_Sema_Status (uint32_t semaNumber); +uint32_t Cy_IPC_Sema_GetMaxSems(void); + +#ifdef __cplusplus +} +#endif + +/** \} group_ipc_sema_functions */ + +#endif /* CY_IPC_SEMA_H */ + + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lpcomp.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lpcomp.h new file mode 100644 index 00000000000..8e5e2a7b791 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lpcomp.h @@ -0,0 +1,754 @@ +/***************************************************************************//** +* \file cy_lpcomp.h +* \version 1.20 +* +* This file provides constants and parameter values for the Low Power Comparator driver. +* +******************************************************************************** +* \copyright +* Copyright 2016-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_lpcomp +* \{ +* Provides access to the low-power comparators implemented using the fixed-function +* LP comparator block that is present in PSoC 6. +* +* The functions and other declarations used in this driver are in cy_lpcomp.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* These comparators can perform fast analog signal comparison of internal +* and external analog signals in all system power modes. Low-power comparator +* output can be inspected by the CPU, used as an interrupt/wakeup source to the +* CPU when in low-power mode (Sleep, Low-Power Sleep, or Deep-Sleep), used as +* a wakeup source to system resources when in Hibernate mode, or fed to DSI as +* an asynchronous or synchronous signal (level or pulse). +* +* \section group_lpcomp_section_Configuration_Considerations Configuration Considerations +* To set up an LPComp, the inputs, the output, the mode, the interrupts and +* other configuration parameters should be configured. Power the LPComp to operate. +* +* The sequence recommended for the LPComp operation: +* +* 1) To initialize the driver, call the Cy_LPComp_Init() function providing +* the filled cy_stc_lpcomp_config_t structure, the LPComp channel number, +* and the LPCOMP registers structure pointer. +* +* 2) Optionally, configure the interrupt requests if the interrupt event +* triggering is needed. Use the Cy_LPComp_SetInterruptMask() function with +* the parameter for the mask available in the configuration file. +* Additionally, enable the Global interrupts and initialize the referenced +* interrupt by setting the priority and the interrupt vector using +* the \ref Cy_SysInt_Init() function of the sysint driver. +* +* 3) Configure the inputs and the output using the \ref Cy_GPIO_Pin_Init() +* functions of the GPIO driver. +* The High Impedance Analog drive mode is for the inputs and +* the Strong drive mode is for the output. +* Use the Cy_LPComp_SetInputs() function to connect the comparator inputs +* to the dedicated IO pins, AMUXBUSA/AMUXBUSB or Vref: +* \image html lpcomp_inputs.png +* +* 4) Power on the comparator using the Cy_LPComp_Enable() function. +* +* 5) The comparator output can be monitored using +* the Cy_LPComp_GetCompare() function or using the LPComp interrupt +* (if the interrupt is enabled). +* +* \note The interrupt is not cleared automatically. +* It is the user's responsibility to do that. +* The interrupt is cleared by writing a 1 in the corresponding interrupt +* register bit position. The preferred way to clear interrupt sources +* is using the Cy_LPComp_ClearInterrupt() function. +* +* \note Individual comparator interrupt outputs are ORed together +* as a single asynchronous interrupt source before it is sent out and +* used to wake up the system in the low-power mode. +* For PSoC 6 devices, the individual comparator interrupt is masked +* by the INTR_MASK register. The masked result is captured in +* the INTR_MASKED register. +* Writing a 1 to the INTR register bit will clear the interrupt. +* +* \section group_lpcomp_lp Low Power Support +* The LPComp provides the callback functions to facilitate +* the low-power mode transition. The callback +* \ref Cy_LPComp_DeepSleepCallback must be called during execution +* of \ref Cy_SysPm_CpuEnterDeepSleep; \ref Cy_LPComp_HibernateCallback must be +* called during execution of \ref Cy_SysPm_SystemEnterHibernate. +* To trigger the callback execution, the callback must be registered +* before calling the mode transition function. +* Refer to \ref group_syspm driver for more +* information about low-power mode transitions. +* +* The example below shows the entering into Hibernate mode. +* The positive LPComp input connects to dedicated GPIO pin and the +* negative LPComp input connects to the local reference. +* The LED blinks twice after device reset and goes into Hibernate mode. +* When the voltage on the positive input great than the local reference +* voltage (0.45V - 0.75V) the device wakes up and LED begins blinking. +* \snippet lpcomp\1.20\snippet\main.c LP_COMP_CFG_HIBERNATE +* +* \section group_lpcomp_more_information More Information +* +* Refer to the appropriate device technical reference manual (TRM) for +* a detailed description of the registers. +* +* \section group_lpcomp_MISRA MISRA-C Compliance +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
11.4AA cast should not be performed between a pointer to object type and +* a different pointer to object type. +* The pointer to the buffer memory is void to allow handling different +* different data types: uint8_t (4-8 bits) or uint16_t (9-16 bits). +* The cast operation is safe because the configuration is verified +* before operation is performed. +* The function \ref Cy_LPComp_DeepSleepCallback is a callback of +* the \ref cy_en_syspm_status_t type. The cast operation safety in this +* function becomes the user's responsibility because the pointers are +* initialized when a callback is registered in the SysPm driver.
+* +* \section group_lpcomp_Changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason for Change
1.20Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.10.1Added Low Power Callback sectionDocumentation update and clarification
1.10The CY_WEAK keyword is removed from Cy_LPComp_DeepSleepCallback() +* and Cy_LPComp_HibernateCallback() functions
+* Added input parameter validation to the API functions.
1.0Initial version
+* +* \defgroup group_lpcomp_macros Macros +* \defgroup group_lpcomp_functions Functions +* \{ +* \defgroup group_lpcomp_functions_syspm_callback Low Power Callback +* \} +* \defgroup group_lpcomp_data_structures Data Structures +* \defgroup group_lpcomp_enums Enumerated Types +*/ + +#ifndef CY_LPCOMP_PDL_H +#define CY_LPCOMP_PDL_H + +/******************************************************************************/ +/* Include files */ +/******************************************************************************/ + +#include +#include +#include "cy_device.h" +#include "cy_device_headers.h" +#include "cy_syslib.h" +#include "cy_syspm.h" + +#ifdef CY_IP_MXLPCOMP + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** +* \addtogroup group_lpcomp_macros +* \{ +*/ + +/** Driver major version */ +#define CY_LPCOMP_DRV_VERSION_MAJOR 1 + +/** Driver minor version */ +#define CY_LPCOMP_DRV_VERSION_MINOR 20 + +/****************************************************************************** +* API Constants +******************************************************************************/ + +/**< LPCOMP PDL ID */ +#define CY_LPCOMP_ID CY_PDL_DRV_ID(0x23u) + +/** The LPCOMP's number of channels. */ +#define CY_LPCOMP_MAX_CHANNEL_NUM (2u) + +/** LPCOMP's comparator 1 interrupt mask. */ +#define CY_LPCOMP_COMP0 (0x01u) +/** LPCOMP's comparator 2 interrupt mask. */ +#define CY_LPCOMP_COMP1 (0x02u) + +/** \cond INTERNAL_MACROS */ + + +/****************************************************************************** +* Registers Constants +******************************************************************************/ + +#define CY_LPCOMP_MODE_ULP_Pos (0x0uL) +#define CY_LPCOMP_MODE_ULP_Msk (0x1uL) + +#define CY_LPCOMP_INTR_Pos (LPCOMP_INTR_COMP0_Pos) +#define CY_LPCOMP_INTR_Msk (LPCOMP_INTR_COMP0_Msk | LPCOMP_INTR_COMP1_Msk) + +#define CY_LPCOMP_CMP0_SW_POS_Msk (LPCOMP_CMP0_SW_CMP0_IP0_Msk | \ + LPCOMP_CMP0_SW_CMP0_AP0_Msk | \ + LPCOMP_CMP0_SW_CMP0_BP0_Msk) +#define CY_LPCOMP_CMP0_SW_NEG_Msk (LPCOMP_CMP0_SW_CMP0_IN0_Msk | \ + LPCOMP_CMP0_SW_CMP0_AN0_Msk | \ + LPCOMP_CMP0_SW_CMP0_BN0_Msk | \ + LPCOMP_CMP0_SW_CMP0_VN0_Msk) +#define CY_LPCOMP_CMP1_SW_POS_Msk (LPCOMP_CMP1_SW_CMP1_IP1_Msk | \ + LPCOMP_CMP1_SW_CMP1_AP1_Msk | \ + LPCOMP_CMP1_SW_CMP1_BP1_Msk) +#define CY_LPCOMP_CMP1_SW_NEG_Msk (LPCOMP_CMP1_SW_CMP1_IN1_Msk | \ + LPCOMP_CMP1_SW_CMP1_AN1_Msk | \ + LPCOMP_CMP1_SW_CMP1_BN1_Msk | \ + LPCOMP_CMP1_SW_CMP1_VN1_Msk) + +#define CY_LPCOMP_CMP0_OUTPUT_CONFIG_Pos LPCOMP_CMP0_CTRL_DSI_BYPASS0_Pos +#define CY_LPCOMP_CMP1_OUTPUT_CONFIG_Pos LPCOMP_CMP1_CTRL_DSI_BYPASS1_Pos + +#define CY_LPCOMP_CMP0_OUTPUT_CONFIG_Msk (LPCOMP_CMP0_CTRL_DSI_BYPASS0_Msk | \ + LPCOMP_CMP0_CTRL_DSI_LEVEL0_Msk) + +#define CY_LPCOMP_CMP1_OUTPUT_CONFIG_Msk (LPCOMP_CMP1_CTRL_DSI_BYPASS1_Msk | \ + LPCOMP_CMP1_CTRL_DSI_LEVEL1_Msk) + +#define CY_HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_SR_Pos HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Pos + +#define CY_HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_SR_Msk (HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | \ + HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk) + +#define CY_HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_SR_Pos HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Pos + +#define CY_HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_SR_Msk (HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | \ + HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk) + +#define CY_LPCOMP_REF_CONNECTED (1u) + +#define CY_LPCOMP_WAKEUP_PIN0_Msk CY_SYSPM_WAKEUP_LPCOMP0 +#define CY_LPCOMP_WAKEUP_PIN1_Msk CY_SYSPM_WAKEUP_LPCOMP1 + +/* Internal constants for Cy_LPComp_Enable() */ +#define CY_LPCOMP_NORMAL_POWER_DELAY (3u) +#define CY_LPCOMP_LP_POWER_DELAY (6u) +#define CY_LPCOMP_ULP_POWER_DELAY (50u) + +/** \endcond */ +/** \} group_lpcomp_macros */ + +/** +* \addtogroup group_lpcomp_enums +* \{ +*/ + +/****************************************************************************** + * Enumerations + *****************************************************************************/ +/** The LPCOMP output modes. */ +typedef enum +{ + CY_LPCOMP_OUT_PULSE = 0u, /**< The LPCOMP DSI output with the pulse option, no bypass. */ + CY_LPCOMP_OUT_DIRECT = 1u, /**< The LPCOMP bypass mode, the direct output of a comparator. */ + CY_LPCOMP_OUT_SYNC = 2u /**< The LPCOMP DSI output with the level option, it is similar + to the bypass mode but it is 1 cycle slow than the bypass. */ +} cy_en_lpcomp_out_t; + +/** The LPCOMP hysteresis modes. */ +typedef enum +{ + CY_LPCOMP_HYST_ENABLE = 1u, /**< The LPCOMP enable hysteresis. */ + CY_LPCOMP_HYST_DISABLE = 0u /**< The LPCOMP disable hysteresis. */ +} cy_en_lpcomp_hyst_t; + +/** The LPCOMP's channel number. */ +typedef enum +{ + CY_LPCOMP_CHANNEL_0 = 0x1u, /**< The LPCOMP Comparator 0. */ + CY_LPCOMP_CHANNEL_1 = 0x2u /**< The LPCOMP Comparator 1. */ +} cy_en_lpcomp_channel_t; + +/** The LPCOMP interrupt modes. */ +typedef enum +{ + CY_LPCOMP_INTR_DISABLE = 0u, /**< The LPCOMP interrupt disabled, no interrupt will be detected. */ + CY_LPCOMP_INTR_RISING = 1u, /**< The LPCOMP interrupt on the rising edge. */ + CY_LPCOMP_INTR_FALLING = 2u, /**< The LPCOMP interrupt on the falling edge. */ + CY_LPCOMP_INTR_BOTH = 3u /**< The LPCOMP interrupt on both rising and falling edges. */ +} cy_en_lpcomp_int_t; + +/** The LPCOMP power-mode selection. */ +typedef enum +{ + CY_LPCOMP_MODE_OFF = 0u, /**< The LPCOMP's channel power-off. */ + CY_LPCOMP_MODE_ULP = 1u, /**< The LPCOMP's channel ULP mode. */ + CY_LPCOMP_MODE_LP = 2u, /**< The LPCOMP's channel LP mode. */ + CY_LPCOMP_MODE_NORMAL = 3u /**< The LPCOMP's channel normal mode. */ +} cy_en_lpcomp_pwr_t; + +/** The LPCOMP inputs. */ +typedef enum +{ + CY_LPCOMP_SW_GPIO = 0x01u, /**< The LPCOMP input connects to GPIO pin. */ + CY_LPCOMP_SW_AMUXBUSA = 0x02u, /**< The LPCOMP input connects to AMUXBUSA. */ + CY_LPCOMP_SW_AMUXBUSB = 0x04u, /**< The LPCOMP input connects to AMUXBUSB. */ + CY_LPCOMP_SW_LOCAL_VREF = 0x08u /**< The LPCOMP input connects to local VREF. */ +} cy_en_lpcomp_inputs_t; + +/** The LPCOMP error codes. */ +typedef enum +{ + CY_LPCOMP_SUCCESS = 0x00u, /**< Successful */ + CY_LPCOMP_BAD_PARAM = CY_LPCOMP_ID | CY_PDL_STATUS_ERROR | 0x01u, /**< One or more invalid parameters */ + CY_LPCOMP_TIMEOUT = CY_LPCOMP_ID | CY_PDL_STATUS_ERROR | 0x02u, /**< Operation timed out */ + CY_LPCOMP_INVALID_STATE = CY_LPCOMP_ID | CY_PDL_STATUS_ERROR | 0x03u, /**< Operation not setup or is in an improper state */ + CY_LPCOMP_UNKNOWN = CY_LPCOMP_ID | CY_PDL_STATUS_ERROR | 0xFFu, /**< Unknown failure */ +} cy_en_lpcomp_status_t; + +/** \} group_lpcomp_enums */ + +/** +* \addtogroup group_lpcomp_data_structures +* \{ +*/ + +/****************************************************************************** + * Structures + *****************************************************************************/ + +/** The LPCOMP configuration structure. */ +typedef struct { + cy_en_lpcomp_out_t outputMode; /**< The LPCOMP's outputMode: Direct output, + Synchronized output or Pulse output */ + cy_en_lpcomp_hyst_t hysteresis; /**< Enables or disables the LPCOMP's hysteresis */ + cy_en_lpcomp_pwr_t power; /**< Sets the LPCOMP power mode */ + cy_en_lpcomp_int_t intType; /**< Sets the LPCOMP interrupt mode */ +} cy_stc_lpcomp_config_t; + +/** \cond CONTEXT_STRUCTURE */ + +typedef struct { + cy_en_lpcomp_int_t intType[CY_LPCOMP_MAX_CHANNEL_NUM]; + cy_en_lpcomp_pwr_t power[CY_LPCOMP_MAX_CHANNEL_NUM]; +} cy_stc_lpcomp_context_t; + +/** \endcond */ + +/** \} group_lpcomp_data_structures */ + +/** \cond INTERNAL_MACROS */ + +/****************************************************************************** + * Macros + *****************************************************************************/ +#define CY_LPCOMP_IS_CHANNEL_VALID(channel) (((channel) == CY_LPCOMP_CHANNEL_0) || \ + ((channel) == CY_LPCOMP_CHANNEL_1)) +#define CY_LPCOMP_IS_OUT_MODE_VALID(mode) (((mode) == CY_LPCOMP_OUT_PULSE) || \ + ((mode) == CY_LPCOMP_OUT_DIRECT) || \ + ((mode) == CY_LPCOMP_OUT_SYNC)) +#define CY_LPCOMP_IS_HYSTERESIS_VALID(hyst) (((hyst) == CY_LPCOMP_HYST_ENABLE) || \ + ((hyst) == CY_LPCOMP_HYST_DISABLE)) +#define CY_LPCOMP_IS_INTR_MODE_VALID(intr) (((intr) == CY_LPCOMP_INTR_DISABLE) || \ + ((intr) == CY_LPCOMP_INTR_RISING) || \ + ((intr) == CY_LPCOMP_INTR_FALLING) || \ + ((intr) == CY_LPCOMP_INTR_BOTH)) +#define CY_LPCOMP_IS_POWER_VALID(power) (((power) == CY_LPCOMP_MODE_OFF) || \ + ((power) == CY_LPCOMP_MODE_ULP) || \ + ((power) == CY_LPCOMP_MODE_LP) || \ + ((power) == CY_LPCOMP_MODE_NORMAL)) +#define CY_LPCOMP_IS_INTR_VALID(intr) (((intr) == CY_LPCOMP_COMP0) || \ + ((intr) == CY_LPCOMP_COMP1) || \ + ((intr) == (CY_LPCOMP_COMP0 | CY_LPCOMP_COMP1))) +#define CY_LPCOMP_IS_INPUT_P_VALID(input) (((input) == CY_LPCOMP_SW_GPIO) || \ + ((input) == CY_LPCOMP_SW_AMUXBUSA) || \ + ((input) == CY_LPCOMP_SW_AMUXBUSB)) +#define CY_LPCOMP_IS_INPUT_N_VALID(input) (((input) == CY_LPCOMP_SW_GPIO) || \ + ((input) == CY_LPCOMP_SW_AMUXBUSA) || \ + ((input) == CY_LPCOMP_SW_AMUXBUSB) || \ + ((input) == CY_LPCOMP_SW_LOCAL_VREF)) + +/** \endcond */ + +/** +* \addtogroup group_lpcomp_functions +* \{ +*/ + +/****************************************************************************** +* Functions +*******************************************************************************/ + +cy_en_lpcomp_status_t Cy_LPComp_Init(LPCOMP_Type *base, cy_en_lpcomp_channel_t channel, const cy_stc_lpcomp_config_t *config); +void Cy_LPComp_Enable(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel); +void Cy_LPComp_Disable(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel); +__STATIC_INLINE void Cy_LPComp_GlobalEnable(LPCOMP_Type *base); +__STATIC_INLINE void Cy_LPComp_GlobalDisable(LPCOMP_Type *base); +__STATIC_INLINE void Cy_LPComp_UlpReferenceEnable(LPCOMP_Type *base); +__STATIC_INLINE void Cy_LPComp_UlpReferenceDisable(LPCOMP_Type *base); +__STATIC_INLINE uint32_t Cy_LPComp_GetCompare(LPCOMP_Type const * base, cy_en_lpcomp_channel_t channel); +void Cy_LPComp_SetPower(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel, cy_en_lpcomp_pwr_t power); +void Cy_LPComp_SetHysteresis(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel, cy_en_lpcomp_hyst_t hysteresis); +void Cy_LPComp_SetInputs(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel, cy_en_lpcomp_inputs_t inputP, cy_en_lpcomp_inputs_t inputN); +void Cy_LPComp_SetOutputMode(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel, cy_en_lpcomp_out_t outType); +void Cy_LPComp_SetInterruptTriggerMode(LPCOMP_Type* base, cy_en_lpcomp_channel_t channel, cy_en_lpcomp_int_t intType); +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptStatus(LPCOMP_Type const * base); +__STATIC_INLINE void Cy_LPComp_ClearInterrupt(LPCOMP_Type* base, uint32_t interrupt); +__STATIC_INLINE void Cy_LPComp_SetInterrupt(LPCOMP_Type* base, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptMask(LPCOMP_Type const * base); +__STATIC_INLINE void Cy_LPComp_SetInterruptMask(LPCOMP_Type* base, uint32_t interrupt); +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptStatusMasked(LPCOMP_Type const * base); +__STATIC_INLINE void Cy_LPComp_ConnectULPReference(LPCOMP_Type *base, cy_en_lpcomp_channel_t channel); +/** \addtogroup group_lpcomp_functions_syspm_callback +* The driver supports SysPm callback for Deep Sleep and Hibernate transition. +* \{ +*/ +cy_en_syspm_status_t Cy_LPComp_DeepSleepCallback(cy_stc_syspm_callback_params_t *callbackParams, cy_en_syspm_callback_mode_t mode); +cy_en_syspm_status_t Cy_LPComp_HibernateCallback(cy_stc_syspm_callback_params_t *callbackParams, cy_en_syspm_callback_mode_t mode); +/** \} */ + + +/******************************************************************************* +* Function Name: Cy_LPComp_GlobalEnable +****************************************************************************//** +* +* Activates the IP of the LPCOMP hardware block. This API should be enabled +* before operating any channel of comparators. +* Note: Interrupts can be enabled after the block is enabled and the appropriate +* start-up time has elapsed: +* 3 us for the normal power mode; +* 6 us for the LP mode; +* 50 us for the ULP mode. +* +* \param *base +* The structure of the channel pointer. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_GlobalEnable(LPCOMP_Type* base) +{ + LPCOMP_CONFIG(base) |= LPCOMP_CONFIG_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_GlobalDisable +****************************************************************************//** +* +* Deactivates the IP of the LPCOMP hardware block. +* (Analog in power down, open all switches, all clocks off). +* +* \param *base +* The structure of the channel pointer. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_GlobalDisable(LPCOMP_Type *base) +{ + LPCOMP_CONFIG(base) &= (uint32_t) ~LPCOMP_CONFIG_ENABLED_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_UlpReferenceEnable +****************************************************************************//** +* +* Enables the local reference-generator circuit. +* +* \param *base +* The structure of the channel pointer. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_UlpReferenceEnable(LPCOMP_Type *base) +{ + LPCOMP_CONFIG(base) |= LPCOMP_CONFIG_LPREF_EN_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_UlpReferenceDisable +****************************************************************************//** +* +* Disables the local reference-generator circuit. +* +* \param *base +* The structure of the channel pointer. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_UlpReferenceDisable(LPCOMP_Type *base) +{ + LPCOMP_CONFIG(base) &= (uint32_t) ~LPCOMP_CONFIG_LPREF_EN_Msk; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_GetCompare +****************************************************************************//** +* +* This function returns a nonzero value when the voltage connected to the +* positive input is greater than the negative input voltage. +* +* \param *base +* The LPComp register structure pointer. +* +* \param channel +* The LPComp channel index. +* +* \return LPComp compare result. +* The value is a nonzero value when the voltage connected to the positive +* input is greater than the negative input voltage. +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_LPComp_GetCompare(LPCOMP_Type const * base, cy_en_lpcomp_channel_t channel) +{ + uint32_t result; + + CY_ASSERT_L3(CY_LPCOMP_IS_CHANNEL_VALID(channel)); + + if (CY_LPCOMP_CHANNEL_0 == channel) + { + result = _FLD2VAL(LPCOMP_STATUS_OUT0, LPCOMP_STATUS(base)); + } + else + { + result = _FLD2VAL(LPCOMP_STATUS_OUT1, LPCOMP_STATUS(base)); + } + + return (result); +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_SetInterruptMask +****************************************************************************//** +* +* Configures which bits of the interrupt request register will trigger an +* interrupt event. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \param interrupt +* uint32_t interruptMask: Bit Mask of interrupts to set. +* Bit 0: COMP0 Interrupt Mask +* Bit 1: COMP1 Interrupt Mask +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_SetInterruptMask(LPCOMP_Type* base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_LPCOMP_IS_INTR_VALID(interrupt)); + + LPCOMP_INTR_MASK(base) |= interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_GetInterruptMask +****************************************************************************//** +* +* Returns an interrupt mask. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \return bit mapping information +* Bit 0: COMP0 Interrupt Mask +* Bit 1: COMP1 Interrupt Mask +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptMask(LPCOMP_Type const * base) +{ + return (LPCOMP_INTR_MASK(base)); +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_GetInterruptStatusMasked +****************************************************************************//** +* +* Returns an interrupt request register masked by an interrupt mask. +* Returns the result of the bitwise AND operation between the corresponding +* interrupt request and mask bits. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \return bit mapping information +* Bit 0: COMP0 Interrupt Masked +* Bit 1: COMP1 Interrupt Masked +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptStatusMasked(LPCOMP_Type const * base) +{ + return (LPCOMP_INTR_MASKED(base)); +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_GetInterruptStatus +****************************************************************************//** +* +* Returns the status of 2 different LPCOMP interrupt requests. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \return bit mapping information +* Bit 0: COMP0 Interrupt status +* Bit 1: COMP1 Interrupt status +* +*******************************************************************************/ +__STATIC_INLINE uint32_t Cy_LPComp_GetInterruptStatus(LPCOMP_Type const * base) +{ + return (_FLD2VAL(CY_LPCOMP_INTR, LPCOMP_INTR(base))); +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_ClearInterrupt +****************************************************************************//** +* +* Clears LPCOMP interrupts by setting each bit. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \param interrupt +* Bit 0: COMP0 Interrupt status +* Bit 1: COMP1 Interrupt status +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_ClearInterrupt(LPCOMP_Type* base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_LPCOMP_IS_INTR_VALID(interrupt)); + LPCOMP_INTR(base) |= interrupt; + (void) LPCOMP_INTR(base); +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_SetInterrupt +****************************************************************************//** +* +* Sets a software interrupt request. +* This function is used in the case of combined interrupt signal from the global +* signal reference. This function from either component instance can be used +* to trigger either or both software interrupts. It sets the INTR_SET interrupt mask. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \param interrupt +* Bit 0: COMP0 Interrupt status +* Bit 1: COMP1 Interrupt status +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_SetInterrupt(LPCOMP_Type* base, uint32_t interrupt) +{ + CY_ASSERT_L2(CY_LPCOMP_IS_INTR_VALID(interrupt)); + LPCOMP_INTR_SET(base) = interrupt; +} + + +/******************************************************************************* +* Function Name: Cy_LPComp_ConnectULPReference +****************************************************************************//** +* +* Connects the local reference generator output to the comparator negative input. +* +* \param *base +* The LPCOMP register structure pointer. +* +* \param channel +* The LPCOMP channel index. +* +* \return None +* +*******************************************************************************/ +__STATIC_INLINE void Cy_LPComp_ConnectULPReference(LPCOMP_Type *base, cy_en_lpcomp_channel_t channel) +{ + CY_ASSERT_L3(CY_LPCOMP_IS_CHANNEL_VALID(channel)); + + if (CY_LPCOMP_CHANNEL_0 == channel) + { + LPCOMP_CMP0_SW_CLEAR(base) = CY_LPCOMP_CMP0_SW_NEG_Msk; + LPCOMP_CMP0_SW(base) = _CLR_SET_FLD32U(LPCOMP_CMP0_SW(base), LPCOMP_CMP0_SW_CMP0_VN0, CY_LPCOMP_REF_CONNECTED); + } + else + { + LPCOMP_CMP1_SW_CLEAR(base) = CY_LPCOMP_CMP1_SW_NEG_Msk; + LPCOMP_CMP1_SW(base) = _CLR_SET_FLD32U(LPCOMP_CMP1_SW(base), LPCOMP_CMP1_SW_CMP1_VN1, CY_LPCOMP_REF_CONNECTED); + } +} + +/** \} group_lpcomp_functions */ + +#ifdef __cplusplus +} +#endif + +#endif /* CY_IP_MXLPCOMP */ + +#endif /* CY_LPCOMP_PDL_H */ + +/** \} group_lpcomp */ + +/* [] END OF FILE */ diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lvd.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lvd.h new file mode 100644 index 00000000000..a365c89c6b4 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/drivers/include/cy_lvd.h @@ -0,0 +1,465 @@ +/***************************************************************************//** +* \file cy_lvd.h +* \version 1.10 +* +* The header file of the LVD driver. +* +******************************************************************************** +* \copyright +* Copyright 2017-2019 Cypress Semiconductor Corporation +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +/** +* \addtogroup group_lvd +* \{ +* The LVD driver provides an API to manage the Low Voltage Detection block. +* +* The functions and other declarations used in this driver are in cy_lvd.h. +* You can include cy_pdl.h (ModusToolbox only) to get access to all functions +* and declarations in the PDL. +* +* The LVD block provides a status of currently observed VDDD voltage +* and triggers an interrupt when the observed voltage crosses an adjusted +* threshold. +* +* \section group_lvd_configuration_considerations Configuration Considerations +* To set up an LVD, configure the voltage threshold by the +* \ref Cy_LVD_SetThreshold function, ensure that the LVD block itself and LVD +* interrupt are disabled (by the \ref Cy_LVD_Disable and +* \ref Cy_LVD_ClearInterruptMask functions correspondingly) before changing the +* threshold to prevent propagating a false interrupt. +* Then configure interrupts by the \ref Cy_LVD_SetInterruptConfig function, do +* not forget to initialize an interrupt handler (the interrupt source number +* is srss_interrupt_IRQn). +* Then enable LVD by the \ref Cy_LVD_Enable function, then wait for at least 20us +* to get the circuit stabilized and clear the possible false interrupts by the +* \ref Cy_LVD_ClearInterrupt, and finally the LVD interrupt can be enabled by +* the \ref Cy_LVD_SetInterruptMask function. +* +* For example: +* \snippet lvd_1_0_sut_00.cydsn/main_cm4.c Cy_LVD_Snippet +* +* Note that the LVD circuit is available only in Low Power and Ultra Low Power +* modes. If an LVD is required in Deep Sleep mode, then the device +* should be configured to periodically wake up from Deep Sleep using a +* Deep Sleep wakeup source. This makes sure a LVD check is performed during +* Low Power or Ultra Low Power modes. +* +* \section group_lvd_more_information More Information +* See the LVD chapter of the device technical reference manual (TRM). +* +* \section group_lvd_MISRA MISRA-C Compliance +* The LVD driver has the following specific deviations: +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
MISRA RuleRule Class (Required/Advisory)Rule DescriptionDescription of Deviation(s)
10.3RA composite expression of 'essentially unsigned' type (%1s) is being +* cast to a different type category, '%2s'.The value got from the bitfield physically can't exceed the enumeration +* that describes this bitfield. So the code is safety by design.
16.7AThe object addressed by the pointer parameter '%s' is not modified and +* so the pointer could be of type 'pointer to const'.The pointer parameter is not used or modified, as there is no need +* to do any actions with it. However, such parameter is +* required to be presented in the function, because the +* \ref Cy_LVD_DeepSleepCallback is a callback +* of \ref cy_en_syspm_status_t type. +* The SysPM driver callback function type requires implementing the +* function with the next parameters and return value:
+* cy_en_syspm_status_t (*Cy_SysPmCallback) +* (cy_stc_syspm_callback_params_t *callbackParams);
+* +* \section group_lvd_changelog Changelog +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +*
VersionChangesReason of Change
1.10Flattened the organization of the driver source code into the single +* source directory and the single include directory. +* Driver library directory-structure simplification.
Added register access layer. Use register access macros instead +* of direct register access using dereferenced pointers.Makes register access device-independent, so that the PDL does +* not need to be recompiled for each supported part number.
1.0.1Added Low Power Callback sectionDocumentation update and clarification
1.0Initial Version
+* +* \defgroup group_lvd_macros Macros +* \defgroup group_lvd_functions Functions +* \{ +* \defgroup group_lvd_functions_syspm_callback Low Power Callback +* \} +* \defgroup group_lvd_enums Enumerated Types +*/ + + +#if !defined CY_LVD_H +#define CY_LVD_H + +#include "cy_syspm.h" +#include "cy_device.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \addtogroup group_lvd_macros +* \{ +*/ + +/** The driver major version */ +#define CY_LVD_DRV_VERSION_MAJOR 1 + +/** The driver minor version */ +#define CY_LVD_DRV_VERSION_MINOR 10 + +/** The LVD driver identifier */ +#define CY_LVD_ID (CY_PDL_DRV_ID(0x39U)) + +/** Interrupt mask for \ref Cy_LVD_GetInterruptStatus(), + \ref Cy_LVD_GetInterruptMask() and + \ref Cy_LVD_GetInterruptStatusMasked() */ +#define CY_LVD_INTR (SRSS_SRSS_INTR_HVLVD1_Msk) + +/** \} group_lvd_macros */ + + +/** \addtogroup group_lvd_enums +* \{ +*/ + + +/** + * LVD reference voltage select. + */ +typedef enum +{ + CY_LVD_THRESHOLD_1_2_V = 0x0U, /**